@coveord/plasma-mantine 53.1.4 → 54.0.0
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/.eslintrc.js +1 -5
- package/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +36 -35
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/button/Button.d.ts +1 -2
- package/dist/cjs/components/button/Button.d.ts.map +1 -1
- package/dist/cjs/components/button/Button.js.map +1 -1
- package/dist/cjs/components/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/cjs/components/code-editor/CodeEditor.js +2 -4
- package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/cjs/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
- package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts +10 -2
- package/dist/cjs/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.js +2 -1
- package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.d.ts +2 -5
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js +5 -5
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmTarget.d.ts +2 -2
- package/dist/cjs/components/inline-confirm/InlineConfirmTarget.d.ts.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmTarget.js +3 -3
- package/dist/cjs/components/inline-confirm/InlineConfirmTarget.js.map +1 -1
- package/dist/cjs/components/table/Table.d.ts +68 -55
- package/dist/cjs/components/table/Table.d.ts.map +1 -1
- package/dist/cjs/components/table/Table.js +129 -174
- package/dist/cjs/components/table/Table.js.map +1 -1
- package/dist/cjs/components/table/Table.module.css +8 -1
- package/dist/cjs/components/table/Table.types.d.ts +52 -147
- package/dist/cjs/components/table/Table.types.d.ts.map +1 -1
- package/dist/cjs/components/table/TableContext.d.ts +15 -10
- package/dist/cjs/components/table/TableContext.d.ts.map +1 -1
- package/dist/cjs/components/table/TableContext.js +5 -20
- package/dist/cjs/components/table/TableContext.js.map +1 -1
- package/dist/cjs/components/table/index.d.ts +3 -3
- package/dist/cjs/components/table/index.d.ts.map +1 -1
- package/dist/cjs/components/table/index.js +5 -1
- package/dist/cjs/components/table/index.js.map +1 -1
- package/dist/cjs/components/table/layouts/TableLayoutControl.js +6 -6
- package/dist/cjs/components/table/layouts/TableLayoutControl.js.map +1 -1
- package/dist/cjs/components/table/layouts/TableLayouts.d.ts +1 -22
- package/dist/cjs/components/table/layouts/TableLayouts.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/TableLayouts.js.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayout.d.ts +1 -2
- package/dist/cjs/components/table/layouts/row-layout/RowLayout.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayout.js.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.d.ts +2 -3
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.js +17 -18
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutBody.js.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts +2 -3
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js +9 -8
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.d.ts +1 -5
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.d.ts.map +1 -1
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.js +3 -9
- package/dist/cjs/components/table/layouts/row-layout/RowLayoutIcon.js.map +1 -1
- package/dist/cjs/components/table/table-actions/TableActionContext.d.ts +9 -0
- package/dist/cjs/components/table/table-actions/TableActionContext.d.ts.map +1 -0
- package/dist/cjs/components/table/table-actions/TableActionContext.js +24 -0
- package/dist/cjs/components/table/table-actions/TableActionContext.js.map +1 -0
- package/dist/cjs/components/table/table-actions/TableActionItem.d.ts +44 -0
- package/dist/cjs/components/table/table-actions/TableActionItem.d.ts.map +1 -0
- package/dist/cjs/components/table/table-actions/TableActionItem.js +59 -0
- package/dist/cjs/components/table/table-actions/TableActionItem.js.map +1 -0
- package/dist/cjs/components/table/table-actions/TableActionsList.d.ts +37 -0
- package/dist/cjs/components/table/table-actions/TableActionsList.d.ts.map +1 -0
- package/dist/cjs/components/table/table-actions/TableActionsList.js +217 -0
- package/dist/cjs/components/table/table-actions/TableActionsList.js.map +1 -0
- package/dist/cjs/components/table/table-actions/TableHeaderActions.d.ts +11 -0
- package/dist/cjs/components/table/table-actions/TableHeaderActions.d.ts.map +1 -0
- package/dist/cjs/components/table/table-actions/TableHeaderActions.js +59 -0
- package/dist/cjs/components/table/table-actions/TableHeaderActions.js.map +1 -0
- package/dist/cjs/components/table/table-actions/index.d.ts +3 -0
- package/dist/cjs/components/table/table-actions/index.d.ts.map +1 -0
- package/dist/cjs/components/table/table-actions/index.js +9 -0
- package/dist/cjs/components/table/table-actions/index.js.map +1 -0
- package/dist/cjs/components/table/table-column/TableActionsColumn.d.ts +6 -0
- package/dist/cjs/components/table/table-column/TableActionsColumn.d.ts.map +1 -0
- package/dist/cjs/components/table/table-column/TableActionsColumn.js +53 -0
- package/dist/cjs/components/table/table-column/TableActionsColumn.js.map +1 -0
- package/dist/cjs/components/table/table-column/TableCollapsibleColumn.d.ts.map +1 -1
- package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js +6 -2
- package/dist/cjs/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
- package/dist/cjs/components/table/table-column/TableSelectableColumn.d.ts.map +1 -1
- package/dist/cjs/components/table/table-column/TableSelectableColumn.js +4 -0
- package/dist/cjs/components/table/table-column/TableSelectableColumn.js.map +1 -1
- package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts +7 -12
- package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -1
- package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js +24 -20
- package/dist/cjs/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -1
- package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.d.ts +1 -2
- package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.d.ts.map +1 -1
- package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.js +7 -7
- package/dist/cjs/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
- package/dist/cjs/components/table/table-filter/TableFilter.d.ts +1 -2
- package/dist/cjs/components/table/table-filter/TableFilter.d.ts.map +1 -1
- package/dist/cjs/components/table/table-filter/TableFilter.js +11 -16
- package/dist/cjs/components/table/table-filter/TableFilter.js.map +1 -1
- package/dist/cjs/components/table/table-header/TableHeader.d.ts +7 -2
- package/dist/cjs/components/table/table-header/TableHeader.d.ts.map +1 -1
- package/dist/cjs/components/table/table-header/TableHeader.js +15 -12
- package/dist/cjs/components/table/table-header/TableHeader.js.map +1 -1
- package/dist/cjs/components/table/table-header/Th.d.ts +1 -2
- package/dist/cjs/components/table/table-header/Th.d.ts.map +1 -1
- package/dist/cjs/components/table/table-header/Th.js +7 -3
- package/dist/cjs/components/table/table-header/Th.js.map +1 -1
- package/dist/cjs/components/table/table-last-updated/TableLastUpdated.d.ts +1 -3
- package/dist/cjs/components/table/table-last-updated/TableLastUpdated.d.ts.map +1 -1
- package/dist/cjs/components/table/table-last-updated/TableLastUpdated.js +6 -9
- package/dist/cjs/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
- package/dist/cjs/components/table/table-no-data/TableNoData.d.ts +6 -0
- package/dist/cjs/components/table/table-no-data/TableNoData.d.ts.map +1 -0
- package/dist/cjs/components/table/{table-consumer/TableConsumer.js → table-no-data/TableNoData.js} +4 -4
- package/dist/cjs/components/table/table-no-data/TableNoData.js.map +1 -0
- package/dist/cjs/components/table/table-pagination/TablePagination.d.ts.map +1 -1
- package/dist/cjs/components/table/table-pagination/TablePagination.js +9 -11
- package/dist/cjs/components/table/table-pagination/TablePagination.js.map +1 -1
- package/dist/cjs/components/table/table-pagination/TablePagination.types.d.ts +0 -4
- package/dist/cjs/components/table/table-pagination/TablePagination.types.d.ts.map +1 -1
- package/dist/cjs/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
- package/dist/cjs/components/table/table-per-page/TablePerPage.js +16 -16
- package/dist/cjs/components/table/table-per-page/TablePerPage.js.map +1 -1
- package/dist/cjs/components/table/table-predicate/TablePredicate.d.ts +1 -2
- package/dist/cjs/components/table/table-predicate/TablePredicate.d.ts.map +1 -1
- package/dist/cjs/components/table/table-predicate/TablePredicate.js +12 -14
- package/dist/cjs/components/table/table-predicate/TablePredicate.js.map +1 -1
- package/dist/cjs/components/table/use-table.d.ts +182 -0
- package/dist/cjs/components/table/use-table.d.ts.map +1 -0
- package/dist/cjs/components/table/use-table.js +145 -0
- package/dist/cjs/components/table/use-table.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/theme/Theme.d.ts.map +1 -1
- package/dist/cjs/theme/Theme.js +0 -1
- package/dist/cjs/theme/Theme.js.map +1 -1
- package/dist/esm/components/button/Button.d.ts +1 -2
- package/dist/esm/components/button/Button.d.ts.map +1 -1
- package/dist/esm/components/button/Button.js.map +1 -1
- package/dist/esm/components/code-editor/CodeEditor.d.ts.map +1 -1
- package/dist/esm/components/code-editor/CodeEditor.js +2 -4
- package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/esm/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
- package/dist/esm/components/inline-confirm/InlineConfirm.d.ts +10 -2
- package/dist/esm/components/inline-confirm/InlineConfirm.d.ts.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.js +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.d.ts +2 -5
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js +4 -4
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmTarget.d.ts +2 -2
- package/dist/esm/components/inline-confirm/InlineConfirmTarget.d.ts.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmTarget.js +2 -2
- package/dist/esm/components/inline-confirm/InlineConfirmTarget.js.map +1 -1
- package/dist/esm/components/table/Table.d.ts +68 -55
- package/dist/esm/components/table/Table.d.ts.map +1 -1
- package/dist/esm/components/table/Table.js +122 -157
- package/dist/esm/components/table/Table.js.map +1 -1
- package/dist/esm/components/table/Table.module.css +8 -1
- package/dist/esm/components/table/Table.types.d.ts +52 -147
- package/dist/esm/components/table/Table.types.d.ts.map +1 -1
- package/dist/esm/components/table/Table.types.js.map +1 -1
- package/dist/esm/components/table/TableContext.d.ts +15 -10
- package/dist/esm/components/table/TableContext.d.ts.map +1 -1
- package/dist/esm/components/table/TableContext.js +1 -10
- package/dist/esm/components/table/TableContext.js.map +1 -1
- package/dist/esm/components/table/index.d.ts +3 -3
- package/dist/esm/components/table/index.d.ts.map +1 -1
- package/dist/esm/components/table/index.js +2 -1
- package/dist/esm/components/table/index.js.map +1 -1
- package/dist/esm/components/table/layouts/TableLayoutControl.js +4 -4
- package/dist/esm/components/table/layouts/TableLayoutControl.js.map +1 -1
- package/dist/esm/components/table/layouts/TableLayouts.d.ts +1 -22
- package/dist/esm/components/table/layouts/TableLayouts.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/TableLayouts.js.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayout.d.ts +1 -2
- package/dist/esm/components/table/layouts/row-layout/RowLayout.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayout.js.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.d.ts +2 -3
- package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.js +13 -11
- package/dist/esm/components/table/layouts/row-layout/RowLayoutBody.js.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts +2 -3
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js +5 -5
- package/dist/esm/components/table/layouts/row-layout/RowLayoutHeader.js.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.d.ts +1 -5
- package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.d.ts.map +1 -1
- package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.js +2 -8
- package/dist/esm/components/table/layouts/row-layout/RowLayoutIcon.js.map +1 -1
- package/dist/esm/components/table/table-actions/TableActionContext.d.ts +9 -0
- package/dist/esm/components/table/table-actions/TableActionContext.d.ts.map +1 -0
- package/dist/esm/components/table/table-actions/TableActionContext.js +4 -0
- package/dist/esm/components/table/table-actions/TableActionContext.js.map +1 -0
- package/dist/esm/components/table/table-actions/TableActionItem.d.ts +44 -0
- package/dist/esm/components/table/table-actions/TableActionItem.d.ts.map +1 -0
- package/dist/esm/components/table/table-actions/TableActionItem.js +40 -0
- package/dist/esm/components/table/table-actions/TableActionItem.js.map +1 -0
- package/dist/esm/components/table/table-actions/TableActionsList.d.ts +37 -0
- package/dist/esm/components/table/table-actions/TableActionsList.d.ts.map +1 -0
- package/dist/esm/components/table/table-actions/TableActionsList.js +187 -0
- package/dist/esm/components/table/table-actions/TableActionsList.js.map +1 -0
- package/dist/esm/components/table/table-actions/TableHeaderActions.d.ts +11 -0
- package/dist/esm/components/table/table-actions/TableHeaderActions.d.ts.map +1 -0
- package/dist/esm/components/table/table-actions/TableHeaderActions.js +43 -0
- package/dist/esm/components/table/table-actions/TableHeaderActions.js.map +1 -0
- package/dist/esm/components/table/table-actions/index.d.ts +3 -0
- package/dist/esm/components/table/table-actions/index.d.ts.map +1 -0
- package/dist/esm/components/table/table-actions/index.js +4 -0
- package/dist/esm/components/table/table-actions/index.js.map +1 -0
- package/dist/esm/components/table/table-column/TableActionsColumn.d.ts +6 -0
- package/dist/esm/components/table/table-column/TableActionsColumn.d.ts.map +1 -0
- package/dist/esm/components/table/table-column/TableActionsColumn.js +40 -0
- package/dist/esm/components/table/table-column/TableActionsColumn.js.map +1 -0
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.d.ts.map +1 -1
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.js +7 -3
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
- package/dist/esm/components/table/table-column/TableSelectableColumn.d.ts.map +1 -1
- package/dist/esm/components/table/table-column/TableSelectableColumn.js +4 -0
- package/dist/esm/components/table/table-column/TableSelectableColumn.js.map +1 -1
- package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts +7 -12
- package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.d.ts.map +1 -1
- package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js +22 -20
- package/dist/esm/components/table/table-columns-selector/TableColumnsSelector.js.map +1 -1
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.d.ts +1 -2
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.d.ts.map +1 -1
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js +8 -8
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
- package/dist/esm/components/table/table-filter/TableFilter.d.ts +1 -2
- package/dist/esm/components/table/table-filter/TableFilter.d.ts.map +1 -1
- package/dist/esm/components/table/table-filter/TableFilter.js +14 -18
- package/dist/esm/components/table/table-filter/TableFilter.js.map +1 -1
- package/dist/esm/components/table/table-header/TableHeader.d.ts +7 -2
- package/dist/esm/components/table/table-header/TableHeader.d.ts.map +1 -1
- package/dist/esm/components/table/table-header/TableHeader.js +15 -13
- package/dist/esm/components/table/table-header/TableHeader.js.map +1 -1
- package/dist/esm/components/table/table-header/Th.d.ts +1 -2
- package/dist/esm/components/table/table-header/Th.d.ts.map +1 -1
- package/dist/esm/components/table/table-header/Th.js +8 -4
- package/dist/esm/components/table/table-header/Th.js.map +1 -1
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.d.ts +1 -3
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.d.ts.map +1 -1
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.js +6 -8
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
- package/dist/esm/components/table/table-no-data/TableNoData.d.ts +6 -0
- package/dist/esm/components/table/table-no-data/TableNoData.d.ts.map +1 -0
- package/dist/esm/components/table/table-no-data/TableNoData.js +6 -0
- package/dist/esm/components/table/table-no-data/TableNoData.js.map +1 -0
- package/dist/esm/components/table/table-pagination/TablePagination.d.ts.map +1 -1
- package/dist/esm/components/table/table-pagination/TablePagination.js +10 -13
- package/dist/esm/components/table/table-pagination/TablePagination.js.map +1 -1
- package/dist/esm/components/table/table-pagination/TablePagination.types.d.ts +0 -4
- package/dist/esm/components/table/table-pagination/TablePagination.types.d.ts.map +1 -1
- package/dist/esm/components/table/table-pagination/TablePagination.types.js.map +1 -1
- package/dist/esm/components/table/table-per-page/TablePerPage.d.ts.map +1 -1
- package/dist/esm/components/table/table-per-page/TablePerPage.js +13 -12
- package/dist/esm/components/table/table-per-page/TablePerPage.js.map +1 -1
- package/dist/esm/components/table/table-predicate/TablePredicate.d.ts +1 -2
- package/dist/esm/components/table/table-predicate/TablePredicate.d.ts.map +1 -1
- package/dist/esm/components/table/table-predicate/TablePredicate.js +14 -18
- package/dist/esm/components/table/table-predicate/TablePredicate.js.map +1 -1
- package/dist/esm/components/table/use-table.d.ts +182 -0
- package/dist/esm/components/table/use-table.d.ts.map +1 -0
- package/dist/esm/components/table/use-table.js +122 -0
- package/dist/esm/components/table/use-table.js.map +1 -0
- package/dist/esm/index.d.ts +11 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/theme/Theme.d.ts.map +1 -1
- package/dist/esm/theme/Theme.js +0 -1
- package/dist/esm/theme/Theme.js.map +1 -1
- package/package.json +36 -22
- package/src/__tests__/Utils.tsx +3 -1
- package/src/components/button/Button.tsx +3 -1
- package/src/components/code-editor/CodeEditor.tsx +1 -7
- package/src/components/header/__tests__/__snapshots__/Header.spec.tsx.snap +0 -5
- package/src/components/inline-confirm/InlineConfirm.tsx +12 -4
- package/src/components/inline-confirm/InlineConfirmPrompt.tsx +6 -9
- package/src/components/inline-confirm/InlineConfirmTarget.tsx +9 -4
- package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +37 -12
- package/src/components/table/Table.module.css +8 -1
- package/src/components/table/Table.tsx +148 -170
- package/src/components/table/Table.types.ts +57 -160
- package/src/components/table/TableContext.tsx +17 -16
- package/src/components/table/__tests__/Table.spec.tsx +176 -200
- package/src/components/table/__tests__/TableActions.spec.tsx +142 -31
- package/src/components/table/__tests__/TableCollapsibleColumn.spec.tsx +88 -0
- package/src/components/table/__tests__/TableColumnsSelector.spec.tsx +160 -119
- package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +13 -17
- package/src/components/table/__tests__/TableFilter.spec.tsx +52 -96
- package/src/components/table/__tests__/TableLastUpdated.spec.tsx +18 -37
- package/src/components/table/__tests__/TablePagination.spec.tsx +84 -100
- package/src/components/table/__tests__/TablePerPage.spec.tsx +81 -104
- package/src/components/table/__tests__/TablePredicate.spec.tsx +26 -80
- package/src/components/table/__tests__/Th.spec.tsx +24 -19
- package/src/components/table/index.ts +3 -9
- package/src/components/table/layouts/TableLayoutControl.tsx +4 -4
- package/src/components/table/layouts/TableLayouts.tsx +0 -22
- package/src/components/table/layouts/__tests__/RowLayout.spec.tsx +210 -182
- package/src/components/table/layouts/row-layout/RowLayout.tsx +2 -2
- package/src/components/table/layouts/row-layout/RowLayoutBody.tsx +17 -17
- package/src/components/table/layouts/row-layout/RowLayoutHeader.tsx +18 -9
- package/src/components/table/layouts/row-layout/RowLayoutIcon.tsx +3 -8
- package/src/components/table/table-actions/TableActionContext.ts +9 -0
- package/src/components/table/table-actions/TableActionItem.tsx +80 -0
- package/src/components/table/table-actions/TableActionsList.tsx +209 -0
- package/src/components/table/table-actions/TableHeaderActions.tsx +56 -0
- package/src/components/table/table-actions/index.ts +2 -0
- package/src/components/table/table-column/TableActionsColumn.tsx +39 -0
- package/src/components/table/table-column/TableCollapsibleColumn.tsx +7 -3
- package/src/components/table/table-column/TableSelectableColumn.tsx +4 -0
- package/src/components/table/table-columns-selector/TableColumnsSelector.tsx +33 -28
- package/src/components/table/table-date-range-picker/TableDateRangePicker.tsx +9 -11
- package/src/components/table/table-filter/TableFilter.tsx +12 -18
- package/src/components/table/table-header/TableHeader.tsx +32 -15
- package/src/components/table/table-header/Th.tsx +8 -7
- package/src/components/table/table-last-updated/TableLastUpdated.tsx +7 -10
- package/src/components/table/table-no-data/TableNoData.tsx +7 -0
- package/src/components/table/table-pagination/TablePagination.tsx +8 -11
- package/src/components/table/table-pagination/TablePagination.types.ts +0 -4
- package/src/components/table/table-per-page/TablePerPage.tsx +8 -10
- package/src/components/table/table-predicate/TablePredicate.tsx +21 -17
- package/src/components/table/use-table.ts +323 -0
- package/src/index.ts +11 -1
- package/src/theme/Theme.tsx +0 -1
- package/dist/cjs/components/table/table-actions/TableActions.d.ts +0 -38
- package/dist/cjs/components/table/table-actions/TableActions.d.ts.map +0 -1
- package/dist/cjs/components/table/table-actions/TableActions.js +0 -47
- package/dist/cjs/components/table/table-actions/TableActions.js.map +0 -1
- package/dist/cjs/components/table/table-consumer/TableConsumer.d.ts +0 -5
- package/dist/cjs/components/table/table-consumer/TableConsumer.d.ts.map +0 -1
- package/dist/cjs/components/table/table-consumer/TableConsumer.js.map +0 -1
- package/dist/cjs/hooks/useRowSelection.d.ts +0 -10
- package/dist/cjs/hooks/useRowSelection.d.ts.map +0 -1
- package/dist/cjs/hooks/useRowSelection.js +0 -80
- package/dist/cjs/hooks/useRowSelection.js.map +0 -1
- package/dist/esm/components/table/table-actions/TableActions.d.ts +0 -38
- package/dist/esm/components/table/table-actions/TableActions.d.ts.map +0 -1
- package/dist/esm/components/table/table-actions/TableActions.js +0 -29
- package/dist/esm/components/table/table-actions/TableActions.js.map +0 -1
- package/dist/esm/components/table/table-consumer/TableConsumer.d.ts +0 -5
- package/dist/esm/components/table/table-consumer/TableConsumer.d.ts.map +0 -1
- package/dist/esm/components/table/table-consumer/TableConsumer.js +0 -6
- package/dist/esm/components/table/table-consumer/TableConsumer.js.map +0 -1
- package/dist/esm/hooks/useRowSelection.d.ts +0 -10
- package/dist/esm/hooks/useRowSelection.d.ts.map +0 -1
- package/dist/esm/hooks/useRowSelection.js +0 -59
- package/dist/esm/hooks/useRowSelection.js.map +0 -1
- package/src/components/table/table-actions/TableActions.tsx +0 -67
- package/src/components/table/table-consumer/TableConsumer.tsx +0 -3
- package/src/hooks/useRowSelection.ts +0 -76
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {Box} from '@mantine/core';
|
|
2
2
|
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
3
|
-
import {render, screen, userEvent, waitFor} from '@test-utils';
|
|
3
|
+
import {render, screen, userEvent, waitFor, within} from '@test-utils';
|
|
4
4
|
import {Table} from '../Table';
|
|
5
5
|
import {TableColumnsSelector} from '../table-columns-selector/TableColumnsSelector';
|
|
6
|
+
import {useTable} from '../use-table';
|
|
6
7
|
|
|
7
8
|
const mockData = [
|
|
8
9
|
{
|
|
@@ -21,13 +22,6 @@ const mockData = [
|
|
|
21
22
|
},
|
|
22
23
|
];
|
|
23
24
|
|
|
24
|
-
const columnNames: Record<string, string> = {
|
|
25
|
-
name: 'Name',
|
|
26
|
-
age: 'Age',
|
|
27
|
-
email: 'Email',
|
|
28
|
-
phone: 'Phone',
|
|
29
|
-
};
|
|
30
|
-
|
|
31
25
|
type RowData = {
|
|
32
26
|
name: string;
|
|
33
27
|
age: number;
|
|
@@ -37,92 +31,107 @@ type RowData = {
|
|
|
37
31
|
};
|
|
38
32
|
|
|
39
33
|
const columnHelper = createColumnHelper<RowData>();
|
|
40
|
-
const
|
|
41
|
-
columnHelper.accessor('name', {enableSorting: false}),
|
|
42
|
-
columnHelper.accessor('age', {enableSorting: false}),
|
|
43
|
-
columnHelper.accessor('email', {enableSorting: false}),
|
|
44
|
-
columnHelper.accessor('phone', {enableSorting: false}),
|
|
34
|
+
const baseColumns: Array<ColumnDef<RowData>> = [
|
|
35
|
+
columnHelper.accessor('name', {header: 'Name', enableSorting: false}),
|
|
36
|
+
columnHelper.accessor('age', {header: 'Age', enableSorting: false}),
|
|
37
|
+
columnHelper.accessor('email', {header: 'Email', enableSorting: false}),
|
|
38
|
+
columnHelper.accessor('phone', {header: 'Phone', enableSorting: false}),
|
|
45
39
|
Table.CollapsibleColumn as ColumnDef<RowData>,
|
|
46
40
|
];
|
|
47
41
|
|
|
48
42
|
describe('TableColumnsSelector', () => {
|
|
49
43
|
it('render the edit button in the table header', () => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
44
|
+
const Fixture = () => {
|
|
45
|
+
const store = useTable<RowData>();
|
|
46
|
+
return (
|
|
47
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
48
|
+
<Table.Header>
|
|
49
|
+
<TableColumnsSelector />
|
|
50
|
+
</Table.Header>
|
|
51
|
+
</Table>
|
|
52
|
+
);
|
|
53
|
+
};
|
|
54
|
+
render(<Fixture />);
|
|
57
55
|
|
|
58
56
|
expect(screen.getByRole('button', {name: 'Edit columns'})).toBeVisible();
|
|
59
57
|
expect(screen.queryByRole('button', {name: 'Edit columns (4)'})).not.toBeInTheDocument();
|
|
60
58
|
});
|
|
61
59
|
|
|
62
60
|
it('renders the custom label when defined', () => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
const Fixture = () => {
|
|
62
|
+
const store = useTable<RowData>();
|
|
63
|
+
return (
|
|
64
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
65
|
+
<Table.Header>
|
|
66
|
+
<TableColumnsSelector label="Custom label" />
|
|
67
|
+
</Table.Header>
|
|
68
|
+
</Table>
|
|
69
|
+
);
|
|
70
|
+
};
|
|
71
|
+
render(<Fixture />);
|
|
70
72
|
|
|
71
73
|
expect(screen.getByRole('button', {name: 'Custom label'})).toBeVisible();
|
|
72
74
|
});
|
|
73
75
|
|
|
74
76
|
it('renders the count of visible columns if showVisibleCountLabel is true', () => {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
const Fixture = () => {
|
|
78
|
+
const store = useTable<RowData>();
|
|
79
|
+
return (
|
|
80
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
81
|
+
<Table.Header>
|
|
82
|
+
<TableColumnsSelector showVisibleCountLabel />
|
|
83
|
+
</Table.Header>
|
|
84
|
+
</Table>
|
|
85
|
+
);
|
|
86
|
+
};
|
|
87
|
+
render(<Fixture />);
|
|
82
88
|
|
|
83
89
|
expect(screen.getByRole('button', {name: 'Edit columns (4)'})).toBeVisible();
|
|
84
90
|
});
|
|
85
91
|
|
|
86
92
|
it('renders all columns in the dropdown, except the collapsible and the multiselectRow by default', async () => {
|
|
87
93
|
const user = userEvent.setup();
|
|
88
|
-
|
|
89
|
-
<
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
const Fixture = () => {
|
|
95
|
+
const store = useTable<RowData>({enableMultiRowSelection: true});
|
|
96
|
+
return (
|
|
97
|
+
<Table
|
|
98
|
+
store={store}
|
|
99
|
+
data={mockData}
|
|
100
|
+
columns={baseColumns}
|
|
101
|
+
getRowExpandedContent={(datum) => <Box py="xs">{datum.body}</Box>}
|
|
102
|
+
>
|
|
103
|
+
<Table.Header>
|
|
104
|
+
<TableColumnsSelector />
|
|
105
|
+
</Table.Header>
|
|
106
|
+
</Table>
|
|
107
|
+
);
|
|
108
|
+
};
|
|
109
|
+
render(<Fixture />);
|
|
100
110
|
|
|
101
111
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
expect(
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
await waitFor(() => expect(screen.getByRole('checkbox', {name: 'Phone'})).toBeVisible());
|
|
111
|
-
|
|
112
|
-
// columns are not in the dropdown
|
|
113
|
-
expect(screen.queryByRole('checkbox', {name: /collapsible/i})).not.toBeInTheDocument();
|
|
114
|
-
expect(screen.queryByRole('checkbox', {name: 'select'})).not.toBeInTheDocument();
|
|
112
|
+
const dropdown = screen.getByRole('dialog', {name: 'Edit columns'});
|
|
113
|
+
const columnsCheckboxes = within(dropdown).getAllByRole('checkbox');
|
|
114
|
+
|
|
115
|
+
expect(columnsCheckboxes).toHaveLength(4);
|
|
116
|
+
expect(columnsCheckboxes[0]).toHaveAccessibleName('Name');
|
|
117
|
+
expect(columnsCheckboxes[1]).toHaveAccessibleName('Age');
|
|
118
|
+
expect(columnsCheckboxes[2]).toHaveAccessibleName('Email');
|
|
119
|
+
expect(columnsCheckboxes[3]).toHaveAccessibleName('Phone');
|
|
115
120
|
});
|
|
116
121
|
|
|
117
122
|
it('renders all checkboxes checked by default', async () => {
|
|
118
123
|
const user = userEvent.setup();
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
const Fixture = () => {
|
|
125
|
+
const store = useTable<RowData>();
|
|
126
|
+
return (
|
|
127
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
128
|
+
<Table.Header>
|
|
129
|
+
<TableColumnsSelector />
|
|
130
|
+
</Table.Header>
|
|
131
|
+
</Table>
|
|
132
|
+
);
|
|
133
|
+
};
|
|
134
|
+
render(<Fixture />);
|
|
126
135
|
|
|
127
136
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
128
137
|
|
|
@@ -132,33 +141,54 @@ describe('TableColumnsSelector', () => {
|
|
|
132
141
|
expect(screen.getByRole('checkbox', {name: 'Phone'})).toBeChecked();
|
|
133
142
|
});
|
|
134
143
|
|
|
135
|
-
it('
|
|
144
|
+
it('renders a disabled checked checkbox for columns that are always visible', async () => {
|
|
145
|
+
const columns: Array<ColumnDef<RowData>> = [
|
|
146
|
+
columnHelper.accessor('name', {header: 'Name', enableSorting: false}),
|
|
147
|
+
columnHelper.accessor('age', {header: 'Age', enableSorting: false, enableHiding: false}),
|
|
148
|
+
columnHelper.accessor('email', {header: 'Email', enableSorting: false}),
|
|
149
|
+
columnHelper.accessor('phone', {header: 'Phone', enableSorting: false}),
|
|
150
|
+
];
|
|
136
151
|
const user = userEvent.setup();
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
152
|
+
const Fixture = () => {
|
|
153
|
+
const store = useTable<RowData>();
|
|
154
|
+
return (
|
|
155
|
+
<Table store={store} data={mockData} columns={columns}>
|
|
156
|
+
<Table.Header>
|
|
157
|
+
<TableColumnsSelector />
|
|
158
|
+
</Table.Header>
|
|
159
|
+
</Table>
|
|
160
|
+
);
|
|
161
|
+
};
|
|
162
|
+
render(<Fixture />);
|
|
144
163
|
|
|
145
164
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
146
165
|
|
|
147
|
-
expect(screen.queryByRole('checkbox', {name: 'Name'})).
|
|
148
|
-
expect(screen.getByRole('checkbox', {name: 'Age'})).toBeChecked();
|
|
166
|
+
expect(screen.queryByRole('checkbox', {name: 'Name'})).toBeChecked();
|
|
149
167
|
expect(screen.getByRole('checkbox', {name: 'Email'})).toBeChecked();
|
|
150
168
|
expect(screen.getByRole('checkbox', {name: 'Phone'})).toBeChecked();
|
|
169
|
+
|
|
170
|
+
const ageColumn = screen.getByRole('checkbox', {name: 'Age'});
|
|
171
|
+
expect(ageColumn).toBeChecked();
|
|
172
|
+
expect(ageColumn).toBeDisabled();
|
|
173
|
+
await user.hover(ageColumn.parentElement);
|
|
174
|
+
await waitFor(() => {
|
|
175
|
+
expect(screen.getByRole('tooltip', {name: 'This column is always visible.'})).toBeVisible();
|
|
176
|
+
});
|
|
151
177
|
});
|
|
152
178
|
|
|
153
179
|
it('renders unchecked checkboxes for the columns that are not visible in the inital state of the table', async () => {
|
|
154
180
|
const user = userEvent.setup();
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
181
|
+
const Fixture = () => {
|
|
182
|
+
const store = useTable<RowData>({initialState: {columnVisibility: {email: false}}});
|
|
183
|
+
return (
|
|
184
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
185
|
+
<Table.Header>
|
|
186
|
+
<TableColumnsSelector />
|
|
187
|
+
</Table.Header>
|
|
188
|
+
</Table>
|
|
189
|
+
);
|
|
190
|
+
};
|
|
191
|
+
render(<Fixture />);
|
|
162
192
|
|
|
163
193
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
164
194
|
|
|
@@ -170,13 +200,17 @@ describe('TableColumnsSelector', () => {
|
|
|
170
200
|
|
|
171
201
|
it('renders disabled checkboxes when the maxSelectableColumns is set and the maximum number of columns is checked', async () => {
|
|
172
202
|
const user = userEvent.setup();
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
203
|
+
const Fixture = () => {
|
|
204
|
+
const store = useTable<RowData>({initialState: {columnVisibility: {email: false}}});
|
|
205
|
+
return (
|
|
206
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
207
|
+
<Table.Header>
|
|
208
|
+
<TableColumnsSelector maxSelectableColumns={3} />
|
|
209
|
+
</Table.Header>
|
|
210
|
+
</Table>
|
|
211
|
+
);
|
|
212
|
+
};
|
|
213
|
+
render(<Fixture />);
|
|
180
214
|
|
|
181
215
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
182
216
|
|
|
@@ -201,17 +235,20 @@ describe('TableColumnsSelector', () => {
|
|
|
201
235
|
|
|
202
236
|
it('renders a tooltip when the maxSelectableColumns is set and the maximum number of columns is checked and the user hover a disabled checkbox', async () => {
|
|
203
237
|
const user = userEvent.setup();
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
238
|
+
const Fixture = () => {
|
|
239
|
+
const store = useTable<RowData>({initialState: {columnVisibility: {email: false}}});
|
|
240
|
+
return (
|
|
241
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
242
|
+
<Table.Header>
|
|
243
|
+
<TableColumnsSelector
|
|
244
|
+
maxSelectableColumns={3}
|
|
245
|
+
limitReachedTooltip="You can display up to 3 columns"
|
|
246
|
+
/>
|
|
247
|
+
</Table.Header>
|
|
248
|
+
</Table>
|
|
249
|
+
);
|
|
250
|
+
};
|
|
251
|
+
render(<Fixture />);
|
|
215
252
|
|
|
216
253
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
217
254
|
|
|
@@ -225,13 +262,17 @@ describe('TableColumnsSelector', () => {
|
|
|
225
262
|
describe('footer', () => {
|
|
226
263
|
it('does not render the footer when maxSelectableColumns is not defined', async () => {
|
|
227
264
|
const user = userEvent.setup();
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
265
|
+
const Fixture = () => {
|
|
266
|
+
const store = useTable<RowData>();
|
|
267
|
+
return (
|
|
268
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
269
|
+
<Table.Header>
|
|
270
|
+
<TableColumnsSelector />
|
|
271
|
+
</Table.Header>
|
|
272
|
+
</Table>
|
|
273
|
+
);
|
|
274
|
+
};
|
|
275
|
+
render(<Fixture />);
|
|
235
276
|
|
|
236
277
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
237
278
|
|
|
@@ -240,17 +281,17 @@ describe('TableColumnsSelector', () => {
|
|
|
240
281
|
|
|
241
282
|
it('renders the footer when maxSelectableColumns is defined and footer is defined', async () => {
|
|
242
283
|
const user = userEvent.setup();
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
maxSelectableColumns={3}
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
);
|
|
284
|
+
const Fixture = () => {
|
|
285
|
+
const store = useTable<RowData>();
|
|
286
|
+
return (
|
|
287
|
+
<Table store={store} data={mockData} columns={baseColumns}>
|
|
288
|
+
<Table.Header>
|
|
289
|
+
<TableColumnsSelector maxSelectableColumns={3} footer="You can display so many patate" />
|
|
290
|
+
</Table.Header>
|
|
291
|
+
</Table>
|
|
292
|
+
);
|
|
293
|
+
};
|
|
294
|
+
render(<Fixture />);
|
|
254
295
|
|
|
255
296
|
await user.click(screen.getByRole('button', {name: 'Edit columns'}));
|
|
256
297
|
|
|
@@ -2,31 +2,27 @@ import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
|
2
2
|
import {render, screen} from '@test-utils';
|
|
3
3
|
|
|
4
4
|
import {Table} from '../Table';
|
|
5
|
+
import {useTable} from '../use-table';
|
|
5
6
|
|
|
6
7
|
type RowData = {name: string};
|
|
7
8
|
|
|
8
9
|
const columnHelper = createColumnHelper<RowData>();
|
|
9
10
|
const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
|
|
10
|
-
const basicTableWithDateRangePicker = (
|
|
11
|
-
<Table
|
|
12
|
-
data={[{name: 'fruit'}, {name: 'vegetable'}]}
|
|
13
|
-
columns={columns}
|
|
14
|
-
initialState={{dateRange: [new Date(2022, 0, 1), new Date(2022, 0, 7)]}}
|
|
15
|
-
>
|
|
16
|
-
<Table.Header>
|
|
17
|
-
<Table.DateRangePicker />
|
|
18
|
-
</Table.Header>
|
|
19
|
-
</Table>
|
|
20
|
-
);
|
|
21
11
|
|
|
22
12
|
describe('Table.DateRangePicker', () => {
|
|
23
13
|
it('displays the initial dates', async () => {
|
|
24
|
-
|
|
14
|
+
const Fixture = () => {
|
|
15
|
+
const store = useTable<RowData>({initialState: {dateRange: [new Date(2022, 0, 1), new Date(2022, 0, 7)]}});
|
|
16
|
+
return (
|
|
17
|
+
<Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
18
|
+
<Table.Header>
|
|
19
|
+
<Table.DateRangePicker />
|
|
20
|
+
</Table.Header>
|
|
21
|
+
</Table>
|
|
22
|
+
);
|
|
23
|
+
};
|
|
24
|
+
render(<Fixture />);
|
|
25
25
|
|
|
26
|
-
expect(
|
|
27
|
-
screen.getByRole('button', {
|
|
28
|
-
name: /jan 01, 2022 \- jan 07, 2022/i,
|
|
29
|
-
}),
|
|
30
|
-
).toBeVisible();
|
|
26
|
+
expect(screen.getByRole('button', {name: /jan 01, 2022 \- jan 07, 2022/i})).toBeVisible();
|
|
31
27
|
});
|
|
32
28
|
});
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
2
|
import {act, render, screen, userEvent, within} from '@test-utils';
|
|
3
3
|
|
|
4
|
-
import {Button} from '@mantine/core';
|
|
5
4
|
import {Table} from '../Table';
|
|
6
|
-
import {useTable} from '../
|
|
5
|
+
import {useTable} from '../use-table';
|
|
7
6
|
|
|
8
7
|
type RowData = {name: string};
|
|
9
8
|
|
|
@@ -18,126 +17,83 @@ describe('Table.Filter', () => {
|
|
|
18
17
|
vi.useRealTimers();
|
|
19
18
|
});
|
|
20
19
|
it('displays the placeholder', () => {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
<Table
|
|
25
|
-
<Table.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
const Fixture = () => {
|
|
21
|
+
const store = useTable<RowData>();
|
|
22
|
+
return (
|
|
23
|
+
<Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
24
|
+
<Table.Header>
|
|
25
|
+
<Table.Filter placeholder="hello fruits" />
|
|
26
|
+
</Table.Header>
|
|
27
|
+
</Table>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
render(<Fixture />);
|
|
29
31
|
|
|
30
32
|
expect(screen.getByPlaceholderText('hello fruits')).toBeVisible();
|
|
31
33
|
});
|
|
32
34
|
|
|
33
|
-
it('calls onChange when typing something in the filter', async () => {
|
|
34
|
-
const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
|
|
35
|
-
const onChange = vi.fn();
|
|
36
|
-
render(
|
|
37
|
-
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
38
|
-
<Table.Header>
|
|
39
|
-
<Table.Filter />
|
|
40
|
-
</Table.Header>
|
|
41
|
-
</Table>,
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
await user.type(screen.getByRole('textbox'), 'vegetable');
|
|
45
|
-
|
|
46
|
-
act(() => {
|
|
47
|
-
// 300 ms debounce on TableFilter input
|
|
48
|
-
vi.advanceTimersByTime(300);
|
|
49
|
-
});
|
|
50
|
-
act(() => {
|
|
51
|
-
// 500 ms debounce on Table onChange callback
|
|
52
|
-
vi.advanceTimersByTime(500);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({globalFilter: 'vegetable'}));
|
|
56
|
-
});
|
|
57
|
-
|
|
58
35
|
it('goes back to the first page when changing the filter', async () => {
|
|
59
36
|
const user = userEvent.setup({advanceTimers: vi.advanceTimersByTime});
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
<Table
|
|
64
|
-
<Table.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<Table.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
37
|
+
const Fixture = () => {
|
|
38
|
+
const store = useTable<RowData>({initialState: {pagination: {pageIndex: 1}, totalEntries: 52}});
|
|
39
|
+
return (
|
|
40
|
+
<Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
41
|
+
<Table.Header>
|
|
42
|
+
<Table.Filter />
|
|
43
|
+
</Table.Header>
|
|
44
|
+
<Table.Footer>
|
|
45
|
+
<Table.Pagination />
|
|
46
|
+
</Table.Footer>
|
|
47
|
+
</Table>
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
render(<Fixture />);
|
|
51
|
+
|
|
52
|
+
expect(screen.getByRole('button', {name: '1'})).toBeVisible();
|
|
53
|
+
expect(screen.getByRole('button', {name: '2', current: 'page'})).toBeVisible();
|
|
72
54
|
|
|
73
55
|
await user.type(screen.getByRole('textbox'), 'veg');
|
|
74
56
|
act(() => {
|
|
75
57
|
// 300 ms debounce on TableFilter input
|
|
76
58
|
vi.advanceTimersByTime(300);
|
|
77
59
|
});
|
|
78
|
-
act(() => {
|
|
79
|
-
// 500 ms debounce on Table onChange callback
|
|
80
|
-
vi.advanceTimersByTime(500);
|
|
81
|
-
});
|
|
82
60
|
|
|
83
|
-
expect(
|
|
84
|
-
|
|
85
|
-
);
|
|
61
|
+
expect(screen.getByRole('button', {name: '1', current: 'page'})).toBeVisible();
|
|
62
|
+
expect(screen.getByRole('button', {name: '2'})).toBeVisible();
|
|
86
63
|
});
|
|
87
64
|
|
|
88
65
|
it('clears the filter when clicking on the cross icon', async () => {
|
|
89
66
|
const user = userEvent.setup({delay: null});
|
|
90
|
-
render(
|
|
91
|
-
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} initialState={{globalFilter: 'foo'}}>
|
|
92
|
-
<Table.Header>
|
|
93
|
-
<Table.Filter placeholder="hello fruits" />
|
|
94
|
-
</Table.Header>
|
|
95
|
-
</Table>,
|
|
96
|
-
);
|
|
97
|
-
expect(screen.getByRole('textbox')).toHaveValue('foo');
|
|
98
|
-
await user.click(screen.getByRole('button', {name: /cross/i}));
|
|
99
|
-
expect(screen.getByRole('textbox')).toHaveValue('');
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
it('clear the filter if the global state filter is cleared', async () => {
|
|
103
|
-
const user = userEvent.setup({delay: null});
|
|
104
|
-
|
|
105
67
|
const Fixture = () => {
|
|
106
|
-
const
|
|
107
|
-
return
|
|
68
|
+
const store = useTable<RowData>({initialState: {globalFilter: 'foo'}});
|
|
69
|
+
return (
|
|
70
|
+
<Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
71
|
+
<Table.Header>
|
|
72
|
+
<Table.Filter placeholder="hello fruits" />
|
|
73
|
+
</Table.Header>
|
|
74
|
+
</Table>
|
|
75
|
+
);
|
|
108
76
|
};
|
|
109
|
-
|
|
110
|
-
render(
|
|
111
|
-
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} initialState={{globalFilter: 'foo'}}>
|
|
112
|
-
<Table.Header>
|
|
113
|
-
<Table.Consumer>
|
|
114
|
-
<Fixture />
|
|
115
|
-
</Table.Consumer>
|
|
116
|
-
<Table.Filter />
|
|
117
|
-
</Table.Header>
|
|
118
|
-
</Table>,
|
|
119
|
-
);
|
|
77
|
+
render(<Fixture />);
|
|
120
78
|
expect(screen.getByRole('textbox')).toHaveValue('foo');
|
|
121
|
-
await user.click(screen.
|
|
79
|
+
await user.click(screen.getByRole('button', {name: /cross/i}));
|
|
122
80
|
expect(screen.getByRole('textbox')).toHaveValue('');
|
|
123
81
|
});
|
|
124
82
|
|
|
125
83
|
describe('when multi row selection is enabled', () => {
|
|
126
84
|
it('does not unselect rows that get filtered out', async () => {
|
|
127
85
|
const user = userEvent.setup({delay: null});
|
|
128
|
-
const
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
data={[{name: 'fruit'}, {name: 'vegetable'}]}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
</Table>,
|
|
140
|
-
);
|
|
86
|
+
const Fixture = () => {
|
|
87
|
+
const store = useTable<RowData>({enableMultiRowSelection: true});
|
|
88
|
+
return (
|
|
89
|
+
<Table store={store} data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
90
|
+
<Table.Header>
|
|
91
|
+
<Table.Filter />
|
|
92
|
+
</Table.Header>
|
|
93
|
+
</Table>
|
|
94
|
+
);
|
|
95
|
+
};
|
|
96
|
+
render(<Fixture />);
|
|
141
97
|
|
|
142
98
|
await user.click(
|
|
143
99
|
within(screen.getByRole('row', {name: /fruit/i})).getByRole('checkbox', {name: /select row/i}),
|