@atlaskit/table-tree 9.6.9 → 9.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/components/cell.js +7 -13
  3. package/dist/cjs/components/internal/common-cell.js +4 -1
  4. package/dist/cjs/components/internal/item.js +5 -2
  5. package/dist/cjs/components/internal/items.js +8 -8
  6. package/dist/cjs/components/internal/loader-item.js +5 -2
  7. package/dist/cjs/components/internal/styled.js +8 -9
  8. package/dist/cjs/components/row.js +1 -2
  9. package/dist/cjs/components/rows.js +7 -2
  10. package/dist/es2019/components/cell.js +7 -13
  11. package/dist/es2019/components/internal/common-cell.js +4 -1
  12. package/dist/es2019/components/internal/item.js +5 -2
  13. package/dist/es2019/components/internal/items.js +8 -8
  14. package/dist/es2019/components/internal/loader-item.js +4 -2
  15. package/dist/es2019/components/internal/styled.js +8 -9
  16. package/dist/es2019/components/row.js +1 -2
  17. package/dist/es2019/components/rows.js +6 -2
  18. package/dist/esm/components/cell.js +7 -13
  19. package/dist/esm/components/internal/common-cell.js +4 -1
  20. package/dist/esm/components/internal/item.js +5 -2
  21. package/dist/esm/components/internal/items.js +8 -8
  22. package/dist/esm/components/internal/loader-item.js +5 -2
  23. package/dist/esm/components/internal/styled.js +8 -9
  24. package/dist/esm/components/row.js +1 -2
  25. package/dist/esm/components/rows.js +7 -2
  26. package/dist/types/components/internal/item.d.ts +1 -0
  27. package/dist/types/components/internal/items.d.ts +2 -1
  28. package/dist/types/components/internal/loader-item.d.ts +1 -0
  29. package/dist/types/components/rows.d.ts +1 -0
  30. package/dist/types-ts4.5/components/internal/item.d.ts +1 -0
  31. package/dist/types-ts4.5/components/internal/items.d.ts +2 -1
  32. package/dist/types-ts4.5/components/internal/loader-item.d.ts +1 -0
  33. package/dist/types-ts4.5/components/rows.d.ts +1 -0
  34. package/extract-react-types/table-tree-rows.tsx +5 -0
  35. package/package.json +6 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/table-tree
2
2
 
3
+ ## 9.6.11
4
+
5
+ ### Patch Changes
6
+
7
+ - [#63677](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/63677) [`f320c8ce5039`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f320c8ce5039) - This package has been added to the Jira push model.
8
+
9
+ ## 9.6.10
10
+
11
+ ### Patch Changes
12
+
13
+ - [#62386](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/62386) [`ac40d033cc90`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/ac40d033cc90) - [ux] Remove aria-busy and add more table grid semantics
14
+
3
15
  ## 9.6.9
4
16
 
5
17
  ### Patch Changes
@@ -40,19 +40,13 @@ var Cell = /*#__PURE__*/function (_Component) {
40
40
  width = _this$props.width,
41
41
  className = _this$props.className,
42
42
  props = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
43
- return (
44
- /*#__PURE__*/
45
- // TODO: Determine whether proper `td` elements can be used instead of
46
- // roles (DSP-11588)
47
- _react.default.createElement(_commonCell.default, (0, _extends2.default)({
48
- role: "gridcell",
49
- indent: indentLevel ? "calc(".concat(_styled.indentBase, " * ").concat(indentLevel, ")") : undefined,
50
- width: width,
51
- className: className
52
- }, props), /*#__PURE__*/_react.default.createElement(_overflowContainer.default, {
53
- isSingleLine: singleLine
54
- }, children))
55
- );
43
+ return /*#__PURE__*/_react.default.createElement(_commonCell.default, (0, _extends2.default)({
44
+ indent: indentLevel ? "calc(".concat(_styled.indentBase, " * ").concat(indentLevel, ")") : undefined,
45
+ width: width,
46
+ className: className
47
+ }, props), /*#__PURE__*/_react.default.createElement(_overflowContainer.default, {
48
+ isSingleLine: singleLine
49
+ }, children));
56
50
  }
57
51
  }]);
58
52
  return Cell;
