@charcoal-ui/react 3.0.0-beta.1 → 3.0.0-beta.3
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/dist/_lib/compat.d.ts +1 -1
- package/dist/_lib/compat.d.ts.map +1 -1
- package/dist/components/Button/index.d.ts +1 -2
- package/dist/components/Button/index.d.ts.map +1 -1
- package/dist/components/Button/index.story.d.ts +1 -2
- package/dist/components/Button/index.story.d.ts.map +1 -1
- package/dist/components/Button/index.test.d.ts +4 -0
- package/dist/components/Button/index.test.d.ts.map +1 -0
- package/dist/components/Checkbox/index.d.ts +1 -1
- package/dist/components/Checkbox/index.d.ts.map +1 -1
- package/dist/components/Checkbox/index.story.d.ts +1 -2
- package/dist/components/Checkbox/index.story.d.ts.map +1 -1
- package/dist/components/Clickable/index.d.ts +1 -1
- package/dist/components/Clickable/index.d.ts.map +1 -1
- package/dist/components/Clickable/index.story.d.ts +1 -2
- package/dist/components/Clickable/index.story.d.ts.map +1 -1
- package/dist/components/DropdownSelector/Divider.d.ts +3 -0
- package/dist/components/DropdownSelector/Divider.d.ts.map +1 -1
- package/dist/components/DropdownSelector/DropdownMenuItem.d.ts +7 -0
- package/dist/components/DropdownSelector/DropdownMenuItem.d.ts.map +1 -0
- package/dist/components/DropdownSelector/DropdownPopover.d.ts +8 -8
- package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
- package/dist/components/DropdownSelector/ListItem/index.d.ts +18 -0
- package/dist/components/DropdownSelector/ListItem/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/ListItem/index.story.d.ts +9 -0
- package/dist/components/DropdownSelector/ListItem/index.story.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItem/index.d.ts +11 -0
- package/dist/components/DropdownSelector/MenuItem/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.d.ts +9 -0
- package/dist/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts +10 -0
- package/dist/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts +14 -0
- package/dist/components/DropdownSelector/MenuItemGroup/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/MenuListContext.d.ts +10 -0
- package/dist/components/DropdownSelector/MenuList/MenuListContext.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/index.d.ts +18 -0
- package/dist/components/DropdownSelector/MenuList/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/index.story.d.ts +11 -0
- package/dist/components/DropdownSelector/MenuList/index.story.d.ts.map +1 -0
- package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.d.ts +11 -0
- package/dist/components/DropdownSelector/MenuList/internals/getValuesRecursive.d.ts.map +1 -0
- package/dist/components/DropdownSelector/Popover/index.d.ts +17 -0
- package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -0
- package/dist/components/DropdownSelector/Popover/index.story.d.ts +9 -0
- package/dist/components/DropdownSelector/Popover/index.story.d.ts.map +1 -0
- package/dist/components/DropdownSelector/index.d.ts +3 -10
- package/dist/components/DropdownSelector/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/index.story.d.ts +4 -4
- package/dist/components/DropdownSelector/index.story.d.ts.map +1 -1
- package/dist/components/DropdownSelector/utils/findPreviewRecursive.d.ts +12 -0
- package/dist/components/DropdownSelector/utils/findPreviewRecursive.d.ts.map +1 -0
- package/dist/components/FieldLabel/index.d.ts +1 -1
- package/dist/components/FieldLabel/index.d.ts.map +1 -1
- package/dist/components/Icon/index.d.ts +1 -1
- package/dist/components/Icon/index.d.ts.map +1 -1
- package/dist/components/Icon/index.story.d.ts +2 -3
- package/dist/components/Icon/index.story.d.ts.map +1 -1
- package/dist/components/IconButton/index.d.ts +1 -2
- package/dist/components/IconButton/index.d.ts.map +1 -1
- package/dist/components/IconButton/index.story.d.ts +1 -2
- package/dist/components/IconButton/index.story.d.ts.map +1 -1
- package/dist/components/LoadingSpinner/index.d.ts +1 -2
- package/dist/components/LoadingSpinner/index.d.ts.map +1 -1
- package/dist/components/Modal/ModalPlumbing.d.ts.map +1 -1
- package/dist/components/Modal/index.d.ts +6 -3
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Modal/index.story.d.ts.map +1 -1
- package/dist/components/MultiSelect/context.d.ts +1 -1
- package/dist/components/MultiSelect/context.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.d.ts +5 -6
- package/dist/components/MultiSelect/index.d.ts.map +1 -1
- package/dist/components/MultiSelect/index.story.d.ts +7 -14
- package/dist/components/MultiSelect/index.story.d.ts.map +1 -1
- package/dist/components/Radio/index.d.ts +1 -1
- package/dist/components/Radio/index.d.ts.map +1 -1
- package/dist/components/Radio/index.story.d.ts +1 -2
- package/dist/components/Radio/index.story.d.ts.map +1 -1
- package/dist/components/SegmentedControl/RadioGroupContext.d.ts +1 -1
- package/dist/components/SegmentedControl/RadioGroupContext.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.d.ts +1 -1
- package/dist/components/SegmentedControl/index.d.ts.map +1 -1
- package/dist/components/SegmentedControl/index.story.d.ts +1 -2
- package/dist/components/SegmentedControl/index.story.d.ts.map +1 -1
- package/dist/components/Switch/index.d.ts +1 -1
- package/dist/components/Switch/index.d.ts.map +1 -1
- package/dist/components/TagItem/index.d.ts +3 -3
- package/dist/components/TagItem/index.d.ts.map +1 -1
- package/dist/components/TagItem/index.story.d.ts +2 -3
- package/dist/components/TagItem/index.story.d.ts.map +1 -1
- package/dist/components/TextArea/TextArea.story.d.ts +28 -0
- package/dist/components/TextArea/TextArea.story.d.ts.map +1 -0
- package/dist/components/TextArea/index.d.ts +28 -0
- package/dist/components/TextArea/index.d.ts.map +1 -0
- package/dist/components/TextField/TextField.story.d.ts +29 -0
- package/dist/components/TextField/TextField.story.d.ts.map +1 -0
- package/dist/components/TextField/index.d.ts +2 -1
- package/dist/components/TextField/index.d.ts.map +1 -1
- package/dist/components/TextField/index.story.d.ts +4 -5
- package/dist/components/TextField/index.story.d.ts.map +1 -1
- package/dist/core/CharcoalProvider.d.ts +1 -1
- package/dist/core/CharcoalProvider.d.ts.map +1 -1
- package/dist/core/ComponentAbstraction.d.ts +1 -1
- package/dist/core/ComponentAbstraction.d.ts.map +1 -1
- package/dist/index.cjs.js +794 -518
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.esm.js +739 -477
- package/dist/index.esm.js.map +1 -1
- package/dist/styled.d.ts +13 -13
- package/dist/types/CustomJSXElement.d.ts +3 -0
- package/dist/types/CustomJSXElement.d.ts.map +1 -0
- package/package.json +7 -7
- package/src/_lib/compat.ts +1 -1
- package/src/components/Button/__snapshots__/index.test.tsx.snap +385 -0
- package/src/components/Button/index.story.tsx +1 -1
- package/src/components/Button/index.test.tsx +24 -0
- package/src/components/Button/index.tsx +2 -2
- package/src/components/Checkbox/index.story.tsx +0 -1
- package/src/components/Checkbox/index.tsx +2 -1
- package/src/components/Clickable/index.story.tsx +0 -1
- package/src/components/Clickable/index.tsx +1 -1
- package/src/components/DropdownSelector/Divider.tsx +3 -0
- package/src/components/DropdownSelector/DropdownMenuItem.tsx +40 -0
- package/src/components/DropdownSelector/DropdownPopover.tsx +21 -42
- package/src/components/DropdownSelector/ListItem/index.story.tsx +51 -0
- package/src/components/DropdownSelector/ListItem/index.tsx +58 -0
- package/src/components/DropdownSelector/MenuItem/index.tsx +32 -0
- package/src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx +43 -0
- package/src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx +55 -0
- package/src/components/DropdownSelector/MenuItemGroup/index.tsx +43 -0
- package/src/components/DropdownSelector/MenuList/MenuListContext.ts +17 -0
- package/src/components/DropdownSelector/MenuList/index.story.tsx +52 -0
- package/src/components/DropdownSelector/MenuList/index.tsx +51 -0
- package/src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx +35 -0
- package/src/components/DropdownSelector/Popover/index.story.tsx +65 -0
- package/src/components/DropdownSelector/Popover/index.tsx +69 -0
- package/src/components/DropdownSelector/index.story.tsx +56 -21
- package/src/components/DropdownSelector/index.tsx +21 -64
- package/src/components/DropdownSelector/utils/findPreviewRecursive.tsx +38 -0
- package/src/components/FieldLabel/index.tsx +1 -1
- package/src/components/Icon/index.story.tsx +0 -1
- package/src/components/Icon/index.tsx +1 -1
- package/src/components/IconButton/index.story.tsx +0 -1
- package/src/components/IconButton/index.tsx +2 -2
- package/src/components/LoadingSpinner/index.story.tsx +1 -1
- package/src/components/LoadingSpinner/index.tsx +19 -19
- package/src/components/Modal/ModalPlumbing.tsx +0 -1
- package/src/components/Modal/index.story.tsx +0 -1
- package/src/components/Modal/index.tsx +81 -62
- package/src/components/MultiSelect/context.ts +2 -2
- package/src/components/MultiSelect/index.story.tsx +16 -29
- package/src/components/MultiSelect/index.test.tsx +5 -23
- package/src/components/MultiSelect/index.tsx +19 -24
- package/src/components/Radio/index.story.tsx +0 -1
- package/src/components/Radio/index.test.tsx +0 -1
- package/src/components/Radio/index.tsx +4 -1
- package/src/components/SegmentedControl/RadioGroupContext.tsx +2 -1
- package/src/components/SegmentedControl/index.story.tsx +2 -1
- package/src/components/SegmentedControl/index.tsx +11 -4
- package/src/components/Switch/index.story.tsx +1 -1
- package/src/components/Switch/index.tsx +2 -1
- package/src/components/TagItem/index.story.tsx +0 -1
- package/src/components/TagItem/index.tsx +1 -6
- package/src/components/TextField/index.story.tsx +0 -1
- package/src/components/TextField/index.tsx +3 -7
- package/src/components/a11y.test.tsx +0 -1
- package/src/core/CharcoalProvider.tsx +1 -1
- package/src/core/ComponentAbstraction.tsx +2 -1
- package/src/index.ts +8 -5
- package/dist/components/DropdownSelector/OptionLi.d.ts +0 -11
- package/dist/components/DropdownSelector/OptionLi.d.ts.map +0 -1
- package/src/components/DropdownSelector/OptionItem.tsx +0 -85
- package/src/components/DropdownSelector/utils/focusIfHTMLLIElement.tsx +0 -12
- package/src/components/DropdownSelector/utils/handleFocusByKeyBoard.tsx +0 -20
package/dist/index.cjs.js
CHANGED
|
@@ -31,11 +31,13 @@ __export(src_exports, {
|
|
|
31
31
|
Checkbox: () => Checkbox_default,
|
|
32
32
|
Clickable: () => Clickable_default,
|
|
33
33
|
ComponentAbstraction: () => ComponentAbstraction,
|
|
34
|
+
DropdownMenuItem: () => DropdownMenuItem,
|
|
34
35
|
DropdownSelector: () => DropdownSelector,
|
|
35
36
|
Icon: () => Icon_default,
|
|
36
37
|
IconButton: () => IconButton_default,
|
|
37
38
|
LoadingSpinner: () => LoadingSpinner,
|
|
38
39
|
LoadingSpinnerIcon: () => LoadingSpinnerIcon,
|
|
40
|
+
MenuItemGroup: () => MenuItemGroup,
|
|
39
41
|
Modal: () => Modal,
|
|
40
42
|
ModalAlign: () => ModalAlign,
|
|
41
43
|
ModalBody: () => ModalBody,
|
|
@@ -43,7 +45,6 @@ __export(src_exports, {
|
|
|
43
45
|
ModalHeader: () => ModalHeader,
|
|
44
46
|
MultiSelect: () => MultiSelect,
|
|
45
47
|
MultiSelectGroup: () => MultiSelectGroup,
|
|
46
|
-
OptionItem: () => OptionItem,
|
|
47
48
|
OverlayProvider: () => import_overlays.OverlayProvider,
|
|
48
49
|
Radio: () => Radio,
|
|
49
50
|
RadioGroup: () => RadioGroup,
|
|
@@ -57,23 +58,25 @@ __export(src_exports, {
|
|
|
57
58
|
module.exports = __toCommonJS(src_exports);
|
|
58
59
|
|
|
59
60
|
// src/core/ComponentAbstraction.tsx
|
|
60
|
-
var import_react =
|
|
61
|
-
var
|
|
61
|
+
var import_react = require("react");
|
|
62
|
+
var React = __toESM(require("react"));
|
|
63
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
64
|
+
var DefaultLink = React.forwardRef(
|
|
62
65
|
function DefaultLink2({ to, children, ...rest }, ref) {
|
|
63
|
-
return /* @__PURE__ */
|
|
66
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("a", { href: to, ref, ...rest, children });
|
|
64
67
|
}
|
|
65
68
|
);
|
|
66
69
|
var DefaultValue = {
|
|
67
70
|
Link: DefaultLink
|
|
68
71
|
};
|
|
69
|
-
var ComponentAbstractionContext =
|
|
72
|
+
var ComponentAbstractionContext = React.createContext(DefaultValue);
|
|
70
73
|
function ComponentAbstraction({ children, components }) {
|
|
71
|
-
return /* @__PURE__ */
|
|
74
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
72
75
|
ComponentAbstractionContext.Provider,
|
|
73
76
|
{
|
|
74
|
-
value: { ...DefaultValue, ...components }
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
value: { ...DefaultValue, ...components },
|
|
78
|
+
children
|
|
79
|
+
}
|
|
77
80
|
);
|
|
78
81
|
}
|
|
79
82
|
function useComponentAbstraction() {
|
|
@@ -87,9 +90,9 @@ var import_ssr = require("@react-aria/ssr");
|
|
|
87
90
|
var import_overlays = require("@react-aria/overlays");
|
|
88
91
|
|
|
89
92
|
// src/core/CharcoalProvider.tsx
|
|
90
|
-
var import_react2 = __toESM(require("react"));
|
|
91
93
|
var import_styled_components = require("styled-components");
|
|
92
94
|
var import_styled = require("@charcoal-ui/styled");
|
|
95
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
93
96
|
function CharcoalProvider({
|
|
94
97
|
themeMap,
|
|
95
98
|
defaultTheme = themeMap[":root"],
|
|
@@ -97,11 +100,14 @@ function CharcoalProvider({
|
|
|
97
100
|
injectTokens = true,
|
|
98
101
|
children
|
|
99
102
|
}) {
|
|
100
|
-
return /* @__PURE__ */
|
|
103
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_ssr.SSRProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_styled_components.ThemeProvider, { theme: defaultTheme, children: [
|
|
104
|
+
injectTokens && /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_styled.TokenInjector, { theme: themeMap }),
|
|
105
|
+
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)(ComponentAbstraction, { components, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_overlays.OverlayProvider, { children }) })
|
|
106
|
+
] }) });
|
|
101
107
|
}
|
|
102
108
|
|
|
103
109
|
// src/components/Button/index.tsx
|
|
104
|
-
var
|
|
110
|
+
var import_react2 = require("react");
|
|
105
111
|
var import_styled_components4 = __toESM(require("styled-components"));
|
|
106
112
|
|
|
107
113
|
// src/_lib/index.ts
|
|
@@ -117,15 +123,16 @@ var import_styled2 = require("@charcoal-ui/styled");
|
|
|
117
123
|
var theme = (0, import_styled2.createTheme)(import_styled_components2.default);
|
|
118
124
|
|
|
119
125
|
// src/components/Clickable/index.tsx
|
|
120
|
-
var
|
|
126
|
+
var React2 = __toESM(require("react"));
|
|
121
127
|
var import_styled_components3 = __toESM(require("styled-components"));
|
|
122
128
|
var import_utils = require("@charcoal-ui/utils");
|
|
123
|
-
var
|
|
129
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
130
|
+
var Clickable = React2.forwardRef(
|
|
124
131
|
function Clickable2(props, ref) {
|
|
125
132
|
const { Link } = useComponentAbstraction();
|
|
126
133
|
if ("to" in props) {
|
|
127
134
|
const { onClick, disabled = false, ...rest } = props;
|
|
128
|
-
return /* @__PURE__ */
|
|
135
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
129
136
|
A,
|
|
130
137
|
{
|
|
131
138
|
...rest,
|
|
@@ -136,7 +143,7 @@ var Clickable = import_react3.default.forwardRef(
|
|
|
136
143
|
}
|
|
137
144
|
);
|
|
138
145
|
} else {
|
|
139
|
-
return /* @__PURE__ */
|
|
146
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Button, { ...props, ref });
|
|
140
147
|
}
|
|
141
148
|
}
|
|
142
149
|
);
|
|
@@ -201,7 +208,8 @@ var A = import_styled_components3.default.span`
|
|
|
201
208
|
`;
|
|
202
209
|
|
|
203
210
|
// src/components/Button/index.tsx
|
|
204
|
-
var
|
|
211
|
+
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
212
|
+
var Button2 = (0, import_react2.forwardRef)(function Button3({
|
|
205
213
|
children,
|
|
206
214
|
variant = "Default",
|
|
207
215
|
size = "M",
|
|
@@ -209,7 +217,7 @@ var Button2 = import_react4.default.forwardRef(function Button3({
|
|
|
209
217
|
disabled = false,
|
|
210
218
|
...rest
|
|
211
219
|
}, ref) {
|
|
212
|
-
return /* @__PURE__ */
|
|
220
|
+
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
|
|
213
221
|
StyledButton,
|
|
214
222
|
{
|
|
215
223
|
...rest,
|
|
@@ -217,9 +225,9 @@ var Button2 = import_react4.default.forwardRef(function Button3({
|
|
|
217
225
|
variant,
|
|
218
226
|
size,
|
|
219
227
|
fullWidth: fixed,
|
|
220
|
-
ref
|
|
221
|
-
|
|
222
|
-
|
|
228
|
+
ref,
|
|
229
|
+
children
|
|
230
|
+
}
|
|
223
231
|
);
|
|
224
232
|
});
|
|
225
233
|
var Button_default = Button2;
|
|
@@ -288,12 +296,13 @@ function sizeToProps(size) {
|
|
|
288
296
|
}
|
|
289
297
|
|
|
290
298
|
// src/components/IconButton/index.tsx
|
|
291
|
-
var
|
|
299
|
+
var import_react3 = require("react");
|
|
292
300
|
var import_styled_components5 = __toESM(require("styled-components"));
|
|
293
|
-
var
|
|
301
|
+
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
302
|
+
var IconButton = (0, import_react3.forwardRef)(
|
|
294
303
|
function IconButtonInner({ variant = "Default", size = "M", icon, ...rest }, ref) {
|
|
295
304
|
validateIconSize(size, icon);
|
|
296
|
-
return /* @__PURE__ */
|
|
305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(StyledIconButton, { ...rest, ref, variant, size, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("pixiv-icon", { name: icon }) });
|
|
297
306
|
}
|
|
298
307
|
);
|
|
299
308
|
var IconButton_default = IconButton;
|
|
@@ -372,10 +381,12 @@ function validateIconSize(size, icon) {
|
|
|
372
381
|
}
|
|
373
382
|
|
|
374
383
|
// src/components/Radio/index.tsx
|
|
375
|
-
var
|
|
384
|
+
var import_react4 = require("react");
|
|
385
|
+
var React3 = __toESM(require("react"));
|
|
376
386
|
var import_styled_components6 = __toESM(require("styled-components"));
|
|
377
387
|
var import_warning = __toESM(require("warning"));
|
|
378
388
|
var import_utils2 = require("@charcoal-ui/utils");
|
|
389
|
+
var import_jsx_runtime6 = require("react/jsx-runtime");
|
|
379
390
|
function Radio({
|
|
380
391
|
value,
|
|
381
392
|
forceChecked = false,
|
|
@@ -389,7 +400,7 @@ function Radio({
|
|
|
389
400
|
readonly,
|
|
390
401
|
hasError,
|
|
391
402
|
onChange
|
|
392
|
-
} = (0,
|
|
403
|
+
} = (0, import_react4.useContext)(RadioGroupContext);
|
|
393
404
|
(0, import_warning.default)(
|
|
394
405
|
name !== void 0,
|
|
395
406
|
`"name" is not Provided for <Radio>. Perhaps you forgot to wrap with <RadioGroup> ?`
|
|
@@ -397,23 +408,26 @@ function Radio({
|
|
|
397
408
|
const isSelected = value === selected;
|
|
398
409
|
const isDisabled = disabled || isParentDisabled;
|
|
399
410
|
const isReadonly = readonly && !isSelected;
|
|
400
|
-
const handleChange = (0,
|
|
411
|
+
const handleChange = (0, import_react4.useCallback)(
|
|
401
412
|
(e) => {
|
|
402
413
|
onChange(e.currentTarget.value);
|
|
403
414
|
},
|
|
404
415
|
[onChange]
|
|
405
416
|
);
|
|
406
|
-
return /* @__PURE__ */
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(RadioRoot, { "aria-disabled": isDisabled || isReadonly, children: [
|
|
418
|
+
/* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
419
|
+
RadioInput,
|
|
420
|
+
{
|
|
421
|
+
name,
|
|
422
|
+
value,
|
|
423
|
+
checked: forceChecked || isSelected,
|
|
424
|
+
hasError,
|
|
425
|
+
onChange: handleChange,
|
|
426
|
+
disabled: isDisabled || isReadonly
|
|
427
|
+
}
|
|
428
|
+
),
|
|
429
|
+
children != null && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(RadioLabel, { children })
|
|
430
|
+
] });
|
|
417
431
|
}
|
|
418
432
|
var RadioRoot = import_styled_components6.default.label`
|
|
419
433
|
display: grid;
|
|
@@ -437,6 +451,8 @@ var RadioInput = import_styled_components6.default.input.attrs({ type: "radio" }
|
|
|
437
451
|
width: 20px;
|
|
438
452
|
height: 20px;
|
|
439
453
|
|
|
454
|
+
cursor: pointer;
|
|
455
|
+
|
|
440
456
|
${({ hasError = false }) => theme((o) => [
|
|
441
457
|
o.borderRadius("oval"),
|
|
442
458
|
o.bg.surface1.hover.press,
|
|
@@ -477,7 +493,7 @@ var StyledRadioGroup = import_styled_components6.default.div`
|
|
|
477
493
|
grid-template-columns: 1fr;
|
|
478
494
|
grid-gap: ${({ theme: theme4 }) => (0, import_utils2.px)(theme4.spacing[8])};
|
|
479
495
|
`;
|
|
480
|
-
var RadioGroupContext =
|
|
496
|
+
var RadioGroupContext = React3.createContext({
|
|
481
497
|
name: void 0,
|
|
482
498
|
selected: void 0,
|
|
483
499
|
disabled: false,
|
|
@@ -500,13 +516,13 @@ function RadioGroup({
|
|
|
500
516
|
hasError,
|
|
501
517
|
children
|
|
502
518
|
}) {
|
|
503
|
-
const handleChange = (0,
|
|
519
|
+
const handleChange = (0, import_react4.useCallback)(
|
|
504
520
|
(next) => {
|
|
505
521
|
onChange(next);
|
|
506
522
|
},
|
|
507
523
|
[onChange]
|
|
508
524
|
);
|
|
509
|
-
return /* @__PURE__ */
|
|
525
|
+
return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
510
526
|
RadioGroupContext.Provider,
|
|
511
527
|
{
|
|
512
528
|
value: {
|
|
@@ -516,36 +532,36 @@ function RadioGroup({
|
|
|
516
532
|
readonly: readonly ?? false,
|
|
517
533
|
hasError: hasError ?? false,
|
|
518
534
|
onChange: handleChange
|
|
519
|
-
}
|
|
520
|
-
},
|
|
521
|
-
/* @__PURE__ */ import_react6.default.createElement(
|
|
522
|
-
StyledRadioGroup,
|
|
523
|
-
{
|
|
524
|
-
role: "radiogroup",
|
|
525
|
-
"aria-orientation": "vertical",
|
|
526
|
-
"aria-label": label,
|
|
527
|
-
"aria-invalid": hasError,
|
|
528
|
-
className
|
|
529
535
|
},
|
|
530
|
-
children
|
|
531
|
-
|
|
536
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
|
|
537
|
+
StyledRadioGroup,
|
|
538
|
+
{
|
|
539
|
+
role: "radiogroup",
|
|
540
|
+
"aria-orientation": "vertical",
|
|
541
|
+
"aria-label": label,
|
|
542
|
+
"aria-invalid": hasError,
|
|
543
|
+
className,
|
|
544
|
+
children
|
|
545
|
+
}
|
|
546
|
+
)
|
|
547
|
+
}
|
|
532
548
|
);
|
|
533
549
|
}
|
|
534
550
|
|
|
535
551
|
// src/components/MultiSelect/index.tsx
|
|
536
|
-
var
|
|
552
|
+
var import_react6 = require("react");
|
|
537
553
|
var import_styled_components7 = __toESM(require("styled-components"));
|
|
538
554
|
var import_warning2 = __toESM(require("warning"));
|
|
539
555
|
var import_utils3 = require("@charcoal-ui/utils");
|
|
540
556
|
|
|
541
557
|
// src/components/MultiSelect/context.ts
|
|
542
|
-
var
|
|
543
|
-
var MultiSelectGroupContext = (0,
|
|
558
|
+
var import_react5 = require("react");
|
|
559
|
+
var MultiSelectGroupContext = (0, import_react5.createContext)({
|
|
544
560
|
name: void 0,
|
|
545
561
|
selected: [],
|
|
546
562
|
disabled: false,
|
|
547
563
|
readonly: false,
|
|
548
|
-
|
|
564
|
+
invalid: false,
|
|
549
565
|
onChange() {
|
|
550
566
|
throw new Error(
|
|
551
567
|
"Cannot find `onChange()` handler. Perhaps you forgot to wrap it with `<MultiSelectGroup />` ?"
|
|
@@ -554,9 +570,9 @@ var MultiSelectGroupContext = (0, import_react7.createContext)({
|
|
|
554
570
|
});
|
|
555
571
|
|
|
556
572
|
// src/components/MultiSelect/index.tsx
|
|
573
|
+
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
557
574
|
function MultiSelect({
|
|
558
575
|
value,
|
|
559
|
-
forceChecked = false,
|
|
560
576
|
disabled = false,
|
|
561
577
|
onChange,
|
|
562
578
|
variant = "default",
|
|
@@ -567,16 +583,16 @@ function MultiSelect({
|
|
|
567
583
|
selected,
|
|
568
584
|
disabled: parentDisabled,
|
|
569
585
|
readonly,
|
|
570
|
-
|
|
586
|
+
invalid,
|
|
571
587
|
onChange: parentOnChange
|
|
572
|
-
} = (0,
|
|
588
|
+
} = (0, import_react6.useContext)(MultiSelectGroupContext);
|
|
573
589
|
(0, import_warning2.default)(
|
|
574
590
|
name !== void 0,
|
|
575
591
|
`"name" is not Provided for <MultiSelect>. Perhaps you forgot to wrap with <MultiSelectGroup> ?`
|
|
576
592
|
);
|
|
577
|
-
const isSelected = selected.includes(value)
|
|
593
|
+
const isSelected = selected.includes(value);
|
|
578
594
|
const isDisabled = disabled || parentDisabled || readonly;
|
|
579
|
-
const handleChange = (0,
|
|
595
|
+
const handleChange = (0, import_react6.useCallback)(
|
|
580
596
|
(event) => {
|
|
581
597
|
if (!(event.currentTarget instanceof HTMLInputElement)) {
|
|
582
598
|
return;
|
|
@@ -587,29 +603,33 @@ function MultiSelect({
|
|
|
587
603
|
},
|
|
588
604
|
[onChange, parentOnChange, value]
|
|
589
605
|
);
|
|
590
|
-
return /* @__PURE__ */
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
606
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(MultiSelectRoot, { "aria-disabled": isDisabled, children: [
|
|
607
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
608
|
+
MultiSelectInput,
|
|
609
|
+
{
|
|
610
|
+
...{
|
|
611
|
+
name,
|
|
612
|
+
value,
|
|
613
|
+
invalid
|
|
614
|
+
},
|
|
615
|
+
checked: isSelected,
|
|
616
|
+
disabled: isDisabled,
|
|
617
|
+
onChange: handleChange,
|
|
618
|
+
overlay: variant === "overlay",
|
|
619
|
+
"aria-invalid": invalid
|
|
620
|
+
}
|
|
621
|
+
),
|
|
622
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
623
|
+
MultiSelectInputOverlay,
|
|
624
|
+
{
|
|
625
|
+
overlay: variant === "overlay",
|
|
626
|
+
invalid,
|
|
627
|
+
"aria-hidden": true,
|
|
628
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("pixiv-icon", { name: "24/Check", "unsafe-non-guideline-scale": 16 / 24 })
|
|
629
|
+
}
|
|
630
|
+
),
|
|
631
|
+
Boolean(children) && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(MultiSelectLabel, { children })
|
|
632
|
+
] });
|
|
613
633
|
}
|
|
614
634
|
var MultiSelectRoot = import_styled_components7.default.label`
|
|
615
635
|
display: grid;
|
|
@@ -640,10 +660,10 @@ var MultiSelectInput = import_styled_components7.default.input.attrs({ type: "ch
|
|
|
640
660
|
${theme((o) => o.bg.brand.hover.press)}
|
|
641
661
|
}
|
|
642
662
|
|
|
643
|
-
${({
|
|
663
|
+
${({ invalid, overlay }) => theme((o) => [
|
|
644
664
|
o.bg.text3.hover.press,
|
|
645
665
|
o.borderRadius("oval"),
|
|
646
|
-
|
|
666
|
+
invalid && !overlay && o.outline.assertive,
|
|
647
667
|
overlay && o.bg.surface4
|
|
648
668
|
])};
|
|
649
669
|
}
|
|
@@ -657,12 +677,12 @@ var MultiSelectInputOverlay = import_styled_components7.default.div`
|
|
|
657
677
|
align-items: center;
|
|
658
678
|
justify-content: center;
|
|
659
679
|
|
|
660
|
-
${({
|
|
680
|
+
${({ invalid, overlay }) => theme((o) => [
|
|
661
681
|
o.width.px(24),
|
|
662
682
|
o.height.px(24),
|
|
663
683
|
o.borderRadius("oval"),
|
|
664
684
|
o.font.text5,
|
|
665
|
-
|
|
685
|
+
invalid && overlay && o.outline.assertive
|
|
666
686
|
])}
|
|
667
687
|
|
|
668
688
|
${({ overlay }) => overlay && import_styled_components7.css`
|
|
@@ -674,15 +694,15 @@ var MultiSelectInputOverlay = import_styled_components7.default.div`
|
|
|
674
694
|
function MultiSelectGroup({
|
|
675
695
|
className,
|
|
676
696
|
name,
|
|
677
|
-
|
|
697
|
+
label,
|
|
678
698
|
selected,
|
|
679
699
|
onChange,
|
|
680
700
|
disabled = false,
|
|
681
701
|
readonly = false,
|
|
682
|
-
|
|
702
|
+
invalid = false,
|
|
683
703
|
children
|
|
684
704
|
}) {
|
|
685
|
-
const handleChange = (0,
|
|
705
|
+
const handleChange = (0, import_react6.useCallback)(
|
|
686
706
|
(payload) => {
|
|
687
707
|
const index = selected.indexOf(payload.value);
|
|
688
708
|
if (payload.selected) {
|
|
@@ -697,7 +717,7 @@ function MultiSelectGroup({
|
|
|
697
717
|
},
|
|
698
718
|
[onChange, selected]
|
|
699
719
|
);
|
|
700
|
-
return /* @__PURE__ */
|
|
720
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
701
721
|
MultiSelectGroupContext.Provider,
|
|
702
722
|
{
|
|
703
723
|
value: {
|
|
@@ -705,31 +725,24 @@ function MultiSelectGroup({
|
|
|
705
725
|
selected: Array.from(new Set(selected)),
|
|
706
726
|
disabled,
|
|
707
727
|
readonly,
|
|
708
|
-
|
|
728
|
+
invalid,
|
|
709
729
|
onChange: handleChange
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
|
-
/* @__PURE__ */ import_react8.default.createElement(
|
|
713
|
-
"div",
|
|
714
|
-
{
|
|
715
|
-
className,
|
|
716
|
-
"aria-label": ariaLabel,
|
|
717
|
-
"data-testid": "SelectGroup"
|
|
718
730
|
},
|
|
719
|
-
children
|
|
720
|
-
|
|
731
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className, "aria-label": label, "data-testid": "SelectGroup", children })
|
|
732
|
+
}
|
|
721
733
|
);
|
|
722
734
|
}
|
|
723
735
|
|
|
724
736
|
// src/components/Switch/index.tsx
|
|
725
737
|
var import_switch = require("@react-aria/switch");
|
|
726
|
-
var
|
|
738
|
+
var import_react7 = require("react");
|
|
727
739
|
var import_react_stately = require("react-stately");
|
|
728
740
|
var import_styled_components8 = __toESM(require("styled-components"));
|
|
729
741
|
var import_utils4 = require("@charcoal-ui/utils");
|
|
742
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
730
743
|
function SwitchCheckbox(props) {
|
|
731
744
|
const { disabled, className } = props;
|
|
732
|
-
const ariaSwitchProps = (0,
|
|
745
|
+
const ariaSwitchProps = (0, import_react7.useMemo)(
|
|
733
746
|
() => ({
|
|
734
747
|
...props,
|
|
735
748
|
"aria-label": "children" in props ? void 0 : props.label,
|
|
@@ -739,11 +752,14 @@ function SwitchCheckbox(props) {
|
|
|
739
752
|
[props]
|
|
740
753
|
);
|
|
741
754
|
const state = (0, import_react_stately.useToggleState)(ariaSwitchProps);
|
|
742
|
-
const ref = (0,
|
|
755
|
+
const ref = (0, import_react7.useRef)(null);
|
|
743
756
|
const {
|
|
744
757
|
inputProps: { className: _className, type: _type, ...rest }
|
|
745
758
|
} = (0, import_switch.useSwitch)(ariaSwitchProps, state, ref);
|
|
746
|
-
return /* @__PURE__ */
|
|
759
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(Label, { className, "aria-disabled": disabled, children: [
|
|
760
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SwitchInput, { ...rest, ref }),
|
|
761
|
+
"children" in props ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(LabelInner, { children: props.children }) : void 0
|
|
762
|
+
] });
|
|
747
763
|
}
|
|
748
764
|
var Label = import_styled_components8.default.label`
|
|
749
765
|
display: inline-grid;
|
|
@@ -836,14 +852,16 @@ var SwitchInput = import_styled_components8.default.input.attrs({
|
|
|
836
852
|
// src/components/TextField/index.tsx
|
|
837
853
|
var import_textfield = require("@react-aria/textfield");
|
|
838
854
|
var import_visually_hidden = require("@react-aria/visually-hidden");
|
|
839
|
-
var
|
|
855
|
+
var import_react8 = require("react");
|
|
856
|
+
var React5 = __toESM(require("react"));
|
|
840
857
|
var import_styled_components10 = __toESM(require("styled-components"));
|
|
841
858
|
|
|
842
859
|
// src/components/FieldLabel/index.tsx
|
|
843
|
-
var
|
|
860
|
+
var React4 = __toESM(require("react"));
|
|
844
861
|
var import_styled_components9 = __toESM(require("styled-components"));
|
|
845
862
|
var import_styled8 = require("@charcoal-ui/styled");
|
|
846
|
-
var
|
|
863
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
864
|
+
var FieldLabel = React4.forwardRef(
|
|
847
865
|
function FieldLabel2({
|
|
848
866
|
style,
|
|
849
867
|
className,
|
|
@@ -853,7 +871,11 @@ var FieldLabel = import_react10.default.forwardRef(
|
|
|
853
871
|
subLabel,
|
|
854
872
|
...labelProps
|
|
855
873
|
}, ref) {
|
|
856
|
-
return /* @__PURE__ */
|
|
874
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(FieldLabelWrapper, { style, className, children: [
|
|
875
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Label2, { ref, ...labelProps, children: label }),
|
|
876
|
+
required && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RequiredText, { children: requiredText }),
|
|
877
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SubLabelClickable, { children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { children: subLabel }) })
|
|
878
|
+
] });
|
|
857
879
|
}
|
|
858
880
|
);
|
|
859
881
|
var FieldLabel_default = FieldLabel;
|
|
@@ -886,6 +908,7 @@ var FieldLabelWrapper = import_styled_components9.default.div`
|
|
|
886
908
|
|
|
887
909
|
// src/components/TextField/index.tsx
|
|
888
910
|
var import_styled9 = require("@charcoal-ui/styled");
|
|
911
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
889
912
|
var theme3 = (0, import_styled9.createTheme)(import_styled_components10.default);
|
|
890
913
|
function mergeRefs(...refs) {
|
|
891
914
|
return (value) => {
|
|
@@ -902,13 +925,13 @@ function mergeRefs(...refs) {
|
|
|
902
925
|
function countCodePointsInString(string) {
|
|
903
926
|
return Array.from(string).length;
|
|
904
927
|
}
|
|
905
|
-
var TextField =
|
|
928
|
+
var TextField = React5.forwardRef(
|
|
906
929
|
function TextField2(props, ref) {
|
|
907
|
-
return props.multiline !== void 0 && props.multiline ? /* @__PURE__ */
|
|
930
|
+
return props.multiline !== void 0 && props.multiline ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MultiLineTextField, { ref, ...props }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineTextField, { ref, ...props });
|
|
908
931
|
}
|
|
909
932
|
);
|
|
910
933
|
var TextField_default = TextField;
|
|
911
|
-
var SingleLineTextField =
|
|
934
|
+
var SingleLineTextField = React5.forwardRef(function SingleLineTextFieldInner({ onChange, ...props }, forwardRef12) {
|
|
912
935
|
const {
|
|
913
936
|
className,
|
|
914
937
|
showLabel = false,
|
|
@@ -925,14 +948,14 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
|
|
|
925
948
|
suffix = null
|
|
926
949
|
} = props;
|
|
927
950
|
const { visuallyHiddenProps } = (0, import_visually_hidden.useVisuallyHidden)();
|
|
928
|
-
const ariaRef = (0,
|
|
929
|
-
const prefixRef = (0,
|
|
930
|
-
const suffixRef = (0,
|
|
931
|
-
const [count, setCount] = (0,
|
|
932
|
-
const [prefixWidth, setPrefixWidth] = (0,
|
|
933
|
-
const [suffixWidth, setSuffixWidth] = (0,
|
|
951
|
+
const ariaRef = (0, import_react8.useRef)(null);
|
|
952
|
+
const prefixRef = (0, import_react8.useRef)(null);
|
|
953
|
+
const suffixRef = (0, import_react8.useRef)(null);
|
|
954
|
+
const [count, setCount] = (0, import_react8.useState)(countCodePointsInString(props.value ?? ""));
|
|
955
|
+
const [prefixWidth, setPrefixWidth] = (0, import_react8.useState)(0);
|
|
956
|
+
const [suffixWidth, setSuffixWidth] = (0, import_react8.useState)(0);
|
|
934
957
|
const nonControlled = props.value === void 0;
|
|
935
|
-
const handleChange = (0,
|
|
958
|
+
const handleChange = (0, import_react8.useCallback)(
|
|
936
959
|
(value) => {
|
|
937
960
|
const count2 = countCodePointsInString(value);
|
|
938
961
|
if (maxLength !== void 0 && count2 > maxLength) {
|
|
@@ -945,7 +968,7 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
|
|
|
945
968
|
},
|
|
946
969
|
[maxLength, nonControlled, onChange]
|
|
947
970
|
);
|
|
948
|
-
(0,
|
|
971
|
+
(0, import_react8.useEffect)(() => {
|
|
949
972
|
setCount(countCodePointsInString(props.value ?? ""));
|
|
950
973
|
}, [props.value]);
|
|
951
974
|
const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(
|
|
@@ -961,7 +984,7 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
|
|
|
961
984
|
},
|
|
962
985
|
ariaRef
|
|
963
986
|
);
|
|
964
|
-
(0,
|
|
987
|
+
(0, import_react8.useEffect)(() => {
|
|
965
988
|
const prefixObserver = new ResizeObserver((entries) => {
|
|
966
989
|
setPrefixWidth(entries[0].contentRect.width);
|
|
967
990
|
});
|
|
@@ -979,35 +1002,46 @@ var SingleLineTextField = import_react11.default.forwardRef(function SingleLineT
|
|
|
979
1002
|
prefixObserver.disconnect();
|
|
980
1003
|
};
|
|
981
1004
|
}, []);
|
|
982
|
-
return /* @__PURE__ */
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
{
|
|
995
|
-
ref:
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1005
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TextFieldRoot, { className, isDisabled: disabled, children: [
|
|
1006
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1007
|
+
TextFieldLabel,
|
|
1008
|
+
{
|
|
1009
|
+
label,
|
|
1010
|
+
requiredText,
|
|
1011
|
+
required,
|
|
1012
|
+
subLabel,
|
|
1013
|
+
...labelProps,
|
|
1014
|
+
...!showLabel ? visuallyHiddenProps : {}
|
|
1015
|
+
}
|
|
1016
|
+
),
|
|
1017
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(StyledInputContainer, { children: [
|
|
1018
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PrefixContainer, { ref: prefixRef, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Affix, { children: prefix }) }),
|
|
1019
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1020
|
+
StyledInput,
|
|
1021
|
+
{
|
|
1022
|
+
ref: mergeRefs(forwardRef12, ariaRef),
|
|
1023
|
+
invalid,
|
|
1024
|
+
extraLeftPadding: prefixWidth,
|
|
1025
|
+
extraRightPadding: suffixWidth,
|
|
1026
|
+
...inputProps
|
|
1027
|
+
}
|
|
1028
|
+
),
|
|
1029
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SuffixContainer, { ref: suffixRef, children: [
|
|
1030
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Affix, { children: suffix }),
|
|
1031
|
+
showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
|
|
1032
|
+
] })
|
|
1033
|
+
] }),
|
|
1034
|
+
assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1035
|
+
AssistiveText,
|
|
1036
|
+
{
|
|
1037
|
+
invalid,
|
|
1038
|
+
...invalid ? errorMessageProps : descriptionProps,
|
|
1039
|
+
children: assistiveText
|
|
1040
|
+
}
|
|
1041
|
+
)
|
|
1042
|
+
] });
|
|
1009
1043
|
});
|
|
1010
|
-
var MultiLineTextField =
|
|
1044
|
+
var MultiLineTextField = React5.forwardRef(function MultiLineTextFieldInner({ onChange, ...props }, forwardRef12) {
|
|
1011
1045
|
const {
|
|
1012
1046
|
className,
|
|
1013
1047
|
showCount = false,
|
|
@@ -1024,11 +1058,11 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
|
|
|
1024
1058
|
rows: initialRows = 4
|
|
1025
1059
|
} = props;
|
|
1026
1060
|
const { visuallyHiddenProps } = (0, import_visually_hidden.useVisuallyHidden)();
|
|
1027
|
-
const textareaRef = (0,
|
|
1028
|
-
const ariaRef = (0,
|
|
1029
|
-
const [count, setCount] = (0,
|
|
1030
|
-
const [rows, setRows] = (0,
|
|
1031
|
-
const syncHeight = (0,
|
|
1061
|
+
const textareaRef = (0, import_react8.useRef)(null);
|
|
1062
|
+
const ariaRef = (0, import_react8.useRef)(null);
|
|
1063
|
+
const [count, setCount] = (0, import_react8.useState)(countCodePointsInString(props.value ?? ""));
|
|
1064
|
+
const [rows, setRows] = (0, import_react8.useState)(initialRows);
|
|
1065
|
+
const syncHeight = (0, import_react8.useCallback)(
|
|
1032
1066
|
(textarea) => {
|
|
1033
1067
|
const rows2 = (`${textarea.value}
|
|
1034
1068
|
`.match(/\n/gu)?.length ?? 0) || 1;
|
|
@@ -1037,7 +1071,7 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
|
|
|
1037
1071
|
[initialRows]
|
|
1038
1072
|
);
|
|
1039
1073
|
const nonControlled = props.value === void 0;
|
|
1040
|
-
const handleChange = (0,
|
|
1074
|
+
const handleChange = (0, import_react8.useCallback)(
|
|
1041
1075
|
(value) => {
|
|
1042
1076
|
const count2 = countCodePointsInString(value);
|
|
1043
1077
|
if (maxLength !== void 0 && count2 > maxLength) {
|
|
@@ -1053,7 +1087,7 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
|
|
|
1053
1087
|
},
|
|
1054
1088
|
[autoHeight, maxLength, nonControlled, onChange, syncHeight]
|
|
1055
1089
|
);
|
|
1056
|
-
(0,
|
|
1090
|
+
(0, import_react8.useEffect)(() => {
|
|
1057
1091
|
setCount(countCodePointsInString(props.value ?? ""));
|
|
1058
1092
|
}, [props.value]);
|
|
1059
1093
|
const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(
|
|
@@ -1069,45 +1103,51 @@ var MultiLineTextField = import_react11.default.forwardRef(function MultiLineTex
|
|
|
1069
1103
|
},
|
|
1070
1104
|
ariaRef
|
|
1071
1105
|
);
|
|
1072
|
-
(0,
|
|
1106
|
+
(0, import_react8.useEffect)(() => {
|
|
1073
1107
|
if (autoHeight && textareaRef.current !== null) {
|
|
1074
1108
|
syncHeight(textareaRef.current);
|
|
1075
1109
|
}
|
|
1076
1110
|
}, [autoHeight, syncHeight]);
|
|
1077
|
-
return /* @__PURE__ */
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
label,
|
|
1081
|
-
requiredText,
|
|
1082
|
-
required,
|
|
1083
|
-
subLabel,
|
|
1084
|
-
...labelProps,
|
|
1085
|
-
...!showLabel ? visuallyHiddenProps : {}
|
|
1086
|
-
}
|
|
1087
|
-
), /* @__PURE__ */ import_react11.default.createElement(
|
|
1088
|
-
StyledTextareaContainer,
|
|
1089
|
-
{
|
|
1090
|
-
invalid,
|
|
1091
|
-
rows: showCount ? rows + 1 : rows
|
|
1092
|
-
},
|
|
1093
|
-
/* @__PURE__ */ import_react11.default.createElement(
|
|
1094
|
-
StyledTextarea,
|
|
1111
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TextFieldRoot, { className, isDisabled: disabled, children: [
|
|
1112
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1113
|
+
TextFieldLabel,
|
|
1095
1114
|
{
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1115
|
+
label,
|
|
1116
|
+
requiredText,
|
|
1117
|
+
required,
|
|
1118
|
+
subLabel,
|
|
1119
|
+
...labelProps,
|
|
1120
|
+
...!showLabel ? visuallyHiddenProps : {}
|
|
1100
1121
|
}
|
|
1101
1122
|
),
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1123
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1124
|
+
StyledTextareaContainer,
|
|
1125
|
+
{
|
|
1126
|
+
invalid,
|
|
1127
|
+
rows: showCount ? rows + 1 : rows,
|
|
1128
|
+
children: [
|
|
1129
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1130
|
+
StyledTextarea,
|
|
1131
|
+
{
|
|
1132
|
+
ref: mergeRefs(textareaRef, forwardRef12, ariaRef),
|
|
1133
|
+
rows,
|
|
1134
|
+
noBottomPadding: showCount,
|
|
1135
|
+
...inputProps
|
|
1136
|
+
}
|
|
1137
|
+
),
|
|
1138
|
+
showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(MultiLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
|
|
1139
|
+
]
|
|
1140
|
+
}
|
|
1141
|
+
),
|
|
1142
|
+
assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1143
|
+
AssistiveText,
|
|
1144
|
+
{
|
|
1145
|
+
invalid,
|
|
1146
|
+
...invalid ? errorMessageProps : descriptionProps,
|
|
1147
|
+
children: assistiveText
|
|
1148
|
+
}
|
|
1149
|
+
)
|
|
1150
|
+
] });
|
|
1111
1151
|
});
|
|
1112
1152
|
var TextFieldRoot = import_styled_components10.default.div`
|
|
1113
1153
|
display: flex;
|
|
@@ -1128,6 +1168,7 @@ var PrefixContainer = import_styled_components10.default.span`
|
|
|
1128
1168
|
top: 50%;
|
|
1129
1169
|
left: 8px;
|
|
1130
1170
|
transform: translateY(-50%);
|
|
1171
|
+
z-index: 1;
|
|
1131
1172
|
`;
|
|
1132
1173
|
var SuffixContainer = import_styled_components10.default.span`
|
|
1133
1174
|
position: absolute;
|
|
@@ -1257,10 +1298,11 @@ var AssistiveText = import_styled_components10.default.p`
|
|
|
1257
1298
|
`;
|
|
1258
1299
|
|
|
1259
1300
|
// src/components/Icon/index.tsx
|
|
1260
|
-
var
|
|
1301
|
+
var React6 = __toESM(require("react"));
|
|
1261
1302
|
var import_icons = require("@charcoal-ui/icons");
|
|
1262
|
-
var
|
|
1263
|
-
|
|
1303
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1304
|
+
var Icon = React6.forwardRef(function IconInner({ name, scale, unsafeNonGuidelineScale, className, ...rest }, ref) {
|
|
1305
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1264
1306
|
"pixiv-icon",
|
|
1265
1307
|
{
|
|
1266
1308
|
ref,
|
|
@@ -1275,7 +1317,8 @@ var Icon = import_react12.default.forwardRef(function IconInner({ name, scale, u
|
|
|
1275
1317
|
var Icon_default = Icon;
|
|
1276
1318
|
|
|
1277
1319
|
// src/components/Modal/index.tsx
|
|
1278
|
-
var
|
|
1320
|
+
var import_react9 = require("react");
|
|
1321
|
+
var React7 = __toESM(require("react"));
|
|
1279
1322
|
var import_overlays2 = require("@react-aria/overlays");
|
|
1280
1323
|
var import_styled_components11 = __toESM(require("styled-components"));
|
|
1281
1324
|
var import_focus = require("@react-aria/focus");
|
|
@@ -1292,6 +1335,7 @@ function columnSystem(span, column, gutter) {
|
|
|
1292
1335
|
var import_utils5 = require("@charcoal-ui/utils");
|
|
1293
1336
|
var import_styled11 = require("@charcoal-ui/styled");
|
|
1294
1337
|
var import_react_spring = require("react-spring");
|
|
1338
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
1295
1339
|
var DEFAULT_Z_INDEX = 10;
|
|
1296
1340
|
function Modal({
|
|
1297
1341
|
children,
|
|
@@ -1307,7 +1351,7 @@ function Modal({
|
|
|
1307
1351
|
onClose,
|
|
1308
1352
|
isOpen = false
|
|
1309
1353
|
} = props;
|
|
1310
|
-
const ref = (0,
|
|
1354
|
+
const ref = (0, import_react9.useRef)(null);
|
|
1311
1355
|
const { overlayProps, underlayProps } = (0, import_overlays2.useOverlay)(props, ref);
|
|
1312
1356
|
const { modalProps } = (0, import_overlays2.useModalOverlay)(
|
|
1313
1357
|
props,
|
|
@@ -1344,44 +1388,46 @@ function Modal({
|
|
|
1344
1388
|
});
|
|
1345
1389
|
const showDismiss = !isMobile || bottomSheet !== true;
|
|
1346
1390
|
return transition(
|
|
1347
|
-
({ backgroundColor, transform }, item) => item && /* @__PURE__ */
|
|
1391
|
+
({ backgroundColor, transform }, item) => item && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_overlays2.Overlay, { portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1348
1392
|
ModalBackground,
|
|
1349
1393
|
{
|
|
1350
1394
|
zIndex,
|
|
1351
1395
|
...underlayProps,
|
|
1352
|
-
style: transitionEnabled ? { backgroundColor } : {}
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
ModalDialog,
|
|
1356
|
-
{
|
|
1357
|
-
ref,
|
|
1358
|
-
...overlayProps,
|
|
1359
|
-
...modalProps,
|
|
1360
|
-
...dialogProps,
|
|
1361
|
-
style: transitionEnabled ? { transform } : {},
|
|
1362
|
-
size,
|
|
1363
|
-
bottomSheet
|
|
1364
|
-
},
|
|
1365
|
-
/* @__PURE__ */ import_react13.default.createElement(
|
|
1366
|
-
ModalContext.Provider,
|
|
1396
|
+
style: transitionEnabled ? { backgroundColor } : {},
|
|
1397
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_focus.FocusScope, { contain: true, restoreFocus: true, autoFocus: true, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(DialogContainer, { bottomSheet, size, children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1398
|
+
ModalDialog,
|
|
1367
1399
|
{
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1400
|
+
ref,
|
|
1401
|
+
...overlayProps,
|
|
1402
|
+
...modalProps,
|
|
1403
|
+
...dialogProps,
|
|
1404
|
+
style: transitionEnabled ? { transform } : {},
|
|
1405
|
+
size,
|
|
1406
|
+
bottomSheet,
|
|
1407
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
|
|
1408
|
+
ModalContext.Provider,
|
|
1409
|
+
{
|
|
1410
|
+
value: { titleProps, title, close: onClose, showDismiss },
|
|
1411
|
+
children: [
|
|
1412
|
+
children,
|
|
1413
|
+
isDismissable === true && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
1414
|
+
ModalCrossButton,
|
|
1415
|
+
{
|
|
1416
|
+
size: "S",
|
|
1417
|
+
icon: "24/Close",
|
|
1418
|
+
onClick: onClose
|
|
1419
|
+
}
|
|
1420
|
+
)
|
|
1421
|
+
]
|
|
1422
|
+
}
|
|
1423
|
+
)
|
|
1424
|
+
}
|
|
1425
|
+
) }) })
|
|
1426
|
+
}
|
|
1427
|
+
) })
|
|
1382
1428
|
);
|
|
1383
1429
|
}
|
|
1384
|
-
var ModalContext =
|
|
1430
|
+
var ModalContext = React7.createContext({
|
|
1385
1431
|
titleProps: {},
|
|
1386
1432
|
title: "",
|
|
1387
1433
|
close: void 0,
|
|
@@ -1389,6 +1435,8 @@ var ModalContext = import_react13.default.createContext({
|
|
|
1389
1435
|
});
|
|
1390
1436
|
var ModalBackground = (0, import_react_spring.animated)(import_styled_components11.default.div`
|
|
1391
1437
|
z-index: ${({ zIndex }) => zIndex};
|
|
1438
|
+
overflow: scroll;
|
|
1439
|
+
display: flex;
|
|
1392
1440
|
position: fixed;
|
|
1393
1441
|
top: 0;
|
|
1394
1442
|
left: 0;
|
|
@@ -1397,34 +1445,52 @@ var ModalBackground = (0, import_react_spring.animated)(import_styled_components
|
|
|
1397
1445
|
|
|
1398
1446
|
${theme((o) => [o.bg.surface4])}
|
|
1399
1447
|
`);
|
|
1448
|
+
var DialogContainer = import_styled_components11.default.div`
|
|
1449
|
+
position: relative;
|
|
1450
|
+
margin: auto;
|
|
1451
|
+
padding: 24px 0;
|
|
1452
|
+
width: ${(p) => {
|
|
1453
|
+
switch (p.size) {
|
|
1454
|
+
case "S": {
|
|
1455
|
+
return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1456
|
+
}
|
|
1457
|
+
case "M": {
|
|
1458
|
+
return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1459
|
+
}
|
|
1460
|
+
case "L": {
|
|
1461
|
+
return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1462
|
+
}
|
|
1463
|
+
default: {
|
|
1464
|
+
return unreachable(p.size);
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
}}px;
|
|
1468
|
+
|
|
1469
|
+
@media ${({ theme: theme4 }) => (0, import_utils5.maxWidth)(theme4.breakpoint.screen1)} {
|
|
1470
|
+
width: calc(100% - 48px);
|
|
1471
|
+
${(p) => p.bottomSheet !== false && import_styled_components11.css`
|
|
1472
|
+
margin: 0;
|
|
1473
|
+
padding: 0;
|
|
1474
|
+
bottom: 0;
|
|
1475
|
+
position: absolute;
|
|
1476
|
+
width: 100%;
|
|
1477
|
+
${p.bottomSheet === "full" ? "height: 100%" : ""};
|
|
1478
|
+
`}
|
|
1479
|
+
}
|
|
1480
|
+
`;
|
|
1400
1481
|
var ModalDialog = (0, import_react_spring.animated)(import_styled_components11.default.div`
|
|
1401
|
-
position:
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
transform: translate(-50%, -50%);
|
|
1405
|
-
width: ${(p) => p.size === "S" ? columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : p.size === "M" ? columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : p.size === "L" ? columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2 : unreachable(p.size)}px;
|
|
1482
|
+
position: relative;
|
|
1483
|
+
margin: auto;
|
|
1484
|
+
padding: 24px 0;
|
|
1406
1485
|
|
|
1407
1486
|
${theme((o) => [o.bg.background1, o.borderRadius(24)])}
|
|
1408
|
-
|
|
1409
1487
|
@media ${({ theme: theme4 }) => (0, import_utils5.maxWidth)(theme4.breakpoint.screen1)} {
|
|
1410
|
-
${(p) => p.bottomSheet
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
width: 100%;
|
|
1417
|
-
height: 100%;
|
|
1418
|
-
` : p.bottomSheet ? import_styled_components11.css`
|
|
1419
|
-
top: auto;
|
|
1420
|
-
bottom: 0;
|
|
1421
|
-
left: 0;
|
|
1422
|
-
transform: none;
|
|
1423
|
-
border-radius: 0;
|
|
1424
|
-
width: 100%;
|
|
1425
|
-
` : import_styled_components11.css`
|
|
1426
|
-
width: calc(100% - 48px);
|
|
1427
|
-
`}
|
|
1488
|
+
${(p) => p.bottomSheet !== false && import_styled_components11.css`
|
|
1489
|
+
border-radius: 0;
|
|
1490
|
+
${p.bottomSheet === "full" && import_styled_components11.css`
|
|
1491
|
+
height: 100%;
|
|
1492
|
+
`}
|
|
1493
|
+
`}
|
|
1428
1494
|
}
|
|
1429
1495
|
`);
|
|
1430
1496
|
var ModalCrossButton = (0, import_styled_components11.default)(IconButton_default)`
|
|
@@ -1435,8 +1501,8 @@ var ModalCrossButton = (0, import_styled_components11.default)(IconButton_defaul
|
|
|
1435
1501
|
${theme((o) => [o.font.text3.hover.press])}
|
|
1436
1502
|
`;
|
|
1437
1503
|
function ModalTitle(props) {
|
|
1438
|
-
const { titleProps, title } = (0,
|
|
1439
|
-
return /* @__PURE__ */
|
|
1504
|
+
const { titleProps, title } = (0, import_react9.useContext)(ModalContext);
|
|
1505
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ModalHeading, { ...titleProps, ...props, children: title });
|
|
1440
1506
|
}
|
|
1441
1507
|
var ModalHeading = import_styled_components11.default.h3`
|
|
1442
1508
|
margin: 0;
|
|
@@ -1445,10 +1511,10 @@ var ModalHeading = import_styled_components11.default.h3`
|
|
|
1445
1511
|
`;
|
|
1446
1512
|
|
|
1447
1513
|
// src/components/Modal/ModalPlumbing.tsx
|
|
1448
|
-
var import_react14 = __toESM(require("react"));
|
|
1449
1514
|
var import_styled_components12 = __toESM(require("styled-components"));
|
|
1515
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1450
1516
|
function ModalHeader() {
|
|
1451
|
-
return /* @__PURE__ */
|
|
1517
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(ModalHeaderRoot, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(StyledModalTitle, {}) });
|
|
1452
1518
|
}
|
|
1453
1519
|
var ModalHeaderRoot = import_styled_components12.default.div`
|
|
1454
1520
|
height: 64px;
|
|
@@ -1474,16 +1540,18 @@ var ModalButtons = import_styled_components12.default.div`
|
|
|
1474
1540
|
`;
|
|
1475
1541
|
|
|
1476
1542
|
// src/components/LoadingSpinner/index.tsx
|
|
1477
|
-
var
|
|
1543
|
+
var import_react10 = require("react");
|
|
1478
1544
|
var import_styled_components13 = __toESM(require("styled-components"));
|
|
1545
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1479
1546
|
function LoadingSpinner({
|
|
1480
1547
|
size = 48,
|
|
1481
1548
|
padding = 16,
|
|
1482
1549
|
transparent = false
|
|
1483
1550
|
}) {
|
|
1484
|
-
return /* @__PURE__ */
|
|
1551
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(LoadingSpinnerRoot, { size, padding, transparent, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(LoadingSpinnerIcon, {}) });
|
|
1485
1552
|
}
|
|
1486
1553
|
var LoadingSpinnerRoot = import_styled_components13.default.div.attrs({ role: "progressbar" })`
|
|
1554
|
+
box-sizing: content-box;
|
|
1487
1555
|
margin: auto;
|
|
1488
1556
|
padding: ${(props) => props.padding}px;
|
|
1489
1557
|
border-radius: 8px;
|
|
@@ -1519,52 +1587,90 @@ var Icon2 = import_styled_components13.default.div.attrs({ role: "presentation"
|
|
|
1519
1587
|
animation: none;
|
|
1520
1588
|
}
|
|
1521
1589
|
`;
|
|
1522
|
-
var LoadingSpinnerIcon =
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1590
|
+
var LoadingSpinnerIcon = (0, import_react10.forwardRef)(
|
|
1591
|
+
function LoadingSpinnerIcon2({ once = false }, ref) {
|
|
1592
|
+
const iconRef = (0, import_react10.useRef)(null);
|
|
1593
|
+
(0, import_react10.useImperativeHandle)(ref, () => ({
|
|
1594
|
+
restart: () => {
|
|
1595
|
+
if (!iconRef.current) {
|
|
1596
|
+
return;
|
|
1597
|
+
}
|
|
1598
|
+
iconRef.current.dataset.resetAnimation = "true";
|
|
1599
|
+
void iconRef.current.offsetWidth;
|
|
1600
|
+
delete iconRef.current.dataset.resetAnimation;
|
|
1528
1601
|
}
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
}));
|
|
1534
|
-
return /* @__PURE__ */ import_react15.default.createElement(Icon2, { ref: iconRef, once });
|
|
1535
|
-
});
|
|
1602
|
+
}));
|
|
1603
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon2, { ref: iconRef, once });
|
|
1604
|
+
}
|
|
1605
|
+
);
|
|
1536
1606
|
|
|
1537
1607
|
// src/components/DropdownSelector/index.tsx
|
|
1538
|
-
var import_react17 =
|
|
1539
|
-
var
|
|
1540
|
-
var import_react_stately2 = require("react-stately");
|
|
1608
|
+
var import_react17 = require("react");
|
|
1609
|
+
var import_styled_components16 = __toESM(require("styled-components"));
|
|
1541
1610
|
var import_utils6 = require("@charcoal-ui/utils");
|
|
1542
1611
|
|
|
1543
1612
|
// src/components/DropdownSelector/DropdownPopover.tsx
|
|
1544
|
-
var
|
|
1613
|
+
var import_react12 = require("react");
|
|
1614
|
+
|
|
1615
|
+
// src/components/DropdownSelector/Popover/index.tsx
|
|
1616
|
+
var import_react11 = require("react");
|
|
1545
1617
|
var import_overlays3 = require("@react-aria/overlays");
|
|
1546
1618
|
var import_styled_components14 = __toESM(require("styled-components"));
|
|
1547
|
-
var
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
const ref = (0, import_react16.useRef)(null);
|
|
1619
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1620
|
+
var _empty = () => null;
|
|
1621
|
+
function Popover(props) {
|
|
1622
|
+
const defaultPopoverRef = (0, import_react11.useRef)(null);
|
|
1623
|
+
const finalPopoverRef = props.popoverRef === void 0 ? defaultPopoverRef : props.popoverRef;
|
|
1553
1624
|
const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
|
|
1554
1625
|
{
|
|
1555
|
-
|
|
1556
|
-
popoverRef:
|
|
1557
|
-
containerPadding:
|
|
1626
|
+
triggerRef: props.triggerRef,
|
|
1627
|
+
popoverRef: finalPopoverRef,
|
|
1628
|
+
containerPadding: 16
|
|
1558
1629
|
},
|
|
1559
|
-
|
|
1630
|
+
{
|
|
1631
|
+
close: props.onClose,
|
|
1632
|
+
isOpen: props.isOpen,
|
|
1633
|
+
open: _empty,
|
|
1634
|
+
setOpen: _empty,
|
|
1635
|
+
toggle: _empty
|
|
1636
|
+
}
|
|
1560
1637
|
);
|
|
1561
|
-
(
|
|
1562
|
-
|
|
1638
|
+
if (!props.isOpen)
|
|
1639
|
+
return null;
|
|
1640
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_overlays3.Overlay, { portalContainer: document.body, children: [
|
|
1641
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { ...underlayProps, style: { position: "fixed", inset: 0 } }),
|
|
1642
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(DropdownPopoverDiv, { ...popoverProps, ref: finalPopoverRef, children: [
|
|
1643
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_overlays3.DismissButton, { onDismiss: () => props.onClose() }),
|
|
1644
|
+
props.children,
|
|
1645
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_overlays3.DismissButton, { onDismiss: () => props.onClose() })
|
|
1646
|
+
] })
|
|
1647
|
+
] });
|
|
1648
|
+
}
|
|
1649
|
+
var DropdownPopoverDiv = import_styled_components14.default.div`
|
|
1650
|
+
margin: 4px 0;
|
|
1651
|
+
list-style: none;
|
|
1652
|
+
overflow: auto;
|
|
1653
|
+
max-height: inherit;
|
|
1654
|
+
|
|
1655
|
+
${theme((o) => [
|
|
1656
|
+
o.bg.background1,
|
|
1657
|
+
o.border.default,
|
|
1658
|
+
o.borderRadius(8),
|
|
1659
|
+
o.padding.vertical(8)
|
|
1660
|
+
])}
|
|
1661
|
+
`;
|
|
1662
|
+
|
|
1663
|
+
// src/components/DropdownSelector/DropdownPopover.tsx
|
|
1664
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1665
|
+
function DropdownPopover({ children, ...props }) {
|
|
1666
|
+
const ref = (0, import_react12.useRef)(null);
|
|
1667
|
+
(0, import_react12.useEffect)(() => {
|
|
1668
|
+
if (props.isOpen && ref.current && props.triggerRef.current) {
|
|
1563
1669
|
ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
|
|
1564
1670
|
}
|
|
1565
|
-
}, [props.triggerRef]);
|
|
1566
|
-
(0,
|
|
1567
|
-
if (
|
|
1671
|
+
}, [props.triggerRef, props.isOpen]);
|
|
1672
|
+
(0, import_react12.useEffect)(() => {
|
|
1673
|
+
if (props.isOpen && props.value !== void 0) {
|
|
1568
1674
|
const windowScrollY = window.scrollY;
|
|
1569
1675
|
const windowScrollX = window.scrollX;
|
|
1570
1676
|
const selectedElement = document.querySelector(
|
|
@@ -1574,92 +1680,163 @@ function DropdownPopover({ children, state, ...props }) {
|
|
|
1574
1680
|
selectedElement?.focus();
|
|
1575
1681
|
window.scrollTo(windowScrollX, windowScrollY);
|
|
1576
1682
|
}
|
|
1577
|
-
}, [props.value,
|
|
1578
|
-
return /* @__PURE__ */
|
|
1683
|
+
}, [props.value, props.isOpen]);
|
|
1684
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1685
|
+
Popover,
|
|
1686
|
+
{
|
|
1687
|
+
isOpen: props.isOpen,
|
|
1688
|
+
onClose: props.onClose,
|
|
1689
|
+
popoverRef: ref,
|
|
1690
|
+
triggerRef: props.triggerRef,
|
|
1691
|
+
children
|
|
1692
|
+
}
|
|
1693
|
+
);
|
|
1579
1694
|
}
|
|
1580
1695
|
|
|
1581
|
-
// src/components/DropdownSelector/
|
|
1582
|
-
var
|
|
1696
|
+
// src/components/DropdownSelector/utils/findPreviewRecursive.tsx
|
|
1697
|
+
var import_react13 = __toESM(require("react"));
|
|
1698
|
+
function findPreviewRecursive(children, value) {
|
|
1699
|
+
const childArray = import_react13.default.Children.toArray(children);
|
|
1700
|
+
for (let i = 0; i < childArray.length; i++) {
|
|
1701
|
+
const child = childArray[i];
|
|
1702
|
+
if (import_react13.default.isValidElement(child)) {
|
|
1703
|
+
if ("value" in child.props) {
|
|
1704
|
+
const childValue = child.props.value;
|
|
1705
|
+
if (childValue === value && "children" in child.props) {
|
|
1706
|
+
const children2 = child.props.children;
|
|
1707
|
+
return children2;
|
|
1708
|
+
}
|
|
1709
|
+
}
|
|
1710
|
+
if ("children" in child.props) {
|
|
1711
|
+
const children2 = findPreviewRecursive(
|
|
1712
|
+
child.props.children,
|
|
1713
|
+
value
|
|
1714
|
+
);
|
|
1715
|
+
if (children2 !== void 0) {
|
|
1716
|
+
return children2;
|
|
1717
|
+
}
|
|
1718
|
+
}
|
|
1719
|
+
}
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
// src/components/DropdownSelector/MenuList/index.tsx
|
|
1724
|
+
var import_react16 = require("react");
|
|
1725
|
+
var import_styled_components15 = __toESM(require("styled-components"));
|
|
1726
|
+
|
|
1727
|
+
// src/components/DropdownSelector/MenuList/MenuListContext.ts
|
|
1728
|
+
var import_react14 = require("react");
|
|
1729
|
+
var MenuListContext = (0, import_react14.createContext)({
|
|
1730
|
+
root: void 0,
|
|
1583
1731
|
value: "",
|
|
1732
|
+
values: [],
|
|
1584
1733
|
setValue: (_v) => {
|
|
1585
1734
|
}
|
|
1586
1735
|
});
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
const childArray = import_react17.default.Children.toArray(props.children);
|
|
1736
|
+
|
|
1737
|
+
// src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx
|
|
1738
|
+
var import_react15 = __toESM(require("react"));
|
|
1739
|
+
function getValuesRecursive(children, values = []) {
|
|
1740
|
+
const childArray = import_react15.default.Children.toArray(children);
|
|
1593
1741
|
for (let i = 0; i < childArray.length; i++) {
|
|
1594
1742
|
const child = childArray[i];
|
|
1595
|
-
if (
|
|
1596
|
-
const
|
|
1597
|
-
if (
|
|
1598
|
-
|
|
1599
|
-
|
|
1743
|
+
if (import_react15.default.isValidElement(child)) {
|
|
1744
|
+
const props = child.props;
|
|
1745
|
+
if ("value" in props && typeof props.value === "string") {
|
|
1746
|
+
const childValue = props.value;
|
|
1747
|
+
values.push(childValue);
|
|
1748
|
+
}
|
|
1749
|
+
if ("children" in props && props.children) {
|
|
1750
|
+
getValuesRecursive(props.children, values);
|
|
1600
1751
|
}
|
|
1601
1752
|
}
|
|
1602
1753
|
}
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
), /* @__PURE__ */
|
|
1612
|
-
|
|
1613
|
-
{
|
|
1614
|
-
invalid: props.invalid,
|
|
1615
|
-
disabled: props.disabled,
|
|
1616
|
-
onClick: () => {
|
|
1617
|
-
if (props.disabled === true)
|
|
1618
|
-
return;
|
|
1619
|
-
state.open();
|
|
1620
|
-
},
|
|
1621
|
-
ref: triggerRef
|
|
1622
|
-
},
|
|
1623
|
-
/* @__PURE__ */ import_react17.default.createElement(DropdownButtonText, null, props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview),
|
|
1624
|
-
/* @__PURE__ */ import_react17.default.createElement(DropdownButtonIcon, { name: "16/Menu" })
|
|
1625
|
-
), state.isOpen && /* @__PURE__ */ import_react17.default.createElement(
|
|
1626
|
-
DropdownPopover,
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
// src/components/DropdownSelector/MenuList/index.tsx
|
|
1757
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1758
|
+
function MenuList(props) {
|
|
1759
|
+
const root = (0, import_react16.useRef)(null);
|
|
1760
|
+
const values = [];
|
|
1761
|
+
getValuesRecursive(props.children, values);
|
|
1762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(StyledUl, { ref: root, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1763
|
+
MenuListContext.Provider,
|
|
1627
1764
|
{
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
{
|
|
1635
|
-
value: {
|
|
1636
|
-
value: props.value,
|
|
1637
|
-
setValue: (v) => {
|
|
1638
|
-
props.onChange(v);
|
|
1639
|
-
state.close();
|
|
1640
|
-
}
|
|
1765
|
+
value: {
|
|
1766
|
+
value: props.value ?? "",
|
|
1767
|
+
root,
|
|
1768
|
+
values,
|
|
1769
|
+
setValue: (v) => {
|
|
1770
|
+
props.onChange?.(v);
|
|
1641
1771
|
}
|
|
1642
1772
|
},
|
|
1643
|
-
props.children
|
|
1644
|
-
|
|
1645
|
-
)
|
|
1773
|
+
children: props.children
|
|
1774
|
+
}
|
|
1775
|
+
) });
|
|
1646
1776
|
}
|
|
1647
|
-
var
|
|
1648
|
-
padding
|
|
1777
|
+
var StyledUl = import_styled_components15.default.ul`
|
|
1778
|
+
padding: 0;
|
|
1649
1779
|
margin: 0;
|
|
1650
|
-
box-sizing: border-box;
|
|
1651
|
-
list-style: none;
|
|
1652
|
-
overflow: auto;
|
|
1653
|
-
max-height: inherit;
|
|
1654
|
-
|
|
1655
|
-
${theme((o) => [
|
|
1656
|
-
o.bg.background1,
|
|
1657
|
-
o.border.default,
|
|
1658
|
-
o.borderRadius(8),
|
|
1659
|
-
o.padding.vertical(8)
|
|
1660
|
-
])}
|
|
1661
1780
|
`;
|
|
1662
|
-
|
|
1781
|
+
|
|
1782
|
+
// src/components/DropdownSelector/index.tsx
|
|
1783
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1784
|
+
var defaultRequiredText = "*\u5FC5\u9808";
|
|
1785
|
+
function DropdownSelector(props) {
|
|
1786
|
+
const triggerRef = (0, import_react17.useRef)(null);
|
|
1787
|
+
const [isOpen, setIsOpen] = (0, import_react17.useState)(false);
|
|
1788
|
+
const preview = findPreviewRecursive(props.children, props.value);
|
|
1789
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(DropdownSelectorRoot, { "aria-disabled": props.disabled, children: [
|
|
1790
|
+
props.showLabel === true && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1791
|
+
DropdownFieldLabel,
|
|
1792
|
+
{
|
|
1793
|
+
label: props.label,
|
|
1794
|
+
required: props.required,
|
|
1795
|
+
requiredText: props.requiredText ?? defaultRequiredText,
|
|
1796
|
+
subLabel: props.subLabel
|
|
1797
|
+
}
|
|
1798
|
+
),
|
|
1799
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
1800
|
+
DropdownButton,
|
|
1801
|
+
{
|
|
1802
|
+
invalid: props.invalid,
|
|
1803
|
+
disabled: props.disabled,
|
|
1804
|
+
onClick: () => {
|
|
1805
|
+
if (props.disabled === true)
|
|
1806
|
+
return;
|
|
1807
|
+
setIsOpen(true);
|
|
1808
|
+
},
|
|
1809
|
+
ref: triggerRef,
|
|
1810
|
+
children: [
|
|
1811
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownButtonText, { children: props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview }),
|
|
1812
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(DropdownButtonIcon, { name: "16/Menu" })
|
|
1813
|
+
]
|
|
1814
|
+
}
|
|
1815
|
+
),
|
|
1816
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1817
|
+
DropdownPopover,
|
|
1818
|
+
{
|
|
1819
|
+
isOpen,
|
|
1820
|
+
onClose: () => setIsOpen(false),
|
|
1821
|
+
triggerRef,
|
|
1822
|
+
value: props.value,
|
|
1823
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1824
|
+
MenuList,
|
|
1825
|
+
{
|
|
1826
|
+
value: props.value,
|
|
1827
|
+
onChange: (v) => {
|
|
1828
|
+
props.onChange(v);
|
|
1829
|
+
setIsOpen(false);
|
|
1830
|
+
},
|
|
1831
|
+
children: props.children
|
|
1832
|
+
}
|
|
1833
|
+
)
|
|
1834
|
+
}
|
|
1835
|
+
),
|
|
1836
|
+
props.assistiveText !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(AssertiveText, { invalid: props.invalid, children: props.assistiveText })
|
|
1837
|
+
] });
|
|
1838
|
+
}
|
|
1839
|
+
var DropdownSelectorRoot = import_styled_components16.default.div`
|
|
1663
1840
|
display: inline-block;
|
|
1664
1841
|
width: 100%;
|
|
1665
1842
|
|
|
@@ -1668,12 +1845,12 @@ var DropdownSelectorRoot = import_styled_components15.default.div`
|
|
|
1668
1845
|
${theme((o) => o.disabled)}
|
|
1669
1846
|
}
|
|
1670
1847
|
`;
|
|
1671
|
-
var DropdownFieldLabel = (0,
|
|
1848
|
+
var DropdownFieldLabel = (0, import_styled_components16.default)(FieldLabel_default)`
|
|
1672
1849
|
width: 100%;
|
|
1673
1850
|
|
|
1674
1851
|
${theme((o) => o.margin.bottom(8))}
|
|
1675
1852
|
`;
|
|
1676
|
-
var DropdownButton =
|
|
1853
|
+
var DropdownButton = import_styled_components16.default.button`
|
|
1677
1854
|
display: flex;
|
|
1678
1855
|
justify-content: space-between;
|
|
1679
1856
|
align-items: center;
|
|
@@ -1696,15 +1873,15 @@ var DropdownButton = import_styled_components15.default.button`
|
|
|
1696
1873
|
invalid === true && o.outline.assertive
|
|
1697
1874
|
])}
|
|
1698
1875
|
`;
|
|
1699
|
-
var DropdownButtonText =
|
|
1876
|
+
var DropdownButtonText = import_styled_components16.default.span`
|
|
1700
1877
|
text-align: left;
|
|
1701
1878
|
|
|
1702
1879
|
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1703
1880
|
`;
|
|
1704
|
-
var DropdownButtonIcon = (0,
|
|
1881
|
+
var DropdownButtonIcon = (0, import_styled_components16.default)(Icon_default)`
|
|
1705
1882
|
${theme((o) => [o.font.text2])}
|
|
1706
1883
|
`;
|
|
1707
|
-
var AssertiveText =
|
|
1884
|
+
var AssertiveText = import_styled_components16.default.div`
|
|
1708
1885
|
${({ invalid }) => theme((o) => [
|
|
1709
1886
|
o.typography(14),
|
|
1710
1887
|
o.margin.top(8),
|
|
@@ -1712,161 +1889,241 @@ var AssertiveText = import_styled_components15.default.div`
|
|
|
1712
1889
|
])}
|
|
1713
1890
|
`;
|
|
1714
1891
|
|
|
1715
|
-
// src/components/DropdownSelector/
|
|
1716
|
-
var
|
|
1717
|
-
var import_styled_components16 = __toESM(require("styled-components"));
|
|
1718
|
-
var import_utils7 = require("@charcoal-ui/utils");
|
|
1892
|
+
// src/components/DropdownSelector/DropdownMenuItem.tsx
|
|
1893
|
+
var import_styled_components18 = __toESM(require("styled-components"));
|
|
1719
1894
|
|
|
1720
|
-
// src/components/DropdownSelector/
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
const parentRect = parent.getBoundingClientRect();
|
|
1727
|
-
if (rect.bottom > parentRect.bottom) {
|
|
1728
|
-
parent.scrollTo({
|
|
1729
|
-
top: parent.scrollTop + rect.bottom - parentRect.bottom
|
|
1730
|
-
});
|
|
1731
|
-
} else if (rect.top < parentRect.top) {
|
|
1732
|
-
parent.scrollTo({
|
|
1733
|
-
top: parent.scrollTop - (parentRect.top - rect.top)
|
|
1734
|
-
});
|
|
1735
|
-
}
|
|
1895
|
+
// src/components/DropdownSelector/ListItem/index.tsx
|
|
1896
|
+
var import_styled_components17 = __toESM(require("styled-components"));
|
|
1897
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1898
|
+
function ListItem(props) {
|
|
1899
|
+
const { children, ...rest } = props;
|
|
1900
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledLi, { role: "option", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ItemDiv, { ...rest, children: props.children }) });
|
|
1736
1901
|
}
|
|
1902
|
+
var StyledLi = import_styled_components17.default.li`
|
|
1903
|
+
list-style: none;
|
|
1904
|
+
`;
|
|
1905
|
+
var ItemDiv = import_styled_components17.default.div`
|
|
1906
|
+
display: flex;
|
|
1907
|
+
align-items: center;
|
|
1908
|
+
min-height: 40px;
|
|
1909
|
+
cursor: pointer;
|
|
1910
|
+
outline: none;
|
|
1911
|
+
|
|
1912
|
+
${theme((o) => [o.padding.horizontal(16), o.disabled])}
|
|
1913
|
+
|
|
1914
|
+
&[aria-disabled="true"] {
|
|
1915
|
+
cursor: default;
|
|
1916
|
+
}
|
|
1917
|
+
|
|
1918
|
+
:hover,
|
|
1919
|
+
:focus,
|
|
1920
|
+
:focus-within {
|
|
1921
|
+
${theme((o) => [o.bg.surface3])}
|
|
1922
|
+
}
|
|
1923
|
+
`;
|
|
1737
1924
|
|
|
1738
|
-
// src/components/DropdownSelector/
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1925
|
+
// src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
|
|
1926
|
+
var import_react18 = require("react");
|
|
1927
|
+
|
|
1928
|
+
// src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx
|
|
1929
|
+
function handleFocusByKeyBoard(element, parent) {
|
|
1930
|
+
const isScrollable = parent.scrollHeight > parent.clientHeight;
|
|
1931
|
+
if (isScrollable) {
|
|
1932
|
+
const rect = element.getBoundingClientRect();
|
|
1933
|
+
const parentRect = parent.getBoundingClientRect();
|
|
1934
|
+
if (rect.bottom > parentRect.bottom) {
|
|
1935
|
+
parent.scrollTo({
|
|
1936
|
+
top: parent.scrollTop + rect.bottom - parentRect.bottom
|
|
1937
|
+
});
|
|
1938
|
+
} else if (rect.top < parentRect.top) {
|
|
1939
|
+
parent.scrollTo({
|
|
1940
|
+
top: parent.scrollTop - (parentRect.top - rect.top)
|
|
1941
|
+
});
|
|
1942
|
+
}
|
|
1943
|
+
} else {
|
|
1944
|
+
scrollIfNeeded(element);
|
|
1945
|
+
}
|
|
1946
|
+
}
|
|
1947
|
+
function scrollIfNeeded(element) {
|
|
1948
|
+
const elementRect = element.getBoundingClientRect();
|
|
1949
|
+
const isVisible = elementRect.top >= 0 && elementRect.bottom <= (window.innerHeight || document.documentElement.clientHeight);
|
|
1950
|
+
if (!isVisible) {
|
|
1951
|
+
element.scrollIntoView({
|
|
1952
|
+
block: "nearest"
|
|
1953
|
+
});
|
|
1743
1954
|
}
|
|
1744
1955
|
}
|
|
1745
1956
|
|
|
1746
|
-
// src/components/DropdownSelector/
|
|
1747
|
-
function
|
|
1748
|
-
const {
|
|
1749
|
-
const
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
};
|
|
1753
|
-
|
|
1754
|
-
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
e.
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
} else if (e.key === "ArrowDown") {
|
|
1771
|
-
e.preventDefault();
|
|
1772
|
-
const next = e.currentTarget.nextElementSibling;
|
|
1773
|
-
if (next === null) {
|
|
1774
|
-
focusIfHTMLLIElement(e.currentTarget.parentElement?.firstChild);
|
|
1957
|
+
// src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
|
|
1958
|
+
function useMenuItemHandleKeyDown(value) {
|
|
1959
|
+
const { setValue, root, values } = (0, import_react18.useContext)(MenuListContext);
|
|
1960
|
+
const setContextValue = (0, import_react18.useCallback)(() => {
|
|
1961
|
+
if (value !== void 0)
|
|
1962
|
+
setValue(value);
|
|
1963
|
+
}, [value, setValue]);
|
|
1964
|
+
const handleKeyDown = (0, import_react18.useCallback)(
|
|
1965
|
+
(e) => {
|
|
1966
|
+
if (e.key === "Enter") {
|
|
1967
|
+
setContextValue();
|
|
1968
|
+
} else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
|
|
1969
|
+
e.preventDefault();
|
|
1970
|
+
if (!values || value === void 0)
|
|
1971
|
+
return;
|
|
1972
|
+
const index = values.indexOf(value);
|
|
1973
|
+
if (index === -1)
|
|
1974
|
+
return;
|
|
1975
|
+
const focusValue = e.key === "ArrowUp" ? index - 1 < 0 ? values[values.length - 1] : values[index - 1] : index + 1 >= values.length ? values[0] : values[index + 1];
|
|
1976
|
+
const next = root?.current?.querySelector(`[data-key='${focusValue}']`);
|
|
1977
|
+
if (next instanceof HTMLElement) {
|
|
1978
|
+
next.focus({ preventScroll: true });
|
|
1979
|
+
if (root?.current?.parentElement) {
|
|
1980
|
+
handleFocusByKeyBoard(next, root.current.parentElement);
|
|
1775
1981
|
}
|
|
1776
|
-
focusIfHTMLLIElement(next);
|
|
1777
|
-
} else if (e.key === " ") {
|
|
1778
|
-
e.preventDefault();
|
|
1779
1982
|
}
|
|
1780
|
-
}
|
|
1781
|
-
onClick: onSelect,
|
|
1782
|
-
tabIndex: -1
|
|
1983
|
+
}
|
|
1783
1984
|
},
|
|
1784
|
-
|
|
1785
|
-
/* @__PURE__ */ import_react18.default.createElement(OptionText, { isSelected }, props.children)
|
|
1985
|
+
[setContextValue, value, root, values]
|
|
1786
1986
|
);
|
|
1987
|
+
return [handleKeyDown, setContextValue];
|
|
1787
1988
|
}
|
|
1788
|
-
var OptionRoot = import_styled_components16.default.li`
|
|
1789
|
-
display: flex;
|
|
1790
|
-
align-items: center;
|
|
1791
|
-
gap: ${({ theme: theme4 }) => (0, import_utils7.px)(theme4.spacing[4])};
|
|
1792
|
-
height: 40px;
|
|
1793
|
-
cursor: pointer;
|
|
1794
|
-
outline: none;
|
|
1795
1989
|
|
|
1796
|
-
|
|
1990
|
+
// src/components/DropdownSelector/MenuItem/index.tsx
|
|
1991
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1992
|
+
function MenuItem(props) {
|
|
1993
|
+
const { children, as, ...rest } = props;
|
|
1994
|
+
const [handleKeyDown, setContextValue] = useMenuItemHandleKeyDown(props.value);
|
|
1995
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1996
|
+
ListItem,
|
|
1997
|
+
{
|
|
1998
|
+
...rest,
|
|
1999
|
+
as,
|
|
2000
|
+
"data-key": props.value,
|
|
2001
|
+
onKeyDown: handleKeyDown,
|
|
2002
|
+
onClick: props.disabled === true ? void 0 : setContextValue,
|
|
2003
|
+
tabIndex: -1,
|
|
2004
|
+
"aria-disabled": props.disabled,
|
|
2005
|
+
children: props.children
|
|
2006
|
+
}
|
|
2007
|
+
);
|
|
2008
|
+
}
|
|
1797
2009
|
|
|
1798
|
-
|
|
1799
|
-
|
|
1800
|
-
|
|
2010
|
+
// src/components/DropdownSelector/DropdownMenuItem.tsx
|
|
2011
|
+
var import_react19 = require("react");
|
|
2012
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
2013
|
+
function DropdownMenuItem(props) {
|
|
2014
|
+
const { value: ctxValue } = (0, import_react19.useContext)(MenuListContext);
|
|
2015
|
+
const isSelected = props.value === ctxValue;
|
|
2016
|
+
const { children, ...rest } = props;
|
|
2017
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(MenuItem, { ...rest, children: [
|
|
2018
|
+
isSelected && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(Text2ColorIcon, { name: "16/Check" }),
|
|
2019
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledSpan, { isSelected, children: props.children })
|
|
2020
|
+
] });
|
|
2021
|
+
}
|
|
2022
|
+
var StyledSpan = import_styled_components18.default.span`
|
|
2023
|
+
${theme((o) => [o.typography(14), o.font.text2])};
|
|
2024
|
+
display: flex;
|
|
2025
|
+
align-items: center;
|
|
2026
|
+
width: 100%;
|
|
2027
|
+
margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
|
|
1801
2028
|
`;
|
|
1802
|
-
var
|
|
2029
|
+
var Text2ColorIcon = (0, import_styled_components18.default)(Icon_default)`
|
|
1803
2030
|
${theme((o) => [o.font.text2])}
|
|
2031
|
+
padding-right: 4px;
|
|
1804
2032
|
`;
|
|
1805
|
-
|
|
2033
|
+
|
|
2034
|
+
// src/components/DropdownSelector/MenuItemGroup/index.tsx
|
|
2035
|
+
var import_styled_components19 = __toESM(require("styled-components"));
|
|
2036
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2037
|
+
function MenuItemGroup(props) {
|
|
2038
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsxs)(StyledLi2, { role: "presentation", children: [
|
|
2039
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(TextSpan, { children: props.text }),
|
|
2040
|
+
/* @__PURE__ */ (0, import_jsx_runtime22.jsx)(StyledUl2, { role: "group", children: props.children })
|
|
2041
|
+
] });
|
|
2042
|
+
}
|
|
2043
|
+
var TextSpan = import_styled_components19.default.span`
|
|
2044
|
+
display: block;
|
|
2045
|
+
color: ${({ theme: theme4 }) => theme4.color.text3};
|
|
2046
|
+
font-size: 12px;
|
|
2047
|
+
font-weight: bold;
|
|
2048
|
+
padding: 12px 0 8px 16px;
|
|
2049
|
+
`;
|
|
2050
|
+
var StyledUl2 = import_styled_components19.default.ul`
|
|
2051
|
+
padding-left: 0;
|
|
2052
|
+
margin: 0;
|
|
2053
|
+
box-sizing: border-box;
|
|
2054
|
+
list-style: none;
|
|
2055
|
+
overflow: hidden;
|
|
2056
|
+
`;
|
|
2057
|
+
var StyledLi2 = import_styled_components19.default.li`
|
|
1806
2058
|
display: block;
|
|
1807
|
-
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1808
|
-
margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
|
|
1809
2059
|
`;
|
|
1810
2060
|
|
|
1811
2061
|
// src/components/SegmentedControl/index.tsx
|
|
1812
|
-
var
|
|
1813
|
-
var
|
|
2062
|
+
var import_react21 = require("react");
|
|
2063
|
+
var import_react_stately2 = require("react-stately");
|
|
1814
2064
|
var import_radio = require("@react-aria/radio");
|
|
1815
|
-
var
|
|
1816
|
-
var
|
|
2065
|
+
var import_styled_components20 = __toESM(require("styled-components"));
|
|
2066
|
+
var import_utils7 = require("@charcoal-ui/utils");
|
|
1817
2067
|
|
|
1818
2068
|
// src/components/SegmentedControl/RadioGroupContext.tsx
|
|
1819
|
-
var
|
|
1820
|
-
var
|
|
2069
|
+
var import_react20 = require("react");
|
|
2070
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2071
|
+
var RadioContext = (0, import_react20.createContext)(null);
|
|
1821
2072
|
var RadioProvider = ({
|
|
1822
2073
|
value,
|
|
1823
2074
|
children
|
|
1824
2075
|
}) => {
|
|
1825
|
-
return /* @__PURE__ */
|
|
2076
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(RadioContext.Provider, { value, children });
|
|
1826
2077
|
};
|
|
1827
2078
|
var useRadioContext = () => {
|
|
1828
|
-
const state = (0,
|
|
2079
|
+
const state = (0, import_react20.useContext)(RadioContext);
|
|
1829
2080
|
if (state === null)
|
|
1830
2081
|
throw new Error("`<RadioProvider>` is not likely mounted.");
|
|
1831
2082
|
return state;
|
|
1832
2083
|
};
|
|
1833
2084
|
|
|
1834
2085
|
// src/components/SegmentedControl/index.tsx
|
|
1835
|
-
var
|
|
2086
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2087
|
+
var SegmentedControl = (0, import_react21.forwardRef)(
|
|
1836
2088
|
function SegmentedControlInner(props, ref) {
|
|
1837
|
-
const ariaRadioGroupProps = (0,
|
|
2089
|
+
const ariaRadioGroupProps = (0, import_react21.useMemo)(
|
|
1838
2090
|
() => ({
|
|
1839
2091
|
...props,
|
|
1840
2092
|
isDisabled: props.disabled,
|
|
1841
2093
|
isReadOnly: props.readonly,
|
|
1842
|
-
isRequired: props.required
|
|
2094
|
+
isRequired: props.required,
|
|
2095
|
+
"aria-label": props.name
|
|
1843
2096
|
}),
|
|
1844
2097
|
[props]
|
|
1845
2098
|
);
|
|
1846
|
-
const state = (0,
|
|
2099
|
+
const state = (0, import_react_stately2.useRadioGroupState)(ariaRadioGroupProps);
|
|
1847
2100
|
const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
|
|
1848
|
-
const segmentedControlItems = (0,
|
|
2101
|
+
const segmentedControlItems = (0, import_react21.useMemo)(() => {
|
|
1849
2102
|
return props.data.map(
|
|
1850
2103
|
(d) => typeof d === "string" ? { value: d, label: d } : d
|
|
1851
2104
|
);
|
|
1852
2105
|
}, [props.data]);
|
|
1853
|
-
return /* @__PURE__ */
|
|
2106
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SegmentedControlRoot, { ref, ...radioGroupProps, children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadioProvider, { value: state, children: segmentedControlItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
|
|
1854
2107
|
Segmented,
|
|
1855
2108
|
{
|
|
1856
|
-
key: item.value,
|
|
1857
2109
|
value: item.value,
|
|
1858
|
-
disabled: item.disabled
|
|
2110
|
+
disabled: item.disabled,
|
|
2111
|
+
children: item.label
|
|
1859
2112
|
},
|
|
1860
|
-
item.
|
|
1861
|
-
))));
|
|
2113
|
+
item.value
|
|
2114
|
+
)) }) });
|
|
1862
2115
|
}
|
|
1863
2116
|
);
|
|
1864
|
-
var SegmentedControl_default = (0,
|
|
1865
|
-
var Segmented = (
|
|
2117
|
+
var SegmentedControl_default = (0, import_react21.memo)(SegmentedControl);
|
|
2118
|
+
var Segmented = (props) => {
|
|
1866
2119
|
const state = useRadioContext();
|
|
1867
|
-
const ref = (0,
|
|
1868
|
-
const ariaRadioProps = (0,
|
|
1869
|
-
() => ({
|
|
2120
|
+
const ref = (0, import_react21.useRef)(null);
|
|
2121
|
+
const ariaRadioProps = (0, import_react21.useMemo)(
|
|
2122
|
+
() => ({
|
|
2123
|
+
value: props.value,
|
|
2124
|
+
isDisabled: props.disabled,
|
|
2125
|
+
children: props.children
|
|
2126
|
+
}),
|
|
1870
2127
|
[props]
|
|
1871
2128
|
);
|
|
1872
2129
|
const { inputProps, isDisabled, isSelected } = (0, import_radio.useRadio)(
|
|
@@ -1874,30 +2131,32 @@ var Segmented = ({ children, ...props }) => {
|
|
|
1874
2131
|
state,
|
|
1875
2132
|
ref
|
|
1876
2133
|
);
|
|
1877
|
-
return /* @__PURE__ */
|
|
2134
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(
|
|
1878
2135
|
SegmentedRoot,
|
|
1879
2136
|
{
|
|
1880
2137
|
"aria-disabled": isDisabled || state.isReadOnly,
|
|
1881
|
-
checked: isSelected
|
|
1882
|
-
|
|
1883
|
-
|
|
1884
|
-
|
|
2138
|
+
checked: isSelected,
|
|
2139
|
+
children: [
|
|
2140
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SegmentedInput, { ...inputProps, ref }),
|
|
2141
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(RadioLabel2, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(SegmentedLabelInner, { children: props.children }) })
|
|
2142
|
+
]
|
|
2143
|
+
}
|
|
1885
2144
|
);
|
|
1886
2145
|
};
|
|
1887
|
-
var SegmentedControlRoot =
|
|
2146
|
+
var SegmentedControlRoot = import_styled_components20.default.div`
|
|
1888
2147
|
display: inline-flex;
|
|
1889
2148
|
align-items: center;
|
|
1890
2149
|
|
|
1891
2150
|
${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
|
|
1892
2151
|
`;
|
|
1893
|
-
var SegmentedRoot =
|
|
2152
|
+
var SegmentedRoot = import_styled_components20.default.label`
|
|
1894
2153
|
position: relative;
|
|
1895
2154
|
display: flex;
|
|
1896
2155
|
align-items: center;
|
|
1897
2156
|
cursor: pointer;
|
|
1898
2157
|
height: 32px;
|
|
1899
2158
|
|
|
1900
|
-
${
|
|
2159
|
+
${import_utils7.disabledSelector} {
|
|
1901
2160
|
cursor: default;
|
|
1902
2161
|
}
|
|
1903
2162
|
|
|
@@ -1909,7 +2168,7 @@ var SegmentedRoot = import_styled_components17.default.label`
|
|
|
1909
2168
|
checked === true ? o.font.text5 : o.font.text2
|
|
1910
2169
|
])}
|
|
1911
2170
|
`;
|
|
1912
|
-
var SegmentedInput =
|
|
2171
|
+
var SegmentedInput = import_styled_components20.default.input`
|
|
1913
2172
|
position: absolute;
|
|
1914
2173
|
|
|
1915
2174
|
height: 0px;
|
|
@@ -1923,26 +2182,27 @@ var SegmentedInput = import_styled_components17.default.input`
|
|
|
1923
2182
|
white-space: nowrap;
|
|
1924
2183
|
opacity: 0;
|
|
1925
2184
|
`;
|
|
1926
|
-
var RadioLabel2 =
|
|
2185
|
+
var RadioLabel2 = import_styled_components20.default.div`
|
|
1927
2186
|
background: transparent;
|
|
1928
2187
|
display: flex;
|
|
1929
2188
|
align-items: center;
|
|
1930
2189
|
height: 22px;
|
|
1931
2190
|
`;
|
|
1932
|
-
var SegmentedLabelInner =
|
|
2191
|
+
var SegmentedLabelInner = import_styled_components20.default.div`
|
|
1933
2192
|
${theme((o) => [o.typography(14)])}
|
|
1934
2193
|
`;
|
|
1935
2194
|
|
|
1936
2195
|
// src/components/Checkbox/index.tsx
|
|
1937
|
-
var
|
|
1938
|
-
var
|
|
2196
|
+
var import_react22 = require("react");
|
|
2197
|
+
var import_styled_components21 = __toESM(require("styled-components"));
|
|
1939
2198
|
var import_checkbox = require("@react-aria/checkbox");
|
|
1940
|
-
var
|
|
1941
|
-
var
|
|
1942
|
-
var
|
|
1943
|
-
var
|
|
2199
|
+
var import_utils8 = require("@react-aria/utils");
|
|
2200
|
+
var import_react_stately3 = require("react-stately");
|
|
2201
|
+
var import_utils9 = require("@charcoal-ui/utils");
|
|
2202
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2203
|
+
var Checkbox = (0, import_react22.forwardRef)(
|
|
1944
2204
|
function CheckboxInner(props, ref) {
|
|
1945
|
-
const ariaCheckboxProps = (0,
|
|
2205
|
+
const ariaCheckboxProps = (0, import_react22.useMemo)(
|
|
1946
2206
|
() => ({
|
|
1947
2207
|
...props,
|
|
1948
2208
|
isSelected: props.checked,
|
|
@@ -1952,33 +2212,39 @@ var Checkbox = (0, import_react21.forwardRef)(
|
|
|
1952
2212
|
}),
|
|
1953
2213
|
[props]
|
|
1954
2214
|
);
|
|
1955
|
-
const state = (0,
|
|
1956
|
-
const objectRef = (0,
|
|
2215
|
+
const state = (0, import_react_stately3.useToggleState)(ariaCheckboxProps);
|
|
2216
|
+
const objectRef = (0, import_utils8.useObjectRef)(ref);
|
|
1957
2217
|
const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
|
|
1958
2218
|
const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
|
|
1959
|
-
return /* @__PURE__ */
|
|
2219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(InputRoot, { "aria-disabled": isDisabled, children: [
|
|
2220
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsxs)(CheckboxRoot, { children: [
|
|
2221
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CheckboxInput, { type: "checkbox", ...inputProps }),
|
|
2222
|
+
/* @__PURE__ */ (0, import_jsx_runtime25.jsx)(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked, children: /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }) })
|
|
2223
|
+
] }),
|
|
2224
|
+
"children" in props && /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(InputLabel, { children: props.children })
|
|
2225
|
+
] });
|
|
1960
2226
|
}
|
|
1961
2227
|
);
|
|
1962
|
-
var Checkbox_default = (0,
|
|
1963
|
-
var hiddenCss =
|
|
2228
|
+
var Checkbox_default = (0, import_react22.memo)(Checkbox);
|
|
2229
|
+
var hiddenCss = import_styled_components21.css`
|
|
1964
2230
|
visibility: hidden;
|
|
1965
2231
|
`;
|
|
1966
|
-
var InputRoot =
|
|
2232
|
+
var InputRoot = import_styled_components21.default.label`
|
|
1967
2233
|
position: relative;
|
|
1968
2234
|
display: flex;
|
|
1969
2235
|
|
|
1970
2236
|
cursor: pointer;
|
|
1971
|
-
${
|
|
2237
|
+
${import_utils9.disabledSelector} {
|
|
1972
2238
|
cursor: default;
|
|
1973
2239
|
}
|
|
1974
2240
|
|
|
1975
|
-
gap: ${({ theme: theme4 }) => (0,
|
|
2241
|
+
gap: ${({ theme: theme4 }) => (0, import_utils9.px)(theme4.spacing[4])};
|
|
1976
2242
|
${theme((o) => [o.disabled])}
|
|
1977
2243
|
`;
|
|
1978
|
-
var CheckboxRoot =
|
|
2244
|
+
var CheckboxRoot = import_styled_components21.default.div`
|
|
1979
2245
|
position: relative;
|
|
1980
2246
|
`;
|
|
1981
|
-
var CheckboxInput =
|
|
2247
|
+
var CheckboxInput = import_styled_components21.default.input`
|
|
1982
2248
|
&[type='checkbox'] {
|
|
1983
2249
|
appearance: none;
|
|
1984
2250
|
display: block;
|
|
@@ -2001,7 +2267,7 @@ var CheckboxInput = import_styled_components18.default.input`
|
|
|
2001
2267
|
transition: all 0.2s !important;
|
|
2002
2268
|
}
|
|
2003
2269
|
`;
|
|
2004
|
-
var CheckboxInputOverlay =
|
|
2270
|
+
var CheckboxInputOverlay = import_styled_components21.default.div`
|
|
2005
2271
|
position: absolute;
|
|
2006
2272
|
top: -2px;
|
|
2007
2273
|
left: -2px;
|
|
@@ -2014,7 +2280,7 @@ var CheckboxInputOverlay = import_styled_components18.default.div`
|
|
|
2014
2280
|
|
|
2015
2281
|
${({ checked }) => checked !== true && hiddenCss};
|
|
2016
2282
|
`;
|
|
2017
|
-
var InputLabel =
|
|
2283
|
+
var InputLabel = import_styled_components21.default.div`
|
|
2018
2284
|
${theme((o) => [o.font.text2])}
|
|
2019
2285
|
|
|
2020
2286
|
font-size: 14px;
|
|
@@ -2023,16 +2289,17 @@ var InputLabel = import_styled_components18.default.div`
|
|
|
2023
2289
|
`;
|
|
2024
2290
|
|
|
2025
2291
|
// src/components/TagItem/index.tsx
|
|
2026
|
-
var
|
|
2027
|
-
var
|
|
2028
|
-
var
|
|
2029
|
-
var
|
|
2292
|
+
var import_react23 = require("react");
|
|
2293
|
+
var import_utils10 = require("@react-aria/utils");
|
|
2294
|
+
var import_styled_components22 = __toESM(require("styled-components"));
|
|
2295
|
+
var import_utils11 = require("@charcoal-ui/utils");
|
|
2030
2296
|
var import_button = require("@react-aria/button");
|
|
2297
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2031
2298
|
var sizeMap = {
|
|
2032
2299
|
S: 32,
|
|
2033
2300
|
M: 40
|
|
2034
2301
|
};
|
|
2035
|
-
var TagItem = (0,
|
|
2302
|
+
var TagItem = (0, import_react23.forwardRef)(
|
|
2036
2303
|
function TagItemInner({
|
|
2037
2304
|
label,
|
|
2038
2305
|
translatedLabel,
|
|
@@ -2044,8 +2311,8 @@ var TagItem = (0, import_react22.forwardRef)(
|
|
|
2044
2311
|
className,
|
|
2045
2312
|
...props
|
|
2046
2313
|
}, _ref) {
|
|
2047
|
-
const ref = (0,
|
|
2048
|
-
const ariaButtonProps = (0,
|
|
2314
|
+
const ref = (0, import_utils10.useObjectRef)(_ref);
|
|
2315
|
+
const ariaButtonProps = (0, import_react23.useMemo)(
|
|
2049
2316
|
() => ({
|
|
2050
2317
|
elementType: "a",
|
|
2051
2318
|
isDisabled: disabled,
|
|
@@ -2055,22 +2322,30 @@ var TagItem = (0, import_react22.forwardRef)(
|
|
|
2055
2322
|
);
|
|
2056
2323
|
const { buttonProps } = (0, import_button.useButton)(ariaButtonProps, ref);
|
|
2057
2324
|
const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
|
|
2058
|
-
return /* @__PURE__ */
|
|
2325
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2059
2326
|
TagItemRoot,
|
|
2060
2327
|
{
|
|
2061
2328
|
ref,
|
|
2062
2329
|
size: hasTranslatedLabel ? "M" : size,
|
|
2063
2330
|
status,
|
|
2064
2331
|
...buttonProps,
|
|
2065
|
-
className
|
|
2066
|
-
|
|
2067
|
-
|
|
2068
|
-
|
|
2332
|
+
className,
|
|
2333
|
+
children: [
|
|
2334
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Background, { bgColor, bgImage, status }),
|
|
2335
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(Inner, { children: [
|
|
2336
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(LabelWrapper, { isTranslate: hasTranslatedLabel, children: [
|
|
2337
|
+
hasTranslatedLabel && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(TranslatedLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Label3, { children: translatedLabel }) }),
|
|
2338
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Label3, { children: label })
|
|
2339
|
+
] }),
|
|
2340
|
+
status === "active" && /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(Icon_default, { name: "16/Remove" })
|
|
2341
|
+
] })
|
|
2342
|
+
]
|
|
2343
|
+
}
|
|
2069
2344
|
);
|
|
2070
2345
|
}
|
|
2071
2346
|
);
|
|
2072
|
-
var TagItem_default = (0,
|
|
2073
|
-
var TagItemRoot =
|
|
2347
|
+
var TagItem_default = (0, import_react23.memo)(TagItem);
|
|
2348
|
+
var TagItemRoot = import_styled_components22.default.a`
|
|
2074
2349
|
isolation: isolate;
|
|
2075
2350
|
position: relative;
|
|
2076
2351
|
height: ${({ size }) => sizeMap[size]}px;
|
|
@@ -2090,12 +2365,12 @@ var TagItemRoot = import_styled_components19.default.a`
|
|
|
2090
2365
|
...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
|
|
2091
2366
|
])}
|
|
2092
2367
|
|
|
2093
|
-
${
|
|
2368
|
+
${import_utils11.disabledSelector} {
|
|
2094
2369
|
${theme((o) => [o.disabled])}
|
|
2095
2370
|
cursor: default;
|
|
2096
2371
|
}
|
|
2097
2372
|
`;
|
|
2098
|
-
var Background =
|
|
2373
|
+
var Background = import_styled_components22.default.div`
|
|
2099
2374
|
position: absolute;
|
|
2100
2375
|
z-index: 1;
|
|
2101
2376
|
top: 0;
|
|
@@ -2106,7 +2381,7 @@ var Background = import_styled_components19.default.div`
|
|
|
2106
2381
|
background-color: ${({ bgColor }) => bgColor};
|
|
2107
2382
|
${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
|
|
2108
2383
|
|
|
2109
|
-
${({ bgImage }) => bgImage !== void 0 &&
|
|
2384
|
+
${({ bgImage }) => bgImage !== void 0 && import_styled_components22.css`
|
|
2110
2385
|
${theme((o) => [o.bg.surface4])}
|
|
2111
2386
|
&::before {
|
|
2112
2387
|
content: '';
|
|
@@ -2122,25 +2397,25 @@ var Background = import_styled_components19.default.div`
|
|
|
2122
2397
|
}
|
|
2123
2398
|
`}
|
|
2124
2399
|
`;
|
|
2125
|
-
var Inner =
|
|
2400
|
+
var Inner = import_styled_components22.default.div`
|
|
2126
2401
|
display: inline-flex;
|
|
2127
|
-
gap: ${({ theme: theme4 }) => (0,
|
|
2402
|
+
gap: ${({ theme: theme4 }) => (0, import_utils11.px)(theme4.spacing[8])};
|
|
2128
2403
|
align-items: center;
|
|
2129
2404
|
z-index: 2;
|
|
2130
2405
|
`;
|
|
2131
|
-
var labelCSS =
|
|
2406
|
+
var labelCSS = import_styled_components22.css`
|
|
2132
2407
|
${theme((o) => [o.typography(14).bold])}
|
|
2133
2408
|
`;
|
|
2134
|
-
var translateLabelCSS =
|
|
2409
|
+
var translateLabelCSS = import_styled_components22.css`
|
|
2135
2410
|
display: flex;
|
|
2136
2411
|
align-items: center;
|
|
2137
2412
|
flex-direction: column;
|
|
2138
2413
|
font-size: 10px;
|
|
2139
2414
|
`;
|
|
2140
|
-
var LabelWrapper =
|
|
2415
|
+
var LabelWrapper = import_styled_components22.default.div`
|
|
2141
2416
|
${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
|
|
2142
2417
|
`;
|
|
2143
|
-
var Label3 =
|
|
2418
|
+
var Label3 = import_styled_components22.default.span`
|
|
2144
2419
|
max-width: 152px;
|
|
2145
2420
|
overflow: hidden;
|
|
2146
2421
|
text-overflow: ellipsis;
|
|
@@ -2149,7 +2424,7 @@ var Label3 = import_styled_components19.default.span`
|
|
|
2149
2424
|
color: inherit;
|
|
2150
2425
|
line-height: inherit;
|
|
2151
2426
|
`;
|
|
2152
|
-
var TranslatedLabel =
|
|
2427
|
+
var TranslatedLabel = import_styled_components22.default.div`
|
|
2153
2428
|
${theme((o) => [o.typography(12).bold])}
|
|
2154
2429
|
`;
|
|
2155
2430
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -2159,11 +2434,13 @@ var TranslatedLabel = import_styled_components19.default.div`
|
|
|
2159
2434
|
Checkbox,
|
|
2160
2435
|
Clickable,
|
|
2161
2436
|
ComponentAbstraction,
|
|
2437
|
+
DropdownMenuItem,
|
|
2162
2438
|
DropdownSelector,
|
|
2163
2439
|
Icon,
|
|
2164
2440
|
IconButton,
|
|
2165
2441
|
LoadingSpinner,
|
|
2166
2442
|
LoadingSpinnerIcon,
|
|
2443
|
+
MenuItemGroup,
|
|
2167
2444
|
Modal,
|
|
2168
2445
|
ModalAlign,
|
|
2169
2446
|
ModalBody,
|
|
@@ -2171,7 +2448,6 @@ var TranslatedLabel = import_styled_components19.default.div`
|
|
|
2171
2448
|
ModalHeader,
|
|
2172
2449
|
MultiSelect,
|
|
2173
2450
|
MultiSelectGroup,
|
|
2174
|
-
OptionItem,
|
|
2175
2451
|
OverlayProvider,
|
|
2176
2452
|
Radio,
|
|
2177
2453
|
RadioGroup,
|