@simplybusiness/mobius 5.8.0 → 5.9.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/CHANGELOG.md +17 -0
- package/dist/cjs/components/Combobox/Combobox.js +35 -22
- package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
- package/dist/cjs/components/Combobox/Listbox.js +2 -4
- package/dist/cjs/components/Combobox/Listbox.js.map +1 -1
- package/dist/cjs/components/Combobox/fixtures.js +195 -4
- package/dist/cjs/components/Combobox/fixtures.js.map +1 -1
- package/dist/cjs/components/Combobox/useComboboxOptions.js +69 -0
- package/dist/cjs/components/Combobox/useComboboxOptions.js.map +1 -0
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +2 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cjs/hooks/index.js +2 -0
- package/dist/cjs/hooks/index.js.map +1 -1
- package/dist/cjs/hooks/useDebouncedValue/index.js +20 -0
- package/dist/cjs/hooks/useDebouncedValue/index.js.map +1 -0
- package/dist/cjs/hooks/useDebouncedValue/useDebouncedValue.js +36 -0
- package/dist/cjs/hooks/useDebouncedValue/useDebouncedValue.js.map +1 -0
- package/dist/cjs/hooks/useOnUnmount/index.js +20 -0
- package/dist/cjs/hooks/useOnUnmount/index.js.map +1 -0
- package/dist/cjs/hooks/useOnUnmount/useOnUnmount.js +27 -0
- package/dist/cjs/hooks/useOnUnmount/useOnUnmount.js.map +1 -0
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/components/Combobox/Combobox.js +37 -24
- package/dist/esm/components/Combobox/Combobox.js.map +1 -1
- package/dist/esm/components/Combobox/Listbox.js +2 -4
- package/dist/esm/components/Combobox/Listbox.js.map +1 -1
- package/dist/esm/components/Combobox/fixtures.js +189 -1
- package/dist/esm/components/Combobox/fixtures.js.map +1 -1
- package/dist/esm/components/Combobox/types.js.map +1 -1
- package/dist/esm/components/Combobox/useComboboxOptions.js +59 -0
- package/dist/esm/components/Combobox/useComboboxOptions.js.map +1 -0
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.js +2 -1
- package/dist/esm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/esm/hooks/index.js +2 -0
- package/dist/esm/hooks/index.js.map +1 -1
- package/dist/esm/hooks/useDebouncedValue/index.js +3 -0
- package/dist/esm/hooks/useDebouncedValue/index.js.map +1 -0
- package/dist/esm/hooks/useDebouncedValue/useDebouncedValue.js +26 -0
- package/dist/esm/hooks/useDebouncedValue/useDebouncedValue.js.map +1 -0
- package/dist/esm/hooks/useOnUnmount/index.js +3 -0
- package/dist/esm/hooks/useOnUnmount/index.js.map +1 -0
- package/dist/esm/hooks/useOnUnmount/useOnUnmount.js +17 -0
- package/dist/esm/hooks/useOnUnmount/useOnUnmount.js.map +1 -0
- package/dist/types/components/Combobox/Combobox.stories.d.ts +1 -0
- package/dist/types/components/Combobox/Listbox.d.ts +1 -2
- package/dist/types/components/Combobox/fixtures.d.ts +8 -1
- package/dist/types/components/Combobox/types.d.ts +1 -1
- package/dist/types/components/Combobox/useComboboxOptions.d.ts +10 -0
- package/dist/types/components/Combobox/useComboboxOptions.test.d.ts +1 -0
- package/dist/types/components/VisuallyHidden/VisuallyHidden.d.ts +3 -1
- package/dist/types/hooks/index.d.ts +2 -0
- package/dist/types/hooks/useDebouncedValue/index.d.ts +1 -0
- package/dist/types/hooks/useDebouncedValue/useDebouncedValue.d.ts +1 -0
- package/dist/types/hooks/useDebouncedValue/useDebouncedValue.test.d.ts +1 -0
- package/dist/types/hooks/useOnUnmount/index.d.ts +1 -0
- package/dist/types/hooks/useOnUnmount/useOnUnmount.d.ts +1 -0
- package/dist/types/hooks/useOnUnmount/useOnUnmount.test.d.ts +1 -0
- package/package.json +2 -2
- package/src/components/Combobox/Combobox.css +1 -1
- package/src/components/Combobox/Combobox.stories.tsx +26 -2
- package/src/components/Combobox/Combobox.test.tsx +679 -732
- package/src/components/Combobox/Combobox.tsx +44 -22
- package/src/components/Combobox/Listbox.tsx +1 -5
- package/src/components/Combobox/fixtures.tsx +58 -1
- package/src/components/Combobox/loading-dots.svg +27 -0
- package/src/components/Combobox/types.tsx +1 -1
- package/src/components/Combobox/useComboboxOptions.test.ts +423 -0
- package/src/components/Combobox/useComboboxOptions.ts +67 -0
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +10 -2
- package/src/hooks/index.tsx +2 -0
- package/src/hooks/useDebouncedValue/index.tsx +1 -0
- package/src/hooks/useDebouncedValue/useDebouncedValue.test.tsx +62 -0
- package/src/hooks/useDebouncedValue/useDebouncedValue.tsx +25 -0
- package/src/hooks/useOnUnmount/index.tsx +1 -0
- package/src/hooks/useOnUnmount/useOnUnmount.test.tsx +37 -0
- package/src/hooks/useOnUnmount/useOnUnmount.tsx +19 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.9.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 3a925d9: Add async support to Combobox
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- e3a86f9: Display combobox label
|
|
12
|
+
|
|
13
|
+
## 5.8.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [78d44a8]
|
|
18
|
+
- @simplybusiness/icons@4.16.0
|
|
19
|
+
|
|
3
20
|
## 5.8.0
|
|
4
21
|
|
|
5
22
|
### Minor Changes
|
|
@@ -11,9 +11,12 @@ Object.defineProperty(exports, "Combobox", {
|
|
|
11
11
|
const _jsxruntime = require("react/jsx-runtime");
|
|
12
12
|
const _dedupe = /*#__PURE__*/ _interop_require_default(require("classnames/dedupe"));
|
|
13
13
|
const _react = require("react");
|
|
14
|
+
const _hooks = require("../../hooks");
|
|
14
15
|
const _TextField = require("../TextField");
|
|
16
|
+
const _VisuallyHidden = require("../VisuallyHidden");
|
|
15
17
|
const _Listbox = require("./Listbox");
|
|
16
18
|
const _useComboboxHighlight = require("./useComboboxHighlight");
|
|
19
|
+
const _useComboboxOptions = require("./useComboboxOptions");
|
|
17
20
|
const _utils = require("./utils");
|
|
18
21
|
function _interop_require_default(obj) {
|
|
19
22
|
return obj && obj.__esModule ? obj : {
|
|
@@ -21,31 +24,25 @@ function _interop_require_default(obj) {
|
|
|
21
24
|
};
|
|
22
25
|
}
|
|
23
26
|
const Combobox = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
24
|
-
const { defaultValue, options, asyncOptions, onSelected, className, placeholder, icon } = props;
|
|
27
|
+
const { defaultValue, options, asyncOptions, delay, minLength, onSelected, className, placeholder, icon, ...otherProps } = props;
|
|
25
28
|
const fallbackRef = (0, _react.useRef)(null);
|
|
26
29
|
const [inputValue, setInputValue] = (0, _react.useState)(defaultValue || "");
|
|
27
30
|
const [isOpen, setIsOpen] = (0, _react.useState)(false);
|
|
28
|
-
const
|
|
31
|
+
const { filteredOptions, isLoading } = (0, _useComboboxOptions.useComboboxOptions)({
|
|
32
|
+
options,
|
|
33
|
+
asyncOptions,
|
|
34
|
+
inputValue,
|
|
35
|
+
delay,
|
|
36
|
+
minLength
|
|
37
|
+
});
|
|
29
38
|
const { highlightedIndex, highlightedGroupIndex, highlightNextOption, highlightPreviousOption, highlightFirstOption, highlightLastOption, clearHighlight } = (0, _useComboboxHighlight.useComboboxHighlight)(filteredOptions);
|
|
30
39
|
const inputRef = ref || fallbackRef;
|
|
31
40
|
const listboxId = (0, _react.useId)();
|
|
41
|
+
const statusId = (0, _react.useId)();
|
|
32
42
|
const blurTimeoutRef = (0, _react.useRef)(null);
|
|
33
|
-
|
|
34
|
-
const fetchOptions = async ()=>{
|
|
35
|
-
if (asyncOptions) {
|
|
36
|
-
const result = await asyncOptions(inputValue);
|
|
37
|
-
setFilteredOptions(result);
|
|
38
|
-
} else {
|
|
39
|
-
setFilteredOptions((0, _utils.filterOptions)(options, inputValue));
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
fetchOptions();
|
|
43
|
-
}, [
|
|
44
|
-
inputValue,
|
|
45
|
-
options,
|
|
46
|
-
asyncOptions
|
|
47
|
-
]);
|
|
43
|
+
const showListbox = isOpen && filteredOptions.length > 0;
|
|
48
44
|
const handleFocus = ()=>{
|
|
45
|
+
if (filteredOptions.length === 0) return;
|
|
49
46
|
if (blurTimeoutRef.current) {
|
|
50
47
|
clearTimeout(blurTimeoutRef.current);
|
|
51
48
|
blurTimeoutRef.current = null;
|
|
@@ -57,6 +54,11 @@ const Combobox = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
57
54
|
setIsOpen(false);
|
|
58
55
|
}, 150);
|
|
59
56
|
};
|
|
57
|
+
(0, _hooks.useOnUnmount)(()=>{
|
|
58
|
+
if (blurTimeoutRef.current) {
|
|
59
|
+
clearTimeout(blurTimeoutRef.current);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
60
62
|
const handleInputChange = (e)=>{
|
|
61
63
|
const newValue = e.target.value;
|
|
62
64
|
setInputValue(newValue);
|
|
@@ -68,7 +70,7 @@ const Combobox = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
68
70
|
if (!value) return;
|
|
69
71
|
setIsOpen(false);
|
|
70
72
|
setInputValue(value);
|
|
71
|
-
onSelected === null || onSelected === void 0 ? void 0 : onSelected(
|
|
73
|
+
onSelected === null || onSelected === void 0 ? void 0 : onSelected(option);
|
|
72
74
|
};
|
|
73
75
|
function getHighlightedOption() {
|
|
74
76
|
if (highlightedIndex === -1) return undefined;
|
|
@@ -115,12 +117,23 @@ const Combobox = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
115
117
|
}
|
|
116
118
|
};
|
|
117
119
|
const classes = (0, _dedupe.default)("mobius mobius-combobox", {
|
|
118
|
-
expanded: isOpen
|
|
120
|
+
"mobius-combobox--is-expanded": isOpen,
|
|
121
|
+
"mobius-combobox--is-loading": isLoading
|
|
119
122
|
}, className);
|
|
120
123
|
return /*#__PURE__*/ (0, _jsxruntime.jsxs)("div", {
|
|
124
|
+
"data-testid": "mobius-combobox__wrapper",
|
|
121
125
|
className: classes,
|
|
122
126
|
children: [
|
|
127
|
+
isLoading && /*#__PURE__*/ (0, _jsxruntime.jsx)(_VisuallyHidden.VisuallyHidden, {
|
|
128
|
+
role: "status",
|
|
129
|
+
"aria-live": "polite",
|
|
130
|
+
id: statusId,
|
|
131
|
+
elementType: "div",
|
|
132
|
+
className: "mobius-combobox__status",
|
|
133
|
+
children: "Loading options"
|
|
134
|
+
}),
|
|
123
135
|
/*#__PURE__*/ (0, _jsxruntime.jsx)(_TextField.TextField, {
|
|
136
|
+
...otherProps,
|
|
124
137
|
className: "mobius-combobox__input",
|
|
125
138
|
role: "combobox",
|
|
126
139
|
value: inputValue,
|
|
@@ -130,6 +143,7 @@ const Combobox = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
130
143
|
onKeyDown: handleKeyDown,
|
|
131
144
|
onChange: handleInputChange,
|
|
132
145
|
autoComplete: "off",
|
|
146
|
+
"aria-describedby": isLoading ? statusId : undefined,
|
|
133
147
|
"aria-autocomplete": "list",
|
|
134
148
|
"aria-haspopup": "listbox",
|
|
135
149
|
"aria-controls": listboxId,
|
|
@@ -138,13 +152,12 @@ const Combobox = /*#__PURE__*/ (0, _react.forwardRef)((props, ref)=>{
|
|
|
138
152
|
prefixInside: icon,
|
|
139
153
|
ref: inputRef
|
|
140
154
|
}),
|
|
141
|
-
|
|
155
|
+
showListbox && /*#__PURE__*/ (0, _jsxruntime.jsx)(_Listbox.Listbox, {
|
|
142
156
|
id: listboxId,
|
|
143
157
|
options: filteredOptions,
|
|
144
158
|
highlightedIndex: highlightedIndex,
|
|
145
159
|
highlightedGroupIndex: highlightedGroupIndex,
|
|
146
|
-
onOptionSelect: handleOptionSelect
|
|
147
|
-
expanded: isOpen
|
|
160
|
+
onOptionSelect: handleOptionSelect
|
|
148
161
|
})
|
|
149
162
|
]
|
|
150
163
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import classNames from \"classnames/dedupe\";\nimport { forwardRef,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Combobox/Combobox.tsx"],"sourcesContent":["import classNames from \"classnames/dedupe\";\nimport { forwardRef, useId, useRef, useState } from \"react\";\nimport { useOnUnmount } from \"../../hooks\";\nimport type { ForwardedRefComponent } from \"../../types\";\nimport { TextField } from \"../TextField\";\nimport { VisuallyHidden } from \"../VisuallyHidden\";\nimport { Listbox } from \"./Listbox\"; // Import Listbox component\nimport type {\n ComboboxElementType,\n ComboboxOption,\n ComboboxProps,\n ComboboxRef,\n} from \"./types\";\nimport { useComboboxHighlight } from \"./useComboboxHighlight\";\nimport { useComboboxOptions } from \"./useComboboxOptions\";\nimport { getOptionValue, isOptionGroup } from \"./utils\";\n\nexport const Combobox: ForwardedRefComponent<\n ComboboxProps,\n ComboboxElementType\n> = forwardRef((props: ComboboxProps, ref: ComboboxRef) => {\n const {\n defaultValue,\n options,\n asyncOptions,\n delay,\n minLength,\n onSelected,\n className,\n placeholder,\n icon,\n ...otherProps\n } = props;\n\n const fallbackRef = useRef<HTMLInputElement>(null);\n const [inputValue, setInputValue] = useState(defaultValue || \"\");\n const [isOpen, setIsOpen] = useState(false);\n const { filteredOptions, isLoading } = useComboboxOptions({\n options,\n asyncOptions,\n inputValue,\n delay,\n minLength,\n });\n const {\n highlightedIndex,\n highlightedGroupIndex,\n highlightNextOption,\n highlightPreviousOption,\n highlightFirstOption,\n highlightLastOption,\n clearHighlight,\n } = useComboboxHighlight(filteredOptions);\n\n const inputRef = ref || fallbackRef;\n const listboxId = useId();\n const statusId = useId();\n const blurTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const showListbox = isOpen && filteredOptions.length > 0;\n\n const handleFocus = () => {\n if (filteredOptions.length === 0) return;\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = null;\n }\n setIsOpen(true);\n };\n\n const handleBlur = () => {\n blurTimeoutRef.current = setTimeout(() => {\n setIsOpen(false);\n }, 150);\n };\n\n useOnUnmount(() => {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n }\n });\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setInputValue(newValue);\n setIsOpen(true);\n clearHighlight();\n };\n\n const handleOptionSelect = (option: ComboboxOption) => {\n const value = getOptionValue(option);\n if (!value) return;\n setIsOpen(false);\n setInputValue(value);\n onSelected?.(option);\n };\n\n function getHighlightedOption() {\n if (highlightedIndex === -1) return undefined;\n\n if (isOptionGroup(filteredOptions)) {\n const group = filteredOptions[highlightedGroupIndex];\n return group?.options[highlightedIndex];\n }\n\n return filteredOptions[highlightedIndex];\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setIsOpen(true);\n highlightNextOption();\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setIsOpen(true);\n highlightPreviousOption();\n break;\n case \"Home\":\n e.preventDefault();\n setIsOpen(true);\n highlightFirstOption();\n break;\n case \"End\":\n e.preventDefault();\n setIsOpen(true);\n highlightLastOption();\n break;\n case \"Enter\":\n e.preventDefault();\n if (isOpen) {\n handleOptionSelect(getHighlightedOption()!);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setIsOpen(false);\n clearHighlight();\n break;\n default:\n // Do nothing\n }\n };\n\n const classes = classNames(\n \"mobius mobius-combobox\",\n {\n \"mobius-combobox--is-expanded\": isOpen,\n \"mobius-combobox--is-loading\": isLoading,\n },\n className,\n );\n\n return (\n <div data-testid=\"mobius-combobox__wrapper\" className={classes}>\n {isLoading && (\n <VisuallyHidden\n role=\"status\"\n aria-live=\"polite\"\n id={statusId}\n elementType=\"div\"\n className=\"mobius-combobox__status\"\n >\n Loading options\n </VisuallyHidden>\n )}\n <TextField\n {...otherProps}\n className=\"mobius-combobox__input\"\n role=\"combobox\"\n value={inputValue}\n placeholder={placeholder}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n onChange={handleInputChange}\n autoComplete=\"off\"\n aria-describedby={isLoading ? statusId : undefined}\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n aria-expanded={isOpen}\n aria-activedescendant={\n highlightedIndex === -1\n ? undefined\n : `${listboxId}-option-${highlightedGroupIndex}-${highlightedIndex}`\n }\n prefixInside={icon}\n ref={inputRef}\n />\n {showListbox && (\n <Listbox\n id={listboxId}\n options={filteredOptions}\n highlightedIndex={highlightedIndex}\n highlightedGroupIndex={highlightedGroupIndex}\n onOptionSelect={handleOptionSelect}\n />\n )}\n </div>\n );\n});\n"],"names":["Combobox","forwardRef","props","ref","defaultValue","options","asyncOptions","delay","minLength","onSelected","className","placeholder","icon","otherProps","fallbackRef","useRef","inputValue","setInputValue","useState","isOpen","setIsOpen","filteredOptions","isLoading","useComboboxOptions","highlightedIndex","highlightedGroupIndex","highlightNextOption","highlightPreviousOption","highlightFirstOption","highlightLastOption","clearHighlight","useComboboxHighlight","inputRef","listboxId","useId","statusId","blurTimeoutRef","showListbox","length","handleFocus","current","clearTimeout","handleBlur","setTimeout","useOnUnmount","handleInputChange","e","newValue","target","value","handleOptionSelect","option","getOptionValue","getHighlightedOption","undefined","isOptionGroup","group","handleKeyDown","key","preventDefault","classes","classNames","div","data-testid","VisuallyHidden","role","aria-live","id","elementType","TextField","onFocus","onBlur","onKeyDown","onChange","autoComplete","aria-describedby","aria-autocomplete","aria-haspopup","aria-controls","aria-expanded","aria-activedescendant","prefixInside","Listbox","onOptionSelect"],"mappings":"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"}
|
|
@@ -17,10 +17,8 @@ function _interop_require_default(obj) {
|
|
|
17
17
|
default: obj
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
|
-
const Listbox = ({ id, options, highlightedIndex, highlightedGroupIndex, onOptionSelect
|
|
21
|
-
const classes = (0, _classnames.default)("mobius-combobox__list"
|
|
22
|
-
expanded
|
|
23
|
-
});
|
|
20
|
+
const Listbox = ({ id, options, highlightedIndex, highlightedGroupIndex, onOptionSelect })=>{
|
|
21
|
+
const classes = (0, _classnames.default)("mobius-combobox__list");
|
|
24
22
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)("div", {
|
|
25
23
|
role: "listbox",
|
|
26
24
|
id: id,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Combobox/Listbox.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Option } from \"./Option\";\nimport type { ComboboxOption, ComboboxOptions } from \"./types\";\nimport { isOptionGroup } from \"./utils\";\n\nexport type ListboxProps = {\n id: string;\n options: ComboboxOptions;\n highlightedIndex: number;\n highlightedGroupIndex: number;\n onOptionSelect: (option: ComboboxOption) => void;\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Combobox/Listbox.tsx"],"sourcesContent":["import classNames from \"classnames\";\nimport { Option } from \"./Option\";\nimport type { ComboboxOption, ComboboxOptions } from \"./types\";\nimport { isOptionGroup } from \"./utils\";\n\nexport type ListboxProps = {\n id: string;\n options: ComboboxOptions;\n highlightedIndex: number;\n highlightedGroupIndex: number;\n onOptionSelect: (option: ComboboxOption) => void;\n};\n\nexport const Listbox = ({\n id,\n options,\n highlightedIndex,\n highlightedGroupIndex,\n onOptionSelect,\n}: ListboxProps) => {\n const classes = classNames(\"mobius-combobox__list\");\n\n return (\n <div role=\"listbox\" id={id} className={classes}>\n {isOptionGroup(options)\n ? options.map((option, groupIndex) => (\n <ul\n role=\"group\"\n key={option.heading}\n aria-labelledby={`${id}-group-${groupIndex}`}\n className=\"mobius-combobox__group\"\n >\n <li\n role=\"presentation\"\n id={`${id}-group-${groupIndex}`}\n className=\"mobius-combobox__group-label\"\n >\n {option.heading}\n </li>\n {option.options.map((groupOption, index) => (\n <Option\n // eslint-disable-next-line react/no-array-index-key\n key={`${id}-option-${groupIndex}-${index}`}\n option={groupOption}\n index={index}\n groupIndex={groupIndex}\n isHighlighted={\n highlightedIndex === index &&\n highlightedGroupIndex === groupIndex\n }\n onOptionSelect={onOptionSelect}\n id={id}\n />\n ))}\n </ul>\n ))\n : options.map((option, index) => (\n <Option\n // eslint-disable-next-line react/no-array-index-key\n key={index}\n option={option}\n index={index}\n isHighlighted={highlightedIndex === index}\n onOptionSelect={onOptionSelect}\n id={id}\n />\n ))}\n </div>\n );\n};\n"],"names":["Listbox","id","options","highlightedIndex","highlightedGroupIndex","onOptionSelect","classes","classNames","div","role","className","isOptionGroup","map","option","groupIndex","ul","aria-labelledby","li","heading","groupOption","index","Option","isHighlighted"],"mappings":";;;;+BAaaA;;;eAAAA;;;;mEAbU;wBACA;uBAEO;;;;;;AAUvB,MAAMA,UAAU,CAAC,EACtBC,EAAE,EACFC,OAAO,EACPC,gBAAgB,EAChBC,qBAAqB,EACrBC,cAAc,EACD;IACb,MAAMC,UAAUC,IAAAA,mBAAU,EAAC;IAE3B,qBACE,qBAACC;QAAIC,MAAK;QAAUR,IAAIA;QAAIS,WAAWJ;kBACpCK,IAAAA,oBAAa,EAACT,WACXA,QAAQU,GAAG,CAAC,CAACC,QAAQC,2BACnB,sBAACC;gBACCN,MAAK;gBAELO,mBAAiB,GAAGf,GAAG,OAAO,EAAEa,YAAY;gBAC5CJ,WAAU;;kCAEV,qBAACO;wBACCR,MAAK;wBACLR,IAAI,GAAGA,GAAG,OAAO,EAAEa,YAAY;wBAC/BJ,WAAU;kCAETG,OAAOK,OAAO;;oBAEhBL,OAAOX,OAAO,CAACU,GAAG,CAAC,CAACO,aAAaC,sBAChC,qBAACC,cAAM;4BAGLR,QAAQM;4BACRC,OAAOA;4BACPN,YAAYA;4BACZQ,eACEnB,qBAAqBiB,SACrBhB,0BAA0BU;4BAE5BT,gBAAgBA;4BAChBJ,IAAIA;2BATC,GAAGA,GAAG,QAAQ,EAAEa,WAAW,CAAC,EAAEM,OAAO;;eAdzCP,OAAOK,OAAO,KA4BvBhB,QAAQU,GAAG,CAAC,CAACC,QAAQO,sBACnB,qBAACC,cAAM;gBAGLR,QAAQA;gBACRO,OAAOA;gBACPE,eAAenB,qBAAqBiB;gBACpCf,gBAAgBA;gBAChBJ,IAAIA;eALCmB;;AAUnB"}
|
|
@@ -12,12 +12,15 @@ _export(exports, {
|
|
|
12
12
|
FRUITS: function() {
|
|
13
13
|
return FRUITS;
|
|
14
14
|
},
|
|
15
|
-
FRUITS_GROUPS: function() {
|
|
16
|
-
return FRUITS_GROUPS;
|
|
17
|
-
},
|
|
18
15
|
FRUITS_OBJECTS: function() {
|
|
19
16
|
return FRUITS_OBJECTS;
|
|
20
17
|
},
|
|
18
|
+
FRUITS_OBJECT_GROUPS: function() {
|
|
19
|
+
return FRUITS_OBJECT_GROUPS;
|
|
20
|
+
},
|
|
21
|
+
FRUITS_STRING_GROUPS: function() {
|
|
22
|
+
return FRUITS_STRING_GROUPS;
|
|
23
|
+
},
|
|
21
24
|
US_STATES: function() {
|
|
22
25
|
return US_STATES;
|
|
23
26
|
}
|
|
@@ -246,7 +249,7 @@ const FRUITS_OBJECTS = [
|
|
|
246
249
|
value: "watermelon"
|
|
247
250
|
}
|
|
248
251
|
];
|
|
249
|
-
const
|
|
252
|
+
const FRUITS_STRING_GROUPS = [
|
|
250
253
|
{
|
|
251
254
|
heading: "A-L",
|
|
252
255
|
options: [
|
|
@@ -302,6 +305,194 @@ const FRUITS_GROUPS = [
|
|
|
302
305
|
]
|
|
303
306
|
}
|
|
304
307
|
];
|
|
308
|
+
const FRUITS_OBJECT_GROUPS = [
|
|
309
|
+
{
|
|
310
|
+
heading: "A-L",
|
|
311
|
+
options: [
|
|
312
|
+
{
|
|
313
|
+
label: "Apple",
|
|
314
|
+
value: "apple"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
label: "Apricot",
|
|
318
|
+
value: "apricot"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
label: "Avocado",
|
|
322
|
+
value: "avocado"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
label: "Banana",
|
|
326
|
+
value: "banana"
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
label: "Blackberry",
|
|
330
|
+
value: "blackberry"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
label: "Blueberry",
|
|
334
|
+
value: "blueberry"
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
label: "Cantaloupe",
|
|
338
|
+
value: "cantaloupe"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
label: "Cherry",
|
|
342
|
+
value: "cherry"
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
label: "Clementine",
|
|
346
|
+
value: "clementine"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
label: "Coconut",
|
|
350
|
+
value: "coconut"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
label: "Cranberry",
|
|
354
|
+
value: "cranberry"
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
label: "Date",
|
|
358
|
+
value: "date"
|
|
359
|
+
},
|
|
360
|
+
{
|
|
361
|
+
label: "Dragonfruit",
|
|
362
|
+
value: "dragonfruit"
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
label: "Durian",
|
|
366
|
+
value: "durian"
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
label: "Elderberry",
|
|
370
|
+
value: "elderberry"
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
label: "Fig",
|
|
374
|
+
value: "fig"
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
label: "Grape",
|
|
378
|
+
value: "grape"
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
label: "Grapefruit",
|
|
382
|
+
value: "grapefruit"
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
label: "Guava",
|
|
386
|
+
value: "guava"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
label: "Honeydew",
|
|
390
|
+
value: "honeydew"
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
label: "Jackfruit",
|
|
394
|
+
value: "jackfruit"
|
|
395
|
+
},
|
|
396
|
+
{
|
|
397
|
+
label: "Kiwi",
|
|
398
|
+
value: "kiwi"
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
label: "Kumquat",
|
|
402
|
+
value: "kumquat"
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
label: "Lemon",
|
|
406
|
+
value: "lemon"
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
label: "Lime",
|
|
410
|
+
value: "lime"
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
label: "Lychee",
|
|
414
|
+
value: "lychee"
|
|
415
|
+
}
|
|
416
|
+
]
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
heading: "M-Z",
|
|
420
|
+
options: [
|
|
421
|
+
{
|
|
422
|
+
label: "Mango",
|
|
423
|
+
value: "mango"
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
label: "Mulberry",
|
|
427
|
+
value: "mulberry"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
label: "Nectarine",
|
|
431
|
+
value: "nectarine"
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
label: "Orange",
|
|
435
|
+
value: "orange"
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
label: "Papaya",
|
|
439
|
+
value: "papaya"
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
label: "Passionfruit",
|
|
443
|
+
value: "passionfruit"
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
label: "Peach",
|
|
447
|
+
value: "peach"
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
label: "Pear",
|
|
451
|
+
value: "pear"
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
label: "Persimmon",
|
|
455
|
+
value: "persimmon"
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
label: "Pineapple",
|
|
459
|
+
value: "pineapple"
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
label: "Plum",
|
|
463
|
+
value: "plum"
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
label: "Pomegranate",
|
|
467
|
+
value: "pomegranate"
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
label: "Raspberry",
|
|
471
|
+
value: "raspberry"
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
label: "Redcurrant",
|
|
475
|
+
value: "redcurrant"
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
label: "Starfruit",
|
|
479
|
+
value: "starfruit"
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
label: "Strawberry",
|
|
483
|
+
value: "strawberry"
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
label: "Tangerine",
|
|
487
|
+
value: "tangerine"
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
label: "Watermelon",
|
|
491
|
+
value: "watermelon"
|
|
492
|
+
}
|
|
493
|
+
]
|
|
494
|
+
}
|
|
495
|
+
];
|
|
305
496
|
const US_STATES = [
|
|
306
497
|
"Alabama",
|
|
307
498
|
"Alaska",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Combobox/fixtures.tsx"],"sourcesContent":["export const FRUITS = [\n \"Apple\",\n \"Apricot\",\n \"Avocado\",\n \"Banana\",\n \"Blackberry\",\n \"Blueberry\",\n \"Cantaloupe\",\n \"Cherry\",\n \"Clementine\",\n \"Coconut\",\n \"Cranberry\",\n \"Date\",\n \"Dragonfruit\",\n \"Durian\",\n \"Elderberry\",\n \"Fig\",\n \"Grape\",\n \"Grapefruit\",\n \"Guava\",\n \"Honeydew\",\n \"Jackfruit\",\n \"Kiwi\",\n \"Kumquat\",\n \"Lemon\",\n \"Lime\",\n \"Lychee\",\n \"Mango\",\n \"Mulberry\",\n \"Nectarine\",\n \"Orange\",\n \"Papaya\",\n \"Passionfruit\",\n \"Peach\",\n \"Pear\",\n \"Persimmon\",\n \"Pineapple\",\n \"Plum\",\n \"Pomegranate\",\n \"Raspberry\",\n \"Redcurrant\",\n \"Starfruit\",\n \"Strawberry\",\n \"Tangerine\",\n \"Watermelon\",\n];\n\nexport const FRUITS_OBJECTS = [\n { label: \"Apple\", value: \"apple\" },\n { label: \"Apricot\", value: \"apricot\" },\n { label: \"Avocado\", value: \"avocado\" },\n { label: \"Banana\", value: \"banana\" },\n { label: \"Blackberry\", value: \"blackberry\" },\n { label: \"Blueberry\", value: \"blueberry\" },\n { label: \"Cantaloupe\", value: \"cantaloupe\" },\n { label: \"Cherry\", value: \"cherry\" },\n { label: \"Clementine\", value: \"clementine\" },\n { label: \"Coconut\", value: \"coconut\" },\n { label: \"Cranberry\", value: \"cranberry\" },\n { label: \"Date\", value: \"date\" },\n { label: \"Dragonfruit\", value: \"dragonfruit\" },\n { label: \"Durian\", value: \"durian\" },\n { label: \"Elderberry\", value: \"elderberry\" },\n { label: \"Fig\", value: \"fig\" },\n { label: \"Grape\", value: \"grape\" },\n { label: \"Grapefruit\", value: \"grapefruit\" },\n { label: \"Guava\", value: \"guava\" },\n { label: \"Honeydew\", value: \"honeydew\" },\n { label: \"Jackfruit\", value: \"jackfruit\" },\n { label: \"Kiwi\", value: \"kiwi\" },\n { label: \"Kumquat\", value: \"kumquat\" },\n { label: \"Lemon\", value: \"lemon\" },\n { label: \"Lime\", value: \"lime\" },\n { label: \"Lychee\", value: \"lychee\" },\n { label: \"Mango\", value: \"mango\" },\n { label: \"Mulberry\", value: \"mulberry\" },\n { label: \"Nectarine\", value: \"nectarine\" },\n { label: \"Orange\", value: \"orange\" },\n { label: \"Papaya\", value: \"papaya\" },\n { label: \"Passionfruit\", value: \"passionfruit\" },\n { label: \"Peach\", value: \"peach\" },\n { label: \"Pear\", value: \"pear\" },\n { label: \"Persimmon\", value: \"persimmon\" },\n { label: \"Pineapple\", value: \"pineapple\" },\n { label: \"Plum\", value: \"plum\" },\n { label: \"Pomegranate\", value: \"pomegranate\" },\n { label: \"Raspberry\", value: \"raspberry\" },\n { label: \"Redcurrant\", value: \"redcurrant\" },\n { label: \"Starfruit\", value: \"starfruit\" },\n { label: \"Strawberry\", value: \"strawberry\" },\n { label: \"Tangerine\", value: \"tangerine\" },\n { label: \"Watermelon\", value: \"watermelon\" },\n];\n\nexport const FRUITS_GROUPS = [\n {\n heading: \"A-L\",\n options: [\n \"Apple\",\n \"Apricot\",\n \"Avocado\",\n \"Banana\",\n \"Blackberry\",\n \"Blueberry\",\n \"Cantaloupe\",\n \"Cherry\",\n \"Clementine\",\n \"Coconut\",\n \"Cranberry\",\n \"Date\",\n \"Dragonfruit\",\n \"Durian\",\n \"Elderberry\",\n \"Fig\",\n \"Grape\",\n \"Grapefruit\",\n \"Guava\",\n \"Honeydew\",\n \"Jackfruit\",\n \"Kiwi\",\n \"Kumquat\",\n \"Lemon\",\n \"Lime\",\n \"Lychee\",\n ],\n },\n {\n heading: \"M-Z\",\n options: [\n \"Mango\",\n \"Mulberry\",\n \"Nectarine\",\n \"Orange\",\n \"Papaya\",\n \"Passionfruit\",\n \"Peach\",\n \"Pear\",\n \"Persimmon\",\n \"Pineapple\",\n \"Plum\",\n \"Pomegranate\",\n \"Raspberry\",\n \"Redcurrant\",\n \"Starfruit\",\n \"Strawberry\",\n \"Tangerine\",\n \"Watermelon\",\n ],\n },\n];\n\nexport const US_STATES = [\n \"Alabama\",\n \"Alaska\",\n \"Arizona\",\n \"Arkansas\",\n \"California\",\n \"Colorado\",\n \"Connecticut\",\n \"Delaware\",\n \"District Of Columbia\",\n \"Florida\",\n \"Georgia\",\n \"Hawaii\",\n \"Idaho\",\n \"Illinois\",\n \"Indiana\",\n \"Iowa\",\n \"Kansas\",\n \"Kentucky\",\n \"Louisiana\",\n \"Maine\",\n \"Maryland\",\n \"Massachusetts\",\n \"Michigan\",\n \"Minnesota\",\n \"Mississippi\",\n \"Missouri\",\n \"Montana\",\n \"Nebraska\",\n \"Nevada\",\n \"New Hampshire\",\n \"New Jersey\",\n \"New Mexico\",\n \"New York\",\n \"North Carolina\",\n \"North Dakota\",\n \"Ohio\",\n \"Oklahoma\",\n \"Oregon\",\n \"Pennsylvania\",\n \"Rhode Island\",\n \"South Carolina\",\n \"South Dakota\",\n \"Tennessee\",\n \"Texas\",\n \"Utah\",\n \"Vermont\",\n \"Virginia\",\n \"Washington\",\n \"West Virginia\",\n \"Wisconsin\",\n \"Wyoming\",\n];\n"],"names":["FRUITS","FRUITS_GROUPS","FRUITS_OBJECTS","US_STATES","label","value","heading","options"],"mappings":";;;;;;;;;;;IAAaA,MAAM;eAANA;;IA8FAC,aAAa;eAAbA;;IA/CAC,cAAc;eAAdA;;IAwGAC,SAAS;eAATA;;;AAvJN,MAAMH,SAAS;IACpB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAEM,MAAME,iBAAiB;IAC5B;QAAEE,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAAUC,OAAO;IAAS;IACnC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAAUC,OAAO;IAAS;IACnC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAeC,OAAO;IAAc;IAC7C;QAAED,OAAO;QAAUC,OAAO;IAAS;IACnC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAAOC,OAAO;IAAM;IAC7B;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAYC,OAAO;IAAW;IACvC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAWC,OAAO;IAAU;IACrC;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAUC,OAAO;IAAS;IACnC;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAYC,OAAO;IAAW;IACvC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAUC,OAAO;IAAS;IACnC;QAAED,OAAO;QAAUC,OAAO;IAAS;IACnC;QAAED,OAAO;QAAgBC,OAAO;IAAe;IAC/C;QAAED,OAAO;QAASC,OAAO;IAAQ;IACjC;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAQC,OAAO;IAAO;IAC/B;QAAED,OAAO;QAAeC,OAAO;IAAc;IAC7C;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;IAC3C;QAAED,OAAO;QAAaC,OAAO;IAAY;IACzC;QAAED,OAAO;QAAcC,OAAO;IAAa;CAC5C;AAEM,MAAMJ,gBAAgB;IAC3B;QACEK,SAAS;QACTC,SAAS;YACP;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;IACH;IACA;QACED,SAAS;QACTC,SAAS;YACP;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;YACA;SACD;IACH;CACD;AAEM,MAAMJ,YAAY;IACvB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Combobox/fixtures.tsx"],"sourcesContent":["export const FRUITS = [\n \"Apple\",\n \"Apricot\",\n \"Avocado\",\n \"Banana\",\n \"Blackberry\",\n \"Blueberry\",\n \"Cantaloupe\",\n \"Cherry\",\n \"Clementine\",\n \"Coconut\",\n \"Cranberry\",\n \"Date\",\n \"Dragonfruit\",\n \"Durian\",\n \"Elderberry\",\n \"Fig\",\n \"Grape\",\n \"Grapefruit\",\n \"Guava\",\n \"Honeydew\",\n \"Jackfruit\",\n \"Kiwi\",\n \"Kumquat\",\n \"Lemon\",\n \"Lime\",\n \"Lychee\",\n \"Mango\",\n \"Mulberry\",\n \"Nectarine\",\n \"Orange\",\n \"Papaya\",\n \"Passionfruit\",\n \"Peach\",\n \"Pear\",\n \"Persimmon\",\n \"Pineapple\",\n \"Plum\",\n \"Pomegranate\",\n \"Raspberry\",\n \"Redcurrant\",\n \"Starfruit\",\n \"Strawberry\",\n \"Tangerine\",\n \"Watermelon\",\n];\n\nexport const FRUITS_OBJECTS = [\n { label: \"Apple\", value: \"apple\" },\n { label: \"Apricot\", value: \"apricot\" },\n { label: \"Avocado\", value: \"avocado\" },\n { label: \"Banana\", value: \"banana\" },\n { label: \"Blackberry\", value: \"blackberry\" },\n { label: \"Blueberry\", value: \"blueberry\" },\n { label: \"Cantaloupe\", value: \"cantaloupe\" },\n { label: \"Cherry\", value: \"cherry\" },\n { label: \"Clementine\", value: \"clementine\" },\n { label: \"Coconut\", value: \"coconut\" },\n { label: \"Cranberry\", value: \"cranberry\" },\n { label: \"Date\", value: \"date\" },\n { label: \"Dragonfruit\", value: \"dragonfruit\" },\n { label: \"Durian\", value: \"durian\" },\n { label: \"Elderberry\", value: \"elderberry\" },\n { label: \"Fig\", value: \"fig\" },\n { label: \"Grape\", value: \"grape\" },\n { label: \"Grapefruit\", value: \"grapefruit\" },\n { label: \"Guava\", value: \"guava\" },\n { label: \"Honeydew\", value: \"honeydew\" },\n { label: \"Jackfruit\", value: \"jackfruit\" },\n { label: \"Kiwi\", value: \"kiwi\" },\n { label: \"Kumquat\", value: \"kumquat\" },\n { label: \"Lemon\", value: \"lemon\" },\n { label: \"Lime\", value: \"lime\" },\n { label: \"Lychee\", value: \"lychee\" },\n { label: \"Mango\", value: \"mango\" },\n { label: \"Mulberry\", value: \"mulberry\" },\n { label: \"Nectarine\", value: \"nectarine\" },\n { label: \"Orange\", value: \"orange\" },\n { label: \"Papaya\", value: \"papaya\" },\n { label: \"Passionfruit\", value: \"passionfruit\" },\n { label: \"Peach\", value: \"peach\" },\n { label: \"Pear\", value: \"pear\" },\n { label: \"Persimmon\", value: \"persimmon\" },\n { label: \"Pineapple\", value: \"pineapple\" },\n { label: \"Plum\", value: \"plum\" },\n { label: \"Pomegranate\", value: \"pomegranate\" },\n { label: \"Raspberry\", value: \"raspberry\" },\n { label: \"Redcurrant\", value: \"redcurrant\" },\n { label: \"Starfruit\", value: \"starfruit\" },\n { label: \"Strawberry\", value: \"strawberry\" },\n { label: \"Tangerine\", value: \"tangerine\" },\n { label: \"Watermelon\", value: \"watermelon\" },\n];\n\nexport const FRUITS_STRING_GROUPS = [\n {\n heading: \"A-L\",\n options: [\n \"Apple\",\n \"Apricot\",\n \"Avocado\",\n \"Banana\",\n \"Blackberry\",\n \"Blueberry\",\n \"Cantaloupe\",\n \"Cherry\",\n \"Clementine\",\n \"Coconut\",\n \"Cranberry\",\n \"Date\",\n \"Dragonfruit\",\n \"Durian\",\n \"Elderberry\",\n \"Fig\",\n \"Grape\",\n \"Grapefruit\",\n \"Guava\",\n \"Honeydew\",\n \"Jackfruit\",\n \"Kiwi\",\n \"Kumquat\",\n \"Lemon\",\n \"Lime\",\n \"Lychee\",\n ],\n },\n {\n heading: \"M-Z\",\n options: [\n \"Mango\",\n \"Mulberry\",\n \"Nectarine\",\n \"Orange\",\n \"Papaya\",\n \"Passionfruit\",\n \"Peach\",\n \"Pear\",\n \"Persimmon\",\n \"Pineapple\",\n \"Plum\",\n \"Pomegranate\",\n \"Raspberry\",\n \"Redcurrant\",\n \"Starfruit\",\n \"Strawberry\",\n \"Tangerine\",\n \"Watermelon\",\n ],\n },\n];\n\nexport const FRUITS_OBJECT_GROUPS = [\n {\n heading: \"A-L\",\n options: [\n { label: \"Apple\", value: \"apple\" },\n { label: \"Apricot\", value: \"apricot\" },\n { label: \"Avocado\", value: \"avocado\" },\n { label: \"Banana\", value: \"banana\" },\n { label: \"Blackberry\", value: \"blackberry\" },\n { label: \"Blueberry\", value: \"blueberry\" },\n { label: \"Cantaloupe\", value: \"cantaloupe\" },\n { label: \"Cherry\", value: \"cherry\" },\n { label: \"Clementine\", value: \"clementine\" },\n { label: \"Coconut\", value: \"coconut\" },\n { label: \"Cranberry\", value: \"cranberry\" },\n { label: \"Date\", value: \"date\" },\n { label: \"Dragonfruit\", value: \"dragonfruit\" },\n { label: \"Durian\", value: \"durian\" },\n { label: \"Elderberry\", value: \"elderberry\" },\n { label: \"Fig\", value: \"fig\" },\n { label: \"Grape\", value: \"grape\" },\n { label: \"Grapefruit\", value: \"grapefruit\" },\n { label: \"Guava\", value: \"guava\" },\n { label: \"Honeydew\", value: \"honeydew\" },\n { label: \"Jackfruit\", value: \"jackfruit\" },\n { label: \"Kiwi\", value: \"kiwi\" },\n { label: \"Kumquat\", value: \"kumquat\" },\n { label: \"Lemon\", value: \"lemon\" },\n { label: \"Lime\", value: \"lime\" },\n { label: \"Lychee\", value: \"lychee\" },\n ],\n },\n {\n heading: \"M-Z\",\n options: [\n { label: \"Mango\", value: \"mango\" },\n { label: \"Mulberry\", value: \"mulberry\" },\n { label: \"Nectarine\", value: \"nectarine\" },\n { label: \"Orange\", value: \"orange\" },\n { label: \"Papaya\", value: \"papaya\" },\n { label: \"Passionfruit\", value: \"passionfruit\" },\n { label: \"Peach\", value: \"peach\" },\n { label: \"Pear\", value: \"pear\" },\n { label: \"Persimmon\", value: \"persimmon\" },\n { label: \"Pineapple\", value: \"pineapple\" },\n { label: \"Plum\", value: \"plum\" },\n { label: \"Pomegranate\", value: \"pomegranate\" },\n { label: \"Raspberry\", value: \"raspberry\" },\n { label: \"Redcurrant\", value: \"redcurrant\" },\n { label: \"Starfruit\", value: \"starfruit\" },\n { label: \"Strawberry\", value: \"strawberry\" },\n { label: \"Tangerine\", value: \"tangerine\" },\n { label: \"Watermelon\", value: \"watermelon\" },\n ],\n },\n];\n\nexport const US_STATES = [\n \"Alabama\",\n \"Alaska\",\n \"Arizona\",\n \"Arkansas\",\n \"California\",\n \"Colorado\",\n \"Connecticut\",\n \"Delaware\",\n \"District Of Columbia\",\n \"Florida\",\n \"Georgia\",\n \"Hawaii\",\n \"Idaho\",\n \"Illinois\",\n \"Indiana\",\n \"Iowa\",\n \"Kansas\",\n \"Kentucky\",\n \"Louisiana\",\n \"Maine\",\n \"Maryland\",\n \"Massachusetts\",\n \"Michigan\",\n \"Minnesota\",\n \"Mississippi\",\n \"Missouri\",\n \"Montana\",\n \"Nebraska\",\n \"Nevada\",\n \"New Hampshire\",\n \"New Jersey\",\n \"New Mexico\",\n \"New York\",\n \"North Carolina\",\n \"North Dakota\",\n \"Ohio\",\n \"Oklahoma\",\n \"Oregon\",\n \"Pennsylvania\",\n \"Rhode Island\",\n \"South Carolina\",\n \"South Dakota\",\n \"Tennessee\",\n \"Texas\",\n \"Utah\",\n \"Vermont\",\n \"Virginia\",\n \"Washington\",\n \"West Virginia\",\n \"Wisconsin\",\n \"Wyoming\",\n];\n"],"names":["FRUITS","FRUITS_OBJECTS","FRUITS_OBJECT_GROUPS","FRUITS_STRING_GROUPS","US_STATES","label","value","heading","options"],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "useComboboxOptions", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return useComboboxOptions;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _react = require("react");
|
|
12
|
+
const _utils = require("./utils");
|
|
13
|
+
const _hooks = require("../../hooks");
|
|
14
|
+
function useComboboxOptions({ options, asyncOptions, delay = 300, minLength = 3, inputValue = "" }) {
|
|
15
|
+
const [filteredOptions, setFilteredOptions] = (0, _react.useState)([]);
|
|
16
|
+
const debouncedInputValue = (0, _hooks.useDebouncedValue)(inputValue, // Don't debounce synchronous options
|
|
17
|
+
options ? 0 : delay);
|
|
18
|
+
const [isLoading, setIsLoading] = (0, _react.useState)(false);
|
|
19
|
+
const [error, setError] = (0, _react.useState)(null);
|
|
20
|
+
(0, _react.useEffect)(()=>{
|
|
21
|
+
const controller = new AbortController();
|
|
22
|
+
const { signal } = controller;
|
|
23
|
+
const fetchOptions = async ()=>{
|
|
24
|
+
setIsLoading(true);
|
|
25
|
+
setError(null);
|
|
26
|
+
try {
|
|
27
|
+
if (asyncOptions) {
|
|
28
|
+
if (debouncedInputValue.length < minLength) {
|
|
29
|
+
setFilteredOptions([]);
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const result = await asyncOptions(debouncedInputValue, {
|
|
33
|
+
signal
|
|
34
|
+
});
|
|
35
|
+
setFilteredOptions(result);
|
|
36
|
+
} else {
|
|
37
|
+
// @ts-expect-error options will always be set here, fix the types
|
|
38
|
+
setFilteredOptions((0, _utils.filterOptions)(options, debouncedInputValue));
|
|
39
|
+
}
|
|
40
|
+
} catch (e) {
|
|
41
|
+
if (e instanceof DOMException && e.name === "AbortError") {
|
|
42
|
+
// Ignore abort errors
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
setError(e);
|
|
46
|
+
} finally{
|
|
47
|
+
setIsLoading(false);
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
fetchOptions();
|
|
51
|
+
return ()=>{
|
|
52
|
+
controller.abort();
|
|
53
|
+
};
|
|
54
|
+
}, [
|
|
55
|
+
debouncedInputValue,
|
|
56
|
+
options,
|
|
57
|
+
asyncOptions,
|
|
58
|
+
delay,
|
|
59
|
+
minLength
|
|
60
|
+
]);
|
|
61
|
+
return {
|
|
62
|
+
filteredOptions,
|
|
63
|
+
isLoading,
|
|
64
|
+
error,
|
|
65
|
+
isError: error != null
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
//# sourceMappingURL=useComboboxOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Combobox/useComboboxOptions.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\nimport type { ComboboxOptions, ComboboxProps } from \"./types\";\nimport { filterOptions } from \"./utils\";\nimport { useDebouncedValue } from \"../../hooks\";\n\nexport type UseComboboxOptionsProps = Pick<\n ComboboxProps,\n \"options\" | \"asyncOptions\" | \"delay\" | \"minLength\"\n> & {\n inputValue?: string;\n};\n\nexport function useComboboxOptions({\n options,\n asyncOptions,\n delay = 300,\n minLength = 3,\n inputValue = \"\",\n}: UseComboboxOptionsProps) {\n const [filteredOptions, setFilteredOptions] = useState<ComboboxOptions>([]);\n const debouncedInputValue = useDebouncedValue(\n inputValue,\n // Don't debounce synchronous options\n options ? 0 : delay,\n );\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const controller = new AbortController();\n const { signal } = controller;\n\n const fetchOptions = async () => {\n setIsLoading(true);\n setError(null);\n try {\n if (asyncOptions) {\n if (debouncedInputValue.length < minLength) {\n setFilteredOptions([]);\n return;\n }\n const result = await asyncOptions(debouncedInputValue, { signal });\n setFilteredOptions(result);\n } else {\n // @ts-expect-error options will always be set here, fix the types\n setFilteredOptions(filterOptions(options, debouncedInputValue));\n }\n } catch (e: unknown) {\n if (e instanceof DOMException && e.name === \"AbortError\") {\n // Ignore abort errors\n return;\n }\n setError(e as Error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchOptions();\n\n return () => {\n controller.abort();\n };\n }, [debouncedInputValue, options, asyncOptions, delay, minLength]);\n\n return { filteredOptions, isLoading, error, isError: error != null };\n}\n"],"names":["useComboboxOptions","options","asyncOptions","delay","minLength","inputValue","filteredOptions","setFilteredOptions","useState","debouncedInputValue","useDebouncedValue","isLoading","setIsLoading","error","setError","useEffect","controller","AbortController","signal","fetchOptions","length","result","filterOptions","e","DOMException","name","abort","isError"],"mappings":";;;;+BAYgBA;;;eAAAA;;;uBAZoB;uBAEN;uBACI;AAS3B,SAASA,mBAAmB,EACjCC,OAAO,EACPC,YAAY,EACZC,QAAQ,GAAG,EACXC,YAAY,CAAC,EACbC,aAAa,EAAE,EACS;IACxB,MAAM,CAACC,iBAAiBC,mBAAmB,GAAGC,IAAAA,eAAQ,EAAkB,EAAE;IAC1E,MAAMC,sBAAsBC,IAAAA,wBAAiB,EAC3CL,YACA,qCAAqC;IACrCJ,UAAU,IAAIE;IAEhB,MAAM,CAACQ,WAAWC,aAAa,GAAGJ,IAAAA,eAAQ,EAAC;IAC3C,MAAM,CAACK,OAAOC,SAAS,GAAGN,IAAAA,eAAQ,EAAe;IAEjDO,IAAAA,gBAAS,EAAC;QACR,MAAMC,aAAa,IAAIC;QACvB,MAAM,EAAEC,MAAM,EAAE,GAAGF;QAEnB,MAAMG,eAAe;YACnBP,aAAa;YACbE,SAAS;YACT,IAAI;gBACF,IAAIZ,cAAc;oBAChB,IAAIO,oBAAoBW,MAAM,GAAGhB,WAAW;wBAC1CG,mBAAmB,EAAE;wBACrB;oBACF;oBACA,MAAMc,SAAS,MAAMnB,aAAaO,qBAAqB;wBAAES;oBAAO;oBAChEX,mBAAmBc;gBACrB,OAAO;oBACL,kEAAkE;oBAClEd,mBAAmBe,IAAAA,oBAAa,EAACrB,SAASQ;gBAC5C;YACF,EAAE,OAAOc,GAAY;gBACnB,IAAIA,aAAaC,gBAAgBD,EAAEE,IAAI,KAAK,cAAc;oBACxD,sBAAsB;oBACtB;gBACF;gBACAX,SAASS;YACX,SAAU;gBACRX,aAAa;YACf;QACF;QAEAO;QAEA,OAAO;YACLH,WAAWU,KAAK;QAClB;IACF,GAAG;QAACjB;QAAqBR;QAASC;QAAcC;QAAOC;KAAU;IAEjE,OAAO;QAAEE;QAAiBK;QAAWE;QAAOc,SAASd,SAAS;IAAK;AACrE"}
|
|
@@ -10,7 +10,7 @@ Object.defineProperty(exports, "VisuallyHidden", {
|
|
|
10
10
|
});
|
|
11
11
|
const _jsxruntime = require("react/jsx-runtime");
|
|
12
12
|
function VisuallyHidden(props) {
|
|
13
|
-
const { className, children, elementType: Component = "div" } = props;
|
|
13
|
+
const { className, children, elementType: Component = "div", ...otherProps } = props;
|
|
14
14
|
return /*#__PURE__*/ (0, _jsxruntime.jsx)(Component, {
|
|
15
15
|
className: className,
|
|
16
16
|
style: {
|
|
@@ -25,6 +25,7 @@ function VisuallyHidden(props) {
|
|
|
25
25
|
width: "1px",
|
|
26
26
|
whiteSpace: "nowrap"
|
|
27
27
|
},
|
|
28
|
+
...otherProps,
|
|
28
29
|
children: children
|
|
29
30
|
});
|
|
30
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/VisuallyHidden/VisuallyHidden.tsx"],"sourcesContent":["import type { JSXElementConstructor, ReactNode } from \"react\";\n\nexport interface VisuallyHiddenProps {\n /** The content to visually hide. */\n children?: ReactNode;\n\n className?: string;\n\n /**\n * The element type for the container. Defaults to 'div'\n */\n elementType?: string | JSXElementConstructor<any>;\n}\n\nexport function VisuallyHidden(props: VisuallyHiddenProps) {\n const {
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/VisuallyHidden/VisuallyHidden.tsx"],"sourcesContent":["import type { AriaRole, JSXElementConstructor, ReactNode } from \"react\";\n\nexport interface VisuallyHiddenProps {\n /** The content to visually hide. */\n children?: ReactNode;\n id?: string;\n role?: AriaRole;\n\n className?: string;\n\n /**\n * The element type for the container. Defaults to 'div'\n */\n elementType?: string | JSXElementConstructor<any>;\n}\n\nexport function VisuallyHidden(props: VisuallyHiddenProps) {\n const {\n className,\n children,\n elementType: Component = \"div\",\n ...otherProps\n } = props;\n\n return (\n <Component\n className={className}\n style={{\n border: 0,\n clip: \"rect(0 0 0 0)\",\n clipPath: \"inset(50%)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: 0,\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n }}\n {...otherProps}\n >\n {children}\n </Component>\n );\n}\n"],"names":["VisuallyHidden","props","className","children","elementType","Component","otherProps","style","border","clip","clipPath","height","margin","overflow","padding","position","width","whiteSpace"],"mappings":";;;;+BAgBgBA;;;eAAAA;;;;AAAT,SAASA,eAAeC,KAA0B;IACvD,MAAM,EACJC,SAAS,EACTC,QAAQ,EACRC,aAAaC,YAAY,KAAK,EAC9B,GAAGC,YACJ,GAAGL;IAEJ,qBACE,qBAACI;QACCH,WAAWA;QACXK,OAAO;YACLC,QAAQ;YACRC,MAAM;YACNC,UAAU;YACVC,QAAQ;YACRC,QAAQ;YACRC,UAAU;YACVC,SAAS;YACTC,UAAU;YACVC,OAAO;YACPC,YAAY;QACd;QACC,GAAGX,UAAU;kBAEbH;;AAGP"}
|
package/dist/cjs/hooks/index.js
CHANGED
|
@@ -5,11 +5,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
_export_star(require("./useBodyScrollLock"), exports);
|
|
6
6
|
_export_star(require("./useBreakpoint"), exports);
|
|
7
7
|
_export_star(require("./useButton"), exports);
|
|
8
|
+
_export_star(require("./useDebouncedValue"), exports);
|
|
8
9
|
_export_star(require("./useDeprecationWarning"), exports);
|
|
9
10
|
_export_star(require("./useDialog"), exports);
|
|
10
11
|
_export_star(require("./useDialogPolyfill"), exports);
|
|
11
12
|
_export_star(require("./useLabel"), exports);
|
|
12
13
|
_export_star(require("./useOnClickOutside"), exports);
|
|
14
|
+
_export_star(require("./useOnUnmount"), exports);
|
|
13
15
|
_export_star(require("./usePrefersReducedMotion"), exports);
|
|
14
16
|
_export_star(require("./useRenderCount"), exports);
|
|
15
17
|
_export_star(require("./useTextField"), exports);
|