@elliemae/ds-controlled-form 2.4.0 → 2.4.1-rc.11

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
@@ -5,26 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  require('core-js/modules/esnext.async-iterator.filter.js');
6
6
  require('core-js/modules/esnext.iterator.constructor.js');
7
7
  require('core-js/modules/esnext.iterator.filter.js');
8
- require('core-js/modules/esnext.async-iterator.some.js');
9
- require('core-js/modules/esnext.iterator.some.js');
10
8
 
11
9
  const getSelectableOptions = options => options ? options.filter(option => option.type === 'option' && !option.disabled) : [];
12
10
  const getOptions = options => options ? options.filter(option => option.type === 'option') : [];
13
11
  const isSelectedValueEmpty = value => Array.isArray(value) ? value.length === 0 : !value;
14
12
  const isSelectedValueMultiple = value => Array.isArray(value);
15
- const isSelected = (value, activeOption) => {
16
- if (isSelectedValueMultiple(value)) {
17
- const multiValue = value;
18
- return multiValue.some(item => (item === null || item === void 0 ? void 0 : item.value) === (activeOption === null || activeOption === void 0 ? void 0 : activeOption.value));
19
- }
20
-
21
- if (typeof value === 'string') {
22
- return false;
23
- }
24
-
25
- const singleValue = value;
26
- return (singleValue === null || singleValue === void 0 ? void 0 : singleValue.value) === activeOption.value;
27
- };
28
13
  const findInCircularList = function (list, from, criteria) {
29
14
  let step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
30
15
 
@@ -34,10 +19,17 @@ const findInCircularList = function (list, from, criteria) {
34
19
 
35
20
  return from; // return same item
36
21
  };
22
+ const getFirstOption = options => {
23
+ for (let i = 0; i < options.length; i += 1) if (!['section', 'separator'].includes(options[i].type)) {
24
+ return options[i].dsId;
25
+ }
26
+
27
+ return '';
28
+ };
37
29
 
38
30
  exports.findInCircularList = findInCircularList;
31
+ exports.getFirstOption = getFirstOption;
39
32
  exports.getOptions = getOptions;
40
33
  exports.getSelectableOptions = getSelectableOptions;
41
- exports.isSelected = isSelected;
42
34
  exports.isSelectedValueEmpty = isSelectedValueEmpty;
43
35
  exports.isSelectedValueMultiple = isSelectedValueMultiple;
@@ -40,6 +40,7 @@ const DSControlledCheckbox = props => {
40
40
  label,
41
41
  hasError,
42
42
  innerRef,
43
+ wrapLabel,
43
44
  tabIndex,
44
45
  ariaLabel: legacyAriaLabel,
45
46
  ariaControls: legacyAriaControls,
@@ -92,7 +93,7 @@ const DSControlledCheckbox = props => {
92
93
  readOnly: readOnly,
93
94
  checked: checked,
94
95
  "data-testid": "ds-checkbox-label"
95
- }, void 0, /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
96
+ }, void 0, wrapLabel ? label : /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
96
97
  value: label
97
98
  })));
98
99
  };
@@ -18,12 +18,14 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
18
18
 
19
19
  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; }
20
20
  const defaultProps = {
21
+ wrapLabel: false,
21
22
  hasError: false,
22
23
  tabIndex: undefined,
23
24
  checked: false
24
25
  };
25
26
  const propTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.globalAttributesPropTypes), {}, {
26
27
  label: dsPropsHelpers.PropTypes.string.description('Checkbox Label property. This label is also going to be used as an aria-label for screen readers.'),
28
+ wrapLabel: dsPropsHelpers.PropTypes.bool.description('Whether to wrap or truncate label'),
27
29
  hasError: dsPropsHelpers.PropTypes.bool.description('Whether the checkbox has error or not.'),
28
30
  innerRef: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.func, dsPropsHelpers.PropTypes.object]).description('Checkbox input ref.')
29
31
  });
@@ -27,4 +27,5 @@ const DSComboBoxWithSchema = dsPropsHelpers.describe(DSComboBox);
27
27
  DSComboBoxWithSchema.propTypes = reactDescPropTypes.ComboboxPropTypes;
28
28
 
29
29
  exports.DSComboBox = DSComboBox;
30
+ exports.DSComboBoxV3 = DSComboBox;
30
31
  exports.DSComboBoxWithSchema = DSComboBoxWithSchema;
