@atlaskit/table 0.2.7 → 0.3.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/body.js +0 -2
  3. package/dist/cjs/expandable-cell.js +45 -0
  4. package/dist/cjs/expandable-row-content.js +21 -0
  5. package/dist/cjs/expandable-row.js +25 -0
  6. package/dist/cjs/head-cell.js +3 -3
  7. package/dist/cjs/hooks/selection-provider.js +0 -4
  8. package/dist/cjs/hooks/use-expand-content.js +33 -0
  9. package/dist/cjs/hooks/use-expand.js +50 -0
  10. package/dist/cjs/index.js +21 -0
  11. package/dist/cjs/row.js +19 -3
  12. package/dist/cjs/thead.js +2 -7
  13. package/dist/cjs/ui/base-cell.js +21 -14
  14. package/dist/cjs/ui/expand-icon.js +41 -0
  15. package/dist/cjs/ui/expandable-cell.js +28 -0
  16. package/dist/cjs/ui/index.js +14 -0
  17. package/dist/cjs/ui/selectable-cell.js +2 -9
  18. package/dist/cjs/ui/th.js +9 -13
  19. package/dist/cjs/ui/tr.js +6 -2
  20. package/dist/cjs/version.json +1 -1
  21. package/dist/es2019/body.js +0 -2
  22. package/dist/es2019/expandable-cell.js +35 -0
  23. package/dist/es2019/expandable-row-content.js +14 -0
  24. package/dist/es2019/expandable-row.js +18 -0
  25. package/dist/es2019/head-cell.js +3 -3
  26. package/dist/es2019/hooks/selection-provider.js +0 -4
  27. package/dist/es2019/hooks/use-expand-content.js +23 -0
  28. package/dist/es2019/hooks/use-expand.js +32 -0
  29. package/dist/es2019/index.js +3 -0
  30. package/dist/es2019/row.js +21 -3
  31. package/dist/es2019/thead.js +2 -7
  32. package/dist/es2019/ui/base-cell.js +21 -14
  33. package/dist/es2019/ui/expand-icon.js +34 -0
  34. package/dist/es2019/ui/expandable-cell.js +22 -0
  35. package/dist/es2019/ui/index.js +2 -0
  36. package/dist/es2019/ui/selectable-cell.js +2 -8
  37. package/dist/es2019/ui/th.js +1 -4
  38. package/dist/es2019/ui/tr.js +6 -2
  39. package/dist/es2019/version.json +1 -1
  40. package/dist/esm/body.js +0 -2
  41. package/dist/esm/expandable-cell.js +34 -0
  42. package/dist/esm/expandable-row-content.js +13 -0
  43. package/dist/esm/expandable-row.js +17 -0
  44. package/dist/esm/head-cell.js +3 -3
  45. package/dist/esm/hooks/selection-provider.js +0 -4
  46. package/dist/esm/hooks/use-expand-content.js +22 -0
  47. package/dist/esm/hooks/use-expand.js +38 -0
  48. package/dist/esm/index.js +3 -0
  49. package/dist/esm/row.js +19 -3
  50. package/dist/esm/thead.js +2 -7
  51. package/dist/esm/ui/base-cell.js +21 -14
  52. package/dist/esm/ui/expand-icon.js +33 -0
  53. package/dist/esm/ui/expandable-cell.js +21 -0
  54. package/dist/esm/ui/index.js +2 -0
  55. package/dist/esm/ui/selectable-cell.js +2 -9
  56. package/dist/esm/ui/th.js +9 -13
  57. package/dist/esm/ui/tr.js +6 -2
  58. package/dist/esm/version.json +1 -1
  59. package/dist/types/expandable-cell.d.ts +10 -0
  60. package/dist/types/expandable-row-content.d.ts +12 -0
  61. package/dist/types/expandable-row.d.ts +19 -0
  62. package/dist/types/head-cell.d.ts +3 -3
  63. package/dist/types/hooks/selection-provider.d.ts +0 -4
  64. package/dist/types/hooks/use-expand-content.d.ts +15 -0
  65. package/dist/types/hooks/use-expand.d.ts +17 -0
  66. package/dist/types/index.d.ts +3 -0
  67. package/dist/types/ui/base-cell.d.ts +11 -3
  68. package/dist/types/ui/expand-icon.d.ts +10 -0
  69. package/dist/types/ui/expandable-cell.d.ts +14 -0
  70. package/dist/types/ui/index.d.ts +2 -0
  71. package/dist/types/ui/selectable-cell.d.ts +3 -2
  72. package/dist/types/ui/td.d.ts +1 -1
  73. package/dist/types/ui/thead.d.ts +1 -1
  74. package/dist/types/ui/tr.d.ts +5 -1
  75. package/package.json +3 -2
  76. package/report.api.md +36 -3
  77. package/tmp/api-report-tmp.d.ts +30 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/table
