@pingux/astro 2.27.0 → 2.27.1-alpha.1

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.
@@ -15,6 +15,7 @@ _Object$defineProperty(exports, "__esModule", {
15
15
  value: true
16
16
  });
17
17
  exports["default"] = exports.SectionOrItemRender = void 0;
18
+ exports.useTreeViewLayout = useTreeViewLayout;
18
19
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
19
20
  var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
20
21
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
@@ -22,12 +23,15 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/he
22
23
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
23
24
  var _react = _interopRequireWildcard(require("react"));
24
25
  var _reactStately = require("react-stately");
26
+ var _i18n = require("@react-aria/i18n");
27
+ var _listbox = require("@react-aria/listbox");
28
+ var _layout = require("@react-stately/layout");
25
29
  var _propTypes = _interopRequireDefault(require("prop-types"));
26
30
  var _TreeViewContext = require("../../context/TreeViewContext");
27
31
  var _index = require("../../index");
28
32
  var _isIterable = require("../../utils/devUtils/props/isIterable");
29
33
  var _react2 = require("@emotion/react");
30
- var _excluded = ["tree", "onExpandedChange"]; // split out and exported for ease of use across components
34
+ var _excluded = ["tree", "disabledKeys", "onExpandedChange"]; // split out and exported for ease of use across components
31
35
  // and to facilitate easier testing (eliminates redundant conditional renders)
32
36
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
33
37
  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; }
@@ -40,35 +44,64 @@ var SectionOrItemRender = function SectionOrItemRender(condition, SectionCompone
40
44
  return ItemComponent;
41
45
  };
42
46
  exports.SectionOrItemRender = SectionOrItemRender;
47
+ function useTreeViewLayout(state) {
48
+ var collator = (0, _i18n.useCollator)({
49
+ usage: 'search',
50
+ sensitivity: 'base'
51
+ });
52
+ var layout = (0, _react.useMemo)(function () {
53
+ return new _layout.ListLayout();
54
+ }, [collator]);
55
+ layout.collection = state.collection;
56
+ layout.disabledKeys = state.disabledKeys;
57
+ return layout;
58
+ }
43
59
  var TreeView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
44
- var _labelRef$current, _context;
60
+ var _context;
45
61
  var tree = props.tree,
62
+ disabledKeys = props.disabledKeys,
46
63
  onExpandedChange = props.onExpandedChange,
47
64
  others = (0, _objectWithoutProperties2["default"])(props, _excluded);
48
- var labelRef = (0, _react.useRef)();
49
65
  var treeViewRef = (0, _react.useRef)();
66
+ var selectedKeys = tree.selectedKeys;
67
+
50
68
  /* istanbul ignore next */
51
69
  (0, _react.useImperativeHandle)(ref, function () {
52
70
  return treeViewRef.current;
53
71
  });
54
72
  var state = (0, _reactStately.useTreeState)(_objectSpread({
55
- onExpandedChange: onExpandedChange
73
+ onExpandedChange: onExpandedChange,
74
+ disabledKeys: disabledKeys,
75
+ selectedKeys: selectedKeys,
76
+ selectionMode: 'single',
77
+ disallowEmptySelection: true
56
78
  }, others));
79
+ var ariaLabel = props['aria-label'];
80
+ var listBoxOptions = {
81
+ disabledKeys: disabledKeys,
82
+ 'aria-label': ariaLabel
83
+ };
84
+ var layout = useTreeViewLayout(state);
85
+ var _useListBox = (0, _listbox.useListBox)(_objectSpread(_objectSpread({}, listBoxOptions), {}, {
86
+ keyboardDelegate: layout
87
+ }), state, treeViewRef),
88
+ listBoxProps = _useListBox.listBoxProps;
57
89
  return (0, _react2.jsx)(_TreeViewContext.TreeViewContext.Provider, {
58
90
  value: {
59
91
  state: state,
60
92
  tree: tree
61
93
  }
62
94
  }, (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
63
- as: "ul",
64
- role: "tree",
95
+ as: "ul"
96
+ }, listBoxProps, {
65
97
  ref: treeViewRef,
66
- "aria-labelledby": labelRef === null || labelRef === void 0 || (_labelRef$current = labelRef.current) === null || _labelRef$current === void 0 ? void 0 : _labelRef$current.id,
98
+ "aria-label": ariaLabel,
99
+ role: "treegrid",
67
100
  sx: {
68
101
  overflow: 'hidden'
69
102
  }
70
103
  }, others), (0, _map["default"])(_context = (0, _from["default"])(state.collection)).call(_context, function (item) {
71
- return SectionOrItemRender(item.type === 'section', (0, _react2.jsx)(_index.TreeViewSection, {
104
+ return SectionOrItemRender(item.props.items.length > 0, (0, _react2.jsx)(_index.TreeViewSection, {
72
105
  item: item,
73
106
  items: item.props.items,
74
107
  title: item.props.title,
@@ -80,13 +113,12 @@ var TreeView = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
80
113
  }));
81
114
  })));
82
115
  });
