ish-ui 1.3.7 → 1.3.9

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
- bottom: '12px',
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,23 +99,33 @@ 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
- const ColorPickerBase = React.memo(({ color, input: { value, onChange }, TransitionProps, setAnchorEl, placement }) => {
87
- const { classes, cx } = useStyles();
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);
91
- const onHueChange = useCallback(color => {
92
- setHueColor(color.hsv);
93
- setAlfaColor(color.hsv);
94
- }, []);
95
- const onAlfaChange = useCallback(color => {
116
+ const onColorChange = useCallback(color => {
96
117
  setHueColor({
97
118
  h: color.hsv.h, s: color.hsv.a, v: color.hsv.v, a: 1
98
119
  });
99
120
  setAlfaColor(color.hsv);
100
121
  }, []);
122
+ const onChangeComplete = (color) => {
123
+ var _a, _b;
124
+ 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);
125
+ if (hex) {
126
+ onChange(hex.replace('#', ''));
127
+ }
128
+ };
101
129
  const handleClickAway = useCallback(() => {
102
130
  setAnchorEl(null);
103
131
  }, []);
@@ -107,20 +135,27 @@ const ColorPickerBase = React.memo(({ color, input: { value, onChange }, Transit
107
135
  }
108
136
  }, [value, hueColor]);
109
137
  useEffect(() => {
110
- const hueHsv = hueRef.current.state.hsv;
138
+ var _a, _b;
139
+ const hueHsv = (_b = (_a = hueRef.current) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.hsv;
140
+ if (!hueHsv) {
141
+ return;
142
+ }
111
143
  setAlfaColor({
112
144
  h: hueHsv.h, s: 1, v: hueHsv.v, a: hueHsv.s
113
145
  });
114
146
  }, [hueRef.current]);
115
- const onChangeComplete = () => {
116
- onChange(hueRef.current.state.hex.replace('#', ''));
117
- };
118
147
  return (React.createElement(ClickAwayListener, { onClickAway: handleClickAway },
119
148
  React.createElement(Grow, Object.assign({}, TransitionProps, { timeout: 200 }),
120
- React.createElement("div", null,
121
- React.createElement(Paper, { className: cx(classes.paper, placement === 'bottom' && classes.paperPlaceBottom) },
122
- React.createElement(HuePicker, { ref: hueRef, color: hueColor, onChange: onHueChange, onChangeComplete: onChangeComplete, width: "168", className: classes.bottomOffset }),
123
- React.createElement(AlphaPicker, { className: classes.customAlfa, color: alfaColor, width: "168", onChange: onAlfaChange, onChangeComplete: onChangeComplete }))))));
149
+ React.createElement(Paper, { className: classes.paper },
150
+ React.createElement("span", { className: classes.arrow, "data-popper-arrow": true }),
151
+ React.createElement(HuePicker, { ref: hueRef, color: hueColor, onChange: onColorChange, onChangeComplete: onChangeComplete, width: "168", className: classes.bottomOffset }),
152
+ React.createElement(AlphaPicker, { className: classes.customAlfa, color: alfaColor, width: "168", onChange: onColorChange, onChangeComplete: onChangeComplete }),
153
+ React.createElement("div", { className: classes.material },
154
+ React.createElement(MaterialPicker, { styles: {
155
+ default: {
156
+ material: { width: '100%', height: 'unset', padding: 0, fontFamily: 'inherit' }
157
+ }
158
+ }, color: hueColor, onChange: onColorChange, onChangeComplete: onChangeComplete }))))));
124
159
  });
125
160
  const ColorPickerWrapper = React.memo(({ input, placement = 'top', width }) => {
126
161
  const { classes, cx } = useStyles();
@@ -132,6 +167,6 @@ const ColorPickerWrapper = React.memo(({ input, placement = 'top', width }) => {
132
167
  const color = useMemo(() => (input.value ? '#' + input.value : theme.palette.primary.main), [theme, input.value]);
133
168
  return (React.createElement("div", { className: "d-flex", onClick: stopEventPropagation },
134
169
  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 }) => (React.createElement(ColorPickerBase, { color: color, input: input, TransitionProps: TransitionProps, setAnchorEl: setAnchorEl, placement: placement })))));
170
+ 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
171
  });
137
172
  export default ColorPickerWrapper;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ish-ui",
3
3
  "sideEffects": false,
4
- "version": "1.3.7",
4
+ "version": "1.3.9",
5
5
  "description": "UI elements for onCourse and other ish apps",
6
6
  "main": "main.ts",
7
7
  "devDependencies": {