ish-ui 1.3.6 → 1.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
9
9
|
import ButtonBase from '@mui/material/ButtonBase';
|
|
10
10
|
import Popper from '@mui/material/Popper';
|
|
11
|
-
import { AlphaPicker, HuePicker } from 'react-color';
|
|
11
|
+
import { AlphaPicker, HuePicker, MaterialPicker } from 'react-color';
|
|
12
12
|
import { ClickAwayListener } from '@mui/material';
|
|
13
13
|
import Paper from '@mui/material/Paper';
|
|
14
14
|
import Grow from '@mui/material/Grow';
|
|
@@ -20,41 +20,7 @@ const useStyles = makeAppStyles()(({ spacing, palette, zIndex, transitions }, p,
|
|
|
20
20
|
width: 200,
|
|
21
21
|
padding: spacing(2),
|
|
22
22
|
position: 'relative',
|
|
23
|
-
|
|
24
|
-
background: palette.background.paper,
|
|
25
|
-
'&:after': {
|
|
26
|
-
bottom: '0px',
|
|
27
|
-
left: '50%',
|
|
28
|
-
width: '22px',
|
|
29
|
-
height: '10px',
|
|
30
|
-
position: 'absolute',
|
|
31
|
-
transform: 'translateX(-50%)',
|
|
32
|
-
background: palette.background.paper,
|
|
33
|
-
content: '\'\'',
|
|
34
|
-
zIndex: 1
|
|
35
|
-
},
|
|
36
|
-
'&:before': {
|
|
37
|
-
content: '\'\'',
|
|
38
|
-
bottom: '-6px',
|
|
39
|
-
left: '50%',
|
|
40
|
-
width: '12px',
|
|
41
|
-
height: '12px',
|
|
42
|
-
position: 'absolute',
|
|
43
|
-
transform: 'translateX(-50%) rotate(45deg)',
|
|
44
|
-
background: palette.background.paper,
|
|
45
|
-
boxShadow: '1px 1px 2px 0px rgba(0,0,0,0.2), 2px 1px 2px -1px rgba(0,0,0,0.12), 1px 1px 1px 0px rgba(0,0,0,0.12);'
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
paperPlaceBottom: {
|
|
49
|
-
marginTop: spacing(3),
|
|
50
|
-
'&:after': {
|
|
51
|
-
bottom: 'unset',
|
|
52
|
-
top: '0px'
|
|
53
|
-
},
|
|
54
|
-
'&:before': {
|
|
55
|
-
bottom: 'unset',
|
|
56
|
-
top: '-6px',
|
|
57
|
-
}
|
|
23
|
+
background: palette.background.paper
|
|
58
24
|
},
|
|
59
25
|
colorPickerButton: {
|
|
60
26
|
width: '14px',
|
|
@@ -71,7 +37,59 @@ const useStyles = makeAppStyles()(({ spacing, palette, zIndex, transitions }, p,
|
|
|
71
37
|
}
|
|
72
38
|
},
|
|
73
39
|
popper: {
|
|
74
|
-
zIndex: zIndex.tooltip
|
|
40
|
+
zIndex: zIndex.tooltip,
|
|
41
|
+
[`&[data-popper-placement*="bottom"] .${classes.arrow}`]: {
|
|
42
|
+
top: 0,
|
|
43
|
+
marginTop: '-0.71em',
|
|
44
|
+
'&::before': {
|
|
45
|
+
transformOrigin: '0 100%'
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
[`&[data-popper-placement*="top"] .${classes.arrow}`]: {
|
|
49
|
+
bottom: 0,
|
|
50
|
+
marginBottom: '-0.71em',
|
|
51
|
+
'&::before': {
|
|
52
|
+
transformOrigin: '100% 0'
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
[`&[data-popper-placement*="right"] .${classes.arrow}`]: {
|
|
56
|
+
left: 0,
|
|
57
|
+
marginLeft: '-0.71em',
|
|
58
|
+
width: '0.71em',
|
|
59
|
+
height: '1em',
|
|
60
|
+
'&::before': {
|
|
61
|
+
transformOrigin: '100% 100%'
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
[`&[data-popper-placement*="left"] .${classes.arrow}`]: {
|
|
65
|
+
right: 0,
|
|
66
|
+
marginRight: '-0.71em',
|
|
67
|
+
width: '0.71em',
|
|
68
|
+
height: '1em',
|
|
69
|
+
'&::before': {
|
|
70
|
+
transformOrigin: '0 0'
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
// Positioned by Popper's `arrow` modifier; a rotated square clipped to a
|
|
75
|
+
// triangle by the overflow, so it follows the paper on every placement.
|
|
76
|
+
arrow: {
|
|
77
|
+
position: 'absolute',
|
|
78
|
+
overflow: 'hidden',
|
|
79
|
+
boxSizing: 'border-box',
|
|
80
|
+
fontSize: 12,
|
|
81
|
+
width: '1em',
|
|
82
|
+
height: '0.71em', // = width / sqrt(2)
|
|
83
|
+
color: palette.background.paper,
|
|
84
|
+
'&::before': {
|
|
85
|
+
content: '""',
|
|
86
|
+
display: 'block',
|
|
87
|
+
margin: 'auto',
|
|
88
|
+
width: '100%',
|
|
89
|
+
height: '100%',
|
|
90
|
+
backgroundColor: 'currentColor',
|
|
91
|
+
transform: 'rotate(45deg)'
|
|
92
|
+
}
|
|
75
93
|
},
|
|
76
94
|
bottomOffset: {
|
|
77
95
|
marginBottom: spacing(1.25)
|
|
@@ -81,10 +99,17 @@ const useStyles = makeAppStyles()(({ spacing, palette, zIndex, transitions }, p,
|
|
|
81
99
|
background: 'none !important'
|
|
82
100
|
}
|
|
83
101
|
},
|
|
84
|
-
opened: {}
|
|
102
|
+
opened: {},
|
|
103
|
+
material: {
|
|
104
|
+
'& > div > div': {
|
|
105
|
+
boxShadow: 'none !important'
|
|
106
|
+
}
|
|
107
|
+
}
|
|
85
108
|
}));
|
|
86
|
-
|
|
87
|
-
|
|
109
|
+
// Gap between the anchor and the paper, leaving room for the arrow.
|
|
110
|
+
const popperModifiers = [{ name: 'offset', options: { offset: [0, 12] } }];
|
|
111
|
+
const ColorPickerBase = React.memo(({ color, input: { value, onChange }, TransitionProps, setAnchorEl }) => {
|
|
112
|
+
const { classes } = useStyles();
|
|
88
113
|
const [hueColor, setHueColor] = useState(color);
|
|
89
114
|
const [alfaColor, setAlfaColor] = useState(color);
|
|
90
115
|
const hueRef = useRef(undefined);
|
|
@@ -107,20 +132,37 @@ const ColorPickerBase = React.memo(({ color, input: { value, onChange }, Transit
|
|
|
107
132
|
}
|
|
108
133
|
}, [value, hueColor]);
|
|
109
134
|
useEffect(() => {
|
|
110
|
-
|
|
135
|
+
var _a, _b;
|
|
136
|
+
const hueHsv = (_b = (_a = hueRef.current) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.hsv;
|
|
137
|
+
if (!hueHsv) {
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
111
140
|
setAlfaColor({
|
|
112
141
|
h: hueHsv.h, s: 1, v: hueHsv.v, a: hueHsv.s
|
|
113
142
|
});
|
|
114
143
|
}, [hueRef.current]);
|
|
115
|
-
const
|
|
116
|
-
|
|
144
|
+
const onMaterialChange = useCallback(color => {
|
|
145
|
+
setHueColor(color.hsv);
|
|
146
|
+
}, []);
|
|
147
|
+
const onChangeComplete = (color) => {
|
|
148
|
+
var _a, _b;
|
|
149
|
+
const hex = ((_b = (_a = hueRef.current) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.hex) || (color === null || color === void 0 ? void 0 : color.hex);
|
|
150
|
+
if (hex) {
|
|
151
|
+
onChange(hex.replace('#', ''));
|
|
152
|
+
}
|
|
117
153
|
};
|
|
118
154
|
return (React.createElement(ClickAwayListener, { onClickAway: handleClickAway },
|
|
119
155
|
React.createElement(Grow, Object.assign({}, TransitionProps, { timeout: 200 }),
|
|
120
|
-
React.createElement(
|
|
121
|
-
React.createElement(
|
|
122
|
-
|
|
123
|
-
|
|
156
|
+
React.createElement(Paper, { className: classes.paper },
|
|
157
|
+
React.createElement("span", { className: classes.arrow, "data-popper-arrow": true }),
|
|
158
|
+
React.createElement(HuePicker, { ref: hueRef, color: hueColor, onChange: onHueChange, onChangeComplete: onChangeComplete, width: "168", className: classes.bottomOffset }),
|
|
159
|
+
React.createElement(AlphaPicker, { className: classes.customAlfa, color: alfaColor, width: "168", onChange: onAlfaChange, onChangeComplete: onChangeComplete }),
|
|
160
|
+
React.createElement("div", { className: classes.material },
|
|
161
|
+
React.createElement(MaterialPicker, { styles: {
|
|
162
|
+
default: {
|
|
163
|
+
material: { width: '100%', height: 'unset', padding: 0, fontFamily: 'inherit' }
|
|
164
|
+
}
|
|
165
|
+
}, color: hueColor, onChange: onMaterialChange, onChangeComplete: onChangeComplete }))))));
|
|
124
166
|
});
|
|
125
167
|
const ColorPickerWrapper = React.memo(({ input, placement = 'top', width }) => {
|
|
126
168
|
const { classes, cx } = useStyles();
|
|
@@ -132,6 +174,6 @@ const ColorPickerWrapper = React.memo(({ input, placement = 'top', width }) => {
|
|
|
132
174
|
const color = useMemo(() => (input.value ? '#' + input.value : theme.palette.primary.main), [theme, input.value]);
|
|
133
175
|
return (React.createElement("div", { className: "d-flex", onClick: stopEventPropagation },
|
|
134
176
|
React.createElement(ButtonBase, { onClick: handleClick, className: cx(classes.colorPickerButton, anchorEl && classes.opened), style: { backgroundColor: color, width, height: width } }),
|
|
135
|
-
React.createElement(Popper, { open: Boolean(anchorEl), anchorEl: anchorEl, placement: placement, className: classes.popper, transition: true }, ({ TransitionProps }) =>
|
|
177
|
+
React.createElement(Popper, { open: Boolean(anchorEl), anchorEl: anchorEl, placement: placement, className: classes.popper, modifiers: popperModifiers, transition: true }, ({ TransitionProps }) => React.createElement(ColorPickerBase, { color: color, input: input, TransitionProps: TransitionProps, setAnchorEl: setAnchorEl }))));
|
|
136
178
|
});
|
|
137
179
|
export default ColorPickerWrapper;
|
|
@@ -29,6 +29,11 @@ import { getHighlightedPartLabel, stubComponent, usePrevious } from '../utils';
|
|
|
29
29
|
const useStyles = makeAppStyles()({
|
|
30
30
|
popper: {
|
|
31
31
|
zIndex: 1400
|
|
32
|
+
},
|
|
33
|
+
customSelectAdornment: {
|
|
34
|
+
"&&": {
|
|
35
|
+
right: 0
|
|
36
|
+
}
|
|
32
37
|
}
|
|
33
38
|
});
|
|
34
39
|
const SelectContext = React.createContext({});
|
|
@@ -301,8 +306,10 @@ function EditInPlaceSearchSelect({ label, disabled, className, labelAdornment, i
|
|
|
301
306
|
React.createElement(Select, Object.assign({}, InputProps, { inputRef: ref => {
|
|
302
307
|
inputProps.ref.current = ref === null || ref === void 0 ? void 0 : ref.node;
|
|
303
308
|
}, classes: {
|
|
304
|
-
select: cx('cursor-text', fieldClasses.text)
|
|
305
|
-
}, onFocus: edit, value: (returnType === 'object' ? input.value[selectValueMark] : input.value) || '', endAdornment: loading ? renderLoading : React.createElement(InputAdornment, { position: "end", className: 'd-none'
|
|
309
|
+
select: cx('cursor-text', fieldClasses.text),
|
|
310
|
+
}, onFocus: edit, value: (returnType === 'object' ? input.value[selectValueMark] : input.value) || '', endAdornment: loading ? renderLoading : React.createElement(InputAdornment, { position: "end", className: 'd-none', classes: {
|
|
311
|
+
root: ownClasses.customSelectAdornment
|
|
312
|
+
} }, renderIcons), IconComponent: stubComponent }), renderValue)
|
|
306
313
|
: null })));
|
|
307
314
|
}, [
|
|
308
315
|
variant,
|