ish-ui 1.3.7 → 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
- 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,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
- 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);
@@ -107,20 +132,37 @@ const ColorPickerBase = React.memo(({ color, input: { value, onChange }, Transit
107
132
  }
108
133
  }, [value, hueColor]);
109
134
  useEffect(() => {
110
- const hueHsv = hueRef.current.state.hsv;
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 onChangeComplete = () => {
116
- onChange(hueRef.current.state.hex.replace('#', ''));
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("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 }))))));
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 }) => (React.createElement(ColorPickerBase, { color: color, input: input, TransitionProps: TransitionProps, setAnchorEl: setAnchorEl, placement: placement })))));
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;
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.8",
5
5
  "description": "UI elements for onCourse and other ish apps",
6
6
  "main": "main.ts",
7
7
  "devDependencies": {