@pingux/astro 2.0.0-alpha.5 → 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.
Files changed (46) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/lib/cjs/components/Badge/Badge.stories.js +2 -2
  3. package/lib/cjs/components/Badge/Badge.styles.js +4 -17
  4. package/lib/cjs/components/Button/Button.stories.js +15 -3
  5. package/lib/cjs/components/CodeView/CodeView.stories.js +3 -12
  6. package/lib/cjs/components/ColorField/ColorField.js +1 -0
  7. package/lib/cjs/components/ColorField/ColorField.test.js +15 -0
  8. package/lib/cjs/components/CopyText/CopyButton.js +2 -1
  9. package/lib/cjs/components/Icon/Icon.stories.js +1 -1
  10. package/lib/cjs/components/IconButton/IconButton.styles.js +1 -1
  11. package/lib/cjs/components/ListItem/ListItem.js +30 -15
  12. package/lib/cjs/components/ListItem/ListItem.stories.js +90 -26
  13. package/lib/cjs/components/ListItem/ListItem.test.js +46 -11
  14. package/lib/cjs/components/ListView/ListView.js +7 -1
  15. package/lib/cjs/components/ListViewItem/ListViewItem.js +4 -2
  16. package/lib/cjs/components/ListViewItem/ListViewItem.styles.js +2 -2
  17. package/lib/cjs/components/Menu/Menu.js +16 -5
  18. package/lib/cjs/components/Menu/Menu.stories.js +13 -2
  19. package/lib/cjs/components/SwitchField/SwitchField.js +4 -2
  20. package/lib/cjs/recipes/LinkedListView.stories.js +1 -1
  21. package/lib/cjs/recipes/ListAndPanel.stories.js +107 -57
  22. package/lib/cjs/styles/colors.js +3 -1
  23. package/lib/cjs/utils/devUtils/props/hoverProps.js +54 -0
  24. package/lib/components/Badge/Badge.stories.js +2 -2
  25. package/lib/components/Badge/Badge.styles.js +3 -15
  26. package/lib/components/Button/Button.stories.js +11 -1
  27. package/lib/components/CodeView/CodeView.stories.js +3 -12
  28. package/lib/components/ColorField/ColorField.js +1 -0
  29. package/lib/components/ColorField/ColorField.test.js +15 -0
  30. package/lib/components/CopyText/CopyButton.js +2 -1
  31. package/lib/components/Icon/Icon.stories.js +1 -1
  32. package/lib/components/IconButton/IconButton.styles.js +2 -2
  33. package/lib/components/ListItem/ListItem.js +30 -13
  34. package/lib/components/ListItem/ListItem.stories.js +68 -8
  35. package/lib/components/ListItem/ListItem.test.js +46 -11
  36. package/lib/components/ListView/ListView.js +7 -1
  37. package/lib/components/ListViewItem/ListViewItem.js +4 -2
  38. package/lib/components/ListViewItem/ListViewItem.styles.js +2 -2
  39. package/lib/components/Menu/Menu.js +16 -5
  40. package/lib/components/Menu/Menu.stories.js +14 -2
  41. package/lib/components/SwitchField/SwitchField.js +4 -2
  42. package/lib/recipes/LinkedListView.stories.js +1 -1
  43. package/lib/recipes/ListAndPanel.stories.js +72 -22
  44. package/lib/styles/colors.js +3 -1
  45. package/lib/utils/devUtils/props/hoverProps.js +44 -0
  46. package/package.json +1 -1
@@ -3,7 +3,6 @@ import React from 'react';
3
3
  import Prism from 'prismjs';
4
4
  import 'prismjs/components/prism-powershell';
5
5
  import DocsLayout from '../../../.storybook/storybookDocsLayout';
6
- import { Text } from '../..';
7
6
  import CodeView from './CodeView';
8
7
  import CodeViewReadme from './CodeView.mdx';
9
8
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -46,20 +45,12 @@ export default {
46
45
  }
47
46
  };
