@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.
- package/dist/Table/Table.types.d.ts +1 -0
- package/dist/TableBodyCell/TableBodyCell.types.d.ts +1 -1
- package/dist/TableHeadCell/TableHeadCell.types.d.ts +1 -0
- package/dist/index.esm.js +32 -7
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +32 -7
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
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
|
|
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
|
|
8967
|
+
return true;
|
|
8954
8968
|
}
|
|
8955
8969
|
}
|
|
8956
8970
|
});
|
|
8957
|
-
|
|
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];
|