@pingux/astro 2.0.0-alpha.4 → 2.0.0-alpha.6
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/CHANGELOG.md +14 -0
- package/lib/cjs/components/Badge/Badge.stories.js +2 -2
- package/lib/cjs/components/Badge/Badge.styles.js +4 -17
- package/lib/cjs/components/Button/Button.stories.js +15 -3
- package/lib/cjs/components/CodeView/CodeView.stories.js +3 -12
- package/lib/cjs/components/ColorField/ColorField.js +1 -0
- package/lib/cjs/components/ColorField/ColorField.test.js +15 -0
- package/lib/cjs/components/CopyText/CopyButton.js +2 -1
- package/lib/cjs/components/Icon/Icon.stories.js +1 -1
- package/lib/cjs/components/IconButton/IconButton.styles.js +1 -1
- package/lib/cjs/components/ListItem/ListItem.js +30 -15
- package/lib/cjs/components/ListItem/ListItem.stories.js +90 -26
- package/lib/cjs/components/ListItem/ListItem.test.js +46 -11
- package/lib/cjs/components/ListView/ListView.js +7 -1
- package/lib/cjs/components/ListViewItem/ListViewItem.js +4 -2
- package/lib/cjs/components/ListViewItem/ListViewItem.styles.js +2 -2
- package/lib/cjs/components/Menu/Menu.js +16 -5
- package/lib/cjs/components/Menu/Menu.stories.js +13 -2
- package/lib/cjs/components/SwitchField/SwitchField.js +4 -2
- package/lib/cjs/recipes/LinkedListView.stories.js +1 -1
- package/lib/cjs/recipes/ListAndPanel.stories.js +107 -57
- package/lib/cjs/styles/colors.js +3 -1
- package/lib/cjs/utils/devUtils/props/hoverProps.js +54 -0
- package/lib/components/Badge/Badge.stories.js +2 -2
- package/lib/components/Badge/Badge.styles.js +3 -15
- package/lib/components/Button/Button.stories.js +11 -1
- package/lib/components/CodeView/CodeView.stories.js +3 -12
- package/lib/components/ColorField/ColorField.js +1 -0
- package/lib/components/ColorField/ColorField.test.js +15 -0
- package/lib/components/CopyText/CopyButton.js +2 -1
- package/lib/components/Icon/Icon.stories.js +1 -1
- package/lib/components/IconButton/IconButton.styles.js +2 -2
- package/lib/components/ListItem/ListItem.js +30 -13
- package/lib/components/ListItem/ListItem.stories.js +68 -8
- package/lib/components/ListItem/ListItem.test.js +46 -11
- package/lib/components/ListView/ListView.js +7 -1
- package/lib/components/ListViewItem/ListViewItem.js +4 -2
- package/lib/components/ListViewItem/ListViewItem.styles.js +2 -2
- package/lib/components/Menu/Menu.js +16 -5
- package/lib/components/Menu/Menu.stories.js +14 -2
- package/lib/components/SwitchField/SwitchField.js +4 -2
- package/lib/recipes/LinkedListView.stories.js +1 -1
- package/lib/recipes/ListAndPanel.stories.js +72 -22
- package/lib/styles/colors.js +3 -1
- package/lib/utils/devUtils/props/hoverProps.js +44 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
@@ -3,6 +3,20 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
5
5
|
|
6
|
+
<<<<<<< HEAD
|
7
|
+
=======
|
8
|
+
## [1.42.1](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.42.0...@pingux/astro@1.42.1) (2023-02-16)
|
9
|
+
|
10
|
+
|
11
|
+
### Bug Fixes
|
12
|
+
|
13
|
+
* [UIP-6013] List and Panel Recipe Style Fixes ([c9d69b9](https://gitlab.corp.pingidentity.com/ux/pingux/commit/c9d69b9014889263e0ea16305128737ee59c9a1f))
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
>>>>>>> 144c0d159c6dc7525c2b8d6b1ecb29edecf25f6a
|
6
20
|
# [1.42.0](https://gitlab.corp.pingidentity.com/ux/pingux/compare/@pingux/astro@1.41.0...@pingux/astro@1.42.0) (2023-02-13)
|
7
21
|
|
8
22
|
|
@@ -23,7 +23,7 @@ var _Badge = _interopRequireDefault(require("./Badge.mdx"));
|
|
23
23
|
var _ = _interopRequireDefault(require("."));
|
24
24
|
var _react2 = require("@emotion/react");
|
25
25
|
var _default = {
|
26
|
-
title: 'Badge',
|
26
|
+
title: 'Components/Badge',
|
27
27
|
component: _["default"],
|
28
28
|
argTypes: {
|
29
29
|
bg: {
|
@@ -177,7 +177,7 @@ var BadgeWithLeftSlotAndIcon = function BadgeWithLeftSlotAndIcon() {
|
|
177
177
|
}
|
178
178
|
}, (0, _react2.jsx)(_IconButton["default"], {
|
179
179
|
"aria-label": "delete",
|
180
|
-
variant: "
|
180
|
+
variant: "badgeDeleteButton"
|
181
181
|
}, (0, _react2.jsx)(_Icon["default"], {
|
182
182
|
icon: _CloseIcon["default"],
|
183
183
|
size: 14
|
@@ -12,7 +12,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
12
12
|
_Object$defineProperty(exports, "__esModule", {
|
13
13
|
value: true
|
14
14
|
});
|
15
|
-
exports.deleteButton = exports["default"] = exports.baseBadge = exports.
|
15
|
+
exports.deleteButton = exports["default"] = exports.baseBadge = exports.badgeDeleteButton = void 0;
|
16
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
17
17
|
var _Buttons = require("../Button/Buttons.styles");
|
18
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; }
|
@@ -94,23 +94,11 @@ var deleteButton = {
|
|
94
94
|
};
|
95
95
|
exports.deleteButton = deleteButton;
|
96
96
|
var badgeDeleteButton = _objectSpread(_objectSpread({}, deleteButton), {}, {
|
97
|
-
'
|
98
|
-
bg: 'accent.40'
|
99
|
-
}, _Buttons.focusWithCroppedOutline),
|
100
|
-
'&.is-hovered': {
|
101
|
-
bg: 'accent.40'
|
102
|
-
},
|
103
|
-
'&.is-pressed': {
|
104
|
-
bg: 'accent.20',
|
105
|
-
borderColor: 'accent.20'
|
106
|
-
}
|
107
|
-
});
|
108
|
-
exports.badgeDeleteButton = badgeDeleteButton;
|
109
|
-
var badgeWithSlotDeleteButton = _objectSpread(_objectSpread({}, deleteButton), {}, {
|
97
|
+
outline: 'none',
|
110
98
|
path: {
|
111
99
|
fill: 'neutral.40'
|
112
100
|
},
|
113
|
-
'&.is-focused': _objectSpread({}, _Buttons.
|
101
|
+
'&.is-focused': _objectSpread({}, _Buttons.focusWithCroppedOutline),
|
114
102
|
'&.is-hovered': {
|
115
103
|
backgroundColor: '#e5e9f8 !important',
|
116
104
|
path: {
|
@@ -124,7 +112,7 @@ var badgeWithSlotDeleteButton = _objectSpread(_objectSpread({}, deleteButton), {
|
|
124
112
|
bg: '#4462ED !important'
|
125
113
|
}
|
126
114
|
});
|
127
|
-
exports.
|
115
|
+
exports.badgeDeleteButton = badgeDeleteButton;
|
128
116
|
var countDefault = _objectSpread(_objectSpread({}, baseBadge), {}, {
|
129
117
|
width: 'fit-content',
|
130
118
|
minWidth: '17px',
|
@@ -156,7 +144,6 @@ var _default = {
|
|
156
144
|
deleteButton: deleteButton,
|
157
145
|
countBadge: countBadge,
|
158
146
|
countNeutral: countNeutral,
|
159
|
-
badgeWithSlotDeleteButton: badgeWithSlotDeleteButton,
|
160
147
|
badgeDeleteButton: badgeDeleteButton
|
161
148
|
};
|
162
149
|
exports["default"] = _default;
|
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
6
6
|
value: true
|
7
7
|
});
|
8
|
-
exports["default"] = exports.TextIconButton = exports.InlineButton = exports.FilterButton = exports.Disabled = exports.Default = exports.ColorBlockButton = void 0;
|
8
|
+
exports["default"] = exports.TextIconButton = exports.Primary = exports.InlineButton = exports.FilterButton = exports.Disabled = exports.Default = exports.Critical = exports.ColorBlockButton = void 0;
|
9
9
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
11
11
|
var _react = _interopRequireDefault(require("react"));
|
@@ -25,7 +25,7 @@ delete variants.ICON_BUTTON;
|
|
25
25
|
delete variants.INVERTED;
|
26
26
|
|
27
27
|
// add designer approved variants for devs to use here
|
28
|
-
var variantOptions = ['critical', 'default', 'inline', 'inlinePrimary', 'link', 'primary'
|
28
|
+
var variantOptions = ['critical', 'default', 'inline', 'inlinePrimary', 'link', 'primary'];
|
29
29
|
var _default = {
|
30
30
|
title: 'Components/Button',
|
31
31
|
component: _index.Button,
|
@@ -136,4 +136,16 @@ var FilterButton = function FilterButton() {
|
|
136
136
|
icon: _FilterIcon["default"]
|
137
137
|
})));
|
138
138
|
};
|
139
|
-
exports.FilterButton = FilterButton;
|
139
|
+
exports.FilterButton = FilterButton;
|
140
|
+
var Critical = function Critical() {
|
141
|
+
return (0, _react2.jsx)(_index.Button, {
|
142
|
+
variant: "critical"
|
143
|
+
}, "Button Text");
|
144
|
+
};
|
145
|
+
exports.Critical = Critical;
|
146
|
+
var Primary = function Primary() {
|
147
|
+
return (0, _react2.jsx)(_index.Button, {
|
148
|
+
variant: "primary"
|
149
|
+
}, "Button Text");
|
150
|
+
};
|
151
|
+
exports.Primary = Primary;
|
@@ -11,7 +11,6 @@ var _react = _interopRequireDefault(require("react"));
|
|
11
11
|
var _prismjs = _interopRequireDefault(require("prismjs"));
|
12
12
|
require("prismjs/components/prism-powershell");
|
13
13
|
var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
|
14
|
-
var _ = require("../..");
|
15
14
|
var _CodeView = _interopRequireDefault(require("./CodeView"));
|
16
15
|
var _CodeView2 = _interopRequireDefault(require("./CodeView.mdx"));
|
17
16
|
var _react2 = require("@emotion/react");
|
@@ -55,21 +54,13 @@ var _default = {
|
|
55
54
|
};
|
56
55
|
exports["default"] = _default;
|
57
56
|
var Default = function Default(args) {
|
58
|
-
return (0, _react2.jsx)(
|
59
|
-
sx: {
|
60
|
-
fontWeight: 2
|
61
|
-
}
|
62
|
-
}, "JSON"), (0, _react2.jsx)(_CodeView["default"], args));
|
57
|
+
return (0, _react2.jsx)(_CodeView["default"], args);
|
63
58
|
};
|
64
59
|
exports.Default = Default;
|
65
60
|
var WithLineNumbers = function WithLineNumbers() {
|
66
|
-
return (0, _react2.jsx)(
|
67
|
-
sx: {
|
68
|
-
fontWeight: 2
|
69
|
-
}
|
70
|
-
}, "JSON"), (0, _react2.jsx)(_CodeView["default"], {
|
61
|
+
return (0, _react2.jsx)(_CodeView["default"], {
|
71
62
|
hasLineNumbers: true
|
72
|
-
}, code)
|
63
|
+
}, code);
|
73
64
|
};
|
74
65
|
exports.WithLineNumbers = WithLineNumbers;
|
75
66
|
WithLineNumbers.parameters = {
|
@@ -126,6 +126,7 @@ var ColorField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
126
126
|
hasNoArrow: true,
|
127
127
|
isDismissable: true,
|
128
128
|
isNonModal: true,
|
129
|
+
isNotClosedOnBlur: true,
|
129
130
|
isOpen: popoverState.isOpen,
|
130
131
|
onClose: popoverState.close,
|
131
132
|
ref: overlayRef
|
@@ -49,4 +49,19 @@ test('will call onChange with arguments if provided', function () {
|
|
49
49
|
_userEvent["default"].clear(hexInput);
|
50
50
|
_userEvent["default"].type(hexInput, testColor2);
|
51
51
|
expect(testOnChange).toHaveBeenCalled();
|
52
|
+
});
|
53
|
+
test('clicking within the popover does not close it', function () {
|
54
|
+
var testOnChange = jest.fn();
|
55
|
+
getComponent({
|
56
|
+
onChange: testOnChange,
|
57
|
+
value: testColor1
|
58
|
+
});
|
59
|
+
var button = _testWrapper.screen.getByRole('button');
|
60
|
+
_userEvent["default"].click(button);
|
61
|
+
// should be open now
|
62
|
+
var hexLabelElement = _testWrapper.screen.queryByText(hexLabel);
|
63
|
+
expect(hexLabelElement).toBeInTheDocument();
|
64
|
+
// click the popover container, which has caused closing in regressions
|
65
|
+
_userEvent["default"].click(_testWrapper.screen.queryByRole('presentation'));
|
66
|
+
expect(_testWrapper.screen.queryByRole('presentation')).toBeInTheDocument();
|
52
67
|
});
|
@@ -26,7 +26,8 @@ var CopyButton = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
26
26
|
variant: "copyButton"
|
27
27
|
}, (0, _lodash.omit)(props, 'iconProps')), (0, _react2.jsx)(_Icon["default"], (0, _extends2["default"])({
|
28
28
|
icon: _ContentCopyIcon["default"],
|
29
|
-
size:
|
29
|
+
size: "xs",
|
30
|
+
color: "text.secondary"
|
30
31
|
}, props === null || props === void 0 ? void 0 : props.iconProps)));
|
31
32
|
});
|
32
33
|
CopyButton.propTypes = {
|
@@ -145,7 +145,7 @@ var _default = {
|
|
145
145
|
badge: {
|
146
146
|
deleteButton: _Badge.deleteButton
|
147
147
|
},
|
148
|
-
|
148
|
+
badgeDeleteButton: _Badge.badgeDeleteButton,
|
149
149
|
copyButton: _CopyText.copyButton,
|
150
150
|
hintButton: _objectSpread(_objectSpread({}, base), _HelpHint.hintButton),
|
151
151
|
inverted: inverted,
|
@@ -1,37 +1,54 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
3
|
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
-
var
|
5
|
-
var _Object$
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
6
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
6
7
|
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
8
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
9
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
10
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
11
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
12
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
7
13
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
8
14
|
_Object$defineProperty(exports, "__esModule", {
|
9
15
|
value: true
|
10
16
|
});
|
11
17
|
exports["default"] = void 0;
|
18
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
12
19
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
13
20
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
14
21
|
var _react = _interopRequireWildcard(require("react"));
|
15
22
|
var _interactions = require("@react-aria/interactions");
|
16
23
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
17
24
|
var _hooks = require("../../hooks");
|
25
|
+
var _hoverProps = require("../../utils/devUtils/props/hoverProps");
|
18
26
|
var _Box = _interopRequireDefault(require("../Box/Box"));
|
19
27
|
var _react2 = require("@emotion/react");
|
20
|
-
var _excluded = ["children", "className", "isSelected"];
|
28
|
+
var _excluded = ["children", "className", "isHovered", "isSelected", "onHoverChange", "onHoverEnd", "onHoverStart"];
|
21
29
|
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); }
|
22
30
|
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; }
|
31
|
+
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; }
|
32
|
+
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; }
|
23
33
|
/**
|
24
34
|
* List Item component.
|
25
35
|
* Accepts most of the styling props from [styled-system](https://styled-system.com/table).
|
26
36
|
*/
|
27
|
-
var ListItem = /*#__PURE__*/(0, _react.forwardRef)(function (
|
28
|
-
var children =
|
29
|
-
className =
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
37
|
+
var ListItem = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
38
|
+
var children = _ref.children,
|
39
|
+
className = _ref.className,
|
40
|
+
isHovered = _ref.isHovered,
|
41
|
+
isSelected = _ref.isSelected,
|
42
|
+
onHoverChange = _ref.onHoverChange,
|
43
|
+
onHoverEnd = _ref.onHoverEnd,
|
44
|
+
onHoverStart = _ref.onHoverStart,
|
45
|
+
others = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
|
46
|
+
var _useHover = (0, _interactions.useHover)({
|
47
|
+
onHoverChange: onHoverChange,
|
48
|
+
onHoverEnd: onHoverEnd,
|
49
|
+
onHoverStart: onHoverStart
|
50
|
+
}),
|
51
|
+
hoverProps = _useHover.hoverProps;
|
35
52
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
36
53
|
isHovered: isHovered,
|
37
54
|
isSelected: isSelected
|
@@ -39,14 +56,12 @@ var ListItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
39
56
|
classNames = _useStatusClasses.classNames;
|
40
57
|
return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
|
41
58
|
className: classNames,
|
42
|
-
role: "listitem",
|
43
59
|
ref: ref,
|
44
|
-
as: "li",
|
45
60
|
variant: "listItem.container",
|
46
61
|
isRow: true
|
47
62
|
}, hoverProps, others), children);
|
48
63
|
});
|
49
|
-
ListItem.propTypes = {
|
64
|
+
ListItem.propTypes = _objectSpread({
|
50
65
|
/**
|
51
66
|
* A list of class names to apply to the element
|
52
67
|
*/
|
@@ -55,7 +70,7 @@ ListItem.propTypes = {
|
|
55
70
|
* Sets the selected state of the ListItem
|
56
71
|
*/
|
57
72
|
isSelected: _propTypes["default"].bool
|
58
|
-
};
|
73
|
+
}, _hoverProps.onHoverPropTypes);
|
59
74
|
ListItem.defaultProps = {
|
60
75
|
isSelected: false
|
61
76
|
};
|
@@ -1,88 +1,152 @@
|
|
1
1
|
"use strict";
|
2
2
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
6
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
8
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
9
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
10
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
3
11
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
12
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
4
13
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
5
14
|
_Object$defineProperty(exports, "__esModule", {
|
6
15
|
value: true
|
7
16
|
});
|
8
|
-
exports["default"] = exports.WithSubtitle = exports.Default = void 0;
|
9
|
-
var
|
17
|
+
exports["default"] = exports.WithSubtitle = exports.WithHoverHandlers = exports.Default = void 0;
|
18
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
19
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
20
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
21
|
+
var _react = _interopRequireWildcard(require("react"));
|
10
22
|
var _AccountIcon = _interopRequireDefault(require("mdi-react/AccountIcon"));
|
11
23
|
var _MoreVertIcon = _interopRequireDefault(require("mdi-react/MoreVertIcon"));
|
12
|
-
var
|
13
|
-
var
|
14
|
-
var _IconButton = _interopRequireDefault(require("../IconButton"));
|
15
|
-
var _Separator = _interopRequireDefault(require("../Separator"));
|
16
|
-
var _Text = _interopRequireDefault(require("../Text"));
|
17
|
-
var _ListItem = _interopRequireDefault(require("./ListItem"));
|
24
|
+
var _ = require("../..");
|
25
|
+
var _hoverProps = require("../../utils/devUtils/props/hoverProps");
|
18
26
|
var _react2 = require("@emotion/react");
|
27
|
+
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); }
|
28
|
+
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; }
|
29
|
+
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; }
|
30
|
+
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; }
|
19
31
|
var _default = {
|
20
32
|
title: 'Components/ListItem',
|
21
|
-
component:
|
33
|
+
component: _.ListItem,
|
22
34
|
parameters: {
|
23
35
|
docs: {
|
24
36
|
source: {
|
25
37
|
type: 'code'
|
26
38
|
}
|
27
39
|
}
|
28
|
-
}
|
40
|
+
},
|
41
|
+
argTypes: _objectSpread({}, _hoverProps.onHoverArgTypes)
|
29
42
|
};
|
30
43
|
exports["default"] = _default;
|
31
44
|
var Default = function Default(args) {
|
32
|
-
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(
|
45
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_.Separator, {
|
33
46
|
margin: 0
|
34
|
-
}), (0, _react2.jsx)(
|
47
|
+
}), (0, _react2.jsx)(_.ListItem, args, (0, _react2.jsx)(_.Box, {
|
35
48
|
isRow: true,
|
36
49
|
mr: "auto",
|
37
50
|
alignSelf: "center"
|
38
|
-
}, (0, _react2.jsx)(
|
51
|
+
}, (0, _react2.jsx)(_.Icon, {
|
39
52
|
icon: _AccountIcon["default"],
|
40
53
|
alignSelf: "center",
|
41
54
|
mr: "sm",
|
42
55
|
color: "accent.40",
|
43
56
|
size: 32
|
44
|
-
}), (0, _react2.jsx)(
|
57
|
+
}), (0, _react2.jsx)(_.Text, {
|
45
58
|
variant: "itemTitle",
|
46
59
|
alignSelf: "center"
|
47
|
-
}, "Fons Vernall")), (0, _react2.jsx)(
|
60
|
+
}, "Fons Vernall")), (0, _react2.jsx)(_.Box, {
|
48
61
|
isRow: true,
|
49
62
|
alignSelf: "center"
|
50
|
-
}, (0, _react2.jsx)(
|
63
|
+
}, (0, _react2.jsx)(_.IconButton, null, (0, _react2.jsx)(_.Icon, {
|
51
64
|
icon: _MoreVertIcon["default"],
|
52
65
|
size: "sm",
|
53
66
|
color: "neutral.20"
|
54
|
-
})))), (0, _react2.jsx)(
|
67
|
+
})))), (0, _react2.jsx)(_.Separator, {
|
55
68
|
margin: 0
|
56
69
|
}));
|
57
70
|
};
|
58
71
|
exports.Default = Default;
|
59
72
|
var WithSubtitle = function WithSubtitle(args) {
|
60
|
-
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(
|
73
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_.Separator, {
|
61
74
|
margin: 0
|
62
|
-
}), (0, _react2.jsx)(
|
75
|
+
}), (0, _react2.jsx)(_.ListItem, args, (0, _react2.jsx)(_.Box, {
|
63
76
|
isRow: true,
|
64
77
|
mr: "auto",
|
65
78
|
alignSelf: "center"
|
66
|
-
}, (0, _react2.jsx)(
|
79
|
+
}, (0, _react2.jsx)(_.Icon, {
|
67
80
|
icon: _AccountIcon["default"],
|
68
81
|
alignSelf: "center",
|
69
82
|
mr: "sm",
|
70
83
|
color: "accent.40",
|
71
84
|
size: 32
|
72
|
-
}), (0, _react2.jsx)(
|
85
|
+
}), (0, _react2.jsx)(_.Box, null, (0, _react2.jsx)(_.Text, {
|
73
86
|
variant: "itemTitle"
|
74
|
-
}, "Fons Vernall"), (0, _react2.jsx)(
|
87
|
+
}, "Fons Vernall"), (0, _react2.jsx)(_.Text, {
|
75
88
|
variant: "itemSubtitle",
|
76
89
|
mt: 1
|
77
|
-
}, "fvernall0@google.it"))), (0, _react2.jsx)(
|
90
|
+
}, "fvernall0@google.it"))), (0, _react2.jsx)(_.Box, {
|
78
91
|
isRow: true,
|
79
92
|
alignSelf: "center"
|
80
|
-
}, (0, _react2.jsx)(
|
93
|
+
}, (0, _react2.jsx)(_.IconButton, null, (0, _react2.jsx)(_.Icon, {
|
81
94
|
icon: _MoreVertIcon["default"],
|
82
95
|
size: "sm",
|
83
96
|
color: "neutral.20"
|
84
|
-
})))), (0, _react2.jsx)(
|
97
|
+
})))), (0, _react2.jsx)(_.Separator, {
|
85
98
|
margin: 0
|
86
99
|
}));
|
87
100
|
};
|
88
|
-
exports.WithSubtitle = WithSubtitle;
|
101
|
+
exports.WithSubtitle = WithSubtitle;
|
102
|
+
var WithHoverHandlers = function WithHoverHandlers(args) {
|
103
|
+
var _useState = (0, _react.useState)(false),
|
104
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
105
|
+
isHovered = _useState2[0],
|
106
|
+
setIsHovered = _useState2[1];
|
107
|
+
var handleHoverChange = function handleHoverChange() {
|
108
|
+
setIsHovered(function (previousIsHovered) {
|
109
|
+
return !previousIsHovered;
|
110
|
+
});
|
111
|
+
};
|
112
|
+
var sx = function sx(shouldTranslate) {
|
113
|
+
return {
|
114
|
+
transform: "".concat(shouldTranslate ? 'translate(15px)' : 'translate(0)')
|
115
|
+
};
|
116
|
+
};
|
117
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_.Separator, {
|
118
|
+
margin: 0
|
119
|
+
}), (0, _react2.jsx)(_.ListItem, (0, _extends2["default"])({}, args, {
|
120
|
+
onHoverEnd: handleHoverChange,
|
121
|
+
onHoverStart: handleHoverChange
|
122
|
+
}), (0, _react2.jsx)(_.Box, {
|
123
|
+
isRow: true,
|
124
|
+
mr: "auto",
|
125
|
+
alignSelf: "center"
|
126
|
+
}, (0, _react2.jsx)(_.Icon, {
|
127
|
+
icon: _AccountIcon["default"],
|
128
|
+
alignSelf: "center",
|
129
|
+
mr: "sm",
|
130
|
+
color: "accent.40",
|
131
|
+
size: 32
|
132
|
+
}), (0, _react2.jsx)(_.Box, {
|
133
|
+
sx: sx(isHovered)
|
134
|
+
}, (0, _react2.jsx)(_.Text, {
|
135
|
+
variant: "itemTitle"
|
136
|
+
}, "Fons Vernall"), (0, _react2.jsx)(_.Text, {
|
137
|
+
variant: "itemSubtitle",
|
138
|
+
mt: 1
|
139
|
+
}, "fvernall0@google.it"))), (0, _react2.jsx)(_.Box, {
|
140
|
+
isRow: true,
|
141
|
+
alignSelf: "center"
|
142
|
+
}, (0, _react2.jsx)(_.IconButton, {
|
143
|
+
size: 26
|
144
|
+
}, (0, _react2.jsx)(_.Icon, {
|
145
|
+
icon: _MoreVertIcon["default"],
|
146
|
+
size: 20,
|
147
|
+
color: "neutral.20"
|
148
|
+
})))), (0, _react2.jsx)(_.Separator, {
|
149
|
+
margin: 0
|
150
|
+
}));
|
151
|
+
};
|
152
|
+
exports.WithHoverHandlers = WithHoverHandlers;
|
@@ -4,16 +4,20 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
4
4
|
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
5
5
|
var _react = _interopRequireDefault(require("react"));
|
6
6
|
var _react2 = require("@testing-library/react");
|
7
|
+
var _userEvent = _interopRequireDefault(require("@testing-library/user-event"));
|
7
8
|
var _testAxe = _interopRequireDefault(require("../../utils/testUtils/testAxe"));
|
8
9
|
var _ListItem = _interopRequireDefault(require("./ListItem"));
|
9
10
|
var _react3 = require("@emotion/react");
|
10
11
|
var testTitle = 'Test Title';
|
12
|
+
var TEST_ID = 'ListItem-testid';
|
11
13
|
var defaultProps = {
|
12
14
|
title: testTitle
|
13
15
|
};
|
14
16
|
var getComponent = function getComponent() {
|
15
17
|
var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
16
|
-
return (0, _react2.render)((0, _react3.jsx)(_ListItem["default"], (0, _extends2["default"])({}, defaultProps, props
|
18
|
+
return (0, _react2.render)((0, _react3.jsx)(_ListItem["default"], (0, _extends2["default"])({}, defaultProps, props, {
|
19
|
+
"data-testid": TEST_ID
|
20
|
+
})));
|
17
21
|
};
|
18
22
|
|
19
23
|
// Need to be added to each test file to test accessibility using axe.
|
@@ -25,15 +29,46 @@ var getComponent = function getComponent() {
|
|
25
29
|
}
|
26
30
|
}
|
27
31
|
});
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
describe('ListItem', function () {
|
33
|
+
test('renders ListItem component title', function () {
|
34
|
+
getComponent();
|
35
|
+
var title = _react2.screen.getByTestId(TEST_ID);
|
36
|
+
expect(title).toBeInTheDocument();
|
37
|
+
});
|
38
|
+
test('renders ListItem component with selected state', function () {
|
39
|
+
getComponent({
|
40
|
+
isSelected: true
|
41
|
+
});
|
42
|
+
var title = _react2.screen.getByTestId(TEST_ID);
|
43
|
+
expect(title).toHaveClass('is-selected');
|
44
|
+
});
|
45
|
+
describe('when hovered', function () {
|
46
|
+
var onHoverTest;
|
47
|
+
beforeEach(function () {
|
48
|
+
onHoverTest = jest.fn();
|
49
|
+
});
|
50
|
+
test('it calls the onHoverChange callback', function () {
|
51
|
+
getComponent({
|
52
|
+
onHoverChange: onHoverTest
|
53
|
+
});
|
54
|
+
_userEvent["default"].hover(_react2.screen.getByTestId(TEST_ID));
|
55
|
+
expect(onHoverTest).toHaveBeenCalled();
|
56
|
+
});
|
57
|
+
test('it calls the onHoverStart callback', function () {
|
58
|
+
getComponent({
|
59
|
+
onHoverStart: onHoverTest
|
60
|
+
});
|
61
|
+
_userEvent["default"].hover(_react2.screen.getByTestId(TEST_ID));
|
62
|
+
expect(onHoverTest).toHaveBeenCalled();
|
63
|
+
});
|
64
|
+
test('it calls the onHoverEnd callback when unhovered', function () {
|
65
|
+
getComponent({
|
66
|
+
onHoverEnd: onHoverTest
|
67
|
+
});
|
68
|
+
var listItem = _react2.screen.getByTestId(TEST_ID);
|
69
|
+
_userEvent["default"].hover(listItem);
|
70
|
+
_userEvent["default"].unhover(listItem);
|
71
|
+
expect(onHoverTest).toHaveBeenCalled();
|
72
|
+
});
|
36
73
|
});
|
37
|
-
var title = _react2.screen.getByRole('listitem');
|
38
|
-
expect(title).toHaveClass('is-selected');
|
39
74
|
});
|
@@ -33,7 +33,7 @@ var _ListViewItem = _interopRequireDefault(require("../ListViewItem"));
|
|
33
33
|
var _Loader = _interopRequireDefault(require("../Loader"));
|
34
34
|
var _ListViewContext = require("./ListViewContext");
|
35
35
|
var _react2 = require("@emotion/react");
|
36
|
-
var _excluded = ["disabledKeys", "loadingState", "onLoadMore", "onSelectionChange", "selectionMode", "selectionStyle"];
|
36
|
+
var _excluded = ["disabledKeys", "isHoverable", "loadingState", "onLoadMore", "onSelectionChange", "selectedKeys", "selectionMode", "selectionStyle"];
|
37
37
|
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); }
|
38
38
|
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; }
|
39
39
|
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; }
|
@@ -82,9 +82,12 @@ function useListLayout(state) {
|
|
82
82
|
|
83
83
|
var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
84
84
|
var disabledKeys = props.disabledKeys,
|
85
|
+
_props$isHoverable = props.isHoverable,
|
86
|
+
isHoverable = _props$isHoverable === void 0 ? true : _props$isHoverable,
|
85
87
|
loadingState = props.loadingState,
|
86
88
|
onLoadMore = props.onLoadMore,
|
87
89
|
onSelectionChange = props.onSelectionChange,
|
90
|
+
selectedKeys = props.selectedKeys,
|
88
91
|
selectionMode = props.selectionMode,
|
89
92
|
selectionStyle = props.selectionStyle,
|
90
93
|
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
@@ -144,6 +147,7 @@ var ListView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
144
147
|
}), function (type, item) {
|
145
148
|
if (type === 'item') {
|
146
149
|
return (0, _react2.jsx)(_ListViewItem["default"], {
|
150
|
+
isHoverable: isHoverable,
|
147
151
|
item: item
|
148
152
|
});
|
149
153
|
}
|
@@ -168,6 +172,8 @@ ListView.propTypes = {
|
|
168
172
|
items: _isIterable.isIterableProp,
|
169
173
|
/** The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id). */
|
170
174
|
id: _propTypes["default"].string,
|
175
|
+
/** Whether ListView should handle hover state (defaults to true) */
|
176
|
+
isHoverable: _propTypes["default"].bool,
|
171
177
|
/** Defines a string value that labels the current element. */
|
172
178
|
'aria-label': _propTypes["default"].string,
|
173
179
|
/** Identifies the element (or elements) that labels the current element. */
|
@@ -29,6 +29,7 @@ var ListViewItem = function ListViewItem(props) {
|
|
29
29
|
_props$item$props$has = _props$item$props.hasSeparator,
|
30
30
|
hasSeparator = _props$item$props$has === void 0 ? true : _props$item$props$has,
|
31
31
|
hasInsetSeparator = _props$item$props.hasInsetSeparator,
|
32
|
+
isHoverable = props.isHoverable,
|
32
33
|
className = props.className;
|
33
34
|
var dataId = item.props['data-id'];
|
34
35
|
var _useContext = (0, _react.useContext)(_ListViewContext.ListViewContext),
|
@@ -57,7 +58,7 @@ var ListViewItem = function ListViewItem(props) {
|
|
57
58
|
var isSelected = state.selectionManager.isSelected(item.key);
|
58
59
|
var mergedProps = (0, _reactAria.mergeProps)(raRowProps, hoverProps, focusWithinProps, focusProps);
|
59
60
|
var _useStatusClasses = (0, _hooks.useStatusClasses)(className, {
|
60
|
-
isHovered: isSelectable && isHovered,
|
61
|
+
isHovered: isSelectable && isHovered && isHoverable,
|
61
62
|
isSelected: isSelected,
|
62
63
|
isFocused: isDisabled ? false : isFocusVisible || isFocusVisibleWithin,
|
63
64
|
hasSeparator: hasSeparator,
|
@@ -94,7 +95,8 @@ ListViewItem.propTypes = {
|
|
94
95
|
hasSeparator: _propTypes["default"].bool,
|
95
96
|
hasInsetSeparator: _propTypes["default"].bool
|
96
97
|
})
|
97
|
-
})
|
98
|
+
}),
|
99
|
+
isHoverable: _propTypes["default"].bool
|
98
100
|
};
|
99
101
|
var _default = ListViewItem;
|
100
102
|
exports["default"] = _default;
|