@atlaskit/table-tree 9.5.0 → 9.6.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.
Files changed (39) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/components/cell.js +13 -8
  3. package/dist/cjs/components/header.js +11 -7
  4. package/dist/cjs/components/headers.js +17 -13
  5. package/dist/cjs/components/internal/items.js +1 -4
  6. package/dist/cjs/components/internal/styled.js +5 -5
  7. package/dist/cjs/components/internal/with-column-width.js +23 -49
  8. package/dist/cjs/components/row.js +2 -2
  9. package/dist/cjs/components/table-tree.js +21 -19
  10. package/dist/cjs/version.json +1 -1
  11. package/dist/es2019/components/cell.js +13 -8
  12. package/dist/es2019/components/header.js +11 -7
  13. package/dist/es2019/components/headers.js +14 -10
  14. package/dist/es2019/components/internal/items.js +1 -4
  15. package/dist/es2019/components/internal/styled.js +5 -5
  16. package/dist/es2019/components/internal/with-column-width.js +27 -29
  17. package/dist/es2019/components/row.js +2 -2
  18. package/dist/es2019/components/table-tree.js +18 -17
  19. package/dist/es2019/version.json +1 -1
  20. package/dist/esm/components/cell.js +13 -8
  21. package/dist/esm/components/header.js +11 -7
  22. package/dist/esm/components/headers.js +17 -13
  23. package/dist/esm/components/internal/items.js +1 -4
  24. package/dist/esm/components/internal/styled.js +5 -5
  25. package/dist/esm/components/internal/with-column-width.js +24 -51
  26. package/dist/esm/components/row.js +2 -2
  27. package/dist/esm/components/table-tree.js +19 -18
  28. package/dist/esm/version.json +1 -1
  29. package/dist/types/components/cell.d.ts +6 -59
  30. package/dist/types/components/header.d.ts +1 -58
  31. package/dist/types/components/internal/with-column-width.d.ts +2 -60
  32. package/dist/types/components/table-tree.d.ts +15 -15
  33. package/dist/types-ts4.5/components/cell.d.ts +6 -59
  34. package/dist/types-ts4.5/components/header.d.ts +1 -58
  35. package/dist/types-ts4.5/components/internal/with-column-width.d.ts +2 -60
  36. package/dist/types-ts4.5/components/table-tree.d.ts +15 -15
  37. package/package.json +19 -22
  38. package/report.api.md +9 -268
  39. package/tmp/api-report-tmp.d.ts +109 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/table-tree
2
2
 
3
+ ## 9.6.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`fbce2074415`](https://bitbucket.org/atlassian/atlassian-frontend/commits/fbce2074415) - Fix issues with inappropriate roles and `aria-controls` application.
8
+
9
+ ## 9.6.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`60b048eae5d`](https://bitbucket.org/atlassian/atlassian-frontend/commits/60b048eae5d) - Replaced legacy context with useContext for handling column widths
14
+
3
15
  ## 9.5.0
4
16
 
5
17
  ### Minor Changes
@@ -40,14 +40,19 @@ 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 /*#__PURE__*/_react.default.createElement(_commonCell.default, (0, _extends2.default)({
44
- role: "gridcell",
45
- indent: indentLevel ? "calc(".concat(_styled.indentBase, " * ").concat(indentLevel, ")") : undefined,
46
- width: width,
47
- className: className
48
- }, props), /*#__PURE__*/_react.default.createElement(_overflowContainer.default, {
49
- isSingleLine: singleLine
50
- }, children));
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
+ );
51
56
  }
52
57
  }]);
53
58
  return Cell;
@@ -36,13 +36,17 @@ var Header = /*#__PURE__*/function (_Component) {
36
36
  key: "render",
37
37
  value: function render() {
38
38
  var props = this.props;
39
- return (0, _react2.jsx)(_commonCell.default, (0, _extends2.default)({
40
- css: headerStyles,
41
- role: "columnheader",
42
- style: {
43
- width: props.width
44
- }
45
- }, props), props.children);
39
+ return (
40
+ // TODO: Determine whether proper `th` elements can be used instead of
41
+ // roles (DSP-11588)
42
+ (0, _react2.jsx)(_commonCell.default, (0, _extends2.default)({
43
+ css: headerStyles,
44
+ role: "columnheader",
45
+ style: {
46
+ width: props.width
47
+ }
48
+ }, props), props.children)
49
+ );
46
50
  }
47
51
  }]);
