@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,85 +1,85 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useMemo as
|
|
3
|
-
import { Card as
|
|
1
|
+
import { jsxs as o, jsx as e, Fragment as g } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo as y, useState as w, useCallback as A, useEffect as N } from "react";
|
|
3
|
+
import { Card as m } from "../../../molecules/card/Card.js";
|
|
4
4
|
import { Form as v } from "../Form.js";
|
|
5
|
-
import { getFormAccess as S, dataAccessToSubmissions as b, updateSubmissions as x, shouldUpdate as
|
|
6
|
-
function T({ form: s, roles:
|
|
7
|
-
const
|
|
8
|
-
(
|
|
9
|
-
x(
|
|
5
|
+
import { getFormAccess as S, dataAccessToSubmissions as b, updateSubmissions as x, shouldUpdate as f, submissionsToDataAccess as F } from "./FormAccess.utils.js";
|
|
6
|
+
function T({ form: s, roles: l, onSubmit: a, options: c }) {
|
|
7
|
+
const n = y(() => S(l), [l]), [i, r] = w(() => b(s, n)), d = A(
|
|
8
|
+
(t, h) => {
|
|
9
|
+
x(t, h, i, r);
|
|
10
10
|
},
|
|
11
11
|
[i]
|
|
12
12
|
);
|
|
13
13
|
return N(() => {
|
|
14
|
-
const
|
|
15
|
-
s
|
|
16
|
-
}, [s
|
|
17
|
-
options:
|
|
18
|
-
form:
|
|
14
|
+
const t = b(s, n);
|
|
15
|
+
s?._id && (f("access", i.access, t) || f("submissionAccess", i.submissionAccess, t)) && r(t);
|
|
16
|
+
}, [s?._id]), {
|
|
17
|
+
options: c,
|
|
18
|
+
form: n,
|
|
19
19
|
type: s.type,
|
|
20
20
|
submissions: i,
|
|
21
|
-
onChange:
|
|
21
|
+
onChange: d,
|
|
22
22
|
onSubmit: () => {
|
|
23
|
-
|
|
23
|
+
a && a(F(s, i));
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
-
function
|
|
28
|
-
const [
|
|
29
|
-
return /* @__PURE__ */
|
|
27
|
+
function p({ name: s, form: l, submissions: a, options: c, onChange: n, onSubmit: i, children: r }) {
|
|
28
|
+
const [d, t] = w(!0);
|
|
29
|
+
return /* @__PURE__ */ o(g, { children: [
|
|
30
30
|
/* @__PURE__ */ e(
|
|
31
31
|
v,
|
|
32
32
|
{
|
|
33
|
-
form:
|
|
34
|
-
submission:
|
|
33
|
+
form: l[s],
|
|
34
|
+
submission: a[s],
|
|
35
35
|
onChange: ({ data: h, isValid: u }) => {
|
|
36
|
-
u &&
|
|
36
|
+
u && n(s, { data: h }), t(u);
|
|
37
37
|
},
|
|
38
|
-
options:
|
|
38
|
+
options: c
|
|
39
39
|
}
|
|
40
40
|
),
|
|
41
|
-
/* @__PURE__ */ e("button", { disabled: !
|
|
42
|
-
|
|
41
|
+
/* @__PURE__ */ e("button", { disabled: !d, className: "mt-5 btn btn-primary", onClick: i, children: "Save access" }),
|
|
42
|
+
r,
|
|
43
43
|
/* @__PURE__ */ e("div", { className: "alert alert-warning mt-5", children: "Elevated permissions allow users to access and modify other user's entities. Assign with caution." })
|
|
44
44
|
] });
|
|
45
45
|
}
|
|
46
46
|
function O(s) {
|
|
47
|
-
const { type:
|
|
48
|
-
return /* @__PURE__ */
|
|
47
|
+
const { type: l, form: a, submissions: c, options: n, onChange: i, onSubmit: r } = T(s);
|
|
48
|
+
return /* @__PURE__ */ o("div", { children: [
|
|
49
49
|
s.children,
|
|
50
|
-
/* @__PURE__ */
|
|
51
|
-
/* @__PURE__ */ e(
|
|
52
|
-
|
|
50
|
+
/* @__PURE__ */ o("div", { className: "flex mb-5", children: [
|
|
51
|
+
/* @__PURE__ */ e(m, { label: "Manage submission access", className: "flex-1", children: /* @__PURE__ */ e(
|
|
52
|
+
p,
|
|
53
53
|
{
|
|
54
54
|
name: "submissionAccess",
|
|
55
|
-
form:
|
|
56
|
-
submissions:
|
|
55
|
+
form: a,
|
|
56
|
+
submissions: c,
|
|
57
57
|
onChange: i,
|
|
58
|
-
onSubmit:
|
|
59
|
-
options:
|
|
58
|
+
onSubmit: r,
|
|
59
|
+
options: n,
|
|
60
60
|
children: s.children
|
|
61
61
|
}
|
|
62
62
|
) }),
|
|
63
|
-
/* @__PURE__ */ e("div", { className: "w-1/4 pl-4", children: /* @__PURE__ */
|
|
63
|
+
/* @__PURE__ */ e("div", { className: "w-1/4 pl-4", children: /* @__PURE__ */ o(m, { label: "About Submission Data Permissions", children: [
|
|
64
64
|
/* @__PURE__ */ e("p", { children: "Submission Data Permissions allow you to control who can create, view, and modify form submission data." }),
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
/* @__PURE__ */
|
|
65
|
+
/* @__PURE__ */ o("ul", { className: "mt-5 pl-7 list-disc", children: [
|
|
66
|
+
/* @__PURE__ */ o("li", { className: "pb-2", children: [
|
|
67
67
|
/* @__PURE__ */ e("strong", { children: "Own Permissions" }),
|
|
68
68
|
" - These permissions apply if the user is the original creator of the submission data and is listed as the owner of the submission in submission.owner. This allows users to create and edit their own submission data without seeing other user's data."
|
|
69
69
|
] }),
|
|
70
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ o("li", { children: [
|
|
71
71
|
/* @__PURE__ */ e("strong", { children: "All Permissions" }),
|
|
72
72
|
" - These permissions apply to all submission data regardless of who owns it."
|
|
73
73
|
] })
|
|
74
74
|
] })
|
|
75
75
|
] }) })
|
|
76
76
|
] }),
|
|
77
|
-
/* @__PURE__ */
|
|
78
|
-
/* @__PURE__ */ e(
|
|
79
|
-
/* @__PURE__ */ e("div", { className: "w-1/4 pl-4", children: /* @__PURE__ */
|
|
77
|
+
/* @__PURE__ */ o("div", { className: "flex mb-5", children: [
|
|
78
|
+
/* @__PURE__ */ e(m, { label: `Manage ${l} definition access`, className: "flex-1", children: /* @__PURE__ */ e(p, { name: "access", form: a, submissions: c, onChange: i, onSubmit: r, options: n, children: s.children }) }),
|
|
79
|
+
/* @__PURE__ */ e("div", { className: "w-1/4 pl-4", children: /* @__PURE__ */ o(m, { label: "About Form Definition Access", children: [
|
|
80
80
|
/* @__PURE__ */ e("p", { children: "These permissions allow you to give access to a single form's JSON definition so they can render the form." }),
|
|
81
81
|
/* @__PURE__ */ e("p", { children: "Typically you will want to allow all of your roles to be able to Read the form definition." }),
|
|
82
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ o("p", { children: [
|
|
83
83
|
"Each form also has an owner at ",
|
|
84
84
|
/* @__PURE__ */ e("strong", { children: "form.owner" }),
|
|
85
85
|
" which is the user who created the form. In some applications users are allowed to create their own forms. In those cases it is helpful to have Owner based permissions as well."
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAccess.js","sources":["../../../../src/organisms/form/access/FormAccess.tsx"],"sourcesContent":["import { PropsWithChildren, useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport type { FormOptions, FormType, SubmissionType } from \"../../../interfaces\";\nimport { Card } from \"../../../molecules/card/Card\";\nimport { Form } from \"../../form/Form\";\nimport {\n AccessRolesType,\n dataAccessToSubmissions,\n FormAccessType,\n getFormAccess,\n shouldUpdate,\n SubmissionAccessType,\n submissionsToDataAccess,\n updateSubmissions\n} from \"./FormAccess.utils\";\n\nexport interface FormAccessProps {\n form: Partial<FormType>;\n roles: any;\n onSubmit?: Function;\n options?: FormOptions;\n}\n\nfunction useFormAccess({ form: formDefinition, roles, onSubmit, options }: FormAccessProps) {\n const form = useMemo(() => getFormAccess(roles), [roles]);\n\n const [submissions, setSubmissions] = useState(() => dataAccessToSubmissions(formDefinition, form));\n\n const onChange = useCallback(\n (type: string, submission: SubmissionType<AccessRolesType>) => {\n updateSubmissions(type, submission, submissions, setSubmissions);\n },\n [submissions]\n );\n\n useEffect(() => {\n const input = dataAccessToSubmissions(formDefinition, form);\n if (formDefinition?._id) {\n if (shouldUpdate(\"access\", submissions.access, input) || shouldUpdate(\"submissionAccess\", submissions.submissionAccess, input)) {\n setSubmissions(input);\n }\n }\n }, [formDefinition?._id]);\n\n return {\n options,\n form,\n type: formDefinition.type,\n submissions,\n onChange,\n onSubmit: () => {\n onSubmit && onSubmit(submissionsToDataAccess(formDefinition, submissions));\n }\n };\n}\n\ninterface NamedFormAccessProps {\n name: \"access\" | \"submissionAccess\";\n form: FormAccessType;\n submissions: SubmissionAccessType;\n options: any;\n onSubmit: any;\n\n onChange(name: \"access\" | \"submissionAccess\", submission: SubmissionType<AccessRolesType>): void;\n}\n\nfunction NamedFormAccess({ name, form, submissions, options, onChange, onSubmit, children }: PropsWithChildren<NamedFormAccessProps>) {\n const [isValid, setIsValid] = useState(true);\n\n return (\n <>\n <Form<AccessRolesType>\n form={form[name]}\n submission={submissions[name]}\n onChange={({ data, isValid }) => {\n isValid && onChange(name, { data: data as unknown as AccessRolesType });\n setIsValid(isValid);\n }}\n options={options}\n />\n\n <button disabled={!isValid} className={\"mt-5 btn btn-primary\"} onClick={onSubmit}>\n Save access\n </button>\n\n {children}\n\n <div className={\"alert alert-warning mt-5\"}>\n Elevated permissions allow users to access and modify other user's entities. Assign with caution.\n </div>\n </>\n );\n}\n\nexport function FormAccess(props: PropsWithChildren<FormAccessProps>) {\n const { type, form, submissions, options, onChange, onSubmit } = useFormAccess(props);\n\n return (\n <div>\n {props.children}\n <div className={\"flex mb-5\"}>\n <Card label={\"Manage submission access\"} className={\"flex-1\"}>\n <NamedFormAccess\n name={\"submissionAccess\"}\n form={form}\n submissions={submissions}\n onChange={onChange}\n onSubmit={onSubmit}\n options={options}\n >\n {props.children}\n </NamedFormAccess>\n </Card>\n <div className={\"w-1/4 pl-4\"}>\n <Card label={\"About Submission Data Permissions\"}>\n <p>Submission Data Permissions allow you to control who can create, view, and modify form submission data.</p>\n\n <ul className={\"mt-5 pl-7 list-disc\"}>\n <li className={\"pb-2\"}>\n <strong>Own Permissions</strong> - These permissions apply if the user is the original creator of the submission data and is\n listed as the owner of the submission in submission.owner. This allows users to create and edit their own submission data\n without seeing other user's data.\n </li>\n <li>\n <strong>All Permissions</strong> - These permissions apply to all submission data regardless of who owns it.\n </li>\n </ul>\n </Card>\n </div>\n </div>\n <div className={\"flex mb-5\"}>\n <Card label={`Manage ${type} definition access`} className={\"flex-1\"}>\n <NamedFormAccess name={\"access\"} form={form} submissions={submissions} onChange={onChange} onSubmit={onSubmit} options={options}>\n {props.children}\n </NamedFormAccess>\n </Card>\n\n <div className={\"w-1/4 pl-4\"}>\n <Card label={\"About Form Definition Access\"}>\n <p>These permissions allow you to give access to a single form's JSON definition so they can render the form.</p>\n\n <p>Typically you will want to allow all of your roles to be able to Read the form definition.</p>\n\n <p>\n Each form also has an owner at <strong>form.owner</strong> which is the user who created the form. In some applications users\n are allowed to create their own forms. In those cases it is helpful to have Owner based permissions as well.\n </p>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["useFormAccess","formDefinition","roles","onSubmit","options","form","useMemo","getFormAccess","submissions","setSubmissions","useState","dataAccessToSubmissions","onChange","useCallback","type","submission","updateSubmissions","useEffect","input","shouldUpdate","submissionsToDataAccess","NamedFormAccess","name","children","isValid","setIsValid","jsxs","Fragment","jsx","Form","data","FormAccess","props","Card"],"mappings":";;;;;AAuBA,SAASA,EAAc,EAAE,MAAMC,GAAgB,OAAAC,GAAO,UAAAC,GAAU,SAAAC,KAA4B;
|
|
1
|
+
{"version":3,"file":"FormAccess.js","sources":["../../../../src/organisms/form/access/FormAccess.tsx"],"sourcesContent":["import { PropsWithChildren, useCallback, useEffect, useMemo, useState } from \"react\";\n\nimport type { FormOptions, FormType, SubmissionType } from \"../../../interfaces\";\nimport { Card } from \"../../../molecules/card/Card\";\nimport { Form } from \"../../form/Form\";\nimport {\n AccessRolesType,\n dataAccessToSubmissions,\n FormAccessType,\n getFormAccess,\n shouldUpdate,\n SubmissionAccessType,\n submissionsToDataAccess,\n updateSubmissions\n} from \"./FormAccess.utils\";\n\nexport interface FormAccessProps {\n form: Partial<FormType>;\n roles: any;\n onSubmit?: Function;\n options?: FormOptions;\n}\n\nfunction useFormAccess({ form: formDefinition, roles, onSubmit, options }: FormAccessProps) {\n const form = useMemo(() => getFormAccess(roles), [roles]);\n\n const [submissions, setSubmissions] = useState(() => dataAccessToSubmissions(formDefinition, form));\n\n const onChange = useCallback(\n (type: string, submission: SubmissionType<AccessRolesType>) => {\n updateSubmissions(type, submission, submissions, setSubmissions);\n },\n [submissions]\n );\n\n useEffect(() => {\n const input = dataAccessToSubmissions(formDefinition, form);\n if (formDefinition?._id) {\n if (shouldUpdate(\"access\", submissions.access, input) || shouldUpdate(\"submissionAccess\", submissions.submissionAccess, input)) {\n setSubmissions(input);\n }\n }\n }, [formDefinition?._id]);\n\n return {\n options,\n form,\n type: formDefinition.type,\n submissions,\n onChange,\n onSubmit: () => {\n onSubmit && onSubmit(submissionsToDataAccess(formDefinition, submissions));\n }\n };\n}\n\ninterface NamedFormAccessProps {\n name: \"access\" | \"submissionAccess\";\n form: FormAccessType;\n submissions: SubmissionAccessType;\n options: any;\n onSubmit: any;\n\n onChange(name: \"access\" | \"submissionAccess\", submission: SubmissionType<AccessRolesType>): void;\n}\n\nfunction NamedFormAccess({ name, form, submissions, options, onChange, onSubmit, children }: PropsWithChildren<NamedFormAccessProps>) {\n const [isValid, setIsValid] = useState(true);\n\n return (\n <>\n <Form<AccessRolesType>\n form={form[name]}\n submission={submissions[name]}\n onChange={({ data, isValid }) => {\n isValid && onChange(name, { data: data as unknown as AccessRolesType });\n setIsValid(isValid);\n }}\n options={options}\n />\n\n <button disabled={!isValid} className={\"mt-5 btn btn-primary\"} onClick={onSubmit}>\n Save access\n </button>\n\n {children}\n\n <div className={\"alert alert-warning mt-5\"}>\n Elevated permissions allow users to access and modify other user's entities. Assign with caution.\n </div>\n </>\n );\n}\n\nexport function FormAccess(props: PropsWithChildren<FormAccessProps>) {\n const { type, form, submissions, options, onChange, onSubmit } = useFormAccess(props);\n\n return (\n <div>\n {props.children}\n <div className={\"flex mb-5\"}>\n <Card label={\"Manage submission access\"} className={\"flex-1\"}>\n <NamedFormAccess\n name={\"submissionAccess\"}\n form={form}\n submissions={submissions}\n onChange={onChange}\n onSubmit={onSubmit}\n options={options}\n >\n {props.children}\n </NamedFormAccess>\n </Card>\n <div className={\"w-1/4 pl-4\"}>\n <Card label={\"About Submission Data Permissions\"}>\n <p>Submission Data Permissions allow you to control who can create, view, and modify form submission data.</p>\n\n <ul className={\"mt-5 pl-7 list-disc\"}>\n <li className={\"pb-2\"}>\n <strong>Own Permissions</strong> - These permissions apply if the user is the original creator of the submission data and is\n listed as the owner of the submission in submission.owner. This allows users to create and edit their own submission data\n without seeing other user's data.\n </li>\n <li>\n <strong>All Permissions</strong> - These permissions apply to all submission data regardless of who owns it.\n </li>\n </ul>\n </Card>\n </div>\n </div>\n <div className={\"flex mb-5\"}>\n <Card label={`Manage ${type} definition access`} className={\"flex-1\"}>\n <NamedFormAccess name={\"access\"} form={form} submissions={submissions} onChange={onChange} onSubmit={onSubmit} options={options}>\n {props.children}\n </NamedFormAccess>\n </Card>\n\n <div className={\"w-1/4 pl-4\"}>\n <Card label={\"About Form Definition Access\"}>\n <p>These permissions allow you to give access to a single form's JSON definition so they can render the form.</p>\n\n <p>Typically you will want to allow all of your roles to be able to Read the form definition.</p>\n\n <p>\n Each form also has an owner at <strong>form.owner</strong> which is the user who created the form. In some applications users\n are allowed to create their own forms. In those cases it is helpful to have Owner based permissions as well.\n </p>\n </Card>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["useFormAccess","formDefinition","roles","onSubmit","options","form","useMemo","getFormAccess","submissions","setSubmissions","useState","dataAccessToSubmissions","onChange","useCallback","type","submission","updateSubmissions","useEffect","input","shouldUpdate","submissionsToDataAccess","NamedFormAccess","name","children","isValid","setIsValid","jsxs","Fragment","jsx","Form","data","FormAccess","props","Card"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAccess.schema.js","sources":["../../../../src/organisms/form/access/FormAccess.schema.ts"],"sourcesContent":["import type { ComponentType, FormType } from \"../../../interfaces\";\n\nexport function getRoleComponent({ label, key, description, choices, data }: any): ComponentType {\n return {\n label,\n key,\n description,\n type: \"select\",\n labelPosition: \"top\",\n widget: \"choicesjs\",\n placeholder: \"Select roles...\",\n tooltip: \"\",\n multiple: true,\n dataSrc: \"values\",\n defaultValue: \"\",\n data: {\n values: choices\n },\n template: \"<span>{{ item.label }}</span>\",\n searchEnabled: true,\n selectThreshold: 0,\n validate: {\n required: false,\n custom: \"\",\n customPrivate: false\n },\n values: data\n };\n}\n\nfunction toDescription(description: string, hr = true): string {\n return '<span class=\"text-sm\">' + description + \"</span> \" + (hr ? '<hr class=\"mt-6 mb-5 border-gray-200 mx-20\"/>' : \"\");\n}\n\nexport function getSubmissionPermissionForm({ choices }: any): FormType {\n return {\n description: \"<strong>Elevated permissions allow users to access and modify other user's entities. Assign with caution.</strong>\",\n components: [\n getRoleComponent({\n key: \"create_own\",\n label: '<h4 class=\"text-gray-800\">Create Own Submissions</h4>',\n description: toDescription(\n \"The Create Own Submissions permission will allow a user with one of the Roles to create a Submission. Upon creating the Submission, the user will be defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"create_all\",\n label: '<h4 class=\"text-gray-800\">Create All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Create All Submissions permission will allow a user with one of the Roles to create a new Submission and assign ownership of that Submission to another user.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"read_own\",\n label: '<h4 class=\"text-gray-800\">Read Own Submissions</h4>',\n description: toDescription(\n \"The Read Own Submissions permission will allow a user with one of the Roles to read a Submission. A user can only read a Submission if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"read_all\",\n label: '<h4 class=\"text-gray-800\">Read All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Read All Submissions permission will allow a user with one of the Roles to read all Submissions regardless of who owns them.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_own\",\n label: '<h4 class=\"text-gray-800\">Update Own Submissions</h4>',\n description: toDescription(\n \"The Update Own Submissions permission will allow a user with one of the Roles to update a Submission. A user can only update a Submission if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_all\",\n label: '<h4 class=\"text-gray-800\">Update All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Update All Submissions permission will allow a user with one of the Roles to update a Submission, regardless of who owns the Submission. Additionally with this permission, a user can change the owner of a Submission.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_own\",\n label: '<h4 class=\"text-gray-800\">Delete Own Submissions</h4>',\n description: toDescription(\n \"The Delete Own Submissions permission will allow a user with one of the Roles, to delete a Submission. A user can only delete a Submission if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_all\",\n label: '<h4 class=\"text-gray-800\">Delete All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Delete All Submissions permission will allow a user with one of the Roles to delete a Submission, regardless of who owns the Submission.',\n false\n ),\n choices\n })\n ]\n };\n}\n\nexport function getAccessPermissionForm({ choices }: any): FormType {\n return {\n description: \"<strong>Elevated permissions allow users to access and modify other user's entities. Assign with caution.</strong>\",\n components: [\n getRoleComponent({\n key: \"read_own\",\n label: '<h4 class=\"text-gray-800\">Read Form Definition (Restricted to owner)</h4>',\n description: toDescription(\n \"The Read Own permission will allow a user, with one of the given Roles, to read a form. A user can only read a form if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"read_all\",\n label: \"<h4>Read Form Definition</h4>\",\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Read permission will allow a user, with one of the given Roles, to read the form.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_own\",\n label: '<h4 class=\"text-gray-800\">Update Form Definition (Restricted to owner)</h4>',\n description: toDescription(\n \"The Update Own permission will allow a user, with one of the given Roles, to update a form. A user can only update a form if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_all\",\n label: '<h4 class=\"text-gray-800\">Update Form Definition</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Update permission will allow a user, with one of the given Roles, to read and edit the form.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_own\",\n label: '<h4 class=\"text-gray-800\">Delete Form Definition (Restricted to owner)</h4>',\n description: toDescription(\n \"The Delete Own permission will allow a user, with one of the given Roles, to delete a form. A user can only delete a form if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_all\",\n label: '<h4 class=\"text-gray-800\">Delete Form Definition</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Delete permission will allow a user, with one of the given Roles, to delete the form.',\n false\n ),\n choices\n })\n ]\n };\n}\n"],"names":["getRoleComponent","label","key","description","choices","data","toDescription","hr","getSubmissionPermissionForm","getAccessPermissionForm"],"mappings":"AAEO,SAASA,EAAiB,EAAE,OAAAC,GAAO,KAAAC,GAAK,aAAAC,GAAa,SAAAC,GAAS,MAAAC,KAA4B;
|
|
1
|
+
{"version":3,"file":"FormAccess.schema.js","sources":["../../../../src/organisms/form/access/FormAccess.schema.ts"],"sourcesContent":["import type { ComponentType, FormType } from \"../../../interfaces\";\n\nexport function getRoleComponent({ label, key, description, choices, data }: any): ComponentType {\n return {\n label,\n key,\n description,\n type: \"select\",\n labelPosition: \"top\",\n widget: \"choicesjs\",\n placeholder: \"Select roles...\",\n tooltip: \"\",\n multiple: true,\n input: true,\n dataSrc: \"values\",\n defaultValue: \"\",\n data: {\n values: choices\n },\n template: \"<span>{{ item.label }}</span>\",\n searchEnabled: true,\n selectThreshold: 0,\n validate: {\n required: false,\n custom: \"\",\n customPrivate: false\n },\n values: data\n };\n}\n\nfunction toDescription(description: string, hr = true): string {\n return '<span class=\"text-sm\">' + description + \"</span> \" + (hr ? '<hr class=\"mt-6 mb-5 border-gray-200 mx-20\"/>' : \"\");\n}\n\nexport function getSubmissionPermissionForm({ choices }: any): FormType {\n return {\n description: \"<strong>Elevated permissions allow users to access and modify other user's entities. Assign with caution.</strong>\",\n components: [\n getRoleComponent({\n key: \"create_own\",\n label: '<h4 class=\"text-gray-800\">Create Own Submissions</h4>',\n description: toDescription(\n \"The Create Own Submissions permission will allow a user with one of the Roles to create a Submission. Upon creating the Submission, the user will be defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"create_all\",\n label: '<h4 class=\"text-gray-800\">Create All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Create All Submissions permission will allow a user with one of the Roles to create a new Submission and assign ownership of that Submission to another user.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"read_own\",\n label: '<h4 class=\"text-gray-800\">Read Own Submissions</h4>',\n description: toDescription(\n \"The Read Own Submissions permission will allow a user with one of the Roles to read a Submission. A user can only read a Submission if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"read_all\",\n label: '<h4 class=\"text-gray-800\">Read All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Read All Submissions permission will allow a user with one of the Roles to read all Submissions regardless of who owns them.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_own\",\n label: '<h4 class=\"text-gray-800\">Update Own Submissions</h4>',\n description: toDescription(\n \"The Update Own Submissions permission will allow a user with one of the Roles to update a Submission. A user can only update a Submission if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_all\",\n label: '<h4 class=\"text-gray-800\">Update All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Update All Submissions permission will allow a user with one of the Roles to update a Submission, regardless of who owns the Submission. Additionally with this permission, a user can change the owner of a Submission.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_own\",\n label: '<h4 class=\"text-gray-800\">Delete Own Submissions</h4>',\n description: toDescription(\n \"The Delete Own Submissions permission will allow a user with one of the Roles, to delete a Submission. A user can only delete a Submission if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_all\",\n label: '<h4 class=\"text-gray-800\">Delete All Submissions</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Delete All Submissions permission will allow a user with one of the Roles to delete a Submission, regardless of who owns the Submission.',\n false\n ),\n choices\n })\n ]\n };\n}\n\nexport function getAccessPermissionForm({ choices }: any): FormType {\n return {\n description: \"<strong>Elevated permissions allow users to access and modify other user's entities. Assign with caution.</strong>\",\n components: [\n getRoleComponent({\n key: \"read_own\",\n label: '<h4 class=\"text-gray-800\">Read Form Definition (Restricted to owner)</h4>',\n description: toDescription(\n \"The Read Own permission will allow a user, with one of the given Roles, to read a form. A user can only read a form if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"read_all\",\n label: \"<h4>Read Form Definition</h4>\",\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Read permission will allow a user, with one of the given Roles, to read the form.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_own\",\n label: '<h4 class=\"text-gray-800\">Update Form Definition (Restricted to owner)</h4>',\n description: toDescription(\n \"The Update Own permission will allow a user, with one of the given Roles, to update a form. A user can only update a form if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"update_all\",\n label: '<h4 class=\"text-gray-800\">Update Form Definition</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Update permission will allow a user, with one of the given Roles, to read and edit the form.'\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_own\",\n label: '<h4 class=\"text-gray-800\">Delete Form Definition (Restricted to owner)</h4>',\n description: toDescription(\n \"The Delete Own permission will allow a user, with one of the given Roles, to delete a form. A user can only delete a form if they are defined as its owner.\"\n ),\n choices\n }),\n getRoleComponent({\n key: \"delete_all\",\n label: '<h4 class=\"text-gray-800\">Delete Form Definition</h4>',\n description: toDescription(\n '<strong class=\"text-yellow-600\">Elevated Permission:</strong> The Delete permission will allow a user, with one of the given Roles, to delete the form.',\n false\n ),\n choices\n })\n ]\n };\n}\n"],"names":["getRoleComponent","label","key","description","choices","data","toDescription","hr","getSubmissionPermissionForm","getAccessPermissionForm"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import r from "lodash/cloneDeep";
|
|
2
2
|
import i from "lodash/isEqual";
|
|
3
3
|
import u from "lodash/noop";
|
|
4
|
-
import {
|
|
4
|
+
import { getSubmissionPermissionForm as m, getAccessPermissionForm as d } from "./FormAccess.schema.js";
|
|
5
5
|
function f(e) {
|
|
6
6
|
return Object.values(e).map((s) => ({
|
|
7
7
|
label: s.title || "",
|
|
@@ -25,7 +25,7 @@ function a(e) {
|
|
|
25
25
|
}), s;
|
|
26
26
|
}
|
|
27
27
|
function g(e) {
|
|
28
|
-
const s = f(e), c =
|
|
28
|
+
const s = f(e), c = d({ choices: s }), t = m({ choices: s });
|
|
29
29
|
return {
|
|
30
30
|
access: c,
|
|
31
31
|
submissionAccess: t
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormAccess.utils.js","sources":["../../../../src/organisms/form/access/FormAccess.utils.ts"],"sourcesContent":["import cloneDeep from \"lodash/cloneDeep\";\nimport isEqual from \"lodash/isEqual\";\nimport noop from \"lodash/noop\";\n\nimport type { ComponentType, FormType, RoleType, SubmissionType } from \"../../../interfaces\";\nimport { getAccessPermissionForm, getSubmissionPermissionForm } from \"./FormAccess.schema\";\n\nexport interface Choice {\n label: string;\n value: string;\n}\n\nexport interface Access {\n roles: string[];\n type: string;\n}\n\nexport type AccessRolesType = Record<string, string[]>;\n\nexport type FormAccessType = {\n access: FormType;\n submissionAccess: FormType;\n};\n\nexport type SubmissionAccessType = {\n access: SubmissionType<AccessRolesType>;\n submissionAccess: SubmissionType<AccessRolesType>;\n};\n\nfunction rolesToChoices(roles: RoleType[]): Choice[] {\n return Object.values(roles).map((role) => {\n return {\n label: role.title || \"\",\n value: role._id || \"\"\n };\n });\n}\n\nfunction accessToHash(keys: (string | undefined)[] | undefined, access: Access[] = []): AccessRolesType {\n const hash = Object.values(access).reduce((o: any, role: any) => {\n o[role.type] = role.roles;\n return o;\n }, {});\n\n return ((keys || []).filter(Boolean) as any[]).reduce((data, key: string) => {\n return {\n ...data,\n [key]: hash[key] || []\n };\n }, {});\n}\n\nfunction hashToAccess(data: AccessRolesType) {\n const accessRoles: any[] = [];\n\n Object.entries(data).forEach(([accessType, roles]) => {\n if (accessType === \"submit\") {\n return;\n }\n accessRoles.push({\n type: accessType,\n roles\n });\n });\n\n return accessRoles;\n}\n\nexport function getFormAccess(roles: RoleType[]): FormAccessType {\n const choices = rolesToChoices(roles);\n const access = getAccessPermissionForm({ choices });\n const submissionAccess = getSubmissionPermissionForm({ choices });\n\n return {\n access,\n submissionAccess\n };\n}\n\nexport function dataAccessToSubmissions(form: Partial<FormType>, formAccess: FormAccessType): SubmissionAccessType {\n const getKeys = (components: ComponentType[]) => components.map(({ key }) => key);\n\n return {\n access: {\n data: accessToHash(getKeys(formAccess.access.components), form.access)\n },\n submissionAccess: {\n data: accessToHash(getKeys(formAccess.submissionAccess.components), form.submissionAccess)\n }\n };\n}\n\nexport function submissionsToDataAccess(form: Partial<FormType>, submissions: SubmissionAccessType): Partial<FormType> {\n return {\n ...cloneDeep(form),\n access: hashToAccess(submissions.access.data),\n submissionAccess: hashToAccess(submissions.submissionAccess.data)\n };\n}\n\nexport function shouldUpdate(type: string, submission: SubmissionType<AccessRolesType>, submissions: SubmissionAccessType) {\n return !isEqual(submission.data, (submissions as any)[type].data);\n}\n\nexport function updateSubmissions(\n type: string,\n submission: SubmissionType<AccessRolesType>,\n submissions: SubmissionAccessType,\n cb: Function = noop\n) {\n if (shouldUpdate(type, submission, submissions)) {\n submissions = {\n ...submissions,\n [type]: { data: submission.data }\n };\n cb(submissions);\n }\n\n return submissions;\n}\n"],"names":["rolesToChoices","roles","role","accessToHash","keys","access","hash","o","data","key","hashToAccess","accessRoles","accessType","getFormAccess","choices","getAccessPermissionForm","submissionAccess","getSubmissionPermissionForm","dataAccessToSubmissions","form","formAccess","getKeys","components","submissionsToDataAccess","submissions","cloneDeep","shouldUpdate","type","submission","isEqual","updateSubmissions","cb","noop"],"mappings":";;;;AA6BA,SAASA,EAAeC,GAA6B;AACnD,SAAO,OAAO,OAAOA,CAAK,EAAE,IAAI,CAACC,OACxB;AAAA,IACL,OAAOA,EAAK,SAAS;AAAA,IACrB,OAAOA,EAAK,OAAO;AAAA,
|
|
1
|
+
{"version":3,"file":"FormAccess.utils.js","sources":["../../../../src/organisms/form/access/FormAccess.utils.ts"],"sourcesContent":["import cloneDeep from \"lodash/cloneDeep\";\nimport isEqual from \"lodash/isEqual\";\nimport noop from \"lodash/noop\";\n\nimport type { ComponentType, FormType, RoleType, SubmissionType } from \"../../../interfaces\";\nimport { getAccessPermissionForm, getSubmissionPermissionForm } from \"./FormAccess.schema\";\n\nexport interface Choice {\n label: string;\n value: string;\n}\n\nexport interface Access {\n roles: string[];\n type: string;\n}\n\nexport type AccessRolesType = Record<string, string[]>;\n\nexport type FormAccessType = {\n access: FormType;\n submissionAccess: FormType;\n};\n\nexport type SubmissionAccessType = {\n access: SubmissionType<AccessRolesType>;\n submissionAccess: SubmissionType<AccessRolesType>;\n};\n\nfunction rolesToChoices(roles: RoleType[]): Choice[] {\n return Object.values(roles).map((role) => {\n return {\n label: role.title || \"\",\n value: role._id || \"\"\n };\n });\n}\n\nfunction accessToHash(keys: (string | undefined)[] | undefined, access: Access[] = []): AccessRolesType {\n const hash = Object.values(access).reduce((o: any, role: any) => {\n o[role.type] = role.roles;\n return o;\n }, {});\n\n return ((keys || []).filter(Boolean) as any[]).reduce((data, key: string) => {\n return {\n ...data,\n [key]: hash[key] || []\n };\n }, {});\n}\n\nfunction hashToAccess(data: AccessRolesType) {\n const accessRoles: any[] = [];\n\n Object.entries(data).forEach(([accessType, roles]) => {\n if (accessType === \"submit\") {\n return;\n }\n accessRoles.push({\n type: accessType,\n roles\n });\n });\n\n return accessRoles;\n}\n\nexport function getFormAccess(roles: RoleType[]): FormAccessType {\n const choices = rolesToChoices(roles);\n const access = getAccessPermissionForm({ choices });\n const submissionAccess = getSubmissionPermissionForm({ choices });\n\n return {\n access,\n submissionAccess\n };\n}\n\nexport function dataAccessToSubmissions(form: Partial<FormType>, formAccess: FormAccessType): SubmissionAccessType {\n const getKeys = (components: ComponentType[]) => components.map(({ key }) => key);\n\n return {\n access: {\n data: accessToHash(getKeys(formAccess.access.components), form.access)\n },\n submissionAccess: {\n data: accessToHash(getKeys(formAccess.submissionAccess.components), form.submissionAccess)\n }\n };\n}\n\nexport function submissionsToDataAccess(form: Partial<FormType>, submissions: SubmissionAccessType): Partial<FormType> {\n return {\n ...cloneDeep(form),\n access: hashToAccess(submissions.access.data),\n submissionAccess: hashToAccess(submissions.submissionAccess.data)\n };\n}\n\nexport function shouldUpdate(type: string, submission: SubmissionType<AccessRolesType>, submissions: SubmissionAccessType) {\n return !isEqual(submission.data, (submissions as any)[type].data);\n}\n\nexport function updateSubmissions(\n type: string,\n submission: SubmissionType<AccessRolesType>,\n submissions: SubmissionAccessType,\n cb: Function = noop\n) {\n if (shouldUpdate(type, submission, submissions)) {\n submissions = {\n ...submissions,\n [type]: { data: submission.data }\n };\n cb(submissions);\n }\n\n return submissions;\n}\n"],"names":["rolesToChoices","roles","role","accessToHash","keys","access","hash","o","data","key","hashToAccess","accessRoles","accessType","getFormAccess","choices","getAccessPermissionForm","submissionAccess","getSubmissionPermissionForm","dataAccessToSubmissions","form","formAccess","getKeys","components","submissionsToDataAccess","submissions","cloneDeep","shouldUpdate","type","submission","isEqual","updateSubmissions","cb","noop"],"mappings":";;;;AA6BA,SAASA,EAAeC,GAA6B;AACnD,SAAO,OAAO,OAAOA,CAAK,EAAE,IAAI,CAACC,OACxB;AAAA,IACL,OAAOA,EAAK,SAAS;AAAA,IACrB,OAAOA,EAAK,OAAO;AAAA,EAAA,EAEtB;AACH;AAEA,SAASC,EAAaC,GAA0CC,IAAmB,IAAqB;AACtG,QAAMC,IAAO,OAAO,OAAOD,CAAM,EAAE,OAAO,CAACE,GAAQL,OACjDK,EAAEL,EAAK,IAAI,IAAIA,EAAK,OACbK,IACN,CAAA,CAAE;AAEL,UAASH,KAAQ,CAAA,GAAI,OAAO,OAAO,EAAY,OAAO,CAACI,GAAMC,OACpD;AAAA,IACL,GAAGD;AAAA,IACH,CAACC,CAAG,GAAGH,EAAKG,CAAG,KAAK,CAAA;AAAA,EAAC,IAEtB,CAAA,CAAE;AACP;AAEA,SAASC,EAAaF,GAAuB;AAC3C,QAAMG,IAAqB,CAAA;AAE3B,gBAAO,QAAQH,CAAI,EAAE,QAAQ,CAAC,CAACI,GAAYX,CAAK,MAAM;AACpD,IAAIW,MAAe,YAGnBD,EAAY,KAAK;AAAA,MACf,MAAMC;AAAA,MACN,OAAAX;AAAA,IAAA,CACD;AAAA,EACH,CAAC,GAEMU;AACT;AAEO,SAASE,EAAcZ,GAAmC;AAC/D,QAAMa,IAAUd,EAAeC,CAAK,GAC9BI,IAASU,EAAwB,EAAE,SAAAD,GAAS,GAC5CE,IAAmBC,EAA4B,EAAE,SAAAH,GAAS;AAEhE,SAAO;AAAA,IACL,QAAAT;AAAA,IACA,kBAAAW;AAAA,EAAA;AAEJ;AAEO,SAASE,EAAwBC,GAAyBC,GAAkD;AACjH,QAAMC,IAAU,CAACC,MAAgCA,EAAW,IAAI,CAAC,EAAE,KAAAb,EAAA,MAAUA,CAAG;AAEhF,SAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAMN,EAAakB,EAAQD,EAAW,OAAO,UAAU,GAAGD,EAAK,MAAM;AAAA,IAAA;AAAA,IAEvE,kBAAkB;AAAA,MAChB,MAAMhB,EAAakB,EAAQD,EAAW,iBAAiB,UAAU,GAAGD,EAAK,gBAAgB;AAAA,IAAA;AAAA,EAC3F;AAEJ;AAEO,SAASI,EAAwBJ,GAAyBK,GAAsD;AACrH,SAAO;AAAA,IACL,GAAGC,EAAUN,CAAI;AAAA,IACjB,QAAQT,EAAac,EAAY,OAAO,IAAI;AAAA,IAC5C,kBAAkBd,EAAac,EAAY,iBAAiB,IAAI;AAAA,EAAA;AAEpE;AAEO,SAASE,EAAaC,GAAcC,GAA6CJ,GAAmC;AACzH,SAAO,CAACK,EAAQD,EAAW,MAAOJ,EAAoBG,CAAI,EAAE,IAAI;AAClE;AAEO,SAASG,EACdH,GACAC,GACAJ,GACAO,IAAeC,GACf;AACA,SAAIN,EAAaC,GAAMC,GAAYJ,CAAW,MAC5CA,IAAc;AAAA,IACZ,GAAGA;AAAA,IACH,CAACG,CAAI,GAAG,EAAE,MAAMC,EAAW,KAAA;AAAA,EAAK,GAElCG,EAAGP,CAAW,IAGTA;AACT;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsxs as m, jsx as l } from "react/jsx-runtime";
|
|
2
|
+
import { g as f } from "../../../chunks/_commonjsHelpers.js";
|
|
3
|
+
import { r as c } from "../../../chunks/index2.js";
|
|
4
|
+
import { Form as p } from "../Form.js";
|
|
5
|
+
var d = c();
|
|
6
|
+
const n = /* @__PURE__ */ f(d);
|
|
7
|
+
function x(t, s) {
|
|
8
|
+
return {
|
|
9
|
+
...s,
|
|
10
|
+
...t
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function b({ action: t, ...s }) {
|
|
14
|
+
return n.eachComponent(s.components, (r) => {
|
|
15
|
+
r.type === "resourcefields" && (r.type = "select", r.label = r.title, r.dataSrc = "url", r.data = {
|
|
16
|
+
url: `${r.basePath}?type=resource`
|
|
17
|
+
}, r.valueProperty = "_id", r.template = "<span>{{ item.title }}</span>", r.persistent = !0);
|
|
18
|
+
}), s;
|
|
19
|
+
}
|
|
20
|
+
function v({ actionInfo: t, children: s, onSubmit: r, options: e, ...i }) {
|
|
21
|
+
const { form: u, submission: o } = (() => {
|
|
22
|
+
const a = x(i.submission || {}, t.defaults);
|
|
23
|
+
return { form: b(t.settingsForm), submission: { data: a } };
|
|
24
|
+
})();
|
|
25
|
+
return /* @__PURE__ */ m("div", { children: [
|
|
26
|
+
s,
|
|
27
|
+
/* @__PURE__ */ l(p, { form: u, submission: o, onSubmit: r, options: e }),
|
|
28
|
+
s
|
|
29
|
+
] });
|
|
30
|
+
}
|
|
31
|
+
export {
|
|
32
|
+
v as FormAction
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=FormAction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormAction.js","sources":["../../../../src/organisms/form/actions/FormAction.tsx"],"sourcesContent":["import FormioUtils from \"@formio/js/utils\";\nimport { PropsWithChildren, ReactElement } from \"react\";\n\nimport { ActionDefaultsType, ActionType, FormOptions, SubmissionType } from \"../../../interfaces\";\nimport { Form } from \"../../form/Form\";\n\nfunction mapData(options: any, defaults: ActionDefaultsType): any {\n return {\n ...defaults,\n ...options\n };\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction mapSettingsForm({ action, ...settingsForm }: any): any {\n FormioUtils.eachComponent(settingsForm.components, (component: any) => {\n const resourceExclude = \"\";\n\n if (component.type === \"resourcefields\") {\n component.type = \"select\";\n component.label = component.title;\n component.dataSrc = \"url\";\n component.data = {\n url: `${component.basePath}?type=resource${resourceExclude}`\n };\n component.valueProperty = \"_id\";\n component.template = \"<span>{{ item.title }}</span>\";\n component.persistent = true;\n }\n });\n\n return settingsForm;\n}\n\nexport interface FormActionProps {\n actionInfo: Partial<ActionType>;\n submission?: Partial<SubmissionType>;\n onSubmit?: (submission: SubmissionType<ActionType>) => void;\n options: FormOptions;\n}\n\nexport function FormAction({ actionInfo, children, onSubmit, options, ...props }: PropsWithChildren<FormActionProps>): ReactElement {\n const { form, submission } = (() => {\n const submission = mapData(props.submission || {}, actionInfo.defaults!);\n const form = mapSettingsForm(actionInfo.settingsForm);\n\n return { form, submission: { data: submission } as SubmissionType<ActionType> };\n })();\n\n return (\n <div>\n {children}\n\n <Form<ActionType> form={form} submission={submission} onSubmit={onSubmit} options={options} />\n\n {children}\n </div>\n );\n}\n"],"names":["mapData","options","defaults","mapSettingsForm","action","settingsForm","FormioUtils","component","FormAction","actionInfo","children","onSubmit","props","form","submission","jsx","Form"],"mappings":";;;;;;AAMA,SAASA,EAAQC,GAAcC,GAAmC;AAChE,SAAO;AAAA,IACL,GAAGA;AAAA,IACH,GAAGD;AAAA,EAAA;AAEP;AAGA,SAASE,EAAgB,EAAE,QAAAC,GAAQ,GAAGC,KAA0B;AAC9D,SAAAC,EAAY,cAAcD,EAAa,YAAY,CAACE,MAAmB;AAGrE,IAAIA,EAAU,SAAS,qBACrBA,EAAU,OAAO,UACjBA,EAAU,QAAQA,EAAU,OAC5BA,EAAU,UAAU,OACpBA,EAAU,OAAO;AAAA,MACf,KAAK,GAAGA,EAAU,QAAQ;AAAA,IAAgC,GAE5DA,EAAU,gBAAgB,OAC1BA,EAAU,WAAW,iCACrBA,EAAU,aAAa;AAAA,EAE3B,CAAC,GAEMF;AACT;AASO,SAASG,EAAW,EAAE,YAAAC,GAAY,UAAAC,GAAU,UAAAC,GAAU,SAAAV,GAAS,GAAGW,KAA2D;AAClI,QAAM,EAAE,MAAAC,GAAM,YAAAC,EAAA,KAAgB,MAAM;AAClC,UAAMA,IAAad,EAAQY,EAAM,cAAc,CAAA,GAAIH,EAAW,QAAS;AAGvE,WAAO,EAAE,MAFIN,EAAgBM,EAAW,YAAY,GAErC,YAAY,EAAE,MAAMK,IAAW;AAAA,EAChD,GAAA;AAEA,2BACG,OAAA,EACE,UAAA;AAAA,IAAAJ;AAAA,IAED,gBAAAK,EAACC,GAAA,EAAiB,MAAAH,GAAY,YAAAC,GAAwB,UAAAH,GAAoB,SAAAV,GAAkB;AAAA,IAE3FS;AAAA,EAAA,GACH;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormBuilder.js","sources":["../../../../src/organisms/form/builder/FormBuilder.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nimport { registerComponent } from \"../../../registries/components\";\nimport { useFormBuilder, UseFormBuilderProps } from \"./useFormBuilder\";\n\nexport function FormBuilder({\n className = \"\",\n style = {},\n [\"data-testid\"]: dataTestId = \"formio-builder-container\",\n ...props\n}: UseFormBuilderProps & {\n className?: string;\n style?: CSSProperties;\n [\"data-testid\"]?: string;\n}) {\n const renderElement = useFormBuilder(props);\n\n return (\n <div style={style} className={className} data-testid={dataTestId}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n <div ref={renderElement} onClick={(e) => e.stopPropagation()}>\n <div />\n </div>\n </div>\n );\n}\n\nregisterComponent(\"FormBuilder\", FormBuilder);\n"],"names":["FormBuilder","className","style","dataTestId","props","renderElement","useFormBuilder","e","jsx","registerComponent"],"mappings":";;;AAKO,SAASA,EAAY;AAAA,EAC1B,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ,
|
|
1
|
+
{"version":3,"file":"FormBuilder.js","sources":["../../../../src/organisms/form/builder/FormBuilder.tsx"],"sourcesContent":["import type { CSSProperties } from \"react\";\n\nimport { registerComponent } from \"../../../registries/components\";\nimport { useFormBuilder, UseFormBuilderProps } from \"./useFormBuilder\";\n\nexport function FormBuilder({\n className = \"\",\n style = {},\n [\"data-testid\"]: dataTestId = \"formio-builder-container\",\n ...props\n}: UseFormBuilderProps & {\n className?: string;\n style?: CSSProperties;\n [\"data-testid\"]?: string;\n}) {\n const renderElement = useFormBuilder(props);\n\n return (\n <div style={style} className={className} data-testid={dataTestId}>\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n <div ref={renderElement} onClick={(e) => e.stopPropagation()}>\n <div />\n </div>\n </div>\n );\n}\n\nregisterComponent(\"FormBuilder\", FormBuilder);\n"],"names":["FormBuilder","className","style","dataTestId","props","renderElement","useFormBuilder","e","jsx","registerComponent"],"mappings":";;;AAKO,SAASA,EAAY;AAAA,EAC1B,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ,CAAA;AAAA,EACR,CAAC,aAAa,GAAGC,IAAa;AAAA,EAC9B,GAAGC;AACL,GAIG;AACD,QAAMC,IAAgBC,EAAeF,CAAK;AAE1C,2BACG,OAAA,EAAI,OAAAF,GAAc,WAAAD,GAAsB,eAAaE,GAEpD,4BAAC,OAAA,EAAI,KAAKE,GAAe,SAAS,CAACE,MAAMA,EAAE,gBAAA,GACzC,UAAA,gBAAAC,EAAC,OAAA,EAAI,GACP,EAAA,CACF;AAEJ;AAEAC,EAAkB,eAAeT,CAAW;"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CSSProperties } from 'react';
|
|
2
|
+
import { FormBuilderOptions, FormOptions } from '../../../interfaces/index.js';
|
|
2
3
|
import { FormBuilderEvents } from './useFormBuilder';
|
|
3
4
|
import { UseFormEditHookProps } from './useFormEdit';
|
|
4
5
|
export interface FormEditProps extends UseFormEditHookProps, FormBuilderEvents {
|
|
5
|
-
options?: FormOptions;
|
|
6
|
+
options?: FormBuilderOptions & FormOptions;
|
|
7
|
+
layout?: "html5" | "choicesjs" | "react";
|
|
8
|
+
className?: string;
|
|
9
|
+
style?: CSSProperties;
|
|
6
10
|
}
|
|
7
|
-
export declare function FormEdit({ form: initialForm, typeChoices, displayChoices, enableTags, onSubmit: initialOnSubmit, onCopy: initialOnCopy, ...props }: FormEditProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare function FormEdit({ form: initialForm, typeChoices, displayChoices, enableTags, onSubmit: initialOnSubmit, onCopy: initialOnCopy, className, style, ...props }: FormEditProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,69 +1,73 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { createElement as
|
|
1
|
+
import { jsxs as s, jsx as d } from "react/jsx-runtime";
|
|
2
|
+
import { createElement as j } from "react";
|
|
3
|
+
import { c as v } from "../../../chunks/index.js";
|
|
3
4
|
import { getComponent as n } from "../../../registries/components.js";
|
|
4
|
-
import { useFormEdit as
|
|
5
|
-
function
|
|
6
|
-
form:
|
|
5
|
+
import { useFormEdit as A } from "./useFormEdit.js";
|
|
6
|
+
function T({
|
|
7
|
+
form: a,
|
|
7
8
|
typeChoices: r,
|
|
8
|
-
displayChoices:
|
|
9
|
-
enableTags:
|
|
10
|
-
onSubmit:
|
|
11
|
-
onCopy:
|
|
12
|
-
|
|
9
|
+
displayChoices: m,
|
|
10
|
+
enableTags: e,
|
|
11
|
+
onSubmit: c,
|
|
12
|
+
onCopy: f,
|
|
13
|
+
className: l,
|
|
14
|
+
style: u,
|
|
15
|
+
...t
|
|
13
16
|
}) {
|
|
14
|
-
const { form: o, isValid:
|
|
15
|
-
form:
|
|
17
|
+
const { form: o, isValid: p, setChange: i, hasRedo: C, hasChanged: F, hasUndo: h, redo: y, undo: g, reset: E, onSubmit: b, onCopy: x } = A({
|
|
18
|
+
form: a,
|
|
16
19
|
typeChoices: r,
|
|
17
|
-
displayChoices:
|
|
18
|
-
enableTags:
|
|
19
|
-
onSubmit:
|
|
20
|
-
onCopy:
|
|
21
|
-
}),
|
|
22
|
-
return
|
|
23
|
-
/* @__PURE__ */
|
|
24
|
-
/* @__PURE__ */
|
|
25
|
-
|
|
20
|
+
displayChoices: m,
|
|
21
|
+
enableTags: e,
|
|
22
|
+
onSubmit: c,
|
|
23
|
+
onCopy: f
|
|
24
|
+
}), R = n("FormParameters"), S = n("FormBuilder"), _ = n("FormEditCTAs");
|
|
25
|
+
return /* @__PURE__ */ s("div", { className: v("form-edit-container", l), style: u, children: [
|
|
26
|
+
/* @__PURE__ */ s("div", { className: "form-edit", children: [
|
|
27
|
+
/* @__PURE__ */ d(
|
|
28
|
+
R,
|
|
26
29
|
{
|
|
27
|
-
enableTags:
|
|
30
|
+
enableTags: e,
|
|
28
31
|
typeChoices: r,
|
|
29
|
-
displayChoices:
|
|
32
|
+
displayChoices: m,
|
|
30
33
|
form: o,
|
|
31
|
-
onChange: i
|
|
34
|
+
onChange: i,
|
|
35
|
+
layout: t.layout
|
|
32
36
|
},
|
|
33
37
|
`form-settings-${o._id}`
|
|
34
38
|
),
|
|
35
|
-
/* @__PURE__ */
|
|
36
|
-
|
|
39
|
+
/* @__PURE__ */ d(
|
|
40
|
+
_,
|
|
37
41
|
{
|
|
38
|
-
options:
|
|
39
|
-
hasRedo:
|
|
40
|
-
hasUndo:
|
|
41
|
-
disabled: !(
|
|
42
|
-
onRedo:
|
|
43
|
-
onUndo:
|
|
44
|
-
onReset:
|
|
45
|
-
onCopy:
|
|
46
|
-
onSubmit:
|
|
42
|
+
options: t.options,
|
|
43
|
+
hasRedo: C,
|
|
44
|
+
hasUndo: h,
|
|
45
|
+
disabled: !(p && F),
|
|
46
|
+
onRedo: y,
|
|
47
|
+
onUndo: g,
|
|
48
|
+
onReset: E,
|
|
49
|
+
onCopy: x,
|
|
50
|
+
onSubmit: b
|
|
47
51
|
},
|
|
48
52
|
`form-edit-ctas-${o._id}`
|
|
49
53
|
)
|
|
50
54
|
] }),
|
|
51
|
-
/* @__PURE__ */
|
|
52
|
-
|
|
55
|
+
/* @__PURE__ */ j(
|
|
56
|
+
S,
|
|
53
57
|
{
|
|
54
|
-
...
|
|
58
|
+
...t,
|
|
55
59
|
key: `form-builder-${o._id}`,
|
|
56
60
|
components: o.components,
|
|
57
61
|
display: o.display,
|
|
58
|
-
options:
|
|
59
|
-
onChange: (
|
|
60
|
-
i("components",
|
|
62
|
+
options: t.options,
|
|
63
|
+
onChange: ($) => {
|
|
64
|
+
i("components", $);
|
|
61
65
|
}
|
|
62
66
|
}
|
|
63
67
|
)
|
|
64
68
|
] });
|
|
65
69
|
}
|
|
66
70
|
export {
|
|
67
|
-
|
|
71
|
+
T as FormEdit
|
|
68
72
|
};
|
|
69
73
|
//# sourceMappingURL=FormEdit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormEdit.js","sources":["../../../../src/organisms/form/builder/FormEdit.tsx"],"sourcesContent":["import type { FormOptions } from \"../../../interfaces\";\nimport { getComponent } from \"../../../registries/components\";\nimport { FormBuilder as DefaultFormBuilder } from \"./FormBuilder\";\nimport { FormEditCTAs as DefaultFormEditCTAs } from \"./FormEditCtas\";\nimport { FormParameters as DefaultFormParameters } from \"./FormParameters\";\nimport { FormBuilderEvents } from \"./useFormBuilder\";\nimport { useFormEdit, UseFormEditHookProps } from \"./useFormEdit\";\n\nexport interface FormEditProps extends UseFormEditHookProps, FormBuilderEvents {\n options?: FormOptions;\n}\n\nexport function FormEdit({\n form: initialForm,\n typeChoices,\n displayChoices,\n enableTags,\n onSubmit: initialOnSubmit,\n onCopy: initialOnCopy,\n ...props\n}: FormEditProps) {\n const { form, isValid, setChange, hasRedo, hasChanged, hasUndo, redo, undo, reset, onSubmit, onCopy } = useFormEdit({\n form: initialForm,\n typeChoices,\n displayChoices,\n enableTags,\n onSubmit: initialOnSubmit,\n onCopy: initialOnCopy\n });\n\n const
|
|
1
|
+
{"version":3,"file":"FormEdit.js","sources":["../../../../src/organisms/form/builder/FormEdit.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport type { CSSProperties } from \"react\";\n\nimport type { FormBuilderOptions, FormOptions } from \"../../../interfaces/index.js\";\nimport { getComponent } from \"../../../registries/components\";\nimport { FormBuilder as DefaultFormBuilder } from \"./FormBuilder\";\nimport { FormEditCTAs as DefaultFormEditCTAs } from \"./FormEditCtas\";\nimport { FormParameters as DefaultFormParameters } from \"./FormParameters\";\nimport { FormBuilderEvents } from \"./useFormBuilder\";\nimport { useFormEdit, UseFormEditHookProps } from \"./useFormEdit\";\n\nexport interface FormEditProps extends UseFormEditHookProps, FormBuilderEvents {\n options?: FormBuilderOptions & FormOptions;\n layout?: \"html5\" | \"choicesjs\" | \"react\";\n className?: string;\n style?: CSSProperties;\n}\n\nexport function FormEdit({\n form: initialForm,\n typeChoices,\n displayChoices,\n enableTags,\n onSubmit: initialOnSubmit,\n onCopy: initialOnCopy,\n className,\n style,\n ...props\n}: FormEditProps) {\n const { form, isValid, setChange, hasRedo, hasChanged, hasUndo, redo, undo, reset, onSubmit, onCopy } = useFormEdit({\n form: initialForm,\n typeChoices,\n displayChoices,\n enableTags,\n onSubmit: initialOnSubmit,\n onCopy: initialOnCopy\n });\n\n const FormParameters = getComponent<typeof DefaultFormParameters>(\"FormParameters\");\n const FormBuilder = getComponent<typeof DefaultFormBuilder>(\"FormBuilder\");\n const FormEditCTAs = getComponent<typeof DefaultFormEditCTAs>(\"FormEditCTAs\");\n\n return (\n <div className={classnames(\"form-edit-container\", className)} style={style}>\n <div className='form-edit'>\n <FormParameters\n enableTags={enableTags}\n typeChoices={typeChoices}\n displayChoices={displayChoices}\n key={`form-settings-${form._id}`}\n form={form}\n onChange={setChange}\n layout={props.layout}\n />\n <FormEditCTAs\n key={`form-edit-ctas-${form._id}`}\n options={props.options}\n hasRedo={hasRedo}\n hasUndo={hasUndo}\n disabled={!(isValid && hasChanged)}\n onRedo={redo}\n onUndo={undo}\n onReset={reset}\n onCopy={onCopy}\n onSubmit={onSubmit}\n />\n </div>\n\n <FormBuilder\n {...props}\n key={`form-builder-${form._id}`}\n components={form.components!}\n display={form.display}\n options={props.options}\n onChange={(components) => {\n setChange(\"components\", components);\n }}\n />\n </div>\n );\n}\n"],"names":["FormEdit","initialForm","typeChoices","displayChoices","enableTags","initialOnSubmit","initialOnCopy","className","style","props","form","isValid","setChange","hasRedo","hasChanged","hasUndo","redo","undo","reset","onSubmit","onCopy","useFormEdit","FormParameters","getComponent","FormBuilder","FormEditCTAs","classnames","jsxs","jsx","createElement","components"],"mappings":";;;;;AAkBO,SAASA,EAAS;AAAA,EACvB,MAAMC;AAAA,EACN,aAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAUC;AAAA,EACV,QAAQC;AAAA,EACR,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAAkB;AAChB,QAAM,EAAE,MAAAC,GAAM,SAAAC,GAAS,WAAAC,GAAW,SAAAC,GAAS,YAAAC,GAAY,SAAAC,GAAS,MAAAC,GAAM,MAAAC,GAAM,OAAAC,GAAO,UAAAC,GAAU,QAAAC,EAAA,IAAWC,EAAY;AAAA,IAClH,MAAMpB;AAAA,IACN,aAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAUC;AAAA,IACV,QAAQC;AAAA,EAAA,CACT,GAEKgB,IAAiBC,EAA2C,gBAAgB,GAC5EC,IAAcD,EAAwC,aAAa,GACnEE,IAAeF,EAAyC,cAAc;AAE5E,2BACG,OAAA,EAAI,WAAWG,EAAW,uBAAuBnB,CAAS,GAAG,OAAAC,GAC5D,UAAA;AAAA,IAAA,gBAAAmB,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACN;AAAA,QAAA;AAAA,UACC,YAAAlB;AAAA,UACA,aAAAF;AAAA,UACA,gBAAAC;AAAA,UAEA,MAAAO;AAAA,UACA,UAAUE;AAAA,UACV,QAAQH,EAAM;AAAA,QAAA;AAAA,QAHT,iBAAiBC,EAAK,GAAG;AAAA,MAAA;AAAA,MAKhC,gBAAAkB;AAAA,QAACH;AAAA,QAAA;AAAA,UAEC,SAAShB,EAAM;AAAA,UACf,SAAAI;AAAA,UACA,SAAAE;AAAA,UACA,UAAU,EAAEJ,KAAWG;AAAA,UACvB,QAAQE;AAAA,UACR,QAAQC;AAAA,UACR,SAASC;AAAA,UACT,QAAAE;AAAA,UACA,UAAAD;AAAA,QAAA;AAAA,QATK,kBAAkBT,EAAK,GAAG;AAAA,MAAA;AAAA,IAUjC,GACF;AAAA,IAEA,gBAAAmB;AAAA,MAACL;AAAA,MAAA;AAAA,QACE,GAAGf;AAAA,QACJ,KAAK,gBAAgBC,EAAK,GAAG;AAAA,QAC7B,YAAYA,EAAK;AAAA,QACjB,SAASA,EAAK;AAAA,QACd,SAASD,EAAM;AAAA,QACf,UAAU,CAACqB,MAAe;AACxB,UAAAlB,EAAU,cAAckB,CAAU;AAAA,QACpC;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,GACF;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormEdit.reducer.js","sources":["../../../../src/organisms/form/builder/FormEdit.reducer.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport isEqual from \"lodash/isEqual\";\n\nimport type { FormType } from \"../../../interfaces\";\n\nexport const hasChanged = (form: Partial<FormType>, value: Partial<FormType>): boolean => !isEqual(form, value);\n\nexport interface FormEditState {\n past: Partial<FormType>[];\n future: Partial<FormType>[];\n current: Partial<FormType>;\n original: Partial<FormType>;\n}\n\nexport function createInitialState(props: any): FormEditState {\n return {\n past: [],\n future: [],\n current: cloneDeep(props.form),\n original: cloneDeep(props.form)\n };\n}\n\nexport const reducer = (state: FormEditState, { type, value }: any): FormEditState => {\n const { past, current, future } = state;\n\n const update = (newValue: any): any => {\n if (newValue.title !== state.current.title && !state.current._id) {\n newValue.name = camelCase(value.title);\n newValue.path = camelCase(value.title).toLowerCase();\n }\n\n return {\n ...state,\n past: [...past, cloneDeep(current)],\n current: newValue\n };\n };\n\n switch (type) {\n case \"undo\":\n if (past.length) {\n const previous = past[past.length - 1];\n const newPast = past.slice(0, past.length - 1);\n\n return {\n ...state,\n past: newPast,\n current: cloneDeep(previous),\n future: [cloneDeep(current), ...future]\n };\n }\n break;\n\n case \"redo\":\n if (future.length) {\n const next = future[0];\n const newFuture = future.slice(1);\n\n return {\n ...state,\n past: [...past, cloneDeep(current)],\n current: cloneDeep(next),\n future: newFuture\n };\n }\n break;\n\n case \"reset\":\n return update(cloneDeep(state.original));\n\n case \"formChange\":\n const newValue = { ...state.current, ...value };\n\n if (hasChanged(state.current, newValue)) {\n return update(newValue);\n }\n break;\n\n case \"replaceForm\":\n return {\n ...state,\n past: [],\n future: [],\n current: cloneDeep(value),\n original: cloneDeep(value)\n };\n\n default:\n break;\n }\n\n return state;\n};\n"],"names":["hasChanged","form","value","isEqual","createInitialState","props","cloneDeep","reducer","state","type","past","current","future","update","newValue","camelCase","previous","newPast","next","newFuture"],"mappings":";;;AAMO,MAAMA,IAAa,CAACC,GAAyBC,MAAsC,CAACC,EAAQF,GAAMC,CAAK;AASvG,SAASE,EAAmBC,GAA2B;
|
|
1
|
+
{"version":3,"file":"FormEdit.reducer.js","sources":["../../../../src/organisms/form/builder/FormEdit.reducer.ts"],"sourcesContent":["import camelCase from \"lodash/camelCase\";\nimport cloneDeep from \"lodash/cloneDeep\";\nimport isEqual from \"lodash/isEqual\";\n\nimport type { FormType } from \"../../../interfaces\";\n\nexport const hasChanged = (form: Partial<FormType>, value: Partial<FormType>): boolean => !isEqual(form, value);\n\nexport interface FormEditState {\n past: Partial<FormType>[];\n future: Partial<FormType>[];\n current: Partial<FormType>;\n original: Partial<FormType>;\n}\n\nexport function createInitialState(props: any): FormEditState {\n return {\n past: [],\n future: [],\n current: cloneDeep(props.form),\n original: cloneDeep(props.form)\n };\n}\n\nexport const reducer = (state: FormEditState, { type, value }: any): FormEditState => {\n const { past, current, future } = state;\n\n const update = (newValue: any): any => {\n if (newValue.title !== state.current.title && !state.current._id) {\n newValue.name = camelCase(value.title);\n newValue.path = camelCase(value.title).toLowerCase();\n }\n\n return {\n ...state,\n past: [...past, cloneDeep(current)],\n current: newValue\n };\n };\n\n switch (type) {\n case \"undo\":\n if (past.length) {\n const previous = past[past.length - 1];\n const newPast = past.slice(0, past.length - 1);\n\n return {\n ...state,\n past: newPast,\n current: cloneDeep(previous),\n future: [cloneDeep(current), ...future]\n };\n }\n break;\n\n case \"redo\":\n if (future.length) {\n const next = future[0];\n const newFuture = future.slice(1);\n\n return {\n ...state,\n past: [...past, cloneDeep(current)],\n current: cloneDeep(next),\n future: newFuture\n };\n }\n break;\n\n case \"reset\":\n return update(cloneDeep(state.original));\n\n case \"formChange\":\n const newValue = { ...state.current, ...value };\n\n if (hasChanged(state.current, newValue)) {\n return update(newValue);\n }\n break;\n\n case \"replaceForm\":\n return {\n ...state,\n past: [],\n future: [],\n current: cloneDeep(value),\n original: cloneDeep(value)\n };\n\n default:\n break;\n }\n\n return state;\n};\n"],"names":["hasChanged","form","value","isEqual","createInitialState","props","cloneDeep","reducer","state","type","past","current","future","update","newValue","camelCase","previous","newPast","next","newFuture"],"mappings":";;;AAMO,MAAMA,IAAa,CAACC,GAAyBC,MAAsC,CAACC,EAAQF,GAAMC,CAAK;AASvG,SAASE,EAAmBC,GAA2B;AAC5D,SAAO;AAAA,IACL,MAAM,CAAA;AAAA,IACN,QAAQ,CAAA;AAAA,IACR,SAASC,EAAUD,EAAM,IAAI;AAAA,IAC7B,UAAUC,EAAUD,EAAM,IAAI;AAAA,EAAA;AAElC;AAEO,MAAME,IAAU,CAACC,GAAsB,EAAE,MAAAC,GAAM,OAAAP,QAAgC;AACpF,QAAM,EAAE,MAAAQ,GAAM,SAAAC,GAAS,QAAAC,EAAA,IAAWJ,GAE5BK,IAAS,CAACC,OACVA,EAAS,UAAUN,EAAM,QAAQ,SAAS,CAACA,EAAM,QAAQ,QAC3DM,EAAS,OAAOC,EAAUb,EAAM,KAAK,GACrCY,EAAS,OAAOC,EAAUb,EAAM,KAAK,EAAE,YAAA,IAGlC;AAAA,IACL,GAAGM;AAAA,IACH,MAAM,CAAC,GAAGE,GAAMJ,EAAUK,CAAO,CAAC;AAAA,IAClC,SAASG;AAAA,EAAA;AAIb,UAAQL,GAAA;AAAA,IACN,KAAK;AACH,UAAIC,EAAK,QAAQ;AACf,cAAMM,IAAWN,EAAKA,EAAK,SAAS,CAAC,GAC/BO,IAAUP,EAAK,MAAM,GAAGA,EAAK,SAAS,CAAC;AAE7C,eAAO;AAAA,UACL,GAAGF;AAAA,UACH,MAAMS;AAAA,UACN,SAASX,EAAUU,CAAQ;AAAA,UAC3B,QAAQ,CAACV,EAAUK,CAAO,GAAG,GAAGC,CAAM;AAAA,QAAA;AAAA,MAE1C;AACA;AAAA,IAEF,KAAK;AACH,UAAIA,EAAO,QAAQ;AACjB,cAAMM,IAAON,EAAO,CAAC,GACfO,IAAYP,EAAO,MAAM,CAAC;AAEhC,eAAO;AAAA,UACL,GAAGJ;AAAA,UACH,MAAM,CAAC,GAAGE,GAAMJ,EAAUK,CAAO,CAAC;AAAA,UAClC,SAASL,EAAUY,CAAI;AAAA,UACvB,QAAQC;AAAA,QAAA;AAAA,MAEZ;AACA;AAAA,IAEF,KAAK;AACH,aAAON,EAAOP,EAAUE,EAAM,QAAQ,CAAC;AAAA,IAEzC,KAAK;AACH,YAAMM,IAAW,EAAE,GAAGN,EAAM,SAAS,GAAGN,EAAA;AAExC,UAAIF,EAAWQ,EAAM,SAASM,CAAQ;AACpC,eAAOD,EAAOC,CAAQ;AAExB;AAAA,IAEF,KAAK;AACH,aAAO;AAAA,QACL,GAAGN;AAAA,QACH,MAAM,CAAA;AAAA,QACN,QAAQ,CAAA;AAAA,QACR,SAASF,EAAUJ,CAAK;AAAA,QACxB,UAAUI,EAAUJ,CAAK;AAAA,MAAA;AAAA,EAI3B;AAGJ,SAAOM;AACT;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactElement } from 'react';
|
|
2
|
-
import { FormOptions } from '../../../interfaces';
|
|
2
|
+
import { FormOptions } from '../../../interfaces/index.js';
|
|
3
3
|
export interface FormEditCTAsProps extends Record<string, unknown> {
|
|
4
4
|
saveText?: string;
|
|
5
5
|
options?: FormOptions;
|
|
@@ -12,4 +12,4 @@ export interface FormEditCTAsProps extends Record<string, unknown> {
|
|
|
12
12
|
onUndo?: () => void;
|
|
13
13
|
onRedo?: () => void;
|
|
14
14
|
}
|
|
15
|
-
export declare function FormEditCTAs({ saveText, disabled,
|
|
15
|
+
export declare function FormEditCTAs({ saveText, disabled, onCopy, hasUndo, hasRedo, onUndo, onRedo, onReset, onSubmit, options }: FormEditCTAsProps): ReactElement;
|