@elliemae/ds-form 2.1.0-rc.7 → 2.2.0-alpha.1

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 (152) hide show
  1. package/cjs/ComboBox/index.js +3 -0
  2. package/cjs/ComboBox/v3/ComboBox.js +33 -0
  3. package/cjs/ComboBox/v3/ComboBoxCTX.js +55 -0
  4. package/cjs/ComboBox/v3/ComboboxDataTestids.js +17 -0
  5. package/cjs/ComboBox/v3/config/constants.js +14 -0
  6. package/cjs/ComboBox/v3/config/useComboBox.js +122 -0
  7. package/cjs/ComboBox/v3/config/useGetPropsWithDefault.js +11 -0
  8. package/cjs/ComboBox/v3/index.d.js +2 -0
  9. package/cjs/ComboBox/v3/index.js +10 -0
  10. package/cjs/ComboBox/v3/parts/a11y-messages/MultiAllyMessages.js +33 -0
  11. package/cjs/ComboBox/v3/parts/a11y-messages/SingleAllyMessages.js +28 -0
  12. package/cjs/ComboBox/v3/parts/a11y-messages/index.js +11 -0
  13. package/cjs/ComboBox/v3/parts/a11y-messages/styled.js +15 -0
  14. package/cjs/ComboBox/v3/parts/container/Container.js +67 -0
  15. package/cjs/ComboBox/v3/parts/container/index.js +9 -0
  16. package/cjs/ComboBox/v3/parts/container/styled.js +23 -0
  17. package/cjs/ComboBox/v3/parts/controls/Controls.js +71 -0
  18. package/cjs/ComboBox/v3/parts/controls/index.js +9 -0
  19. package/cjs/ComboBox/v3/parts/controls/styled.js +65 -0
  20. package/cjs/ComboBox/v3/parts/controls-input/ControlsInput.js +67 -0
  21. package/cjs/ComboBox/v3/parts/controls-input/styled.js +27 -0
  22. package/cjs/ComboBox/v3/parts/controls-input/useControlsInput.js +77 -0
  23. package/cjs/ComboBox/v3/parts/dropdown-indicator/DropdownIndicator.js +33 -0
  24. package/cjs/ComboBox/v3/parts/dropdown-indicator/index.js +2 -0
  25. package/cjs/ComboBox/v3/parts/dropdown-indicator/styled.js +17 -0
  26. package/cjs/ComboBox/v3/parts/empty-state/index.js +27 -0
  27. package/cjs/ComboBox/v3/parts/empty-state/styled.js +19 -0
  28. package/cjs/ComboBox/v3/parts/header-list/HeaderList.js +113 -0
  29. package/cjs/ComboBox/v3/parts/header-list/index.js +9 -0
  30. package/cjs/ComboBox/v3/parts/header-list/styled.js +58 -0
  31. package/cjs/ComboBox/v3/parts/header-list/useHeaderListHandlers.js +73 -0
  32. package/cjs/ComboBox/v3/parts/menu-list/MenuList.js +81 -0
  33. package/cjs/ComboBox/v3/parts/menu-list/index.js +9 -0
  34. package/cjs/ComboBox/v3/parts/menu-list/styled.js +33 -0
  35. package/cjs/ComboBox/v3/parts/menu-list/useItemRenderer.js +105 -0
  36. package/cjs/ComboBox/v3/parts/menu-list/useMenuList.js +61 -0
  37. package/cjs/ComboBox/v3/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +63 -0
  38. package/cjs/ComboBox/v3/parts/multi-selected-values-container/index.js +9 -0
  39. package/cjs/ComboBox/v3/parts/multi-selected-values-container/styled.js +23 -0
  40. package/cjs/ComboBox/v3/parts/multi-selected-values-container/useGroupPills.js +71 -0
  41. package/cjs/ComboBox/v3/parts/single-selected-value-container/SingleSelectedValueContainer.js +28 -0
  42. package/cjs/ComboBox/v3/parts/single-selected-value-container/index.js +9 -0
  43. package/cjs/ComboBox/v3/parts/single-selected-value-container/styled.js +15 -0
  44. package/cjs/ComboBox/v3/propTypes.js +25 -0
  45. package/cjs/ComboBox/v3/utils/hooks/useKeyboardNavigation.js +152 -0
  46. package/cjs/ComboBox/v3/utils/hooks/useOnElementResize.js +37 -0
  47. package/cjs/ComboBox/v3/utils/listHelper.js +39 -0
  48. package/cjs/ComboBoxFreeSolo/ComboBoxFreeSolo.js +1 -0
  49. package/cjs/index.js +2 -0
  50. package/esm/ComboBox/index.js +1 -0
  51. package/esm/ComboBox/v3/ComboBox.js +24 -0
  52. package/esm/ComboBox/v3/ComboBoxCTX.js +49 -0
  53. package/esm/ComboBox/v3/ComboboxDataTestids.js +13 -0
  54. package/esm/ComboBox/v3/config/constants.js +10 -0
  55. package/esm/ComboBox/v3/config/useComboBox.js +114 -0
  56. package/esm/ComboBox/v3/config/useGetPropsWithDefault.js +7 -0
  57. package/esm/ComboBox/v3/index.d.js +1 -0
  58. package/esm/ComboBox/v3/index.js +1 -0
  59. package/esm/ComboBox/v3/parts/a11y-messages/MultiAllyMessages.js +25 -0
  60. package/esm/ComboBox/v3/parts/a11y-messages/SingleAllyMessages.js +20 -0
  61. package/esm/ComboBox/v3/parts/a11y-messages/index.js +2 -0
  62. package/esm/ComboBox/v3/parts/a11y-messages/styled.js +7 -0
  63. package/esm/ComboBox/v3/parts/container/Container.js +59 -0
  64. package/esm/ComboBox/v3/parts/container/index.js +1 -0
  65. package/esm/ComboBox/v3/parts/container/styled.js +13 -0
  66. package/esm/ComboBox/v3/parts/controls/Controls.js +63 -0
  67. package/esm/ComboBox/v3/parts/controls/index.js +1 -0
  68. package/esm/ComboBox/v3/parts/controls/styled.js +52 -0
  69. package/esm/ComboBox/v3/parts/controls-input/ControlsInput.js +59 -0
  70. package/esm/ComboBox/v3/parts/controls-input/styled.js +16 -0
  71. package/esm/ComboBox/v3/parts/controls-input/useControlsInput.js +73 -0
  72. package/esm/ComboBox/v3/parts/dropdown-indicator/DropdownIndicator.js +26 -0
  73. package/esm/ComboBox/v3/parts/dropdown-indicator/index.js +1 -0
  74. package/esm/ComboBox/v3/parts/dropdown-indicator/styled.js +8 -0
  75. package/esm/ComboBox/v3/parts/empty-state/index.js +19 -0
  76. package/esm/ComboBox/v3/parts/empty-state/styled.js +10 -0
  77. package/esm/ComboBox/v3/parts/header-list/HeaderList.js +105 -0
  78. package/esm/ComboBox/v3/parts/header-list/index.js +1 -0
  79. package/esm/ComboBox/v3/parts/header-list/styled.js +41 -0
  80. package/esm/ComboBox/v3/parts/header-list/useHeaderListHandlers.js +69 -0
  81. package/esm/ComboBox/v3/parts/menu-list/MenuList.js +73 -0
  82. package/esm/ComboBox/v3/parts/menu-list/index.js +1 -0
  83. package/esm/ComboBox/v3/parts/menu-list/styled.js +23 -0
  84. package/esm/ComboBox/v3/parts/menu-list/useItemRenderer.js +97 -0
  85. package/esm/ComboBox/v3/parts/menu-list/useMenuList.js +57 -0
  86. package/esm/ComboBox/v3/parts/multi-selected-values-container/MultiSelectedValuesContainer.js +54 -0
  87. package/esm/ComboBox/v3/parts/multi-selected-values-container/index.js +1 -0
  88. package/esm/ComboBox/v3/parts/multi-selected-values-container/styled.js +13 -0
  89. package/esm/ComboBox/v3/parts/multi-selected-values-container/useGroupPills.js +67 -0
  90. package/esm/ComboBox/v3/parts/single-selected-value-container/SingleSelectedValueContainer.js +20 -0
  91. package/esm/ComboBox/v3/parts/single-selected-value-container/index.js +1 -0
  92. package/esm/ComboBox/v3/parts/single-selected-value-container/styled.js +7 -0
  93. package/esm/ComboBox/v3/propTypes.js +21 -0
  94. package/esm/ComboBox/v3/utils/hooks/useKeyboardNavigation.js +148 -0
  95. package/esm/ComboBox/v3/utils/hooks/useOnElementResize.js +33 -0
  96. package/esm/ComboBox/v3/utils/listHelper.js +30 -0
  97. package/esm/ComboBoxFreeSolo/ComboBoxFreeSolo.js +1 -0
  98. package/esm/index.js +1 -0
  99. package/package.json +207 -23
  100. package/types/ComboBox/index.d.ts +1 -0
  101. package/types/ComboBox/v3/ComboBox.d.ts +62 -0
  102. package/types/ComboBox/v3/ComboBoxCTX.d.ts +6 -0
  103. package/types/ComboBox/v3/ComboboxDataTestids.d.ts +11 -0
  104. package/types/ComboBox/v3/config/constants.d.ts +8 -0
  105. package/types/ComboBox/v3/config/useComboBox.d.ts +2 -0
  106. package/types/ComboBox/v3/config/useGetPropsWithDefault.d.ts +2 -0
  107. package/types/ComboBox/v3/index.d.ts +1 -0
  108. package/types/ComboBox/v3/parts/a11y-messages/MultiAllyMessages.d.ts +3 -0
  109. package/types/ComboBox/v3/parts/a11y-messages/SingleAllyMessages.d.ts +3 -0
  110. package/types/ComboBox/v3/parts/a11y-messages/index.d.ts +2 -0
  111. package/types/ComboBox/v3/parts/a11y-messages/styled.d.ts +1 -0
  112. package/types/ComboBox/v3/parts/container/Container.d.ts +3 -0
  113. package/types/ComboBox/v3/parts/container/index.d.ts +1 -0
  114. package/types/ComboBox/v3/parts/container/styled.d.ts +3 -0
  115. package/types/ComboBox/v3/parts/controls/Controls.d.ts +3 -0
  116. package/types/ComboBox/v3/parts/controls/index.d.ts +1 -0
  117. package/types/ComboBox/v3/parts/controls/styled.d.ts +7 -0
  118. package/types/ComboBox/v3/parts/controls-input/ControlsInput.d.ts +3 -0
  119. package/types/ComboBox/v3/parts/controls-input/styled.d.ts +4 -0
  120. package/types/ComboBox/v3/parts/controls-input/useControlsInput.d.ts +12 -0
  121. package/types/ComboBox/v3/parts/dropdown-indicator/DropdownIndicator.d.ts +3 -0
  122. package/types/ComboBox/v3/parts/dropdown-indicator/index.d.ts +0 -0
  123. package/types/ComboBox/v3/parts/dropdown-indicator/styled.d.ts +1 -0
  124. package/types/ComboBox/v3/parts/empty-state/index.d.ts +3 -0
  125. package/types/ComboBox/v3/parts/empty-state/styled.d.ts +2 -0
  126. package/types/ComboBox/v3/parts/header-list/HeaderList.d.ts +3 -0
  127. package/types/ComboBox/v3/parts/header-list/index.d.ts +1 -0
  128. package/types/ComboBox/v3/parts/header-list/styled.d.ts +7 -0
  129. package/types/ComboBox/v3/parts/header-list/useHeaderListHandlers.d.ts +12 -0
  130. package/types/ComboBox/v3/parts/menu-list/MenuList.d.ts +3 -0
  131. package/types/ComboBox/v3/parts/menu-list/index.d.ts +1 -0
  132. package/types/ComboBox/v3/parts/menu-list/styled.d.ts +10 -0
  133. package/types/ComboBox/v3/parts/menu-list/useItemRenderer.d.ts +2 -0
  134. package/types/ComboBox/v3/parts/menu-list/useMenuList.d.ts +2 -0
  135. package/types/ComboBox/v3/parts/multi-selected-values-container/MultiSelectedValuesContainer.d.ts +3 -0
  136. package/types/ComboBox/v3/parts/multi-selected-values-container/index.d.ts +1 -0
  137. package/types/ComboBox/v3/parts/multi-selected-values-container/styled.d.ts +3 -0
  138. package/types/ComboBox/v3/parts/multi-selected-values-container/useGroupPills.d.ts +2 -0
  139. package/types/ComboBox/v3/parts/single-selected-value-container/SingleSelectedValueContainer.d.ts +3 -0
  140. package/types/ComboBox/v3/parts/single-selected-value-container/index.d.ts +1 -0
  141. package/types/ComboBox/v3/parts/single-selected-value-container/styled.d.ts +1 -0
  142. package/types/ComboBox/v3/propTypes.d.ts +51 -0
  143. package/types/ComboBox/v3/tests/combobox-general.test.d.ts +1 -0
  144. package/types/ComboBox/v3/tests/combobox-multi-select.test.d.ts +1 -0
  145. package/types/ComboBox/v3/tests/combobox-single-select.test.d.ts +1 -0
  146. package/types/ComboBox/v3/tests/combobox-special-keys.test.d.ts +1 -0
  147. package/types/ComboBox/v3/tests/utils.d.ts +22 -0
  148. package/types/ComboBox/v3/utils/hooks/useKeyboardNavigation.d.ts +4 -0
  149. package/types/ComboBox/v3/utils/hooks/useOnElementResize.d.ts +3 -0
  150. package/types/ComboBox/v3/utils/listHelper.d.ts +7 -0
  151. package/types/MenuItem/components/SubmenuItem/styled.d.ts +1 -1
  152. package/types/MenuItem/components/styled.d.ts +3 -3
