@elliemae/ds-controlled-form 2.4.2-rc.3 → 2.4.3-rc.0

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 (234) hide show
  1. package/cjs/autocomplete/config/useAutocomplete.js +0 -1
  2. package/cjs/autocomplete/parts/A11yFocusedOption.js +46 -0
  3. package/cjs/autocomplete/parts/container/Container.js +36 -24
  4. package/cjs/autocomplete/parts/container/styled.js +2 -2
  5. package/cjs/autocomplete/parts/container/useKeyboardNavigation.js +2 -2
  6. package/cjs/autocomplete/parts/menu-list/MenuList.js +6 -6
  7. package/cjs/autocomplete/parts/menu-list/styled.js +2 -2
  8. package/cjs/autocomplete/parts/menu-list/useItemRenderer.js +1 -1
  9. package/cjs/autocomplete/parts/styled.js +2 -0
  10. package/cjs/autocomplete/utils/listHelper.js +1 -1
  11. package/cjs/checkbox/ControlledCheckbox.js +1 -1
  12. package/cjs/checkbox/config/useValidateProps.js +6 -3
  13. package/cjs/checkbox/react-desc-prop-types.js +2 -1
  14. package/cjs/checkbox/styles.js +73 -27
  15. package/cjs/checkbox/utils/styleHelpers.js +20 -2
  16. package/cjs/combobox/ComboBoxCTX.js +6 -3
  17. package/cjs/combobox/config/useComboBox.js +16 -6
  18. package/cjs/combobox/config/useCorrectOptions.js +1 -2
  19. package/cjs/combobox/parts/A11yFocusedOption.js +14 -6
  20. package/cjs/combobox/parts/A11ySelectedValues.js +2 -4
  21. package/cjs/combobox/parts/DropdownIndicator.js +15 -7
  22. package/cjs/combobox/parts/container/Container.js +11 -14
  23. package/cjs/combobox/parts/container/styled.js +11 -10
  24. package/cjs/combobox/parts/controls/Controls.js +19 -27
  25. package/cjs/combobox/parts/controls/styled.js +54 -22
  26. package/cjs/combobox/parts/controls/useOnPillsNavigation.js +7 -15
  27. package/cjs/combobox/parts/controls-input/ControlsInput.js +2 -2
  28. package/cjs/combobox/parts/controls-input/styled.js +41 -11
  29. package/cjs/combobox/parts/controls-input/useControlsInput.js +4 -7
  30. package/cjs/combobox/parts/controls-input/useKeyboardNavigation.js +19 -28
  31. package/cjs/combobox/parts/controls-input/useMaskedOnChange.js +7 -7
  32. package/cjs/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
  33. package/cjs/combobox/parts/header-list/HeaderList.js +1 -1
  34. package/cjs/combobox/parts/header-list/styled.js +39 -10
  35. package/cjs/combobox/parts/header-list/useHeaderListHandlers.js +7 -14
  36. package/cjs/combobox/parts/menu-list/MenuList.js +8 -6
  37. package/cjs/combobox/parts/menu-list/styled.js +38 -20
  38. package/cjs/combobox/parts/menu-list/useItemRenderer.js +18 -17
  39. package/cjs/combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +1 -1
  40. package/cjs/combobox/parts/multi-selected-values-container/RemovableSelectedValuePill.js +1 -3
  41. package/cjs/combobox/parts/multi-selected-values-container/useGroupPills.js +1 -2
  42. package/cjs/combobox/parts/styled.js +6 -7
  43. package/cjs/combobox/react-desc-prop-types.js +3 -2
  44. package/cjs/combobox/sharedTypes.js +2 -2
  45. package/cjs/combobox/utils/listHelper.js +14 -9
  46. package/cjs/date-range-picker/config/useRangePickerLogic.js +4 -8
  47. package/cjs/date-range-picker/parts/ControlledDateRangeCalendar.js +0 -2
  48. package/cjs/date-range-picker/parts/ControlledDateRangeFromDate.js +0 -2
  49. package/cjs/date-range-picker/parts/ControlledDateRangeToDate.js +0 -2
  50. package/cjs/date-time-picker/config/useChangeHandlers.js +3 -3
  51. package/cjs/date-time-picker/config/useControlledDateTimePicker.js +1 -1
  52. package/cjs/date-time-picker/config/useFocusTracker.js +1 -1
  53. package/cjs/date-time-picker/config/useGetDestructuredValues.js +6 -6
  54. package/cjs/date-time-picker/config/useGetPropsBasedOnType.js +1 -1
  55. package/cjs/date-time-picker/config/useGetReferences.js +1 -1
  56. package/cjs/date-time-picker/config/useRelevantValueFromProps.js +1 -1
  57. package/cjs/date-time-picker/config/useValidateProps.js +42 -11
  58. package/cjs/date-time-picker/parts/ClearButton/ClearButton.js +1 -3
  59. package/cjs/date-time-picker/parts/DateInputs/DDInput.js +3 -7
  60. package/cjs/date-time-picker/parts/DateInputs/MMInput.js +3 -7
  61. package/cjs/date-time-picker/parts/DateInputs/YYYYInput.js +3 -7
  62. package/cjs/date-time-picker/parts/DateInputs/useDateInputs.js +13 -23
  63. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
  64. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +6 -14
  65. package/cjs/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +1 -1
  66. package/cjs/date-time-picker/parts/Pickers/Calendar/Day.js +8 -10
  67. package/cjs/date-time-picker/parts/Pickers/Calendar/Styleds.js +44 -15
  68. package/cjs/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +1 -2
  69. package/cjs/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +2 -1
  70. package/cjs/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +0 -1
  71. package/cjs/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +3 -5
  72. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -1
  73. package/cjs/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +3 -5
  74. package/cjs/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +5 -7
  75. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -8
  76. package/cjs/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +5 -7
  77. package/cjs/date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +2 -2
  78. package/cjs/date-time-picker/parts/Pickers/TimeWheel/Styleds.js +47 -15
  79. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +2 -5
  80. package/cjs/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +1 -1
  81. package/cjs/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +3 -3
  82. package/cjs/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +2 -5
  83. package/cjs/date-time-picker/parts/Styleds.js +12 -6
  84. package/cjs/date-time-picker/parts/TimeInputs/HHInput.js +2 -4
  85. package/cjs/date-time-picker/parts/TimeInputs/MeridiemInput.js +3 -8
  86. package/cjs/date-time-picker/parts/TimeInputs/MinutesInput.js +3 -7
  87. package/cjs/date-time-picker/parts/TimeInputs/useTimeInputs.js +14 -26
  88. package/cjs/date-time-picker/utils/dateHelpers.js +17 -34
  89. package/cjs/date-time-picker/utils/hooks/useOnClickOutside.js +1 -3
  90. package/cjs/date-time-picker/utils/stringHelpers.js +5 -11
  91. package/cjs/input-group/InputGroup.js +8 -7
  92. package/cjs/input-group/exported-related/data-test-ids.js +12 -0
  93. package/cjs/input-group/exported-related/index.js +12 -0
  94. package/cjs/input-group/exported-related/theming.js +13 -0
  95. package/cjs/input-group/styled.js +90 -23
  96. package/cjs/large-text-input/DSControlledLargeTextInput.js +1 -1
  97. package/cjs/large-text-input/styles.js +27 -13
  98. package/cjs/mask-hook/hooks/useNumberMask.js +1 -5
  99. package/cjs/mask-hook/hooks/usePhoneMask.js +1 -4
  100. package/cjs/mask-hook/hooks/useRegExpMask.js +4 -7
  101. package/cjs/mask-hook/hooks/useSSNMask.js +1 -4
  102. package/cjs/mask-hook/hooks/useZipCodeMask.js +1 -4
  103. package/cjs/mask-hook/utils/addSpecialCharacters.js +0 -1
  104. package/cjs/mask-hook/utils/flatStringArray.js +0 -1
  105. package/cjs/text-input/config/useInputText.js +0 -1
  106. package/cjs/text-input/styled/borders.js +18 -11
  107. package/cjs/text-input/styled/components.js +49 -10
  108. package/cjs/toggle/ControlledToggle.js +2 -3
  109. package/cjs/toggle/styles.js +7 -5
  110. package/esm/autocomplete/config/useAutocomplete.js +2 -3
  111. package/esm/autocomplete/parts/A11yFocusedOption.js +36 -0
  112. package/esm/autocomplete/parts/container/Container.js +39 -27
  113. package/esm/autocomplete/parts/container/styled.js +2 -2
  114. package/esm/autocomplete/parts/container/useKeyboardNavigation.js +2 -2
  115. package/esm/autocomplete/parts/menu-list/MenuList.js +7 -7
  116. package/esm/autocomplete/parts/menu-list/styled.js +2 -2
  117. package/esm/autocomplete/parts/menu-list/useItemRenderer.js +1 -1
  118. package/esm/autocomplete/parts/styled.js +1 -0
  119. package/esm/autocomplete/utils/listHelper.js +1 -1
  120. package/esm/checkbox/ControlledCheckbox.js +2 -2
  121. package/esm/checkbox/config/useValidateProps.js +6 -3
  122. package/esm/checkbox/react-desc-prop-types.js +2 -1
  123. package/esm/checkbox/styles.js +73 -24
  124. package/esm/checkbox/utils/styleHelpers.js +20 -2
  125. package/esm/combobox/ComboBoxCTX.js +6 -3
  126. package/esm/combobox/config/useComboBox.js +17 -7
  127. package/esm/combobox/config/useCorrectOptions.js +1 -2
  128. package/esm/combobox/parts/A11yFocusedOption.js +15 -7
  129. package/esm/combobox/parts/A11ySelectedValues.js +2 -4
  130. package/esm/combobox/parts/DropdownIndicator.js +15 -6
  131. package/esm/combobox/parts/container/Container.js +11 -14
  132. package/esm/combobox/parts/container/styled.js +11 -6
  133. package/esm/combobox/parts/controls/Controls.js +19 -27
  134. package/esm/combobox/parts/controls/styled.js +54 -18
  135. package/esm/combobox/parts/controls/useOnPillsNavigation.js +7 -15
  136. package/esm/combobox/parts/controls-input/ControlsInput.js +2 -2
  137. package/esm/combobox/parts/controls-input/styled.js +41 -7
  138. package/esm/combobox/parts/controls-input/useControlsInput.js +4 -7
  139. package/esm/combobox/parts/controls-input/useKeyboardNavigation.js +20 -29
  140. package/esm/combobox/parts/controls-input/useMaskedOnChange.js +7 -7
  141. package/esm/combobox/parts/dropdown-indicator/DropdownIndicator.js +2 -2
  142. package/esm/combobox/parts/header-list/HeaderList.js +1 -1
  143. package/esm/combobox/parts/header-list/styled.js +40 -7
  144. package/esm/combobox/parts/header-list/useHeaderListHandlers.js +7 -14
  145. package/esm/combobox/parts/menu-list/MenuList.js +8 -6
  146. package/esm/combobox/parts/menu-list/styled.js +38 -17
  147. package/esm/combobox/parts/menu-list/useItemRenderer.js +20 -19
  148. package/esm/combobox/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +1 -1
  149. package/esm/combobox/parts/multi-selected-values-container/RemovableSelectedValuePill.js +1 -3
  150. package/esm/combobox/parts/multi-selected-values-container/useGroupPills.js +1 -2
  151. package/esm/combobox/parts/styled.js +6 -3
  152. package/esm/combobox/react-desc-prop-types.js +3 -2
  153. package/esm/combobox/sharedTypes.js +2 -2
  154. package/esm/combobox/utils/listHelper.js +14 -10
  155. package/esm/date-range-picker/config/useRangePickerLogic.js +4 -8
  156. package/esm/date-range-picker/parts/ControlledDateRangeCalendar.js +0 -2
  157. package/esm/date-range-picker/parts/ControlledDateRangeFromDate.js +0 -2
  158. package/esm/date-range-picker/parts/ControlledDateRangeToDate.js +0 -2
  159. package/esm/date-time-picker/config/useChangeHandlers.js +3 -3
  160. package/esm/date-time-picker/config/useControlledDateTimePicker.js +1 -1
  161. package/esm/date-time-picker/config/useFocusTracker.js +1 -1
  162. package/esm/date-time-picker/config/useGetDestructuredValues.js +6 -6
  163. package/esm/date-time-picker/config/useGetPropsBasedOnType.js +1 -1
  164. package/esm/date-time-picker/config/useGetReferences.js +1 -1
  165. package/esm/date-time-picker/config/useRelevantValueFromProps.js +1 -1
  166. package/esm/date-time-picker/config/useValidateProps.js +42 -11
  167. package/esm/date-time-picker/parts/ClearButton/ClearButton.js +1 -3
  168. package/esm/date-time-picker/parts/DateInputs/DDInput.js +3 -7
  169. package/esm/date-time-picker/parts/DateInputs/MMInput.js +3 -7
  170. package/esm/date-time-picker/parts/DateInputs/YYYYInput.js +3 -7
  171. package/esm/date-time-picker/parts/DateInputs/useDateInputs.js +13 -23
  172. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarDaysList.js +4 -4
  173. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarHead.js +6 -14
  174. package/esm/date-time-picker/parts/Pickers/Calendar/CalendarIconTrigger.js +1 -1
  175. package/esm/date-time-picker/parts/Pickers/Calendar/Day.js +8 -10
  176. package/esm/date-time-picker/parts/Pickers/Calendar/Styleds.js +44 -14
  177. package/esm/date-time-picker/parts/Pickers/Calendar/useConfigCalendarCTX.js +1 -2
  178. package/esm/date-time-picker/parts/Pickers/Calendar/useCurrentDisplayedMonthYearLogic.js +2 -1
  179. package/esm/date-time-picker/parts/Pickers/Calendar/useFocusLogic.js +0 -1
  180. package/esm/date-time-picker/parts/Pickers/Calendar/usePopperTriggerLogic.js +3 -5
  181. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/CalendarWithTimeWheelIconTrigger.js +1 -1
  182. package/esm/date-time-picker/parts/Pickers/CalendarWithTimeWheel/useConfigCalendarWithTimeWheelCTX.js +3 -5
  183. package/esm/date-time-picker/parts/Pickers/TimeWheel/HoursList.js +5 -7
  184. package/esm/date-time-picker/parts/Pickers/TimeWheel/MeridiemList.js +6 -8
  185. package/esm/date-time-picker/parts/Pickers/TimeWheel/MinutesList.js +5 -7
  186. package/esm/date-time-picker/parts/Pickers/TimeWheel/SecondsList.js +2 -2
  187. package/esm/date-time-picker/parts/Pickers/TimeWheel/Styleds.js +47 -14
  188. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelContent.js +2 -5
  189. package/esm/date-time-picker/parts/Pickers/TimeWheel/TimeWheelIconTrigger.js +1 -1
  190. package/esm/date-time-picker/parts/Pickers/TimeWheel/useCurrentDisplayedWheelsLogic.js +3 -3
  191. package/esm/date-time-picker/parts/Pickers/TimeWheel/usePopperTriggerLogic.js +2 -5
  192. package/esm/date-time-picker/parts/Styleds.js +12 -6
  193. package/esm/date-time-picker/parts/TimeInputs/HHInput.js +2 -4
  194. package/esm/date-time-picker/parts/TimeInputs/MeridiemInput.js +3 -8
  195. package/esm/date-time-picker/parts/TimeInputs/MinutesInput.js +3 -7
  196. package/esm/date-time-picker/parts/TimeInputs/useTimeInputs.js +14 -26
  197. package/esm/date-time-picker/utils/dateHelpers.js +17 -34
  198. package/esm/date-time-picker/utils/hooks/useOnClickOutside.js +1 -3
  199. package/esm/date-time-picker/utils/stringHelpers.js +5 -11
  200. package/esm/input-group/InputGroup.js +5 -4
  201. package/esm/input-group/exported-related/data-test-ids.js +8 -0
  202. package/esm/input-group/exported-related/index.js +2 -0
  203. package/esm/input-group/exported-related/theming.js +8 -0
  204. package/esm/input-group/styled.js +89 -18
  205. package/esm/large-text-input/DSControlledLargeTextInput.js +1 -1
  206. package/esm/large-text-input/styles.js +27 -9
  207. package/esm/mask-hook/hooks/useNumberMask.js +1 -5
  208. package/esm/mask-hook/hooks/usePhoneMask.js +1 -4
  209. package/esm/mask-hook/hooks/useRegExpMask.js +4 -7
  210. package/esm/mask-hook/hooks/useSSNMask.js +1 -4
  211. package/esm/mask-hook/hooks/useZipCodeMask.js +1 -4
  212. package/esm/mask-hook/utils/addSpecialCharacters.js +0 -1
  213. package/esm/mask-hook/utils/flatStringArray.js +0 -1
  214. package/esm/text-input/config/useInputText.js +0 -1
  215. package/esm/text-input/styled/borders.js +18 -7
  216. package/esm/text-input/styled/components.js +49 -6
  217. package/esm/toggle/ControlledToggle.js +2 -3
  218. package/esm/toggle/styles.js +7 -5
  219. package/package.json +35 -15
  220. package/types/autocomplete/parts/A11yFocusedOption.d.ts +5 -0
  221. package/types/autocomplete/parts/container/styled.d.ts +1 -1
  222. package/types/autocomplete/parts/styled.d.ts +0 -0
  223. package/types/autocomplete/utils/listHelper.d.ts +5 -5
  224. package/types/checkbox/react-desc-prop-types.d.ts +1 -1
  225. package/types/checkbox/styles.d.ts +1 -0
  226. package/types/combobox/parts/menu-list/styled.d.ts +1 -0
  227. package/types/combobox/react-desc-prop-types.d.ts +8 -6
  228. package/types/combobox/sharedTypes.d.ts +3 -2
  229. package/types/combobox/utils/listHelper.d.ts +1 -0
  230. package/types/input-group/exported-related/data-test-ids.d.ts +6 -0
  231. package/types/input-group/exported-related/index.d.ts +2 -0
  232. package/types/input-group/exported-related/theming.d.ts +6 -0
  233. package/types/input-group/styled.d.ts +4 -7
  234. package/types/text-input/config/useInputText.d.ts +4 -4
