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