@commonsku/styles 1.17.7 → 1.17.8

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/dist/index.cjs CHANGED
@@ -6800,50 +6800,51 @@ var VirtualTableStyles = styled__default.default.div(templateObject_1$a || (temp
6800
6800
  var templateObject_1$a;
6801
6801
 
6802
6802
  var SelectionTable = function (props) {
6803
- var columns = props.columns, onSelectRow = props.onSelectRow;
6804
- var _a = React.useState(props.data.map(function (row) { return (__assign({ selected: false }, row)); })), data = _a[0], setData = _a[1];
6803
+ var columns = props.columns, data = props.data, selectedRows = props.selectedRows, onSelectionChange = props.onSelectionChange;
6805
6804
  var selectionState = React.useMemo(function () {
6806
- return !data.some(function (row) { return row.selected === false; })
6807
- ? 'all'
6808
- : data.some(function (row) { return row.selected === true; })
6809
- ? 'indeterminate'
6810
- : 'none';
6811
- }, [data]);
6805
+ if (selectedRows == null)
6806
+ return "none";
6807
+ switch (selectedRows.length) {
6808
+ case 0:
6809
+ return 'none';
6810
+ case data.length:
6811
+ return 'all';
6812
+ default:
6813
+ return 'some';
6814
+ }
6815
+ }, [data.length, selectedRows]);
6816
+ var handleSelectRows = React.useCallback(function (rows) {
6817
+ if (onSelectionChange == null)
6818
+ return;
6819
+ if (selectedRows == null) {
6820
+ onSelectionChange(rows);
6821
+ return;
6822
+ }
6823
+ var newSelection = selectedRows.filter(function (row) { return !rows.includes(row); });
6824
+ newSelection.push.apply(newSelection, rows.filter(function (row) { return !selectedRows.includes(row); }));
6825
+ onSelectionChange(newSelection);
6826
+ }, [selectedRows, onSelectionChange]);
6812
6827
  var handleSelectHeader = React.useCallback(function () {
6828
+ if (onSelectionChange == null)
6829
+ return;
6813
6830
  switch (selectionState) {
6814
6831
  case 'none':
6815
- setData(data.map(function (row) { return (__assign(__assign({}, row), { selected: true })); }));
6832
+ onSelectionChange(__spreadArray([], data, true));
6816
6833
  break;
6817
6834
  case 'all':
6818
- case 'indeterminate':
6819
- setData(data.map(function (row) { return (__assign(__assign({}, row), { selected: false })); }));
6835
+ case 'some':
6836
+ onSelectionChange([]);
6820
6837
  break;
6821
6838
  }
6822
- }, [data, selectionState]);
6823
- var handleSelectRow = React.useCallback(function (rowIndex) {
6824
- setData(function (prev) { return prev.map(function (row, index) {
6825
- if (rowIndex !== index)
6826
- return row;
6827
- if (onSelectRow != null) {
6828
- onSelectRow(row, rowIndex);
6829
- }
6830
- return __assign(__assign({}, row), { selected: rowIndex === index
6831
- ? !row.selected
6832
- : row.selected });
6833
- }); });
6834
- }, [onSelectRow]);
6835
- var selectionHeader = React.useMemo(function () { return (React__default.default.createElement(LabeledCheckbox, { label: "", checked: selectionState === 'all', indeterminate: selectionState === 'indeterminate', onChange: handleSelectHeader })); }, [selectionState, handleSelectHeader]);
6839
+ }, [selectionState, data, onSelectionChange]);
6840
+ var selectionHeader = React.useMemo(function () { return (React__default.default.createElement(LabeledCheckbox, { label: "", checked: selectionState === 'all', indeterminate: selectionState === 'some', onChange: handleSelectHeader })); }, [selectionState, handleSelectHeader]);
6836
6841
  var selectionColumn = React.useMemo(function () { return ({
6837
6842
  Header: selectionHeader,
6838
6843
  accessor: 'selected',
6839
- Cell: function (cellObj) {
6840
- return (React__default.default.createElement(LabeledCheckbox, { label: "", checked: cellObj.row.original.selected, onChange: function () { return handleSelectRow(cellObj.row.index); } }));
6841
- },
6842
- sticky: 'left',
6843
- noDrag: true,
6844
+ Cell: function (cell) { return (React__default.default.createElement(LabeledCheckbox, { label: "", checked: selectedRows != null && selectedRows.includes(cell.row.original), onChange: function () { return handleSelectRows([cell.row.original]); } })); },
6844
6845
  width: 40,
6845
6846
  disableSortBy: true,
6846
- }); }, [handleSelectRow, selectionHeader]);
6847
+ }); }, [selectedRows, selectionHeader, handleSelectRows]);
6847
6848
  return (React__default.default.createElement(VirtualTable, __assign({}, props, { columns: __spreadArray([selectionColumn], columns, true), data: data, minWidth: 40 })));
6848
6849
  };
6849
6850