@elliemae/ds-controlled-form 3.0.0-next.14 → 3.0.0-next.18

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.
Files changed (203) hide show
  1. package/dist/cjs/autocomplete/Autocomplete.js +5 -6
  2. package/dist/cjs/autocomplete/Autocomplete.js.map +2 -2
  3. package/dist/cjs/autocomplete/AutocompleteCTX.js +3 -14
  4. package/dist/cjs/autocomplete/AutocompleteCTX.js.map +2 -2
  5. package/dist/cjs/autocomplete/AutocompleteDataTestids.js +1 -7
  6. package/dist/cjs/autocomplete/AutocompleteDataTestids.js.map +2 -2
  7. package/dist/cjs/autocomplete/config/useAutocomplete.js +23 -11
  8. package/dist/cjs/autocomplete/config/useAutocomplete.js.map +3 -3
  9. package/dist/cjs/autocomplete/parts/container/Container.js +27 -17
  10. package/dist/cjs/autocomplete/parts/container/Container.js.map +2 -2
  11. package/dist/cjs/autocomplete/parts/container/styled.js +0 -5
  12. package/dist/cjs/autocomplete/parts/container/styled.js.map +2 -2
  13. package/dist/cjs/autocomplete/parts/{controls → container}/useKeyboardNavigation.js +18 -24
  14. package/dist/cjs/autocomplete/parts/container/useKeyboardNavigation.js.map +7 -0
  15. package/dist/cjs/autocomplete/parts/menu-list/MenuList.js +5 -25
  16. package/dist/cjs/autocomplete/parts/menu-list/MenuList.js.map +2 -2
  17. package/dist/cjs/autocomplete/parts/menu-list/styled.js +2 -4
  18. package/dist/cjs/autocomplete/parts/menu-list/styled.js.map +2 -2
  19. package/dist/cjs/autocomplete/parts/menu-list/useItemRenderer.js +33 -35
  20. package/dist/cjs/autocomplete/parts/menu-list/useItemRenderer.js.map +2 -2
  21. package/dist/cjs/autocomplete/react-desc-prop-types.js +4 -9
  22. package/dist/cjs/autocomplete/react-desc-prop-types.js.map +2 -2
  23. package/dist/cjs/autocomplete/sharedTypes.js.map +1 -1
  24. package/dist/cjs/autocomplete/{config/constants.js → tests/utils.js} +27 -13
  25. package/dist/cjs/autocomplete/tests/utils.js.map +7 -0
  26. package/dist/cjs/autocomplete/utils/listHelper.js +8 -12
  27. package/dist/cjs/autocomplete/utils/listHelper.js.map +2 -2
  28. package/dist/cjs/combobox/config/useComboBox.js +7 -1
  29. package/dist/cjs/combobox/config/useComboBox.js.map +2 -2
  30. package/dist/cjs/combobox/config/useCorrectOptions.js +10 -29
  31. package/dist/cjs/combobox/config/useCorrectOptions.js.map +2 -2
  32. package/dist/cjs/combobox/parts/A11yFocusedOption.js +3 -3
  33. package/dist/cjs/combobox/parts/A11yFocusedOption.js.map +2 -2
  34. package/dist/cjs/combobox/parts/controls/Controls.js +3 -1
  35. package/dist/cjs/combobox/parts/controls/Controls.js.map +2 -2
  36. package/dist/cjs/combobox/parts/controls-input/ControlsInput.js +2 -1
  37. package/dist/cjs/combobox/parts/controls-input/ControlsInput.js.map +2 -2
  38. package/dist/cjs/combobox/parts/controls-input/styled.js +3 -0
  39. package/dist/cjs/combobox/parts/controls-input/styled.js.map +2 -2
  40. package/dist/cjs/combobox/parts/controls-input/useControlsInput.js +4 -5
  41. package/dist/cjs/combobox/parts/controls-input/useControlsInput.js.map +2 -2
  42. package/dist/cjs/combobox/parts/controls-input/useKeyboardNavigation.js +32 -29
  43. package/dist/cjs/combobox/parts/controls-input/useKeyboardNavigation.js.map +2 -2
  44. package/dist/cjs/combobox/parts/controls-input/useMaskedOnChange.js +8 -5
  45. package/dist/cjs/combobox/parts/controls-input/useMaskedOnChange.js.map +2 -2
  46. package/dist/cjs/combobox/parts/header-list/useHeaderListHandlers.js +4 -4
  47. package/dist/cjs/combobox/parts/header-list/useHeaderListHandlers.js.map +2 -2
  48. package/dist/cjs/combobox/parts/menu-list/MenuList.js +13 -10
  49. package/dist/cjs/combobox/parts/menu-list/MenuList.js.map +2 -2
  50. package/dist/cjs/combobox/parts/menu-list/styled.js +2 -1
  51. package/dist/cjs/combobox/parts/menu-list/styled.js.map +2 -2
  52. package/dist/cjs/combobox/parts/menu-list/useItemRenderer.js +7 -7
  53. package/dist/cjs/combobox/parts/menu-list/useItemRenderer.js.map +2 -2
  54. package/dist/cjs/combobox/parts/menu-list/useMenuListSetFocusOption.js +7 -7
  55. package/dist/cjs/combobox/parts/menu-list/useMenuListSetFocusOption.js.map +2 -2
  56. package/dist/cjs/combobox/react-desc-prop-types.js +2 -1
  57. package/dist/cjs/combobox/react-desc-prop-types.js.map +2 -2
  58. package/dist/cjs/combobox/utils/listHelper.js +34 -11
  59. package/dist/cjs/combobox/utils/listHelper.js.map +2 -2
  60. package/dist/cjs/mask-hook/hooks/index.js +1 -1
  61. package/dist/cjs/mask-hook/hooks/index.js.map +1 -1
  62. package/dist/cjs/mask-hook/hooks/useNumberMask.js +5 -0
  63. package/dist/cjs/mask-hook/hooks/useNumberMask.js.map +2 -2
  64. package/dist/cjs/mask-hook/hooks/usePhoneMask.js +5 -0
  65. package/dist/cjs/mask-hook/hooks/usePhoneMask.js.map +2 -2
  66. package/dist/cjs/mask-hook/hooks/useSSNMask.js +5 -0
  67. package/dist/cjs/mask-hook/hooks/useSSNMask.js.map +2 -2
  68. package/dist/cjs/mask-hook/hooks/{useZipCode.js → useZipCodeMask.js} +13 -8
  69. package/dist/cjs/mask-hook/hooks/{useZipCode.js.map → useZipCodeMask.js.map} +3 -3
  70. package/dist/esm/autocomplete/Autocomplete.js +2 -3
  71. package/dist/esm/autocomplete/Autocomplete.js.map +2 -2
  72. package/dist/esm/autocomplete/AutocompleteCTX.js +3 -14
  73. package/dist/esm/autocomplete/AutocompleteCTX.js.map +2 -2
  74. package/dist/esm/autocomplete/AutocompleteDataTestids.js +1 -7
  75. package/dist/esm/autocomplete/AutocompleteDataTestids.js.map +2 -2
  76. package/dist/esm/autocomplete/config/useAutocomplete.js +24 -12
  77. package/dist/esm/autocomplete/config/useAutocomplete.js.map +3 -3
  78. package/dist/esm/autocomplete/parts/container/Container.js +28 -18
  79. package/dist/esm/autocomplete/parts/container/Container.js.map +2 -2
  80. package/dist/esm/autocomplete/parts/container/styled.js +0 -5
  81. package/dist/esm/autocomplete/parts/container/styled.js.map +2 -2
  82. package/dist/esm/autocomplete/parts/{controls → container}/useKeyboardNavigation.js +18 -24
  83. package/dist/esm/autocomplete/parts/container/useKeyboardNavigation.js.map +7 -0
  84. package/dist/esm/autocomplete/parts/menu-list/MenuList.js +6 -26
  85. package/dist/esm/autocomplete/parts/menu-list/MenuList.js.map +2 -2
  86. package/dist/esm/autocomplete/parts/menu-list/styled.js +2 -4
  87. package/dist/esm/autocomplete/parts/menu-list/styled.js.map +2 -2
  88. package/dist/esm/autocomplete/parts/menu-list/useItemRenderer.js +33 -35
  89. package/dist/esm/autocomplete/parts/menu-list/useItemRenderer.js.map +2 -2
  90. package/dist/esm/autocomplete/react-desc-prop-types.js +4 -9
  91. package/dist/esm/autocomplete/react-desc-prop-types.js.map +2 -2
  92. package/dist/esm/autocomplete/tests/utils.js +27 -0
  93. package/dist/esm/autocomplete/tests/utils.js.map +7 -0
  94. package/dist/esm/autocomplete/utils/listHelper.js +8 -12
  95. package/dist/esm/autocomplete/utils/listHelper.js.map +2 -2
  96. package/dist/esm/combobox/config/useComboBox.js +7 -1
  97. package/dist/esm/combobox/config/useComboBox.js.map +2 -2
  98. package/dist/esm/combobox/config/useCorrectOptions.js +11 -30
  99. package/dist/esm/combobox/config/useCorrectOptions.js.map +2 -2
  100. package/dist/esm/combobox/parts/A11yFocusedOption.js +3 -3
  101. package/dist/esm/combobox/parts/A11yFocusedOption.js.map +2 -2
  102. package/dist/esm/combobox/parts/controls/Controls.js +3 -1
  103. package/dist/esm/combobox/parts/controls/Controls.js.map +2 -2
  104. package/dist/esm/combobox/parts/controls-input/ControlsInput.js +2 -1
  105. package/dist/esm/combobox/parts/controls-input/ControlsInput.js.map +2 -2
  106. package/dist/esm/combobox/parts/controls-input/styled.js +3 -0
  107. package/dist/esm/combobox/parts/controls-input/styled.js.map +2 -2
  108. package/dist/esm/combobox/parts/controls-input/useControlsInput.js +4 -5
  109. package/dist/esm/combobox/parts/controls-input/useControlsInput.js.map +2 -2
  110. package/dist/esm/combobox/parts/controls-input/useKeyboardNavigation.js +32 -29
  111. package/dist/esm/combobox/parts/controls-input/useKeyboardNavigation.js.map +2 -2
  112. package/dist/esm/combobox/parts/controls-input/useMaskedOnChange.js +8 -5
  113. package/dist/esm/combobox/parts/controls-input/useMaskedOnChange.js.map +2 -2
  114. package/dist/esm/combobox/parts/header-list/useHeaderListHandlers.js +4 -4
  115. package/dist/esm/combobox/parts/header-list/useHeaderListHandlers.js.map +2 -2
  116. package/dist/esm/combobox/parts/menu-list/MenuList.js +13 -10
  117. package/dist/esm/combobox/parts/menu-list/MenuList.js.map +2 -2
  118. package/dist/esm/combobox/parts/menu-list/styled.js +2 -1
  119. package/dist/esm/combobox/parts/menu-list/styled.js.map +2 -2
  120. package/dist/esm/combobox/parts/menu-list/useItemRenderer.js +7 -7
  121. package/dist/esm/combobox/parts/menu-list/useItemRenderer.js.map +2 -2
  122. package/dist/esm/combobox/parts/menu-list/useMenuListSetFocusOption.js +7 -7
  123. package/dist/esm/combobox/parts/menu-list/useMenuListSetFocusOption.js.map +2 -2
  124. package/dist/esm/combobox/react-desc-prop-types.js +2 -1
  125. package/dist/esm/combobox/react-desc-prop-types.js.map +2 -2
  126. package/dist/esm/combobox/utils/listHelper.js +34 -11
  127. package/dist/esm/combobox/utils/listHelper.js.map +2 -2
  128. package/dist/esm/mask-hook/hooks/index.js +1 -1
  129. package/dist/esm/mask-hook/hooks/index.js.map +1 -1
  130. package/dist/esm/mask-hook/hooks/useNumberMask.js +5 -0
  131. package/dist/esm/mask-hook/hooks/useNumberMask.js.map +2 -2
  132. package/dist/esm/mask-hook/hooks/usePhoneMask.js +5 -0
  133. package/dist/esm/mask-hook/hooks/usePhoneMask.js.map +2 -2
  134. package/dist/esm/mask-hook/hooks/useSSNMask.js +5 -0
  135. package/dist/esm/mask-hook/hooks/useSSNMask.js.map +2 -2
  136. package/dist/esm/mask-hook/hooks/{useZipCode.js → useZipCodeMask.js} +10 -5
  137. package/dist/esm/mask-hook/hooks/{useZipCode.js.map → useZipCodeMask.js.map} +3 -3
  138. package/package.json +15 -15
  139. package/dist/cjs/autocomplete/config/constants.js.map +0 -7
  140. package/dist/cjs/autocomplete/config/useGetPropsWithDefault.js +0 -37
  141. package/dist/cjs/autocomplete/config/useGetPropsWithDefault.js.map +0 -7
  142. package/dist/cjs/autocomplete/index.d.js +0 -27
  143. package/dist/cjs/autocomplete/index.d.js.map +0 -7
  144. package/dist/cjs/autocomplete/parts/a11y-messages/MultiAllyMessages.js +0 -50
  145. package/dist/cjs/autocomplete/parts/a11y-messages/MultiAllyMessages.js.map +0 -7
  146. package/dist/cjs/autocomplete/parts/a11y-messages/SingleAllyMessages.js +0 -48
  147. package/dist/cjs/autocomplete/parts/a11y-messages/SingleAllyMessages.js.map +0 -7
  148. package/dist/cjs/autocomplete/parts/a11y-messages/index.js +0 -37
  149. package/dist/cjs/autocomplete/parts/a11y-messages/index.js.map +0 -7
  150. package/dist/cjs/autocomplete/parts/a11y-messages/styled.js +0 -41
  151. package/dist/cjs/autocomplete/parts/a11y-messages/styled.js.map +0 -7
  152. package/dist/cjs/autocomplete/parts/controls/Controls.js +0 -72
  153. package/dist/cjs/autocomplete/parts/controls/Controls.js.map +0 -7
  154. package/dist/cjs/autocomplete/parts/controls/index.js +0 -35
  155. package/dist/cjs/autocomplete/parts/controls/index.js.map +0 -7
  156. package/dist/cjs/autocomplete/parts/controls/styled.js +0 -108
  157. package/dist/cjs/autocomplete/parts/controls/styled.js.map +0 -7
  158. package/dist/cjs/autocomplete/parts/controls/useControlsInput.js +0 -62
  159. package/dist/cjs/autocomplete/parts/controls/useControlsInput.js.map +0 -7
  160. package/dist/cjs/autocomplete/parts/controls/useKeyboardNavigation.js.map +0 -7
  161. package/dist/cjs/autocomplete/parts/controls/useMaskedOnChange.js +0 -48
  162. package/dist/cjs/autocomplete/parts/controls/useMaskedOnChange.js.map +0 -7
  163. package/dist/cjs/autocomplete/parts/menu-list/useMenuList.js +0 -82
  164. package/dist/cjs/autocomplete/parts/menu-list/useMenuList.js.map +0 -7
  165. package/dist/cjs/autocomplete/propTypes.js +0 -56
  166. package/dist/cjs/autocomplete/propTypes.js.map +0 -7
  167. package/dist/cjs/autocomplete/utils/hooks/useKeyboardNavigation.js +0 -108
  168. package/dist/cjs/autocomplete/utils/hooks/useKeyboardNavigation.js.map +0 -7
  169. package/dist/cjs/autocomplete/utils/hooks/useOnElementResize.js +0 -56
  170. package/dist/cjs/autocomplete/utils/hooks/useOnElementResize.js.map +0 -7
  171. package/dist/esm/autocomplete/config/constants.js +0 -13
  172. package/dist/esm/autocomplete/config/constants.js.map +0 -7
  173. package/dist/esm/autocomplete/config/useGetPropsWithDefault.js +0 -8
  174. package/dist/esm/autocomplete/config/useGetPropsWithDefault.js.map +0 -7
  175. package/dist/esm/autocomplete/index.d.js +0 -2
  176. package/dist/esm/autocomplete/index.d.js.map +0 -7
  177. package/dist/esm/autocomplete/parts/a11y-messages/MultiAllyMessages.js +0 -21
  178. package/dist/esm/autocomplete/parts/a11y-messages/MultiAllyMessages.js.map +0 -7
  179. package/dist/esm/autocomplete/parts/a11y-messages/SingleAllyMessages.js +0 -19
  180. package/dist/esm/autocomplete/parts/a11y-messages/SingleAllyMessages.js.map +0 -7
  181. package/dist/esm/autocomplete/parts/a11y-messages/index.js +0 -8
  182. package/dist/esm/autocomplete/parts/a11y-messages/index.js.map +0 -7
  183. package/dist/esm/autocomplete/parts/a11y-messages/styled.js +0 -12
  184. package/dist/esm/autocomplete/parts/a11y-messages/styled.js.map +0 -7
  185. package/dist/esm/autocomplete/parts/controls/Controls.js +0 -43
  186. package/dist/esm/autocomplete/parts/controls/Controls.js.map +0 -7
  187. package/dist/esm/autocomplete/parts/controls/index.js +0 -6
  188. package/dist/esm/autocomplete/parts/controls/index.js.map +0 -7
  189. package/dist/esm/autocomplete/parts/controls/styled.js +0 -79
  190. package/dist/esm/autocomplete/parts/controls/styled.js.map +0 -7
  191. package/dist/esm/autocomplete/parts/controls/useControlsInput.js +0 -33
  192. package/dist/esm/autocomplete/parts/controls/useControlsInput.js.map +0 -7
  193. package/dist/esm/autocomplete/parts/controls/useKeyboardNavigation.js.map +0 -7
  194. package/dist/esm/autocomplete/parts/controls/useMaskedOnChange.js +0 -19
  195. package/dist/esm/autocomplete/parts/controls/useMaskedOnChange.js.map +0 -7
  196. package/dist/esm/autocomplete/parts/menu-list/useMenuList.js +0 -53
  197. package/dist/esm/autocomplete/parts/menu-list/useMenuList.js.map +0 -7
  198. package/dist/esm/autocomplete/propTypes.js +0 -27
  199. package/dist/esm/autocomplete/propTypes.js.map +0 -7
  200. package/dist/esm/autocomplete/utils/hooks/useKeyboardNavigation.js +0 -79
  201. package/dist/esm/autocomplete/utils/hooks/useKeyboardNavigation.js.map +0 -7
  202. package/dist/esm/autocomplete/utils/hooks/useOnElementResize.js +0 -27
  203. package/dist/esm/autocomplete/utils/hooks/useOnElementResize.js.map +0 -7