@@ -3,7 +3,6 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- require('core-js/modules/web.dom-collections.iterator.js');
7
6
  require('core-js/modules/esnext.async-iterator.filter.js');
8
7
  require('core-js/modules/esnext.iterator.constructor.js');
9
8
  require('core-js/modules/esnext.iterator.filter.js');
@@ -0,0 +1,46 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('core-js/modules/esnext.async-iterator.find.js');
7
+ require('core-js/modules/esnext.iterator.constructor.js');
8
+ require('core-js/modules/esnext.iterator.find.js');
9
+ var React = require('react');
10
+ var dsSystem = require('@elliemae/ds-system');
11
+ var AutocompleteCTX = require('../AutocompleteCTX.js');
12
+ var listHelper = require('../utils/listHelper.js');
13
+
14
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
15
+
16
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
17
+
18
+ const isSeparator = el => el?.type === 'separator';
19
+ const StyledA11ySelectedValues = dsSystem.styled.span`
20
+ width: 1px;
21
+ height: 1px;
22
+ position: absolute;
23
+ clip: rect(1px, 1px, 1px, 1px);
24
+ `;
25
+ const A11yFocusedOption = () => {
26
+ const {
27
+ props: {
28
+ options
29
+ },
30
+ focusOptionIdx,
31
+ showPopover
32
+ } = React.useContext(AutocompleteCTX.AutocompleteContext);
33
+ return React.useMemo(() => {
34
+ const selectabledOptions = listHelper.getSelectableOptions(options);
35
+ const focusOption = options.find(option => !isSeparator(option) && option.dsId === focusOptionIdx);
36
+ const focusSelectableOptionIdx = selectabledOptions.findIndex(option => option.dsId === focusOptionIdx);
37
+ return /*#__PURE__*/_jsx__default["default"](StyledA11ySelectedValues, {
38
+ "aria-live": "polite"
39
+ }, void 0, !isSeparator(focusOption) && showPopover && focusOption && `option ${focusOption.label} focused.${focusSelectableOptionIdx + 1} of ${selectabledOptions.length}
40
+ `);
41
+ }, [options, showPopover, focusOptionIdx]);
42
+ };
43
+
44
+ exports.A11yFocusedOption = A11yFocusedOption;
45
+ exports.StyledA11ySelectedValues = StyledA11ySelectedValues;
46
+ exports.isSeparator = isSeparator;
@@ -13,6 +13,7 @@ var styled = require('./styled.js');
13
13
  var MenuList = require('../menu-list/MenuList.js');