@@ -29,7 +29,10 @@ var CommonCell = function CommonCell(_ref) {
29
29
  var indent = _ref.indent,
30
30
  width = _ref.width,
31
31
  props = (0, _objectWithoutProperties2.default)(_ref, _excluded);
32
- return (0, _react.jsx)("div", (0, _extends2.default)({}, props, {
32
+ return (0, _react.jsx)("div", (0, _extends2.default)({
33
+ role: "gridcell"
34
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
35
+ }, props, {
33
36
  style: {
34
37
  '--indent': indent,
35
38
  width: width
@@ -31,7 +31,8 @@ var Item = exports.default = /*#__PURE__*/function (_Component) {
31
31
  var _this$props = this.props,
32
32
  depth = _this$props.depth,
33
33
  data = _this$props.data,
34
- render = _this$props.render;
34
+ render = _this$props.render,
35
+ loadingLabel = _this$props.loadingLabel;
35
36
  var renderedRow = render(data);
36
37
  if (!renderedRow) {
37
38
  return null;
@@ -42,6 +43,7 @@ var Item = exports.default = /*#__PURE__*/function (_Component) {
42
43
  return /*#__PURE__*/(0, _react.cloneElement)(renderedRow, {
43
44
  depth: depth,
44
45
  data: data,
46
+ loadingLabel: loadingLabel,
45
47
  renderChildren: function renderChildren() {
46
48
  return (0, _react2.jsx)("div", {
47
49
  id: (0, _toItemId.default)(itemId)
@@ -49,7 +51,8 @@ var Item = exports.default = /*#__PURE__*/function (_Component) {
49
51
  parentData: data,
50
52
  depth: depth,
51
53
  items: items,
52
- render: render
54
+ render: render,
55
+ loadingLabel: loadingLabel
53
56
  }));
54
57
  }
55
58
  });
@@ -45,11 +45,13 @@ var Items = exports.default = /*#__PURE__*/function (_Component) {
45
45
  value: function renderLoader() {
46
46
  var _this$props = this.props,
47
47
  depth = _this$props.depth,
48
- items = _this$props.items;
48
+ items = _this$props.items,
49
+ loadingLabel = _this$props.loadingLabel;
49
50
  return /*#__PURE__*/_react.default.createElement(_loaderItem.default, {
50
51
  isCompleting: !!(items && items.length),
51
52
  onComplete: this.handleLoaderComplete,
52
- depth: depth + 1
53
+ depth: depth + 1,
54
+ loadingLabel: loadingLabel
53
55
  });
54
56
  }
55
57
  }, {
@@ -58,6 +60,7 @@ var Items = exports.default = /*#__PURE__*/function (_Component) {
58
60
  var _this$props2 = this.props,
59
61
  render = _this$props2.render,
60
62
  items = _this$props2.items,
63
+ loadingLabel = _this$props2.loadingLabel,
61
64
  _this$props2$depth = _this$props2.depth,
62
65
  depth = _this$props2$depth === void 0 ? 0 : _this$props2$depth;
63
66
  return items && items.map(function (itemData, index) {
@@ -65,7 +68,8 @@ var Items = exports.default = /*#__PURE__*/function (_Component) {
65
68
  data: itemData,
66
69
  depth: depth + 1,
67
70
  key: itemData && itemData.id || index,
68
- render: render
71
+ render: render,
72
+ loadingLabel: loadingLabel
69
73
  });
70
74
  });
71
75
  }
@@ -73,11 +77,7 @@ var Items = exports.default = /*#__PURE__*/function (_Component) {
73
77
  key: "render",
74
78
  value: function render() {
75
79
  var isLoaderShown = this.state.isLoaderShown;
76
- var busyAttrs = isLoaderShown ? {
77
- 'aria-busy': true,
78
- 'aria-live': 'polite'
79
- } : {};
80
- return /*#__PURE__*/_react.default.createElement("div", busyAttrs, isLoaderShown ? this.renderLoader() : this.renderItems());
80
+ return isLoaderShown ? this.renderLoader() : this.renderItems();
81
81
  }
82
82
  }], [{
83
83
  key: "getDerivedStateFromProps",
@@ -48,7 +48,9 @@ var LoaderItem = exports.default = /*#__PURE__*/function (_Component) {
48
48
  }, {
49
49
  key: "render",
50
50
  value: function render() {
51
- var depth = this.props.depth;
51
+ var _this$props = this.props,
52
+ depth = _this$props.depth,
53
+ loadingLabel = _this$props.loadingLabel;
52
54
  var phase = this.state.phase;
53
55
  return phase === 'loading' ? /*#__PURE__*/_react.default.createElement(_styled.TreeRowContainer, null, /*#__PURE__*/_react.default.createElement(_commonCell.default, {
54
56
  indent: "calc(".concat(_styled.indentBase, " * ").concat(depth, ")"),
@@ -57,7 +59,8 @@ var LoaderItem = exports.default = /*#__PURE__*/function (_Component) {
57
59
  isRoot: depth === 1
58
60
  }, /*#__PURE__*/_react.default.createElement(_spinner.default, {
59
61
  size: "small",
60
- testId: "table-tree-spinner"
62
+ testId: "table-tree-spinner",
63
+ label: loadingLabel
61
64
  })))) : null;
62
65
  }
63
66
  }], [{
@@ -15,7 +15,7 @@ var iconColor = exports.iconColor = "var(--ds-text, ".concat(_colors.N800, ")");
15
15
  var indentBase = exports.indentBase = "var(--ds-space-300, 25px)";
16
16
  var treeRowContainerStyles = (0, _react.css)({
17
17
  display: 'flex',
18
- borderBottom: "1px solid ".concat("var(--ds-border, ".concat(_colors.N30, ")"))
18
+ borderBlockEnd: "1px solid ".concat("var(--ds-border, ".concat(_colors.N30, ")"))
19
19
  });
20
20
 
21
21
  /**
@@ -25,18 +25,17 @@ var TreeRowContainer = exports.TreeRowContainer = function TreeRowContainer(prop
25
25
  return (
26
26
  // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
27
27
  (0, _react.jsx)("div", (0, _extends2.default)({
28
+ role: "row",
28
29
  css: treeRowContainerStyles
29
30
  }, props))
30
31
  );
31
32
  };
32
33
  var commonChevronContainerStyles = (0, _react.css)({
33
34
  display: 'flex',
34
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
35
- marginLeft: "calc(".concat(indentBase, " * -1)"),
36
35
  position: 'absolute',
37
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
38
- top: 7,
39
- alignItems: 'center'
36
+ alignItems: 'center',
37
+ insetBlockStart: 7,
38
+ marginInlineStart: "calc(".concat(indentBase, " * -1)")
40
39
  });
41
40
  /**
42
41
  * __Chevron container__
@@ -53,7 +52,7 @@ var ChevronContainer = exports.ChevronContainer = function ChevronContainer(prop
53
52
  var chevronIconContainerStyles = (0, _react.css)({
54
53
  position: 'relative',
55
54
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
56
- top: 1
55
+ insetBlockStart: 1
57
56
  });
58
57
 
59
58
  /**
@@ -71,11 +70,11 @@ var ChevronIconContainer = exports.ChevronIconContainer = function ChevronIconCo
71
70
  var loadingItemContainerStyles = (0, _react.css)({
72
71
  width: '100%',
73
72
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
74
- paddingTop: 5
73
+ paddingBlockStart: 5
75
74
  });
76
75
  var paddingLeftStyles = (0, _react.css)({
77
76
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
78
- paddingLeft: '50%'
77
+ paddingInlineStart: '50%'
79
78
  });
80
79
  /**
81
80
  * __Loader item container__
@@ -28,7 +28,7 @@ var treeRowClickableStyles = (0, _react2.css)({
28
28
  cursor: 'pointer'
29
29
  });
30
30
  var packageName = "@atlaskit/table-tree";
31
- var packageVersion = "9.6.9";
31
+ var packageVersion = "9.6.11";
32
32
  var Row = exports.RowWithoutAnalytics = /*#__PURE__*/function (_Component) {
33
33
  (0, _inherits2.default)(Row, _Component);
34
34
  var _super = _createSuper(Row);
@@ -156,7 +156,6 @@ var Row = exports.RowWithoutAnalytics = /*#__PURE__*/function (_Component) {
156
156
  ariaAttrs['aria-level'] = depth;
157
157
  }
158
158
  return (0, _react2.jsx)(_react.Fragment, null, (0, _react2.jsx)(_styled.TreeRowContainer, (0, _extends2.default)({
159
- role: "row",
160
159
  css: hasChildren && shouldExpandOnClick ? treeRowClickableStyles : undefined,
161
160
  onClick: hasChildren && shouldExpandOnClick ? this.onClickHandler : undefined
162
161
  }, ariaAttrs), _react.default.Children.map(this.props.children, function (cell, index) {
@@ -29,9 +29,14 @@ var Rows = exports.default = /*#__PURE__*/function (_Component) {
29
29
  value: function render() {
30
30
  var _this$props = this.props,
31
31
  items = _this$props.items,
32
- render = _this$props.render;
33
- return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_items.default, {
32
+ render = _this$props.render,
33
+ _this$props$loadingLa = _this$props.loadingLabel,
34
+ loadingLabel = _this$props$loadingLa === void 0 ? 'Loading' : _this$props$loadingLa;
35
+ return /*#__PURE__*/_react.default.createElement("div", {
36
+ role: "rowgroup"
37
+ }, /*#__PURE__*/_react.default.createElement(_items.default, {
34
38
  items: items,
39
+ loadingLabel: loadingLabel,
35
40
  render: render
36
41
  }));
37
42
  }
@@ -14,19 +14,13 @@ class Cell extends Component {
14
14
  className,
15
15
  ...props
16
16
  } = this.props;
17
- return (
18
- /*#__PURE__*/
19
- // TODO: Determine whether proper `td` elements can be used instead of
20
- // roles (DSP-11588)
21
- React.createElement(CommonCell, _extends({
22
- role: "gridcell",
23
- indent: indentLevel ? `calc(${indentBase} * ${indentLevel})` : undefined,
24
- width: width,
25
- className: className
26
- }, props), /*#__PURE__*/React.createElement(OverflowContainer, {
27
- isSingleLine: singleLine
28
- }, children))
29
- );
17
+ return /*#__PURE__*/React.createElement(CommonCell, _extends({
18
+ indent: indentLevel ? `calc(${indentBase} * ${indentLevel})` : undefined,
19
+ width: width,
20
+ className: className
21
+ }, props), /*#__PURE__*/React.createElement(OverflowContainer, {
22
+ isSingleLine: singleLine
23
+ }, children));
30
24
  }
31
25
  }
32
26
  export default withColumnWidth(Cell);
@@ -21,7 +21,10 @@ const CommonCell = ({
21
21
  indent,
22
22
  width,
23
23
  ...props
24
- }) => jsx("div", _extends({}, props, {
24
+ }) => jsx("div", _extends({
25
+ role: "gridcell"
26
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
27
+ }, props, {
25
28
  style: {
26
29
  '--indent': indent,
27
30
  width
@@ -11,7 +11,8 @@ export default class Item extends Component {
11
11
  const {
12
12
  depth,
13
13
  data,
14
- render
14
+ render,
15
+ loadingLabel
15
16
  } = this.props;
16
17
  const renderedRow = render(data);
17
18
  if (!renderedRow) {
@@ -24,13 +25,15 @@ export default class Item extends Component {
24
25
  return /*#__PURE__*/cloneElement(renderedRow, {
25
26
  depth,
26
27
  data,
28
+ loadingLabel,
27
29
  renderChildren: () => jsx("div", {
28
30
  id: toItemId(itemId)
29
31
  }, jsx(Items, {
30
32
  parentData: data,
31
33
  depth: depth,
32
34
  items: items,
33
- render: render
35
+ render: render,
36
+ loadingLabel: loadingLabel
34
37
  }))
35
38
  });
36
39
  }
@@ -26,36 +26,36 @@ export default class Items extends Component {
26
26
  renderLoader() {
27
27
  const {
28
28
  depth,
29
- items
29
+ items,
30
+ loadingLabel
30
31
  } = this.props;
31
32
  return /*#__PURE__*/React.createElement(LoaderItem, {
32
33
  isCompleting: !!(items && items.length),
33
34
  onComplete: this.handleLoaderComplete,
34
- depth: depth + 1
35
+ depth: depth + 1,
36
+ loadingLabel: loadingLabel
35
37
  });
36
38
  }
37
39
  renderItems() {
38
40
  const {
39
41
  render,
40
42
  items,
43
+ loadingLabel,
41
44
  depth = 0
42
45
  } = this.props;
43
46
  return items && items.map((itemData, index) => /*#__PURE__*/React.createElement(Item, {
44
47
  data: itemData,
45
48
  depth: depth + 1,
46
49
  key: itemData && itemData.id || index,
47
- render: render
50
+ render: render,
51
+ loadingLabel: loadingLabel
48
52
  }));
49
53
  }
50
54
  render() {
51
55
  const {
52
56
  isLoaderShown
53
57
  } = this.state;
54
- const busyAttrs = isLoaderShown ? {
55
- 'aria-busy': true,
56
- 'aria-live': 'polite'
57
- } : {};
58
- return /*#__PURE__*/React.createElement("div", busyAttrs, isLoaderShown ? this.renderLoader() : this.renderItems());
58
+ return isLoaderShown ? this.renderLoader() : this.renderItems();
59
59
  }
60
60
  }
61
61
  _defineProperty(Items, "defaultProps", {
@@ -28,7 +28,8 @@ export default class LoaderItem extends Component {
28
28
  }
29
29
  render() {
30
30
  const {
31
- depth
31
+ depth,
32
+ loadingLabel
32
33
  } = this.props;
33
34
  const {
34
35
  phase
@@ -40,7 +41,8 @@ export default class LoaderItem extends Component {
40
41
  isRoot: depth === 1
41
42
  }, /*#__PURE__*/React.createElement(Spinner, {
42
43
  size: "small",
43
- testId: "table-tree-spinner"
44
+ testId: "table-tree-spinner",
45
+ label: loadingLabel
44
46
  })))) : null;
45
47
  }
46
48
  }
@@ -7,7 +7,7 @@ export const iconColor = `var(--ds-text, ${N800})`;
7
7
  export const indentBase = "var(--ds-space-300, 25px)";
8
8
  const treeRowContainerStyles = css({
9
9
  display: 'flex',
10
- borderBottom: `1px solid ${`var(--ds-border, ${N30})`}`
10
+ borderBlockEnd: `1px solid ${`var(--ds-border, ${N30})`}`
11
11
  });
12
12
 
13
13
  /**
@@ -16,16 +16,15 @@ const treeRowContainerStyles = css({
16
16
  export const TreeRowContainer = props =>
17
17
  // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
18
18
  jsx("div", _extends({
19
+ role: "row",
19
20
  css: treeRowContainerStyles
20
21
  }, props));
21
22
  const commonChevronContainerStyles = css({
22
23
  display: 'flex',
23
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
24
- marginLeft: `calc(${indentBase} * -1)`,
25
24
  position: 'absolute',
26
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
27
- top: 7,
28
- alignItems: 'center'
25
+ alignItems: 'center',
26
+ insetBlockStart: 7,
27
+ marginInlineStart: `calc(${indentBase} * -1)`
29
28
  });
30
29
  /**
31
30
  * __Chevron container__
@@ -40,7 +39,7 @@ export const ChevronContainer = (props
40
39
  const chevronIconContainerStyles = css({
41
40
  position: 'relative',
42
41
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
43
- top: 1
42
+ insetBlockStart: 1
44
43
  });
45
44
 
46
45
  /**
@@ -56,11 +55,11 @@ export const ChevronIconContainer = (props
56
55
  const loadingItemContainerStyles = css({
57
56
  width: '100%',
58
57
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
59
- paddingTop: 5
58
+ paddingBlockStart: 5
60
59
  });
61
60
  const paddingLeftStyles = css({
62
61
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
63
- paddingLeft: '50%'
62
+ paddingInlineStart: '50%'
64
63
  });
65
64
  /**
66
65
  * __Loader item container__
@@ -12,7 +12,7 @@ const treeRowClickableStyles = css({
12
12
  cursor: 'pointer'
13
13
  });
14
14
  const packageName = "@atlaskit/table-tree";
15
- const packageVersion = "9.6.9";
15
+ const packageVersion = "9.6.11";
16
16
  class Row extends Component {
17
17
  constructor(...args) {
18
18
  super(...args);
@@ -131,7 +131,6 @@ class Row extends Component {
131
131
  ariaAttrs['aria-level'] = depth;
132
132
  }
133
133
  return jsx(Fragment, null, jsx(TreeRowContainer, _extends({
134
- role: "row",
135
134
  css: hasChildren && shouldExpandOnClick ? treeRowClickableStyles : undefined,
136
135
  onClick: hasChildren && shouldExpandOnClick ? this.onClickHandler : undefined
137
136
  }, ariaAttrs), React.Children.map(this.props.children, (cell, index) => this.renderCell(cell, index))), hasChildren && isExpanded && renderChildren && renderChildren());
@@ -4,10 +4,14 @@ export default class Rows extends Component {
4
4
  render() {
5
5
  const {
6
6
  items,
7
- render
7
+ render,
8
+ loadingLabel = 'Loading'
8
9
  } = this.props;
9
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Items, {
10
+ return /*#__PURE__*/React.createElement("div", {
11
+ role: "rowgroup"
12
+ }, /*#__PURE__*/React.createElement(Items, {
10
13
  items: items,
14
+ loadingLabel: loadingLabel,
11
15
  render: render
12
16
  }));
13
17
  }
@@ -30,19 +30,13 @@ var Cell = /*#__PURE__*/function (_Component) {
30
30
  width = _this$props.width,
31
31
  className = _this$props.className,
32
32
  props = _objectWithoutProperties(_this$props, _excluded);
33
- return (
34
- /*#__PURE__*/
35
- // TODO: Determine whether proper `td` elements can be used instead of
36
- // roles (DSP-11588)
37
- React.createElement(CommonCell, _extends({
38
- role: "gridcell",
39
- indent: indentLevel ? "calc(".concat(indentBase, " * ").concat(indentLevel, ")") : undefined,
40
- width: width,
41
- className: className
42
- }, props), /*#__PURE__*/React.createElement(OverflowContainer, {
43
- isSingleLine: singleLine
44
- }, children))
45
- );
33
+ return /*#__PURE__*/React.createElement(CommonCell, _extends({
34
+ indent: indentLevel ? "calc(".concat(indentBase, " * ").concat(indentLevel, ")") : undefined,
35
+ width: width,
36
+ className: className
37
+ }, props), /*#__PURE__*/React.createElement(OverflowContainer, {
38
+ isSingleLine: singleLine
39
+ }, children));
46
40
  }
47
41
  }]);
48
42
  return Cell;
@@ -23,7 +23,10 @@ var CommonCell = function CommonCell(_ref) {
23
23
  var indent = _ref.indent,
24
24
  width = _ref.width,
25
25
  props = _objectWithoutProperties(_ref, _excluded);
26
- return jsx("div", _extends({}, props, {
26
+ return jsx("div", _extends({
27
+ role: "gridcell"
28
+ // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
29
+ }, props, {
27
30
  style: {
28
31
  '--indent': indent,
29
32
  width: width
@@ -26,7 +26,8 @@ var Item = /*#__PURE__*/function (_Component) {
26
26
  var _this$props = this.props,
27
27
  depth = _this$props.depth,
28
28
  data = _this$props.data,
29
- render = _this$props.render;
29
+ render = _this$props.render,
30
+ loadingLabel = _this$props.loadingLabel;
30
31
  var renderedRow = render(data);
31
32
  if (!renderedRow) {
32
33
  return null;
@@ -37,6 +38,7 @@ var Item = /*#__PURE__*/function (_Component) {
37
38
  return /*#__PURE__*/cloneElement(renderedRow, {
38
39
  depth: depth,
39
40
  data: data,
41
+ loadingLabel: loadingLabel,
40
42
  renderChildren: function renderChildren() {
41
43
  return jsx("div", {
42
44
  id: toItemId(itemId)
@@ -44,7 +46,8 @@ var Item = /*#__PURE__*/function (_Component) {
44
46
  parentData: data,
45
47
  depth: depth,
46
48
  items: items,
47
- render: render
49
+ render: render,
50
+ loadingLabel: loadingLabel
48
51
  }));
49
52
  }
50
53
  });
@@ -36,11 +36,13 @@ var Items = /*#__PURE__*/function (_Component) {
36
36
  value: function renderLoader() {
37
37
  var _this$props = this.props,
38
38
  depth = _this$props.depth,
39
- items = _this$props.items;
39
+ items = _this$props.items,
40
+ loadingLabel = _this$props.loadingLabel;
40
41
  return /*#__PURE__*/React.createElement(LoaderItem, {
41
42
  isCompleting: !!(items && items.length),
42
43
  onComplete: this.handleLoaderComplete,
43
- depth: depth + 1
44
+ depth: depth + 1,
45
+ loadingLabel: loadingLabel
44
46
  });
45
47
  }
46
48
  }, {
@@ -49,6 +51,7 @@ var Items = /*#__PURE__*/function (_Component) {
49
51
  var _this$props2 = this.props,
50
52
  render = _this$props2.render,
51
53
  items = _this$props2.items,
54
+ loadingLabel = _this$props2.loadingLabel,
52
55
  _this$props2$depth = _this$props2.depth,
53
56
  depth = _this$props2$depth === void 0 ? 0 : _this$props2$depth;
54
57
  return items && items.map(function (itemData, index) {
@@ -56,7 +59,8 @@ var Items = /*#__PURE__*/function (_Component) {
56
59
  data: itemData,
57
60
  depth: depth + 1,
58
61
  key: itemData && itemData.id || index,
59
- render: render
62
+ render: render,
63
+ loadingLabel: loadingLabel
60
64
  });
61
65
  });
62
66
  }
@@ -64,11 +68,7 @@ var Items = /*#__PURE__*/function (_Component) {
64
68
  key: "render",
65
69
  value: function render() {
66
70
  var isLoaderShown = this.state.isLoaderShown;
67
- var busyAttrs = isLoaderShown ? {
68
- 'aria-busy': true,
69
- 'aria-live': 'polite'
70
- } : {};
71
- return /*#__PURE__*/React.createElement("div", busyAttrs, isLoaderShown ? this.renderLoader() : this.renderItems());
71
+ return isLoaderShown ? this.renderLoader() : this.renderItems();
72
72
  }
73
73
  }], [{
74
74
  key: "getDerivedStateFromProps",
@@ -39,7 +39,9 @@ var LoaderItem = /*#__PURE__*/function (_Component) {
39
39
  }, {
40
40
  key: "render",
41
41
  value: function render() {
42
- var depth = this.props.depth;
42
+ var _this$props = this.props,
43
+ depth = _this$props.depth,
44
+ loadingLabel = _this$props.loadingLabel;
43
45
  var phase = this.state.phase;
44
46
  return phase === 'loading' ? /*#__PURE__*/React.createElement(TreeRowContainer, null, /*#__PURE__*/React.createElement(CommonCell, {
45
47
  indent: "calc(".concat(indentBase, " * ").concat(depth, ")"),
@@ -48,7 +50,8 @@ var LoaderItem = /*#__PURE__*/function (_Component) {
48
50
  isRoot: depth === 1
49
51
  }, /*#__PURE__*/React.createElement(Spinner, {
50
52
  size: "small",
51
- testId: "table-tree-spinner"
53
+ testId: "table-tree-spinner",
54
+ label: loadingLabel
52
55
  })))) : null;
53
56
  }
54
57
  }], [{
@@ -9,7 +9,7 @@ export var iconColor = "var(--ds-text, ".concat(N800, ")");
9
9
  export var indentBase = "var(--ds-space-300, 25px)";
10
10
  var treeRowContainerStyles = css({
11
11
  display: 'flex',
12
- borderBottom: "1px solid ".concat("var(--ds-border, ".concat(N30, ")"))
12
+ borderBlockEnd: "1px solid ".concat("var(--ds-border, ".concat(N30, ")"))
13
13
  });
14
14
 
15
15
  /**
@@ -19,18 +19,17 @@ export var TreeRowContainer = function TreeRowContainer(props) {
19
19
  return (
20
20
  // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
21
21
  jsx("div", _extends({
22
+ role: "row",
22
23
  css: treeRowContainerStyles
23
24
  }, props))
24
25
  );
25
26
  };
26
27
  var commonChevronContainerStyles = css({
27
28
  display: 'flex',
28
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
29
- marginLeft: "calc(".concat(indentBase, " * -1)"),
30
29
  position: 'absolute',
31
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
32
- top: 7,
33
- alignItems: 'center'
30
+ alignItems: 'center',
31
+ insetBlockStart: 7,
32
+ marginInlineStart: "calc(".concat(indentBase, " * -1)")
34
33
  });
35
34
  /**
36
35
  * __Chevron container__
@@ -47,7 +46,7 @@ export var ChevronContainer = function ChevronContainer(props
47
46
  var chevronIconContainerStyles = css({
48
47
  position: 'relative',
49
48
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
50
- top: 1
49
+ insetBlockStart: 1
51
50
  });
52
51
 
53
52
  /**
@@ -65,11 +64,11 @@ export var ChevronIconContainer = function ChevronIconContainer(props
65
64
  var loadingItemContainerStyles = css({
66
65
  width: '100%',
67
66
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
68
- paddingTop: 5
67
+ paddingBlockStart: 5
69
68
  });
70
69
  var paddingLeftStyles = css({
71
70
  // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
72
- paddingLeft: '50%'
71
+ paddingInlineStart: '50%'
73
72
  });
74
73
  /**
75
74
  * __Loader item container__
@@ -20,7 +20,7 @@ var treeRowClickableStyles = css({
20
20
  cursor: 'pointer'
21
21
  });
22
22
  var packageName = "@atlaskit/table-tree";
23
- var packageVersion = "9.6.9";
23
+ var packageVersion = "9.6.11";
24
24
  var Row = /*#__PURE__*/function (_Component) {
25
25
  _inherits(Row, _Component);
26
26
  var _super = _createSuper(Row);
@@ -148,7 +148,6 @@ var Row = /*#__PURE__*/function (_Component) {
148
148
  ariaAttrs['aria-level'] = depth;
149
149
  }
150
150
  return jsx(Fragment, null, jsx(TreeRowContainer, _extends({
151
- role: "row",
152
151
  css: hasChildren && shouldExpandOnClick ? treeRowClickableStyles : undefined,
153
152
  onClick: hasChildren && shouldExpandOnClick ? this.onClickHandler : undefined
154
153
  }, ariaAttrs), React.Children.map(this.props.children, function (cell, index) {
@@ -19,9 +19,14 @@ var Rows = /*#__PURE__*/function (_Component) {
19
19
  value: function render() {
20
20
  var _this$props = this.props,
21
21
  items = _this$props.items,
22
- render = _this$props.render;
23
- return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Items, {
22
+ render = _this$props.render,
23
+ _this$props$loadingLa = _this$props.loadingLabel,
24
+ loadingLabel = _this$props$loadingLa === void 0 ? 'Loading' : _this$props$loadingLa;
25
+ return /*#__PURE__*/React.createElement("div", {
26
+ role: "rowgroup"
27
+ }, /*#__PURE__*/React.createElement(Items, {
24
28
  items: items,
29
+ loadingLabel: loadingLabel,
25
30
  render: render
26
31
  }));
27
32
  }
@@ -8,6 +8,7 @@ export default class Item extends Component<any> {
8
8
  render(): import("react").FunctionComponentElement<{
9
9
  depth: any;
10
10
  data: any;
11
+ loadingLabel: any;
11
12
  renderChildren: () => jsx.JSX.Element;
12
13
  }> | null;
13
14
  }
@@ -3,6 +3,7 @@ interface ItemsProps<Item = any> {
3
3
  parentData?: any;
4
4
  depth: number;
5
5
  items?: Item[];
6
+ loadingLabel?: string;
6
7
  render: (arg: Item) => React.ReactNode;
7
8
  }
8
9
  interface State {
@@ -19,6 +20,6 @@ export default class Items<Item> extends Component<ItemsProps<Item>, State> {
19
20
  handleLoaderComplete: () => void;
20
21
  renderLoader(): JSX.Element;
21
22
  renderItems(): JSX.Element[] | undefined;
22
- render(): JSX.Element;
23
+ render(): JSX.Element | JSX.Element[] | undefined;
23
24
  }
24
25
  export {};
@@ -3,6 +3,7 @@ interface LoaderItemProps {
3
3
  depth: number;
4
4
  onComplete: (...args: any[]) => void;
5
5
  isCompleting?: boolean;
6
+ loadingLabel?: string;
6
7
  }
7
8
  export default class LoaderItem extends Component<LoaderItemProps, any> {
8
9
  static defaultProps: {
@@ -5,6 +5,7 @@ type WithChildren<T> = T & {
5
5
  export interface RowsProps<T> {
6
6
  items?: WithChildren<T>[];
7
7
  render: (args: WithChildren<T>) => React.ReactNode;
8
+ loadingLabel?: string;
8
9
  }
9
10
  export default class Rows<T> extends Component<RowsProps<T>> {
10
11
  render(): JSX.Element;
@@ -8,6 +8,7 @@ export default class Item extends Component<any> {
8
8
  render(): import("react").FunctionComponentElement<{
9
9
  depth: any;
10
10
  data: any;
11
+ loadingLabel: any;
11
12
  renderChildren: () => jsx.JSX.Element;
12
13
  }> | null;
13
14
  }
@@ -3,6 +3,7 @@ interface ItemsProps<Item = any> {
3
3
  parentData?: any;
4
4
  depth: number;
5
5
  items?: Item[];
6
+ loadingLabel?: string;
6
7
  render: (arg: Item) => React.ReactNode;
7
8
  }
8
9
  interface State {
@@ -19,6 +20,6 @@ export default class Items<Item> extends Component<ItemsProps<Item>, State> {
19
20
  handleLoaderComplete: () => void;
20
21
  renderLoader(): JSX.Element;
21
22
  renderItems(): JSX.Element[] | undefined;
22
- render(): JSX.Element;
23
+ render(): JSX.Element | JSX.Element[] | undefined;
23
24
  }
24
25
  export {};
@@ -3,6 +3,7 @@ interface LoaderItemProps {
3
3
  depth: number;
4
4
  onComplete: (...args: any[]) => void;
5
5
  isCompleting?: boolean;
6
+ loadingLabel?: string;
6
7
  }
7
8
  export default class LoaderItem extends Component<LoaderItemProps, any> {
8
9
  static defaultProps: {
@@ -5,6 +5,7 @@ type WithChildren<T> = T & {
5
5
  export interface RowsProps<T> {
6
6
  items?: WithChildren<T>[];
7
7
  render: (args: WithChildren<T>) => React.ReactNode;
8
+ loadingLabel?: string;
8
9
  }
9
10
  export default class Rows<T> extends Component<RowsProps<T>> {
10
11
  render(): JSX.Element;
@@ -18,6 +18,11 @@ type RowsProps = {
18
18
  */
19
19
  // eslint-disable-next-line @repo/internal/react/consistent-props-definitions
20
20
  items?: Item[] | null;
21
+ /**
22
+ * Accessible name for loading states spinner. Can be used for internationalization.
23
+ * Default is "Loading".
24
+ */
25
+ loadingLabel?: string | null;
21
26
  /**
22
27
  * Render function for child rows. Render props will contain an item from the
23
28
  * `items` prop above.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/table-tree",
3
- "version": "9.6.9",
3
+ "version": "9.6.11",
4
4
  "description": "A table tree is an expandable table for showing nested hierarchies of information.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -17,6 +17,9 @@
17
17
  "atlassian": {
18
18
  "team": "Design System Team",
19
19
  "releaseModel": "continuous",
20
+ "productPushConsumption": [
21
+ "jira"
22
+ ],
20
23
  "website": {
21
24
  "name": "Table tree",
22
25
  "category": "Components"
@@ -24,11 +27,11 @@
24
27
  },
25
28
  "dependencies": {
26
29
  "@atlaskit/analytics-next": "^9.1.0",
27
- "@atlaskit/button": "^17.0.0",
30
+ "@atlaskit/button": "^17.2.0",
28
31
  "@atlaskit/icon": "^22.0.0",
29
32
  "@atlaskit/spinner": "^16.0.0",
30
33
  "@atlaskit/theme": "^12.6.0",
31
- "@atlaskit/tokens": "^1.30.0",
34
+ "@atlaskit/tokens": "^1.33.0",
32
35
  "@babel/runtime": "^7.0.0",
33
36
  "@emotion/react": "^11.7.1",
34
37
  "lodash": "^4.17.21"