48
52
  return Header;
@@ -28,19 +28,23 @@ var Headers = /*#__PURE__*/function (_Component) {
28
28
  (0, _createClass2.default)(Headers, [{
29
29
  key: "render",
30
30
  value: function render() {
31
- return (0, _react2.jsx)("div", {
32
- css: containerStyles,
33
- role: "row"
34
- }, _react.Children.map(this.props.children, function (header, index) {
35
- return (
36
- /*#__PURE__*/
37
- // eslint-disable-next-line react/no-array-index-key
38
- (0, _react.cloneElement)(header, {
39
- key: index,
40
- columnIndex: index
41
- })
42
- );
43
- }));
31
+ return (
32
+ // TODO: Determine whether proper `tr` elements can be used instead of
33
+ // roles (DSP-11588)
34
+ (0, _react2.jsx)("div", {
35
+ css: containerStyles,
36
+ role: "row"
37
+ }, _react.Children.map(this.props.children, function (header, index) {
38
+ return (
39
+ /*#__PURE__*/
40
+ // eslint-disable-next-line react/no-array-index-key
41
+ (0, _react.cloneElement)(header, {
42
+ key: index,
43
+ columnIndex: index
44
+ })
45
+ );
46
+ }))
47
+ );
44
48
  }
45
49
  }]);
46
50
  return Headers;
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
11
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
@@ -78,9 +77,7 @@ var Items = /*#__PURE__*/function (_Component) {
78
77
  'aria-busy': true,
79
78
  'aria-live': 'polite'
80
79
  } : {};
81
- return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
82
- role: "rowgroup"
83
- }, busyAttrs), isLoaderShown ? this.renderLoader() : this.renderItems());
80
+ return /*#__PURE__*/_react.default.createElement("div", busyAttrs, isLoaderShown ? this.renderLoader() : this.renderItems());
84
81
  }