14
14
  var useKeyboardNavigation = require('./useKeyboardNavigation.js');
15
15
  var AutocompleteDataTestids = require('../../AutocompleteDataTestids.js');
16
+ var A11yFocusedOption = require('../A11yFocusedOption.js');
16
17
  var jsxRuntime = require('react/jsx-runtime');
17
18
 
18
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -20,10 +21,11 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
20
21
  var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
21
22
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
22
23
 
23
- var _StyledPopperWrapper;
24
+ var _A11yFocusedOption, _StyledPopperWrapper;
24
25
  const Container = () => {
25
26
  const {
26
27
  props: {
28
+ id,
27
29
  startPlacementPreference,
28
30
  children,
29
31
  filter,
@@ -32,6 +34,7 @@ const Container = () => {
32
34
  showPopover,
33
35
  setReferenceElement,
34
36
  setShowPopover,
37
+ focusOptionIdx,
35
38
  referenceElement
36
39
  } = React.useContext(AutocompleteCTX.AutocompleteContext);
37
40
  React.useEffect(() => {
@@ -47,32 +50,41 @@ const Container = () => {
47
50
  const handleCloseMenu = React.useCallback(() => {
48
51
  setShowPopover(false);
49
52
  }, [setShowPopover]);
50
- const input = React__default["default"].Children.only(children);
51
53
  const {
52
54
  onInputKeyDown
53
55
  } = 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, {
63
- customOffset: [0, 5],
64
- closeContextMenu: handleCloseMenu,
65
- referenceElement: referenceElement,
66
- showPopover: showPopover,
67
- startPlacementPreference: startPlacementPreference,
68
- placementOrderPreference: placementOrderPreference,
69
- withoutPortal: true,
70
- withoutArrow: true,
71
- withoutAnimation: true,
72
- zIndex: 10
73
- }, void 0, _StyledPopperWrapper || (_StyledPopperWrapper = /*#__PURE__*/_jsx__default["default"](styled.StyledPopperWrapper, {
74
- tabIndex: -1
75
- }, void 0, /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {}))))]
56
+ const input = React__default["default"].Children.only(children);
57
+ const childrenWithProps = /*#__PURE__*/React__default["default"].isValidElement(input) ? /*#__PURE__*/React__default["default"].cloneElement(input, {
58
+ 'aria-activedescendant': focusOptionIdx
59
+ }) : input;
60
+ const idList = React.useMemo(() => `${id ? `${id}-` : ''}listbox`, [id]);
61
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
62
+ children: [_A11yFocusedOption || (_A11yFocusedOption = /*#__PURE__*/_jsx__default["default"](A11yFocusedOption.A11yFocusedOption, {})), /*#__PURE__*/jsxRuntime.jsxs(styled.StyledContainer, {
63
+ id: id,
64
+ ref: setReferenceElement,
65
+ role: "combobox",
66
+ "aria-autocomplete": "list",
67
+ "aria-controls": "autocomplete-listbox",
68
+ "aria-expanded": showPopover,
69
+ "aria-haspopup": "listbox",
70
+ "aria-owns": idList,
71
+ onKeyDown: onInputKeyDown,
72
+ "data-testid": AutocompleteDataTestids.AutocompleteDataTestid.CONTAINER,
73
+ children: [childrenWithProps, filter && /*#__PURE__*/_jsx__default["default"](dsPopperjs.DSPopperJS, {
74
+ customOffset: [0, 5],
75
+ closeContextMenu: handleCloseMenu,
76
+ referenceElement: referenceElement,
77
+ showPopover: showPopover,
78
+ startPlacementPreference: startPlacementPreference,
79
+ placementOrderPreference: placementOrderPreference,
80
+ withoutPortal: true,
81
+ withoutArrow: true,
82
+ withoutAnimation: true,
83
+ zIndex: 10
84
+ }, void 0, _StyledPopperWrapper || (_StyledPopperWrapper = /*#__PURE__*/_jsx__default["default"](styled.StyledPopperWrapper, {
85
+ tabIndex: -1
86
+ }, void 0, /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {}))))]
87
+ })]
76
88
  });
