@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.
- package/lib/cjs/components/TreeView/TreeView.js +44 -12
- package/lib/cjs/components/TreeView/TreeView.stories.js +9 -10
- package/lib/cjs/components/TreeView/TreeView.test.js +82 -39
- package/lib/cjs/components/TreeView/TreeViewItem.js +17 -18
- package/lib/cjs/components/TreeView/TreeViewSection.js +19 -13
- package/lib/cjs/recipes/TrialExperienceStatusBar.stories.js +66 -95
- package/lib/cjs/utils/designUtils/figmaLinks.js +3 -0
- package/lib/components/TreeView/TreeView.js +44 -13
- package/lib/components/TreeView/TreeView.stories.js +8 -9
- package/lib/components/TreeView/TreeView.test.js +83 -40
- package/lib/components/TreeView/TreeViewItem.js +17 -18
- package/lib/components/TreeView/TreeViewSection.js +19 -13
- package/lib/recipes/TrialExperienceStatusBar.stories.js +64 -94
- package/lib/utils/designUtils/figmaLinks.js +3 -0
- package/package.json +1 -1
@@ -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
|
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
|
-
|
95
|
+
as: "ul"
|
96
|
+
}, listBoxProps, {
|
65
97
|
ref: treeViewRef,
|
66
|
-
"aria-
|
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.
|
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({
|
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)(
|
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
|
-
|
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
|
-
})
|
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: '
|
18
|
+
title: 'Policies',
|
18
19
|
items: [{
|
19
|
-
title: '
|
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: '
|
22
|
+
title: 'Registration A'
|
23
|
+
}, {
|
24
|
+
title: 'Registration B'
|
25
|
+
}, {
|
26
|
+
title: 'Registration C'
|
32
27
|
}, {
|
33
|
-
title: '
|
28
|
+
title: 'Registration D'
|
34
29
|
}]
|
35
30
|
}, {
|
36
|
-
title: '
|
37
|
-
|
38
|
-
|
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: '
|
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
|
-
|
57
|
-
|
58
|
-
return (0,
|
59
|
-
key:
|
60
|
-
items:
|
61
|
-
title:
|
62
|
-
|
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.
|
102
|
+
var element = _testWrapper.screen.queryByRole('treegrid');
|
74
103
|
expect(element).toBeInTheDocument();
|
75
|
-
var peopleElement = _testWrapper.screen.
|
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('
|
111
|
+
var peopleElement = _testWrapper.screen.getByText('Single Item');
|
83
112
|
expect(peopleElement).toBeInTheDocument();
|
84
|
-
var plantElement = _testWrapper.screen.getByText('
|
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: ['
|
143
|
+
disabledKeys: ['Single Item']
|
115
144
|
}));
|
116
|
-
var listItems = _testWrapper.screen.
|
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
|
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
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
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
|
-
|
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
|
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
|
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
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
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
|
-
},
|
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"])(
|
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,
|