@elliemae/ds-controlled-form 2.4.1-rc.0 → 2.4.1-rc.12

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 (368) hide show
  1. package/cjs/autocomplete/Autocomplete.js +4 -5
  2. package/cjs/autocomplete/AutocompleteCTX.js +3 -14
  3. package/cjs/autocomplete/AutocompleteDataTestids.js +1 -7
  4. package/cjs/autocomplete/config/useAutocomplete.js +23 -10
  5. package/cjs/autocomplete/parts/container/Container.js +36 -20
  6. package/cjs/autocomplete/parts/container/styled.js +1 -5
  7. package/cjs/autocomplete/parts/{controls → container}/useKeyboardNavigation.js +8 -24
  8. package/cjs/autocomplete/parts/menu-list/MenuList.js +17 -50
  9. package/cjs/autocomplete/parts/menu-list/styled.js +9 -10
  10. package/cjs/autocomplete/parts/menu-list/useItemRenderer.js +38 -44
  11. package/cjs/autocomplete/react-desc-prop-types.js +4 -8
  12. package/cjs/autocomplete/utils/listHelper.js +8 -16
  13. package/cjs/checkbox/ControlledCheckbox.js +2 -1
  14. package/cjs/checkbox/react-desc-prop-types.js +2 -0
  15. package/cjs/combobox/ComboBox.js +1 -0
  16. package/cjs/combobox/config/useComboBox.js +8 -2
  17. package/cjs/combobox/config/useCorrectOptions.js +14 -42
  18. package/cjs/combobox/index.js +1 -0
  19. package/cjs/combobox/parts/A11yFocusedOption.js +3 -3
  20. package/cjs/combobox/parts/controls/Controls.js +4 -2
  21. package/cjs/combobox/parts/controls-input/ControlsInput.js +2 -0
  22. package/cjs/combobox/parts/controls-input/styled.js +1 -1
  23. package/cjs/combobox/parts/controls-input/useControlsInput.js +6 -6
  24. package/cjs/combobox/parts/controls-input/useKeyboardNavigation.js +30 -26
  25. package/cjs/combobox/parts/controls-input/useMaskedOnChange.js +7 -5
  26. package/cjs/combobox/parts/dropdown-indicator/DropdownIndicator.js +6 -4
  27. package/cjs/combobox/parts/header-list/useHeaderListHandlers.js +4 -4
  28. package/cjs/combobox/parts/menu-list/MenuList.js +13 -7
  29. package/cjs/combobox/parts/menu-list/styled.js +16 -5
  30. package/cjs/combobox/parts/menu-list/useItemRenderer.js +8 -8
  31. package/cjs/combobox/parts/menu-list/useMenuListSetFocusOption.js +6 -6
  32. package/cjs/combobox/react-desc-prop-types.js +2 -1
  33. package/cjs/combobox/utils/listHelper.js +40 -11
  34. package/cjs/date-time-picker/ControlledDateTimePickerCTX.js +1 -114
  35. package/cjs/date-time-picker/ControlledDateTimePickerDatatestid.js +0 -2
  36. package/cjs/date-time-picker/config/useChangeHandlers.js +264 -0
  37. package/cjs/date-time-picker/config/useControlledDateTimePicker.js +37 -420
  38. package/cjs/date-time-picker/config/useGetDestructuredValues.js +25 -68
  39. package/cjs/date-time-picker/config/useGetFlags.js +173 -0
  40. package/cjs/date-time-picker/config/useGetPropsBasedOnType.js +101 -0
  41. package/cjs/date-time-picker/config/useGetPropsWithDefault.js +2 -3
  42. package/cjs/date-time-picker/config/useGetReferences.js +86 -0
  43. package/cjs/date-time-picker/config/useGlobalKeyHandlers.js +106 -0
  44. package/cjs/date-time-picker/config/useRelevantValueFromProps.js +39 -0
  45. package/cjs/date-time-picker/config/useValidateProps.js +47 -42
  46. package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +20 -8
  47. package/cjs/date-time-picker/parts/ControlledDateTimePickerContent.js +14 -12
  48. package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +5 -5
  49. package/cjs/date-time-picker/parts/Pickers/Calendar/Calendar.js +11 -13
  50. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -1
  51. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarContext.js +1 -49
  52. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
  53. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +10 -7
  54. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +8 -4
  55. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +5 -2
  56. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -2
  57. package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +18 -18
  58. package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +24 -122
  59. package/cjs/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +32 -4
  60. package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +10 -6
  61. package/cjs/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +30 -14
  62. package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +7 -4
  63. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +7 -3
  64. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -16
  65. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +0 -1
  66. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +10 -10
  67. package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +18 -13
  68. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +60 -33
  69. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -13
  70. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +11 -13
  71. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -2
  72. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +1 -65
  73. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -3
  74. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -2
  75. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +18 -116
  76. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +52 -94
  77. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +4 -1
  78. package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -1
  79. package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +1 -3
  80. package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +1 -1
  81. package/cjs/date-time-picker/parts/TimeInputs/TimeInputs.js +3 -7
  82. package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +3 -6
  83. package/cjs/date-time-picker/propTypes.js +56 -23
  84. package/cjs/{autocomplete/index.d.js → date-time-picker/sharedTypes.js} +0 -0
  85. package/cjs/date-time-picker/utils/dateHelpers.js +56 -56
  86. package/cjs/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +2 -5
  87. package/cjs/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +50 -47
  88. package/cjs/date-time-picker/utils/hooks/useOnClickOutside.js +1 -2
  89. package/cjs/date-time-picker/utils/stringHelpers.js +8 -14
  90. package/cjs/date-time-picker/utils/typeGuards.js +14 -0
  91. package/cjs/index.js +20 -3
  92. package/cjs/large-text-input/DSControlledLargeTextInput.js +83 -0
  93. package/cjs/large-text-input/exported-related/data-test-ids.js +11 -0
  94. package/cjs/large-text-input/exported-related/index.js +12 -0
  95. package/cjs/large-text-input/exported-related/theming.js +13 -0
  96. package/cjs/large-text-input/index.js +15 -0
  97. package/cjs/large-text-input/react-desc-prop-types.js +45 -0
  98. package/cjs/large-text-input/styles.js +40 -0
  99. package/cjs/mask-hook/hooks/index.js +11 -3
  100. package/cjs/mask-hook/hooks/useNumberMask.js +7 -0
  101. package/cjs/mask-hook/hooks/usePhoneMask.js +7 -0
  102. package/cjs/mask-hook/hooks/useRegExpMask.js +122 -0
  103. package/cjs/mask-hook/hooks/useSSNMask.js +7 -0
  104. package/cjs/mask-hook/hooks/{useZipCode.js → useZipCodeMask.js} +12 -5
  105. package/cjs/mask-hook/index.js +11 -3
  106. package/cjs/mask-hook/react-desc-prop-types.js +9 -0
  107. package/cjs/mask-hook/utils/addSpecialCharacters.js +3 -4
  108. package/cjs/mask-hook/utils/flatStringArray.js +18 -0
  109. package/cjs/mask-hook/utils/index.js +2 -0
  110. package/esm/autocomplete/Autocomplete.js +2 -3
  111. package/esm/autocomplete/AutocompleteCTX.js +3 -14
  112. package/esm/autocomplete/AutocompleteDataTestids.js +1 -7
  113. package/esm/autocomplete/config/useAutocomplete.js +27 -14
  114. package/esm/autocomplete/parts/container/Container.js +38 -23
  115. package/esm/autocomplete/parts/container/styled.js +2 -5
  116. package/esm/autocomplete/parts/{controls → container}/useKeyboardNavigation.js +8 -24
  117. package/esm/autocomplete/parts/menu-list/MenuList.js +19 -52
  118. package/esm/autocomplete/parts/menu-list/styled.js +9 -10
  119. package/esm/autocomplete/parts/menu-list/useItemRenderer.js +39 -45
  120. package/esm/autocomplete/react-desc-prop-types.js +5 -8
  121. package/esm/autocomplete/utils/listHelper.js +8 -16
  122. package/esm/checkbox/ControlledCheckbox.js +2 -1
  123. package/esm/checkbox/react-desc-prop-types.js +2 -0
  124. package/esm/combobox/ComboBox.js +1 -1
  125. package/esm/combobox/config/useComboBox.js +8 -2
  126. package/esm/combobox/config/useCorrectOptions.js +15 -43
  127. package/esm/combobox/index.js +1 -1
  128. package/esm/combobox/parts/A11yFocusedOption.js +3 -3
  129. package/esm/combobox/parts/controls/Controls.js +4 -2
  130. package/esm/combobox/parts/controls-input/ControlsInput.js +2 -0
  131. package/esm/combobox/parts/controls-input/styled.js +1 -1
  132. package/esm/combobox/parts/controls-input/useControlsInput.js +6 -6
  133. package/esm/combobox/parts/controls-input/useKeyboardNavigation.js +30 -26
  134. package/esm/combobox/parts/controls-input/useMaskedOnChange.js +7 -5
  135. package/esm/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
  136. package/esm/combobox/parts/header-list/useHeaderListHandlers.js +4 -4
  137. package/esm/combobox/parts/menu-list/MenuList.js +13 -7
  138. package/esm/combobox/parts/menu-list/styled.js +16 -5
  139. package/esm/combobox/parts/menu-list/useItemRenderer.js +8 -8
  140. package/esm/combobox/parts/menu-list/useMenuListSetFocusOption.js +6 -6
  141. package/esm/combobox/react-desc-prop-types.js +2 -1
  142. package/esm/combobox/utils/listHelper.js +38 -12
  143. package/esm/date-time-picker/ControlledDateTimePickerCTX.js +3 -115
  144. package/esm/date-time-picker/ControlledDateTimePickerDatatestid.js +0 -2
  145. package/esm/date-time-picker/config/useChangeHandlers.js +256 -0
  146. package/esm/date-time-picker/config/useControlledDateTimePicker.js +38 -421
  147. package/esm/date-time-picker/config/useGetDestructuredValues.js +21 -68
  148. package/esm/date-time-picker/config/useGetFlags.js +165 -0
  149. package/esm/date-time-picker/config/useGetPropsBasedOnType.js +97 -0
  150. package/esm/date-time-picker/config/useGetPropsWithDefault.js +1 -2
  151. package/esm/date-time-picker/config/useGetReferences.js +82 -0
  152. package/esm/date-time-picker/config/useGlobalKeyHandlers.js +98 -0
  153. package/esm/date-time-picker/config/useRelevantValueFromProps.js +35 -0
  154. package/esm/date-time-picker/config/useValidateProps.js +47 -42
  155. package/esm/date-time-picker/parts/ClearButton/ClearButton.js +20 -9
  156. package/esm/date-time-picker/parts/ControlledDateTimePickerContent.js +14 -12
  157. package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +5 -5
  158. package/esm/date-time-picker/parts/Pickers/Calendar/Calendar.js +11 -13
  159. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarContent.js +4 -1
  160. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarContext.js +2 -50
  161. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
  162. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +10 -7
  163. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +9 -5
  164. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarMonthDays.js +5 -2
  165. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarWrapper.js +5 -2
  166. package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +18 -18
  167. package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +23 -125
  168. package/esm/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +33 -5
  169. package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +10 -6
  170. package/esm/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.js +30 -14
  171. package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +7 -4
  172. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheel.js +9 -5
  173. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.js +1 -16
  174. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -2
  175. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +10 -10
  176. package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +18 -13
  177. package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +59 -33
  178. package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +18 -13
  179. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.js +11 -13
  180. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +5 -2
  181. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.js +2 -66
  182. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +8 -3
  183. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelWrapper.js +5 -2
  184. package/esm/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.js +15 -117
  185. package/esm/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +54 -96
  186. package/esm/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.js +4 -1
  187. package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +1 -1
  188. package/esm/date-time-picker/parts/TimeInputs/HHInput.js +1 -3
  189. package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +1 -1
  190. package/esm/date-time-picker/parts/TimeInputs/TimeInputs.js +3 -7
  191. package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +3 -6
  192. package/esm/date-time-picker/propTypes.js +49 -17
  193. package/esm/{autocomplete/index.d.js → date-time-picker/sharedTypes.js} +0 -0
  194. package/esm/date-time-picker/utils/dateHelpers.js +57 -57
  195. package/esm/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.js +2 -5
  196. package/esm/date-time-picker/utils/hooks/useGetStartingFocusedDay.js +46 -47
  197. package/esm/date-time-picker/utils/hooks/useOnClickOutside.js +1 -2
  198. package/esm/date-time-picker/utils/stringHelpers.js +8 -14
  199. package/esm/date-time-picker/utils/typeGuards.js +8 -0
  200. package/esm/index.js +9 -5
  201. package/esm/large-text-input/DSControlledLargeTextInput.js +72 -0
  202. package/esm/large-text-input/exported-related/data-test-ids.js +7 -0
  203. package/esm/large-text-input/exported-related/index.js +2 -0
  204. package/esm/large-text-input/exported-related/theming.js +8 -0
  205. package/esm/large-text-input/index.js +3 -0
  206. package/esm/large-text-input/react-desc-prop-types.js +36 -0
  207. package/esm/large-text-input/styles.js +30 -0
  208. package/esm/mask-hook/hooks/index.js +5 -4
  209. package/esm/mask-hook/hooks/useNumberMask.js +7 -1
  210. package/esm/mask-hook/hooks/usePhoneMask.js +7 -1
  211. package/esm/mask-hook/hooks/useRegExpMask.js +116 -0
  212. package/esm/mask-hook/hooks/useSSNMask.js +7 -1
  213. package/esm/mask-hook/hooks/{useZipCode.js → useZipCodeMask.js} +11 -5
  214. package/esm/mask-hook/index.js +5 -4
  215. package/esm/mask-hook/react-desc-prop-types.js +8 -1
  216. package/esm/mask-hook/utils/addSpecialCharacters.js +3 -4
  217. package/esm/mask-hook/utils/flatStringArray.js +14 -0
  218. package/esm/mask-hook/utils/index.js +1 -0
  219. package/package.json +92 -88
  220. package/types/autocomplete/Autocomplete.d.ts +4 -61
  221. package/types/autocomplete/AutocompleteCTX.d.ts +4 -3
  222. package/types/autocomplete/AutocompleteDataTestids.d.ts +1 -7
  223. package/types/autocomplete/config/useAutocomplete.d.ts +3 -2
  224. package/types/autocomplete/parts/container/Container.d.ts +1 -2
  225. package/types/autocomplete/parts/container/styled.d.ts +0 -1
  226. package/types/autocomplete/parts/{controls → container}/useKeyboardNavigation.d.ts +0 -0
  227. package/types/autocomplete/parts/menu-list/MenuList.d.ts +1 -2
  228. package/types/autocomplete/parts/menu-list/styled.d.ts +1 -4
  229. package/types/autocomplete/parts/menu-list/useItemRenderer.d.ts +2 -3
  230. package/types/autocomplete/react-desc-prop-types.d.ts +8 -18
  231. package/types/autocomplete/sharedTypes.d.ts +1 -3
  232. package/types/autocomplete/tests/general.test.d.ts +1 -0
  233. package/types/autocomplete/tests/utils.d.ts +5 -0
  234. package/types/autocomplete/utils/listHelper.d.ts +2 -2
  235. package/types/checkbox/ControlledCheckbox.d.ts +1 -1
  236. package/types/checkbox/react-desc-prop-types.d.ts +367 -1
  237. package/types/combobox/ComboBox.d.ts +2 -2
  238. package/types/combobox/parts/dropdown-indicator/DropdownIndicator.d.ts +1 -0
  239. package/types/combobox/react-desc-prop-types.d.ts +381 -3
  240. package/types/combobox/utils/listHelper.d.ts +4 -1
  241. package/types/date-time-picker/ControlledDateTimePicker.d.ts +25 -80
  242. package/types/date-time-picker/ControlledDateTimePickerCTX.d.ts +1 -2
  243. package/types/date-time-picker/ControlledDateTimePickerDatatestid.d.ts +46 -46
  244. package/types/date-time-picker/ControlledDateTimePickerTypes.d.ts +15 -15
  245. package/types/date-time-picker/config/useChangeHandlers.d.ts +25 -0
  246. package/types/date-time-picker/config/useControlledDateTimePicker.d.ts +18 -2
  247. package/types/date-time-picker/config/useGetDestructuredValues.d.ts +30 -4
  248. package/types/date-time-picker/config/useGetFlags.d.ts +27 -0
  249. package/types/date-time-picker/config/useGetPropsBasedOnType.d.ts +28 -0
  250. package/types/date-time-picker/config/useGetPropsWithDefault.d.ts +2 -2
  251. package/types/date-time-picker/config/useGetReferences.d.ts +39 -0
  252. package/types/date-time-picker/config/useGlobalKeyHandlers.d.ts +16 -0
  253. package/types/date-time-picker/config/useRelevantValueFromProps.d.ts +10 -0
  254. package/types/date-time-picker/config/useValidateProps.d.ts +2 -2
  255. package/types/date-time-picker/parts/ClearButton/useClearButton.d.ts +6 -6
  256. package/types/date-time-picker/parts/DateInputs/DDInput.d.ts +6 -6
  257. package/types/date-time-picker/parts/DateInputs/MMInput.d.ts +6 -6
  258. package/types/date-time-picker/parts/DateInputs/YYYYInput.d.ts +6 -6
  259. package/types/date-time-picker/parts/DateInputs/useDateInputs.d.ts +2 -2
  260. package/types/date-time-picker/parts/Pickers/Calendar/Calendar.d.ts +4 -2
  261. package/types/date-time-picker/parts/Pickers/Calendar/CalendarContext.d.ts +3 -63
  262. package/types/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.d.ts +4 -4
  263. package/types/date-time-picker/parts/Pickers/Calendar/CalendarFooter.d.ts +2 -2
  264. package/types/date-time-picker/parts/Pickers/Calendar/Day.d.ts +2 -2
  265. package/types/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.d.ts +15 -2
  266. package/types/date-time-picker/parts/Pickers/Calendar/useFocusLogic.d.ts +12 -5
  267. package/types/date-time-picker/parts/Pickers/Calendar/useKeyboardHandlers.d.ts +17 -11
  268. package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelContext.d.ts +1 -16
  269. package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelFooter.d.ts +2 -2
  270. package/types/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.d.ts +15 -1
  271. package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheel.d.ts +4 -2
  272. package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContext.d.ts +3 -62
  273. package/types/date-time-picker/parts/Pickers/TimeWheel/TimeWheelFooter.d.ts +2 -2
  274. package/types/date-time-picker/parts/Pickers/TimeWheel/useConfigTimePickerCTX.d.ts +4 -1
  275. package/types/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.d.ts +16 -5
  276. package/types/date-time-picker/parts/Pickers/TimeWheel/useKeyboardHandlers.d.ts +18 -3
  277. package/types/date-time-picker/parts/TimeInputs/HHInput.d.ts +6 -6
  278. package/types/date-time-picker/parts/TimeInputs/MeridiemInput.d.ts +6 -6
  279. package/types/date-time-picker/parts/TimeInputs/MinutesInput.d.ts +6 -6
  280. package/types/date-time-picker/parts/TimeInputs/useTimeInputs.d.ts +22 -2
  281. package/types/date-time-picker/parts/config.d.ts +3 -3
  282. package/types/date-time-picker/sharedTypes.d.ts +94 -0
  283. package/types/date-time-picker/utils/constants.d.ts +33 -33
  284. package/types/date-time-picker/utils/dateHelpers.d.ts +15 -14
  285. package/types/date-time-picker/utils/dateTimeHelpers.d.ts +3 -3
  286. package/types/date-time-picker/utils/hooks/useGetDayFromDateString.d.ts +1 -1
  287. package/types/date-time-picker/utils/hooks/useGetMonthYearFromDateStringOrEmptyStartingMonth.d.ts +2 -2
  288. package/types/date-time-picker/utils/hooks/useGetStartingFocusedDay.d.ts +6 -6
  289. package/types/date-time-picker/utils/hooks/useOnClickOutside.d.ts +1 -1
  290. package/types/date-time-picker/utils/timeHelpers.d.ts +2 -2
  291. package/types/date-time-picker/utils/typeGuards.d.ts +4 -0
  292. package/types/index.d.ts +1 -0
  293. package/types/large-text-input/DSControlledLargeTextInput.d.ts +5 -0
  294. package/types/large-text-input/exported-related/data-test-ids.d.ts +5 -0
  295. package/types/large-text-input/exported-related/index.d.ts +2 -0
  296. package/types/large-text-input/exported-related/theming.d.ts +6 -0
  297. package/types/large-text-input/index.d.ts +2 -0
  298. package/types/large-text-input/react-desc-prop-types.d.ts +447 -0
  299. package/types/large-text-input/styles.d.ts +3 -0
  300. package/types/large-text-input/tests/DSControlledLargeTextInput.test.d.ts +1 -0
  301. package/types/mask-hook/hooks/index.d.ts +2 -1
  302. package/types/mask-hook/hooks/useNumberMask.d.ts +2 -1
  303. package/types/mask-hook/hooks/usePhoneMask.d.ts +2 -1
  304. package/types/mask-hook/hooks/useRegExpMask.d.ts +4 -0
  305. package/types/mask-hook/hooks/useSSNMask.d.ts +2 -1
  306. package/types/mask-hook/hooks/useZipCodeMask.d.ts +4 -0
  307. package/types/mask-hook/react-desc-prop-types.d.ts +6 -1
  308. package/types/mask-hook/tests/useRegExpMask.test.d.ts +1 -0
  309. package/types/mask-hook/utils/flatStringArray.d.ts +1 -0
  310. package/types/mask-hook/utils/index.d.ts +1 -0
  311. package/types/text-input/DSInputText.d.ts +1 -1
  312. package/types/text-input/config/useInputText.d.ts +110 -110
  313. package/cjs/autocomplete/config/constants.js +0 -14
  314. package/cjs/autocomplete/config/useGetPropsWithDefault.js +0 -11
  315. package/cjs/autocomplete/parts/a11y-messages/MultiAllyMessages.js +0 -33
  316. package/cjs/autocomplete/parts/a11y-messages/SingleAllyMessages.js +0 -28
  317. package/cjs/autocomplete/parts/a11y-messages/index.js +0 -11
  318. package/cjs/autocomplete/parts/a11y-messages/styled.js +0 -15
  319. package/cjs/autocomplete/parts/controls/Controls.js +0 -63
  320. package/cjs/autocomplete/parts/controls/index.js +0 -9
  321. package/cjs/autocomplete/parts/controls/styled.js +0 -44
  322. package/cjs/autocomplete/parts/controls/useControlsInput.js +0 -44
  323. package/cjs/autocomplete/parts/controls/useMaskedOnChange.js +0 -28
  324. package/cjs/autocomplete/parts/menu-list/useMenuList.js +0 -69
  325. package/cjs/autocomplete/propTypes.js +0 -25
  326. package/cjs/autocomplete/utils/hooks/useKeyboardNavigation.js +0 -97
  327. package/cjs/autocomplete/utils/hooks/useOnElementResize.js +0 -37
  328. package/cjs/text-input/exported-related/name.js +0 -7
  329. package/cjs/text-input/exported-related/slots.js +0 -11
  330. package/esm/autocomplete/config/constants.js +0 -10
  331. package/esm/autocomplete/config/useGetPropsWithDefault.js +0 -7
  332. package/esm/autocomplete/parts/a11y-messages/MultiAllyMessages.js +0 -25
  333. package/esm/autocomplete/parts/a11y-messages/SingleAllyMessages.js +0 -20
  334. package/esm/autocomplete/parts/a11y-messages/index.js +0 -2
  335. package/esm/autocomplete/parts/a11y-messages/styled.js +0 -7
  336. package/esm/autocomplete/parts/controls/Controls.js +0 -55
  337. package/esm/autocomplete/parts/controls/index.js +0 -1
  338. package/esm/autocomplete/parts/controls/styled.js +0 -32
  339. package/esm/autocomplete/parts/controls/useControlsInput.js +0 -40
  340. package/esm/autocomplete/parts/controls/useMaskedOnChange.js +0 -24
  341. package/esm/autocomplete/parts/menu-list/useMenuList.js +0 -65
  342. package/esm/autocomplete/propTypes.js +0 -21
  343. package/esm/autocomplete/utils/hooks/useKeyboardNavigation.js +0 -93
  344. package/esm/autocomplete/utils/hooks/useOnElementResize.js +0 -33
  345. package/esm/text-input/exported-related/name.js +0 -3
  346. package/esm/text-input/exported-related/slots.js +0 -7
  347. package/types/autocomplete/config/constants.d.ts +0 -8
  348. package/types/autocomplete/config/useGetPropsWithDefault.d.ts +0 -2
  349. package/types/autocomplete/parts/a11y-messages/MultiAllyMessages.d.ts +0 -3
  350. package/types/autocomplete/parts/a11y-messages/SingleAllyMessages.d.ts +0 -3
  351. package/types/autocomplete/parts/a11y-messages/index.d.ts +0 -2
  352. package/types/autocomplete/parts/a11y-messages/styled.d.ts +0 -1
  353. package/types/autocomplete/parts/controls/Controls.d.ts +0 -3
  354. package/types/autocomplete/parts/controls/index.d.ts +0 -1
  355. package/types/autocomplete/parts/controls/styled.d.ts +0 -8
  356. package/types/autocomplete/parts/controls/useControlsInput.d.ts +0 -9
  357. package/types/autocomplete/parts/controls/useMaskedOnChange.d.ts +0 -2
  358. package/types/autocomplete/parts/menu-list/useMenuList.d.ts +0 -2
  359. package/types/autocomplete/propTypes.d.ts +0 -51
  360. package/types/autocomplete/utils/hooks/useKeyboardNavigation.d.ts +0 -4
  361. package/types/autocomplete/utils/hooks/useOnElementResize.d.ts +0 -3
  362. package/types/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.d.ts +0 -2
  363. package/types/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.d.ts +0 -12
  364. package/types/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.d.ts +0 -2
  365. package/types/date-time-picker/propTypes.d.ts +0 -81
  366. package/types/mask-hook/hooks/useZipCode.d.ts +0 -3
  367. package/types/text-input/exported-related/name.d.ts +0 -1
  368. package/types/text-input/exported-related/slots.d.ts +0 -5
