@elliemae/ds-menu 1.60.0 → 2.0.0-alpha.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/cjs/Menu.js +191 -39
  2. package/cjs/MenuCombobox.js +38 -80
  3. package/cjs/MenuContext.js +1 -2
  4. package/cjs/MenuItems/CheckboxGroup.js +17 -10
  5. package/cjs/MenuItems/MenuItem.js +199 -36
  6. package/cjs/MenuItems/MenuItemCheckable.js +114 -35
  7. package/cjs/MenuItems/MenuItemCheckbox.js +39 -34
  8. package/cjs/MenuItems/MenuItemRadio.js +36 -35
  9. package/cjs/MenuItems/RadioGroup.js +17 -10
  10. package/cjs/MenuItems/SearchableGroup.js +49 -57
  11. package/cjs/MenuItems/SearchableList.js +35 -51
  12. package/cjs/MenuItems/SelectionGroup.js +103 -36
  13. package/cjs/MenuItems/Separator.js +17 -16
  14. package/cjs/MenuItems/SubMenu.js +199 -36
  15. package/cjs/MenuItems/menuItemFactory.js +67 -36
  16. package/cjs/VirtualMenuList.js +27 -23
  17. package/cjs/index.js +27 -48
  18. package/cjs/utils/useHeightByAmountOfItems.js +8 -9
  19. package/esm/Menu.js +180 -31
  20. package/esm/MenuCombobox.js +33 -74
  21. package/esm/MenuContext.js +0 -1
  22. package/esm/MenuItems/CheckboxGroup.js +15 -7
  23. package/esm/MenuItems/MenuItem.js +191 -31
  24. package/esm/MenuItems/MenuItemCheckable.js +107 -30
  25. package/esm/MenuItems/MenuItemCheckbox.js +33 -30
  26. package/esm/MenuItems/MenuItemRadio.js +31 -30
  27. package/esm/MenuItems/RadioGroup.js +15 -7
  28. package/esm/MenuItems/SearchableGroup.js +48 -55
  29. package/esm/MenuItems/SearchableList.js +34 -47
  30. package/esm/MenuItems/SelectionGroup.js +97 -31
  31. package/esm/MenuItems/Separator.js +14 -13
  32. package/esm/MenuItems/SubMenu.js +190 -31
  33. package/esm/MenuItems/menuItemFactory.js +62 -31
  34. package/esm/VirtualMenuList.js +25 -21
  35. package/esm/index.js +7 -28
  36. package/esm/utils/useHeightByAmountOfItems.js +8 -9
  37. package/package.json +109 -21
  38. package/types/Menu.d.ts +28 -0
  39. package/types/MenuCombobox.d.ts +28 -0
  40. package/types/MenuContext.d.ts +3 -0
  41. package/types/MenuItems/CheckboxGroup.d.ts +32 -0
  42. package/types/MenuItems/MenuItem.d.ts +79 -0
  43. package/types/MenuItems/MenuItemCheckable.d.ts +86 -0
  44. package/types/MenuItems/MenuItemCheckbox.d.ts +6 -0
  45. package/types/MenuItems/MenuItemRadio.d.ts +37 -0
  46. package/types/MenuItems/RadioGroup.d.ts +26 -0
  47. package/types/MenuItems/SearchableGroup.d.ts +18 -0
  48. package/types/MenuItems/SearchableList.d.ts +106 -0
  49. package/types/MenuItems/SelectionGroup.d.ts +98 -0
  50. package/types/MenuItems/Separator.d.ts +34 -0
  51. package/types/MenuItems/SubMenu.d.ts +122 -0
  52. package/types/MenuItems/menuItemFactory.d.ts +3 -0
  53. package/types/VirtualMenuList.d.ts +8 -0
  54. package/types/index.d.ts +13 -0
  55. package/types/tests/Menu.test.d.ts +1 -0
  56. package/types/tests/MenuItem.test.d.ts +1 -0
  57. package/types/utils/useHeightByAmountOfItems.d.ts +5 -0
  58. package/Menu/package.json +0 -10
  59. package/MenuCombobox/package.json +0 -10
  60. package/MenuContext/package.json +0 -10
  61. package/MenuItems/CheckboxGroup/package.json +0 -10
  62. package/MenuItems/MenuItem/package.json +0 -10
  63. package/MenuItems/MenuItemCheckable/package.json +0 -10
  64. package/MenuItems/MenuItemCheckbox/package.json +0 -10
  65. package/MenuItems/MenuItemRadio/package.json +0 -10
  66. package/MenuItems/RadioGroup/package.json +0 -10
  67. package/MenuItems/SearchableGroup/package.json +0 -10
  68. package/MenuItems/SearchableList/package.json +0 -10
  69. package/MenuItems/SelectionGroup/package.json +0 -10
  70. package/MenuItems/Separator/package.json +0 -10
  71. package/MenuItems/SubMenu/package.json +0 -10
  72. package/MenuItems/menuItemFactory/package.json +0 -10
  73. package/VirtualMenuList/package.json +0 -10
  74. package/cjs/Menu.js.map +0 -1
  75. package/cjs/MenuCombobox.js.map +0 -1
  76. package/cjs/MenuContext.js.map +0 -1
  77. package/cjs/MenuItems/CheckboxGroup.js.map +0 -1
  78. package/cjs/MenuItems/MenuItem.js.map +0 -1
  79. package/cjs/MenuItems/MenuItemCheckable.js.map +0 -1
  80. package/cjs/MenuItems/MenuItemCheckbox.js.map +0 -1
  81. package/cjs/MenuItems/MenuItemRadio.js.map +0 -1
  82. package/cjs/MenuItems/RadioGroup.js.map +0 -1
  83. package/cjs/MenuItems/SearchableGroup.js.map +0 -1
  84. package/cjs/MenuItems/SearchableList.js.map +0 -1
  85. package/cjs/MenuItems/SelectionGroup.js.map +0 -1
  86. package/cjs/MenuItems/Separator.js.map +0 -1
  87. package/cjs/MenuItems/SubMenu.js.map +0 -1
  88. package/cjs/MenuItems/menuItemFactory.js.map +0 -1
  89. package/cjs/SubMenu-22be0a18.js +0 -806
  90. package/cjs/SubMenu-22be0a18.js.map +0 -1
  91. package/cjs/VirtualMenuList.js.map +0 -1
  92. package/cjs/index.js.map +0 -1
  93. package/cjs/utils/useHeightByAmountOfItems.js.map +0 -1
  94. package/esm/Menu.js.map +0 -1
  95. package/esm/MenuCombobox.js.map +0 -1
  96. package/esm/MenuContext.js.map +0 -1
  97. package/esm/MenuItems/CheckboxGroup.js.map +0 -1
  98. package/esm/MenuItems/MenuItem.js.map +0 -1
  99. package/esm/MenuItems/MenuItemCheckable.js.map +0 -1
  100. package/esm/MenuItems/MenuItemCheckbox.js.map +0 -1
  101. package/esm/MenuItems/MenuItemRadio.js.map +0 -1
  102. package/esm/MenuItems/RadioGroup.js.map +0 -1
  103. package/esm/MenuItems/SearchableGroup.js.map +0 -1
  104. package/esm/MenuItems/SearchableList.js.map +0 -1
  105. package/esm/MenuItems/SelectionGroup.js.map +0 -1
  106. package/esm/MenuItems/Separator.js.map +0 -1
  107. package/esm/MenuItems/SubMenu.js.map +0 -1
  108. package/esm/MenuItems/menuItemFactory.js.map +0 -1
  109. package/esm/SubMenu-a25e69ec.js +0 -778
  110. package/esm/SubMenu-a25e69ec.js.map +0 -1
  111. package/esm/VirtualMenuList.js.map +0 -1
  112. package/esm/index.js.map +0 -1
  113. package/esm/utils/useHeightByAmountOfItems.js.map +0 -1
  114. package/utils/useHeightByAmountOfItems/package.json +0 -10
