@elliemae/ds-form-layout-autocomplete 3.53.0-alpha.1 → 3.53.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Autocomplete.js +2 -2
- package/dist/cjs/Autocomplete.js.map +2 -2
- package/dist/cjs/AutocompleteDataTestids.js +2 -1
- package/dist/cjs/AutocompleteDataTestids.js.map +2 -2
- package/dist/cjs/config/useAutocomplete.js +6 -3
- package/dist/cjs/config/useAutocomplete.js.map +2 -2
- package/dist/cjs/{tests/utils.js → config/useClickOutside.js} +22 -50
- package/dist/cjs/config/useClickOutside.js.map +7 -0
- package/dist/cjs/{DSAutocompleteDefinitions.js → constants/index.js} +12 -5
- package/dist/cjs/constants/index.js.map +7 -0
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/parts/container/Container.js +40 -16
- package/dist/cjs/parts/container/Container.js.map +2 -2
- package/dist/cjs/parts/container/styled.js +5 -1
- package/dist/cjs/parts/container/styled.js.map +2 -2
- package/dist/cjs/parts/menu-list/MenuList.js +3 -1
- package/dist/cjs/parts/menu-list/MenuList.js.map +2 -2
- package/dist/cjs/parts/menu-list/styled.js +5 -1
- package/dist/cjs/parts/menu-list/styled.js.map +2 -2
- package/dist/cjs/parts/menu-list/useItemRenderer.js +14 -4
- package/dist/cjs/parts/menu-list/useItemRenderer.js.map +2 -2
- package/dist/cjs/react-desc-prop-types.js +1 -1
- package/dist/cjs/react-desc-prop-types.js.map +2 -2
- package/dist/cjs/utils/listHelper.js +3 -1
- package/dist/cjs/utils/listHelper.js.map +2 -2
- package/dist/esm/Autocomplete.js +1 -1
- package/dist/esm/Autocomplete.js.map +1 -1
- package/dist/esm/AutocompleteDataTestids.js +2 -1
- package/dist/esm/AutocompleteDataTestids.js.map +2 -2
- package/dist/esm/config/useAutocomplete.js +5 -2
- package/dist/esm/config/useAutocomplete.js.map +2 -2
- package/dist/esm/config/useClickOutside.js +22 -0
- package/dist/esm/config/useClickOutside.js.map +7 -0
- package/dist/esm/constants/index.js +13 -0
- package/dist/esm/constants/index.js.map +7 -0
- package/dist/esm/index.js +3 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/parts/container/Container.js +41 -17
- package/dist/esm/parts/container/Container.js.map +2 -2
- package/dist/esm/parts/container/styled.js +5 -1
- package/dist/esm/parts/container/styled.js.map +2 -2
- package/dist/esm/parts/menu-list/MenuList.js +4 -2
- package/dist/esm/parts/menu-list/MenuList.js.map +2 -2
- package/dist/esm/parts/menu-list/styled.js +5 -1
- package/dist/esm/parts/menu-list/styled.js.map +2 -2
- package/dist/esm/parts/menu-list/useItemRenderer.js +14 -4
- package/dist/esm/parts/menu-list/useItemRenderer.js.map +2 -2
- package/dist/esm/react-desc-prop-types.js +1 -1
- package/dist/esm/react-desc-prop-types.js.map +2 -2
- package/dist/esm/utils/listHelper.js +3 -1
- package/dist/esm/utils/listHelper.js.map +2 -2
- package/dist/types/AutocompleteCTX.d.ts +0 -1
- package/dist/types/AutocompleteDataTestids.d.ts +1 -0
- package/dist/types/config/useAutocomplete.d.ts +1 -1
- package/dist/types/config/useClickOutside.d.ts +1 -0
- package/dist/types/config/useVirtualization.d.ts +1 -1
- package/dist/types/constants/index.d.ts +7 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/parts/container/Container.d.ts +0 -1
- package/dist/types/parts/menu-list/MenuList.d.ts +0 -1
- package/dist/types/parts/menu-list/styled.d.ts +3 -3
- package/dist/types/react-desc-prop-types.d.ts +2 -2
- package/dist/types/tests/autocomplete.keyboard.test.d.ts +1 -0
- package/dist/types/tests/autocomplete.renderInput.test.d.ts +1 -0
- package/dist/types/tests/autocomplete.withSections.test.d.ts +1 -0
- package/dist/types/utils/useOnElementResize.d.ts +1 -1
- package/package.json +14 -13
- package/dist/cjs/DSAutocompleteDefinitions.js.map +0 -7
- package/dist/cjs/tests/utils.js.map +0 -7
- package/dist/esm/DSAutocompleteDefinitions.js +0 -6
- package/dist/esm/DSAutocompleteDefinitions.js.map +0 -7
- package/dist/esm/tests/utils.js +0 -50
- package/dist/esm/tests/utils.js.map +0 -7
- package/dist/types/DSAutocompleteDefinitions.d.ts +0 -1
- /package/dist/types/tests/{a11y/axe.test.d.ts → autocomplete.a11y.test.d.ts} +0 -0
- /package/dist/types/tests/{general.test.d.ts → autocomplete.data-testid.test.d.ts} +0 -0
- /package/dist/types/tests/{keyboard-interactions/composition-keyboard-interactions.test.d.ts → autocomplete.events.test.d.ts} +0 -0
- /package/dist/types/tests/{renderInput.test.d.ts → autocomplete.exports.test.d.ts} +0 -0
- /package/dist/types/tests/{withSections.test.d.ts → autocomplete.get-owner-props.test.d.ts} +0 -0
package/dist/cjs/Autocomplete.js
CHANGED
|
@@ -39,12 +39,12 @@ var import_useAutocomplete = require("./config/useAutocomplete.js");
|
|
|
39
39
|
var import_container = require("./parts/container/index.js");
|
|
40
40
|
var import_AutocompleteCTX = require("./AutocompleteCTX.js");
|
|
41
41
|
var import_react_desc_prop_types = require("./react-desc-prop-types.js");
|
|
42
|
-
var
|
|
42
|
+
var import_constants = require("./constants/index.js");
|
|
43
43
|
const DSAutocomplete = (props) => {
|
|
44
44
|
const ctx = (0, import_useAutocomplete.useAutocomplete)(props);
|
|
45
45
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_AutocompleteCTX.AutocompleteContext.Provider, { value: ctx, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_container.Container, {}) });
|
|
46
46
|
};
|
|
47
|
-
DSAutocomplete.displayName =
|
|
47
|
+
DSAutocomplete.displayName = import_constants.DSAutocompleteName;
|
|
48
48
|
const DSAutocompleteWithSchema = (0, import_ds_props_helpers.describe)(DSAutocomplete);
|
|
49
49
|
DSAutocompleteWithSchema.propTypes = import_react_desc_prop_types.DSAutocompletePropTypesSchema;
|
|
50
50
|
//# sourceMappingURL=Autocomplete.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Autocomplete.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React from 'react';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport { useAutocomplete } from './config/useAutocomplete.js';\nimport { Container } from './parts/container/index.js';\nimport { AutocompleteContext } from './AutocompleteCTX.js';\nimport type { DSAutocompleteT } from './react-desc-prop-types.js';\nimport { DSAutocompletePropTypesSchema } from './react-desc-prop-types.js';\nimport { DSAutocompleteName } from './
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADajB;AAZN,8BAAyB;AACzB,6BAAgC;AAChC,uBAA0B;AAC1B,6BAAoC;AAEpC,mCAA8C;AAC9C,
|
|
4
|
+
"sourcesContent": ["import React from 'react';\nimport { describe } from '@elliemae/ds-props-helpers';\nimport { useAutocomplete } from './config/useAutocomplete.js';\nimport { Container } from './parts/container/index.js';\nimport { AutocompleteContext } from './AutocompleteCTX.js';\nimport type { DSAutocompleteT } from './react-desc-prop-types.js';\nimport { DSAutocompletePropTypesSchema } from './react-desc-prop-types.js';\nimport { DSAutocompleteName } from './constants/index.js';\n\nconst DSAutocomplete: React.ComponentType<DSAutocompleteT.Props> = (props) => {\n const ctx = useAutocomplete(props);\n return (\n <AutocompleteContext.Provider value={ctx}>\n <Container />\n </AutocompleteContext.Provider>\n );\n};\n\nDSAutocomplete.displayName = DSAutocompleteName;\nconst DSAutocompleteWithSchema = describe(DSAutocomplete);\nDSAutocompleteWithSchema.propTypes = DSAutocompletePropTypesSchema;\n\nexport { DSAutocomplete, DSAutocompleteWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADajB;AAZN,8BAAyB;AACzB,6BAAgC;AAChC,uBAA0B;AAC1B,6BAAoC;AAEpC,mCAA8C;AAC9C,uBAAmC;AAEnC,MAAM,iBAA6D,CAAC,UAAU;AAC5E,QAAM,UAAM,wCAAgB,KAAK;AACjC,SACE,4CAAC,2CAAoB,UAApB,EAA6B,OAAO,KACnC,sDAAC,8BAAU,GACb;AAEJ;AAEA,eAAe,cAAc;AAC7B,MAAM,+BAA2B,kCAAS,cAAc;AACxD,yBAAyB,YAAY;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -35,6 +35,7 @@ var React = __toESM(require("react"));
|
|
|
35
35
|
const AutocompleteDataTestid = {
|
|
36
36
|
LIST: "autocomplete-menu-list",
|
|
37
37
|
OPTION: "autocomplete-option",
|
|
38
|
-
CONTAINER: "autocomplete-container"
|
|
38
|
+
CONTAINER: "autocomplete-container",
|
|
39
|
+
INPUT: "ds-autocomplete-input"
|
|
39
40
|
};
|
|
40
41
|
//# sourceMappingURL=AutocompleteDataTestids.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/AutocompleteDataTestids.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["export const AutocompleteDataTestid = {\n LIST: 'autocomplete-menu-list',\n OPTION: 'autocomplete-option',\n CONTAINER: 'autocomplete-container',\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;
|
|
4
|
+
"sourcesContent": ["export const AutocompleteDataTestid = {\n LIST: 'autocomplete-menu-list',\n OPTION: 'autocomplete-option',\n CONTAINER: 'autocomplete-container',\n INPUT: 'ds-autocomplete-input',\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,OAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -32,22 +32,23 @@ __export(useAutocomplete_exports, {
|
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(useAutocomplete_exports);
|
|
34
34
|
var React = __toESM(require("react"));
|
|
35
|
+
var import_react = require("react");
|
|
35
36
|
var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
|
|
36
37
|
var import_lodash_es = require("lodash-es");
|
|
37
|
-
var import_react = require("react");
|
|
38
38
|
var import_uid = require("uid");
|
|
39
|
-
var
|
|
39
|
+
var import_constants = require("../constants/index.js");
|
|
40
40
|
var import_react_desc_prop_types = require("../react-desc-prop-types.js");
|
|
41
41
|
var import_usePopoverLogic = require("./usePopoverLogic.js");
|
|
42
42
|
var import_useRefs = require("./useRefs.js");
|
|
43
43
|
var import_useVirtualization = require("./useVirtualization.js");
|
|
44
44
|
const useAutocomplete = (propsFromUser) => {
|
|
45
45
|
const propsWithDefault = (0, import_ds_props_helpers.useMemoMergePropsWithDefault)(propsFromUser, import_react_desc_prop_types.defaultProps);
|
|
46
|
-
(0, import_ds_props_helpers.useValidateTypescriptPropTypes)(propsWithDefault, import_react_desc_prop_types.DSAutocompletePropTypes,
|
|
46
|
+
(0, import_ds_props_helpers.useValidateTypescriptPropTypes)(propsWithDefault, import_react_desc_prop_types.DSAutocompletePropTypes, import_constants.DSAutocompleteName);
|
|
47
47
|
const { options } = propsWithDefault;
|
|
48
48
|
const [referenceElement, setReferenceElement] = (0, import_react.useState)(null);
|
|
49
49
|
const [focusOptionIdx, setCurrentOption] = (0, import_react.useState)("");
|
|
50
50
|
const references = (0, import_useRefs.useRefs)();
|
|
51
|
+
const getOwnerProps = (0, import_react.useCallback)(() => propsWithDefault, [propsWithDefault]);
|
|
51
52
|
const clonedOptions = (0, import_react.useMemo)(() => (0, import_lodash_es.cloneDeep)(options), [options]);
|
|
52
53
|
const optionsPerSection = (0, import_react.useMemo)(() => {
|
|
53
54
|
const result = [];
|
|
@@ -84,6 +85,7 @@ const useAutocomplete = (propsFromUser) => {
|
|
|
84
85
|
setReferenceElement,
|
|
85
86
|
autoCompleteId,
|
|
86
87
|
optionsPerSection,
|
|
88
|
+
getOwnerProps,
|
|
87
89
|
...references,
|
|
88
90
|
...popoverManager,
|
|
89
91
|
...virtualizationManager
|
|
@@ -95,6 +97,7 @@ const useAutocomplete = (propsFromUser) => {
|
|
|
95
97
|
focusOptionIdx,
|
|
96
98
|
popoverManager,
|
|
97
99
|
references,
|
|
100
|
+
getOwnerProps,
|
|
98
101
|
virtualizationManager,
|
|
99
102
|
optionsPerSection
|
|
100
103
|
]
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/config/useAutocomplete.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { cloneDeep } from 'lodash-es';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,8BAA6E;AAC7E,uBAA0B;AAC1B,
|
|
4
|
+
"sourcesContent": ["import { useCallback, useMemo, useState } from 'react';\nimport { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { cloneDeep } from 'lodash-es';\nimport { uid } from 'uid';\nimport { DSAutocompleteName } from '../constants/index.js';\nimport type { DSAutocompleteT } from '../react-desc-prop-types.js';\nimport { DSAutocompletePropTypes, defaultProps } from '../react-desc-prop-types.js';\nimport { usePopoverLogic } from './usePopoverLogic.js';\nimport { useRefs } from './useRefs.js';\nimport { useVirtualization } from './useVirtualization.js';\n\nexport type AutocompleteContextT = ReturnType<typeof useRefs> &\n ReturnType<typeof useVirtualization> &\n ReturnType<typeof usePopoverLogic> & {\n props: DSAutocompleteT.InternalProps;\n referenceElement: HTMLElement | null;\n focusOptionIdx: string;\n autoCompleteId: string;\n optionsPerSection: DSAutocompleteT.InternalProps['options'];\n setCurrentOption: React.Dispatch<React.SetStateAction<string>>;\n setReferenceElement: React.Dispatch<React.SetStateAction<HTMLElement | null>>;\n getOwnerProps: () => DSAutocompleteT.InternalProps;\n };\n\nexport const useAutocomplete = (propsFromUser: DSAutocompleteT.Props): AutocompleteContextT => {\n // =============================================================================\n // MERGE WITH DEFAULT AND VALIDATE PROPS\n // =============================================================================\n const propsWithDefault = useMemoMergePropsWithDefault<DSAutocompleteT.InternalProps>(propsFromUser, defaultProps);\n useValidateTypescriptPropTypes(propsWithDefault, DSAutocompletePropTypes, DSAutocompleteName);\n\n const { options } = propsWithDefault;\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null);\n const [focusOptionIdx, setCurrentOption] = useState<string>('');\n\n const references = useRefs();\n\n const getOwnerProps = useCallback(() => propsWithDefault, [propsWithDefault]);\n\n // Why are we cloning the options?\n // TODO - confirm, is this to solve the \"redux\" frozen object issue?\n // if yes, why do we need to mutate the options in the first place?\n const clonedOptions = useMemo(() => cloneDeep(options), [options]);\n\n // we need to group the options by sections to render them in the correct HTML sementic order\n const optionsPerSection = useMemo(() => {\n const result: DSAutocompleteT.OptionTypes[] = [];\n let currentSection: DSAutocompleteT.ItemSectionOptions | null = null;\n\n clonedOptions.forEach((item) => {\n if (item.type === 'section') {\n // Start a new section\n currentSection = {\n dsId: item.dsId,\n type: item.type,\n label: item.label,\n options: [],\n };\n result.push(currentSection);\n } else if (item.type === 'option' && currentSection) {\n // Add option to the current section's options array\n currentSection.options.push(item);\n } else if (item.type === 'option') {\n // If we encounter an option without a section, push it to the result array\n result.push(item);\n }\n });\n return result;\n }, [clonedOptions]);\n\n const virtualizationManager = useVirtualization({\n references,\n options: optionsPerSection,\n });\n\n const autoCompleteId = useMemo(() => uid(4), []);\n const popoverManager = usePopoverLogic(propsWithDefault, setCurrentOption);\n\n const ctx = useMemo(\n () => ({\n props: propsWithDefault,\n referenceElement,\n focusOptionIdx,\n setCurrentOption,\n setReferenceElement,\n autoCompleteId,\n optionsPerSection,\n getOwnerProps,\n ...references,\n ...popoverManager,\n ...virtualizationManager,\n }),\n [\n propsWithDefault,\n autoCompleteId,\n referenceElement,\n focusOptionIdx,\n popoverManager,\n references,\n getOwnerProps,\n virtualizationManager,\n optionsPerSection,\n ],\n );\n\n return ctx;\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA+C;AAC/C,8BAA6E;AAC7E,uBAA0B;AAC1B,iBAAoB;AACpB,uBAAmC;AAEnC,mCAAsD;AACtD,6BAAgC;AAChC,qBAAwB;AACxB,+BAAkC;AAe3B,MAAM,kBAAkB,CAAC,kBAA+D;AAI7F,QAAM,uBAAmB,sDAA4D,eAAe,yCAAY;AAChH,8DAA+B,kBAAkB,sDAAyB,mCAAkB;AAE5F,QAAM,EAAE,QAAQ,IAAI;AACpB,QAAM,CAAC,kBAAkB,mBAAmB,QAAI,uBAA6B,IAAI;AACjF,QAAM,CAAC,gBAAgB,gBAAgB,QAAI,uBAAiB,EAAE;AAE9D,QAAM,iBAAa,wBAAQ;AAE3B,QAAM,oBAAgB,0BAAY,MAAM,kBAAkB,CAAC,gBAAgB,CAAC;AAK5E,QAAM,oBAAgB,sBAAQ,UAAM,4BAAU,OAAO,GAAG,CAAC,OAAO,CAAC;AAGjE,QAAM,wBAAoB,sBAAQ,MAAM;AACtC,UAAM,SAAwC,CAAC;AAC/C,QAAI,iBAA4D;AAEhE,kBAAc,QAAQ,CAAC,SAAS;AAC9B,UAAI,KAAK,SAAS,WAAW;AAE3B,yBAAiB;AAAA,UACf,MAAM,KAAK;AAAA,UACX,MAAM,KAAK;AAAA,UACX,OAAO,KAAK;AAAA,UACZ,SAAS,CAAC;AAAA,QACZ;AACA,eAAO,KAAK,cAAc;AAAA,MAC5B,WAAW,KAAK,SAAS,YAAY,gBAAgB;AAEnD,uBAAe,QAAQ,KAAK,IAAI;AAAA,MAClC,WAAW,KAAK,SAAS,UAAU;AAEjC,eAAO,KAAK,IAAI;AAAA,MAClB;AAAA,IACF,CAAC;AACD,WAAO;AAAA,EACT,GAAG,CAAC,aAAa,CAAC;AAElB,QAAM,4BAAwB,4CAAkB;AAAA,IAC9C;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAED,QAAM,qBAAiB,sBAAQ,UAAM,gBAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,QAAM,qBAAiB,wCAAgB,kBAAkB,gBAAgB;AAEzE,QAAM,UAAM;AAAA,IACV,OAAO;AAAA,MACL,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,MACH,GAAG;AAAA,MACH,GAAG;AAAA,IACL;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -26,55 +26,27 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
31
|
-
|
|
32
|
-
sectionOptions: () => sectionOptions
|
|
29
|
+
var useClickOutside_exports = {};
|
|
30
|
+
__export(useClickOutside_exports, {
|
|
31
|
+
useOnClickOutside: () => useOnClickOutside
|
|
33
32
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
33
|
+
module.exports = __toCommonJS(useClickOutside_exports);
|
|
35
34
|
var React = __toESM(require("react"));
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
{
|
|
55
|
-
dsId: "2-section",
|
|
56
|
-
type: "section",
|
|
57
|
-
label: "Some Neat Section Title"
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
dsId: "1",
|
|
61
|
-
type: "option",
|
|
62
|
-
label: "44444-4444"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
dsId: "2",
|
|
66
|
-
type: "option",
|
|
67
|
-
label: "44444-5555"
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
dsId: "3-section",
|
|
71
|
-
type: "section",
|
|
72
|
-
label: "Another Neat Section Title"
|
|
73
|
-
},
|
|
74
|
-
{
|
|
75
|
-
dsId: "3",
|
|
76
|
-
type: "option",
|
|
77
|
-
label: "44444-6666"
|
|
78
|
-
}
|
|
79
|
-
];
|
|
80
|
-
//# sourceMappingURL=utils.js.map
|
|
35
|
+
var import_react = require("react");
|
|
36
|
+
function useOnClickOutside(ref, cb, excludeNode) {
|
|
37
|
+
(0, import_react.useEffect)(() => {
|
|
38
|
+
const listener = (event) => {
|
|
39
|
+
if (!ref || ref?.contains?.(event.target) || excludeNode && excludeNode.contains(event.target)) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
cb(event);
|
|
43
|
+
};
|
|
44
|
+
document.addEventListener("mousedown", listener);
|
|
45
|
+
document.addEventListener("touchstart", listener);
|
|
46
|
+
return () => {
|
|
47
|
+
document.removeEventListener("mousedown", listener);
|
|
48
|
+
document.removeEventListener("touchstart", listener);
|
|
49
|
+
};
|
|
50
|
+
}, [ref, cb, excludeNode]);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=useClickOutside.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/config/useClickOutside.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["import { useEffect } from 'react';\n\nexport function useOnClickOutside<T extends Node, CbT extends (event: Event) => void, Z extends Node>(\n ref: T | null,\n cb: CbT,\n excludeNode: Z | null,\n): void {\n useEffect(() => {\n const listener = (event: MouseEvent | TouchEvent) => {\n if (\n !ref ||\n ref?.contains?.(event.target as Node) ||\n (excludeNode && excludeNode.contains(event.target as Node))\n ) {\n return;\n }\n cb(event);\n };\n document.addEventListener('mousedown', listener);\n document.addEventListener('touchstart', listener);\n return () => {\n document.removeEventListener('mousedown', listener);\n document.removeEventListener('touchstart', listener);\n };\n }, [ref, cb, excludeNode]);\n}\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAA0B;AAEnB,SAAS,kBACd,KACA,IACA,aACM;AACN,8BAAU,MAAM;AACd,UAAM,WAAW,CAAC,UAAmC;AACnD,UACE,CAAC,OACD,KAAK,WAAW,MAAM,MAAc,KACnC,eAAe,YAAY,SAAS,MAAM,MAAc,GACzD;AACA;AAAA,MACF;AACA,SAAG,KAAK;AAAA,IACV;AACA,aAAS,iBAAiB,aAAa,QAAQ;AAC/C,aAAS,iBAAiB,cAAc,QAAQ;AAChD,WAAO,MAAM;AACX,eAAS,oBAAoB,aAAa,QAAQ;AAClD,eAAS,oBAAoB,cAAc,QAAQ;AAAA,IACrD;AAAA,EACF,GAAG,CAAC,KAAK,IAAI,WAAW,CAAC;AAC3B;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -26,11 +26,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
31
|
-
DSAutocompleteName: () => DSAutocompleteName
|
|
29
|
+
var constants_exports = {};
|
|
30
|
+
__export(constants_exports, {
|
|
31
|
+
DSAutocompleteName: () => DSAutocompleteName,
|
|
32
|
+
DSAutocompleteSlots: () => DSAutocompleteSlots
|
|
32
33
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
+
module.exports = __toCommonJS(constants_exports);
|
|
34
35
|
var React = __toESM(require("react"));
|
|
35
36
|
const DSAutocompleteName = "DSAutocomplete";
|
|
36
|
-
|
|
37
|
+
const DSAutocompleteSlots = {
|
|
38
|
+
CONTAINER: "container",
|
|
39
|
+
INPUT: "input",
|
|
40
|
+
MENU_LIST: "menu-list",
|
|
41
|
+
OPTION: "option"
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/constants/index.ts", "../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
+
"sourcesContent": ["export const DSAutocompleteName = 'DSAutocomplete';\n\nexport const DSAutocompleteSlots = {\n CONTAINER: 'container',\n INPUT: 'input',\n MENU_LIST: 'menu-list',\n OPTION: 'option',\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,qBAAqB;AAE3B,MAAM,sBAAsB;AAAA,EACjC,WAAW;AAAA,EACX,OAAO;AAAA,EACP,WAAW;AAAA,EACX,QAAQ;AACV;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/cjs/index.js
CHANGED
|
@@ -30,10 +30,13 @@ var index_exports = {};
|
|
|
30
30
|
__export(index_exports, {
|
|
31
31
|
AutocompleteDataTestid: () => import_AutocompleteDataTestids.AutocompleteDataTestid,
|
|
32
32
|
DSAutocomplete: () => import_Autocomplete.DSAutocomplete,
|
|
33
|
+
DSAutocompleteName: () => import_constants.DSAutocompleteName,
|
|
34
|
+
DSAutocompleteSlots: () => import_constants.DSAutocompleteSlots,
|
|
33
35
|
DSAutocompleteWithSchema: () => import_Autocomplete.DSAutocompleteWithSchema
|
|
34
36
|
});
|
|
35
37
|
module.exports = __toCommonJS(index_exports);
|
|
36
38
|
var React = __toESM(require("react"));
|
|
37
39
|
var import_Autocomplete = require("./Autocomplete.js");
|
|
38
40
|
var import_AutocompleteDataTestids = require("./AutocompleteDataTestids.js");
|
|
41
|
+
var import_constants = require("./constants/index.js");
|
|
39
42
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["export { DSAutocomplete, DSAutocompleteWithSchema } from './Autocomplete.js';\nexport { AutocompleteDataTestid } from './AutocompleteDataTestids.js';\nexport type { DSAutocompleteT } from './react-desc-prop-types.js';\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,0BAAyD;AACzD,qCAAuC;",
|
|
4
|
+
"sourcesContent": ["export { DSAutocomplete, DSAutocompleteWithSchema } from './Autocomplete.js';\nexport { AutocompleteDataTestid } from './AutocompleteDataTestids.js';\nexport type { DSAutocompleteT } from './react-desc-prop-types.js';\nexport { DSAutocompleteName, DSAutocompleteSlots } from './constants/index.js';\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,0BAAyD;AACzD,qCAAuC;AAEvC,uBAAwD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -34,14 +34,21 @@ module.exports = __toCommonJS(Container_exports);
|
|
|
34
34
|
var React = __toESM(require("react"));
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
36
|
var import_react = __toESM(require("react"));
|
|
37
|
-
var
|
|
37
|
+
var import_ds_system = require("@elliemae/ds-system");
|
|
38
38
|
var import_ds_form_input_text = require("@elliemae/ds-form-input-text");
|
|
39
|
+
var import_ds_floating_context = require("@elliemae/ds-floating-context");
|
|
39
40
|
var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
|
|
40
41
|
var import_AutocompleteCTX = __toESM(require("../../AutocompleteCTX.js"));
|
|
41
42
|
var import_styled = require("./styled.js");
|
|
42
43
|
var import_menu_list = require("../menu-list/index.js");
|
|
43
44
|
var import_useKeyboardNavigation = require("./useKeyboardNavigation.js");
|
|
44
45
|
var import_AutocompleteDataTestids = require("../../AutocompleteDataTestids.js");
|
|
46
|
+
var import_useClickOutside = require("../../config/useClickOutside.js");
|
|
47
|
+
var import_constants = require("../../constants/index.js");
|
|
48
|
+
const StyledInputText = (0, import_ds_system.styled)(import_ds_form_input_text.DSInputText, {
|
|
49
|
+
name: import_constants.DSAutocompleteName,
|
|
50
|
+
slot: import_constants.DSAutocompleteSlots.INPUT
|
|
51
|
+
})``;
|
|
45
52
|
const Container = () => {
|
|
46
53
|
const {
|
|
47
54
|
props: {
|
|
@@ -52,16 +59,18 @@ const Container = () => {
|
|
|
52
59
|
filter,
|
|
53
60
|
placementOrderPreference,
|
|
54
61
|
renderInput,
|
|
62
|
+
zIndex,
|
|
55
63
|
...restProps
|
|
56
64
|
},
|
|
57
65
|
isShowingPopover,
|
|
66
|
+
referenceElement,
|
|
67
|
+
getOwnerProps,
|
|
58
68
|
setReferenceElement,
|
|
59
69
|
setUserJustSelectedAnOption,
|
|
60
70
|
setUserTypedSomething,
|
|
61
71
|
setUserIsNavigatingWithArrows,
|
|
62
72
|
setForceClosePopover,
|
|
63
73
|
autoCompleteId,
|
|
64
|
-
referenceElement,
|
|
65
74
|
focusOptionIdx
|
|
66
75
|
} = (0, import_react.useContext)(import_AutocompleteCTX.default);
|
|
67
76
|
const handleCloseMenu = (0, import_react.useCallback)(() => {
|
|
@@ -71,6 +80,25 @@ const Container = () => {
|
|
|
71
80
|
const xStyledProps = (0, import_ds_props_helpers.useGetXstyledProps)(restProps);
|
|
72
81
|
const { onInputKeyDown } = (0, import_useKeyboardNavigation.useKeyboardNavigation)();
|
|
73
82
|
const input = !onValueChange && !renderInput ? import_react.default.Children.only(children) : null;
|
|
83
|
+
const config = (0, import_react.useMemo)(
|
|
84
|
+
() => ({
|
|
85
|
+
placement: "bottom",
|
|
86
|
+
withoutAnimation: true,
|
|
87
|
+
startPlacementPreference,
|
|
88
|
+
placementOrderPreference,
|
|
89
|
+
zIndex,
|
|
90
|
+
customOffset: [0, 5],
|
|
91
|
+
handleCloseMenu,
|
|
92
|
+
externallyControlledIsOpen: isShowingPopover
|
|
93
|
+
}),
|
|
94
|
+
[startPlacementPreference, placementOrderPreference, zIndex, handleCloseMenu, isShowingPopover]
|
|
95
|
+
);
|
|
96
|
+
const { refs, floatingStyles, context } = (0, import_ds_floating_context.useFloatingContext)(config);
|
|
97
|
+
const autoCompleteRef = (0, import_ds_system.mergeRefs)(setReferenceElement, refs.setReference);
|
|
98
|
+
const hideTooltip = (0, import_react.useCallback)(() => {
|
|
99
|
+
setForceClosePopover(true);
|
|
100
|
+
}, [setForceClosePopover]);
|
|
101
|
+
(0, import_useClickOutside.useOnClickOutside)(referenceElement, hideTooltip, refs.floating);
|
|
74
102
|
const onFocusPopoverStatusSync = (0, import_react.useCallback)(() => {
|
|
75
103
|
setForceClosePopover(false);
|
|
76
104
|
setUserJustSelectedAnOption(false);
|
|
@@ -81,10 +109,11 @@ const Container = () => {
|
|
|
81
109
|
import_styled.StyledContainer,
|
|
82
110
|
{
|
|
83
111
|
id,
|
|
84
|
-
innerRef:
|
|
112
|
+
innerRef: autoCompleteRef,
|
|
85
113
|
onKeyDown: onInputKeyDown,
|
|
86
114
|
onFocus: onFocusPopoverStatusSync,
|
|
87
115
|
"data-testid": import_AutocompleteDataTestids.AutocompleteDataTestid.CONTAINER,
|
|
116
|
+
getOwnerProps,
|
|
88
117
|
...globalsAttrs,
|
|
89
118
|
...xStyledProps,
|
|
90
119
|
children: [
|
|
@@ -100,7 +129,7 @@ const Container = () => {
|
|
|
100
129
|
spellCheck: "false",
|
|
101
130
|
...inputProps
|
|
102
131
|
}) || /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
103
|
-
|
|
132
|
+
StyledInputText,
|
|
104
133
|
{
|
|
105
134
|
onValueChange,
|
|
106
135
|
value: filter,
|
|
@@ -112,22 +141,17 @@ const Container = () => {
|
|
|
112
141
|
autoComplete: "off",
|
|
113
142
|
autoCorrect: "off",
|
|
114
143
|
spellCheck: "false",
|
|
115
|
-
...inputProps
|
|
144
|
+
...inputProps,
|
|
145
|
+
getOwnerProps
|
|
116
146
|
}
|
|
117
147
|
),
|
|
118
148
|
filter && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
119
|
-
|
|
149
|
+
import_ds_floating_context.FloatingWrapper,
|
|
120
150
|
{
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
startPlacementPreference,
|
|
126
|
-
placementOrderPreference,
|
|
127
|
-
withoutPortal: true,
|
|
128
|
-
withoutArrow: true,
|
|
129
|
-
withoutAnimation: true,
|
|
130
|
-
zIndex: 10,
|
|
151
|
+
innerRef: refs.setFloating,
|
|
152
|
+
floatingStyles,
|
|
153
|
+
isOpen: isShowingPopover,
|
|
154
|
+
context,
|
|
131
155
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledPopperWrapper, { tabIndex: -1, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_menu_list.MenuList, {}) })
|
|
132
156
|
}
|
|
133
157
|
)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/container/Container.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["/* eslint-disable no-unused-vars */\n/* eslint-disable complexity */\nimport React, { useCallback, useContext } from 'react';\nimport {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["/* eslint-disable no-unused-vars */\n/* eslint-disable complexity */\nimport React, { useCallback, useMemo, useContext } from 'react';\nimport { styled, mergeRefs } from '@elliemae/ds-system';\nimport { DSInputText } from '@elliemae/ds-form-input-text';\nimport { useFloatingContext, FloatingWrapper, type DSHookFloatingContextT } from '@elliemae/ds-floating-context';\nimport { useGetGlobalAttributes, useGetXstyledProps } from '@elliemae/ds-props-helpers';\nimport AutocompleteContext from '../../AutocompleteCTX.js';\nimport { StyledContainer, StyledPopperWrapper } from './styled.js';\nimport { MenuList } from '../menu-list/index.js';\nimport { useKeyboardNavigation } from './useKeyboardNavigation.js';\nimport { AutocompleteDataTestid } from '../../AutocompleteDataTestids.js';\nimport { useOnClickOutside } from '../../config/useClickOutside.js';\nimport { DSAutocompleteName, DSAutocompleteSlots } from '../../constants/index.js';\n\nconst StyledInputText = styled(DSInputText, {\n name: DSAutocompleteName,\n slot: DSAutocompleteSlots.INPUT,\n})``;\n\nexport const Container = (): JSX.Element => {\n const {\n props: {\n startPlacementPreference,\n onValueChange,\n inputProps,\n children,\n filter,\n placementOrderPreference,\n renderInput,\n zIndex,\n ...restProps\n },\n isShowingPopover,\n referenceElement,\n getOwnerProps,\n setReferenceElement,\n setUserJustSelectedAnOption,\n setUserTypedSomething,\n setUserIsNavigatingWithArrows,\n setForceClosePopover,\n autoCompleteId,\n focusOptionIdx,\n } = useContext(AutocompleteContext);\n\n const handleCloseMenu = useCallback(() => {\n setForceClosePopover(true);\n }, [setForceClosePopover]);\n\n const { onSelect, id, ...globalsAttrs } = useGetGlobalAttributes(restProps);\n const xStyledProps = useGetXstyledProps(restProps);\n const { onInputKeyDown } = useKeyboardNavigation();\n\n const input = !onValueChange && !renderInput ? React.Children.only(children) : null;\n\n const config = useMemo(\n () => ({\n placement: 'bottom' as DSHookFloatingContextT.PopperPlacementsT,\n withoutAnimation: true,\n startPlacementPreference,\n placementOrderPreference,\n zIndex,\n customOffset: [0, 5] as [number, number],\n handleCloseMenu,\n externallyControlledIsOpen: isShowingPopover,\n }),\n [startPlacementPreference, placementOrderPreference, zIndex, handleCloseMenu, isShowingPopover],\n );\n\n const { refs, floatingStyles, context } = useFloatingContext(config);\n\n const autoCompleteRef = mergeRefs(setReferenceElement, refs.setReference);\n\n const hideTooltip = useCallback(() => {\n setForceClosePopover(true);\n }, [setForceClosePopover]);\n\n useOnClickOutside(referenceElement, hideTooltip, refs.floating);\n\n const onFocusPopoverStatusSync = useCallback(() => {\n setForceClosePopover(false);\n setUserJustSelectedAnOption(false);\n setUserTypedSomething(false);\n setUserIsNavigatingWithArrows(false);\n }, [setForceClosePopover, setUserIsNavigatingWithArrows, setUserJustSelectedAnOption, setUserTypedSomething]);\n return (\n <>\n {/* The purpose of this div is to always have the 'menu-list-{autoCompleteId}' present in the DOM */}\n {/* Fix for PUI-11627 */}\n {/* {isShowingPopover === false ? <StyledHiddenDiv id={`menu-list-${autoCompleteId}`} /> : null} */}\n\n <StyledContainer\n id={id}\n innerRef={autoCompleteRef}\n onKeyDown={onInputKeyDown}\n onFocus={onFocusPopoverStatusSync}\n // aria-owns={`menu-list-${autoCompleteId}`}\n data-testid={AutocompleteDataTestid.CONTAINER}\n getOwnerProps={getOwnerProps}\n {...globalsAttrs}\n {...xStyledProps}\n >\n {input ||\n (renderInput &&\n renderInput({\n value: filter,\n role: 'combobox',\n 'aria-expanded': isShowingPopover,\n 'aria-controls': `menu-list-${autoCompleteId}`,\n 'aria-activedescendant': isShowingPopover ? focusOptionIdx : undefined,\n 'aria-autocomplete': 'list',\n autoComplete: 'off',\n autoCorrect: 'off',\n spellCheck: 'false',\n ...inputProps,\n })) || (\n <StyledInputText\n onValueChange={onValueChange}\n value={filter}\n role=\"combobox\"\n aria-expanded={isShowingPopover}\n aria-controls={`menu-list-${autoCompleteId}`}\n aria-activedescendant={isShowingPopover ? focusOptionIdx : undefined}\n aria-autocomplete=\"list\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck=\"false\"\n {...inputProps}\n getOwnerProps={getOwnerProps}\n />\n )}\n {filter && (\n <FloatingWrapper\n innerRef={refs.setFloating}\n floatingStyles={floatingStyles}\n isOpen={isShowingPopover}\n context={context}\n >\n <StyledPopperWrapper tabIndex={-1}>\n <MenuList />\n </StyledPopperWrapper>\n </FloatingWrapper>\n )}\n </StyledContainer>\n </>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["AutocompleteContext", "React"]
|
|
7
7
|
}
|
|
@@ -35,7 +35,11 @@ __export(styled_exports, {
|
|
|
35
35
|
module.exports = __toCommonJS(styled_exports);
|
|
36
36
|
var React = __toESM(require("react"));
|
|
37
37
|
var import_ds_system = require("@elliemae/ds-system");
|
|
38
|
-
|
|
38
|
+
var import_constants = require("../../constants/index.js");
|
|
39
|
+
const StyledContainer = (0, import_ds_system.styled)("div", {
|
|
40
|
+
name: import_constants.DSAutocompleteName,
|
|
41
|
+
slot: import_constants.DSAutocompleteSlots.CONTAINER
|
|
42
|
+
})`
|
|
39
43
|
width: 100%;
|
|
40
44
|
height: 28px;
|
|
41
45
|
position: relative;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/container/styled.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { styled } from '@elliemae/ds-system';\n\nexport const StyledContainer = styled.
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAuB;
|
|
4
|
+
"sourcesContent": ["import { styled } from '@elliemae/ds-system';\nimport { DSAutocompleteSlots, DSAutocompleteName } from '../../constants/index.js';\n\nexport const StyledContainer = styled('div', {\n name: DSAutocompleteName,\n slot: DSAutocompleteSlots.CONTAINER,\n})`\n width: 100%;\n height: 28px;\n position: relative;\n`;\n\nexport const StyledPopperWrapper = styled.div`\n background: #fff;\n overflow: auto;\n position: relative;\n`;\n\nexport const StyledHiddenDiv = styled.div`\n display: none;\n`;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAuB;AACvB,uBAAwD;AAEjD,MAAM,sBAAkB,yBAAO,OAAO;AAAA,EAC3C,MAAM;AAAA,EACN,MAAM,qCAAoB;AAC5B,CAAC;AAAA;AAAA;AAAA;AAAA;AAMM,MAAM,sBAAsB,wBAAO;AAAA;AAAA;AAAA;AAAA;AAMnC,MAAM,kBAAkB,wBAAO;AAAA;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -46,6 +46,7 @@ const MenuList = () => {
|
|
|
46
46
|
inputRef,
|
|
47
47
|
listRef,
|
|
48
48
|
autoCompleteId,
|
|
49
|
+
getOwnerProps,
|
|
49
50
|
virtualListHelpers: { totalSize, measure }
|
|
50
51
|
} = (0, import_react.useContext)(import_AutocompleteCTX.default);
|
|
51
52
|
const ItemRenderer = (0, import_useItemRenderer.useItemRenderer)();
|
|
@@ -56,7 +57,7 @@ const MenuList = () => {
|
|
|
56
57
|
const preventMouseDown = (0, import_react.useCallback)((e) => {
|
|
57
58
|
e.preventDefault();
|
|
58
59
|
}, []);
|
|
59
|
-
(0, import_react.
|
|
60
|
+
(0, import_react.useEffect)(() => {
|
|
60
61
|
if (measure) measure();
|
|
61
62
|
}, [width]);
|
|
62
63
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledListWrapper, { onMouseDown: preventMouseDown, minWidth: referenceElement?.offsetWidth, children: options.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_styled.StyledVirtualListWrapper, { tabIndex: -1, innerRef: listRef, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -68,6 +69,7 @@ const MenuList = () => {
|
|
|
68
69
|
onFocus: handleOnFocus,
|
|
69
70
|
"data-testid": import_AutocompleteDataTestids.AutocompleteDataTestid.LIST,
|
|
70
71
|
style: { height: totalSize, margin: "8px 0px" },
|
|
72
|
+
getOwnerProps,
|
|
71
73
|
children: ItemRenderer
|
|
72
74
|
},
|
|
73
75
|
options.length
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/menu-list/MenuList.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import React, { useContext, useCallback,
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;
|
|
4
|
+
"sourcesContent": ["import React, { useContext, useCallback, useEffect } from 'react';\nimport { StyledListWrapper, StyledList, StyledVirtualListWrapper } from './styled.js';\nimport { AutocompleteDataTestid } from '../../AutocompleteDataTestids.js';\nimport AutocompleteContext from '../../AutocompleteCTX.js';\nimport { useItemRenderer } from './useItemRenderer.js';\nimport { useOnElementResize } from '../../utils/useOnElementResize.js';\n\nexport const MenuList = (): JSX.Element => {\n const {\n props: { options },\n referenceElement,\n inputRef,\n listRef,\n autoCompleteId,\n getOwnerProps,\n virtualListHelpers: { totalSize, measure },\n } = useContext(AutocompleteContext);\n\n const ItemRenderer = useItemRenderer();\n const { width } = useOnElementResize(referenceElement);\n\n const handleOnFocus = useCallback(() => {\n inputRef.current?.focus();\n }, [inputRef]);\n\n const preventMouseDown: React.MouseEventHandler<HTMLDivElement> = useCallback((e) => {\n e.preventDefault();\n }, []);\n\n useEffect(() => {\n if (measure) measure();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [width]);\n\n return (\n <StyledListWrapper onMouseDown={preventMouseDown} minWidth={referenceElement?.offsetWidth}>\n {options.length > 0 && (\n <StyledVirtualListWrapper tabIndex={-1} innerRef={listRef}>\n <StyledList\n // recalculate the key to force the re-render of the list and update virtualization\n key={options.length}\n role=\"listbox\"\n id={`menu-list-${autoCompleteId}`}\n // default aria label until we integrate the aria props on autocomplete\n // this is for the axe core to pass\n aria-label=\"autocomplete option lists\"\n onFocus={handleOnFocus}\n data-testid={AutocompleteDataTestid.LIST}\n style={{ height: totalSize, margin: '8px 0px' }}\n getOwnerProps={getOwnerProps}\n >\n {ItemRenderer}\n </StyledList>\n </StyledVirtualListWrapper>\n )}\n </StyledListWrapper>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADsCb;AAtCV,mBAA0D;AAC1D,oBAAwE;AACxE,qCAAuC;AACvC,6BAAgC;AAChC,6BAAgC;AAChC,gCAAmC;AAE5B,MAAM,WAAW,MAAmB;AACzC,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,EAAE,WAAW,QAAQ;AAAA,EAC3C,QAAI,yBAAW,uBAAAA,OAAmB;AAElC,QAAM,mBAAe,wCAAgB;AACrC,QAAM,EAAE,MAAM,QAAI,8CAAmB,gBAAgB;AAErD,QAAM,oBAAgB,0BAAY,MAAM;AACtC,aAAS,SAAS,MAAM;AAAA,EAC1B,GAAG,CAAC,QAAQ,CAAC;AAEb,QAAM,uBAA4D,0BAAY,CAAC,MAAM;AACnF,MAAE,eAAe;AAAA,EACnB,GAAG,CAAC,CAAC;AAEL,8BAAU,MAAM;AACd,QAAI,QAAS,SAAQ;AAAA,EAEvB,GAAG,CAAC,KAAK,CAAC;AAEV,SACE,4CAAC,mCAAkB,aAAa,kBAAkB,UAAU,kBAAkB,aAC3E,kBAAQ,SAAS,KAChB,4CAAC,0CAAyB,UAAU,IAAI,UAAU,SAChD;AAAA,IAAC;AAAA;AAAA,MAGC,MAAK;AAAA,MACL,IAAI,aAAa,cAAc;AAAA,MAG/B,cAAW;AAAA,MACX,SAAS;AAAA,MACT,eAAa,sDAAuB;AAAA,MACpC,OAAO,EAAE,QAAQ,WAAW,QAAQ,UAAU;AAAA,MAC9C;AAAA,MAEC;AAAA;AAAA,IAXI,QAAQ;AAAA,EAYf,GACF,GAEJ;AAEJ;",
|
|
6
6
|
"names": ["AutocompleteContext"]
|
|
7
7
|
}
|
|
@@ -35,10 +35,14 @@ __export(styled_exports, {
|
|
|
35
35
|
module.exports = __toCommonJS(styled_exports);
|
|
36
36
|
var React = __toESM(require("react"));
|
|
37
37
|
var import_ds_system = require("@elliemae/ds-system");
|
|
38
|
+
var import_constants = require("../../constants/index.js");
|
|
38
39
|
const StyledListWrapper = import_ds_system.styled.div`
|
|
39
40
|
min-width: ${({ minWidth }) => minWidth ? `${minWidth}px` : "100%"};
|
|
40
41
|
`;
|
|
41
|
-
const StyledList = import_ds_system.styled
|
|
42
|
+
const StyledList = (0, import_ds_system.styled)("ul", {
|
|
43
|
+
name: import_constants.DSAutocompleteName,
|
|
44
|
+
slot: import_constants.DSAutocompleteSlots.MENU_LIST
|
|
45
|
+
})`
|
|
42
46
|
position: relative;
|
|
43
47
|
padding: 0;
|
|
44
48
|
`;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/parts/menu-list/styled.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
|
|
4
|
-
"sourcesContent": ["import { styled } from '@elliemae/ds-system';\n\nexport const StyledListWrapper = styled.div<{ minWidth?: number | string }>`\n min-width: ${({ minWidth }) => (minWidth ? `${minWidth}px` : '100%')};\n`;\n\nexport const StyledList = styled.
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAuB;
|
|
4
|
+
"sourcesContent": ["import { styled } from '@elliemae/ds-system';\nimport { DSAutocompleteName, DSAutocompleteSlots } from '../../constants/index.js';\n\nexport const StyledListWrapper = styled.div<{ minWidth?: number | string }>`\n min-width: ${({ minWidth }) => (minWidth ? `${minWidth}px` : '100%')};\n`;\n\nexport const StyledList = styled('ul', {\n name: DSAutocompleteName,\n slot: DSAutocompleteSlots.MENU_LIST,\n})`\n position: relative;\n padding: 0;\n`;\n\nexport const StyledVirtualListWrapper = styled.div<{\n maxHeight?: number;\n}>`\n overflow-y: auto;\n max-height: ${({ maxHeight }) => `${!maxHeight ? '400' : maxHeight}px`};\n`;\n", "import * as React from 'react';\nexport { React };\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,uBAAuB;AACvB,uBAAwD;AAEjD,MAAM,oBAAoB,wBAAO;AAAA,eACzB,CAAC,EAAE,SAAS,MAAO,WAAW,GAAG,QAAQ,OAAO,MAAO;AAAA;AAG/D,MAAM,iBAAa,yBAAO,MAAM;AAAA,EACrC,MAAM;AAAA,EACN,MAAM,qCAAoB;AAC5B,CAAC;AAAA;AAAA;AAAA;AAKM,MAAM,2BAA2B,wBAAO;AAAA;AAAA,gBAI/B,CAAC,EAAE,UAAU,MAAM,GAAG,CAAC,YAAY,QAAQ,SAAS,IAAI;AAAA;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -35,9 +35,15 @@ var React = __toESM(require("react"));
|
|
|
35
35
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
36
36
|
var import_react = require("react");
|
|
37
37
|
var import_ds_menu_items = require("@elliemae/ds-menu-items");
|
|
38
|
+
var import_ds_system = require("@elliemae/ds-system");
|
|
39
|
+
var import_constants = require("../../constants/index.js");
|
|
38
40
|
var import_AutocompleteCTX = __toESM(require("../../AutocompleteCTX.js"));
|
|
39
41
|
var import_AutocompleteDataTestids = require("../../AutocompleteDataTestids.js");
|
|
40
42
|
var import_Section = require("../Section.js");
|
|
43
|
+
const StyledMenuItemAction = (0, import_ds_system.styled)(import_ds_menu_items.DSMenuItemsAction, {
|
|
44
|
+
name: import_constants.DSAutocompleteName,
|
|
45
|
+
slot: import_constants.DSAutocompleteSlots.OPTION
|
|
46
|
+
})``;
|
|
41
47
|
const useItemRenderer = () => {
|
|
42
48
|
const {
|
|
43
49
|
props: { onSelect },
|
|
@@ -46,7 +52,8 @@ const useItemRenderer = () => {
|
|
|
46
52
|
setUserJustSelectedAnOption,
|
|
47
53
|
focusOptionIdx,
|
|
48
54
|
optionsPerSection: options,
|
|
49
|
-
virtualListHelpers
|
|
55
|
+
virtualListHelpers,
|
|
56
|
+
getOwnerProps
|
|
50
57
|
} = (0, import_react.useContext)(import_AutocompleteCTX.default);
|
|
51
58
|
const handleClick = (0, import_react.useCallback)(
|
|
52
59
|
(option, e) => {
|
|
@@ -68,6 +75,7 @@ const useItemRenderer = () => {
|
|
|
68
75
|
innerRef: vItem.measureRef,
|
|
69
76
|
dsId: option.dsId
|
|
70
77
|
};
|
|
78
|
+
const getOwnerPropsArguments = () => option;
|
|
71
79
|
if (option.type === "section") {
|
|
72
80
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
73
81
|
import_Section.Section,
|
|
@@ -82,17 +90,19 @@ const useItemRenderer = () => {
|
|
|
82
90
|
}
|
|
83
91
|
if (option.type === "option") {
|
|
84
92
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
85
|
-
|
|
93
|
+
StyledMenuItemAction,
|
|
86
94
|
{
|
|
87
|
-
as: "div",
|
|
88
95
|
id: option.dsId,
|
|
89
96
|
label: option.label,
|
|
90
97
|
"data-testid": import_AutocompleteDataTestids.AutocompleteDataTestid.OPTION,
|
|
91
98
|
disabled: option.disabled,
|
|
99
|
+
tabIndex: 0,
|
|
92
100
|
onClick: (e) => handleClick(option, e),
|
|
93
101
|
isActive: option.dsId === focusOptionIdx,
|
|
94
102
|
"aria-selected": "false",
|
|
95
|
-
...generalProps
|
|
103
|
+
...generalProps,
|
|
104
|
+
getOwnerProps,
|
|
105
|
+
getOwnerPropsArguments
|
|
96
106
|
}
|
|
97
107
|
);
|
|
98
108
|
}
|