@@ -46,7 +46,7 @@ const useComboBox = props => {
46
46
  const {
47
47
  selectedValues
48
48
  } = propsWithDefaults; // ---------------------------------------------------------------------------
49
- // Menu Options with/out selected filter and creatable functionality
49
+ // Options with creatable option + filtered by selected
50
50
  // ---------------------------------------------------------------------------
51
51
 
52
52
  const correctOptions = useCorrectOptions.useCorrectOptions(propsWithDefaults, inputValue, showSelectedOptions); // ===========================================================================
@@ -86,9 +86,15 @@ const useComboBox = props => {
86
86
 
87
87
  if (!hasFocus) setFocusOptionIdx(''); // eslint-disable-next-line react-hooks/exhaustive-deps
88
88
  }, [showPopover, hasFocus, correctOptions, selectedValues, inputValue]);
89
+ React.useEffect(() => {
90
+ if (!showPopover) {
91
+ setFocusOptionIdx('');
92
+ setShowSelectedOptions(false);
93
+ }
94
+ }, [showPopover]);
89
95
  const ctx = React.useMemo(() => ({
90
96
  props: _objectSpread(_objectSpread({}, propsWithDefaults), {}, {
91
- options: correctOptions
97
+ filteredOptions: correctOptions
92
98
  }),
93
99
  virtualListHelpers,
94
100
  showPopover,
@@ -2,69 +2,41 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('core-js/modules/esnext.async-iterator.for-each.js');
6
- require('core-js/modules/esnext.iterator.constructor.js');
7
- require('core-js/modules/esnext.iterator.for-each.js');
8
- require('core-js/modules/esnext.async-iterator.find.js');
9
- require('core-js/modules/esnext.iterator.find.js');
10
5
  require('core-js/modules/web.dom-collections.iterator.js');
11
6
  var React = require('react');
12
7
  var uid = require('uid');
13
8
  var constants = require('../constants.js');
9
+ var listHelper = require('../utils/listHelper.js');
14
10
 
15
11
  const useCorrectOptions = (propsWithDefaults, inputValue, showSelectedOptions) => {
16
12
  const {
17
- options,
13
+ filteredOptions,
14
+ allOptions,
18
15
  selectedValues,
19
16
  onCreate
20
17
  } = propsWithDefaults;
21
- const selectedValuesWithSections = React.useCallback(() => {
22
- var _items2;
18
+ return React.useMemo(() => {
19
+ // if filteredOptions is not passed we copy allOptions into the prop as default
20
+ // this is useful when the user wants a combo with out filtering and only pass allOptions as its required
21
+ if (!filteredOptions) return [...allOptions]; // when show selected toggle is on we return the selected value only as filteredOptions prop
23
22
 
24
- const multiSelectedValue = selectedValues;
25
- const items = [];
26
- options.forEach(option => {
27
- const isSelectedValue = multiSelectedValue.find(item => item.dsId === option.dsId);
28
-
29
- if (isSelectedValue) {
30
- items.push(option);
31
- }
32
-
33
- if (option.type === constants.MENU_OPTION_TYPES.SECTION) {
34
- var _items;
35
-
36
- if (((_items = items[items.length - 1]) === null || _items === void 0 ? void 0 : _items.type) === constants.MENU_OPTION_TYPES.SECTION) {
37
- items[items.length - 1] = option;
38
- } else {
39
- items.push(option);
40
- }
41
- }
42
- });
43
-
44
- if (((_items2 = items[items.length - 1]) === null || _items2 === void 0 ? void 0 : _items2.type) === constants.MENU_OPTION_TYPES.SECTION) {
45
- items.pop();
46
- }
47
-
48
- return items;
49
- }, [options, selectedValues]);
50
- const correctOptions = React.useMemo(() => {
51
23
  if (showSelectedOptions && Array.isArray(selectedValues) && selectedValues.length > 0) {
52
- return selectedValuesWithSections();
53
- }
24
+ return listHelper.selectedValuesWithSections(filteredOptions, selectedValues);
25
+ } // whether oncreate is passed we add as first option the creatable action based on input value string
26
+
54
27
 
55
- if (onCreate && inputValue && options.findIndex(option => option.type === constants.MENU_OPTION_TYPES.OPTION && option.label === inputValue) === -1) {
28
+ if (onCreate && inputValue && filteredOptions.findIndex(option => option.type === constants.MENU_OPTION_TYPES.OPTION && option.label === inputValue) === -1) {
56
29
  const creatableUuid = uid.uid();
57
30
  const creatableItem = {
58
31
  dsId: "creatable-".concat(creatableUuid),
59
32
  label: inputValue,
60
33
  type: 'creatable'
61
34
  };
62
- return [creatableItem, ...options];
35
+ return [creatableItem, ...filteredOptions];
63
36
  }
64
37
 
65
- return options;
66
- }, [options, onCreate, inputValue, selectedValuesWithSections, selectedValues, showSelectedOptions]);
67
- return correctOptions;
38
+ return filteredOptions;
39
+ }, [filteredOptions, allOptions, showSelectedOptions, selectedValues, onCreate, inputValue]);
68
40
  };
69
41
 
70
42
  exports.useCorrectOptions = useCorrectOptions;
@@ -7,4 +7,5 @@ var ComboBox = require('./ComboBox.js');
7
7
 
8
8
 
9
9
  exports.DSComboBox = ComboBox.DSComboBox;
10
+ exports.DSComboBoxV3 = ComboBox.DSComboBox;
10
11
  exports.DSComboBoxWithSchema = ComboBox.DSComboBoxWithSchema;
@@ -19,13 +19,13 @@ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
19
19
  const A11yFocusedOption = () => {
20
20
  const {
21
21
  props: {
22
- options
22
+ filteredOptions
23
23
  },
24
24
  focusOptionIdx,
25
25
  showPopover
26
26
  } = React.useContext(ComboBoxCTX.ComboBoxContext);
27
- const selectabledOptions = listHelper.getSelectableOptions(options);
28
- const focusOption = options.find(option => !sharedTypes.isSeparator(option) && option.dsId === focusOptionIdx);
27
+ const selectabledOptions = listHelper.getSelectableOptions(filteredOptions);
28
+ const focusOption = filteredOptions.find(option => !sharedTypes.isSeparator(option) && option.dsId === focusOptionIdx);
29
29
  const focusSelectableOptionIdx = selectabledOptions.findIndex(option => option.dsId === focusOptionIdx);
30
30
  return React.useMemo(() => {
31
31
  if (!sharedTypes.isSeparator(focusOption) && showPopover && focusOption) return /*#__PURE__*/_jsx__default["default"](styled.StyledA11ySelectedValues, {
@@ -34,6 +34,8 @@ const Controls = () => {
34
34
  selectedOptionsRef,
35
35
  setShowPopover,
36
36
  hasFocus,
37
+ focusOptionIdx,
38
+ scrollOptionIntoView,
37
39
  showPopover,
38
40
  controlsWrapperRef
39
41
  } = React.useContext(ComboBoxCTX.ComboBoxContext);
@@ -51,8 +53,8 @@ const Controls = () => {
51
53
  }
52
54
 
53
55
  (_innerRef$current2 = innerRef.current) === null || _innerRef$current2 === void 0 ? void 0 : _innerRef$current2.focus();
54
- setShowPopover(true);
55
- }, [disabled, hasFocus, setShowPopover, showPopover, innerRef, inline]); // this callback prevent to toggle the menu when clicking or removing pills
56
+ setShowPopover(true); // eslint-disable-next-line react-hooks/exhaustive-deps
57
+ }, [disabled, hasFocus, showPopover, inline, innerRef, setShowPopover, focusOptionIdx]); // this callback prevent to toggle the menu when clicking or removing pills
56
58
 
57
59
  const handleOnPillsClick = React.useCallback(e => {
58
60
  if (showPopover || disabled) {
@@ -20,6 +20,7 @@ const ControlsInput = () => {
20
20
  const {
21
21
  props: {
22
22
  autoFocus,
23
+ placeholder,
23
24
  disabled,
24
25
  innerRef,
25
26
  onFilter
@@ -48,6 +49,7 @@ const ControlsInput = () => {
48
49
  })), /*#__PURE__*/jsxRuntime.jsx(styled.StyledInput, {
49
50
  "data-testid": ComboboxDataTestids.ComboboxDataTestid.INPUT,
50
51
  autoFocus: autoFocus,
52
+ placeholder: placeholder,
51
53
  "aria-controls": "combo-listbox",
52
54
  "aria-activedescendant": focusOptionIdx,
53
55
  "aria-expanded": showPopover,
@@ -10,7 +10,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
  var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
11
11
 
12
12
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
13
- const StyledInput = dsSystem.styled.input(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n font-size: 13px;\n line-height: 13px;\n border: none;\n padding: 0;\n outline: none;\n color: ", ";\n &:focus {\n outline: none;\n }\n ", "\n"])), props => props.theme.colors.neutral[700], _ref => {
13
+ const StyledInput = dsSystem.styled.input(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n font-size: 13px;\n line-height: 13px;\n border: none;\n padding: 0;\n outline: none;\n color: ", ";\n &:focus {\n outline: none;\n }\n ", "\n &::placeholder {\n color: transparent;\n }\n"])), props => props.theme.colors.neutral[700], _ref => {
14
14
  let {
15
15
  withoutCaret
16
16
  } = _ref;
@@ -13,6 +13,7 @@ const useControlsInput = () => {
13
13
  const {
14
14
  props: {
15
15
  selectedValues,
16
+ allOptions,
16
17
  placeholder,
17
18
  onFilter
18
19
  },
@@ -27,19 +28,18 @@ const useControlsInput = () => {
27
28
  const showPlaceholder = !inputValue && listHelper.isSelectedValueEmpty(selectedValues) ? placeholder : null;
28
29
  const spanReferenceText = inputValue.replace(/\s/g, '\u00a0');
29
30
  React.useEffect(() => {
30
- var _spanReference$curren, _spanReference$curren2;
31
+ var _spanReference$curren;
31
32
 
32
- setWidth((_spanReference$curren = spanReference.current) !== null && _spanReference$curren !== void 0 && _spanReference$curren.offsetWidth ? ((_spanReference$curren2 = spanReference.current) === null || _spanReference$curren2 === void 0 ? void 0 : _spanReference$curren2.offsetWidth) + 2 : 1);
33
+ setWidth((_spanReference$curren = spanReference.current) !== null && _spanReference$curren !== void 0 && _spanReference$curren.offsetWidth ? spanReference.current.offsetWidth + 2 : 1);
33
34
  }, [inputValue]); // if we se an input mask we configure inside here the proper mask
34
35
  // or a stardard combobox onchange event
35
36
 
36
37
  const handleOnChange = useMaskedOnChange.useMaskedOnChange();
37
38
  const handleOnBlur = React.useCallback(() => {
38
39
  setInputValue('');
39
- if (onFilter) onFilter('');
40
- setHasFocus(false);
41
- setShowSelectedOptions(false);
42
- }, [setInputValue, setShowSelectedOptions, onFilter, setHasFocus]);
40
+ if (onFilter) onFilter(allOptions, inputValue);
41
+ setHasFocus(false); // setShowSelectedOptions(false);
42
+ }, [setInputValue, onFilter, allOptions, inputValue, setHasFocus, setShowSelectedOptions]);
43
43
  const handleOnFocus = React.useCallback(() => {
44
44
  setHasFocus(true);
45
45
  }, [setHasFocus]);
@@ -17,6 +17,7 @@ const isOptionFocuseable = opt => !['section', 'separator'].includes(opt.type) &
17
17
  const useKeyboardNavigation = () => {
18
18
  const {
19
19
  props: {
20
+ allOptions,
20
21
  onCancel,
21
22
  onKeyDown,
22
23
  onChange,
@@ -24,7 +25,7 @@ const useKeyboardNavigation = () => {
24
25
  onFilter,
25
26
  onSelectAll,
26
27
  inline,
27
- options,
28
+ filteredOptions,
28
29
  selectedValues,
29
30
  withoutPortal
30
31
  },
@@ -39,9 +40,9 @@ const useKeyboardNavigation = () => {
39
40
  setFocusOptionIdx
40
41
  } = React.useContext(ComboBoxCTX.ComboBoxContext);
41
42
  const multiple = Array.isArray(selectedValues);
42
- const selectableOptions = listHelper.getOptions(options);
43
- const currentItemIndex = options.findIndex(opt => opt.dsId === focusOptionIdx);
44
- const currentItem = options.find(item => item.dsId === focusOptionIdx);
43
+ const selectableOptions = listHelper.getOptions(filteredOptions);
44
+ const currentItemIndex = filteredOptions.findIndex(opt => opt.dsId === focusOptionIdx);
45
+ const currentItem = filteredOptions.find(item => item.dsId === focusOptionIdx);
45
46
  const onInputKeyDown = React.useCallback(e => {
46
47
  // =============================================================================
47
48
  // CUSTOM KEYS
@@ -59,7 +60,7 @@ const useKeyboardNavigation = () => {
59
60
  if (onCancel) onCancel();
60
61
 
61
62
  if (inputValue) {
62
- if (onFilter) onFilter('');
63
+ if (onFilter) onFilter(allOptions, inputValue);
63
64
  setInputValue('');
64
65
  }
65
66
 
@@ -70,8 +71,10 @@ const useKeyboardNavigation = () => {
70
71
 
71
72
 
72
73
  if (e.key === 'Enter' && (currentItem === null || currentItem === void 0 ? void 0 : currentItem.type) === constants.INTERNAL_MENU_OPTION_TYPES.CREATABLE && onCreate) {
73
- onCreate(inputValue);
74
- if (onFilter) onFilter('');
74
+ onCreate(inputValue); //blank active item to force search last one
75
+
76
+ setFocusOptionIdx('');
77
+ if (onFilter) onFilter(allOptions, '');
75
78
  setInputValue('');
76
79
  return;
77
80
  } // =============================================================================
@@ -84,10 +87,10 @@ const useKeyboardNavigation = () => {
84
87
  e.stopPropagation();
85
88
 
86
89
  if (focusOptionIdx !== '' && (showPopover || inline) && (currentItem === null || currentItem === void 0 ? void 0 : currentItem.type) === constants.MENU_OPTION_TYPES.OPTION && !currentItem.disabled) {
87
- if (onFilter) onFilter('');
90
+ if (onFilter) onFilter(allOptions, '');
88
91
  setInputValue('');
89
92
 
90
- if (!multiple && !inline) {
93
+ if (!multiple) {
91
94
  setShowPopover(false);
92
95
  }
93
96
 
@@ -100,7 +103,7 @@ const useKeyboardNavigation = () => {
100
103
  }
101
104
 
102
105
  if (e.key === 'a' && e.ctrlKey && multiple && onSelectAll) {
103
- onSelectAll(options.filter(option => option.type === 'option' && !option.disabled), e);
106
+ onSelectAll(filteredOptions.filter(option => option.type === 'option' && !option.disabled), e);
104
107
  } // =============================================================================
105
108
  // ARROWS UP AND DOWN: LOGIC TO CALCULATE NEXT OR PREV ITEM TO PSEUDOFOCUS FROM INPUT
106
109
  // =============================================================================
@@ -111,9 +114,9 @@ const useKeyboardNavigation = () => {
111
114
  e.stopPropagation();
112
115
 
113
116
  if ((showPopover || inline) && selectableOptions.length) {
114
- const nextItemIndex = listHelper.findInCircularList(options, currentItemIndex, isOptionFocuseable);
115
- setFocusOptionIdx(options[nextItemIndex].dsId);
116
- scrollOptionIntoView(options[nextItemIndex].dsId);
117
+ const nextItemIndex = listHelper.findInCircularList(filteredOptions, currentItemIndex, isOptionFocuseable);
118
+ setFocusOptionIdx(filteredOptions[nextItemIndex].dsId);
119
+ scrollOptionIntoView(filteredOptions[nextItemIndex].dsId);
117
120
  }
118
121
  }
119
122
 
@@ -121,17 +124,17 @@ const useKeyboardNavigation = () => {
121
124
  e.preventDefault();
122
125
  e.stopPropagation();
123
126
  if (!selectableOptions.length) return;
124
- const prevItemIndex = listHelper.findInCircularList(options, currentItemIndex, isOptionFocuseable, -1);
127
+ const prevItemIndex = listHelper.findInCircularList(filteredOptions, currentItemIndex, isOptionFocuseable, -1);
125
128
 
126
129
  if (showPopover || inline) {
127
- setFocusOptionIdx(options[prevItemIndex].dsId);
128
- scrollOptionIntoView(options[prevItemIndex].dsId);
130
+ setFocusOptionIdx(filteredOptions[prevItemIndex].dsId);
131
+ scrollOptionIntoView(filteredOptions[prevItemIndex].dsId);
129
132
  } else {
130
133
  setShowPopover(true);
131
134
  setTimeout(() => {
132
- const prevItem = listHelper.findInCircularList(options, 0, isOptionFocuseable, -1);
133
- setFocusOptionIdx(options[prevItem].dsId);
134
- scrollOptionIntoView(options[prevItem].dsId);
135
+ const prevItem = listHelper.findInCircularList(filteredOptions, 0, isOptionFocuseable, -1);
136
+ setFocusOptionIdx(filteredOptions[prevItem].dsId);
137
+ scrollOptionIntoView(filteredOptions[prevItem].dsId);
135
138
  });
136
139
  }
137
140
  } // =============================================================================
@@ -139,14 +142,14 @@ const useKeyboardNavigation = () => {
139
142
  // =============================================================================
140
143
 
141
144
 
142
- if (e.key === 'Backspace' && inputValue.length <= 0 && !inline) {
145
+ if (e.key === 'Backspace' && e.currentTarget.value.length <= 0 && !inline) {
143
146
  const lastValue = listHelper.getLastValueSelected(selectedValues);
144
147
 
145
- if (!inputValue && lastValue) {
148
+ if (!e.currentTarget.value && lastValue) {
146
149
  onChange(listHelper.getSuggestedValueOnChange(lastValue, selectedValues), lastValue, e);
147
150
  }
148
151
 
149
- if (onFilter) onFilter('');
152
+ if (onFilter) onFilter(allOptions, inputValue);
150
153
  }
151
154
 
152
155
  if (e.key === 'Tab' && !inline && !withoutPortal) {
@@ -158,12 +161,13 @@ const useKeyboardNavigation = () => {
158
161
  e.preventDefault();
159
162
  element.focus();
160
163
  }
161
- } // waiting for validation from ux
162
- // if (e.key === 'Tab' && multiple) {
163
- // }
164
+ }
164
165
 
166
+ if (e.key === 'Tab' && !multiple && showPopover) {
167
+ setShowPopover(false);
168
+ }
165
169
  }, // eslint-disable-next-line react-hooks/exhaustive-deps
166
- [onKeyDown, currentItem, onCreate, multiple, inputValue, inline, withoutPortal, setShowPopover, onCancel, onFilter, setInputValue, focusOptionIdx, showPopover, selectableOptions.length, options, currentItemIndex, setFocusOptionIdx, selectedValues, onChange, selectAllCheckboxRef, toggleSelectionButtonRef]);
170
+ [onKeyDown, currentItem, onCreate, multiple, inputValue, inline, withoutPortal, setShowPopover, onCancel, onFilter, setInputValue, focusOptionIdx, showPopover, selectableOptions.length, filteredOptions, currentItemIndex, setFocusOptionIdx, selectedValues, onChange, selectAllCheckboxRef, toggleSelectionButtonRef]);
167
171
  return {
168
172
  onInputKeyDown
169
173
  };
@@ -4,12 +4,14 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var ComboBoxCTX = require('../../ComboBoxCTX.js');
7
+ var listHelper = require('../../utils/listHelper.js');
7
8
 
8
9
  const useMaskedOnChange = () => {
9
10
  const {
10
11
  props: {
11
12
  useMask,
12
- onFilter
13
+ onFilter,
14
+ allOptions
13
15
  },
14
16
  setShowPopover,
15
17
  setInputValue,
@@ -21,16 +23,16 @@ const useMaskedOnChange = () => {
21
23
  setShowPopover(true);
22
24
 
23
25
  if (onFilter) {
24
- onFilter(e.currentTarget.value);
26
+ onFilter(listHelper.filterOptions(e.currentTarget.value, allOptions), e.currentTarget.value);
25
27
  setInputValue(e.currentTarget.value);
26
28
  }
27
- }, [onFilter, setInputValue, setShowPopover, setShowSelectedOptions]); // onchange used when mask is provided
29
+ }, [allOptions, onFilter, setInputValue, setShowPopover, setShowSelectedOptions]); // onchange used when mask is provided
28
30
 
29
31
  const handleOnChangeMask = React.useCallback((_, mask) => {
30
32
  setShowSelectedOptions(false);
31
33
  setShowPopover(true);
32
- if (mask && onFilter) onFilter(mask);
33
- }, [onFilter, setShowPopover, setShowSelectedOptions]);
34
+ if (mask && onFilter) onFilter(listHelper.filterOptions(mask, allOptions), mask);else if (!mask && onFilter) onFilter(allOptions, '');
35
+ }, [allOptions, onFilter, setShowPopover, setShowSelectedOptions]);
34
36
  const onChangeMask = useMask({
35
37
  valueSetter: setInputValue,
36
38
  onChange: handleOnChangeMask
@@ -1,8 +1,10 @@
1
1
  'use strict';
2
2
 
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
3
5
  var _jsx = require('@babel/runtime/helpers/jsx');
4
6
  var React = require('react');
5
- var ChevronSmallDown = require('@elliemae/ds-icons/ChevronSmallDown');
7
+ var dsIcons = require('@elliemae/ds-icons');
6
8
  var ComboBoxCTX = require('../../ComboBoxCTX.js');
7
9
  var styled = require('./styled.js');
8
10
  var ComboboxDataTestids = require('../../ComboboxDataTestids.js');
@@ -10,7 +12,6 @@ var ComboboxDataTestids = require('../../ComboboxDataTestids.js');
10
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
13
 
12
14
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
13
- var ChevronSmallDown__default = /*#__PURE__*/_interopDefaultLegacy(ChevronSmallDown);
14
15
 
15
16
  var _ChevronSmallDown;
16
17
 
@@ -31,7 +32,8 @@ const DropdownIndicator = () => {
31
32
  "aria-hidden": true,
32
33
  buttonType: "icon",
33
34
  tabIndex: -1
34
- }, void 0, _ChevronSmallDown || (_ChevronSmallDown = /*#__PURE__*/_jsx__default["default"](ChevronSmallDown__default["default"], {})));
35
+ }, void 0, _ChevronSmallDown || (_ChevronSmallDown = /*#__PURE__*/_jsx__default["default"](dsIcons.ChevronSmallDown, {})));
35
36
  };
36
37
 
37
- module.exports = DropdownIndicator;
38
+ exports.DropdownIndicator = DropdownIndicator;
39
+ exports["default"] = DropdownIndicator;
@@ -14,7 +14,7 @@ const useHeaderListHandlers = () => {
14
14
  const {
15
15
  props: {
16
16
  selectedValues,
17
- options,
17
+ filteredOptions,
18
18
  onSelectAll,
19
19
  innerRef
20
20
  },
@@ -23,7 +23,7 @@ const useHeaderListHandlers = () => {
23
23
  setShowPopover
24
24
  } = React.useContext(ComboBoxCTX.ComboBoxContext);
25
25
  const multiSelectedValues = selectedValues;
26
- const selectableOptions = listHelper.getSelectableOptions(options);
26
+ const selectableOptions = listHelper.getSelectableOptions(filteredOptions);
27
27
  const getCheckboxStatus = React.useMemo(() => {
28
28
  if (multiSelectedValues.length === selectableOptions.length) {
29
29
  return true;
@@ -44,13 +44,13 @@ const useHeaderListHandlers = () => {
44
44
  }, []);
45
45
  const handleSelectAllCheckboxChange = React.useCallback(e => {
46
46
  if ((!checkboxStatus || checkboxStatus === 'mixed') && onSelectAll) {
47
- onSelectAll(options.filter(option => option.type === 'option' && !option.disabled), e);
47
+ onSelectAll(filteredOptions.filter(option => option.type === 'option' && !option.disabled), e);
48
48
  setCheckboxStatus(true);
49
49
  } else if (onSelectAll) {
50
50
  onSelectAll([], e);
51
51
  setCheckboxStatus(false);
52
52
  }
53
- }, [checkboxStatus, onSelectAll, options]);
53
+ }, [checkboxStatus, onSelectAll, filteredOptions]);
54
54
  const handleToggleSelectedValuesFilter = React.useCallback(e => {
55
55
  e.preventDefault();
56
56
  setShowSelectedOptions(!showSelectedOptions);
@@ -4,6 +4,7 @@ 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 dsUtilities = require('@elliemae/ds-utilities');
7
8
  var styled = require('./styled.js');
8
9
  var ComboboxDataTestids = require('../../ComboboxDataTestids.js');
9
10
  var ComboBoxCTX = require('../../ComboBoxCTX.js');
@@ -23,18 +24,22 @@ const MenuList = () => {
23
24
  menuMaxHeight,
24
25
  onCreate,
25
26
  inline,
26
- options,
27
+ filteredOptions,
27
28
  selectedValues
28
29
  },
29
- referenceElement,
30
+ controlsWrapperRef,
30
31
  listRef,
31
32
  inputValue,
32
33
  wrapperListRef,
33
34
  virtualListHelpers
34
35
  } = React.useContext(ComboBoxCTX.ComboBoxContext);
35
- const multiple = Array.isArray(selectedValues);
36
- const withHeader = !inline && multiple && options.length > 0 && inputValue === '';
36
+ const multiple = Array.isArray(selectedValues); // removing the header list if we are filtering or is inline cb or we have no options to show
37
+
38
+ const withHeader = !inline && multiple && filteredOptions.length > 0 && !inputValue;
37
39
  const ItemRenderer = useItemRenderer.useItemRenderer();
40
+ const {
41
+ width
42
+ } = dsUtilities.useOnElementResize(controlsWrapperRef);
38
43
  const preventLoseInputFocus = React.useCallback(e => {
39
44
  e.preventDefault();
40
45
  }, []);
@@ -42,8 +47,9 @@ const MenuList = () => {
42
47
  ref: wrapperListRef,
43
48
  inline: inline,
44
49
  onMouseDown: preventLoseInputFocus,
45
- minWidth: menuMinWidth || "".concat((referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth) || '100%'),
46
- children: [withHeader && (_HeaderList || (_HeaderList = /*#__PURE__*/_jsx__default["default"](HeaderList.HeaderList, {}))), options.length > 0 || onCreate ? /*#__PURE__*/jsxRuntime.jsx(styled.StyledVirtualListWrapper, {
50
+ width: width,
51
+ minWidth: menuMinWidth,
52
+ children: [withHeader && (_HeaderList || (_HeaderList = /*#__PURE__*/_jsx__default["default"](HeaderList.HeaderList, {}))), filteredOptions.length > 0 || onCreate ? /*#__PURE__*/jsxRuntime.jsx(styled.StyledVirtualListWrapper, {
47
53
  inline: inline,
48
54
  maxHeight: menuMaxHeight,
49
55
  ref: listRef,
@@ -60,7 +66,7 @@ const MenuList = () => {
60
66
  }) : _StyledNoResultsWrapp || (_StyledNoResultsWrapp = /*#__PURE__*/_jsx__default["default"](styled.StyledNoResultsWrapper, {
61
67
  "aria-live": "polite"
62
68
  }, void 0, "No matches found"))]
63
- }), [wrapperListRef, inline, menuMinWidth, referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth, withHeader, options.length, menuMaxHeight, listRef, virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.totalSize, ItemRenderer, onCreate, preventLoseInputFocus]);
69
+ }), [wrapperListRef, inline, preventLoseInputFocus, width, menuMinWidth, withHeader, filteredOptions.length, onCreate, menuMaxHeight, listRef, virtualListHelpers === null || virtualListHelpers === void 0 ? void 0 : virtualListHelpers.totalSize, ItemRenderer]);
64
70
  };
65
71
 
66
72
  exports.MenuList = MenuList;
@@ -10,17 +10,28 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
  var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
11
11
 
12
12
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
13
- const StyledListWrapper = dsSystem.styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n min-width: ", ";\n background-color: #ffffff;\n"])), props => props.inline ? '100%' : "".concat(props.minWidth, "px"));
13
+ const StyledListWrapper = dsSystem.styled.div(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n min-width: ", ";\n width: ", ";\n background-color: #ffffff;\n"])), _ref => {
14
+ let {
15
+ inline,
16
+ minWidth
17
+ } = _ref;
18
+ return inline ? '100%' : "".concat(minWidth, "px");
19
+ }, _ref2 => {
20
+ let {
21
+ width
22
+ } = _ref2;
23
+ return "".concat(width, "px");
24
+ });
14
25
  const StyledList = dsSystem.styled.ul(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n position: relative;\n padding: 0;\n"])));
15
- const StyledVirtualListWrapper = dsSystem.styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n overflow-y: auto;\n margin-top: ", ";\n\n max-height: ", ";\n"])), _ref => {
26
+ const StyledVirtualListWrapper = dsSystem.styled.div(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n overflow-y: auto;\n margin-top: ", ";\n\n max-height: ", ";\n"])), _ref3 => {
16
27
  let {
17
28
  withHeader
18
- } = _ref;
29
+ } = _ref3;
19
30
  return withHeader ? '28px' : '';
20
- }, _ref2 => {
31
+ }, _ref4 => {
21
32
  let {
22
33
  maxHeight
23
- } = _ref2;
34
+ } = _ref4;
24
35
  return !maxHeight ? '400px' : "".concat(maxHeight, "px");
25
36
  });
26
37
  const StyledCreatableLabel = dsSystem.styled.span(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default["default"](["\n font-weight: bold;\n font-style: italic;\n"])));