@@ -2,7 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('core-js/modules/web.dom-collections.iterator.js');
7
+ require('core-js/modules/esnext.async-iterator.filter.js');
8
+ require('core-js/modules/esnext.iterator.constructor.js');
9
+ require('core-js/modules/esnext.iterator.filter.js');
6
10
  var React = require('react');
7
11
  var dsClassnames = require('@elliemae/ds-classnames');
8
12
  var FocusGroup = require('@elliemae/ds-shared/FocusGroup');
@@ -10,74 +14,64 @@ var DSSearchBox = require('@elliemae/ds-form/SearchBox');
10
14
  var reactDesc = require('react-desc');
11
15
  var VirtualMenuList = require('../VirtualMenuList.js');
12
16
  var MenuContext = require('../MenuContext.js');
13
- require('react-window');
14
- require('../utils/useHeightByAmountOfItems.js');
17
+ var jsxRuntime = require('react/jsx-runtime');
15
18
 
16
19
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
20
 
18
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
19
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
21
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
20
22
  var DSSearchBox__default = /*#__PURE__*/_interopDefaultLegacy(DSSearchBox);
21
23
 
22
- var SearchBoxWrapper = dsClassnames.aggregatedClasses('div')('menu-search-group', 'search-wrapper');
23
- var NoOptionsWrapper = dsClassnames.aggregatedClasses('div')('menu-search-group', 'no-options');
24
+ const SearchBoxWrapper = dsClassnames.aggregatedClasses('div')('menu-search-group', 'search-wrapper');
25
+ const NoOptionsWrapper = dsClassnames.aggregatedClasses('div')('menu-search-group', 'no-options');
24
26
 