2
2
 
3
+ ## 0.3.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`bc489da7472`](https://bitbucket.org/atlassian/atlassian-frontend/commits/bc489da7472) - [ux] - Adds new primitives to support expandable row functionality. This will supersede the `@atlaskit/table-tree` package.
8
+
9
+ - `<ExpandableRow>`
10
+ - `<ExpandableRowContent>`
11
+ - `<ExpandableCell>`
12
+
13
+ ## 0.2.8
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
3
19
  ## 0.2.7
4
20
 
5
21
  ### Patch Changes
package/dist/cjs/body.js CHANGED
@@ -35,11 +35,9 @@ function TBody(_ref) {
35
35
  _useSelection2$ = _useSelection2[1],
36
36
  removeAll = _useSelection2$.removeAll,
37
37
  setMax = _useSelection2$.setMax;
38
-
39
38
  // TODO: this seems like something the user should control or opt into.
40
39
  (0, _react.useEffect)(function () {
41
40
  removeAll === null || removeAll === void 0 ? void 0 : removeAll();
42
-
43
41
  // eslint-disable-next-line react-hooks/exhaustive-deps -- When the rows change, we [currently] want to call removeAll.
44
42
  }, [rows]);
45
43
  var childrenCount = _react.Children.count(children);
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _react = require("react");
10
+ var _react2 = require("@emotion/react");
11
+ var _button = _interopRequireDefault(require("@atlaskit/button"));
12
+ var _useExpand2 = _interopRequireDefault(require("./hooks/use-expand"));
13
+ var Primitives = _interopRequireWildcard(require("./ui"));
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); }
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; }
16
+ /** @jsx jsx */
17
+
18
+ /**
19
+ * __Expandable cell__
20
+ *
21
+ * A cell with an expand button that controls the expanded state
22
+ * of the `<ExpandableRow>`.
23
+ */
24
+ var ExpandableCell = /*#__PURE__*/(0, _react.memo)(function () {
25
+ var _useExpand = (0, _useExpand2.default)(),
26
+ isExpanded = _useExpand.isExpanded,
27
+ toggleExpanded = _useExpand.toggleExpanded;
28
+ var handleClick = (0, _react.useCallback)(function () {
29
+ toggleExpanded();
30
+ }, [toggleExpanded]);
31
+ return (0, _react2.jsx)(Primitives.ExpandableCell, {
32
+ as: "td"
33
+ }, (0, _react2.jsx)(_button.default, {
34
+ spacing: "compact",
35
+ appearance: "subtle",
36
+ iconAfter: (0, _react2.jsx)(Primitives.ExpandIcon, {
37
+ isExpanded: isExpanded
38
+ }),
39
+ onClick: handleClick,
40
+ "aria-pressed": isExpanded,
41
+ "aria-label": "Expand row"
42
+ }));
43
+ });
44
+ var _default = ExpandableCell;
45
+ exports.default = _default;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _useExpandContent = require("./hooks/use-expand-content");
10
+ /**
11
+ * __Expandable row content__
12
+ *
13
+ * Contains expandable content. Uses a context provider to allow children
14
+ * to identify if they are expandable content.
15
+ */
16
+ var ExpandableRowContent = function ExpandableRowContent(_ref) {
17
+ var children = _ref.children;
18
+ return /*#__PURE__*/_react.default.createElement(_useExpandContent.ExpandContentContextProvider, null, children);
19
+ };
20
+ var _default = ExpandableRowContent;
21
+ exports.default = _default;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _useExpand = require("./hooks/use-expand");
10
+ /**
11
+ * __Expandable row__
12
+ *
13
+ * A context provider for `<Row>` to support expandable content.
14
+ */
15
+ var ExpandableRow = function ExpandableRow(_ref) {
16
+ var children = _ref.children,
17
+ isExpanded = _ref.isExpanded,
18
+ isDefaultExpanded = _ref.isDefaultExpanded;
19
+ return /*#__PURE__*/_react.default.createElement(_useExpand.ExpandContextProvider, {
20
+ isExpanded: isExpanded,
21
+ isDefaultExpanded: isDefaultExpanded
22
+ }, children);
23
+ };
24
+ var _default = ExpandableRow;
25
+ exports.default = _default;
@@ -15,7 +15,7 @@ var _th = require("./ui/th");
15
15
  *
