@elliemae/ds-menu 2.0.0-alpha.1 → 2.0.0-alpha.13
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.
- package/cjs/Menu.js +41 -26
- package/cjs/MenuCombobox.js +8 -3
- package/cjs/MenuContext.js +1 -1
- package/cjs/MenuItems/CheckboxGroup.js +8 -3
- package/cjs/MenuItems/MenuItem.js +53 -39
- package/cjs/MenuItems/MenuItemCheckable.js +21 -16
- package/cjs/MenuItems/MenuItemCheckbox.js +10 -6
- package/cjs/MenuItems/MenuItemRadio.js +9 -4
- package/cjs/MenuItems/RadioGroup.js +8 -3
- package/cjs/MenuItems/SearchableGroup.js +23 -15
- package/cjs/MenuItems/SearchableList.js +25 -19
- package/cjs/MenuItems/SelectionGroup.js +26 -16
- package/cjs/MenuItems/Separator.js +9 -6
- package/cjs/MenuItems/SubMenu.js +31 -28
- package/cjs/MenuItems/menuItemFactory.js +21 -10
- package/cjs/VirtualMenuList.js +22 -15
- package/cjs/index.js +1 -1
- package/cjs/utils/useHeightByAmountOfItems.js +6 -5
- package/esm/Menu.js +26 -11
- package/esm/MenuCombobox.js +5 -0
- package/esm/MenuItems/CheckboxGroup.js +5 -0
- package/esm/MenuItems/MenuItem.js +43 -29
- package/esm/MenuItems/MenuItemCheckable.js +14 -8
- package/esm/MenuItems/MenuItemCheckbox.js +6 -1
- package/esm/MenuItems/MenuItemRadio.js +5 -0
- package/esm/MenuItems/RadioGroup.js +5 -0
- package/esm/MenuItems/SearchableGroup.js +20 -12
- package/esm/MenuItems/SearchableList.js +21 -14
- package/esm/MenuItems/SelectionGroup.js +22 -12
- package/esm/MenuItems/Separator.js +7 -4
- package/esm/MenuItems/SubMenu.js +25 -20
- package/esm/MenuItems/menuItemFactory.js +14 -3
- package/esm/VirtualMenuList.js +21 -14
- package/esm/utils/useHeightByAmountOfItems.js +6 -5
- package/package.json +16 -13
- package/types/Menu.d.ts +24 -1
- package/types/MenuItems/CheckboxGroup.d.ts +24 -4
- package/types/MenuItems/MenuItem.d.ts +60 -10
- package/types/MenuItems/MenuItemCheckable.d.ts +51 -7
- package/types/MenuItems/MenuItemRadio.d.ts +27 -3
- package/types/MenuItems/RadioGroup.d.ts +18 -3
- package/types/MenuItems/SearchableGroup.d.ts +15 -1
- package/types/MenuItems/SearchableList.d.ts +77 -11
- package/types/MenuItems/SelectionGroup.d.ts +73 -11
- package/types/MenuItems/Separator.d.ts +21 -3
- package/types/MenuItems/SubMenu.d.ts +91 -13
- package/cjs/package.json +0 -7
- package/esm/package.json +0 -7
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
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');
|
|
@@ -20,15 +24,16 @@ var DSSearchBox__default = /*#__PURE__*/_interopDefaultLegacy(DSSearchBox);
|
|
|
20
24
|
const SearchBoxWrapper = dsClassnames.aggregatedClasses('div')('menu-search-group', 'search-wrapper');
|
|
21
25
|
const NoOptionsWrapper = dsClassnames.aggregatedClasses('div')('menu-search-group', 'no-options');
|
|
22
26
|
|
|
23
|
-
function SearchableGroup({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
function SearchableGroup(_ref) {
|
|
28
|
+
let {
|
|
29
|
+
children,
|
|
30
|
+
amountItemsInWindow = 5,
|
|
31
|
+
searchTerm: searchTermProp = '',
|
|
32
|
+
noOptionsText = 'No options',
|
|
33
|
+
height,
|
|
34
|
+
width,
|
|
35
|
+
focusOnOpen = false
|
|
36
|
+
} = _ref;
|
|
32
37
|
const searchRef = React.useRef(null);
|
|
33
38
|
const [searchTerm, setSearchTerm] = React.useState(searchTermProp);
|
|
34
39
|
React.useEffect(() => {
|
|
@@ -46,15 +51,18 @@ function SearchableGroup({
|
|
|
46
51
|
}, [focusOnOpen, visible]);
|
|
47
52
|
const filteredChildren = React.useMemo(() => children.filter(child => !searchTerm || child.props.label.toLowerCase().startsWith(searchTerm.toLowerCase())), [children, searchTerm]);
|
|
48
53
|
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
49
|
-
children: [/*#__PURE__*/_jsx__default[
|
|
54
|
+
children: [/*#__PURE__*/_jsx__default["default"](SearchBoxWrapper, {}, void 0, /*#__PURE__*/_jsx__default["default"](DSSearchBox__default["default"], {
|
|
50
55
|
innerRef: searchRef,
|
|
51
|
-
onSearch:
|
|
52
|
-
|
|
53
|
-
|
|
56
|
+
onSearch: _ref2 => {
|
|
57
|
+
let {
|
|
58
|
+
value
|
|
59
|
+
} = _ref2;
|
|
60
|
+
return setSearchTerm(value);
|
|
61
|
+
},
|
|
54
62
|
searchOnEnter: false,
|
|
55
63
|
showIcon: false,
|
|
56
64
|
value: searchTerm
|
|
57
|
-
})), !filteredChildren.length && /*#__PURE__*/_jsx__default[
|
|
65
|
+
})), !filteredChildren.length && /*#__PURE__*/_jsx__default["default"](NoOptionsWrapper, {}, void 0, noOptionsText), /*#__PURE__*/_jsx__default["default"](VirtualMenuList, {
|
|
58
66
|
amountItemsInWindow: amountItemsInWindow,
|
|
59
67
|
height: height,
|
|
60
68
|
items: filteredChildren,
|
|
@@ -90,4 +98,4 @@ DSMenuSearchableGroupWithSchema.propTypes = props;
|
|
|
90
98
|
var SearchableGroup$1 = FocusGroup.focusGroupManagerHoc(SearchableGroup);
|
|
91
99
|
|
|
92
100
|
exports.DSMenuSearchableGroupWithSchema = DSMenuSearchableGroupWithSchema;
|
|
93
|
-
exports[
|
|
101
|
+
exports["default"] = SearchableGroup$1;
|
|
@@ -3,35 +3,41 @@
|
|
|
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
|
+
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');
|
|
6
12
|
var React = require('react');
|
|
7
13
|
var reactDesc = require('react-desc');
|
|
8
|
-
var
|
|
9
|
-
var
|
|
14
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
15
|
+
var dsForm = require('@elliemae/ds-form');
|
|
10
16
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
17
|
|
|
12
18
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
19
|
|
|
14
20
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
15
|
-
var DSComboBox__default = /*#__PURE__*/_interopDefaultLegacy(DSComboBox);
|
|
16
21
|
|
|
17
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; }
|
|
18
23
|
|
|
19
|
-
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[
|
|
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; }
|
|
20
25
|
|
|
21
26
|
const noop = () => {};
|
|
22
27
|
|
|
23
|
-
function SearchableList({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
28
|
+
function SearchableList(_ref) {
|
|
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;
|
|
35
41
|
const [searchTerm, setInputValue] = React.useState(searchTermProp);
|
|
36
42
|
const handleInputChange = React.useCallback((value, args) => {
|
|
37
43
|
const action = args ? args.action : null;
|
|
@@ -46,11 +52,11 @@ function SearchableList({
|
|
|
46
52
|
handleFilterByText();
|
|
47
53
|
}
|
|
48
54
|
}, [searchTerm]);
|
|
49
|
-
const options = React.useMemo(() => searchTerm && appendTermInList ?
|
|
55
|
+
const options = React.useMemo(() => searchTerm && appendTermInList ? dsUtilities.uniqBy([{
|
|
50
56
|
id: searchTerm,
|
|
51
57
|
label: searchTerm
|
|
52
58
|
}].concat(items), item => item.label) : items, [searchTerm, appendTermInList]);
|
|
53
|
-
return /*#__PURE__*/jsxRuntime.jsx(
|
|
59
|
+
return /*#__PURE__*/jsxRuntime.jsx(dsForm.DSComboBox, _objectSpread(_objectSpread({
|
|
54
60
|
autoFocus: true,
|
|
55
61
|
components: _objectSpread({
|
|
56
62
|
DropdownIndicator: null
|
|
@@ -108,4 +114,4 @@ const DSMenuSearchableListWithSchema = reactDesc.describe(SearchableList);
|
|
|
108
114
|
DSMenuSearchableListWithSchema.propTypes = props;
|
|
109
115
|
|
|
110
116
|
exports.DSMenuSearchableListWithSchema = DSMenuSearchableListWithSchema;
|
|
111
|
-
exports[
|
|
117
|
+
exports["default"] = SearchableList;
|
|
@@ -4,6 +4,13 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
6
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');
|
|
7
14
|
var React = require('react');
|
|
8
15
|
var reactDesc = require('react-desc');
|
|
9
16
|
var CheckableGroup = require('@elliemae/ds-shared/CheckableGroup');
|
|
@@ -18,21 +25,23 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
|
18
25
|
|
|
19
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; }
|
|
20
27
|
|
|
21
|
-
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[
|
|
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; }
|
|
22
29
|
|
|
23
30
|
const noop = () => null;
|
|
24
31
|
|
|
25
|
-
function SelectionGroup({
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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;
|
|
36
45
|
const renderedItems = React.useMemo(() => items && items.map(item => {
|
|
37
46
|
const Component = menuItemFactory.menuItemFactory(multi ? 'checkbox' : 'radio');
|
|
38
47
|
return /*#__PURE__*/React.createElement(Component, _objectSpread(_objectSpread({}, item), {}, {
|
|
@@ -49,7 +58,7 @@ function SelectionGroup({
|
|
|
49
58
|
});
|
|
50
59
|
|
|
51
60
|
if (searchable) {
|
|
52
|
-
return /*#__PURE__*/_jsx__default[
|
|
61
|
+
return /*#__PURE__*/_jsx__default["default"](SearchableGroup["default"], {
|
|
53
62
|
focusOnOpen: focusOnOpen,
|
|
54
63
|
height: height,
|
|
55
64
|
items: items,
|
|
@@ -57,10 +66,11 @@ function SelectionGroup({
|
|
|
57
66
|
}, void 0, decoratedGroupChildren);
|
|
58
67
|
}
|
|
59
68
|
|
|
60
|
-
return /*#__PURE__*/_jsx__default[
|
|
69
|
+
return /*#__PURE__*/_jsx__default["default"](VirtualMenuList, {
|
|
61
70
|
height: height,
|
|
62
71
|
items: decoratedGroupChildren,
|
|
63
|
-
width: width
|
|
72
|
+
width: width,
|
|
73
|
+
amountItemsInWindow: maxOptions
|
|
64
74
|
});
|
|
65
75
|
}
|
|
66
76
|
|
|
@@ -94,4 +104,4 @@ const DSMenuSelectionGroupWithSchema = reactDesc.describe(SelectionGroup);
|
|
|
94
104
|
DSMenuSelectionGroupWithSchema.propTypes = props;
|
|
95
105
|
|
|
96
106
|
exports.DSMenuSelectionGroupWithSchema = DSMenuSelectionGroupWithSchema;
|
|
97
|
-
exports[
|
|
107
|
+
exports["default"] = SelectionGroup;
|
|
@@ -17,15 +17,18 @@ var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
|
17
17
|
|
|
18
18
|
var _DSSeparator;
|
|
19
19
|
const blockName = 'menu-separator';
|
|
20
|
-
const Li = /*#__PURE__*/styled__default[
|
|
20
|
+
const Li = /*#__PURE__*/styled__default["default"].li.withConfig({
|
|
21
21
|
componentId: "sc-aysbq3-0"
|
|
22
22
|
})(["display:flex;align-items:flex-start;flex-direction:column;"]);
|
|
23
23
|
const Title = dsClassnames.aggregatedClasses('h5')(blockName, 'title');
|
|
24
24
|
|
|
25
|
-
const MenuSeparator =
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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));
|
|
31
|
+
};
|
|
29
32
|
|
|
30
33
|
const props = {
|
|
31
34
|
/** menu separator h5 title */
|
|
@@ -38,4 +41,4 @@ const DSMenuSeparatorWithSchema = reactDesc.describe(MenuSeparator);
|
|
|
38
41
|
DSMenuSeparatorWithSchema.propTypes = props;
|
|
39
42
|
|
|
40
43
|
exports.DSMenuSeparatorWithSchema = DSMenuSeparatorWithSchema;
|
|
41
|
-
exports[
|
|
44
|
+
exports["default"] = MenuSeparator;
|
package/cjs/MenuItems/SubMenu.js
CHANGED
|
@@ -4,15 +4,19 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
6
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
7
|
+
require('core-js/modules/web.dom-collections.iterator.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
7
13
|
var React = require('react');
|
|
8
14
|
var reactDesc = require('react-desc');
|
|
9
|
-
var
|
|
10
|
-
var VerticalElipsis = require('@elliemae/ds-icons/MoreOptionsVert');
|
|
15
|
+
var dsIcons = require('@elliemae/ds-icons');
|
|
11
16
|
var FocusGroup = require('@elliemae/ds-shared/FocusGroup');
|
|
12
17
|
var dsHidden = require('@elliemae/ds-hidden');
|
|
13
18
|
var DSButton = require('@elliemae/ds-button');
|
|
14
19
|
var DSPopper = require('@elliemae/ds-popper');
|
|
15
|
-
var interaction = require('@elliemae/ds-popper/interaction');
|
|
16
20
|
var styled = require('styled-components');
|
|
17
21
|
var Menu = require('../Menu.js');
|
|
18
22
|
var MenuItem = require('./MenuItem.js');
|
|
@@ -22,33 +26,32 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
22
26
|
|
|
23
27
|
var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
|
|
24
28
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
25
|
-
var ChevronRight__default = /*#__PURE__*/_interopDefaultLegacy(ChevronRight);
|
|
26
|
-
var VerticalElipsis__default = /*#__PURE__*/_interopDefaultLegacy(VerticalElipsis);
|
|
27
29
|
var DSButton__default = /*#__PURE__*/_interopDefaultLegacy(DSButton);
|
|
28
30
|
var DSPopper__default = /*#__PURE__*/_interopDefaultLegacy(DSPopper);
|
|
29
31
|
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
30
32
|
|
|
31
33
|
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; }
|
|
32
34
|
|
|
33
|
-
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[
|
|
34
|
-
const ChevronRightComp = /*#__PURE__*/styled__default[
|
|
35
|
+
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; }
|
|
36
|
+
const ChevronRightComp = /*#__PURE__*/styled__default["default"].div.withConfig({
|
|
35
37
|
componentId: "sc-1qhp1z-0"
|
|
36
38
|
})(["display:flex;justify-content:center;align-items:center;width:28px;"]);
|
|
37
39
|
|
|
38
|
-
function SubMenu({
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
40
|
+
function SubMenu(_ref) {
|
|
41
|
+
let {
|
|
42
|
+
noAddon,
|
|
43
|
+
leftAddon = undefined,
|
|
44
|
+
label = undefined,
|
|
45
|
+
interactionType = 'hover',
|
|
46
|
+
children: subitems,
|
|
47
|
+
rightAddonType,
|
|
48
|
+
disabledAddonInactive,
|
|
49
|
+
checkableProps = {},
|
|
50
|
+
customRenderer,
|
|
51
|
+
onClick,
|
|
52
|
+
closeMenu,
|
|
53
|
+
id
|
|
54
|
+
} = _ref;
|
|
52
55
|
const itemRef = React.useRef(null);
|
|
53
56
|
const focusOnOpen = React.useRef(false);
|
|
54
57
|
const [isAddonHovered, setIsAddonHovered] = React.useState(false);
|
|
@@ -100,11 +103,11 @@ function SubMenu({
|
|
|
100
103
|
} : {
|
|
101
104
|
onClick: handleShowWithMouse
|
|
102
105
|
};
|
|
103
|
-
const rightAddon = rightAddonType === 'elipsis' ? /*#__PURE__*/_jsx__default[
|
|
106
|
+
const rightAddon = rightAddonType === 'elipsis' ? /*#__PURE__*/_jsx__default["default"](DSButton__default["default"], {
|
|
104
107
|
"aria-label": "vertical-elipsis",
|
|
105
108
|
"data-testid": "vertical-elipsis",
|
|
106
109
|
buttonType: "text",
|
|
107
|
-
leftIcon: /*#__PURE__*/_jsx__default[
|
|
110
|
+
leftIcon: /*#__PURE__*/_jsx__default["default"](dsIcons.MoreOptionsVert, {
|
|
108
111
|
className: "submenu-arrow",
|
|
109
112
|
color: visible || isAddonHovered ? ['brand-primary', 800] : ['neutral', 500],
|
|
110
113
|
size: "s"
|
|
@@ -112,14 +115,14 @@ function SubMenu({
|
|
|
112
115
|
onClick: e => handleShowSubItemsWithMouse(e),
|
|
113
116
|
size: "m",
|
|
114
117
|
variant: DSButton.BUTTON_VARIANT.DEFAULT
|
|
115
|
-
}) : /*#__PURE__*/_jsx__default[
|
|
118
|
+
}) : /*#__PURE__*/_jsx__default["default"](ChevronRightComp, {}, void 0, /*#__PURE__*/_jsx__default["default"](dsIcons.ChevronSmallRight, {
|
|
116
119
|
"data-testid": "chevron-right",
|
|
117
120
|
className: "submenu-arrow",
|
|
118
121
|
color: visible || isAddonHovered ? ['brand-primary', 800] : ['neutral', 500],
|
|
119
122
|
size: "sm"
|
|
120
123
|
}));
|
|
121
124
|
return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
122
|
-
children: /*#__PURE__*/_jsx__default[
|
|
125
|
+
children: /*#__PURE__*/_jsx__default["default"](DSPopper__default["default"], {
|
|
123
126
|
contentComponent: /*#__PURE__*/jsxRuntime.jsx(Menu.Menu, _objectSpread(_objectSpread({
|
|
124
127
|
focusKeyBindings: {
|
|
125
128
|
ArrowLeft: [() => focusItemByNode(itemRef.current), 'exit']
|
|
@@ -136,7 +139,7 @@ function SubMenu({
|
|
|
136
139
|
onOpen: opening => opening ? onShow() : onHide(),
|
|
137
140
|
placement: "right-start",
|
|
138
141
|
showArrow: false,
|
|
139
|
-
triggerComponent: /*#__PURE__*/jsxRuntime.jsx(MenuItem[
|
|
142
|
+
triggerComponent: /*#__PURE__*/jsxRuntime.jsx(MenuItem["default"], _objectSpread(_objectSpread({
|
|
140
143
|
customRenderer: customRenderer,
|
|
141
144
|
disabledAddonInactive: disabledAddonInactive,
|
|
142
145
|
id: id,
|
|
@@ -171,7 +174,7 @@ const props = {
|
|
|
171
174
|
label: reactDesc.PropTypes.string.description('submenu label'),
|
|
172
175
|
|
|
173
176
|
/** A type indicating how to open/close the tooltip */
|
|
174
|
-
interactionType: reactDesc.PropTypes.oneOf(
|
|
177
|
+
interactionType: reactDesc.PropTypes.oneOf(DSPopper.interactions).description('A type indicating how to open/close the tooltip'),
|
|
175
178
|
|
|
176
179
|
/** sub menu items */
|
|
177
180
|
children: reactDesc.PropTypes.oneOfType([reactDesc.PropTypes.array, reactDesc.PropTypes.node]).description('sub menu items'),
|
|
@@ -197,4 +200,4 @@ const DSSubMenuWithSchema = reactDesc.describe(SubMenu);
|
|
|
197
200
|
DSSubMenuWithSchema.propTypes = props;
|
|
198
201
|
|
|
199
202
|
exports.DSSubMenuWithSchema = DSSubMenuWithSchema;
|
|
200
|
-
exports[
|
|
203
|
+
exports["default"] = SubMenu;
|
|
@@ -3,8 +3,15 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
6
|
+
require('core-js/modules/esnext.async-iterator.map.js');
|
|
7
|
+
require('core-js/modules/esnext.iterator.map.js');
|
|
8
|
+
require('core-js/modules/esnext.async-iterator.filter.js');
|
|
9
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
10
|
+
require('core-js/modules/esnext.iterator.filter.js');
|
|
11
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
12
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
6
13
|
var React = require('react');
|
|
7
|
-
var
|
|
14
|
+
var dsUtilities = require('@elliemae/ds-utilities');
|
|
8
15
|
var Separator = require('./Separator.js');
|
|
9
16
|
var MenuItem = require('./MenuItem.js');
|
|
10
17
|
var SubMenu = require('./SubMenu.js');
|
|
@@ -18,26 +25,30 @@ var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_definePropert
|
|
|
18
25
|
|
|
19
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; }
|
|
20
27
|
|
|
21
|
-
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[
|
|
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; }
|
|
22
29
|
const itemTypes = {
|
|
23
|
-
separator: Separator[
|
|
24
|
-
menuitem: MenuItem[
|
|
25
|
-
radio: MenuItemRadio[
|
|
30
|
+
separator: Separator["default"],
|
|
31
|
+
menuitem: MenuItem["default"],
|
|
32
|
+
radio: MenuItemRadio["default"],
|
|
26
33
|
checkbox: MenuItemCheckbox,
|
|
27
|
-
submenu: SubMenu[
|
|
28
|
-
'selection-group': SelectionGroup[
|
|
34
|
+
submenu: SubMenu["default"],
|
|
35
|
+
'selection-group': SelectionGroup["default"]
|
|
29
36
|
};
|
|
30
37
|
const fallback = {
|
|
31
38
|
SelectionGroup: 'selection-group'
|
|
32
39
|
};
|
|
33
|
-
function menuItemFactory(
|
|
40
|
+
function menuItemFactory() {
|
|
41
|
+
let type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
42
|
+
let items = arguments.length > 1 ? arguments[1] : undefined;
|
|
43
|
+
let defaultItem = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : itemTypes.menuitem;
|
|
34
44
|
const itemsObject = items || itemTypes;
|
|
35
45
|
const parsedType = fallback[type] || type.toLowerCase();
|
|
36
46
|
return itemsObject[parsedType] || defaultItem;
|
|
37
47
|
}
|
|
38
|
-
function renderMenuItems(options
|
|
48
|
+
function renderMenuItems(options) {
|
|
49
|
+
let factory = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : menuItemFactory;
|
|
39
50
|
return options.map((option, index) => {
|
|
40
|
-
if (
|
|
51
|
+
if (dsUtilities.isFunction(option.renderer)) {
|
|
41
52
|
return option.renderer({
|
|
42
53
|
key: option.id,
|
|
43
54
|
item: option
|
package/cjs/VirtualMenuList.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _jsx = require('@babel/runtime/helpers/jsx');
|
|
4
|
+
require('core-js/modules/esnext.async-iterator.for-each.js');
|
|
5
|
+
require('core-js/modules/esnext.iterator.constructor.js');
|
|
6
|
+
require('core-js/modules/esnext.iterator.for-each.js');
|
|
4
7
|
require('react');
|
|
5
8
|
var reactWindow = require('react-window');
|
|
6
9
|
var useHeightByAmountOfItems = require('./utils/useHeightByAmountOfItems.js');
|
|
@@ -9,27 +12,31 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
|
|
|
9
12
|
|
|
10
13
|
var _jsx__default = /*#__PURE__*/_interopDefaultLegacy(_jsx);
|
|
11
14
|
|
|
12
|
-
const MenuItem =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
const MenuItem = _ref => {
|
|
16
|
+
let {
|
|
17
|
+
data,
|
|
18
|
+
index,
|
|
19
|
+
style
|
|
20
|
+
} = _ref;
|
|
21
|
+
return /*#__PURE__*/_jsx__default["default"]("div", {
|
|
22
|
+
style: style
|
|
23
|
+
}, index, data && data[index] ? data[index] : '');
|
|
24
|
+
}; // eslint-disable-next-line no-unused-vars
|
|
19
25
|
|
|
20
|
-
function VirtualMenuList({
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
function VirtualMenuList(_ref2) {
|
|
27
|
+
let {
|
|
28
|
+
items,
|
|
29
|
+
itemHeight = 32,
|
|
30
|
+
amountItemsInWindow = 5,
|
|
31
|
+
width,
|
|
32
|
+
height
|
|
33
|
+
} = _ref2;
|
|
27
34
|
const computedListHeight = useHeightByAmountOfItems({
|
|
28
35
|
amountItems: amountItemsInWindow,
|
|
29
36
|
itemHeight,
|
|
30
37
|
items
|
|
31
38
|
});
|
|
32
|
-
return /*#__PURE__*/_jsx__default[
|
|
39
|
+
return /*#__PURE__*/_jsx__default["default"](reactWindow.FixedSizeList, {
|
|
33
40
|
height: height || computedListHeight,
|
|
34
41
|
itemCount: items.length,
|
|
35
42
|
itemData: items,
|
package/cjs/index.js
CHANGED
|
@@ -20,7 +20,7 @@ var menuItemFactory = require('./MenuItems/menuItemFactory.js');
|
|
|
20
20
|
|
|
21
21
|
exports.DSMenuWithSchema = Menu.DSMenuWithSchema;
|
|
22
22
|
exports.Menu = Menu.Menu;
|
|
23
|
-
exports
|
|
23
|
+
exports["default"] = Menu.Menu;
|
|
24
24
|
exports.DSMenuItemWithSchema = MenuItem.DSMenuItemWithSchema;
|
|
25
25
|
exports.DSSubMenuWithSchema = SubMenu.DSSubMenuWithSchema;
|
|
26
26
|
exports.DSMenuCheckboxGroupWithSchema = CheckboxGroup.DSMenuCheckboxGroupWithSchema;
|
|
@@ -7,11 +7,12 @@ const calculateHeight = (itemHeight, amountItemsInWindow, itemsLength) => {
|
|
|
7
7
|
return itemHeight * realAmountItemsInWindow;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
function useHeightByAmountOfItems({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
function useHeightByAmountOfItems(_ref) {
|
|
11
|
+
let {
|
|
12
|
+
itemHeight,
|
|
13
|
+
amountItems,
|
|
14
|
+
items
|
|
15
|
+
} = _ref;
|
|
15
16
|
const calculatedHeight = React.useMemo(() => calculateHeight(itemHeight, amountItems, items.length), [amountItems, items]);
|
|
16
17
|
return calculatedHeight;
|
|
17
18
|
}
|
package/esm/Menu.js
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
3
3
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.some.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
6
|
+
import 'core-js/modules/esnext.iterator.some.js';
|
|
7
|
+
import 'core-js/modules/esnext.async-iterator.constructor.js';
|
|
8
|
+
import 'core-js/modules/esnext.async-iterator.to-array.js';
|
|
9
|
+
import 'core-js/modules/esnext.iterator.to-array.js';
|
|
10
|
+
import 'core-js/modules/esnext.async-iterator.map.js';
|
|
11
|
+
import 'core-js/modules/esnext.iterator.map.js';
|
|
12
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
13
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
14
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
15
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
4
16
|
import React, { useRef, useContext, useMemo, useEffect } from 'react';
|
|
5
17
|
import { PropTypes, describe } from 'react-desc';
|
|
6
18
|
import { omit } from 'lodash';
|
|
@@ -34,13 +46,16 @@ const blockName = 'menu';
|
|
|
34
46
|
|
|
35
47
|
const noop = () => {};
|
|
36
48
|
|
|
37
|
-
const MenuComponent = aggregatedClasses('div')(blockName, '',
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
49
|
+
const MenuComponent = aggregatedClasses('div')(blockName, '', _ref => {
|
|
50
|
+
let {
|
|
51
|
+
menuComboBox,
|
|
52
|
+
type
|
|
53
|
+
} = _ref;
|
|
54
|
+
return {
|
|
55
|
+
'menu-combo-box': menuComboBox,
|
|
56
|
+
["type-".concat(type)]: type
|
|
57
|
+
};
|
|
58
|
+
});
|
|
44
59
|
/**
|
|
45
60
|
* todo: -- IDEA -- each menu could have an overlay based on an overlay stack context so we can
|
|
46
61
|
* capture the context of the clicks on very nested components
|
|
@@ -48,7 +63,7 @@ const MenuComponent = aggregatedClasses('div')(blockName, '', ({
|
|
|
48
63
|
|
|
49
64
|
const isChildOfType = (child, type) => child.type.name === type;
|
|
50
65
|
|
|
51
|
-
function DSMenu(
|
|
66
|
+
function DSMenu(_ref2) {
|
|
52
67
|
let {
|
|
53
68
|
containerProps = {},
|
|
54
69
|
innerRef,
|
|
@@ -64,8 +79,8 @@ function DSMenu(_ref) {
|
|
|
64
79
|
maxWidth = undefined,
|
|
65
80
|
closeMenu,
|
|
66
81
|
responsiveHeight = false
|
|
67
|
-
} =
|
|
68
|
-
otherProps = _objectWithoutProperties(
|
|
82
|
+
} = _ref2,
|
|
83
|
+
otherProps = _objectWithoutProperties(_ref2, _excluded);
|
|
69
84
|
|
|
70
85
|
const menuRef = useRef(null);
|
|
71
86
|
const {
|
|
@@ -118,7 +133,7 @@ function DSMenu(_ref) {
|
|
|
118
133
|
maxWidth
|
|
119
134
|
}, responsiveHeight ? {
|
|
120
135
|
overflowY: 'scroll',
|
|
121
|
-
maxHeight: responsiveHeight ?
|
|
136
|
+
maxHeight: responsiveHeight ? "".concat(window.innerHeight - RESPONSIVE_HEIHGT_MARGIN, "px") : undefined
|
|
122
137
|
} : {})
|
|
123
138
|
}, void 0, nextChildren)
|
|
124
139
|
}))) : null;
|
package/esm/MenuCombobox.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
3
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
1
6
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
7
|
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
3
8
|
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
3
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
1
6
|
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
7
|
import 'react';
|
|
3
8
|
import { PropTypes, describe } from 'react-desc';
|