@@ -4,12 +4,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
6
  require('react');
7
- var reactDesc = require('react-desc');
8
7
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
9
8
  var useAutocomplete = require('./config/useAutocomplete.js');
10
9
  var Container = require('./parts/container/Container.js');
11
- var propTypes = require('./propTypes.js');
12
10
  var AutocompleteCTX = require('./AutocompleteCTX.js');
11
+ var reactDescPropTypes = require('./react-desc-prop-types.js');
13
12
 
14
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
14
 
@@ -19,15 +18,15 @@ var _Container;
19
18
 
20
19
  const DSAutocomplete = props => {
21
20
  const propsWithDefault = dsPropsHelpers.useMemoMergePropsWithDefault(props, AutocompleteCTX.defaultProps);
22
- dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, propTypes.propTypes);
21
+ dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, reactDescPropTypes.propTypes);
23
22
  const ctx = useAutocomplete.useAutocomplete(props);
24
23
  return /*#__PURE__*/_jsx__default["default"](AutocompleteCTX.AutocompleteContext.Provider, {
25
24
  value: ctx
26
25
  }, void 0, _Container || (_Container = /*#__PURE__*/_jsx__default["default"](Container.Container, {})));
27
26
  };
28
27
 
29
- const DSAutocompleteWithSchema = reactDesc.describe(DSAutocomplete);
30
- DSAutocompleteWithSchema.propTypes = propTypes.propTypes;
28
+ const DSAutocompleteWithSchema = dsPropsHelpers.describe(DSAutocomplete);
29
+ DSAutocompleteWithSchema.propTypes = reactDescPropTypes.propTypes;
31
30
 