@@ -32,22 +32,21 @@ __export(Autocomplete_exports, {
32
32
  });
33
33
  var React = __toESM(require("react"));
34
34
  var import_react = __toESM(require("react"));
35
- var import_react_desc = require("react-desc");
36
35
  var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
37
36
  var import_useAutocomplete = require("./config/useAutocomplete");
38
37
  var import_container = require("./parts/container");
39
- var import_propTypes = require("./propTypes");
40
38
  var import_AutocompleteCTX = require("./AutocompleteCTX");
39
+ var import_react_desc_prop_types = require("./react-desc-prop-types");
41
40
  const DSAutocomplete = (props) => {
42
41
  const propsWithDefault = (0, import_ds_props_helpers.useMemoMergePropsWithDefault)(props, import_AutocompleteCTX.defaultProps);
43
- (0, import_ds_props_helpers.useValidateTypescriptPropTypes)(propsWithDefault, import_propTypes.propTypes);
42
+ (0, import_ds_props_helpers.useValidateTypescriptPropTypes)(propsWithDefault, import_react_desc_prop_types.propTypes);
44
43
  const ctx = (0, import_useAutocomplete.useAutocomplete)(props);
45
44
  return /* @__PURE__ */ import_react.default.createElement(import_AutocompleteCTX.AutocompleteContext.Provider, {
46
45
  value: ctx
47
46
  }, /* @__PURE__ */ import_react.default.createElement(import_container.Container, null));
48
47
  };
