@pingux/astro 2.84.0-alpha.2 → 2.84.0-alpha.4
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/lib/cjs/components/LinkSelectField/LinkSelectField.stories.js +3 -6
- package/lib/cjs/components/ListBox/ListBox.styles.js +6 -3
- package/lib/cjs/components/Menu/Menu.js +15 -3
- package/lib/cjs/components/Menu/Menu.test.js +23 -0
- package/lib/cjs/components/MenuSection/MenuSection.d.ts +9 -0
- package/lib/cjs/components/MenuSection/MenuSection.js +76 -0
- package/lib/cjs/components/MenuSection/MenuSection.styles.d.ts +21 -0
- package/lib/cjs/components/MenuSection/MenuSection.styles.js +35 -0
- package/lib/cjs/components/MenuSection/MenuSection.test.d.ts +1 -0
- package/lib/cjs/components/MenuSection/MenuSection.test.js +100 -0
- package/lib/cjs/components/MenuSection/index.d.ts +1 -0
- package/lib/cjs/components/MenuSection/index.js +14 -0
- package/lib/cjs/components/PopoverMenu/PopoverMenu.stories.d.ts +2 -0
- package/lib/cjs/components/PopoverMenu/PopoverMenu.stories.js +73 -5
- package/lib/cjs/components/SelectField/SelectField.stories.js +3 -6
- package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +3 -0
- package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +3 -0
- package/lib/cjs/styles/themes/next-gen/variants/variants.js +4 -1
- package/lib/cjs/styles/variants/variants.js +2 -0
- package/lib/cjs/types/index.d.ts +1 -0
- package/lib/cjs/types/index.js +32 -21
- package/lib/cjs/types/menuSection.d.ts +24 -0
- package/lib/cjs/types/menuSection.js +6 -0
- package/lib/components/LinkSelectField/LinkSelectField.stories.js +4 -7
- package/lib/components/ListBox/ListBox.styles.js +6 -3
- package/lib/components/Menu/Menu.js +15 -3
- package/lib/components/Menu/Menu.test.js +24 -1
- package/lib/components/MenuSection/MenuSection.js +64 -0
- package/lib/components/MenuSection/MenuSection.styles.js +27 -0
- package/lib/components/MenuSection/MenuSection.test.js +97 -0
- package/lib/components/MenuSection/index.js +1 -0
- package/lib/components/PopoverMenu/PopoverMenu.stories.js +70 -4
- package/lib/components/SelectField/SelectField.stories.js +4 -7
- package/lib/styles/themes/next-gen/variants/variants.js +4 -1
- package/lib/styles/variants/variants.js +2 -0
- package/lib/types/index.js +1 -0
- package/lib/types/menuSection.js +1 -0
- package/package.json +1 -1
@@ -181,18 +181,15 @@ exports.Controlled = Controlled;
|
|
181
181
|
var WithNoneOption = function WithNoneOption() {
|
182
182
|
return (0, _react2.jsx)(_index.LinkSelectField, {
|
183
183
|
label: "What's your favorite color?"
|
184
|
-
}, (0, _react2.jsx)(_index.Item, {
|
184
|
+
}, (0, _react2.jsx)(_index.Section, null, (0, _react2.jsx)(_index.Item, {
|
185
185
|
key: "none"
|
186
|
-
}, "None"), (0, _react2.jsx)(_index.Item, {
|
187
|
-
isSeparator: true,
|
188
|
-
textValue: "-"
|
189
|
-
}, (0, _react2.jsx)(_index.Separator, null)), (0, _react2.jsx)(_index.Item, {
|
186
|
+
}, "None")), (0, _react2.jsx)(_index.Section, null, (0, _react2.jsx)(_index.Item, {
|
190
187
|
key: "red"
|
191
188
|
}, "Red"), (0, _react2.jsx)(_index.Item, {
|
192
189
|
key: "blue"
|
193
190
|
}, "Blue"), (0, _react2.jsx)(_index.Item, {
|
194
191
|
key: "yellow"
|
195
|
-
}, "Yellow"));
|
192
|
+
}, "Yellow")));
|
196
193
|
};
|
197
194
|
exports.WithNoneOption = WithNoneOption;
|
198
195
|
var DisabledField = function DisabledField() {
|
@@ -27,13 +27,16 @@ listBox.option = _objectSpread(_objectSpread({}, _Text.text.base), {}, {
|
|
27
27
|
outline: 'none',
|
28
28
|
wordBreak: 'break-word',
|
29
29
|
cursor: 'pointer',
|
30
|
-
'&.is-selected': _objectSpread(_objectSpread({}, _Text.text.inputValue), {}, {
|
31
|
-
pl: 0
|
32
|
-
}),
|
33
30
|
'&.is-focused': {
|
34
31
|
color: 'white',
|
35
32
|
bg: 'active'
|
36
33
|
},
|
34
|
+
'&.is-selected': _objectSpread(_objectSpread({}, _Text.text.inputValue), {}, {
|
35
|
+
pl: 0,
|
36
|
+
'&.is-focused': {
|
37
|
+
color: 'white'
|
38
|
+
}
|
39
|
+
}),
|
37
40
|
'&.is-condensed': {
|
38
41
|
'&.is-selected': {
|
39
42
|
pl: 'md',
|
@@ -30,6 +30,7 @@ var _hooks = require("../../hooks");
|
|
30
30
|
var _orientation = _interopRequireDefault(require("../../utils/devUtils/constants/orientation"));
|
31
31
|
var _Box = _interopRequireDefault(require("../Box"));
|
32
32
|
var _MenuItem = _interopRequireDefault(require("../MenuItem"));
|
33
|
+
var _MenuSection = _interopRequireDefault(require("../MenuSection"));
|
33
34
|
var _react2 = require("@emotion/react");
|
34
35
|
var _excluded = ["isDisabled", "isNotFocusedOnHover", "onAction", "onHoverChange", "onHoverEnd", "onHoverStart", "onSelectionChange", "selectionMode"];
|
35
36
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
@@ -77,10 +78,21 @@ var Menu = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
77
78
|
"aria-orientation": _orientation["default"].VERTICAL
|
78
79
|
}, others, (0, _reactAria.mergeProps)(focusProps, menuProps, hoverProps), {
|
79
80
|
role: "menu"
|
80
|
-
}), (0, _map["default"])(_context = (0, _from["default"])(state.collection)).call(_context, function (
|
81
|
+
}), (0, _map["default"])(_context = (0, _from["default"])(state.collection)).call(_context, function (element) {
|
82
|
+
if (element.type === 'section') {
|
83
|
+
return (0, _react2.jsx)(_MenuSection["default"], {
|
84
|
+
key: element.key,
|
85
|
+
section: element,
|
86
|
+
state: state,
|
87
|
+
onAction: onAction,
|
88
|
+
isDisabled: isDisabled,
|
89
|
+
isFocusVisible: isFocusVisible,
|
90
|
+
isNotFocusedOnHover: isNotFocusedOnHover
|
91
|
+
});
|
92
|
+
}
|
81
93
|
return (0, _react2.jsx)(_MenuItem["default"], {
|
82
|
-
key:
|
83
|
-
item:
|
94
|
+
key: element.key,
|
95
|
+
item: element,
|
84
96
|
state: state,
|
85
97
|
onAction: onAction,
|
86
98
|
isDisabled: isDisabled,
|
@@ -54,6 +54,29 @@ test('should render basic menu with children', function () {
|
|
54
54
|
expect(menuItems).toHaveLength(3);
|
55
55
|
expect(menu).toHaveAttribute('aria-orientation', _orientation["default"].VERTICAL);
|
56
56
|
});
|
57
|
+
test('should render sections when sections are passed as Children', function () {
|
58
|
+
var menuSections = [{
|
59
|
+
key: 'menuSection 1',
|
60
|
+
children: defaultItems
|
61
|
+
}, {
|
62
|
+
key: 'menuSection 2',
|
63
|
+
children: defaultItems
|
64
|
+
}];
|
65
|
+
(0, _testWrapper.render)((0, _react2.jsx)(_index.Menu, defaultProps, (0, _map["default"])(menuSections).call(menuSections, function (section) {
|
66
|
+
var _context;
|
67
|
+
return (0, _react2.jsx)(_index.Section, section, (0, _map["default"])(_context = section.children).call(_context, function (item) {
|
68
|
+
return (0, _react2.jsx)(_index.Item, (0, _extends2["default"])({
|
69
|
+
key: item.id
|
70
|
+
}, item));
|
71
|
+
}));
|
72
|
+
})));
|
73
|
+
var menu = _testWrapper.screen.queryByRole('menu');
|
74
|
+
expect(menu).toBeInTheDocument();
|
75
|
+
var menuSection = _testWrapper.screen.queryAllByRole('group');
|
76
|
+
expect(menuSection).toHaveLength(2);
|
77
|
+
var menuItems = _testWrapper.screen.getAllByRole('menuitem');
|
78
|
+
expect(menuItems).toHaveLength(6);
|
79
|
+
});
|
57
80
|
test('should render items when selectionMode is set to single', function () {
|
58
81
|
getComponent({
|
59
82
|
selectionMode: 'single'
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { MenuSectionProps } from '../../types';
|
3
|
+
/**
|
4
|
+
* Menu Section component intended to be used within Menu or PopupMenu.
|
5
|
+
* This component is not intented to be used outside of Menu or independently.
|
6
|
+
* Utilizes [React Aria](https://react-spectrum.adobe.com/react-aria/useMenu.html)
|
7
|
+
*/
|
8
|
+
declare const MenuSection: React.ForwardRefExoticComponent<MenuSectionProps & React.RefAttributes<HTMLDivElement>>;
|
9
|
+
export default MenuSection;
|
@@ -0,0 +1,76 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
7
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
8
|
+
_Object$defineProperty(exports, "__esModule", {
|
9
|
+
value: true
|
10
|
+
});
|
11
|
+
exports["default"] = void 0;
|
12
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
13
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
14
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
15
|
+
var _react = _interopRequireWildcard(require("react"));
|
16
|
+
var _reactAria = require("react-aria");
|
17
|
+
var _hooks = require("../../hooks");
|
18
|
+
var _Box = _interopRequireDefault(require("../Box"));
|
19
|
+
var _MenuItem = _interopRequireDefault(require("../MenuItem"));
|
20
|
+
var _Separator = _interopRequireDefault(require("../Separator"));
|
21
|
+
var _react2 = require("@emotion/react");
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
23
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
24
|
+
/**
|
25
|
+
* Menu Section component intended to be used within Menu or PopupMenu.
|
26
|
+
* This component is not intented to be used outside of Menu or independently.
|
27
|
+
* Utilizes [React Aria](https://react-spectrum.adobe.com/react-aria/useMenu.html)
|
28
|
+
*/var MenuSection = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
29
|
+
var _context;
|
30
|
+
var section = props.section,
|
31
|
+
state = props.state,
|
32
|
+
onAction = props.onAction,
|
33
|
+
isDisabled = props.isDisabled,
|
34
|
+
isFocusVisible = props.isFocusVisible,
|
35
|
+
isNotFocusedOnHover = props.isNotFocusedOnHover;
|
36
|
+
var menuSectionRef = (0, _hooks.useLocalOrForwardRef)(ref);
|
37
|
+
var _useMenuSection = (0, _reactAria.useMenuSection)({
|
38
|
+
heading: section.rendered,
|
39
|
+
'aria-label': section['aria-label']
|
40
|
+
}),
|
41
|
+
itemProps = _useMenuSection.itemProps,
|
42
|
+
groupProps = _useMenuSection.groupProps,
|
43
|
+
headingProps = _useMenuSection.headingProps;
|
44
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, section.key !== state.collection.getFirstKey() && (0, _react2.jsx)(_Separator["default"], {
|
45
|
+
as: "li",
|
46
|
+
p: 0,
|
47
|
+
m: 0
|
48
|
+
}), (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
49
|
+
as: "li"
|
50
|
+
}, itemProps, {
|
51
|
+
ref: menuSectionRef,
|
52
|
+
role: "presentation"
|
53
|
+
}), section.rendered && (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
54
|
+
as: "span",
|
55
|
+
variant: "menuSection.sectionTitle"
|
56
|
+
}, headingProps, {
|
57
|
+
role: "presentation"
|
58
|
+
}), section.rendered), (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
59
|
+
as: "ul",
|
60
|
+
variant: "menuSection.section"
|
61
|
+
}, groupProps, {
|
62
|
+
role: "group"
|
63
|
+
}), (0, _map["default"])(_context = (0, _from["default"])(section.childNodes)).call(_context, function (node) {
|
64
|
+
return (0, _react2.jsx)(_MenuItem["default"], {
|
65
|
+
key: node.key,
|
66
|
+
item: node,
|
67
|
+
state: state,
|
68
|
+
onAction: onAction,
|
69
|
+
isDisabled: isDisabled,
|
70
|
+
isFocusVisible: isFocusVisible,
|
71
|
+
isNotFocusedOnHover: isNotFocusedOnHover
|
72
|
+
});
|
73
|
+
}))));
|
74
|
+
});
|
75
|
+
var _default = MenuSection;
|
76
|
+
exports["default"] = _default;
|
@@ -0,0 +1,21 @@
|
|
1
|
+
declare const _default: {
|
2
|
+
section: {
|
3
|
+
borderRadius: number;
|
4
|
+
padding: number;
|
5
|
+
margin: number;
|
6
|
+
listStyle: string;
|
7
|
+
maxWidth: number;
|
8
|
+
outline: string;
|
9
|
+
overflow: string;
|
10
|
+
minWidth: string;
|
11
|
+
};
|
12
|
+
sectionTitle: {
|
13
|
+
fontSize: string;
|
14
|
+
fontWeight: string;
|
15
|
+
color: string;
|
16
|
+
height: string;
|
17
|
+
ml: string;
|
18
|
+
justifyContent: string;
|
19
|
+
};
|
20
|
+
};
|
21
|
+
export default _default;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
5
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
7
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
8
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
9
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
10
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
11
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
12
|
+
_Object$defineProperty(exports, "__esModule", {
|
13
|
+
value: true
|
14
|
+
});
|
15
|
+
exports["default"] = void 0;
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
17
|
+
var _Menu = _interopRequireDefault(require("../Menu/Menu.styles"));
|
18
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
19
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
20
|
+
var section = _objectSpread(_objectSpread({}, _Menu["default"]), {}, {
|
21
|
+
borderRadius: 0
|
22
|
+
});
|
23
|
+
var sectionTitle = {
|
24
|
+
fontSize: 'sm',
|
25
|
+
fontWeight: '3',
|
26
|
+
color: 'text.secondary',
|
27
|
+
height: '36px',
|
28
|
+
ml: 'sm',
|
29
|
+
justifyContent: 'center'
|
30
|
+
};
|
31
|
+
var _default = {
|
32
|
+
section: section,
|
33
|
+
sectionTitle: sectionTitle
|
34
|
+
};
|
35
|
+
exports["default"] = _default;
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,100 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
5
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
6
|
+
var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
8
|
+
var _index = require("../../index");
|
9
|
+
var _testWrapper = require("../../utils/testUtils/testWrapper");
|
10
|
+
var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
|
11
|
+
var _react2 = require("@emotion/react");
|
12
|
+
var testId = 'testId';
|
13
|
+
var defaultMenuSections = [{
|
14
|
+
key: 'menuSection 1',
|
15
|
+
'data-id': 'menuSection1',
|
16
|
+
title: 'Section 1',
|
17
|
+
children: [{
|
18
|
+
key: 'menuItem1',
|
19
|
+
children: 'MenuItem 1',
|
20
|
+
'data-id': 'menuItem1',
|
21
|
+
isPressed: false,
|
22
|
+
backgroundColor: 'orange'
|
23
|
+
}]
|
24
|
+
}, {
|
25
|
+
key: 'menuSection 2',
|
26
|
+
'data-id': 'menuSection2',
|
27
|
+
children: [{
|
28
|
+
key: 'menuItem2',
|
29
|
+
children: 'MenuItem 2',
|
30
|
+
'data-id': 'menuItem1',
|
31
|
+
isPressed: false
|
32
|
+
}, {
|
33
|
+
key: 'menuItem3',
|
34
|
+
children: 'MenuItem 3',
|
35
|
+
'data-id': 'menuItem1',
|
36
|
+
isPressed: false
|
37
|
+
}]
|
38
|
+
}];
|
39
|
+
var defaultProps = {
|
40
|
+
'data-testid': testId,
|
41
|
+
defaultSelectedKey: 'menuItem1',
|
42
|
+
'aria-label': 'testLabel'
|
43
|
+
};
|
44
|
+
var getComponent = function getComponent() {
|
45
|
+
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
46
|
+
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
47
|
+
_ref$items = _ref.items,
|
48
|
+
items = _ref$items === void 0 ? defaultMenuSections : _ref$items,
|
49
|
+
_ref$renderFn = _ref.renderFn,
|
50
|
+
renderFn = _ref$renderFn === void 0 ? _testWrapper.render : _ref$renderFn;
|
51
|
+
return renderFn((0, _react2.jsx)(_index.Menu, (0, _extends2["default"])({}, defaultProps, props), (0, _map["default"])(items).call(items, function (section) {
|
52
|
+
var _context;
|
53
|
+
return (0, _react2.jsx)(_index.Section, section, (0, _map["default"])(_context = section.children).call(_context, function (li) {
|
54
|
+
return (0, _react2.jsx)(_index.Item, li);
|
55
|
+
}));
|
56
|
+
})));
|
57
|
+
};
|
58
|
+
|
59
|
+
// Needs to be added to each components test file
|
60
|
+
(0, _universalComponentTest.universalComponentTests)({
|
61
|
+
renderComponent: function renderComponent(props) {
|
62
|
+
return (0, _react2.jsx)(_index.Menu, (0, _extends2["default"])({}, defaultProps, props), (0, _map["default"])(defaultMenuSections).call(defaultMenuSections, function (section) {
|
63
|
+
var _context2;
|
64
|
+
return (0, _react2.jsx)(_index.Section, section, (0, _map["default"])(_context2 = section.children).call(_context2, function (li) {
|
65
|
+
return (0, _react2.jsx)(_index.Item, (0, _extends2["default"])({}, li, {
|
66
|
+
sx: {
|
67
|
+
backgroundColor: 'orange'
|
68
|
+
}
|
69
|
+
}));
|
70
|
+
}));
|
71
|
+
}));
|
72
|
+
}
|
73
|
+
});
|
74
|
+
test('renders menu with menu sections and titles', function () {
|
75
|
+
getComponent();
|
76
|
+
var menu = _testWrapper.screen.getByRole('menu');
|
77
|
+
var menuSections = _testWrapper.screen.getAllByRole('group');
|
78
|
+
var menuTitle = _testWrapper.screen.getByText('Section 1');
|
79
|
+
expect(menu).toBeInTheDocument();
|
80
|
+
expect(menuTitle).toBeInTheDocument();
|
81
|
+
expect(menuSections).toHaveLength(defaultMenuSections.length);
|
82
|
+
});
|
83
|
+
test('renders sections with menu items', function () {
|
84
|
+
getComponent();
|
85
|
+
var menuItems = _testWrapper.screen.getAllByRole('menuitem');
|
86
|
+
expect(menuItems).toHaveLength((0, _reduce["default"])(defaultMenuSections).call(defaultMenuSections, function (acc, section) {
|
87
|
+
return acc + section.children.length;
|
88
|
+
}, 0));
|
89
|
+
});
|
90
|
+
test('custom props are passed into menuItem', function () {
|
91
|
+
getComponent();
|
92
|
+
var itemText1 = defaultMenuSections[0].children[0].children;
|
93
|
+
var menuItem1 = _testWrapper.screen.getByText(itemText1);
|
94
|
+
expect(menuItem1).toHaveStyleRule('background-color', 'orange');
|
95
|
+
});
|
96
|
+
test('renders separator before menu section if it is not the first section', function () {
|
97
|
+
getComponent();
|
98
|
+
var separators = _testWrapper.screen.getByRole('separator');
|
99
|
+
expect(separators).toBeInTheDocument();
|
100
|
+
});
|
@@ -0,0 +1 @@
|
|
1
|
+
export { default } from './MenuSection';
|
@@ -0,0 +1,14 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
_Object$defineProperty(exports, "default", {
|
9
|
+
enumerable: true,
|
10
|
+
get: function get() {
|
11
|
+
return _MenuSection["default"];
|
12
|
+
}
|
13
|
+
});
|
14
|
+
var _MenuSection = _interopRequireDefault(require("./MenuSection"));
|
@@ -8,3 +8,5 @@ export declare const Controlled: StoryFn;
|
|
8
8
|
export declare const Placement: StoryFn;
|
9
9
|
export declare const NotFlippable: StoryFn;
|
10
10
|
export declare const NotClosedOnSelect: StoryFn;
|
11
|
+
export declare const WithSeparator: StoryFn<PopoverMenuProps>;
|
12
|
+
export declare const WithSections: StoryFn<PopoverMenuProps>;
|
@@ -8,7 +8,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
8
8
|
_Object$defineProperty(exports, "__esModule", {
|
9
9
|
value: true
|
10
10
|
});
|
11
|
-
exports["default"] = exports.Placement = exports.NotFlippable = exports.NotClosedOnSelect = exports.DefaultOpen = exports.Default = exports.Controlled = void 0;
|
11
|
+
exports["default"] = exports.WithSeparator = exports.WithSections = exports.Placement = exports.NotFlippable = exports.NotClosedOnSelect = exports.DefaultOpen = exports.Default = exports.Controlled = void 0;
|
12
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
13
13
|
var _react = _interopRequireWildcard(require("react"));
|
14
14
|
var _DotsVerticalIcon = _interopRequireDefault(require("@pingux/mdi-react/DotsVerticalIcon"));
|
@@ -103,12 +103,12 @@ var DefaultOpen = function DefaultOpen() {
|
|
103
103
|
}
|
104
104
|
})), (0, _react2.jsx)(_index.Menu, {
|
105
105
|
onAction: (0, _addonActions.action)('onAction'),
|
106
|
-
disabledKeys: ['
|
106
|
+
disabledKeys: ['disabledItem']
|
107
107
|
}, (0, _react2.jsx)(_index.Item, {
|
108
108
|
key: "edit"
|
109
109
|
}, "Edit"), (0, _react2.jsx)(_index.Item, {
|
110
|
-
key: "
|
111
|
-
}, "
|
110
|
+
key: "disabledItem"
|
111
|
+
}, "Disabled Item"), (0, _react2.jsx)(_index.Item, {
|
112
112
|
key: "delete",
|
113
113
|
textValue: "delete"
|
114
114
|
}, (0, _react2.jsx)(_index.Text, {
|
@@ -242,4 +242,72 @@ var NotClosedOnSelect = function NotClosedOnSelect() {
|
|
242
242
|
}, "Delete")))))
|
243
243
|
);
|
244
244
|
};
|
245
|
-
exports.NotClosedOnSelect = NotClosedOnSelect;
|
245
|
+
exports.NotClosedOnSelect = NotClosedOnSelect;
|
246
|
+
var WithSeparator = function WithSeparator(args) {
|
247
|
+
return (
|
248
|
+
// Application must be wrapped in an OverlayProvider so that it can be hidden from screen
|
249
|
+
// readers when an overlay opens.
|
250
|
+
(0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.PopoverMenu, args, (0, _react2.jsx)(_index.IconButton, {
|
251
|
+
"aria-label": "more options",
|
252
|
+
variant: "inverted"
|
253
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
254
|
+
icon: _DotsVerticalIcon["default"],
|
255
|
+
size: "md",
|
256
|
+
title: {
|
257
|
+
name: 'Dots Vertical Icon'
|
258
|
+
}
|
259
|
+
})), (0, _react2.jsx)(_index.Menu, {
|
260
|
+
onAction: (0, _addonActions.action)('onAction'),
|
261
|
+
disabledKeys: ['disabledItem']
|
262
|
+
}, (0, _react2.jsx)(_index.Section, null, (0, _react2.jsx)(_index.Item, {
|
263
|
+
key: "edit"
|
264
|
+
}, "Edit")), (0, _react2.jsx)(_index.Section, null, (0, _react2.jsx)(_index.Item, {
|
265
|
+
key: "disabledItem"
|
266
|
+
}, "Disabled Item"), (0, _react2.jsx)(_index.Item, {
|
267
|
+
key: "delete",
|
268
|
+
textValue: "delete"
|
269
|
+
}, (0, _react2.jsx)(_index.Text, {
|
270
|
+
color: "critical.bright"
|
271
|
+
}, "Delete"))))))
|
272
|
+
);
|
273
|
+
};
|
274
|
+
exports.WithSeparator = WithSeparator;
|
275
|
+
var WithSections = function WithSections(args) {
|
276
|
+
return (
|
277
|
+
// Application must be wrapped in an OverlayProvider so that it can be hidden from screen
|
278
|
+
// readers when an overlay opens.
|
279
|
+
(0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.PopoverMenu, args, (0, _react2.jsx)(_index.IconButton, {
|
280
|
+
"aria-label": "more options",
|
281
|
+
variant: "inverted"
|
282
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
283
|
+
icon: _DotsVerticalIcon["default"],
|
284
|
+
size: "md",
|
285
|
+
title: {
|
286
|
+
name: 'Dots Vertical Icon'
|
287
|
+
}
|
288
|
+
})), (0, _react2.jsx)(_index.Menu, {
|
289
|
+
onAction: (0, _addonActions.action)('onAction'),
|
290
|
+
disabledKeys: ['disabledItem']
|
291
|
+
}, (0, _react2.jsx)(_index.Section, {
|
292
|
+
key: "section 1",
|
293
|
+
title: "Section 1"
|
294
|
+
}, (0, _react2.jsx)(_index.Item, {
|
295
|
+
key: "edit"
|
296
|
+
}, "Edit"), (0, _react2.jsx)(_index.Item, {
|
297
|
+
key: "disabledItem"
|
298
|
+
}, "Disabled Item"), (0, _react2.jsx)(_index.Item, {
|
299
|
+
key: "copy"
|
300
|
+
}, "Copy")), (0, _react2.jsx)(_index.Section, {
|
301
|
+
key: "section 2",
|
302
|
+
title: "Section 2"
|
303
|
+
}, (0, _react2.jsx)(_index.Item, {
|
304
|
+
key: "duplicate"
|
305
|
+
}, "Duplicate"), (0, _react2.jsx)(_index.Item, {
|
306
|
+
key: "delete",
|
307
|
+
textValue: "delete"
|
308
|
+
}, (0, _react2.jsx)(_index.Text, {
|
309
|
+
color: "critical.bright"
|
310
|
+
}, "Delete"))))))
|
311
|
+
);
|
312
|
+
};
|
313
|
+
exports.WithSections = WithSections;
|
@@ -264,18 +264,15 @@ exports.Controlled = Controlled;
|
|
264
264
|
var WithNoneOption = function WithNoneOption() {
|
265
265
|
return (0, _react2.jsx)(_index.SelectField, {
|
266
266
|
label: "What's your favorite color?"
|
267
|
-
}, (0, _react2.jsx)(_index.Item, {
|
267
|
+
}, (0, _react2.jsx)(_index.Section, null, (0, _react2.jsx)(_index.Item, {
|
268
268
|
key: "none"
|
269
|
-
}, "None"), (0, _react2.jsx)(_index.Item, {
|
270
|
-
isSeparator: true,
|
271
|
-
textValue: "-"
|
272
|
-
}, (0, _react2.jsx)(_index.Separator, null)), (0, _react2.jsx)(_index.Item, {
|
269
|
+
}, "None")), (0, _react2.jsx)(_index.Section, null, (0, _react2.jsx)(_index.Item, {
|
273
270
|
key: "red"
|
274
271
|
}, "Red"), (0, _react2.jsx)(_index.Item, {
|
275
272
|
key: "blue"
|
276
273
|
}, "Blue"), (0, _react2.jsx)(_index.Item, {
|
277
274
|
key: "yellow"
|
278
|
-
}, "Yellow"));
|
275
|
+
}, "Yellow")));
|
279
276
|
};
|
280
277
|
exports.WithNoneOption = WithNoneOption;
|
281
278
|
var WithSlots = function WithSlots() {
|
@@ -41,6 +41,7 @@ var _ListViewItem = _interopRequireDefault(require("../../components/ListViewIte
|
|
41
41
|
var _Loader = _interopRequireDefault(require("../../components/Loader/Loader.styles"));
|
42
42
|
var _Menu = _interopRequireDefault(require("../../components/Menu/Menu.styles"));
|
43
43
|
var _MenuItem = _interopRequireDefault(require("../../components/MenuItem/MenuItem.styles"));
|
44
|
+
var _MenuSection = _interopRequireDefault(require("../../components/MenuSection/MenuSection.styles"));
|
44
45
|
var _Message = _interopRequireDefault(require("../../components/Messages/Message.styles"));
|
45
46
|
var _Modal = _interopRequireDefault(require("../../components/Modal/Modal.styles"));
|
46
47
|
var _NavBar = _interopRequireDefault(require("../../components/NavBar/NavBar.styles"));
|
@@ -90,6 +91,7 @@ var _default = _objectSpread({
|
|
90
91
|
loader: _Loader["default"],
|
91
92
|
menu: _Menu["default"],
|
92
93
|
menuItem: _MenuItem["default"],
|
94
|
+
menuSection: _MenuSection["default"],
|
93
95
|
message: _Message["default"],
|
94
96
|
modal: _Modal["default"],
|
95
97
|
navBar: _NavBar["default"],
|
package/lib/cjs/types/index.d.ts
CHANGED