32
31
  exports.DSAutocomplete = DSAutocomplete;
33
32
  exports.DSAutocompleteWithSchema = DSAutocompleteWithSchema;
@@ -7,18 +7,10 @@ var lodash = require('lodash');
7
7
 
8
8
  // eslint-disable-next-line @typescript-eslint/no-empty-function
9
9
  const defaultProps = {
10
- placeholder: '',
11
- options: [],
12
- selectedValues: '',
13
- hasError: false,
14
- isLoading: false,
15
- autoFocus: false,
10
+ zIndex: 10,
11
+ withoutPortal: false,
16
12
  startPlacementPreference: 'bottom-start',
17
- placementOrderPreference: ['bottom-start', 'bottom-end'],
18
- onChange: lodash.noop,
19
- onKeyDown: lodash.noop,
20
- onFilter: lodash.noop,
21
- onMenuOpen: lodash.noop
13
+ placementOrderPreference: ['bottom-start', 'bottom-end']
22
14
  };
23
15
  const defaultContext = {
24
16
  props: defaultProps,
@@ -29,9 +21,6 @@ const defaultContext = {
29
21
  setReferenceElement: lodash.noop,
30
22
  inputRef: /*#__PURE__*/React.createRef(),
31
23
  listRef: /*#__PURE__*/React.createRef(),
32
- wrapperListRef: /*#__PURE__*/React.createRef(),
33
- controlsWrapperRef: /*#__PURE__*/React.createRef(),
34
- selectedOptionsRef: /*#__PURE__*/React.createRef(),
35
24
  focusOptionIdx: '',
36
25
  setCurrentOption: lodash.noop
37
26
  };
@@ -3,15 +3,9 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const AutocompleteDataTestid = {
6
- INPUT: 'autocomplete-input',
7
6
  LIST: 'autocomplete-menu-list',
8
- SELECTED_VALUES: 'autocomplete-selected-values',
9
- SELECT_ALL_BUTTON: 'autocomplete-all-btn',
10
- CLEAR_ALL_BUTTON: 'autocomplete-clear-btn',
11
- DROPDOWN: 'autocomplete-dropdown-btn',
12
7
  OPTION: 'autocomplete-option',
13
- SHOW_ALL_BUTTON: 'autocomplete-show-all-btn',
14
- SHOW_SELECTED_OPTIONS_BUTTON: 'autocomplete-selected-options-btn'
8
+ CONTAINER: 'autocomplete-container'
15
9
  };
16
10
 
17
11
  exports.AutocompleteDataTestid = AutocompleteDataTestid;
@@ -10,8 +10,11 @@ require('core-js/modules/esnext.iterator.filter.js');
10
10
  require('core-js/modules/esnext.async-iterator.for-each.js');
11
11
  require('core-js/modules/esnext.iterator.for-each.js');
12
12
  var React = require('react');
13
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
13
14
  var reactVirtual = require('react-virtual');
14
- var useGetPropsWithDefault = require('./useGetPropsWithDefault.js');
15
+ var reactDescPropTypes = require('../react-desc-prop-types.js');
16
+ var AutocompleteCTX = require('../AutocompleteCTX.js');
17
+ var listHelper = require('../utils/listHelper.js');
15
18
 
16
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
20
 
@@ -21,18 +24,22 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
21
24
 
22
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
23
26
  const useAutocomplete = props => {
27
+ const defaultPropsWithInnerRef = _objectSpread(_objectSpread({}, AutocompleteCTX.defaultProps), {}, {
28
+ innerRef: React.useRef(null)
29
+ });
30
+
31
+ const propsWithDefault = dsPropsHelpers.useMemoMergePropsWithDefault(props, defaultPropsWithInnerRef);
32
+ dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, reactDescPropTypes.propTypes);
24
33
  const [showPopover, setShowPopover] = React.useState(false);
25
34
  const [referenceElement, setReferenceElement] = React.useState(null);
26
35
  const [focusOptionIdx, setCurrentOption] = React.useState('');
27
36
  const inputRef = React.useRef(null);
28
37
  const listRef = React.useRef(null);
29
- const wrapperListRef = React.useRef(null);
30
38
  const selectedOptionsRef = React.useRef(null);
31
- const controlsWrapperRef = React.useRef(null);
32
- const propsWithDefaults = useGetPropsWithDefault.useGetAutocompleteWithDefaultsProps(props);
33
39
  const {
34
- options
35
- } = propsWithDefaults; // ===========================================================================
40
+ options,
41
+ filter
42
+ } = propsWithDefault; // ===========================================================================
36
43
  // Virtualization setup