25
27
  function SearchableGroup(_ref) {
26
- var children = _ref.children,
27
- _ref$amountItemsInWin = _ref.amountItemsInWindow,
28
- amountItemsInWindow = _ref$amountItemsInWin === void 0 ? 5 : _ref$amountItemsInWin,
29
- _ref$searchTerm = _ref.searchTerm,
30
- searchTermProp = _ref$searchTerm === void 0 ? '' : _ref$searchTerm,
31
- _ref$noOptionsText = _ref.noOptionsText,
32
- noOptionsText = _ref$noOptionsText === void 0 ? 'No options' : _ref$noOptionsText,
33
- height = _ref.height,
34
- width = _ref.width,
35
- _ref$focusOnOpen = _ref.focusOnOpen,
36
- focusOnOpen = _ref$focusOnOpen === void 0 ? false : _ref$focusOnOpen;
37
- var searchRef = React.useRef(null);
38
-
39
- var _useState = React.useState(searchTermProp),
40
- _useState2 = _slicedToArray__default['default'](_useState, 2),
41
- searchTerm = _useState2[0],
42
- setSearchTerm = _useState2[1];
43
-
44
- React.useEffect(function () {
28
+ let {
29
+ children,
30
+ amountItemsInWindow = 5,
31
+ searchTerm: searchTermProp = '',
32
+ noOptionsText = 'No options',
33
+ height,
34
+ width,
35
+ focusOnOpen = false
36
+ } = _ref;
37
+ const searchRef = React.useRef(null);
38
+ const [searchTerm, setSearchTerm] = React.useState(searchTermProp);
39
+ React.useEffect(() => {
45
40
  if (searchRef.current) searchRef.current.focus();
46
41
  }, []);
47
-
48
- var _ref2 = React.useContext(MenuContext) || {},
49
- visible = _ref2.visible;
50
-
51
- React.useEffect(function () {
42
+ const {
43
+ visible
44
+ } = React.useContext(MenuContext) || {};
45
+ React.useEffect(() => {
52
46
  if (focusOnOpen && visible) {
53
- setTimeout(function () {
47
+ setTimeout(() => {
54
48
  if (searchRef.current) searchRef.current.focus();
55
49
  }, 0);
56
50
  }
57
51
  }, [focusOnOpen, visible]);
58
- var filteredChildren = React.useMemo(function () {
59
- return children.filter(function (child) {
60
- return !searchTerm || child.props.label.toLowerCase().startsWith(searchTerm.toLowerCase());
61
- });
62
- }, [children, searchTerm]);
63
- return /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, /*#__PURE__*/React__default['default'].createElement(SearchBoxWrapper, null, /*#__PURE__*/React__default['default'].createElement(DSSearchBox__default['default'], {
64
- innerRef: searchRef,
65
- onSearch: function onSearch(_ref3) {
66
- var value = _ref3.value;
67
- return setSearchTerm(value);
68
- },
69
- searchOnEnter: false,
70
- showIcon: false,
71
- value: searchTerm
72
- })), !filteredChildren.length && /*#__PURE__*/React__default['default'].createElement(NoOptionsWrapper, null, noOptionsText), /*#__PURE__*/React__default['default'].createElement(VirtualMenuList, {
73
- amountItemsInWindow: amountItemsInWindow,
74
- height: height,
75
- items: filteredChildren,
76
- width: width
77
- }));
52
+ const filteredChildren = React.useMemo(() => children.filter(child => !searchTerm || child.props.label.toLowerCase().startsWith(searchTerm.toLowerCase())), [children, searchTerm]);
53
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
54
+ children: [/*#__PURE__*/_jsx__default["default"](SearchBoxWrapper, {}, void 0, /*#__PURE__*/_jsx__default["default"](DSSearchBox__default["default"], {
55
+ innerRef: searchRef,
56
+ onSearch: _ref2 => {
57
+ let {
58
+ value
59
+ } = _ref2;
60
+ return setSearchTerm(value);
61
+ },
62
+ searchOnEnter: false,
63
+ showIcon: false,
64
+ value: searchTerm
65
+ })), !filteredChildren.length && /*#__PURE__*/_jsx__default["default"](NoOptionsWrapper, {}, void 0, noOptionsText), /*#__PURE__*/_jsx__default["default"](VirtualMenuList, {
66
+ amountItemsInWindow: amountItemsInWindow,
67
+ height: height,
68
+ items: filteredChildren,
69
+ width: width
70
+ })]
71
+ });
78
72
  }
79
73
 
80
- var props = {
74
+ const props = {
81
75
  /** The amount of items that are going to be rendered in the group */
82
76
  amountItemsInWindow: reactDesc.PropTypes.number.description('The amount of items that are going to be rendered in the group'),
83
77
 
@@ -99,11 +93,9 @@ var props = {
99
93
  /** weather to focus on searchable group on open */
100
94
  focusOnOpen: reactDesc.PropTypes.bool.description('weather to focus on searchable group on open')
101
95
  };
102
- SearchableGroup.propTypes = props;
103
- var DSMenuSearchableGroupWithSchema = reactDesc.describe(SearchableGroup);
96
+ const DSMenuSearchableGroupWithSchema = reactDesc.describe(SearchableGroup);
104
97
  DSMenuSearchableGroupWithSchema.propTypes = props;
105
98
  var SearchableGroup$1 = FocusGroup.focusGroupManagerHoc(SearchableGroup);
106
99
 
107
100
  exports.DSMenuSearchableGroupWithSchema = DSMenuSearchableGroupWithSchema;
108
- exports['default'] = SearchableGroup$1;
109
- //# sourceMappingURL=SearchableGroup.js.map
101
+ exports["default"] = SearchableGroup$1;
@@ -2,75 +2,61 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var _extends = require('@babel/runtime/helpers/extends');
6
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
6
+ require('core-js/modules/web.dom-collections.iterator.js');
7
+ require('core-js/modules/esnext.async-iterator.filter.js');
8
+ require('core-js/modules/esnext.iterator.constructor.js');
9
+ require('core-js/modules/esnext.iterator.filter.js');
10
+ require('core-js/modules/esnext.async-iterator.for-each.js');
11
+ require('core-js/modules/esnext.iterator.for-each.js');
8
12
  var React = require('react');
9
13
  var reactDesc = require('react-desc');
10
14
  var dsUtilities = require('@elliemae/ds-utilities');
11
15
  var dsForm = require('@elliemae/ds-form');
16
+ var jsxRuntime = require('react/jsx-runtime');
12
17
 
13
18
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
14
19
 
15
- var _extends__default = /*#__PURE__*/_interopDefaultLegacy(_extends);
16
20
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
17
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
18
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
21
 
20
22
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
23
 
22
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
25
 
24
- var noop = function noop() {};
26
+ const noop = () => {};
25
27
 
26
28
  function SearchableList(_ref) {
27
- var _ref$onSelectMenuItem = _ref.onSelectMenuItem,
28
- onSelectMenuItem = _ref$onSelectMenuItem === void 0 ? noop : _ref$onSelectMenuItem,
29
- _ref$components = _ref.components,
30
- components = _ref$components === void 0 ? {} : _ref$components,
31
- _ref$searchTerm = _ref.searchTerm,
32
- searchTermProp = _ref$searchTerm === void 0 ? '' : _ref$searchTerm,
33
- _ref$items = _ref.items,
34
- items = _ref$items === void 0 ? [] : _ref$items,
35
- _ref$dropdownFilterOp = _ref.dropdownFilterOptions,
36
- dropdownFilterOptions = _ref$dropdownFilterOp === void 0 ? {} : _ref$dropdownFilterOp,
37
- returnValue = _ref.returnValue,
38
- _ref$extraListProps = _ref.extraListProps,
39
- extraListProps = _ref$extraListProps === void 0 ? {} : _ref$extraListProps,
40
- _ref$appendTermInList = _ref.appendTermInList,
41
- appendTermInList = _ref$appendTermInList === void 0 ? false : _ref$appendTermInList,
42
- _ref$maxOptions = _ref.maxOptions,
43
- maxOptions = _ref$maxOptions === void 0 ? 10 : _ref$maxOptions,
44
- _ref$loading = _ref.loading,
45
- loading = _ref$loading === void 0 ? false : _ref$loading;
46
-
47
- var _useState = React.useState(searchTermProp),
48
- _useState2 = _slicedToArray__default['default'](_useState, 2),
49
- searchTerm = _useState2[0],
50
- setInputValue = _useState2[1];
51
-
52
- var handleInputChange = React.useCallback(function (value, args) {
53
- var action = args ? args.action : null;
29
+ let {
30
+ onSelectMenuItem = noop,
31
+ components = {},
32
+ searchTerm: searchTermProp = '',
33
+ items = [],
34
+ dropdownFilterOptions = {},
35
+ returnValue,
36
+ extraListProps = {},
37
+ appendTermInList = false,
38
+ maxOptions = 10,
39
+ loading = false
40
+ } = _ref;
41
+ const [searchTerm, setInputValue] = React.useState(searchTermProp);
42
+ const handleInputChange = React.useCallback((value, args) => {
43
+ const action = args ? args.action : null;
54
44
  if (action === 'input-blur' || action === 'menu-close') return;
55
45
  setInputValue(value);
56
46
  }, [searchTerm]);
57
- var handleFilterByText = React.useCallback(function () {
47
+ const handleFilterByText = React.useCallback(() => {
58
48
  if (searchTerm) onSelectMenuItem(searchTerm);
59
49
  }, [searchTerm]);
60
- var handleKeyDown = React.useCallback(function (e) {
50
+ const handleKeyDown = React.useCallback(e => {
61
51
  if (e.key === 'ArrowRight') {
62
52
  handleFilterByText();
63
53
  }
64
54
  }, [searchTerm]);
65
- var options = React.useMemo(function () {
66
- return searchTerm && appendTermInList ? dsUtilities.uniqBy([{
67
- id: searchTerm,
68
- label: searchTerm
69
- }].concat(items), function (item) {
70
- return item.label;
71
- }) : items;
72
- }, [searchTerm, appendTermInList]);
73
- return /*#__PURE__*/React__default['default'].createElement(dsForm.DSComboBox, _extends__default['default']({
55
+ const options = React.useMemo(() => searchTerm && appendTermInList ? dsUtilities.uniqBy([{
56
+ id: searchTerm,
57
+ label: searchTerm
58
+ }].concat(items), item => item.label) : items, [searchTerm, appendTermInList]);
59
+ return /*#__PURE__*/jsxRuntime.jsx(dsForm.DSComboBox, _objectSpread(_objectSpread({
74
60
  autoFocus: true,
75
61
  components: _objectSpread({
76
62
  DropdownIndicator: null
@@ -90,10 +76,10 @@ function SearchableList(_ref) {
90
76
  valueProperty: "id",
91
77
  maxOptions: maxOptions,
92
78
  loading: loading
93
- }, extraListProps, dropdownFilterOptions));
79
+ }, extraListProps), dropdownFilterOptions));
94
80
  }
95
81
 
96
- var props = {
82
+ const props = {
97
83
  /** callback after item gets selected */
98
84
  onSelectMenuItem: reactDesc.PropTypes.func.description('callback after item gets selected'),
99
85
 
@@ -124,10 +110,8 @@ var props = {
124
110
  /** loading flag */
125
111
  loading: reactDesc.PropTypes.bool.description('loading flag')
126
112
  };
127
- SearchableList.propTypes = props;
128
- var DSMenuSearchableListWithSchema = reactDesc.describe(SearchableList);
113
+ const DSMenuSearchableListWithSchema = reactDesc.describe(SearchableList);
129
114
  DSMenuSearchableListWithSchema.propTypes = props;
130
115
 
131
116
  exports.DSMenuSearchableListWithSchema = DSMenuSearchableListWithSchema;
132
- exports['default'] = SearchableList;
133
- //# sourceMappingURL=SearchableList.js.map
117
+ exports["default"] = SearchableList;
@@ -2,39 +2,106 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- require('@babel/runtime/helpers/extends');
6
- require('react');
7
- require('react-desc');
8
- require('@elliemae/ds-shared/CheckableGroup');
9
- require('./SearchableGroup.js');
10
- var MenuItems_SelectionGroup = require('../SubMenu-22be0a18.js');
11
- require('../VirtualMenuList.js');
12
- require('@babel/runtime/helpers/slicedToArray');
13
- require('@elliemae/ds-classnames');
14
- require('@elliemae/ds-shared/FocusGroup');
15
- require('@elliemae/ds-form/SearchBox');
16
- require('../MenuContext.js');
17
- require('react-window');
18
- require('../utils/useHeightByAmountOfItems.js');
19
- require('@elliemae/ds-icons');
20
- require('@elliemae/ds-hidden');
21
- require('@elliemae/ds-button');
22
- require('@elliemae/ds-popper');
23
- require('styled-components');
24
- require('@babel/runtime/helpers/objectWithoutProperties');
25
- require('@babel/runtime/helpers/defineProperty');
26
- require('lodash');
27
- require('react-spring/web.cjs');
28
- require('@elliemae/ds-utilities');
29
- require('@elliemae/ds-truncated-tooltip-text');
30
- require('./Separator.js');
31
- require('@elliemae/ds-separator');
32
- require('@elliemae/ds-form');
33
- require('./CheckboxGroup.js');
34
- require('./RadioGroup.js');
35
-
36
-
37
-
38
- exports.DSMenuSelectionGroupWithSchema = MenuItems_SelectionGroup.DSMenuSelectionGroupWithSchema;
39
- exports.default = MenuItems_SelectionGroup.SelectionGroup;
40
- //# sourceMappingURL=SelectionGroup.js.map
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
7
+ require('core-js/modules/esnext.async-iterator.map.js');
8
+ require('core-js/modules/esnext.iterator.map.js');
9
+ require('core-js/modules/esnext.async-iterator.filter.js');
10
+ require('core-js/modules/esnext.iterator.constructor.js');
11
+ require('core-js/modules/esnext.iterator.filter.js');
12
+ require('core-js/modules/esnext.async-iterator.for-each.js');
13
+ require('core-js/modules/esnext.iterator.for-each.js');
14
+ var React = require('react');
15
+ var reactDesc = require('react-desc');
16
+ var CheckableGroup = require('@elliemae/ds-shared/CheckableGroup');
17
+ var SearchableGroup = require('./SearchableGroup.js');
18
+ var menuItemFactory = require('./menuItemFactory.js');
19
+ var VirtualMenuList = require('../VirtualMenuList.js');
20
+
21
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
22
+
23
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
24
+ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
25
+
26
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
27
+
28
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
29
+
30
+ const noop = () => null;
31
+
32
+ function SelectionGroup(_ref) {
33
+ let {
34
+ multi = false,
35
+ searchable = false,
36
+ focusOnOpen = false,
37
+ onSelect = noop,
38
+ children,
39
+ items = undefined,
40
+ active = multi ? [] : '',
41
+ width,
42
+ height,
43
+ maxOptions = 5
44
+ } = _ref;
45
+ const renderedItems = React.useMemo(() => items && items.map(item => {
46
+ const Component = menuItemFactory.menuItemFactory(multi ? 'checkbox' : 'radio');
47
+ return /*#__PURE__*/React.createElement(Component, _objectSpread(_objectSpread({}, item), {}, {
48
+ key: item.name || item.id || item.key,
49
+ item: item,
50
+ name: item.id || item.name
51
+ }));
52
+ }), [items]);
53
+ const decoratedGroupChildren = CheckableGroup.useCheckableGroup({
54
+ children: renderedItems || children,
55
+ multi,
56
+ active,
57
+ onCheck: onSelect
58
+ });
59
+
60
+ if (searchable) {
61
+ return /*#__PURE__*/_jsx__default["default"](SearchableGroup["default"], {
62
+ focusOnOpen: focusOnOpen,
63
+ height: height,
64
+ items: items,
65
+ width: width
66
+ }, void 0, decoratedGroupChildren);
67
+ }
68
+
69
+ return /*#__PURE__*/_jsx__default["default"](VirtualMenuList, {
70
+ height: height,
71
+ items: decoratedGroupChildren,
72
+ width: width,
73
+ amountItemsInWindow: maxOptions
74
+ });
75
+ }
76
+
77
+ const props = {
78
+ /** toggle on multi select */
79
+ multi: reactDesc.PropTypes.bool.description('toggle on multi select'),
80
+
81
+ /** toggle on searchable behavior */
82
+ searchable: reactDesc.PropTypes.bool.description('toggle on searchable behavior'),
83
+
84
+ /** toggle to focus component on open */
85
+ focusOnOpen: reactDesc.PropTypes.bool.description('toggle to focus component on open'),
86
+
87
+ /** callback that triggers when select happens */
88
+ onSelect: reactDesc.PropTypes.func.description('callback that triggers when select happens'),
89
+ children: reactDesc.PropTypes.node.description(''),
90
+
91
+ /** selection group items */
92
+ items: reactDesc.PropTypes.array.description('selection group items'),
93
+
94
+ /** array of values for multi and string for single selection */
95
+ active: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.string, reactDesc.PropTypes.array]).description('array of values for multi and string for single selection'),
96
+
97
+ /** selection group width */
98
+ width: reactDesc.PropTypes.number.description('selection group width'),
99
+
100
+ /** selection group height */
101
+ height: reactDesc.PropTypes.number.description('selection group height')
102
+ };
103
+ const DSMenuSelectionGroupWithSchema = reactDesc.describe(SelectionGroup);
104
+ DSMenuSelectionGroupWithSchema.propTypes = props;
105
+
106
+ exports.DSMenuSelectionGroupWithSchema = DSMenuSelectionGroupWithSchema;
107
+ exports["default"] = SelectionGroup;
@@ -2,7 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var React = require('react');
5
+ var _jsx = require('@babel/runtime/helpers/jsx');
6
+ require('react');
6
7
  var reactDesc = require('react-desc');
7
8
  var dsClassnames = require('@elliemae/ds-classnames');
8
9
  var DSSeparator = require('@elliemae/ds-separator');
@@ -10,34 +11,34 @@ var styled = require('styled-components');
10
11
 
11
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
13
 
13
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
+ var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
14
15
  var DSSeparator__default = /*#__PURE__*/_interopDefaultLegacy(DSSeparator);
15
16
  var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
16
17
 
17
- var blockName = 'menu-separator';
18
- var Li = /*#__PURE__*/styled__default['default'].li.withConfig({
18
+ var _DSSeparator;
19
+ const blockName = 'menu-separator';
20
+ const Li = /*#__PURE__*/styled__default["default"].li.withConfig({
19
21
  componentId: "sc-aysbq3-0"
20
22
  })(["display:flex;align-items:flex-start;flex-direction:column;"]);
21
- var Title = dsClassnames.aggregatedClasses('h5')(blockName, 'title');
22
-
23
- var MenuSeparator = function MenuSeparator(_ref) {
24
- var title = _ref.title,
25
- _ref$showSeparator = _ref.showSeparator,
26
- showSeparator = _ref$showSeparator === void 0 ? true : _ref$showSeparator;
27
- return /*#__PURE__*/React__default['default'].createElement(Li, null, showSeparator && /*#__PURE__*/React__default['default'].createElement(DSSeparator__default['default'], null), title && /*#__PURE__*/React__default['default'].createElement(Title, null, title));
23
+ const Title = dsClassnames.aggregatedClasses('h5')(blockName, 'title');
24
+
25
+ const MenuSeparator = _ref => {
26
+ let {
27
+ title,
28
+ showSeparator = true
29
+ } = _ref;
30
+ return /*#__PURE__*/_jsx__default["default"](Li, {}, void 0, showSeparator && (_DSSeparator || (_DSSeparator = /*#__PURE__*/_jsx__default["default"](DSSeparator__default["default"], {}))), title && /*#__PURE__*/_jsx__default["default"](Title, {}, void 0, title));
28
31
  };
29
32
 
30
- var props = {
33
+ const props = {
31
34
  /** menu separator h5 title */
32
35
  title: reactDesc.PropTypes.string.description('menu separator h5 title'),
33
36
 
34
37
  /** toggle separator on and off */
35
38
  showSeparator: reactDesc.PropTypes.bool.description('toggle separator on and off')
36
39
  };
37
- MenuSeparator.propTypes = props;
38
- var DSMenuSeparatorWithSchema = reactDesc.describe(MenuSeparator);
40
+ const DSMenuSeparatorWithSchema = reactDesc.describe(MenuSeparator);
39
41
  DSMenuSeparatorWithSchema.propTypes = props;
40
42
 
41
43
  exports.DSMenuSeparatorWithSchema = DSMenuSeparatorWithSchema;
42
- exports['default'] = MenuSeparator;
43
- //# sourceMappingURL=Separator.js.map
44
+ exports["default"] = MenuSeparator;