From 29acb172510fa62b97682bfe189c8fca06118c88 Mon Sep 17 00:00:00 2001 From: Rastislav Hepner Date: Wed, 22 Apr 2026 18:38:08 +0200 Subject: [PATCH 1/2] feat(BulkSelect): disable Select none when no rows are selected --- packages/module/src/BulkSelect/BulkSelect.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/module/src/BulkSelect/BulkSelect.tsx b/packages/module/src/BulkSelect/BulkSelect.tsx index 0f0df9b1..fd702886 100644 --- a/packages/module/src/BulkSelect/BulkSelect.tsx +++ b/packages/module/src/BulkSelect/BulkSelect.tsx @@ -88,7 +88,12 @@ export const BulkSelect: FC = ({ const splitButtonDropdownItems = useMemo( () => ( <> - + {selectNoneLabel} {isDataPaginated && ( @@ -103,7 +108,7 @@ export const BulkSelect: FC = ({ )} ), - [ isDataPaginated, canSelectAll, ouiaId, selectNoneLabel, selectPageLabel, selectAllLabel, pageCount, totalCount ] + [ isDataPaginated, canSelectAll, ouiaId, selectNoneLabel, selectPageLabel, selectAllLabel, pageCount, totalCount, selectedCount ] ); const selectedLabelText = selectedLabel(selectedCount); From 09a5d613ce5c75c726f971aaae391ab4da486d76 Mon Sep 17 00:00:00 2001 From: Rastislav Hepner Date: Wed, 22 Apr 2026 18:38:46 +0200 Subject: [PATCH 2/2] test(BulkSelect): add unit tests for disabling Select none option AssistedBy: Cursor --- .../module/src/BulkSelect/BulkSelect.test.tsx | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/packages/module/src/BulkSelect/BulkSelect.test.tsx b/packages/module/src/BulkSelect/BulkSelect.test.tsx index ad76aef6..b7963fa8 100644 --- a/packages/module/src/BulkSelect/BulkSelect.test.tsx +++ b/packages/module/src/BulkSelect/BulkSelect.test.tsx @@ -100,4 +100,40 @@ describe('BulkSelect component', () => { expect(screen.getByText('Sélectionner la page (5)')).toBeInTheDocument(); expect(screen.getByText('Tout sélectionner (10)')).toBeInTheDocument(); }); + + test('should disable Select none when nothing is selected', async () => { + const user = userEvent.setup(); + render( + null} + /> + ); + + await user.click(screen.getByLabelText('Bulk select toggle')); + expect(screen.getByRole('menuitem', { name: 'Select none (0)' })).toBeDisabled(); + }); + + test('should enable Select none when at least one row is selected', async () => { + const user = userEvent.setup(); + render( + null} + /> + ); + + await user.click(screen.getByLabelText('Bulk select toggle')); + expect(screen.getByRole('menuitem', { name: 'Select none (0)' })).not.toBeDisabled(); + }); }); \ No newline at end of file