@ceed/ads 1.7.4 → 1.7.5
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/components/DataTable/types.d.ts +7 -0
- package/dist/index.cjs +58 -17
- package/dist/index.js +58 -17
- package/framer/index.js +29 -29
- package/package.json +1 -1
|
@@ -140,6 +140,13 @@ export type DataTableProps<T extends Record<PropertyKey, any>, GetId extends ((r
|
|
|
140
140
|
* MUI에는 없는 인터페이스지만 Total Select 기능이 추가되었기 때문에 추가해야했다.
|
|
141
141
|
*/
|
|
142
142
|
isTotalSelected?: boolean) => void;
|
|
143
|
+
/**
|
|
144
|
+
* row별로 선택 가능 여부를 결정하는 함수
|
|
145
|
+
*/
|
|
146
|
+
isRowSelectable?: (params: {
|
|
147
|
+
row: T;
|
|
148
|
+
id: InferredIdType<T, GetId>;
|
|
149
|
+
}) => boolean;
|
|
143
150
|
disableSelectionOnClick?: boolean;
|
|
144
151
|
initialState?: Partial<{
|
|
145
152
|
sorting: Partial<{
|
package/dist/index.cjs
CHANGED
|
@@ -3522,7 +3522,8 @@ function useDataTableRenderer({
|
|
|
3522
3522
|
onSelectionModelChange,
|
|
3523
3523
|
editMode,
|
|
3524
3524
|
getId: _getId,
|
|
3525
|
-
isTotalSelected: _isTotalSelected
|
|
3525
|
+
isTotalSelected: _isTotalSelected,
|
|
3526
|
+
isRowSelectable
|
|
3526
3527
|
}) {
|
|
3527
3528
|
const [focusedRowId, setFocusedRowId] = (0, import_react25.useState)(null);
|
|
3528
3529
|
const [sortModel, setSortModel] = useControlledState(
|
|
@@ -3598,14 +3599,27 @@ function useDataTableRenderer({
|
|
|
3598
3599
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
3599
3600
|
[rows, page, pageSize, paginationMode, pagination]
|
|
3600
3601
|
);
|
|
3602
|
+
const selectableDataInPage = (0, import_react25.useMemo)(
|
|
3603
|
+
() => dataInPage.filter((row, i) => {
|
|
3604
|
+
if (!isRowSelectable) return true;
|
|
3605
|
+
return isRowSelectable({ row, id: getId(row, i) });
|
|
3606
|
+
}),
|
|
3607
|
+
[dataInPage, isRowSelectable, getId]
|
|
3608
|
+
);
|
|
3601
3609
|
const isAllSelected = (0, import_react25.useMemo)(
|
|
3602
|
-
() =>
|
|
3603
|
-
|
|
3610
|
+
() => selectableDataInPage.length > 0 && selectableDataInPage.every(
|
|
3611
|
+
(row, i) => selectedModelSet.has(getId(row, i))
|
|
3612
|
+
),
|
|
3613
|
+
[selectableDataInPage, selectedModelSet, getId]
|
|
3604
3614
|
);
|
|
3605
3615
|
const rowCount = totalRowsProp || rows.length;
|
|
3616
|
+
const selectableRowCount = (0, import_react25.useMemo)(() => {
|
|
3617
|
+
if (!isRowSelectable) return rowCount;
|
|
3618
|
+
return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
|
|
3619
|
+
}, [rows, isRowSelectable, getId, rowCount]);
|
|
3606
3620
|
const isTotalSelected = (0, import_react25.useMemo)(
|
|
3607
|
-
() => _isTotalSelected ?? (
|
|
3608
|
-
[_isTotalSelected, selectionModel,
|
|
3621
|
+
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
3622
|
+
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
3609
3623
|
);
|
|
3610
3624
|
const columnWidths = useColumnWidths(columnsByField);
|
|
3611
3625
|
const getWidth = (0, import_react25.useCallback)(
|
|
@@ -3701,9 +3715,10 @@ function useDataTableRenderer({
|
|
|
3701
3715
|
}, [page, rowCount, pageSize, handlePageChange]);
|
|
3702
3716
|
(0, import_react25.useEffect)(() => {
|
|
3703
3717
|
onSelectionModelChange?.([]);
|
|
3704
|
-
}, [page]);
|
|
3718
|
+
}, [page, onSelectionModelChange]);
|
|
3705
3719
|
return {
|
|
3706
3720
|
rowCount,
|
|
3721
|
+
selectableRowCount,
|
|
3707
3722
|
page,
|
|
3708
3723
|
pageSize,
|
|
3709
3724
|
onPaginationModelChange: handlePageChange,
|
|
@@ -3719,13 +3734,22 @@ function useDataTableRenderer({
|
|
|
3719
3734
|
(model) => selectedModelSet.has(model),
|
|
3720
3735
|
[selectedModelSet]
|
|
3721
3736
|
),
|
|
3737
|
+
isRowSelectable: (0, import_react25.useCallback)(
|
|
3738
|
+
(rowId, row) => {
|
|
3739
|
+
if (!isRowSelectable) return true;
|
|
3740
|
+
return isRowSelectable({ row, id: rowId });
|
|
3741
|
+
},
|
|
3742
|
+
[isRowSelectable]
|
|
3743
|
+
),
|
|
3722
3744
|
focusedRowId,
|
|
3723
3745
|
onRowFocus: (0, import_react25.useCallback)((rowId) => {
|
|
3724
3746
|
setFocusedRowId(rowId);
|
|
3725
3747
|
}, []),
|
|
3726
3748
|
onAllCheckboxChange: (0, import_react25.useCallback)(() => {
|
|
3727
|
-
onSelectionModelChange?.(
|
|
3728
|
-
|
|
3749
|
+
onSelectionModelChange?.(
|
|
3750
|
+
isAllSelected ? [] : selectableDataInPage.map(getId)
|
|
3751
|
+
);
|
|
3752
|
+
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
3729
3753
|
onCheckboxChange: (0, import_react25.useCallback)(
|
|
3730
3754
|
(event, selectedModel) => {
|
|
3731
3755
|
if (selectedModelSet.has(selectedModel)) {
|
|
@@ -3742,11 +3766,15 @@ function useDataTableRenderer({
|
|
|
3742
3766
|
),
|
|
3743
3767
|
columns,
|
|
3744
3768
|
onTotalSelect: (0, import_react25.useCallback)(() => {
|
|
3769
|
+
const selectableRows = rows.filter((row, i) => {
|
|
3770
|
+
if (!isRowSelectable) return true;
|
|
3771
|
+
return isRowSelectable({ row, id: getId(row, i) });
|
|
3772
|
+
});
|
|
3745
3773
|
onSelectionModelChange?.(
|
|
3746
|
-
isTotalSelected ? [] :
|
|
3774
|
+
isTotalSelected ? [] : selectableRows.map(getId),
|
|
3747
3775
|
!isTotalSelected
|
|
3748
3776
|
);
|
|
3749
|
-
}, [isTotalSelected, rows, onSelectionModelChange, getId])
|
|
3777
|
+
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3750
3778
|
};
|
|
3751
3779
|
}
|
|
3752
3780
|
function Component(props, apiRef) {
|
|
@@ -3756,6 +3784,7 @@ function Component(props, apiRef) {
|
|
|
3756
3784
|
editMode,
|
|
3757
3785
|
selectionModel,
|
|
3758
3786
|
onSelectionModelChange,
|
|
3787
|
+
isRowSelectable,
|
|
3759
3788
|
disableSelectionOnClick,
|
|
3760
3789
|
onRowClick,
|
|
3761
3790
|
pinnedColumns,
|
|
@@ -3803,10 +3832,12 @@ function Component(props, apiRef) {
|
|
|
3803
3832
|
columns,
|
|
3804
3833
|
isAllSelected,
|
|
3805
3834
|
isSelectedRow,
|
|
3835
|
+
isRowSelectable: isRowSelectableCheck,
|
|
3806
3836
|
onAllCheckboxChange,
|
|
3807
3837
|
onCheckboxChange,
|
|
3808
3838
|
getId,
|
|
3809
3839
|
rowCount,
|
|
3840
|
+
selectableRowCount,
|
|
3810
3841
|
page,
|
|
3811
3842
|
pageSize,
|
|
3812
3843
|
onPaginationModelChange,
|
|
@@ -3832,9 +3863,15 @@ function Component(props, apiRef) {
|
|
|
3832
3863
|
const getRowClickHandler = (0, import_react25.useCallback)(
|
|
3833
3864
|
(row, rowId) => (e) => {
|
|
3834
3865
|
onRowClick?.({ row, rowId }, e);
|
|
3835
|
-
checkboxSelection && !disableSelectionOnClick && onCheckboxChange(e, rowId);
|
|
3866
|
+
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
3836
3867
|
},
|
|
3837
|
-
[
|
|
3868
|
+
[
|
|
3869
|
+
onRowClick,
|
|
3870
|
+
checkboxSelection,
|
|
3871
|
+
disableSelectionOnClick,
|
|
3872
|
+
onCheckboxChange,
|
|
3873
|
+
isRowSelectableCheck
|
|
3874
|
+
]
|
|
3838
3875
|
);
|
|
3839
3876
|
const getRowFocusHandler = (0, import_react25.useCallback)(
|
|
3840
3877
|
(rowId) => () => {
|
|
@@ -3849,10 +3886,12 @@ function Component(props, apiRef) {
|
|
|
3849
3886
|
[]
|
|
3850
3887
|
);
|
|
3851
3888
|
const getCheckboxChangeHandler = (0, import_react25.useCallback)(
|
|
3852
|
-
(rowId) => (e) => {
|
|
3853
|
-
|
|
3889
|
+
(rowId, row) => (e) => {
|
|
3890
|
+
if (isRowSelectableCheck(rowId, row)) {
|
|
3891
|
+
onCheckboxChange(e, rowId);
|
|
3892
|
+
}
|
|
3854
3893
|
},
|
|
3855
|
-
[onCheckboxChange]
|
|
3894
|
+
[onCheckboxChange, isRowSelectableCheck]
|
|
3856
3895
|
);
|
|
3857
3896
|
(0, import_react25.useImperativeHandle)(apiRef, () => ({
|
|
3858
3897
|
getRowIndexRelativeToVisibleRows(rowId) {
|
|
@@ -3890,7 +3929,7 @@ function Component(props, apiRef) {
|
|
|
3890
3929
|
justifyContent: "space-between",
|
|
3891
3930
|
alignItems: "center"
|
|
3892
3931
|
},
|
|
3893
|
-
!!checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(
|
|
3932
|
+
!!checkboxSelection && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react25.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react25.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react25.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react25.default.createElement(
|
|
3894
3933
|
Button_default,
|
|
3895
3934
|
{
|
|
3896
3935
|
size: "sm",
|
|
@@ -3935,6 +3974,7 @@ function Component(props, apiRef) {
|
|
|
3935
3974
|
onChange: onAllCheckboxChange,
|
|
3936
3975
|
checked: isAllSelected,
|
|
3937
3976
|
indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
|
|
3977
|
+
disabled: dataInPage.length > 0 && !selectableRowCount,
|
|
3938
3978
|
...checkboxProps
|
|
3939
3979
|
}
|
|
3940
3980
|
)
|
|
@@ -4012,8 +4052,9 @@ function Component(props, apiRef) {
|
|
|
4012
4052
|
RenderCheckbox,
|
|
4013
4053
|
{
|
|
4014
4054
|
onClick: getCheckboxClickHandler(),
|
|
4015
|
-
onChange: getCheckboxChangeHandler(rowId),
|
|
4055
|
+
onChange: getCheckboxChangeHandler(rowId, row),
|
|
4016
4056
|
checked: isSelectedRow(rowId),
|
|
4057
|
+
disabled: !isRowSelectableCheck(rowId, row),
|
|
4017
4058
|
...checkboxProps
|
|
4018
4059
|
}
|
|
4019
4060
|
)
|
package/dist/index.js
CHANGED
|
@@ -3479,7 +3479,8 @@ function useDataTableRenderer({
|
|
|
3479
3479
|
onSelectionModelChange,
|
|
3480
3480
|
editMode,
|
|
3481
3481
|
getId: _getId,
|
|
3482
|
-
isTotalSelected: _isTotalSelected
|
|
3482
|
+
isTotalSelected: _isTotalSelected,
|
|
3483
|
+
isRowSelectable
|
|
3483
3484
|
}) {
|
|
3484
3485
|
const [focusedRowId, setFocusedRowId] = useState6(null);
|
|
3485
3486
|
const [sortModel, setSortModel] = useControlledState(
|
|
@@ -3555,14 +3556,27 @@ function useDataTableRenderer({
|
|
|
3555
3556
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
3556
3557
|
[rows, page, pageSize, paginationMode, pagination]
|
|
3557
3558
|
);
|
|
3559
|
+
const selectableDataInPage = useMemo8(
|
|
3560
|
+
() => dataInPage.filter((row, i) => {
|
|
3561
|
+
if (!isRowSelectable) return true;
|
|
3562
|
+
return isRowSelectable({ row, id: getId(row, i) });
|
|
3563
|
+
}),
|
|
3564
|
+
[dataInPage, isRowSelectable, getId]
|
|
3565
|
+
);
|
|
3558
3566
|
const isAllSelected = useMemo8(
|
|
3559
|
-
() =>
|
|
3560
|
-
|
|
3567
|
+
() => selectableDataInPage.length > 0 && selectableDataInPage.every(
|
|
3568
|
+
(row, i) => selectedModelSet.has(getId(row, i))
|
|
3569
|
+
),
|
|
3570
|
+
[selectableDataInPage, selectedModelSet, getId]
|
|
3561
3571
|
);
|
|
3562
3572
|
const rowCount = totalRowsProp || rows.length;
|
|
3573
|
+
const selectableRowCount = useMemo8(() => {
|
|
3574
|
+
if (!isRowSelectable) return rowCount;
|
|
3575
|
+
return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
|
|
3576
|
+
}, [rows, isRowSelectable, getId, rowCount]);
|
|
3563
3577
|
const isTotalSelected = useMemo8(
|
|
3564
|
-
() => _isTotalSelected ?? (
|
|
3565
|
-
[_isTotalSelected, selectionModel,
|
|
3578
|
+
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
3579
|
+
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
3566
3580
|
);
|
|
3567
3581
|
const columnWidths = useColumnWidths(columnsByField);
|
|
3568
3582
|
const getWidth = useCallback9(
|
|
@@ -3658,9 +3672,10 @@ function useDataTableRenderer({
|
|
|
3658
3672
|
}, [page, rowCount, pageSize, handlePageChange]);
|
|
3659
3673
|
useEffect5(() => {
|
|
3660
3674
|
onSelectionModelChange?.([]);
|
|
3661
|
-
}, [page]);
|
|
3675
|
+
}, [page, onSelectionModelChange]);
|
|
3662
3676
|
return {
|
|
3663
3677
|
rowCount,
|
|
3678
|
+
selectableRowCount,
|
|
3664
3679
|
page,
|
|
3665
3680
|
pageSize,
|
|
3666
3681
|
onPaginationModelChange: handlePageChange,
|
|
@@ -3676,13 +3691,22 @@ function useDataTableRenderer({
|
|
|
3676
3691
|
(model) => selectedModelSet.has(model),
|
|
3677
3692
|
[selectedModelSet]
|
|
3678
3693
|
),
|
|
3694
|
+
isRowSelectable: useCallback9(
|
|
3695
|
+
(rowId, row) => {
|
|
3696
|
+
if (!isRowSelectable) return true;
|
|
3697
|
+
return isRowSelectable({ row, id: rowId });
|
|
3698
|
+
},
|
|
3699
|
+
[isRowSelectable]
|
|
3700
|
+
),
|
|
3679
3701
|
focusedRowId,
|
|
3680
3702
|
onRowFocus: useCallback9((rowId) => {
|
|
3681
3703
|
setFocusedRowId(rowId);
|
|
3682
3704
|
}, []),
|
|
3683
3705
|
onAllCheckboxChange: useCallback9(() => {
|
|
3684
|
-
onSelectionModelChange?.(
|
|
3685
|
-
|
|
3706
|
+
onSelectionModelChange?.(
|
|
3707
|
+
isAllSelected ? [] : selectableDataInPage.map(getId)
|
|
3708
|
+
);
|
|
3709
|
+
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
3686
3710
|
onCheckboxChange: useCallback9(
|
|
3687
3711
|
(event, selectedModel) => {
|
|
3688
3712
|
if (selectedModelSet.has(selectedModel)) {
|
|
@@ -3699,11 +3723,15 @@ function useDataTableRenderer({
|
|
|
3699
3723
|
),
|
|
3700
3724
|
columns,
|
|
3701
3725
|
onTotalSelect: useCallback9(() => {
|
|
3726
|
+
const selectableRows = rows.filter((row, i) => {
|
|
3727
|
+
if (!isRowSelectable) return true;
|
|
3728
|
+
return isRowSelectable({ row, id: getId(row, i) });
|
|
3729
|
+
});
|
|
3702
3730
|
onSelectionModelChange?.(
|
|
3703
|
-
isTotalSelected ? [] :
|
|
3731
|
+
isTotalSelected ? [] : selectableRows.map(getId),
|
|
3704
3732
|
!isTotalSelected
|
|
3705
3733
|
);
|
|
3706
|
-
}, [isTotalSelected, rows, onSelectionModelChange, getId])
|
|
3734
|
+
}, [isTotalSelected, rows, onSelectionModelChange, getId, isRowSelectable])
|
|
3707
3735
|
};
|
|
3708
3736
|
}
|
|
3709
3737
|
function Component(props, apiRef) {
|
|
@@ -3713,6 +3741,7 @@ function Component(props, apiRef) {
|
|
|
3713
3741
|
editMode,
|
|
3714
3742
|
selectionModel,
|
|
3715
3743
|
onSelectionModelChange,
|
|
3744
|
+
isRowSelectable,
|
|
3716
3745
|
disableSelectionOnClick,
|
|
3717
3746
|
onRowClick,
|
|
3718
3747
|
pinnedColumns,
|
|
@@ -3760,10 +3789,12 @@ function Component(props, apiRef) {
|
|
|
3760
3789
|
columns,
|
|
3761
3790
|
isAllSelected,
|
|
3762
3791
|
isSelectedRow,
|
|
3792
|
+
isRowSelectable: isRowSelectableCheck,
|
|
3763
3793
|
onAllCheckboxChange,
|
|
3764
3794
|
onCheckboxChange,
|
|
3765
3795
|
getId,
|
|
3766
3796
|
rowCount,
|
|
3797
|
+
selectableRowCount,
|
|
3767
3798
|
page,
|
|
3768
3799
|
pageSize,
|
|
3769
3800
|
onPaginationModelChange,
|
|
@@ -3789,9 +3820,15 @@ function Component(props, apiRef) {
|
|
|
3789
3820
|
const getRowClickHandler = useCallback9(
|
|
3790
3821
|
(row, rowId) => (e) => {
|
|
3791
3822
|
onRowClick?.({ row, rowId }, e);
|
|
3792
|
-
checkboxSelection && !disableSelectionOnClick && onCheckboxChange(e, rowId);
|
|
3823
|
+
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
3793
3824
|
},
|
|
3794
|
-
[
|
|
3825
|
+
[
|
|
3826
|
+
onRowClick,
|
|
3827
|
+
checkboxSelection,
|
|
3828
|
+
disableSelectionOnClick,
|
|
3829
|
+
onCheckboxChange,
|
|
3830
|
+
isRowSelectableCheck
|
|
3831
|
+
]
|
|
3795
3832
|
);
|
|
3796
3833
|
const getRowFocusHandler = useCallback9(
|
|
3797
3834
|
(rowId) => () => {
|
|
@@ -3806,10 +3843,12 @@ function Component(props, apiRef) {
|
|
|
3806
3843
|
[]
|
|
3807
3844
|
);
|
|
3808
3845
|
const getCheckboxChangeHandler = useCallback9(
|
|
3809
|
-
(rowId) => (e) => {
|
|
3810
|
-
|
|
3846
|
+
(rowId, row) => (e) => {
|
|
3847
|
+
if (isRowSelectableCheck(rowId, row)) {
|
|
3848
|
+
onCheckboxChange(e, rowId);
|
|
3849
|
+
}
|
|
3811
3850
|
},
|
|
3812
|
-
[onCheckboxChange]
|
|
3851
|
+
[onCheckboxChange, isRowSelectableCheck]
|
|
3813
3852
|
);
|
|
3814
3853
|
useImperativeHandle2(apiRef, () => ({
|
|
3815
3854
|
getRowIndexRelativeToVisibleRows(rowId) {
|
|
@@ -3847,7 +3886,7 @@ function Component(props, apiRef) {
|
|
|
3847
3886
|
justifyContent: "space-between",
|
|
3848
3887
|
alignItems: "center"
|
|
3849
3888
|
},
|
|
3850
|
-
!!checkboxSelection && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ React23.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(
|
|
3889
|
+
!!checkboxSelection && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ React23.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ React23.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ React23.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ React23.createElement(
|
|
3851
3890
|
Button_default,
|
|
3852
3891
|
{
|
|
3853
3892
|
size: "sm",
|
|
@@ -3892,6 +3931,7 @@ function Component(props, apiRef) {
|
|
|
3892
3931
|
onChange: onAllCheckboxChange,
|
|
3893
3932
|
checked: isAllSelected,
|
|
3894
3933
|
indeterminate: (selectionModel || []).length > 0 && !isAllSelected,
|
|
3934
|
+
disabled: dataInPage.length > 0 && !selectableRowCount,
|
|
3895
3935
|
...checkboxProps
|
|
3896
3936
|
}
|
|
3897
3937
|
)
|
|
@@ -3969,8 +4009,9 @@ function Component(props, apiRef) {
|
|
|
3969
4009
|
RenderCheckbox,
|
|
3970
4010
|
{
|
|
3971
4011
|
onClick: getCheckboxClickHandler(),
|
|
3972
|
-
onChange: getCheckboxChangeHandler(rowId),
|
|
4012
|
+
onChange: getCheckboxChangeHandler(rowId, row),
|
|
3973
4013
|
checked: isSelectedRow(rowId),
|
|
4014
|
+
disabled: !isRowSelectableCheck(rowId, row),
|
|
3974
4015
|
...checkboxProps
|
|
3975
4016
|
}
|
|
3976
4017
|
)
|