37
44
  // ===========================================================================
38
45
 
@@ -51,8 +58,16 @@ const useAutocomplete = props => {
51
58
  };
52
59
  virtualListHelpers.scrollToIndex(options.findIndex(opt => opt.dsId === dsId), opts);
53
60
  }, [options, virtualListHelpers]);
61
+ React.useEffect(() => {
62
+ if (filter.length === 0 || options.length === 0) {
63
+ setShowPopover(false);
64
+ }
65
+ }, [filter, options.length, setShowPopover]);
66
+ React.useEffect(() => {
67
+ setCurrentOption(listHelper.getFirstOption(options));
68
+ }, [options, showPopover]);
54
69
  const ctx = React.useMemo(() => ({
55
- props: _objectSpread({}, propsWithDefaults),
70
+ props: _objectSpread({}, propsWithDefault),
56
71
  virtualListHelpers,
57
72
  showPopover,
58
73
  referenceElement,
@@ -60,13 +75,11 @@ const useAutocomplete = props => {
60
75
  listRef,
61
76
  focusOptionIdx,
62
77
  selectedOptionsRef,
63
- controlsWrapperRef,
64
- wrapperListRef,
65
78
  setCurrentOption,
66
79
  scrollOptionIntoView,
67
80
  setReferenceElement,
68
81
  setShowPopover
69
- }), [scrollOptionIntoView, propsWithDefaults, virtualListHelpers, focusOptionIdx, wrapperListRef, showPopover, referenceElement, inputRef, selectedOptionsRef, controlsWrapperRef, listRef]);
82
+ }), [scrollOptionIntoView, propsWithDefault, virtualListHelpers, focusOptionIdx, showPopover, referenceElement, inputRef, selectedOptionsRef, listRef]);
70
83
  return ctx;
