@manuscripts/style-guide 3.5.25 → 3.5.27
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.
- package/README.md +1 -1
- package/dist/cjs/colors.js +2 -1
- package/dist/cjs/components/DatePicker.js +14 -2
- package/dist/cjs/components/ExpandableSection.js +2 -1
- package/dist/cjs/components/Resizer/Resizer.js +88 -90
- package/dist/cjs/components/Resizer/ResizerButton.js +40 -16
- package/dist/cjs/components/SelectField.js +6 -0
- package/dist/cjs/defaultTheme.js +1 -0
- package/dist/es/colors.js +1 -0
- package/dist/es/components/DatePicker.js +14 -2
- package/dist/es/components/ExpandableSection.js +2 -1
- package/dist/es/components/Resizer/Resizer.js +88 -87
- package/dist/es/components/Resizer/ResizerButton.js +7 -12
- package/dist/es/components/SelectField.js +6 -0
- package/dist/es/defaultTheme.js +1 -0
- package/dist/types/colors.d.ts +1 -0
- package/dist/types/components/DatePicker.d.ts +1 -0
- package/dist/types/components/Resizer/Resizer.d.ts +2 -24
- package/dist/types/components/Resizer/ResizerButton.d.ts +5 -10
- package/dist/types/theme.d.ts +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/cjs/colors.js
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.zestOrange = exports.veryLightYellow = exports.contrastOrange = exports.butteryYellow = exports.wheatYellow = exports.contrastGreen = exports.veryLightGreen = exports.peppermintGreen = exports.springGreen = exports.killarneyGreen = exports.contrastRed = exports.darkRed = exports.chablisRed = exports.mandysRed = exports.punchRed = exports.veryLightBlue = exports.graphBlue1 = exports.focusBlue = exports.powderBlue = exports.aliceBlue = exports.jellyBeanBlue = exports.white = exports.alabasterGrey = exports.seashellGrey = exports.mercuryGrey = exports.greyLight = exports.greyMutedText = exports.greyMuted = exports.greyDark = exports.black = exports.manuscriptsSecondary = exports.manuscriptsXLight2 = exports.manuscriptsXLight = exports.manuscriptsLight = exports.manuscriptsIcons = exports.manuscriptsBlue = exports.manuscriptsBlueDark = void 0;
|
|
18
|
+
exports.zestOrange = exports.veryLightYellow = exports.contrastOrange = exports.butteryYellow = exports.wheatYellow = exports.contrastGreen = exports.veryLightGreen = exports.peppermintGreen = exports.springGreen = exports.killarneyGreen = exports.contrastRed = exports.darkRed = exports.chablisRed = exports.mandysRed = exports.punchRed = exports.veryLightBlue = exports.graphBlue1 = exports.focusBlue = exports.powderBlue = exports.aliceBlue = exports.jellyBeanBlue = exports.disabled = exports.white = exports.alabasterGrey = exports.seashellGrey = exports.mercuryGrey = exports.greyLight = exports.greyMutedText = exports.greyMuted = exports.greyDark = exports.black = exports.manuscriptsSecondary = exports.manuscriptsXLight2 = exports.manuscriptsXLight = exports.manuscriptsLight = exports.manuscriptsIcons = exports.manuscriptsBlue = exports.manuscriptsBlueDark = void 0;
|
|
19
19
|
exports.manuscriptsBlueDark = '#0b6bb8';
|
|
20
20
|
exports.manuscriptsBlue = '#0d79d0';
|
|
21
21
|
exports.manuscriptsIcons = '#1a9bc7';
|
|
@@ -32,6 +32,7 @@ exports.mercuryGrey = '#e2e2e2';
|
|
|
32
32
|
exports.seashellGrey = '#f2f2f2';
|
|
33
33
|
exports.alabasterGrey = '#fafafa';
|
|
34
34
|
exports.white = '#fff';
|
|
35
|
+
exports.disabled = '#f5f5f5';
|
|
35
36
|
exports.jellyBeanBlue = '#2781a1';
|
|
36
37
|
exports.aliceBlue = '#f2fbfc';
|
|
37
38
|
exports.powderBlue = '#ddf3fa';
|
|
@@ -10,7 +10,7 @@ const react_1 = require("react");
|
|
|
10
10
|
const react_datepicker_1 = __importDefault(require("react-datepicker"));
|
|
11
11
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
12
12
|
const icons_1 = require("./icons");
|
|
13
|
-
const DatePicker = ({ id, originalDate, date, handleDateChange, placeholder, showTimeSelect, required, }) => {
|
|
13
|
+
const DatePicker = ({ id, originalDate, date, handleDateChange, placeholder, showTimeSelect, required, disabled, }) => {
|
|
14
14
|
const [selectedDate, setSelectedDate] = (0, react_1.useState)(date || null);
|
|
15
15
|
(0, react_1.useEffect)(() => {
|
|
16
16
|
setSelectedDate(date ?? null);
|
|
@@ -22,7 +22,7 @@ const DatePicker = ({ id, originalDate, date, handleDateChange, placeholder, sho
|
|
|
22
22
|
const format = showTimeSelect
|
|
23
23
|
? 'd MMM yyyy, EEEE h:mm aa'
|
|
24
24
|
: 'd MMM yyyy, EEEE';
|
|
25
|
-
return ((0, jsx_runtime_1.jsxs)(Calendar, { children: [(0, jsx_runtime_1.jsx)(react_datepicker_1.default, { id: id, selected: selectedDate, onChange: handleChange, placeholderText: placeholder, minDate: originalDate, showTimeSelect: showTimeSelect, dateFormat: format, className: "calendar-input", popperPlacement: "bottom", required: required }), (0, jsx_runtime_1.jsx)(IconWrapper, { children: (0, jsx_runtime_1.jsx)(icons_1.CalendarIcon, { width: 16, height: 16 }) })] }));
|
|
25
|
+
return ((0, jsx_runtime_1.jsxs)(Calendar, { children: [(0, jsx_runtime_1.jsx)(react_datepicker_1.default, { id: id, selected: selectedDate, onChange: handleChange, placeholderText: placeholder, minDate: originalDate, showTimeSelect: showTimeSelect, dateFormat: format, className: "calendar-input", popperPlacement: "bottom", required: required, disabled: disabled }), (0, jsx_runtime_1.jsx)(IconWrapper, { children: (0, jsx_runtime_1.jsx)(icons_1.CalendarIcon, { width: 16, height: 16 }) })] }));
|
|
26
26
|
};
|
|
27
27
|
exports.DatePicker = DatePicker;
|
|
28
28
|
const Calendar = styled_components_1.default.div `
|
|
@@ -177,6 +177,18 @@ const Calendar = styled_components_1.default.div `
|
|
|
177
177
|
border-color: ${(props) => props.theme.colors.text.greyMuted};
|
|
178
178
|
background-color: #f2fbfc;
|
|
179
179
|
}
|
|
180
|
+
|
|
181
|
+
&:disabled {
|
|
182
|
+
cursor: not-allowed;
|
|
183
|
+
background-color: ${(props) => props.theme.colors.background.disabled};
|
|
184
|
+
border-color: ${(props) => props.theme.colors.border.field.default};
|
|
185
|
+
color: ${(props) => props.theme.colors.text.secondary};
|
|
186
|
+
|
|
187
|
+
&:hover {
|
|
188
|
+
border-color: ${(props) => props.theme.colors.border.field.default};
|
|
189
|
+
background-color: ${(props) => props.theme.colors.background.disabled};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
180
192
|
}
|
|
181
193
|
`;
|
|
182
194
|
const IconWrapper = styled_components_1.default.div `
|
|
@@ -46,7 +46,8 @@ const ContentOuter = styled_components_1.default.div `
|
|
|
46
46
|
display: grid;
|
|
47
47
|
grid-template-rows: ${(props) => (props.open ? '1fr' : '0fr')};
|
|
48
48
|
overflow: ${(props) => (props.open ? 'visible' : 'hidden')};
|
|
49
|
-
transition:
|
|
49
|
+
transition:
|
|
50
|
+
grid-template-rows 0.25s ease,
|
|
50
51
|
overflow 0s ${(props) => (props.open ? '0.25s' : '0s')} allow-discrete;
|
|
51
52
|
`;
|
|
52
53
|
const ContentInner = styled_components_1.default.div `
|
|
@@ -1,11 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.Resizer = void 0;
|
|
7
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const react_1 =
|
|
5
|
+
const react_1 = require("react");
|
|
9
6
|
const ResizerButton_1 = require("./ResizerButton");
|
|
10
7
|
const ResizerInner_1 = require("./ResizerInner");
|
|
11
8
|
const inners = {
|
|
@@ -18,92 +15,93 @@ const inners = {
|
|
|
18
15
|
start: ResizerInner_1.HorizontalStartResizerInner,
|
|
19
16
|
},
|
|
20
17
|
};
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
18
|
+
const DISABLE_RESIZE_NODE_NAMES = new Set([
|
|
19
|
+
'IFRAME',
|
|
20
|
+
'HTML',
|
|
21
|
+
null,
|
|
22
|
+
]);
|
|
23
|
+
const OUT_OF_BOUNDS_OFFSET = 32;
|
|
24
|
+
const Resizer = ({ collapsed, direction, onResize, onResizeButton, onResizeEnd, side, buttonInner, }) => {
|
|
25
|
+
const resizerRef = (0, react_1.useRef)(null);
|
|
26
|
+
const [isHovering, setIsHovering] = (0, react_1.useState)(false);
|
|
27
|
+
const isResizingRef = (0, react_1.useRef)(false);
|
|
28
|
+
const startPositionRef = (0, react_1.useRef)(0);
|
|
29
|
+
const cleanupRef = (0, react_1.useRef)(null);
|
|
30
|
+
const onResizeRef = (0, react_1.useRef)(onResize);
|
|
31
|
+
const onResizeButtonRef = (0, react_1.useRef)(onResizeButton);
|
|
32
|
+
const onResizeEndRef = (0, react_1.useRef)(onResizeEnd);
|
|
33
|
+
const directionRef = (0, react_1.useRef)(direction);
|
|
34
|
+
const sideRef = (0, react_1.useRef)(side);
|
|
35
|
+
(0, react_1.useEffect)(() => {
|
|
36
|
+
onResizeRef.current = onResize;
|
|
37
|
+
onResizeButtonRef.current = onResizeButton;
|
|
38
|
+
onResizeEndRef.current = onResizeEnd;
|
|
39
|
+
directionRef.current = direction;
|
|
40
|
+
sideRef.current = side;
|
|
41
|
+
}, [onResize, onResizeButton, onResizeEnd, direction, side]);
|
|
42
|
+
const getPosition = (0, react_1.useCallback)((e) => directionRef.current === 'row' ? e.screenX : e.screenY, []);
|
|
43
|
+
const getDelta = (0, react_1.useCallback)((position) => {
|
|
44
|
+
return sideRef.current === 'end'
|
|
45
|
+
? position - startPositionRef.current
|
|
46
|
+
: startPositionRef.current - position;
|
|
47
|
+
}, []);
|
|
48
|
+
const detachListeners = (0, react_1.useCallback)(() => {
|
|
49
|
+
if (cleanupRef.current) {
|
|
50
|
+
cleanupRef.current();
|
|
51
|
+
cleanupRef.current = null;
|
|
52
|
+
}
|
|
53
|
+
}, []);
|
|
54
|
+
(0, react_1.useEffect)(() => {
|
|
55
|
+
return () => detachListeners();
|
|
56
|
+
}, [detachListeners]);
|
|
57
|
+
const mouseUpHandler = (0, react_1.useCallback)((e, outOfBounds = false) => {
|
|
58
|
+
detachListeners();
|
|
59
|
+
isResizingRef.current = false;
|
|
60
|
+
const position = getPosition(e);
|
|
61
|
+
const adjustedPosition = outOfBounds
|
|
62
|
+
? position - OUT_OF_BOUNDS_OFFSET
|
|
63
|
+
: position;
|
|
64
|
+
const delta = getDelta(adjustedPosition);
|
|
65
|
+
if (delta === 0) {
|
|
66
|
+
onResizeButtonRef.current();
|
|
67
|
+
}
|
|
68
|
+
onResizeRef.current(delta);
|
|
69
|
+
onResizeEndRef.current(delta);
|
|
70
|
+
}, [detachListeners, getPosition, getDelta]);
|
|
71
|
+
const mouseMoveHandler = (0, react_1.useCallback)((e) => {
|
|
72
|
+
if (isResizingRef.current) {
|
|
73
|
+
const delta = getDelta(getPosition(e));
|
|
74
|
+
if (delta) {
|
|
75
|
+
onResizeRef.current(delta);
|
|
39
76
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.props.onResizeEnd(delta);
|
|
66
|
-
};
|
|
67
|
-
this.mouseMoveHandler = (e) => {
|
|
68
|
-
const position = this.getPosition(e);
|
|
69
|
-
const delta = this.getDelta(position);
|
|
70
|
-
this.scheduleResize(delta);
|
|
77
|
+
}
|
|
78
|
+
}, [getPosition, getDelta]);
|
|
79
|
+
const handleOutOfBounds = (0, react_1.useCallback)((e) => {
|
|
80
|
+
if (isResizingRef.current &&
|
|
81
|
+
DISABLE_RESIZE_NODE_NAMES.has(e.relatedTarget ? e.relatedTarget.nodeName : null)) {
|
|
82
|
+
mouseUpHandler(e, true);
|
|
83
|
+
}
|
|
84
|
+
}, [mouseUpHandler]);
|
|
85
|
+
const mouseDownHandler = (0, react_1.useCallback)((e) => {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
if (!resizerRef.current || e.target !== resizerRef.current) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (isResizingRef.current) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
isResizingRef.current = true;
|
|
94
|
+
startPositionRef.current = getPosition(e);
|
|
95
|
+
window.addEventListener('mousemove', mouseMoveHandler);
|
|
96
|
+
window.addEventListener('mouseup', mouseUpHandler);
|
|
97
|
+
window.addEventListener('mouseout', handleOutOfBounds);
|
|
98
|
+
cleanupRef.current = () => {
|
|
99
|
+
window.removeEventListener('mousemove', mouseMoveHandler);
|
|
100
|
+
window.removeEventListener('mouseup', mouseUpHandler);
|
|
101
|
+
window.removeEventListener('mouseout', handleOutOfBounds);
|
|
71
102
|
};
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
};
|
|
77
|
-
this.mouseLeaveHandler = () => {
|
|
78
|
-
this.setState({
|
|
79
|
-
isHovering: false,
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
this.handleOutofBounds = (e) => {
|
|
83
|
-
const disableResizeNodes = [
|
|
84
|
-
'IFRAME',
|
|
85
|
-
'HTML',
|
|
86
|
-
null,
|
|
87
|
-
];
|
|
88
|
-
if (this.state.isResizing &&
|
|
89
|
-
disableResizeNodes.includes(e.relatedTarget && e.relatedTarget.nodeName)) {
|
|
90
|
-
this.mouseUpHandler(e, true);
|
|
91
|
-
}
|
|
92
|
-
};
|
|
93
|
-
this.getDelta = (delta) => {
|
|
94
|
-
const { startPosition } = this.state;
|
|
95
|
-
return this.props.side === 'end'
|
|
96
|
-
? delta - startPosition
|
|
97
|
-
: startPosition - delta;
|
|
98
|
-
};
|
|
99
|
-
this.getPosition = (e) => {
|
|
100
|
-
return this.props.direction === 'row' ? e.screenX : e.screenY;
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
render() {
|
|
104
|
-
const { buttonInner, direction, side } = this.props;
|
|
105
|
-
const ResizerInner = inners[direction][side];
|
|
106
|
-
return ((0, jsx_runtime_1.jsx)(ResizerInner, { ref: this.resizerRef, onMouseDown: this.mouseDownHandler, onMouseEnter: this.mouseEnterHandler, onMouseLeave: this.mouseLeaveHandler, children: (0, jsx_runtime_1.jsx)(ResizerButton_1.ResizerButton, { direction: direction, isCollapsed: this.props.collapsed, isVisible: this.state.isHovering, onClick: this.props.onResizeButton, side: side, buttonInner: buttonInner }) }));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
103
|
+
}, [getPosition, mouseMoveHandler, mouseUpHandler, handleOutOfBounds]);
|
|
104
|
+
const ResizerInner = inners[direction][side];
|
|
105
|
+
return ((0, jsx_runtime_1.jsx)(ResizerInner, { ref: resizerRef, onMouseDown: mouseDownHandler, onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), children: (0, jsx_runtime_1.jsx)(ResizerButton_1.ResizerButton, { direction: direction, isCollapsed: collapsed, isVisible: isHovering, onClick: onResizeButton, side: side, buttonInner: buttonInner }) }));
|
|
106
|
+
};
|
|
109
107
|
exports.Resizer = Resizer;
|
|
@@ -1,11 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
36
|
exports.ResizerButton = void 0;
|
|
7
37
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
|
-
const react_1 =
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
9
39
|
const ResizerButtonInner_1 = require("./ResizerButtonInner");
|
|
10
40
|
const inners = {
|
|
11
41
|
column: {
|
|
@@ -17,15 +47,9 @@ const inners = {
|
|
|
17
47
|
start: ResizerButtonInner_1.HorizontalStartResizerButtonInner,
|
|
18
48
|
},
|
|
19
49
|
};
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
27
|
-
exports.ResizerButton = ResizerButton;
|
|
28
|
-
ResizerButton.defaultProps = {
|
|
29
|
-
isCollapsed: false,
|
|
30
|
-
isVisible: false,
|
|
31
|
-
};
|
|
50
|
+
exports.ResizerButton = react_1.default.memo(({ buttonInner, direction, side, isCollapsed = false, isVisible = false, onClick, }) => {
|
|
51
|
+
const preventMouseDown = (0, react_1.useCallback)((event) => event.preventDefault(), []);
|
|
52
|
+
const ResizerButtonInner = buttonInner || inners[direction][side];
|
|
53
|
+
return ((0, jsx_runtime_1.jsx)(ResizerButtonInner, { "aria-expanded": !isCollapsed, isCollapsed: isCollapsed, isVisible: isVisible, onClick: onClick, onMouseDown: preventMouseDown, tabIndex: 0 }));
|
|
54
|
+
});
|
|
55
|
+
exports.ResizerButton.displayName = 'ResizerButton';
|
|
@@ -8,6 +8,11 @@ const jsx_runtime_1 = require("react/jsx-runtime");
|
|
|
8
8
|
const react_select_1 = __importDefault(require("react-select"));
|
|
9
9
|
const styled_components_1 = require("styled-components");
|
|
10
10
|
const selectStyles = (theme, error, variant, listMaxHeight) => ({
|
|
11
|
+
container: (base, state) => ({
|
|
12
|
+
...base,
|
|
13
|
+
cursor: state.isDisabled ? 'not-allowed' : 'default',
|
|
14
|
+
pointerEvents: state.isDisabled ? 'auto' : base.pointerEvents,
|
|
15
|
+
}),
|
|
11
16
|
control: (base, state) => ({
|
|
12
17
|
...base,
|
|
13
18
|
minHeight: variant === 'large' ? 40 : 32,
|
|
@@ -37,6 +42,7 @@ const selectStyles = (theme, error, variant, listMaxHeight) => ({
|
|
|
37
42
|
: theme.colors.background.primary,
|
|
38
43
|
transition: 'border-color 120ms ease, box-shadow 120ms ease',
|
|
39
44
|
cursor: state.isDisabled ? 'not-allowed' : 'pointer',
|
|
45
|
+
pointerEvents: state.isDisabled ? 'none' : base.pointerEvents,
|
|
40
46
|
}),
|
|
41
47
|
valueContainer: (base) => ({
|
|
42
48
|
...base,
|
package/dist/cjs/defaultTheme.js
CHANGED
package/dist/es/colors.js
CHANGED
|
@@ -29,6 +29,7 @@ export const mercuryGrey = '#e2e2e2';
|
|
|
29
29
|
export const seashellGrey = '#f2f2f2';
|
|
30
30
|
export const alabasterGrey = '#fafafa';
|
|
31
31
|
export const white = '#fff';
|
|
32
|
+
export const disabled = '#f5f5f5';
|
|
32
33
|
export const jellyBeanBlue = '#2781a1';
|
|
33
34
|
export const aliceBlue = '#f2fbfc';
|
|
34
35
|
export const powderBlue = '#ddf3fa';
|
|
@@ -4,7 +4,7 @@ import { useEffect, useState } from 'react';
|
|
|
4
4
|
import ReactDatePicker from 'react-datepicker';
|
|
5
5
|
import styled from 'styled-components';
|
|
6
6
|
import { CalendarIcon } from './icons';
|
|
7
|
-
export const DatePicker = ({ id, originalDate, date, handleDateChange, placeholder, showTimeSelect, required, }) => {
|
|
7
|
+
export const DatePicker = ({ id, originalDate, date, handleDateChange, placeholder, showTimeSelect, required, disabled, }) => {
|
|
8
8
|
const [selectedDate, setSelectedDate] = useState(date || null);
|
|
9
9
|
useEffect(() => {
|
|
10
10
|
setSelectedDate(date ?? null);
|
|
@@ -16,7 +16,7 @@ export const DatePicker = ({ id, originalDate, date, handleDateChange, placehold
|
|
|
16
16
|
const format = showTimeSelect
|
|
17
17
|
? 'd MMM yyyy, EEEE h:mm aa'
|
|
18
18
|
: 'd MMM yyyy, EEEE';
|
|
19
|
-
return (_jsxs(Calendar, { children: [_jsx(ReactDatePicker, { id: id, selected: selectedDate, onChange: handleChange, placeholderText: placeholder, minDate: originalDate, showTimeSelect: showTimeSelect, dateFormat: format, className: "calendar-input", popperPlacement: "bottom", required: required }), _jsx(IconWrapper, { children: _jsx(CalendarIcon, { width: 16, height: 16 }) })] }));
|
|
19
|
+
return (_jsxs(Calendar, { children: [_jsx(ReactDatePicker, { id: id, selected: selectedDate, onChange: handleChange, placeholderText: placeholder, minDate: originalDate, showTimeSelect: showTimeSelect, dateFormat: format, className: "calendar-input", popperPlacement: "bottom", required: required, disabled: disabled }), _jsx(IconWrapper, { children: _jsx(CalendarIcon, { width: 16, height: 16 }) })] }));
|
|
20
20
|
};
|
|
21
21
|
const Calendar = styled.div `
|
|
22
22
|
width: 100%;
|
|
@@ -170,6 +170,18 @@ const Calendar = styled.div `
|
|
|
170
170
|
border-color: ${(props) => props.theme.colors.text.greyMuted};
|
|
171
171
|
background-color: #f2fbfc;
|
|
172
172
|
}
|
|
173
|
+
|
|
174
|
+
&:disabled {
|
|
175
|
+
cursor: not-allowed;
|
|
176
|
+
background-color: ${(props) => props.theme.colors.background.disabled};
|
|
177
|
+
border-color: ${(props) => props.theme.colors.border.field.default};
|
|
178
|
+
color: ${(props) => props.theme.colors.text.secondary};
|
|
179
|
+
|
|
180
|
+
&:hover {
|
|
181
|
+
border-color: ${(props) => props.theme.colors.border.field.default};
|
|
182
|
+
background-color: ${(props) => props.theme.colors.background.disabled};
|
|
183
|
+
}
|
|
184
|
+
}
|
|
173
185
|
}
|
|
174
186
|
`;
|
|
175
187
|
const IconWrapper = styled.div `
|
|
@@ -39,7 +39,8 @@ const ContentOuter = styled.div `
|
|
|
39
39
|
display: grid;
|
|
40
40
|
grid-template-rows: ${(props) => (props.open ? '1fr' : '0fr')};
|
|
41
41
|
overflow: ${(props) => (props.open ? 'visible' : 'hidden')};
|
|
42
|
-
transition:
|
|
42
|
+
transition:
|
|
43
|
+
grid-template-rows 0.25s ease,
|
|
43
44
|
overflow 0s ${(props) => (props.open ? '0.25s' : '0s')} allow-discrete;
|
|
44
45
|
`;
|
|
45
46
|
const ContentInner = styled.div `
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
3
3
|
import { ResizerButton } from './ResizerButton';
|
|
4
4
|
import { HorizontalEndResizerInner, HorizontalStartResizerInner, VerticalEndResizerInner, VerticalStartResizerInner, } from './ResizerInner';
|
|
5
5
|
const inners = {
|
|
@@ -12,91 +12,92 @@ const inners = {
|
|
|
12
12
|
start: HorizontalStartResizerInner,
|
|
13
13
|
},
|
|
14
14
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
isHovering: false,
|
|
74
|
-
});
|
|
75
|
-
};
|
|
76
|
-
this.handleOutofBounds = (e) => {
|
|
77
|
-
const disableResizeNodes = [
|
|
78
|
-
'IFRAME',
|
|
79
|
-
'HTML',
|
|
80
|
-
null,
|
|
81
|
-
];
|
|
82
|
-
if (this.state.isResizing &&
|
|
83
|
-
disableResizeNodes.includes(e.relatedTarget && e.relatedTarget.nodeName)) {
|
|
84
|
-
this.mouseUpHandler(e, true);
|
|
15
|
+
const DISABLE_RESIZE_NODE_NAMES = new Set([
|
|
16
|
+
'IFRAME',
|
|
17
|
+
'HTML',
|
|
18
|
+
null,
|
|
19
|
+
]);
|
|
20
|
+
const OUT_OF_BOUNDS_OFFSET = 32;
|
|
21
|
+
export const Resizer = ({ collapsed, direction, onResize, onResizeButton, onResizeEnd, side, buttonInner, }) => {
|
|
22
|
+
const resizerRef = useRef(null);
|
|
23
|
+
const [isHovering, setIsHovering] = useState(false);
|
|
24
|
+
const isResizingRef = useRef(false);
|
|
25
|
+
const startPositionRef = useRef(0);
|
|
26
|
+
const cleanupRef = useRef(null);
|
|
27
|
+
const onResizeRef = useRef(onResize);
|
|
28
|
+
const onResizeButtonRef = useRef(onResizeButton);
|
|
29
|
+
const onResizeEndRef = useRef(onResizeEnd);
|
|
30
|
+
const directionRef = useRef(direction);
|
|
31
|
+
const sideRef = useRef(side);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
onResizeRef.current = onResize;
|
|
34
|
+
onResizeButtonRef.current = onResizeButton;
|
|
35
|
+
onResizeEndRef.current = onResizeEnd;
|
|
36
|
+
directionRef.current = direction;
|
|
37
|
+
sideRef.current = side;
|
|
38
|
+
}, [onResize, onResizeButton, onResizeEnd, direction, side]);
|
|
39
|
+
const getPosition = useCallback((e) => directionRef.current === 'row' ? e.screenX : e.screenY, []);
|
|
40
|
+
const getDelta = useCallback((position) => {
|
|
41
|
+
return sideRef.current === 'end'
|
|
42
|
+
? position - startPositionRef.current
|
|
43
|
+
: startPositionRef.current - position;
|
|
44
|
+
}, []);
|
|
45
|
+
const detachListeners = useCallback(() => {
|
|
46
|
+
if (cleanupRef.current) {
|
|
47
|
+
cleanupRef.current();
|
|
48
|
+
cleanupRef.current = null;
|
|
49
|
+
}
|
|
50
|
+
}, []);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
return () => detachListeners();
|
|
53
|
+
}, [detachListeners]);
|
|
54
|
+
const mouseUpHandler = useCallback((e, outOfBounds = false) => {
|
|
55
|
+
detachListeners();
|
|
56
|
+
isResizingRef.current = false;
|
|
57
|
+
const position = getPosition(e);
|
|
58
|
+
const adjustedPosition = outOfBounds
|
|
59
|
+
? position - OUT_OF_BOUNDS_OFFSET
|
|
60
|
+
: position;
|
|
61
|
+
const delta = getDelta(adjustedPosition);
|
|
62
|
+
if (delta === 0) {
|
|
63
|
+
onResizeButtonRef.current();
|
|
64
|
+
}
|
|
65
|
+
onResizeRef.current(delta);
|
|
66
|
+
onResizeEndRef.current(delta);
|
|
67
|
+
}, [detachListeners, getPosition, getDelta]);
|
|
68
|
+
const mouseMoveHandler = useCallback((e) => {
|
|
69
|
+
if (isResizingRef.current) {
|
|
70
|
+
const delta = getDelta(getPosition(e));
|
|
71
|
+
if (delta) {
|
|
72
|
+
onResizeRef.current(delta);
|
|
85
73
|
}
|
|
74
|
+
}
|
|
75
|
+
}, [getPosition, getDelta]);
|
|
76
|
+
const handleOutOfBounds = useCallback((e) => {
|
|
77
|
+
if (isResizingRef.current &&
|
|
78
|
+
DISABLE_RESIZE_NODE_NAMES.has(e.relatedTarget ? e.relatedTarget.nodeName : null)) {
|
|
79
|
+
mouseUpHandler(e, true);
|
|
80
|
+
}
|
|
81
|
+
}, [mouseUpHandler]);
|
|
82
|
+
const mouseDownHandler = useCallback((e) => {
|
|
83
|
+
e.preventDefault();
|
|
84
|
+
if (!resizerRef.current || e.target !== resizerRef.current) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (isResizingRef.current) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
isResizingRef.current = true;
|
|
91
|
+
startPositionRef.current = getPosition(e);
|
|
92
|
+
window.addEventListener('mousemove', mouseMoveHandler);
|
|
93
|
+
window.addEventListener('mouseup', mouseUpHandler);
|
|
94
|
+
window.addEventListener('mouseout', handleOutOfBounds);
|
|
95
|
+
cleanupRef.current = () => {
|
|
96
|
+
window.removeEventListener('mousemove', mouseMoveHandler);
|
|
97
|
+
window.removeEventListener('mouseup', mouseUpHandler);
|
|
98
|
+
window.removeEventListener('mouseout', handleOutOfBounds);
|
|
86
99
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
: startPosition - delta;
|
|
92
|
-
};
|
|
93
|
-
this.getPosition = (e) => {
|
|
94
|
-
return this.props.direction === 'row' ? e.screenX : e.screenY;
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
render() {
|
|
98
|
-
const { buttonInner, direction, side } = this.props;
|
|
99
|
-
const ResizerInner = inners[direction][side];
|
|
100
|
-
return (_jsx(ResizerInner, { ref: this.resizerRef, onMouseDown: this.mouseDownHandler, onMouseEnter: this.mouseEnterHandler, onMouseLeave: this.mouseLeaveHandler, children: _jsx(ResizerButton, { direction: direction, isCollapsed: this.props.collapsed, isVisible: this.state.isHovering, onClick: this.props.onResizeButton, side: side, buttonInner: buttonInner }) }));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
100
|
+
}, [getPosition, mouseMoveHandler, mouseUpHandler, handleOutOfBounds]);
|
|
101
|
+
const ResizerInner = inners[direction][side];
|
|
102
|
+
return (_jsx(ResizerInner, { ref: resizerRef, onMouseDown: mouseDownHandler, onMouseEnter: () => setIsHovering(true), onMouseLeave: () => setIsHovering(false), children: _jsx(ResizerButton, { direction: direction, isCollapsed: collapsed, isVisible: isHovering, onClick: onResizeButton, side: side, buttonInner: buttonInner }) }));
|
|
103
|
+
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import React from 'react';
|
|
2
|
+
import React, { useCallback } from 'react';
|
|
3
3
|
import { HorizontalEndResizerButtonInner, HorizontalStartResizerButtonInner, VerticalEndResizerButtonInner, VerticalStartResizerButtonInner, } from './ResizerButtonInner';
|
|
4
4
|
const inners = {
|
|
5
5
|
column: {
|
|
@@ -11,14 +11,9 @@ const inners = {
|
|
|
11
11
|
start: HorizontalStartResizerButtonInner,
|
|
12
12
|
},
|
|
13
13
|
};
|
|
14
|
-
export
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
ResizerButton.defaultProps = {
|
|
22
|
-
isCollapsed: false,
|
|
23
|
-
isVisible: false,
|
|
24
|
-
};
|
|
14
|
+
export const ResizerButton = React.memo(({ buttonInner, direction, side, isCollapsed = false, isVisible = false, onClick, }) => {
|
|
15
|
+
const preventMouseDown = useCallback((event) => event.preventDefault(), []);
|
|
16
|
+
const ResizerButtonInner = buttonInner || inners[direction][side];
|
|
17
|
+
return (_jsx(ResizerButtonInner, { "aria-expanded": !isCollapsed, isCollapsed: isCollapsed, isVisible: isVisible, onClick: onClick, onMouseDown: preventMouseDown, tabIndex: 0 }));
|
|
18
|
+
});
|
|
19
|
+
ResizerButton.displayName = 'ResizerButton';
|
|
@@ -2,6 +2,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import Select from 'react-select';
|
|
3
3
|
import { useTheme } from 'styled-components';
|
|
4
4
|
const selectStyles = (theme, error, variant, listMaxHeight) => ({
|
|
5
|
+
container: (base, state) => ({
|
|
6
|
+
...base,
|
|
7
|
+
cursor: state.isDisabled ? 'not-allowed' : 'default',
|
|
8
|
+
pointerEvents: state.isDisabled ? 'auto' : base.pointerEvents,
|
|
9
|
+
}),
|
|
5
10
|
control: (base, state) => ({
|
|
6
11
|
...base,
|
|
7
12
|
minHeight: variant === 'large' ? 40 : 32,
|
|
@@ -31,6 +36,7 @@ const selectStyles = (theme, error, variant, listMaxHeight) => ({
|
|
|
31
36
|
: theme.colors.background.primary,
|
|
32
37
|
transition: 'border-color 120ms ease, box-shadow 120ms ease',
|
|
33
38
|
cursor: state.isDisabled ? 'not-allowed' : 'pointer',
|
|
39
|
+
pointerEvents: state.isDisabled ? 'none' : base.pointerEvents,
|
|
34
40
|
}),
|
|
35
41
|
valueContainer: (base) => ({
|
|
36
42
|
...base,
|
package/dist/es/defaultTheme.js
CHANGED
package/dist/types/colors.d.ts
CHANGED
|
@@ -29,6 +29,7 @@ export declare const mercuryGrey = "#e2e2e2";
|
|
|
29
29
|
export declare const seashellGrey = "#f2f2f2";
|
|
30
30
|
export declare const alabasterGrey = "#fafafa";
|
|
31
31
|
export declare const white = "#fff";
|
|
32
|
+
export declare const disabled = "#f5f5f5";
|
|
32
33
|
export declare const jellyBeanBlue = "#2781a1";
|
|
33
34
|
export declare const aliceBlue = "#f2fbfc";
|
|
34
35
|
export declare const powderBlue = "#ddf3fa";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ResizerButtonInnerProps } from './ResizerButtonInner';
|
|
3
3
|
import { ResizerDirection, ResizerSide } from './types';
|
|
4
|
-
interface
|
|
4
|
+
interface ResizerProps {
|
|
5
5
|
collapsed: boolean;
|
|
6
6
|
direction: ResizerDirection;
|
|
7
7
|
onResize: (resizeDelta: number) => void;
|
|
@@ -10,27 +10,5 @@ interface Props {
|
|
|
10
10
|
side: ResizerSide;
|
|
11
11
|
buttonInner?: React.ComponentType<ResizerButtonInnerProps>;
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
isHovering: boolean;
|
|
15
|
-
isResizing: boolean;
|
|
16
|
-
startPosition: number;
|
|
17
|
-
}
|
|
18
|
-
export declare class Resizer extends React.Component<Props, State> {
|
|
19
|
-
resizerRef: React.RefObject<HTMLDivElement | null>;
|
|
20
|
-
state: {
|
|
21
|
-
isHovering: boolean;
|
|
22
|
-
isResizing: boolean;
|
|
23
|
-
startPosition: number;
|
|
24
|
-
};
|
|
25
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
26
|
-
private scheduleResize;
|
|
27
|
-
private mouseDownHandler;
|
|
28
|
-
private mouseUpHandler;
|
|
29
|
-
private mouseMoveHandler;
|
|
30
|
-
private mouseEnterHandler;
|
|
31
|
-
private mouseLeaveHandler;
|
|
32
|
-
private handleOutofBounds;
|
|
33
|
-
private getDelta;
|
|
34
|
-
private getPosition;
|
|
35
|
-
}
|
|
13
|
+
export declare const Resizer: React.FC<ResizerProps>;
|
|
36
14
|
export {};
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ResizerButtonInnerProps } from './ResizerButtonInner';
|
|
3
3
|
import { ResizerDirection, ResizerSide } from './types';
|
|
4
|
-
interface
|
|
4
|
+
interface ResizerButtonProps {
|
|
5
5
|
direction: ResizerDirection;
|
|
6
|
-
isCollapsed
|
|
7
|
-
isVisible
|
|
6
|
+
isCollapsed?: boolean;
|
|
7
|
+
isVisible?: boolean;
|
|
8
|
+
onClick?: React.MouseEventHandler;
|
|
8
9
|
side: ResizerSide;
|
|
9
10
|
buttonInner?: React.ComponentType<ResizerButtonInnerProps>;
|
|
10
11
|
}
|
|
11
|
-
export declare
|
|
12
|
-
static defaultProps: {
|
|
13
|
-
isCollapsed: boolean;
|
|
14
|
-
isVisible: boolean;
|
|
15
|
-
};
|
|
16
|
-
render(): import("react/jsx-runtime").JSX.Element;
|
|
17
|
-
}
|
|
12
|
+
export declare const ResizerButton: React.FC<ResizerButtonProps>;
|
|
18
13
|
export {};
|
package/dist/types/theme.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manuscripts/style-guide",
|
|
3
3
|
"description": "Shared components for Manuscripts applications",
|
|
4
|
-
"version": "3.5.
|
|
4
|
+
"version": "3.5.27",
|
|
5
5
|
"repository": "github:Atypon-OpenSource/manuscripts-style-guide",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"main": "dist/cjs",
|