@tsed/react-formio 3.0.0-alpha.8 → 3.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/all.d.ts +0 -0
- package/dist/all.js +38 -0
- package/dist/all.js.map +1 -0
- package/dist/atoms/icon/Icon.d.ts +4 -3
- package/dist/atoms/icon/Icon.js +9 -8
- package/dist/atoms/icon/Icon.js.map +1 -1
- package/dist/chunks/_commonjsHelpers.js +30 -3
- package/dist/chunks/_commonjsHelpers.js.map +1 -1
- package/dist/chunks/index.js +33 -30
- package/dist/chunks/index.js.map +1 -1
- package/dist/chunks/index.module.js +16 -16
- package/dist/chunks/index.module.js.map +1 -1
- package/dist/chunks/index2.js +56953 -0
- package/dist/chunks/index2.js.map +1 -0
- package/dist/chunks/react-select-animated.esm.js +3616 -0
- package/dist/chunks/react-select-animated.esm.js.map +1 -0
- package/dist/contexts/FormioContext.d.ts +19 -0
- package/dist/contexts/FormioContext.js +35 -0
- package/dist/contexts/FormioContext.js.map +1 -0
- package/dist/hooks/keyboard.constants.d.ts +38 -0
- package/dist/hooks/keyboard.constants.js +7 -0
- package/dist/hooks/keyboard.constants.js.map +1 -0
- package/dist/hooks/useFormioContext.d.ts +10 -0
- package/dist/hooks/useFormioContext.js +12 -0
- package/dist/hooks/useFormioContext.js.map +1 -0
- package/dist/hooks/useI18n.d.ts +4 -0
- package/dist/hooks/useI18n.js +9 -0
- package/dist/hooks/useI18n.js.map +1 -0
- package/dist/hooks/useKeyboardControls.d.ts +12 -0
- package/dist/hooks/useKeyboardControls.js +35 -0
- package/dist/hooks/useKeyboardControls.js.map +1 -0
- package/dist/hooks/useTooltip.js.map +1 -1
- package/dist/index.d.ts +1 -6
- package/dist/index.js +18 -13
- package/dist/index.js.map +1 -1
- package/dist/interfaces/ComponentType.d.ts +6 -2
- package/dist/interfaces/FormBuilderOptions.d.ts +7 -0
- package/dist/interfaces/FormBuilderOptions.js +2 -0
- package/dist/interfaces/FormBuilderOptions.js.map +1 -0
- package/dist/interfaces/FormOptions.d.ts +6 -13
- package/dist/interfaces/FormType.d.ts +4 -11
- package/dist/interfaces/Operation.d.ts +13 -4
- package/dist/interfaces/SubmissionType.d.ts +5 -10
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/molecules/alert/Alert.js.map +1 -1
- package/dist/molecules/button/Button.d.ts +18 -5
- package/dist/molecules/button/Button.js +24 -28
- package/dist/molecules/button/Button.js.map +1 -1
- package/dist/molecules/card/Card.js +9 -7
- package/dist/molecules/card/Card.js.map +1 -1
- package/dist/molecules/forms/form-control/FormControl.d.ts +14 -12
- package/dist/molecules/forms/form-control/FormControl.js +46 -22
- package/dist/molecules/forms/form-control/FormControl.js.map +1 -1
- package/dist/molecules/forms/input-tags/InputTags.d.ts +2 -8
- package/dist/molecules/forms/input-tags/InputTags.interface.d.ts +7 -0
- package/dist/molecules/forms/input-tags/InputTags.interface.js +2 -0
- package/dist/molecules/forms/input-tags/InputTags.interface.js.map +1 -0
- package/dist/molecules/forms/input-tags/InputTags.js +21 -27
- package/dist/molecules/forms/input-tags/InputTags.js.map +1 -1
- package/dist/molecules/forms/input-tags/all.d.ts +2 -0
- package/dist/molecules/forms/input-tags/all.js +9 -0
- package/dist/molecules/forms/input-tags/all.js.map +1 -0
- package/dist/molecules/forms/input-tags/components/ChoicesTags.d.ts +307 -0
- package/dist/molecules/forms/input-tags/components/ChoicesTags.js +51 -0
- package/dist/molecules/forms/input-tags/components/ChoicesTags.js.map +1 -0
- package/dist/molecules/forms/input-tags/components/ReactTags.d.ts +2 -0
- package/dist/molecules/forms/input-tags/components/ReactTags.js +1926 -0
- package/dist/molecules/forms/input-tags/components/ReactTags.js.map +1 -0
- package/dist/molecules/forms/input-text/InputText.d.ts +2 -14
- package/dist/molecules/forms/input-text/InputText.interface.d.ts +4 -0
- package/dist/molecules/forms/input-text/InputText.interface.js +2 -0
- package/dist/molecules/forms/input-text/InputText.interface.js.map +1 -0
- package/dist/molecules/forms/input-text/InputText.js +46 -56
- package/dist/molecules/forms/input-text/InputText.js.map +1 -1
- package/dist/molecules/forms/select/Select.d.ts +1 -1
- package/dist/molecules/forms/select/{Select.interfaces.d.ts → Select.interface.d.ts} +8 -10
- package/dist/molecules/forms/select/Select.interface.js +2 -0
- package/dist/molecules/forms/select/Select.interface.js.map +1 -0
- package/dist/molecules/forms/select/Select.js +9 -10
- package/dist/molecules/forms/select/Select.js.map +1 -1
- package/dist/molecules/forms/select/all.d.ts +1 -1
- package/dist/molecules/forms/select/all.js +1 -0
- package/dist/molecules/forms/select/all.js.map +1 -1
- package/dist/molecules/forms/select/components/ChoicesSelect.d.ts +1 -1
- package/dist/molecules/forms/select/components/ChoicesSelect.js +72 -83
- package/dist/molecules/forms/select/components/ChoicesSelect.js.map +1 -1
- package/dist/molecules/forms/select/components/HtmlSelect.d.ts +1 -1
- package/dist/molecules/forms/select/components/HtmlSelect.js +17 -16
- package/dist/molecules/forms/select/components/HtmlSelect.js.map +1 -1
- package/dist/molecules/forms/select/components/ReactSelect.d.ts +1 -1
- package/dist/molecules/forms/select/components/ReactSelect.js +28 -3034
- package/dist/molecules/forms/select/components/ReactSelect.js.map +1 -1
- package/dist/molecules/forms/select/components/choices.template.js +2340 -2257
- package/dist/molecules/forms/select/components/choices.template.js.map +1 -1
- package/dist/molecules/forms/select/hooks/useOptions.d.ts +3 -3
- package/dist/molecules/forms/select/hooks/useOptions.js +15 -15
- package/dist/molecules/forms/select/hooks/useOptions.js.map +1 -1
- package/dist/molecules/loader/Loader.d.ts +4 -4
- package/dist/molecules/loader/Loader.js +16 -8
- package/dist/molecules/loader/Loader.js.map +1 -1
- package/dist/molecules/modal/Modal.js +23 -24
- package/dist/molecules/modal/Modal.js.map +1 -1
- package/dist/molecules/pagination/Pagination.d.ts +7 -6
- package/dist/molecules/pagination/Pagination.js +48 -57
- package/dist/molecules/pagination/Pagination.js.map +1 -1
- package/dist/molecules/pagination/PaginationButton.js +10 -10
- package/dist/molecules/pagination/PaginationButton.js.map +1 -1
- package/dist/molecules/pagination/all.js +5 -4
- package/dist/molecules/pagination/all.js.map +1 -1
- package/dist/molecules/pagination/utils/getPageNumbers.js.map +1 -0
- package/dist/molecules/table/Table.d.ts +16 -2
- package/dist/molecules/table/Table.js +53 -77
- package/dist/molecules/table/Table.js.map +1 -1
- package/dist/molecules/table/all.d.ts +0 -0
- package/dist/molecules/table/all.js +19 -0
- package/dist/molecules/table/all.js.map +1 -0
- package/dist/molecules/table/components/DefaultArrowSort.d.ts +5 -1
- package/dist/molecules/table/components/DefaultArrowSort.js +17 -5
- package/dist/molecules/table/components/DefaultArrowSort.js.map +1 -1
- package/dist/molecules/table/components/DefaultCell.d.ts +5 -1
- package/dist/molecules/table/components/DefaultCell.js +8 -6
- package/dist/molecules/table/components/DefaultCell.js.map +1 -1
- package/dist/molecules/table/components/DefaultCellFooter.d.ts +6 -0
- package/dist/molecules/table/components/DefaultCellFooter.js +12 -0
- package/dist/molecules/table/components/DefaultCellFooter.js.map +1 -0
- package/dist/molecules/table/components/DefaultCellHeader.d.ts +5 -8
- package/dist/molecules/table/components/DefaultCellHeader.js +25 -9
- package/dist/molecules/table/components/DefaultCellHeader.js.map +1 -1
- package/dist/molecules/table/components/DefaultCellOperations.d.ts +16 -10
- package/dist/molecules/table/components/DefaultCellOperations.js +23 -14
- package/dist/molecules/table/components/DefaultCellOperations.js.map +1 -1
- package/dist/molecules/table/components/DefaultFilter.d.ts +11 -0
- package/dist/molecules/table/components/DefaultFilter.js +15 -0
- package/dist/molecules/table/components/DefaultFilter.js.map +1 -0
- package/dist/molecules/table/components/DefaultOperationButton.d.ts +16 -12
- package/dist/molecules/table/components/DefaultOperationButton.js +16 -31
- package/dist/molecules/table/components/DefaultOperationButton.js.map +1 -1
- package/dist/molecules/table/filters/Filters.d.js +2 -0
- package/dist/molecules/table/filters/Filters.d.js.map +1 -0
- package/dist/molecules/table/filters/RangeFilter.d.ts +3 -0
- package/dist/molecules/table/filters/RangeFilter.js +41 -0
- package/dist/molecules/table/filters/RangeFilter.js.map +1 -0
- package/dist/molecules/table/filters/SelectFilter.d.ts +3 -0
- package/dist/molecules/table/filters/SelectFilter.js +33 -0
- package/dist/molecules/table/filters/SelectFilter.js.map +1 -0
- package/dist/molecules/table/filters/TextFieldFilter.d.ts +3 -0
- package/dist/molecules/table/filters/TextFieldFilter.js +27 -0
- package/dist/molecules/table/filters/TextFieldFilter.js.map +1 -0
- package/dist/molecules/table/hooks/useTable.d.ts +23 -0
- package/dist/molecules/table/hooks/useTable.js +35 -0
- package/dist/molecules/table/hooks/useTable.js.map +1 -0
- package/dist/molecules/table/hooks/useUniqValues.d.ts +5 -0
- package/dist/molecules/table/hooks/useUniqValues.js +11 -0
- package/dist/molecules/table/hooks/useUniqValues.js.map +1 -0
- package/dist/molecules/table/interfaces/extends.d.ts +14 -0
- package/dist/molecules/table/interfaces/extends.js +2 -0
- package/dist/molecules/table/interfaces/extends.js.map +1 -0
- package/dist/molecules/table/utils/mapFormToColumns.d.ts +2 -2
- package/dist/molecules/table/utils/mapFormToColumns.js +34 -18
- package/dist/molecules/table/utils/mapFormToColumns.js.map +1 -1
- package/dist/molecules/tabs/Tab.d.ts +13 -0
- package/dist/molecules/tabs/Tab.js +66 -0
- package/dist/molecules/tabs/Tab.js.map +1 -0
- package/dist/molecules/tabs/TabList.d.ts +2 -0
- package/dist/molecules/tabs/TabList.js +23 -0
- package/dist/molecules/tabs/TabList.js.map +1 -0
- package/dist/molecules/tabs/TabPanel.d.ts +9 -0
- package/dist/molecules/tabs/TabPanel.js +27 -0
- package/dist/molecules/tabs/TabPanel.js.map +1 -0
- package/dist/molecules/tabs/Tabs.d.ts +4 -16
- package/dist/molecules/tabs/Tabs.js +7 -67
- package/dist/molecules/tabs/Tabs.js.map +1 -1
- package/dist/molecules/tabs/TabsBody.d.ts +1 -0
- package/dist/molecules/tabs/TabsBody.js +10 -0
- package/dist/molecules/tabs/TabsBody.js.map +1 -0
- package/dist/molecules/tabs/TabsLegacy.d.ts +18 -0
- package/dist/molecules/tabs/TabsLegacy.js +49 -0
- package/dist/molecules/tabs/TabsLegacy.js.map +1 -0
- package/dist/molecules/tabs/all.d.ts +5 -0
- package/dist/molecules/tabs/all.js +13 -0
- package/dist/molecules/tabs/all.js.map +1 -0
- package/dist/molecules/tabs/context/TabControl.d.ts +52 -0
- package/dist/molecules/tabs/context/TabControl.js +85 -0
- package/dist/molecules/tabs/context/TabControl.js.map +1 -0
- package/dist/molecules/tabs/hooks/tabControl.d.ts +44 -0
- package/dist/molecules/tabs/hooks/tabControl.js +34 -0
- package/dist/molecules/tabs/hooks/tabControl.js.map +1 -0
- package/dist/organisms/form/Form.js.map +1 -1
- package/dist/organisms/form/access/FormAccess.js +41 -41
- package/dist/organisms/form/access/FormAccess.js.map +1 -1
- package/dist/organisms/form/access/FormAccess.schema.js +1 -0
- package/dist/organisms/form/access/FormAccess.schema.js.map +1 -1
- package/dist/organisms/form/access/FormAccess.utils.js +2 -2
- package/dist/organisms/form/access/FormAccess.utils.js.map +1 -1
- package/dist/organisms/form/actions/FormAction.js +34 -0
- package/dist/organisms/form/actions/FormAction.js.map +1 -0
- package/dist/organisms/form/builder/FormBuilder.js.map +1 -1
- package/dist/organisms/form/builder/FormEdit.d.ts +7 -3
- package/dist/organisms/form/builder/FormEdit.js +46 -42
- package/dist/organisms/form/builder/FormEdit.js.map +1 -1
- package/dist/organisms/form/builder/FormEdit.reducer.js.map +1 -1
- package/dist/organisms/form/builder/FormEditCtas.d.ts +2 -2
- package/dist/organisms/form/builder/FormEditCtas.js +36 -35
- package/dist/organisms/form/builder/FormEditCtas.js.map +1 -1
- package/dist/organisms/form/builder/FormParameters.d.ts +3 -2
- package/dist/organisms/form/builder/FormParameters.js +19 -18
- package/dist/organisms/form/builder/FormParameters.js.map +1 -1
- package/dist/organisms/form/builder/all.js +17 -13
- package/dist/organisms/form/builder/all.js.map +1 -1
- package/dist/organisms/form/builder/useFormBuilder.d.ts +4 -4
- package/dist/organisms/form/builder/useFormBuilder.js +36 -33
- package/dist/organisms/form/builder/useFormBuilder.js.map +1 -1
- package/dist/organisms/form/builder/useFormEdit.d.ts +2 -2
- package/dist/organisms/form/builder/useFormEdit.js +1 -1
- package/dist/organisms/form/builder/useFormEdit.js.map +1 -1
- package/dist/organisms/form/exports/FormExport.d.ts +6 -0
- package/dist/organisms/form/exports/FormExport.js +56 -0
- package/dist/organisms/form/exports/FormExport.js.map +1 -0
- package/dist/organisms/form/preview/FormPreview.d.ts +6 -0
- package/dist/organisms/form/preview/FormPreview.js +12 -0
- package/dist/organisms/form/preview/FormPreview.js.map +1 -0
- package/dist/organisms/form/settings/FormSettings.js +28 -28
- package/dist/organisms/form/settings/FormSettings.js.map +1 -1
- package/dist/organisms/form/settings/FormSettings.schema.js.map +1 -1
- package/dist/organisms/form/settings/FormSettings.utils.js.map +1 -1
- package/dist/organisms/form/useForm.d.ts +2 -1
- package/dist/organisms/form/useForm.js +664 -661
- package/dist/organisms/form/useForm.js.map +1 -1
- package/dist/organisms/modal/RemoveModal.js +16 -17
- package/dist/organisms/modal/RemoveModal.js.map +1 -1
- package/dist/organisms/table/actions/ActionsTable.d.ts +4 -3
- package/dist/organisms/table/actions/ActionsTable.js +21 -33
- package/dist/organisms/table/actions/ActionsTable.js.map +1 -1
- package/dist/organisms/table/forms/FormsTable.d.ts +2 -3
- package/dist/organisms/table/forms/FormsTable.js +48 -27
- package/dist/organisms/table/forms/FormsTable.js.map +1 -1
- package/dist/organisms/table/forms/components/FormsCell.d.ts +5 -0
- package/dist/organisms/table/forms/components/FormsCell.js +50 -0
- package/dist/organisms/table/forms/components/FormsCell.js.map +1 -0
- package/dist/organisms/table/submissions/SubmissionsTable.d.ts +12 -4
- package/dist/organisms/table/submissions/SubmissionsTable.js +10 -17
- package/dist/organisms/table/submissions/SubmissionsTable.js.map +1 -1
- package/dist/organisms/views/FormViews.d.ts +24 -0
- package/dist/organisms/views/FormViews.js +97 -0
- package/dist/organisms/views/FormViews.js.map +1 -0
- package/dist/registries/components.js +12 -11
- package/dist/registries/components.js.map +1 -1
- package/dist/utils/getEventValue.js.map +1 -1
- package/dist/utils/iconClass.js +4 -5
- package/dist/utils/iconClass.js.map +1 -1
- package/dist/utils/mapPagination.js.map +1 -1
- package/dist/utils/stopPropagationWrapper.js.map +1 -1
- package/package.json +10 -8
- package/readme.md +7 -8
- package/src/all.ts +34 -0
- package/src/atoms/icon/Icon.stories.tsx +71 -22
- package/src/atoms/icon/Icon.tsx +14 -4
- package/src/contexts/FormioContext.tsx +89 -0
- package/src/hooks/keyboard.constants.ts +40 -0
- package/src/hooks/useFormioContext.ts +13 -0
- package/src/hooks/useI18n.ts +9 -0
- package/src/hooks/useKeyboardControls.spec.tsx +208 -0
- package/src/hooks/useKeyboardControls.ts +84 -0
- package/src/index.ts +17 -13
- package/src/interfaces/ComponentType.ts +2 -2
- package/src/interfaces/FormBuilderOptions.ts +9 -0
- package/src/interfaces/FormOptions.ts +7 -13
- package/src/interfaces/FormType.ts +5 -11
- package/src/interfaces/Operation.ts +10 -4
- package/src/interfaces/SubmissionType.ts +9 -8
- package/src/interfaces/index.ts +1 -0
- package/src/molecules/__fixtures__/build.js +28 -0
- package/src/molecules/__fixtures__/form-schema.json +76 -195
- package/src/molecules/__fixtures__/form-submissions.json +11846 -46
- package/src/molecules/__fixtures__/products.json +81539 -0
- package/src/molecules/button/Button.stories.tsx +1 -1
- package/src/molecules/button/Button.tsx +43 -24
- package/src/molecules/card/Card.tsx +4 -0
- package/src/molecules/forms/form-control/FormControl.spec.tsx +7 -4
- package/src/molecules/forms/form-control/FormControl.stories.tsx +4 -4
- package/src/molecules/forms/form-control/FormControl.tsx +46 -20
- package/src/molecules/forms/input-tags/InputTags.interface.ts +9 -0
- package/src/molecules/forms/input-tags/InputTags.tsx +20 -42
- package/src/molecules/forms/input-tags/all.ts +6 -0
- package/src/molecules/forms/input-tags/components/ChoicesTags.stories.tsx +110 -0
- package/src/molecules/forms/input-tags/components/ChoicesTags.tsx +72 -0
- package/src/molecules/forms/input-tags/components/ReactTags.stories.tsx +140 -0
- package/src/molecules/forms/input-tags/components/ReactTags.tsx +38 -0
- package/src/molecules/forms/input-text/InputText.interface.ts +5 -0
- package/src/molecules/forms/input-text/InputText.spec.tsx +1 -1
- package/src/molecules/forms/input-text/InputText.stories.tsx +4 -4
- package/src/molecules/forms/input-text/InputText.tsx +38 -53
- package/src/molecules/forms/select/{Select.interfaces.ts → Select.interface.ts} +8 -10
- package/src/molecules/forms/select/Select.tsx +5 -3
- package/src/molecules/forms/select/all.ts +2 -1
- package/src/molecules/forms/select/components/ChoicesSelect.stories.tsx +8 -7
- package/src/molecules/forms/select/components/ChoicesSelect.tsx +9 -18
- package/src/molecules/forms/select/components/HtmlSelect.stories.tsx +7 -7
- package/src/molecules/forms/select/components/HtmlSelect.tsx +3 -2
- package/src/molecules/forms/select/components/ReactSelect.stories.tsx +10 -8
- package/src/molecules/forms/select/components/ReactSelect.tsx +1 -1
- package/src/molecules/forms/select/hooks/useOptions.ts +6 -2
- package/src/molecules/loader/Loader.spec.tsx +2 -2
- package/src/molecules/loader/Loader.stories.tsx +7 -4
- package/src/molecules/loader/Loader.tsx +16 -6
- package/src/molecules/modal/Modal.stories.tsx +1 -1
- package/src/molecules/pagination/Pagination.spec.tsx +11 -11
- package/src/molecules/pagination/Pagination.stories.tsx +32 -10
- package/src/molecules/pagination/Pagination.tsx +29 -26
- package/src/molecules/table/Table.stories.tsx +284 -101
- package/src/molecules/table/Table.tsx +91 -86
- package/src/molecules/table/all.ts +16 -0
- package/src/molecules/table/components/DefaultArrowSort.tsx +20 -4
- package/src/molecules/table/components/DefaultCell.tsx +10 -1
- package/src/molecules/table/components/DefaultCellFooter.tsx +16 -0
- package/src/molecules/table/components/DefaultCellHeader.tsx +33 -13
- package/src/molecules/table/components/DefaultCellOperations.tsx +31 -20
- package/src/molecules/table/components/DefaultFilter.tsx +42 -0
- package/src/molecules/table/components/DefaultOperationButton.tsx +19 -34
- package/src/molecules/table/filters/Filters.d.ts +31 -0
- package/src/molecules/table/filters/RangeFilter.tsx +43 -0
- package/src/molecules/table/filters/SelectFilter.tsx +47 -0
- package/src/molecules/table/filters/TextFieldFilter.tsx +36 -0
- package/src/molecules/table/hooks/useTable.tsx +76 -0
- package/src/molecules/table/hooks/useUniqValues.tsx +10 -0
- package/src/molecules/table/interfaces/extends.ts +18 -0
- package/src/molecules/table/utils/mapFormToColumns.tsx +69 -26
- package/src/molecules/tabs/Tab.tsx +106 -0
- package/src/molecules/tabs/TabList.tsx +37 -0
- package/src/molecules/tabs/TabPanel.tsx +37 -0
- package/src/molecules/tabs/Tabs.spec.tsx +126 -73
- package/src/molecules/tabs/Tabs.stories.tsx +298 -65
- package/src/molecules/tabs/Tabs.tsx +10 -81
- package/src/molecules/tabs/TabsBody.tsx +11 -0
- package/src/molecules/tabs/TabsLegacy.stories.tsx +103 -0
- package/src/molecules/tabs/TabsLegacy.tsx +86 -0
- package/src/molecules/tabs/all.ts +5 -0
- package/src/molecules/tabs/context/TabControl.tsx +166 -0
- package/src/molecules/tabs/hooks/tabControl.spec.tsx +388 -0
- package/src/molecules/tabs/hooks/tabControl.ts +52 -0
- package/src/organisms/__fixtures__/form-firstname.fixture.json +1 -0
- package/src/organisms/__fixtures__/form.fixture.json +1 -0
- package/src/organisms/form/Form.stories.tsx +104 -124
- package/src/organisms/form/access/FormAccess.schema.ts +1 -0
- package/src/organisms/form/access/FormAccess.stories.tsx +6 -4
- package/src/organisms/form/actions/FormAction.stories.tsx +426 -0
- package/src/organisms/form/{action → actions}/FormAction.tsx +2 -2
- package/src/organisms/form/builder/FormBuilder.stories.tsx +7 -4
- package/src/organisms/form/builder/FormEdit.reducer.spec.ts +136 -0
- package/src/organisms/form/builder/FormEdit.stories.tsx +16 -13
- package/src/organisms/form/builder/FormEdit.tsx +15 -7
- package/src/organisms/form/builder/FormEditCtas.tsx +10 -10
- package/src/organisms/form/builder/FormParameters.tsx +8 -4
- package/src/organisms/form/builder/all.ts +4 -0
- package/src/organisms/form/builder/useFormBuilder.ts +12 -7
- package/src/organisms/form/builder/useFormEdit.ts +3 -3
- package/src/organisms/form/exports/FormExport.stories.tsx +68 -0
- package/src/organisms/form/exports/FormExport.tsx +61 -0
- package/src/organisms/form/preview/FormPreview.stories.tsx +58 -0
- package/src/organisms/form/preview/FormPreview.tsx +23 -0
- package/src/organisms/form/settings/FormSettings.component.spec.tsx +3 -1
- package/src/organisms/form/settings/FormSettings.stories.tsx +2 -2
- package/src/organisms/form/settings/FormSettings.tsx +6 -6
- package/src/organisms/form/useForm.ts +2 -3
- package/src/organisms/modal/RemoveModal.stories.tsx +1 -1
- package/src/organisms/table/actions/ActionsTable.spec.tsx +7 -5
- package/src/organisms/table/actions/ActionsTable.stories.tsx +48 -45
- package/src/organisms/table/actions/ActionsTable.tsx +14 -18
- package/src/organisms/table/forms/FormsTable.stories.tsx +2 -0
- package/src/organisms/table/forms/FormsTable.tsx +53 -23
- package/src/organisms/table/forms/components/FormsCell.tsx +53 -0
- package/src/organisms/table/submissions/SubmissionsTable.stories.tsx +101 -57
- package/src/organisms/table/submissions/SubmissionsTable.tsx +12 -5
- package/src/organisms/views/FormViews.stories.tsx +221 -0
- package/src/organisms/views/FormViews.tsx +148 -0
- package/src/registries/components.ts +7 -1
- package/src/utils/iconClass.ts +1 -3
- package/vite.config.mts +2 -2
- package/dist/molecules/forms/select/Select.interfaces.js +0 -2
- package/dist/molecules/forms/select/Select.interfaces.js.map +0 -1
- package/dist/molecules/table/components/DefaultCells.d.ts +0 -4
- package/dist/molecules/table/components/DefaultCells.js +0 -23
- package/dist/molecules/table/components/DefaultCells.js.map +0 -1
- package/dist/molecules/table/components/DefaultRow.d.ts +0 -12
- package/dist/molecules/table/components/DefaultRow.js +0 -26
- package/dist/molecules/table/components/DefaultRow.js.map +0 -1
- package/dist/molecules/table/components/DragNDropContainer.d.ts +0 -4
- package/dist/molecules/table/components/DragNDropContainer.js +0 -10
- package/dist/molecules/table/components/DragNDropContainer.js.map +0 -1
- package/dist/molecules/table/filters/DefaultColumnFilter.d.ts +0 -10
- package/dist/molecules/table/filters/DefaultColumnFilter.js +0 -29
- package/dist/molecules/table/filters/DefaultColumnFilter.js.map +0 -1
- package/dist/molecules/table/filters/SelectColumnFilter.d.ts +0 -10
- package/dist/molecules/table/filters/SelectColumnFilter.js +0 -34
- package/dist/molecules/table/filters/SelectColumnFilter.js.map +0 -1
- package/dist/molecules/table/filters/SliderColumnFilter.d.ts +0 -9
- package/dist/molecules/table/filters/SliderColumnFilter.js +0 -27
- package/dist/molecules/table/filters/SliderColumnFilter.js.map +0 -1
- package/dist/molecules/table/hooks/useCustomTable.d.ts +0 -128
- package/dist/molecules/table/hooks/useCustomTable.js +0 -130
- package/dist/molecules/table/hooks/useCustomTable.js.map +0 -1
- package/dist/molecules/table/hooks/useDragnDropRow.d.ts +0 -272
- package/dist/molecules/table/hooks/useDragnDropRow.js +0 -40
- package/dist/molecules/table/hooks/useDragnDropRow.js.map +0 -1
- package/dist/molecules/table/hooks/useOperations.d.ts +0 -11
- package/dist/molecules/table/hooks/useOperations.js +0 -25
- package/dist/molecules/table/hooks/useOperations.js.map +0 -1
- package/dist/molecules/table/index.d.ts +0 -15
- package/dist/molecules/table/index.js +0 -35
- package/dist/molecules/table/index.js.map +0 -1
- package/dist/molecules/table/utils/getPageNumbers.js.map +0 -1
- package/dist/molecules/table/utils/swapElements.d.ts +0 -1
- package/dist/molecules/table/utils/swapElements.js +0 -5
- package/dist/molecules/table/utils/swapElements.js.map +0 -1
- package/dist/organisms/form/action/FormAction.js +0 -32
- package/dist/organisms/form/action/FormAction.js.map +0 -1
- package/dist/organisms/table/forms/components/FormCell.d.ts +0 -6
- package/dist/organisms/table/forms/components/FormCell.js +0 -50
- package/dist/organisms/table/forms/components/FormCell.js.map +0 -1
- package/dist/typings.d.js +0 -2
- package/dist/typings.d.js.map +0 -1
- package/src/molecules/forms/input-tags/InputTags.stories.tsx +0 -81
- package/src/molecules/table/components/DefaultCells.tsx +0 -30
- package/src/molecules/table/components/DefaultRow.tsx +0 -52
- package/src/molecules/table/components/DragNDropContainer.tsx +0 -7
- package/src/molecules/table/filters/DefaultColumnFilter.spec.tsx +0 -33
- package/src/molecules/table/filters/DefaultColumnFilter.tsx +0 -38
- package/src/molecules/table/filters/SelectColumnFilter.spec.tsx +0 -68
- package/src/molecules/table/filters/SelectColumnFilter.tsx +0 -51
- package/src/molecules/table/filters/SliderColumnFilter.tsx +0 -28
- package/src/molecules/table/hooks/useCustomTable.tsx +0 -268
- package/src/molecules/table/hooks/useDragnDropRow.ts +0 -80
- package/src/molecules/table/hooks/useOperations.tsx +0 -39
- package/src/molecules/table/index.ts +0 -15
- package/src/molecules/table/utils/swapElements.spec.ts +0 -7
- package/src/molecules/table/utils/swapElements.ts +0 -7
- package/src/organisms/form/action/FormAction.stories.tsx +0 -364
- package/src/organisms/table/forms/components/FormCell.tsx +0 -47
- package/src/typings.d.ts +0 -3
- package/tsconfig.app.json +0 -11
- package/tsconfig.json +0 -21
- package/tsconfig.node.json +0 -13
- package/tsconfig.spec.json +0 -14
- /package/dist/molecules/{table → pagination}/utils/getPageNumbers.d.ts +0 -0
- /package/dist/molecules/{table → pagination}/utils/getPageNumbers.js +0 -0
- /package/dist/organisms/form/{action → actions}/FormAction.d.ts +0 -0
- /package/src/molecules/{table → pagination}/utils/getPageNumbers.ts +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import "../../../molecules/forms/select/all.ts";
|
|
2
|
+
import "../../../molecules/table/all.ts";
|
|
2
3
|
|
|
3
|
-
import type { Meta, StoryObj } from "@storybook/react";
|
|
4
|
-
import { expect, fn, userEvent, within } from "
|
|
4
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
5
|
+
import { expect, fn, userEvent, within } from "storybook/test";
|
|
5
6
|
|
|
6
7
|
import availableActions from "../../__fixtures__/form-actions.json";
|
|
7
8
|
import data from "./__fixtures__/data.json";
|
|
@@ -22,32 +23,60 @@ export default {
|
|
|
22
23
|
operations: {
|
|
23
24
|
control: "object"
|
|
24
25
|
},
|
|
25
|
-
isLoading: {
|
|
26
|
-
|
|
27
|
-
},
|
|
28
|
-
disableFilters: {
|
|
29
|
-
|
|
30
|
-
},
|
|
31
|
-
disablePagination: {
|
|
32
|
-
|
|
33
|
-
},
|
|
26
|
+
// isLoading: {
|
|
27
|
+
// control: "boolean"
|
|
28
|
+
// },
|
|
29
|
+
// disableFilters: {
|
|
30
|
+
// control: "boolean"
|
|
31
|
+
// },
|
|
32
|
+
// disablePagination: {
|
|
33
|
+
// control: "boolean"
|
|
34
|
+
// },
|
|
34
35
|
onAddAction: {
|
|
35
36
|
action: "onAddAction"
|
|
36
37
|
}
|
|
37
38
|
},
|
|
39
|
+
args: {
|
|
40
|
+
availableActions: availableActions.map(({ name, title }) => ({
|
|
41
|
+
label: title,
|
|
42
|
+
value: name
|
|
43
|
+
})),
|
|
44
|
+
data: data as never,
|
|
45
|
+
operations: [
|
|
46
|
+
{
|
|
47
|
+
title: "Edit",
|
|
48
|
+
action: "edit",
|
|
49
|
+
alias: "row",
|
|
50
|
+
path: "/resources/:resourceId/submissions/:submissionId",
|
|
51
|
+
icon: "edit",
|
|
52
|
+
permissionsResolver() {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
action: "delete",
|
|
58
|
+
path: "/resources/:resourceId/submissions/:submissionId/delete",
|
|
59
|
+
icon: "trash",
|
|
60
|
+
buttonType: "danger",
|
|
61
|
+
permissionsResolver() {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
},
|
|
38
67
|
parameters: {}
|
|
39
68
|
} satisfies Meta<typeof ActionsTable>;
|
|
40
69
|
|
|
41
70
|
type Story = StoryObj<typeof ActionsTable>;
|
|
42
71
|
|
|
43
|
-
export const
|
|
72
|
+
export const Usage: Story = {
|
|
44
73
|
async play({ canvasElement, args }) {
|
|
45
74
|
const canvas = within(canvasElement);
|
|
46
75
|
|
|
47
76
|
const select = canvas.getByTestId("action-table-select");
|
|
48
77
|
const addButton = canvas.getByTestId("action-table-add");
|
|
49
78
|
|
|
50
|
-
expect(addButton).toHaveAttribute("disabled");
|
|
79
|
+
await expect(addButton).toHaveAttribute("disabled");
|
|
51
80
|
|
|
52
81
|
await userEvent.selectOptions(select, "save", {
|
|
53
82
|
delay: 100
|
|
@@ -55,56 +84,30 @@ export const Sandbox: Story = {
|
|
|
55
84
|
|
|
56
85
|
await userEvent.click(addButton);
|
|
57
86
|
|
|
58
|
-
expect(args.onAddAction).toHaveBeenCalledWith("save");
|
|
87
|
+
await expect(args.onAddAction).toHaveBeenCalledWith("save");
|
|
59
88
|
|
|
60
89
|
const editButton = await canvas.getByRole("button", { name: /Operation button: Edit/i });
|
|
61
90
|
const deleteButton = await canvas.getByRole("button", { name: /Operation button: delete/i });
|
|
62
91
|
|
|
63
|
-
expect(editButton).toBeInTheDocument();
|
|
64
|
-
expect(deleteButton).toBeInTheDocument();
|
|
92
|
+
await expect(editButton).toBeInTheDocument();
|
|
93
|
+
await expect(deleteButton).toBeInTheDocument();
|
|
65
94
|
|
|
66
95
|
await userEvent.click(editButton);
|
|
67
96
|
|
|
68
|
-
expect(args.onClick).toHaveBeenCalledWith(
|
|
97
|
+
await expect(args.onClick).toHaveBeenCalledWith(
|
|
69
98
|
args.data[0],
|
|
70
99
|
args.operations!.find(({ action }) => action === "edit")
|
|
71
100
|
);
|
|
72
101
|
|
|
73
102
|
await userEvent.click(deleteButton);
|
|
74
103
|
|
|
75
|
-
expect(args.onClick).toHaveBeenCalledWith(
|
|
104
|
+
await expect(args.onClick).toHaveBeenCalledWith(
|
|
76
105
|
args.data[0],
|
|
77
106
|
args.operations!.find(({ action }) => action === "delete")
|
|
78
107
|
);
|
|
79
108
|
},
|
|
80
109
|
args: {
|
|
81
110
|
onAddAction: fn(),
|
|
82
|
-
onClick: fn()
|
|
83
|
-
availableActions: availableActions.map(({ name, title }) => ({
|
|
84
|
-
label: title,
|
|
85
|
-
value: name
|
|
86
|
-
})),
|
|
87
|
-
data: data as never,
|
|
88
|
-
operations: [
|
|
89
|
-
{
|
|
90
|
-
title: "Edit",
|
|
91
|
-
action: "edit",
|
|
92
|
-
alias: "row",
|
|
93
|
-
path: "/resources/:resourceId/submissions/:submissionId",
|
|
94
|
-
icon: "edit",
|
|
95
|
-
permissionsResolver() {
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
action: "delete",
|
|
101
|
-
path: "/resources/:resourceId/submissions/:submissionId/delete",
|
|
102
|
-
icon: "trash",
|
|
103
|
-
buttonType: "danger",
|
|
104
|
-
permissionsResolver() {
|
|
105
|
-
return true;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
]
|
|
111
|
+
onClick: fn()
|
|
109
112
|
}
|
|
110
113
|
};
|
|
@@ -1,44 +1,40 @@
|
|
|
1
|
+
import { ColumnDef } from "@tanstack/react-table";
|
|
1
2
|
import classnames from "classnames";
|
|
2
3
|
import noop from "lodash/noop";
|
|
3
4
|
import { useState } from "react";
|
|
4
5
|
|
|
5
|
-
import {
|
|
6
|
+
import { useI18n } from "../../../hooks/useI18n.js";
|
|
7
|
+
import { ActionType, type FormOptions } from "../../../interfaces";
|
|
6
8
|
import { Select } from "../../../molecules/forms/select/Select";
|
|
7
|
-
import { Table, type TableProps } from "../../../molecules/table";
|
|
9
|
+
import { Table, type TableProps } from "../../../molecules/table/Table";
|
|
8
10
|
import { iconClass } from "../../../utils/iconClass";
|
|
9
11
|
|
|
10
12
|
export type ActionsTableProps = Omit<TableProps<ActionType>, "columns"> & {
|
|
11
13
|
onAddAction?: (actionName: string) => void;
|
|
12
14
|
availableActions?: { label: string; value: string }[];
|
|
15
|
+
i18n?: FormOptions["i18n"];
|
|
13
16
|
};
|
|
14
17
|
|
|
15
|
-
export function ActionsTable({
|
|
16
|
-
|
|
17
|
-
disablePagination = true,
|
|
18
|
-
availableActions = [],
|
|
19
|
-
onAddAction = noop,
|
|
20
|
-
...props
|
|
21
|
-
}: ActionsTableProps) {
|
|
22
|
-
const { i18n = (f: string) => f } = props;
|
|
18
|
+
export function ActionsTable({ availableActions = [], onAddAction = noop, ...props }: ActionsTableProps) {
|
|
19
|
+
const { t } = useI18n(props.i18n);
|
|
23
20
|
const [currentAction, setAction] = useState("");
|
|
24
21
|
|
|
25
|
-
const columns = [
|
|
22
|
+
const columns: ColumnDef<ActionType>[] = [
|
|
26
23
|
{
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
id: "title"
|
|
24
|
+
header: t("Action"),
|
|
25
|
+
accessorKey: "title"
|
|
30
26
|
}
|
|
31
27
|
];
|
|
32
28
|
|
|
33
29
|
return (
|
|
34
|
-
<Table {...props}
|
|
30
|
+
<Table {...props} columns={columns}>
|
|
35
31
|
<div className={"pagination-group"}>
|
|
36
32
|
<Select
|
|
37
33
|
data-testid={"action-table-select"}
|
|
38
34
|
name={"actions"}
|
|
39
35
|
value={currentAction}
|
|
40
|
-
options={[{ label:
|
|
41
|
-
onChange={(
|
|
36
|
+
options={[{ label: t("Select an action"), value: "" }].concat(availableActions)}
|
|
37
|
+
onChange={(_, action) => setAction(action)}
|
|
42
38
|
/>
|
|
43
39
|
<div className={"pl-3"}>
|
|
44
40
|
<button
|
|
@@ -48,7 +44,7 @@ export function ActionsTable({
|
|
|
48
44
|
onClick={() => currentAction && onAddAction(currentAction)}
|
|
49
45
|
type={"submit"}
|
|
50
46
|
>
|
|
51
|
-
<i className={classnames(iconClass(undefined, "plus"), "mr-1")} /> {
|
|
47
|
+
<i className={classnames(iconClass(undefined, "plus"), "mr-1")} /> {t("Add action")}
|
|
52
48
|
</button>
|
|
53
49
|
</div>
|
|
54
50
|
</div>
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import "../../../molecules/button/Button";
|
|
2
2
|
import "../../../molecules/forms/input-text/InputText";
|
|
3
3
|
import "../../../molecules/forms/select/all";
|
|
4
|
+
import "../../../molecules/forms/form-control/FormControl";
|
|
4
5
|
import "../../../molecules/pagination/all";
|
|
6
|
+
import "../../../molecules/table/all";
|
|
5
7
|
|
|
6
8
|
import tailwind from "@tsed/tailwind-formio";
|
|
7
9
|
|
|
@@ -1,36 +1,66 @@
|
|
|
1
|
+
import "./components/FormsCell.js";
|
|
2
|
+
|
|
3
|
+
import { ColumnDef } from "@tanstack/react-table";
|
|
4
|
+
|
|
5
|
+
import { useI18n } from "../../../hooks/useI18n.js";
|
|
1
6
|
import type { FormType } from "../../../interfaces";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
7
|
+
import { Table, TableProps } from "../../../molecules/table/Table";
|
|
8
|
+
import { getComponent } from "../../../registries/components.js";
|
|
9
|
+
import { FormsCell } from "./components/FormsCell.js";
|
|
4
10
|
|
|
5
11
|
export type FormsTableProps = Omit<TableProps<FormType>, "columns"> & {
|
|
6
|
-
icon?: string;
|
|
7
12
|
tags?: { label: string; value: string }[];
|
|
8
13
|
};
|
|
9
14
|
|
|
10
|
-
export function FormsTable({
|
|
11
|
-
const {
|
|
12
|
-
const
|
|
13
|
-
|
|
15
|
+
export function FormsTable({ tags, ...props }: FormsTableProps) {
|
|
16
|
+
const { t } = useI18n(props.i18n);
|
|
17
|
+
const Cell = getComponent<typeof FormsCell>("FormsCell");
|
|
18
|
+
|
|
19
|
+
const columns: ColumnDef<any>[] = [
|
|
14
20
|
{
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
+
header: t("Title"),
|
|
22
|
+
accessorKey: "title",
|
|
23
|
+
cell: (context) => <Cell {...context} i18n={t} />,
|
|
24
|
+
meta: {
|
|
25
|
+
cellProps: {
|
|
26
|
+
colSpan: 2
|
|
27
|
+
}
|
|
28
|
+
}
|
|
21
29
|
},
|
|
22
30
|
{
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
header: t("Tags"),
|
|
32
|
+
accessorKey: "tags",
|
|
33
|
+
meta: {
|
|
34
|
+
cellProps: {
|
|
35
|
+
hidden: true
|
|
36
|
+
},
|
|
37
|
+
filter: {
|
|
38
|
+
variant: "select",
|
|
39
|
+
layout: "react",
|
|
40
|
+
options: tags
|
|
41
|
+
}
|
|
42
|
+
}
|
|
33
43
|
}
|
|
44
|
+
// {
|
|
45
|
+
// Header: i18n("Title"),
|
|
46
|
+
// accessor: "title",
|
|
47
|
+
// id: "title",
|
|
48
|
+
// Cell: (props: any) => <FormCell {...props} icon={props.icon} i18n={i18n} />,
|
|
49
|
+
// Filter: DefaultColumnFilter,
|
|
50
|
+
// colspan: 2
|
|
51
|
+
// },
|
|
52
|
+
// {
|
|
53
|
+
// Header: i18n("Tags"),
|
|
54
|
+
// accessor: "tags",
|
|
55
|
+
// id: "tags",
|
|
56
|
+
// hidden: true,
|
|
57
|
+
// Filter: (props: any) =>
|
|
58
|
+
// tags && tags.length ? (
|
|
59
|
+
// <SelectColumnFilter {...props} column={{ ...props.columns, choices: tags }} />
|
|
60
|
+
// ) : (
|
|
61
|
+
// <DefaultColumnFilter {...props} />
|
|
62
|
+
// )
|
|
63
|
+
// }
|
|
34
64
|
];
|
|
35
65
|
|
|
36
66
|
return <Table {...(props as any)} columns={columns} />;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { CellContext } from "@tanstack/react-table";
|
|
2
|
+
import cx from "classnames";
|
|
3
|
+
import moment from "moment";
|
|
4
|
+
|
|
5
|
+
import type { FormType } from "../../../../interfaces/index.js";
|
|
6
|
+
import { registerComponent } from "../../../../registries/components.js";
|
|
7
|
+
import { iconClass } from "../../../../utils/iconClass";
|
|
8
|
+
import { stopPropagationWrapper } from "../../../../utils/stopPropagationWrapper";
|
|
9
|
+
|
|
10
|
+
export function FormsCell(
|
|
11
|
+
props: CellContext<FormType, any> & {
|
|
12
|
+
i18n: (i18n: string) => string;
|
|
13
|
+
}
|
|
14
|
+
) {
|
|
15
|
+
const {
|
|
16
|
+
row: { original: form }
|
|
17
|
+
} = props;
|
|
18
|
+
|
|
19
|
+
return (
|
|
20
|
+
<div className={"p-1"}>
|
|
21
|
+
<h4 className={"text-primary text-lg flex space-x-2 items-center"}>
|
|
22
|
+
<i className={cx(iconClass(undefined, "server"), "text-secondary")} />
|
|
23
|
+
<span>{form.title}</span>
|
|
24
|
+
</h4>
|
|
25
|
+
|
|
26
|
+
<ul className='reset-list text-gray-500'>
|
|
27
|
+
<li className={"text-sm"}>Name: {form.name || form.machineName}</li>
|
|
28
|
+
<li className='mt-5 flex space-x-1'>
|
|
29
|
+
<span className='badge bg-light flex space-x-1'>
|
|
30
|
+
<i className={iconClass(undefined, "history")} />
|
|
31
|
+
<span>Updated {moment(form.modified).fromNow()}</span>
|
|
32
|
+
</span>
|
|
33
|
+
|
|
34
|
+
{(form.tags || []).map((tag, index) => (
|
|
35
|
+
<button
|
|
36
|
+
key={index}
|
|
37
|
+
className='badge badge-hover bg-secondary flex space-x-1'
|
|
38
|
+
onClick={stopPropagationWrapper(() => {
|
|
39
|
+
// props.setFilter("tags", tag);
|
|
40
|
+
// props.gotoPage(0);
|
|
41
|
+
})}
|
|
42
|
+
>
|
|
43
|
+
<i className={iconClass(undefined, "tags")} />
|
|
44
|
+
<span>{tag}</span>
|
|
45
|
+
</button>
|
|
46
|
+
))}
|
|
47
|
+
</li>
|
|
48
|
+
</ul>
|
|
49
|
+
</div>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
registerComponent("FormsCell", FormsCell);
|
|
@@ -2,17 +2,46 @@ import "../../../molecules/button/Button";
|
|
|
2
2
|
import "../../../molecules/forms/input-text/InputText";
|
|
3
3
|
import "../../../molecules/forms/select/all";
|
|
4
4
|
import "../../../molecules/pagination/all";
|
|
5
|
+
import "../../../molecules/table/all";
|
|
5
6
|
|
|
7
|
+
import { Meta, StoryObj } from "@storybook/react-vite";
|
|
6
8
|
import { useState } from "react";
|
|
7
9
|
|
|
8
10
|
import { mapPagination } from "../../../utils/mapPagination";
|
|
9
|
-
import
|
|
11
|
+
import FormSchema from "../../__fixtures__/form-schema.json";
|
|
10
12
|
import formSubmissions from "../../__fixtures__/form-submissions.json";
|
|
11
13
|
import { SubmissionsTable } from "./SubmissionsTable";
|
|
12
14
|
|
|
15
|
+
function Wrapper(args: any) {
|
|
16
|
+
const [skip, setSkip] = useState(0);
|
|
17
|
+
const [limit, setLimit] = useState(10);
|
|
18
|
+
const [serverCount] = useState(87);
|
|
19
|
+
|
|
20
|
+
const onChange = (obj: any) => {
|
|
21
|
+
setLimit(obj.pageSize);
|
|
22
|
+
setSkip(obj.pageIndex * obj.pageSize);
|
|
23
|
+
args.onChange && args.onChange(obj);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<SubmissionsTable
|
|
28
|
+
{...args}
|
|
29
|
+
onChange={onChange}
|
|
30
|
+
{...mapPagination({
|
|
31
|
+
skip,
|
|
32
|
+
limit,
|
|
33
|
+
serverCount
|
|
34
|
+
})}
|
|
35
|
+
/>
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
|
|
13
39
|
/**
|
|
40
|
+
* SubmissionsTable component displays form submissions in a table format with filtering,
|
|
41
|
+
* pagination, and action buttons for each submission.
|
|
42
|
+
*
|
|
14
43
|
* ```tsx
|
|
15
|
-
* import {SubmissionsTable} from "@tsed/react-formio/organisms/table/submissions/SubmissionsTable";
|
|
44
|
+
* import { SubmissionsTable } from "@tsed/react-formio/organisms/table/submissions/SubmissionsTable";
|
|
16
45
|
* ```
|
|
17
46
|
*/
|
|
18
47
|
export default {
|
|
@@ -20,76 +49,91 @@ export default {
|
|
|
20
49
|
component: SubmissionsTable,
|
|
21
50
|
argTypes: {
|
|
22
51
|
form: {
|
|
52
|
+
description: "The form schema used to determine table columns",
|
|
23
53
|
control: "object"
|
|
24
54
|
},
|
|
25
55
|
data: {
|
|
56
|
+
description: "Array of submission data to display in the table",
|
|
26
57
|
control: "object"
|
|
27
58
|
},
|
|
28
59
|
operations: {
|
|
60
|
+
description: "Array of operations/actions available for each submission",
|
|
29
61
|
control: "object"
|
|
30
62
|
},
|
|
31
|
-
|
|
32
|
-
|
|
63
|
+
onChange: {
|
|
64
|
+
description: "Callback when table state changes (sorting, filtering, pagination)",
|
|
65
|
+
action: "onChange"
|
|
33
66
|
},
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
},
|
|
37
|
-
disableFilters: {
|
|
38
|
-
control: "boolean"
|
|
39
|
-
},
|
|
40
|
-
disablePagination: {
|
|
41
|
-
control: "boolean"
|
|
67
|
+
i18n: {
|
|
68
|
+
description: "Internationalization function"
|
|
42
69
|
}
|
|
43
70
|
},
|
|
44
|
-
parameters: {
|
|
45
|
-
|
|
71
|
+
parameters: {
|
|
72
|
+
docs: {
|
|
73
|
+
description: {
|
|
74
|
+
component:
|
|
75
|
+
"Component that displays form submissions in a table format with filtering, pagination, and action buttons for each submission."
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
args: {
|
|
80
|
+
form: FormSchema as any,
|
|
81
|
+
data: formSubmissions as any[],
|
|
82
|
+
operations: [
|
|
83
|
+
{
|
|
84
|
+
title: "Edit",
|
|
85
|
+
action: "edit",
|
|
86
|
+
alias: "row",
|
|
87
|
+
path: "/resources/:resourceId/submissions/:submissionId",
|
|
88
|
+
icon: "edit",
|
|
89
|
+
permissionsResolver() {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
action: "delete",
|
|
95
|
+
path: "/resources/:resourceId/submissions/:submissionId/delete",
|
|
96
|
+
icon: "trash",
|
|
97
|
+
buttonType: "danger",
|
|
98
|
+
permissionsResolver() {
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
render: Wrapper
|
|
105
|
+
} satisfies Meta<typeof SubmissionsTable>;
|
|
46
106
|
|
|
47
|
-
|
|
48
|
-
const [skip, setSkip] = useState(0);
|
|
49
|
-
const [limit, setLimit] = useState(10);
|
|
50
|
-
const [serverCount] = useState(87);
|
|
107
|
+
type Story = StoryObj<typeof SubmissionsTable>;
|
|
51
108
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
};
|
|
109
|
+
/**
|
|
110
|
+
* Standard table with default settings
|
|
111
|
+
*/
|
|
112
|
+
export const Default: Story = {};
|
|
57
113
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
serverCount
|
|
66
|
-
})}
|
|
67
|
-
/>
|
|
68
|
-
);
|
|
114
|
+
/**
|
|
115
|
+
* Empty table with no data
|
|
116
|
+
*/
|
|
117
|
+
export const Empty: Story = {
|
|
118
|
+
args: {
|
|
119
|
+
data: []
|
|
120
|
+
}
|
|
69
121
|
};
|
|
70
122
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
{
|
|
86
|
-
action: "delete",
|
|
87
|
-
path: "/resources/:resourceId/submissions/:submissionId/delete",
|
|
88
|
-
icon: "trash",
|
|
89
|
-
buttonType: "danger",
|
|
90
|
-
permissionsResolver() {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
123
|
+
/**
|
|
124
|
+
* Table with custom translations
|
|
125
|
+
*/
|
|
126
|
+
export const Translated: Story = {
|
|
127
|
+
args: {
|
|
128
|
+
i18n: {
|
|
129
|
+
"Search...": "Rechercher...",
|
|
130
|
+
"No results found": "Aucun résultat trouvé",
|
|
131
|
+
"Loading...": "Chargement...",
|
|
132
|
+
Page: "Page",
|
|
133
|
+
of: "sur",
|
|
134
|
+
rows: "lignes",
|
|
135
|
+
Edit: "Éditer",
|
|
136
|
+
Delete: "Supprimer"
|
|
93
137
|
}
|
|
94
|
-
|
|
138
|
+
}
|
|
95
139
|
};
|
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import type { FormType, SubmissionType } from "../../../interfaces";
|
|
2
|
-
import {
|
|
1
|
+
import type { FormType, JSON, SubmissionType } from "../../../interfaces";
|
|
2
|
+
import { Table, type TableProps } from "../../../molecules/table/Table";
|
|
3
|
+
import { mapFormToColumns } from "../../../molecules/table/utils/mapFormToColumns.js";
|
|
3
4
|
|
|
4
|
-
export type SubmissionsTableProps =
|
|
5
|
+
export type SubmissionsTableProps<Data extends { [key: string]: JSON } = { [key: string]: JSON }> = Omit<
|
|
6
|
+
TableProps<SubmissionType<Data>>,
|
|
7
|
+
"columns"
|
|
8
|
+
> & {
|
|
5
9
|
form?: FormType;
|
|
6
10
|
};
|
|
7
11
|
|
|
8
|
-
export function SubmissionsTable
|
|
12
|
+
export function SubmissionsTable<Data extends { [key: string]: JSON } = { [key: string]: JSON }>({
|
|
13
|
+
form,
|
|
14
|
+
...props
|
|
15
|
+
}: SubmissionsTableProps<Data>) {
|
|
9
16
|
const columns: any[] | undefined = form && mapFormToColumns(form);
|
|
10
17
|
|
|
11
|
-
return <Table {...props} columns={columns!} />;
|
|
18
|
+
return <Table {...(props as any)} columns={columns!} />;
|
|
12
19
|
}
|