File tree Expand file tree Collapse file tree 2 files changed +20
-5
lines changed Expand file tree Collapse file tree 2 files changed +20
-5
lines changed Original file line number Diff line number Diff line change @@ -13,6 +13,7 @@ const rows: TableRowType[] = [
13
13
{ label : "Maria Anders" } ,
14
14
{ label : "Germany" } ,
15
15
] ,
16
+ isIndeterminate : true ,
16
17
} ,
17
18
{
18
19
id : "row-2" ,
@@ -64,20 +65,31 @@ export const Selectable: StoryObj<typeof Table> = {
64
65
isSelectable : true ,
65
66
selectedIds : [ ] ,
66
67
} ,
67
- render : ( { selectedIds, ...props } ) => {
68
+ render : ( { selectedIds, rows : rowsProp , ...props } ) => {
69
+ const [ rows , setRows ] = useState ( rowsProp ) ;
68
70
const [ selectedRows , setSelectedRows ] = useState ( selectedIds ) ;
69
71
70
72
useEffect ( ( ) => {
71
73
setSelectedRows ( selectedIds ) ;
72
74
} , [ selectedIds ] ) ;
73
75
76
+ useEffect ( ( ) => {
77
+ setRows ( prevState =>
78
+ prevState . map ( row => ( {
79
+ ...row ,
80
+ isIndeterminate : selectedRows ?. includes ( row . id ) ? false : row . isIndeterminate ,
81
+ } ) )
82
+ ) ;
83
+ } , [ selectedRows ] ) ;
84
+
74
85
return (
75
86
< Table
76
87
{ ...props }
88
+ rows = { rows }
77
89
selectedIds = { selectedRows }
78
- onSelect = { selectedItems =>
79
- setSelectedRows ( selectedItems . map ( ( { item : { id } } ) => id ) )
80
- }
90
+ onSelect = { selectedItems => {
91
+ setSelectedRows ( selectedItems . map ( ( { item : { id } } ) => id ) ) ;
92
+ } }
81
93
/>
82
94
) ;
83
95
} ,
Original file line number Diff line number Diff line change @@ -380,6 +380,8 @@ export interface TableRowType
380
380
isDisabled ?: boolean ;
381
381
isDeleted ?: boolean ;
382
382
isActive ?: boolean ;
383
+ /** only works with <Table isSelectable={true} /> */
384
+ isIndeterminate ?: boolean ;
383
385
}
384
386
385
387
interface CommonTableProps
@@ -433,6 +435,7 @@ const TableBodyRow = ({
433
435
onSelect,
434
436
isSelectable,
435
437
isSelected,
438
+ isIndeterminate,
436
439
onDelete,
437
440
onEdit,
438
441
isDeleted,
@@ -458,7 +461,7 @@ const TableBodyRow = ({
458
461
{ isSelectable && (
459
462
< SelectData $size = { size } >
460
463
< Checkbox
461
- checked = { isSelected }
464
+ checked = { isIndeterminate ? "indeterminate" : isSelected }
462
465
onCheckedChange = { onSelect }
463
466
disabled = { isDisabled || isDeleted }
464
467
/>
You can’t perform that action at this time.
0 commit comments