Skip to content

Commit 7e2290e

Browse files
authored
allow pseudos to receive multiple styles (#410)
* add fix conflicts * remove console.log
1 parent ee23c1e commit 7e2290e

File tree

3 files changed

+42
-28
lines changed

3 files changed

+42
-28
lines changed

src/components/tableV2/core/base-table.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,22 +84,22 @@ Table.Resizer = ({ onMouseDown, onTouchStart, deltaOffset, getIsResizing }) => {
8484
<Box
8585
_hover={{ background: "resizerLine", color: "resizerLine" }}
8686
_active={{ background: "resizerLine", color: "resizerLine" }}
87+
_before={{
88+
content: '":"',
89+
position: "absolute",
90+
top: "0",
91+
bottom: "0",
92+
display: "flex",
93+
alignItems: "center",
94+
left: "-8px",
95+
width: "8px",
96+
}}
8797
sx={{
8898
width: "2px",
8999
userSelect: "none",
90100
touchAction: "none",
91101
cursor: "col-resize",
92102
color: "border",
93-
"&::before": {
94-
content: '":"',
95-
position: "absolute",
96-
top: "0",
97-
bottom: "0",
98-
display: "flex",
99-
alignItems: "center",
100-
left: "-8px",
101-
width: "8px",
102-
},
103103
...resizingProps,
104104
}}
105105
onMouseDown={onMouseDown}

src/components/templates/mixins/pseudos.js

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,42 @@ import background from "src/components/templates/mixins/background"
22
import borderMixIn from "src/components/templates/mixins/border"
33
import shadow from "src/components/templates/mixins/shadow"
44
import { getColor } from "src/theme"
5-
6-
const clearEmptyLines = str => str.replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "")
5+
import alignItems from "src/components/templates/mixins/alignItems"
76

87
const fontColor = ({ theme, color }) => {
98
if (!color) return ""
9+
1010
return `color: ${getColor(color)({ theme })};`
1111
}
1212

13-
export const callAllFunctionsAndMergeResults = (...fns) => {
13+
const clearEmptyLines = str => str.replace(/^(?=\n)$|^\s*|\s*$|\n\n+/gm, "")
14+
15+
const transforms = {
16+
boxShadow: shadow,
17+
border: borderMixIn,
18+
background: background,
19+
color: fontColor,
20+
alignItems: alignItems,
21+
}
22+
23+
export const calculateStyles = ({ theme, ...styles }) => {
1424
let result = ""
15-
return function mergedFn(arg) {
16-
fns.forEach(fn => {
17-
const functionResult = fn && typeof fn === "function" ? fn(arg) : ""
18-
result = result + functionResult
19-
})
20-
return result
25+
26+
for (const key in styles) {
27+
if (transforms[key] !== undefined) {
28+
const transformFuction = transforms[key]
29+
const transformFuctionResult =
30+
transformFuction && typeof transformFuction === "function"
31+
? transformFuction({ theme, ...styles })
32+
: ""
33+
result = result + transformFuctionResult
34+
continue
35+
}
36+
const value = styles[key]
37+
result = result + `${key}:${value};`
2138
}
39+
40+
return result
2241
}
2342

2443
export const pseudoSelectors = {
@@ -56,12 +75,7 @@ export default ({ theme, ...props }) => {
5675
if (prop in pseudoSelectors) {
5776
const pseudoProp = prop
5877
const pseudoStyles = props[pseudoProp]
59-
const styles = callAllFunctionsAndMergeResults(
60-
shadow,
61-
borderMixIn,
62-
background,
63-
fontColor
64-
)({ theme, ...pseudoStyles })
78+
const styles = calculateStyles({ theme, ...pseudoStyles })
6579

6680
pseudo =
6781
pseudo +

src/components/templates/mixins/pseudos.test.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,8 @@ it("render border and box shadow (hover)", () => {
3131
const size = "0 0 0 1px"
3232

3333
const _hover = {
34-
border: { color: "disabled", side: "top", size: "1rem", type: "dashed" },
3534
boxShadow: { size, color: "disabled" },
35+
border: { color: "disabled", side: "top", size: "1rem", type: "dashed" },
3636
}
3737
const pseudo = `
3838
${pseudoSelectors["_hover"]}{
@@ -47,12 +47,12 @@ it("render border and box shadow with multiple selectors (hover,active)", () =>
4747
const size = "0 0 0 1px"
4848

4949
const _hover = {
50-
border: { color: "disabled", side: "top", size: "1rem", type: "dashed" },
5150
boxShadow: { size, color: "disabled" },
51+
border: { color: "disabled", side: "top", size: "1rem", type: "dashed" },
5252
}
5353
const _active = {
54-
border: { color: "disabled", side: "top", size: "1rem", type: "dashed" },
5554
boxShadow: { size, color: "disabled" },
55+
border: { color: "disabled", side: "top", size: "1rem", type: "dashed" },
5656
}
5757
const pseudo = `
5858
${pseudoSelectors["_hover"]}{

0 commit comments

Comments
 (0)