77
89
  };
78
90
 
@@ -8,12 +8,12 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
8
8
 
9
9
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
10
 
11
- const StyledContainerWithPopper = /*#__PURE__*/styled__default["default"].div.withConfig({
11
+ const StyledContainer = /*#__PURE__*/styled__default["default"].div.withConfig({
12
12
  componentId: "sc-xupfk9-0"
13
13
  })(["width:100%;height:28px;position:relative;"]);
14
14
  const StyledPopperWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
15
15
  componentId: "sc-xupfk9-1"
16
16
  })(["background:#fff;overflow:auto;position:relative;"]);
17
17
 
18
- exports.StyledContainerWithPopper = StyledContainerWithPopper;
18
+ exports.StyledContainer = StyledContainer;
19
19
  exports.StyledPopperWrapper = StyledPopperWrapper;
@@ -35,7 +35,7 @@ const useKeyboardNavigation = () => {
35
35
 
36
36
  if (e.key === 'Enter' && showPopover) {
37
37
  e.preventDefault();
38
- onSelect(currentItem === null || currentItem === void 0 ? void 0 : currentItem.label, e);
38
+ onSelect(currentItem?.label, e);
39
39
  setShowPopover(false);
40
40
  } // =============================================================================
41
41
  // ARROWS UP AND DOWN
@@ -68,7 +68,7 @@ const useKeyboardNavigation = () => {
68
68
  if (e.key === 'Escape') {
69
69
  setShowPopover(false);
70
70
  }
71
- }, [currentItem === null || currentItem === void 0 ? void 0 : currentItem.label, currentItemIndex, onSelect, options, scrollOptionIntoView, setCurrentOption, setShowPopover, showPopover]);
71
+ }, [currentItem?.label, currentItemIndex, onSelect, options, scrollOptionIntoView, setCurrentOption, setShowPopover, showPopover]);
72
72
  return {
73
73
  onInputKeyDown
74
74
  };