48
47
  export var Default = function Default(args) {
49
- return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(Text, {
50
- sx: {
51
- fontWeight: 2
52
- }
53
- }, "JSON"), ___EmotionJSX(CodeView, args));
48
+ return ___EmotionJSX(CodeView, args);
54
49
  };
55
50
  export var WithLineNumbers = function WithLineNumbers() {
56
- return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(Text, {
57
- sx: {
58
- fontWeight: 2
59
- }
60
- }, "JSON"), ___EmotionJSX(CodeView, {
51
+ return ___EmotionJSX(CodeView, {
61
52
  hasLineNumbers: true
62
- }, code));
53
+ }, code);
63
54
  };
64
55
  WithLineNumbers.parameters = {
65
56
  docs: {
@@ -115,6 +115,7 @@ var ColorField = /*#__PURE__*/forwardRef(function (props, ref) {
115
115
  hasNoArrow: true,
116
116
  isDismissable: true,
117
117
  isNonModal: true,
118
+ isNotClosedOnBlur: true,
118
119
  isOpen: popoverState.isOpen,
119
120
  onClose: popoverState.close,
120
121
  ref: overlayRef
@@ -46,4 +46,19 @@ test('will call onChange with arguments if provided', function () {
46
46
  userEvent.clear(hexInput);
47
47
  userEvent.type(hexInput, testColor2);
48
48
  expect(testOnChange).toHaveBeenCalled();
49
+ });
50
+ test('clicking within the popover does not close it', function () {
51
+ var testOnChange = jest.fn();
52
+ getComponent({
53
+ onChange: testOnChange,
54
+ value: testColor1
55
+ });
56
+ var button = screen.getByRole('button');
57
+ userEvent.click(button);
58
+ // should be open now
59
+ var hexLabelElement = screen.queryByText(hexLabel);
60
+ expect(hexLabelElement).toBeInTheDocument();
61
+ // click the popover container, which has caused closing in regressions
62
+ userEvent.click(screen.queryByRole('presentation'));
63
+ expect(screen.queryByRole('presentation')).toBeInTheDocument();
49
64
  });
@@ -13,7 +13,8 @@ var CopyButton = /*#__PURE__*/forwardRef(function (props, ref) {
13
13
  variant: "copyButton"
14
14
  }, omit(props, 'iconProps')), ___EmotionJSX(Icon, _extends({
15
15
  icon: ContentCopy,
16
- size: 15
16
+ size: "xs",
17
+ color: "text.secondary"
17
18
  }, props === null || props === void 0 ? void 0 : props.iconProps)));
18
19
  });
19
20
  CopyButton.propTypes = {
@@ -79,7 +79,7 @@ export var SVGIcons = function SVGIcons() {
79
79
  return ___EmotionJSX(Icon, {
80
80
  icon: SVGComponent,
81
81
  color: "active",
82
- size: 40
82
+ size: "sm"
83
83
  });
84
84
  };
85
85
  var rowHeadings = ['SVG Size', 'Code Example', 'Icon Example'];
@@ -9,7 +9,7 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
10
10
  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; }
11
11
  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) { _defineProperty(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; }
12
- import { badgeWithSlotDeleteButton, deleteButton } from '../Badge/Badge.styles';
12
+ import { badgeDeleteButton, deleteButton } from '../Badge/Badge.styles';
13
13
  import { defaultFocus } from '../Button/Buttons.styles';
14
14
  import { toggle } from '../CollapsiblePanel/CollapsiblePanel.styles';
15
15
  import { copyButton } from '../CopyText/CopyText.styles';
@@ -136,7 +136,7 @@ export default {
136
136
  badge: {
137
137
  deleteButton: deleteButton
138
138
  },
139
- badgeWithSlotDeleteButton: badgeWithSlotDeleteButton,
139
+ badgeDeleteButton: badgeDeleteButton,
140
140
  copyButton: copyButton,
141
141
  hintButton: _objectSpread(_objectSpread({}, base), hintButton),
142
142
  inverted: inverted,
@@ -1,10 +1,22 @@
1
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
9
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
1
10
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
11
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
3
- var _excluded = ["children", "className", "isSelected"];
12
+ var _excluded = ["children", "className", "isHovered", "isSelected", "onHoverChange", "onHoverEnd", "onHoverStart"];
13
+ 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; }
14
+ 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) { _defineProperty(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; }
4
15
  import React, { forwardRef } from 'react';
5
16
  import { useHover } from '@react-aria/interactions';
6
17
  import PropTypes from 'prop-types';
7
18
  import { useStatusClasses } from '../../hooks';
19
+ import { onHoverPropTypes } from '../../utils/devUtils/props/hoverProps';
8
20
  import Box from '../Box/Box';
9
21
 
10
22
  /**
@@ -12,14 +24,21 @@ import Box from '../Box/Box';
12
24
  * Accepts most of the styling props from [styled-system](https://styled-system.com/table).
13
25
  */
14
26
  import { jsx as ___EmotionJSX } from "@emotion/react";
15
- var ListItem = /*#__PURE__*/forwardRef(function (props, ref) {
16
- var children = props.children,
17
- className = props.className,
18
- isSelected = props.isSelected,
19
- others = _objectWithoutProperties(props, _excluded);
20
- var _useHover = useHover(props),
21
- hoverProps = _useHover.hoverProps,
22
- isHovered = _useHover.isHovered;
27
+ var ListItem = /*#__PURE__*/forwardRef(function (_ref, ref) {
28
+ var children = _ref.children,
29
+ className = _ref.className,
30
+ isHovered = _ref.isHovered,
31
+ isSelected = _ref.isSelected,
32
+ onHoverChange = _ref.onHoverChange,
33
+ onHoverEnd = _ref.onHoverEnd,
34
+ onHoverStart = _ref.onHoverStart,
35
+ others = _objectWithoutProperties(_ref, _excluded);
36
+ var _useHover = useHover({
37
+ onHoverChange: onHoverChange,
38
+ onHoverEnd: onHoverEnd,
39
+ onHoverStart: onHoverStart
40
+ }),
41
+ hoverProps = _useHover.hoverProps;
23
42
  var _useStatusClasses = useStatusClasses(className, {
24
43
  isHovered: isHovered,
25
44
  isSelected: isSelected
@@ -27,14 +46,12 @@ var ListItem = /*#__PURE__*/forwardRef(function (props, ref) {
27
46
  classNames = _useStatusClasses.classNames;
28
47
  return ___EmotionJSX(Box, _extends({
29
48
  className: classNames,
30
- role: "listitem",
31
49
  ref: ref,
32
- as: "li",
33
50
  variant: "listItem.container",
34
51
  isRow: true
35
52
  }, hoverProps, others), children);
36
53
  });
37
- ListItem.propTypes = {
54
+ ListItem.propTypes = _objectSpread({
38
55
  /**
39
56
  * A list of class names to apply to the element
40
57
  */
@@ -43,7 +60,7 @@ ListItem.propTypes = {
43
60
  * Sets the selected state of the ListItem
44
61
  */
45
62
  isSelected: PropTypes.bool
46
- };
63
+ }, onHoverPropTypes);
47
64
  ListItem.defaultProps = {
48
65
  isSelected: false
49
66
  };
@@ -1,12 +1,21 @@
1
- import React from 'react';
1
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
9
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
+ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
11
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+ 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; }
13
+ 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) { _defineProperty(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; }
14
+ import React, { useState } from 'react';
2
15
  import AccountIcon from 'mdi-react/AccountIcon';
3
16
  import MoreVertIcon from 'mdi-react/MoreVertIcon';
4
- import Box from '../Box';
5
- import Icon from '../Icon';
6
- import IconButton from '../IconButton';
7
- import Separator from '../Separator';
8
- import Text from '../Text';
9
- import ListItem from './ListItem';
17
+ import { Box, Icon, IconButton, ListItem, Separator, Text } from '../..';
18
+ import { onHoverArgTypes } from '../../utils/devUtils/props/hoverProps';
10
19
  import { jsx as ___EmotionJSX } from "@emotion/react";
11
20
  export default {
12
21
  title: 'Components/ListItem',
@@ -17,7 +26,8 @@ export default {
17
26
  type: 'code'
18
27
  }
19
28
  }
20
- }
29
+ },
30
+ argTypes: _objectSpread({}, onHoverArgTypes)
21
31
  };
22
32
  export var Default = function Default(args) {
23
33
  return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(Separator, {
@@ -74,4 +84,54 @@ export var WithSubtitle = function WithSubtitle(args) {
74
84
  })))), ___EmotionJSX(Separator, {
75
85
  margin: 0
76
86
  }));
87
+ };
88
+ export var WithHoverHandlers = function WithHoverHandlers(args) {
89
+ var _useState = useState(false),
90
+ _useState2 = _slicedToArray(_useState, 2),
91
+ isHovered = _useState2[0],
92
+ setIsHovered = _useState2[1];
93
+ var handleHoverChange = function handleHoverChange() {
94
+ setIsHovered(function (previousIsHovered) {
95
+ return !previousIsHovered;
96
+ });
97
+ };
98
+ var sx = function sx(shouldTranslate) {
99
+ return {
100
+ transform: "".concat(shouldTranslate ? 'translate(15px)' : 'translate(0)')
101
+ };
102
+ };
103
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(Separator, {
104
+ margin: 0
105
+ }), ___EmotionJSX(ListItem, _extends({}, args, {
106
+ onHoverEnd: handleHoverChange,
107
+ onHoverStart: handleHoverChange
108
+ }), ___EmotionJSX(Box, {
109
+ isRow: true,
110
+ mr: "auto",
111
+ alignSelf: "center"
112
+ }, ___EmotionJSX(Icon, {
113
+ icon: AccountIcon,
114
+ alignSelf: "center",
115
+ mr: "sm",
116
+ color: "accent.40",
117
+ size: 32
118
+ }), ___EmotionJSX(Box, {
119
+ sx: sx(isHovered)
120
+ }, ___EmotionJSX(Text, {
121
+ variant: "itemTitle"
122
+ }, "Fons Vernall"), ___EmotionJSX(Text, {
123
+ variant: "itemSubtitle",
124
+ mt: 1
125
+ }, "fvernall0@google.it"))), ___EmotionJSX(Box, {
126
+ isRow: true,
127
+ alignSelf: "center"
128
+ }, ___EmotionJSX(IconButton, {
129
+ size: 26
130
+ }, ___EmotionJSX(Icon, {
131
+ icon: MoreVertIcon,
132
+ size: 20,
133
+ color: "neutral.20"
134
+ })))), ___EmotionJSX(Separator, {
135
+ margin: 0
136
+ }));
77
137
  };