71
84
  };
72
85
 
@@ -3,46 +3,63 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('core-js/modules/esnext.async-iterator.filter.js');
7
+ require('core-js/modules/esnext.iterator.constructor.js');
8
+ require('core-js/modules/esnext.iterator.filter.js');
6
9
  var React = require('react');
7
10
  var dsPopperjs = require('@elliemae/ds-popperjs');
8
11
  var AutocompleteCTX = require('../../AutocompleteCTX.js');
9
12
  var styled = require('./styled.js');
10
- var Controls = require('../controls/Controls.js');
11
13
  var MenuList = require('../menu-list/MenuList.js');
14
+ var useKeyboardNavigation = require('./useKeyboardNavigation.js');
15
+ var AutocompleteDataTestids = require('../../AutocompleteDataTestids.js');
12
16
  var jsxRuntime = require('react/jsx-runtime');
13
17
 
14
18
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
19
 
16
20
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
21
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
17
22
 
18
- var _Controls, _MenuList, _MenuList2;
19
-
23
+ var _StyledPopperWrapper;
20
24
  const Container = () => {
21
25
  const {
22
26
  props: {
23
- inline,
24
27
  startPlacementPreference,
28
+ children,
29
+ filter,
25
30
  placementOrderPreference
26
31
  },
27
32
  showPopover,
28
- inputRef,
29
33
  setReferenceElement,
30
34
  setShowPopover,
31
35
  referenceElement
32
36
  } = React.useContext(AutocompleteCTX.AutocompleteContext);
37
+ React.useEffect(() => {
38
+ const closePopper = () => {
39
+ setShowPopover(false);
40
+ };
41
+
42
+ window.addEventListener('blur', closePopper);
43
+ return () => {
44
+ window.removeEventListener('blur', closePopper);
45
+ };
46
+ }, [setShowPopover]);
33
47
  const handleCloseMenu = React.useCallback(() => {
34
48
  setShowPopover(false);
35
- if (inputRef.current) inputRef.current.blur();
36
- }, [inputRef, setShowPopover]);
37
- const handleMouseDown = React.useCallback(e => {
38
- e.preventDefault();
39
- }, []);
40
- const StyledContainer = inline ? styled.StyledContainerInline : styled.StyledContainerWithPopper;
41
- return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
42
- children: [/*#__PURE__*/jsxRuntime.jsxs(StyledContainer, {
43
- ref: setReferenceElement,
44
- children: [_Controls || (_Controls = /*#__PURE__*/_jsx__default["default"](Controls.Controls, {})), inline ? _MenuList || (_MenuList = /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {})) : null]
45
- }), /*#__PURE__*/_jsx__default["default"](dsPopperjs.DSPopperJS, {
49
+ }, [setShowPopover]);
50
+ const input = React__default["default"].Children.only(children);
51
+ const {
52
+ onInputKeyDown
53
+ } = useKeyboardNavigation.useKeyboardNavigation();
54
+ return /*#__PURE__*/jsxRuntime.jsxs(styled.StyledContainerWithPopper, {
55
+ ref: setReferenceElement,
56
+ role: "combobox",
57
+ "aria-autocomplete": "list",
58
+ "aria-controls": "autocomplete-listbox",
59
+ "aria-expanded": showPopover,
60
+ onKeyDown: onInputKeyDown,
61
+ "data-testid": AutocompleteDataTestids.AutocompleteDataTestid.CONTAINER,
62
+ children: [input, filter && /*#__PURE__*/_jsx__default["default"](dsPopperjs.DSPopperJS, {
46
63
  customOffset: [0, 5],
47
64
  closeContextMenu: handleCloseMenu,
48
65
  referenceElement: referenceElement,
@@ -53,10 +70,9 @@ const Container = () => {
53
70
  withoutArrow: true,
54
71
  withoutAnimation: true,
55
72
  zIndex: 10
56
- }, void 0, /*#__PURE__*/_jsx__default["default"](styled.StyledPopperWrapper, {
57
- tabIndex: -1,
58
- onMouseDown: handleMouseDown
59
- }, void 0, _MenuList2 || (_MenuList2 = /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {}))))]
73
+ }, void 0, _StyledPopperWrapper || (_StyledPopperWrapper = /*#__PURE__*/_jsx__default["default"](styled.StyledPopperWrapper, {
74
+ tabIndex: -1
75
+ }, void 0, /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {}))))]
60
76
  });
