@simplybusiness/mobius 10.3.2 → 10.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +7 -0
- package/dist/cjs/components/AddressLookup/AddressLookup.js +888 -5314
- package/dist/cjs/components/AddressLookup/AddressLookup.js.map +4 -4
- package/dist/cjs/components/AddressLookup/index.js +952 -5381
- package/dist/cjs/components/AddressLookup/index.js.map +4 -4
- package/dist/cjs/components/Checkbox/Checkbox.js +245 -5625
- package/dist/cjs/components/Checkbox/Checkbox.js.map +4 -4
- package/dist/cjs/components/Checkbox/CheckboxGroup.js +371 -5614
- package/dist/cjs/components/Checkbox/CheckboxGroup.js.map +4 -4
- package/dist/cjs/components/Checkbox/index.js +377 -5619
- package/dist/cjs/components/Checkbox/index.js.map +4 -4
- package/dist/cjs/components/Combobox/Combobox.js +829 -5344
- package/dist/cjs/components/Combobox/Combobox.js.map +4 -4
- package/dist/cjs/components/Combobox/index.js +813 -5327
- package/dist/cjs/components/Combobox/index.js.map +4 -4
- package/dist/cjs/components/DateField/DateField.js +379 -5505
- package/dist/cjs/components/DateField/DateField.js.map +4 -4
- package/dist/cjs/components/DateField/index.js +383 -5508
- package/dist/cjs/components/DateField/index.js.map +4 -4
- package/dist/cjs/components/ErrorMessage/ErrorMessage.js +120 -5643
- package/dist/cjs/components/ErrorMessage/ErrorMessage.js.map +4 -4
- package/dist/cjs/components/ErrorMessage/index.js +121 -5642
- package/dist/cjs/components/ErrorMessage/index.js.map +4 -4
- package/dist/cjs/components/ExpandableText/ExpandableText.js +511 -5604
- package/dist/cjs/components/ExpandableText/ExpandableText.js.map +4 -4
- package/dist/cjs/components/ExpandableText/index.js +512 -5604
- package/dist/cjs/components/ExpandableText/index.js.map +4 -4
- package/dist/cjs/components/MaskedField/MaskedField.js +394 -5511
- package/dist/cjs/components/MaskedField/MaskedField.js.map +4 -4
- package/dist/cjs/components/MaskedField/index.js +293 -5118
- package/dist/cjs/components/MaskedField/index.js.map +4 -4
- package/dist/cjs/components/NumberField/NumberField.js +357 -5523
- package/dist/cjs/components/NumberField/NumberField.js.map +4 -4
- package/dist/cjs/components/NumberField/index.js +358 -5523
- package/dist/cjs/components/NumberField/index.js.map +4 -4
- package/dist/cjs/components/PasswordField/PasswordField.js +330 -5511
- package/dist/cjs/components/PasswordField/PasswordField.js.map +4 -4
- package/dist/cjs/components/PasswordField/ShowHideButton.js +32 -5655
- package/dist/cjs/components/PasswordField/ShowHideButton.js.map +4 -4
- package/dist/cjs/components/PasswordField/index.js +332 -5512
- package/dist/cjs/components/PasswordField/index.js.map +4 -4
- package/dist/cjs/components/Radio/Radio.js +242 -5632
- package/dist/cjs/components/Radio/Radio.js.map +4 -4
- package/dist/cjs/components/Radio/RadioGroup.js +274 -5619
- package/dist/cjs/components/Radio/RadioGroup.js.map +4 -4
- package/dist/cjs/components/Radio/index.js +404 -5628
- package/dist/cjs/components/Radio/index.js.map +4 -4
- package/dist/cjs/components/Select/Select.js +233 -5588
- package/dist/cjs/components/Select/Select.js.map +4 -4
- package/dist/cjs/components/Select/index.js +234 -5588
- package/dist/cjs/components/Select/index.js.map +4 -4
- package/dist/cjs/components/TextArea/TextArea.js +229 -5531
- package/dist/cjs/components/TextArea/TextArea.js.map +4 -4
- package/dist/cjs/components/TextArea/index.js +230 -5531
- package/dist/cjs/components/TextArea/index.js.map +4 -4
- package/dist/cjs/components/TextField/TextField.js +265 -5522
- package/dist/cjs/components/TextField/TextField.js.map +4 -4
- package/dist/cjs/components/TextField/index.js +266 -5522
- package/dist/cjs/components/TextField/index.js.map +4 -4
- package/dist/cjs/components/index.js +4273 -5291
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/index.js +4304 -5334
- package/dist/cjs/index.js.map +4 -4
- package/dist/cjs/meta.json +5734 -51529
- package/dist/esm/chunk-3O5DIIGS.js +1 -0
- package/dist/esm/chunk-3O5DIIGS.js.map +7 -0
- package/dist/esm/chunk-3PRSHEVX.js +1 -0
- package/dist/esm/chunk-3PRSHEVX.js.map +7 -0
- package/dist/esm/chunk-4NBLO5WK.js +54 -0
- package/dist/esm/chunk-4NBLO5WK.js.map +7 -0
- package/dist/esm/chunk-4WVJNNBK.js +157 -0
- package/dist/esm/chunk-4WVJNNBK.js.map +7 -0
- package/dist/esm/chunk-5L4G4VLM.js +1 -0
- package/dist/esm/chunk-5L4G4VLM.js.map +7 -0
- package/dist/esm/chunk-5OFXPT4J.js +135 -0
- package/dist/esm/chunk-5OFXPT4J.js.map +7 -0
- package/dist/esm/chunk-6O77SOOB.js +1 -0
- package/dist/esm/chunk-6O77SOOB.js.map +7 -0
- package/dist/esm/chunk-AFU7BFCD.js +151 -0
- package/dist/esm/chunk-AFU7BFCD.js.map +7 -0
- package/dist/esm/chunk-BGR2OTTR.js +1 -0
- package/dist/esm/chunk-BGR2OTTR.js.map +7 -0
- package/dist/esm/chunk-BIGO5EVC.js +1 -0
- package/dist/esm/chunk-BIGO5EVC.js.map +7 -0
- package/dist/esm/chunk-CUOVI2HT.js +1 -0
- package/dist/esm/chunk-CUOVI2HT.js.map +7 -0
- package/dist/esm/chunk-F4RQKLF7.js +1 -0
- package/dist/esm/chunk-F4RQKLF7.js.map +7 -0
- package/dist/esm/chunk-FKTDL7KO.js +355 -0
- package/dist/esm/chunk-FKTDL7KO.js.map +7 -0
- package/dist/esm/chunk-KQZ3MNK5.js +100 -0
- package/dist/esm/chunk-KQZ3MNK5.js.map +7 -0
- package/dist/esm/chunk-M2NDSQR5.js +106 -0
- package/dist/esm/chunk-M2NDSQR5.js.map +7 -0
- package/dist/esm/chunk-N4WQ6522.js +125 -0
- package/dist/esm/chunk-N4WQ6522.js.map +7 -0
- package/dist/esm/{chunk-CNOF66SV.js → chunk-NGNVAFBJ.js} +4 -4
- package/dist/esm/chunk-NOQ27VLY.js +1 -0
- package/dist/esm/chunk-NOQ27VLY.js.map +7 -0
- package/dist/esm/chunk-ONDOONBM.js +101 -0
- package/dist/esm/chunk-ONDOONBM.js.map +7 -0
- package/dist/esm/chunk-P34DI6BE.js +1 -0
- package/dist/esm/chunk-P34DI6BE.js.map +7 -0
- package/dist/esm/chunk-P5VEI574.js +97 -0
- package/dist/esm/chunk-P5VEI574.js.map +7 -0
- package/dist/esm/chunk-QPIA6BGW.js +64 -0
- package/dist/esm/chunk-QPIA6BGW.js.map +7 -0
- package/dist/esm/chunk-SZEFLEDA.js +1 -0
- package/dist/esm/chunk-SZEFLEDA.js.map +7 -0
- package/dist/esm/chunk-TXB4BOHB.js +1 -0
- package/dist/esm/chunk-TXB4BOHB.js.map +7 -0
- package/dist/esm/chunk-UIIXVY6K.js +123 -0
- package/dist/esm/chunk-UIIXVY6K.js.map +7 -0
- package/dist/esm/chunk-UQVAEWY2.js +44 -0
- package/dist/esm/chunk-UQVAEWY2.js.map +7 -0
- package/dist/esm/chunk-WC3D5GNN.js +29 -0
- package/dist/esm/chunk-WC3D5GNN.js.map +7 -0
- package/dist/esm/chunk-WNRO77YH.js +1 -0
- package/dist/esm/chunk-WNRO77YH.js.map +7 -0
- package/dist/esm/chunk-X6EPYQKX.js +96 -0
- package/dist/esm/chunk-X6EPYQKX.js.map +7 -0
- package/dist/esm/chunk-ZN5TRIVZ.js +41 -0
- package/dist/esm/chunk-ZN5TRIVZ.js.map +7 -0
- package/dist/esm/components/AddressLookup/AddressLookup.js +9 -106
- package/dist/esm/components/AddressLookup/index.js +10 -103
- package/dist/esm/components/Checkbox/Checkbox.js +3 -116
- package/dist/esm/components/Checkbox/CheckboxGroup.js +4 -114
- package/dist/esm/components/Checkbox/index.js +7 -114
- package/dist/esm/components/Combobox/Combobox.js +6 -107
- package/dist/esm/components/Combobox/index.js +8 -107
- package/dist/esm/components/DateField/DateField.js +6 -113
- package/dist/esm/components/DateField/index.js +7 -113
- package/dist/esm/components/ErrorMessage/ErrorMessage.js +1 -146
- package/dist/esm/components/ErrorMessage/index.js +2 -146
- package/dist/esm/components/ExpandableText/ExpandableText.js +1 -108
- package/dist/esm/components/ExpandableText/index.js +2 -108
- package/dist/esm/components/MaskedField/MaskedField.js +5 -114
- package/dist/esm/components/MaskedField/MaskedField.js.map +1 -1
- package/dist/esm/components/MaskedField/index.js +6 -114
- package/dist/esm/components/NumberField/NumberField.js +6 -114
- package/dist/esm/components/NumberField/index.js +7 -114
- package/dist/esm/components/PasswordField/PasswordField.js +7 -114
- package/dist/esm/components/PasswordField/ShowHideButton.js +1 -149
- package/dist/esm/components/PasswordField/index.js +8 -114
- package/dist/esm/components/Radio/Radio.js +3 -144
- package/dist/esm/components/Radio/RadioGroup.js +3 -114
- package/dist/esm/components/Radio/index.js +7 -115
- package/dist/esm/components/Select/Select.js +3 -114
- package/dist/esm/components/Select/index.js +4 -114
- package/dist/esm/components/Slider/Slider.js +2 -2
- package/dist/esm/components/Slider/index.js +2 -2
- package/dist/esm/components/TextArea/TextArea.js +3 -112
- package/dist/esm/components/TextArea/index.js +4 -112
- package/dist/esm/components/TextField/TextField.js +4 -114
- package/dist/esm/components/TextField/index.js +5 -114
- package/dist/esm/components/index.js +81 -44
- package/dist/esm/index.js +81 -39
- package/dist/esm/meta.json +6950 -19169
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/components/ErrorMessage/ErrorMessage.tsx +1 -1
- package/src/components/ExpandableText/ExpandableText.tsx +3 -1
- package/src/components/PasswordField/ShowHideButton.tsx +1 -1
- package/dist/esm/chunk-W2RQH4WS.js +0 -1606
- package/dist/esm/chunk-W2RQH4WS.js.map +0 -7
- /package/dist/esm/{chunk-CNOF66SV.js.map → chunk-NGNVAFBJ.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-3O5DIIGS.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-3PRSHEVX.js.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ShowHideButton
|
|
3
|
+
} from "./chunk-WC3D5GNN.js";
|
|
4
|
+
import {
|
|
5
|
+
TextField
|
|
6
|
+
} from "./chunk-UIIXVY6K.js";
|
|
7
|
+
import {
|
|
8
|
+
mergeRefs
|
|
9
|
+
} from "./chunk-QGGILW3D.js";
|
|
10
|
+
|
|
11
|
+
// src/components/PasswordField/PasswordField.tsx
|
|
12
|
+
import classNames from "classnames/dedupe";
|
|
13
|
+
import { useRef, useState } from "react";
|
|
14
|
+
import "@simplybusiness/mobius/src/components/PasswordField/PasswordField.css";
|
|
15
|
+
import { jsx } from "react/jsx-runtime";
|
|
16
|
+
var PasswordField = ({
|
|
17
|
+
ref,
|
|
18
|
+
className,
|
|
19
|
+
autoComplete = "current-password",
|
|
20
|
+
...props
|
|
21
|
+
}) => {
|
|
22
|
+
const [show, setShow] = useState(false);
|
|
23
|
+
const type = show ? "text" : "password";
|
|
24
|
+
const classes = classNames("mobius-password-field", className);
|
|
25
|
+
const localRef = useRef(null);
|
|
26
|
+
const handleShowHideButtonClick = () => {
|
|
27
|
+
const selectionStart = localRef.current?.selectionStart;
|
|
28
|
+
const selectionEnd = localRef.current?.selectionEnd;
|
|
29
|
+
setShow((oldShow) => !oldShow);
|
|
30
|
+
requestAnimationFrame(() => {
|
|
31
|
+
localRef.current?.focus();
|
|
32
|
+
if (selectionStart != null && selectionEnd != null) {
|
|
33
|
+
localRef.current?.setSelectionRange(selectionStart, selectionEnd);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
return /* @__PURE__ */ jsx(
|
|
38
|
+
TextField,
|
|
39
|
+
{
|
|
40
|
+
ref: mergeRefs([localRef, ref]),
|
|
41
|
+
className: classes,
|
|
42
|
+
...props,
|
|
43
|
+
autoComplete,
|
|
44
|
+
type,
|
|
45
|
+
suffixInside: /* @__PURE__ */ jsx(ShowHideButton, { onClick: handleShowHideButtonClick, show })
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
PasswordField.displayName = "PasswordField";
|
|
50
|
+
|
|
51
|
+
export {
|
|
52
|
+
PasswordField
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=chunk-4NBLO5WK.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/PasswordField/PasswordField.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport { useRef, useState } from \"react\";\nimport { mergeRefs } from \"../../utils/mergeRefs\";\nimport {\n TextField,\n type TextFieldElementType,\n type TextFieldProps,\n} from \"../TextField\";\nimport { ShowHideButton } from \"./ShowHideButton\";\nimport \"./PasswordField.css\";\n\nexport type PasswordFieldAutoComplete = \"current-password\" | \"new-password\";\n\nexport interface PasswordFieldProps extends TextFieldProps {\n autoComplete?: PasswordFieldAutoComplete;\n}\n\nexport const PasswordField = ({\n ref,\n className,\n autoComplete = \"current-password\",\n ...props\n}: PasswordFieldProps) => {\n const [show, setShow] = useState(false);\n const type = show ? \"text\" : \"password\";\n const classes = classNames(\"mobius-password-field\", className);\n const localRef = useRef<TextFieldElementType>(null);\n\n const handleShowHideButtonClick = () => {\n const selectionStart = localRef.current?.selectionStart;\n const selectionEnd = localRef.current?.selectionEnd;\n\n setShow(oldShow => !oldShow);\n requestAnimationFrame(() => {\n localRef.current?.focus();\n if (selectionStart != null && selectionEnd != null) {\n localRef.current?.setSelectionRange(selectionStart, selectionEnd);\n }\n });\n };\n\n return (\n <TextField\n ref={mergeRefs([localRef, ref])}\n className={classes}\n {...props}\n autoComplete={autoComplete}\n type={type}\n suffixInside={\n <ShowHideButton onClick={handleShowHideButtonClick} show={show} />\n }\n />\n );\n};\n\nPasswordField.displayName = \"PasswordField\";\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;AAEA,OAAO,gBAAgB;AACvB,SAAS,QAAQ,gBAAgB;AAQjC,OAAO;AAwCC;AAhCD,IAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,MAA0B;AACxB,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,OAAO,OAAO,SAAS;AAC7B,QAAM,UAAU,WAAW,yBAAyB,SAAS;AAC7D,QAAM,WAAW,OAA6B,IAAI;AAElD,QAAM,4BAA4B,MAAM;AACtC,UAAM,iBAAiB,SAAS,SAAS;AACzC,UAAM,eAAe,SAAS,SAAS;AAEvC,YAAQ,aAAW,CAAC,OAAO;AAC3B,0BAAsB,MAAM;AAC1B,eAAS,SAAS,MAAM;AACxB,UAAI,kBAAkB,QAAQ,gBAAgB,MAAM;AAClD,iBAAS,SAAS,kBAAkB,gBAAgB,YAAY;AAAA,MAClE;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,KAAK,UAAU,CAAC,UAAU,GAAG,CAAC;AAAA,MAC9B,WAAW;AAAA,MACV,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA,cACE,oBAAC,kBAAe,SAAS,2BAA2B,MAAY;AAAA;AAAA,EAEpE;AAEJ;AAEA,cAAc,cAAc;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ErrorMessage
|
|
3
|
+
} from "./chunk-UQVAEWY2.js";
|
|
4
|
+
import {
|
|
5
|
+
Stack
|
|
6
|
+
} from "./chunk-XH3OJQMW.js";
|
|
7
|
+
import {
|
|
8
|
+
Label
|
|
9
|
+
} from "./chunk-ZN7OWLZY.js";
|
|
10
|
+
import {
|
|
11
|
+
useValidationClasses
|
|
12
|
+
} from "./chunk-DYOFXXZD.js";
|
|
13
|
+
import {
|
|
14
|
+
spaceDelimitedList
|
|
15
|
+
} from "./chunk-DTWRSP5P.js";
|
|
16
|
+
|
|
17
|
+
// src/components/Radio/RadioGroup.tsx
|
|
18
|
+
import classNames from "classnames/dedupe";
|
|
19
|
+
import {
|
|
20
|
+
Children,
|
|
21
|
+
cloneElement,
|
|
22
|
+
isValidElement,
|
|
23
|
+
useCallback,
|
|
24
|
+
useEffect,
|
|
25
|
+
useId,
|
|
26
|
+
useRef,
|
|
27
|
+
useState
|
|
28
|
+
} from "react";
|
|
29
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
30
|
+
var getDefaultVal = (children, defaultValue) => {
|
|
31
|
+
if (Array.isArray(children) && defaultValue) {
|
|
32
|
+
const option = children?.find((item) => item.props.value === defaultValue);
|
|
33
|
+
if (!option) return "";
|
|
34
|
+
return option.props.value;
|
|
35
|
+
}
|
|
36
|
+
return "";
|
|
37
|
+
};
|
|
38
|
+
var RadioGroup = ({ ref, ...props }) => {
|
|
39
|
+
const {
|
|
40
|
+
label,
|
|
41
|
+
isDisabled = false,
|
|
42
|
+
isRequired,
|
|
43
|
+
isInvalid,
|
|
44
|
+
orientation = "vertical",
|
|
45
|
+
className,
|
|
46
|
+
errorMessage,
|
|
47
|
+
children,
|
|
48
|
+
defaultValue,
|
|
49
|
+
value,
|
|
50
|
+
isReadOnly,
|
|
51
|
+
name,
|
|
52
|
+
onChange,
|
|
53
|
+
autoStack = false,
|
|
54
|
+
...rest
|
|
55
|
+
} = props;
|
|
56
|
+
const defaultSelected = getDefaultVal(children, value || defaultValue);
|
|
57
|
+
const [selected, setSelected] = useState(defaultSelected);
|
|
58
|
+
const overflowsRef = useRef({});
|
|
59
|
+
const [hasOverflow, setHasOverflow] = useState(false);
|
|
60
|
+
useEffect(() => {
|
|
61
|
+
if (value !== void 0) {
|
|
62
|
+
setSelected(value);
|
|
63
|
+
}
|
|
64
|
+
}, [value]);
|
|
65
|
+
const handleOverflow = useCallback(
|
|
66
|
+
(radioValue, overflow) => {
|
|
67
|
+
overflowsRef.current = {
|
|
68
|
+
...overflowsRef.current,
|
|
69
|
+
[radioValue]: overflow
|
|
70
|
+
};
|
|
71
|
+
const anyOverflow = Object.values(overflowsRef.current).some(
|
|
72
|
+
(o) => o.vertical || o.horizontal
|
|
73
|
+
);
|
|
74
|
+
if (anyOverflow !== hasOverflow) {
|
|
75
|
+
setHasOverflow(anyOverflow);
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
[hasOverflow]
|
|
79
|
+
);
|
|
80
|
+
const effectiveOrientation = autoStack && orientation === "horizontal" && hasOverflow ? "vertical" : orientation;
|
|
81
|
+
const validationClasses = useValidationClasses({ isInvalid });
|
|
82
|
+
const radioClasses = {
|
|
83
|
+
"--is-disabled": isDisabled,
|
|
84
|
+
"--is-required": typeof isRequired === "boolean" && isRequired,
|
|
85
|
+
"--is-optional": typeof isRequired === "boolean" && !isRequired,
|
|
86
|
+
[`--is-${effectiveOrientation}`]: true,
|
|
87
|
+
[className || ""]: true
|
|
88
|
+
};
|
|
89
|
+
const radioGroupClasses = classNames(
|
|
90
|
+
"mobius",
|
|
91
|
+
"mobius-radio-group",
|
|
92
|
+
radioClasses,
|
|
93
|
+
validationClasses
|
|
94
|
+
);
|
|
95
|
+
const radioWrapperClasses = classNames("mobius-radio__wrapper", {
|
|
96
|
+
[`--is-${effectiveOrientation}`]: true
|
|
97
|
+
});
|
|
98
|
+
const labelClasses = classNames(radioClasses, validationClasses);
|
|
99
|
+
const errorMessageId = useId();
|
|
100
|
+
const defaultNameAttrId = useId();
|
|
101
|
+
const nameAttribute = name || defaultNameAttrId;
|
|
102
|
+
const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
|
|
103
|
+
const describedBy = spaceDelimitedList([
|
|
104
|
+
shouldErrorMessageShow,
|
|
105
|
+
props["aria-describedby"]
|
|
106
|
+
]);
|
|
107
|
+
const labelId = useId();
|
|
108
|
+
return /* @__PURE__ */ jsx(
|
|
109
|
+
"div",
|
|
110
|
+
{
|
|
111
|
+
...rest,
|
|
112
|
+
"aria-describedby": describedBy,
|
|
113
|
+
"aria-disabled": isDisabled,
|
|
114
|
+
"aria-errormessage": shouldErrorMessageShow,
|
|
115
|
+
"aria-invalid": isInvalid,
|
|
116
|
+
"aria-label": props["aria-label"],
|
|
117
|
+
"aria-labelledby": props["aria-labelledby"] || labelId,
|
|
118
|
+
"aria-orientation": effectiveOrientation,
|
|
119
|
+
"aria-readonly": isReadOnly,
|
|
120
|
+
"aria-required": isRequired,
|
|
121
|
+
ref,
|
|
122
|
+
className: radioGroupClasses,
|
|
123
|
+
role: "radiogroup",
|
|
124
|
+
children: /* @__PURE__ */ jsxs(Stack, { gap: "xs", children: [
|
|
125
|
+
label && /* @__PURE__ */ jsx(Label, { htmlFor: name, id: labelId, className: labelClasses, children: label }),
|
|
126
|
+
/* @__PURE__ */ jsx("div", { className: radioWrapperClasses, children: Children.map(children, (child) => {
|
|
127
|
+
if (isValidElement(child)) {
|
|
128
|
+
const childValue = child.props.value;
|
|
129
|
+
return cloneElement(
|
|
130
|
+
child,
|
|
131
|
+
{
|
|
132
|
+
orientation: effectiveOrientation,
|
|
133
|
+
groupDisabled: isDisabled,
|
|
134
|
+
name: nameAttribute,
|
|
135
|
+
selected: selected || defaultSelected,
|
|
136
|
+
// in case state does not update
|
|
137
|
+
setSelected,
|
|
138
|
+
isRequired,
|
|
139
|
+
"aria-describedby": describedBy,
|
|
140
|
+
onChange,
|
|
141
|
+
onOverflow: childValue ? (overflow) => handleOverflow(childValue, overflow) : void 0
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
}
|
|
145
|
+
return child;
|
|
146
|
+
}) }),
|
|
147
|
+
/* @__PURE__ */ jsx(ErrorMessage, { id: errorMessageId, errorMessage })
|
|
148
|
+
] })
|
|
149
|
+
}
|
|
150
|
+
);
|
|
151
|
+
};
|
|
152
|
+
RadioGroup.displayName = "RadioGroup";
|
|
153
|
+
|
|
154
|
+
export {
|
|
155
|
+
RadioGroup
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=chunk-4WVJNNBK.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/Radio/RadioGroup.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport type { ReactElement, ReactNode, RefAttributes } from \"react\";\nimport {\n Children,\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { useValidationClasses } from \"../../hooks\";\nimport type { Validation } from \"../../types\";\nimport type { DOMProps } from \"../../types/dom\";\nimport type { HTMLElementEvent } from \"../../types/events\";\nimport { spaceDelimitedList } from \"../../utils/spaceDelimitedList\";\nimport { ErrorMessage } from \"../ErrorMessage\";\nimport { Label } from \"../Label\";\nimport { Stack } from \"../Stack\";\nimport type { RadioOverflowInfo } from \"./Radio\";\n\nexport type RadioGroupElementType = HTMLDivElement;\n\nexport interface RadioGroupProps\n extends DOMProps, Validation, RefAttributes<RadioGroupElementType> {\n children: ReactNode;\n className?: string;\n orientation?: \"horizontal\" | \"vertical\";\n errorMessage?: string;\n // Callback that fires when select changes\n onChange?: (event: HTMLElementEvent<HTMLInputElement>) => void;\n /**\n * Automatically change orientation from horizontal to vertical when any Radio label overflows.\n * Only applies when orientation is set to \"horizontal\".\n */\n autoStack?: boolean;\n // Defines a string value that labels the current element.\n \"aria-label\"?: string;\n // Identifies the element (or elements) that labels the current element.\n \"aria-labelledby\"?: string;\n // Identifies the element that provides an error message for the object.\n \"aria-errormessage\"?: string;\n // Identifies the element (or elements) that describes the object.\n \"aria-describedby\"?: string;\n // Whether user input is required on the input before form submission.\n isRequired?: boolean;\n // Whether the input is disabled.\n isDisabled?: boolean;\n // Whether the input can be selected but not changed by the user.\n isReadOnly?: boolean;\n // The default value (uncontrolled).\n defaultValue?: string;\n // The content to display as the label.\n label?: ReactNode;\n /**\n * The value of the radio button, used when submitting an HTML form.\n * See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio#Value).\n */\n value?: string;\n name?: string;\n}\n\nconst getDefaultVal = (children: ReactNode, defaultValue?: string) => {\n if (Array.isArray(children) && defaultValue) {\n const option = children?.find(item => item.props.value === defaultValue);\n\n if (!option) return \"\";\n\n return option.props.value;\n }\n\n return \"\";\n};\n\nconst RadioGroup = ({ ref, ...props }: RadioGroupProps) => {\n const {\n label,\n isDisabled = false,\n isRequired,\n isInvalid,\n orientation = \"vertical\",\n className,\n errorMessage,\n children,\n defaultValue,\n value,\n isReadOnly,\n name,\n onChange,\n autoStack = false,\n ...rest\n } = props;\n const defaultSelected = getDefaultVal(children, value || defaultValue);\n const [selected, setSelected] = useState<string>(defaultSelected);\n const overflowsRef = useRef<Record<string, RadioOverflowInfo>>({});\n const [hasOverflow, setHasOverflow] = useState(false);\n\n // Handle controlled behavior - update state when value prop changes\n useEffect(() => {\n if (value !== undefined) {\n setSelected(value);\n }\n }, [value]);\n\n // Handle overflow detection and auto-stack if needed\n const handleOverflow = useCallback(\n (radioValue: string, overflow: RadioOverflowInfo) => {\n overflowsRef.current = {\n ...overflowsRef.current,\n [radioValue]: overflow,\n };\n\n // Check if any radio has overflow\n const anyOverflow = Object.values(overflowsRef.current).some(\n o => o.vertical || o.horizontal,\n );\n\n if (anyOverflow !== hasOverflow) {\n setHasOverflow(anyOverflow);\n }\n },\n [hasOverflow],\n );\n\n // Determine effective orientation (auto-stack if needed)\n const effectiveOrientation =\n autoStack && orientation === \"horizontal\" && hasOverflow\n ? \"vertical\"\n : orientation;\n\n const validationClasses = useValidationClasses({ isInvalid });\n const radioClasses = {\n \"--is-disabled\": isDisabled,\n \"--is-required\": typeof isRequired === \"boolean\" && isRequired,\n \"--is-optional\": typeof isRequired === \"boolean\" && !isRequired,\n [`--is-${effectiveOrientation}`]: true,\n [className || \"\"]: true,\n };\n const radioGroupClasses = classNames(\n \"mobius\",\n \"mobius-radio-group\",\n radioClasses,\n validationClasses,\n );\n const radioWrapperClasses = classNames(\"mobius-radio__wrapper\", {\n [`--is-${effectiveOrientation}`]: true,\n });\n const labelClasses = classNames(radioClasses, validationClasses);\n const errorMessageId = useId();\n const defaultNameAttrId = useId();\n const nameAttribute = name || defaultNameAttrId;\n const shouldErrorMessageShow = errorMessage ? errorMessageId : undefined;\n const describedBy = spaceDelimitedList([\n shouldErrorMessageShow,\n props[\"aria-describedby\"],\n ]);\n const labelId = useId();\n\n return (\n <div\n {...rest}\n aria-describedby={describedBy}\n aria-disabled={isDisabled}\n aria-errormessage={shouldErrorMessageShow}\n aria-invalid={isInvalid}\n aria-label={props[\"aria-label\"]}\n aria-labelledby={props[\"aria-labelledby\"] || labelId}\n aria-orientation={effectiveOrientation}\n aria-readonly={isReadOnly}\n aria-required={isRequired}\n ref={ref}\n className={radioGroupClasses}\n role=\"radiogroup\"\n >\n <Stack gap=\"xs\">\n {label && (\n <Label htmlFor={name} id={labelId} className={labelClasses}>\n {label}\n </Label>\n )}\n <div className={radioWrapperClasses}>\n {Children.map(children, child => {\n if (isValidElement(child)) {\n const childValue = (child.props as { value?: string }).value;\n return cloneElement(\n child as ReactElement,\n {\n orientation: effectiveOrientation,\n groupDisabled: isDisabled,\n name: nameAttribute,\n selected: selected || defaultSelected, // in case state does not update\n setSelected,\n isRequired,\n \"aria-describedby\": describedBy,\n onChange,\n onOverflow: childValue\n ? (overflow: RadioOverflowInfo) =>\n handleOverflow(childValue, overflow)\n : undefined,\n } as Record<string, unknown>,\n );\n }\n\n return child;\n })}\n </div>\n <ErrorMessage id={errorMessageId} errorMessage={errorMessage} />\n </Stack>\n </div>\n );\n};\n\nRadioGroup.displayName = \"RadioGroup\";\nexport { RadioGroup };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-5L4G4VLM.js.map
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ErrorMessage
|
|
3
|
+
} from "./chunk-UQVAEWY2.js";
|
|
4
|
+
import {
|
|
5
|
+
Label
|
|
6
|
+
} from "./chunk-ZN7OWLZY.js";
|
|
7
|
+
|
|
8
|
+
// src/components/Radio/Radio.tsx
|
|
9
|
+
import classNames from "classnames/dedupe";
|
|
10
|
+
import {
|
|
11
|
+
Children,
|
|
12
|
+
isValidElement,
|
|
13
|
+
useLayoutEffect,
|
|
14
|
+
useMemo,
|
|
15
|
+
useRef
|
|
16
|
+
} from "react";
|
|
17
|
+
import "@simplybusiness/mobius/src/components/Radio/Radio.css";
|
|
18
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
19
|
+
var Radio = ({ ref, ...props }) => {
|
|
20
|
+
const {
|
|
21
|
+
children,
|
|
22
|
+
value,
|
|
23
|
+
label,
|
|
24
|
+
className,
|
|
25
|
+
isDisabled,
|
|
26
|
+
errorMessage,
|
|
27
|
+
onChange,
|
|
28
|
+
defaultChecked,
|
|
29
|
+
groupDisabled,
|
|
30
|
+
name,
|
|
31
|
+
selected,
|
|
32
|
+
setSelected,
|
|
33
|
+
isRequired,
|
|
34
|
+
onOverflow,
|
|
35
|
+
orientation,
|
|
36
|
+
...otherProps
|
|
37
|
+
} = props;
|
|
38
|
+
const realDisabled = groupDisabled || isDisabled;
|
|
39
|
+
const isMultiline = label && children;
|
|
40
|
+
const isControlled = selected !== void 0;
|
|
41
|
+
const isChecked = isControlled ? selected === value : defaultChecked;
|
|
42
|
+
const contentRef = useRef(null);
|
|
43
|
+
const prevOverflowRef = useRef({
|
|
44
|
+
vertical: false,
|
|
45
|
+
horizontal: false
|
|
46
|
+
});
|
|
47
|
+
const hasIconFirst = useMemo(() => {
|
|
48
|
+
if (!children || Children.count(children) === 0) return false;
|
|
49
|
+
const firstChild = Children.toArray(children)[0];
|
|
50
|
+
if (!isValidElement(firstChild)) return false;
|
|
51
|
+
const props2 = firstChild.props;
|
|
52
|
+
return "icon" in props2 && props2.icon !== void 0;
|
|
53
|
+
}, [children]);
|
|
54
|
+
useLayoutEffect(() => {
|
|
55
|
+
if (!contentRef.current || !onOverflow) return;
|
|
56
|
+
if (orientation === "vertical") {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const element = contentRef.current;
|
|
60
|
+
const scrollOverflowVertical = element.scrollHeight > element.clientHeight;
|
|
61
|
+
const scrollOverflowHorizontal = element.scrollWidth > element.clientWidth;
|
|
62
|
+
const styles = window.getComputedStyle(element);
|
|
63
|
+
const lineHeight = parseFloat(styles.lineHeight);
|
|
64
|
+
const fontSize = parseFloat(styles.fontSize);
|
|
65
|
+
const singleLineHeight = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight;
|
|
66
|
+
const WRAP_DETECTION_TOLERANCE = 1.1;
|
|
67
|
+
const hasWrapped = element.clientHeight > singleLineHeight * WRAP_DETECTION_TOLERANCE;
|
|
68
|
+
const vertical = scrollOverflowVertical || hasWrapped;
|
|
69
|
+
const horizontal = scrollOverflowHorizontal;
|
|
70
|
+
const newOverflowState = { vertical, horizontal };
|
|
71
|
+
const prevOverflow = prevOverflowRef.current;
|
|
72
|
+
if (newOverflowState.vertical !== prevOverflow.vertical || newOverflowState.horizontal !== prevOverflow.horizontal) {
|
|
73
|
+
prevOverflowRef.current = newOverflowState;
|
|
74
|
+
onOverflow(newOverflowState);
|
|
75
|
+
}
|
|
76
|
+
}, [label, children, onOverflow, orientation]);
|
|
77
|
+
const radioClasses = {
|
|
78
|
+
"--is-disabled": realDisabled,
|
|
79
|
+
"--is-selected": selected === value,
|
|
80
|
+
"--is-multiline": !!isMultiline,
|
|
81
|
+
"--is-required": isRequired
|
|
82
|
+
};
|
|
83
|
+
const containerClasses = classNames(
|
|
84
|
+
"mobius-radio__label",
|
|
85
|
+
radioClasses,
|
|
86
|
+
className,
|
|
87
|
+
{ "--has-icon-first": hasIconFirst }
|
|
88
|
+
);
|
|
89
|
+
const inputClasses = classNames("mobius-radio__input", radioClasses);
|
|
90
|
+
const { "aria-describedby": _ariaDescribedBy, ...rest } = otherProps;
|
|
91
|
+
const handleChange = (event) => {
|
|
92
|
+
if (setSelected) {
|
|
93
|
+
setSelected(event.target.value);
|
|
94
|
+
}
|
|
95
|
+
if (onChange) {
|
|
96
|
+
const adaptedEvent = {
|
|
97
|
+
...event.nativeEvent,
|
|
98
|
+
target: event.target
|
|
99
|
+
};
|
|
100
|
+
onChange(adaptedEvent);
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
104
|
+
/* @__PURE__ */ jsxs(Label, { className: containerClasses, children: [
|
|
105
|
+
/* @__PURE__ */ jsx(
|
|
106
|
+
"input",
|
|
107
|
+
{
|
|
108
|
+
"aria-describedby": otherProps["aria-describedby"],
|
|
109
|
+
disabled: realDisabled,
|
|
110
|
+
ref,
|
|
111
|
+
className: inputClasses,
|
|
112
|
+
value,
|
|
113
|
+
tabIndex: 0,
|
|
114
|
+
type: "radio",
|
|
115
|
+
onChange: handleChange,
|
|
116
|
+
...isControlled ? { checked: isChecked } : { defaultChecked: isChecked },
|
|
117
|
+
name,
|
|
118
|
+
required: isRequired,
|
|
119
|
+
...rest
|
|
120
|
+
}
|
|
121
|
+
),
|
|
122
|
+
isMultiline ? /* @__PURE__ */ jsxs("div", { ref: contentRef, className: "mobius-radio__content--multiline", children: [
|
|
123
|
+
/* @__PURE__ */ jsx("div", { className: "mobius-radio__content-first-line", children: label }),
|
|
124
|
+
/* @__PURE__ */ jsx("div", { className: "mobius-radio__extra-content", children })
|
|
125
|
+
] }) : /* @__PURE__ */ jsx("div", { ref: contentRef, className: "mobius-radio__content", children: label || children })
|
|
126
|
+
] }),
|
|
127
|
+
errorMessage && /* @__PURE__ */ jsx(ErrorMessage, { errorMessage })
|
|
128
|
+
] });
|
|
129
|
+
};
|
|
130
|
+
Radio.displayName = "Radio";
|
|
131
|
+
|
|
132
|
+
export {
|
|
133
|
+
Radio
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=chunk-5OFXPT4J.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/Radio/Radio.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport type { ReactNode, RefAttributes } from \"react\";\nimport {\n Children,\n isValidElement,\n useLayoutEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport type { DOMProps } from \"../../types/dom\";\nimport type { HTMLElementEvent } from \"../../types/events\";\nimport { ErrorMessage } from \"../ErrorMessage\";\nimport { Label } from \"../Label\";\nimport \"./Radio.css\";\n\nexport type RadioElementType = HTMLInputElement;\n\nexport type RadioOverflowInfo = {\n vertical: boolean;\n horizontal: boolean;\n};\n\nexport type AriaRadioProps = {\n /**\n * Defines a string value that labels the current element.\n */\n \"aria-label\"?: string;\n /**\n * Identifies the element (or elements) that labels the current element.\n */\n \"aria-labelledby\"?: string;\n /**\n * Identifies the element (or elements) that describes the object.\n */\n \"aria-describedby\"?: string;\n /**\n * Identifies the element (or elements) that provide a detailed, extended description for the object.\n */\n \"aria-details\"?: string;\n};\n\nexport interface RadioProps\n extends DOMProps, AriaRadioProps, RefAttributes<RadioElementType> {\n children?: ReactNode;\n className?: string;\n label?: ReactNode;\n errorMessage?: string;\n value: string;\n isDisabled?: boolean;\n onChange?: (event: HTMLElementEvent<RadioElementType>) => void;\n defaultChecked?: boolean;\n /**\n * Callback fired when label overflow state changes.\n * Only invoked when the Radio is in horizontal orientation to prevent infinite loops with autoStack.\n * Provides information about vertical and horizontal overflow.\n */\n onOverflow?: (overflow: RadioOverflowInfo) => void;\n // Internal:** Do not use\n groupDisabled?: boolean;\n // Internal:** Do not use\n name?: string;\n // Internal:** Do not use\n selected?: string;\n // Internal:** Do not use\n setSelected?: React.Dispatch<React.SetStateAction<string>>;\n isRequired?: boolean;\n /**\n * **Internal:** Passed via cloneElement from RadioGroup.\n * @internal\n */\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst Radio = ({ ref, ...props }: RadioProps) => {\n const {\n children,\n value,\n label,\n className,\n isDisabled,\n errorMessage,\n onChange,\n defaultChecked,\n groupDisabled,\n name,\n selected,\n setSelected,\n isRequired,\n onOverflow,\n orientation,\n ...otherProps\n } = props;\n const realDisabled = groupDisabled || isDisabled;\n const isMultiline = label && children;\n const isControlled = selected !== undefined;\n const isChecked = isControlled ? selected === value : defaultChecked;\n\n const contentRef = useRef<HTMLDivElement>(null);\n const prevOverflowRef = useRef<RadioOverflowInfo>({\n vertical: false,\n horizontal: false,\n });\n\n const hasIconFirst = useMemo(() => {\n if (!children || Children.count(children) === 0) return false;\n\n const firstChild = Children.toArray(children)[0];\n if (!isValidElement(firstChild)) return false;\n\n const props = firstChild.props as Record<string, unknown>;\n return \"icon\" in props && props.icon !== undefined;\n }, [children]);\n\n // Detect overflow and call callback\n useLayoutEffect(() => {\n if (!contentRef.current || !onOverflow) return;\n\n // Only detect overflow when in horizontal orientation\n // This prevents infinite loops when autoStack switches to vertical\n if (orientation === \"vertical\") {\n return;\n }\n\n const element = contentRef.current;\n\n // Check for content being cut off (true overflow)\n const scrollOverflowVertical = element.scrollHeight > element.clientHeight;\n const scrollOverflowHorizontal = element.scrollWidth > element.clientWidth;\n\n // Check for multi-line text wrapping by comparing height to single line height\n const styles = window.getComputedStyle(element);\n const lineHeight = parseFloat(styles.lineHeight);\n const fontSize = parseFloat(styles.fontSize);\n const singleLineHeight = isNaN(lineHeight) ? fontSize * 1.2 : lineHeight;\n\n // Tolerance multiplier to account for sub-pixel rendering and line-height variations.\n // If element height is greater than single line, text has wrapped.\n const WRAP_DETECTION_TOLERANCE = 1.1;\n const hasWrapped =\n element.clientHeight > singleLineHeight * WRAP_DETECTION_TOLERANCE;\n\n const vertical = scrollOverflowVertical || hasWrapped;\n const horizontal = scrollOverflowHorizontal;\n\n const newOverflowState = { vertical, horizontal };\n const prevOverflow = prevOverflowRef.current;\n\n // Only call callback if state actually changed\n if (\n newOverflowState.vertical !== prevOverflow.vertical ||\n newOverflowState.horizontal !== prevOverflow.horizontal\n ) {\n prevOverflowRef.current = newOverflowState;\n onOverflow(newOverflowState);\n }\n }, [label, children, onOverflow, orientation]);\n\n const radioClasses = {\n \"--is-disabled\": realDisabled,\n \"--is-selected\": selected === value,\n \"--is-multiline\": !!isMultiline,\n \"--is-required\": isRequired,\n };\n const containerClasses = classNames(\n \"mobius-radio__label\",\n radioClasses,\n className,\n { \"--has-icon-first\": hasIconFirst },\n );\n\n const inputClasses = classNames(\"mobius-radio__input\", radioClasses);\n\n // Exclude props that are passed via cloneElement in `<RadioGroup />`\n const { \"aria-describedby\": _ariaDescribedBy, ...rest } = otherProps;\n\n // Handle all interactions through onChange event\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n // Update internal state for RadioGroup\n if (setSelected) {\n setSelected(event.target.value);\n }\n\n // Call parent onChange callback\n if (onChange) {\n // Create an HTMLElementEvent-compatible object\n const adaptedEvent: HTMLElementEvent<HTMLInputElement> = {\n ...event.nativeEvent,\n target: event.target,\n };\n onChange(adaptedEvent);\n }\n };\n\n return (\n <>\n <Label className={containerClasses}>\n <input\n aria-describedby={otherProps[\"aria-describedby\"]}\n disabled={realDisabled}\n ref={ref}\n className={inputClasses}\n value={value}\n tabIndex={0}\n type=\"radio\"\n onChange={handleChange}\n {...(isControlled\n ? { checked: isChecked }\n : { defaultChecked: isChecked })}\n name={name}\n required={isRequired}\n {...rest}\n />\n {isMultiline ? (\n <div ref={contentRef} className=\"mobius-radio__content--multiline\">\n <div className=\"mobius-radio__content-first-line\">{label}</div>\n <div className=\"mobius-radio__extra-content\">{children}</div>\n </div>\n ) : (\n <div ref={contentRef} className=\"mobius-radio__content\">\n {label || children}\n </div>\n )}\n </Label>\n {errorMessage && <ErrorMessage errorMessage={errorMessage} />}\n </>\n );\n};\n\nRadio.displayName = \"Radio\";\nexport { Radio };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["props"]
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-6O77SOOB.js.map
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Checkbox
|
|
3
|
+
} from "./chunk-N4WQ6522.js";
|
|
4
|
+
import {
|
|
5
|
+
ErrorMessage
|
|
6
|
+
} from "./chunk-UQVAEWY2.js";
|
|
7
|
+
import {
|
|
8
|
+
Label
|
|
9
|
+
} from "./chunk-ZN7OWLZY.js";
|
|
10
|
+
import {
|
|
11
|
+
useValidationClasses
|
|
12
|
+
} from "./chunk-DYOFXXZD.js";
|
|
13
|
+
import {
|
|
14
|
+
spaceDelimitedList
|
|
15
|
+
} from "./chunk-DTWRSP5P.js";
|
|
16
|
+
|
|
17
|
+
// src/components/Checkbox/CheckboxGroup.tsx
|
|
18
|
+
import classNames from "classnames/dedupe";
|
|
19
|
+
import {
|
|
20
|
+
Children,
|
|
21
|
+
cloneElement,
|
|
22
|
+
isValidElement,
|
|
23
|
+
useEffect,
|
|
24
|
+
useId,
|
|
25
|
+
useRef,
|
|
26
|
+
useState
|
|
27
|
+
} from "react";
|
|
28
|
+
import "@simplybusiness/mobius/src/components/Checkbox/CheckboxGroup.css";
|
|
29
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
30
|
+
var CheckboxGroup = ({ ref, ...props }) => {
|
|
31
|
+
const {
|
|
32
|
+
label,
|
|
33
|
+
isDisabled = false,
|
|
34
|
+
isRequired,
|
|
35
|
+
isInvalid,
|
|
36
|
+
orientation = "vertical",
|
|
37
|
+
onChange,
|
|
38
|
+
className,
|
|
39
|
+
errorMessage,
|
|
40
|
+
children,
|
|
41
|
+
defaultValue = [],
|
|
42
|
+
isReadOnly,
|
|
43
|
+
itemsPerRow,
|
|
44
|
+
lastItemDisables = false,
|
|
45
|
+
...rest
|
|
46
|
+
} = props;
|
|
47
|
+
const [selected, setSelected] = useState(defaultValue);
|
|
48
|
+
const isInitializedRef = useRef(false);
|
|
49
|
+
const prevDefaultValueRef = useRef(defaultValue);
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
const hasChanged = defaultValue.length !== prevDefaultValueRef.current.length || defaultValue.some(
|
|
52
|
+
(val, index) => val !== prevDefaultValueRef.current[index]
|
|
53
|
+
);
|
|
54
|
+
if (hasChanged || !isInitializedRef.current) {
|
|
55
|
+
setSelected(defaultValue);
|
|
56
|
+
prevDefaultValueRef.current = defaultValue;
|
|
57
|
+
isInitializedRef.current = true;
|
|
58
|
+
}
|
|
59
|
+
}, [defaultValue]);
|
|
60
|
+
const checkboxGroupClasses = classNames(
|
|
61
|
+
"mobius",
|
|
62
|
+
"mobius-checkbox-group",
|
|
63
|
+
className,
|
|
64
|
+
{
|
|
65
|
+
"--is-horizontal": orientation === "horizontal",
|
|
66
|
+
"--is-vertical": orientation === "vertical",
|
|
67
|
+
"--is-required": typeof isRequired === "boolean" && isRequired,
|
|
68
|
+
"--is-optional": typeof isRequired === "boolean" && !isRequired
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
const validationClasses = useValidationClasses({ isInvalid });
|
|
72
|
+
const labelClasses = classNames(
|
|
73
|
+
{
|
|
74
|
+
"--is-disabled": isDisabled
|
|
75
|
+
},
|
|
76
|
+
validationClasses
|
|
77
|
+
);
|
|
78
|
+
const errorMessageId = useId();
|
|
79
|
+
const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
|
|
80
|
+
const describedBy = spaceDelimitedList([
|
|
81
|
+
shouldErrorMessageShow,
|
|
82
|
+
props["aria-describedby"]
|
|
83
|
+
]);
|
|
84
|
+
const labelId = useId();
|
|
85
|
+
const handleChange = (event, isLastItem = false) => {
|
|
86
|
+
const {
|
|
87
|
+
target: { value, checked }
|
|
88
|
+
} = event;
|
|
89
|
+
let newValue = [...selected];
|
|
90
|
+
if (!checked) {
|
|
91
|
+
newValue = selected.filter((item) => item !== value);
|
|
92
|
+
}
|
|
93
|
+
if (checked) {
|
|
94
|
+
newValue = [...selected, value];
|
|
95
|
+
}
|
|
96
|
+
if (checked && lastItemDisables && isLastItem) {
|
|
97
|
+
newValue = [value];
|
|
98
|
+
}
|
|
99
|
+
setSelected(newValue);
|
|
100
|
+
onChange?.(newValue);
|
|
101
|
+
};
|
|
102
|
+
const childrenArray = Children.toArray(children);
|
|
103
|
+
const lastCheckbox = childrenArray.filter(
|
|
104
|
+
(child) => isValidElement(child) && child.type === Checkbox
|
|
105
|
+
).pop();
|
|
106
|
+
const lastCheckboxIsChecked = lastCheckbox && selected.includes(lastCheckbox.props.value);
|
|
107
|
+
return /* @__PURE__ */ jsxs(
|
|
108
|
+
"div",
|
|
109
|
+
{
|
|
110
|
+
...rest,
|
|
111
|
+
"aria-labelledby": props["aria-labelledby"] || labelId,
|
|
112
|
+
ref,
|
|
113
|
+
className: checkboxGroupClasses,
|
|
114
|
+
role: "group",
|
|
115
|
+
style: {
|
|
116
|
+
"--checkbox-items-per-row": itemsPerRow || Children.count(children)
|
|
117
|
+
},
|
|
118
|
+
children: [
|
|
119
|
+
label && /* @__PURE__ */ jsx(Label, { elementType: "span", id: labelId, className: labelClasses, children: label }),
|
|
120
|
+
/* @__PURE__ */ jsx("div", { className: "mobius-checkbox-group__wrapper", children: childrenArray.map((child) => {
|
|
121
|
+
if (isValidElement(child)) {
|
|
122
|
+
const isLastItem = child === lastCheckbox;
|
|
123
|
+
const isChildDisabled = isDisabled || lastItemDisables && lastCheckboxIsChecked && !isLastItem;
|
|
124
|
+
const childProps = child.props;
|
|
125
|
+
return cloneElement(
|
|
126
|
+
child,
|
|
127
|
+
{
|
|
128
|
+
isDisabled: isChildDisabled,
|
|
129
|
+
isRequired,
|
|
130
|
+
isReadOnly,
|
|
131
|
+
isInvalid,
|
|
132
|
+
isLastItem,
|
|
133
|
+
selected: selected.includes(childProps.value),
|
|
134
|
+
onChange: childProps.onChange || handleChange,
|
|
135
|
+
"aria-describedby": describedBy
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
return child;
|
|
140
|
+
}) }),
|
|
141
|
+
errorMessage && /* @__PURE__ */ jsx(ErrorMessage, { id: errorMessageId, errorMessage })
|
|
142
|
+
]
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
};
|
|
146
|
+
CheckboxGroup.displayName = "CheckboxGroup";
|
|
147
|
+
|
|
148
|
+
export {
|
|
149
|
+
CheckboxGroup
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=chunk-AFU7BFCD.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/components/Checkbox/CheckboxGroup.tsx"],
|
|
4
|
+
"sourcesContent": ["\"use client\";\n\nimport classNames from \"classnames/dedupe\";\nimport {\n type ChangeEvent,\n type ReactElement,\n Children,\n cloneElement,\n isValidElement,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { useValidationClasses } from \"../../hooks\";\nimport { spaceDelimitedList } from \"../../utils/spaceDelimitedList\";\nimport { ErrorMessage } from \"../ErrorMessage\";\nimport { Label } from \"../Label\";\nimport { Checkbox } from \"./Checkbox\";\nimport type { CheckboxElementType, CheckboxGroupProps } from \"./types\";\nimport \"./CheckboxGroup.css\";\n\nexport const CheckboxGroup = ({ ref, ...props }: CheckboxGroupProps) => {\n const {\n label,\n isDisabled = false,\n isRequired,\n isInvalid,\n orientation = \"vertical\",\n onChange,\n className,\n errorMessage,\n children,\n defaultValue = [],\n isReadOnly,\n itemsPerRow,\n lastItemDisables = false,\n ...rest\n } = props;\n const [selected, setSelected] = useState<string[]>(defaultValue);\n\n // Handle controlled behavior - update state when defaultValue prop changes\n // Use a ref to track if we've initialized to avoid infinite re-renders\n const isInitializedRef = useRef(false);\n const prevDefaultValueRef = useRef<string[]>(defaultValue);\n\n useEffect(() => {\n // Only update if defaultValue has actually changed (shallow comparison)\n const hasChanged =\n defaultValue.length !== prevDefaultValueRef.current.length ||\n defaultValue.some(\n (val, index) => val !== prevDefaultValueRef.current[index],\n );\n\n if (hasChanged || !isInitializedRef.current) {\n setSelected(defaultValue);\n prevDefaultValueRef.current = defaultValue;\n isInitializedRef.current = true;\n }\n }, [defaultValue]);\n\n const checkboxGroupClasses = classNames(\n \"mobius\",\n \"mobius-checkbox-group\",\n className,\n {\n \"--is-horizontal\": orientation === \"horizontal\",\n \"--is-vertical\": orientation === \"vertical\",\n \"--is-required\": typeof isRequired === \"boolean\" && isRequired,\n \"--is-optional\": typeof isRequired === \"boolean\" && !isRequired,\n },\n );\n const validationClasses = useValidationClasses({ isInvalid });\n const labelClasses = classNames(\n {\n \"--is-disabled\": isDisabled,\n },\n validationClasses,\n );\n const errorMessageId = useId();\n const shouldErrorMessageShow = errorMessage ? errorMessageId : undefined;\n const describedBy = spaceDelimitedList([\n shouldErrorMessageShow,\n props[\"aria-describedby\"],\n ]);\n const labelId = useId();\n\n const handleChange = (\n event: ChangeEvent<CheckboxElementType>,\n isLastItem = false,\n ) => {\n const {\n target: { value, checked },\n } = event;\n let newValue = [...selected];\n\n if (!checked) {\n newValue = selected.filter(item => item !== value);\n }\n\n if (checked) {\n newValue = [...selected, value];\n }\n\n if (checked && lastItemDisables && isLastItem) {\n newValue = [value];\n }\n\n setSelected(newValue);\n onChange?.(newValue);\n };\n\n const childrenArray = Children.toArray(children);\n const lastCheckbox = childrenArray\n .filter(\n child =>\n isValidElement(child) && (child as ReactElement).type === Checkbox,\n )\n .pop() as ReactElement<CheckboxElementType> | undefined;\n const lastCheckboxIsChecked =\n lastCheckbox && selected.includes(lastCheckbox.props.value);\n\n return (\n <div\n {...rest}\n aria-labelledby={props[\"aria-labelledby\"] || labelId}\n ref={ref}\n className={checkboxGroupClasses}\n role=\"group\"\n style={\n {\n \"--checkbox-items-per-row\": itemsPerRow || Children.count(children),\n } as React.CSSProperties\n }\n >\n {label && (\n <Label elementType=\"span\" id={labelId} className={labelClasses}>\n {label}\n </Label>\n )}\n <div className=\"mobius-checkbox-group__wrapper\">\n {childrenArray.map(child => {\n if (isValidElement(child)) {\n // lastItemDisables support\n const isLastItem = child === lastCheckbox;\n const isChildDisabled =\n isDisabled ||\n (lastItemDisables && lastCheckboxIsChecked && !isLastItem);\n\n const childProps = child.props as {\n value: string;\n onChange?: (event: ChangeEvent<HTMLInputElement>) => void;\n };\n\n return cloneElement(\n child as ReactElement,\n {\n isDisabled: isChildDisabled,\n isRequired,\n isReadOnly,\n isInvalid,\n isLastItem,\n selected: selected.includes(childProps.value),\n onChange: childProps.onChange || handleChange,\n \"aria-describedby\": describedBy,\n } as Record<string, unknown>,\n );\n }\n\n return child;\n })}\n </div>\n {errorMessage && (\n <ErrorMessage id={errorMessageId} errorMessage={errorMessage} />\n )}\n </div>\n );\n};\n\nCheckboxGroup.displayName = \"CheckboxGroup\";\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-BGR2OTTR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=chunk-BIGO5EVC.js.map
|