85
82
  }], [{
86
83
  key: "getDerivedStateFromProps",
@@ -34,10 +34,10 @@ var TreeRowContainer = function TreeRowContainer(props) {
34
34
  exports.TreeRowContainer = TreeRowContainer;
35
35
  var commonChevronContainerStyles = (0, _react.css)({
36
36
  display: 'flex',
37
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
37
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
38
38
  marginLeft: "calc(".concat(indentBase, " * -1)"),
39
39
  position: 'absolute',
40
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
40
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
41
41
  top: 7,
42
42
  alignItems: 'center'
43
43
  });
@@ -56,7 +56,7 @@ var ChevronContainer = function ChevronContainer(props
56
56
  exports.ChevronContainer = ChevronContainer;
57
57
  var chevronIconContainerStyles = (0, _react.css)({
58
58
  position: 'relative',
59
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
59
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
60
60
  top: 1
61
61
  });
62
62
 
@@ -75,11 +75,11 @@ var ChevronIconContainer = function ChevronIconContainer(props
75
75
  exports.ChevronIconContainer = ChevronIconContainer;
76
76
  var loadingItemContainerStyles = (0, _react.css)({
77
77
  width: '100%',
78
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
78
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
79
79
  paddingTop: 5
80
80
  });
81
81
  var paddingLeftStyles = (0, _react.css)({
82
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
82
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
83
83
  paddingLeft: '50%'
84
84
  });
85
85
  /**
@@ -8,60 +8,34 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = withColumnWidth;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
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 _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
11
  var _react = _interopRequireWildcard(require("react"));
18
- var _propTypes = _interopRequireDefault(require("prop-types"));
12
+ var _tableTree = require("../table-tree");
19
13
  var _excluded = ["width", "columnIndex"];
20
14
  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); }
21
15
  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; }
22
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
23
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* eslint-disable react/prop-types */
24
16
  function withColumnWidth(Cell) {
25
- var _class;
26
- return _class = /*#__PURE__*/function (_Component) {
27
- (0, _inherits2.default)(CellWithColumnWidth, _Component);
28
- var _super = _createSuper(CellWithColumnWidth);
29
- function CellWithColumnWidth() {
30
- (0, _classCallCheck2.default)(this, CellWithColumnWidth);
31
- return _super.apply(this, arguments);
32
- }
33
- (0, _createClass2.default)(CellWithColumnWidth, [{
34
- key: "UNSAFE_componentWillMount",
35
- value: function UNSAFE_componentWillMount() {
36
- this.setColumnWidth(this.props.width);
37
- }
38
- }, {
39
- key: "setColumnWidth",
40
- value: function setColumnWidth(width) {
41
- if (width !== undefined) {
42
- this.context.tableTree.setColumnWidth(this.props.columnIndex, width);
43
- }
17
+ return function (props) {
18
+ var _useContext = (0, _react.useContext)(_tableTree.TableTreeContext),
19
+ setColumnWidth = _useContext.setColumnWidth,
20
+ getColumnWidth = _useContext.getColumnWidth;
21
+ var width = props.width,
22
+ columnIndex = props.columnIndex,
23
+ other = (0, _objectWithoutProperties2.default)(props, _excluded);
24
+ (0, _react.useEffect)(function () {
25
+ if (width !== undefined && columnIndex !== undefined) {
26
+ setColumnWidth(columnIndex, width);
44
27
  }
45
- }, {
46
- key: "UNSAFE_componentWillReceiveProps",
47
- value: function UNSAFE_componentWillReceiveProps(nextProps) {
48
- this.setColumnWidth(nextProps.width);
28
+ }, [width, columnIndex, setColumnWidth]);
29
+ var columnWidth;
30
+ if (width !== null && width !== undefined) {
31
+ columnWidth = width;
32
+ } else {
33
+ if (columnIndex !== undefined) {
34
+ columnWidth = getColumnWidth(columnIndex);
49
35
  }
50
- }, {
51
- key: "render",
52
- value: function render() {
53
- var _this$props = this.props,
54
- width = _this$props.width,
55
- columnIndex = _this$props.columnIndex,
56
- other = (0, _objectWithoutProperties2.default)(_this$props, _excluded);
57
- var columnWidth = width !== null && width !== undefined ? width : this.context.tableTree.getColumnWidth(columnIndex);
58
- return /*#__PURE__*/_react.default.createElement(Cell, (0, _extends2.default)({
59
- width: columnWidth
60
- }, other));
61
- }
62
- }]);
63
- return CellWithColumnWidth;
64
- }(_react.Component), (0, _defineProperty2.default)(_class, "contextTypes", {
65
- tableTree: _propTypes.default.object.isRequired
66
- }), _class;
36
+ }
37
+ return /*#__PURE__*/_react.default.createElement(Cell, (0, _extends2.default)({
38
+ width: columnWidth
39
+ }, other));
40
+ };
67
41
  }
@@ -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.5.0";
31
+ var packageVersion = "9.6.1";
32
32
  var Row = /*#__PURE__*/function (_Component) {
33
33
  (0, _inherits2.default)(Row, _Component);
34
34
  var _super = _createSuper(Row);
@@ -128,7 +128,7 @@ var Row = /*#__PURE__*/function (_Component) {
128
128
  extendedLabel: extendedLabel,
129
129
  isExpanded: isExpanded,
130
130
  onExpandToggle: this.onExpandToggle,
131
- ariaControls: (0, _toItemId.default)(props.itemId),
131
+ ariaControls: isExpanded ? (0, _toItemId.default)(props.itemId) : undefined,
132
132
  rowId: props.itemId
133
133
  })].concat(cellContent);
134
134
  }
@@ -5,7 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.default = void 0;
8
+ exports.default = exports.TableTreeContext = void 0;
9
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
11
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
@@ -14,7 +14,6 @@ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime
14
14
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
16
  var _react = _interopRequireWildcard(require("react"));
17
- var _propTypes = _interopRequireDefault(require("prop-types"));
18
17
  var _cell = _interopRequireDefault(require("./cell"));
19
18
  var _header = _interopRequireDefault(require("./header"));
20
19
  var _headers = _interopRequireDefault(require("./headers"));
@@ -24,6 +23,18 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
24
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
24
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
26
25
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } /* eslint-disable react/prop-types */
26
+ /**
27
+ *
28
+ * Context provider which maintains the column widths and access methods for use in descendent table cells
29
+ * Enables composed table-tree implementations to e.g. set width on header cells only
30
+ */
31
+ var TableTreeContext = /*#__PURE__*/(0, _react.createContext)({
32
+ setColumnWidth: function setColumnWidth() {},
33
+ getColumnWidth: function getColumnWidth() {
34
+ return null;
35
+ }
36
+ });
37
+ exports.TableTreeContext = TableTreeContext;
27
38
  var TableTree = /*#__PURE__*/function (_Component) {
28
39
  (0, _inherits2.default)(TableTree, _Component);
29
40
  var _super = _createSuper(TableTree);
@@ -62,17 +73,6 @@ var TableTree = /*#__PURE__*/function (_Component) {
62
73
  }); // eslint-disable-line
63
74
  }
64
75
  }
65
- }, {
66
- key: "getChildContext",
67
- value: function getChildContext() {
68
- return {
69
- tableTree: {
70
- columnWidths: this.state.columnWidths,
71
- setColumnWidth: this.setColumnWidth,
72
- getColumnWidth: this.getColumnWidth
73
- }
74
- };
75
- }
76
76
  }, {
77
77
  key: "render",
78
78
  value: function render() {
@@ -122,15 +122,17 @@ var TableTree = /*#__PURE__*/function (_Component) {
122
122
  }
123
123
  });
124
124
  }