16
16
  * HeadCell element
17
17
  */
18
- var Column = function Column(_ref) {
18
+ var HeadCell = function HeadCell(_ref) {
19
19
  var children = _ref.children,
20
20
  align = _ref.align,
21
21
  testId = _ref.testId,
@@ -27,10 +27,10 @@ var Column = function Column(_ref) {
27
27
  align: align,
28
28
  testId: testId,
29
29
  backgroundColor: backgroundColor
30
- }, (0, _react.jsx)(_dsExplorations.UNSAFE_Text, {
30
+ }, children && (0, _react.jsx)(_dsExplorations.UNSAFE_Text, {
31
31
  color: "color.text",
32
32
  fontWeight: "medium"
33
33
  }, children));
34
34
  };
35
- var _default = Column;
35
+ var _default = HeadCell;
36
36
  exports.default = _default;
@@ -15,10 +15,6 @@ var SelectionContext = /*#__PURE__*/(0, _react.createContext)([_useSelectable.de
15
15
  * __Selection provider__
16
16
  *
17
17
  * A selection provider injects selection specific state into the table.
18
- *
19
- * - [Examples](https://atlassian.design/components/{packageName}/examples)
20
- * - [Code](https://atlassian.design/components/{packageName}/code)
21
- * - [Usage](https://atlassian.design/components/{packageName}/usage)
22
18
  */
23
19
  var SelectionProvider = function SelectionProvider(_ref) {
24
20
  var children = _ref.children;
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = exports.ExpandContentContextProvider = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ 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); }
10
+ 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; }
11
+ var ExpandContentContext = /*#__PURE__*/(0, _react.createContext)({
12
+ isExpandableContent: false
13
+ });
14
+
15
+ /**
16
+ * __Expand content provider__
17
+ *
18
+ * An expand content provider allows `<Row>` to determine if it is a subitem.
19
+ */
20
+ var ExpandContentContextProvider = function ExpandContentContextProvider(_ref) {
21
+ var children = _ref.children;
22
+ return /*#__PURE__*/_react.default.createElement(ExpandContentContext.Provider, {
23
+ value: {
24
+ isExpandableContent: true
25
+ }
26
+ }, children);
27
+ };
28
+ exports.ExpandContentContextProvider = ExpandContentContextProvider;
29
+ var useExpandContent = function useExpandContent() {
30
+ return (0, _react.useContext)(ExpandContentContext);
31
+ };
32
+ var _default = useExpandContent;
33
+ exports.default = _default;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = exports.ExpandContextProvider = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
+ var _noop = _interopRequireDefault(require("@atlaskit/ds-lib/noop"));
12
+ 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); }
13
+ 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; }
14
+ var ExpandContext = /*#__PURE__*/(0, _react.createContext)({
15
+ isExpanded: false,
16
+ toggleExpanded: _noop.default
17
+ });
18
+
19
+ /**
20
+ * __Expand context provider__
21
+ *
22
+ * An expand context provider.
23
+ */
24
+ var ExpandContextProvider = function ExpandContextProvider(_ref) {
25
+ var children = _ref.children,
26
+ isExpandedProp = _ref.isExpanded,
27
+ _ref$isDefaultExpande = _ref.isDefaultExpanded,
28
+ isDefaultExpanded = _ref$isDefaultExpande === void 0 ? false : _ref$isDefaultExpande;
29
+ var _useState = (0, _react.useState)(isDefaultExpanded),
30
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
31
+ isExpanded = _useState2[0],
32
+ setIsExpanded = _useState2[1];
33
+ var toggleExpanded = (0, _react.useCallback)(function () {
34
+ setIsExpanded(function (v) {
35
+ return !v;
36
+ });
37
+ }, []);
38
+ return /*#__PURE__*/_react.default.createElement(ExpandContext.Provider, {
39
+ value: {
40
+ isExpanded: isExpandedProp || isExpanded,
41
+ toggleExpanded: toggleExpanded
42
+ }
43
+ }, children);
44
+ };
45
+ exports.ExpandContextProvider = ExpandContextProvider;
46
+ var useExpand = function useExpand() {
47
+ return (0, _react.useContext)(ExpandContext);
48
+ };
49
+ var _default = useExpand;
50
+ exports.default = _default;
package/dist/cjs/index.js CHANGED
@@ -10,6 +10,24 @@ Object.defineProperty(exports, "Cell", {
10
10
  return _ui.TD;
11
11
  }
12
12
  });
