@elliemae/ds-controlled-form 3.0.0-next.13 → 3.0.0-next.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/autocomplete/Autocomplete.js +5 -6
- package/dist/cjs/autocomplete/Autocomplete.js.map +2 -2
- package/dist/cjs/autocomplete/AutocompleteCTX.js +3 -14
- package/dist/cjs/autocomplete/AutocompleteCTX.js.map +2 -2
- package/dist/cjs/autocomplete/AutocompleteDataTestids.js +1 -7
- package/dist/cjs/autocomplete/AutocompleteDataTestids.js.map +2 -2
- package/dist/cjs/autocomplete/config/useAutocomplete.js +23 -11
- package/dist/cjs/autocomplete/config/useAutocomplete.js.map +3 -3
- package/dist/cjs/autocomplete/parts/container/Container.js +27 -17
- package/dist/cjs/autocomplete/parts/container/Container.js.map +2 -2
- package/dist/cjs/autocomplete/parts/container/styled.js +0 -5
- package/dist/cjs/autocomplete/parts/container/styled.js.map +2 -2
- package/dist/cjs/autocomplete/parts/{controls → container}/useKeyboardNavigation.js +18 -24
- package/dist/cjs/autocomplete/parts/container/useKeyboardNavigation.js.map +7 -0
- package/dist/cjs/autocomplete/parts/menu-list/MenuList.js +5 -25
- package/dist/cjs/autocomplete/parts/menu-list/MenuList.js.map +2 -2
- package/dist/cjs/autocomplete/parts/menu-list/styled.js +2 -4
- package/dist/cjs/autocomplete/parts/menu-list/styled.js.map +2 -2
- package/dist/cjs/autocomplete/parts/menu-list/useItemRenderer.js +33 -35
- package/dist/cjs/autocomplete/parts/menu-list/useItemRenderer.js.map +2 -2
- package/dist/cjs/autocomplete/react-desc-prop-types.js +4 -9
- package/dist/cjs/autocomplete/react-desc-prop-types.js.map +2 -2
- package/dist/cjs/autocomplete/sharedTypes.js.map +1 -1
- package/dist/cjs/autocomplete/{config/constants.js → tests/utils.js} +27 -13
- package/dist/cjs/autocomplete/tests/utils.js.map +7 -0
- package/dist/cjs/autocomplete/utils/listHelper.js +8 -12
- package/dist/cjs/autocomplete/utils/listHelper.js.map +2 -2
- package/dist/cjs/combobox/config/useComboBox.js +7 -1
- package/dist/cjs/combobox/config/useComboBox.js.map +2 -2
- package/dist/cjs/combobox/config/useCorrectOptions.js +10 -29
- package/dist/cjs/combobox/config/useCorrectOptions.js.map +2 -2
- package/dist/cjs/combobox/parts/A11yFocusedOption.js +3 -3
- package/dist/cjs/combobox/parts/A11yFocusedOption.js.map +2 -2
- package/dist/cjs/combobox/parts/controls/Controls.js +3 -1
- package/dist/cjs/combobox/parts/controls/Controls.js.map +2 -2
- package/dist/cjs/combobox/parts/controls-input/ControlsInput.js +2 -1
- package/dist/cjs/combobox/parts/controls-input/ControlsInput.js.map +2 -2
- package/dist/cjs/combobox/parts/controls-input/styled.js +3 -0
- package/dist/cjs/combobox/parts/controls-input/styled.js.map +2 -2
- package/dist/cjs/combobox/parts/controls-input/useControlsInput.js +4 -5
- package/dist/cjs/combobox/parts/controls-input/useControlsInput.js.map +2 -2
- package/dist/cjs/combobox/parts/controls-input/useKeyboardNavigation.js +32 -29
- package/dist/cjs/combobox/parts/controls-input/useKeyboardNavigation.js.map +2 -2
- package/dist/cjs/combobox/parts/controls-input/useMaskedOnChange.js +8 -5
- package/dist/cjs/combobox/parts/controls-input/useMaskedOnChange.js.map +2 -2
- package/dist/cjs/combobox/parts/header-list/useHeaderListHandlers.js +4 -4
- package/dist/cjs/combobox/parts/header-list/useHeaderListHandlers.js.map +2 -2
- package/dist/cjs/combobox/parts/menu-list/MenuList.js +13 -10
- package/dist/cjs/combobox/parts/menu-list/MenuList.js.map +2 -2
- package/dist/cjs/combobox/parts/menu-list/styled.js +2 -1
- package/dist/cjs/combobox/parts/menu-list/styled.js.map +2 -2
- package/dist/cjs/combobox/parts/menu-list/useItemRenderer.js +7 -7
- package/dist/cjs/combobox/parts/menu-list/useItemRenderer.js.map +2 -2
- package/dist/cjs/combobox/parts/menu-list/useMenuListSetFocusOption.js +7 -7
- package/dist/cjs/combobox/parts/menu-list/useMenuListSetFocusOption.js.map +2 -2
- package/dist/cjs/combobox/react-desc-prop-types.js +2 -1
- package/dist/cjs/combobox/react-desc-prop-types.js.map +2 -2
- package/dist/cjs/combobox/utils/listHelper.js +34 -11
- package/dist/cjs/combobox/utils/listHelper.js.map +2 -2
- package/dist/cjs/mask-hook/hooks/index.js +1 -1
- package/dist/cjs/mask-hook/hooks/index.js.map +1 -1
- package/dist/cjs/mask-hook/hooks/useNumberMask.js +5 -0
- package/dist/cjs/mask-hook/hooks/useNumberMask.js.map +2 -2
- package/dist/cjs/mask-hook/hooks/usePhoneMask.js +7 -2
- package/dist/cjs/mask-hook/hooks/usePhoneMask.js.map +2 -2
- package/dist/cjs/mask-hook/hooks/useSSNMask.js +5 -0
- package/dist/cjs/mask-hook/hooks/useSSNMask.js.map +2 -2
- package/dist/cjs/mask-hook/hooks/{useZipCode.js → useZipCodeMask.js} +13 -8
- package/dist/cjs/mask-hook/hooks/{useZipCode.js.map → useZipCodeMask.js.map} +3 -3
- package/dist/esm/autocomplete/Autocomplete.js +2 -3
- package/dist/esm/autocomplete/Autocomplete.js.map +2 -2
- package/dist/esm/autocomplete/AutocompleteCTX.js +3 -14
- package/dist/esm/autocomplete/AutocompleteCTX.js.map +2 -2
- package/dist/esm/autocomplete/AutocompleteDataTestids.js +1 -7
- package/dist/esm/autocomplete/AutocompleteDataTestids.js.map +2 -2
- package/dist/esm/autocomplete/config/useAutocomplete.js +24 -12
- package/dist/esm/autocomplete/config/useAutocomplete.js.map +3 -3
- package/dist/esm/autocomplete/parts/container/Container.js +28 -18
- package/dist/esm/autocomplete/parts/container/Container.js.map +2 -2
- package/dist/esm/autocomplete/parts/container/styled.js +0 -5
- package/dist/esm/autocomplete/parts/container/styled.js.map +2 -2
- package/dist/esm/autocomplete/parts/{controls → container}/useKeyboardNavigation.js +18 -24
- package/dist/esm/autocomplete/parts/container/useKeyboardNavigation.js.map +7 -0
- package/dist/esm/autocomplete/parts/menu-list/MenuList.js +6 -26
- package/dist/esm/autocomplete/parts/menu-list/MenuList.js.map +2 -2
- package/dist/esm/autocomplete/parts/menu-list/styled.js +2 -4
- package/dist/esm/autocomplete/parts/menu-list/styled.js.map +2 -2
- package/dist/esm/autocomplete/parts/menu-list/useItemRenderer.js +33 -35
- package/dist/esm/autocomplete/parts/menu-list/useItemRenderer.js.map +2 -2
- package/dist/esm/autocomplete/react-desc-prop-types.js +4 -9
- package/dist/esm/autocomplete/react-desc-prop-types.js.map +2 -2
- package/dist/esm/autocomplete/tests/utils.js +27 -0
- package/dist/esm/autocomplete/tests/utils.js.map +7 -0
- package/dist/esm/autocomplete/utils/listHelper.js +8 -12
- package/dist/esm/autocomplete/utils/listHelper.js.map +2 -2
- package/dist/esm/combobox/config/useComboBox.js +7 -1
- package/dist/esm/combobox/config/useComboBox.js.map +2 -2
- package/dist/esm/combobox/config/useCorrectOptions.js +11 -30
- package/dist/esm/combobox/config/useCorrectOptions.js.map +2 -2
- package/dist/esm/combobox/parts/A11yFocusedOption.js +3 -3
- package/dist/esm/combobox/parts/A11yFocusedOption.js.map +2 -2
- package/dist/esm/combobox/parts/controls/Controls.js +3 -1
- package/dist/esm/combobox/parts/controls/Controls.js.map +2 -2
- package/dist/esm/combobox/parts/controls-input/ControlsInput.js +2 -1
- package/dist/esm/combobox/parts/controls-input/ControlsInput.js.map +2 -2
- package/dist/esm/combobox/parts/controls-input/styled.js +3 -0
- package/dist/esm/combobox/parts/controls-input/styled.js.map +2 -2
- package/dist/esm/combobox/parts/controls-input/useControlsInput.js +4 -5
- package/dist/esm/combobox/parts/controls-input/useControlsInput.js.map +2 -2
- package/dist/esm/combobox/parts/controls-input/useKeyboardNavigation.js +32 -29
- package/dist/esm/combobox/parts/controls-input/useKeyboardNavigation.js.map +2 -2
- package/dist/esm/combobox/parts/controls-input/useMaskedOnChange.js +8 -5
- package/dist/esm/combobox/parts/controls-input/useMaskedOnChange.js.map +2 -2
- package/dist/esm/combobox/parts/header-list/useHeaderListHandlers.js +4 -4
- package/dist/esm/combobox/parts/header-list/useHeaderListHandlers.js.map +2 -2
- package/dist/esm/combobox/parts/menu-list/MenuList.js +13 -10
- package/dist/esm/combobox/parts/menu-list/MenuList.js.map +2 -2
- package/dist/esm/combobox/parts/menu-list/styled.js +2 -1
- package/dist/esm/combobox/parts/menu-list/styled.js.map +2 -2
- package/dist/esm/combobox/parts/menu-list/useItemRenderer.js +7 -7
- package/dist/esm/combobox/parts/menu-list/useItemRenderer.js.map +2 -2
- package/dist/esm/combobox/parts/menu-list/useMenuListSetFocusOption.js +7 -7
- package/dist/esm/combobox/parts/menu-list/useMenuListSetFocusOption.js.map +2 -2
- package/dist/esm/combobox/react-desc-prop-types.js +2 -1
- package/dist/esm/combobox/react-desc-prop-types.js.map +2 -2
- package/dist/esm/combobox/utils/listHelper.js +34 -11
- package/dist/esm/combobox/utils/listHelper.js.map +2 -2
- package/dist/esm/mask-hook/hooks/index.js +1 -1
- package/dist/esm/mask-hook/hooks/index.js.map +1 -1
- package/dist/esm/mask-hook/hooks/useNumberMask.js +5 -0
- package/dist/esm/mask-hook/hooks/useNumberMask.js.map +2 -2
- package/dist/esm/mask-hook/hooks/usePhoneMask.js +7 -2
- package/dist/esm/mask-hook/hooks/usePhoneMask.js.map +2 -2
- package/dist/esm/mask-hook/hooks/useSSNMask.js +5 -0
- package/dist/esm/mask-hook/hooks/useSSNMask.js.map +2 -2
- package/dist/esm/mask-hook/hooks/{useZipCode.js → useZipCodeMask.js} +10 -5
- package/dist/esm/mask-hook/hooks/{useZipCode.js.map → useZipCodeMask.js.map} +3 -3
- package/package.json +15 -15
- package/dist/cjs/autocomplete/config/constants.js.map +0 -7
- package/dist/cjs/autocomplete/config/useGetPropsWithDefault.js +0 -37
- package/dist/cjs/autocomplete/config/useGetPropsWithDefault.js.map +0 -7
- package/dist/cjs/autocomplete/index.d.js +0 -27
- package/dist/cjs/autocomplete/index.d.js.map +0 -7
- package/dist/cjs/autocomplete/parts/a11y-messages/MultiAllyMessages.js +0 -50
- package/dist/cjs/autocomplete/parts/a11y-messages/MultiAllyMessages.js.map +0 -7
- package/dist/cjs/autocomplete/parts/a11y-messages/SingleAllyMessages.js +0 -48
- package/dist/cjs/autocomplete/parts/a11y-messages/SingleAllyMessages.js.map +0 -7
- package/dist/cjs/autocomplete/parts/a11y-messages/index.js +0 -37
- package/dist/cjs/autocomplete/parts/a11y-messages/index.js.map +0 -7
- package/dist/cjs/autocomplete/parts/a11y-messages/styled.js +0 -41
- package/dist/cjs/autocomplete/parts/a11y-messages/styled.js.map +0 -7
- package/dist/cjs/autocomplete/parts/controls/Controls.js +0 -72
- package/dist/cjs/autocomplete/parts/controls/Controls.js.map +0 -7
- package/dist/cjs/autocomplete/parts/controls/index.js +0 -35
- package/dist/cjs/autocomplete/parts/controls/index.js.map +0 -7
- package/dist/cjs/autocomplete/parts/controls/styled.js +0 -108
- package/dist/cjs/autocomplete/parts/controls/styled.js.map +0 -7
- package/dist/cjs/autocomplete/parts/controls/useControlsInput.js +0 -62
- package/dist/cjs/autocomplete/parts/controls/useControlsInput.js.map +0 -7
- package/dist/cjs/autocomplete/parts/controls/useKeyboardNavigation.js.map +0 -7
- package/dist/cjs/autocomplete/parts/controls/useMaskedOnChange.js +0 -48
- package/dist/cjs/autocomplete/parts/controls/useMaskedOnChange.js.map +0 -7
- package/dist/cjs/autocomplete/parts/menu-list/useMenuList.js +0 -82
- package/dist/cjs/autocomplete/parts/menu-list/useMenuList.js.map +0 -7
- package/dist/cjs/autocomplete/propTypes.js +0 -56
- package/dist/cjs/autocomplete/propTypes.js.map +0 -7
- package/dist/cjs/autocomplete/utils/hooks/useKeyboardNavigation.js +0 -108
- package/dist/cjs/autocomplete/utils/hooks/useKeyboardNavigation.js.map +0 -7
- package/dist/cjs/autocomplete/utils/hooks/useOnElementResize.js +0 -56
- package/dist/cjs/autocomplete/utils/hooks/useOnElementResize.js.map +0 -7
- package/dist/esm/autocomplete/config/constants.js +0 -13
- package/dist/esm/autocomplete/config/constants.js.map +0 -7
- package/dist/esm/autocomplete/config/useGetPropsWithDefault.js +0 -8
- package/dist/esm/autocomplete/config/useGetPropsWithDefault.js.map +0 -7
- package/dist/esm/autocomplete/index.d.js +0 -2
- package/dist/esm/autocomplete/index.d.js.map +0 -7
- package/dist/esm/autocomplete/parts/a11y-messages/MultiAllyMessages.js +0 -21
- package/dist/esm/autocomplete/parts/a11y-messages/MultiAllyMessages.js.map +0 -7
- package/dist/esm/autocomplete/parts/a11y-messages/SingleAllyMessages.js +0 -19
- package/dist/esm/autocomplete/parts/a11y-messages/SingleAllyMessages.js.map +0 -7
- package/dist/esm/autocomplete/parts/a11y-messages/index.js +0 -8
- package/dist/esm/autocomplete/parts/a11y-messages/index.js.map +0 -7
- package/dist/esm/autocomplete/parts/a11y-messages/styled.js +0 -12
- package/dist/esm/autocomplete/parts/a11y-messages/styled.js.map +0 -7
- package/dist/esm/autocomplete/parts/controls/Controls.js +0 -43
- package/dist/esm/autocomplete/parts/controls/Controls.js.map +0 -7
- package/dist/esm/autocomplete/parts/controls/index.js +0 -6
- package/dist/esm/autocomplete/parts/controls/index.js.map +0 -7
- package/dist/esm/autocomplete/parts/controls/styled.js +0 -79
- package/dist/esm/autocomplete/parts/controls/styled.js.map +0 -7
- package/dist/esm/autocomplete/parts/controls/useControlsInput.js +0 -33
- package/dist/esm/autocomplete/parts/controls/useControlsInput.js.map +0 -7
- package/dist/esm/autocomplete/parts/controls/useKeyboardNavigation.js.map +0 -7
- package/dist/esm/autocomplete/parts/controls/useMaskedOnChange.js +0 -19
- package/dist/esm/autocomplete/parts/controls/useMaskedOnChange.js.map +0 -7
- package/dist/esm/autocomplete/parts/menu-list/useMenuList.js +0 -53
- package/dist/esm/autocomplete/parts/menu-list/useMenuList.js.map +0 -7
- package/dist/esm/autocomplete/propTypes.js +0 -27
- package/dist/esm/autocomplete/propTypes.js.map +0 -7
- package/dist/esm/autocomplete/utils/hooks/useKeyboardNavigation.js +0 -79
- package/dist/esm/autocomplete/utils/hooks/useKeyboardNavigation.js.map +0 -7
- package/dist/esm/autocomplete/utils/hooks/useOnElementResize.js +0 -27
- package/dist/esm/autocomplete/utils/hooks/useOnElementResize.js.map +0 -7
|
@@ -49,53 +49,51 @@ __export(useItemRenderer_exports, {
|
|
|
49
49
|
var React = __toESM(require("react"));
|
|
50
50
|
var import_react = __toESM(require("react"));
|
|
51
51
|
var import_MenuItem = require("@elliemae/ds-common/MenuItem");
|
|
52
|
-
var import_AutocompleteCTX = require("../../AutocompleteCTX");
|
|
53
|
-
var import_listHelper = require("../../utils/listHelper");
|
|
52
|
+
var import_AutocompleteCTX = __toESM(require("../../AutocompleteCTX"));
|
|
54
53
|
var import_AutocompleteDataTestids = require("../../AutocompleteDataTestids");
|
|
55
54
|
const useItemRenderer = () => {
|
|
56
55
|
const {
|
|
57
|
-
props: { options,
|
|
56
|
+
props: { options, onSelect },
|
|
58
57
|
inputRef,
|
|
59
58
|
setShowPopover,
|
|
60
59
|
focusOptionIdx,
|
|
61
60
|
virtualListHelpers
|
|
62
|
-
} = (0, import_react.useContext)(import_AutocompleteCTX.
|
|
63
|
-
const { virtualItems } = virtualListHelpers;
|
|
61
|
+
} = (0, import_react.useContext)(import_AutocompleteCTX.default);
|
|
64
62
|
const handleClick = (0, import_react.useCallback)((option, e) => {
|
|
65
|
-
|
|
66
|
-
inputRef.current.value = option.label;
|
|
67
|
-
onFilter(option.label);
|
|
68
|
-
onChange(option.label);
|
|
63
|
+
onSelect(option.label, e);
|
|
69
64
|
setShowPopover(false);
|
|
70
|
-
inputRef.current?.focus();
|
|
71
65
|
e.stopPropagation();
|
|
72
66
|
e.preventDefault();
|
|
73
|
-
}, [
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
67
|
+
}, [onSelect, setShowPopover]);
|
|
68
|
+
return (0, import_react.useMemo)(() => {
|
|
69
|
+
if (virtualListHelpers) {
|
|
70
|
+
return virtualListHelpers.virtualItems.map((vItem) => {
|
|
71
|
+
const option = options[vItem.index];
|
|
72
|
+
const generalProps = {
|
|
73
|
+
wrapperStyles: { position: "absolute", top: vItem.start, left: 0, width: "100%" },
|
|
74
|
+
key: `${option.dsId}`,
|
|
75
|
+
innerRef: vItem.measureRef
|
|
76
|
+
};
|
|
77
|
+
if (option.type === "section") {
|
|
78
|
+
return /* @__PURE__ */ import_react.default.createElement(import_MenuItem.Section, __spreadValues({
|
|
79
|
+
label: option.label
|
|
80
|
+
}, generalProps));
|
|
81
|
+
}
|
|
82
|
+
if (option.type === "option") {
|
|
83
|
+
return /* @__PURE__ */ import_react.default.createElement(import_MenuItem.SingleMenuItem, __spreadProps(__spreadValues({}, generalProps), {
|
|
84
|
+
value: option.value,
|
|
85
|
+
label: option.label,
|
|
86
|
+
dataTestid: import_AutocompleteDataTestids.AutocompleteDataTestid.OPTION,
|
|
87
|
+
disabled: option.disabled,
|
|
88
|
+
onClick: (e) => handleClick(option, e),
|
|
89
|
+
isActive: option.dsId === focusOptionIdx
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null);
|
|
93
|
+
});
|
|
95
94
|
}
|
|
96
|
-
return
|
|
97
|
-
}
|
|
98
|
-
return ItemRenderer;
|
|
95
|
+
return null;
|
|
96
|
+
}, [options, focusOptionIdx, inputRef, virtualListHelpers]);
|
|
99
97
|
};
|
|
100
98
|
module.exports = __toCommonJS(useItemRenderer_exports);
|
|
101
99
|
//# sourceMappingURL=useItemRenderer.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/autocomplete/parts/menu-list/useItemRenderer.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo, useContext, useCallback } from 'react';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAwD;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useMemo, useContext, useCallback } from 'react';\nimport { SingleMenuItem, Section } from '@elliemae/ds-common/MenuItem';\nimport AutocompleteContext from '../../AutocompleteCTX';\nimport { AutocompleteDataTestid } from '../../AutocompleteDataTestids';\nimport { DSAutocompleteT } from '../../react-desc-prop-types';\n\nexport const useItemRenderer = (): Array<JSX.Element> | null => {\n const {\n props: { options, onSelect },\n inputRef,\n setShowPopover,\n focusOptionIdx,\n virtualListHelpers,\n } = useContext(AutocompleteContext);\n\n const handleClick = useCallback(\n (option: DSAutocompleteT.ItemOption, e: React.ChangeEvent<HTMLInputElement>) => {\n onSelect(option.label, e);\n setShowPopover(false);\n e.stopPropagation();\n e.preventDefault();\n },\n [onSelect, setShowPopover],\n );\n\n return useMemo(() => {\n if (virtualListHelpers) {\n return virtualListHelpers.virtualItems.map((vItem) => {\n const option = options[vItem.index];\n const generalProps = {\n wrapperStyles: { position: 'absolute', top: vItem.start, left: 0, width: '100%' },\n key: `${option.dsId}`,\n innerRef: vItem.measureRef,\n };\n if (option.type === 'section') {\n return <Section label={option.label} {...generalProps} />;\n }\n if (option.type === 'option') {\n return (\n <SingleMenuItem\n {...generalProps}\n value={option.value}\n label={option.label}\n dataTestid={AutocompleteDataTestid.OPTION}\n disabled={option.disabled}\n onClick={(e: React.ChangeEvent<HTMLInputElement>) => handleClick(option, e)}\n isActive={option.dsId === focusOptionIdx}\n />\n );\n }\n return <></>;\n });\n }\n return null;\n }, [options, focusOptionIdx, inputRef, virtualListHelpers]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAAwD;AACxD,sBAAwC;AACxC,6BAAgC;AAChC,qCAAuC;AAGhC,MAAM,kBAAkB,MAAiC;AAC9D,QAAM;AAAA,IACJ,OAAO,EAAE,SAAS;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AAEf,QAAM,cAAc,8BAClB,CAAC,QAAoC,MAA2C;AAC9E,aAAS,OAAO,OAAO;AACvB,mBAAe;AACf,MAAE;AACF,MAAE;AAAA,KAEJ,CAAC,UAAU;AAGb,SAAO,0BAAQ,MAAM;AACnB,QAAI,oBAAoB;AACtB,aAAO,mBAAmB,aAAa,IAAI,CAAC,UAAU;AACpD,cAAM,SAAS,QAAQ,MAAM;AAC7B,cAAM,eAAe;AAAA,UACnB,eAAe,EAAE,UAAU,YAAY,KAAK,MAAM,OAAO,MAAM,GAAG,OAAO;AAAA,UACzE,KAAK,GAAG,OAAO;AAAA,UACf,UAAU,MAAM;AAAA;AAElB,YAAI,OAAO,SAAS,WAAW;AAC7B,iBAAO,mDAAC,yBAAD;AAAA,YAAS,OAAO,OAAO;AAAA,aAAW;AAAA;AAE3C,YAAI,OAAO,SAAS,UAAU;AAC5B,iBACE,mDAAC,gCAAD,iCACM,eADN;AAAA,YAEE,OAAO,OAAO;AAAA,YACd,OAAO,OAAO;AAAA,YACd,YAAY,sDAAuB;AAAA,YACnC,UAAU,OAAO;AAAA,YACjB,SAAS,CAAC,MAA2C,YAAY,QAAQ;AAAA,YACzE,UAAU,OAAO,SAAS;AAAA;AAAA;AAIhC,eAAO;AAAA;AAAA;AAGX,WAAO;AAAA,KACN,CAAC,SAAS,gBAAgB,UAAU;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -27,20 +27,15 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
|
27
27
|
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
28
|
var react_desc_prop_types_exports = {};
|
|
29
29
|
__export(react_desc_prop_types_exports, {
|
|
30
|
-
noop: () => noop,
|
|
31
30
|
propTypes: () => propTypes
|
|
32
31
|
});
|
|
33
32
|
var React = __toESM(require("react"));
|
|
34
33
|
var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
|
|
35
|
-
function noop(..._args) {
|
|
36
|
-
}
|
|
37
34
|
const propTypes = {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
hasError: import_ds_props_helpers.PropTypes.bool.description("Whether the combo box has error or not").defaultValue("false"),
|
|
43
|
-
onChange: import_ds_props_helpers.PropTypes.func.description("function triggered when an option is selected it will send the options selected").defaultValue("")
|
|
35
|
+
options: import_ds_props_helpers.PropTypes.oneOfType([import_ds_props_helpers.PropTypes.array, import_ds_props_helpers.PropTypes.object]).isRequired.description("List of options").defaultValue([]),
|
|
36
|
+
filter: import_ds_props_helpers.PropTypes.string.isRequired.description("String value to filter the options").defaultValue(""),
|
|
37
|
+
onSelect: import_ds_props_helpers.PropTypes.func.isRequired.description("function triggered when an option is selected it will send the options selected").defaultValue(""),
|
|
38
|
+
children: import_ds_props_helpers.PropTypes.node.isRequired.description("React component to apply autocomplete functionality").defaultValue("")
|
|
44
39
|
};
|
|
45
40
|
module.exports = __toCommonJS(react_desc_prop_types_exports);
|
|
46
41
|
//# sourceMappingURL=react-desc-prop-types.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/autocomplete/react-desc-prop-types.ts", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-unused-vars */\nimport React from 'react';\nimport { PropTypes } from '@elliemae/ds-props-helpers';\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable no-unused-vars */\nimport React from 'react';\nimport { PropTypes } from '@elliemae/ds-props-helpers';\n\nexport declare namespace DSAutocompleteT {\n export interface CommonItemOptions {\n dsId: string;\n disabled?: boolean;\n render?: React.ComponentType<unknown>;\n }\n export interface ItemSeparatorOptions extends CommonItemOptions {\n type: 'separator';\n }\n\n export interface ItemSectionOptions extends CommonItemOptions {\n type: 'section';\n label: string;\n }\n\n export interface ItemOption extends CommonItemOptions {\n value: string;\n label: string;\n type: 'option';\n }\n\n export type OptionTypes = ItemOption | ItemSectionOptions | ItemSeparatorOptions;\n\n export type SelectedOptionsT = ItemOption[] | ItemOption | null;\n\n export interface RequiredProps {\n options: OptionTypes[];\n children: React.ReactChild;\n filter: string;\n onSelect: (suggestedValue: string | number, e: React.KeyboardEvent<HTMLInputElement>) => void;\n }\n export interface DefaultProps {\n startPlacementPreference: string;\n placementOrderPreference: string[];\n withoutPortal: boolean;\n zIndex: number;\n }\n\n export interface Props extends Partial<DefaultProps>, RequiredProps {}\n\n export interface InternalProps extends DefaultProps, RequiredProps {}\n}\n\nexport const propTypes = {\n options: PropTypes.oneOfType([PropTypes.array, PropTypes.object])\n .isRequired.description('List of options')\n .defaultValue([]),\n filter: PropTypes.string.isRequired.description('String value to filter the options').defaultValue(''),\n onSelect: PropTypes.func.isRequired\n .description('function triggered when an option is selected it will send the options selected')\n .defaultValue(''),\n children: PropTypes.node.isRequired\n .description('React component to apply autocomplete functionality')\n .defaultValue(''),\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADGvB,8BAA0B;AA6CnB,MAAM,YAAY;AAAA,EACvB,SAAS,kCAAU,UAAU,CAAC,kCAAU,OAAO,kCAAU,SACtD,WAAW,YAAY,mBACvB,aAAa;AAAA,EAChB,QAAQ,kCAAU,OAAO,WAAW,YAAY,sCAAsC,aAAa;AAAA,EACnG,UAAU,kCAAU,KAAK,WACtB,YAAY,mFACZ,aAAa;AAAA,EAChB,UAAU,kCAAU,KAAK,WACtB,YAAY,uDACZ,aAAa;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/autocomplete/sharedTypes.ts", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { useVirtual } from 'react-virtual';\nimport { DSAutocompleteT } from './react-desc-prop-types';\n\nexport declare namespace DSAutoCompleteInternalsT {\n export interface AutocompleteContext {\n props: DSAutocompleteT.InternalProps;\n virtualListHelpers?: ReturnType<typeof useVirtual>;\n showPopover: boolean;\n setShowPopover: React.Dispatch<React.SetStateAction<boolean>>;\n referenceElement: HTMLElement | null;\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>;\n scrollOptionIntoView: (dsId: string, opts?: any) => void;\n inputRef: React.RefObject<HTMLInputElement>;\n listRef: React.RefObject<HTMLDivElement>;\n
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { DSAutocompleteT } from './react-desc-prop-types';\n\nexport declare namespace DSAutoCompleteInternalsT {\n export interface AutocompleteContext {\n props: DSAutocompleteT.InternalProps;\n virtualListHelpers?: ReturnType<typeof useVirtual>;\n showPopover: boolean;\n setShowPopover: React.Dispatch<React.SetStateAction<boolean>>;\n referenceElement: HTMLElement | null;\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>;\n scrollOptionIntoView: (dsId: string, opts?: any) => void;\n inputRef: React.RefObject<HTMLInputElement>;\n listRef: React.RefObject<HTMLDivElement>;\n focusOptionIdx: string;\n setCurrentOption: React.Dispatch<React.SetStateAction<string>>;\n }\n}\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;AAAA;ACAA,YAAuB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -25,18 +25,32 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
|
25
25
|
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
26
|
};
|
|
27
27
|
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
-
var
|
|
29
|
-
__export(
|
|
30
|
-
|
|
28
|
+
var utils_exports = {};
|
|
29
|
+
__export(utils_exports, {
|
|
30
|
+
basicOptions: () => basicOptions
|
|
31
31
|
});
|
|
32
32
|
var React = __toESM(require("react"));
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
const basicOptions = [
|
|
34
|
+
{
|
|
35
|
+
dsId: "12",
|
|
36
|
+
type: "section",
|
|
37
|
+
label: "Please Select the appropriate city"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
dsId: "1",
|
|
41
|
+
type: "option",
|
|
42
|
+
label: "44444-4444"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
dsId: "2",
|
|
46
|
+
type: "option",
|
|
47
|
+
label: "44444-5555"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
dsId: "3",
|
|
51
|
+
type: "option",
|
|
52
|
+
label: "44444-6666"
|
|
53
|
+
}
|
|
54
|
+
];
|
|
55
|
+
module.exports = __toCommonJS(utils_exports);
|
|
56
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/autocomplete/tests/utils.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["export const basicOptions = [\n {\n dsId: '12',\n type: 'section',\n label: 'Please Select the appropriate city',\n },\n {\n dsId: '1',\n type: 'option',\n label: '44444-4444',\n },\n {\n dsId: '2',\n type: 'option',\n label: '44444-5555',\n },\n {\n dsId: '3',\n type: 'option',\n label: '44444-6666',\n },\n];\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,eAAe;AAAA,EAC1B;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA;AAAA,EAET;AAAA,IACE,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -28,9 +28,9 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
|
28
28
|
var listHelper_exports = {};
|
|
29
29
|
__export(listHelper_exports, {
|
|
30
30
|
findInCircularList: () => findInCircularList,
|
|
31
|
+
getFirstOption: () => getFirstOption,
|
|
31
32
|
getOptions: () => getOptions,
|
|
32
33
|
getSelectableOptions: () => getSelectableOptions,
|
|
33
|
-
isSelected: () => isSelected,
|
|
34
34
|
isSelectedValueEmpty: () => isSelectedValueEmpty,
|
|
35
35
|
isSelectedValueMultiple: () => isSelectedValueMultiple
|
|
36
36
|
});
|
|
@@ -39,17 +39,6 @@ const getSelectableOptions = (options) => options ? options.filter((option) => o
|
|
|
39
39
|
const getOptions = (options) => options ? options.filter((option) => option.type === "option") : [];
|
|
40
40
|
const isSelectedValueEmpty = (value) => Array.isArray(value) ? value.length === 0 : !value;
|
|
41
41
|
const isSelectedValueMultiple = (value) => Array.isArray(value);
|
|
42
|
-
const isSelected = (value, activeOption) => {
|
|
43
|
-
if (isSelectedValueMultiple(value)) {
|
|
44
|
-
const multiValue = value;
|
|
45
|
-
return multiValue.some((item) => item?.value === activeOption?.value);
|
|
46
|
-
}
|
|
47
|
-
if (typeof value === "string") {
|
|
48
|
-
return false;
|
|
49
|
-
}
|
|
50
|
-
const singleValue = value;
|
|
51
|
-
return singleValue?.value === activeOption.value;
|
|
52
|
-
};
|
|
53
42
|
const findInCircularList = (list, from, criteria, step = 1) => {
|
|
54
43
|
for (let i = (from + step + list.length) % list.length; i !== from; i = (i + step + list.length) % list.length) {
|
|
55
44
|
if (criteria(list[i]))
|
|
@@ -57,5 +46,12 @@ const findInCircularList = (list, from, criteria, step = 1) => {
|
|
|
57
46
|
}
|
|
58
47
|
return from;
|
|
59
48
|
};
|
|
49
|
+
const getFirstOption = (options) => {
|
|
50
|
+
for (let i = 0; i < options.length; i += 1)
|
|
51
|
+
if (!["section", "separator"].includes(options[i].type)) {
|
|
52
|
+
return options[i].dsId;
|
|
53
|
+
}
|
|
54
|
+
return "";
|
|
55
|
+
};
|
|
60
56
|
module.exports = __toCommonJS(listHelper_exports);
|
|
61
57
|
//# sourceMappingURL=listHelper.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/autocomplete/utils/listHelper.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEhB,MAAM,uBAAuB,CAAC,YACnC,UAAU,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,YAAY,CAAC,OAAO,YAAY;AAEhF,MAAM,aAAa,CAAC,YACzB,UAAU,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,YAAY;AAE5D,MAAM,uBAAuB,CAAC,UACnC,MAAM,QAAQ,SAAS,MAAM,WAAW,IAAI,CAAC;AAExC,MAAM,0BAA0B,CAAC,UAAiD,MAAM,QAAQ;AAEhG,MAAM,
|
|
4
|
+
"sourcesContent": ["import { DSAutocompleteT } from '../react-desc-prop-types';\n\nexport const getSelectableOptions = (options: Array<CBOptionT>): Array<CBOptionT> =>\n options ? options.filter((option) => option.type === 'option' && !option.disabled) : [];\n\nexport const getOptions = (options: Array<CBOptionT>): Array<CBOptionT> =>\n options ? options.filter((option) => option.type === 'option') : [];\n\nexport const isSelectedValueEmpty = (value: CBOptionT | Array<CBOptionT>): boolean =>\n Array.isArray(value) ? value.length === 0 : !value;\n\nexport const isSelectedValueMultiple = (value: CBOptionT | Array<CBOptionT>): boolean => Array.isArray(value);\n\nexport const findInCircularList = <T extends unknown>(\n list: T[],\n from: number,\n criteria: (item: T) => boolean,\n step = 1,\n // eslint-disable-next-line max-params\n): number => {\n for (let i = (from + step + list.length) % list.length; i !== from; i = (i + step + list.length) % list.length) {\n if (criteria(list[i])) return i;\n }\n return from; // return same item\n};\n\nexport const getFirstOption = (options: DSAutocompleteT.OptionTypes[]) => {\n for (let i = 0; i < options.length; i += 1)\n if (!['section', 'separator'].includes(options[i].type)) {\n return options[i].dsId;\n }\n return '';\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEhB,MAAM,uBAAuB,CAAC,YACnC,UAAU,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,YAAY,CAAC,OAAO,YAAY;AAEhF,MAAM,aAAa,CAAC,YACzB,UAAU,QAAQ,OAAO,CAAC,WAAW,OAAO,SAAS,YAAY;AAE5D,MAAM,uBAAuB,CAAC,UACnC,MAAM,QAAQ,SAAS,MAAM,WAAW,IAAI,CAAC;AAExC,MAAM,0BAA0B,CAAC,UAAiD,MAAM,QAAQ;AAEhG,MAAM,qBAAqB,CAChC,MACA,MACA,UACA,OAAO,MAEI;AACX,WAAS,IAAK,QAAO,OAAO,KAAK,UAAU,KAAK,QAAQ,MAAM,MAAM,IAAK,KAAI,OAAO,KAAK,UAAU,KAAK,QAAQ;AAC9G,QAAI,SAAS,KAAK;AAAK,aAAO;AAAA;AAEhC,SAAO;AAAA;AAGF,MAAM,iBAAiB,CAAC,YAA2C;AACxE,WAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,QAAI,CAAC,CAAC,WAAW,aAAa,SAAS,QAAQ,GAAG,OAAO;AACvD,aAAO,QAAQ,GAAG;AAAA;AAEtB,SAAO;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -93,8 +93,14 @@ const useComboBox = (props) => {
|
|
|
93
93
|
if (!hasFocus)
|
|
94
94
|
setFocusOptionIdx("");
|
|
95
95
|
}, [showPopover, hasFocus, correctOptions, selectedValues, inputValue]);
|
|
96
|
+
(0, import_react.useEffect)(() => {
|
|
97
|
+
if (!showPopover) {
|
|
98
|
+
setFocusOptionIdx("");
|
|
99
|
+
setShowSelectedOptions(false);
|
|
100
|
+
}
|
|
101
|
+
}, [showPopover]);
|
|
96
102
|
const ctx = (0, import_react.useMemo)(() => ({
|
|
97
|
-
props: __spreadProps(__spreadValues({}, propsWithDefaults), {
|
|
103
|
+
props: __spreadProps(__spreadValues({}, propsWithDefaults), { filteredOptions: correctOptions }),
|
|
98
104
|
virtualListHelpers,
|
|
99
105
|
showPopover,
|
|
100
106
|
referenceElement,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/combobox/config/useComboBox.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport { useMemo, useState, useRef, useCallback, useEffect } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { defaultProps } from '../ComboBoxCTX';\nimport { DSComboboxT, ComboboxPropTypes } from '../react-desc-prop-types';\nimport { DSComboboxInternalsT } from '../sharedTypes';\nimport { useCorrectOptions } from './useCorrectOptions';\nimport { getFirstOption } from '../utils/listHelper';\nexport const useComboBox = (props: DSComboboxT.Props): DSComboboxInternalsT.ComboBoxContextT => {\n const defaultPropsWithInnerRef = {\n ...defaultProps,\n innerRef: useRef(null),\n };\n\n const propsWithDefaults = useMemoMergePropsWithDefault(props, defaultPropsWithInnerRef);\n useValidateTypescriptPropTypes(propsWithDefaults, ComboboxPropTypes);\n const [showPopover, setShowPopover] = useState<boolean>(false);\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null);\n const [showSelectedOptions, setShowSelectedOptions] = useState<boolean>(false);\n\n const [inputValue, setInputValue] = useState<string>('');\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n\n const listRef = useRef<HTMLDivElement>(null);\n const wrapperListRef = useRef<HTMLDivElement>(null);\n\n const selectedOptionsRef = useRef<HTMLDivElement>(null);\n const controlsWrapperRef = useRef<HTMLDivElement>(null);\n const selectAllCheckboxRef = useRef<HTMLInputElement>(null);\n const toggleSelectionButtonRef = useRef<HTMLButtonElement>(null);\n const pillGroupRef = useRef<HTMLDivElement>(null);\n\n const { selectedValues } = propsWithDefaults;\n // ---------------------------------------------------------------------------\n //
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADIvB,mBAAkE;AAClE,2BAA2B;AAC3B,8BAA6E;AAC7E,yBAA6B;AAC7B,mCAA+C;AAE/C,+BAAkC;AAClC,wBAA+B;AACxB,MAAM,cAAc,CAAC,UAAoE;AAC9F,QAAM,2BAA2B,iCAC5B,kCAD4B;AAAA,IAE/B,UAAU,yBAAO;AAAA;AAGnB,QAAM,oBAAoB,0DAA6B,OAAO;AAC9D,8DAA+B,mBAAmB;AAClD,QAAM,CAAC,aAAa,kBAAkB,2BAAkB;AACxD,QAAM,CAAC,kBAAkB,uBAAuB,2BAA6B;AAC7E,QAAM,CAAC,qBAAqB,0BAA0B,2BAAkB;AAExE,QAAM,CAAC,YAAY,iBAAiB,2BAAiB;AACrD,QAAM,CAAC,UAAU,eAAe,2BAAkB;AAElD,QAAM,UAAU,yBAAuB;AACvC,QAAM,iBAAiB,yBAAuB;AAE9C,QAAM,qBAAqB,yBAAuB;AAClD,QAAM,qBAAqB,yBAAuB;AAClD,QAAM,uBAAuB,yBAAyB;AACtD,QAAM,2BAA2B,yBAA0B;AAC3D,QAAM,eAAe,yBAAuB;AAE5C,QAAM,EAAE,mBAAmB;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable import/prefer-default-export */\n/* eslint-disable complexity */\n/* eslint-disable max-statements */\nimport { useMemo, useState, useRef, useCallback, useEffect } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { defaultProps } from '../ComboBoxCTX';\nimport { DSComboboxT, ComboboxPropTypes } from '../react-desc-prop-types';\nimport { DSComboboxInternalsT } from '../sharedTypes';\nimport { useCorrectOptions } from './useCorrectOptions';\nimport { getFirstOption } from '../utils/listHelper';\nexport const useComboBox = (props: DSComboboxT.Props): DSComboboxInternalsT.ComboBoxContextT => {\n const defaultPropsWithInnerRef = {\n ...defaultProps,\n innerRef: useRef(null),\n };\n\n const propsWithDefaults = useMemoMergePropsWithDefault(props, defaultPropsWithInnerRef);\n useValidateTypescriptPropTypes(propsWithDefaults, ComboboxPropTypes);\n const [showPopover, setShowPopover] = useState<boolean>(false);\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null);\n const [showSelectedOptions, setShowSelectedOptions] = useState<boolean>(false);\n\n const [inputValue, setInputValue] = useState<string>('');\n const [hasFocus, setHasFocus] = useState<boolean>(false);\n\n const listRef = useRef<HTMLDivElement>(null);\n const wrapperListRef = useRef<HTMLDivElement>(null);\n\n const selectedOptionsRef = useRef<HTMLDivElement>(null);\n const controlsWrapperRef = useRef<HTMLDivElement>(null);\n const selectAllCheckboxRef = useRef<HTMLInputElement>(null);\n const toggleSelectionButtonRef = useRef<HTMLButtonElement>(null);\n const pillGroupRef = useRef<HTMLDivElement>(null);\n\n const { selectedValues } = propsWithDefaults;\n\n // ---------------------------------------------------------------------------\n // Options with creatable option + filtered by selected\n // ---------------------------------------------------------------------------\n\n const correctOptions = useCorrectOptions(propsWithDefaults, inputValue, showSelectedOptions);\n\n // ===========================================================================\n // Virtualization setup\n // ===========================================================================\n\n const virtualListHelpers: ReturnType<typeof useVirtual> = useVirtual({\n size: correctOptions.length,\n parentRef: listRef,\n overscan: 15,\n paddingStart: 0,\n });\n\n // ===========================================================================\n // Scroll into view function\n // ===========================================================================\n const scrollOptionIntoView = useCallback(\n (dsId: string, opts = { align: 'center' }) => {\n virtualListHelpers.scrollToIndex(\n correctOptions.findIndex((opt) => opt.dsId === dsId),\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n opts,\n );\n },\n [correctOptions, virtualListHelpers],\n );\n\n // ===========================================================================\n // Init focused option when opening the menu list\n // ===========================================================================\n\n const [focusOptionIdx, setFocusOptionIdx] = useState<string>('');\n\n useEffect(() => {\n // we are updating the focus option only when we have focus on the input and\n // we are in the selected option view or we are typing to force first option always\n if (hasFocus && (focusOptionIdx === '' || inputValue !== '' || showSelectedOptions)) {\n const focusedValue = getFirstOption(correctOptions, selectedValues, inputValue);\n setFocusOptionIdx(focusedValue);\n scrollOptionIntoView(focusedValue, { align: 'center' });\n }\n if (!hasFocus) setFocusOptionIdx('');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [showPopover, hasFocus, correctOptions, selectedValues, inputValue]);\n\n useEffect(() => {\n if (!showPopover) {\n setFocusOptionIdx('');\n setShowSelectedOptions(false);\n }\n }, [showPopover]);\n\n const ctx = useMemo(\n () => ({\n props: { ...propsWithDefaults, filteredOptions: correctOptions },\n virtualListHelpers,\n showPopover,\n referenceElement,\n listRef,\n focusOptionIdx,\n selectedOptionsRef,\n controlsWrapperRef,\n selectAllCheckboxRef,\n inputValue,\n setInputValue,\n hasFocus,\n toggleSelectionButtonRef,\n pillGroupRef,\n showSelectedOptions,\n wrapperListRef,\n setShowSelectedOptions,\n setHasFocus,\n setFocusOptionIdx,\n scrollOptionIntoView,\n setReferenceElement,\n setShowPopover,\n }),\n [\n scrollOptionIntoView,\n correctOptions,\n hasFocus,\n propsWithDefaults,\n virtualListHelpers,\n inputValue,\n focusOptionIdx,\n wrapperListRef,\n showSelectedOptions,\n showPopover,\n pillGroupRef,\n referenceElement,\n selectedOptionsRef,\n controlsWrapperRef,\n selectAllCheckboxRef,\n toggleSelectionButtonRef,\n listRef,\n ],\n );\n\n return ctx;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADIvB,mBAAkE;AAClE,2BAA2B;AAC3B,8BAA6E;AAC7E,yBAA6B;AAC7B,mCAA+C;AAE/C,+BAAkC;AAClC,wBAA+B;AACxB,MAAM,cAAc,CAAC,UAAoE;AAC9F,QAAM,2BAA2B,iCAC5B,kCAD4B;AAAA,IAE/B,UAAU,yBAAO;AAAA;AAGnB,QAAM,oBAAoB,0DAA6B,OAAO;AAC9D,8DAA+B,mBAAmB;AAClD,QAAM,CAAC,aAAa,kBAAkB,2BAAkB;AACxD,QAAM,CAAC,kBAAkB,uBAAuB,2BAA6B;AAC7E,QAAM,CAAC,qBAAqB,0BAA0B,2BAAkB;AAExE,QAAM,CAAC,YAAY,iBAAiB,2BAAiB;AACrD,QAAM,CAAC,UAAU,eAAe,2BAAkB;AAElD,QAAM,UAAU,yBAAuB;AACvC,QAAM,iBAAiB,yBAAuB;AAE9C,QAAM,qBAAqB,yBAAuB;AAClD,QAAM,qBAAqB,yBAAuB;AAClD,QAAM,uBAAuB,yBAAyB;AACtD,QAAM,2BAA2B,yBAA0B;AAC3D,QAAM,eAAe,yBAAuB;AAE5C,QAAM,EAAE,mBAAmB;AAM3B,QAAM,iBAAiB,gDAAkB,mBAAmB,YAAY;AAMxE,QAAM,qBAAoD,qCAAW;AAAA,IACnE,MAAM,eAAe;AAAA,IACrB,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA;AAMhB,QAAM,uBAAuB,8BAC3B,CAAC,MAAc,OAAO,EAAE,OAAO,eAAe;AAC5C,uBAAmB,cACjB,eAAe,UAAU,CAAC,QAAQ,IAAI,SAAS,OAE/C;AAAA,KAGJ,CAAC,gBAAgB;AAOnB,QAAM,CAAC,gBAAgB,qBAAqB,2BAAiB;AAE7D,8BAAU,MAAM;AAGd,QAAI,YAAa,oBAAmB,MAAM,eAAe,MAAM,sBAAsB;AACnF,YAAM,eAAe,sCAAe,gBAAgB,gBAAgB;AACpE,wBAAkB;AAClB,2BAAqB,cAAc,EAAE,OAAO;AAAA;AAE9C,QAAI,CAAC;AAAU,wBAAkB;AAAA,KAEhC,CAAC,aAAa,UAAU,gBAAgB,gBAAgB;AAE3D,8BAAU,MAAM;AACd,QAAI,CAAC,aAAa;AAChB,wBAAkB;AAClB,6BAAuB;AAAA;AAAA,KAExB,CAAC;AAEJ,QAAM,MAAM,0BACV,MAAO;AAAA,IACL,OAAO,iCAAK,oBAAL,EAAwB,iBAAiB;AAAA,IAChD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MAEF;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAIJ,SAAO;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -33,45 +33,26 @@ var React = __toESM(require("react"));
|
|
|
33
33
|
var import_react = require("react");
|
|
34
34
|
var import_uid = require("uid");
|
|
35
35
|
var import_constants = require("../constants");
|
|
36
|
+
var import_listHelper = require("../utils/listHelper");
|
|
36
37
|
const useCorrectOptions = (propsWithDefaults, inputValue, showSelectedOptions) => {
|
|
37
|
-
const {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
options.forEach((option) => {
|
|
42
|
-
const isSelectedValue = multiSelectedValue.find((item) => item.dsId === option.dsId);
|
|
43
|
-
if (isSelectedValue) {
|
|
44
|
-
items.push(option);
|
|
45
|
-
}
|
|
46
|
-
if (option.type === import_constants.MENU_OPTION_TYPES.SECTION) {
|
|
47
|
-
if (items[items.length - 1]?.type === import_constants.MENU_OPTION_TYPES.SECTION) {
|
|
48
|
-
items[items.length - 1] = option;
|
|
49
|
-
} else {
|
|
50
|
-
items.push(option);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
if (items[items.length - 1]?.type === import_constants.MENU_OPTION_TYPES.SECTION) {
|
|
55
|
-
items.pop();
|
|
56
|
-
}
|
|
57
|
-
return items;
|
|
58
|
-
}, [options, selectedValues]);
|
|
59
|
-
const correctOptions = (0, import_react.useMemo)(() => {
|
|
38
|
+
const { filteredOptions, allOptions, selectedValues, onCreate } = propsWithDefaults;
|
|
39
|
+
return (0, import_react.useMemo)(() => {
|
|
40
|
+
if (!filteredOptions)
|
|
41
|
+
return [...allOptions];
|
|
60
42
|
if (showSelectedOptions && Array.isArray(selectedValues) && selectedValues.length > 0) {
|
|
61
|
-
return selectedValuesWithSections();
|
|
43
|
+
return (0, import_listHelper.selectedValuesWithSections)(filteredOptions, selectedValues);
|
|
62
44
|
}
|
|
63
|
-
if (onCreate && inputValue &&
|
|
45
|
+
if (onCreate && inputValue && filteredOptions.findIndex((option) => option.type === import_constants.MENU_OPTION_TYPES.OPTION && option.label === inputValue) === -1) {
|
|
64
46
|
const creatableUuid = (0, import_uid.uid)();
|
|
65
47
|
const creatableItem = {
|
|
66
48
|
dsId: `creatable-${creatableUuid}`,
|
|
67
49
|
label: inputValue,
|
|
68
50
|
type: "creatable"
|
|
69
51
|
};
|
|
70
|
-
return [creatableItem, ...
|
|
52
|
+
return [creatableItem, ...filteredOptions];
|
|
71
53
|
}
|
|
72
|
-
return
|
|
73
|
-
}, [
|
|
74
|
-
return correctOptions;
|
|
54
|
+
return filteredOptions;
|
|
55
|
+
}, [filteredOptions, allOptions, showSelectedOptions, selectedValues, onCreate, inputValue]);
|
|
75
56
|
};
|
|
76
57
|
module.exports = __toCommonJS(useCorrectOptions_exports);
|
|
77
58
|
//# sourceMappingURL=useCorrectOptions.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/combobox/config/useCorrectOptions.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { useMemo
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,
|
|
4
|
+
"sourcesContent": ["import { useMemo } from 'react';\nimport { uid } from 'uid';\nimport { DSComboboxT } from '../react-desc-prop-types';\nimport { MENU_OPTION_TYPES } from '../constants';\nimport { selectedValuesWithSections } from '../utils/listHelper';\nconst useCorrectOptions = (propsWithDefaults: DSComboboxT.Props, inputValue: string, showSelectedOptions: boolean) => {\n const { filteredOptions, allOptions, selectedValues, onCreate } = propsWithDefaults;\n\n return useMemo(() => {\n // if filteredOptions is not passed we copy allOptions into the prop as default\n // this is useful when the user wants a combo with out filtering and only pass allOptions as its required\n if (!filteredOptions) return [...allOptions];\n // when show selected toggle is on we return the selected value only as filteredOptions prop\n if (showSelectedOptions && Array.isArray(selectedValues) && selectedValues.length > 0) {\n return selectedValuesWithSections(filteredOptions, selectedValues);\n }\n // whether oncreate is passed we add as first option the creatable action based on input value string\n if (\n onCreate &&\n inputValue &&\n filteredOptions.findIndex((option) => option.type === MENU_OPTION_TYPES.OPTION && option.label === inputValue) ===\n -1\n ) {\n const creatableUuid = uid();\n const creatableItem: DSComboboxT.ItemCreatableOption = {\n dsId: `creatable-${creatableUuid}`,\n label: inputValue,\n type: 'creatable',\n };\n return [creatableItem, ...filteredOptions];\n }\n return filteredOptions;\n }, [filteredOptions, allOptions, showSelectedOptions, selectedValues, onCreate, inputValue]);\n};\n\nexport { useCorrectOptions };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAwB;AACxB,iBAAoB;AAEpB,uBAAkC;AAClC,wBAA2C;AAC3C,MAAM,oBAAoB,CAAC,mBAAsC,YAAoB,wBAAiC;AACpH,QAAM,EAAE,iBAAiB,YAAY,gBAAgB,aAAa;AAElE,SAAO,0BAAQ,MAAM;AAGnB,QAAI,CAAC;AAAiB,aAAO,CAAC,GAAG;AAEjC,QAAI,uBAAuB,MAAM,QAAQ,mBAAmB,eAAe,SAAS,GAAG;AACrF,aAAO,kDAA2B,iBAAiB;AAAA;AAGrD,QACE,YACA,cACA,gBAAgB,UAAU,CAAC,WAAW,OAAO,SAAS,mCAAkB,UAAU,OAAO,UAAU,gBACjG,IACF;AACA,YAAM,gBAAgB;AACtB,YAAM,gBAAiD;AAAA,QACrD,MAAM,aAAa;AAAA,QACnB,OAAO;AAAA,QACP,MAAM;AAAA;AAER,aAAO,CAAC,eAAe,GAAG;AAAA;AAE5B,WAAO;AAAA,KACN,CAAC,iBAAiB,YAAY,qBAAqB,gBAAgB,UAAU;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -37,12 +37,12 @@ var import_listHelper = require("../utils/listHelper");
|
|
|
37
37
|
var import_sharedTypes = require("../sharedTypes");
|
|
38
38
|
const A11yFocusedOption = () => {
|
|
39
39
|
const {
|
|
40
|
-
props: {
|
|
40
|
+
props: { filteredOptions },
|
|
41
41
|
focusOptionIdx,
|
|
42
42
|
showPopover
|
|
43
43
|
} = (0, import_react.useContext)(import_ComboBoxCTX.default);
|
|
44
|
-
const selectabledOptions = (0, import_listHelper.getSelectableOptions)(
|
|
45
|
-
const focusOption =
|
|
44
|
+
const selectabledOptions = (0, import_listHelper.getSelectableOptions)(filteredOptions);
|
|
45
|
+
const focusOption = filteredOptions.find((option) => !(0, import_sharedTypes.isSeparator)(option) && option.dsId === focusOptionIdx);
|
|
46
46
|
const focusSelectableOptionIdx = selectabledOptions.findIndex((option) => option.dsId === focusOptionIdx);
|
|
47
47
|
return (0, import_react.useMemo)(() => {
|
|
48
48
|
if (!(0, import_sharedTypes.isSeparator)(focusOption) && showPopover && focusOption)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/combobox/parts/A11yFocusedOption.tsx", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext, useMemo } from 'react';\nimport ComboBoxContext from '../ComboBoxCTX';\nimport { StyledA11ySelectedValues } from './styled';\nimport { getSelectableOptions } from '../utils/listHelper';\nimport { isSeparator } from '../sharedTypes';\n\nexport const A11yFocusedOption: React.ComponentType = () => {\n const {\n props: {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA2C;AAC3C,yBAA4B;AAC5B,oBAAyC;AACzC,wBAAqC;AACrC,yBAA4B;AAErB,MAAM,oBAAyC,MAAM;AAC1D,QAAM;AAAA,IACJ,OAAO,EAAE;AAAA,IACT;AAAA,IACA;AAAA,MACE,6BAAW;AACf,QAAM,qBAAqB,4CAAqB;AAChD,QAAM,cAAc,
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useMemo } from 'react';\nimport ComboBoxContext from '../ComboBoxCTX';\nimport { StyledA11ySelectedValues } from './styled';\nimport { getSelectableOptions } from '../utils/listHelper';\nimport { isSeparator } from '../sharedTypes';\n\nexport const A11yFocusedOption: React.ComponentType = () => {\n const {\n props: { filteredOptions },\n focusOptionIdx,\n showPopover,\n } = useContext(ComboBoxContext);\n const selectabledOptions = getSelectableOptions(filteredOptions);\n const focusOption = filteredOptions.find((option) => !isSeparator(option) && option.dsId === focusOptionIdx);\n\n const focusSelectableOptionIdx = selectabledOptions.findIndex((option) => option.dsId === focusOptionIdx);\n\n return useMemo(() => {\n if (!isSeparator(focusOption) && showPopover && focusOption)\n return (\n <StyledA11ySelectedValues aria-live=\"polite\" aria-atomic=\"false\" aria-relevant=\"additions text\">\n {`option ${focusOption?.label} focused.${focusSelectableOptionIdx + 1} of ${selectabledOptions.length} `}\n </StyledA11ySelectedValues>\n );\n\n return null;\n }, [showPopover, focusOption, focusSelectableOptionIdx, selectabledOptions]);\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA2C;AAC3C,yBAA4B;AAC5B,oBAAyC;AACzC,wBAAqC;AACrC,yBAA4B;AAErB,MAAM,oBAAyC,MAAM;AAC1D,QAAM;AAAA,IACJ,OAAO,EAAE;AAAA,IACT;AAAA,IACA;AAAA,MACE,6BAAW;AACf,QAAM,qBAAqB,4CAAqB;AAChD,QAAM,cAAc,gBAAgB,KAAK,CAAC,WAAW,CAAC,oCAAY,WAAW,OAAO,SAAS;AAE7F,QAAM,2BAA2B,mBAAmB,UAAU,CAAC,WAAW,OAAO,SAAS;AAE1F,SAAO,0BAAQ,MAAM;AACnB,QAAI,CAAC,oCAAY,gBAAgB,eAAe;AAC9C,aACE,mDAAC,wCAAD;AAAA,QAA0B,aAAU;AAAA,QAAS,eAAY;AAAA,QAAQ,iBAAc;AAAA,SAC5E,UAAU,aAAa,iBAAiB,2BAA2B,QAAQ,mBAAmB;AAIrG,WAAO;AAAA,KACN,CAAC,aAAa,aAAa,0BAA0B;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -47,6 +47,8 @@ const Controls = () => {
|
|
|
47
47
|
selectedOptionsRef,
|
|
48
48
|
setShowPopover,
|
|
49
49
|
hasFocus,
|
|
50
|
+
focusOptionIdx,
|
|
51
|
+
scrollOptionIntoView,
|
|
50
52
|
showPopover,
|
|
51
53
|
controlsWrapperRef
|
|
52
54
|
} = (0, import_react.useContext)(import_ComboBoxCTX.default);
|
|
@@ -60,7 +62,7 @@ const Controls = () => {
|
|
|
60
62
|
}
|
|
61
63
|
innerRef.current?.focus();
|
|
62
64
|
setShowPopover(true);
|
|
63
|
-
}, [disabled, hasFocus,
|
|
65
|
+
}, [disabled, hasFocus, showPopover, inline, innerRef, setShowPopover, focusOptionIdx]);
|
|
64
66
|
const handleOnPillsClick = (0, import_react.useCallback)((e) => {
|
|
65
67
|
if (showPopover || disabled) {
|
|
66
68
|
e.stopPropagation();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/combobox/parts/controls/Controls.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useContext, useMemo, useCallback } from 'react';\nimport { DropdownIndicator } from '../DropdownIndicator';\nimport { ComboboxDataTestid } from '../../ComboboxDataTestids';\nimport ComboBoxContext from '../../ComboBoxCTX';\nimport {\n StyledControlsWrapper,\n StyleHeaderActionsSeparator,\n StyledHeaderActionsWrapper,\n StyledSelection,\n} from './styled';\nimport { MultiSelectedValuesContainer } from '../multi-selected-values-container';\nimport { ControlsInput } from '../controls-input/ControlsInput';\nimport { useOnPillsNavigation } from './useOnPillsNavigation';\nimport { A11yFocusedOption } from '../A11yFocusedOption';\nimport { A11ySelectedValues } from '../A11ySelectedValues';\nimport { RemovableSelectedValuePill } from '../multi-selected-values-container/RemovableSelectedValuePill';\nexport const Controls = (): JSX.Element => {\n const {\n props: { inline, disabled, inputMinWidth, hasError, selectedValues, innerRef },\n selectedOptionsRef,\n setShowPopover,\n hasFocus,\n showPopover,\n controlsWrapperRef,\n } = useContext(ComboBoxContext);\n\n const handleOnClick = useCallback(() => {\n if (disabled) return;\n if (hasFocus && showPopover && !inline) {\n setShowPopover(false);\n innerRef.current?.blur();\n return;\n }\n innerRef.current?.focus();\n setShowPopover(true);\n }, [disabled, hasFocus,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,mBAAwD;AACxD,+BAAkC;AAClC,iCAAmC;AACnC,yBAA4B;AAC5B,oBAKO;AACP,6CAA6C;AAC7C,2BAA8B;AAC9B,kCAAqC;AACrC,+BAAkC;AAClC,gCAAmC;AACnC,wCAA2C;AACpC,MAAM,WAAW,MAAmB;AACzC,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ,UAAU,eAAe,UAAU,gBAAgB;AAAA,IACpE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AAEf,QAAM,gBAAgB,8BAAY,MAAM;AACtC,QAAI;AAAU;AACd,QAAI,YAAY,eAAe,CAAC,QAAQ;AACtC,qBAAe;AACf,eAAS,SAAS;AAClB;AAAA;AAEF,aAAS,SAAS;AAClB,mBAAe;AAAA,
|
|
4
|
+
"sourcesContent": ["/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useContext, useMemo, useCallback } from 'react';\nimport { DropdownIndicator } from '../DropdownIndicator';\nimport { ComboboxDataTestid } from '../../ComboboxDataTestids';\nimport ComboBoxContext from '../../ComboBoxCTX';\nimport {\n StyledControlsWrapper,\n StyleHeaderActionsSeparator,\n StyledHeaderActionsWrapper,\n StyledSelection,\n} from './styled';\nimport { MultiSelectedValuesContainer } from '../multi-selected-values-container';\nimport { ControlsInput } from '../controls-input/ControlsInput';\nimport { useOnPillsNavigation } from './useOnPillsNavigation';\nimport { A11yFocusedOption } from '../A11yFocusedOption';\nimport { A11ySelectedValues } from '../A11ySelectedValues';\nimport { RemovableSelectedValuePill } from '../multi-selected-values-container/RemovableSelectedValuePill';\nexport const Controls = (): JSX.Element => {\n const {\n props: { inline, disabled, inputMinWidth, hasError, selectedValues, innerRef },\n selectedOptionsRef,\n setShowPopover,\n hasFocus,\n focusOptionIdx,\n scrollOptionIntoView,\n showPopover,\n controlsWrapperRef,\n } = useContext(ComboBoxContext);\n\n const handleOnClick = useCallback(() => {\n if (disabled) return;\n if (hasFocus && showPopover && !inline) {\n setShowPopover(false);\n innerRef.current?.blur();\n return;\n }\n innerRef.current?.focus();\n setShowPopover(true);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [disabled, hasFocus, showPopover, inline, innerRef, setShowPopover, focusOptionIdx]);\n\n // this callback prevent to toggle the menu when clicking or removing pills\n const handleOnPillsClick: React.MouseEventHandler = useCallback(\n (e) => {\n if (showPopover || disabled) {\n e.stopPropagation();\n } else {\n innerRef.current?.focus();\n setShowPopover(true);\n }\n },\n [showPopover, innerRef, disabled, setShowPopover],\n );\n\n // callback to prevent onBlur on the input when clicking in all the wrapper\n const handleOnMouseDown: React.MouseEventHandler = useCallback(\n (e) => {\n if (document.activeElement === innerRef.current || inline) {\n e.preventDefault();\n }\n },\n [innerRef, inline],\n );\n\n const { onKeyDownPills } = useOnPillsNavigation();\n\n const cols = useMemo(\n () => (!inline ? ['minmax(0px,max-content)', 'minmax(20px, auto)', '29px'] : ['minmax(0px, auto)']),\n [inline],\n );\n return (\n <StyledControlsWrapper\n ref={controlsWrapperRef}\n cols={cols}\n disabled={disabled}\n minWidth={inputMinWidth}\n hasError={hasError}\n inline={inline}\n onClick={handleOnClick}\n onMouseDown={handleOnMouseDown}\n onKeyDown={onKeyDownPills}\n data-testid={ComboboxDataTestid.CONTROLS_WRAPPER}\n >\n {!inline && (\n <StyledSelection ref={selectedOptionsRef} onClick={handleOnPillsClick}>\n <A11ySelectedValues />\n <A11yFocusedOption />\n {Array.isArray(selectedValues) ? (\n <MultiSelectedValuesContainer />\n ) : (\n <div data-testid={ComboboxDataTestid.SELECTED_VALUES}>\n {selectedValues && <RemovableSelectedValuePill pill={selectedValues} />}\n </div>\n )}\n </StyledSelection>\n )}\n\n <ControlsInput />\n {!inline && (\n <StyledHeaderActionsWrapper justifyContent=\"center\" cols={['auto', 'auto']}>\n <StyleHeaderActionsSeparator disabled={disabled} />\n <DropdownIndicator />\n </StyledHeaderActionsWrapper>\n )}\n </StyledControlsWrapper>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADEvB,mBAAwD;AACxD,+BAAkC;AAClC,iCAAmC;AACnC,yBAA4B;AAC5B,oBAKO;AACP,6CAA6C;AAC7C,2BAA8B;AAC9B,kCAAqC;AACrC,+BAAkC;AAClC,gCAAmC;AACnC,wCAA2C;AACpC,MAAM,WAAW,MAAmB;AACzC,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ,UAAU,eAAe,UAAU,gBAAgB;AAAA,IACpE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AAEf,QAAM,gBAAgB,8BAAY,MAAM;AACtC,QAAI;AAAU;AACd,QAAI,YAAY,eAAe,CAAC,QAAQ;AACtC,qBAAe;AACf,eAAS,SAAS;AAClB;AAAA;AAEF,aAAS,SAAS;AAClB,mBAAe;AAAA,KAEd,CAAC,UAAU,UAAU,aAAa,QAAQ,UAAU,gBAAgB;AAGvE,QAAM,qBAA8C,8BAClD,CAAC,MAAM;AACL,QAAI,eAAe,UAAU;AAC3B,QAAE;AAAA,WACG;AACL,eAAS,SAAS;AAClB,qBAAe;AAAA;AAAA,KAGnB,CAAC,aAAa,UAAU,UAAU;AAIpC,QAAM,oBAA6C,8BACjD,CAAC,MAAM;AACL,QAAI,SAAS,kBAAkB,SAAS,WAAW,QAAQ;AACzD,QAAE;AAAA;AAAA,KAGN,CAAC,UAAU;AAGb,QAAM,EAAE,mBAAmB;AAE3B,QAAM,OAAO,0BACX,MAAO,CAAC,SAAS,CAAC,2BAA2B,sBAAsB,UAAU,CAAC,sBAC9E,CAAC;AAEH,SACE,mDAAC,qCAAD;AAAA,IACE,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,eAAa,8CAAmB;AAAA,KAE/B,CAAC,UACA,mDAAC,+BAAD;AAAA,IAAiB,KAAK;AAAA,IAAoB,SAAS;AAAA,KACjD,mDAAC,8CAAD,OACA,mDAAC,4CAAD,OACC,MAAM,QAAQ,kBACb,mDAAC,qEAAD,QAEA,mDAAC,OAAD;AAAA,IAAK,eAAa,8CAAmB;AAAA,KAClC,kBAAkB,mDAAC,8DAAD;AAAA,IAA4B,MAAM;AAAA,QAM7D,mDAAC,oCAAD,OACC,CAAC,UACA,mDAAC,0CAAD;AAAA,IAA4B,gBAAe;AAAA,IAAS,MAAM,CAAC,QAAQ;AAAA,KACjE,mDAAC,2CAAD;AAAA,IAA6B;AAAA,MAC7B,mDAAC,4CAAD;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -39,7 +39,7 @@ var import_useControlsInput = require("./useControlsInput");
|
|
|
39
39
|
var import_ComboBoxCTX = require("../../ComboBoxCTX");
|
|
40
40
|
const ControlsInput = () => {
|
|
41
41
|
const {
|
|
42
|
-
props: { autoFocus, disabled, innerRef, onFilter },
|
|
42
|
+
props: { autoFocus, placeholder, disabled, innerRef, onFilter },
|
|
43
43
|
focusOptionIdx,
|
|
44
44
|
inputValue,
|
|
45
45
|
showPopover
|
|
@@ -53,6 +53,7 @@ const ControlsInput = () => {
|
|
|
53
53
|
})), /* @__PURE__ */ import_react.default.createElement(import_styled.StyledInput, {
|
|
54
54
|
"data-testid": import_ComboboxDataTestids.ComboboxDataTestid.INPUT,
|
|
55
55
|
autoFocus,
|
|
56
|
+
placeholder,
|
|
56
57
|
"aria-controls": "combo-listbox",
|
|
57
58
|
"aria-activedescendant": focusOptionIdx,
|
|
58
59
|
"aria-expanded": showPopover,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/combobox/parts/controls-input/ControlsInput.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext } from 'react';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-truncated-tooltip-text';\n\nimport { ComboboxDataTestid } from '../../ComboboxDataTestids';\nimport { StyledInput, StyledInputWrapper, StyledInputPlaceHolder, StyledInputWidthReference } from './styled';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\nimport { useControlsInput } from './useControlsInput';\nimport { ComboBoxContext } from '../../ComboBoxCTX';\n\nexport const ControlsInput = (): JSX.Element => {\n const {\n props: { autoFocus, disabled, innerRef, onFilter },\n focusOptionIdx,\n inputValue,\n showPopover,\n } = useContext(ComboBoxContext);\n const { onInputKeyDown } = useKeyboardNavigation();\n const { spanReference, width, spanReferenceText, showPlaceholder, handleOnBlur, handleOnChange, handleOnFocus } =\n useControlsInput();\n return (\n <StyledInputWrapper>\n <StyledInputWidthReference ref={spanReference}>{spanReferenceText}</StyledInputWidthReference>\n <StyledInputPlaceHolder>\n <SimpleTruncatedTooltipText value={showPlaceholder}></SimpleTruncatedTooltipText>\n </StyledInputPlaceHolder>\n\n <StyledInput\n data-testid={ComboboxDataTestid.INPUT}\n autoFocus={autoFocus}\n aria-controls=\"combo-listbox\"\n aria-activedescendant={focusOptionIdx}\n aria-expanded={showPopover}\n aria-haspopup=\"true\"\n aria-describedby=\"combobox-selected-items\"\n role=\"combobox\"\n disabled={disabled}\n style={{ width }}\n ref={innerRef}\n value={inputValue}\n type=\"text\"\n onKeyDown={onInputKeyDown}\n onChange={handleOnChange}\n onBlur={handleOnBlur}\n onFocus={handleOnFocus}\n withoutCaret={!onFilter}\n />\n </StyledInputWrapper>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkC;AAClC,uCAA2C;AAE3C,iCAAmC;AACnC,oBAAmG;AACnG,mCAAsC;AACtC,8BAAiC;AACjC,yBAAgC;AAEzB,MAAM,gBAAgB,MAAmB;AAC9C,QAAM;AAAA,IACJ,OAAO,EAAE,WAAW,UAAU,UAAU;AAAA,
|
|
4
|
+
"sourcesContent": ["import React, { useContext } from 'react';\nimport { SimpleTruncatedTooltipText } from '@elliemae/ds-truncated-tooltip-text';\n\nimport { ComboboxDataTestid } from '../../ComboboxDataTestids';\nimport { StyledInput, StyledInputWrapper, StyledInputPlaceHolder, StyledInputWidthReference } from './styled';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\nimport { useControlsInput } from './useControlsInput';\nimport { ComboBoxContext } from '../../ComboBoxCTX';\n\nexport const ControlsInput = (): JSX.Element => {\n const {\n props: { autoFocus, placeholder, disabled, innerRef, onFilter },\n focusOptionIdx,\n inputValue,\n showPopover,\n } = useContext(ComboBoxContext);\n const { onInputKeyDown } = useKeyboardNavigation();\n const { spanReference, width, spanReferenceText, showPlaceholder, handleOnBlur, handleOnChange, handleOnFocus } =\n useControlsInput();\n return (\n <StyledInputWrapper>\n <StyledInputWidthReference ref={spanReference}>{spanReferenceText}</StyledInputWidthReference>\n <StyledInputPlaceHolder>\n <SimpleTruncatedTooltipText value={showPlaceholder}></SimpleTruncatedTooltipText>\n </StyledInputPlaceHolder>\n\n <StyledInput\n data-testid={ComboboxDataTestid.INPUT}\n autoFocus={autoFocus}\n placeholder={placeholder}\n aria-controls=\"combo-listbox\"\n aria-activedescendant={focusOptionIdx}\n aria-expanded={showPopover}\n aria-haspopup=\"true\"\n aria-describedby=\"combobox-selected-items\"\n role=\"combobox\"\n disabled={disabled}\n style={{ width }}\n ref={innerRef}\n value={inputValue}\n type=\"text\"\n onKeyDown={onInputKeyDown}\n onChange={handleOnChange}\n onBlur={handleOnBlur}\n onFocus={handleOnFocus}\n withoutCaret={!onFilter}\n />\n </StyledInputWrapper>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkC;AAClC,uCAA2C;AAE3C,iCAAmC;AACnC,oBAAmG;AACnG,mCAAsC;AACtC,8BAAiC;AACjC,yBAAgC;AAEzB,MAAM,gBAAgB,MAAmB;AAC9C,QAAM;AAAA,IACJ,OAAO,EAAE,WAAW,aAAa,UAAU,UAAU;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AACf,QAAM,EAAE,mBAAmB;AAC3B,QAAM,EAAE,eAAe,OAAO,mBAAmB,iBAAiB,cAAc,gBAAgB,kBAC9F;AACF,SACE,mDAAC,kCAAD,MACE,mDAAC,yCAAD;AAAA,IAA2B,KAAK;AAAA,KAAgB,oBAChD,mDAAC,sCAAD,MACE,mDAAC,6DAAD;AAAA,IAA4B,OAAO;AAAA,OAGrC,mDAAC,2BAAD;AAAA,IACE,eAAa,8CAAmB;AAAA,IAChC;AAAA,IACA;AAAA,IACA,iBAAc;AAAA,IACd,yBAAuB;AAAA,IACvB,iBAAe;AAAA,IACf,iBAAc;AAAA,IACd,oBAAiB;AAAA,IACjB,MAAK;AAAA,IACL;AAAA,IACA,OAAO,EAAE;AAAA,IACT,KAAK;AAAA,IACL,OAAO;AAAA,IACP,MAAK;AAAA,IACL,WAAW;AAAA,IACX,UAAU;AAAA,IACV,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,cAAc,CAAC;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -45,6 +45,9 @@ const StyledInput = import_ds_system.styled.input`
|
|
|
45
45
|
outline: none;
|
|
46
46
|
}
|
|
47
47
|
${({ withoutCaret }) => withoutCaret && "caret-color: transparent;"}
|
|
48
|
+
&::placeholder {
|
|
49
|
+
color: transparent;
|
|
50
|
+
}
|
|
48
51
|
`;
|
|
49
52
|
const StyledInputPlaceHolder = import_ds_system.styled.div`
|
|
50
53
|
font-style: italic;
|