125
- return /*#__PURE__*/_react.default.createElement("div", {
125
+ return /*#__PURE__*/_react.default.createElement(TableTreeContext.Provider, {
126
+ value: {
127
+ setColumnWidth: this.setColumnWidth,
128
+ getColumnWidth: this.getColumnWidth
129
+ }
130
+ }, /*#__PURE__*/_react.default.createElement("div", {
126
131
  role: "treegrid",
127
132
  "aria-readonly": true
128
- }, heads, rows, this.props.children);
133
+ }, heads, rows, this.props.children));
129
134
  }
130
135
  }]);
131
136
  return TableTree;
132
137
  }(_react.Component);
133
- exports.default = TableTree;
134
- (0, _defineProperty2.default)(TableTree, "childContextTypes", {
135
- tableTree: _propTypes.default.object.isRequired
136
- });
138
+ exports.default = TableTree;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/table-tree",
3
- "version": "9.5.0",
3
+ "version": "9.6.1",
4
4
  "sideEffects": false
5
5
  }
@@ -14,14 +14,19 @@ class Cell extends Component {
14
14
  className,
15
15
  ...props
16
16
  } = this.props;
17
- return /*#__PURE__*/React.createElement(CommonCell, _extends({
18
- role: "gridcell",
19
- indent: indentLevel ? `calc(${indentBase} * ${indentLevel})` : undefined,
20
- width: width,
21
- className: className
22
- }, props), /*#__PURE__*/React.createElement(OverflowContainer, {
23
- isSingleLine: singleLine
24
- }, children));
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
+ );
25
30
  }
26
31
  }
27
32
  export default withColumnWidth(Cell);
@@ -17,13 +17,17 @@ class Header extends Component {
17
17
  const {
18
18
  props
19
19
  } = this;
20
- return jsx(ColumnCell, _extends({
21
- css: headerStyles,
22
- role: "columnheader",
23
- style: {
24
- width: props.width
25
- }
26
- }, props), props.children);
20
+ return (
21
+ // TODO: Determine whether proper `th` elements can be used instead of
22
+ // roles (DSP-11588)
23
+ jsx(ColumnCell, _extends({
24
+ css: headerStyles,
25
+ role: "columnheader",
26
+ style: {
27
+ width: props.width
28
+ }
29
+ }, props), props.children)
30
+ );
27
31
  }
28
32
  }
29
33
  export default withColumnWidth(Header);
@@ -8,15 +8,19 @@ const containerStyles = css({
8
8
  });