13
+ Object.defineProperty(exports, "ExpandableCell", {
14
+ enumerable: true,
15
+ get: function get() {
16
+ return _expandableCell.default;
17
+ }
18
+ });
19
+ Object.defineProperty(exports, "ExpandableRow", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _expandableRow.default;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "ExpandableRowContent", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _expandableRowContent.default;
29
+ }
30
+ });
13
31
  Object.defineProperty(exports, "HeadCell", {
14
32
  enumerable: true,
15
33
  get: function get() {
@@ -50,6 +68,9 @@ var _table = _interopRequireDefault(require("./table"));
50
68
  var _body = _interopRequireDefault(require("./body"));
51
69
  var _row = _interopRequireDefault(require("./row"));
52
70
  var _ui = require("./ui");
71
+ var _expandableCell = _interopRequireDefault(require("./expandable-cell"));
72
+ var _expandableRow = _interopRequireDefault(require("./expandable-row"));
73
+ var _expandableRowContent = _interopRequireDefault(require("./expandable-row-content"));
53
74
  var _headCell = _interopRequireDefault(require("./head-cell"));
54
75
  var _sortableColumn = _interopRequireDefault(require("./sortable-column"));
55
76
  var _thead = _interopRequireDefault(require("./thead"));
package/dist/cjs/row.js CHANGED
@@ -10,6 +10,8 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
10
10
  var _react = require("react");
11
11
  var _react2 = require("@emotion/react");
12
12
  var _selectionProvider = require("./hooks/selection-provider");
13
+ var _useExpand2 = _interopRequireDefault(require("./hooks/use-expand"));
14
+ var _useExpandContent2 = _interopRequireDefault(require("./hooks/use-expand-content"));
13
15
  var _useRowId = require("./hooks/use-row-id");
14
16
  var _useTable2 = require("./hooks/use-table");
15
17
  var _useTableBody = require("./hooks/use-table-body");
@@ -39,17 +41,31 @@ var Row = /*#__PURE__*/(0, _react.memo)(function (_ref) {
39
41
  _useSelection2$ = _useSelection2[0],
40
42
  allChecked = _useSelection2$.allChecked,
41
43
  checked = _useSelection2$.checked;
44
+ var _useExpand = (0, _useExpand2.default)(),
45
+ isExpanded = _useExpand.isExpanded;
46
+ var _useExpandContent = (0, _useExpandContent2.default)(),
47
+ isExpandableContent = _useExpandContent.isExpandableContent;
42
48
  var rowId = (0, _useRowId.useRowId)();
43
49
  var isSelected = (0, _react.useMemo)(function () {
44
- if (!isSelectable) {
50
+ if (!isSelectable || rowId === undefined) {
45
51
  return undefined;
46
52
  }
47
53
  return allChecked || checked.includes(rowId);
48
54
  }, [allChecked, checked, isSelectable, rowId]);
55
+ if (isExpanded === false && isExpandableContent) {
56
+ return null;
57
+ }
58
+ var selectableCell = isSelectable && (0, _react2.jsx)(_selectableCell.default, null);
59
+ if (isSelectable && isExpandableContent) {
60
+ selectableCell = (0, _react2.jsx)(Primitives.SelectableCell, {
61
+ as: "td"
62
+ });
63
+ }
49
64
  return (0, _react2.jsx)(Primitives.TR, {
50
65
  isSelected: isSelected,
51
- testId: testId
52
- }, isSelectable && (0, _react2.jsx)(_selectableCell.default, null), children);
66
+ testId: testId,
67
+ isSubitem: isExpandableContent
68
+ }, selectableCell, children);
53
69
  });
54
70
  var _default = Row;
55
71
  exports.default = _default;
package/dist/cjs/thead.js CHANGED
@@ -30,15 +30,10 @@ var THead = function THead(_ref) {
30
30
  _useSelection2$ = _useSelection2[1],
31
31
  setAll = _useSelection2$.setAll,
32
32
  removeAll = _useSelection2$.removeAll;
33
- if (!isSelectable) {
34
- return (0, _react.jsx)(Primitives.THead, null, (0, _react.jsx)(Primitives.TR, {
35
- isBodyRow: false
36
- }, children));
37
- }
38
33
  var isChecked = state.allChecked || state.anyChecked;
39
34
  return (0, _react.jsx)(Primitives.THead, null, (0, _react.jsx)(Primitives.TR, {
40
35
  isBodyRow: false
41
- }, (0, _react.jsx)(Primitives.SelectableCell, {
36
+ }, isSelectable && (0, _react.jsx)(Primitives.SelectableCell, {
42
37
  as: "th"
43
38
  }, (0, _react.jsx)(_checkbox.default, {
44
39
  label: (0, _react.jsx)(_visuallyHidden.default, {
@@ -47,7 +42,7 @@ var THead = function THead(_ref) {
47
42
  onChange: isChecked ? removeAll : setAll,
48
43
  isChecked: isChecked,
49
44
  isIndeterminate: state.anyChecked && !state.allChecked
50
- })), children, isChecked && (0, _react.jsx)(Primitives.BulkActionOverlay, null, (0, _react.jsx)(_dsExplorations.UNSAFE_Text, {
45
+ })), children, isSelectable && isChecked && (0, _react.jsx)(Primitives.BulkActionOverlay, null, (0, _react.jsx)(_dsExplorations.UNSAFE_Text, {
51
46
  color: "color.text",
52
47
  fontWeight: "medium"
53
48
  }, state.checked.length, " selected"), actions && (0, _react.jsx)(_inline.default, {
@@ -8,15 +8,9 @@ exports.BaseCell = void 0;
8
8
  var _react = require("react");
9
9
  var _react2 = require("@emotion/react");
10
10
  var _box = _interopRequireDefault(require("@atlaskit/ds-explorations/box"));
11
- var _inline = _interopRequireDefault(require("@atlaskit/primitives/inline"));
12
11
  /* eslint-disable @atlassian/tangerine/import/entry-points */
13
12
  /** @jsx jsx */
14
13
 
15
- var alignMap = {
16
- text: 'start',
17
- number: 'end',
18
- icon: 'center'
19
- };
20
14
  var baseResetStyles = (0, _react2.css)({
21
15
  display: 'table-cell',
22
16
  verticalAlign: 'middle',
@@ -27,6 +21,20 @@ var baseResetStyles = (0, _react2.css)({
27
21
  paddingRight: "var(--ds-space-100, 8px)"
28
22
  }
29
23
  });
24
+ var alignLeftStyles = (0, _react2.css)({
25
+ textAlign: 'left'
26
+ });
27
+ var alignCenterStyles = (0, _react2.css)({
28
+ textAlign: 'center'
29
+ });
30
+ var alignRightStyles = (0, _react2.css)({
31
+ textAlign: 'right'
32
+ });
33
+ var alignMap = {
34
+ text: alignLeftStyles,
35
+ number: alignRightStyles,
36
+ icon: alignCenterStyles
37
+ };
30
38
 
31
39
  /**
32
40
  * __BaseCell__
@@ -44,14 +52,15 @@ var BaseCell = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
44
52
  _ref$paddingBlock = _ref.paddingBlock,
45
53
  paddingBlock = _ref$paddingBlock === void 0 ? 'space.100' : _ref$paddingBlock,
46
54
  _ref$paddingInline = _ref.paddingInline,
47
- paddingInline = _ref$paddingInline === void 0 ? 'space.200' : _ref$paddingInline,
55
+ paddingInline = _ref$paddingInline === void 0 ? 'space.100' : _ref$paddingInline,
48
56
  backgroundColor = _ref.backgroundColor,
49
57
  scope = _ref.scope,
50
58
  width = _ref.width,
51
59
  className = _ref.className,
52
- sortDirection = _ref.sortDirection;
60
+ sortDirection = _ref.sortDirection,
61
+ colSpan = _ref.colSpan;
53
62
  return (0, _react2.jsx)(_box.default, {
54
- css: baseResetStyles,
63
+ css: [baseResetStyles, alignMap[align]],
55
64
  ref: ref,
56
65
  scope: scope,
57
66
  backgroundColor: backgroundColor,
@@ -63,10 +72,8 @@ var BaseCell = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
63
72
  UNSAFE_style: width ? {
64
73
  width: width
65
74
  } : undefined,
66
- "aria-sort": sortDirection
67
- }, (0, _react2.jsx)(_inline.default, {
68
- alignInline: alignMap[align],
69
- space: "0"
70
- }, children));
75
+ "aria-sort": sortDirection,
76
+ colSpan: colSpan
77
+ }, children);
71
78
  });
72
79
  exports.BaseCell = BaseCell;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ExpandIcon = void 0;
8
+ var _react = require("react");
9
+ var _react2 = require("@emotion/react");
10
+ var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/glyph/hipchat/chevron-down"));
11
+ var _chevronUp = _interopRequireDefault(require("@atlaskit/icon/glyph/hipchat/chevron-up"));
12
+ /* eslint-disable no-unused-vars */
13
+ /** @jsx jsx */
14
+
15
+ // TODO: Using HipChat icons as the standard icon set is missing large
16
+ // versions of `chevron-up` and `chevron-down`, despite already including
17
+ // `chevron-left-large` and `chevron-right-large`...
18
+
19
+ /**
20
+ * __Expand icon__
21
+ *
22
+ * An icon used to display the expanded state in an `<ExpandableCell>`.
23
+ */
24
+ var ExpandIcon = /*#__PURE__*/(0, _react.memo)(function (_ref) {
25
+ var isExpanded = _ref.isExpanded;
26
+ switch (isExpanded) {
27
+ case true:
28
+ return (0, _react2.jsx)(_chevronUp.default, {
29
+ size: "small",
30
+ label: "",
31
+ primaryColor: "inherit"
32
+ });
33
+ case false:
34
+ return (0, _react2.jsx)(_chevronDown.default, {
35
+ size: "small",
36
+ label: "",
37
+ primaryColor: "inherit"
38
+ });
39
+ }
40
+ });
41
+ exports.ExpandIcon = ExpandIcon;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ExpandableCell = void 0;
7
+ var _react = require("@emotion/react");
8
+ var _baseCell = require("./base-cell");
9
+ /** @jsx jsx */
10
+
11
+ var spacingStyles = (0, _react.css)({
12
+ width: 24,
13
+ padding: "var(--ds-space-0, 0px)"
14
+ });
15
+ /**
16
+ * __Expandable cell__
17
+ *
18
+ * An expandable cell primitive designed to be used for light weight composition.
19
+ */
20
+ var ExpandableCell = function ExpandableCell(_ref) {
21
+ var children = _ref.children,
22
+ as = _ref.as;
23
+ return (0, _react.jsx)(_baseCell.BaseCell, {
24
+ as: as,
25
+ css: spacingStyles
26
+ }, children);
27
+ };
28
+ exports.ExpandableCell = ExpandableCell;
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "BulkActionOverlay", {
9
9
  return _bulkActionOverlay.BulkActionOverlay;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "ExpandIcon", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _expandIcon.ExpandIcon;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "ExpandableCell", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _expandableCell.ExpandableCell;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "SelectableCell", {
13
25
  enumerable: true,
14
26
  get: function get() {
@@ -63,6 +75,8 @@ var _tr = require("./tr");
63
75
  var _td = require("./td");
64
76
  var _th = require("./th");
65
77
  var _selectableCell = require("./selectable-cell");
78
+ var _expandableCell = require("./expandable-cell");
79
+ var _expandIcon = require("./expand-icon");
66
80
  var _thead = require("./thead");
67
81
  var _bulkActionOverlay = require("./bulk-action-overlay");
68
82
  var _sortIcon = require("./sort-icon");
@@ -10,13 +10,7 @@ var _baseCell = require("./base-cell");
10
10
 
11
11
  var spacingStyles = (0, _react.css)({
12
12
  width: 32,
13
- padding: "var(--ds-space-0, 0px)",
14
- paddingLeft: "var(--ds-space-100, 8px)",
15
- // eslint-disable-next-line @repo/internal/styles/no-nested-styles
16
- '& + *': {
17
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
18
- paddingLeft: '8px !important'
19
- }
13
+ padding: "var(--ds-space-0, 0px)"
20
14
  });
21
15
  /**
22
16
  * __Selectable cell__
@@ -25,8 +19,7 @@ var spacingStyles = (0, _react.css)({
25
19
  */
26
20
  var SelectableCell = function SelectableCell(_ref) {
27
21
  var children = _ref.children,
28
- _ref$as = _ref.as,
29
- as = _ref$as === void 0 ? 'td' : _ref$as;
22
+ as = _ref.as;
30
23
  return (0, _react.jsx)(_baseCell.BaseCell, {
31
24
  as: as,
32
25
  css: spacingStyles
package/dist/cjs/ui/th.js CHANGED
@@ -22,18 +22,14 @@ var TH = function TH(_ref) {
22
22
  backgroundColor = _ref.backgroundColor,
23
23
  width = _ref.width,
24
24
  sortDirection = _ref.sortDirection;
25
- return (
26
- /*#__PURE__*/
27
- // eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
28
- _react.default.createElement(_baseCell.BaseCell, {
29
- as: "th",
30
- testId: testId,
31
- align: align,
32
- scope: scope,
33
- width: width,
34
- backgroundColor: backgroundColor,
35
- sortDirection: sortDirection
36
- }, children)
37
- );
25
+ return /*#__PURE__*/_react.default.createElement(_baseCell.BaseCell, {
26
+ as: "th",
27
+ testId: testId,
28
+ align: align,
29
+ scope: scope,
30
+ width: width,
31
+ backgroundColor: backgroundColor,
32
+ sortDirection: sortDirection
33
+ }, children);
38
34
  };
39
35
  exports.TH = TH;
package/dist/cjs/ui/tr.js CHANGED
@@ -23,6 +23,9 @@ var selectedStyles = (0, _react.css)({
23
23
  }
24
24
  });
25
25
 
26
+ var subitemStyles = (0, _react.css)({
27
+ backgroundColor: "var(--ds-background-neutral, #091E420F)"
28
+ });
26
29
  var bodyRowStyles = (0, _react.css)({
27
30
  borderBottom: "1px solid ".concat("var(--ds-border, #eee)"),
28
31
  '&:hover': {
@@ -44,14 +47,15 @@ var TR = function TR(_ref) {
44
47
  testId = _ref.testId,
45
48
  isSelected = _ref.isSelected,
46
49
  _ref$isBodyRow = _ref.isBodyRow,
47
- isBodyRow = _ref$isBodyRow === void 0 ? true : _ref$isBodyRow;
50
+ isBodyRow = _ref$isBodyRow === void 0 ? true : _ref$isBodyRow,
51
+ isSubitem = _ref.isSubitem;
48
52
  return (0, _react.jsx)(_focusRing.default, {
49
53
  isInset: true
50
54
  }, (0, _react.jsx)("tr", {
51
55
  tabIndex: -1,
52
56
  "aria-selected": isSelected,
53
57
  "data-testid": testId,
54
- css: [baseStyles, isBodyRow && bodyRowStyles, isSelected && selectedStyles]
58
+ css: [baseStyles, isBodyRow && bodyRowStyles, isSelected && selectedStyles, isSubitem && subitemStyles]
55
59
  }, children));
56
60
  };
57
61
  exports.TR = TR;
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/table",
3
- "version": "0.2.7",
3
+ "version": "0.3.0",
4
4
  "sideEffects": false
5
5
  }
@@ -21,11 +21,9 @@ function TBody({
21
21
  removeAll,
22
22
  setMax
23
23
  }] = useSelection();
24
-
25
24
  // TODO: this seems like something the user should control or opt into.
26
25
  useEffect(() => {
27
26
  removeAll === null || removeAll === void 0 ? void 0 : removeAll();
28
-
29
27
  // eslint-disable-next-line react-hooks/exhaustive-deps -- When the rows change, we [currently] want to call removeAll.
30
28
  }, [rows]);
31
29
  const childrenCount = Children.count(children);
@@ -0,0 +1,35 @@
1
+ /** @jsx jsx */
2
+ import { memo, useCallback } from 'react';
3
+ import { jsx } from '@emotion/react';
4
+ import Button from '@atlaskit/button';
5
+ import useExpand from './hooks/use-expand';
6
+ import * as Primitives from './ui';
7
+
8
+ /**
9
+ * __Expandable cell__
10
+ *
11
+ * A cell with an expand button that controls the expanded state
12
+ * of the `<ExpandableRow>`.
13
+ */
14
+ const ExpandableCell = /*#__PURE__*/memo(() => {
15
+ const {
16
+ isExpanded,
17
+ toggleExpanded
18
+ } = useExpand();
19
+ const handleClick = useCallback(() => {
20
+ toggleExpanded();
21
+ }, [toggleExpanded]);
22
+ return jsx(Primitives.ExpandableCell, {
23
+ as: "td"
24
+ }, jsx(Button, {
25
+ spacing: "compact",
26
+ appearance: "subtle",
27
+ iconAfter: jsx(Primitives.ExpandIcon, {
28
+ isExpanded: isExpanded
29
+ }),
30
+ onClick: handleClick,
31
+ "aria-pressed": isExpanded,
32
+ "aria-label": "Expand row"
33
+ }));
34
+ });
35
+ export default ExpandableCell;