@@ -17,7 +17,8 @@ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
17
17
  const MenuList = () => {
18
18
  const {
19
19
  props: {
20
- options
20
+ options,
21
+ id
21
22
  },
22
23
  referenceElement,
23
24
  inputRef,
@@ -29,15 +30,14 @@ const MenuList = () => {
29
30
  } = React.useContext(AutocompleteCTX.AutocompleteContext);
30
31
  const ItemRenderer = useItemRenderer.useItemRenderer();
31
32
  const handleOnFocus = React.useCallback(() => {
32
- var _inputRef$current;
33
-
34
- (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.focus();
33
+ inputRef.current?.focus();
35
34
  }, [inputRef]);
35
+ const idList = React.useMemo(() => `${id ? `${id}-` : ''}listbox`, [id]);
36
36
  return /*#__PURE__*/_jsx__default["default"](styled.StyledListWrapper, {
37
37
  tabIndex: -1,
38
38
  onMouseDown: e => e.preventDefault(),
39
- minWidth: referenceElement === null || referenceElement === void 0 ? void 0 : referenceElement.offsetWidth,
40
- id: "autocomplete-listbox",
39
+ minWidth: referenceElement?.offsetWidth,
40
+ id: idList,
41
41
  role: "listbox"
42
42
  }, void 0, options.length > 0 && /*#__PURE__*/jsxRuntime.jsx(styled.StyledVirtualListWrapper, {
43
43
  tabIndex: -1,
@@ -14,7 +14,7 @@ const StyledListWrapper = /*#__PURE__*/styled__default["default"].div.withConfig
14
14
  let {
15
15
  minWidth
16
16
  } = _ref;
17
- return minWidth ? "".concat(minWidth, "px") : '100%';
17
+ return minWidth ? `${minWidth}px` : '100%';
18
18
  });
19
19
  const StyledList = /*#__PURE__*/styled__default["default"].ul.withConfig({
20
20
  componentId: "sc-qt1kwv-1"
@@ -25,7 +25,7 @@ const StyledVirtualListWrapper = /*#__PURE__*/styled__default["default"].div.wit
25
25
  let {
26
26
  maxHeight
27
27
  } = _ref2;
28
- return "".concat(!maxHeight ? '400' : maxHeight, "px");
28
+ return `${!maxHeight ? '400' : maxHeight}px`;
29
29
  });
30
30
 
31
31
  exports.StyledList = StyledList;
@@ -51,7 +51,7 @@ const useItemRenderer = () => {
51
51
  left: 0,
52
52
  width: '100%'
53
53
  },
54
- key: "".concat(option.dsId),
54
+ key: `${option.dsId}`,
55
55
  innerRef: vItem.measureRef
56
56
  };
57
57
 
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -13,7 +13,7 @@ const isSelectedValueMultiple = value => Array.isArray(value);
13
13
  const findInCircularList = function (list, from, criteria) {
14
14
  let step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
15
15
 
16
- for (let i = (from + step + list.length) % list.length; i !== from; i = (i + step + list.length) % list.length) {
16
+ for (let i = (from + step + list.length) % list.length; i !== from && from > -1; i = (i + step + list.length) % list.length) {
17
17
  if (criteria(list[i])) return i;
18
18
  }
19
19
 
@@ -108,7 +108,7 @@ const DSControlledCheckbox = props => {
108
108
  checked: checked,
109
109
  "data-testid": "ds-checkbox-label",
110
110
  wrapLabel: wrapLabel
111
- }, void 0, wrapLabel ? label : /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
111
+ }, void 0, wrapLabel ? /*#__PURE__*/_jsx__default["default"](styles.StyledWrapLabel, {}, void 0, label) : /*#__PURE__*/_jsx__default["default"](dsTruncatedTooltipText.SimpleTruncatedTooltipText, {
112
112
  value: label
113
113
  }))]
114
114
  }));
