@kaizen/components 0.0.0-canary-v2-20250901045936 → 0.0.0-canary-alpha-release-20250918043833
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/alpha/README.md +28 -0
- package/alpha/package.json +5 -0
- package/dist/cjs/alpha.cjs +1 -0
- package/dist/cjs/src/Modal/GenericModal/GenericModal.cjs +33 -65
- package/dist/cjs/src/Modal/GenericModal/GenericModal.module.scss.cjs +1 -3
- package/dist/cjs/src/Notification/InlineNotification/InlineNotification.cjs +1 -1
- package/dist/cjs/src/__alpha__/SingleSelect/SingleSelect.cjs +35 -74
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.cjs +105 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.cjs +11 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.cjs +112 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.cjs +16 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/List/List.cjs +35 -10
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.cjs +61 -8
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.cjs +10 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.cjs +38 -9
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.cjs +4 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.cjs +60 -30
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.cjs +2 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.cjs +2 -1
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.cjs +4 -2
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.cjs +87 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.cjs +11 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.cjs +52 -0
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.cjs +13 -0
- package/dist/esm/alpha.mjs +1 -1
- package/dist/esm/src/Modal/GenericModal/GenericModal.mjs +34 -65
- package/dist/esm/src/Modal/GenericModal/GenericModal.module.scss.mjs +1 -3
- package/dist/esm/src/Notification/InlineNotification/InlineNotification.mjs +1 -1
- package/dist/esm/src/__alpha__/SingleSelect/SingleSelect.mjs +39 -73
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.mjs +96 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css.mjs +9 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.mjs +103 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css.mjs +14 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/List/List.mjs +37 -14
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.mjs +63 -13
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css.mjs +10 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.mjs +41 -15
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css.mjs +4 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.mjs +69 -43
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css.mjs +2 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.mjs +2 -1
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.mjs +4 -2
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.mjs +78 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css.mjs +9 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.mjs +43 -0
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css.mjs +11 -0
- package/dist/styles.css +385 -21
- package/dist/types/__alpha__/SingleSelect/SingleSelect.d.ts +14 -19
- package/dist/types/__alpha__/SingleSelect/_docs/mockData.d.ts +3 -0
- package/dist/types/__alpha__/SingleSelect/context/SingleSelectContext.d.ts +15 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBox/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/List/List.d.ts +2 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.d.ts +2 -7
- package/dist/types/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.d.ts +2 -9
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/Popover.d.ts +3 -6
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Select/Select.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/Select/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.d.ts +2 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.d.ts +1 -0
- package/dist/types/__alpha__/SingleSelect/subcomponents/index.d.ts +4 -1
- package/dist/types/__alpha__/SingleSelect/types.d.ts +68 -11
- package/locales/en.json +9 -1
- package/package.json +10 -3
- package/src/Modal/GenericModal/GenericModal.spec.tsx +1 -1
- package/src/Modal/GenericModal/GenericModal.tsx +38 -70
- package/src/Notification/InlineNotification/InlineNotification.tsx +1 -1
- package/src/RichTextEditor/RichTextEditor/RichTextEditor.spec.stories.tsx +10 -3
- package/src/__alpha__/SingleSelect/SingleSelect.tsx +35 -88
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.mdx +96 -6
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.spec.stories.tsx +22 -24
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stickersheet.stories.tsx +389 -33
- package/src/__alpha__/SingleSelect/_docs/SingleSelect.stories.tsx +41 -22
- package/src/__alpha__/SingleSelect/_docs/mockData.ts +20 -14
- package/src/__alpha__/SingleSelect/context/SingleSelectContext.tsx +18 -7
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.module.css +35 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/ComboBox.tsx +106 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBox/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.module.css +130 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/ComboBoxTrigger.tsx +121 -0
- package/src/__alpha__/SingleSelect/subcomponents/ComboBoxTrigger/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.module.css +5 -0
- package/src/__alpha__/SingleSelect/subcomponents/List/List.tsx +36 -13
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.module.css +84 -3
- package/src/__alpha__/SingleSelect/subcomponents/ListItem/ListItem.tsx +67 -11
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.module.css +20 -5
- package/src/__alpha__/SingleSelect/subcomponents/ListSection/ListSection.tsx +46 -19
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.module.css +7 -5
- package/src/__alpha__/SingleSelect/subcomponents/Popover/Popover.tsx +90 -37
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePopoverPositioning.ts +2 -2
- package/src/__alpha__/SingleSelect/subcomponents/Popover/utils/usePositioningStyles.ts +9 -8
- package/src/__alpha__/SingleSelect/subcomponents/Select/Select.module.css +35 -0
- package/src/__alpha__/SingleSelect/subcomponents/Select/Select.tsx +84 -0
- package/src/__alpha__/SingleSelect/subcomponents/Select/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.module.css +77 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/SelectTrigger.tsx +52 -0
- package/src/__alpha__/SingleSelect/subcomponents/SelectTrigger/index.ts +1 -0
- package/src/__alpha__/SingleSelect/subcomponents/index.ts +4 -1
- package/src/__alpha__/SingleSelect/types.ts +94 -14
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.cjs +0 -57
- package/dist/cjs/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.cjs +0 -6
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.mjs +0 -49
- package/dist/esm/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css.mjs +0 -4
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.d.ts +0 -2
- package/dist/types/__alpha__/SingleSelect/subcomponents/Trigger/index.d.ts +0 -1
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.module.css +0 -19
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/Trigger.tsx +0 -35
- package/src/__alpha__/SingleSelect/subcomponents/Trigger/index.ts +0 -1
package/alpha/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Entrypoint: alpha
|
|
2
|
+
|
|
3
|
+
This directory is here to redirect any imports from `@kaizen/components/alpha` to the correct distribution of compiled code to allow for treeshaking of alpha components.
|
|
4
|
+
|
|
5
|
+
More details: [https://github.com/theKashey/multiple-entry-points-example](https://github.com/theKashey/multiple-entry-points-example)
|
|
6
|
+
|
|
7
|
+
## Contribution
|
|
8
|
+
|
|
9
|
+
All "alpha" components are to be added to the `src/__alpha__` directory.
|
|
10
|
+
|
|
11
|
+
### What is an "alpha" component?
|
|
12
|
+
|
|
13
|
+
These components are in development phase and not yet ready for use. Imports from this entry point should not be used in production.
|
|
14
|
+
|
|
15
|
+
eg. `SingleSelect` will be built in `alpha`, you can test it and try it out here, but it won't be ready for consumers to adopt until it moved to `next` or root import.
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
// How to test an alpha component
|
|
19
|
+
import { SingleSelect } from "@kaizen/components/alpha"
|
|
20
|
+
|
|
21
|
+
// Consumers can only adopt it when it moves to next or the root
|
|
22
|
+
import { SingleSelect } from "@kaizen/components/next"
|
|
23
|
+
import { SingleSelect } from "@kaizen/components"
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Eventually, all alpha components are moved to either `next` or root import.
|
|
27
|
+
|
|
28
|
+
More details [Kaizen tech vision & strategy](https://cultureamp.atlassian.net/wiki/spaces/DesignSystem/pages/4630021426/2.+Create+a+predictable+release+and+deprecation+cycle#Solutions)
|
package/dist/cjs/alpha.cjs
CHANGED
|
@@ -4,7 +4,7 @@ var React = require('react');
|
|
|
4
4
|
var ReactDOM = require('react-dom');
|
|
5
5
|
var react = require('@headlessui/react');
|
|
6
6
|
var classnames = require('classnames');
|
|
7
|
-
var
|
|
7
|
+
var reactFocusOn = require('react-focus-on');
|
|
8
8
|
var useIsClientReady = require('../../utils/useIsClientReady/useIsClientReady.cjs');
|
|
9
9
|
var console = require('../util/console.cjs');
|
|
10
10
|
var ModalContext = require('./context/ModalContext.cjs');
|
|
@@ -16,7 +16,6 @@ function _interopDefault(e) {
|
|
|
16
16
|
}
|
|
17
17
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
18
18
|
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
19
|
-
var FocusLock__default = /*#__PURE__*/_interopDefault(FocusLock);
|
|
20
19
|
var GenericModal = function (_a) {
|
|
21
20
|
var propsId = _a.id,
|
|
22
21
|
children = _a.children,
|
|
@@ -33,87 +32,60 @@ var GenericModal = function (_a) {
|
|
|
33
32
|
var labelledByID = React.useId();
|
|
34
33
|
var describedByID = React.useId();
|
|
35
34
|
var isClientReady = useIsClientReady.useIsClientReady();
|
|
36
|
-
var
|
|
37
|
-
|
|
38
|
-
setScrollLayer = _c[1];
|
|
39
|
-
var _d = React.useState(null),
|
|
40
|
-
modalLayer = _d[0],
|
|
41
|
-
setModalLayer = _d[1];
|
|
35
|
+
var scrollLayerRef = React.useRef(null);
|
|
36
|
+
var modalLayerRef = React.useRef(null);
|
|
42
37
|
var scrollModalToTop = function () {
|
|
43
38
|
// If we have a really long modal, the autofocus could land on an element down below
|
|
44
39
|
// causing the modal to scroll down and skipping over the content near the modal's top.
|
|
45
40
|
// Ensure that when the modal opens, we are at the top of its content.
|
|
46
41
|
requestAnimationFrame(function () {
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
var scrollElement = scrollLayerRef.current;
|
|
43
|
+
// This little verbose of a check but this ensures that the element is attached to the DOM as it animates in. This additional check aims to avoid race conditions
|
|
44
|
+
if (!(scrollElement === null || scrollElement === void 0 ? void 0 : scrollElement.isConnected)) return;
|
|
45
|
+
scrollElement.scrollTop = 0;
|
|
49
46
|
});
|
|
50
47
|
};
|
|
51
|
-
var
|
|
52
|
-
if (
|
|
53
|
-
|
|
48
|
+
var a11yWarn = function () {
|
|
49
|
+
if (!isClientReady) return;
|
|
50
|
+
// Ensure that consumers have provided an element that labels the modal
|
|
51
|
+
// to meet ARIA accessibility guidelines.
|
|
52
|
+
if (!document.getElementById(labelledByID)) {
|
|
53
|
+
console.warn("When using the Modal component, you must provide a label for the modal.\n Make sure you have a <ModalAccessibleLabel /> component with content that labels the modal.");
|
|
54
54
|
}
|
|
55
55
|
};
|
|
56
56
|
var focusOnAccessibleLabel = function () {
|
|
57
57
|
if (!isClientReady) return;
|
|
58
|
+
var modalElement = modalLayerRef.current;
|
|
59
|
+
if (!(modalElement === null || modalElement === void 0 ? void 0 : modalElement.isConnected)) return;
|
|
58
60
|
// Check if focus already exists within the modal
|
|
59
|
-
if (
|
|
61
|
+
if (modalElement.contains(document.activeElement)) {
|
|
60
62
|
return;
|
|
61
63
|
}
|
|
62
64
|
var labelElement = document.getElementById(labelledByID);
|
|
63
|
-
labelElement === null || labelElement === void 0 ? void 0 : labelElement.
|
|
64
|
-
|
|
65
|
-
var a11yWarn = function () {
|
|
66
|
-
if (!isClientReady) return;
|
|
67
|
-
// Ensure that consumers have provided an element that labels the modal
|
|
68
|
-
// to meet ARIA accessibility guidelines.
|
|
69
|
-
if (!document.getElementById(labelledByID)) {
|
|
70
|
-
console.warn("When using the Modal component, you must provide a label for the modal.\n Make sure you have a <ModalAccessibleLabel /> component with content that labels the modal.");
|
|
65
|
+
if (labelElement === null || labelElement === void 0 ? void 0 : labelElement.isConnected) {
|
|
66
|
+
labelElement.focus();
|
|
71
67
|
}
|
|
72
68
|
};
|
|
73
|
-
var
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var hasScrollbar = window.innerWidth > document.documentElement.clientWidth;
|
|
77
|
-
var scrollStyles = [GenericModal_module.unscrollable];
|
|
78
|
-
if (hasScrollbar) {
|
|
79
|
-
scrollStyles.push(GenericModal_module.pseudoScrollbar);
|
|
69
|
+
var onEscapeKeyHandler = function (e) {
|
|
70
|
+
if (e instanceof KeyboardEvent) {
|
|
71
|
+
onEscapeKeyup === null || onEscapeKeyup === void 0 ? void 0 : onEscapeKeyup(e);
|
|
80
72
|
}
|
|
81
|
-
(_a = document.documentElement.classList).add.apply(_a, scrollStyles);
|
|
82
73
|
};
|
|
83
74
|
var onAfterEnterHandler = function () {
|
|
84
75
|
scrollModalToTop();
|
|
85
|
-
|
|
76
|
+
var modalElement = modalLayerRef.current;
|
|
77
|
+
if (modalElement) {
|
|
86
78
|
onAfterEnter === null || onAfterEnter === void 0 ? void 0 : onAfterEnter();
|
|
87
79
|
focusOnAccessibleLabel();
|
|
88
80
|
a11yWarn();
|
|
89
81
|
}
|
|
90
82
|
};
|
|
91
|
-
var
|
|
92
|
-
if (
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
}, [onEscapeKeyup]);
|
|
96
|
-
var onBeforeEnterHandler = function () {
|
|
97
|
-
preventBodyScroll();
|
|
98
|
-
if (onEscapeKeyup && isClientReady) {
|
|
99
|
-
document.addEventListener('keyup', escapeKeyHandler);
|
|
83
|
+
var outsideModalClickHandler = function (e) {
|
|
84
|
+
if (e.target === scrollLayerRef.current || e.target === modalLayerRef.current) {
|
|
85
|
+
onOutsideModalClick === null || onOutsideModalClick === void 0 ? void 0 : onOutsideModalClick(e);
|
|
100
86
|
}
|
|
101
87
|
};
|
|
102
|
-
var cleanUpAfterClose = React.useCallback(function () {
|
|
103
|
-
if (!isClientReady) return;
|
|
104
|
-
document.documentElement.classList.remove(GenericModal_module.unscrollable, GenericModal_module.pseudoScrollbar);
|
|
105
|
-
if (onEscapeKeyup) {
|
|
106
|
-
document.removeEventListener('keyup', escapeKeyHandler);
|
|
107
|
-
}
|
|
108
|
-
}, [escapeKeyHandler, onEscapeKeyup, isClientReady]);
|
|
109
|
-
/* Ensure sure add-on styles (e.g. unscrollable) and key event is cleaned up when the modal is unmounted*/
|
|
110
|
-
React.useEffect(function () {
|
|
111
|
-
return function () {
|
|
112
|
-
return cleanUpAfterClose();
|
|
113
|
-
};
|
|
114
|
-
}, [cleanUpAfterClose]);
|
|
115
88
|
var onAfterLeaveHandler = function () {
|
|
116
|
-
cleanUpAfterClose();
|
|
117
89
|
propsOnAfterLeave === null || propsOnAfterLeave === void 0 ? void 0 : propsOnAfterLeave();
|
|
118
90
|
};
|
|
119
91
|
// Don't render portal during SSR
|
|
@@ -123,7 +95,6 @@ var GenericModal = function (_a) {
|
|
|
123
95
|
return ReactDOM.createPortal(React__default.default.createElement(react.Transition, {
|
|
124
96
|
appear: true,
|
|
125
97
|
show: isOpen,
|
|
126
|
-
beforeEnter: onBeforeEnterHandler,
|
|
127
98
|
afterEnter: onAfterEnterHandler,
|
|
128
99
|
afterLeave: onAfterLeaveHandler,
|
|
129
100
|
"data-generic-modal-transition-wrapper": true,
|
|
@@ -131,9 +102,10 @@ var GenericModal = function (_a) {
|
|
|
131
102
|
leave: GenericModal_module.animatingLeave,
|
|
132
103
|
as: "div",
|
|
133
104
|
className: classnames__default.default(GenericModal_module.transitionLayer, className)
|
|
134
|
-
}, React__default.default.createElement(
|
|
135
|
-
|
|
105
|
+
}, React__default.default.createElement(reactFocusOn.FocusOn, {
|
|
106
|
+
focusLock: focusLockDisabled,
|
|
136
107
|
returnFocus: true,
|
|
108
|
+
onEscapeKey: onEscapeKeyHandler,
|
|
137
109
|
// Disabling false positive
|
|
138
110
|
// eslint-disable-next-line jsx-a11y/no-autofocus
|
|
139
111
|
autoFocus: false
|
|
@@ -141,11 +113,9 @@ var GenericModal = function (_a) {
|
|
|
141
113
|
className: GenericModal_module.backdropLayer
|
|
142
114
|
}), React__default.default.createElement("div", {
|
|
143
115
|
className: GenericModal_module.scrollLayer,
|
|
144
|
-
ref:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
onClick: outsideModalClickHandler,
|
|
148
|
-
"data-testid": "".concat(id, "-scrollLayer")
|
|
116
|
+
ref: scrollLayerRef,
|
|
117
|
+
"data-testid": "".concat(id, "-scrollLayer"),
|
|
118
|
+
onClick: outsideModalClickHandler
|
|
149
119
|
}, React__default.default.createElement(ModalContext.ModalContext.Provider, {
|
|
150
120
|
value: {
|
|
151
121
|
labelledByID: labelledByID,
|
|
@@ -156,9 +126,7 @@ var GenericModal = function (_a) {
|
|
|
156
126
|
className: GenericModal_module.modalLayer,
|
|
157
127
|
"aria-labelledby": labelledByID,
|
|
158
128
|
"aria-describedby": describedByID,
|
|
159
|
-
ref:
|
|
160
|
-
return setModalLayer(modalLayerRef);
|
|
161
|
-
},
|
|
129
|
+
ref: modalLayerRef,
|
|
162
130
|
"data-testid": id
|
|
163
131
|
}, children))))), document.body);
|
|
164
132
|
};
|
|
@@ -6,8 +6,6 @@ var styles = {
|
|
|
6
6
|
"modalLayer": "GenericModal-module_modalLayer__WfD1U",
|
|
7
7
|
"transitionLayer": "GenericModal-module_transitionLayer__zTH-C",
|
|
8
8
|
"animatingEnter": "GenericModal-module_animatingEnter__P3wuk",
|
|
9
|
-
"animatingLeave": "GenericModal-module_animatingLeave__rNkKX"
|
|
10
|
-
"unscrollable": "GenericModal-module_unscrollable__HjRaW",
|
|
11
|
-
"pseudoScrollbar": "GenericModal-module_pseudoScrollbar__BhRqh"
|
|
9
|
+
"animatingLeave": "GenericModal-module_animatingLeave__rNkKX"
|
|
12
10
|
};
|
|
13
11
|
module.exports = styles;
|
|
@@ -27,7 +27,7 @@ var InlineNotification = React.forwardRef(function (_a, ref) {
|
|
|
27
27
|
otherProps = tslib.__rest(_a, ["isSubtle", "hideCloseIcon", "persistent", "classNameOverride"]);
|
|
28
28
|
return React__default.default.createElement(GenericNotification.GenericNotification, tslib.__assign({
|
|
29
29
|
style: "inline",
|
|
30
|
-
persistent: persistent
|
|
30
|
+
persistent: persistent || hideCloseIcon,
|
|
31
31
|
classNameOverride: classnames__default.default(classNameOverride, [isSubtle && GenericNotification_module.subtle]),
|
|
32
32
|
ref: ref
|
|
33
33
|
}, otherProps));
|
|
@@ -2,84 +2,45 @@
|
|
|
2
2
|
|
|
3
3
|
var tslib = require('tslib');
|
|
4
4
|
var React = require('react');
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
var collections = require('@react-stately/collections');
|
|
6
|
+
require('react-aria');
|
|
7
|
+
require('classnames');
|
|
8
|
+
require('../../Radio/Radio/Radio.cjs');
|
|
9
|
+
require('../../Radio/RadioField/RadioField.cjs');
|
|
10
|
+
require('../../Radio/RadioGroup/RadioGroup.cjs');
|
|
11
|
+
require('../../Divider/Divider.cjs');
|
|
12
|
+
require('../../Text/Text.cjs');
|
|
13
|
+
require('./context/SingleSelectContext.cjs');
|
|
14
|
+
require('@cultureamp/i18n-react-intl');
|
|
15
|
+
require('../../VisuallyHidden/VisuallyHidden.cjs');
|
|
16
|
+
require('@react-aria/i18n');
|
|
17
|
+
var Select = require('./subcomponents/Select/Select.cjs');
|
|
18
|
+
var ComboBox = require('./subcomponents/ComboBox/ComboBox.cjs');
|
|
13
19
|
function _interopDefault(e) {
|
|
14
20
|
return e && e.__esModule ? e : {
|
|
15
21
|
default: e
|
|
16
22
|
};
|
|
17
23
|
}
|
|
18
24
|
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
onSelectionChange(key);
|
|
41
|
-
}
|
|
42
|
-
}, [state, onSelectionChange]);
|
|
43
|
-
// Cloning children here to allow users to pass in a custom ListItem or ListSection
|
|
44
|
-
// and still have the SingleSelect handle selection state
|
|
45
|
-
var injectedChildren = React.useMemo(function () {
|
|
46
|
-
if (!React.isValidElement(children)) return null;
|
|
47
|
-
var selectedKeys = state.selectedKey ? new Set([state.selectedKey]) : new Set();
|
|
48
|
-
return React.cloneElement(children, {
|
|
49
|
-
selectionMode: 'single',
|
|
50
|
-
selectedKeys: selectedKeys,
|
|
51
|
-
onSelectionChange: handleOnSelectionChange,
|
|
52
|
-
autoFocus: 'first'
|
|
53
|
-
});
|
|
54
|
-
}, [children, handleOnSelectionChange, state.selectedKey]);
|
|
55
|
-
return React__default.default.createElement(SingleSelectContext.SingleSelectContext.Provider, {
|
|
56
|
-
value: {
|
|
57
|
-
isOpen: state.isOpen,
|
|
58
|
-
setOpen: state.setOpen,
|
|
59
|
-
selectedKey: state.selectedKey,
|
|
60
|
-
items: items,
|
|
61
|
-
anchorName: anchorName
|
|
62
|
-
}
|
|
63
|
-
}, React__default.default.createElement(reactAriaComponents.Select
|
|
64
|
-
// TODO: allow user to pass in label
|
|
65
|
-
, tslib.__assign({
|
|
66
|
-
"aria-label": 'single-select',
|
|
67
|
-
onSelectionChange: function (key) {
|
|
68
|
-
return handleOnSelectionChange(key != null ? new Set([key]) : new Set());
|
|
69
|
-
},
|
|
70
|
-
placeholder: ""
|
|
71
|
-
}, restProps), React__default.default.createElement(Trigger.Trigger, {
|
|
72
|
-
buttonRef: buttonRef
|
|
73
|
-
}), state.isOpen && React__default.default.createElement(Popover.Popover, {
|
|
74
|
-
buttonRef: buttonRef,
|
|
75
|
-
popoverRef: popoverRef,
|
|
76
|
-
racPopoverRef: racPopoverRef
|
|
77
|
-
}, injectedChildren)));
|
|
78
|
-
};
|
|
79
|
-
SingleSelect.displayName = 'SingleSelect';
|
|
80
|
-
SingleSelect.List = List.List;
|
|
81
|
-
SingleSelect.ListItem = ListItem.ListItem;
|
|
82
|
-
SingleSelect.ListSection = ListSection.ListSection;
|
|
83
|
-
return SingleSelect;
|
|
84
|
-
}();
|
|
25
|
+
var SingleSelect = function (props) {
|
|
26
|
+
var isComboBox = props.isComboBox,
|
|
27
|
+
children = props.children,
|
|
28
|
+
rest = tslib.__rest(props, ["isComboBox", "children"]);
|
|
29
|
+
if (isComboBox) {
|
|
30
|
+
return React__default.default.createElement(ComboBox.ComboBox, tslib.__assign({}, rest), children);
|
|
31
|
+
}
|
|
32
|
+
return React__default.default.createElement(Select.Select, tslib.__assign({}, rest), children);
|
|
33
|
+
};
|
|
34
|
+
var Item = React__default.default.forwardRef(function (props, ref) {
|
|
35
|
+
// @ts-expect-error: StatelyItem doesn't know about our internal item props
|
|
36
|
+
return React__default.default.createElement(collections.Item, tslib.__assign({}, props, {
|
|
37
|
+
ref: ref
|
|
38
|
+
}));
|
|
39
|
+
});
|
|
40
|
+
// @ts-expect-error: doesn't know that the Item can have this static property
|
|
41
|
+
Item.getCollectionNode = collections.Item.getCollectionNode;
|
|
42
|
+
Item.displayName = 'SingleSelectItem';
|
|
43
|
+
SingleSelect.Item = Item;
|
|
44
|
+
SingleSelect.Section = collections.Section;
|
|
45
|
+
exports.Item = Item;
|
|
85
46
|
exports.SingleSelect = SingleSelect;
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var combobox = require('@react-stately/combobox');
|
|
6
|
+
var classnames = require('classnames');
|
|
7
|
+
var reactAria = require('react-aria');
|
|
8
|
+
var FieldMessage = require('../../../../FieldMessage/FieldMessage.cjs');
|
|
9
|
+
var Label = require('../../../../Label/Label.cjs');
|
|
10
|
+
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
11
|
+
var ComboBoxTrigger = require('../ComboBoxTrigger/ComboBoxTrigger.cjs');
|
|
12
|
+
var List = require('../List/List.cjs');
|
|
13
|
+
var Popover = require('../Popover/Popover.cjs');
|
|
14
|
+
var ComboBox_module = require('./ComboBox.module.css.cjs');
|
|
15
|
+
function _interopDefault(e) {
|
|
16
|
+
return e && e.__esModule ? e : {
|
|
17
|
+
default: e
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
21
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
22
|
+
var ComboBox = function (props) {
|
|
23
|
+
var _a;
|
|
24
|
+
var items = props.items,
|
|
25
|
+
children = props.children,
|
|
26
|
+
label = props.label,
|
|
27
|
+
description = props.description,
|
|
28
|
+
labelHidden = props.labelHidden,
|
|
29
|
+
_b = props.labelPosition,
|
|
30
|
+
labelPosition = _b === void 0 ? 'top' : _b,
|
|
31
|
+
isReadOnly = props.isReadOnly,
|
|
32
|
+
isDisabled = props.isDisabled,
|
|
33
|
+
_c = props.size,
|
|
34
|
+
size = _c === void 0 ? 'medium' : _c,
|
|
35
|
+
_d = props.variant,
|
|
36
|
+
variant = _d === void 0 ? 'primary' : _d;
|
|
37
|
+
var contains = reactAria.useFilter({
|
|
38
|
+
sensitivity: 'base'
|
|
39
|
+
}).contains;
|
|
40
|
+
var state = combobox.useComboBoxState(tslib.__assign(tslib.__assign({}, props), {
|
|
41
|
+
items: items,
|
|
42
|
+
defaultFilter: contains,
|
|
43
|
+
children: children,
|
|
44
|
+
menuTrigger: 'focus'
|
|
45
|
+
}));
|
|
46
|
+
var inputRef = React.useRef(null);
|
|
47
|
+
var popoverRef = React.useRef(null);
|
|
48
|
+
var listBoxRef = React.useRef(null);
|
|
49
|
+
var buttonRef = React.useRef(null);
|
|
50
|
+
var clearButtonRef = React.useRef(null);
|
|
51
|
+
var triggerWrapperRef = React.useRef(null);
|
|
52
|
+
var _e = reactAria.useComboBox(tslib.__assign(tslib.__assign({}, props), {
|
|
53
|
+
'aria-label': labelHidden ? label : undefined,
|
|
54
|
+
inputRef: inputRef,
|
|
55
|
+
buttonRef: buttonRef,
|
|
56
|
+
popoverRef: popoverRef,
|
|
57
|
+
listBoxRef: listBoxRef
|
|
58
|
+
}), state),
|
|
59
|
+
labelProps = _e.labelProps,
|
|
60
|
+
descriptionProps = _e.descriptionProps,
|
|
61
|
+
inputProps = _e.inputProps,
|
|
62
|
+
listBoxProps = _e.listBoxProps,
|
|
63
|
+
buttonProps = _e.buttonProps;
|
|
64
|
+
var uniqueId = React.useId();
|
|
65
|
+
var anchorName = "--trigger-".concat(uniqueId);
|
|
66
|
+
return React__default.default.createElement(SingleSelectContext.SingleSelectContext.Provider, {
|
|
67
|
+
value: {
|
|
68
|
+
anchorName: anchorName,
|
|
69
|
+
state: state,
|
|
70
|
+
isComboBox: true,
|
|
71
|
+
isDisabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false,
|
|
72
|
+
isReadOnly: isReadOnly !== null && isReadOnly !== void 0 ? isReadOnly : false,
|
|
73
|
+
secondary: variant === 'secondary',
|
|
74
|
+
size: size,
|
|
75
|
+
fieldLabel: label
|
|
76
|
+
}
|
|
77
|
+
}, React__default.default.createElement("div", {
|
|
78
|
+
className: labelPosition === 'top' ? ComboBox_module.topLabel : ComboBox_module.sideLabel
|
|
79
|
+
}, !labelHidden && React__default.default.createElement("div", {
|
|
80
|
+
className: classnames__default.default(ComboBox_module.label, (_a = {}, _a[ComboBox_module.labelTop] = labelPosition === 'top', _a))
|
|
81
|
+
}, React__default.default.createElement(Label.Label, tslib.__assign({}, labelProps), label)), React__default.default.createElement("div", {
|
|
82
|
+
className: ComboBox_module.comboBoxTrigger
|
|
83
|
+
}, React__default.default.createElement(ComboBoxTrigger.ComboBoxTrigger, {
|
|
84
|
+
inputProps: inputProps,
|
|
85
|
+
inputRef: inputRef,
|
|
86
|
+
buttonRef: buttonRef,
|
|
87
|
+
buttonProps: buttonProps,
|
|
88
|
+
clearButtonRef: clearButtonRef,
|
|
89
|
+
triggerWrapperRef: triggerWrapperRef
|
|
90
|
+
})), description && React__default.default.createElement("div", {
|
|
91
|
+
className: ComboBox_module.description
|
|
92
|
+
}, React__default.default.createElement(FieldMessage.FieldMessage, tslib.__assign({
|
|
93
|
+
message: description
|
|
94
|
+
}, descriptionProps)))), React__default.default.createElement(Popover.Popover, {
|
|
95
|
+
state: state,
|
|
96
|
+
triggerRef: triggerWrapperRef,
|
|
97
|
+
popoverRef: popoverRef,
|
|
98
|
+
clearButtonRef: clearButtonRef
|
|
99
|
+
}, React__default.default.createElement(List.List, {
|
|
100
|
+
listBoxOptions: listBoxProps,
|
|
101
|
+
state: state,
|
|
102
|
+
listBoxRef: listBoxRef
|
|
103
|
+
})));
|
|
104
|
+
};
|
|
105
|
+
exports.ComboBox = ComboBox;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styles = {
|
|
4
|
+
"topLabel": "ComboBox-module_topLabel__a2t80",
|
|
5
|
+
"sideLabel": "ComboBox-module_sideLabel__B-jX4",
|
|
6
|
+
"label": "ComboBox-module_label__eTnD9",
|
|
7
|
+
"labelTop": "ComboBox-module_labelTop__h6r-z",
|
|
8
|
+
"comboBoxTrigger": "ComboBox-module_comboBoxTrigger__yvqGb",
|
|
9
|
+
"description": "ComboBox-module_description__MDKJ7"
|
|
10
|
+
};
|
|
11
|
+
module.exports = styles;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var i18nReactIntl = require('@cultureamp/i18n-react-intl');
|
|
6
|
+
var classnames = require('classnames');
|
|
7
|
+
var reactAria = require('react-aria');
|
|
8
|
+
var Icon = require('../../../../Icon/Icon.cjs');
|
|
9
|
+
var VisuallyHidden = require('../../../../VisuallyHidden/VisuallyHidden.cjs');
|
|
10
|
+
var SingleSelectContext = require('../../context/SingleSelectContext.cjs');
|
|
11
|
+
var ComboBoxTrigger_module = require('./ComboBoxTrigger.module.css.cjs');
|
|
12
|
+
function _interopDefault(e) {
|
|
13
|
+
return e && e.__esModule ? e : {
|
|
14
|
+
default: e
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
18
|
+
var classnames__default = /*#__PURE__*/_interopDefault(classnames);
|
|
19
|
+
var ClearButton = function (_a) {
|
|
20
|
+
var _b;
|
|
21
|
+
var clearButtonRef = _a.clearButtonRef,
|
|
22
|
+
inputRef = _a.inputRef;
|
|
23
|
+
var _c = SingleSelectContext.useSingleSelectContext(),
|
|
24
|
+
state = _c.state,
|
|
25
|
+
isComboBox = _c.isComboBox,
|
|
26
|
+
fieldLabel = _c.fieldLabel;
|
|
27
|
+
var formatMessage = i18nReactIntl.useIntl().formatMessage;
|
|
28
|
+
var clearButtonAlt = formatMessage({
|
|
29
|
+
id: 'singleSelect.clearButtonAlt',
|
|
30
|
+
defaultMessage: 'Clear {field} selection',
|
|
31
|
+
description: 'Alt text for the clear selection button'
|
|
32
|
+
}, {
|
|
33
|
+
field: fieldLabel
|
|
34
|
+
});
|
|
35
|
+
var buttonProps = reactAria.useButton({
|
|
36
|
+
onPress: function () {
|
|
37
|
+
var _a;
|
|
38
|
+
if (isComboBox) {
|
|
39
|
+
state.setSelectedKey(null);
|
|
40
|
+
}
|
|
41
|
+
(_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
|
|
42
|
+
}
|
|
43
|
+
}, clearButtonRef).buttonProps;
|
|
44
|
+
return React__default.default.createElement("button", tslib.__assign({}, buttonProps, {
|
|
45
|
+
ref: clearButtonRef,
|
|
46
|
+
type: "button",
|
|
47
|
+
className: classnames__default.default(ComboBoxTrigger_module.clearButton, (_b = {}, _b[ComboBoxTrigger_module.hidden] = !state.selectedKey, _b)),
|
|
48
|
+
tabIndex: 0
|
|
49
|
+
}), React__default.default.createElement(Icon.Icon, {
|
|
50
|
+
name: "cancel",
|
|
51
|
+
isPresentational: true,
|
|
52
|
+
isFilled: true
|
|
53
|
+
}), React__default.default.createElement(VisuallyHidden.VisuallyHidden, null, clearButtonAlt));
|
|
54
|
+
};
|
|
55
|
+
var ChevronButton = function (props) {
|
|
56
|
+
var _a = SingleSelectContext.useSingleSelectContext(),
|
|
57
|
+
state = _a.state,
|
|
58
|
+
fieldLabel = _a.fieldLabel;
|
|
59
|
+
var formatMessage = i18nReactIntl.useIntl().formatMessage;
|
|
60
|
+
var chevronButton = formatMessage({
|
|
61
|
+
id: 'singleSelect.chevronButton',
|
|
62
|
+
defaultMessage: 'Show suggestions for {field}',
|
|
63
|
+
description: 'Aria label text for the SingleSelect button to open and close suggestions list'
|
|
64
|
+
}, {
|
|
65
|
+
field: fieldLabel
|
|
66
|
+
});
|
|
67
|
+
var buttonProps = reactAria.useButton(tslib.__assign(tslib.__assign({}, props), {
|
|
68
|
+
'aria-label': String(chevronButton),
|
|
69
|
+
'aria-labelledby': undefined
|
|
70
|
+
}), props.buttonRef).buttonProps;
|
|
71
|
+
return React__default.default.createElement("button", tslib.__assign({
|
|
72
|
+
type: "button"
|
|
73
|
+
}, buttonProps, {
|
|
74
|
+
ref: props.buttonRef,
|
|
75
|
+
className: ComboBoxTrigger_module.chevronButton,
|
|
76
|
+
tabIndex: -1
|
|
77
|
+
}), React__default.default.createElement(Icon.Icon, {
|
|
78
|
+
isPresentational: true,
|
|
79
|
+
name: state.isOpen ? 'keyboard_arrow_up' : 'keyboard_arrow_down'
|
|
80
|
+
}));
|
|
81
|
+
};
|
|
82
|
+
var ComboBoxTrigger = function (_a) {
|
|
83
|
+
var _b, _c;
|
|
84
|
+
var inputProps = _a.inputProps,
|
|
85
|
+
inputRef = _a.inputRef,
|
|
86
|
+
buttonProps = _a.buttonProps,
|
|
87
|
+
buttonRef = _a.buttonRef,
|
|
88
|
+
triggerWrapperRef = _a.triggerWrapperRef,
|
|
89
|
+
clearButtonRef = _a.clearButtonRef;
|
|
90
|
+
var _d = SingleSelectContext.useSingleSelectContext(),
|
|
91
|
+
anchorName = _d.anchorName,
|
|
92
|
+
isDisabled = _d.isDisabled,
|
|
93
|
+
isReadOnly = _d.isReadOnly,
|
|
94
|
+
secondary = _d.secondary,
|
|
95
|
+
size = _d.size;
|
|
96
|
+
return React__default.default.createElement(React__default.default.Fragment, null, React__default.default.createElement("div", {
|
|
97
|
+
style: {
|
|
98
|
+
'--anchor-name': anchorName
|
|
99
|
+
},
|
|
100
|
+
ref: triggerWrapperRef,
|
|
101
|
+
className: classnames__default.default(ComboBoxTrigger_module.trigger, (_b = {}, _b[ComboBoxTrigger_module.disabled] = isDisabled, _b[ComboBoxTrigger_module.readOnly] = isReadOnly, _b[ComboBoxTrigger_module.secondary] = secondary, _b[ComboBoxTrigger_module.small] = size === 'small', _b[ComboBoxTrigger_module.large] = size === 'large', _b))
|
|
102
|
+
}, React__default.default.createElement("input", tslib.__assign({}, inputProps, {
|
|
103
|
+
ref: inputRef,
|
|
104
|
+
className: classnames__default.default(ComboBoxTrigger_module.input, (_c = {}, _c[ComboBoxTrigger_module.smallText] = size === 'small', _c))
|
|
105
|
+
})), !isDisabled && !isReadOnly && React__default.default.createElement(ClearButton, {
|
|
106
|
+
clearButtonRef: clearButtonRef,
|
|
107
|
+
inputRef: inputRef
|
|
108
|
+
}), !isReadOnly && React__default.default.createElement(ChevronButton, tslib.__assign({}, buttonProps, {
|
|
109
|
+
buttonRef: buttonRef
|
|
110
|
+
}))));
|
|
111
|
+
};
|
|
112
|
+
exports.ComboBoxTrigger = ComboBoxTrigger;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var styles = {
|
|
4
|
+
"trigger": "ComboBoxTrigger-module_trigger__p6pcn",
|
|
5
|
+
"smallText": "ComboBoxTrigger-module_smallText__Vj2Ya",
|
|
6
|
+
"secondary": "ComboBoxTrigger-module_secondary__TvNTK",
|
|
7
|
+
"disabled": "ComboBoxTrigger-module_disabled__BkFJy",
|
|
8
|
+
"readOnly": "ComboBoxTrigger-module_readOnly__g6-fB",
|
|
9
|
+
"input": "ComboBoxTrigger-module_input__TkoLg",
|
|
10
|
+
"small": "ComboBoxTrigger-module_small__-225Z",
|
|
11
|
+
"large": "ComboBoxTrigger-module_large__kj1vw",
|
|
12
|
+
"clearButton": "ComboBoxTrigger-module_clearButton__PlsuZ",
|
|
13
|
+
"chevronButton": "ComboBoxTrigger-module_chevronButton__rzv2v",
|
|
14
|
+
"hidden": "ComboBoxTrigger-module_hidden__zC13w"
|
|
15
|
+
};
|
|
16
|
+
module.exports = styles;
|