@@ -1,16 +1,20 @@
1
1
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
2
  import React from 'react';
3
3
  import { render, screen } from '@testing-library/react';
4
+ import userEvent from '@testing-library/user-event';
4
5
  import axeTest from '../../utils/testUtils/testAxe';
5
6
  import ListItem from './ListItem';
6
7
  import { jsx as ___EmotionJSX } from "@emotion/react";
7
8
  var testTitle = 'Test Title';
9
+ var TEST_ID = 'ListItem-testid';
8
10
  var defaultProps = {
9
11
  title: testTitle
10
12
  };
11
13
  var getComponent = function getComponent() {
12
14
  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
13
- return render(___EmotionJSX(ListItem, _extends({}, defaultProps, props)));
15
+ return render(___EmotionJSX(ListItem, _extends({}, defaultProps, props, {
16
+ "data-testid": TEST_ID
17
+ })));
14
18
  };
15
19
 
16
20
  // Need to be added to each test file to test accessibility using axe.
@@ -22,15 +26,46 @@ axeTest(getComponent, {
22
26
  }
23
27
  }
24
28
  });
25
- test('renders ListItem component title', function () {
26
- getComponent();
27
- var title = screen.getByRole('listitem');
28
- expect(title).toBeInTheDocument();
29
- });
30
- test('renders ListItem component with selected state', function () {
31
- getComponent({
32
- isSelected: true
29
+ describe('ListItem', function () {
30
+ test('renders ListItem component title', function () {
31
+ getComponent();
32
+ var title = screen.getByTestId(TEST_ID);
33
+ expect(title).toBeInTheDocument();
34
+ });
35
+ test('renders ListItem component with selected state', function () {
36
+ getComponent({
37
+ isSelected: true
38
+ });
39
+ var title = screen.getByTestId(TEST_ID);
40
+ expect(title).toHaveClass('is-selected');
41
+ });
42
+ describe('when hovered', function () {
43
+ var onHoverTest;
44
+ beforeEach(function () {
45
+ onHoverTest = jest.fn();
46
+ });
47
+ test('it calls the onHoverChange callback', function () {
48
+ getComponent({
49
+ onHoverChange: onHoverTest
50
+ });
51
+ userEvent.hover(screen.getByTestId(TEST_ID));
52
+ expect(onHoverTest).toHaveBeenCalled();
53
+ });
54
+ test('it calls the onHoverStart callback', function () {
55
+ getComponent({
56
+ onHoverStart: onHoverTest
57
+ });
58
+ userEvent.hover(screen.getByTestId(TEST_ID));
59
+ expect(onHoverTest).toHaveBeenCalled();
60
+ });
61
+ test('it calls the onHoverEnd callback when unhovered', function () {
62
+ getComponent({
63
+ onHoverEnd: onHoverTest
64
+ });
65
+ var listItem = screen.getByTestId(TEST_ID);
66
+ userEvent.hover(listItem);
67
+ userEvent.unhover(listItem);
68
+ expect(onHoverTest).toHaveBeenCalled();
69
+ });
33
70
  });
34
- var title = screen.getByRole('listitem');
35
- expect(title).toHaveClass('is-selected');
36
71
  });
@@ -9,7 +9,7 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
10
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
11
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
- var _excluded = ["disabledKeys", "loadingState", "onLoadMore", "onSelectionChange", "selectionMode", "selectionStyle"];
12
+ var _excluded = ["disabledKeys", "isHoverable", "loadingState", "onLoadMore", "onSelectionChange", "selectedKeys", "selectionMode", "selectionStyle"];
13
13
  import _Object$values from "@babel/runtime-corejs3/core-js-stable/object/values";
14
14
  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; }
15
15
  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) { _defineProperty(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; }
@@ -69,9 +69,12 @@ export function useListLayout(state) {
69
69
 
70
70
  var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
71
71
  var disabledKeys = props.disabledKeys,
72
+ _props$isHoverable = props.isHoverable,
73
+ isHoverable = _props$isHoverable === void 0 ? true : _props$isHoverable,
72
74
  loadingState = props.loadingState,
73
75
  onLoadMore = props.onLoadMore,
74
76
  onSelectionChange = props.onSelectionChange,
77
+ selectedKeys = props.selectedKeys,
75
78
  selectionMode = props.selectionMode,
76
79
  selectionStyle = props.selectionStyle,
77
80
  others = _objectWithoutProperties(props, _excluded);
@@ -131,6 +134,7 @@ var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
131
134
  }), function (type, item) {
132
135
  if (type === 'item') {
133
136
  return ___EmotionJSX(ListViewItem, {
137
+ isHoverable: isHoverable,
134
138
  item: item
135
139
  });
136
140
  }
@@ -155,6 +159,8 @@ ListView.propTypes = {
155
159
  items: isIterableProp,
156
160
  /** The element's unique identifier. See [MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id). */
157
161
  id: PropTypes.string,
162
+ /** Whether ListView should handle hover state (defaults to true) */
163
+ isHoverable: PropTypes.bool,
158
164
  /** Defines a string value that labels the current element. */
159
165
  'aria-label': PropTypes.string,
160
166
  /** Identifies the element (or elements) that labels the current element. */
@@ -16,6 +16,7 @@ var ListViewItem = function ListViewItem(props) {
16
16
  _props$item$props$has = _props$item$props.hasSeparator,
17
17
  hasSeparator = _props$item$props$has === void 0 ? true : _props$item$props$has,
18
18
  hasInsetSeparator = _props$item$props.hasInsetSeparator,
19
+ isHoverable = props.isHoverable,
19
20
  className = props.className;
20
21
  var dataId = item.props['data-id'];
21
22
  var _useContext = useContext(ListViewContext),
@@ -44,7 +45,7 @@ var ListViewItem = function ListViewItem(props) {
44
45
  var isSelected = state.selectionManager.isSelected(item.key);
45
46
  var mergedProps = mergeProps(raRowProps, hoverProps, focusWithinProps, focusProps);
46
47
  var _useStatusClasses = useStatusClasses(className, {
47
- isHovered: isSelectable && isHovered,
48
+ isHovered: isSelectable && isHovered && isHoverable,
48
49
  isSelected: isSelected,
49
50
  isFocused: isDisabled ? false : isFocusVisible || isFocusVisibleWithin,
50
51
  hasSeparator: hasSeparator,
@@ -81,6 +82,7 @@ ListViewItem.propTypes = {
81
82
  hasSeparator: PropTypes.bool,
82
83
  hasInsetSeparator: PropTypes.bool
83
84
  })
84
- })
85
+ }),
86
+ isHoverable: PropTypes.bool
85
87
  };
86
88
  export default ListViewItem;
@@ -29,7 +29,7 @@ var container = {
29
29
  },
30
30
  '&.has-separator': {
31
31
  borderBottom: '1px solid',
32
- borderBottomColor: 'line.hairline'
32
+ borderBottomColor: 'line.light'
33
33
  }
34
34
  };
35
35
  var linkedViewContainer = _objectSpread(_objectSpread({}, container), {}, {
@@ -43,7 +43,7 @@ var linkedViewContainer = _objectSpread(_objectSpread({}, container), {}, {
43
43
  right: 0,
44
44
  bottom: 0,
45
45
  borderBottom: '1px solid',
46
- borderBottomColor: 'line.hairline'
46
+ borderBottomColor: 'line.light'
47
47
  },
48
48
  '&.is-focused': {
49
49
  '&:after': {
@@ -9,7 +9,7 @@ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object
9
9
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
10
10
  import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
11
  import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
- var _excluded = ["isDisabled", "onAction", "onSelectionChange", "isNotFocusedOnHover"];
12
+ var _excluded = ["isDisabled", "isNotFocusedOnHover", "onAction", "onHoverChange", "onHoverEnd", "onHoverStart", "onSelectionChange"];
13
13
  import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
14
14
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
15
15
  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; }
@@ -17,11 +17,13 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
17
17
  import React, { forwardRef, useContext, useImperativeHandle, useRef } from 'react';
18
18
  import { mergeProps, useFocusRing, useMenu } from 'react-aria';
19
19
  import { useTreeState } from 'react-stately';
20
+ import { useHover } from '@react-aria/interactions';
20
21
  import { useSyncRef } from '@react-aria/utils';
21
22
  import PropTypes from 'prop-types';
22
23
  import { MenuContext } from '../../context/MenuContext';
23
24
  import { usePropWarning } from '../../hooks';
24
25
  import ORIENTATION from '../../utils/devUtils/constants/orientation';
26
+ import { onHoverPropTypes } from '../../utils/devUtils/props/hoverProps';
25
27
  import Box from '../Box';
26
28
  import MenuItem from '../MenuItem';
27
29
 
@@ -35,12 +37,21 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
35
37
  var Menu = /*#__PURE__*/forwardRef(function (props, ref) {
36
38
  var _context;
37
39
  var isDisabled = props.isDisabled,
40
+ isNotFocusedOnHover = props.isNotFocusedOnHover,
38
41
  onAction = props.onAction,
42
+ onHoverChange = props.onHoverChange,
43
+ onHoverEnd = props.onHoverEnd,
44
+ onHoverStart = props.onHoverStart,
39
45
  onSelectionChange = props.onSelectionChange,
40
- isNotFocusedOnHover = props.isNotFocusedOnHover,
41
46
  others = _objectWithoutProperties(props, _excluded);
42
47
  var contextProps = useContext(MenuContext);
43
48
  var completeProps = _objectSpread({}, mergeProps(contextProps, props));
49
+ var _useHover = useHover({
50
+ onHoverChange: onHoverChange,
51
+ onHoverEnd: onHoverEnd,
52
+ onHoverStart: onHoverStart
53
+ }),
54
+ hoverProps = _useHover.hoverProps;
44
55
  var state = useTreeState(completeProps);
45
56
  var menuRef = useRef();
46
57
  usePropWarning(props, 'disabled', 'isDisabled');
@@ -63,7 +74,7 @@ var Menu = /*#__PURE__*/forwardRef(function (props, ref) {
63
74
  ref: menuRef,
64
75
  variant: "menu",
65
76
  "aria-orientation": ORIENTATION.VERTICAL
66
- }, others, mergeProps(focusProps, menuProps)), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
77
+ }, others, mergeProps(focusProps, menuProps, hoverProps)), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
67
78
  return ___EmotionJSX(MenuItem, {
68
79
  key: item.key,
69
80
  item: item,
@@ -75,7 +86,7 @@ var Menu = /*#__PURE__*/forwardRef(function (props, ref) {
75
86
  });
76
87
  }));
77
88
  });
78
- Menu.propTypes = {
89
+ Menu.propTypes = _objectSpread({
79
90
  /** The type of selection that is allowed. */
80
91
  selectionMode: PropTypes.oneOf(['none', 'single', 'multiple']),
81
92
  /**
@@ -126,7 +137,7 @@ Menu.propTypes = {
126
137
  * extended description for the object.
127
138
  */
128
139
  'aria-details': PropTypes.string
129
- };
140
+ }, onHoverPropTypes);
130
141
  Menu.defaultProps = {
131
142
  selectionMode: 'none',
132
143
  isDisabled: false
@@ -1,7 +1,19 @@
1
+ import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
2
+ import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
3
+ import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
4
+ import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
5
+ import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
6
+ import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
7
+ import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
8
+ import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
1
9
  import _objectDestructuringEmpty from "@babel/runtime-corejs3/helpers/esm/objectDestructuringEmpty";
2
10
  import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
11
+ import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
12
+ 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; }
13
+ 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) { _defineProperty(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; }
3
14
  import React from 'react';
4
15
  import { Item } from 'react-stately';
16
+ import { onHoverArgTypes } from '../../utils/devUtils/props/hoverProps';
5
17
  import Text from '../Text';
6
18
  import Menu from '.';
7
19
  import { jsx as ___EmotionJSX } from "@emotion/react";
@@ -18,7 +30,7 @@ export default {
18
30
  }
19
31
  }
20
32
  },