@@ -2,21 +2,24 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ require('core-js/modules/es.error.cause.js');
5
6
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
6
7
 
7
8
  const throwError = message => {
8
- throw new Error("DSControlledCheckbox:: ".concat(message, "\n "));
9
+ throw new Error(`DSControlledCheckbox:: ${message}
10
+ `);
9
11
  };
10
12
 
11
13
  const useValidateProps = (props, propTypes) => {
12
14
  dsPropsHelpers.useValidateTypescriptPropTypes(props, propTypes);
13
15
 
14
16
  if (typeof props.label === 'undefined' && typeof props['aria-label'] === 'undefined') {
15
- throwError("Please provide a label or ariaLabel property to use this component.");
17
+ throwError(`Please provide a label or ariaLabel property to use this component.`);
16
18
  }
17
19
 
18
20
  if (props.checked === 'mixed' && typeof props['aria-controls'] === 'undefined') {
19
- throwError("Please provide an ariaControls property to use a checkbox mixed state. \n This property must be a string containing all the ids that this mixed checkbox is controlling.");
21
+ throwError(`Please provide an ariaControls property to use a checkbox mixed state.
22
+ This property must be a string containing all the ids that this mixed checkbox is controlling.`);
20
23
  }
21
24
  };
22
25
 
@@ -26,7 +26,8 @@ const defaultProps = {
26
26
  const propTypes = _objectSpread(_objectSpread({}, dsPropsHelpers.globalAttributesPropTypes), {}, {
27
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
28
  hasError: dsPropsHelpers.PropTypes.bool.description('Whether the checkbox has error or not.'),
29
- innerRef: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.func, dsPropsHelpers.PropTypes.object]).description('Checkbox input ref.')
29
+ innerRef: dsPropsHelpers.PropTypes.oneOfType([dsPropsHelpers.PropTypes.func, dsPropsHelpers.PropTypes.object]).description('Checkbox input ref.'),
30
+ wrapLabel: dsPropsHelpers.PropTypes.bool.description('Whether to wrap or truncate the label')
30
31
  });
31
32
 
32
33
  exports.defaultProps = defaultProps;
@@ -2,48 +2,54 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
6
5
  var dsSystem = require('@elliemae/ds-system');
7
6
  var styleHelpers = require('./utils/styleHelpers.js');
8
7
  var theming = require('./exported-related/theming.js');
9
8
 