49
- DSAutocomplete.propTypes = import_propTypes.propTypes;
50
- const DSAutocompleteWithSchema = (0, import_react_desc.describe)(DSAutocomplete);
51
- DSAutocompleteWithSchema.propTypes = import_propTypes.propTypes;
48
+ DSAutocomplete.propTypes = import_react_desc_prop_types.propTypes;
49
+ const DSAutocompleteWithSchema = (0, import_ds_props_helpers.describe)(DSAutocomplete);
50
+ DSAutocompleteWithSchema.propTypes = import_react_desc_prop_types.propTypes;
52
51
  module.exports = __toCommonJS(Autocomplete_exports);
53
52
  //# sourceMappingURL=Autocomplete.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/autocomplete/Autocomplete.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React from 'react';\nimport { describe } from 'react-desc';\nimport { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { useAutocomplete } from './config/useAutocomplete';\nimport { Container } from './parts/container';\nimport { propTypes } from './propTypes';\nimport { AutocompleteContext, defaultProps } from './AutocompleteCTX';\nimport type { AutocompletePropsT } from './index.d';\n\nconst DSAutocomplete = (props: AutocompletePropsT): JSX.Element => {\n const propsWithDefault = useMemoMergePropsWithDefault(props, defaultProps);\n\n useValidateTypescriptPropTypes(propsWithDefault, propTypes);\n const ctx = useAutocomplete(props);\n return (\n <AutocompleteContext.Provider value={ctx}>\n <Container />\n </AutocompleteContext.Provider>\n );\n};\nDSAutocomplete.propTypes = propTypes;\nconst DSAutocompleteWithSchema = describe(DSAutocomplete);\nDSAutocompleteWithSchema.propTypes = propTypes;\n\nexport { DSAutocomplete, DSAutocompleteWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAkB;AAClB,wBAAyB;AACzB,8BAA6E;AAC7E,6BAAgC;AAChC,uBAA0B;AAC1B,uBAA0B;AAC1B,6BAAkD;AAGlD,MAAM,iBAAiB,CAAC,UAA2C;AACjE,QAAM,mBAAmB,0DAA6B,OAAO;AAE7D,8DAA+B,kBAAkB;AACjD,QAAM,MAAM,4CAAgB;AAC5B,SACE,mDAAC,2CAAoB,UAArB;AAAA,IAA8B,OAAO;AAAA,KACnC,mDAAC,4BAAD;AAAA;AAIN,eAAe,YAAY;AAC3B,MAAM,2BAA2B,gCAAS;AAC1C,yBAAyB,YAAY;",
4
+ "sourcesContent": ["import React, { WeakValidationMap } from 'react';\nimport { useMemoMergePropsWithDefault, describe, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\nimport { useAutocomplete } from './config/useAutocomplete';\nimport { Container } from './parts/container';\nimport { AutocompleteContext, defaultProps } from './AutocompleteCTX';\nimport { DSAutocompleteT, propTypes } from './react-desc-prop-types';\n\nconst DSAutocomplete: React.ComponentType<DSAutocompleteT.Props> = (props) => {\n const propsWithDefault = useMemoMergePropsWithDefault(props, defaultProps);\n\n useValidateTypescriptPropTypes(propsWithDefault, propTypes);\n const ctx = useAutocomplete(props);\n return (\n <AutocompleteContext.Provider value={ctx}>\n <Container />\n </AutocompleteContext.Provider>\n );\n};\nDSAutocomplete.propTypes = propTypes as WeakValidationMap<unknown>;\nconst DSAutocompleteWithSchema = describe(DSAutocomplete);\nDSAutocompleteWithSchema.propTypes = propTypes as WeakValidationMap<unknown>;\n\nexport { DSAutocomplete, DSAutocompleteWithSchema };\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAyC;AACzC,8BAAuF;AACvF,6BAAgC;AAChC,uBAA0B;AAC1B,6BAAkD;AAClD,mCAA2C;AAE3C,MAAM,iBAA6D,CAAC,UAAU;AAC5E,QAAM,mBAAmB,0DAA6B,OAAO;AAE7D,8DAA+B,kBAAkB;AACjD,QAAM,MAAM,4CAAgB;AAC5B,SACE,mDAAC,2CAAoB,UAArB;AAAA,IAA8B,OAAO;AAAA,KACnC,mDAAC,4BAAD;AAAA;AAIN,eAAe,YAAY;AAC3B,MAAM,2BAA2B,sCAAS;AAC1C,yBAAyB,YAAY;",
6
6
  "names": []
7
7
  }
@@ -35,18 +35,10 @@ var React = __toESM(require("react"));
35
35
  var import_react = require("react");
36
36
  var import_lodash = require("lodash");
37
37
  const defaultProps = {
38
- placeholder: "",
39
- options: [],
40
- selectedValues: "",
41
- hasError: false,
42
- isLoading: false,
43
- autoFocus: false,
38
+ zIndex: 10,
39
+ withoutPortal: false,
44
40
  startPlacementPreference: "bottom-start",
45
- placementOrderPreference: ["bottom-start", "bottom-end"],
46
- onChange: import_lodash.noop,
47
- onKeyDown: import_lodash.noop,
48
- onFilter: import_lodash.noop,
49
- onMenuOpen: import_lodash.noop
41
+ placementOrderPreference: ["bottom-start", "bottom-end"]
50
42
  };
51
43
  const defaultContext = {
52
44
  props: defaultProps,
@@ -57,9 +49,6 @@ const defaultContext = {
57
49
  setReferenceElement: import_lodash.noop,
58
50
  inputRef: (0, import_react.createRef)(),
59
51
  listRef: (0, import_react.createRef)(),
60
- wrapperListRef: (0, import_react.createRef)(),
61
- controlsWrapperRef: (0, import_react.createRef)(),
62
- selectedOptionsRef: (0, import_react.createRef)(),
63
52
  focusOptionIdx: "",
64
53
  setCurrentOption: import_lodash.noop
65
54
  };
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/autocomplete/AutocompleteCTX.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import { createContext, createRef } from 'react';\nimport { noop } from 'lodash';\nimport type { AutocompletePropsT, AutocompleteContextT } from './index.d';\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n\nexport const defaultProps: AutocompletePropsT = {\n placeholder: '',\n options: [],\n selectedValues: '',\n hasError: false,\n isLoading: false,\n autoFocus: false,\n startPlacementPreference: 'bottom-start',\n placementOrderPreference: ['bottom-start', 'bottom-end'],\n onChange: noop,\n onKeyDown: noop,\n onFilter: noop,\n onMenuOpen: noop,\n};\nconst defaultContext = {\n props: defaultProps,\n showPopover: false,\n setShowPopover: noop,\n scrollOptionIntoView: noop,\n referenceElement: null,\n setReferenceElement: noop,\n inputRef: createRef<HTMLInputElement>(),\n listRef: createRef<HTMLDivElement>(),\n wrapperListRef: createRef<HTMLDivElement>(),\n controlsWrapperRef: createRef<HTMLInputElement>(),\n selectedOptionsRef: createRef<HTMLInputElement>(),\n focusOptionIdx: '',\n setCurrentOption: noop,\n};\n/** Context for cross component communication */\nexport const AutocompleteContext = createContext<AutocompleteContextT>(defaultContext);\n\nexport default AutocompleteContext;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAyC;AACzC,oBAAqB;AAId,MAAM,eAAmC;AAAA,EAC9C,aAAa;AAAA,EACb,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,0BAA0B;AAAA,EAC1B,0BAA0B,CAAC,gBAAgB;AAAA,EAC3C,UAAU;AAAA,EACV,WAAW;AAAA,EACX,UAAU;AAAA,EACV,YAAY;AAAA;AAEd,MAAM,iBAAiB;AAAA,EACrB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,kBAAkB;AAAA;AAGb,MAAM,sBAAsB,gCAAoC;AAEvE,IAAO,0BAAQ;",
4
+ "sourcesContent": ["import { createContext, createRef } from 'react';\nimport { noop } from 'lodash';\nimport { DSAutocompleteT } from './react-desc-prop-types';\nimport { DSAutoCompleteInternalsT } from './sharedTypes';\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n\nexport const defaultProps: DSAutocompleteT.DefaultProps = {\n zIndex: 10,\n withoutPortal: false,\n startPlacementPreference: 'bottom-start',\n placementOrderPreference: ['bottom-start', 'bottom-end'],\n};\nconst defaultContext = {\n props: defaultProps as DSAutocompleteT.InternalProps,\n showPopover: false,\n setShowPopover: noop,\n scrollOptionIntoView: noop,\n referenceElement: null,\n setReferenceElement: noop,\n inputRef: createRef<HTMLInputElement>(),\n listRef: createRef<HTMLDivElement>(),\n focusOptionIdx: '',\n setCurrentOption: noop,\n};\n/** Context for cross component communication */\nexport const AutocompleteContext = createContext<DSAutoCompleteInternalsT.AutocompleteContext>(defaultContext);\n\nexport default AutocompleteContext;\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAyC;AACzC,oBAAqB;AAKd,MAAM,eAA6C;AAAA,EACxD,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,0BAA0B;AAAA,EAC1B,0BAA0B,CAAC,gBAAgB;AAAA;AAE7C,MAAM,iBAAiB;AAAA,EACrB,OAAO;AAAA,EACP,aAAa;AAAA,EACb,gBAAgB;AAAA,EAChB,sBAAsB;AAAA,EACtB,kBAAkB;AAAA,EAClB,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,SAAS;AAAA,EACT,gBAAgB;AAAA,EAChB,kBAAkB;AAAA;AAGb,MAAM,sBAAsB,gCAA4D;AAE/F,IAAO,0BAAQ;",
6
6
  "names": []
7
7
  }
@@ -31,15 +31,9 @@ __export(AutocompleteDataTestids_exports, {
31
31
  });
32
32
  var React = __toESM(require("react"));
33
33
  const AutocompleteDataTestid = {
34
- INPUT: "autocomplete-input",
35
34
  LIST: "autocomplete-menu-list",
36
- SELECTED_VALUES: "autocomplete-selected-values",
37
- SELECT_ALL_BUTTON: "autocomplete-all-btn",
38
- CLEAR_ALL_BUTTON: "autocomplete-clear-btn",
39
- DROPDOWN: "autocomplete-dropdown-btn",
40
35
  OPTION: "autocomplete-option",
41
- SHOW_ALL_BUTTON: "autocomplete-show-all-btn",
42
- SHOW_SELECTED_OPTIONS_BUTTON: "autocomplete-selected-options-btn"
36
+ CONTAINER: "autocomplete-container"
43
37
  };
44
38
  module.exports = __toCommonJS(AutocompleteDataTestids_exports);
45
39
  //# sourceMappingURL=AutocompleteDataTestids.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/autocomplete/AutocompleteDataTestids.tsx", "../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["export const AutocompleteDataTestid = {\n INPUT: 'autocomplete-input',\n LIST: 'autocomplete-menu-list',\n SELECTED_VALUES: 'autocomplete-selected-values',\n SELECT_ALL_BUTTON: 'autocomplete-all-btn',\n CLEAR_ALL_BUTTON: 'autocomplete-clear-btn',\n DROPDOWN: 'autocomplete-dropdown-btn',\n OPTION: 'autocomplete-option',\n SHOW_ALL_BUTTON: 'autocomplete-show-all-btn',\n SHOW_SELECTED_OPTIONS_BUTTON: 'autocomplete-selected-options-btn',\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAhB,MAAM,yBAAyB;AAAA,EACpC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,8BAA8B;AAAA;",
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;ACAA,YAAuB;ADAhB,MAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,8 @@
1
1
  var __create = Object.create;
2
2
  var __defProp = Object.defineProperty;
3
+ var __defProps = Object.defineProperties;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
7
  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
6
8
  var __getProtoOf = Object.getPrototypeOf;
@@ -18,6 +20,7 @@ var __spreadValues = (a, b) => {
18
20
  }
19
21
  return a;
20
22
  };
