@atlaskit/table-tree 9.12.2 → 10.0.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.
- package/CHANGELOG.md +10 -0
- package/dist/cjs/components/cell.js +19 -41
- package/dist/cjs/components/header.js +23 -38
- package/dist/cjs/components/headers.js +31 -40
- package/dist/cjs/components/internal/chevron.js +32 -59
- package/dist/cjs/components/internal/item.js +38 -52
- package/dist/cjs/components/internal/items.js +31 -83
- package/dist/cjs/components/internal/loader-item.js +34 -66
- package/dist/cjs/components/internal/with-column-width.js +2 -4
- package/dist/cjs/components/row.js +120 -177
- package/dist/cjs/components/rows.js +17 -37
- package/dist/cjs/components/table-tree.js +75 -119
- package/dist/es2019/components/cell.js +18 -22
- package/dist/es2019/components/header.js +17 -21
- package/dist/es2019/components/headers.js +22 -19
- package/dist/es2019/components/internal/chevron.js +25 -35
- package/dist/es2019/components/internal/item.js +32 -36
- package/dist/es2019/components/internal/items.js +24 -60
- package/dist/es2019/components/internal/loader-item.js +29 -46
- package/dist/es2019/components/internal/with-column-width.js +2 -4
- package/dist/es2019/components/row.js +95 -147
- package/dist/es2019/components/rows.js +17 -17
- package/dist/es2019/components/table-tree.js +66 -90
- package/dist/esm/components/cell.js +19 -38
- package/dist/esm/components/header.js +17 -36
- package/dist/esm/components/headers.js +26 -40
- package/dist/esm/components/internal/chevron.js +29 -57
- package/dist/esm/components/internal/item.js +33 -53
- package/dist/esm/components/internal/items.js +32 -86
- package/dist/esm/components/internal/loader-item.js +33 -68
- package/dist/esm/components/internal/with-column-width.js +2 -4
- package/dist/esm/components/row.js +116 -179
- package/dist/esm/components/rows.js +17 -35
- package/dist/esm/components/table-tree.js +75 -121
- package/dist/types/components/header.d.ts +11 -1
- package/dist/types/components/headers.d.ts +13 -3
- package/dist/types/components/internal/chevron.d.ts +15 -13
- package/dist/types/components/internal/item.d.ts +24 -12
- package/dist/types/components/internal/items.d.ts +12 -23
- package/dist/types/components/internal/loader-item.d.ts +7 -16
- package/dist/types/components/row.d.ts +11 -39
- package/dist/types/components/rows.d.ts +15 -10
- package/dist/types/components/table-tree.d.ts +10 -20
- package/dist/types-ts4.5/components/header.d.ts +11 -1
- package/dist/types-ts4.5/components/headers.d.ts +13 -3
- package/dist/types-ts4.5/components/internal/chevron.d.ts +15 -13
- package/dist/types-ts4.5/components/internal/item.d.ts +24 -12
- package/dist/types-ts4.5/components/internal/items.d.ts +12 -23
- package/dist/types-ts4.5/components/internal/loader-item.d.ts +7 -16
- package/dist/types-ts4.5/components/row.d.ts +11 -39
- package/dist/types-ts4.5/components/rows.d.ts +15 -10
- package/dist/types-ts4.5/components/table-tree.d.ts +10 -20
- package/package.json +5 -9
|
@@ -6,14 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
8
|
exports.default = void 0;
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
-
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
|
-
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
-
var _wrapNativeSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/wrapNativeSuper"));
|
|
9
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
10
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
18
12
|
var _cell = _interopRequireDefault(require("./cell"));
|
|
19
13
|
var _header = _interopRequireDefault(require("./header"));
|
|
@@ -23,17 +17,8 @@ var _row = _interopRequireDefault(require("./row"));
|
|
|
23
17
|
var _rows = _interopRequireDefault(require("./rows"));
|
|
24
18
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
25
19
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
var Content = /*#__PURE__*/function (_Object) {
|
|
29
|
-
(0, _inherits2.default)(Content, _Object);
|
|
30
|
-
var _super = _createSuper(Content);
|
|
31
|
-
function Content() {
|
|
32
|
-
(0, _classCallCheck2.default)(this, Content);
|
|
33
|
-
return _super.apply(this, arguments);
|
|
34
|
-
}
|
|
35
|
-
return (0, _createClass2.default)(Content);
|
|
36
|
-
}( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Object));
|
|
20
|
+
/* eslint-disable react/prop-types */
|
|
21
|
+
|
|
37
22
|
/**
|
|
38
23
|
* This is hard-coded here because our actual <TableTree /> has no typings
|
|
39
24
|
* for its props.
|
|
@@ -42,107 +27,78 @@ var Content = /*#__PURE__*/function (_Object) {
|
|
|
42
27
|
*
|
|
43
28
|
* Defining it here for now lets us provide *something* without much headache.
|
|
44
29
|
*/
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
30
|
+
|
|
31
|
+
var emptyColumnWidths = [];
|
|
32
|
+
function TableTree(_ref) {
|
|
33
|
+
var children = _ref.children,
|
|
34
|
+
columns = _ref.columns,
|
|
35
|
+
_ref$columnWidths = _ref.columnWidths,
|
|
36
|
+
defaultColumnWidths = _ref$columnWidths === void 0 ? emptyColumnWidths : _ref$columnWidths,
|
|
37
|
+
headers = _ref.headers,
|
|
38
|
+
shouldExpandOnClick = _ref.shouldExpandOnClick,
|
|
39
|
+
items = _ref.items,
|
|
40
|
+
mainColumnForExpandCollapseLabel = _ref.mainColumnForExpandCollapseLabel,
|
|
41
|
+
label = _ref.label,
|
|
42
|
+
referencedLabel = _ref.referencedLabel;
|
|
43
|
+
var _useState = (0, _react.useState)(defaultColumnWidths),
|
|
44
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
45
|
+
columnWidths = _useState2[0],
|
|
46
|
+
setColumnWidths = _useState2[1];
|
|
47
|
+
var setColumnWidth = (0, _react.useCallback)(function (columnIndex, width) {
|
|
48
|
+
if (width === columnWidths[columnIndex]) {
|
|
49
|
+
return;
|
|
53
50
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setColumnWidth", function (columnIndex, width) {
|
|
59
|
-
var columnWidths = _this.state.columnWidths;
|
|
60
|
-
if (width === columnWidths[columnIndex]) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
columnWidths[columnIndex] = width;
|
|
64
|
-
_this.setState({
|
|
65
|
-
columnWidths: columnWidths
|
|
66
|
-
});
|
|
51
|
+
setColumnWidths(function (columnWidths) {
|
|
52
|
+
var newColumnWidths = (0, _toConsumableArray2.default)(columnWidths);
|
|
53
|
+
newColumnWidths[columnIndex] = width;
|
|
54
|
+
return newColumnWidths;
|
|
67
55
|
});
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
56
|
+
}, [columnWidths]);
|
|
57
|
+
var getColumnWidth = (0, _react.useCallback)(function (columnIndex) {
|
|
58
|
+
return columnWidths[columnIndex] || null;
|
|
59
|
+
}, [columnWidths]);
|
|
60
|
+
var contextValue = (0, _react.useMemo)(function () {
|
|
61
|
+
return {
|
|
62
|
+
setColumnWidth: setColumnWidth,
|
|
63
|
+
getColumnWidth: getColumnWidth
|
|
64
|
+
};
|
|
65
|
+
}, [setColumnWidth, getColumnWidth]);
|
|
66
|
+
var heads = headers && /*#__PURE__*/_react.default.createElement(_headers.default, null, headers.map(function (header, index) {
|
|
67
|
+
return /*#__PURE__*/_react.default.createElement(_header.default, {
|
|
68
|
+
key: index,
|
|
69
|
+
columnIndex: index,
|
|
70
|
+
width: columnWidths[index]
|
|
71
|
+
}, header);
|
|
72
|
+
}));
|
|
73
|
+
return /*#__PURE__*/_react.default.createElement(_context.TableTreeContext.Provider, {
|
|
74
|
+
value: contextValue
|
|
75
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
76
|
+
role: "treegrid",
|
|
77
|
+
"aria-readonly": true,
|
|
78
|
+
"aria-label": label,
|
|
79
|
+
"aria-labelledby": referencedLabel
|
|
80
|
+
}, heads, columns && items && /*#__PURE__*/_react.default.createElement(_rows.default, {
|
|
81
|
+
items: items,
|
|
82
|
+
render: function render(_ref2) {
|
|
83
|
+
var id = _ref2.id,
|
|
84
|
+
children = _ref2.children,
|
|
85
|
+
content = _ref2.content;
|
|
86
|
+
return /*#__PURE__*/_react.default.createElement(_row.default, {
|
|
87
|
+
itemId: id,
|
|
88
|
+
items: children,
|
|
89
|
+
hasChildren: !!children && children.length > 0,
|
|
90
|
+
shouldExpandOnClick: shouldExpandOnClick,
|
|
91
|
+
mainColumnForExpandCollapseLabel: mainColumnForExpandCollapseLabel
|
|
92
|
+
}, columns.map(function (CellContent, index) {
|
|
93
|
+
return /*#__PURE__*/_react.default.createElement(_cell.default, {
|
|
94
|
+
key: "cell-".concat(index),
|
|
95
|
+
columnIndex: index,
|
|
96
|
+
width: columnWidths[index]
|
|
97
|
+
}, /*#__PURE__*/_react.default.createElement(CellContent, content));
|
|
106
98
|
}));
|
|
107
|
-
var rows = null;
|
|
108
|
-
if (columns && items) {
|
|
109
|
-
rows = /*#__PURE__*/_react.default.createElement(_rows.default, {
|
|
110
|
-
items: items,
|
|
111
|
-
render: function render(_ref) {
|
|
112
|
-
var id = _ref.id,
|
|
113
|
-
children = _ref.children,
|
|
114
|
-
hasChildren = _ref.hasChildren,
|
|
115
|
-
content = _ref.content;
|
|
116
|
-
return /*#__PURE__*/_react.default.createElement(_row.default, {
|
|
117
|
-
itemId: id,
|
|
118
|
-
items: children,
|
|
119
|
-
hasChildren: hasChildren,
|
|
120
|
-
shouldExpandOnClick: shouldExpandOnClick,
|
|
121
|
-
mainColumnForExpandCollapseLabel: mainColumnForExpandCollapseLabel
|
|
122
|
-
}, columns.map(function (CellContent, index) {
|
|
123
|
-
return /*#__PURE__*/_react.default.createElement(_cell.default
|
|
124
|
-
// eslint-disable-next-line react/no-array-index-key
|
|
125
|
-
, {
|
|
126
|
-
key: index,
|
|
127
|
-
columnIndex: index,
|
|
128
|
-
width: columnWidths[index]
|
|
129
|
-
}, /*#__PURE__*/_react.default.createElement(CellContent, content));
|
|
130
|
-
}));
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
|
-
return /*#__PURE__*/_react.default.createElement(_context.TableTreeContext.Provider, {
|
|
135
|
-
value: {
|
|
136
|
-
setColumnWidth: this.setColumnWidth,
|
|
137
|
-
getColumnWidth: this.getColumnWidth
|
|
138
|
-
}
|
|
139
|
-
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
140
|
-
role: "treegrid",
|
|
141
|
-
"aria-readonly": true,
|
|
142
|
-
"aria-label": label,
|
|
143
|
-
"aria-labelledby": referencedLabel
|
|
144
|
-
}, heads, rows, this.props.children));
|
|
145
99
|
}
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
|
|
100
|
+
}), children));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
104
|
+
var _default = exports.default = TableTree;
|
|
@@ -1,30 +1,26 @@
|
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import React
|
|
2
|
+
import React from 'react';
|
|
3
3
|
import CommonCell from './internal/common-cell';
|
|
4
4
|
import OverflowContainer from './internal/overflow-container';
|
|
5
5
|
import { indentBase } from './internal/styled';
|
|
6
6
|
import withColumnWidth from './internal/with-column-width';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
isSingleLine: singleLine
|
|
25
|
-
}, children));
|
|
26
|
-
}
|
|
27
|
-
}
|
|
7
|
+
const CellComponent = ({
|
|
8
|
+
children,
|
|
9
|
+
singleLine,
|
|
10
|
+
indentLevel,
|
|
11
|
+
width,
|
|
12
|
+
className,
|
|
13
|
+
...props
|
|
14
|
+
}) => /*#__PURE__*/React.createElement(CommonCell, _extends({
|
|
15
|
+
indent: indentLevel ? `calc(${indentBase} * ${indentLevel})` : undefined,
|
|
16
|
+
width: width
|
|
17
|
+
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
|
|
18
|
+
,
|
|
19
|
+
className: className
|
|
20
|
+
// eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
|
|
21
|
+
}, props), /*#__PURE__*/React.createElement(OverflowContainer, {
|
|
22
|
+
isSingleLine: singleLine
|
|
23
|
+
}, children));
|
|
28
24
|
const Cell = withColumnWidth(CellComponent);
|
|
29
25
|
|
|
30
26
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
@@ -1,14 +1,12 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
1
|
/**
|
|
3
2
|
* @jsxRuntime classic
|
|
4
3
|
* @jsx jsx
|
|
5
4
|
*/
|
|
6
|
-
import { Component } from 'react';
|
|
7
5
|
|
|
8
6
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
9
7
|
import { css, jsx } from '@emotion/react';
|
|
10
8
|
import { N300 } from '@atlaskit/theme/colors';
|
|
11
|
-
import
|
|
9
|
+
import CommonCell from './internal/common-cell';
|
|
12
10
|
import withColumnWidth from './internal/with-column-width';
|
|
13
11
|
const headerStyles = css({
|
|
14
12
|
color: `var(--ds-text-subtle, ${N300})`,
|
|
@@ -25,24 +23,22 @@ const headerStyles = css({
|
|
|
25
23
|
* Defining it here for now lets us provide *something* without much headache.
|
|
26
24
|
*/
|
|
27
25
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
}
|
|
26
|
+
const HeaderComponent = ({
|
|
27
|
+
width,
|
|
28
|
+
children,
|
|
29
|
+
onClick,
|
|
30
|
+
id
|
|
31
|
+
}) => {
|
|
32
|
+
// TODO: Determine whether proper `th` elements can be used instead of
|
|
33
|
+
// roles (DSP-11588)
|
|
34
|
+
return jsx(CommonCell, {
|
|
35
|
+
css: headerStyles,
|
|
36
|
+
role: "columnheader",
|
|
37
|
+
width: width,
|
|
38
|
+
id: id,
|
|
39
|
+
onClick: onClick
|
|
40
|
+
}, children);
|
|
41
|
+
};
|
|
46
42
|
const Header = withColumnWidth(HeaderComponent);
|
|
47
43
|
|
|
48
44
|
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @jsx jsx
|
|
4
4
|
*/
|
|
5
5
|
/* eslint-disable @repo/internal/react/no-clone-element */
|
|
6
|
-
import { Children, cloneElement
|
|
6
|
+
import { Children, cloneElement } from 'react';
|
|
7
7
|
|
|
8
8
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
9
9
|
import { css, jsx } from '@emotion/react';
|
|
@@ -11,21 +11,24 @@ const containerStyles = css({
|
|
|
11
11
|
display: 'flex',
|
|
12
12
|
borderBlockEnd: `solid 2px ${"var(--ds-border, #dfe1e6)"}`
|
|
13
13
|
});
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
/**
|
|
15
|
+
* __Headers__
|
|
16
|
+
*
|
|
17
|
+
* Headers component for advanced composition of data, allowing custom data structures.
|
|
18
|
+
*
|
|
19
|
+
* - [Examples](https://atlassian.design/components/table-tree/examples#advanced)
|
|
20
|
+
* - [Code](https://atlassian.design/components/table-tree/code#headers-props)
|
|
21
|
+
*/
|
|
22
|
+
const Headers = ({
|
|
23
|
+
children
|
|
24
|
+
}) =>
|
|
25
|
+
// TODO: Determine whether proper `tr` elements can be used instead of
|
|
26
|
+
// roles (DSP-11588)
|
|
27
|
+
jsx("div", {
|
|
28
|
+
css: containerStyles,
|
|
29
|
+
role: "row"
|
|
30
|
+
}, Children.map(children, (header, index) => /*#__PURE__*/cloneElement(header, {
|
|
31
|
+
key: index,
|
|
32
|
+
columnIndex: index
|
|
33
|
+
})));
|
|
34
|
+
export default Headers;
|
|
@@ -1,41 +1,31 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
/* eslint-disable @repo/internal/react/consistent-props-definitions */
|
|
3
2
|
/* eslint-disable react/prop-types */
|
|
4
|
-
import React
|
|
3
|
+
import React from 'react';
|
|
5
4
|
import { IconButton } from '@atlaskit/button/new';
|
|
5
|
+
import __noop from '@atlaskit/ds-lib/noop';
|
|
6
6
|
import ChevronDownIcon from '@atlaskit/icon/glyph/chevron-down';
|
|
7
7
|
import ChevronRightIcon from '@atlaskit/icon/glyph/chevron-right';
|
|
8
8
|
import { ChevronContainer } from './styled';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
icon: isExpanded ? ChevronDownIcon : ChevronRightIcon,
|
|
33
|
-
"aria-controls": ariaControls,
|
|
34
|
-
label: isExpanded ? getLabel(collapseLabel) : getLabel(expandLabel)
|
|
35
|
-
}));
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
_defineProperty(Chevron, "defaultProps", {
|
|
39
|
-
expandLabel: 'Expand',
|
|
40
|
-
collapseLabel: 'Collapse'
|
|
41
|
-
});
|
|
9
|
+
/**
|
|
10
|
+
* Internal chevron component.
|
|
11
|
+
*/
|
|
12
|
+
const Chevron = ({
|
|
13
|
+
isExpanded,
|
|
14
|
+
ariaControls,
|
|
15
|
+
collapseLabel = 'Collapse',
|
|
16
|
+
expandLabel = 'Expand',
|
|
17
|
+
rowId,
|
|
18
|
+
extendedLabel,
|
|
19
|
+
onExpandToggle = __noop
|
|
20
|
+
}) => {
|
|
21
|
+
const getLabel = defaultLabel => extendedLabel ? `${defaultLabel} ${extendedLabel} row` : `${defaultLabel} row ${rowId}`;
|
|
22
|
+
return /*#__PURE__*/React.createElement(ChevronContainer, null, /*#__PURE__*/React.createElement(IconButton, {
|
|
23
|
+
appearance: "subtle",
|
|
24
|
+
onClick: onExpandToggle,
|
|
25
|
+
spacing: "compact",
|
|
26
|
+
icon: isExpanded ? ChevronDownIcon : ChevronRightIcon,
|
|
27
|
+
"aria-controls": ariaControls,
|
|
28
|
+
label: isExpanded ? getLabel(collapseLabel) : getLabel(expandLabel)
|
|
29
|
+
}));
|
|
30
|
+
};
|
|
31
|
+
export default Chevron;
|
|
@@ -1,48 +1,44 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
1
|
/**
|
|
3
2
|
* @jsxRuntime classic
|
|
4
3
|
* @jsx jsx
|
|
5
4
|
*/
|
|
6
5
|
/* eslint-disable @repo/internal/react/no-clone-element */
|
|
7
|
-
import { cloneElement
|
|
6
|
+
import { cloneElement } from 'react';
|
|
8
7
|
|
|
9
8
|
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
10
9
|
import { jsx } from '@emotion/react';
|
|
11
10
|
import toItemId from '../../utils/to-item-id';
|
|
12
11
|
import Items from './items';
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const {
|
|
27
|
-
itemId,
|
|
28
|
-
items
|
|
29
|
-
} = renderedRow.props;
|
|
30
|
-
return /*#__PURE__*/cloneElement(renderedRow, {
|
|
31
|
-
depth,
|
|
32
|
-
data,
|
|
33
|
-
loadingLabel,
|
|
34
|
-
renderChildren: () => jsx("div", {
|
|
35
|
-
id: toItemId(itemId)
|
|
36
|
-
}, jsx(Items, {
|
|
37
|
-
parentData: data,
|
|
38
|
-
depth: depth,
|
|
39
|
-
items: items,
|
|
40
|
-
render: render,
|
|
41
|
-
loadingLabel: loadingLabel
|
|
42
|
-
}))
|
|
43
|
-
});
|
|
12
|
+
/**
|
|
13
|
+
* __Item__
|
|
14
|
+
* Internal item component.
|
|
15
|
+
*/
|
|
16
|
+
function Item({
|
|
17
|
+
depth = 0,
|
|
18
|
+
data,
|
|
19
|
+
render,
|
|
20
|
+
loadingLabel
|
|
21
|
+
}) {
|
|
22
|
+
const renderedRow = render(data);
|
|
23
|
+
if (!renderedRow) {
|
|
24
|
+
return null;
|
|
44
25
|
}
|
|
26
|
+
|
|
27
|
+
// itemId exists on RowProps, but not on RowsProps
|
|
28
|
+
const itemId = 'itemId' in renderedRow.props ? renderedRow.props.itemId : undefined;
|
|
29
|
+
const items = renderedRow.props.items;
|
|
30
|
+
return /*#__PURE__*/cloneElement(renderedRow, {
|
|
31
|
+
depth,
|
|
32
|
+
data,
|
|
33
|
+
loadingLabel,
|
|
34
|
+
renderChildren: () => jsx("div", {
|
|
35
|
+
id: !!itemId ? toItemId(itemId) : undefined
|
|
36
|
+
}, jsx(Items, {
|
|
37
|
+
depth: depth,
|
|
38
|
+
items: items,
|
|
39
|
+
render: render,
|
|
40
|
+
loadingLabel: loadingLabel
|
|
41
|
+
}))
|
|
42
|
+
});
|
|
45
43
|
}
|
|
46
|
-
|
|
47
|
-
depth: 0
|
|
48
|
-
});
|
|
44
|
+
export default Item;
|
|
@@ -1,63 +1,27 @@
|
|
|
1
|
-
import
|
|
2
|
-
/* eslint-disable react/prop-types */
|
|
3
|
-
import React, { Component } from 'react';
|
|
1
|
+
import React, { useState } from 'react';
|
|
4
2
|
import Item from './item';
|
|
5
3
|
import LoaderItem from './loader-item';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
renderLoader() {
|
|
27
|
-
const {
|
|
28
|
-
depth,
|
|
29
|
-
items,
|
|
30
|
-
loadingLabel
|
|
31
|
-
} = this.props;
|
|
32
|
-
return /*#__PURE__*/React.createElement(LoaderItem, {
|
|
33
|
-
isCompleting: !!(items && items.length),
|
|
34
|
-
onComplete: this.handleLoaderComplete,
|
|
35
|
-
depth: depth + 1,
|
|
36
|
-
loadingLabel: loadingLabel
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
renderItems() {
|
|
40
|
-
const {
|
|
41
|
-
render,
|
|
42
|
-
items,
|
|
43
|
-
loadingLabel,
|
|
44
|
-
depth = 0
|
|
45
|
-
} = this.props;
|
|
46
|
-
return items && items.map((itemData, index) => /*#__PURE__*/React.createElement(Item, {
|
|
47
|
-
data: itemData,
|
|
48
|
-
depth: depth + 1,
|
|
49
|
-
key: itemData && itemData.id || index,
|
|
50
|
-
render: render,
|
|
51
|
-
loadingLabel: loadingLabel
|
|
52
|
-
}));
|
|
53
|
-
}
|
|
54
|
-
render() {
|
|
55
|
-
const {
|
|
56
|
-
isLoaderShown
|
|
57
|
-
} = this.state;
|
|
58
|
-
return isLoaderShown ? this.renderLoader() : this.renderItems();
|
|
59
|
-
}
|
|
4
|
+
function Items({
|
|
5
|
+
depth = 0,
|
|
6
|
+
items,
|
|
7
|
+
loadingLabel,
|
|
8
|
+
render
|
|
9
|
+
}) {
|
|
10
|
+
const [isLoaderShown, setIsLoaderShown] = useState(false);
|
|
11
|
+
const handleLoaderComplete = () => setIsLoaderShown(false);
|
|
12
|
+
return !items || isLoaderShown ? /*#__PURE__*/React.createElement(LoaderItem, {
|
|
13
|
+
isCompleting: !!(items && items.length),
|
|
14
|
+
onComplete: handleLoaderComplete,
|
|
15
|
+
depth: depth + 1,
|
|
16
|
+
loadingLabel: loadingLabel
|
|
17
|
+
}) : /*#__PURE__*/React.createElement(React.Fragment, null, items.map(data => /*#__PURE__*/React.createElement(Item, {
|
|
18
|
+
data: data,
|
|
19
|
+
depth: depth + 1,
|
|
20
|
+
key: data.id,
|
|
21
|
+
render: render,
|
|
22
|
+
loadingLabel: loadingLabel
|
|
23
|
+
})));
|
|
60
24
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
25
|
+
|
|
26
|
+
// eslint-disable-next-line @repo/internal/react/require-jsdoc
|
|
27
|
+
export default Items;
|