9
9
  export default class Headers extends Component {
10
10
  render() {
11
- return jsx("div", {
12
- css: containerStyles,
13
- role: "row"
14
- }, Children.map(this.props.children, (header, index) =>
15
- /*#__PURE__*/
16
- // eslint-disable-next-line react/no-array-index-key
17
- cloneElement(header, {
18
- key: index,
19
- columnIndex: index
20
- })));
11
+ return (
12
+ // TODO: Determine whether proper `tr` elements can be used instead of
13
+ // roles (DSP-11588)
14
+ jsx("div", {
15
+ css: containerStyles,
16
+ role: "row"
17
+ }, Children.map(this.props.children, (header, index) =>
18
+ /*#__PURE__*/
19
+ // eslint-disable-next-line react/no-array-index-key
20
+ cloneElement(header, {
21
+ key: index,
22
+ columnIndex: index
23
+ })))
24
+ );
21
25
  }
22
26
  }
@@ -1,4 +1,3 @@
1
- import _extends from "@babel/runtime/helpers/extends";
2
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
2
  /* eslint-disable react/prop-types */
4
3
  import React, { Component } from 'react';
@@ -56,9 +55,7 @@ export default class Items extends Component {
56
55
  'aria-busy': true,
57
56
  'aria-live': 'polite'
58
57
  } : {};
59
- return /*#__PURE__*/React.createElement("div", _extends({
60
- role: "rowgroup"
61
- }, busyAttrs), isLoaderShown ? this.renderLoader() : this.renderItems());
58
+ return /*#__PURE__*/React.createElement("div", busyAttrs, isLoaderShown ? this.renderLoader() : this.renderItems());
62
59
  }
63
60
  }
64
61
  _defineProperty(Items, "defaultProps", {
@@ -20,10 +20,10 @@ jsx("div", _extends({
20
20
  }, props));
21
21
  const commonChevronContainerStyles = css({
22
22
  display: 'flex',
23
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
23
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
24
24
  marginLeft: `calc(${indentBase} * -1)`,
25
25
  position: 'absolute',
26
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
26
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
27
27
  top: 7,
28
28
  alignItems: 'center'
29
29
  });
@@ -39,7 +39,7 @@ export const ChevronContainer = (props
39
39
  }));
40
40
  const chevronIconContainerStyles = css({
41
41
  position: 'relative',
42
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
42
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
43
43
  top: 1
44
44
  });
45
45
 
@@ -55,11 +55,11 @@ export const ChevronIconContainer = (props
55
55
  }));
56
56
  const loadingItemContainerStyles = css({
57
57
  width: '100%',
58
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
58
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
59
59
  paddingTop: 5
60
60
  });
61
61
  const paddingLeftStyles = css({
62
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
62
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage
63
63
  paddingLeft: '50%'
64
64
  });
