Skip to content

Commit 88f8b38

Browse files
cipickaniri
andauthored
Add 'theme' prop for SidebarMenuItem to support css variables (#192)
* Add 'theme' prop for SidebarMenuItem to support css variables * bumped version Co-authored-by: Irina Borozan <anirib@gmail.com>
1 parent 1f31020 commit 88f8b38

File tree

6 files changed

+57
-8
lines changed

6 files changed

+57
-8
lines changed

package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@code4ro/taskforce-fe-components",
3-
"version": "1.0.26",
3+
"version": "1.0.27",
44
"private": false,
55
"dependencies": {
66
"bulma": "^0.8.0",

src/components/sidebar-menu-item/sidebar-menu-item.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,16 @@ import PropTypes from "prop-types";
33
import "./sidebar-menu-item.scss";
44
import classNames from "classnames";
55
import { onEnterOrSpace } from "../../a11y";
6+
import { useCssVars } from "../../hooks/useCssVars";
67

7-
export const SidebarMenuItem = ({ active, isTitle, children, onClick }) => {
8+
export const SidebarMenuItem = ({
9+
active,
10+
isTitle,
11+
children,
12+
onClick,
13+
theme
14+
}) => {
15+
const style = useCssVars(theme);
816
const onClickCb = () => {
917
if (onClick) {
1018
onClick();
@@ -21,6 +29,7 @@ export const SidebarMenuItem = ({ active, isTitle, children, onClick }) => {
2129
})}
2230
onClick={onClickCb}
2331
onKeyPress={onEnterOrSpace(onClickCb)}
32+
style={style}
2433
>
2534
{children}
2635
</li>
@@ -31,10 +40,12 @@ SidebarMenuItem.propTypes = {
3140
active: PropTypes.bool,
3241
isTitle: PropTypes.bool,
3342
onClick: PropTypes.func,
34-
children: PropTypes.node.isRequired
43+
children: PropTypes.node.isRequired,
44+
theme: PropTypes.object
3545
};
3646

3747
SidebarMenuItem.SidebarMenuItem = {
3848
active: false,
39-
isTitle: false
49+
isTitle: false,
50+
theme: false
4051
};

src/components/sidebar-menu-item/sidebar-menu-item.scss

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
.__sidebar-menu-item {
2+
--highlightColor: #b6cadb;
3+
--backgroundColor: #f5f5f5;
4+
25
list-style-type: none;
3-
border-left: 40px solid #b6cadb;
4-
background: #f5f5f5;
6+
border-left: 40px solid var(--highlightColor);
7+
background: var(--backgroundColor);
58
margin: 5px 0;
69
padding: 5px 10px;
710
}
811

912
.__sidebar-menu-item:hover,
1013
.__sidebar-menu-item.active {
11-
background: #b6cadb;
14+
background: var(--highlightColor);
1215
cursor: pointer;
1316
}
1417

src/components/sidebar-menu-item/sidebar-menu-item.stories.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,35 @@ export const activeSubSection = () => (
2323
<SidebarMenuItem active>Transmitere și simptome</SidebarMenuItem>
2424
);
2525

26+
export const withTheme = () => (
27+
<>
28+
<SidebarMenuItem
29+
isTitle
30+
theme={{ highlightColor: "#F6DD62", backgroundColor: "#F6F9FC" }}
31+
>
32+
Transmitere și simptome
33+
</SidebarMenuItem>
34+
<SidebarMenuItem
35+
isTitle
36+
active
37+
theme={{ highlightColor: "#F6DD62", backgroundColor: "#F6F9FC" }}
38+
>
39+
Transmitere și simptome
40+
</SidebarMenuItem>
41+
<SidebarMenuItem
42+
theme={{ highlightColor: "#F6DD62", backgroundColor: "#F6F9FC" }}
43+
>
44+
Transmitere și simptome
45+
</SidebarMenuItem>
46+
<SidebarMenuItem
47+
active
48+
theme={{ highlightColor: "#F6DD62", backgroundColor: "#F6F9FC" }}
49+
>
50+
Transmitere și simptome
51+
</SidebarMenuItem>
52+
</>
53+
);
54+
2655
export const sectionTitleWithCallback = () => {
2756
const [data, setData] = useState({});
2857
const documentExample = {

src/hooks/useCssVars.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { transform } from "lodash";
2+
3+
export const useCssVars = theme =>
4+
transform(theme, (result, cssValue, cssKey) => {
5+
result[`--${cssKey}`] = cssValue;
6+
});

0 commit comments

Comments
 (0)