@pingux/astro 2.20.0-alpha.8 → 2.20.0-alpha.9

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.
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
4
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
7
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
8
+ _Object$defineProperty(exports, "__esModule", {
9
+ value: true
10
+ });
11
+ exports["default"] = void 0;
12
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
13
+ var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
14
+ var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
15
+ var _react = _interopRequireWildcard(require("react"));
16
+ var _propTypes = _interopRequireDefault(require("prop-types"));
17
+ var _TreeViewContext = require("../../context/TreeViewContext");
18
+ var _index = require("../../index");
19
+ var _TreeView = require("./TreeView");
20
+ var _TreeViewRow = _interopRequireDefault(require("./TreeViewRow"));
21
+ var _react2 = require("@emotion/react");
22
+ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
23
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
+ var TreeViewSection = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
25
+ var _context, _context2, _context3, _context4;
26
+ var item = props.item,
27
+ items = props.items,
28
+ title = props.title;
29
+ var treeSectionRef = (0, _react.useRef)();
30
+ /* istanbul ignore next */
31
+ (0, _react.useImperativeHandle)(ref, function () {
32
+ return treeSectionRef.current;
33
+ });
34
+ var _useTreeViewContext = (0, _TreeViewContext.useTreeViewContext)(),
35
+ state = _useTreeViewContext.state,
36
+ tree = _useTreeViewContext.tree;
37
+ var isExpanded = (0, _includes["default"])(_context = (0, _from["default"])(state.expandedKeys)).call(_context, item.key);
38
+ var isSelected = (0, _includes["default"])(_context2 = (0, _from["default"])(tree.selectedKeys)).call(_context2, item.key);
39
+ var isDisabled = (0, _includes["default"])(_context3 = (0, _from["default"])(state.disabledKeys)).call(_context3, item.key);
40
+ return (0, _react2.jsx)(_index.Box, {
41
+ ref: treeSectionRef,
42
+ as: "li",
43
+ sx: {
44
+ ':not(:last-child)': {
45
+ pb: 'sm'
46
+ }
47
+ },
48
+ role: "treeitem",
49
+ "aria-expanded": isExpanded,
50
+ "aria-selected": isSelected,
51
+ "aria-disabled": isDisabled
52
+ }, (0, _react2.jsx)(_TreeViewRow["default"], {
53
+ item: item,
54
+ title: title,
55
+ items: items,
56
+ isExpanded: isExpanded,
57
+ isSelected: isSelected,
58
+ isDisabled: isDisabled
59
+ }), isExpanded && (0, _react2.jsx)(_index.Box, {
60
+ as: "ul",
61
+ role: "group",
62
+ key: "".concat(item.key, " ul"),
63
+ sx: {
64
+ pl: 'md'
65
+ }
66
+ }, (0, _map["default"])(_context4 = (0, _from["default"])(items)).call(_context4, function (_item) {
67
+ var _item$value$items;
68
+ return (0, _TreeView.SectionOrItemRender)(((_item$value$items = _item.value.items) === null || _item$value$items === void 0 ? void 0 : _item$value$items.length) > 0, (0, _react2.jsx)(TreeViewSection, {
69
+ item: _item,
70
+ items: _item.children,
71
+ title: _item.value.title,
72
+ key: _item.value.title
73
+ }), (0, _react2.jsx)(_index.TreeViewItem, {
74
+ item: _item,
75
+ title: _item.value.title,
76
+ key: _item.value.title
77
+ }));
78
+ })));
79
+ });
80
+ TreeViewSection.propTypes = {
81
+ items: _propTypes["default"].arrayOf(_propTypes["default"].shape({})),
82
+ item: _propTypes["default"].shape({
83
+ key: _propTypes["default"].string
84
+ }),
85
+ title: _propTypes["default"].string
86
+ };
87
+ var _default = TreeViewSection;
88
+ exports["default"] = _default;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
5
+ _Object$defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ _Object$defineProperty(exports, "TreeViewItem", {
9
+ enumerable: true,
10
+ get: function get() {
11
+ return _TreeViewItem["default"];
12
+ }
13
+ });
14
+ _Object$defineProperty(exports, "TreeViewSection", {
15
+ enumerable: true,
16
+ get: function get() {
17
+ return _TreeViewSection["default"];
18
+ }
19
+ });
20
+ _Object$defineProperty(exports, "default", {
21
+ enumerable: true,
22
+ get: function get() {
23
+ return _TreeView["default"];
24
+ }
25
+ });
26
+ var _TreeView = _interopRequireDefault(require("./TreeView"));
27
+ var _TreeViewItem = _interopRequireDefault(require("./TreeViewItem"));
28
+ var _TreeViewSection = _interopRequireDefault(require("./TreeViewSection"));
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+ _Object$defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useTreeViewContext = exports.TreeViewContext = void 0;
8
+ var _react = require("react");
9
+ var TreeViewContext = /*#__PURE__*/(0, _react.createContext)(null);
10
+ exports.TreeViewContext = TreeViewContext;
11
+ var useTreeViewContext = function useTreeViewContext() {
12
+ return (0, _react.useContext)(TreeViewContext);
13
+ };
14
+ exports.useTreeViewContext = useTreeViewContext;
@@ -159,13 +159,15 @@ export * from './components/TextField';
159
159
  export { default as TimeZonePicker } from './components/TimeZonePicker';