83
- TreeView.defaultProps = {
84
- 'aria-label': 'tree'
85
- };
86
116
  TreeView.propTypes = {
87
117
  /** data object prop that is required to make the tree function
88
118
  this is returned from the useTreeData hook in React-Aria */
89
- tree: _propTypes["default"].shape({}).isRequired,
119
+ tree: _propTypes["default"].shape({
120
+ selectedKeys: _isIterable.isIterableProp
121
+ }).isRequired,
90
122
  /** The currently disabled keys in the collection. */
91
123
  disabledKeys: _propTypes["default"].arrayOf(_propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].object])),
92
124
  /** Callback function that is called when items are expanded or collapsed. */
@@ -10,8 +10,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/e
10
10
  var _react = _interopRequireDefault(require("react"));
11
11
  var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
12
12
  var _index = require("../../index");
13
- var _TreeView = require("./TreeView");
14
- var _TreeView2 = _interopRequireDefault(require("./TreeView.mdx"));
13
+ var _TreeView = _interopRequireDefault(require("./TreeView.mdx"));
15
14
  var _react2 = require("@emotion/react");
16
15
  var _default = {
17
16
  title: 'Experimental/TreeView',
@@ -19,7 +18,7 @@ var _default = {
19
18
  parameters: {
20
19
  docs: {
21
20
  page: function page() {
22
- return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_TreeView2["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
21
+ return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_TreeView["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
23
22
  },
24
23
  source: {
25
24
  type: 'code'
@@ -74,16 +73,16 @@ var Default = function Default(args) {
74
73
  });
75
74
  return (0, _react2.jsx)(_index.TreeView, (0, _extends2["default"])({}, args, {
76
75
  items: tree.items,
77
- tree: tree
76
+ tree: tree,
77
+ "aria-label": "Example Tree",
78
+ disabledKeys: ['Single Item']
78
79
  }), function (section) {
79
- return (0, _TreeView.SectionOrItemRender)(section.children.length > 0, (0, _react2.jsx)(_index.Section, {
80
+ var _section$value;
81
+ return (0, _react2.jsx)(_index.Item, {
80
82
  key: section.key,
81
83
  items: section.children,
82
- title: section.value.title
83
- }), (0, _react2.jsx)(_index.Item, {
84
- key: section.key,
85
- title: section.title
86
- }));
84
+ title: (_section$value = section.value) === null || _section$value === void 0 ? void 0 : _section$value.title
85
+ });
87
86
  });
88
87
  };
89
88
  exports.Default = Default;
@@ -11,34 +11,37 @@ var _ = _interopRequireDefault(require("."));
11
11
  var _react2 = require("@emotion/react");
12
12
  var testId = 'test-TreeView';
13
13
  var defaultProps = {
14
- 'data-testid': testId
14
+ 'data-testid': testId,
15
+ label: 'example tree'
15
16
  };
16
17
  var data = [{
17
- title: 'People',
18
+ title: 'Policies',
18
19
  items: [{
19
- title: 'David',
20
- customProp: 1
21
- }, {
22
- title: 'Sam'
23
- }, {
24
- title: 'Jane'
25
- }]
26
- }, {
27
- title: 'Animals',
28
- items: [{
29
- title: 'Bears',
20
+ title: 'Registration',
30
21
  items: [{
31
- title: 'Black Bear'
22
+ title: 'Registration A'
23
+ }, {
24
+ title: 'Registration B'
25
+ }, {
26
+ title: 'Registration C'
32
27
  }, {
33
- title: 'Brown Bear'
28
+ title: 'Registration D'
34
29
  }]
35
30
  }, {
36
- title: 'Kangaroo'
37
- }, {
38
- title: 'Snake'
31
+ title: 'Authentication',
32
+ items: [{
33
+ title: 'Authentication A'
34
+ }, {
35
+ title: 'Authentication B'
36
+ }]
37
+ }]
38
+ }, {
39
+ title: 'Other',
40
+ items: [{
41
+ title: 'Other A'
39
42
  }]
40
43
  }, {
41
- title: 'Plant'
44
+ title: 'Single Item'
42
45
  }];
43
46
  var TreeViewComponent = function TreeViewComponent(props) {
44
47
  var tree = (0, _reactStately.useTreeData)({
@@ -52,36 +55,62 @@ var TreeViewComponent = function TreeViewComponent(props) {
52
55
  });
53
56
  return (0, _react2.jsx)(_["default"], (0, _extends2["default"])({}, defaultProps, props, {
54
57
  items: tree.items,
55
- tree: tree
56
- }), function (section) {
57
- var _section$children;
58
- return (0, _TreeView.SectionOrItemRender)(((_section$children = section.children) === null || _section$children === void 0 ? void 0 : _section$children.length) > 0, (0, _react2.jsx)(_index.Section, {
59
- key: section.key,
60
- items: section.children,
61
- title: section.key,
62
- customProp: {
63
- testp: 1
64
- }
65
- }), (0, _react2.jsx)(_index.Item, {
66
- key: section.key,
67
- title: section.key
68
- }));
58
+ tree: tree,
59
+ "aria-label": "Example Tree"
60
+ }), function (item) {
61
+ return (0, _react2.jsx)(_index.Item, {
62
+ key: item.key,
63
+ items: item.children,
64
+ title: item.key
65
+ });
69
66
  });
70
67
  };
68
+ var offsetWidth;
69
+ var offsetHeight;
70
+ var scrollHeight;
71
+ var onSelectionChange = jest.fn();
72
+ beforeAll(function () {
73
+ offsetWidth = jest.spyOn(window.HTMLElement.prototype, 'clientWidth', 'get').mockImplementation(function () {
74
+ return 1000;
75
+ });
76
+ offsetHeight = jest.spyOn(window.HTMLElement.prototype, 'clientHeight', 'get').mockImplementation(function () {
77
+ return 1000;
78
+ });
79
+ scrollHeight = jest.spyOn(window.HTMLElement.prototype, 'scrollHeight', 'get').mockImplementation(function () {
80
+ return 48;
81
+ });
82
+ jest.spyOn(window, 'requestAnimationFrame').mockImplementation(function (cb) {
83
+ return cb();
84
+ });
85
+ jest.useFakeTimers();
86
+ });
87
+ afterEach(function () {
88
+ onSelectionChange.mockClear();
89
+ });
90
+ afterAll(function () {
91
+ offsetWidth.mockReset();
92
+ offsetHeight.mockReset();
93
+ scrollHeight.mockReset();
94
+ });
95
+ test('TreeView component does load', function () {
96
+ (0, _testWrapper.render)((0, _react2.jsx)(TreeViewComponent, null));
97
+ var element = _testWrapper.screen.queryByRole('treegrid');
98
+ expect(element).toBeInTheDocument();
99
+ });
71
100
  test('Can select an Item using the mouse', function () {
72
101
  (0, _testWrapper.render)((0, _react2.jsx)(TreeViewComponent, null));
73
- var element = _testWrapper.screen.getByTestId(testId);
102
+ var element = _testWrapper.screen.queryByRole('treegrid');
74
103
  expect(element).toBeInTheDocument();
75
- var peopleElement = _testWrapper.screen.getByText('People');
104
+ var peopleElement = _testWrapper.screen.queryByText('Single Item');
76
105
  expect(peopleElement).not.toHaveClass('is-selected');
77
106
  _testWrapper.fireEvent.click(peopleElement);
78
107
  expect(peopleElement).toHaveClass('is-selected');
79
108
  });
80
109
  test('Renders both Sections and Items', function () {
81
110
  (0, _testWrapper.render)((0, _react2.jsx)(TreeViewComponent, null));
82
- var peopleElement = _testWrapper.screen.getByText('People');
111
+ var peopleElement = _testWrapper.screen.getByText('Single Item');
83
112
  expect(peopleElement).toBeInTheDocument();
84
- var plantElement = _testWrapper.screen.getByText('Plant');
113
+ var plantElement = _testWrapper.screen.getByText('Other');
85
114
  expect(plantElement).toBeInTheDocument();
86
115
  var allListItems = _testWrapper.screen.getAllByRole('treeitem');
87
116
  expect(allListItems).toHaveLength(3);
@@ -111,9 +140,9 @@ test('onExpandedChange change prop calls when used', function () {
111
140
  });
112
141
  test('disabledKeys prop disables items in the tree -- rendering them unclickable', function () {
113
142
  (0, _testWrapper.render)((0, _react2.jsx)(TreeViewComponent, {
114
- disabledKeys: ['Plant']
143
+ disabledKeys: ['Single Item']
115
144
  }));
116
- var listItems = _testWrapper.screen.getAllByRole('treeitem');
145
+ var listItems = _testWrapper.screen.queryAllByRole('treeitem');
117
146
  var thisItem = listItems[2];
118
147
  expect(thisItem).not.toHaveClass('is-selected');
119
148
  expect(thisItem).toHaveAttribute('aria-disabled', 'true');
@@ -121,4 +150,18 @@ test('disabledKeys prop disables items in the tree -- rendering them unclickable
121
150
  _testWrapper.fireEvent.mouseUp(thisItem);
122
151
  expect(thisItem).not.toHaveClass('is-selected');
123
152
  expect(thisItem).toHaveAttribute('aria-selected', 'false');
153
+ });
154
+ var firstJSX = (0, _react2.jsx)("p", null, "first");
155
+ var secondJSX = (0, _react2.jsx)("p", null, "second");
156
+ test('Section or Item Render renders first item if condition is true', function () {
157
+ (0, _testWrapper.render)((0, _react2.jsx)("div", null, (0, _TreeView.SectionOrItemRender)(true, firstJSX, secondJSX)));
158
+ var thisItem = _testWrapper.screen.getByText('first');
159
+ expect(thisItem).toBeInTheDocument();
160
+ expect(_testWrapper.screen.queryByText('second')).not.toBeInTheDocument();
161
+ });
162
+ test('Section or Item Render renders second item if condition is false', function () {
163
+ (0, _testWrapper.render)((0, _react2.jsx)("div", null, (0, _TreeView.SectionOrItemRender)(false, firstJSX, secondJSX)));
164
+ var thisItem = _testWrapper.screen.getByText('second');
165
+ expect(thisItem).toBeInTheDocument();
166
+ expect(_testWrapper.screen.queryByText('first')).not.toBeInTheDocument();
124
167
  });
@@ -9,10 +9,10 @@ _Object$defineProperty(exports, "__esModule", {
9
9
  value: true
10
10
  });
11
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"));
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
14
13
  var _react = _interopRequireWildcard(require("react"));
15
14
  var _FileIcon = _interopRequireDefault(require("@pingux/mdi-react/FileIcon"));
15
+ var _listbox = require("@react-aria/listbox");
16
16
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
17
  var _TreeViewContext = require("../../context/TreeViewContext");
18
18
  var _index = require("../../index");
@@ -21,40 +21,39 @@ var _react2 = require("@emotion/react");
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
22
  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; }
23
23
  var TreeViewItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
24
- var _context, _context2, _context3;
25
24
  var item = props.item,
26
25
  title = props.title;
26
+ var key = item.key;
27
27
  var treeItemRef = (0, _react.useRef)();
28
28
  /* istanbul ignore next */
29
29
  (0, _react.useImperativeHandle)(ref, function () {
30
30
  return treeItemRef.current;
31
31
  });
32
32
  var _useTreeViewContext = (0, _TreeViewContext.useTreeViewContext)(),
33
- state = _useTreeViewContext.state,
34
- tree = _useTreeViewContext.tree;
35
- var isExpanded = (0, _includes["default"])(_context = (0, _from["default"])(state.expandedKeys)).call(_context, item.key);
36
- var isSelected = (0, _includes["default"])(_context2 = (0, _from["default"])(tree.selectedKeys)).call(_context2, item.key);
37
- var isDisabled = (0, _includes["default"])(_context3 = (0, _from["default"])(state.disabledKeys)).call(_context3, item.key);
38
-
39
- // this component may seem unnecessary, but it will be where the
40
- // useOption and dragAndDrop stuff will go
41
- // this comment will be removed at that time.
42
-
43
- return (0, _react2.jsx)(_index.Box, {
33
+ state = _useTreeViewContext.state;
34
+ var _useOption = (0, _listbox.useOption)({
35
+ key: key
36
+ }, state, treeItemRef),
37
+ optionProps = _useOption.optionProps,
38
+ isSelected = _useOption.isSelected,
39
+ isDisabled = _useOption.isDisabled;
40
+ var isExpanded = state.expandedKeys.has(key);
41
+ return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
44
42
  as: "li",
45
43
  isRow: true,
46
44
  ref: treeItemRef,
45
+ "aria-disabled": isDisabled
46
+ }, optionProps, {
47
47
  role: "treeitem",
48
- "aria-selected": isSelected,
49
- "aria-disabled": isDisabled,
50
48
  sx: {
51
49
  width: '100%',
52
50
  ml: '36px',
53
51
  ':not(:last-child)': {
54
52
  pb: 'sm'
55
53
  }
56
- }
57
- }, (0, _react2.jsx)(_TreeViewRow["default"], {
54
+ },
55
+ "aria-selected": isSelected
56
+ }), (0, _react2.jsx)(_TreeViewRow["default"], {
58
57
  item: item,
59
58
  title: title,
60
59
  mainIcon: _FileIcon["default"],
@@ -9,10 +9,11 @@ _Object$defineProperty(exports, "__esModule", {
9
9
  value: true
10
10
  });
11
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"));
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
14
13
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
14
+ var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
15
15
  var _react = _interopRequireWildcard(require("react"));
16
+ var _listbox = require("@react-aria/listbox");
16
17
  var _propTypes = _interopRequireDefault(require("prop-types"));
17
18
  var _TreeViewContext = require("../../context/TreeViewContext");
18
19
  var _index = require("../../index");
@@ -22,22 +23,26 @@ var _react2 = require("@emotion/react");
22
23
  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
24
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
25
  var TreeViewSection = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
25
- var _context, _context2, _context3, _context4;
26
+ var _context;
26
27
  var item = props.item,
27
28
  items = props.items,
28
29
  title = props.title;
30
+ var key = item.key;
29
31
  var treeSectionRef = (0, _react.useRef)();
30
32
  /* istanbul ignore next */
31
33
  (0, _react.useImperativeHandle)(ref, function () {
32
34
  return treeSectionRef.current;
33
35
  });
34
36
  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, {
37
+ state = _useTreeViewContext.state;
38
+ var _useOption = (0, _listbox.useOption)({
39
+ key: key
40
+ }, state, treeSectionRef),
41
+ optionProps = _useOption.optionProps,
42
+ isDisabled = _useOption.isDisabled,
43
+ isSelected = _useOption.isSelected;
44
+ var isExpanded = state.expandedKeys.has(key);
45
+ return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({
41
46
  ref: treeSectionRef,
42
47
  as: "li",
43
48
  sx: {
@@ -45,11 +50,12 @@ var TreeViewSection = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
45
50
  pb: 'sm'
46
51
  }
47
52
  },
48
- role: "treeitem",
49
53
  "aria-expanded": isExpanded,
50
- "aria-selected": isSelected,
51
54
  "aria-disabled": isDisabled
52
- }, (0, _react2.jsx)(_TreeViewRow["default"], {
55
+ }, optionProps, {
56
+ role: "treeitem",
57
+ "aria-selected": isSelected
58
+ }), (0, _react2.jsx)(_TreeViewRow["default"], {
53
59
  item: item,
54
60
  title: title,
55
61
  items: items,
@@ -63,7 +69,7 @@ var TreeViewSection = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
63
69
  sx: {
64
70
  pl: 'md'
65
71
  }
66
- }, (0, _map["default"])(_context4 = (0, _from["default"])(items)).call(_context4, function (_item) {
72
+ }, (0, _map["default"])(_context = (0, _from["default"])(items)).call(_context, function (_item) {
67
73
  var _item$value$items;
68
74
  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
75
  item: _item,