23
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
21
24
  var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
22
25
  var __export = (target, all) => {
23
26
  for (var name in all)
@@ -45,19 +48,24 @@ __export(useAutocomplete_exports, {
45
48
  });
46
49
  var React = __toESM(require("react"));
47
50
  var import_react = require("react");
51
+ var import_ds_props_helpers = require("@elliemae/ds-props-helpers");
48
52
  var import_react_virtual = require("react-virtual");
49
- var import_useGetPropsWithDefault = require("./useGetPropsWithDefault");
53
+ var import_react_desc_prop_types = require("../react-desc-prop-types");
54
+ var import_AutocompleteCTX = require("../AutocompleteCTX");
55
+ var import_listHelper = require("../utils/listHelper");
50
56
  const useAutocomplete = (props) => {
57
+ const defaultPropsWithInnerRef = __spreadProps(__spreadValues({}, import_AutocompleteCTX.defaultProps), {
58
+ innerRef: (0, import_react.useRef)(null)
59
+ });
60
+ const propsWithDefault = (0, import_ds_props_helpers.useMemoMergePropsWithDefault)(props, defaultPropsWithInnerRef);
61
+ (0, import_ds_props_helpers.useValidateTypescriptPropTypes)(propsWithDefault, import_react_desc_prop_types.propTypes);
51
62
  const [showPopover, setShowPopover] = (0, import_react.useState)(false);
52
63
  const [referenceElement, setReferenceElement] = (0, import_react.useState)(null);
53
64
  const [focusOptionIdx, setCurrentOption] = (0, import_react.useState)("");
54
65
  const inputRef = (0, import_react.useRef)(null);
55
66
  const listRef = (0, import_react.useRef)(null);
56
- const wrapperListRef = (0, import_react.useRef)(null);
57
67
  const selectedOptionsRef = (0, import_react.useRef)(null);
58
- const controlsWrapperRef = (0, import_react.useRef)(null);
59
- const propsWithDefaults = (0, import_useGetPropsWithDefault.useGetAutocompleteWithDefaultsProps)(props);
60
- const { options } = propsWithDefaults;
68
+ const { options, filter } = propsWithDefault;
61
69
  const virtualListHelpers = (0, import_react_virtual.useVirtual)({
62
70
  size: options.length,
63
71
  parentRef: listRef,
@@ -67,8 +75,16 @@ const useAutocomplete = (props) => {
67
75
  const scrollOptionIntoView = (0, import_react.useCallback)((dsId, opts = { align: "center" }) => {
68
76
  virtualListHelpers.scrollToIndex(options.findIndex((opt) => opt.dsId === dsId), opts);
69
77
  }, [options, virtualListHelpers]);
78
+ (0, import_react.useEffect)(() => {
79
+ if (filter.length === 0 || options.length === 0) {
80
+ setShowPopover(false);
81
+ }
82
+ }, [filter, options.length, setShowPopover]);
83
+ (0, import_react.useEffect)(() => {
84
+ setCurrentOption((0, import_listHelper.getFirstOption)(options));
85
+ }, [options, showPopover]);
70
86
  const ctx = (0, import_react.useMemo)(() => ({
71
- props: __spreadValues({}, propsWithDefaults),
87
+ props: __spreadValues({}, propsWithDefault),
72
88
  virtualListHelpers,
73
89
  showPopover,
74
90
  referenceElement,
@@ -76,23 +92,19 @@ const useAutocomplete = (props) => {
76
92
  listRef,
77
93
  focusOptionIdx,
78
94
  selectedOptionsRef,
79
- controlsWrapperRef,
80
- wrapperListRef,
81
95
  setCurrentOption,
82
96
  scrollOptionIntoView,
83
97
  setReferenceElement,
84
98
  setShowPopover
85
99
  }), [
86
100
  scrollOptionIntoView,
87
- propsWithDefaults,
101
+ propsWithDefault,
88
102
  virtualListHelpers,
89
103
  focusOptionIdx,
90
- wrapperListRef,
91
104
  showPopover,
92
105
  referenceElement,
93
106
  inputRef,
94
107
  selectedOptionsRef,
95
- controlsWrapperRef,
96
108
  listRef
97
109
  ]);
98
110
  return ctx;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/autocomplete/config/useAutocomplete.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 } from 'react';\nimport { useVirtual } from 'react-virtual';\nimport { useGetAutocompleteWithDefaultsProps } from './useGetPropsWithDefault';\nimport type { AutocompletePropsT, AutocompleteContextT } from '../index.d';\n\nexport const useAutocomplete = (props: Partial<AutocompletePropsT>): AutocompleteContextT => {\n const [showPopover, setShowPopover] = useState<boolean>(false);\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null);\n\n const [focusOptionIdx, setCurrentOption] = useState<string>('');\n const inputRef = useRef<HTMLInputElement>(null);\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\n const propsWithDefaults = useGetAutocompleteWithDefaultsProps(props);\n const { options } = propsWithDefaults;\n\n // ===========================================================================\n // Virtualization setup\n // ===========================================================================\n\n const virtualListHelpers: ReturnType<typeof useVirtual> = useVirtual({\n size: options.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 options.findIndex((opt) => opt.dsId === dsId),\n opts,\n );\n },\n [options, virtualListHelpers],\n );\n\n const ctx = useMemo(\n () => ({\n props: { ...propsWithDefaults },\n virtualListHelpers,\n showPopover,\n referenceElement,\n inputRef,\n listRef,\n focusOptionIdx,\n selectedOptionsRef,\n controlsWrapperRef,\n wrapperListRef,\n setCurrentOption,\n scrollOptionIntoView,\n setReferenceElement,\n setShowPopover,\n }),\n [\n scrollOptionIntoView,\n propsWithDefaults,\n virtualListHelpers,\n focusOptionIdx,\n wrapperListRef,\n showPopover,\n referenceElement,\n inputRef,\n selectedOptionsRef,\n controlsWrapperRef,\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,mBAAuD;AACvD,2BAA2B;AAC3B,oCAAoD;AAG7C,MAAM,kBAAkB,CAAC,UAA6D;AAC3F,QAAM,CAAC,aAAa,kBAAkB,2BAAkB;AACxD,QAAM,CAAC,kBAAkB,uBAAuB,2BAA6B;AAE7E,QAAM,CAAC,gBAAgB,oBAAoB,2BAAiB;AAC5D,QAAM,WAAW,yBAAyB;AAC1C,QAAM,UAAU,yBAAuB;AACvC,QAAM,iBAAiB,yBAAuB;AAE9C,QAAM,qBAAqB,yBAAuB;AAClD,QAAM,qBAAqB,yBAAuB;AAElD,QAAM,oBAAoB,uEAAoC;AAC9D,QAAM,EAAE,YAAY;AAMpB,QAAM,qBAAoD,qCAAW;AAAA,IACnE,MAAM,QAAQ;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA;AAMhB,QAAM,uBAAuB,8BAC3B,CAAC,MAAc,OAAO,EAAE,OAAO,eAAe;AAC5C,uBAAmB,cACjB,QAAQ,UAAU,CAAC,QAAQ,IAAI,SAAS,OACxC;AAAA,KAGJ,CAAC,SAAS;AAGZ,QAAM,MAAM,0BACV,MAAO;AAAA,IACL,OAAO,mBAAK;AAAA,IACZ;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;AAIJ,SAAO;AAAA;",
3
+ "sources": ["../../../../src/autocomplete/config/useAutocomplete.ts", "../../../../../../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, useEffect, useRef, useCallback } from 'react';\nimport { useMemoMergePropsWithDefault, useValidateTypescriptPropTypes } from '@elliemae/ds-props-helpers';\n\nimport { useVirtual } from 'react-virtual';\nimport { DSAutocompleteT, propTypes } from '../react-desc-prop-types';\nimport { DSAutoCompleteInternalsT } from '../sharedTypes';\nimport { defaultProps } from '../AutocompleteCTX';\nimport { getFirstOption } from '../utils/listHelper';\n\nexport const useAutocomplete = (props: DSAutocompleteT.Props): DSAutoCompleteInternalsT.AutocompleteContext => {\n const defaultPropsWithInnerRef = {\n ...defaultProps,\n innerRef: useRef(null),\n };\n const propsWithDefault = useMemoMergePropsWithDefault(props, defaultPropsWithInnerRef);\n useValidateTypescriptPropTypes(propsWithDefault, propTypes);\n const [showPopover, setShowPopover] = useState<boolean>(false);\n const [referenceElement, setReferenceElement] = useState<HTMLElement | null>(null);\n\n const [focusOptionIdx, setCurrentOption] = useState<string>('');\n\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const selectedOptionsRef = useRef<HTMLDivElement>(null);\n\n const { options, filter } = propsWithDefault;\n\n // ===========================================================================\n // Virtualization setup\n // ===========================================================================\n\n const virtualListHelpers: ReturnType<typeof useVirtual> = useVirtual({\n size: options.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 options.findIndex((opt) => opt.dsId === dsId),\n opts,\n );\n },\n [options, virtualListHelpers],\n );\n\n useEffect(() => {\n if (filter.length === 0 || options.length === 0) {\n setShowPopover(false);\n }\n }, [filter, options.length, setShowPopover]);\n\n useEffect(() => {\n setCurrentOption(getFirstOption(options));\n }, [options, showPopover]);\n\n const ctx = useMemo(\n () => ({\n props: { ...propsWithDefault },\n virtualListHelpers,\n showPopover,\n referenceElement,\n inputRef,\n listRef,\n focusOptionIdx,\n selectedOptionsRef,\n setCurrentOption,\n scrollOptionIntoView,\n setReferenceElement,\n setShowPopover,\n }),\n [\n scrollOptionIntoView,\n propsWithDefault,\n virtualListHelpers,\n focusOptionIdx,\n showPopover,\n referenceElement,\n inputRef,\n selectedOptionsRef,\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,8BAA6E;AAE7E,2BAA2B;AAC3B,mCAA2C;AAE3C,6BAA6B;AAC7B,wBAA+B;AAExB,MAAM,kBAAkB,CAAC,UAA+E;AAC7G,QAAM,2BAA2B,iCAC5B,sCAD4B;AAAA,IAE/B,UAAU,yBAAO;AAAA;AAEnB,QAAM,mBAAmB,0DAA6B,OAAO;AAC7D,8DAA+B,kBAAkB;AACjD,QAAM,CAAC,aAAa,kBAAkB,2BAAkB;AACxD,QAAM,CAAC,kBAAkB,uBAAuB,2BAA6B;AAE7E,QAAM,CAAC,gBAAgB,oBAAoB,2BAAiB;AAE5D,QAAM,WAAW,yBAAyB;AAC1C,QAAM,UAAU,yBAAuB;AAEvC,QAAM,qBAAqB,yBAAuB;AAElD,QAAM,EAAE,SAAS,WAAW;AAM5B,QAAM,qBAAoD,qCAAW;AAAA,IACnE,MAAM,QAAQ;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA;AAMhB,QAAM,uBAAuB,8BAC3B,CAAC,MAAc,OAAO,EAAE,OAAO,eAAe;AAC5C,uBAAmB,cACjB,QAAQ,UAAU,CAAC,QAAQ,IAAI,SAAS,OACxC;AAAA,KAGJ,CAAC,SAAS;AAGZ,8BAAU,MAAM;AACd,QAAI,OAAO,WAAW,KAAK,QAAQ,WAAW,GAAG;AAC/C,qBAAe;AAAA;AAAA,KAEhB,CAAC,QAAQ,QAAQ,QAAQ;AAE5B,8BAAU,MAAM;AACd,qBAAiB,sCAAe;AAAA,KAC/B,CAAC,SAAS;AAEb,QAAM,MAAM,0BACV,MAAO;AAAA,IACL,OAAO,mBAAK;AAAA,IACZ;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;AAIJ,SAAO;AAAA;",
6
6
  "names": []
7
7
  }
@@ -32,31 +32,42 @@ __export(Container_exports, {
32
32
  var React = __toESM(require("react"));
33
33
  var import_react = __toESM(require("react"));
34
34
  var import_ds_popperjs = require("@elliemae/ds-popperjs");
35
- var import_AutocompleteCTX = require("../../AutocompleteCTX");
35
+ var import_AutocompleteCTX = __toESM(require("../../AutocompleteCTX"));
36
36
  var import_styled = require("./styled");
37
- var import_controls = require("../controls");
38
37
  var import_menu_list = require("../menu-list");
38
+ var import_useKeyboardNavigation = require("./useKeyboardNavigation");
39
+ var import_AutocompleteDataTestids = require("../../AutocompleteDataTestids");
39
40
  const Container = () => {
40
41
  const {
41
- props: { inline, startPlacementPreference, placementOrderPreference },
42
+ props: { startPlacementPreference, children, filter, placementOrderPreference },
42
43
  showPopover,
43
- inputRef,
44
44
  setReferenceElement,
45
45
  setShowPopover,
46
46
  referenceElement
47
- } = (0, import_react.useContext)(import_AutocompleteCTX.AutocompleteContext);
47
+ } = (0, import_react.useContext)(import_AutocompleteCTX.default);
48
+ (0, import_react.useEffect)(() => {
49
+ const closePopper = () => {
50
+ setShowPopover(false);
51
+ };
52
+ window.addEventListener("blur", closePopper);
53
+ return () => {
54
+ window.removeEventListener("blur", closePopper);
55
+ };
56
+ }, [setShowPopover]);
48
57
  const handleCloseMenu = (0, import_react.useCallback)(() => {
49
58
  setShowPopover(false);
50
- if (inputRef.current)
51
- inputRef.current.blur();
52
- }, [inputRef, setShowPopover]);
53
- const handleMouseDown = (0, import_react.useCallback)((e) => {
54
- e.preventDefault();
55
- }, []);
56
- const StyledContainer = inline ? import_styled.StyledContainerInline : import_styled.StyledContainerWithPopper;
57
- return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement(StyledContainer, {
58
- ref: setReferenceElement
59
- }, /* @__PURE__ */ import_react.default.createElement(import_controls.Controls, null), inline ? /* @__PURE__ */ import_react.default.createElement(import_menu_list.MenuList, null) : null), /* @__PURE__ */ import_react.default.createElement(import_ds_popperjs.DSPopperJS, {
59
+ }, [setShowPopover]);
60
+ const input = import_react.default.Children.only(children);
61
+ const { onInputKeyDown } = (0, import_useKeyboardNavigation.useKeyboardNavigation)();
62
+ return /* @__PURE__ */ import_react.default.createElement(import_styled.StyledContainerWithPopper, {
63
+ ref: setReferenceElement,
64
+ role: "combobox",
65
+ "aria-autocomplete": "list",
66
+ "aria-controls": "autocomplete-listbox",
67
+ "aria-expanded": showPopover,
68
+ onKeyDown: onInputKeyDown,
69
+ "data-testid": import_AutocompleteDataTestids.AutocompleteDataTestid.CONTAINER
70
+ }, input, filter && /* @__PURE__ */ import_react.default.createElement(import_ds_popperjs.DSPopperJS, {
60
71
  customOffset: [0, 5],
61
72
  closeContextMenu: handleCloseMenu,
62
73
  referenceElement,
@@ -68,8 +79,7 @@ const Container = () => {
68
79
  withoutAnimation: true,
69
80
  zIndex: 10
70
81
  }, /* @__PURE__ */ import_react.default.createElement(import_styled.StyledPopperWrapper, {
71
- tabIndex: -1,
72
- onMouseDown: handleMouseDown
82
+ tabIndex: -1
73
83
  }, /* @__PURE__ */ import_react.default.createElement(import_menu_list.MenuList, null))));
74
84
  };
75
85
  module.exports = __toCommonJS(Container_exports);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/autocomplete/parts/container/Container.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["/* eslint-disable complexity */\nimport React, { useCallback, useContext } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport { AutocompleteContext } from '../../AutocompleteCTX';\nimport { StyledContainerWithPopper, StyledContainerInline, StyledPopperWrapper } from './styled';\nimport { Controls } from '../controls';\nimport { MenuList } from '../menu-list';\nconst Container = (): JSX.Element => {\n const {\n props: { inline, startPlacementPreference, placementOrderPreference },\n showPopover,\n inputRef,\n setReferenceElement,\n setShowPopover,\n referenceElement,\n } = useContext(AutocompleteContext);\n\n const handleCloseMenu = useCallback(() => {\n setShowPopover(false);\n if (inputRef.current) inputRef.current.blur();\n }, [inputRef, setShowPopover]);\n\n const handleMouseDown = useCallback((e: React.KeyboardEvent) => {\n e.preventDefault();\n }, []);\n\n const StyledContainer = inline ? StyledContainerInline : StyledContainerWithPopper;\n return (\n <>\n <StyledContainer ref={setReferenceElement}>\n <Controls />\n {inline ? <MenuList /> : null}\n </StyledContainer>\n <DSPopperJS\n customOffset={[0, 5]}\n closeContextMenu={handleCloseMenu}\n referenceElement={referenceElement}\n showPopover={showPopover}\n startPlacementPreference={startPlacementPreference}\n placementOrderPreference={placementOrderPreference}\n withoutPortal\n withoutArrow\n withoutAnimation\n zIndex={10}\n >\n <StyledPopperWrapper tabIndex={-1} onMouseDown={handleMouseDown}>\n <MenuList />\n </StyledPopperWrapper>\n </DSPopperJS>\n </>\n );\n};\n\nexport { Container };\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA+C;AAC/C,yBAA2B;AAC3B,6BAAoC;AACpC,oBAAsF;AACtF,sBAAyB;AACzB,uBAAyB;AACzB,MAAM,YAAY,MAAmB;AACnC,QAAM;AAAA,IACJ,OAAO,EAAE,QAAQ,0BAA0B;AAAA,IAC3C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AAEf,QAAM,kBAAkB,8BAAY,MAAM;AACxC,mBAAe;AACf,QAAI,SAAS;AAAS,eAAS,QAAQ;AAAA,KACtC,CAAC,UAAU;AAEd,QAAM,kBAAkB,8BAAY,CAAC,MAA2B;AAC9D,MAAE;AAAA,KACD;AAEH,QAAM,kBAAkB,SAAS,sCAAwB;AACzD,SACE,wFACE,mDAAC,iBAAD;AAAA,IAAiB,KAAK;AAAA,KACpB,mDAAC,0BAAD,OACC,SAAS,mDAAC,2BAAD,QAAe,OAE3B,mDAAC,+BAAD;AAAA,IACE,cAAc,CAAC,GAAG;AAAA,IAClB,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAa;AAAA,IACb,cAAY;AAAA,IACZ,kBAAgB;AAAA,IAChB,QAAQ;AAAA,KAER,mDAAC,mCAAD;AAAA,IAAqB,UAAU;AAAA,IAAI,aAAa;AAAA,KAC9C,mDAAC,2BAAD;AAAA;",
4
+ "sourcesContent": ["/* eslint-disable complexity */\nimport React, { useCallback, useEffect, useContext } from 'react';\nimport { DSPopperJS } from '@elliemae/ds-popperjs';\nimport AutocompleteContext from '../../AutocompleteCTX';\nimport { StyledContainerWithPopper, StyledPopperWrapper } from './styled';\nimport { MenuList } from '../menu-list';\nimport { useKeyboardNavigation } from './useKeyboardNavigation';\nimport { AutocompleteDataTestid } from '../../AutocompleteDataTestids';\n\nexport const Container = (): JSX.Element => {\n const {\n props: { startPlacementPreference, children, filter, placementOrderPreference },\n showPopover,\n setReferenceElement,\n setShowPopover,\n referenceElement,\n } = useContext(AutocompleteContext);\n\n useEffect(() => {\n const closePopper = () => {\n setShowPopover(false);\n };\n window.addEventListener('blur', closePopper);\n\n return () => {\n window.removeEventListener('blur', closePopper);\n };\n }, [setShowPopover]);\n\n const handleCloseMenu = useCallback(() => {\n setShowPopover(false);\n }, [setShowPopover]);\n\n const input = React.Children.only(children);\n const { onInputKeyDown } = useKeyboardNavigation();\n\n return (\n <StyledContainerWithPopper\n ref={setReferenceElement}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-controls=\"autocomplete-listbox\"\n aria-expanded={showPopover}\n onKeyDown={onInputKeyDown}\n data-testid={AutocompleteDataTestid.CONTAINER}\n >\n {input}\n {filter && (\n <DSPopperJS\n customOffset={[0, 5]}\n closeContextMenu={handleCloseMenu}\n referenceElement={referenceElement}\n showPopover={showPopover}\n startPlacementPreference={startPlacementPreference}\n placementOrderPreference={placementOrderPreference}\n withoutPortal\n withoutArrow\n withoutAnimation\n zIndex={10}\n >\n <StyledPopperWrapper tabIndex={-1}>\n <MenuList />\n </StyledPopperWrapper>\n </DSPopperJS>\n )}\n </StyledContainerWithPopper>\n );\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADCvB,mBAA0D;AAC1D,yBAA2B;AAC3B,6BAAgC;AAChC,oBAA+D;AAC/D,uBAAyB;AACzB,mCAAsC;AACtC,qCAAuC;AAEhC,MAAM,YAAY,MAAmB;AAC1C,QAAM;AAAA,IACJ,OAAO,EAAE,0BAA0B,UAAU,QAAQ;AAAA,IACrD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AAEf,8BAAU,MAAM;AACd,UAAM,cAAc,MAAM;AACxB,qBAAe;AAAA;AAEjB,WAAO,iBAAiB,QAAQ;AAEhC,WAAO,MAAM;AACX,aAAO,oBAAoB,QAAQ;AAAA;AAAA,KAEpC,CAAC;AAEJ,QAAM,kBAAkB,8BAAY,MAAM;AACxC,mBAAe;AAAA,KACd,CAAC;AAEJ,QAAM,QAAQ,qBAAM,SAAS,KAAK;AAClC,QAAM,EAAE,mBAAmB;AAE3B,SACE,mDAAC,yCAAD;AAAA,IACE,KAAK;AAAA,IACL,MAAK;AAAA,IACL,qBAAkB;AAAA,IAClB,iBAAc;AAAA,IACd,iBAAe;AAAA,IACf,WAAW;AAAA,IACX,eAAa,sDAAuB;AAAA,KAEnC,OACA,UACC,mDAAC,+BAAD;AAAA,IACE,cAAc,CAAC,GAAG;AAAA,IAClB,kBAAkB;AAAA,IAClB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,eAAa;AAAA,IACb,cAAY;AAAA,IACZ,kBAAgB;AAAA,IAChB,QAAQ;AAAA,KAER,mDAAC,mCAAD;AAAA,IAAqB,UAAU;AAAA,KAC7B,mDAAC,2BAAD;AAAA;",
6
6
  "names": []
7
7
  }
@@ -27,7 +27,6 @@ var __toCommonJS = /* @__PURE__ */ ((cache) => {
27
27
  })(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
28
28
  var styled_exports = {};
29
29
  __export(styled_exports, {
30
- StyledContainerInline: () => StyledContainerInline,
31
30
  StyledContainerWithPopper: () => StyledContainerWithPopper,
32
31
  StyledPopperWrapper: () => StyledPopperWrapper
33
32
  });
@@ -38,10 +37,6 @@ const StyledContainerWithPopper = import_styled_components.default.div`
38
37
  height: 28px;
39
38
  position: relative;
40
39
  `;
41
- const StyledContainerInline = import_styled_components.default.div`
42
- width: 100%;
43
- position: relative;
44
- `;
45
40
  const StyledPopperWrapper = import_styled_components.default.div`
46
41
  background: #fff;
47
42
  overflow: auto;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/autocomplete/parts/container/styled.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import styled from 'styled-components';\n\nexport const StyledContainerWithPopper = styled.div`\n width: 100%;\n height: 28px;\n position: relative;\n`;\n\nexport const StyledContainerInline = styled.div`\n width: 100%;\n position: relative;\n`;\n\nexport const StyledPopperWrapper = styled.div`\n background: #fff;\n overflow: auto;\n position: relative;\n`;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,+BAAmB;AAEZ,MAAM,4BAA4B,iCAAO;AAAA;AAAA;AAAA;AAAA;AAMzC,MAAM,wBAAwB,iCAAO;AAAA;AAAA;AAAA;AAKrC,MAAM,sBAAsB,iCAAO;AAAA;AAAA;AAAA;AAAA;",
4
+ "sourcesContent": ["import styled from 'styled-components';\n\nexport const StyledContainerWithPopper = styled.div`\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", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,+BAAmB;AAEZ,MAAM,4BAA4B,iCAAO;AAAA;AAAA;AAAA;AAAA;AAMzC,MAAM,sBAAsB,iCAAO;AAAA;AAAA;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -36,7 +36,7 @@ var import_listHelper = require("../../utils/listHelper");
36
36
  const isOptionFocuseable = (opt) => !["section", "separator"].includes(opt.type);
37
37
  const useKeyboardNavigation = () => {
38
38
  const {
39
- props: { onValueChange, options },
39
+ props: { onSelect, options },
40
40
  setShowPopover,
41
41
  showPopover,
42
42
  focusOptionIdx,
@@ -45,21 +45,15 @@ const useKeyboardNavigation = () => {
45
45
  } = (0, import_react.useContext)(import_AutocompleteCTX.default);
46
46
  const currentItemIndex = options.findIndex((opt) => opt.dsId === focusOptionIdx);
47
47
  const currentItem = options.find((item) => item.type === "option" && item.dsId === focusOptionIdx);
48
- const selectOption = (0, import_react.useCallback)((e) => {
49
- if (onValueChange)
50
- onValueChange(currentItem.label, e);
51
- setShowPopover(false);
52
- }, [currentItem, setShowPopover, onValueChange]);
53
48
  const onInputKeyDown = (0, import_react.useCallback)((e) => {
54
- const targetElement = e.target;
55
- if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key) || e.keyCode >= 48 && e.keyCode <= 90) {
49
+ if ((e.keyCode >= 48 && e.keyCode <= 90 || e.key === "Backspace") && !showPopover) {
56
50
  setShowPopover(true);
57
- }
58
- if (e.keyCode === 32 && targetElement.value === "" || e.key === "Enter") {
59
- if (showPopover) {
60
- e.preventDefault();
61
- selectOption(e);
62
- }
51
+ } else if (e.key === "Tab")
52
+ setShowPopover(false);
53
+ if (e.key === "Enter" && showPopover) {
54
+ e.preventDefault();
55
+ onSelect(currentItem?.label, e);
56
+ setShowPopover(false);
63
57
  }
64
58
  if (e.key === "ArrowDown") {
65
59
  e.preventDefault();
@@ -67,8 +61,6 @@ const useKeyboardNavigation = () => {
67
61
  const nextItemIndex = (0, import_listHelper.findInCircularList)(options, currentItemIndex, isOptionFocuseable);
68
62
  setCurrentOption(options[nextItemIndex].dsId);
69
63
  scrollOptionIntoView(options[nextItemIndex].dsId);
70
- } else {
71
- setShowPopover(true);
72
64
  }
73
65
  }
74
66
  if (e.key === "ArrowUp") {
@@ -77,19 +69,21 @@ const useKeyboardNavigation = () => {
77
69
  const nextItemIndex = (0, import_listHelper.findInCircularList)(options, currentItemIndex, isOptionFocuseable, -1);
78
70
  setCurrentOption(options[nextItemIndex].dsId);
79
71
  scrollOptionIntoView(options[nextItemIndex].dsId);
80
- } else {
81
- setShowPopover(true);
82
- setTimeout(() => {
83
- const nextItemIndex = (0, import_listHelper.findInCircularList)(options, 0, isOptionFocuseable, -1);
84
- setCurrentOption(options[nextItemIndex].dsId);
85
- scrollOptionIntoView(options[nextItemIndex].dsId);
86
- });
87
72
  }
88
73
  }
89
74
  if (e.key === "Escape") {
90
75
  setShowPopover(false);
91
76
  }
92
- }, [scrollOptionIntoView, currentItemIndex, options, showPopover, setCurrentOption, setShowPopover, selectOption]);
77
+ }, [
78
+ currentItem?.label,
79
+ currentItemIndex,
80
+ onSelect,
81
+ options,
82
+ scrollOptionIntoView,
83
+ setCurrentOption,
84
+ setShowPopover,
85
+ showPopover
86
+ ]);
93
87
  return { onInputKeyDown };
94
88
  };
95
89
  module.exports = __toCommonJS(useKeyboardNavigation_exports);
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../../src/autocomplete/parts/container/useKeyboardNavigation.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable max-lines */\n/* eslint-disable max-depth */\n/* eslint-disable max-statements */\n/* eslint-disable complexity */\nimport React, { useCallback, useContext } from 'react';\nimport { DSAutocompleteT } from '../../react-desc-prop-types';\nimport AutocompleteContext from '../../AutocompleteCTX';\nimport { findInCircularList } from '../../utils/listHelper';\n\nconst isOptionFocuseable = (opt: DSAutocompleteT.OptionTypes): boolean => !['section', 'separator'].includes(opt.type);\n\nexport const useKeyboardNavigation = () => {\n const {\n props: { onSelect, options },\n setShowPopover,\n showPopover,\n focusOptionIdx,\n setCurrentOption,\n scrollOptionIntoView,\n } = useContext(AutocompleteContext);\n\n const currentItemIndex = options.findIndex((opt) => opt.dsId === focusOptionIdx);\n const currentItem = options.find(\n (item) => item.type === 'option' && item.dsId === focusOptionIdx,\n ) as DSAutocompleteT.ItemOption;\n\n const onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = useCallback(\n (e) => {\n if (((e.keyCode >= 48 && e.keyCode <= 90) || e.key === 'Backspace') && !showPopover) {\n setShowPopover(true);\n } else if (e.key === 'Tab') setShowPopover(false);\n\n // =============================================================================\n // ENTER AND SPACE KEY SELECT OPTIONS AND OPEN CLOSE THE POPOVER\n // =============================================================================\n if (e.key === 'Enter' && showPopover) {\n e.preventDefault();\n onSelect(currentItem?.label, e);\n setShowPopover(false);\n }\n\n // =============================================================================\n // ARROWS UP AND DOWN\n // =============================================================================\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n if (showPopover) {\n const nextItemIndex = findInCircularList(options, currentItemIndex, isOptionFocuseable);\n setCurrentOption(options[nextItemIndex].dsId);\n scrollOptionIntoView(options[nextItemIndex].dsId);\n }\n }\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n if (showPopover) {\n const nextItemIndex = findInCircularList(options, currentItemIndex, isOptionFocuseable, -1);\n setCurrentOption(options[nextItemIndex].dsId);\n scrollOptionIntoView(options[nextItemIndex].dsId);\n }\n }\n // =============================================================================\n // ESCAPE\n // =============================================================================\n if (e.key === 'Escape') {\n setShowPopover(false);\n }\n },\n [\n currentItem?.label,\n currentItemIndex,\n onSelect,\n options,\n scrollOptionIntoView,\n setCurrentOption,\n setShowPopover,\n showPopover,\n ],\n );\n\n return { onInputKeyDown };\n};\n", "import * as React from 'react';\nexport { React };\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADIvB,mBAA+C;AAE/C,6BAAgC;AAChC,wBAAmC;AAEnC,MAAM,qBAAqB,CAAC,QAA8C,CAAC,CAAC,WAAW,aAAa,SAAS,IAAI;AAE1G,MAAM,wBAAwB,MAAM;AACzC,QAAM;AAAA,IACJ,OAAO,EAAE,UAAU;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,MACE,6BAAW;AAEf,QAAM,mBAAmB,QAAQ,UAAU,CAAC,QAAQ,IAAI,SAAS;AACjE,QAAM,cAAc,QAAQ,KAC1B,CAAC,SAAS,KAAK,SAAS,YAAY,KAAK,SAAS;AAGpD,QAAM,iBAA+D,8BACnE,CAAC,MAAM;AACL,QAAM,GAAE,WAAW,MAAM,EAAE,WAAW,MAAO,EAAE,QAAQ,gBAAgB,CAAC,aAAa;AACnF,qBAAe;AAAA,eACN,EAAE,QAAQ;AAAO,qBAAe;AAK3C,QAAI,EAAE,QAAQ,WAAW,aAAa;AACpC,QAAE;AACF,eAAS,aAAa,OAAO;AAC7B,qBAAe;AAAA;AAMjB,QAAI,EAAE,QAAQ,aAAa;AACzB,QAAE;AACF,UAAI,aAAa;AACf,cAAM,gBAAgB,0CAAmB,SAAS,kBAAkB;AACpE,yBAAiB,QAAQ,eAAe;AACxC,6BAAqB,QAAQ,eAAe;AAAA;AAAA;AAGhD,QAAI,EAAE,QAAQ,WAAW;AACvB,QAAE;AACF,UAAI,aAAa;AACf,cAAM,gBAAgB,0CAAmB,SAAS,kBAAkB,oBAAoB;AACxF,yBAAiB,QAAQ,eAAe;AACxC,6BAAqB,QAAQ,eAAe;AAAA;AAAA;AAMhD,QAAI,EAAE,QAAQ,UAAU;AACtB,qBAAe;AAAA;AAAA,KAGnB;AAAA,IACE,aAAa;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAIJ,SAAO,EAAE;AAAA;",
6
+ "names": []
7
+ }
@@ -31,51 +31,31 @@ __export(MenuList_exports, {
31
31
  });
32
32
  var React = __toESM(require("react"));
33
33
  var import_react = __toESM(require("react"));
34
- var import_ds_circular_progress_indicator = require("@elliemae/ds-circular-progress-indicator");
35
- var import_ds_grid = require("@elliemae/ds-grid");
36
34
  var import_styled = require("./styled");
37
35
  var import_AutocompleteDataTestids = require("../../AutocompleteDataTestids");
38
36
  var import_AutocompleteCTX = __toESM(require("../../AutocompleteCTX"));
39
- var import_useOnElementResize = require("../../utils/hooks/useOnElementResize");
40
37
  var import_useItemRenderer = require("./useItemRenderer");
41
- var import_useMenuList = require("./useMenuList");
42
38
  const MenuList = () => {
43
39
  const {
44
- props: { menuMinWidth, menuMaxHeight, options, isLoading },
40
+ props: { options },
45
41
  referenceElement,
46
42
  inputRef,
47
43
  listRef,
48
44
  showPopover,
49
- wrapperListRef,
50
- controlsWrapperRef,
51
45
  virtualListHelpers: { totalSize }
52
46
  } = (0, import_react.useContext)(import_AutocompleteCTX.default);
53
47
  const ItemRenderer = (0, import_useItemRenderer.useItemRenderer)();
54
- (0, import_useMenuList.useMenuList)();
55
- const { width } = (0, import_useOnElementResize.useOnElementResize)(controlsWrapperRef);
56
- const listWidth = (0, import_react.useMemo)(() => menuMinWidth || `${referenceElement?.offsetWidth}`, [menuMinWidth, referenceElement, width]);
57
48
  const handleOnFocus = (0, import_react.useCallback)(() => {
58
49
  inputRef.current?.focus();
59
50
  }, [inputRef]);
60
51
  return /* @__PURE__ */ import_react.default.createElement(import_styled.StyledListWrapper, {
61
52
  tabIndex: -1,
62
- ref: wrapperListRef,
63
53
  onMouseDown: (e) => e.preventDefault(),
64
- minWidth: listWidth,
65
- id: "combo-listbox",
54
+ minWidth: referenceElement?.offsetWidth,
55
+ id: "autocomplete-listbox",
66
56
  role: "listbox"
67
- }, isLoading && inputRef.current?.value !== "" ? /* @__PURE__ */ import_react.default.createElement(import_ds_grid.Grid, {
68
- justifyContent: "center",
69
- alignItems: "center",
70
- style: { padding: 20 }
71
- }, /* @__PURE__ */ import_react.default.createElement(import_ds_circular_progress_indicator.DSCircularProgressIndicator, {
72
- size: "l",
73
- loading: isLoading,
74
- waiting: false,
75
- showTooltip: false
76
- })) : /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, options.length > 0 && /* @__PURE__ */ import_react.default.createElement(import_styled.StyledVirtualListWrapper, {
57
+ }, options.length > 0 && /* @__PURE__ */ import_react.default.createElement(import_styled.StyledVirtualListWrapper, {
77
58
  tabIndex: -1,
78
- maxHeight: menuMaxHeight,
79
59
  ref: listRef
80
60
  }, /* @__PURE__ */ import_react.default.createElement(import_styled.StyledList, {
81
61
  tabIndex: -1,
@@ -83,7 +63,7 @@ const MenuList = () => {
83
63
  onFocus: handleOnFocus,
84
64
  "data-testid": import_AutocompleteDataTestids.AutocompleteDataTestid.LIST,
85
65
  style: { height: totalSize, margin: "8px 0px" }
86
- }, ItemRenderer))));
66
+ }, ItemRenderer)));
87
67
  };
88
68
  module.exports = __toCommonJS(MenuList_exports);
89
69
  //# sourceMappingURL=MenuList.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/autocomplete/parts/menu-list/MenuList.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import React, { useContext, useMemo, useCallback } from 'react';\nimport { DSCircularProgressIndicator } from '@elliemae/ds-circular-progress-indicator';\nimport { Grid } from '@elliemae/ds-grid';\n\nimport { StyledListWrapper, StyledList, StyledVirtualListWrapper } from './styled';\nimport { AutocompleteDataTestid } from '../../AutocompleteDataTestids';\nimport AutocompleteContext from '../../AutocompleteCTX';\nimport { useOnElementResize } from '../../utils/hooks/useOnElementResize';\nimport { useItemRenderer } from './useItemRenderer';\nimport { useMenuList } from './useMenuList';\n\nconst MenuList = (): JSX.Element => {\n const {\n props: { menuMinWidth, menuMaxHeight, options, isLoading },\n referenceElement,\n inputRef,\n listRef,\n showPopover,\n wrapperListRef,\n controlsWrapperRef,\n virtualListHelpers: { totalSize },\n } = useContext(AutocompleteContext);\n\n const ItemRenderer = useItemRenderer();\n useMenuList();\n const { width } = useOnElementResize(controlsWrapperRef);\n\n const listWidth = useMemo(\n () => (menuMinWidth as number) || `${referenceElement?.offsetWidth as number}`,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [menuMinWidth, referenceElement, width],\n );\n\n const handleOnFocus = useCallback(() => {\n inputRef.current?.focus();\n }, [inputRef]);\n\n return (\n <StyledListWrapper\n tabIndex={-1}\n ref={wrapperListRef}\n onMouseDown={(e) => e.preventDefault()}\n minWidth={listWidth}\n id=\"combo-listbox\"\n role=\"listbox\"\n >\n {isLoading && inputRef.current?.value !== '' ? (\n <Grid justifyContent=\"center\" alignItems=\"center\" style={{ padding: 20 }}>\n <DSCircularProgressIndicator size=\"l\" loading={isLoading} waiting={false} showTooltip={false} />\n </Grid>\n ) : (\n <>\n {options.length > 0 && (\n <StyledVirtualListWrapper tabIndex={-1} maxHeight={menuMaxHeight as number} ref={listRef}>\n <StyledList\n tabIndex={-1}\n aria-expanded={showPopover}\n onFocus={handleOnFocus}\n data-testid={AutocompleteDataTestid.LIST}\n style={{ height: totalSize, margin: '8px 0px' }}\n >\n {ItemRenderer}\n </StyledList>\n </StyledVirtualListWrapper>\n )}\n </>\n )}\n </StyledListWrapper>\n );\n};\n\nexport { MenuList };\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,mBAAwD;AACxD,4CAA4C;AAC5C,qBAAqB;AAErB,oBAAwE;AACxE,qCAAuC;AACvC,6BAAgC;AAChC,gCAAmC;AACnC,6BAAgC;AAChC,yBAA4B;AAE5B,MAAM,WAAW,MAAmB;AAClC,QAAM;AAAA,IACJ,OAAO,EAAE,cAAc,eAAe,SAAS;AAAA,IAC/C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,EAAE;AAAA,MACpB,6BAAW;AAEf,QAAM,eAAe;AACrB;AACA,QAAM,EAAE,UAAU,kDAAmB;AAErC,QAAM,YAAY,0BAChB,MAAO,gBAA2B,GAAG,kBAAkB,eAEvD,CAAC,cAAc,kBAAkB;AAGnC,QAAM,gBAAgB,8BAAY,MAAM;AACtC,aAAS,SAAS;AAAA,KACjB,CAAC;AAEJ,SACE,mDAAC,iCAAD;AAAA,IACE,UAAU;AAAA,IACV,KAAK;AAAA,IACL,aAAa,CAAC,MAAM,EAAE;AAAA,IACtB,UAAU;AAAA,IACV,IAAG;AAAA,IACH,MAAK;AAAA,KAEJ,aAAa,SAAS,SAAS,UAAU,KACxC,mDAAC,qBAAD;AAAA,IAAM,gBAAe;AAAA,IAAS,YAAW;AAAA,IAAS,OAAO,EAAE,SAAS;AAAA,KAClE,mDAAC,mEAAD;AAAA,IAA6B,MAAK;AAAA,IAAI,SAAS;AAAA,IAAW,SAAS;AAAA,IAAO,aAAa;AAAA,QAGzF,wFACG,QAAQ,SAAS,KAChB,mDAAC,wCAAD;AAAA,IAA0B,UAAU;AAAA,IAAI,WAAW;AAAA,IAAyB,KAAK;AAAA,KAC/E,mDAAC,0BAAD;AAAA,IACE,UAAU;AAAA,IACV,iBAAe;AAAA,IACf,SAAS;AAAA,IACT,eAAa,sDAAuB;AAAA,IACpC,OAAO,EAAE,QAAQ,WAAW,QAAQ;AAAA,KAEnC;AAAA;",
4
+ "sourcesContent": ["import React, { useContext, useCallback } from 'react';\nimport { StyledListWrapper, StyledList, StyledVirtualListWrapper } from './styled';\nimport { AutocompleteDataTestid } from '../../AutocompleteDataTestids';\nimport AutocompleteContext from '../../AutocompleteCTX';\nimport { useItemRenderer } from './useItemRenderer';\n\nexport const MenuList = (): JSX.Element => {\n const {\n props: { options },\n referenceElement,\n inputRef,\n listRef,\n showPopover,\n virtualListHelpers: { totalSize },\n } = useContext(AutocompleteContext);\n\n const ItemRenderer = useItemRenderer();\n\n const handleOnFocus = useCallback(() => {\n inputRef.current?.focus();\n }, [inputRef]);\n\n return (\n <StyledListWrapper\n tabIndex={-1}\n onMouseDown={(e) => e.preventDefault()}\n minWidth={referenceElement?.offsetWidth}\n id=\"autocomplete-listbox\"\n role=\"listbox\"\n >\n {options.length > 0 && (\n <StyledVirtualListWrapper tabIndex={-1} ref={listRef}>\n <StyledList\n tabIndex={-1}\n aria-expanded={showPopover}\n onFocus={handleOnFocus}\n data-testid={AutocompleteDataTestid.LIST}\n style={{ height: totalSize, margin: '8px 0px' }}\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;ACAA,YAAuB;ADAvB,mBAA+C;AAC/C,oBAAwE;AACxE,qCAAuC;AACvC,6BAAgC;AAChC,6BAAgC;AAEzB,MAAM,WAAW,MAAmB;AACzC,QAAM;AAAA,IACJ,OAAO,EAAE;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,oBAAoB,EAAE;AAAA,MACpB,6BAAW;AAEf,QAAM,eAAe;AAErB,QAAM,gBAAgB,8BAAY,MAAM;AACtC,aAAS,SAAS;AAAA,KACjB,CAAC;AAEJ,SACE,mDAAC,iCAAD;AAAA,IACE,UAAU;AAAA,IACV,aAAa,CAAC,MAAM,EAAE;AAAA,IACtB,UAAU,kBAAkB;AAAA,IAC5B,IAAG;AAAA,IACH,MAAK;AAAA,KAEJ,QAAQ,SAAS,KAChB,mDAAC,wCAAD;AAAA,IAA0B,UAAU;AAAA,IAAI,KAAK;AAAA,KAC3C,mDAAC,0BAAD;AAAA,IACE,UAAU;AAAA,IACV,iBAAe;AAAA,IACf,SAAS;AAAA,IACT,eAAa,sDAAuB;AAAA,IACpC,OAAO,EAAE,QAAQ,WAAW,QAAQ;AAAA,KAEnC;AAAA;",
6
6
  "names": []
7
7
  }
@@ -34,7 +34,7 @@ __export(styled_exports, {
34
34
  var React = __toESM(require("react"));
35
35
  var import_styled_components = __toESM(require("styled-components"));
36
36
  const StyledListWrapper = import_styled_components.default.div`
37
- min-width: ${(props) => props.inline ? "100%" : `${props.minWidth}px`};
37
+ min-width: ${({ minWidth }) => minWidth ? `${minWidth}px` : "100%"};
38
38
  `;
39
39
  const StyledList = import_styled_components.default.ul`
40
40
  position: relative;
@@ -42,9 +42,7 @@ const StyledList = import_styled_components.default.ul`
42
42
  `;
43
43
  const StyledVirtualListWrapper = import_styled_components.default.div`
44
44
  overflow-y: auto;
45
- margin-top: ${({ withHeader }) => withHeader ? "28px" : ""};
46
-
47
- max-height: ${({ maxHeight, inline }) => inline ? "" : `${!maxHeight ? "400" : maxHeight}px`};
45
+ max-height: ${({ maxHeight }) => `${!maxHeight ? "400" : maxHeight}px`};
48
46
  `;
49
47
  module.exports = __toCommonJS(styled_exports);
50
48
  //# sourceMappingURL=styled.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../../src/autocomplete/parts/menu-list/styled.tsx", "../../../../../../../scripts/build/transpile/react-shim.js"],
4
- "sourcesContent": ["import styled from 'styled-components';\n\nexport const StyledListWrapper = styled.div<{ inline: boolean | undefined; minWidth: string | number }>`\n min-width: ${(props) => (props.inline ? '100%' : `${props.minWidth}px`)};\n`;\n\nexport const StyledList = styled.ul`\n position: relative;\n padding: 0;\n`;\n\nexport const StyledVirtualListWrapper = styled.div<{\n inline: boolean | undefined;\n maxHeight: number;\n withHeader: boolean;\n}>`\n overflow-y: auto;\n margin-top: ${({ withHeader }) => (withHeader ? '28px' : '')};\n\n max-height: ${({ maxHeight, inline }) => (inline ? '' : `${!maxHeight ? '400' : maxHeight}px`)};\n`;\n", "import * as React from 'react';\nexport { React };\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ACAA,YAAuB;ADAvB,+BAAmB;AAEZ,MAAM,oBAAoB,iCAAO;AAAA,eACzB,CAAC,UAAW,MAAM,SAAS,SAAS,GAAG,MAAM;AAAA;AAGrD,MAAM,aAAa,iCAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,2BAA2B,iCAAO;AAAA;AAAA,gBAM/B,CAAC,EAAE,iBAAkB,aAAa,SAAS;AAAA;AAAA,gBAE3C,CAAC,EAAE,WAAW,aAAc,SAAS,KAAK,GAAG,CAAC,YAAY,QAAQ;AAAA;",
4
+ "sourcesContent": ["import styled from 'styled-components';\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 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;ACAA,YAAuB;ADAvB,+BAAmB;AAEZ,MAAM,oBAAoB,iCAAO;AAAA,eACzB,CAAC,EAAE,eAAgB,WAAW,GAAG,eAAe;AAAA;AAGxD,MAAM,aAAa,iCAAO;AAAA;AAAA;AAAA;AAK1B,MAAM,2BAA2B,iCAAO;AAAA;AAAA,gBAI/B,CAAC,EAAE,gBAAgB,GAAG,CAAC,YAAY,QAAQ;AAAA;",
6
6
  "names": []
7
7
  }