10
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
-
12
- var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
13
-
14
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
15
9
  const StyledContainer = dsSystem.styled('div', {
16
10
  name: theming.DSCheckboxName,
17
11
  slot: theming.DSCheckboxSlots.CONTAINER
18
- })(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n display: inline-grid;\n grid-template-rows: min-content;\n grid-template-columns: ", " auto;\n align-items: center;\n"])), _ref => {
12
+ })`
13
+ display: inline-grid;
14
+ grid-template-rows: min-content;
15
+ grid-template-columns: ${_ref => {
19
16
  let {
20
17
  theme
21
18
  } = _ref;
22
19
  return theme.space.xs;
23
- });
24
- const StyledCheckBox = dsSystem.styled('span')(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n width: ", ";\n height: ", ";\n border: 1px solid ", ";\n border-radius: 2px;\n position: relative;\n background: ", ";\n ", "\n &:focus-within {\n ", ";\n &:hover {\n ", "\n }\n }\n &:hover {\n background: ", ";\n ", ";\n }\n"])), _ref2 => {
20
+ }} auto;
21
+ align-items: center;
22
+ `;
23
+ const StyledCheckBox = dsSystem.styled('span')`
24
+ width: ${_ref2 => {
25
25
  let {
26
26
  theme
27
27
  } = _ref2;
28
28
  return theme.space.xs;
29
- }, _ref3 => {
29
+ }};
30
+ height: ${_ref3 => {
30
31
  let {
31
32
  theme
32
33
  } = _ref3;
33
34
  return theme.space.xs;
34
- }, _ref4 => {
35
+ }};
36
+ border: 1px solid ${_ref4 => {
35
37
  let {
36
38
  theme,
37
39
  hasError
38
40
  } = _ref4;
39
41
  return hasError ? theme.colors.danger[900] : theme.colors.neutral[400];
40
- }, _ref5 => {
42
+ }};
43
+ border-radius: 2px;
44
+ position: relative;
45
+ background: ${_ref5 => {
41
46
  let {
42
47
  theme,
43
48
  disabled
44
49
  } = _ref5;
45
50
  return styleHelpers.handleBackgroundColor(theme, disabled);
46
- }, _ref6 => {
51
+ }};
52
+ ${_ref6 => {
47
53
  let {
48
54
  theme,
49
55
  checked,
@@ -52,14 +58,18 @@ const StyledCheckBox = dsSystem.styled('span')(_templateObject2 || (_templateObj
52
58
  hasError
53
59
  } = _ref6;
54
60
  return styleHelpers.handleCheckmark(theme, checked, disabled, readOnly, hasError);
55
- }, _ref7 => {
61
+ }}
62
+ &:focus-within {
63
+ ${_ref7 => {
56
64
  let {
57
65
  theme,
58
66
  hasError,
59
67
  disabled
60
68
  } = _ref7;
61
- return !disabled && !hasError ? "border: 1px solid ".concat(theme.colors.brand[700], "; outline : 1px solid ").concat(theme.colors.brand[700], " ") : undefined;
62
- }, _ref8 => {
69
+ return !disabled && !hasError ? `border: 1px solid ${theme.colors.brand[700]}; outline : 1px solid ${theme.colors.brand[700]} ` : undefined;
70
+ }};
71
+ &:hover {
72
+ ${_ref8 => {
63
73
  let {
64
74
  theme,
65
75
  checked,
@@ -68,41 +78,71 @@ const StyledCheckBox = dsSystem.styled('span')(_templateObject2 || (_templateObj
68
78
  hasError
69
79
  } = _ref8;
70
80
  return styleHelpers.handleCheckmark(theme, checked, disabled, readOnly, hasError, true);
71
- }, _ref9 => {
81
+ }}
82
+ }
83
+ }
84
+ &:hover {
85
+ background: ${_ref9 => {
72
86
  let {
73
87
  theme,
74
88
  checked,
75
89
  disabled
76
90
  } = _ref9;
77
91
  return !disabled && (checked === 'mixed' || checked) ? theme.colors.brand[200] : undefined;
78
- }, _ref10 => {
92
+ }};
93
+ ${_ref10 => {
79
94
  let {
80
95
  theme,
81
96
  hasError,
82
97
  disabled,
83
98
  readOnly
84
99
  } = _ref10;
85
- return !hasError && !disabled && !readOnly ? " border: 1px solid ".concat(theme.colors.brand[600]) : undefined;
86
- });
87
- const checkboxStyles = dsSystem.css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral__default["default"](["\n &:hover {\n cursor: pointer;\n }\n &:disabled {\n cursor: not-allowed;\n }\n width: 100%;\n height: 100%;\n position: absolute;\n top: 0;\n left: 0;\n opacity: 0;\n"])));
100
+ return !hasError && !disabled && !readOnly ? ` border: 1px solid ${theme.colors.brand[600]}` : undefined;
101
+ }};
102
+ }
103
+ `;
104
+ const checkboxStyles = dsSystem.css`
105
+ &:hover {
106
+ cursor: pointer;
107
+ }
108
+ &:disabled {
109
+ cursor: not-allowed;
110
+ }
111
+ width: 100%;
112
+ height: 100%;
113
+ position: absolute;
114
+ top: 0;
115
+ left: 0;
116
+ opacity: 0;
117
+ `;
88
118
  const StyledInput = dsSystem.styled('input', {
89
119
  name: theming.DSCheckboxName,
90
120
  slot: theming.DSCheckboxSlots.INPUT
91
- })(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), checkboxStyles);
121
+ })`
122
+ ${checkboxStyles}
123
+ `;
92
124
  const StyledInputMixed = dsSystem.styled('div', {
93
125
  name: theming.DSCheckboxName,
94
126
  slot: theming.DSCheckboxSlots.INPUT
95
- })(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral__default["default"](["\n ", "\n"])), checkboxStyles);
127
+ })`
128
+ ${checkboxStyles}
129
+ `;
96
130
  const StyledLabel = dsSystem.styled('label', {
97
131
  name: theming.DSCheckboxName,
98
132
  slot: theming.DSCheckboxSlots.LABEL
99
- })(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral__default["default"](["\n &:hover {\n cursor: pointer;\n }\n ", ";\n\n color: ", ";\n font-size: 13px;\n line-height: 13px;\n display: inherit;\n"])), _ref11 => {
133
+ })`
134
+ &:hover {
135
+ cursor: pointer;
136
+ }
137
+ ${_ref11 => {
100
138
  let {
101
139
  wrapLabel,
102
140
  theme
103
141
  } = _ref11;
104
- return wrapLabel ? 'padding: 8px' : "padding-left: ".concat(theme.space.xxs);
105
- }, _ref12 => {
142
+ return wrapLabel ? 'padding: 8px 0px 8px 8px;' : `padding-left: ${theme.space.xxs}`;
143
+ }};
144
+
145
+ color: ${_ref12 => {
106
146
  let {
107
147
  theme,
108
148
  disabled,
@@ -110,10 +150,16 @@ const StyledLabel = dsSystem.styled('label', {
110
150
  checked
111
151
  } = _ref12;
112
152
  return disabled && checked !== true || readOnly ? theme.colors.neutral[500] : theme.colors.neutral[800];
113
- });
153
+ }};
154
+ font-size: 13px;
155
+ line-height: 13px;
156
+ display: inherit;
157
+ `;
158
+ const StyledWrapLabel = dsSystem.styled('span')``;
114
159
 
115
160
  exports.StyledCheckBox = StyledCheckBox;
116
161
  exports.StyledContainer = StyledContainer;
117
162
  exports.StyledInput = StyledInput;
118
163
  exports.StyledInputMixed = StyledInputMixed;
119
164
  exports.StyledLabel = StyledLabel;
165
+ exports.StyledWrapLabel = StyledWrapLabel;
@@ -26,11 +26,29 @@ const handleCheckmark = function (theme, checked, disabled, readOnly, hasError)
26
26
  let isHovering = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
27
27
 
28
28
  if (checked === 'mixed') {
29
- return "&:before {\n position: absolute;\n content: '';\n top: 6px;\n left: 3px;\n background: ".concat(handleCheckMarkColor(theme, checked, isHovering, disabled, readOnly, hasError), ";\n width: ").concat(theme.space.xxs, ";\n height: 2px;\n }");
29
+ return `&:before {
30
+ position: absolute;
31
+ content: '';
32
+ top: 6px;
33
+ left: 3px;
34
+ background: ${handleCheckMarkColor(theme, checked, isHovering, disabled, readOnly, hasError)};
35
+ width: ${theme.space.xxs};
36
+ height: 2px;
37
+ }`;
30
38
  }
31
39
 