61
77
  };
62
78
 
@@ -11,13 +11,9 @@ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
11
11
  const StyledContainerWithPopper = /*#__PURE__*/styled__default["default"].div.withConfig({
12
12
  componentId: "sc-xupfk9-0"
13
13
  })(["width:100%;height:28px;position:relative;"]);
14
- const StyledContainerInline = /*#__PURE__*/styled__default["default"].div.withConfig({
15
- componentId: "sc-xupfk9-1"
16
- })(["width:100%;position:relative;"]);
17
14
  const StyledPopperWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
18
- componentId: "sc-xupfk9-2"
15
+ componentId: "sc-xupfk9-1"
19
16
  })(["background:#fff;overflow:auto;position:relative;"]);
20
17
 
21
- exports.StyledContainerInline = StyledContainerInline;
22
18
  exports.StyledContainerWithPopper = StyledContainerWithPopper;
23
19
  exports.StyledPopperWrapper = StyledPopperWrapper;
@@ -14,7 +14,7 @@ const isOptionFocuseable = opt => !['section', 'separator'].includes(opt.type);
14
14
  const useKeyboardNavigation = () => {
15
15
  const {
16
16
  props: {
17
- onValueChange,
17
+ onSelect,
18
18
  options
19
19
  },
20
20
  setShowPopover,
@@ -25,25 +25,18 @@ const useKeyboardNavigation = () => {
25
25
  } = React.useContext(AutocompleteCTX.AutocompleteContext);
26
26
  const currentItemIndex = options.findIndex(opt => opt.dsId === focusOptionIdx);
27
27
  const currentItem = options.find(item => item.type === 'option' && item.dsId === focusOptionIdx);
28
- const selectOption = React.useCallback(e => {
29
- if (onValueChange) onValueChange(currentItem.label, e);
30
- setShowPopover(false);
31
- }, [currentItem, setShowPopover, onValueChange]);
32
28
  const onInputKeyDown = React.useCallback(e => {
33
- const targetElement = e.target;
34
-
35
- if (['ArrowDown', 'ArrowUp', 'Enter'].includes(e.key) || e.keyCode >= 48 && e.keyCode <= 90) {
29
+ if ((e.keyCode >= 48 && e.keyCode <= 90 || e.key === 'Backspace') && !showPopover) {
36
30
  setShowPopover(true);
37
- } // =============================================================================
31
+ } else if (e.key === 'Tab') setShowPopover(false); // =============================================================================
38
32
  // ENTER AND SPACE KEY SELECT OPTIONS AND OPEN CLOSE THE POPOVER
39
33
  // =============================================================================
40
34
 
41
35
 
42
- if (e.keyCode === 32 && targetElement.value === '' || e.key === 'Enter') {
43
- if (showPopover) {
44
- e.preventDefault();
45
- selectOption(e);
46
- }
36
+ if (e.key === 'Enter' && showPopover) {
37
+ e.preventDefault();
38
+ onSelect(currentItem === null || currentItem === void 0 ? void 0 : currentItem.label, e);
39
+ setShowPopover(false);
47
40
  } // =============================================================================
48
41
  // ARROWS UP AND DOWN
49
42
  // =============================================================================
@@ -56,8 +49,6 @@ const useKeyboardNavigation = () => {
56
49
  const nextItemIndex = listHelper.findInCircularList(options, currentItemIndex, isOptionFocuseable);
57
50
  setCurrentOption(options[nextItemIndex].dsId);
58
51
  scrollOptionIntoView(options[nextItemIndex].dsId);
59
- } else {
60
- setShowPopover(true);
61
52
  }
62
53
  }
63
54
 
@@ -68,13 +59,6 @@ const useKeyboardNavigation = () => {
68
59
  const nextItemIndex = listHelper.findInCircularList(options, currentItemIndex, isOptionFocuseable, -1);
69
60
  setCurrentOption(options[nextItemIndex].dsId);
70
61
  scrollOptionIntoView(options[nextItemIndex].dsId);
71
- } else {
72
- setShowPopover(true);
73
- setTimeout(() => {
74
- const nextItemIndex = listHelper.findInCircularList(options, 0, isOptionFocuseable, -1);
75
- setCurrentOption(options[nextItemIndex].dsId);
76
- scrollOptionIntoView(options[nextItemIndex].dsId);
77
- });
78
62
  }
79
63
  } // =============================================================================
80
64
  // ESCAPE
@@ -84,7 +68,7 @@ const useKeyboardNavigation = () => {
84
68
  if (e.key === 'Escape') {
85
69
  setShowPopover(false);
86
70
  }
87
- }, [scrollOptionIntoView, currentItemIndex, options, showPopover, setCurrentOption, setShowPopover, selectOption]);
71
+ }, [currentItem === null || currentItem === void 0 ? void 0 : currentItem.label, currentItemIndex, onSelect, options, scrollOptionIntoView, setCurrentOption, setShowPopover, showPopover]);
88
72
  return {
89
73
  onInputKeyDown
90
74
  };
