@pingux/astro 2.6.1-alpha.1 → 2.7.0-alpha.0

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 (69) hide show
  1. package/lib/cjs/components/IconButton/IconButton.js +2 -38
  2. package/lib/cjs/components/IconButton/IconButton.stories.js +2 -34
  3. package/lib/cjs/components/IconButton/iconButtonAttributes.js +100 -0
  4. package/lib/cjs/components/ImageUploadField/ImageUploadField.js +1 -0
  5. package/lib/cjs/components/ListView/ListView.js +0 -9
  6. package/lib/cjs/components/ListView/ListView.stories.js +34 -80
  7. package/lib/cjs/components/ListViewItem/ListViewItem.styles.js +6 -1
  8. package/lib/cjs/components/Menu/Menu.js +7 -60
  9. package/lib/cjs/components/Menu/Menu.stories.js +2 -56
  10. package/lib/cjs/components/Menu/menuAttributes.js +104 -0
  11. package/lib/cjs/components/SwitchField/SwitchField.js +12 -54
  12. package/lib/cjs/components/SwitchField/SwitchField.stories.js +2 -34
  13. package/lib/cjs/components/SwitchField/SwitchField.test.js +4 -5
  14. package/lib/cjs/components/SwitchField/switchFieldAttributes.js +191 -0
  15. package/lib/cjs/experimental/StyledListItem/StyledListItem.js +159 -0
  16. package/lib/cjs/experimental/StyledListItem/StyledListItem.stories.js +155 -0
  17. package/lib/cjs/experimental/StyledListItem/StyledListItem.test.js +83 -0
  18. package/lib/cjs/experimental/StyledListItem/controls/ListItemEditButton.js +34 -0
  19. package/lib/cjs/experimental/StyledListItem/controls/ListItemEditButton.stories.js +31 -0
  20. package/lib/cjs/experimental/StyledListItem/controls/ListItemEditButton.test.js +25 -0
  21. package/lib/cjs/experimental/StyledListItem/controls/ListItemMenu.js +37 -0
  22. package/lib/cjs/experimental/StyledListItem/controls/ListItemMenu.stories.js +36 -0
  23. package/lib/cjs/experimental/StyledListItem/controls/ListItemMenu.test.js +59 -0
  24. package/lib/cjs/experimental/StyledListItem/controls/ListItemSwitchField.js +32 -0
  25. package/lib/cjs/experimental/StyledListItem/controls/ListItemSwitchField.stories.js +41 -0
  26. package/lib/cjs/experimental/StyledListItem/controls/ListItemSwitchField.test.js +25 -0
  27. package/lib/cjs/experimental/StyledListItem/styledListItemAttributes.js +81 -0
  28. package/lib/cjs/experimental/recipes/ListAndPanel.stories.js +370 -0
  29. package/lib/cjs/experimental/recipes/ScrollableListView.stories.js +108 -0
  30. package/lib/cjs/experimental/recipes/items.js +126 -0
  31. package/lib/cjs/index.js +33 -1
  32. package/lib/cjs/utils/docUtils/ariaAttributes.js +2 -1
  33. package/lib/cjs/utils/docUtils/docArgTypes.js +41 -0
  34. package/lib/cjs/utils/docUtils/hoverProps.js +7 -2
  35. package/lib/components/IconButton/IconButton.js +2 -38
  36. package/lib/components/IconButton/IconButton.stories.js +2 -34
  37. package/lib/components/IconButton/iconButtonAttributes.js +91 -0
  38. package/lib/components/ImageUploadField/ImageUploadField.js +1 -0
  39. package/lib/components/ListView/ListView.js +0 -9
  40. package/lib/components/ListView/ListView.stories.js +35 -82
  41. package/lib/components/ListViewItem/ListViewItem.styles.js +6 -1
  42. package/lib/components/Menu/Menu.js +7 -60
  43. package/lib/components/Menu/Menu.stories.js +2 -57
  44. package/lib/components/Menu/menuAttributes.js +95 -0
  45. package/lib/components/SwitchField/SwitchField.js +14 -55
  46. package/lib/components/SwitchField/SwitchField.stories.js +2 -34
  47. package/lib/components/SwitchField/SwitchField.test.js +4 -5
  48. package/lib/components/SwitchField/switchFieldAttributes.js +182 -0
  49. package/lib/experimental/StyledListItem/StyledListItem.js +146 -0
  50. package/lib/experimental/StyledListItem/StyledListItem.stories.js +140 -0
  51. package/lib/experimental/StyledListItem/StyledListItem.test.js +74 -0
  52. package/lib/experimental/StyledListItem/controls/ListItemEditButton.js +25 -0
  53. package/lib/experimental/StyledListItem/controls/ListItemEditButton.stories.js +21 -0
  54. package/lib/experimental/StyledListItem/controls/ListItemEditButton.test.js +22 -0
  55. package/lib/experimental/StyledListItem/controls/ListItemMenu.js +28 -0
  56. package/lib/experimental/StyledListItem/controls/ListItemMenu.stories.js +26 -0
  57. package/lib/experimental/StyledListItem/controls/ListItemMenu.test.js +56 -0
  58. package/lib/experimental/StyledListItem/controls/ListItemSwitchField.js +23 -0
  59. package/lib/experimental/StyledListItem/controls/ListItemSwitchField.stories.js +32 -0
  60. package/lib/experimental/StyledListItem/controls/ListItemSwitchField.test.js +22 -0
  61. package/lib/experimental/StyledListItem/styledListItemAttributes.js +72 -0
  62. package/lib/experimental/recipes/ListAndPanel.stories.js +353 -0
  63. package/lib/experimental/recipes/ScrollableListView.stories.js +93 -0
  64. package/lib/experimental/recipes/items.js +117 -0
  65. package/lib/index.js +7 -1
  66. package/lib/utils/docUtils/ariaAttributes.js +1 -1
  67. package/lib/utils/docUtils/docArgTypes.js +29 -0
  68. package/lib/utils/docUtils/hoverProps.js +7 -2
  69. package/package.json +1 -1