32
40
  if (checked) {
33
- return "&:before {\n position: absolute;\n content: '';\n top: 3px;\n left: 2px;\n border-left: 2px solid ".concat(handleCheckMarkColor(theme, checked, isHovering, disabled, readOnly, hasError), ";\n border-bottom: 2px solid ").concat(handleCheckMarkColor(theme, checked, isHovering, disabled, readOnly, hasError), ";\n height: 5px;\n width: 10px;\n transform: rotate(-45deg);\n }");
41
+ return `&:before {
42
+ position: absolute;
43
+ content: '';
44
+ top: 3px;
45
+ left: 2px;
46
+ border-left: 2px solid ${handleCheckMarkColor(theme, checked, isHovering, disabled, readOnly, hasError)};
47
+ border-bottom: 2px solid ${handleCheckMarkColor(theme, checked, isHovering, disabled, readOnly, hasError)};
48
+ height: 5px;
49
+ width: 10px;
50
+ transform: rotate(-45deg);
51
+ }`;
34
52
  }
35
53
 
36
54
  return '';
@@ -16,12 +16,14 @@ const defaultProps = {
16
16
  useMask: noop,
17
17
  innerRef: /*#__PURE__*/React.createRef(),
18
18
  startPlacementPreference: 'bottom-start',
19
- placementOrderPreference: ['bottom-start', 'bottom-end'] // override in useCombobox to avoid ref duplications when more than one cb is used
19
+ placementOrderPreference: ['bottom-start', 'bottom-end'],
20
+ noOptionsMessage: 'No Matches Found',
21
+ filteredOptions: [] // override in useCombobox to avoid ref duplications when more than one cb is used
20
22
 
21
23
  };
22
24
  const defaultContext = {
23
25
  props: defaultProps,
24
- showPopover: false,
26
+ menuState: false,
25
27
  hasFocus: false,
26
28
  referenceElement: null,
27
29
  inputValue: '',
@@ -40,7 +42,8 @@ const defaultContext = {
40
42
  setInputValue: noop,
41
43
  setReferenceElement: noop,
42
44
  setFocusOptionIdx: noop,
43
- setShowSelectedOptions: noop
45
+ setShowSelectedOptions: noop,
46
+ setMenuState: noop
44
47
  };
45
48
  /** Context for cross component communication */
46
49
 
@@ -2,13 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
- require('core-js/modules/web.dom-collections.iterator.js');
7
5
  require('core-js/modules/esnext.async-iterator.filter.js');
8
6
  require('core-js/modules/esnext.iterator.constructor.js');
9
7
  require('core-js/modules/esnext.iterator.filter.js');
10
8
  require('core-js/modules/esnext.async-iterator.for-each.js');
11
9
  require('core-js/modules/esnext.iterator.for-each.js');
10
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
11
  var React = require('react');
13
12
  var reactVirtual = require('react-virtual');
14
13
  var dsPropsHelpers = require('@elliemae/ds-props-helpers');
@@ -44,8 +43,18 @@ const useComboBox = props => {
44
43
  const toggleSelectionButtonRef = React.useRef(null);
45
44
  const pillGroupRef = React.useRef(null);
46
45
  const {
47
- selectedValues
48
- } = propsWithDefaults; // ---------------------------------------------------------------------------
46
+ selectedValues,
47
+ isMenuOpen,
48
+ onMenuChange
49
+ } = propsWithDefaults;
50
+ const menuState = React.useMemo(() => {
51
+ if (isMenuOpen !== undefined) return isMenuOpen;
52
+ return showPopover;
53
+ }, [showPopover, isMenuOpen]);
54
+ const setMenuState = React.useCallback((newState, reason, e) => {
55
+ if (onMenuChange !== undefined) onMenuChange(newState, reason, e);
56
+ setShowPopover(newState);
57
+ }, [onMenuChange]); // ---------------------------------------------------------------------------
49
58
  // Options with creatable option + filtered by selected
50
59
  // ---------------------------------------------------------------------------
51
60
 
@@ -99,7 +108,7 @@ const useComboBox = props => {
99
108
  filteredOptions: correctOptions
100
109
  }),
101
110
  virtualListHelpers,
102
- showPopover,
111
+ menuState,
103
112
  referenceElement,
104
113
  listRef,
105
114
  focusOptionIdx,
@@ -108,6 +117,7 @@ const useComboBox = props => {
108
117
  selectAllCheckboxRef,
109
118
  inputValue,
110
119
  setInputValue,
120
+ setMenuState,
111
121
  hasFocus,
112
122
  toggleSelectionButtonRef,
113
123
  pillGroupRef,
@@ -119,7 +129,7 @@ const useComboBox = props => {
119
129
  scrollOptionIntoView,
120
130
  setReferenceElement,
121
131
  setShowPopover
122
- }), [scrollOptionIntoView, correctOptions, hasFocus, propsWithDefaults, virtualListHelpers, inputValue, focusOptionIdx, wrapperListRef, showSelectedOptions, showPopover, pillGroupRef, referenceElement, selectedOptionsRef, controlsWrapperRef, selectAllCheckboxRef, toggleSelectionButtonRef, listRef]);
132
+ }), [scrollOptionIntoView, setMenuState, correctOptions, hasFocus, propsWithDefaults, virtualListHelpers, inputValue, focusOptionIdx, wrapperListRef, showSelectedOptions, menuState, pillGroupRef, referenceElement, selectedOptionsRef, controlsWrapperRef, selectAllCheckboxRef, toggleSelectionButtonRef, listRef]);
123
133
  return ctx;
124
134
  };
125
135
 
@@ -2,7 +2,6 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('core-js/modules/web.dom-collections.iterator.js');
6
5
  var React = require('react');
7
6
  var uid = require('uid');
8
7
  var constants = require('../constants.js');
@@ -28,7 +27,7 @@ const useCorrectOptions = (propsWithDefaults, inputValue, showSelectedOptions) =
28
27
  if (onCreate && inputValue && filteredOptions.findIndex(option => option.type === constants.MENU_OPTION_TYPES.OPTION && option.label === inputValue) === -1) {
29
28
  const creatableUuid = uid.uid();
30
29
  const creatableItem = {
31
- dsId: "creatable-".concat(creatableUuid),
30
+ dsId: `creatable-${creatableUuid}`,
32
31
  label: inputValue,
33
32
  type: 'creatable'
34
33
  };