@pdg/react-table 1.0.28 → 1.0.29

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.
@@ -48,6 +48,7 @@ export interface TableColumn<T = TableItem> {
48
48
  onInitChecked?(item: T): boolean;
49
49
  onCheckDisabled?(item: T): boolean;
50
50
  onCheckChange?(item: T, checked: boolean): void;
51
+ onCheckDisabledChange?(item: T, checkDisabled: boolean): void;
51
52
  }
52
53
  export interface TableProps<T = TableItem> extends CommonSxProps {
53
54
  columns?: (TableColumn<T> | false | undefined | null)[];
@@ -1,7 +1,7 @@
1
1
  import { TableColumn, TableItem, TableProps } from '../Table/Table.types';
2
2
  export interface TableBodyCellCommands {
3
- setCheckDisabled(disabled: boolean): void;
4
3
  setChecked(checked: boolean): void;
4
+ setCheckDisabled(disabled: boolean): void;
5
5
  }
6
6
  export interface TableBodyCellProps {
7
7
  index: number;
@@ -1,6 +1,7 @@
1
1
  import { TableColumn, TableProps } from '../Table/Table.types';
2
2
  export interface TableHeadCellCommands {
3
3
  setChecked(checked: boolean): void;
4
+ setCheckDisabled(checkDisabled: boolean): void;
4
5
  }
5
6
  export interface TableHeadCellProps {
6
7
  column: TableColumn;
package/dist/index.esm.js CHANGED
@@ -8515,9 +8515,17 @@ var TableBodyCell = function (_a) {
8515
8515
  }
8516
8516
  // eslint-disable-next-line react-hooks/exhaustive-deps
8517
8517
  }, [checked]);
8518
+ useEffect(function () {
8519
+ if (column.type === 'check') {
8520
+ setItemColumnChecked(item, column, checked);
8521
+ column.onCheckChange && column.onCheckChange(item, checked);
8522
+ }
8523
+ // eslint-disable-next-line react-hooks/exhaustive-deps
8524
+ }, [checked]);
8518
8525
  useEffect(function () {
8519
8526
  if (column.type === 'check') {
8520
8527
  setItemColumnCheckDisabled(item, column, checkDisabled);
8528
+ column.onCheckDisabledChange && column.onCheckDisabledChange(item, checkDisabled);
8521
8529
  }
8522
8530
  // eslint-disable-next-line react-hooks/exhaustive-deps
8523
8531
  }, [checkDisabled]);
@@ -8652,6 +8660,7 @@ TableBodyRow.defaultProps = TableBodyRowDefaultProps;var TableHeadCell = functio
8652
8660
  var _b = useTableState(), setHeadColumnChecked = _b.setHeadColumnChecked, setHeadColumnCommands = _b.setHeadColumnCommands;
8653
8661
  // State -------------------------------------------------------------------------------------------------------------
8654
8662
  var _c = useState(false), checked = _c[0], setChecked = _c[1];
8663
+ var _d = useState(false), checkDisabled = _d[0], setCheckDisabled = _d[1];
8655
8664
  // Effect ------------------------------------------------------------------------------------------------------------
8656
8665
  useEffect(function () {
8657
8666
  if (column.type === 'check') {
@@ -8665,13 +8674,18 @@ TableBodyRow.defaultProps = TableBodyRowDefaultProps;var TableHeadCell = functio
8665
8674
  setChecked(checked);
8666
8675
  }
8667
8676
  },
8677
+ setCheckDisabled: function (checkDisabled) {
8678
+ if (column.type === 'check') {
8679
+ setCheckDisabled(checkDisabled);
8680
+ }
8681
+ },
8668
8682
  });
8669
8683
  }, [setHeadColumnCommands, column]);
8670
8684
  // Memo --------------------------------------------------------------------------------------------------------------
8671
8685
  var data = useMemo(function () {
8672
8686
  var _a, _b;
8673
8687
  if (column.type === 'check') {
8674
- return (React__default.createElement(Checkbox, { checked: checked, onChange: function (e, newChecked) {
8688
+ return (React__default.createElement(Checkbox, { checked: checked, disabled: checkDisabled, onChange: function (e, newChecked) {
8675
8689
  setChecked(newChecked);
8676
8690
  onCheckChange && onCheckChange(column, newChecked);
8677
8691
  } }));
@@ -8684,7 +8698,7 @@ TableBodyRow.defaultProps = TableBodyRowDefaultProps;var TableHeadCell = functio
8684
8698
  return column.label;
8685
8699
  }
8686
8700
  }
8687
- }, [checked, column, onCheckChange]);
8701
+ }, [checkDisabled, checked, column, onCheckChange]);
8688
8702
  // Render ------------------------------------------------------------------------------------------------------------
8689
8703
  return (React__default.createElement(TableCommonCell, { type: 'head', className: 'TableHeadCell', column: column, defaultAlign: defaultAlign }, data));
8690
8704
  };var TableFooterCell = function (_a) {
@@ -8944,17 +8958,27 @@ var Table = React__default.forwardRef(function (_a, ref) {
8944
8958
  var headColumnData = localHeaderDataRef.current[column.id];
8945
8959
  if (headColumnData) {
8946
8960
  updateHeadCheckTimer.current = setTimeout(function () {
8947
- var _a;
8961
+ var _a, _b;
8948
8962
  updateHeadCheckTimer.current = undefined;
8949
- var allChecked = !Object.keys(localBodyDataRef.current).find(function (key) {
8963
+ var enabledCheckExists = !!Object.keys(localBodyDataRef.current).find(function (key) {
8950
8964
  var columnData = localBodyDataRef.current[key].columns[column.id];
8951
8965
  if (columnData) {
8952
8966
  if (!columnData.checkDisabled) {
8953
- return !columnData.checked;
8967
+ return true;
8954
8968
  }
8955
8969
  }
8956
8970
  });
8957
- (_a = headColumnData.commands) === null || _a === void 0 ? void 0 : _a.setChecked(allChecked);
8971
+ var allChecked = enabledCheckExists &&
8972
+ !Object.keys(localBodyDataRef.current).find(function (key) {
8973
+ var columnData = localBodyDataRef.current[key].columns[column.id];
8974
+ if (columnData) {
8975
+ if (!columnData.checkDisabled) {
8976
+ return !columnData.checked;
8977
+ }
8978
+ }
8979
+ });
8980
+ (_a = headColumnData.commands) === null || _a === void 0 ? void 0 : _a.setCheckDisabled(!enabledCheckExists);
8981
+ (_b = headColumnData.commands) === null || _b === void 0 ? void 0 : _b.setChecked(allChecked);
8958
8982
  }, 100);
8959
8983
  }
8960
8984
  }, []);
@@ -9176,8 +9200,9 @@ var Table = React__default.forwardRef(function (_a, ref) {
9176
9200
  var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[column.id];
9177
9201
  if (data) {
9178
9202
  data.checkDisabled = disabled;
9203
+ updateHeadCheck(column);
9179
9204
  }
9180
- }, []);
9205
+ }, [updateHeadCheck]);
9181
9206
  var TableContextSetItemColumnCommands = useCallback(function (item, column, commands) {
9182
9207
  var _a;
9183
9208
  var data = (_a = localBodyDataRef.current[item.id]) === null || _a === void 0 ? void 0 : _a.columns[column.id];