160
160
  export { default as TooltipTrigger } from './components/TooltipTrigger';
161
161
  export * from './components/TooltipTrigger';
162
+ export { default as TreeView } from './components/TreeView';
163
+ export * from './components/TreeView';
162
164
  export { default as PageHeader } from './experimental/PageHeader';
163
165
  export * from './experimental/PageHeader';
164
166
  export { default as DataTable } from './components/DataTable';
165
167
  export * from './components/DataTable';
166
168
  export * from './types';
167
169
  export { OverlayProvider, useOverlayPosition, useOverlayTrigger } from 'react-aria';
168
- export { Item, Section, useOverlayTriggerState } from 'react-stately';
170
+ export { Item, Section, useOverlayTriggerState, useTreeData } from 'react-stately';
169
171
  export { TableBody as DataTableBody, Cell as DataTableCell, Column as DataTableColumn, TableHeader as DataTableHeader, Row as DataTableRow, } from 'react-stately';
170
172
  export { default as EditButton } from './experimental/EditButton';
171
173
  export { default as PanelHeader } from './experimental/PanelHeader';
package/lib/cjs/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13, _context14, _context15, _context16, _context17, _context18, _context19, _context20, _context21, _context22, _context23, _context24, _context25, _context26, _context27, _context28, _context29, _context30, _context31, _context32, _context33, _context34, _context35, _context36, _context37, _context38, _context39, _context40, _context41, _context42, _context43, _context44, _context45, _context46, _context47, _context48, _context49, _context50, _context51, _context52, _context53, _context54, _context55, _context56, _context57, _context58, _context59, _context60, _context61, _context62, _context63, _context64, _context65, _context66, _context67, _context68, _context69, _context70, _context71, _context72, _context73, _context74;
3
+ var _context, _context2, _context3, _context4, _context5, _context6, _context7, _context8, _context9, _context10, _context11, _context12, _context13, _context14, _context15, _context16, _context17, _context18, _context19, _context20, _context21, _context22, _context23, _context24, _context25, _context26, _context27, _context28, _context29, _context30, _context31, _context32, _context33, _context34, _context35, _context36, _context37, _context38, _context39, _context40, _context41, _context42, _context43, _context44, _context45, _context46, _context47, _context48, _context49, _context50, _context51, _context52, _context53, _context54, _context55, _context56, _context57, _context58, _context59, _context60, _context61, _context62, _context63, _context64, _context65, _context66, _context67, _context68, _context69, _context70, _context71, _context72, _context73, _context74, _context75;
4
4
  var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
5
5
  var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
