@atlaskit/table 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/constellation/index/examples.mdx +1 -1
- package/constellation/index/props.mdx +6 -21
- package/dist/cjs/body.js +18 -25
- package/dist/cjs/hooks/selection-provider.js +2 -11
- package/dist/cjs/hooks/use-selectable.js +15 -26
- package/dist/cjs/hooks/use-sorting.js +10 -1
- package/dist/cjs/hooks/use-table.js +4 -1
- package/dist/cjs/row.js +14 -12
- package/dist/cjs/selectable-cell.js +8 -5
- package/dist/cjs/sortable-column.js +15 -39
- package/dist/cjs/table.js +15 -8
- package/dist/cjs/thead.js +6 -5
- package/dist/cjs/ui/base-cell.js +5 -1
- package/dist/cjs/ui/index.js +9 -1
- package/dist/cjs/ui/sort-icon.js +56 -0
- package/dist/cjs/ui/th.js +3 -1
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/body.js +14 -25
- package/dist/es2019/hooks/selection-provider.js +2 -9
- package/dist/es2019/hooks/use-selectable.js +2 -8
- package/dist/es2019/hooks/use-sorting.js +10 -1
- package/dist/es2019/hooks/use-table.js +2 -1
- package/dist/es2019/row.js +16 -12
- package/dist/es2019/selectable-cell.js +7 -5
- package/dist/es2019/sortable-column.js +8 -31
- package/dist/es2019/table.js +11 -7
- package/dist/es2019/thead.js +5 -3
- package/dist/es2019/ui/base-cell.js +5 -1
- package/dist/es2019/ui/index.js +2 -1
- package/dist/es2019/ui/sort-icon.js +42 -0
- package/dist/es2019/ui/th.js +3 -1
- package/dist/es2019/version.json +1 -1
- package/dist/esm/body.js +18 -27
- package/dist/esm/hooks/selection-provider.js +2 -9
- package/dist/esm/hooks/use-selectable.js +13 -25
- package/dist/esm/hooks/use-sorting.js +10 -1
- package/dist/esm/hooks/use-table.js +4 -1
- package/dist/esm/row.js +14 -12
- package/dist/esm/selectable-cell.js +9 -6
- package/dist/esm/sortable-column.js +10 -33
- package/dist/esm/table.js +11 -5
- package/dist/esm/thead.js +5 -4
- package/dist/esm/ui/base-cell.js +5 -1
- package/dist/esm/ui/index.js +2 -1
- package/dist/esm/ui/sort-icon.js +41 -0
- package/dist/esm/ui/th.js +3 -1
- package/dist/esm/version.json +1 -1
- package/dist/types/body.d.ts +1 -1
- package/dist/types/hooks/selection-provider.d.ts +11 -14
- package/dist/types/hooks/use-selectable.d.ts +31 -7
- package/dist/types/hooks/use-sorting.d.ts +1 -0
- package/dist/types/hooks/use-table.d.ts +1 -0
- package/dist/types/row.d.ts +4 -0
- package/dist/types/sortable-column.d.ts +4 -0
- package/dist/types/table.d.ts +4 -0
- package/dist/types/ui/base-cell.d.ts +44 -0
- package/dist/types/ui/index.d.ts +1 -0
- package/dist/types/ui/sort-icon.d.ts +10 -0
- package/dist/types/ui/table.d.ts +5 -1
- package/dist/types/ui/tr.d.ts +10 -0
- package/extract-react-types/cell.tsx +3 -0
- package/extract-react-types/row.tsx +8 -0
- package/extract-react-types/table.tsx +8 -0
- package/package.json +6 -4
- package/report.api.md +1 -1
- package/tmp/api-report-tmp.d.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @atlaskit/table
|
|
2
2
|
|
|
3
|
+
## 0.1.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`d2c17ae6f14`](https://bitbucket.org/atlassian/atlassian-frontend/commits/d2c17ae6f14) - Adds the `width` prop to '@atlaskit/table' header elements.
|
|
8
|
+
|
|
9
|
+
## 0.1.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [`7d3f2c3c117`](https://bitbucket.org/atlassian/atlassian-frontend/commits/7d3f2c3c117) - Iterate on typings and component performance
|
|
14
|
+
|
|
3
15
|
## 0.1.0
|
|
4
16
|
|
|
5
17
|
### Minor Changes
|
|
@@ -1,32 +1,17 @@
|
|
|
1
|
-
import TableProps from '!!extract-react-types-loader!../../
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import CellProps from '!!extract-react-types-loader!../../src/ui/td';
|
|
5
|
-
import HeadCellProps from '!!extract-react-types-loader!../../src/head-cell';
|
|
6
|
-
import RowProps from '!!extract-react-types-loader!../../src/row';
|
|
1
|
+
import TableProps from '!!extract-react-types-loader!../../extract-react-types/table.tsx';
|
|
2
|
+
import RowProps from '!!extract-react-types-loader!../../extract-react-types/row.tsx';
|
|
3
|
+
import CellProps from '!!extract-react-types-loader!../../extract-react-types/cell.tsx';
|
|
7
4
|
|
|
8
5
|
## Props
|
|
9
6
|
|
|
10
|
-
### Table
|
|
7
|
+
### Table props
|
|
11
8
|
|
|
12
9
|
<PropsTable heading="" props={TableProps} />
|
|
13
10
|
|
|
14
|
-
### Table body props
|
|
15
|
-
|
|
16
|
-
<PropsTable heading="" props={TableBodyProps} />
|
|
17
|
-
|
|
18
|
-
### Table head props
|
|
19
|
-
|
|
20
|
-
<PropsTable heading="" props={TableHeadProps} />
|
|
21
|
-
|
|
22
|
-
### HeadCell props
|
|
23
|
-
|
|
24
|
-
<PropsTable heading="" props={HeadCellProps} />
|
|
25
|
-
|
|
26
11
|
### Row props
|
|
27
12
|
|
|
28
|
-
<PropsTable heading="" props={RowProps} />
|
|
13
|
+
<PropsTable heading="Row props" props={RowProps} />
|
|
29
14
|
|
|
30
15
|
### Cell props
|
|
31
16
|
|
|
32
|
-
<PropsTable heading="" props={CellProps} />
|
|
17
|
+
<PropsTable heading="Cell props" props={CellProps} />
|
package/dist/cjs/body.js
CHANGED
|
@@ -47,45 +47,38 @@ function TBody(_ref) {
|
|
|
47
47
|
children = _ref.children;
|
|
48
48
|
|
|
49
49
|
var _useTable = (0, _useTable2.useTable)(),
|
|
50
|
-
|
|
51
|
-
sortDirection = _useTable.sortDirection;
|
|
50
|
+
sortFn = _useTable.sortFn;
|
|
52
51
|
|
|
53
52
|
var _useSelection = (0, _selectionProvider.useSelection)(),
|
|
54
53
|
_useSelection2 = (0, _slicedToArray2.default)(_useSelection, 2),
|
|
55
54
|
_state = _useSelection2[0],
|
|
56
55
|
_useSelection2$ = _useSelection2[1],
|
|
57
56
|
removeAll = _useSelection2$.removeAll,
|
|
58
|
-
setMax = _useSelection2$.setMax; // TODO this seems like something the user should control
|
|
57
|
+
setMax = _useSelection2$.setMax; // TODO: this seems like something the user should control or opt into.
|
|
59
58
|
|
|
60
59
|
|
|
61
60
|
(0, _react.useEffect)(function () {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61
|
+
removeAll === null || removeAll === void 0 ? void 0 : removeAll(); // eslint-disable-next-line react-hooks/exhaustive-deps -- When the rows change, we [currently] want to call removeAll.
|
|
62
|
+
}, [rows]);
|
|
65
63
|
|
|
66
|
-
|
|
64
|
+
var childrenCount = _react.Children.count(children);
|
|
67
65
|
|
|
68
|
-
|
|
69
|
-
var numRows = rows !== undefined ? rows.length : _react.Children.count(children);
|
|
70
|
-
setMax && setMax(numRows); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
71
|
-
}, [rows === null || rows === void 0 ? void 0 : rows.length, _react.Children.count(children)]);
|
|
72
|
-
|
|
73
|
-
var sortFn = function sortFn(rowA, rowB) {
|
|
74
|
-
if (sortKey === 'unset') {
|
|
75
|
-
return 0;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
var ascendingComparator = rowA[sortKey] < rowB[sortKey] ? -1 : 1;
|
|
79
|
-
return sortDirection === 'ascending' ? ascendingComparator : -ascendingComparator;
|
|
80
|
-
};
|
|
66
|
+
var rowsLength = rows === null || rows === void 0 ? void 0 : rows.length; // Set data length (via setMax) whenever data changes
|
|
81
67
|
|
|
68
|
+
(0, _react.useEffect)(function () {
|
|
69
|
+
var numRows = rowsLength !== null && rowsLength !== void 0 ? rowsLength : childrenCount;
|
|
70
|
+
setMax === null || setMax === void 0 ? void 0 : setMax(numRows);
|
|
71
|
+
}, [rowsLength, childrenCount, setMax]);
|
|
72
|
+
var sortedRows = (0, _react.useMemo)(function () {
|
|
73
|
+
return rows === null || rows === void 0 ? void 0 : rows.map(function (row, idx) {
|
|
74
|
+
return _objectSpread(_objectSpread({}, row), {}, {
|
|
75
|
+
idx: idx
|
|
76
|
+
});
|
|
77
|
+
}).sort(sortFn);
|
|
78
|
+
}, [rows, sortFn]);
|
|
82
79
|
return (0, _react2.jsx)(_useTableBody.TableBodyProvider, {
|
|
83
80
|
value: true
|
|
84
|
-
}, (0, _react2.jsx)(Primitives.TBody, null, typeof children === 'function' &&
|
|
85
|
-
return _objectSpread(_objectSpread({}, row), {}, {
|
|
86
|
-
idx: idx
|
|
87
|
-
});
|
|
88
|
-
}).sort(sortFn).map(function (_ref2) {
|
|
81
|
+
}, (0, _react2.jsx)(Primitives.TBody, null, typeof children === 'function' && sortedRows ? sortedRows.map(function (_ref2) {
|
|
89
82
|
var idx = _ref2.idx,
|
|
90
83
|
row = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
|
|
91
84
|
return (0, _react2.jsx)(_useRowId.RowProvider, {
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
3
|
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
4
|
|
|
7
5
|
Object.defineProperty(exports, "__esModule", {
|
|
@@ -11,20 +9,13 @@ exports.useSelection = exports.default = void 0;
|
|
|
11
9
|
|
|
12
10
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
11
|
|
|
14
|
-
var _useSelectable =
|
|
12
|
+
var _useSelectable = _interopRequireWildcard(require("./use-selectable"));
|
|
15
13
|
|
|
16
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); }
|
|
17
15
|
|
|
18
16
|
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; }
|
|
19
17
|
|
|
20
|
-
var SelectionContext = /*#__PURE__*/(0, _react.createContext)([{
|
|
21
|
-
checked: [],
|
|
22
|
-
allChecked: false,
|
|
23
|
-
anyChecked: false,
|
|
24
|
-
maxChecked: 0,
|
|
25
|
-
selectionStart: -1,
|
|
26
|
-
previousSelection: []
|
|
27
|
-
}, {}]);
|
|
18
|
+
var SelectionContext = /*#__PURE__*/(0, _react.createContext)([_useSelectable.defaultSelectableState, {}]);
|
|
28
19
|
/**
|
|
29
20
|
* __Selection provider__
|
|
30
21
|
*
|
|
@@ -5,19 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
-
exports.default = void 0;
|
|
8
|
+
exports.defaultSelectableState = exports.default = void 0;
|
|
9
9
|
|
|
10
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
11
11
|
|
|
12
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
-
|
|
14
12
|
var _react = require("react");
|
|
15
13
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
19
|
-
|
|
20
|
-
var defaultState = {
|
|
14
|
+
var defaultSelectableState = {
|
|
21
15
|
checked: [],
|
|
22
16
|
allChecked: false,
|
|
23
17
|
anyChecked: false,
|
|
@@ -25,6 +19,7 @@ var defaultState = {
|
|
|
25
19
|
selectionStart: -1,
|
|
26
20
|
previousSelection: []
|
|
27
21
|
};
|
|
22
|
+
exports.defaultSelectableState = defaultSelectableState;
|
|
28
23
|
|
|
29
24
|
var arrayFromRange = function arrayFromRange(from, to) {
|
|
30
25
|
var startIdx = from;
|
|
@@ -56,15 +51,15 @@ function reducer(_ref, action) {
|
|
|
56
51
|
case 'toggle_selection':
|
|
57
52
|
{
|
|
58
53
|
var _action$value = action.value,
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
_id = _action$value.id,
|
|
55
|
+
_shiftHeld = _action$value.shiftHeld;
|
|
61
56
|
var updated = checked.slice();
|
|
62
57
|
var newSelectionStart = selectionStart;
|
|
63
58
|
var newPreviousSelection = previousSelection.slice();
|
|
64
59
|
|
|
65
|
-
if (
|
|
60
|
+
if (_shiftHeld) {
|
|
66
61
|
if (checked.length > 0) {
|
|
67
|
-
var newIds = arrayFromRange(selectionStart,
|
|
62
|
+
var newIds = arrayFromRange(selectionStart, _id); // create an array of the new ids
|
|
68
63
|
// Uncheck ids from the previous selection.
|
|
69
64
|
// This is done to maintain consistency with Shift-select behaviour elsewhere (e.g. macOS)
|
|
70
65
|
// TODO: Code could be improved to only remove ids that are not included in the new range, avoiding needing to re-add them below
|
|
@@ -79,15 +74,15 @@ function reducer(_ref, action) {
|
|
|
79
74
|
newPreviousSelection = newIds; // Maintain an array of the previous selection to allow for consistent Shift-select behaviour
|
|
80
75
|
}
|
|
81
76
|
} else {
|
|
82
|
-
var checkedIndex = checked.indexOf(
|
|
77
|
+
var checkedIndex = checked.indexOf(_id); // is index already checked
|
|
83
78
|
|
|
84
79
|
if (checkedIndex !== -1) {
|
|
85
80
|
updated.splice(checkedIndex, 1); // if index is already checked, uncheck
|
|
86
81
|
} else {
|
|
87
|
-
updated.push(
|
|
82
|
+
updated.push(_id); // if index is not checked, check
|
|
88
83
|
}
|
|
89
84
|
|
|
90
|
-
newSelectionStart =
|
|
85
|
+
newSelectionStart = _id; // Reset selection start id to this non-shift-selected id
|
|
91
86
|
|
|
92
87
|
newPreviousSelection = []; // Reset previous selection as it is no longer relevant once a new non-shift-selected id is added
|
|
93
88
|
}
|
|
@@ -97,7 +92,7 @@ function reducer(_ref, action) {
|
|
|
97
92
|
return {
|
|
98
93
|
checked: updated,
|
|
99
94
|
allChecked: updated.length === maxChecked,
|
|
100
|
-
anyChecked: _anyChecked || Boolean(updated[
|
|
95
|
+
anyChecked: _anyChecked || Boolean(updated[_id]),
|
|
101
96
|
maxChecked: maxChecked,
|
|
102
97
|
selectionStart: newSelectionStart,
|
|
103
98
|
previousSelection: newPreviousSelection
|
|
@@ -116,10 +111,10 @@ function reducer(_ref, action) {
|
|
|
116
111
|
|
|
117
112
|
case 'set_max':
|
|
118
113
|
{
|
|
119
|
-
var
|
|
114
|
+
var _max = action.value;
|
|
120
115
|
return {
|
|
121
|
-
maxChecked:
|
|
122
|
-
allChecked: checked.length ===
|
|
116
|
+
maxChecked: _max,
|
|
117
|
+
allChecked: checked.length === _max,
|
|
123
118
|
anyChecked: anyChecked,
|
|
124
119
|
checked: checked,
|
|
125
120
|
selectionStart: selectionStart,
|
|
@@ -132,14 +127,8 @@ function reducer(_ref, action) {
|
|
|
132
127
|
}
|
|
133
128
|
}
|
|
134
129
|
|
|
135
|
-
var initialiseState = function initialiseState() {
|
|
136
|
-
return _objectSpread(_objectSpread({}, defaultState), {}, {
|
|
137
|
-
checked: []
|
|
138
|
-
});
|
|
139
|
-
};
|
|
140
|
-
|
|
141
130
|
function useSelectable() {
|
|
142
|
-
var _useReducer = (0, _react.useReducer)(reducer,
|
|
131
|
+
var _useReducer = (0, _react.useReducer)(reducer, defaultSelectableState),
|
|
143
132
|
_useReducer2 = (0, _slicedToArray2.default)(_useReducer, 2),
|
|
144
133
|
state = _useReducer2[0],
|
|
145
134
|
dispatch = _useReducer2[1];
|
|
@@ -49,10 +49,19 @@ var useSorting = function useSorting(sortKey) {
|
|
|
49
49
|
return localSortKey;
|
|
50
50
|
});
|
|
51
51
|
}, [toggleSortDirection]);
|
|
52
|
+
var sortFn = (0, _react.useCallback)(function (rowA, rowB) {
|
|
53
|
+
if (localSortKey === 'unset') {
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
var ascendingComparator = rowA[localSortKey] < rowB[localSortKey] ? -1 : 1;
|
|
58
|
+
return localSortDirection === 'ascending' ? ascendingComparator : -ascendingComparator;
|
|
59
|
+
}, [localSortDirection, localSortKey]);
|
|
52
60
|
return {
|
|
53
61
|
sortKey: localSortKey,
|
|
54
62
|
sortDirection: localSortDirection,
|
|
55
|
-
setSortState: setSortState
|
|
63
|
+
setSortState: setSortState,
|
|
64
|
+
sortFn: sortFn
|
|
56
65
|
};
|
|
57
66
|
};
|
|
58
67
|
|
package/dist/cjs/row.js
CHANGED
|
@@ -19,7 +19,7 @@ var _selectionProvider = require("./hooks/selection-provider");
|
|
|
19
19
|
|
|
20
20
|
var _useRowId = require("./hooks/use-row-id");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _useTable2 = require("./hooks/use-table");
|
|
23
23
|
|
|
24
24
|
var _useTableBody = require("./hooks/use-table-body");
|
|
25
25
|
|
|
@@ -46,25 +46,27 @@ var Row = /*#__PURE__*/(0, _react.memo)(function (_ref) {
|
|
|
46
46
|
// To ensure valid nesting
|
|
47
47
|
(0, _useTableBody.useTableBody)(); // to access table state
|
|
48
48
|
|
|
49
|
-
var
|
|
49
|
+
var _useTable = (0, _useTable2.useTable)(),
|
|
50
|
+
isSelectable = _useTable.isSelectable;
|
|
50
51
|
|
|
51
52
|
var _useSelection = (0, _selectionProvider.useSelection)(),
|
|
52
53
|
_useSelection2 = (0, _slicedToArray2.default)(_useSelection, 1),
|
|
53
|
-
|
|
54
|
+
_useSelection2$ = _useSelection2[0],
|
|
55
|
+
allChecked = _useSelection2$.allChecked,
|
|
56
|
+
checked = _useSelection2$.checked;
|
|
54
57
|
|
|
55
58
|
var rowId = (0, _useRowId.useRowId)();
|
|
59
|
+
var isSelected = (0, _react.useMemo)(function () {
|
|
60
|
+
if (!isSelectable) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
56
63
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
testId: testId
|
|
60
|
-
}, children);
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
var isChecked = selectionState.allChecked || selectionState.checked.includes(rowId);
|
|
64
|
+
return allChecked || checked.includes(rowId);
|
|
65
|
+
}, [allChecked, checked, isSelectable, rowId]);
|
|
64
66
|
return (0, _react2.jsx)(Primitives.TR, {
|
|
65
|
-
isSelected:
|
|
67
|
+
isSelected: isSelected,
|
|
66
68
|
testId: testId
|
|
67
|
-
}, (0, _react2.jsx)(_selectableCell.default, null), children);
|
|
69
|
+
}, isSelectable && (0, _react2.jsx)(_selectableCell.default, null), children);
|
|
68
70
|
});
|
|
69
71
|
var _default = Row;
|
|
70
72
|
exports.default = _default;
|
|
@@ -31,15 +31,18 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
31
31
|
var SelectableCell = function SelectableCell() {
|
|
32
32
|
var _useSelection = (0, _selectionProvider.useSelection)(),
|
|
33
33
|
_useSelection2 = (0, _slicedToArray2.default)(_useSelection, 2),
|
|
34
|
-
|
|
34
|
+
_useSelection2$ = _useSelection2[0],
|
|
35
|
+
allChecked = _useSelection2$.allChecked,
|
|
36
|
+
checked = _useSelection2$.checked,
|
|
35
37
|
toggleSelection = _useSelection2[1].toggleSelection;
|
|
36
38
|
|
|
37
39
|
var idx = (0, _useRowId.useRowId)();
|
|
38
|
-
var isChecked =
|
|
40
|
+
var isChecked = (0, _react.useMemo)(function () {
|
|
41
|
+
return allChecked || checked.includes(idx);
|
|
42
|
+
}, [allChecked, checked, idx]);
|
|
39
43
|
var onChange = (0, _react.useCallback)(function (e) {
|
|
40
|
-
return toggleSelection(idx, e.nativeEvent.shiftKey);
|
|
41
|
-
},
|
|
42
|
-
[idx]);
|
|
44
|
+
return toggleSelection === null || toggleSelection === void 0 ? void 0 : toggleSelection(idx, e.nativeEvent.shiftKey);
|
|
45
|
+
}, [idx, toggleSelection]);
|
|
43
46
|
return (0, _react2.jsx)(Primitives.SelectableCell, {
|
|
44
47
|
as: "td"
|
|
45
48
|
}, (0, _react2.jsx)(_checkbox.default, {
|
|
@@ -11,13 +11,11 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
13
13
|
|
|
14
|
-
var _react = require("
|
|
14
|
+
var _react = require("react");
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
var _arrowDown = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-down"));
|
|
16
|
+
var _react2 = require("@emotion/react");
|
|
19
17
|
|
|
20
|
-
var
|
|
18
|
+
var _button = _interopRequireDefault(require("@atlaskit/button"));
|
|
21
19
|
|
|
22
20
|
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
23
21
|
|
|
@@ -44,7 +42,7 @@ var sortingMessages = {
|
|
|
44
42
|
number: 'Sort from 9 to 0'
|
|
45
43
|
}
|
|
46
44
|
};
|
|
47
|
-
var overrideStyles = (0,
|
|
45
|
+
var overrideStyles = (0, _react2.css)({
|
|
48
46
|
// eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage-spacing
|
|
49
47
|
margin: '0 -2px !important',
|
|
50
48
|
gap: "var(--ds-space-050, 4px)",
|
|
@@ -78,47 +76,25 @@ var SortableColumn = function SortableColumn(_ref) {
|
|
|
78
76
|
return sortingMessages.unsorted.string;
|
|
79
77
|
};
|
|
80
78
|
|
|
81
|
-
var
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return undefined;
|
|
86
|
-
|
|
87
|
-
case 'ascending':
|
|
88
|
-
return (0, _react.jsx)(_arrowUp.default, {
|
|
89
|
-
size: "small",
|
|
90
|
-
label: "",
|
|
91
|
-
primaryColor: "inherit"
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
case 'descending':
|
|
95
|
-
return (0, _react.jsx)(_arrowDown.default, {
|
|
96
|
-
size: "small",
|
|
97
|
-
label: "",
|
|
98
|
-
primaryColor: "inherit"
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
return undefined;
|
|
104
|
-
};
|
|
105
|
-
|
|
79
|
+
var updateSortState = (0, _react.useCallback)( // @ts-expect-error: TODO: Our `name` typing is off; refer to `SortKey`
|
|
80
|
+
function () {
|
|
81
|
+
return setSortState(name);
|
|
82
|
+
}, [setSortState, name]);
|
|
106
83
|
return (// eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
|
|
107
|
-
(0,
|
|
84
|
+
(0, _react2.jsx)(_ui.TH, (0, _extends2.default)({
|
|
108
85
|
testId: testId
|
|
109
|
-
}, other), (0,
|
|
86
|
+
}, other), (0, _react2.jsx)(_tooltip.default, {
|
|
110
87
|
content: getSortMessage(),
|
|
111
88
|
position: "top"
|
|
112
89
|
}, function (tooltipProps) {
|
|
113
|
-
return (0,
|
|
90
|
+
return (0, _react2.jsx)(_button.default, (0, _extends2.default)({
|
|
114
91
|
spacing: "compact",
|
|
115
92
|
appearance: "subtle",
|
|
116
|
-
iconAfter:
|
|
93
|
+
iconAfter: (0, _react2.jsx)(_ui.SortIcon, {
|
|
94
|
+
name: name
|
|
95
|
+
})
|
|
117
96
|
}, tooltipProps, {
|
|
118
|
-
|
|
119
|
-
onClick: function onClick() {
|
|
120
|
-
return setSortState(name);
|
|
121
|
-
},
|
|
97
|
+
onClick: updateSortState,
|
|
122
98
|
css: overrideStyles
|
|
123
99
|
}), children);
|
|
124
100
|
}))
|
package/dist/cjs/table.js
CHANGED
|
@@ -9,7 +9,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.default = void 0;
|
|
11
11
|
|
|
12
|
-
var _react = require("
|
|
12
|
+
var _react = require("react");
|
|
13
|
+
|
|
14
|
+
var _react2 = require("@emotion/react");
|
|
13
15
|
|
|
14
16
|
var _selectionProvider = _interopRequireDefault(require("./hooks/selection-provider"));
|
|
15
17
|
|
|
@@ -42,18 +44,23 @@ function Table(_ref) {
|
|
|
42
44
|
var _useSorting = (0, _useSorting2.useSorting)(sortKey),
|
|
43
45
|
localSortKey = _useSorting.sortKey,
|
|
44
46
|
sortDirection = _useSorting.sortDirection,
|
|
45
|
-
setSortState = _useSorting.setSortState
|
|
47
|
+
setSortState = _useSorting.setSortState,
|
|
48
|
+
sortFn = _useSorting.sortFn;
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
50
|
+
var tableProviderState = (0, _react.useMemo)(function () {
|
|
51
|
+
return {
|
|
49
52
|
isSelectable: isSelectable,
|
|
50
53
|
sortKey: localSortKey,
|
|
51
54
|
sortDirection: sortDirection,
|
|
52
|
-
setSortState: setSortState
|
|
53
|
-
|
|
54
|
-
|
|
55
|
+
setSortState: setSortState,
|
|
56
|
+
sortFn: sortFn
|
|
57
|
+
};
|
|
58
|
+
}, [isSelectable, localSortKey, setSortState, sortDirection, sortFn]);
|
|
59
|
+
return (0, _react2.jsx)(_useTable.TableProvider, {
|
|
60
|
+
state: tableProviderState
|
|
61
|
+
}, (0, _react2.jsx)(Primitives.Table, {
|
|
55
62
|
testId: testId
|
|
56
|
-
}, isSelectable ? (0,
|
|
63
|
+
}, isSelectable ? (0, _react2.jsx)(_selectionProvider.default, null, children) : children));
|
|
57
64
|
}
|
|
58
65
|
|
|
59
66
|
var _default = Table;
|
package/dist/cjs/thead.js
CHANGED
|
@@ -21,7 +21,7 @@ var _visuallyHidden = _interopRequireDefault(require("@atlaskit/visually-hidden"
|
|
|
21
21
|
|
|
22
22
|
var _selectionProvider = require("./hooks/selection-provider");
|
|
23
23
|
|
|
24
|
-
var
|
|
24
|
+
var _useTable2 = require("./hooks/use-table");
|
|
25
25
|
|
|
26
26
|
var Primitives = _interopRequireWildcard(require("./ui"));
|
|
27
27
|
|
|
@@ -33,7 +33,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
33
33
|
var THead = function THead(_ref) {
|
|
34
34
|
var actions = _ref.actions,
|
|
35
35
|
children = _ref.children;
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
var _useTable = (0, _useTable2.useTable)(),
|
|
38
|
+
isSelectable = _useTable.isSelectable;
|
|
37
39
|
|
|
38
40
|
var _useSelection = (0, _selectionProvider.useSelection)(),
|
|
39
41
|
_useSelection2 = (0, _slicedToArray2.default)(_useSelection, 2),
|
|
@@ -42,14 +44,13 @@ var THead = function THead(_ref) {
|
|
|
42
44
|
setAll = _useSelection2$.setAll,
|
|
43
45
|
removeAll = _useSelection2$.removeAll;
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (!table.isSelectable) {
|
|
47
|
+
if (!isSelectable) {
|
|
48
48
|
return (0, _react.jsx)(Primitives.THead, null, (0, _react.jsx)(Primitives.TR, {
|
|
49
49
|
isBodyRow: false
|
|
50
50
|
}, children));
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
var isChecked = state.allChecked || state.anyChecked;
|
|
53
54
|
return (0, _react.jsx)(Primitives.THead, null, (0, _react.jsx)(Primitives.TR, {
|
|
54
55
|
isBodyRow: false
|
|
55
56
|
}, (0, _react.jsx)(Primitives.SelectableCell, {
|
package/dist/cjs/ui/base-cell.js
CHANGED
|
@@ -53,6 +53,7 @@ var BaseCell = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
53
53
|
paddingInline = _ref$paddingInline === void 0 ? 'scale.200' : _ref$paddingInline,
|
|
54
54
|
backgroundColor = _ref.backgroundColor,
|
|
55
55
|
scope = _ref.scope,
|
|
56
|
+
width = _ref.width,
|
|
56
57
|
className = _ref.className;
|
|
57
58
|
return (0, _react2.jsx)(_box.default, {
|
|
58
59
|
css: baseResetStyles,
|
|
@@ -63,7 +64,10 @@ var BaseCell = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
|
|
|
63
64
|
paddingInline: paddingInline,
|
|
64
65
|
as: as,
|
|
65
66
|
testId: testId,
|
|
66
|
-
className: className
|
|
67
|
+
className: className,
|
|
68
|
+
UNSAFE_style: width ? {
|
|
69
|
+
width: width
|
|
70
|
+
} : undefined
|
|
67
71
|
}, (0, _react2.jsx)(_inline.default, {
|
|
68
72
|
justifyContent: alignMap[align],
|
|
69
73
|
gap: "scale.0"
|
package/dist/cjs/ui/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "SelectableCell", {
|
|
|
15
15
|
return _selectableCell.SelectableCell;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "SortIcon", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function get() {
|
|
21
|
+
return _sortIcon.SortIcon;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "TBody", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function get() {
|
|
@@ -66,4 +72,6 @@ var _selectableCell = require("./selectable-cell");
|
|
|
66
72
|
|
|
67
73
|
var _thead = require("./thead");
|
|
68
74
|
|
|
69
|
-
var _bulkActionOverlay = require("./bulk-action-overlay");
|
|
75
|
+
var _bulkActionOverlay = require("./bulk-action-overlay");
|
|
76
|
+
|
|
77
|
+
var _sortIcon = require("./sort-icon");
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.SortIcon = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = require("react");
|
|
11
|
+
|
|
12
|
+
var _react2 = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _arrowDown = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-down"));
|
|
15
|
+
|
|
16
|
+
var _arrowUp = _interopRequireDefault(require("@atlaskit/icon/glyph/arrow-up"));
|
|
17
|
+
|
|
18
|
+
var _useTable2 = require("../hooks/use-table");
|
|
19
|
+
|
|
20
|
+
/* eslint-disable no-unused-vars */
|
|
21
|
+
|
|
22
|
+
/** @jsx jsx */
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* __SortIcon__
|
|
26
|
+
*
|
|
27
|
+
* SortIcon is used to display the sort state in our SortableColumn.
|
|
28
|
+
*/
|
|
29
|
+
var SortIcon = /*#__PURE__*/(0, _react.memo)(function (_ref) {
|
|
30
|
+
var name = _ref.name;
|
|
31
|
+
|
|
32
|
+
var _useTable = (0, _useTable2.useTable)(),
|
|
33
|
+
sortKey = _useTable.sortKey,
|
|
34
|
+
sortDirection = _useTable.sortDirection;
|
|
35
|
+
|
|
36
|
+
if (sortKey === name) {
|
|
37
|
+
switch (sortDirection) {
|
|
38
|
+
case 'ascending':
|
|
39
|
+
return (0, _react2.jsx)(_arrowUp.default, {
|
|
40
|
+
size: "small",
|
|
41
|
+
label: "",
|
|
42
|
+
primaryColor: "inherit"
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
case 'descending':
|
|
46
|
+
return (0, _react2.jsx)(_arrowDown.default, {
|
|
47
|
+
size: "small",
|
|
48
|
+
label: "",
|
|
49
|
+
primaryColor: "inherit"
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return null;
|
|
55
|
+
});
|
|
56
|
+
exports.SortIcon = SortIcon;
|
package/dist/cjs/ui/th.js
CHANGED
|
@@ -23,7 +23,8 @@ var TH = function TH(_ref) {
|
|
|
23
23
|
testId = _ref.testId,
|
|
24
24
|
align = _ref.align,
|
|
25
25
|
scope = _ref.scope,
|
|
26
|
-
backgroundColor = _ref.backgroundColor
|
|
26
|
+
backgroundColor = _ref.backgroundColor,
|
|
27
|
+
width = _ref.width;
|
|
27
28
|
return (
|
|
28
29
|
/*#__PURE__*/
|
|
29
30
|
// eslint-disable-next-line @repo/internal/react/no-unsafe-spread-props
|
|
@@ -32,6 +33,7 @@ var TH = function TH(_ref) {
|
|
|
32
33
|
testId: testId,
|
|
33
34
|
align: align,
|
|
34
35
|
scope: scope,
|
|
36
|
+
width: width,
|
|
35
37
|
backgroundColor: backgroundColor
|
|
36
38
|
}, children)
|
|
37
39
|
);
|