package/lib/cjs/index.js CHANGED
@@ -109,7 +109,11 @@ var _exportNames = {
109
109
  DataTableCell: true,
110
110
  DataTableColumn: true,
111
111
  DataTableHeader: true,
112
- DataTableRow: true
112
+ DataTableRow: true,
113
+ ListItemEditButton: true,
114
+ ListItemMenu: true,
115
+ ListItemSwitchField: true,
116
+ StyledListItem: true
113
117
  };
114
118
  _Object$defineProperty(exports, "AccordionGridGroup", {
115
119
  enumerable: true,
@@ -417,6 +421,24 @@ _Object$defineProperty(exports, "ListItem", {
417
421
  return _ListItem["default"];
418
422
  }
419
423
  });
424
+ _Object$defineProperty(exports, "ListItemEditButton", {
425
+ enumerable: true,
426
+ get: function get() {
427
+ return _ListItemEditButton["default"];
428
+ }
429
+ });
430
+ _Object$defineProperty(exports, "ListItemMenu", {
431
+ enumerable: true,
432
+ get: function get() {
433
+ return _ListItemMenu["default"];
434
+ }
435
+ });
436
+ _Object$defineProperty(exports, "ListItemSwitchField", {
437
+ enumerable: true,
438
+ get: function get() {
439
+ return _ListItemSwitchField["default"];
440
+ }
441
+ });
420
442
  _Object$defineProperty(exports, "ListView", {
421
443
  enumerable: true,
422
444
  get: function get() {
@@ -585,6 +607,12 @@ _Object$defineProperty(exports, "Stepper", {
585
607
  return _Stepper["default"];
586
608
  }
587
609
  });
610
+ _Object$defineProperty(exports, "StyledListItem", {
611
+ enumerable: true,
612
+ get: function get() {
613
+ return _StyledListItem["default"];
614
+ }
615
+ });
588
616
  _Object$defineProperty(exports, "Switch", {
589
617
  enumerable: true,
590
618
  get: function get() {
@@ -1589,5 +1617,9 @@ _forEachInstanceProperty(_context73 = _Object$keys(_DataTable)).call(_context73,
1589
1617
  });
1590
1618
  var _reactAria = require("react-aria");
1591
1619
  var _reactStately = require("react-stately");
1620
+ var _ListItemEditButton = _interopRequireDefault(require("./experimental/StyledListItem/controls/ListItemEditButton"));
1621
+ var _ListItemMenu = _interopRequireDefault(require("./experimental/StyledListItem/controls/ListItemMenu"));
1622
+ var _ListItemSwitchField = _interopRequireDefault(require("./experimental/StyledListItem/controls/ListItemSwitchField"));
1623
+ var _StyledListItem = _interopRequireDefault(require("./experimental/StyledListItem/StyledListItem"));
1592
1624
  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); }
1593
1625
  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; }
@@ -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.getAriaAttributeProps = exports.ariaAttributesBasePropTypes = exports.ariaAttributeBaseDocSettings = exports.ariaAttributeBaseArgTypes = void 0;
15
+ exports.getAriaAttributeProps = exports.descriptions = exports.ariaAttributesBasePropTypes = exports.ariaAttributeBaseDocSettings = exports.ariaAttributeBaseArgTypes = void 0;
16
16
  var _reduce = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/reduce"));
17
17
  var _entries = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/entries"));
18
18
  var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
@@ -30,6 +30,7 @@ var descriptions = {
30
30
  ariaLabel: 'Defines a string value that labels the current element.',
31
31
  ariaLabelledby: 'Identifies the element (or elements) that labels the current element.'
32
32
  };
33
+ exports.descriptions = descriptions;
33
34
  var ariaAttributeBaseDocSettings = {
34
35
  type: {
35
36
  summary: 'string'
@@ -0,0 +1,41 @@
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
+ exports.stringOrStringArray = exports.funcArg = exports.docArgTypes = exports.booleanArg = void 0;
9
+ var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
10
+ var _context;
11
+ var docArgTypes = {
12
+ bool: 'boolean',
13
+ node: 'node',
14
+ string: 'string',
15
+ stringArray: 'string[]',
16
+ text: 'text',
17
+ func: 'func',
18
+ object: 'object'
19
+ };
20
+ exports.docArgTypes = docArgTypes;
21
+ var stringOrStringArray = (0, _concat["default"])(_context = "".concat(docArgTypes.string, " | ")).call(_context, docArgTypes.stringArray);
22
+ exports.stringOrStringArray = stringOrStringArray;
23
+ var booleanArg = {
24
+ control: {
25
+ type: docArgTypes.bool
26
+ },
27
+ defaultValue: false,
28
+ type: {
29
+ summary: docArgTypes.bool
30
+ }
31
+ };
32
+ exports.booleanArg = booleanArg;
33
+ var funcArg = {
34
+ control: {
35
+ type: null
36
+ },
37
+ type: {
38
+ summary: docArgTypes.func
39
+ }
40
+ };
41
+ exports.funcArg = funcArg;
@@ -18,6 +18,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
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; }
19
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
20
  var descriptions = {
21
+ isHovered: 'If the item is hovered',
21
22
  onHoverStart: 'Handler that is called when a hover interaction starts.',
22
23
  onHoverEnd: 'Handler that is called when a hover interaction ends.',
23
24
  onHoverChange: 'Handler that is called when the hover state changes.'
@@ -35,6 +36,9 @@ var baseDocSettings = {
35
36
  };
36
37
  exports.baseDocSettings = baseDocSettings;
37
38
  var onHoverArgTypes = {
39
+ isHovered: _objectSpread({
40
+ description: descriptions.isHovered
41
+ }, baseDocSettings),
38
42
  'onHoverStart': _objectSpread({
39
43
  description: descriptions.onHoverStart
40
44
  }, baseDocSettings),
@@ -47,8 +51,9 @@ var onHoverArgTypes = {
47
51
  };
48
52
  exports.onHoverArgTypes = onHoverArgTypes;
49
53
  var onHoverPropTypes = {
50
- onHoverStart: _propTypes["default"].func,
54
+ isHovered: _propTypes["default"].bool,
55
+ onHoverChange: _propTypes["default"].func,
51
56
  onHoverEnd: _propTypes["default"].func,
52
- onHoverChange: _propTypes["default"].func
57
+ onHoverStart: _propTypes["default"].func
53
58
  };
54
59
  exports.onHoverPropTypes = onHoverPropTypes;
@@ -15,11 +15,11 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
15
15
  import React, { forwardRef, useContext, useImperativeHandle, useRef } from 'react';
16
16
  import { mergeProps, useButton, useFocusRing } from 'react-aria';
17
17
  import { Pressable, useHover, usePress } from '@react-aria/interactions';
18
- import PropTypes from 'prop-types';
19
18
  import { IconButton as ThemeUIIconButton } from 'theme-ui';
20
19
  import { BadgeContext } from '../../context/BadgeContext';
21
20
  import { useAriaLabelWarning, useStatusClasses } from '../../hooks';
22
21
  import TooltipTrigger, { Tooltip } from '../TooltipTrigger';
22
+ import { iconButtonPropTypes } from './iconButtonAttributes';
23
23
  import { jsx as ___EmotionJSX } from "@emotion/react";
24
24
  var IconButton = /*#__PURE__*/forwardRef(function (props, ref) {
25
25
  var children = props.children,
@@ -81,43 +81,7 @@ var IconButton = /*#__PURE__*/forwardRef(function (props, ref) {
81
81
  }
82
82
  return button;
83
83
  });
84
- IconButton.propTypes = {
85
- /** Styling to apply to the IconButton. */
86
- variant: PropTypes.string,
87
- /** Defines a string value that labels the current element. */
88
- 'aria-label': PropTypes.string,
89
- /** Content will be displayed in a tooltip on hover or focus. */
90
- title: PropTypes.string,
91
- /**
92
- * Handler that is called when the press is released over the target.
93
- * (e: PressEvent) => void
94
- */
95
- onPress: PropTypes.func,
96
- /**
97
- * Handler that is called when a press interaction starts.
98
- * (e: PressEvent) => void
99
- */
100
- onPressStart: PropTypes.func,
101
- /**
102
- * Handler that is called when a press interaction ends, either over the target or when the
103
- * pointer leaves the target.
104
- * (e: PressEvent) => void
105
- */
106
- onPressEnd: PropTypes.func,
107
- /**
108
- * Handler that is called when the press state changes.
109
- * (isPressed: boolean) => void
110
- */
111
- onPressChange: PropTypes.func,
112
- /**
113
- * Handler that is called when a press is released over the target, regardless of whether it
114
- * started on the target or not.
115
- * (e: PressEvent) => void
116
- */
117
- onPressUp: PropTypes.func,
118
- /** Whether the icon is disabled. */
119
- isDisabled: PropTypes.bool
120
- };
84
+ IconButton.propTypes = iconButtonPropTypes;
121
85
  IconButton.defaultProps = {
122
86
  variant: 'base',
123
87
  isDisabled: false
@@ -10,6 +10,7 @@ import DocsLayout from '../../../.storybook/storybookDocsLayout';
10
10
  import { Box, Icon, IconButton, Table, TableBody, TableCell, TableHead, TableRow, Text } from '../../index';
11
11
  import { FIGMA_LINKS } from '../../utils/designUtils/figmaLinks.js';
12
12
  import IconButtonReadme from './IconButton.mdx';
13
+ import { iconButtonArgTypes } from './iconButtonAttributes';
13
14
  import { jsx as ___EmotionJSX } from "@emotion/react";
14
15
  export default {
15
16
  title: 'Components/IconButton',
@@ -25,40 +26,7 @@ export default {
25
26
  }
26
27
  }
27
28
  },
28
- argTypes: {
29
- icon: {
30
- control: {
31
- type: 'none'
32
- },
33
- defaultValue: CreateIcon,
34
- description: 'The icon to render. List of icons at https://materialdesignicons.com/'
35
- },
36
- title: {
37
- control: {
38
- type: 'text'
39
- }
40
- },
41
- 'aria-label': {
42
- control: {
43
- type: 'text'
44
- }
45
- },
46
- isDisabled: {},
47
- variant: {
48
- control: {
49
- type: 'select',
50
- options: ['base', 'inverted', 'invertedSquare', 'square']
51
- },
52
- defaultValue: 'base'
53
- },
54
- size: {
55
- control: {
56
- type: 'select',
57
- options: ['xs', 'sm', 'md']
58
- },
59
- defaultValue: 'sm'
60
- }
61
- }
29
+ argTypes: iconButtonArgTypes
62
30
  };
63
31
  export var Default = function Default(args) {
64
32
  return ___EmotionJSX(IconButton, _extends({
@@ -0,0 +1,91 @@
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";
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
+ 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 CreateIcon from '@pingux/mdi-react/CreateIcon';
13
+ import PropTypes from 'prop-types';
14
+ import { descriptions as ariaDescriptions } from '../../utils/docUtils/ariaAttributes';
15
+ import { booleanArg, funcArg } from '../../utils/docUtils/docArgTypes';
16
+ var descriptions = {
17
+ icon: 'The icon to render. List of icons at https://materialdesignicons.com/',
18
+ isDisabled: 'Whether the icon is disabled.',
19
+ onPress: 'Handler that is called when the press is released over the target. (e: PressEvent) => void',
20
+ onPressChange: 'Handler that is called when the press state changes. (isPressed: boolean) => void',
21
+ onPressEnd: 'Handler that is called when a press interaction ends, either over the target or when the pointer leaves the target. (e: PressEvent) => void',
22
+ onPressStart: 'Handler that is called when a press interaction starts. (e: PressEvent) => void',
23
+ onPressUp: 'Handler that is called when a press is released over the target, regardless of whether it started on the target or not. (e: PressEvent) => void',
24
+ title: 'Content will be displayed in a tooltip on hover or focus.',
25
+ variant: 'Styling to apply to the IconButton.'
26
+ };
27
+ export var iconButtonArgTypes = {
28
+ icon: {
29
+ control: {
30
+ type: 'none'
31
+ },
32
+ defaultValue: CreateIcon,
33
+ description: descriptions.icon
34
+ },
35
+ title: {
36
+ control: {
37
+ type: 'text'
38
+ },
39
+ description: descriptions.title
40
+ },
41
+ 'aria-label': {
42
+ control: {
43
+ type: 'text'
44
+ },
45
+ description: ariaDescriptions.ariaLabel
46
+ },
47
+ isDisabled: _objectSpread({
48
+ description: descriptions.isDisabled
49
+ }, booleanArg),
50
+ variant: {
51
+ control: {
52
+ type: 'select',
53
+ options: ['base', 'inverted', 'invertedSquare', 'square']
54
+ },
55
+ defaultValue: 'base',
56
+ description: descriptions.variant
57
+ },
58
+ size: {
59
+ control: {
60
+ type: 'select',
61
+ options: ['xs', 'sm', 'md']
62
+ },
63
+ defaultValue: 'sm'
64
+ },
65
+ onPress: _objectSpread({
66
+ description: descriptions.onPress
67
+ }, funcArg),
68
+ onPressStart: _objectSpread({
69
+ description: descriptions.onPressStart
70
+ }, funcArg),
71
+ onPressEnd: _objectSpread({
72
+ description: descriptions.onPressEnd
73
+ }, funcArg),
74
+ onPressChange: _objectSpread({
75
+ description: descriptions.onPressChange
76
+ }, funcArg),
77
+ onPressUp: _objectSpread({
78
+ description: descriptions.onPressUp
79
+ }, funcArg)
80
+ };
81
+ export var iconButtonPropTypes = {
82
+ variant: PropTypes.string,
83
+ 'aria-label': PropTypes.string,
84
+ title: PropTypes.string,
85
+ onPress: PropTypes.func,
86
+ onPressStart: PropTypes.func,
87
+ onPressEnd: PropTypes.func,
88
+ onPressChange: PropTypes.func,
89
+ onPressUp: PropTypes.func,
90
+ isDisabled: PropTypes.bool
91
+ };
@@ -89,6 +89,7 @@ var ImageUploadField = /*#__PURE__*/forwardRef(function (props, ref) {
89
89
  role: "button"
90
90
  }, removeItemText))), ___EmotionJSX(VisuallyHidden, {
91
91
  "aria-live": "polite",
92
+ "aria-hidden": "true",
92
93
  role: state.isMenuOpen ? 'button' : 'status',
93
94
  id: statusId
94
95
  }, state.isMenuOpen && 'Menu pop up expanded'));
@@ -53,15 +53,6 @@ export function useListLayout(state) {
53
53
  layout.disabledKeys = state.disabledKeys;
54
54
  return layout;
55
55
  }
56
-
57
- /**
58
- * NOTE: be careful with putting focusable elements inside ListView.
59
- * It is using a grid (useList hook) with its own event listeners under the hood.
60
- * [react-specttrum-github-issue](https://github.com/adobe/react-spectrum/issues/2801)
61
- * If you decided to add a focusable element inside ListView,
62
- * you should stop bubbling of a pointerDown event and put a focus on the element.
63
- */
64
-
65
56
  var ListView = /*#__PURE__*/forwardRef(function (props, ref) {
66
57
  var disabledKeys = props.disabledKeys,
67
58
  _props$isHoverable = props.isHoverable,
@@ -15,21 +15,18 @@ import _Promise from "@babel/runtime-corejs3/core-js-stable/promise";
15
15
  import _setTimeout from "@babel/runtime-corejs3/core-js-stable/set-timeout";
16
16
  import _sliceInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/slice";
17
17
  import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
18
- /* eslint-disable react/prop-types */
19
18
  import React from 'react';
20
19
  import { Item, useAsyncList } from 'react-stately';
21
- import CreateIcon from '@pingux/mdi-react/CreateIcon';
22
20
  import FormSelectIcon from '@pingux/mdi-react/FormSelectIcon';
23
- import MoreVertIcon from '@pingux/mdi-react/MoreVertIcon';
24
21
  import { action } from '@storybook/addon-actions';
25
22
  import isChromatic from 'chromatic/isChromatic';
26
23
  import DocsLayout from '../../../.storybook/storybookDocsLayout';
27
- import { Box, Icon, IconButton, ListView, Text } from '../../index';
24
+ import { Box, ListItemMenu, ListItemSwitchField, ListView, StyledListItem } from '../../index';
28
25
  import loadingStates from '../../utils/devUtils/constants/loadingStates';
29
26
  import ListViewReadme from './ListView.mdx';
30
27
  import { jsx as ___EmotionJSX } from "@emotion/react";
31
28
  export default {
32
- title: 'Components/ListView',
29
+ title: 'Experimental/ListView',
33
30
  component: ListView,
34
31
  parameters: {
35
32
  docs: {
@@ -536,44 +533,18 @@ var actions = {
536
533
  };
537
534
  var ListElement = function ListElement(_ref) {
538
535
  var item = _ref.item;
539
- return ___EmotionJSX(Box, {
540
- isRow: true
541
- }, ___EmotionJSX(Box, {
542
- isRow: true,
543
- mr: "auto",
544
- alignSelf: "center"
545
- }, ___EmotionJSX(Icon, {
546
- icon: FormSelectIcon,
547
- mr: "sm",
548
- color: "accent.40",
549
- size: "md",
550
- title: {
551
- name: 'Form Select Icon'
552
- }
553
- }), ___EmotionJSX(Text, {
554
- variant: "itemTitle",
555
- alignSelf: "center"
556
- }, item.name)), ___EmotionJSX(Box, {
557
- isRow: true,
558
- alignSelf: "center",
559
- gap: "sm"
560
- }, ___EmotionJSX(IconButton, {
561
- "aria-label": "create-icon"
562
- }, ___EmotionJSX(Icon, {
563
- icon: CreateIcon,
564
- size: "sm",
565
- title: {
566
- name: 'Create Icon'
567
- }
568
- })), ___EmotionJSX(IconButton, {
569
- "aria-label": "actions-icon"
570
- }, ___EmotionJSX(Icon, {
571
- icon: MoreVertIcon,
572
- size: "sm",
573
- title: {
574
- name: 'More Vertical Icon'
536
+ return ___EmotionJSX(StyledListItem, {
537
+ details: {
538
+ text: item.name,
539
+ icon: FormSelectIcon
575
540
  }
576
- }))));
541
+ }, ___EmotionJSX(ListItemSwitchField, null), ___EmotionJSX(ListItemMenu, null, ___EmotionJSX(Item, {
542
+ key: "enable"
543
+ }, "Enable user"), ___EmotionJSX(Item, {
544
+ key: "disable"
545
+ }, "Disable user"), ___EmotionJSX(Item, {
546
+ key: "delete"
547
+ }, "Delete user")));
577
548
  };
578
549
  export var Default = function Default(_ref2) {
579
550
  var args = _extends({}, (_objectDestructuringEmpty(_ref2), _ref2));
@@ -581,48 +552,24 @@ export var Default = function Default(_ref2) {
581
552
  items: items
582
553
  }), function (item) {
583
554
  return ___EmotionJSX(Item, {
555
+ "data-id": item.key,
584
556
  key: item.name,
585
- textValue: item.name,
586
- "data-id": item.key
587
- }, ___EmotionJSX(Box, {
588
- isRow: true
589
- }, ___EmotionJSX(Box, {
590
- isRow: true,
591
- mr: "auto",
592
- alignSelf: "center"
593
- }, ___EmotionJSX(Icon, {
594
- icon: FormSelectIcon,
595
- mr: "sm",
596
- color: "accent.40",
597
- size: "md",
598
- title: {
599
- name: 'Form Select Icon'
600
- }
601
- }), ___EmotionJSX(Text, {
602
- variant: "itemTitle",
603
- alignSelf: "center"
604
- }, item.name)), ___EmotionJSX(Box, {
605
- isRow: true,
606
- alignSelf: "center",
607
- gap: "sm"
608
- }, ___EmotionJSX(IconButton, {
609
- "aria-label": "create-icon"
610
- }, ___EmotionJSX(Icon, {
611
- icon: CreateIcon,
612
- size: "sm",
613
- title: {
614
- name: 'Create Icon'
615
- }
616
- })), ___EmotionJSX(IconButton, {
617
- "aria-label": "actions-icon",
618
- size: "sm"
619
- }, ___EmotionJSX(Icon, {
620
- icon: MoreVertIcon,
621
- size: "sm",
622
- title: {
623
- name: 'More Vertical Icon'
557
+ listItemProps: {
558
+ variant: 'listViewItem.styledListItem'
559
+ },
560
+ textValue: item.name
561
+ }, ___EmotionJSX(StyledListItem, {
562
+ details: {
563
+ text: item.name,
564
+ icon: FormSelectIcon
624
565
  }
625
- })))));
566
+ }, ___EmotionJSX(ListItemSwitchField, null), ___EmotionJSX(ListItemMenu, null, ___EmotionJSX(Item, {
567
+ key: "enable"
568
+ }, "Enable user"), ___EmotionJSX(Item, {
569
+ key: "disable"
570
+ }, "Disable user"), ___EmotionJSX(Item, {
571
+ key: "delete"
572
+ }, "Delete user"))));
626
573
  });
627
574
  };
628
575
  export var InfiniteLoadingList = function InfiniteLoadingList(args) {
@@ -762,6 +709,9 @@ export var InfiniteLoadingList = function InfiniteLoadingList(args) {
762
709
  }), function (item) {
763
710
  return ___EmotionJSX(Item, {
764
711
  key: item.name,
712
+ listItemProps: {
713
+ variant: 'listViewItem.styledListItem'
714
+ },
765
715
  textValue: item.name
766
716
  }, ___EmotionJSX(ListElement, {
767
717
  item: item
@@ -786,6 +736,9 @@ export var MultipleSelection = function MultipleSelection(_ref6) {
786
736
  }), function (item) {
787
737
  return ___EmotionJSX(Item, {
788
738
  key: item.name,
739
+ listItemProps: {
740
+ variant: 'listViewItem.styledListItem'
741
+ },
789
742
  textValue: item.name
790
743
  }, ___EmotionJSX(ListElement, {
791
744
  item: item
@@ -35,6 +35,10 @@ var container = {
35
35
  borderBottomColor: 'line.light'
36
36
  }
37
37
  };
38
+ var styledListItem = _objectSpread(_objectSpread({}, container), {}, {
39
+ padding: 0,
40
+ minHeight: 0
41
+ });
38
42
  var linkedViewContainer = _objectSpread(_objectSpread({}, container), {}, {
39
43
  minHeight: '75px',
40
44
  height: '76px',
@@ -66,5 +70,6 @@ var linkedViewContainer = _objectSpread(_objectSpread({}, container), {}, {
66
70
  });
67
71
  export default {
68
72
  container: container,
69
- linkedViewContainer: linkedViewContainer
73
+ linkedViewContainer: linkedViewContainer,
74
+ styledListItem: styledListItem
70
75
  };
@@ -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", "isNotFocusedOnHover", "onAction", "onHoverChange", "onHoverEnd", "onHoverStart", "onSelectionChange"];
12
+ var _excluded = ["isDisabled", "isNotFocusedOnHover", "onAction", "onHoverChange", "onHoverEnd", "onHoverStart", "onSelectionChange", "selectionMode"];
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; }
@@ -19,23 +19,25 @@ import { mergeProps, useFocusRing, useMenu } from 'react-aria';
19
19
  import { useTreeState } from 'react-stately';
20
20
  import { useHover } from '@react-aria/interactions';
21
21
  import { useSyncRef } from '@react-aria/utils';
22
- import PropTypes from 'prop-types';
23
22
  import { MenuContext } from '../../context/MenuContext';
24
23
  import { usePropWarning } from '../../hooks';
25
24
  import ORIENTATION from '../../utils/devUtils/constants/orientation';
26
- import { onHoverPropTypes } from '../../utils/docUtils/hoverProps';
27
25
  import Box from '../Box';
28
26
  import MenuItem from '../MenuItem';
27
+ import { menuPropTypes } from './menuAttributes';
29
28
  import { jsx as ___EmotionJSX } from "@emotion/react";
30
29
  var Menu = /*#__PURE__*/forwardRef(function (props, ref) {
31
30
  var _context;
32
- var isDisabled = props.isDisabled,
31
+ var _props$isDisabled = props.isDisabled,
32
+ isDisabled = _props$isDisabled === void 0 ? false : _props$isDisabled,
33
33
  isNotFocusedOnHover = props.isNotFocusedOnHover,
34
34
  onAction = props.onAction,
35
35
  onHoverChange = props.onHoverChange,
36
36
  onHoverEnd = props.onHoverEnd,
37
37
  onHoverStart = props.onHoverStart,
38
38
  onSelectionChange = props.onSelectionChange,
39
+ _props$selectionMode = props.selectionMode,
40
+ selectionMode = _props$selectionMode === void 0 ? 'none' : _props$selectionMode,
39
41
  others = _objectWithoutProperties(props, _excluded);
40
42
  var contextProps = useContext(MenuContext);
41
43
  var completeProps = _objectSpread({}, mergeProps(contextProps, props));
@@ -79,61 +81,6 @@ var Menu = /*#__PURE__*/forwardRef(function (props, ref) {
79
81
  });
80
82
  }));
81
83
  });
82
- Menu.propTypes = _objectSpread({
83
- /** The type of selection that is allowed. */
84
- selectionMode: PropTypes.oneOf(['none', 'single', 'multiple']),
85
- /**
86
- * The item keys that are disabled. These items cannot be selected, focused, or otherwise
87
- * interacted with.
88
- */
89
- disabledKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),
90
- /**
91
- * The initial selected keys in the collection (uncontrolled).
92
- *
93
- * `defaultSelectedKeys="all"` can be used to select every key.
94
- */
95
- defaultSelectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
96
- /**
97
- * The currently selected keys in the collection (controlled).
98
- *
99
- * `selectedKeys="all"` can be used to select every key.
100
- */
101
- selectedKeys: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),
102
- /** Whether the item is disabled. */
103
- isDisabled: PropTypes.bool,
104
- /** Whether the menu item is selected. */
105
- isSelected: PropTypes.bool,
106
- /**
107
- * Whether menu item should receive focus state on hover.
108
- */
109
- isNotFocusedOnHover: PropTypes.bool,
110
- /**
111
- * Handler that is called when an item is selected.
112
- *
113
- * `(key: Key) => void`
114
- */
115
- onAction: PropTypes.func,
116
- /**
117
- * Handler that is called when the selection changes. Does not fire when `selectionMode="none"`.
118
- *
119
- * `(keys: Selection) => any`
120
- */
121
- onSelectionChange: PropTypes.func,
122
- /** A screen reader only label for the menu item. */
123
- 'aria-label': PropTypes.string,
124
- /** Identifies the element (or elements) that labels the current element. */
125
- 'aria-labelledby': PropTypes.string,
126
- /** Identifies the element (or elements) that describes the object. */
127
- 'aria-describedby': PropTypes.string,
128
- /**
129
- * Identifies the element (or elements) that provide a detailed,
130
- * extended description for the object.
131
- */
132
- 'aria-details': PropTypes.string
133
- }, onHoverPropTypes);
134
- Menu.defaultProps = {
135
- selectionMode: 'none',
136
- isDisabled: false
137
- };
84
+ Menu.propTypes = menuPropTypes;
138
85
  Menu.displayName = 'Menu';
139
86
  export default Menu;