21
- argTypes: {
33
+ argTypes: _objectSpread({
22
34
  selectionMode: {},
23
35
  isDisabled: {},
24
36
  isNotFocusedOnHover: {},
@@ -62,7 +74,7 @@ export default {
62
74
  type: 'none'
63
75
  }
64
76
  }
65
- }
77
+ }, onHoverArgTypes)
66
78
  };
67
79
  export var Default = function Default(_ref) {
68
80
  var args = _extends({}, (_objectDestructuringEmpty(_ref), _ref));
@@ -67,9 +67,11 @@ var SwitchField = /*#__PURE__*/forwardRef(function (props, ref) {
67
67
  }),
68
68
  pressProps = _usePress.pressProps;
69
69
  var whitelistedProps = omit(props, _Object$keys(others));
70
- var _useSwitch = useSwitch(_objectSpread({
70
+ var _useSwitch = useSwitch(_objectSpread(_objectSpread({
71
71
  children: label
72
- }, whitelistedProps), state, switchRef),
72
+ }, whitelistedProps), {}, {
73
+ 'aria-label': 'switch-field'
74
+ }), state, switchRef),
73
75
  inputProps = _useSwitch.inputProps;
74
76
  var statusClasses = {
75
77
  isSelected: inputProps.checked
@@ -378,7 +378,7 @@ export var Default = function Default(_ref) {
378
378
  right: 0,
379
379
  bottom: 0,
380
380
  borderBottom: '1px solid',
381
- borderBottomColor: 'line.hairline'
381
+ borderBottomColor: 'line.light'
382
382
  }
383
383
  }
384
384
  }