6
6
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
@@ -103,6 +103,7 @@ var _exportNames = {
103
103
  TextField: true,
104
104
  TimeZonePicker: true,
105
105
  TooltipTrigger: true,
106
+ TreeView: true,
106
107
  PageHeader: true,
107
108
  DataTable: true,
108
109
  OverlayProvider: true,
@@ -111,6 +112,7 @@ var _exportNames = {
111
112
  Item: true,
112
113
  Section: true,
113
114
  useOverlayTriggerState: true,
115
+ useTreeData: true,
114
116
  DataTableBody: true,
115
117
  DataTableCell: true,
116
118
  DataTableColumn: true,
@@ -758,6 +760,12 @@ _Object$defineProperty(exports, "TooltipTrigger", {
758
760
  return _TooltipTrigger["default"];
759
761
  }
760
762
  });
763
+ _Object$defineProperty(exports, "TreeView", {
764
+ enumerable: true,
765
+ get: function get() {
766
+ return _TreeView["default"];
767
+ }
768
+ });
761
769
  _Object$defineProperty(exports, "useOverlayPosition", {
762
770
  enumerable: true,
763
771
  get: function get() {
@@ -776,6 +784,12 @@ _Object$defineProperty(exports, "useOverlayTriggerState", {
776
784
  return _reactStately.useOverlayTriggerState;
777
785
  }
778
786
  });
787
+ _Object$defineProperty(exports, "useTreeData", {
788
+ enumerable: true,
789
+ get: function get() {
790
+ return _reactStately.useTreeData;
791
+ }
792
+ });
779
793
  var _AccordionGridGroup = _interopRequireWildcard(require("./components/AccordionGridGroup"));
780
794
  _forEachInstanceProperty(_context = _Object$keys(_AccordionGridGroup)).call(_context, function (key) {
781
795
  if (key === "default" || key === "__esModule") return;
@@ -1646,8 +1660,20 @@ _forEachInstanceProperty(_context71 = _Object$keys(_TooltipTrigger)).call(_conte
1646
1660
  }
1647
1661
  });
1648
1662
  });
1663
+ var _TreeView = _interopRequireWildcard(require("./components/TreeView"));
1664
+ _forEachInstanceProperty(_context72 = _Object$keys(_TreeView)).call(_context72, function (key) {
1665
+ if (key === "default" || key === "__esModule") return;
1666
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
1667
+ if (key in exports && exports[key] === _TreeView[key]) return;
1668
+ _Object$defineProperty(exports, key, {
1669
+ enumerable: true,
1670
+ get: function get() {
1671
+ return _TreeView[key];
1672
+ }
1673
+ });
1674
+ });
1649
1675
  var _PageHeader = _interopRequireWildcard(require("./experimental/PageHeader"));
1650
- _forEachInstanceProperty(_context72 = _Object$keys(_PageHeader)).call(_context72, function (key) {
1676
+ _forEachInstanceProperty(_context73 = _Object$keys(_PageHeader)).call(_context73, function (key) {
1651
1677
  if (key === "default" || key === "__esModule") return;
1652
1678
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
1653
1679
  if (key in exports && exports[key] === _PageHeader[key]) return;
@@ -1659,7 +1685,7 @@ _forEachInstanceProperty(_context72 = _Object$keys(_PageHeader)).call(_context72
1659
1685
  });
1660
1686
  });
1661
1687
  var _DataTable = _interopRequireWildcard(require("./components/DataTable"));
1662
- _forEachInstanceProperty(_context73 = _Object$keys(_DataTable)).call(_context73, function (key) {
1688
+ _forEachInstanceProperty(_context74 = _Object$keys(_DataTable)).call(_context74, function (key) {
1663
1689
  if (key === "default" || key === "__esModule") return;
1664
1690
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
1665
1691
  if (key in exports && exports[key] === _DataTable[key]) return;
@@ -1671,7 +1697,7 @@ _forEachInstanceProperty(_context73 = _Object$keys(_DataTable)).call(_context73,
1671
1697
  });
1672
1698
  });
1673
1699
  var _types = require("./types");
1674
- _forEachInstanceProperty(_context74 = _Object$keys(_types)).call(_context74, function (key) {
1700
+ _forEachInstanceProperty(_context75 = _Object$keys(_types)).call(_context75, function (key) {
1675
1701
  if (key === "default" || key === "__esModule") return;
1676
1702
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
1677
1703
  if (key in exports && exports[key] === _types[key]) return;
@@ -52,6 +52,7 @@ var _Table = _interopRequireDefault(require("../../components/Table/Table.styles
52
52
  var tab = _interopRequireWildcard(require("../../components/Tabs/Tabs.style"));
53
53
  var _TimeZone = _interopRequireDefault(require("../../components/TimeZonePicker/TimeZone.styles"));
54
54
  var _Tooltip = _interopRequireDefault(require("../../components/TooltipTrigger/Tooltip.styles"));
55
+ var _TreeView = _interopRequireDefault(require("../../components/TreeView/TreeView.styles"));
55
56
  var _PanelHeader = _interopRequireDefault(require("../../experimental/PanelHeader/PanelHeader.styles"));
56
57
  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); }
57
58
  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; }
@@ -93,6 +94,7 @@ var _default = _objectSpread({
93
94
  stepper: _Stepper["default"],
94
95
  table: _Table["default"],
95
96
  timeZone: _TimeZone["default"],
96
- tooltip: _Tooltip["default"]
97
+ tooltip: _Tooltip["default"],
98
+ treeView: _TreeView["default"]
97
99
  }, tab);
98
100
  exports["default"] = _default;
@@ -0,0 +1,89 @@
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 _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
+ var _excluded = ["tree", "onExpandedChange"];
13
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
14
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
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; }
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context2, _context3; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context2 = ownKeys(Object(source), !0)).call(_context2, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context3 = ownKeys(Object(source))).call(_context3, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
17
+ import React, { forwardRef, useImperativeHandle, useRef } from 'react';
18
+ import { useTreeState } from 'react-stately';
19
+ import PropTypes from 'prop-types';
20
+ import { TreeViewContext } from '../../context/TreeViewContext';
21
+ import { Box, TreeViewItem, TreeViewSection } from '../../index';
22
+ import { isIterableProp } from '../../utils/devUtils/props/isIterable';
23
+
24
+ // split out and exported for ease of use across components
25
+ // and to facilitate easier testing (eliminates redundant conditional renders)
26
+ import { jsx as ___EmotionJSX } from "@emotion/react";
27
+ export var SectionOrItemRender = function SectionOrItemRender(condition, SectionComponent, ItemComponent) {
28
+ if (condition) {
29
+ return SectionComponent;
30
+ }
31
+ return ItemComponent;
32
+ };
33
+ var TreeView = /*#__PURE__*/forwardRef(function (props, ref) {
34
+ var _labelRef$current, _context;
35
+ var tree = props.tree,
36
+ onExpandedChange = props.onExpandedChange,
37
+ others = _objectWithoutProperties(props, _excluded);
38
+ var labelRef = useRef();
39
+ var treeViewRef = useRef();
40
+ /* istanbul ignore next */
41
+ useImperativeHandle(ref, function () {
42
+ return treeViewRef.current;
43
+ });
44
+ var state = useTreeState(_objectSpread({
45
+ onExpandedChange: onExpandedChange
46
+ }, others));
47
+ return ___EmotionJSX(TreeViewContext.Provider, {
48
+ value: {
49
+ state: state,
50
+ tree: tree
51
+ }
52
+ }, ___EmotionJSX(Box, _extends({
53
+ as: "ul",
54
+ role: "tree",
55
+ ref: treeViewRef,
56
+ "aria-labelledby": labelRef === null || labelRef === void 0 || (_labelRef$current = labelRef.current) === null || _labelRef$current === void 0 ? void 0 : _labelRef$current.id,
57
+ sx: {
58
+ overflow: 'hidden'
59
+ }
60
+ }, others), _mapInstanceProperty(_context = _Array$from(state.collection)).call(_context, function (item) {
61
+ return SectionOrItemRender(item.type === 'section', ___EmotionJSX(TreeViewSection, {
62
+ item: item,
63
+ items: item.props.items,
64
+ title: item.props.title,
65
+ key: item.props.title
66
+ }), ___EmotionJSX(TreeViewItem, {
67
+ item: item,
68
+ title: item.value.value.title,
69
+ key: item.value.value.title
70
+ }));
71
+ })));
72
+ });
73
+ TreeView.defaultProps = {
74
+ 'aria-label': 'tree'
75
+ };
76
+ TreeView.propTypes = {
77
+ /** data object prop that is required to make the tree function
78
+ this is returned from the useTreeData hook in React-Aria */
79
+ tree: PropTypes.shape({}).isRequired,
80
+ /** The currently disabled keys in the collection. */
81
+ disabledKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])),
82
+ /** Callback function that is called when items are expanded or collapsed. */
83
+ onExpandedChange: PropTypes.func,
84
+ /** The list of TreeView items. */
85
+ items: isIterableProp,
86
+ /** String that describes the treeview when using a screen reader. */
87
+ 'aria-label': PropTypes.string
88
+ };
89
+ export default TreeView;
@@ -0,0 +1,16 @@
1
+ import { Meta } from '@storybook/addon-docs';
2
+
3
+ <Meta title="Experimental/TreeView/TreeView" />
4
+
5
+ # TreeView
6
+
7
+ The TreeView component represents a nested structure of data.
8
+
9
+ ### Required components
10
+
11
+ This component requires the the use of Item and Section, both exported from [react-stately/collections](https://react-spectrum.adobe.com/react-stately/collections.html).
12
+ This component will also require the use of the [useTreeData](https://react-spectrum.adobe.com/react-stately/useTreeData.html) hook, which is exported through react-stately.
13
+
14
+ ### Accessibility
15
+
16
+ This component should adhere to the [WAI-ARIA TreeView](https://www.w3.org/WAI/ARIA/apg/patterns/treeview/) accessibility guidelines.
@@ -0,0 +1,79 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
+ import React from 'react';
3
+ import DocsLayout from '../../../.storybook/storybookDocsLayout';
4
+ import { Item, Section, TreeView, useTreeData } from '../../index';
5
+ import { SectionOrItemRender } from './TreeView';
6
+ import TreeViewReadMe from './TreeView.mdx';
7
+ import { jsx as ___EmotionJSX } from "@emotion/react";
8
+ export default {
9
+ title: 'Experimental/TreeView',
10
+ component: TreeView,
11
+ parameters: {
12
+ docs: {
13
+ page: function page() {
14
+ return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(TreeViewReadMe, null), ___EmotionJSX(DocsLayout, null));
15
+ },
16
+ source: {
17
+ type: 'code'
18
+ }
19
+ }
20
+ }
21
+ };
22
+ var data = [{
23
+ title: 'Policies',
24
+ items: [{
25
+ title: 'Registration',
26
+ items: [{
27
+ title: 'Registration A'
28
+ }, {
29
+ title: 'Registration B',
30
+ items: [{
31
+ title: 'Registration B1'
32
+ }, {
33
+ title: 'Registration B2'
34
+ }]
35
+ }, {
36
+ title: 'Registration C'
37
+ }, {
38
+ title: 'Registration D'
39
+ }]
40
+ }, {
41
+ title: 'Authentication',
42
+ items: [{
43
+ title: 'Authentication A'
44
+ }, {
45
+ title: 'Authentication B'
46
+ }]
47
+ }]
48
+ }, {
49
+ title: 'Other',
50
+ items: [{
51
+ title: 'Other A'
52
+ }]
53
+ }, {
54
+ title: 'Single Item'
55
+ }];
56
+ export var Default = function Default(args) {
57
+ var tree = useTreeData({
58
+ initialItems: data,
59
+ getKey: function getKey(item) {
60
+ return item.title;
61
+ },
62
+ getChildren: function getChildren(item) {
63
+ return item.items;
64
+ }
65
+ });
66
+ return ___EmotionJSX(TreeView, _extends({}, args, {
67
+ items: tree.items,
68
+ tree: tree
69
+ }), function (section) {
70
+ return SectionOrItemRender(section.children.length > 0, ___EmotionJSX(Section, {
71
+ key: section.key,
72
+ items: section.children,
73
+ title: section.value.title
74
+ }), ___EmotionJSX(Item, {
75
+ key: section.key,
76
+ title: section.title
77
+ }));
78
+ });
79
+ };
@@ -0,0 +1,24 @@
1
+ var treeRow = {
2
+ flexGrow: 1,
3
+ cursor: 'pointer',
4
+ height: '31px',
5
+ outline: 'none',
6
+ '&.is-selected, &.is-hovered, &.is-focused': {
7
+ backgroundColor: 'active',
8
+ '& span': {
9
+ color: 'white'
10
+ },
11
+ '& svg': {
12
+ fill: 'white'
13
+ },
14
+ '& button': {
15
+ fill: 'white'
16
+ }
17
+ },
18
+ '&.is-expanded': {
19
+ marginBottom: 'xs'
20
+ }
21
+ };
22
+ export default {
23
+ treeRow: treeRow
24
+ };
@@ -0,0 +1,121 @@
1
+ import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
2
+ import React from 'react';
3
+ import { useTreeData } from 'react-stately';
4
+ import { Item, Section } from '../../index';
5
+ import { fireEvent, render, screen } from '../../utils/testUtils/testWrapper';
6
+ import { SectionOrItemRender } from './TreeView';
7
+ import TreeView from '.';
8
+ import { jsx as ___EmotionJSX } from "@emotion/react";
9
+ var testId = 'test-TreeView';
10
+ var defaultProps = {
11
+ 'data-testid': testId
12
+ };
13
+ var data = [{
14
+ title: 'People',
15
+ items: [{
16
+ title: 'David',
17
+ customProp: 1
18
+ }, {
19
+ title: 'Sam'
20
+ }, {
21
+ title: 'Jane'
22
+ }]
23
+ }, {
24
+ title: 'Animals',
25
+ items: [{
26
+ title: 'Bears',
27
+ items: [{
28
+ title: 'Black Bear'
29
+ }, {
30
+ title: 'Brown Bear'
31
+ }]
32
+ }, {
33
+ title: 'Kangaroo'
34
+ }, {
35
+ title: 'Snake'
36
+ }]
37
+ }, {
38
+ title: 'Plant'
39
+ }];
40
+ var TreeViewComponent = function TreeViewComponent(props) {
41
+ var tree = useTreeData({
42
+ initialItems: data,
43
+ getKey: function getKey(item) {
44
+ return item.title;
45
+ },
46
+ getChildren: function getChildren(item) {
47
+ return item.items;
48
+ }
49
+ });
50
+ return ___EmotionJSX(TreeView, _extends({}, defaultProps, props, {
51
+ items: tree.items,
52
+ tree: tree
53
+ }), function (section) {
54
+ var _section$children;
55
+ return SectionOrItemRender(((_section$children = section.children) === null || _section$children === void 0 ? void 0 : _section$children.length) > 0, ___EmotionJSX(Section, {
56
+ key: section.key,
57
+ items: section.children,
58
+ title: section.key,
59
+ customProp: {
60
+ testp: 1
61
+ }
62
+ }), ___EmotionJSX(Item, {
63
+ key: section.key,
64
+ title: section.key
65
+ }));
66
+ });
67
+ };
68
+ test('Can select an Item using the mouse', function () {
69
+ render(___EmotionJSX(TreeViewComponent, null));
70
+ var element = screen.getByTestId(testId);
71
+ expect(element).toBeInTheDocument();
72
+ var peopleElement = screen.getByText('People');
73
+ expect(peopleElement).not.toHaveClass('is-selected');
74
+ fireEvent.click(peopleElement);
75
+ expect(peopleElement).toHaveClass('is-selected');
76
+ });
77
+ test('Renders both Sections and Items', function () {
78
+ render(___EmotionJSX(TreeViewComponent, null));
79
+ var peopleElement = screen.getByText('People');
80
+ expect(peopleElement).toBeInTheDocument();
81
+ var plantElement = screen.getByText('Plant');
82
+ expect(plantElement).toBeInTheDocument();
83
+ var allListItems = screen.getAllByRole('treeitem');
84
+ expect(allListItems).toHaveLength(3);
85
+ });
86
+ test('Can expand an Item using the mouse', function () {
87
+ render(___EmotionJSX(TreeViewComponent, null));
88
+
89
+ // The children of collapsed sections will not
90
+ // be rendered by default.
91
+ expect(screen.queryByText(data[0].items[0].title)).not.toBeInTheDocument();
92
+
93
+ // Clicking the dropdown icon, renders the children
94
+ // of the collapsed section.
95
+ var buttons = screen.queryAllByRole('button');
96
+ fireEvent.click(buttons[0]);
97
+ expect(screen.queryByText(data[0].items[0].title)).toBeInTheDocument();
98
+ });
99
+ test('onExpandedChange change prop calls when used', function () {
100
+ var onPress = jest.fn();
101
+ render(___EmotionJSX(TreeViewComponent, {
102
+ onExpandedChange: onPress
103
+ }));
104
+ expect(onPress).not.toHaveBeenCalled();
105
+ var buttons = screen.queryAllByRole('button');
106
+ fireEvent.click(buttons[0]);
107
+ expect(onPress).toHaveBeenCalled();
108
+ });
109
+ test('disabledKeys prop disables items in the tree -- rendering them unclickable', function () {
110
+ render(___EmotionJSX(TreeViewComponent, {
111
+ disabledKeys: ['Plant']
112
+ }));
113
+ var listItems = screen.getAllByRole('treeitem');
114
+ var thisItem = listItems[2];
115
+ expect(thisItem).not.toHaveClass('is-selected');
116
+ expect(thisItem).toHaveAttribute('aria-disabled', 'true');
117
+ fireEvent.mouseDown(thisItem);
118
+ fireEvent.mouseUp(thisItem);
119
+ expect(thisItem).not.toHaveClass('is-selected');
120
+ expect(thisItem).toHaveAttribute('aria-selected', 'false');
121
+ });
@@ -0,0 +1,60 @@
1
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
3
+ import React, { forwardRef, useImperativeHandle, useRef } from 'react';
4
+ import FileIcon from '@pingux/mdi-react/FileIcon';
5
+ import PropTypes from 'prop-types';
6
+ import { useTreeViewContext } from '../../context/TreeViewContext';
7
+ import { Box } from '../../index';
8
+ import TreeViewRow from './TreeViewRow';
9
+ import { jsx as ___EmotionJSX } from "@emotion/react";
10
+ var TreeViewItem = /*#__PURE__*/forwardRef(function (props, ref) {
11
+ var _context, _context2, _context3;
12
+ var item = props.item,
13
+ title = props.title;
14
+ var treeItemRef = useRef();
15
+ /* istanbul ignore next */
16
+ useImperativeHandle(ref, function () {
17
+ return treeItemRef.current;
18
+ });
19
+ var _useTreeViewContext = useTreeViewContext(),
20
+ state = _useTreeViewContext.state,
21
+ tree = _useTreeViewContext.tree;
22
+ var isExpanded = _includesInstanceProperty(_context = _Array$from(state.expandedKeys)).call(_context, item.key);
23
+ var isSelected = _includesInstanceProperty(_context2 = _Array$from(tree.selectedKeys)).call(_context2, item.key);
24
+ var isDisabled = _includesInstanceProperty(_context3 = _Array$from(state.disabledKeys)).call(_context3, item.key);
25
+
26
+ // this component may seem unnecessary, but it will be where the
27
+ // useOption and dragAndDrop stuff will go
28
+ // this comment will be removed at that time.
29
+
30
+ return ___EmotionJSX(Box, {
31
+ as: "li",
32
+ isRow: true,
33
+ ref: treeItemRef,
34
+ role: "treeitem",
35
+ "aria-selected": isSelected,
36
+ "aria-disabled": isDisabled,
37
+ sx: {
38
+ width: '100%',
39
+ ml: '36px',
40
+ ':not(:last-child)': {
41
+ pb: 'sm'
42
+ }
43
+ }
44
+ }, ___EmotionJSX(TreeViewRow, {
45
+ item: item,
46
+ title: title,
47
+ mainIcon: FileIcon,
48
+ isSelected: isSelected,
49
+ isExpanded: isExpanded,
50
+ isDisabled: isDisabled
51
+ }));
52
+ });
53
+ TreeViewItem.propTypes = {
54
+ item: PropTypes.shape({
55
+ key: PropTypes.string
56
+ }),
57
+ name: PropTypes.string,
58
+ title: PropTypes.string
59
+ };
60
+ export default TreeViewItem;