@@ -4,6 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  require('./v1/DSComboBox.js');
6
6
  var Combobox = require('./v2/Combobox.js');
7
+ var ComboBox = require('./v3/ComboBox.js');
7
8
  var Select = require('react-select');
8
9
  var propTypes = require('@elliemae/ds-shared/prop-types');
9
10
 
@@ -12,6 +13,8 @@ var propTypes = require('@elliemae/ds-shared/prop-types');
12
13
  exports.ComboBoxWithSchema = Combobox.ComboBoxWithSchema;
13
14
  exports.DSComboBox2 = Combobox.DSComboBox2;
14
15
  exports["default"] = Combobox.DSComboBox2;
16
+ exports.DSComboBox = ComboBox.DSComboBox;
17
+ exports.DSComboBoxWithSchema = ComboBox.DSComboBoxWithSchema;
15
18
  Object.defineProperty(exports, 'components', {
16
19
  enumerable: true,
17
20
  get: function () { return Select.components; }
@@ -0,0 +1,33 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
7
+ var reactDesc = require('react-desc');
8
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
9
+ var useComboBox = require('./config/useComboBox.js');
10
+ var Container = require('./parts/container/Container.js');
11
+ var propTypes = require('./propTypes.js');
12
+ var ComboBoxCTX = require('./ComboBoxCTX.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
+ var _Container;
19
+
20
+ const DSComboBox = props => {
21
+ const propsWithDefault = dsPropsHelpers.useMemoMergePropsWithDefault(props, ComboBoxCTX.defaultProps);
22
+ dsPropsHelpers.useValidateTypescriptPropTypes(propsWithDefault, propTypes.propTypes);
23
+ const ctx = useComboBox.useComboBox(props);
24
+ return /*#__PURE__*/_jsx__default["default"](ComboBoxCTX.ComboBoxContext.Provider, {
25
+ value: ctx
26
+ }, void 0, _Container || (_Container = /*#__PURE__*/_jsx__default["default"](Container.Container, {})));
27
+ };
28
+
29
+ const DSComboBoxWithSchema = reactDesc.describe(DSComboBox);
30
+ DSComboBoxWithSchema.propTypes = propTypes.propTypes;
31
+
32
+ exports.DSComboBox = DSComboBox;
33
+ exports.DSComboBoxWithSchema = DSComboBoxWithSchema;
@@ -0,0 +1,55 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var lodash = require('lodash');
7
+
8
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
9
+ const defaultProps = {
10
+ placeholder: '',
11
+ options: [],
12
+ selectedValues: null,
13
+ hasError: false,
14
+ inline: false,
15
+ autoFocus: false,
16
+ startPlacementPreference: 'bottom-start',
17
+ placementOrderPreference: ['bottom-start', 'bottom-end'],
18
+ onClearAll: lodash.noop,
19
+ onSelectAll: lodash.noop,
20
+ onCreate: lodash.noop,
21
+ withToggle: false,
22
+ onChange: lodash.noop,
23
+ onKeyDown: lodash.noop,
24
+ onFilter: lodash.noop,
25
+ onMenuOpen: lodash.noop
26
+ };
27
+ const defaultContext = {
28
+ props: defaultProps,
29
+ showPopover: false,
30
+ setShowPopover: lodash.noop,
31
+ scrollOptionIntoView: lodash.noop,
32
+ referenceElement: null,
33
+ hasFocus: false,
34
+ setHasFocus: lodash.noop,
35
+ pillGroupRef: /*#__PURE__*/React.createRef(),
36
+ setReferenceElement: lodash.noop,
37
+ inputRef: /*#__PURE__*/React.createRef(),
38
+ listRef: /*#__PURE__*/React.createRef(),
39
+ wrapperListRef: /*#__PURE__*/React.createRef(),
40
+ controlsWrapperRef: /*#__PURE__*/React.createRef(),
41
+ selectedOptionsRef: /*#__PURE__*/React.createRef(),
42
+ showSelectedValue: false,
43
+ setShowSelectedValue: lodash.noop,
44
+ focusOptionIdx: '',
45
+ setCurrentOption: lodash.noop,
46
+ showSelectedOptions: false,
47
+ setShowSelectedOptions: lodash.noop
48
+ };
49
+ /** Context for cross component communication */
50
+
51
+ const ComboBoxContext = /*#__PURE__*/React.createContext(defaultContext);
52
+
53
+ exports.ComboBoxContext = ComboBoxContext;
54
+ exports["default"] = ComboBoxContext;
55
+ exports.defaultProps = defaultProps;
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const ComboboxDataTestid = {
6
+ INPUT: 'combobox-input',
7
+ LIST: 'combobox-menu-list',
8
+ SELECTED_VALUES: 'combobox-selected-values',
9
+ SELECT_ALL_BUTTON: 'combobox-all-btn',
10
+ CLEAR_ALL_BUTTON: 'combobox-clear-btn',
11
+ DROPDOWN: 'combobox-dropdown-btn',
12
+ OPTION: 'combobox-option',
13
+ SHOW_ALL_BUTTON: 'combobox-show-all-btn',
14
+ SHOW_SELECTED_OPTIONS_BUTTON: 'combobox-selected-options-btn'
15
+ };
16
+
17
+ exports.ComboboxDataTestid = ComboboxDataTestid;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const DATA_TESTID = {
6
+ COMBOBOX_MENU_LIST: 'combobox-menu-list',
7
+ COMBOBOX_CLEAR_BTN: 'combobox-clear-btn',
8
+ COMBOBOX_ALL_BTN: 'combobox-all-btn',
9
+ COMBOBOX_DROPDOWN_BTN: 'combobox-dropdown-btn',
10
+ COMBOBOX_OPTION: 'combobox-option',
11
+ COMBOBOX: 'combobox'
12
+ };
13
+
14
+ exports.DATA_TESTID = DATA_TESTID;
@@ -0,0 +1,122 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
+ require('core-js/modules/web.dom-collections.iterator.js');
7
+ require('core-js/modules/esnext.async-iterator.for-each.js');
8
+ require('core-js/modules/esnext.iterator.constructor.js');
9
+ require('core-js/modules/esnext.iterator.for-each.js');
10
+ require('core-js/modules/esnext.async-iterator.find.js');
11
+ require('core-js/modules/esnext.iterator.find.js');
12
+ require('core-js/modules/esnext.async-iterator.filter.js');
13
+ require('core-js/modules/esnext.iterator.filter.js');
14
+ var React = require('react');
15
+ var reactVirtual = require('react-virtual');
16
+ var useGetPropsWithDefault = require('./useGetPropsWithDefault.js');
17
+
18
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
19
+
20
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
21
+
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ 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; }
25
+ const useComboBox = props => {
26
+ const [showPopover, setShowPopover] = React.useState(false);
27
+ const [referenceElement, setReferenceElement] = React.useState(null);
28
+ const [showSelectedValue, setShowSelectedValue] = React.useState(false);
29
+ const [showSelectedOptions, setShowSelectedOptions] = React.useState(false);
30
+ const [hasFocus, setHasFocus] = React.useState(false);
31
+ const [focusOptionIdx, setCurrentOption] = React.useState('');
32
+ const inputRef = React.useRef(null);
33
+ const listRef = React.useRef(null);
34
+ const wrapperListRef = React.useRef(null);
35
+ const selectedOptionsRef = React.useRef(null);
36
+ const controlsWrapperRef = React.useRef(null);
37
+ const pillGroupRef = React.useRef(null);
38
+ const propsWithDefaults = useGetPropsWithDefault.useGetComboBoxWithDefaultsProps(props);
39
+ const {
40
+ options,
41
+ selectedValues
42
+ } = propsWithDefaults; // ---------------------------------------------------------------------------
43
+ // Menu Options with/out selected filter
44
+ // ---------------------------------------------------------------------------
45
+
46
+ const selectedValuesWithSections = React.useCallback(() => {
47
+ var _items2;
48
+
49
+ const multiSelectedValue = selectedValues;
50
+ const items = [];
51
+ options.forEach(option => {
52
+ const isSelectedValue = multiSelectedValue.find(item => item.dsId === option.dsId);
53
+
54
+ if (isSelectedValue) {
55
+ items.push(option);
56
+ }
57
+
58
+ if (option.type === 'section') {
59
+ var _items;
60
+
61
+ if (((_items = items[items.length - 1]) === null || _items === void 0 ? void 0 : _items.type) === 'section') {
62
+ items[items.length - 1] = option;
63
+ } else {
64
+ items.push(option);
65
+ }
66
+ }
67
+ });
68
+
69
+ if (((_items2 = items[items.length - 1]) === null || _items2 === void 0 ? void 0 : _items2.type) === 'section') {
70
+ items.pop();
71
+ }
72
+
73
+ return items;
74
+ }, [options, selectedValues]);
75
+ const correctOptions = React.useMemo(() => showSelectedOptions && Array.isArray(selectedValues) && selectedValues.length > 0 ? selectedValuesWithSections() : options, [options, selectedValuesWithSections, selectedValues, showSelectedOptions]); // ===========================================================================
76
+ // Virtualization setup
77
+ // ===========================================================================
78
+
79
+ const virtualListHelpers = reactVirtual.useVirtual({
80
+ size: correctOptions.length,
81
+ parentRef: listRef,
82
+ overscan: 15,
83
+ paddingStart: 0
84
+ }); // ===========================================================================
85
+ // Scroll into view function
86
+ // ===========================================================================
87
+
88
+ const scrollOptionIntoView = React.useCallback(function (dsId) {
89
+ let opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
90
+ align: 'center'
91
+ };
92
+ virtualListHelpers.scrollToIndex(correctOptions.findIndex(opt => opt.dsId === dsId), opts);
93
+ }, [correctOptions, virtualListHelpers]);
94
+ const ctx = React.useMemo(() => ({
95
+ props: _objectSpread(_objectSpread({}, propsWithDefaults), {}, {
96
+ options: correctOptions
97
+ }),
98
+ virtualListHelpers,
99
+ showPopover,
100
+ referenceElement,
101
+ inputRef,
102
+ showSelectedValue,
103
+ listRef,
104
+ focusOptionIdx,
105
+ selectedOptionsRef,
106
+ controlsWrapperRef,
107
+ hasFocus,
108
+ pillGroupRef,
109
+ showSelectedOptions,
110
+ wrapperListRef,
111
+ setShowSelectedOptions,
112
+ setHasFocus,
113
+ setCurrentOption,
114
+ scrollOptionIntoView,
115
+ setShowSelectedValue,
116
+ setReferenceElement,
117
+ setShowPopover
118
+ }), [scrollOptionIntoView, correctOptions, propsWithDefaults, virtualListHelpers, focusOptionIdx, showSelectedValue, wrapperListRef, showSelectedOptions, showPopover, pillGroupRef, referenceElement, inputRef, selectedOptionsRef, controlsWrapperRef, hasFocus, listRef]);
119
+ return ctx;
120
+ };
121
+
122
+ exports.useComboBox = useComboBox;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dsPropsHelpers = require('@elliemae/ds-props-helpers');
6
+ var ComboBoxCTX = require('../ComboBoxCTX.js');
7
+
8
+ // we have to merge the "default" nested default values with what the user gives us...
9
+ const useGetComboBoxWithDefaultsProps = props => dsPropsHelpers.useMemoMergePropsWithDefault(props, ComboBoxCTX.defaultProps);
10
+
11
+ exports.useGetComboBoxWithDefaultsProps = useGetComboBoxWithDefaultsProps;
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var ComboBox = require('./ComboBox.js');
6
+
7
+
8
+
9
+ exports.DSComboBox = ComboBox.DSComboBox;
10
+ exports.DSComboBoxWithSchema = ComboBox.DSComboBoxWithSchema;
@@ -0,0 +1,33 @@
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.map.js');
7
+ require('core-js/modules/esnext.iterator.map.js');
8
+ var React = require('react');
9
+ var ComboBoxCTX = require('../../ComboBoxCTX.js');
10
+ var listHelper = require('../../utils/listHelper.js');
11
+ var styled = require('./styled.js');
12
+
13
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
+
15
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
16
+
17
+ const MultiAllyMessages = () => {
18
+ const {
19
+ props: {
20
+ options,
21
+ selectedValues
22
+ }
23
+ } = React.useContext(ComboBoxCTX.ComboBoxContext);
24
+ const selectableOptions = listHelper.getSelectableOptions(options);
25
+ const multipleSelectedValues = selectedValues;
26
+ return /*#__PURE__*/_jsx__default["default"](styled.StyledA11ySelectedValues, {
27
+ "aria-live": "polite",
28
+ "aria-atomic": "false",
29
+ "aria-relevant": "additions text"
30
+ }, void 0, "Options selected: ".concat(multipleSelectedValues.map(item => item.label).join(', '), ". ").concat(multipleSelectedValues.length, " of ").concat(selectableOptions.length));
31
+ };
32
+
33
+ exports.MultiAllyMessages = MultiAllyMessages;
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var React = require('react');
7
+ var ComboBoxCTX = require('../../ComboBoxCTX.js');
8
+ var styled = require('./styled.js');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
13
+
14
+ const SingleAllyMessages = () => {
15
+ const {
16
+ props: {
17
+ selectedValues
18
+ }
19
+ } = React.useContext(ComboBoxCTX.ComboBoxContext);
20
+ const singleSelectedValue = selectedValues;
21
+ return /*#__PURE__*/_jsx__default["default"](styled.StyledA11ySelectedValues, {
22
+ "aria-live": "polite",
23
+ "aria-atomic": "false",
24
+ "aria-relevant": "additions text"
25
+ }, void 0, "Option selected: ".concat(singleSelectedValue.label, "."));
26
+ };
27
+
28
+ exports.SingleAllyMessages = SingleAllyMessages;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var MultiAllyMessages = require('./MultiAllyMessages.js');
6
+ var SingleAllyMessages = require('./SingleAllyMessages.js');
7
+
8
+
9
+
10
+ exports.MultiAllyMessages = MultiAllyMessages.MultiAllyMessages;
11
+ exports.SingleAllyMessages = SingleAllyMessages.SingleAllyMessages;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styled = require('styled-components');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
+
11
+ const StyledA11ySelectedValues = /*#__PURE__*/styled__default["default"].span.withConfig({
12
+ componentId: "sc-4xp40i-0"
13
+ })(["width:1px;height:1px;position:absolute;clip:rect(1px,1px,1px,1px);"]);
14
+
15
+ exports.StyledA11ySelectedValues = StyledA11ySelectedValues;
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var React = require('react');
7
+ var dsPopperjs = require('@elliemae/ds-popperjs');
8
+ var ComboBoxCTX = require('../../ComboBoxCTX.js');
9
+ var styled = require('./styled.js');
10
+ var Controls = require('../controls/Controls.js');
11
+ var MenuList = require('../menu-list/MenuList.js');
12
+ var jsxRuntime = require('react/jsx-runtime');
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
+ var _Controls, _MenuList, _MenuList2;
19
+
20
+ const Container = () => {
21
+ const {
22
+ props: {
23
+ inline,
24
+ startPlacementPreference,
25
+ placementOrderPreference
26
+ },
27
+ showPopover,
28
+ inputRef,
29
+ setReferenceElement,
30
+ setShowPopover,
31
+ referenceElement
32
+ } = React.useContext(ComboBoxCTX.ComboBoxContext);
33
+ const handleCloseMenu = React.useCallback(() => {
34
+ setShowPopover(false);
35
+ if (inputRef.current) inputRef.current.blur();
36
+ }, [inputRef, setShowPopover]);
37
+ const handleMouseDown = React.useCallback(e => {
38
+ e.preventDefault();
39
+ }, []);
40
+ const handleOnClickContainer = React.useCallback(() => {
41
+ setShowPopover(!showPopover);
42
+ }, [setShowPopover, showPopover]);
43
+ const StyledContainer = inline ? styled.StyledContainerInline : styled.StyledContainerWithPopper;
44
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
45
+ children: [/*#__PURE__*/jsxRuntime.jsxs(StyledContainer, {
46
+ ref: setReferenceElement,
47
+ onClick: handleOnClickContainer,
48
+ children: [_Controls || (_Controls = /*#__PURE__*/_jsx__default["default"](Controls.Controls, {})), inline ? _MenuList || (_MenuList = /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {})) : null]
49
+ }), !inline ? /*#__PURE__*/_jsx__default["default"](dsPopperjs.DSPopperJS, {
50
+ customOffset: [0, 5],
51
+ closeContextMenu: handleCloseMenu,
52
+ referenceElement: referenceElement,
53
+ showPopover: showPopover,
54
+ startPlacementPreference: startPlacementPreference,
55
+ placementOrderPreference: placementOrderPreference,
56
+ withoutPortal: true,
57
+ withoutArrow: true,
58
+ withoutAnimation: true,
59
+ zIndex: 10
60
+ }, void 0, /*#__PURE__*/_jsx__default["default"](styled.StyledPopperWrapper, {
61
+ tabIndex: -1,
62
+ onMouseDown: handleMouseDown
63
+ }, void 0, _MenuList2 || (_MenuList2 = /*#__PURE__*/_jsx__default["default"](MenuList.MenuList, {})))) : null]
64
+ });
65
+ };
66
+
67
+ exports.Container = Container;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Container = require('./Container.js');
6
+
7
+
8
+
9
+ exports.Container = Container.Container;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var styled = require('styled-components');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
10
+
11
+ const StyledContainerWithPopper = /*#__PURE__*/styled__default["default"].div.withConfig({
12
+ componentId: "sc-17wftik-0"
13
+ })(["width:100%;height:28px;position:relative;"]);
14
+ const StyledContainerInline = /*#__PURE__*/styled__default["default"].div.withConfig({
15
+ componentId: "sc-17wftik-1"
16
+ })(["width:100%;position:relative;"]);
17
+ const StyledPopperWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
18
+ componentId: "sc-17wftik-2"
19
+ })(["background:#fff;overflow:auto;position:relative;"]);
20
+
21
+ exports.StyledContainerInline = StyledContainerInline;
22
+ exports.StyledContainerWithPopper = StyledContainerWithPopper;
23
+ exports.StyledPopperWrapper = StyledPopperWrapper;
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var React = require('react');
7
+ var DropdownIndicator = require('../dropdown-indicator/DropdownIndicator.js');
8
+ var ComboboxDataTestids = require('../../ComboboxDataTestids.js');
9
+ var ComboBoxCTX = require('../../ComboBoxCTX.js');
10
+ var styled = require('./styled.js');
11
+ var MultiSelectedValuesContainer = require('../multi-selected-values-container/MultiSelectedValuesContainer.js');
12
+ var ControlsInput = require('../controls-input/ControlsInput.js');
13
+ var SingleSelectedValueContainer = require('../single-selected-value-container/SingleSelectedValueContainer.js');
14
+ var jsxRuntime = require('react/jsx-runtime');
15
+
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
+
18
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
19
+
20
+ var _MultiSelectedValuesC, _SingleSelectedValueC, _ControlsInput, _StyledHeaderActionsW;
21
+
22
+ const Controls = () => {
23
+ const {
24
+ props: {
25
+ inline,
26
+ inputMinWidth,
27
+ hasError,
28
+ selectedValues
29
+ },
30
+ inputRef,
31
+ selectedOptionsRef,
32
+ setShowPopover,
33
+ showPopover,
34
+ hasFocus,
35
+ controlsWrapperRef
36
+ } = React.useContext(ComboBoxCTX.ComboBoxContext);
37
+ const handleOnClick = React.useCallback(() => {
38
+ if (hasFocus && showPopover && !inline) {
39
+ inputRef.current.blur();
40
+ } else if (hasFocus) {
41
+ setShowPopover(true);
42
+ } else {
43
+ inputRef.current.focus();
44
+ }
45
+ }, [hasFocus, setShowPopover, showPopover, inputRef, inline]);
46
+
47
+ const handleOnMouseDown = e => {
48
+ if (hasFocus || inline) {
49
+ e.preventDefault();
50
+ }
51
+ };
52
+
53
+ const cols = !inline ? ['minmax(0px,max-content)', 'minmax(20px, auto)', '29px'] : ['minmax(0px, auto)'];
54
+ return /*#__PURE__*/jsxRuntime.jsxs(styled.StyledControlsWrapper, {
55
+ ref: controlsWrapperRef,
56
+ cols: cols,
57
+ minWidth: inputMinWidth,
58
+ hasError: hasError,
59
+ hasFocus: hasFocus,
60
+ inline: inline,
61
+ onClick: handleOnClick,
62
+ onMouseDown: handleOnMouseDown,
63
+ children: [!inline && /*#__PURE__*/jsxRuntime.jsx(styled.StyledSelection, {
64
+ ref: selectedOptionsRef,
65
+ "data-testid": ComboboxDataTestids.ComboboxDataTestid.SELECTED_VALUES,
66
+ children: Array.isArray(selectedValues) ? _MultiSelectedValuesC || (_MultiSelectedValuesC = /*#__PURE__*/_jsx__default["default"](MultiSelectedValuesContainer.MultiSelectedValuesContainer, {})) : _SingleSelectedValueC || (_SingleSelectedValueC = /*#__PURE__*/_jsx__default["default"](SingleSelectedValueContainer.SingleSelectedValueContainer, {}))
67
+ }), _ControlsInput || (_ControlsInput = /*#__PURE__*/_jsx__default["default"](ControlsInput.ControlsInput, {})), !inline && (_StyledHeaderActionsW || (_StyledHeaderActionsW = /*#__PURE__*/_jsx__default["default"](styled.StyledHeaderActionsWrapper, {}, void 0, /*#__PURE__*/_jsx__default["default"](styled.StyleHeaderActionsSeparator, {}), /*#__PURE__*/_jsx__default["default"](DropdownIndicator, {}))))]
68
+ });
69
+ };
70
+
71
+ exports.Controls = Controls;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Controls = require('./Controls.js');
6
+
7
+
8
+
9
+ exports.Controls = Controls.Controls;
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var _taggedTemplateLiteral = require('@babel/runtime/helpers/taggedTemplateLiteral');
6
+ var styled = require('styled-components');
7
+ var dsSystem = require('@elliemae/ds-system');
8
+ var Grid = require('@elliemae/ds-grid');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var _taggedTemplateLiteral__default = /*#__PURE__*/_interopDefaultLegacy(_taggedTemplateLiteral);
13
+ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
14
+
15
+ var _templateObject, _templateObject2;
16
+ const normalBorder = dsSystem.css(_templateObject || (_templateObject = _taggedTemplateLiteral__default["default"](["\n border: 1px solid\n ", ";\n"])), props => {
17
+ if (props.hasError) {
18
+ return props.theme.colors.danger[900];
19
+ }
20
+
21
+ return props.theme.colors.neutral[400];
22
+ });
23
+ const focusBorder = dsSystem.css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral__default["default"](["\n border: 2px solid ", ";\n"])), _ref => {
24
+ let {
25
+ theme
26
+ } = _ref;
27
+ return theme.colors.brand[700];
28
+ });
29
+ const StyledControlsWrapper = /*#__PURE__*/styled__default["default"](Grid.Grid).withConfig({
30
+ componentId: "sc-64uci7-0"
31
+ })(["background:transparent;position:relative;border-radius:2px;min-width:", ";align-items:center;align-content:center;height:28px;padding-left:8px;margin:", ";&::after{display:block;content:' ';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:2px;", " pointer-events:none;z-index:7;}"], _ref2 => {
32
+ let {
33
+ minWidth,
34
+ inline
35
+ } = _ref2;
36
+ return inline ? '' : "".concat(minWidth, "px");
37
+ }, _ref3 => {
38
+ let {
39
+ inline
40
+ } = _ref3;
41
+ return inline ? '10px 16px' : 'none';
42
+ }, _ref4 => {
43
+ let {
44
+ hasFocus
45
+ } = _ref4;
46
+ return hasFocus ? focusBorder : normalBorder;
47
+ });
48
+ const StyledSelection = /*#__PURE__*/styled__default["default"].div.withConfig({
49
+ componentId: "sc-64uci7-1"
50
+ })(["font-size:13px;margin-right:3px;line-height:13px;display:flex;"]);
51
+ const StyledHeaderActionsWrapper = /*#__PURE__*/styled__default["default"].div.withConfig({
52
+ componentId: "sc-64uci7-2"
53
+ })(["align-items:center;align-self:stretch;display:flex;box-sizing:border-box;height:28px;.em-ds-button--text:focus::after{border:none;}"]);
54
+ const StyleDropdownIndicator = /*#__PURE__*/styled__default["default"].div.withConfig({
55
+ componentId: "sc-64uci7-3"
56
+ })([""]);
57
+ const StyleHeaderActionsSeparator = /*#__PURE__*/styled__default["default"].span.withConfig({
58
+ componentId: "sc-64uci7-4"
59
+ })(["align-self:stretch;margin:4px 0px;width:1px;background-color:", ";"], props => props.theme.colors.neutral['500']);
60
+
61
+ exports.StyleDropdownIndicator = StyleDropdownIndicator;
62
+ exports.StyleHeaderActionsSeparator = StyleHeaderActionsSeparator;
63
+ exports.StyledControlsWrapper = StyledControlsWrapper;
64
+ exports.StyledHeaderActionsWrapper = StyledHeaderActionsWrapper;
65
+ exports.StyledSelection = StyledSelection;