@charcoal-ui/react 3.3.0 → 3.5.0
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/useForwardedRef.d.ts +3 -0
- package/dist/_lib/useForwardedRef.d.ts.map +1 -0
- package/dist/components/Clickable/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/DropdownPopover.d.ts.map +1 -1
- package/dist/components/DropdownSelector/Popover/index.d.ts.map +1 -1
- package/dist/components/DropdownSelector/Popover/usePreventScroll.d.ts +2 -0
- package/dist/components/DropdownSelector/Popover/usePreventScroll.d.ts.map +1 -0
- package/dist/components/DropdownSelector/index.story.d.ts +1 -0
- package/dist/components/DropdownSelector/index.story.d.ts.map +1 -1
- package/dist/components/Icon/index.story.d.ts +1 -1
- package/dist/components/Modal/Dialog/index.d.ts +26 -0
- package/dist/components/Modal/Dialog/index.d.ts.map +1 -0
- package/dist/components/Modal/ModalBackgroundContext.d.ts +6 -0
- package/dist/components/Modal/ModalBackgroundContext.d.ts.map +1 -0
- package/dist/components/Modal/ModalPlumbing.d.ts.map +1 -1
- package/dist/components/Modal/__stories__/InternalScrollStory.d.ts +4 -0
- package/dist/components/Modal/__stories__/InternalScrollStory.d.ts.map +1 -0
- package/dist/components/Modal/index.d.ts +12 -2
- package/dist/components/Modal/index.d.ts.map +1 -1
- package/dist/components/Modal/index.story.d.ts +3 -2
- package/dist/components/Modal/index.story.d.ts.map +1 -1
- package/dist/components/TextArea/index.d.ts.map +1 -1
- package/dist/components/TextField/index.d.ts +4 -0
- package/dist/components/TextField/index.d.ts.map +1 -1
- package/dist/components/TextField/useFocusWithClick.d.ts +3 -0
- package/dist/components/TextField/useFocusWithClick.d.ts.map +1 -0
- package/dist/index.cjs.js +532 -426
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +482 -377
- package/dist/index.esm.js.map +1 -1
- package/package.json +6 -6
- package/src/_lib/useForwardedRef.tsx +16 -0
- package/src/components/Button/__snapshots__/index.story.storyshot +1971 -0
- package/src/components/Checkbox/__snapshots__/index.story.storyshot +390 -0
- package/src/components/Clickable/__snapshots__/index.story.storyshot +100 -0
- package/src/components/Clickable/index.tsx +17 -35
- package/src/components/DropdownSelector/DropdownPopover.tsx +0 -1
- package/src/components/DropdownSelector/ListItem/__snapshots__/index.story.storyshot +245 -0
- package/src/components/DropdownSelector/MenuList/__snapshots__/index.story.storyshot +555 -0
- package/src/components/DropdownSelector/Popover/__snapshots__/index.story.storyshot +174 -0
- package/src/components/DropdownSelector/Popover/index.tsx +17 -2
- package/src/components/DropdownSelector/Popover/usePreventScroll.tsx +18 -0
- package/src/components/DropdownSelector/__snapshots__/index.story.storyshot +1241 -0
- package/src/components/DropdownSelector/index.story.tsx +69 -13
- package/src/components/Icon/__snapshots__/index.story.storyshot +12 -0
- package/src/components/{Button/__snapshots__/index.test.tsx.snap → IconButton/__snapshots__/index.story.storyshot} +94 -91
- package/src/components/LoadingSpinner/__snapshots__/index.story.storyshot +81 -0
- package/src/components/Modal/Dialog/index.tsx +82 -0
- package/src/components/Modal/ModalBackgroundContext.tsx +8 -0
- package/src/components/Modal/ModalPlumbing.tsx +16 -4
- package/src/components/Modal/__snapshots__/index.story.storyshot +533 -0
- package/src/components/Modal/__stories__/InternalScrollStory.tsx +75 -0
- package/src/components/Modal/index.story.tsx +57 -38
- package/src/components/Modal/index.tsx +63 -94
- package/src/components/MultiSelect/__snapshots__/index.story.storyshot +511 -0
- package/src/components/Radio/__snapshots__/index.story.storyshot +319 -0
- package/src/components/SegmentedControl/__snapshots__/index.story.storyshot +483 -0
- package/src/components/Switch/__snapshots__/index.story.storyshot +454 -0
- package/src/components/TagItem/__snapshots__/index.story.storyshot +1181 -0
- package/src/components/TextArea/__snapshots__/TextArea.story.storyshot +1114 -0
- package/src/components/TextArea/index.tsx +38 -43
- package/src/components/TextField/TextField.story.tsx +2 -3
- package/src/components/TextField/__snapshots__/TextField.story.storyshot +1603 -0
- package/src/components/TextField/index.tsx +86 -84
- package/src/components/TextField/useFocusWithClick.tsx +22 -0
- package/dist/components/Button/index.test.d.ts +0 -4
- package/dist/components/Button/index.test.d.ts.map +0 -1
- package/src/components/Button/index.test.tsx +0 -24
package/dist/index.cjs.js
CHANGED
|
@@ -147,33 +147,33 @@ var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
|
147
147
|
var Clickable = React2.forwardRef(
|
|
148
148
|
function Clickable2(props, ref) {
|
|
149
149
|
const { Link } = useComponentAbstraction();
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
onClick: disabled ? void 0 : onClick,
|
|
158
|
-
"aria-disabled": disabled,
|
|
159
|
-
ref
|
|
160
|
-
}
|
|
161
|
-
);
|
|
162
|
-
} else {
|
|
163
|
-
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Button, { ...props, ref });
|
|
150
|
+
const isLink = "to" in props;
|
|
151
|
+
const as = isLink ? Link : "button";
|
|
152
|
+
const ariaDisabled = isLink && props.disabled === true ? true : void 0;
|
|
153
|
+
let rest = props;
|
|
154
|
+
if (isLink) {
|
|
155
|
+
const { disabled, ..._rest } = props;
|
|
156
|
+
rest = _rest;
|
|
164
157
|
}
|
|
158
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
159
|
+
StyledClickableDiv,
|
|
160
|
+
{
|
|
161
|
+
...rest,
|
|
162
|
+
ref,
|
|
163
|
+
as,
|
|
164
|
+
"aria-disabled": ariaDisabled
|
|
165
|
+
}
|
|
166
|
+
);
|
|
165
167
|
}
|
|
166
168
|
);
|
|
167
169
|
var Clickable_default = Clickable;
|
|
168
|
-
var
|
|
169
|
-
/* Clickable style */
|
|
170
|
+
var StyledClickableDiv = import_styled_components3.default.div`
|
|
170
171
|
cursor: pointer;
|
|
171
172
|
|
|
172
173
|
${import_utils.disabledSelector} {
|
|
173
174
|
cursor: default;
|
|
174
175
|
}
|
|
175
|
-
|
|
176
|
-
var Button = import_styled_components3.default.button`
|
|
176
|
+
|
|
177
177
|
/* Reset button appearance */
|
|
178
178
|
appearance: none;
|
|
179
179
|
background: transparent;
|
|
@@ -206,27 +206,11 @@ var Button = import_styled_components3.default.button`
|
|
|
206
206
|
border-style: none;
|
|
207
207
|
padding: 0;
|
|
208
208
|
}
|
|
209
|
-
|
|
210
|
-
${clickableCss}
|
|
211
|
-
`;
|
|
212
|
-
var A = import_styled_components3.default.span`
|
|
213
|
-
/* Reset a-tag appearance */
|
|
214
|
-
color: inherit;
|
|
215
|
-
|
|
216
|
-
&:focus {
|
|
217
|
-
outline: none;
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
.text {
|
|
221
|
-
top: calc(1em + 2em);
|
|
222
|
-
}
|
|
223
|
-
|
|
224
|
-
${clickableCss}
|
|
225
209
|
`;
|
|
226
210
|
|
|
227
211
|
// src/components/Button/index.tsx
|
|
228
212
|
var import_jsx_runtime4 = require("react/jsx-runtime");
|
|
229
|
-
var
|
|
213
|
+
var Button = (0, import_react2.forwardRef)(function Button2({
|
|
230
214
|
children,
|
|
231
215
|
variant = "Default",
|
|
232
216
|
size = "M",
|
|
@@ -247,7 +231,7 @@ var Button2 = (0, import_react2.forwardRef)(function Button3({
|
|
|
247
231
|
}
|
|
248
232
|
);
|
|
249
233
|
});
|
|
250
|
-
var Button_default =
|
|
234
|
+
var Button_default = Button;
|
|
251
235
|
var StyledButton = (0, import_styled_components4.default)(Clickable_default)`
|
|
252
236
|
width: ${(p) => p.$fullWidth ? "stretch" : "min-content"};
|
|
253
237
|
display: inline-grid;
|
|
@@ -865,7 +849,7 @@ var SwitchInput = import_styled_components8.default.input.attrs({
|
|
|
865
849
|
// src/components/TextField/index.tsx
|
|
866
850
|
var import_textfield = require("@react-aria/textfield");
|
|
867
851
|
var import_visually_hidden = require("@react-aria/visually-hidden");
|
|
868
|
-
var
|
|
852
|
+
var import_react9 = require("react");
|
|
869
853
|
var React5 = __toESM(require("react"));
|
|
870
854
|
var import_styled_components10 = __toESM(require("styled-components"));
|
|
871
855
|
|
|
@@ -919,10 +903,29 @@ var FieldLabelWrapper = import_styled_components9.default.div`
|
|
|
919
903
|
}
|
|
920
904
|
`;
|
|
921
905
|
|
|
906
|
+
// src/components/TextField/useFocusWithClick.tsx
|
|
907
|
+
var import_react8 = require("react");
|
|
908
|
+
function useFocusWithClick(containerRef, inputRef) {
|
|
909
|
+
(0, import_react8.useEffect)(() => {
|
|
910
|
+
const el = containerRef.current;
|
|
911
|
+
if (el) {
|
|
912
|
+
const handleDown = (e) => {
|
|
913
|
+
if (e.target !== inputRef.current) {
|
|
914
|
+
inputRef.current?.focus();
|
|
915
|
+
}
|
|
916
|
+
};
|
|
917
|
+
el.addEventListener("click", handleDown);
|
|
918
|
+
return () => {
|
|
919
|
+
el.removeEventListener("click", handleDown);
|
|
920
|
+
};
|
|
921
|
+
}
|
|
922
|
+
});
|
|
923
|
+
}
|
|
924
|
+
|
|
922
925
|
// src/components/TextField/index.tsx
|
|
923
926
|
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
924
927
|
var TextField = React5.forwardRef(
|
|
925
|
-
function SingleLineTextFieldInner({ onChange, ...props },
|
|
928
|
+
function SingleLineTextFieldInner({ onChange, ...props }, forwardRef18) {
|
|
926
929
|
const {
|
|
927
930
|
className,
|
|
928
931
|
showLabel = false,
|
|
@@ -939,16 +942,12 @@ var TextField = React5.forwardRef(
|
|
|
939
942
|
suffix = null
|
|
940
943
|
} = props;
|
|
941
944
|
const { visuallyHiddenProps } = (0, import_visually_hidden.useVisuallyHidden)();
|
|
942
|
-
const ariaRef = (0,
|
|
943
|
-
const
|
|
944
|
-
const suffixRef = (0, import_react8.useRef)(null);
|
|
945
|
-
const [count, setCount] = (0, import_react8.useState)(
|
|
945
|
+
const ariaRef = (0, import_react9.useRef)(null);
|
|
946
|
+
const [count, setCount] = (0, import_react9.useState)(
|
|
946
947
|
countCodePointsInString(props.value ?? "")
|
|
947
948
|
);
|
|
948
|
-
const [prefixWidth, setPrefixWidth] = (0, import_react8.useState)(0);
|
|
949
|
-
const [suffixWidth, setSuffixWidth] = (0, import_react8.useState)(0);
|
|
950
949
|
const nonControlled = props.value === void 0;
|
|
951
|
-
const handleChange = (0,
|
|
950
|
+
const handleChange = (0, import_react9.useCallback)(
|
|
952
951
|
(value) => {
|
|
953
952
|
const count2 = countCodePointsInString(value);
|
|
954
953
|
if (maxLength !== void 0 && count2 > maxLength) {
|
|
@@ -961,7 +960,7 @@ var TextField = React5.forwardRef(
|
|
|
961
960
|
},
|
|
962
961
|
[maxLength, nonControlled, onChange]
|
|
963
962
|
);
|
|
964
|
-
(0,
|
|
963
|
+
(0, import_react9.useEffect)(() => {
|
|
965
964
|
setCount(countCodePointsInString(props.value ?? ""));
|
|
966
965
|
}, [props.value]);
|
|
967
966
|
const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(
|
|
@@ -977,24 +976,8 @@ var TextField = React5.forwardRef(
|
|
|
977
976
|
},
|
|
978
977
|
ariaRef
|
|
979
978
|
);
|
|
980
|
-
(0,
|
|
981
|
-
|
|
982
|
-
setPrefixWidth(entries[0].contentRect.width);
|
|
983
|
-
});
|
|
984
|
-
const suffixObserver = new ResizeObserver((entries) => {
|
|
985
|
-
setSuffixWidth(entries[0].contentRect.width);
|
|
986
|
-
});
|
|
987
|
-
if (prefixRef.current !== null) {
|
|
988
|
-
prefixObserver.observe(prefixRef.current);
|
|
989
|
-
}
|
|
990
|
-
if (suffixRef.current !== null) {
|
|
991
|
-
suffixObserver.observe(suffixRef.current);
|
|
992
|
-
}
|
|
993
|
-
return () => {
|
|
994
|
-
suffixObserver.disconnect();
|
|
995
|
-
prefixObserver.disconnect();
|
|
996
|
-
};
|
|
997
|
-
}, []);
|
|
979
|
+
const containerRef = (0, import_react9.useRef)(null);
|
|
980
|
+
useFocusWithClick(containerRef, ariaRef);
|
|
998
981
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(TextFieldRoot, { className, isDisabled: disabled, children: [
|
|
999
982
|
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1000
983
|
TextFieldLabel,
|
|
@@ -1007,23 +990,31 @@ var TextField = React5.forwardRef(
|
|
|
1007
990
|
...!showLabel ? visuallyHiddenProps : {}
|
|
1008
991
|
}
|
|
1009
992
|
),
|
|
1010
|
-
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
993
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
994
|
+
StyledInputContainer,
|
|
995
|
+
{
|
|
996
|
+
ref: containerRef,
|
|
997
|
+
invalid,
|
|
998
|
+
"aria-disabled": disabled === true ? true : void 0,
|
|
999
|
+
hasPrefix: prefix != null,
|
|
1000
|
+
hasSuffix: suffix != null || showCount,
|
|
1001
|
+
children: [
|
|
1002
|
+
prefix && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(PrefixContainer, { children: prefix }),
|
|
1003
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1004
|
+
StyledInput,
|
|
1005
|
+
{
|
|
1006
|
+
ref: mergeRefs(forwardRef18, ariaRef),
|
|
1007
|
+
invalid,
|
|
1008
|
+
...inputProps
|
|
1009
|
+
}
|
|
1010
|
+
),
|
|
1011
|
+
(suffix || showCount) && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(SuffixContainer, { children: [
|
|
1012
|
+
suffix,
|
|
1013
|
+
showCount && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SingleLineCounter, { children: maxLength !== void 0 ? `${count}/${maxLength}` : count })
|
|
1014
|
+
] })
|
|
1015
|
+
]
|
|
1016
|
+
}
|
|
1017
|
+
),
|
|
1027
1018
|
assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
1028
1019
|
AssistiveText,
|
|
1029
1020
|
{
|
|
@@ -1043,34 +1034,53 @@ var TextFieldRoot = import_styled_components10.default.div`
|
|
|
1043
1034
|
${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}
|
|
1044
1035
|
`;
|
|
1045
1036
|
var TextFieldLabel = (0, import_styled_components10.default)(FieldLabel_default)`
|
|
1046
|
-
|
|
1037
|
+
margin-bottom: 8px;
|
|
1047
1038
|
`;
|
|
1048
1039
|
var StyledInputContainer = import_styled_components10.default.div`
|
|
1049
|
-
height: 40px;
|
|
1050
1040
|
display: grid;
|
|
1051
|
-
|
|
1041
|
+
grid-template-columns: ${(p) => [p.hasPrefix && "auto", "1fr", p.hasSuffix && "auto"].filter(Boolean).join(" ")};
|
|
1042
|
+
height: 40px;
|
|
1043
|
+
transition: 0.2s background-color, 0.2s box-shadow;
|
|
1044
|
+
color: var(--charcoal-text2);
|
|
1045
|
+
background-color: var(--charcoal-surface3);
|
|
1046
|
+
border-radius: 4px;
|
|
1047
|
+
gap: 4px;
|
|
1048
|
+
padding: 0 8px;
|
|
1049
|
+
line-height: 22px;
|
|
1050
|
+
font-size: 14px;
|
|
1051
|
+
|
|
1052
|
+
:not(:disabled):not([aria-disabled]):hover,
|
|
1053
|
+
[aria-disabled='false']:hover {
|
|
1054
|
+
background-color: var(--charcoal-surface3-hover);
|
|
1055
|
+
}
|
|
1056
|
+
|
|
1057
|
+
:not(:disabled):not([aria-disabled]):active,
|
|
1058
|
+
[aria-disabled='false']:active {
|
|
1059
|
+
outline: none;
|
|
1060
|
+
box-shadow: 0 0 0 4px
|
|
1061
|
+
${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
|
|
1062
|
+
}
|
|
1063
|
+
|
|
1064
|
+
:focus-within {
|
|
1065
|
+
outline: none;
|
|
1066
|
+
box-shadow: 0 0 0 4px
|
|
1067
|
+
${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
|
|
1068
|
+
}
|
|
1069
|
+
|
|
1070
|
+
${(p) => p.invalid && import_styled_components10.css`
|
|
1071
|
+
box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
|
|
1072
|
+
`}
|
|
1052
1073
|
`;
|
|
1053
|
-
var PrefixContainer = import_styled_components10.default.
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
transform: translateY(-50%);
|
|
1058
|
-
z-index: 1;
|
|
1074
|
+
var PrefixContainer = import_styled_components10.default.div`
|
|
1075
|
+
display: flex;
|
|
1076
|
+
padding-left: 8px;
|
|
1077
|
+
align-items: center;
|
|
1059
1078
|
`;
|
|
1060
1079
|
var SuffixContainer = import_styled_components10.default.span`
|
|
1061
|
-
position: absolute;
|
|
1062
|
-
top: 50%;
|
|
1063
|
-
right: 8px;
|
|
1064
|
-
transform: translateY(-50%);
|
|
1065
|
-
|
|
1066
1080
|
display: flex;
|
|
1081
|
+
align-items: center;
|
|
1067
1082
|
gap: 8px;
|
|
1068
1083
|
`;
|
|
1069
|
-
var Affix = import_styled_components10.default.span`
|
|
1070
|
-
user-select: none;
|
|
1071
|
-
|
|
1072
|
-
${theme((o) => [o.typography(14).preserveHalfLeading, o.font.text2])}
|
|
1073
|
-
`;
|
|
1074
1084
|
var StyledInput = import_styled_components10.default.input`
|
|
1075
1085
|
border: none;
|
|
1076
1086
|
box-sizing: border-box;
|
|
@@ -1084,44 +1094,40 @@ var StyledInput = import_styled_components10.default.input`
|
|
|
1084
1094
|
height: calc(100% / 0.875);
|
|
1085
1095
|
font-size: calc(14px / 0.875);
|
|
1086
1096
|
line-height: calc(22px / 0.875);
|
|
1087
|
-
padding-left:
|
|
1088
|
-
padding-right:
|
|
1097
|
+
padding-left: 0;
|
|
1098
|
+
padding-right: 0;
|
|
1089
1099
|
border-radius: calc(4px / 0.875);
|
|
1090
1100
|
|
|
1091
1101
|
/* Display box-shadow for iOS Safari */
|
|
1092
1102
|
appearance: none;
|
|
1103
|
+
background: transparent;
|
|
1093
1104
|
|
|
1094
|
-
|
|
1095
|
-
o.bg.surface3.hover,
|
|
1096
|
-
o.outline.default.focus,
|
|
1097
|
-
p.invalid && o.outline.assertive,
|
|
1098
|
-
o.font.text2
|
|
1099
|
-
])}
|
|
1100
|
-
|
|
1105
|
+
color: var(--charcoal-text2);
|
|
1101
1106
|
&::placeholder {
|
|
1102
|
-
|
|
1107
|
+
color: var(--charcoal-text3);
|
|
1103
1108
|
}
|
|
1104
1109
|
`;
|
|
1105
1110
|
var SingleLineCounter = import_styled_components10.default.span`
|
|
1106
|
-
|
|
1111
|
+
line-height: 22px;
|
|
1112
|
+
font-size: 14px;
|
|
1113
|
+
color: var(--charcoal-text3);
|
|
1107
1114
|
`;
|
|
1108
1115
|
var AssistiveText = import_styled_components10.default.p`
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
])}
|
|
1116
|
+
font-size: 14px;
|
|
1117
|
+
line-height: 22px;
|
|
1118
|
+
margin-top: 4px;
|
|
1119
|
+
margin-bottom: -4px;
|
|
1120
|
+
color: ${(p) => `var(--charcoal-${p.invalid ? `assertive` : `text2`})`};
|
|
1115
1121
|
`;
|
|
1116
1122
|
|
|
1117
1123
|
// src/components/TextArea/index.tsx
|
|
1118
1124
|
var import_textfield2 = require("@react-aria/textfield");
|
|
1119
1125
|
var import_visually_hidden2 = require("@react-aria/visually-hidden");
|
|
1120
|
-
var
|
|
1126
|
+
var import_react10 = require("react");
|
|
1121
1127
|
var import_styled_components11 = __toESM(require("styled-components"));
|
|
1122
1128
|
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
1123
|
-
var TextArea = (0,
|
|
1124
|
-
function TextAreaInner({ onChange, ...props },
|
|
1129
|
+
var TextArea = (0, import_react10.forwardRef)(
|
|
1130
|
+
function TextAreaInner({ onChange, ...props }, forwardRef18) {
|
|
1125
1131
|
const {
|
|
1126
1132
|
className,
|
|
1127
1133
|
showCount = false,
|
|
@@ -1138,13 +1144,13 @@ var TextArea = (0, import_react9.forwardRef)(
|
|
|
1138
1144
|
rows: initialRows = 4
|
|
1139
1145
|
} = props;
|
|
1140
1146
|
const { visuallyHiddenProps } = (0, import_visually_hidden2.useVisuallyHidden)();
|
|
1141
|
-
const textareaRef = (0,
|
|
1142
|
-
const ariaRef = (0,
|
|
1143
|
-
const [count, setCount] = (0,
|
|
1147
|
+
const textareaRef = (0, import_react10.useRef)(null);
|
|
1148
|
+
const ariaRef = (0, import_react10.useRef)(null);
|
|
1149
|
+
const [count, setCount] = (0, import_react10.useState)(
|
|
1144
1150
|
countCodePointsInString(props.value ?? "")
|
|
1145
1151
|
);
|
|
1146
|
-
const [rows, setRows] = (0,
|
|
1147
|
-
const syncHeight = (0,
|
|
1152
|
+
const [rows, setRows] = (0, import_react10.useState)(initialRows);
|
|
1153
|
+
const syncHeight = (0, import_react10.useCallback)(
|
|
1148
1154
|
(textarea) => {
|
|
1149
1155
|
const rows2 = (`${textarea.value}
|
|
1150
1156
|
`.match(/\n/gu)?.length ?? 0) || 1;
|
|
@@ -1153,7 +1159,7 @@ var TextArea = (0, import_react9.forwardRef)(
|
|
|
1153
1159
|
[initialRows]
|
|
1154
1160
|
);
|
|
1155
1161
|
const nonControlled = props.value === void 0;
|
|
1156
|
-
const handleChange = (0,
|
|
1162
|
+
const handleChange = (0, import_react10.useCallback)(
|
|
1157
1163
|
(value) => {
|
|
1158
1164
|
const count2 = countCodePointsInString(value);
|
|
1159
1165
|
if (maxLength !== void 0 && count2 > maxLength) {
|
|
@@ -1169,7 +1175,7 @@ var TextArea = (0, import_react9.forwardRef)(
|
|
|
1169
1175
|
},
|
|
1170
1176
|
[autoHeight, maxLength, nonControlled, onChange, syncHeight]
|
|
1171
1177
|
);
|
|
1172
|
-
(0,
|
|
1178
|
+
(0, import_react10.useEffect)(() => {
|
|
1173
1179
|
setCount(countCodePointsInString(props.value ?? ""));
|
|
1174
1180
|
}, [props.value]);
|
|
1175
1181
|
const { inputProps, labelProps, descriptionProps, errorMessageProps } = (0, import_textfield2.useTextField)(
|
|
@@ -1185,14 +1191,16 @@ var TextArea = (0, import_react9.forwardRef)(
|
|
|
1185
1191
|
},
|
|
1186
1192
|
ariaRef
|
|
1187
1193
|
);
|
|
1188
|
-
(0,
|
|
1194
|
+
(0, import_react10.useEffect)(() => {
|
|
1189
1195
|
if (autoHeight && textareaRef.current !== null) {
|
|
1190
1196
|
syncHeight(textareaRef.current);
|
|
1191
1197
|
}
|
|
1192
1198
|
}, [autoHeight, syncHeight]);
|
|
1199
|
+
const containerRef = (0, import_react10.useRef)(null);
|
|
1200
|
+
useFocusWithClick(containerRef, ariaRef);
|
|
1193
1201
|
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(TextFieldRoot2, { className, isDisabled: disabled, children: [
|
|
1194
1202
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1195
|
-
|
|
1203
|
+
TextFieldLabel,
|
|
1196
1204
|
{
|
|
1197
1205
|
label,
|
|
1198
1206
|
requiredText,
|
|
@@ -1205,13 +1213,15 @@ var TextArea = (0, import_react9.forwardRef)(
|
|
|
1205
1213
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
1206
1214
|
StyledTextareaContainer,
|
|
1207
1215
|
{
|
|
1216
|
+
ref: containerRef,
|
|
1208
1217
|
invalid,
|
|
1209
1218
|
rows: showCount ? rows + 1 : rows,
|
|
1219
|
+
"aria-disabled": disabled === true ? "true" : void 0,
|
|
1210
1220
|
children: [
|
|
1211
1221
|
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1212
1222
|
StyledTextarea,
|
|
1213
1223
|
{
|
|
1214
|
-
ref: mergeRefs(textareaRef,
|
|
1224
|
+
ref: mergeRefs(textareaRef, forwardRef18, ariaRef),
|
|
1215
1225
|
rows,
|
|
1216
1226
|
noBottomPadding: showCount,
|
|
1217
1227
|
...inputProps
|
|
@@ -1222,7 +1232,7 @@ var TextArea = (0, import_react9.forwardRef)(
|
|
|
1222
1232
|
}
|
|
1223
1233
|
),
|
|
1224
1234
|
assistiveText != null && assistiveText.length !== 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
1225
|
-
|
|
1235
|
+
AssistiveText,
|
|
1226
1236
|
{
|
|
1227
1237
|
invalid,
|
|
1228
1238
|
...invalid ? errorMessageProps : descriptionProps,
|
|
@@ -1239,29 +1249,32 @@ var TextFieldRoot2 = import_styled_components11.default.div`
|
|
|
1239
1249
|
|
|
1240
1250
|
${(p) => p.isDisabled && { opacity: p.theme.elementEffect.disabled.opacity }}
|
|
1241
1251
|
`;
|
|
1242
|
-
var TextFieldLabel2 = (0, import_styled_components11.default)(FieldLabel_default)`
|
|
1243
|
-
${theme((o) => o.margin.bottom(8))}
|
|
1244
|
-
`;
|
|
1245
1252
|
var StyledTextareaContainer = import_styled_components11.default.div`
|
|
1246
1253
|
position: relative;
|
|
1247
1254
|
overflow: hidden;
|
|
1248
|
-
padding: 0 8px;
|
|
1249
|
-
|
|
1250
|
-
${(p) => theme((o) => [
|
|
1251
|
-
o.bg.surface3.hover,
|
|
1252
|
-
o.outline.default.focus,
|
|
1253
|
-
p.invalid && o.outline.assertive,
|
|
1254
|
-
o.font.text2,
|
|
1255
|
-
o.borderRadius(4)
|
|
1256
|
-
])}
|
|
1257
1255
|
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1256
|
+
color: var(--charcoal-text2);
|
|
1257
|
+
background-color: var(--charcoal-surface3);
|
|
1258
|
+
border-radius: 4px;
|
|
1259
|
+
transition: 0.2s background-color, 0.2s box-shadow;
|
|
1261
1260
|
|
|
1262
1261
|
${({ rows }) => import_styled_components11.css`
|
|
1263
1262
|
height: calc(22px * ${rows} + 18px);
|
|
1264
1263
|
`};
|
|
1264
|
+
|
|
1265
|
+
:not([aria-disabled]):hover,
|
|
1266
|
+
[aria-disabled='false']:hover {
|
|
1267
|
+
background-color: var(--charcoal-surface3-hover);
|
|
1268
|
+
}
|
|
1269
|
+
:focus-within {
|
|
1270
|
+
outline: none;
|
|
1271
|
+
box-shadow: 0 0 0 4px
|
|
1272
|
+
${(p) => p.invalid ? `rgba(255,43,0,0.32)` : `rgba(0, 150, 250, 0.32);`};
|
|
1273
|
+
}
|
|
1274
|
+
|
|
1275
|
+
${(p) => p.invalid && import_styled_components11.css`
|
|
1276
|
+
box-shadow: 0 0 0 4px rgba(255, 43, 0, 0.32);
|
|
1277
|
+
`}
|
|
1265
1278
|
`;
|
|
1266
1279
|
var StyledTextarea = import_styled_components11.default.textarea`
|
|
1267
1280
|
border: none;
|
|
@@ -1269,6 +1282,7 @@ var StyledTextarea = import_styled_components11.default.textarea`
|
|
|
1269
1282
|
resize: none;
|
|
1270
1283
|
font-family: inherit;
|
|
1271
1284
|
color: inherit;
|
|
1285
|
+
box-sizing: border-box;
|
|
1272
1286
|
|
|
1273
1287
|
/* Prevent zooming for iOS Safari */
|
|
1274
1288
|
transform-origin: top left;
|
|
@@ -1276,10 +1290,11 @@ var StyledTextarea = import_styled_components11.default.textarea`
|
|
|
1276
1290
|
width: calc(100% / 0.875);
|
|
1277
1291
|
font-size: calc(14px / 0.875);
|
|
1278
1292
|
line-height: calc(22px / 0.875);
|
|
1279
|
-
padding: calc(9px / 0.875)
|
|
1293
|
+
padding: calc(9px / 0.875) calc(8px / 0.875)
|
|
1294
|
+
${(p) => p.noBottomPadding ? 0 : ""};
|
|
1280
1295
|
|
|
1281
|
-
${({ rows = 1 }) => import_styled_components11.css`
|
|
1282
|
-
height: calc(22px / 0.875 * ${rows});
|
|
1296
|
+
${({ rows = 1, noBottomPadding }) => import_styled_components11.css`
|
|
1297
|
+
height: calc(22px / 0.875 * ${rows} + ${noBottomPadding ? 9 : 20}px);
|
|
1283
1298
|
`};
|
|
1284
1299
|
|
|
1285
1300
|
/* Display box-shadow for iOS Safari */
|
|
@@ -1288,31 +1303,17 @@ var StyledTextarea = import_styled_components11.default.textarea`
|
|
|
1288
1303
|
background: none;
|
|
1289
1304
|
|
|
1290
1305
|
&::placeholder {
|
|
1291
|
-
|
|
1306
|
+
color: var(--charcoal-text3);
|
|
1292
1307
|
}
|
|
1293
|
-
|
|
1294
|
-
/* Hide scrollbar for Chrome, Safari and Opera */
|
|
1295
|
-
&::-webkit-scrollbar {
|
|
1296
|
-
display: none;
|
|
1297
|
-
}
|
|
1298
|
-
/* Hide scrollbar for IE, Edge and Firefox */
|
|
1299
|
-
-ms-overflow-style: none; /* IE and Edge */
|
|
1300
|
-
scrollbar-width: none; /* Firefox */
|
|
1301
1308
|
`;
|
|
1302
1309
|
var MultiLineCounter = import_styled_components11.default.span`
|
|
1303
1310
|
position: absolute;
|
|
1304
1311
|
bottom: 9px;
|
|
1305
1312
|
right: 8px;
|
|
1306
1313
|
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
var
|
|
1310
|
-
${(p) => theme((o) => [
|
|
1311
|
-
o.typography(14),
|
|
1312
|
-
o.margin.top(8),
|
|
1313
|
-
o.margin.bottom(0),
|
|
1314
|
-
o.font[p.invalid ? "assertive" : "text1"]
|
|
1315
|
-
])}
|
|
1314
|
+
line-height: 22px;
|
|
1315
|
+
font-size: 14px;
|
|
1316
|
+
color: var(--charcoal-text3);
|
|
1316
1317
|
`;
|
|
1317
1318
|
|
|
1318
1319
|
// src/components/Icon/index.tsx
|
|
@@ -1335,11 +1336,18 @@ var Icon = React6.forwardRef(function IconInner({ name, scale, unsafeNonGuidelin
|
|
|
1335
1336
|
var Icon_default = Icon;
|
|
1336
1337
|
|
|
1337
1338
|
// src/components/Modal/index.tsx
|
|
1338
|
-
var
|
|
1339
|
-
var
|
|
1339
|
+
var import_react12 = require("react");
|
|
1340
|
+
var React9 = __toESM(require("react"));
|
|
1340
1341
|
var import_overlays2 = require("@react-aria/overlays");
|
|
1342
|
+
var import_styled_components13 = __toESM(require("styled-components"));
|
|
1343
|
+
var import_utils7 = require("@charcoal-ui/utils");
|
|
1344
|
+
var import_styled10 = require("@charcoal-ui/styled");
|
|
1345
|
+
var import_react_spring2 = require("react-spring");
|
|
1346
|
+
var import_utils8 = require("@react-aria/utils");
|
|
1347
|
+
|
|
1348
|
+
// src/components/Modal/Dialog/index.tsx
|
|
1349
|
+
var import_react11 = require("react");
|
|
1341
1350
|
var import_styled_components12 = __toESM(require("styled-components"));
|
|
1342
|
-
var import_focus = require("@react-aria/focus");
|
|
1343
1351
|
var import_dialog = require("@react-aria/dialog");
|
|
1344
1352
|
|
|
1345
1353
|
// ../foundation/src/grid.ts
|
|
@@ -1349,14 +1357,100 @@ function columnSystem(span, column, gutter) {
|
|
|
1349
1357
|
return span * column + (span - 1) * gutter;
|
|
1350
1358
|
}
|
|
1351
1359
|
|
|
1352
|
-
// src/components/Modal/index.tsx
|
|
1360
|
+
// src/components/Modal/Dialog/index.tsx
|
|
1353
1361
|
var import_utils6 = require("@charcoal-ui/utils");
|
|
1354
|
-
var import_styled12 = require("@charcoal-ui/styled");
|
|
1355
1362
|
var import_react_spring = require("react-spring");
|
|
1356
|
-
|
|
1363
|
+
|
|
1364
|
+
// src/_lib/useForwardedRef.tsx
|
|
1365
|
+
var React7 = __toESM(require("react"));
|
|
1366
|
+
function useForwardedRef(ref) {
|
|
1367
|
+
const innerRef = React7.useRef(null);
|
|
1368
|
+
React7.useEffect(() => {
|
|
1369
|
+
if (!ref)
|
|
1370
|
+
return;
|
|
1371
|
+
if (typeof ref === "function") {
|
|
1372
|
+
ref(innerRef.current);
|
|
1373
|
+
} else {
|
|
1374
|
+
ref.current = innerRef.current;
|
|
1375
|
+
}
|
|
1376
|
+
});
|
|
1377
|
+
return innerRef;
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
// src/components/Modal/Dialog/index.tsx
|
|
1357
1381
|
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
1382
|
+
var Dialog = (0, import_react11.forwardRef)(function Dialog2(props, forwardRef18) {
|
|
1383
|
+
const ref = useForwardedRef(forwardRef18);
|
|
1384
|
+
const { dialogProps } = (0, import_dialog.useDialog)(
|
|
1385
|
+
{
|
|
1386
|
+
role: "dialog"
|
|
1387
|
+
},
|
|
1388
|
+
ref
|
|
1389
|
+
);
|
|
1390
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
1391
|
+
AnimatedStyledDialogDiv,
|
|
1392
|
+
{
|
|
1393
|
+
...props,
|
|
1394
|
+
role: dialogProps.role,
|
|
1395
|
+
tabIndex: dialogProps.tabIndex,
|
|
1396
|
+
"aria-labelledby": dialogProps["aria-labelledby"],
|
|
1397
|
+
onBlur: dialogProps.onBlur,
|
|
1398
|
+
ref
|
|
1399
|
+
}
|
|
1400
|
+
);
|
|
1401
|
+
});
|
|
1402
|
+
var AnimatedStyledDialogDiv = (0, import_react_spring.animated)(import_styled_components12.default.div`
|
|
1403
|
+
margin: auto;
|
|
1404
|
+
position: relative;
|
|
1405
|
+
height: fit-content;
|
|
1406
|
+
width: ${(p) => {
|
|
1407
|
+
switch (p.size) {
|
|
1408
|
+
case "S": {
|
|
1409
|
+
return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1410
|
+
}
|
|
1411
|
+
case "M": {
|
|
1412
|
+
return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1413
|
+
}
|
|
1414
|
+
case "L": {
|
|
1415
|
+
return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1416
|
+
}
|
|
1417
|
+
default: {
|
|
1418
|
+
return unreachable(p.size);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
}}px;
|
|
1422
|
+
|
|
1423
|
+
background-color: ${({ theme: theme3 }) => theme3.color.background1};
|
|
1424
|
+
border-radius: 24px;
|
|
1425
|
+
|
|
1426
|
+
@media ${({ theme: theme3 }) => (0, import_utils6.maxWidth)(theme3.breakpoint.screen1)} {
|
|
1427
|
+
max-width: 440px;
|
|
1428
|
+
width: calc(100% - 48px);
|
|
1429
|
+
${(p) => p.bottomSheet !== false && import_styled_components12.css`
|
|
1430
|
+
max-width: unset;
|
|
1431
|
+
width: 100%;
|
|
1432
|
+
border-radius: 0;
|
|
1433
|
+
margin: auto 0 0 0;
|
|
1434
|
+
${p.bottomSheet === "full" && import_styled_components12.css`
|
|
1435
|
+
min-height: 100%;
|
|
1436
|
+
`}
|
|
1437
|
+
`}
|
|
1438
|
+
}
|
|
1439
|
+
:focus {
|
|
1440
|
+
outline: none;
|
|
1441
|
+
}
|
|
1442
|
+
`);
|
|
1443
|
+
|
|
1444
|
+
// src/components/Modal/ModalBackgroundContext.tsx
|
|
1445
|
+
var React8 = __toESM(require("react"));
|
|
1446
|
+
var ModalBackgroundContext = React8.createContext(
|
|
1447
|
+
null
|
|
1448
|
+
);
|
|
1449
|
+
|
|
1450
|
+
// src/components/Modal/index.tsx
|
|
1451
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
1358
1452
|
var DEFAULT_Z_INDEX = 10;
|
|
1359
|
-
var Modal = (0,
|
|
1453
|
+
var Modal = (0, import_react12.forwardRef)(function ModalInner({ children, zIndex = DEFAULT_Z_INDEX, portalContainer, ...props }, external) {
|
|
1360
1454
|
const {
|
|
1361
1455
|
title,
|
|
1362
1456
|
size = "M",
|
|
@@ -1366,9 +1460,8 @@ var Modal = (0, import_react10.forwardRef)(function ModalInner({ children, zInde
|
|
|
1366
1460
|
className,
|
|
1367
1461
|
isOpen = false
|
|
1368
1462
|
} = props;
|
|
1369
|
-
const ref = (0,
|
|
1370
|
-
const {
|
|
1371
|
-
const { modalProps } = (0, import_overlays2.useModalOverlay)(
|
|
1463
|
+
const ref = (0, import_utils8.useObjectRef)(external);
|
|
1464
|
+
const { modalProps, underlayProps } = (0, import_overlays2.useModalOverlay)(
|
|
1372
1465
|
props,
|
|
1373
1466
|
{
|
|
1374
1467
|
close: onClose,
|
|
@@ -1382,51 +1475,62 @@ var Modal = (0, import_react10.forwardRef)(function ModalInner({ children, zInde
|
|
|
1382
1475
|
},
|
|
1383
1476
|
ref
|
|
1384
1477
|
);
|
|
1385
|
-
const
|
|
1386
|
-
const
|
|
1387
|
-
const isMobile = (0, import_styled12.useMedia)((0, import_utils6.maxWidth)(theme3.breakpoint.screen1)) ?? false;
|
|
1478
|
+
const theme3 = (0, import_styled_components13.useTheme)();
|
|
1479
|
+
const isMobile = (0, import_styled10.useMedia)((0, import_utils7.maxWidth)(theme3.breakpoint.screen1)) ?? false;
|
|
1388
1480
|
const transitionEnabled = isMobile && bottomSheet !== false;
|
|
1389
|
-
const
|
|
1481
|
+
const showDismiss = !isMobile || bottomSheet !== true;
|
|
1482
|
+
const transition = (0, import_react_spring2.useTransition)(isOpen, {
|
|
1390
1483
|
from: {
|
|
1391
1484
|
transform: "translateY(100%)",
|
|
1392
|
-
backgroundColor: "rgba(0, 0, 0, 0)"
|
|
1485
|
+
backgroundColor: "rgba(0, 0, 0, 0)",
|
|
1486
|
+
overflow: "hidden"
|
|
1393
1487
|
},
|
|
1394
1488
|
enter: {
|
|
1395
1489
|
transform: "translateY(0%)",
|
|
1396
1490
|
backgroundColor: "rgba(0, 0, 0, 0.4)"
|
|
1397
1491
|
},
|
|
1492
|
+
update: {
|
|
1493
|
+
overflow: "auto"
|
|
1494
|
+
},
|
|
1398
1495
|
leave: {
|
|
1399
1496
|
transform: "translateY(100%)",
|
|
1400
|
-
backgroundColor: "rgba(0, 0, 0, 0)"
|
|
1497
|
+
backgroundColor: "rgba(0, 0, 0, 0)",
|
|
1498
|
+
overflow: "hidden"
|
|
1401
1499
|
},
|
|
1402
|
-
config: transitionEnabled ? { duration: 400, easing:
|
|
1500
|
+
config: transitionEnabled ? { duration: 400, easing: import_react_spring2.easings.easeOutQuart } : { duration: 0 }
|
|
1403
1501
|
});
|
|
1404
|
-
const
|
|
1502
|
+
const bgRef = React9.useRef(null);
|
|
1405
1503
|
return transition(
|
|
1406
|
-
({ backgroundColor, transform }, item) => item && /* @__PURE__ */ (0,
|
|
1504
|
+
({ backgroundColor, overflow, transform }, item) => item && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_overlays2.Overlay, { portalContainer, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1407
1505
|
ModalBackground,
|
|
1408
1506
|
{
|
|
1507
|
+
ref: bgRef,
|
|
1409
1508
|
zIndex,
|
|
1410
1509
|
...underlayProps,
|
|
1411
|
-
style: transitionEnabled ? { backgroundColor } : {},
|
|
1412
|
-
|
|
1413
|
-
|
|
1510
|
+
style: transitionEnabled ? { backgroundColor, overflow } : {},
|
|
1511
|
+
$bottomSheet: bottomSheet,
|
|
1512
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ModalBackgroundContext.Provider, { value: bgRef.current, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1513
|
+
Dialog,
|
|
1414
1514
|
{
|
|
1415
1515
|
ref,
|
|
1416
|
-
...overlayProps,
|
|
1417
1516
|
...modalProps,
|
|
1418
|
-
...dialogProps,
|
|
1419
1517
|
style: transitionEnabled ? { transform } : {},
|
|
1420
1518
|
size,
|
|
1421
1519
|
bottomSheet,
|
|
1422
1520
|
className,
|
|
1423
|
-
children: /* @__PURE__ */ (0,
|
|
1521
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
1424
1522
|
ModalContext.Provider,
|
|
1425
1523
|
{
|
|
1426
|
-
value: {
|
|
1524
|
+
value: {
|
|
1525
|
+
titleProps: {},
|
|
1526
|
+
title,
|
|
1527
|
+
close: onClose,
|
|
1528
|
+
showDismiss,
|
|
1529
|
+
bottomSheet
|
|
1530
|
+
},
|
|
1427
1531
|
children: [
|
|
1428
1532
|
children,
|
|
1429
|
-
isDismissable === true && /* @__PURE__ */ (0,
|
|
1533
|
+
isDismissable === true && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
1430
1534
|
ModalCrossButton,
|
|
1431
1535
|
{
|
|
1432
1536
|
size: "S",
|
|
@@ -1438,78 +1542,42 @@ var Modal = (0, import_react10.forwardRef)(function ModalInner({ children, zInde
|
|
|
1438
1542
|
}
|
|
1439
1543
|
)
|
|
1440
1544
|
}
|
|
1441
|
-
) })
|
|
1545
|
+
) })
|
|
1442
1546
|
}
|
|
1443
1547
|
) })
|
|
1444
1548
|
);
|
|
1445
1549
|
});
|
|
1446
|
-
var Modal_default = (0,
|
|
1447
|
-
var ModalContext =
|
|
1550
|
+
var Modal_default = (0, import_react12.memo)(Modal);
|
|
1551
|
+
var ModalContext = React9.createContext({
|
|
1448
1552
|
titleProps: {},
|
|
1449
1553
|
title: "",
|
|
1450
1554
|
close: void 0,
|
|
1451
|
-
showDismiss: true
|
|
1555
|
+
showDismiss: true,
|
|
1556
|
+
bottomSheet: false
|
|
1452
1557
|
});
|
|
1453
|
-
var ModalBackground = (0,
|
|
1558
|
+
var ModalBackground = (0, import_react_spring2.animated)(import_styled_components13.default.div`
|
|
1454
1559
|
z-index: ${({ zIndex }) => zIndex};
|
|
1455
1560
|
overflow: auto;
|
|
1456
1561
|
display: flex;
|
|
1457
1562
|
position: fixed;
|
|
1458
1563
|
top: 0;
|
|
1459
1564
|
left: 0;
|
|
1460
|
-
width:
|
|
1565
|
+
width: -webkit-fill-available;
|
|
1566
|
+
width: -moz-available;
|
|
1461
1567
|
height: 100%;
|
|
1568
|
+
justify-content: center;
|
|
1569
|
+
padding: 40px 0;
|
|
1570
|
+
box-sizing: border-box;
|
|
1462
1571
|
|
|
1463
|
-
${theme
|
|
1464
|
-
`);
|
|
1465
|
-
var DialogContainer = import_styled_components12.default.div`
|
|
1466
|
-
position: relative;
|
|
1467
|
-
margin: auto;
|
|
1468
|
-
padding: 24px 0;
|
|
1469
|
-
width: ${(p) => {
|
|
1470
|
-
switch (p.size) {
|
|
1471
|
-
case "S": {
|
|
1472
|
-
return columnSystem(3, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1473
|
-
}
|
|
1474
|
-
case "M": {
|
|
1475
|
-
return columnSystem(4, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1476
|
-
}
|
|
1477
|
-
case "L": {
|
|
1478
|
-
return columnSystem(6, COLUMN_UNIT, GUTTER_UNIT) + GUTTER_UNIT * 2;
|
|
1479
|
-
}
|
|
1480
|
-
default: {
|
|
1481
|
-
return unreachable(p.size);
|
|
1482
|
-
}
|
|
1483
|
-
}
|
|
1484
|
-
}}px;
|
|
1572
|
+
background-color: ${({ theme: theme3 }) => theme3.color.surface4};
|
|
1485
1573
|
|
|
1486
|
-
@media ${({ theme: theme3 }) => (0,
|
|
1487
|
-
|
|
1488
|
-
${(p) => p.bottomSheet !== false && import_styled_components12.css`
|
|
1489
|
-
margin: 0;
|
|
1574
|
+
@media ${({ theme: theme3 }) => (0, import_utils7.maxWidth)(theme3.breakpoint.screen1)} {
|
|
1575
|
+
${(p) => p.$bottomSheet !== false && import_styled_components13.css`
|
|
1490
1576
|
padding: 0;
|
|
1491
|
-
bottom: 0;
|
|
1492
|
-
position: absolute;
|
|
1493
|
-
width: 100%;
|
|
1494
|
-
${p.bottomSheet === "full" ? "height: 100%" : ""};
|
|
1495
|
-
`}
|
|
1496
|
-
}
|
|
1497
|
-
`;
|
|
1498
|
-
var ModalDialog = (0, import_react_spring.animated)(import_styled_components12.default.div`
|
|
1499
|
-
position: relative;
|
|
1500
|
-
margin: auto;
|
|
1501
|
-
|
|
1502
|
-
${theme((o) => [o.bg.background1, o.borderRadius(24)])}
|
|
1503
|
-
@media ${({ theme: theme3 }) => (0, import_utils6.maxWidth)(theme3.breakpoint.screen1)} {
|
|
1504
|
-
${(p) => p.bottomSheet !== false && import_styled_components12.css`
|
|
1505
|
-
border-radius: 0;
|
|
1506
|
-
${p.bottomSheet === "full" && import_styled_components12.css`
|
|
1507
|
-
height: 100%;
|
|
1508
|
-
`}
|
|
1509
1577
|
`}
|
|
1510
1578
|
}
|
|
1511
1579
|
`);
|
|
1512
|
-
var ModalCrossButton = (0,
|
|
1580
|
+
var ModalCrossButton = (0, import_styled_components13.default)(IconButton_default)`
|
|
1513
1581
|
position: absolute;
|
|
1514
1582
|
top: 8px;
|
|
1515
1583
|
right: 8px;
|
|
@@ -1517,37 +1585,45 @@ var ModalCrossButton = (0, import_styled_components12.default)(IconButton_defaul
|
|
|
1517
1585
|
${theme((o) => [o.font.text3.hover.press])}
|
|
1518
1586
|
`;
|
|
1519
1587
|
function ModalTitle(props) {
|
|
1520
|
-
const { titleProps, title } = (0,
|
|
1521
|
-
return /* @__PURE__ */ (0,
|
|
1588
|
+
const { titleProps, title } = (0, import_react12.useContext)(ModalContext);
|
|
1589
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(ModalHeading, { ...titleProps, ...props, children: title });
|
|
1522
1590
|
}
|
|
1523
|
-
var ModalHeading =
|
|
1591
|
+
var ModalHeading = import_styled_components13.default.h3`
|
|
1524
1592
|
margin: 0;
|
|
1525
1593
|
font-weight: inherit;
|
|
1526
1594
|
font-size: inherit;
|
|
1527
1595
|
`;
|
|
1528
1596
|
|
|
1529
1597
|
// src/components/Modal/ModalPlumbing.tsx
|
|
1530
|
-
var
|
|
1531
|
-
var
|
|
1598
|
+
var import_styled_components14 = __toESM(require("styled-components"));
|
|
1599
|
+
var import_react13 = require("react");
|
|
1600
|
+
var import_utils9 = require("@charcoal-ui/utils");
|
|
1601
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
1532
1602
|
function ModalHeader() {
|
|
1533
|
-
|
|
1603
|
+
const modalCtx = (0, import_react13.useContext)(ModalContext);
|
|
1604
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(ModalHeaderRoot, { $bottomSheet: modalCtx.bottomSheet, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(StyledModalTitle, {}) });
|
|
1534
1605
|
}
|
|
1535
|
-
var ModalHeaderRoot =
|
|
1606
|
+
var ModalHeaderRoot = import_styled_components14.default.div`
|
|
1536
1607
|
height: 64px;
|
|
1537
1608
|
display: grid;
|
|
1538
1609
|
align-content: center;
|
|
1539
1610
|
justify-content: center;
|
|
1611
|
+
@media ${({ theme: theme3 }) => (0, import_utils9.maxWidth)(theme3.breakpoint.screen1)} {
|
|
1612
|
+
${(p) => p.$bottomSheet !== false && import_styled_components14.css`
|
|
1613
|
+
height: 48px;
|
|
1614
|
+
`}
|
|
1615
|
+
}
|
|
1540
1616
|
`;
|
|
1541
|
-
var StyledModalTitle = (0,
|
|
1617
|
+
var StyledModalTitle = (0, import_styled_components14.default)(ModalTitle)`
|
|
1542
1618
|
${theme((o) => [o.font.text1, o.typography(16).bold])}
|
|
1543
1619
|
`;
|
|
1544
|
-
var ModalAlign =
|
|
1620
|
+
var ModalAlign = import_styled_components14.default.div`
|
|
1545
1621
|
${theme((o) => [o.padding.horizontal(16)])}
|
|
1546
1622
|
`;
|
|
1547
|
-
var ModalBody =
|
|
1623
|
+
var ModalBody = import_styled_components14.default.div`
|
|
1548
1624
|
${theme((o) => [o.padding.bottom(40)])}
|
|
1549
1625
|
`;
|
|
1550
|
-
var ModalButtons =
|
|
1626
|
+
var ModalButtons = import_styled_components14.default.div`
|
|
1551
1627
|
display: grid;
|
|
1552
1628
|
grid-auto-flow: row;
|
|
1553
1629
|
grid-row-gap: 8px;
|
|
@@ -1556,12 +1632,12 @@ var ModalButtons = import_styled_components13.default.div`
|
|
|
1556
1632
|
`;
|
|
1557
1633
|
|
|
1558
1634
|
// src/components/LoadingSpinner/index.tsx
|
|
1559
|
-
var
|
|
1560
|
-
var
|
|
1561
|
-
var
|
|
1562
|
-
var LoadingSpinner = (0,
|
|
1635
|
+
var import_react14 = require("react");
|
|
1636
|
+
var import_styled_components15 = __toESM(require("styled-components"));
|
|
1637
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
1638
|
+
var LoadingSpinner = (0, import_react14.forwardRef)(
|
|
1563
1639
|
function LoadingSpinnerInner({ size = 48, padding = 16, transparent = false, className }, ref) {
|
|
1564
|
-
return /* @__PURE__ */ (0,
|
|
1640
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
1565
1641
|
LoadingSpinnerRoot,
|
|
1566
1642
|
{
|
|
1567
1643
|
size,
|
|
@@ -1569,13 +1645,13 @@ var LoadingSpinner = (0, import_react11.forwardRef)(
|
|
|
1569
1645
|
transparent,
|
|
1570
1646
|
className,
|
|
1571
1647
|
ref,
|
|
1572
|
-
children: /* @__PURE__ */ (0,
|
|
1648
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(LoadingSpinnerIcon, {})
|
|
1573
1649
|
}
|
|
1574
1650
|
);
|
|
1575
1651
|
}
|
|
1576
1652
|
);
|
|
1577
|
-
var LoadingSpinner_default = (0,
|
|
1578
|
-
var LoadingSpinnerRoot =
|
|
1653
|
+
var LoadingSpinner_default = (0, import_react14.memo)(LoadingSpinner);
|
|
1654
|
+
var LoadingSpinnerRoot = import_styled_components15.default.div.attrs({ role: "progressbar" })`
|
|
1579
1655
|
box-sizing: content-box;
|
|
1580
1656
|
margin: auto;
|
|
1581
1657
|
padding: ${(props) => props.padding}px;
|
|
@@ -1589,7 +1665,7 @@ var LoadingSpinnerRoot = import_styled_components14.default.div.attrs({ role: "p
|
|
|
1589
1665
|
transparent ? o.bg.transparent : o.bg.background1
|
|
1590
1666
|
])}
|
|
1591
1667
|
`;
|
|
1592
|
-
var scaleOut =
|
|
1668
|
+
var scaleOut = import_styled_components15.keyframes`
|
|
1593
1669
|
from {
|
|
1594
1670
|
transform: scale(0);
|
|
1595
1671
|
opacity: 1;
|
|
@@ -1600,7 +1676,7 @@ var scaleOut = import_styled_components14.keyframes`
|
|
|
1600
1676
|
opacity: 0;
|
|
1601
1677
|
}
|
|
1602
1678
|
`;
|
|
1603
|
-
var Icon2 =
|
|
1679
|
+
var Icon2 = import_styled_components15.default.div.attrs({ role: "presentation" })`
|
|
1604
1680
|
width: 1em;
|
|
1605
1681
|
height: 1em;
|
|
1606
1682
|
border-radius: 1em;
|
|
@@ -1612,10 +1688,10 @@ var Icon2 = import_styled_components14.default.div.attrs({ role: "presentation"
|
|
|
1612
1688
|
animation: none;
|
|
1613
1689
|
}
|
|
1614
1690
|
`;
|
|
1615
|
-
var LoadingSpinnerIcon = (0,
|
|
1691
|
+
var LoadingSpinnerIcon = (0, import_react14.forwardRef)(
|
|
1616
1692
|
function LoadingSpinnerIcon2({ once = false }, ref) {
|
|
1617
|
-
const iconRef = (0,
|
|
1618
|
-
(0,
|
|
1693
|
+
const iconRef = (0, import_react14.useRef)(null);
|
|
1694
|
+
(0, import_react14.useImperativeHandle)(ref, () => ({
|
|
1619
1695
|
restart: () => {
|
|
1620
1696
|
if (!iconRef.current) {
|
|
1621
1697
|
return;
|
|
@@ -1625,26 +1701,45 @@ var LoadingSpinnerIcon = (0, import_react11.forwardRef)(
|
|
|
1625
1701
|
delete iconRef.current.dataset.resetAnimation;
|
|
1626
1702
|
}
|
|
1627
1703
|
}));
|
|
1628
|
-
return /* @__PURE__ */ (0,
|
|
1704
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Icon2, { ref: iconRef, once });
|
|
1629
1705
|
}
|
|
1630
1706
|
);
|
|
1631
1707
|
|
|
1632
1708
|
// src/components/DropdownSelector/index.tsx
|
|
1633
|
-
var
|
|
1634
|
-
var
|
|
1635
|
-
var
|
|
1709
|
+
var import_react20 = require("react");
|
|
1710
|
+
var import_styled_components18 = __toESM(require("styled-components"));
|
|
1711
|
+
var import_utils10 = require("@charcoal-ui/utils");
|
|
1636
1712
|
|
|
1637
1713
|
// src/components/DropdownSelector/DropdownPopover.tsx
|
|
1638
|
-
var
|
|
1714
|
+
var import_react17 = require("react");
|
|
1639
1715
|
|
|
1640
1716
|
// src/components/DropdownSelector/Popover/index.tsx
|
|
1641
|
-
var
|
|
1717
|
+
var import_react16 = require("react");
|
|
1642
1718
|
var import_overlays3 = require("@react-aria/overlays");
|
|
1643
|
-
var
|
|
1644
|
-
|
|
1719
|
+
var import_styled_components16 = __toESM(require("styled-components"));
|
|
1720
|
+
|
|
1721
|
+
// src/components/DropdownSelector/Popover/usePreventScroll.tsx
|
|
1722
|
+
var import_react15 = require("react");
|
|
1723
|
+
function usePreventScroll(element, isOpen) {
|
|
1724
|
+
(0, import_react15.useEffect)(() => {
|
|
1725
|
+
if (isOpen && element) {
|
|
1726
|
+
const defaultPaddingRight = element.style.paddingRight;
|
|
1727
|
+
const defaultOverflow = element.style.overflow;
|
|
1728
|
+
element.style.paddingRight = `${window.innerWidth - element.clientWidth}px`;
|
|
1729
|
+
element.style.overflow = "hidden";
|
|
1730
|
+
return () => {
|
|
1731
|
+
element.style.paddingRight = defaultPaddingRight;
|
|
1732
|
+
element.style.overflow = defaultOverflow;
|
|
1733
|
+
};
|
|
1734
|
+
}
|
|
1735
|
+
}, [element, isOpen]);
|
|
1736
|
+
}
|
|
1737
|
+
|
|
1738
|
+
// src/components/DropdownSelector/Popover/index.tsx
|
|
1739
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
1645
1740
|
var _empty = () => null;
|
|
1646
1741
|
function Popover(props) {
|
|
1647
|
-
const defaultPopoverRef = (0,
|
|
1742
|
+
const defaultPopoverRef = (0, import_react16.useRef)(null);
|
|
1648
1743
|
const finalPopoverRef = props.popoverRef === void 0 ? defaultPopoverRef : props.popoverRef;
|
|
1649
1744
|
const { popoverProps, underlayProps } = (0, import_overlays3.usePopover)(
|
|
1650
1745
|
{
|
|
@@ -1660,18 +1755,30 @@ function Popover(props) {
|
|
|
1660
1755
|
toggle: _empty
|
|
1661
1756
|
}
|
|
1662
1757
|
);
|
|
1758
|
+
const modalBackground = (0, import_react16.useContext)(ModalBackgroundContext);
|
|
1759
|
+
usePreventScroll(modalBackground, props.isOpen);
|
|
1663
1760
|
if (!props.isOpen)
|
|
1664
1761
|
return null;
|
|
1665
|
-
return /* @__PURE__ */ (0,
|
|
1666
|
-
/* @__PURE__ */ (0,
|
|
1667
|
-
|
|
1668
|
-
|
|
1762
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_overlays3.Overlay, { portalContainer: document.body, children: [
|
|
1763
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
1764
|
+
"div",
|
|
1765
|
+
{
|
|
1766
|
+
...underlayProps,
|
|
1767
|
+
style: {
|
|
1768
|
+
position: "fixed",
|
|
1769
|
+
zIndex: typeof popoverProps.style?.zIndex === "number" ? popoverProps.style.zIndex - 1 : 99999,
|
|
1770
|
+
inset: 0
|
|
1771
|
+
}
|
|
1772
|
+
}
|
|
1773
|
+
),
|
|
1774
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(DropdownPopoverDiv, { ...popoverProps, ref: finalPopoverRef, children: [
|
|
1775
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_overlays3.DismissButton, { onDismiss: () => props.onClose() }),
|
|
1669
1776
|
props.children,
|
|
1670
|
-
/* @__PURE__ */ (0,
|
|
1777
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_overlays3.DismissButton, { onDismiss: () => props.onClose() })
|
|
1671
1778
|
] })
|
|
1672
1779
|
] });
|
|
1673
1780
|
}
|
|
1674
|
-
var DropdownPopoverDiv =
|
|
1781
|
+
var DropdownPopoverDiv = import_styled_components16.default.div`
|
|
1675
1782
|
margin: 4px 0;
|
|
1676
1783
|
list-style: none;
|
|
1677
1784
|
overflow: auto;
|
|
@@ -1686,27 +1793,26 @@ var DropdownPopoverDiv = import_styled_components15.default.div`
|
|
|
1686
1793
|
`;
|
|
1687
1794
|
|
|
1688
1795
|
// src/components/DropdownSelector/DropdownPopover.tsx
|
|
1689
|
-
var
|
|
1796
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
1690
1797
|
function DropdownPopover({ children, ...props }) {
|
|
1691
|
-
const ref = (0,
|
|
1692
|
-
(0,
|
|
1798
|
+
const ref = (0, import_react17.useRef)(null);
|
|
1799
|
+
(0, import_react17.useEffect)(() => {
|
|
1693
1800
|
if (props.isOpen && ref.current && props.triggerRef.current) {
|
|
1694
1801
|
ref.current.style.width = `${props.triggerRef.current.clientWidth}px`;
|
|
1695
1802
|
}
|
|
1696
1803
|
}, [props.triggerRef, props.isOpen]);
|
|
1697
|
-
(0,
|
|
1804
|
+
(0, import_react17.useEffect)(() => {
|
|
1698
1805
|
if (props.isOpen && props.value !== void 0) {
|
|
1699
1806
|
const windowScrollY = window.scrollY;
|
|
1700
1807
|
const windowScrollX = window.scrollX;
|
|
1701
1808
|
const selectedElement = document.querySelector(
|
|
1702
1809
|
`[data-key="${props.value.toString()}"]`
|
|
1703
1810
|
);
|
|
1704
|
-
selectedElement?.scrollIntoView({ block: "center" });
|
|
1705
1811
|
selectedElement?.focus();
|
|
1706
1812
|
window.scrollTo(windowScrollX, windowScrollY);
|
|
1707
1813
|
}
|
|
1708
1814
|
}, [props.value, props.isOpen]);
|
|
1709
|
-
return /* @__PURE__ */ (0,
|
|
1815
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
1710
1816
|
Popover,
|
|
1711
1817
|
{
|
|
1712
1818
|
isOpen: props.isOpen,
|
|
@@ -1719,12 +1825,12 @@ function DropdownPopover({ children, ...props }) {
|
|
|
1719
1825
|
}
|
|
1720
1826
|
|
|
1721
1827
|
// src/components/DropdownSelector/utils/findPreviewRecursive.tsx
|
|
1722
|
-
var
|
|
1828
|
+
var React10 = __toESM(require("react"));
|
|
1723
1829
|
function findPreviewRecursive(children, value) {
|
|
1724
|
-
const childArray =
|
|
1830
|
+
const childArray = React10.Children.toArray(children);
|
|
1725
1831
|
for (let i = 0; i < childArray.length; i++) {
|
|
1726
1832
|
const child = childArray[i];
|
|
1727
|
-
if (
|
|
1833
|
+
if (React10.isValidElement(child)) {
|
|
1728
1834
|
if ("value" in child.props) {
|
|
1729
1835
|
const childValue = child.props.value;
|
|
1730
1836
|
if (childValue === value && "children" in child.props) {
|
|
@@ -1746,12 +1852,12 @@ function findPreviewRecursive(children, value) {
|
|
|
1746
1852
|
}
|
|
1747
1853
|
|
|
1748
1854
|
// src/components/DropdownSelector/MenuList/index.tsx
|
|
1749
|
-
var
|
|
1750
|
-
var
|
|
1855
|
+
var import_react19 = require("react");
|
|
1856
|
+
var import_styled_components17 = __toESM(require("styled-components"));
|
|
1751
1857
|
|
|
1752
1858
|
// src/components/DropdownSelector/MenuList/MenuListContext.ts
|
|
1753
|
-
var
|
|
1754
|
-
var MenuListContext = (0,
|
|
1859
|
+
var import_react18 = require("react");
|
|
1860
|
+
var MenuListContext = (0, import_react18.createContext)({
|
|
1755
1861
|
root: void 0,
|
|
1756
1862
|
value: "",
|
|
1757
1863
|
values: [],
|
|
@@ -1760,12 +1866,12 @@ var MenuListContext = (0, import_react14.createContext)({
|
|
|
1760
1866
|
});
|
|
1761
1867
|
|
|
1762
1868
|
// src/components/DropdownSelector/MenuList/internals/getValuesRecursive.tsx
|
|
1763
|
-
var
|
|
1869
|
+
var React11 = __toESM(require("react"));
|
|
1764
1870
|
function getValuesRecursive(children, values = []) {
|
|
1765
|
-
const childArray =
|
|
1871
|
+
const childArray = React11.Children.toArray(children);
|
|
1766
1872
|
for (let i = 0; i < childArray.length; i++) {
|
|
1767
1873
|
const child = childArray[i];
|
|
1768
|
-
if (
|
|
1874
|
+
if (React11.isValidElement(child)) {
|
|
1769
1875
|
const props = child.props;
|
|
1770
1876
|
if ("value" in props && typeof props.value === "string") {
|
|
1771
1877
|
const childValue = props.value;
|
|
@@ -1779,12 +1885,12 @@ function getValuesRecursive(children, values = []) {
|
|
|
1779
1885
|
}
|
|
1780
1886
|
|
|
1781
1887
|
// src/components/DropdownSelector/MenuList/index.tsx
|
|
1782
|
-
var
|
|
1888
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
1783
1889
|
function MenuList(props) {
|
|
1784
|
-
const root = (0,
|
|
1890
|
+
const root = (0, import_react19.useRef)(null);
|
|
1785
1891
|
const values = [];
|
|
1786
1892
|
getValuesRecursive(props.children, values);
|
|
1787
|
-
return /* @__PURE__ */ (0,
|
|
1893
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(StyledUl, { ref: root, children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
1788
1894
|
MenuListContext.Provider,
|
|
1789
1895
|
{
|
|
1790
1896
|
value: {
|
|
@@ -1799,20 +1905,20 @@ function MenuList(props) {
|
|
|
1799
1905
|
}
|
|
1800
1906
|
) });
|
|
1801
1907
|
}
|
|
1802
|
-
var StyledUl =
|
|
1908
|
+
var StyledUl = import_styled_components17.default.ul`
|
|
1803
1909
|
padding: 0;
|
|
1804
1910
|
margin: 0;
|
|
1805
1911
|
`;
|
|
1806
1912
|
|
|
1807
1913
|
// src/components/DropdownSelector/index.tsx
|
|
1808
|
-
var
|
|
1914
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
1809
1915
|
var defaultRequiredText = "*\u5FC5\u9808";
|
|
1810
1916
|
function DropdownSelector(props) {
|
|
1811
|
-
const triggerRef = (0,
|
|
1812
|
-
const [isOpen, setIsOpen] = (0,
|
|
1917
|
+
const triggerRef = (0, import_react20.useRef)(null);
|
|
1918
|
+
const [isOpen, setIsOpen] = (0, import_react20.useState)(false);
|
|
1813
1919
|
const preview = findPreviewRecursive(props.children, props.value);
|
|
1814
|
-
return /* @__PURE__ */ (0,
|
|
1815
|
-
props.showLabel === true && /* @__PURE__ */ (0,
|
|
1920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(DropdownSelectorRoot, { "aria-disabled": props.disabled, children: [
|
|
1921
|
+
props.showLabel === true && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1816
1922
|
DropdownFieldLabel,
|
|
1817
1923
|
{
|
|
1818
1924
|
label: props.label,
|
|
@@ -1821,7 +1927,7 @@ function DropdownSelector(props) {
|
|
|
1821
1927
|
subLabel: props.subLabel
|
|
1822
1928
|
}
|
|
1823
1929
|
),
|
|
1824
|
-
/* @__PURE__ */ (0,
|
|
1930
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
1825
1931
|
DropdownButton,
|
|
1826
1932
|
{
|
|
1827
1933
|
invalid: props.invalid,
|
|
@@ -1834,19 +1940,19 @@ function DropdownSelector(props) {
|
|
|
1834
1940
|
ref: triggerRef,
|
|
1835
1941
|
type: "button",
|
|
1836
1942
|
children: [
|
|
1837
|
-
/* @__PURE__ */ (0,
|
|
1838
|
-
/* @__PURE__ */ (0,
|
|
1943
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownButtonText, { children: props.placeholder !== void 0 && preview === void 0 ? props.placeholder : preview }),
|
|
1944
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(DropdownButtonIcon, { name: "16/Menu" })
|
|
1839
1945
|
]
|
|
1840
1946
|
}
|
|
1841
1947
|
),
|
|
1842
|
-
isOpen && /* @__PURE__ */ (0,
|
|
1948
|
+
isOpen && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1843
1949
|
DropdownPopover,
|
|
1844
1950
|
{
|
|
1845
1951
|
isOpen,
|
|
1846
1952
|
onClose: () => setIsOpen(false),
|
|
1847
1953
|
triggerRef,
|
|
1848
1954
|
value: props.value,
|
|
1849
|
-
children: /* @__PURE__ */ (0,
|
|
1955
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
1850
1956
|
MenuList,
|
|
1851
1957
|
{
|
|
1852
1958
|
value: props.value,
|
|
@@ -1859,24 +1965,24 @@ function DropdownSelector(props) {
|
|
|
1859
1965
|
)
|
|
1860
1966
|
}
|
|
1861
1967
|
),
|
|
1862
|
-
props.assistiveText !== void 0 && /* @__PURE__ */ (0,
|
|
1968
|
+
props.assistiveText !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(AssertiveText, { invalid: props.invalid, children: props.assistiveText })
|
|
1863
1969
|
] });
|
|
1864
1970
|
}
|
|
1865
|
-
var DropdownSelectorRoot =
|
|
1971
|
+
var DropdownSelectorRoot = import_styled_components18.default.div`
|
|
1866
1972
|
display: inline-block;
|
|
1867
1973
|
width: 100%;
|
|
1868
1974
|
|
|
1869
|
-
${
|
|
1975
|
+
${import_utils10.disabledSelector} {
|
|
1870
1976
|
cursor: default;
|
|
1871
1977
|
${theme((o) => o.disabled)}
|
|
1872
1978
|
}
|
|
1873
1979
|
`;
|
|
1874
|
-
var DropdownFieldLabel = (0,
|
|
1980
|
+
var DropdownFieldLabel = (0, import_styled_components18.default)(FieldLabel_default)`
|
|
1875
1981
|
width: 100%;
|
|
1876
1982
|
|
|
1877
1983
|
${theme((o) => o.margin.bottom(8))}
|
|
1878
1984
|
`;
|
|
1879
|
-
var DropdownButton =
|
|
1985
|
+
var DropdownButton = import_styled_components18.default.button`
|
|
1880
1986
|
display: flex;
|
|
1881
1987
|
justify-content: space-between;
|
|
1882
1988
|
align-items: center;
|
|
@@ -1887,7 +1993,7 @@ var DropdownButton = import_styled_components17.default.button`
|
|
|
1887
1993
|
border: none;
|
|
1888
1994
|
cursor: pointer;
|
|
1889
1995
|
|
|
1890
|
-
${
|
|
1996
|
+
${import_utils10.disabledSelector} {
|
|
1891
1997
|
cursor: default;
|
|
1892
1998
|
}
|
|
1893
1999
|
|
|
@@ -1899,15 +2005,15 @@ var DropdownButton = import_styled_components17.default.button`
|
|
|
1899
2005
|
invalid === true && o.outline.assertive
|
|
1900
2006
|
])}
|
|
1901
2007
|
`;
|
|
1902
|
-
var DropdownButtonText =
|
|
2008
|
+
var DropdownButtonText = import_styled_components18.default.span`
|
|
1903
2009
|
text-align: left;
|
|
1904
2010
|
|
|
1905
2011
|
${theme((o) => [o.typography(14), o.font.text2])}
|
|
1906
2012
|
`;
|
|
1907
|
-
var DropdownButtonIcon = (0,
|
|
2013
|
+
var DropdownButtonIcon = (0, import_styled_components18.default)(Icon_default)`
|
|
1908
2014
|
${theme((o) => [o.font.text2])}
|
|
1909
2015
|
`;
|
|
1910
|
-
var AssertiveText =
|
|
2016
|
+
var AssertiveText = import_styled_components18.default.div`
|
|
1911
2017
|
${({ invalid }) => theme((o) => [
|
|
1912
2018
|
o.typography(14),
|
|
1913
2019
|
o.margin.top(8),
|
|
@@ -1916,19 +2022,19 @@ var AssertiveText = import_styled_components17.default.div`
|
|
|
1916
2022
|
`;
|
|
1917
2023
|
|
|
1918
2024
|
// src/components/DropdownSelector/DropdownMenuItem.tsx
|
|
1919
|
-
var
|
|
2025
|
+
var import_styled_components20 = __toESM(require("styled-components"));
|
|
1920
2026
|
|
|
1921
2027
|
// src/components/DropdownSelector/ListItem/index.tsx
|
|
1922
|
-
var
|
|
1923
|
-
var
|
|
2028
|
+
var import_styled_components19 = __toESM(require("styled-components"));
|
|
2029
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
1924
2030
|
function ListItem(props) {
|
|
1925
2031
|
const { children, ...rest } = props;
|
|
1926
|
-
return /* @__PURE__ */ (0,
|
|
2032
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(StyledLi, { role: "option", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ItemDiv, { ...rest, children: props.children }) });
|
|
1927
2033
|
}
|
|
1928
|
-
var StyledLi =
|
|
2034
|
+
var StyledLi = import_styled_components19.default.li`
|
|
1929
2035
|
list-style: none;
|
|
1930
2036
|
`;
|
|
1931
|
-
var ItemDiv =
|
|
2037
|
+
var ItemDiv = import_styled_components19.default.div`
|
|
1932
2038
|
display: flex;
|
|
1933
2039
|
align-items: center;
|
|
1934
2040
|
min-height: 40px;
|
|
@@ -1949,7 +2055,7 @@ var ItemDiv = import_styled_components18.default.div`
|
|
|
1949
2055
|
`;
|
|
1950
2056
|
|
|
1951
2057
|
// src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
|
|
1952
|
-
var
|
|
2058
|
+
var import_react21 = require("react");
|
|
1953
2059
|
|
|
1954
2060
|
// src/components/DropdownSelector/MenuItem/internals/handleFocusByKeyBoard.tsx
|
|
1955
2061
|
function handleFocusByKeyBoard(element, parent) {
|
|
@@ -1982,12 +2088,12 @@ function scrollIfNeeded(element) {
|
|
|
1982
2088
|
|
|
1983
2089
|
// src/components/DropdownSelector/MenuItem/internals/useMenuItemHandleKeyDown.tsx
|
|
1984
2090
|
function useMenuItemHandleKeyDown(value) {
|
|
1985
|
-
const { setValue, root, values } = (0,
|
|
1986
|
-
const setContextValue = (0,
|
|
2091
|
+
const { setValue, root, values } = (0, import_react21.useContext)(MenuListContext);
|
|
2092
|
+
const setContextValue = (0, import_react21.useCallback)(() => {
|
|
1987
2093
|
if (value !== void 0)
|
|
1988
2094
|
setValue(value);
|
|
1989
2095
|
}, [value, setValue]);
|
|
1990
|
-
const handleKeyDown = (0,
|
|
2096
|
+
const handleKeyDown = (0, import_react21.useCallback)(
|
|
1991
2097
|
(e) => {
|
|
1992
2098
|
if (e.key === "Enter") {
|
|
1993
2099
|
setContextValue();
|
|
@@ -2014,11 +2120,11 @@ function useMenuItemHandleKeyDown(value) {
|
|
|
2014
2120
|
}
|
|
2015
2121
|
|
|
2016
2122
|
// src/components/DropdownSelector/MenuItem/index.tsx
|
|
2017
|
-
var
|
|
2123
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
2018
2124
|
function MenuItem(props) {
|
|
2019
2125
|
const { children, as, ...rest } = props;
|
|
2020
2126
|
const [handleKeyDown, setContextValue] = useMenuItemHandleKeyDown(props.value);
|
|
2021
|
-
return /* @__PURE__ */ (0,
|
|
2127
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)(
|
|
2022
2128
|
ListItem,
|
|
2023
2129
|
{
|
|
2024
2130
|
...rest,
|
|
@@ -2034,85 +2140,85 @@ function MenuItem(props) {
|
|
|
2034
2140
|
}
|
|
2035
2141
|
|
|
2036
2142
|
// src/components/DropdownSelector/DropdownMenuItem.tsx
|
|
2037
|
-
var
|
|
2038
|
-
var
|
|
2143
|
+
var import_react22 = require("react");
|
|
2144
|
+
var import_jsx_runtime23 = require("react/jsx-runtime");
|
|
2039
2145
|
function DropdownMenuItem(props) {
|
|
2040
|
-
const { value: ctxValue } = (0,
|
|
2146
|
+
const { value: ctxValue } = (0, import_react22.useContext)(MenuListContext);
|
|
2041
2147
|
const isSelected = props.value === ctxValue;
|
|
2042
2148
|
const { children, ...rest } = props;
|
|
2043
|
-
return /* @__PURE__ */ (0,
|
|
2044
|
-
isSelected && /* @__PURE__ */ (0,
|
|
2045
|
-
/* @__PURE__ */ (0,
|
|
2149
|
+
return /* @__PURE__ */ (0, import_jsx_runtime23.jsxs)(MenuItem, { ...rest, children: [
|
|
2150
|
+
isSelected && /* @__PURE__ */ (0, import_jsx_runtime23.jsx)(Text2ColorIcon, { name: "16/Check" }),
|
|
2151
|
+
/* @__PURE__ */ (0, import_jsx_runtime23.jsx)(StyledSpan, { isSelected, children: props.children })
|
|
2046
2152
|
] });
|
|
2047
2153
|
}
|
|
2048
|
-
var StyledSpan =
|
|
2154
|
+
var StyledSpan = import_styled_components20.default.span`
|
|
2049
2155
|
${theme((o) => [o.typography(14), o.font.text2])};
|
|
2050
2156
|
display: flex;
|
|
2051
2157
|
align-items: center;
|
|
2052
2158
|
width: 100%;
|
|
2053
2159
|
margin-left: ${({ isSelected }) => isSelected === true ? 0 : 20}px;
|
|
2054
2160
|
`;
|
|
2055
|
-
var Text2ColorIcon = (0,
|
|
2161
|
+
var Text2ColorIcon = (0, import_styled_components20.default)(Icon_default)`
|
|
2056
2162
|
${theme((o) => [o.font.text2])}
|
|
2057
2163
|
padding-right: 4px;
|
|
2058
2164
|
`;
|
|
2059
2165
|
|
|
2060
2166
|
// src/components/DropdownSelector/MenuItemGroup/index.tsx
|
|
2061
|
-
var
|
|
2062
|
-
var
|
|
2167
|
+
var import_styled_components21 = __toESM(require("styled-components"));
|
|
2168
|
+
var import_jsx_runtime24 = require("react/jsx-runtime");
|
|
2063
2169
|
function MenuItemGroup(props) {
|
|
2064
|
-
return /* @__PURE__ */ (0,
|
|
2065
|
-
/* @__PURE__ */ (0,
|
|
2066
|
-
/* @__PURE__ */ (0,
|
|
2170
|
+
return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(StyledLi2, { role: "presentation", children: [
|
|
2171
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(TextSpan, { children: props.text }),
|
|
2172
|
+
/* @__PURE__ */ (0, import_jsx_runtime24.jsx)(StyledUl2, { role: "group", children: props.children })
|
|
2067
2173
|
] });
|
|
2068
2174
|
}
|
|
2069
|
-
var TextSpan =
|
|
2175
|
+
var TextSpan = import_styled_components21.default.span`
|
|
2070
2176
|
display: block;
|
|
2071
2177
|
color: ${({ theme: theme3 }) => theme3.color.text3};
|
|
2072
2178
|
font-size: 12px;
|
|
2073
2179
|
font-weight: bold;
|
|
2074
2180
|
padding: 12px 0 8px 16px;
|
|
2075
2181
|
`;
|
|
2076
|
-
var StyledUl2 =
|
|
2182
|
+
var StyledUl2 = import_styled_components21.default.ul`
|
|
2077
2183
|
padding-left: 0;
|
|
2078
2184
|
margin: 0;
|
|
2079
2185
|
box-sizing: border-box;
|
|
2080
2186
|
list-style: none;
|
|
2081
2187
|
overflow: hidden;
|
|
2082
2188
|
`;
|
|
2083
|
-
var StyledLi2 =
|
|
2189
|
+
var StyledLi2 = import_styled_components21.default.li`
|
|
2084
2190
|
display: block;
|
|
2085
2191
|
`;
|
|
2086
2192
|
|
|
2087
2193
|
// src/components/SegmentedControl/index.tsx
|
|
2088
|
-
var
|
|
2194
|
+
var import_react24 = require("react");
|
|
2089
2195
|
var import_react_stately2 = require("react-stately");
|
|
2090
2196
|
var import_radio = require("@react-aria/radio");
|
|
2091
|
-
var
|
|
2092
|
-
var
|
|
2197
|
+
var import_styled_components22 = __toESM(require("styled-components"));
|
|
2198
|
+
var import_utils11 = require("@charcoal-ui/utils");
|
|
2093
2199
|
|
|
2094
2200
|
// src/components/SegmentedControl/RadioGroupContext.tsx
|
|
2095
|
-
var
|
|
2096
|
-
var
|
|
2097
|
-
var RadioContext = (0,
|
|
2201
|
+
var import_react23 = require("react");
|
|
2202
|
+
var import_jsx_runtime25 = require("react/jsx-runtime");
|
|
2203
|
+
var RadioContext = (0, import_react23.createContext)(null);
|
|
2098
2204
|
var RadioProvider = ({
|
|
2099
2205
|
value,
|
|
2100
2206
|
children
|
|
2101
2207
|
}) => {
|
|
2102
|
-
return /* @__PURE__ */ (0,
|
|
2208
|
+
return /* @__PURE__ */ (0, import_jsx_runtime25.jsx)(RadioContext.Provider, { value, children });
|
|
2103
2209
|
};
|
|
2104
2210
|
var useRadioContext = () => {
|
|
2105
|
-
const state = (0,
|
|
2211
|
+
const state = (0, import_react23.useContext)(RadioContext);
|
|
2106
2212
|
if (state === null)
|
|
2107
2213
|
throw new Error("`<RadioProvider>` is not likely mounted.");
|
|
2108
2214
|
return state;
|
|
2109
2215
|
};
|
|
2110
2216
|
|
|
2111
2217
|
// src/components/SegmentedControl/index.tsx
|
|
2112
|
-
var
|
|
2113
|
-
var SegmentedControl = (0,
|
|
2218
|
+
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
2219
|
+
var SegmentedControl = (0, import_react24.forwardRef)(
|
|
2114
2220
|
function SegmentedControlInner(props, ref) {
|
|
2115
|
-
const ariaRadioGroupProps = (0,
|
|
2221
|
+
const ariaRadioGroupProps = (0, import_react24.useMemo)(
|
|
2116
2222
|
() => ({
|
|
2117
2223
|
...props,
|
|
2118
2224
|
isDisabled: props.disabled,
|
|
@@ -2124,18 +2230,18 @@ var SegmentedControl = (0, import_react20.forwardRef)(
|
|
|
2124
2230
|
);
|
|
2125
2231
|
const state = (0, import_react_stately2.useRadioGroupState)(ariaRadioGroupProps);
|
|
2126
2232
|
const { radioGroupProps } = (0, import_radio.useRadioGroup)(ariaRadioGroupProps, state);
|
|
2127
|
-
const segmentedControlItems = (0,
|
|
2233
|
+
const segmentedControlItems = (0, import_react24.useMemo)(() => {
|
|
2128
2234
|
return props.data.map(
|
|
2129
2235
|
(d) => typeof d === "string" ? { value: d, label: d } : d
|
|
2130
2236
|
);
|
|
2131
2237
|
}, [props.data]);
|
|
2132
|
-
return /* @__PURE__ */ (0,
|
|
2238
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2133
2239
|
SegmentedControlRoot,
|
|
2134
2240
|
{
|
|
2135
2241
|
ref,
|
|
2136
2242
|
...radioGroupProps,
|
|
2137
2243
|
className: props.className,
|
|
2138
|
-
children: /* @__PURE__ */ (0,
|
|
2244
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadioProvider, { value: state, children: segmentedControlItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
|
|
2139
2245
|
Segmented,
|
|
2140
2246
|
{
|
|
2141
2247
|
value: item.value,
|
|
@@ -2148,11 +2254,11 @@ var SegmentedControl = (0, import_react20.forwardRef)(
|
|
|
2148
2254
|
);
|
|
2149
2255
|
}
|
|
2150
2256
|
);
|
|
2151
|
-
var SegmentedControl_default = (0,
|
|
2257
|
+
var SegmentedControl_default = (0, import_react24.memo)(SegmentedControl);
|
|
2152
2258
|
var Segmented = (props) => {
|
|
2153
2259
|
const state = useRadioContext();
|
|
2154
|
-
const ref = (0,
|
|
2155
|
-
const ariaRadioProps = (0,
|
|
2260
|
+
const ref = (0, import_react24.useRef)(null);
|
|
2261
|
+
const ariaRadioProps = (0, import_react24.useMemo)(
|
|
2156
2262
|
() => ({
|
|
2157
2263
|
value: props.value,
|
|
2158
2264
|
isDisabled: props.disabled,
|
|
@@ -2165,32 +2271,32 @@ var Segmented = (props) => {
|
|
|
2165
2271
|
state,
|
|
2166
2272
|
ref
|
|
2167
2273
|
);
|
|
2168
|
-
return /* @__PURE__ */ (0,
|
|
2274
|
+
return /* @__PURE__ */ (0, import_jsx_runtime26.jsxs)(
|
|
2169
2275
|
SegmentedRoot,
|
|
2170
2276
|
{
|
|
2171
2277
|
"aria-disabled": isDisabled || state.isReadOnly,
|
|
2172
2278
|
checked: isSelected,
|
|
2173
2279
|
children: [
|
|
2174
|
-
/* @__PURE__ */ (0,
|
|
2175
|
-
/* @__PURE__ */ (0,
|
|
2280
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SegmentedInput, { ...inputProps, ref }),
|
|
2281
|
+
/* @__PURE__ */ (0, import_jsx_runtime26.jsx)(RadioLabel2, { children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(SegmentedLabelInner, { children: props.children }) })
|
|
2176
2282
|
]
|
|
2177
2283
|
}
|
|
2178
2284
|
);
|
|
2179
2285
|
};
|
|
2180
|
-
var SegmentedControlRoot =
|
|
2286
|
+
var SegmentedControlRoot = import_styled_components22.default.div`
|
|
2181
2287
|
display: inline-flex;
|
|
2182
2288
|
align-items: center;
|
|
2183
2289
|
|
|
2184
2290
|
${theme((o) => [o.bg.surface3, o.borderRadius(16)])}
|
|
2185
2291
|
`;
|
|
2186
|
-
var SegmentedRoot =
|
|
2292
|
+
var SegmentedRoot = import_styled_components22.default.label`
|
|
2187
2293
|
position: relative;
|
|
2188
2294
|
display: flex;
|
|
2189
2295
|
align-items: center;
|
|
2190
2296
|
cursor: pointer;
|
|
2191
2297
|
height: 32px;
|
|
2192
2298
|
|
|
2193
|
-
${
|
|
2299
|
+
${import_utils11.disabledSelector} {
|
|
2194
2300
|
cursor: default;
|
|
2195
2301
|
}
|
|
2196
2302
|
|
|
@@ -2202,7 +2308,7 @@ var SegmentedRoot = import_styled_components21.default.label`
|
|
|
2202
2308
|
checked === true ? o.font.text5 : o.font.text2
|
|
2203
2309
|
])}
|
|
2204
2310
|
`;
|
|
2205
|
-
var SegmentedInput =
|
|
2311
|
+
var SegmentedInput = import_styled_components22.default.input`
|
|
2206
2312
|
position: absolute;
|
|
2207
2313
|
|
|
2208
2314
|
height: 0px;
|
|
@@ -2216,27 +2322,27 @@ var SegmentedInput = import_styled_components21.default.input`
|
|
|
2216
2322
|
white-space: nowrap;
|
|
2217
2323
|
opacity: 0;
|
|
2218
2324
|
`;
|
|
2219
|
-
var RadioLabel2 =
|
|
2325
|
+
var RadioLabel2 = import_styled_components22.default.div`
|
|
2220
2326
|
background: transparent;
|
|
2221
2327
|
display: flex;
|
|
2222
2328
|
align-items: center;
|
|
2223
2329
|
height: 22px;
|
|
2224
2330
|
`;
|
|
2225
|
-
var SegmentedLabelInner =
|
|
2331
|
+
var SegmentedLabelInner = import_styled_components22.default.div`
|
|
2226
2332
|
${theme((o) => [o.typography(14)])}
|
|
2227
2333
|
`;
|
|
2228
2334
|
|
|
2229
2335
|
// src/components/Checkbox/index.tsx
|
|
2230
|
-
var
|
|
2231
|
-
var
|
|
2336
|
+
var import_react25 = require("react");
|
|
2337
|
+
var import_styled_components23 = __toESM(require("styled-components"));
|
|
2232
2338
|
var import_checkbox = require("@react-aria/checkbox");
|
|
2233
|
-
var
|
|
2339
|
+
var import_utils12 = require("@react-aria/utils");
|
|
2234
2340
|
var import_react_stately3 = require("react-stately");
|
|
2235
|
-
var
|
|
2236
|
-
var
|
|
2237
|
-
var Checkbox = (0,
|
|
2341
|
+
var import_utils13 = require("@charcoal-ui/utils");
|
|
2342
|
+
var import_jsx_runtime27 = require("react/jsx-runtime");
|
|
2343
|
+
var Checkbox = (0, import_react25.forwardRef)(
|
|
2238
2344
|
function CheckboxInner({ invalid = false, ...props }, ref) {
|
|
2239
|
-
const ariaCheckboxProps = (0,
|
|
2345
|
+
const ariaCheckboxProps = (0, import_react25.useMemo)(
|
|
2240
2346
|
() => ({
|
|
2241
2347
|
...props,
|
|
2242
2348
|
isSelected: props.checked,
|
|
@@ -2248,38 +2354,38 @@ var Checkbox = (0, import_react21.forwardRef)(
|
|
|
2248
2354
|
[invalid, props]
|
|
2249
2355
|
);
|
|
2250
2356
|
const state = (0, import_react_stately3.useToggleState)(ariaCheckboxProps);
|
|
2251
|
-
const objectRef = (0,
|
|
2357
|
+
const objectRef = (0, import_utils12.useObjectRef)(ref);
|
|
2252
2358
|
const { inputProps } = (0, import_checkbox.useCheckbox)(ariaCheckboxProps, state, objectRef);
|
|
2253
2359
|
const isDisabled = (props.disabled ?? false) || (props.readonly ?? false);
|
|
2254
|
-
return /* @__PURE__ */ (0,
|
|
2255
|
-
/* @__PURE__ */ (0,
|
|
2256
|
-
/* @__PURE__ */ (0,
|
|
2257
|
-
/* @__PURE__ */ (0,
|
|
2360
|
+
return /* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(InputRoot, { "aria-disabled": isDisabled, className: props.className, children: [
|
|
2361
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsxs)(CheckboxRoot, { children: [
|
|
2362
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CheckboxInput, { type: "checkbox", ...inputProps, invalid }),
|
|
2363
|
+
/* @__PURE__ */ (0, import_jsx_runtime27.jsx)(CheckboxInputOverlay, { "aria-hidden": true, checked: inputProps.checked, children: /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(Icon_default, { name: "24/Check", unsafeNonGuidelineScale: 2 / 3 }) })
|
|
2258
2364
|
] }),
|
|
2259
|
-
"children" in props && /* @__PURE__ */ (0,
|
|
2365
|
+
"children" in props && /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(InputLabel, { children: props.children })
|
|
2260
2366
|
] });
|
|
2261
2367
|
}
|
|
2262
2368
|
);
|
|
2263
|
-
var Checkbox_default = (0,
|
|
2264
|
-
var hiddenCss =
|
|
2369
|
+
var Checkbox_default = (0, import_react25.memo)(Checkbox);
|
|
2370
|
+
var hiddenCss = import_styled_components23.css`
|
|
2265
2371
|
visibility: hidden;
|
|
2266
2372
|
`;
|
|
2267
|
-
var InputRoot =
|
|
2373
|
+
var InputRoot = import_styled_components23.default.label`
|
|
2268
2374
|
position: relative;
|
|
2269
2375
|
display: flex;
|
|
2270
2376
|
|
|
2271
2377
|
cursor: pointer;
|
|
2272
|
-
${
|
|
2378
|
+
${import_utils13.disabledSelector} {
|
|
2273
2379
|
cursor: default;
|
|
2274
2380
|
}
|
|
2275
2381
|
|
|
2276
|
-
gap: ${({ theme: theme3 }) => (0,
|
|
2382
|
+
gap: ${({ theme: theme3 }) => (0, import_utils13.px)(theme3.spacing[4])};
|
|
2277
2383
|
${theme((o) => [o.disabled])}
|
|
2278
2384
|
`;
|
|
2279
|
-
var CheckboxRoot =
|
|
2385
|
+
var CheckboxRoot = import_styled_components23.default.div`
|
|
2280
2386
|
position: relative;
|
|
2281
2387
|
`;
|
|
2282
|
-
var CheckboxInput =
|
|
2388
|
+
var CheckboxInput = import_styled_components23.default.input`
|
|
2283
2389
|
&[type='checkbox'] {
|
|
2284
2390
|
appearance: none;
|
|
2285
2391
|
display: block;
|
|
@@ -2303,7 +2409,7 @@ var CheckboxInput = import_styled_components22.default.input`
|
|
|
2303
2409
|
transition: all 0.2s !important;
|
|
2304
2410
|
}
|
|
2305
2411
|
`;
|
|
2306
|
-
var CheckboxInputOverlay =
|
|
2412
|
+
var CheckboxInputOverlay = import_styled_components23.default.div`
|
|
2307
2413
|
position: absolute;
|
|
2308
2414
|
top: -2px;
|
|
2309
2415
|
left: -2px;
|
|
@@ -2316,7 +2422,7 @@ var CheckboxInputOverlay = import_styled_components22.default.div`
|
|
|
2316
2422
|
|
|
2317
2423
|
${({ checked }) => checked !== true && hiddenCss};
|
|
2318
2424
|
`;
|
|
2319
|
-
var InputLabel =
|
|
2425
|
+
var InputLabel = import_styled_components23.default.div`
|
|
2320
2426
|
${theme((o) => [o.font.text2])}
|
|
2321
2427
|
|
|
2322
2428
|
font-size: 14px;
|
|
@@ -2325,17 +2431,17 @@ var InputLabel = import_styled_components22.default.div`
|
|
|
2325
2431
|
`;
|
|
2326
2432
|
|
|
2327
2433
|
// src/components/TagItem/index.tsx
|
|
2328
|
-
var
|
|
2329
|
-
var
|
|
2330
|
-
var
|
|
2331
|
-
var
|
|
2434
|
+
var import_react26 = require("react");
|
|
2435
|
+
var import_utils14 = require("@react-aria/utils");
|
|
2436
|
+
var import_styled_components24 = __toESM(require("styled-components"));
|
|
2437
|
+
var import_utils15 = require("@charcoal-ui/utils");
|
|
2332
2438
|
var import_button = require("@react-aria/button");
|
|
2333
|
-
var
|
|
2439
|
+
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
2334
2440
|
var sizeMap = {
|
|
2335
2441
|
S: 32,
|
|
2336
2442
|
M: 40
|
|
2337
2443
|
};
|
|
2338
|
-
var TagItem = (0,
|
|
2444
|
+
var TagItem = (0, import_react26.forwardRef)(
|
|
2339
2445
|
function TagItemInner({
|
|
2340
2446
|
label,
|
|
2341
2447
|
translatedLabel,
|
|
@@ -2347,8 +2453,8 @@ var TagItem = (0, import_react22.forwardRef)(
|
|
|
2347
2453
|
className,
|
|
2348
2454
|
...props
|
|
2349
2455
|
}, _ref) {
|
|
2350
|
-
const ref = (0,
|
|
2351
|
-
const ariaButtonProps = (0,
|
|
2456
|
+
const ref = (0, import_utils14.useObjectRef)(_ref);
|
|
2457
|
+
const ariaButtonProps = (0, import_react26.useMemo)(
|
|
2352
2458
|
() => ({
|
|
2353
2459
|
elementType: "a",
|
|
2354
2460
|
isDisabled: disabled,
|
|
@@ -2358,7 +2464,7 @@ var TagItem = (0, import_react22.forwardRef)(
|
|
|
2358
2464
|
);
|
|
2359
2465
|
const { buttonProps } = (0, import_button.useButton)(ariaButtonProps, ref);
|
|
2360
2466
|
const hasTranslatedLabel = translatedLabel !== void 0 && translatedLabel.length > 0;
|
|
2361
|
-
return /* @__PURE__ */ (0,
|
|
2467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
|
|
2362
2468
|
TagItemRoot,
|
|
2363
2469
|
{
|
|
2364
2470
|
ref,
|
|
@@ -2367,21 +2473,21 @@ var TagItem = (0, import_react22.forwardRef)(
|
|
|
2367
2473
|
...buttonProps,
|
|
2368
2474
|
className,
|
|
2369
2475
|
children: [
|
|
2370
|
-
/* @__PURE__ */ (0,
|
|
2371
|
-
/* @__PURE__ */ (0,
|
|
2372
|
-
/* @__PURE__ */ (0,
|
|
2373
|
-
hasTranslatedLabel && /* @__PURE__ */ (0,
|
|
2374
|
-
/* @__PURE__ */ (0,
|
|
2476
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Background, { bgColor, bgImage, status }),
|
|
2477
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(Inner, { children: [
|
|
2478
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(LabelWrapper, { isTranslate: hasTranslatedLabel, children: [
|
|
2479
|
+
hasTranslatedLabel && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(TranslatedLabel, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Label3, { children: translatedLabel }) }),
|
|
2480
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Label3, { children: label })
|
|
2375
2481
|
] }),
|
|
2376
|
-
status === "active" && /* @__PURE__ */ (0,
|
|
2482
|
+
status === "active" && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Icon_default, { name: "16/Remove" })
|
|
2377
2483
|
] })
|
|
2378
2484
|
]
|
|
2379
2485
|
}
|
|
2380
2486
|
);
|
|
2381
2487
|
}
|
|
2382
2488
|
);
|
|
2383
|
-
var TagItem_default = (0,
|
|
2384
|
-
var TagItemRoot =
|
|
2489
|
+
var TagItem_default = (0, import_react26.memo)(TagItem);
|
|
2490
|
+
var TagItemRoot = import_styled_components24.default.a`
|
|
2385
2491
|
isolation: isolate;
|
|
2386
2492
|
position: relative;
|
|
2387
2493
|
height: ${({ size }) => sizeMap[size]}px;
|
|
@@ -2401,12 +2507,12 @@ var TagItemRoot = import_styled_components23.default.a`
|
|
|
2401
2507
|
...status === "active" ? [o.padding.left(16), o.padding.right(8)] : []
|
|
2402
2508
|
])}
|
|
2403
2509
|
|
|
2404
|
-
${
|
|
2510
|
+
${import_utils15.disabledSelector} {
|
|
2405
2511
|
${theme((o) => [o.disabled])}
|
|
2406
2512
|
cursor: default;
|
|
2407
2513
|
}
|
|
2408
2514
|
`;
|
|
2409
|
-
var Background =
|
|
2515
|
+
var Background = import_styled_components24.default.div`
|
|
2410
2516
|
position: absolute;
|
|
2411
2517
|
z-index: 1;
|
|
2412
2518
|
top: 0;
|
|
@@ -2417,7 +2523,7 @@ var Background = import_styled_components23.default.div`
|
|
|
2417
2523
|
background-color: ${({ bgColor }) => bgColor};
|
|
2418
2524
|
${({ status }) => status === "inactive" && theme((o) => o.bg.surface3)}
|
|
2419
2525
|
|
|
2420
|
-
${({ bgImage }) => bgImage !== void 0 &&
|
|
2526
|
+
${({ bgImage }) => bgImage !== void 0 && import_styled_components24.css`
|
|
2421
2527
|
${theme((o) => [o.bg.surface4])}
|
|
2422
2528
|
&::before {
|
|
2423
2529
|
content: '';
|
|
@@ -2433,25 +2539,25 @@ var Background = import_styled_components23.default.div`
|
|
|
2433
2539
|
}
|
|
2434
2540
|
`}
|
|
2435
2541
|
`;
|
|
2436
|
-
var Inner =
|
|
2542
|
+
var Inner = import_styled_components24.default.div`
|
|
2437
2543
|
display: inline-flex;
|
|
2438
|
-
gap: ${({ theme: theme3 }) => (0,
|
|
2544
|
+
gap: ${({ theme: theme3 }) => (0, import_utils15.px)(theme3.spacing[8])};
|
|
2439
2545
|
align-items: center;
|
|
2440
2546
|
z-index: 2;
|
|
2441
2547
|
`;
|
|
2442
|
-
var labelCSS =
|
|
2548
|
+
var labelCSS = import_styled_components24.css`
|
|
2443
2549
|
${theme((o) => [o.typography(14).bold])}
|
|
2444
2550
|
`;
|
|
2445
|
-
var translateLabelCSS =
|
|
2551
|
+
var translateLabelCSS = import_styled_components24.css`
|
|
2446
2552
|
display: flex;
|
|
2447
2553
|
align-items: center;
|
|
2448
2554
|
flex-direction: column;
|
|
2449
2555
|
font-size: 10px;
|
|
2450
2556
|
`;
|
|
2451
|
-
var LabelWrapper =
|
|
2557
|
+
var LabelWrapper = import_styled_components24.default.div`
|
|
2452
2558
|
${({ isTranslate }) => isTranslate ?? false ? translateLabelCSS : labelCSS}
|
|
2453
2559
|
`;
|
|
2454
|
-
var Label3 =
|
|
2560
|
+
var Label3 = import_styled_components24.default.span`
|
|
2455
2561
|
max-width: 152px;
|
|
2456
2562
|
overflow: hidden;
|
|
2457
2563
|
text-overflow: ellipsis;
|
|
@@ -2460,7 +2566,7 @@ var Label3 = import_styled_components23.default.span`
|
|
|
2460
2566
|
color: inherit;
|
|
2461
2567
|
line-height: inherit;
|
|
2462
2568
|
`;
|
|
2463
|
-
var TranslatedLabel =
|
|
2569
|
+
var TranslatedLabel = import_styled_components24.default.div`
|
|
2464
2570
|
${theme((o) => [o.typography(12).bold])}
|
|
2465
2571
|
`;
|
|
2466
2572
|
// Annotate the CommonJS export names for ESM import in node:
|