@coveord/plasma-mantine 47.0.1-next.2
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 +27 -0
- package/.turbo/turbo-build.log +8 -0
- package/.turbo/turbo-test.log +30 -0
- package/LICENSE +15 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/cjs/__tests__/GlobalSetup.js +17 -0
- package/dist/cjs/__tests__/GlobalSetup.js.map +1 -0
- package/dist/cjs/__tests__/Setup.js +6 -0
- package/dist/cjs/__tests__/Setup.js.map +1 -0
- package/dist/cjs/__tests__/SetupAfterEnv.js +19 -0
- package/dist/cjs/__tests__/SetupAfterEnv.js.map +1 -0
- package/dist/cjs/__tests__/Utils.js +38 -0
- package/dist/cjs/__tests__/Utils.js.map +1 -0
- package/dist/cjs/components/blank-slate/BlankSlate.js +26 -0
- package/dist/cjs/components/blank-slate/BlankSlate.js.map +1 -0
- package/dist/cjs/components/blank-slate/index.js +8 -0
- package/dist/cjs/components/blank-slate/index.js.map +1 -0
- package/dist/cjs/components/code-editor/CodeEditor.example.js +41 -0
- package/dist/cjs/components/code-editor/CodeEditor.example.js.map +1 -0
- package/dist/cjs/components/code-editor/CodeEditor.js +214 -0
- package/dist/cjs/components/code-editor/CodeEditor.js.map +1 -0
- package/dist/cjs/components/code-editor/__mocks__/@monaco-editor/react.js +30 -0
- package/dist/cjs/components/code-editor/__mocks__/@monaco-editor/react.js.map +1 -0
- package/dist/cjs/components/code-editor/__mocks__/monaco-editor.js +24 -0
- package/dist/cjs/components/code-editor/__mocks__/monaco-editor.js.map +1 -0
- package/dist/cjs/components/code-editor/index.js +8 -0
- package/dist/cjs/components/code-editor/index.js.map +1 -0
- package/dist/cjs/components/collection/Collection.example.js +64 -0
- package/dist/cjs/components/collection/Collection.example.js.map +1 -0
- package/dist/cjs/components/collection/Collection.js +129 -0
- package/dist/cjs/components/collection/Collection.js.map +1 -0
- package/dist/cjs/components/collection/CollectionItem.js +109 -0
- package/dist/cjs/components/collection/CollectionItem.js.map +1 -0
- package/dist/cjs/components/collection/Colllection.styles.js +25 -0
- package/dist/cjs/components/collection/Colllection.styles.js.map +1 -0
- package/dist/cjs/components/collection/index.js +8 -0
- package/dist/cjs/components/collection/index.js.map +1 -0
- package/dist/cjs/components/date-range-picker/DateRangePickerInlineCalendar.js +102 -0
- package/dist/cjs/components/date-range-picker/DateRangePickerInlineCalendar.js.map +1 -0
- package/dist/cjs/components/date-range-picker/DateRangePickerPopoverCalendar.js +93 -0
- package/dist/cjs/components/date-range-picker/DateRangePickerPopoverCalendar.js.map +1 -0
- package/dist/cjs/components/date-range-picker/DateRangePickerPresetSelect.js +64 -0
- package/dist/cjs/components/date-range-picker/DateRangePickerPresetSelect.js.map +1 -0
- package/dist/cjs/components/date-range-picker/EditableDateRangePicker.js +66 -0
- package/dist/cjs/components/date-range-picker/EditableDateRangePicker.js.map +1 -0
- package/dist/cjs/components/date-range-picker/index.js +9 -0
- package/dist/cjs/components/date-range-picker/index.js.map +1 -0
- package/dist/cjs/components/header/Header.js +78 -0
- package/dist/cjs/components/header/Header.js.map +1 -0
- package/dist/cjs/components/header/index.js +8 -0
- package/dist/cjs/components/header/index.js.map +1 -0
- package/dist/cjs/components/index.js +17 -0
- package/dist/cjs/components/index.js.map +1 -0
- package/dist/cjs/components/inline-confirm/InlineConfirm.js +39 -0
- package/dist/cjs/components/inline-confirm/InlineConfirm.js.map +1 -0
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.js +28 -0
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.js.map +1 -0
- package/dist/cjs/components/inline-confirm/InlineConfirmContext.js +14 -0
- package/dist/cjs/components/inline-confirm/InlineConfirmContext.js.map +1 -0
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js +48 -0
- package/dist/cjs/components/inline-confirm/InlineConfirmPrompt.js.map +1 -0
- package/dist/cjs/components/inline-confirm/index.js +10 -0
- package/dist/cjs/components/inline-confirm/index.js.map +1 -0
- package/dist/cjs/components/inline-confirm/useInlineConfirm.js +21 -0
- package/dist/cjs/components/inline-confirm/useInlineConfirm.js.map +1 -0
- package/dist/cjs/components/modal-wizard/ModalWizard.js +132 -0
- package/dist/cjs/components/modal-wizard/ModalWizard.js.map +1 -0
- package/dist/cjs/components/modal-wizard/ModalWizardStep.js +23 -0
- package/dist/cjs/components/modal-wizard/ModalWizardStep.js.map +1 -0
- package/dist/cjs/components/modal-wizard/index.js +8 -0
- package/dist/cjs/components/modal-wizard/index.js.map +1 -0
- package/dist/cjs/components/prompt/Prompt.js +100 -0
- package/dist/cjs/components/prompt/Prompt.js.map +1 -0
- package/dist/cjs/components/prompt/PromptFooter.js +25 -0
- package/dist/cjs/components/prompt/PromptFooter.js.map +1 -0
- package/dist/cjs/components/prompt/index.js +8 -0
- package/dist/cjs/components/prompt/index.js.map +1 -0
- package/dist/cjs/components/sticky-footer/StickyFooter.js +50 -0
- package/dist/cjs/components/sticky-footer/StickyFooter.js.map +1 -0
- package/dist/cjs/components/sticky-footer/index.js +8 -0
- package/dist/cjs/components/sticky-footer/index.js.map +1 -0
- package/dist/cjs/components/table/Table.js +259 -0
- package/dist/cjs/components/table/Table.js.map +1 -0
- package/dist/cjs/components/table/TableActions.js +25 -0
- package/dist/cjs/components/table/TableActions.js.map +1 -0
- package/dist/cjs/components/table/TableCollapsibleColumn.js +33 -0
- package/dist/cjs/components/table/TableCollapsibleColumn.js.map +1 -0
- package/dist/cjs/components/table/TableContext.js +14 -0
- package/dist/cjs/components/table/TableContext.js.map +1 -0
- package/dist/cjs/components/table/TableDateRangePicker.js +72 -0
- package/dist/cjs/components/table/TableDateRangePicker.js.map +1 -0
- package/dist/cjs/components/table/TableFilter.js +53 -0
- package/dist/cjs/components/table/TableFilter.js.map +1 -0
- package/dist/cjs/components/table/TableFooter.js +23 -0
- package/dist/cjs/components/table/TableFooter.js.map +1 -0
- package/dist/cjs/components/table/TableHeader.js +37 -0
- package/dist/cjs/components/table/TableHeader.js.map +1 -0
- package/dist/cjs/components/table/TablePagination.js +47 -0
- package/dist/cjs/components/table/TablePagination.js.map +1 -0
- package/dist/cjs/components/table/TablePerPage.js +52 -0
- package/dist/cjs/components/table/TablePerPage.js.map +1 -0
- package/dist/cjs/components/table/TablePredicate.js +45 -0
- package/dist/cjs/components/table/TablePredicate.js.map +1 -0
- package/dist/cjs/components/table/Th.js +107 -0
- package/dist/cjs/components/table/Th.js.map +1 -0
- package/dist/cjs/components/table/index.js +9 -0
- package/dist/cjs/components/table/index.js.map +1 -0
- package/dist/cjs/components/table/useTable.js +21 -0
- package/dist/cjs/components/table/useTable.js.map +1 -0
- package/dist/cjs/hooks/index.js +9 -0
- package/dist/cjs/hooks/index.js.map +1 -0
- package/dist/cjs/hooks/useControlledList.js +52 -0
- package/dist/cjs/hooks/useControlledList.js.map +1 -0
- package/dist/cjs/hooks/useParentHeight.js +36 -0
- package/dist/cjs/hooks/useParentHeight.js.map +1 -0
- package/dist/cjs/index.js +31 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/theme/PlasmaColors.js +54 -0
- package/dist/cjs/theme/PlasmaColors.js.map +1 -0
- package/dist/cjs/theme/Plasmantine.js +24 -0
- package/dist/cjs/theme/Plasmantine.js.map +1 -0
- package/dist/cjs/theme/Theme.js +223 -0
- package/dist/cjs/theme/Theme.js.map +1 -0
- package/dist/cjs/theme/index.js +8 -0
- package/dist/cjs/theme/index.js.map +1 -0
- package/dist/definitions/__tests__/GlobalSetup.d.ts +3 -0
- package/dist/definitions/__tests__/GlobalSetup.d.ts.map +1 -0
- package/dist/definitions/__tests__/Setup.d.ts +5 -0
- package/dist/definitions/__tests__/Setup.d.ts.map +1 -0
- package/dist/definitions/__tests__/SetupAfterEnv.d.ts +7 -0
- package/dist/definitions/__tests__/SetupAfterEnv.d.ts.map +1 -0
- package/dist/definitions/__tests__/Utils.d.ts +8 -0
- package/dist/definitions/__tests__/Utils.d.ts.map +1 -0
- package/dist/definitions/components/blank-slate/BlankSlate.d.ts +12 -0
- package/dist/definitions/components/blank-slate/BlankSlate.d.ts.map +1 -0
- package/dist/definitions/components/blank-slate/index.d.ts +2 -0
- package/dist/definitions/components/blank-slate/index.d.ts.map +1 -0
- package/dist/definitions/components/code-editor/CodeEditor.d.ts +50 -0
- package/dist/definitions/components/code-editor/CodeEditor.d.ts.map +1 -0
- package/dist/definitions/components/code-editor/CodeEditor.example.d.ts +4 -0
- package/dist/definitions/components/code-editor/CodeEditor.example.d.ts.map +1 -0
- package/dist/definitions/components/code-editor/__mocks__/@monaco-editor/react.d.ts +9 -0
- package/dist/definitions/components/code-editor/__mocks__/@monaco-editor/react.d.ts.map +1 -0
- package/dist/definitions/components/code-editor/__mocks__/monaco-editor.d.ts +8 -0
- package/dist/definitions/components/code-editor/__mocks__/monaco-editor.d.ts.map +1 -0
- package/dist/definitions/components/code-editor/index.d.ts +2 -0
- package/dist/definitions/components/code-editor/index.d.ts.map +1 -0
- package/dist/definitions/components/collection/Collection.d.ts +21 -0
- package/dist/definitions/components/collection/Collection.d.ts.map +1 -0
- package/dist/definitions/components/collection/Collection.example.d.ts +4 -0
- package/dist/definitions/components/collection/Collection.example.d.ts.map +1 -0
- package/dist/definitions/components/collection/CollectionItem.d.ts +15 -0
- package/dist/definitions/components/collection/CollectionItem.d.ts.map +1 -0
- package/dist/definitions/components/collection/Colllection.styles.d.ts +9 -0
- package/dist/definitions/components/collection/Colllection.styles.d.ts.map +1 -0
- package/dist/definitions/components/collection/index.d.ts +2 -0
- package/dist/definitions/components/collection/index.d.ts.map +1 -0
- package/dist/definitions/components/date-range-picker/DateRangePickerInlineCalendar.d.ts +37 -0
- package/dist/definitions/components/date-range-picker/DateRangePickerInlineCalendar.d.ts.map +1 -0
- package/dist/definitions/components/date-range-picker/DateRangePickerPopoverCalendar.d.ts +30 -0
- package/dist/definitions/components/date-range-picker/DateRangePickerPopoverCalendar.d.ts.map +1 -0
- package/dist/definitions/components/date-range-picker/DateRangePickerPresetSelect.d.ts +16 -0
- package/dist/definitions/components/date-range-picker/DateRangePickerPresetSelect.d.ts.map +1 -0
- package/dist/definitions/components/date-range-picker/EditableDateRangePicker.d.ts +18 -0
- package/dist/definitions/components/date-range-picker/EditableDateRangePicker.d.ts.map +1 -0
- package/dist/definitions/components/date-range-picker/index.d.ts +3 -0
- package/dist/definitions/components/date-range-picker/index.d.ts.map +1 -0
- package/dist/definitions/components/header/Header.d.ts +12 -0
- package/dist/definitions/components/header/Header.d.ts.map +1 -0
- package/dist/definitions/components/header/index.d.ts +2 -0
- package/dist/definitions/components/header/index.d.ts.map +1 -0
- package/dist/definitions/components/index.d.ts +11 -0
- package/dist/definitions/components/index.d.ts.map +1 -0
- package/dist/definitions/components/inline-confirm/InlineConfirm.d.ts +10 -0
- package/dist/definitions/components/inline-confirm/InlineConfirm.d.ts.map +1 -0
- package/dist/definitions/components/inline-confirm/InlineConfirmButton.d.ts +8 -0
- package/dist/definitions/components/inline-confirm/InlineConfirmButton.d.ts.map +1 -0
- package/dist/definitions/components/inline-confirm/InlineConfirmContext.d.ts +9 -0
- package/dist/definitions/components/inline-confirm/InlineConfirmContext.d.ts.map +1 -0
- package/dist/definitions/components/inline-confirm/InlineConfirmPrompt.d.ts +11 -0
- package/dist/definitions/components/inline-confirm/InlineConfirmPrompt.d.ts.map +1 -0
- package/dist/definitions/components/inline-confirm/index.d.ts +4 -0
- package/dist/definitions/components/inline-confirm/index.d.ts.map +1 -0
- package/dist/definitions/components/inline-confirm/useInlineConfirm.d.ts +6 -0
- package/dist/definitions/components/inline-confirm/useInlineConfirm.d.ts.map +1 -0
- package/dist/definitions/components/modal-wizard/ModalWizard.d.ts +73 -0
- package/dist/definitions/components/modal-wizard/ModalWizard.d.ts.map +1 -0
- package/dist/definitions/components/modal-wizard/ModalWizardStep.d.ts +42 -0
- package/dist/definitions/components/modal-wizard/ModalWizardStep.d.ts.map +1 -0
- package/dist/definitions/components/modal-wizard/index.d.ts +3 -0
- package/dist/definitions/components/modal-wizard/index.d.ts.map +1 -0
- package/dist/definitions/components/prompt/Prompt.d.ts +14 -0
- package/dist/definitions/components/prompt/Prompt.d.ts.map +1 -0
- package/dist/definitions/components/prompt/PromptFooter.d.ts +6 -0
- package/dist/definitions/components/prompt/PromptFooter.d.ts.map +1 -0
- package/dist/definitions/components/prompt/index.d.ts +2 -0
- package/dist/definitions/components/prompt/index.d.ts.map +1 -0
- package/dist/definitions/components/sticky-footer/StickyFooter.d.ts +10 -0
- package/dist/definitions/components/sticky-footer/StickyFooter.d.ts.map +1 -0
- package/dist/definitions/components/sticky-footer/index.d.ts +2 -0
- package/dist/definitions/components/sticky-footer/index.d.ts.map +1 -0
- package/dist/definitions/components/table/Table.d.ts +84 -0
- package/dist/definitions/components/table/Table.d.ts.map +1 -0
- package/dist/definitions/components/table/TableActions.d.ts +26 -0
- package/dist/definitions/components/table/TableActions.d.ts.map +1 -0
- package/dist/definitions/components/table/TableCollapsibleColumn.d.ts +6 -0
- package/dist/definitions/components/table/TableCollapsibleColumn.d.ts.map +1 -0
- package/dist/definitions/components/table/TableContext.d.ts +54 -0
- package/dist/definitions/components/table/TableContext.d.ts.map +1 -0
- package/dist/definitions/components/table/TableDateRangePicker.d.ts +20 -0
- package/dist/definitions/components/table/TableDateRangePicker.d.ts.map +1 -0
- package/dist/definitions/components/table/TableFilter.d.ts +12 -0
- package/dist/definitions/components/table/TableFilter.d.ts.map +1 -0
- package/dist/definitions/components/table/TableFooter.d.ts +3 -0
- package/dist/definitions/components/table/TableFooter.d.ts.map +1 -0
- package/dist/definitions/components/table/TableHeader.d.ts +3 -0
- package/dist/definitions/components/table/TableHeader.d.ts.map +1 -0
- package/dist/definitions/components/table/TablePagination.d.ts +10 -0
- package/dist/definitions/components/table/TablePagination.d.ts.map +1 -0
- package/dist/definitions/components/table/TablePerPage.d.ts +20 -0
- package/dist/definitions/components/table/TablePerPage.d.ts.map +1 -0
- package/dist/definitions/components/table/TablePredicate.d.ts +21 -0
- package/dist/definitions/components/table/TablePredicate.d.ts.map +1 -0
- package/dist/definitions/components/table/Th.d.ts +8 -0
- package/dist/definitions/components/table/Th.d.ts.map +1 -0
- package/dist/definitions/components/table/index.d.ts +4 -0
- package/dist/definitions/components/table/index.d.ts.map +1 -0
- package/dist/definitions/components/table/useTable.d.ts +11 -0
- package/dist/definitions/components/table/useTable.d.ts.map +1 -0
- package/dist/definitions/hooks/index.d.ts +3 -0
- package/dist/definitions/hooks/index.d.ts.map +1 -0
- package/dist/definitions/hooks/useControlledList.d.ts +25 -0
- package/dist/definitions/hooks/useControlledList.d.ts.map +1 -0
- package/dist/definitions/hooks/useParentHeight.d.ts +5 -0
- package/dist/definitions/hooks/useParentHeight.d.ts.map +1 -0
- package/dist/definitions/index.d.ts +17 -0
- package/dist/definitions/index.d.ts.map +1 -0
- package/dist/definitions/theme/PlasmaColors.d.ts +14 -0
- package/dist/definitions/theme/PlasmaColors.d.ts.map +1 -0
- package/dist/definitions/theme/Plasmantine.d.ts +3 -0
- package/dist/definitions/theme/Plasmantine.d.ts.map +1 -0
- package/dist/definitions/theme/Theme.d.ts +3 -0
- package/dist/definitions/theme/Theme.d.ts.map +1 -0
- package/dist/definitions/theme/index.d.ts +2 -0
- package/dist/definitions/theme/index.d.ts.map +1 -0
- package/dist/esm/__tests__/GlobalSetup.js +7 -0
- package/dist/esm/__tests__/GlobalSetup.js.map +1 -0
- package/dist/esm/__tests__/Setup.js +5 -0
- package/dist/esm/__tests__/Setup.js.map +1 -0
- package/dist/esm/__tests__/SetupAfterEnv.js +15 -0
- package/dist/esm/__tests__/SetupAfterEnv.js.map +1 -0
- package/dist/esm/__tests__/Utils.js +21 -0
- package/dist/esm/__tests__/Utils.js.map +1 -0
- package/dist/esm/components/blank-slate/BlankSlate.js +16 -0
- package/dist/esm/components/blank-slate/BlankSlate.js.map +1 -0
- package/dist/esm/components/blank-slate/index.js +3 -0
- package/dist/esm/components/blank-slate/index.js.map +1 -0
- package/dist/esm/components/code-editor/CodeEditor.example.js +31 -0
- package/dist/esm/components/code-editor/CodeEditor.example.js.map +1 -0
- package/dist/esm/components/code-editor/CodeEditor.js +201 -0
- package/dist/esm/components/code-editor/CodeEditor.js.map +1 -0
- package/dist/esm/components/code-editor/__mocks__/@monaco-editor/react.js +12 -0
- package/dist/esm/components/code-editor/__mocks__/@monaco-editor/react.js.map +1 -0
- package/dist/esm/components/code-editor/__mocks__/monaco-editor.js +14 -0
- package/dist/esm/components/code-editor/__mocks__/monaco-editor.js.map +1 -0
- package/dist/esm/components/code-editor/index.js +3 -0
- package/dist/esm/components/code-editor/index.js.map +1 -0
- package/dist/esm/components/collection/Collection.example.js +54 -0
- package/dist/esm/components/collection/Collection.example.js.map +1 -0
- package/dist/esm/components/collection/Collection.js +118 -0
- package/dist/esm/components/collection/Collection.js.map +1 -0
- package/dist/esm/components/collection/CollectionItem.js +98 -0
- package/dist/esm/components/collection/CollectionItem.js.map +1 -0
- package/dist/esm/components/collection/Colllection.styles.js +15 -0
- package/dist/esm/components/collection/Colllection.styles.js.map +1 -0
- package/dist/esm/components/collection/index.js +3 -0
- package/dist/esm/components/collection/index.js.map +1 -0
- package/dist/esm/components/date-range-picker/DateRangePickerInlineCalendar.js +92 -0
- package/dist/esm/components/date-range-picker/DateRangePickerInlineCalendar.js.map +1 -0
- package/dist/esm/components/date-range-picker/DateRangePickerPopoverCalendar.js +83 -0
- package/dist/esm/components/date-range-picker/DateRangePickerPopoverCalendar.js.map +1 -0
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.js +53 -0
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.js.map +1 -0
- package/dist/esm/components/date-range-picker/EditableDateRangePicker.js +55 -0
- package/dist/esm/components/date-range-picker/EditableDateRangePicker.js.map +1 -0
- package/dist/esm/components/date-range-picker/index.js +4 -0
- package/dist/esm/components/date-range-picker/index.js.map +1 -0
- package/dist/esm/components/header/Header.js +68 -0
- package/dist/esm/components/header/Header.js.map +1 -0
- package/dist/esm/components/header/index.js +3 -0
- package/dist/esm/components/header/index.js.map +1 -0
- package/dist/esm/components/index.js +12 -0
- package/dist/esm/components/index.js.map +1 -0
- package/dist/esm/components/inline-confirm/InlineConfirm.js +29 -0
- package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -0
- package/dist/esm/components/inline-confirm/InlineConfirmButton.js +18 -0
- package/dist/esm/components/inline-confirm/InlineConfirmButton.js.map +1 -0
- package/dist/esm/components/inline-confirm/InlineConfirmContext.js +4 -0
- package/dist/esm/components/inline-confirm/InlineConfirmContext.js.map +1 -0
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js +38 -0
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js.map +1 -0
- package/dist/esm/components/inline-confirm/index.js +5 -0
- package/dist/esm/components/inline-confirm/index.js.map +1 -0
- package/dist/esm/components/inline-confirm/useInlineConfirm.js +11 -0
- package/dist/esm/components/inline-confirm/useInlineConfirm.js.map +1 -0
- package/dist/esm/components/modal-wizard/ModalWizard.js +122 -0
- package/dist/esm/components/modal-wizard/ModalWizard.js.map +1 -0
- package/dist/esm/components/modal-wizard/ModalWizardStep.js +14 -0
- package/dist/esm/components/modal-wizard/ModalWizardStep.js.map +1 -0
- package/dist/esm/components/modal-wizard/index.js +3 -0
- package/dist/esm/components/modal-wizard/index.js.map +1 -0
- package/dist/esm/components/prompt/Prompt.js +90 -0
- package/dist/esm/components/prompt/Prompt.js.map +1 -0
- package/dist/esm/components/prompt/PromptFooter.js +15 -0
- package/dist/esm/components/prompt/PromptFooter.js.map +1 -0
- package/dist/esm/components/prompt/index.js +3 -0
- package/dist/esm/components/prompt/index.js.map +1 -0
- package/dist/esm/components/sticky-footer/StickyFooter.js +40 -0
- package/dist/esm/components/sticky-footer/StickyFooter.js.map +1 -0
- package/dist/esm/components/sticky-footer/index.js +3 -0
- package/dist/esm/components/sticky-footer/index.js.map +1 -0
- package/dist/esm/components/table/Table.js +248 -0
- package/dist/esm/components/table/Table.js.map +1 -0
- package/dist/esm/components/table/TableActions.js +15 -0
- package/dist/esm/components/table/TableActions.js.map +1 -0
- package/dist/esm/components/table/TableCollapsibleColumn.js +25 -0
- package/dist/esm/components/table/TableCollapsibleColumn.js.map +1 -0
- package/dist/esm/components/table/TableContext.js +4 -0
- package/dist/esm/components/table/TableContext.js.map +1 -0
- package/dist/esm/components/table/TableDateRangePicker.js +61 -0
- package/dist/esm/components/table/TableDateRangePicker.js.map +1 -0
- package/dist/esm/components/table/TableFilter.js +43 -0
- package/dist/esm/components/table/TableFilter.js.map +1 -0
- package/dist/esm/components/table/TableFooter.js +13 -0
- package/dist/esm/components/table/TableFooter.js.map +1 -0
- package/dist/esm/components/table/TableHeader.js +27 -0
- package/dist/esm/components/table/TableHeader.js.map +1 -0
- package/dist/esm/components/table/TablePagination.js +37 -0
- package/dist/esm/components/table/TablePagination.js.map +1 -0
- package/dist/esm/components/table/TablePerPage.js +42 -0
- package/dist/esm/components/table/TablePerPage.js.map +1 -0
- package/dist/esm/components/table/TablePredicate.js +35 -0
- package/dist/esm/components/table/TablePredicate.js.map +1 -0
- package/dist/esm/components/table/Th.js +97 -0
- package/dist/esm/components/table/Th.js.map +1 -0
- package/dist/esm/components/table/index.js +4 -0
- package/dist/esm/components/table/index.js.map +1 -0
- package/dist/esm/components/table/useTable.js +11 -0
- package/dist/esm/components/table/useTable.js.map +1 -0
- package/dist/esm/hooks/index.js +4 -0
- package/dist/esm/hooks/index.js.map +1 -0
- package/dist/esm/hooks/useControlledList.js +44 -0
- package/dist/esm/hooks/useControlledList.js.map +1 -0
- package/dist/esm/hooks/useParentHeight.js +28 -0
- package/dist/esm/hooks/useParentHeight.js.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/theme/PlasmaColors.js +44 -0
- package/dist/esm/theme/PlasmaColors.js.map +1 -0
- package/dist/esm/theme/Plasmantine.js +14 -0
- package/dist/esm/theme/Plasmantine.js.map +1 -0
- package/dist/esm/theme/Theme.js +213 -0
- package/dist/esm/theme/Theme.js.map +1 -0
- package/dist/esm/theme/index.js +3 -0
- package/dist/esm/theme/index.js.map +1 -0
- package/jest.config.js +25 -0
- package/package.json +88 -0
- package/src/__tests__/GlobalSetup.ts +5 -0
- package/src/__tests__/Setup.ts +4 -0
- package/src/__tests__/SetupAfterEnv.ts +16 -0
- package/src/__tests__/Utils.tsx +15 -0
- package/src/components/blank-slate/BlankSlate.tsx +17 -0
- package/src/components/blank-slate/__tests__/BlankSlate.spec.tsx +11 -0
- package/src/components/blank-slate/index.ts +1 -0
- package/src/components/code-editor/CodeEditor.example.tsx +32 -0
- package/src/components/code-editor/CodeEditor.tsx +214 -0
- package/src/components/code-editor/__mocks__/@monaco-editor/react.tsx +10 -0
- package/src/components/code-editor/__mocks__/monaco-editor.ts +9 -0
- package/src/components/code-editor/__tests__/CodeEditor.spec.tsx +56 -0
- package/src/components/code-editor/index.ts +1 -0
- package/src/components/collection/Collection.example.tsx +37 -0
- package/src/components/collection/Collection.tsx +129 -0
- package/src/components/collection/CollectionItem.tsx +92 -0
- package/src/components/collection/Colllection.styles.ts +14 -0
- package/src/components/collection/__tests__/Collection.spec.tsx +247 -0
- package/src/components/collection/index.ts +1 -0
- package/src/components/date-range-picker/DateRangePickerInlineCalendar.tsx +111 -0
- package/src/components/date-range-picker/DateRangePickerPopoverCalendar.tsx +94 -0
- package/src/components/date-range-picker/DateRangePickerPresetSelect.tsx +62 -0
- package/src/components/date-range-picker/EditableDateRangePicker.tsx +60 -0
- package/src/components/date-range-picker/__tests__/DateRangePickerInlineCalendar.spec.tsx +95 -0
- package/src/components/date-range-picker/__tests__/DateRangePickerPopoverCalendar.spec.tsx +101 -0
- package/src/components/date-range-picker/__tests__/DateRangePickerPresetSelect.spec.tsx +53 -0
- package/src/components/date-range-picker/__tests__/EditableDateRangePicker.spec.tsx +47 -0
- package/src/components/date-range-picker/index.tsx +2 -0
- package/src/components/header/Header.tsx +43 -0
- package/src/components/header/__tests__/Header.spec.tsx +79 -0
- package/src/components/header/index.ts +1 -0
- package/src/components/index.ts +10 -0
- package/src/components/inline-confirm/InlineConfirm.tsx +29 -0
- package/src/components/inline-confirm/InlineConfirmButton.tsx +17 -0
- package/src/components/inline-confirm/InlineConfirmContext.ts +9 -0
- package/src/components/inline-confirm/InlineConfirmPrompt.tsx +48 -0
- package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +94 -0
- package/src/components/inline-confirm/index.ts +3 -0
- package/src/components/inline-confirm/useInlineConfirm.ts +12 -0
- package/src/components/modal-wizard/ModalWizard.tsx +211 -0
- package/src/components/modal-wizard/ModalWizardStep.tsx +55 -0
- package/src/components/modal-wizard/__tests__/ModalWizard.spec.tsx +345 -0
- package/src/components/modal-wizard/index.ts +2 -0
- package/src/components/prompt/Prompt.tsx +66 -0
- package/src/components/prompt/PromptFooter.tsx +8 -0
- package/src/components/prompt/__tests__/Prompt.spec.tsx +29 -0
- package/src/components/prompt/index.ts +1 -0
- package/src/components/sticky-footer/StickyFooter.tsx +35 -0
- package/src/components/sticky-footer/__tests__/StickyFooter.spec.tsx +20 -0
- package/src/components/sticky-footer/index.ts +1 -0
- package/src/components/table/Table.tsx +293 -0
- package/src/components/table/TableActions.tsx +36 -0
- package/src/components/table/TableCollapsibleColumn.tsx +26 -0
- package/src/components/table/TableContext.tsx +56 -0
- package/src/components/table/TableDateRangePicker.tsx +65 -0
- package/src/components/table/TableFilter.tsx +44 -0
- package/src/components/table/TableFooter.tsx +8 -0
- package/src/components/table/TableHeader.tsx +21 -0
- package/src/components/table/TablePagination.tsx +41 -0
- package/src/components/table/TablePerPage.tsx +49 -0
- package/src/components/table/TablePredicate.tsx +43 -0
- package/src/components/table/Th.tsx +84 -0
- package/src/components/table/__tests__/Table.spec.tsx +128 -0
- package/src/components/table/__tests__/TableActions.spec.tsx +36 -0
- package/src/components/table/__tests__/TableDateRangePicker.spec.tsx +87 -0
- package/src/components/table/__tests__/TableFilter.spec.tsx +39 -0
- package/src/components/table/__tests__/TablePagination.spec.tsx +50 -0
- package/src/components/table/__tests__/TablePerPage.spec.tsx +81 -0
- package/src/components/table/__tests__/TablePredicate.spec.tsx +120 -0
- package/src/components/table/__tests__/Th.spec.tsx +63 -0
- package/src/components/table/index.ts +3 -0
- package/src/components/table/useTable.tsx +11 -0
- package/src/hooks/__tests__/useControlledList.spec.tsx +41 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/useControlledList.ts +53 -0
- package/src/hooks/useParentHeight.ts +25 -0
- package/src/index.ts +21 -0
- package/src/theme/PlasmaColors.ts +44 -0
- package/src/theme/Plasmantine.tsx +10 -0
- package/src/theme/Theme.tsx +161 -0
- package/src/theme/index.ts +1 -0
- package/tsconfig.build.json +4 -0
- package/tsconfig.json +14 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import {Group, SegmentedControl, Text} from '@mantine/core';
|
|
2
|
+
import {TableState} from '@tanstack/react-table';
|
|
3
|
+
import {FunctionComponent} from 'react';
|
|
4
|
+
|
|
5
|
+
import {useTable} from './useTable';
|
|
6
|
+
|
|
7
|
+
interface TablePerPageProps {
|
|
8
|
+
/**
|
|
9
|
+
* The label displayed before the control
|
|
10
|
+
*
|
|
11
|
+
* @default Results per page
|
|
12
|
+
*/
|
|
13
|
+
label?: string;
|
|
14
|
+
/**
|
|
15
|
+
* The per page choices to display
|
|
16
|
+
*
|
|
17
|
+
* @default [25, 50, 100]
|
|
18
|
+
*/
|
|
19
|
+
values?: number[];
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const TablePerPage: FunctionComponent<TablePerPageProps> & {DEFAULT_SIZE: number} = ({
|
|
23
|
+
label = 'Results per page',
|
|
24
|
+
values = [25, 50, 100],
|
|
25
|
+
}) => {
|
|
26
|
+
const {state, setState} = useTable();
|
|
27
|
+
|
|
28
|
+
const updatePerPage = (newPerPage: string) => {
|
|
29
|
+
setState((prevState: TableState) => ({
|
|
30
|
+
...prevState,
|
|
31
|
+
pagination: {...prevState.pagination, pageSize: parseInt(newPerPage, 10)},
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
return (
|
|
36
|
+
<Group>
|
|
37
|
+
<Text>{label}</Text>
|
|
38
|
+
<SegmentedControl
|
|
39
|
+
value={state.pagination.pageSize.toString() ?? values?.[1].toString()}
|
|
40
|
+
onChange={updatePerPage}
|
|
41
|
+
data={values.map((value) => value.toString())}
|
|
42
|
+
color="action"
|
|
43
|
+
size="md"
|
|
44
|
+
/>
|
|
45
|
+
</Group>
|
|
46
|
+
);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
TablePerPage.DEFAULT_SIZE = 50;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import {Select, SelectItem, Group, Text} from '@mantine/core';
|
|
2
|
+
import {FunctionComponent} from 'react';
|
|
3
|
+
import {useTable} from './useTable';
|
|
4
|
+
|
|
5
|
+
interface TablePredicateProps {
|
|
6
|
+
/**
|
|
7
|
+
* Unique identifier for this predicate. Will be used to access the selected value in the table state
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* The values to display in the predicate
|
|
12
|
+
*/
|
|
13
|
+
data: SelectItem[];
|
|
14
|
+
/**
|
|
15
|
+
* Input label (not displayed for now)
|
|
16
|
+
*
|
|
17
|
+
* @default default to the predicate id
|
|
18
|
+
*/
|
|
19
|
+
label?: string;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export const TablePredicate: FunctionComponent<TablePredicateProps> = ({id, data, label}) => {
|
|
23
|
+
const {onChange, form} = useTable();
|
|
24
|
+
|
|
25
|
+
const onUpdate = (newValue: string) => {
|
|
26
|
+
form.setFieldValue('predicates', {...form.values.predicates, [id]: newValue});
|
|
27
|
+
onChange?.();
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<Group spacing="xs">
|
|
32
|
+
{label ? <Text>{label}:</Text> : null}
|
|
33
|
+
<Select
|
|
34
|
+
withinPortal
|
|
35
|
+
value={form.values.predicates[id]}
|
|
36
|
+
onChange={onUpdate}
|
|
37
|
+
data={data}
|
|
38
|
+
aria-label={label ?? id}
|
|
39
|
+
searchable={data.length > 7}
|
|
40
|
+
/>
|
|
41
|
+
</Group>
|
|
42
|
+
);
|
|
43
|
+
};
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import {ArrowHeadDownSize16Px, ArrowHeadUpSize16Px} from '@coveord/plasma-react-icons';
|
|
2
|
+
import {Center, createStyles, Group, Text, UnstyledButton} from '@mantine/core';
|
|
3
|
+
import {defaultColumnSizing, flexRender, Header} from '@tanstack/react-table';
|
|
4
|
+
|
|
5
|
+
const useStyles = createStyles((theme) => ({
|
|
6
|
+
th: {
|
|
7
|
+
padding: '0 !important',
|
|
8
|
+
fontWeight: '400 !important' as any,
|
|
9
|
+
color: theme.black + '!important',
|
|
10
|
+
button: {
|
|
11
|
+
padding: '8px 16px',
|
|
12
|
+
div: {
|
|
13
|
+
padding: '0px !important',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
div: {
|
|
17
|
+
padding: '8px 16px',
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
|
|
21
|
+
noSort: {
|
|
22
|
+
padding: `${theme.spacing.xs}px ${theme.spacing.md}px`,
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
control: {
|
|
26
|
+
width: '100%',
|
|
27
|
+
padding: `${theme.spacing.xs}px ${theme.spacing.md}px`,
|
|
28
|
+
|
|
29
|
+
'&:hover': {
|
|
30
|
+
backgroundColor: theme.colorScheme === 'dark' ? theme.colors.gray[6] : theme.colors.gray[2],
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
}));
|
|
34
|
+
|
|
35
|
+
interface ThProps<T> {
|
|
36
|
+
header: Header<T, unknown>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const SortingIcons = {
|
|
40
|
+
asc: ArrowHeadDownSize16Px,
|
|
41
|
+
desc: ArrowHeadUpSize16Px,
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
const SortingLabels = {
|
|
45
|
+
asc: 'ascending',
|
|
46
|
+
desc: 'descending',
|
|
47
|
+
} as const;
|
|
48
|
+
|
|
49
|
+
export const Th = <T,>({header}: ThProps<T>) => {
|
|
50
|
+
const {classes} = useStyles();
|
|
51
|
+
const size = header.column.getSize();
|
|
52
|
+
const width = size !== defaultColumnSizing.size ? size : undefined;
|
|
53
|
+
|
|
54
|
+
if (header.isPlaceholder) {
|
|
55
|
+
return null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (!header.column.getCanSort()) {
|
|
59
|
+
return (
|
|
60
|
+
<th className={classes.th} style={{width}}>
|
|
61
|
+
<Text className={classes.noSort} size="xs">
|
|
62
|
+
{flexRender(header.column.columnDef.header, header.getContext())}
|
|
63
|
+
</Text>
|
|
64
|
+
</th>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const onSort = header.column.getToggleSortingHandler();
|
|
69
|
+
const sortingOrder = header.column.getIsSorted();
|
|
70
|
+
const Icon = SortingIcons[sortingOrder || header.column.getFirstSortDir()];
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<th className={classes.th} style={{width}} aria-sort={sortingOrder ? SortingLabels[sortingOrder] : 'none'}>
|
|
74
|
+
<UnstyledButton onClick={onSort} className={classes.control}>
|
|
75
|
+
<Group position="apart">
|
|
76
|
+
<Text size="xs">{flexRender(header.column.columnDef.header, header.getContext())}</Text>
|
|
77
|
+
<Center sx={(theme) => ({color: sortingOrder ? theme.colors.action[8] : undefined})}>
|
|
78
|
+
<Icon height={14} />
|
|
79
|
+
</Center>
|
|
80
|
+
</Group>
|
|
81
|
+
</UnstyledButton>
|
|
82
|
+
</th>
|
|
83
|
+
);
|
|
84
|
+
};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
|
+
import {render, screen, userEvent, waitFor} from '@test-utils';
|
|
3
|
+
import {FunctionComponent} from 'react';
|
|
4
|
+
|
|
5
|
+
import {Table} from '../Table';
|
|
6
|
+
|
|
7
|
+
type RowData = {firstName: string; lastName: string};
|
|
8
|
+
|
|
9
|
+
const columnHelper = createColumnHelper<RowData>();
|
|
10
|
+
const columns: Array<ColumnDef<RowData>> = [
|
|
11
|
+
columnHelper.accessor('firstName', {enableSorting: false}),
|
|
12
|
+
columnHelper.accessor('lastName', {enableSorting: false}),
|
|
13
|
+
];
|
|
14
|
+
|
|
15
|
+
describe('Table', () => {
|
|
16
|
+
it('renders the data', () => {
|
|
17
|
+
render(<Table data={[{firstName: 'first', lastName: 'last'}]} columns={columns} />);
|
|
18
|
+
|
|
19
|
+
expect(screen.getByRole('columnheader', {name: 'firstName'})).toBeVisible();
|
|
20
|
+
expect(screen.getByRole('columnheader', {name: 'lastName'})).toBeVisible();
|
|
21
|
+
|
|
22
|
+
expect(
|
|
23
|
+
screen.getByRole('cell', {
|
|
24
|
+
name: /first/i,
|
|
25
|
+
})
|
|
26
|
+
).toBeVisible();
|
|
27
|
+
expect(
|
|
28
|
+
screen.getByRole('cell', {
|
|
29
|
+
name: /last/i,
|
|
30
|
+
})
|
|
31
|
+
).toBeVisible();
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('formats the data', () => {
|
|
35
|
+
const customColumns: Array<ColumnDef<RowData>> = [
|
|
36
|
+
columnHelper.accessor('firstName', {
|
|
37
|
+
header: () => 'First Name',
|
|
38
|
+
cell: (info) => info.getValue().toUpperCase(),
|
|
39
|
+
enableSorting: false,
|
|
40
|
+
}),
|
|
41
|
+
columnHelper.accessor('lastName', {
|
|
42
|
+
header: () => 'Last Name',
|
|
43
|
+
cell: (info) => info.getValue().toUpperCase(),
|
|
44
|
+
enableSorting: false,
|
|
45
|
+
}),
|
|
46
|
+
];
|
|
47
|
+
render(<Table data={[{firstName: 'first', lastName: 'last'}]} columns={customColumns} />);
|
|
48
|
+
|
|
49
|
+
expect(screen.getByRole('columnheader', {name: 'First Name'})).toBeVisible();
|
|
50
|
+
expect(screen.getByRole('columnheader', {name: 'Last Name'})).toBeVisible();
|
|
51
|
+
|
|
52
|
+
expect(
|
|
53
|
+
screen.getByRole('cell', {
|
|
54
|
+
name: 'FIRST',
|
|
55
|
+
})
|
|
56
|
+
).toBeVisible();
|
|
57
|
+
expect(
|
|
58
|
+
screen.getByRole('cell', {
|
|
59
|
+
name: 'LAST',
|
|
60
|
+
})
|
|
61
|
+
).toBeVisible();
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it('renders the noDataChildren when the table is empty', () => {
|
|
65
|
+
const Fixture: FunctionComponent = () => <button>Hello</button>;
|
|
66
|
+
render(<Table data={[]} noDataChildren={<Fixture />} columns={columns} />);
|
|
67
|
+
|
|
68
|
+
expect(screen.getByRole('button', {name: 'Hello'})).toBeVisible();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
it('opens the collapsible rows when the user click on the toggle', async () => {
|
|
72
|
+
const Fixture: FunctionComponent<{row: RowData}> = ({row}) => <div>Collapsible content: {row.lastName}</div>;
|
|
73
|
+
const customColumns: Array<ColumnDef<RowData>> = [
|
|
74
|
+
columnHelper.accessor('firstName', {
|
|
75
|
+
enableSorting: false,
|
|
76
|
+
}),
|
|
77
|
+
Table.CollapsibleColumn,
|
|
78
|
+
];
|
|
79
|
+
render(
|
|
80
|
+
<Table
|
|
81
|
+
data={[{firstName: 'first', lastName: 'last'}]}
|
|
82
|
+
getExpandChildren={(row: RowData) => <Fixture row={row} />}
|
|
83
|
+
columns={customColumns}
|
|
84
|
+
/>
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
// wait for the collapsible icon to show
|
|
88
|
+
await screen.findByRole('button', {name: 'arrowHeadDown'});
|
|
89
|
+
|
|
90
|
+
expect(screen.queryByText('Collapsible content: last')).not.toBeVisible();
|
|
91
|
+
|
|
92
|
+
userEvent.click(screen.getByRole('button', {name: 'arrowHeadDown'}));
|
|
93
|
+
await waitFor(() => {
|
|
94
|
+
expect(screen.queryByText('Collapsible content: last')).toBeVisible();
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
it('renders the collapsible button only for rows that can be expanded', async () => {
|
|
99
|
+
const Fixture: FunctionComponent<{row: RowData}> = ({row}) => (
|
|
100
|
+
<div>
|
|
101
|
+
Collapsible content: {row.firstName} {row.lastName}
|
|
102
|
+
</div>
|
|
103
|
+
);
|
|
104
|
+
const customColumns: Array<ColumnDef<RowData>> = [
|
|
105
|
+
columnHelper.accessor('firstName', {
|
|
106
|
+
enableSorting: false,
|
|
107
|
+
}),
|
|
108
|
+
Table.CollapsibleColumn,
|
|
109
|
+
];
|
|
110
|
+
render(
|
|
111
|
+
<Table
|
|
112
|
+
data={[
|
|
113
|
+
{firstName: 'Luke', lastName: 'Skywalker'},
|
|
114
|
+
{firstName: 'Lea', lastName: 'Skywalker'},
|
|
115
|
+
{firstName: 'Han', lastName: 'Solo'},
|
|
116
|
+
]}
|
|
117
|
+
getExpandChildren={(row: RowData) => (row.lastName === 'Skywalker' ? <Fixture row={row} /> : null)}
|
|
118
|
+
columns={customColumns}
|
|
119
|
+
/>
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
// wait for the collapsible icon to show
|
|
123
|
+
await screen.findAllByRole('button', {name: 'arrowHeadDown'});
|
|
124
|
+
|
|
125
|
+
const allRows = screen.getAllByRole('button', {name: 'arrowHeadDown'});
|
|
126
|
+
expect(allRows).toHaveLength(2);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {Button} from '@mantine/core';
|
|
2
|
+
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
3
|
+
import {render, screen, userEvent} from '@test-utils';
|
|
4
|
+
|
|
5
|
+
import {Table} from '../Table';
|
|
6
|
+
|
|
7
|
+
type RowData = {name: string};
|
|
8
|
+
|
|
9
|
+
const columnHelper = createColumnHelper<RowData>();
|
|
10
|
+
const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
|
|
11
|
+
|
|
12
|
+
describe('Table.Actions', () => {
|
|
13
|
+
it('displays the actions when the row is selected', () => {
|
|
14
|
+
render(
|
|
15
|
+
<Table<RowData> data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
16
|
+
<Table.Header>
|
|
17
|
+
<Table.Actions>{(datum: RowData) => <Button>Eat {datum.name}</Button>}</Table.Actions>
|
|
18
|
+
</Table.Header>
|
|
19
|
+
</Table>
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
// no row is selected, no actions should be visible
|
|
23
|
+
expect(screen.queryByRole('button', {name: 'Eat fruit'})).not.toBeInTheDocument();
|
|
24
|
+
expect(screen.queryByRole('button', {name: 'Eat vegetable'})).not.toBeInTheDocument();
|
|
25
|
+
|
|
26
|
+
// select the fruit row
|
|
27
|
+
userEvent.click(screen.getByRole('cell', {name: 'fruit'}));
|
|
28
|
+
expect(screen.getByRole('button', {name: 'Eat fruit'})).toBeVisible();
|
|
29
|
+
expect(screen.queryByRole('button', {name: 'Eat vegetable'})).not.toBeInTheDocument();
|
|
30
|
+
|
|
31
|
+
// select the vegetable row
|
|
32
|
+
userEvent.click(screen.getByRole('cell', {name: 'vegetable'}));
|
|
33
|
+
expect(screen.queryByRole('button', {name: 'Eat fruit'})).not.toBeInTheDocument();
|
|
34
|
+
expect(screen.getByRole('button', {name: 'Eat vegetable'})).toBeVisible();
|
|
35
|
+
});
|
|
36
|
+
});
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
|
+
import {render, screen, userEvent, waitFor} from '@test-utils';
|
|
3
|
+
|
|
4
|
+
import {Table} from '../Table';
|
|
5
|
+
|
|
6
|
+
type RowData = {name: string};
|
|
7
|
+
|
|
8
|
+
const columnHelper = createColumnHelper<RowData>();
|
|
9
|
+
const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
|
|
10
|
+
|
|
11
|
+
// Since we're mocking the date and the animations are timer based we're mocking useReduceMotion to disable all the animations
|
|
12
|
+
// I tried wrapping the components in <MantineProvider theme={{components: {Transition: {defaultProps: {duration: 0}}}}}>
|
|
13
|
+
// but the animation was still happening. :(
|
|
14
|
+
jest.mock('@mantine/hooks', () => ({
|
|
15
|
+
...jest.requireActual('@mantine/hooks'),
|
|
16
|
+
useReducedMotion: () => true,
|
|
17
|
+
}));
|
|
18
|
+
|
|
19
|
+
describe('Table.DateRangePicker', () => {
|
|
20
|
+
jest.setTimeout(15000);
|
|
21
|
+
|
|
22
|
+
beforeEach(() => {
|
|
23
|
+
jest.useFakeTimers().setSystemTime(new Date(2022, 0, 15));
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
afterEach(() => {
|
|
27
|
+
jest.useRealTimers();
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('displays the intial dates', async () => {
|
|
31
|
+
render(
|
|
32
|
+
<Table
|
|
33
|
+
data={[{name: 'fruit'}, {name: 'vegetable'}]}
|
|
34
|
+
columns={columns}
|
|
35
|
+
initialState={{dateRange: [new Date(2022, 0, 1), new Date(2022, 0, 7)]}}
|
|
36
|
+
>
|
|
37
|
+
<Table.Header>
|
|
38
|
+
<Table.DateRangePicker />
|
|
39
|
+
</Table.Header>
|
|
40
|
+
</Table>
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
await waitFor(() => {
|
|
44
|
+
expect(screen.getByText('Jan 01, 2022 - Jan 07, 2022')).toBeVisible();
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
it('displays the selected date range in the table', async () => {
|
|
49
|
+
const onChange = jest.fn();
|
|
50
|
+
render(
|
|
51
|
+
<Table
|
|
52
|
+
data={[{name: 'fruit'}, {name: 'vegetable'}]}
|
|
53
|
+
columns={columns}
|
|
54
|
+
onChange={onChange}
|
|
55
|
+
initialState={{dateRange: [new Date(2022, 0, 1), new Date(2022, 0, 7)]}}
|
|
56
|
+
>
|
|
57
|
+
<Table.Header>
|
|
58
|
+
<Table.DateRangePicker
|
|
59
|
+
presets={{preset: {label: 'Preset', range: [new Date(2022, 0, 8), new Date(2022, 0, 14)]}}}
|
|
60
|
+
/>
|
|
61
|
+
</Table.Header>
|
|
62
|
+
</Table>
|
|
63
|
+
);
|
|
64
|
+
|
|
65
|
+
await screen.findByText('Jan 01, 2022 - Jan 07, 2022');
|
|
66
|
+
await screen.findByRole('button', {name: 'calendar'});
|
|
67
|
+
|
|
68
|
+
userEvent.click(screen.getByRole('button', {name: 'calendar'}));
|
|
69
|
+
|
|
70
|
+
await screen.findByRole('dialog');
|
|
71
|
+
|
|
72
|
+
// select a preset
|
|
73
|
+
userEvent.click(
|
|
74
|
+
screen.getByRole('searchbox', {
|
|
75
|
+
name: 'Date range',
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
userEvent.click(screen.getByRole('option', {name: 'Preset'}));
|
|
79
|
+
|
|
80
|
+
userEvent.click(screen.getByRole('button', {name: 'Apply'}));
|
|
81
|
+
|
|
82
|
+
await waitFor(() => expect(screen.queryByText('Jan 08, 2022 - Jan 14, 2022')).toBeVisible());
|
|
83
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
84
|
+
expect.objectContaining({dateRange: [new Date(2022, 0, 8), new Date(2022, 0, 14)]})
|
|
85
|
+
);
|
|
86
|
+
});
|
|
87
|
+
});
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
|
+
import {render, screen, userEvent} from '@test-utils';
|
|
3
|
+
|
|
4
|
+
import {Table} from '../Table';
|
|
5
|
+
|
|
6
|
+
type RowData = {name: string};
|
|
7
|
+
|
|
8
|
+
const columnHelper = createColumnHelper<RowData>();
|
|
9
|
+
const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
|
|
10
|
+
|
|
11
|
+
describe('Table.Filter', () => {
|
|
12
|
+
it('displays the placeholder', () => {
|
|
13
|
+
const onChange = jest.fn();
|
|
14
|
+
render(
|
|
15
|
+
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
16
|
+
<Table.Header>
|
|
17
|
+
<Table.Filter placeholder="hello fruits" />
|
|
18
|
+
</Table.Header>
|
|
19
|
+
</Table>
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
expect(screen.getByPlaceholderText('hello fruits')).toBeVisible();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('calls onChange when typing something in the filter', () => {
|
|
26
|
+
const onChange = jest.fn();
|
|
27
|
+
render(
|
|
28
|
+
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
29
|
+
<Table.Header>
|
|
30
|
+
<Table.Filter />
|
|
31
|
+
</Table.Header>
|
|
32
|
+
</Table>
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
userEvent.type(screen.getByRole('textbox'), 'vegetable');
|
|
36
|
+
|
|
37
|
+
expect(onChange).toHaveBeenCalledWith(expect.objectContaining({globalFilter: 'vegetable'}));
|
|
38
|
+
});
|
|
39
|
+
});
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
|
+
import {render, screen, userEvent, waitFor} from '@test-utils';
|
|
3
|
+
|
|
4
|
+
import {Table} from '../Table';
|
|
5
|
+
|
|
6
|
+
type RowData = {name: string};
|
|
7
|
+
|
|
8
|
+
const columnHelper = createColumnHelper<RowData>();
|
|
9
|
+
const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
|
|
10
|
+
|
|
11
|
+
describe('Table.Pagination', () => {
|
|
12
|
+
it('displays the number of pages', () => {
|
|
13
|
+
render(
|
|
14
|
+
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
15
|
+
<Table.Footer>
|
|
16
|
+
<Table.Pagination totalPages={3} />
|
|
17
|
+
</Table.Footer>
|
|
18
|
+
</Table>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
const buttons = screen.getAllByRole('button');
|
|
22
|
+
expect(buttons).toHaveLength(5);
|
|
23
|
+
expect(buttons[0]).toHaveAccessibleName('previous page');
|
|
24
|
+
expect(buttons[1]).toHaveAccessibleName('1');
|
|
25
|
+
expect(buttons[2]).toHaveAccessibleName('2');
|
|
26
|
+
expect(buttons[3]).toHaveAccessibleName('3');
|
|
27
|
+
expect(buttons[4]).toHaveAccessibleName('next page');
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it('calls onChange when clicking on a page number', async () => {
|
|
31
|
+
const onChange = jest.fn();
|
|
32
|
+
render(
|
|
33
|
+
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
34
|
+
<Table.Footer>
|
|
35
|
+
<Table.Pagination totalPages={5} />
|
|
36
|
+
</Table.Footer>
|
|
37
|
+
</Table>
|
|
38
|
+
);
|
|
39
|
+
|
|
40
|
+
onChange.mockReset();
|
|
41
|
+
|
|
42
|
+
userEvent.click(screen.queryByRole('button', {name: '2'}));
|
|
43
|
+
|
|
44
|
+
await waitFor(() => {
|
|
45
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
46
|
+
expect.objectContaining({pagination: expect.objectContaining({pageIndex: 1})})
|
|
47
|
+
);
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
});
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import {ColumnDef, createColumnHelper} from '@tanstack/table-core';
|
|
2
|
+
import {render, screen, userEvent} from '@test-utils';
|
|
3
|
+
|
|
4
|
+
import {Table} from '../Table';
|
|
5
|
+
|
|
6
|
+
type RowData = {name: string};
|
|
7
|
+
|
|
8
|
+
const columnHelper = createColumnHelper<RowData>();
|
|
9
|
+
const columns: Array<ColumnDef<RowData>> = [columnHelper.accessor('name', {enableSorting: false})];
|
|
10
|
+
|
|
11
|
+
describe('Table.PerPage', () => {
|
|
12
|
+
it('displays the label', () => {
|
|
13
|
+
render(
|
|
14
|
+
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns}>
|
|
15
|
+
<Table.Footer>
|
|
16
|
+
<Table.PerPage label="Per page" />
|
|
17
|
+
</Table.Footer>
|
|
18
|
+
</Table>
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
expect(screen.getByText('Per page')).toBeVisible();
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('displays the values', () => {
|
|
25
|
+
render(
|
|
26
|
+
<Table
|
|
27
|
+
data={[{name: 'fruit'}, {name: 'vegetable'}]}
|
|
28
|
+
columns={columns}
|
|
29
|
+
initialState={{pagination: {pageSize: 2}}}
|
|
30
|
+
>
|
|
31
|
+
<Table.Footer>
|
|
32
|
+
<Table.PerPage label="Per page" values={[2, 7, 12, 17]} />
|
|
33
|
+
</Table.Footer>
|
|
34
|
+
</Table>
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
const radios = screen.getAllByRole('radio');
|
|
38
|
+
expect(radios).toHaveLength(4);
|
|
39
|
+
expect(radios[0]).toHaveAccessibleName('2');
|
|
40
|
+
expect(radios[1]).toHaveAccessibleName('7');
|
|
41
|
+
expect(radios[2]).toHaveAccessibleName('12');
|
|
42
|
+
expect(radios[3]).toHaveAccessibleName('17');
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
it('calls onMount with the initial value', () => {
|
|
46
|
+
const onMount = jest.fn();
|
|
47
|
+
render(
|
|
48
|
+
<Table
|
|
49
|
+
data={[{name: 'fruit'}, {name: 'vegetable'}]}
|
|
50
|
+
columns={columns}
|
|
51
|
+
onMount={onMount}
|
|
52
|
+
initialState={{pagination: {pageSize: 100}}}
|
|
53
|
+
>
|
|
54
|
+
<Table.Footer>
|
|
55
|
+
<Table.PerPage />
|
|
56
|
+
</Table.Footer>
|
|
57
|
+
</Table>
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
expect(onMount).toHaveBeenCalledWith(
|
|
61
|
+
expect.objectContaining({pagination: expect.objectContaining({pageSize: 100})})
|
|
62
|
+
);
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('calls onChange when changing the number of items per page', () => {
|
|
66
|
+
const onChange = jest.fn();
|
|
67
|
+
render(
|
|
68
|
+
<Table data={[{name: 'fruit'}, {name: 'vegetable'}]} columns={columns} onChange={onChange}>
|
|
69
|
+
<Table.Footer>
|
|
70
|
+
<Table.PerPage />
|
|
71
|
+
</Table.Footer>
|
|
72
|
+
</Table>
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
userEvent.click(screen.queryByRole('radio', {name: '100'}));
|
|
76
|
+
|
|
77
|
+
expect(onChange).toHaveBeenCalledWith(
|
|
78
|
+
expect.objectContaining({pagination: expect.objectContaining({pageSize: 100})})
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
});
|