65
65
  /**
@@ -1,34 +1,32 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
- /* eslint-disable react/prop-types */
4
- import React, { Component } from 'react';
5
- import PropTypes from 'prop-types';
2
+ import React, { useContext, useEffect } from 'react';
3
+ import { TableTreeContext } from '../table-tree';
6
4
  export default function withColumnWidth(Cell) {
7
- var _class;
8
- return _class = class CellWithColumnWidth extends Component {
9
- UNSAFE_componentWillMount() {
10
- this.setColumnWidth(this.props.width);
11
- }
12
- setColumnWidth(width) {
13
- if (width !== undefined) {
14
- this.context.tableTree.setColumnWidth(this.props.columnIndex, width);
5
+ return props => {
6
+ const {
7
+ setColumnWidth,
8
+ getColumnWidth
9
+ } = useContext(TableTreeContext);
10
+ const {
11
+ width,
12
+ columnIndex,
13
+ ...other
14
+ } = props;
15
+ useEffect(() => {
16
+ if (width !== undefined && columnIndex !== undefined) {
17
+ setColumnWidth(columnIndex, width);
18
+ }
19
+ }, [width, columnIndex, setColumnWidth]);
20
+ let columnWidth;
21
+ if (width !== null && width !== undefined) {
22
+ columnWidth = width;
23
+ } else {
24
+ if (columnIndex !== undefined) {
25
+ columnWidth = getColumnWidth(columnIndex);
15
26
  }
16
27
  }
17
- UNSAFE_componentWillReceiveProps(nextProps) {
18
- this.setColumnWidth(nextProps.width);
19
- }
20
- render() {
21
- const {
22
- width,
23
- columnIndex,
24
- ...other
25
- } = this.props;
26
- const columnWidth = width !== null && width !== undefined ? width : this.context.tableTree.getColumnWidth(columnIndex);
27
- return /*#__PURE__*/React.createElement(Cell, _extends({
28
- width: columnWidth
29
- }, other));
30
- }
31
- }, _defineProperty(_class, "contextTypes", {
32
- tableTree: PropTypes.object.isRequired
33
- }), _class;
28
+ return /*#__PURE__*/React.createElement(Cell, _extends({
29
+ width: columnWidth
30
+ }, other));
31
+ };
34
32
  }
@@ -12,7 +12,7 @@ const treeRowClickableStyles = css({
12
12
  cursor: 'pointer'
13
13
  });
14
14
  const packageName = "@atlaskit/table-tree";
15
- const packageVersion = "9.5.0";
15
+ const packageVersion = "9.6.1";
16
16
  class Row extends Component {
17
17
  constructor(...args) {
18
18
  super(...args);
@@ -105,7 +105,7 @@ class Row extends Component {
105
105
  extendedLabel: extendedLabel,
106
106
  isExpanded: isExpanded,
107
107
  onExpandToggle: this.onExpandToggle,
108
- ariaControls: toItemId(props.itemId),
108
+ ariaControls: isExpanded ? toItemId(props.itemId) : undefined,
109
109
  rowId: props.itemId
110
110
  })].concat(cellContent);
111
111
  }
@@ -1,12 +1,20 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  /* eslint-disable react/prop-types */
3
- import React, { Component } from 'react';
4
- import PropTypes from 'prop-types';
3
+ import React, { Component, createContext } from 'react';
5
4
  import Cell from './cell';
6
5
  import Header from './header';
7
6
  import Headers from './headers';
8
7
  import Row from './row';
9
8
  import Rows from './rows';
9
+ /**
10
+ *
11
+ * Context provider which maintains the column widths and access methods for use in descendent table cells
12
+ * Enables composed table-tree implementations to e.g. set width on header cells only
13
+ */
14
+ export const TableTreeContext = /*#__PURE__*/createContext({
15
+ setColumnWidth: () => {},
16
+ getColumnWidth: () => null
17
+ });
10
18
  export default class TableTree extends Component {
11
19
  constructor(...args) {
12
20
  super(...args);
@@ -38,15 +46,6 @@ export default class TableTree extends Component {
38
46
  }
39
47
  }
40
48
 
41
- getChildContext() {
42
- return {
43
- tableTree: {
44
- columnWidths: this.state.columnWidths,
45
- setColumnWidth: this.setColumnWidth,
46
- getColumnWidth: this.getColumnWidth
47
- }
48
- };
49
- }
50
49
  render() {
51
50
  const {
52
51
  items,
@@ -90,12 +89,14 @@ export default class TableTree extends Component {
90
89
  }
91
90
  });
92
91
  }
93
- return /*#__PURE__*/React.createElement("div", {
92
+ return /*#__PURE__*/React.createElement(TableTreeContext.Provider, {
93
+ value: {
94
+ setColumnWidth: this.setColumnWidth,
95
+ getColumnWidth: this.getColumnWidth
96
+ }
97
+ }, /*#__PURE__*/React.createElement("div", {
94
98
  role: "treegrid",
95
99
  "aria-readonly": true
96
- }, heads, rows, this.props.children);
100
+ }, heads, rows, this.props.children));
97
101
  }
98
- }
99
- _defineProperty(TableTree, "childContextTypes", {
100
- tableTree: PropTypes.object.isRequired
101
- });
102
+ }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/table-tree",
3
- "version": "9.5.0",
3
+ "version": "9.6.1",
4
4
  "sideEffects": false
5
5
  }