@@ -4,14 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _jsx = require('@babel/runtime/helpers/jsx');
6
6
  var React = require('react');
7
- var dsCircularProgressIndicator = require('@elliemae/ds-circular-progress-indicator');
8
- var dsGrid = require('@elliemae/ds-grid');
9
7
  var styled = require('./styled.js');
10
8
  var AutocompleteDataTestids = require('../../AutocompleteDataTestids.js');
11
9
  var AutocompleteCTX = require('../../AutocompleteCTX.js');
12
- var useOnElementResize = require('../../utils/hooks/useOnElementResize.js');
13
10
  var useItemRenderer = require('./useItemRenderer.js');
14
- var useMenuList = require('./useMenuList.js');
15
11
  var jsxRuntime = require('react/jsx-runtime');
16
12
 
17
13
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -19,73 +15,44 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
19
15
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
20
16
 
21
17
  const MenuList = () => {
22
- var _inputRef$current2;
23
-
24
18
  const {
25
19
  props: {
26
- menuMinWidth,
27
- menuMaxHeight,
28
- options,
29
- isLoading
20
+ options
30
21
  },
31
22
  referenceElement,
32
23
  inputRef,
33
24
  listRef,
34
25
  showPopover,
35
- wrapperListRef,
36
- controlsWrapperRef,
37
26
  virtualListHelpers: {
38
27
  totalSize
39
28
  }
40
29
  } = React.useContext(AutocompleteCTX.AutocompleteContext);
41
30
  const ItemRenderer = useItemRenderer.useItemRenderer();
42
- useMenuList.useMenuList();
43
- const {
44
- width
45
- } = useOnElementResize.useOnElementResize(controlsWrapperRef);
46
- const listWidth = React.useMemo(() => menuMinWidth || "".concat(referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth), // eslint-disable-next-line react-hooks/exhaustive-deps
47
- [menuMinWidth, referenceElement, width]);
48
31
  const handleOnFocus = React.useCallback(() => {
49
32
  var _inputRef$current;
50
33
 
51
34
  (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
52
35
  }, [inputRef]);
53
- return /*#__PURE__*/jsxRuntime.jsx(styled.StyledListWrapper, {
36
+ return /*#__PURE__*/_jsx__default["default"](styled.StyledListWrapper, {
54
37
  tabIndex: -1,
55
- ref: wrapperListRef,
56
38
  onMouseDown: e => e.preventDefault(),
57
- minWidth: listWidth,
58
- id: "combo-listbox",
59
- role: "listbox",
60
- children: isLoading && ((_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.value) !== '' ? /*#__PURE__*/_jsx__default["default"](dsGrid.Grid, {
61
- justifyContent: "center",
62
- alignItems: "center",
39
+ minWidth: referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth,
40
+ id: "autocomplete-listbox",
41
+ role: "listbox"
42
+ }, void 0, options.length > 0 && /*#__PURE__*/jsxRuntime.jsx(styled.StyledVirtualListWrapper, {
43
+ tabIndex: -1,
44
+ ref: listRef,
45
+ children: /*#__PURE__*/_jsx__default["default"](styled.StyledList, {
46
+ tabIndex: -1,
47
+ "aria-expanded": showPopover,
48
+ onFocus: handleOnFocus,
49
+ "data-testid": AutocompleteDataTestids.AutocompleteDataTestid.LIST,
63
50
  style: {
64
- padding: 20
51
+ height: totalSize,
52
+ margin: '8px 0px'
65
53
  }
66
- }, void 0, /*#__PURE__*/_jsx__default["default"](dsCircularProgressIndicator.DSCircularProgressIndicator, {
67
- size: "l",
68
- loading: isLoading,
69
- waiting: false,
70
- showTooltip: false
71
- })) : /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
72
- children: options.length > 0 && /*#__PURE__*/jsxRuntime.jsx(styled.StyledVirtualListWrapper, {
73
- tabIndex: -1,
74
- maxHeight: menuMaxHeight,
75
- ref: listRef,
76
- children: /*#__PURE__*/_jsx__default["default"](styled.StyledList, {
77
- tabIndex: -1,
78
- "aria-expanded": showPopover,
79
- onFocus: handleOnFocus,
80
- "data-testid": AutocompleteDataTestids.AutocompleteDataTestid.LIST,
81
- style: {
82
- height: totalSize,
83
- margin: '8px 0px'
84
- }
85
- }, void 0, ItemRenderer)
86
- })
87
- })
88
- });
54
+ }, void 0, ItemRenderer)
55
+ }));
89
56
  };
90
57
 
91
58
  exports.MenuList = MenuList;
@@ -10,23 +10,22 @@ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
10
 
11
11
  const StyledListWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
12
12
  componentId: "sc-qt1kwv-0"
13
- })(["min-width:", ";"], props => props.inline ? '100%' : "".concat(props.minWidth, "px"));
13
+ })(["min-width:", ";"], _ref => {
14
+ let {
15
+ minWidth
16
+ } = _ref;
17
+ return minWidth ? "".concat(minWidth, "px") : '100%';
18
+ });
14
19
  const StyledList = /*#__PURE__*/styled__default["default"].ul.withConfig({
15
20
  componentId: "sc-qt1kwv-1"
16
21
  })(["position:relative;padding:0;"]);
17
22
  const StyledVirtualListWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
18
23
  componentId: "sc-qt1kwv-2"
19
- })(["overflow-y:auto;margin-top:", ";max-height:", ";"], _ref => {
20
- let {
21
- withHeader
22
- } = _ref;
23
- return withHeader ? '28px' : '';
24
- }, _ref2 => {
24
+ })(["overflow-y:auto;max-height:", ";"], _ref2 => {
25
25
  let {
26
- maxHeight,
27
- inline
26
+ maxHeight
28
27
  } = _ref2;
29
- return inline ? '' : "".concat(!maxHeight ? '400' : maxHeight, "px");
28
+ return "".concat(!maxHeight ? '400' : maxHeight, "px");
30
29
  });
31
30
 
32
31
  exports.StyledList = StyledList;
@@ -13,7 +13,6 @@ require('core-js/modules/esnext.iterator.for-each.js');
13
13
  var React = require('react');
14
14
  var dsForm = require('@elliemae/ds-form');
15
15
  var AutocompleteCTX = require('../../AutocompleteCTX.js');
16
- var listHelper = require('../../utils/listHelper.js');
17
16
  var AutocompleteDataTestids = require('../../AutocompleteDataTestids.js');
18
17
  var jsxRuntime = require('react/jsx-runtime');
19
18
 
@@ -24,66 +23,61 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
24
23
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
24
 
26
25
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
27
-
28
26
  const useItemRenderer = () => {
29
27
  const {
30
28
  props: {
31
29
  options,
32
- onChange,
33
- selectedValues,
34
- onFilter
30
+ onSelect
35
31
  },
36
32
  inputRef,
37
33
  setShowPopover,
38
34
  focusOptionIdx,
39
35
  virtualListHelpers
40
36
  } = React.useContext(AutocompleteCTX.AutocompleteContext);
41
- const {
42
- virtualItems
43
- } = virtualListHelpers;
44
37
  const handleClick = React.useCallback((option, e) => {
45
- var _inputRef$current;
46
-
47
- if (inputRef.current) inputRef.current.value = option.label;
48
- onFilter(option.label);
49
- onChange(option.label);
38
+ onSelect(option.label, e);
50
39
  setShowPopover(false);
51
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
52
40
  e.stopPropagation();
53
41
  e.preventDefault();
54
- }, [onFilter, onChange, setShowPopover, inputRef]);
55
- const handleOnMouseDown = React.useCallback(e => {
56
- e.preventDefault();
57
- }, []);
58
- const ItemRenderer = React.useMemo(() => virtualItems.map(vItem => {
59
- const option = options[vItem.index];
60
- const generalProps = {
61
- wrapperStyles: {
62
- position: 'absolute',
63
- top: vItem.start,
64
- left: 0,
65
- width: '100%'
66
- },
67
- key: "".concat(option.dsId),
68
- innerRef: vItem.measureRef
69
- };
42
+ }, [onSelect, setShowPopover]);
43
+ return React.useMemo(() => {
44
+ if (virtualListHelpers) {
45
+ return virtualListHelpers.virtualItems.map(vItem => {
46
+ const option = options[vItem.index];
47
+ const generalProps = {
48
+ wrapperStyles: {
49
+ position: 'absolute',
50
+ top: vItem.start,
51
+ left: 0,
52
+ width: '100%'
53
+ },
54
+ key: "".concat(option.dsId),
55
+ innerRef: vItem.measureRef
56
+ };
57
+
58
+ if (option.type === 'section') {
59
+ return /*#__PURE__*/jsxRuntime.jsx(dsForm.Section, _objectSpread({
60
+ label: option.label
61
+ }, generalProps));
62
+ }
63
+
64
+ if (option.type === 'option') {
65
+ return /*#__PURE__*/jsxRuntime.jsx(dsForm.SingleMenuItem, _objectSpread(_objectSpread({}, generalProps), {}, {
66
+ value: option.value,
67
+ label: option.label,
68
+ dataTestid: AutocompleteDataTestids.AutocompleteDataTestid.OPTION,
69
+ disabled: option.disabled,
70
+ onClick: e => handleClick(option, e),
71
+ isActive: option.dsId === focusOptionIdx
72
+ }));
73
+ }
70
74
 
71
- if (option.type === 'option') {
72
- return /*#__PURE__*/jsxRuntime.jsx(dsForm.SingleMenuItem, _objectSpread(_objectSpread({}, generalProps), {}, {
73
- value: option.value,
74
- label: option.label,
75
- dataTestid: AutocompleteDataTestids.AutocompleteDataTestid.OPTION,
76
- disabled: option.disabled,
77
- onClick: e => handleClick(option, e),
78
- onMouseDown: handleOnMouseDown,
79
- isActive: option.dsId === focusOptionIdx,
80
- isSelected: listHelper.isSelected(selectedValues, option)
81
- }));
75
+ return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {});
76
+ });
82
77
  }
83
78
 
84
- return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {});
85
- }), [options, focusOptionIdx, selectedValues, inputRef, virtualItems]);
86
- return ItemRenderer;
79
+ return null;
80
+ }, [options, focusOptionIdx, inputRef, virtualListHelpers]);
87
81
  };
88
82
 
89
83
  exports.useItemRenderer = useItemRenderer;
@@ -5,15 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
6
6
 
7
7
  /* eslint-disable @typescript-eslint/no-unused-vars */
8
- function noop() {}
9
8
  const propTypes = {
10
- placeholder: dsPropsHelpers.PropTypes.string.description('input s placeholder value').defaultValue(''),
11
- options: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.array, dsPropsHelpers.PropTypes.object]).description('List of options').defaultValue([]),
12
- value: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.string]).description('Array of option or single option selected'),
13
- autoFocus: dsPropsHelpers.PropTypes.bool.description('Whether the combo box uses auto focus or not').defaultValue('false'),
14
- hasError: dsPropsHelpers.PropTypes.bool.description('Whether the combo box has error or not').defaultValue('false'),
15
- onChange: dsPropsHelpers.PropTypes.func.description('function triggered when an option is selected it will send the options selected').defaultValue('')
9
+ options: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.array, dsPropsHelpers.PropTypes.object]).isRequired.description('List of options').defaultValue([]),
10
+ filter: dsPropsHelpers.PropTypes.string.isRequired.description('String value to filter the options').defaultValue(''),
11
+ onSelect: dsPropsHelpers.PropTypes.func.isRequired.description('function triggered when an option is selected it will send the options selected').defaultValue(''),
12
+ children: dsPropsHelpers.PropTypes.node.isRequired.description('React component to apply autocomplete functionality').defaultValue('')
16
13
  };
17
14
 
18
- exports.noop = noop;
19
15
  exports.propTypes = propTypes;