@firecms/core 3.0.0-canary.21 → 3.0.0-canary.210
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/README.md +3 -3
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +34 -0
- package/dist/app/index.d.ts +4 -0
- package/dist/app/useApp.d.ts +16 -0
- package/dist/components/ArrayContainer.d.ts +23 -6
- package/dist/components/CircularProgressCenter.d.ts +1 -1
- package/dist/components/ClearFilterSortButton.d.ts +5 -0
- package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +16 -2
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +5 -4
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +3 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
- package/dist/components/VirtualTable/types.d.ts +3 -3
- package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
- package/dist/components/common/index.d.ts +2 -1
- package/dist/components/common/table_height.d.ts +5 -0
- package/dist/components/common/types.d.ts +4 -6
- package/dist/components/common/useColumnsIds.d.ts +3 -1
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/components/index.d.ts +4 -2
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +29 -0
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +33 -11
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +3 -3
- package/dist/core/FireCMSRouter.d.ts +4 -0
- package/dist/core/NavigationRoutes.d.ts +2 -3
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +4 -4
- package/dist/form/EntityForm.d.ts +37 -69
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/ErrorFocus.d.ts +1 -1
- package/dist/form/components/FieldHelperText.d.ts +3 -3
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -4
- package/dist/form/components/index.d.ts +3 -1
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +16 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/hooks/data/delete.d.ts +4 -4
- package/dist/hooks/data/save.d.ts +4 -5
- package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +7 -5
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +8 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +21823 -14330
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24174 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -16
- package/dist/internal/useBuildSideEntityController.d.ts +2 -2
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreviewProps.d.ts +6 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +3 -2
- package/dist/preview/components/StorageThumbnail.d.ts +2 -1
- package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
- package/dist/preview/util.d.ts +3 -3
- package/dist/routes/CustomCMSRoute.d.ts +4 -0
- package/dist/routes/FireCMSRoute.d.ts +1 -0
- package/dist/routes/HomePageRoute.d.ts +3 -0
- package/dist/types/auth.d.ts +8 -10
- package/dist/types/collections.d.ts +77 -22
- package/dist/types/datasource.d.ts +52 -36
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +7 -2
- package/dist/types/entity_actions.d.ts +28 -4
- package/dist/types/entity_callbacks.d.ts +16 -16
- package/dist/types/entity_overrides.d.ts +2 -2
- package/dist/types/export_import.d.ts +4 -4
- package/dist/types/fields.d.ts +71 -42
- package/dist/types/firecms.d.ts +6 -2
- package/dist/types/firecms_context.d.ts +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/navigation.d.ts +32 -14
- package/dist/types/permissions.d.ts +4 -4
- package/dist/types/plugins.d.ts +23 -12
- package/dist/types/properties.d.ts +52 -24
- package/dist/types/property_config.d.ts +0 -2
- package/dist/types/side_dialogs_controller.d.ts +10 -0
- package/dist/types/side_entity_controller.d.ts +6 -1
- package/dist/types/storage.d.ts +86 -3
- package/dist/types/user.d.ts +1 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/entities.d.ts +3 -3
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/icon_list.d.ts +5 -1
- package/dist/util/icon_synonyms.d.ts +1 -98
- package/dist/util/icons.d.ts +6 -3
- package/dist/util/index.d.ts +2 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +14 -3
- package/dist/util/objects.d.ts +2 -1
- package/dist/util/permissions.d.ts +4 -4
- package/dist/util/plurals.d.ts +0 -2
- package/dist/util/property_utils.d.ts +3 -3
- package/dist/util/resolutions.d.ts +36 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/package.json +61 -48
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +253 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +127 -41
- package/src/components/CircularProgressCenter.tsx +2 -2
- package/src/components/ClearFilterSortButton.tsx +41 -0
- package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
- package/src/components/DeleteEntityDialog.tsx +10 -19
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +54 -37
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +81 -80
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +207 -113
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +62 -52
- package/src/components/EntityView.tsx +10 -10
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/HomePage/DefaultHomePage.tsx +26 -19
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +3 -3
- package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyConfigBadge.tsx +9 -3
- package/src/components/PropertyIdCopyTooltip.tsx +47 -0
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -13
- package/src/components/ReferenceWidget.tsx +21 -11
- package/src/components/SearchIconsView.tsx +10 -7
- package/src/components/SelectableTable/SelectableTable.tsx +27 -12
- package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +96 -48
- package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
- package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
- package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
- package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
- package/src/components/VirtualTable/types.tsx +2 -3
- package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +33 -40
- package/src/components/common/index.ts +2 -1
- package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
- package/src/components/common/types.tsx +4 -6
- package/src/components/common/useColumnsIds.tsx +24 -3
- package/src/components/common/useDataSourceTableController.tsx +420 -0
- package/src/components/common/useDebouncedCallback.tsx +20 -0
- package/src/components/common/useScrollRestoration.tsx +68 -0
- package/src/components/common/useTableSearchHelper.ts +53 -12
- package/src/components/index.tsx +4 -2
- package/src/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +5 -4
- package/src/contexts/ModeController.tsx +1 -3
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/DefaultAppBar.tsx +219 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +321 -479
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +86 -17
- package/src/core/FireCMS.tsx +56 -49
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +28 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -5
- package/src/form/EntityForm.tsx +585 -539
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +85 -44
- package/src/form/components/CustomIdField.tsx +6 -2
- package/src/form/components/FieldHelperText.tsx +4 -4
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +30 -19
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +22 -12
- package/src/form/components/StorageUploadProgress.tsx +4 -5
- package/src/form/components/index.tsx +3 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +31 -19
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -35
- package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
- package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
- package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -35
- package/src/form/field_bindings/SelectFieldBinding.tsx +22 -14
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +42 -50
- package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
- package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
- package/src/form/index.tsx +16 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +13 -23
- package/src/hooks/data/delete.ts +6 -5
- package/src/hooks/data/save.ts +13 -9
- package/src/hooks/data/useCollectionFetch.tsx +3 -3
- package/src/hooks/data/useDataSource.tsx +11 -3
- package/src/hooks/data/useEntityFetch.tsx +10 -6
- package/src/hooks/index.tsx +1 -0
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/hooks/useBuildModeController.tsx +22 -29
- package/src/hooks/useBuildNavigationController.tsx +159 -54
- package/src/hooks/useFireCMSContext.tsx +5 -5
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useProjectLog.tsx +32 -10
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useValidateAuthenticator.tsx +17 -37
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -82
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +193 -73
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +17 -24
- package/src/preview/PropertyPreviewProps.tsx +7 -1
- package/src/preview/components/BooleanPreview.tsx +2 -2
- package/src/preview/components/EmptyValue.tsx +1 -1
- package/src/preview/components/EnumValuesChip.tsx +2 -2
- package/src/preview/components/ImagePreview.tsx +25 -36
- package/src/preview/components/ReferencePreview.tsx +22 -33
- package/src/preview/components/StorageThumbnail.tsx +5 -1
- package/src/preview/components/UrlComponentPreview.tsx +60 -28
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
- package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
- package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +235 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/auth.tsx +9 -13
- package/src/types/collections.ts +94 -27
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +61 -43
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +12 -2
- package/src/types/entity_actions.tsx +32 -7
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +2 -2
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +81 -46
- package/src/types/firecms.tsx +7 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +0 -1
- package/src/types/navigation.ts +38 -18
- package/src/types/permissions.ts +5 -5
- package/src/types/plugins.tsx +25 -14
- package/src/types/properties.ts +60 -25
- package/src/types/property_config.tsx +0 -2
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +6 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +2 -0
- package/src/util/builders.ts +10 -8
- package/src/util/entities.ts +9 -6
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/enums.ts +1 -1
- package/src/util/icon_list.ts +16 -10
- package/src/util/icon_synonyms.ts +3 -100
- package/src/util/icons.tsx +17 -7
- package/src/util/index.ts +2 -0
- package/src/util/join_collections.ts +3 -0
- package/src/util/make_properties_editable.ts +13 -5
- package/src/util/navigation_from_path.ts +13 -6
- package/src/util/navigation_utils.ts +59 -7
- package/src/util/objects.ts +48 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +9 -8
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +11 -2
- package/src/util/resolutions.ts +100 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +71 -27
- package/dist/components/FireCMSAppBar.d.ts +0 -26
- package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
- package/dist/components/VirtualTable/common.d.ts +0 -2
- package/dist/core/Drawer.d.ts +0 -23
- package/dist/core/Scaffold.d.ts +0 -55
- package/dist/core/SideEntityView.d.ts +0 -7
- package/dist/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/useBuildCustomizationController.d.ts +0 -2
- package/dist/internal/useLocaleConfig.d.ts +0 -1
- package/dist/types/appcheck.d.ts +0 -26
- package/src/components/FireCMSAppBar.tsx +0 -165
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -191
- package/src/core/Scaffold.tsx +0 -281
- package/src/core/SideEntityView.tsx +0 -38
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -2,36 +2,34 @@ import React, { useCallback } from "react";
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
ArrayProperty,
|
|
5
|
-
Entity,
|
|
6
|
-
EntityCollection,
|
|
7
5
|
FieldProps,
|
|
6
|
+
PropertyOrBuilder,
|
|
8
7
|
ResolvedArrayProperty,
|
|
9
8
|
ResolvedStringProperty,
|
|
10
9
|
StorageConfig
|
|
11
10
|
} from "../../types";
|
|
12
11
|
import { useDropzone } from "react-dropzone";
|
|
13
12
|
import { PreviewSize } from "../../preview";
|
|
14
|
-
import { FieldHelperText,
|
|
13
|
+
import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
|
|
15
14
|
|
|
16
|
-
import { getIconForProperty, isReadOnly } from "../../util";
|
|
15
|
+
import { getIconForProperty, isReadOnly, resolveProperty } from "../../util";
|
|
17
16
|
import { useSnackbarController, useStorageSource } from "../../hooks";
|
|
18
17
|
import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
|
|
19
18
|
import { StorageFieldItem, useStorageUploadController } from "../../util/useStorageUploadController";
|
|
20
19
|
import { StorageUploadProgress } from "../components/StorageUploadProgress";
|
|
21
20
|
import { StorageItemPreview } from "../components/StorageItemPreview";
|
|
22
21
|
import {
|
|
23
|
-
|
|
22
|
+
cls,
|
|
24
23
|
fieldBackgroundDisabledMixin,
|
|
25
24
|
fieldBackgroundHoverMixin,
|
|
26
25
|
fieldBackgroundMixin,
|
|
27
|
-
focusedMixin,
|
|
28
26
|
Typography
|
|
29
27
|
} from "@firecms/ui";
|
|
30
28
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
31
29
|
|
|
32
30
|
const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
|
|
33
|
-
const disabledClasses =
|
|
34
|
-
const nonActiveDropClasses =
|
|
31
|
+
const disabledClasses = fieldBackgroundDisabledMixin;
|
|
32
|
+
const nonActiveDropClasses = fieldBackgroundHoverMixin
|
|
35
33
|
const activeDropClasses = "pt-0 border-2 border-solid"
|
|
36
34
|
const acceptDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-green-500"
|
|
37
35
|
const rejectDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-red-500"
|
|
@@ -52,7 +50,7 @@ export function StorageUploadFieldBinding({
|
|
|
52
50
|
error,
|
|
53
51
|
showError,
|
|
54
52
|
autoFocus,
|
|
55
|
-
|
|
53
|
+
minimalistView,
|
|
56
54
|
property,
|
|
57
55
|
includeDescription,
|
|
58
56
|
context,
|
|
@@ -81,7 +79,7 @@ export function StorageUploadFieldBinding({
|
|
|
81
79
|
propertyKey,
|
|
82
80
|
value,
|
|
83
81
|
storageSource,
|
|
84
|
-
disabled,
|
|
82
|
+
disabled: disabled ?? false,
|
|
85
83
|
onChange: setValue
|
|
86
84
|
});
|
|
87
85
|
|
|
@@ -91,33 +89,31 @@ export function StorageUploadFieldBinding({
|
|
|
91
89
|
setValue
|
|
92
90
|
});
|
|
93
91
|
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
path: context.path
|
|
98
|
-
};
|
|
92
|
+
const resolvedProperty = resolveProperty({
|
|
93
|
+
propertyOrBuilder: property as PropertyOrBuilder,
|
|
94
|
+
}) as ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
99
95
|
|
|
100
96
|
return (
|
|
101
97
|
|
|
102
98
|
<>
|
|
103
99
|
|
|
104
|
-
{!
|
|
105
|
-
<
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
100
|
+
{!minimalistView &&
|
|
101
|
+
<LabelWithIconAndTooltip
|
|
102
|
+
propertyKey={propertyKey}
|
|
103
|
+
icon={getIconForProperty(property, "small")}
|
|
104
|
+
required={property.validation?.required}
|
|
105
|
+
title={property.name}
|
|
106
|
+
className={"h-8text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
|
|
109
107
|
|
|
110
108
|
<StorageUpload
|
|
111
109
|
value={internalValue}
|
|
112
|
-
collection={context.collection}
|
|
113
110
|
name={propertyKey}
|
|
114
|
-
disabled={disabled}
|
|
115
|
-
autoFocus={autoFocus}
|
|
116
|
-
property={
|
|
111
|
+
disabled={disabled ?? false}
|
|
112
|
+
autoFocus={autoFocus ?? false}
|
|
113
|
+
property={resolvedProperty}
|
|
117
114
|
onChange={setValue}
|
|
118
115
|
setInternalValue={setInternalValue}
|
|
119
116
|
onFilesAdded={onFilesAdded}
|
|
120
|
-
entity={entity}
|
|
121
117
|
onFileUploadComplete={onFileUploadComplete}
|
|
122
118
|
storagePathBuilder={storagePathBuilder}
|
|
123
119
|
storage={storage}
|
|
@@ -135,7 +131,6 @@ export function StorageUploadFieldBinding({
|
|
|
135
131
|
|
|
136
132
|
function FileDropComponent({
|
|
137
133
|
storage,
|
|
138
|
-
collection,
|
|
139
134
|
disabled,
|
|
140
135
|
isDraggingOver,
|
|
141
136
|
onFilesAdded,
|
|
@@ -144,7 +139,6 @@ function FileDropComponent({
|
|
|
144
139
|
autoFocus,
|
|
145
140
|
internalValue,
|
|
146
141
|
property,
|
|
147
|
-
entity,
|
|
148
142
|
onClear,
|
|
149
143
|
metadata,
|
|
150
144
|
storagePathBuilder,
|
|
@@ -154,7 +148,6 @@ function FileDropComponent({
|
|
|
154
148
|
helpText
|
|
155
149
|
}: {
|
|
156
150
|
storage: StorageConfig,
|
|
157
|
-
collection: EntityCollection,
|
|
158
151
|
disabled: boolean,
|
|
159
152
|
isDraggingOver: boolean,
|
|
160
153
|
droppableProvided: any,
|
|
@@ -165,7 +158,6 @@ function FileDropComponent({
|
|
|
165
158
|
property: ResolvedStringProperty,
|
|
166
159
|
onClear: (clearedStoragePathOrDownloadUrl: string) => void,
|
|
167
160
|
metadata: any,
|
|
168
|
-
entity: Entity<any>;
|
|
169
161
|
storagePathBuilder: (file: File) => string,
|
|
170
162
|
onFileUploadComplete: (uploadedPath: string, entry: StorageFieldItem, fileMetadata?: any) => Promise<void>,
|
|
171
163
|
size: PreviewSize,
|
|
@@ -190,10 +182,18 @@ function FileDropComponent({
|
|
|
190
182
|
onDropRejected: (fileRejections, event) => {
|
|
191
183
|
for (const fileRejection of fileRejections) {
|
|
192
184
|
for (const error of fileRejection.errors) {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
185
|
+
console.error("Error uploading file: ", error);
|
|
186
|
+
if (error.code === "file-too-large") {
|
|
187
|
+
snackbarContext.open({
|
|
188
|
+
type: "error",
|
|
189
|
+
message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
|
|
190
|
+
});
|
|
191
|
+
} else if (error.code === "file-invalid-type") {
|
|
192
|
+
snackbarContext.open({
|
|
193
|
+
type: "error",
|
|
194
|
+
message: "Error uploading file: File type is not supported"
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
197
|
}
|
|
198
198
|
}
|
|
199
199
|
}
|
|
@@ -203,12 +203,12 @@ function FileDropComponent({
|
|
|
203
203
|
return (
|
|
204
204
|
<div
|
|
205
205
|
{...getRootProps()}
|
|
206
|
-
className={
|
|
206
|
+
className={cls(
|
|
207
207
|
fieldBackgroundMixin,
|
|
208
208
|
disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
|
|
209
|
+
disabled ? "text-surface-accent-600 dark:text-surface-accent-500" : "",
|
|
209
210
|
dropZoneClasses,
|
|
210
211
|
multipleFilesSupported && internalValue.length ? "" : "flex",
|
|
211
|
-
focusedMixin,
|
|
212
212
|
{
|
|
213
213
|
[nonActiveDropClasses]: !isDragActive,
|
|
214
214
|
[activeDropClasses]: isDragActive,
|
|
@@ -220,7 +220,7 @@ function FileDropComponent({
|
|
|
220
220
|
<div
|
|
221
221
|
{...droppableProvided.droppableProps}
|
|
222
222
|
ref={droppableProvided.innerRef}
|
|
223
|
-
className={
|
|
223
|
+
className={cls("flex items-center p-1 no-scrollbar",
|
|
224
224
|
multipleFilesSupported && internalValue.length ? "overflow-auto" : "",
|
|
225
225
|
multipleFilesSupported && internalValue.length ? "min-h-[180px]" : "min-h-[250px]"
|
|
226
226
|
)}
|
|
@@ -235,11 +235,9 @@ function FileDropComponent({
|
|
|
235
235
|
if (entry.storagePathOrDownloadUrl) {
|
|
236
236
|
child = (
|
|
237
237
|
<StorageItemPreview
|
|
238
|
-
collection={collection}
|
|
239
238
|
name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
|
|
240
239
|
property={property}
|
|
241
240
|
disabled={disabled}
|
|
242
|
-
entity={entity}
|
|
243
241
|
value={entry.storagePathOrDownloadUrl}
|
|
244
242
|
onRemove={onClear}
|
|
245
243
|
size={entry.size}/>
|
|
@@ -251,7 +249,7 @@ function FileDropComponent({
|
|
|
251
249
|
metadata={metadata}
|
|
252
250
|
storagePath={storagePathBuilder(entry.file)}
|
|
253
251
|
onFileUploadComplete={onFileUploadComplete}
|
|
254
|
-
imageSize={size === "
|
|
252
|
+
imageSize={size === "large" ? 220 : 118}
|
|
255
253
|
simple={false}
|
|
256
254
|
/>
|
|
257
255
|
);
|
|
@@ -268,7 +266,7 @@ function FileDropComponent({
|
|
|
268
266
|
ref={provided.innerRef}
|
|
269
267
|
{...provided.draggableProps}
|
|
270
268
|
{...provided.dragHandleProps}
|
|
271
|
-
className={
|
|
269
|
+
className={cls("rounded-md")}
|
|
272
270
|
style={{
|
|
273
271
|
...provided.draggableProps.style
|
|
274
272
|
}}
|
|
@@ -288,7 +286,8 @@ function FileDropComponent({
|
|
|
288
286
|
<div
|
|
289
287
|
className="flex-grow min-h-[38px] box-border m-2 text-center">
|
|
290
288
|
<Typography align={"center"}
|
|
291
|
-
variant={"label"}
|
|
289
|
+
variant={"label"}
|
|
290
|
+
className={disabled ? "text-surface-accent-600 dark:text-surface-accent-500" : ""}>
|
|
292
291
|
{helpText}
|
|
293
292
|
</Typography>
|
|
294
293
|
</div>
|
|
@@ -299,7 +298,6 @@ function FileDropComponent({
|
|
|
299
298
|
|
|
300
299
|
export interface StorageUploadProps {
|
|
301
300
|
value: StorageFieldItem[];
|
|
302
|
-
collection: EntityCollection;
|
|
303
301
|
setInternalValue: (v: StorageFieldItem[]) => void;
|
|
304
302
|
name: string;
|
|
305
303
|
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
@@ -307,7 +305,6 @@ export interface StorageUploadProps {
|
|
|
307
305
|
multipleFilesSupported: boolean;
|
|
308
306
|
autoFocus: boolean;
|
|
309
307
|
disabled: boolean;
|
|
310
|
-
entity: Entity<any>;
|
|
311
308
|
storage: StorageConfig;
|
|
312
309
|
onFilesAdded: (acceptedFiles: File[]) => void;
|
|
313
310
|
storagePathBuilder: (file: File) => string;
|
|
@@ -315,7 +312,6 @@ export interface StorageUploadProps {
|
|
|
315
312
|
}
|
|
316
313
|
|
|
317
314
|
export function StorageUpload({
|
|
318
|
-
collection,
|
|
319
315
|
property,
|
|
320
316
|
name,
|
|
321
317
|
value,
|
|
@@ -327,7 +323,6 @@ export function StorageUpload({
|
|
|
327
323
|
onFilesAdded,
|
|
328
324
|
autoFocus,
|
|
329
325
|
storage,
|
|
330
|
-
entity,
|
|
331
326
|
storagePathBuilder,
|
|
332
327
|
}: StorageUploadProps) {
|
|
333
328
|
|
|
@@ -346,7 +341,7 @@ export function StorageUpload({
|
|
|
346
341
|
}
|
|
347
342
|
|
|
348
343
|
const metadata: Record<string, unknown> | undefined = storage?.metadata;
|
|
349
|
-
const size = multipleFilesSupported ? "
|
|
344
|
+
const size = multipleFilesSupported ? "medium" : "large";
|
|
350
345
|
|
|
351
346
|
const moveItem = useCallback((fromIndex: number, toIndex: number) => {
|
|
352
347
|
if (!multipleFilesSupported) return;
|
|
@@ -408,11 +403,10 @@ export function StorageUpload({
|
|
|
408
403
|
className="rounded"
|
|
409
404
|
>
|
|
410
405
|
<StorageItemPreview
|
|
411
|
-
collection={collection}
|
|
412
406
|
name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
|
|
407
|
+
placeholder={true}
|
|
413
408
|
property={renderProperty}
|
|
414
409
|
disabled={true}
|
|
415
|
-
entity={entity}
|
|
416
410
|
value={entry.storagePathOrDownloadUrl as string}
|
|
417
411
|
onRemove={onClear}
|
|
418
412
|
size={entry.size}/>
|
|
@@ -422,7 +416,6 @@ export function StorageUpload({
|
|
|
422
416
|
>
|
|
423
417
|
{(provided, snapshot) => {
|
|
424
418
|
return <FileDropComponent storage={storage}
|
|
425
|
-
collection={collection}
|
|
426
419
|
disabled={disabled}
|
|
427
420
|
isDraggingOver={snapshot.isDraggingOver}
|
|
428
421
|
droppableProvided={provided}
|
|
@@ -431,7 +424,6 @@ export function StorageUpload({
|
|
|
431
424
|
autoFocus={autoFocus}
|
|
432
425
|
internalValue={value}
|
|
433
426
|
property={renderProperty}
|
|
434
|
-
entity={entity}
|
|
435
427
|
onClear={onClear}
|
|
436
428
|
metadata={metadata}
|
|
437
429
|
storagePathBuilder={storagePathBuilder}
|
|
@@ -5,6 +5,7 @@ import { getIconForProperty } from "../../util";
|
|
|
5
5
|
import { FieldHelperText, LabelWithIcon } from "../components";
|
|
6
6
|
import { BooleanSwitchWithLabel } from "@firecms/ui";
|
|
7
7
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
8
|
+
import { PropertyIdCopyTooltip } from "../../components";
|
|
8
9
|
|
|
9
10
|
type SwitchFieldProps = FieldProps<boolean>;
|
|
10
11
|
|
|
@@ -15,18 +16,18 @@ type SwitchFieldProps = FieldProps<boolean>;
|
|
|
15
16
|
* and tables to the specified properties.
|
|
16
17
|
* @group Form fields
|
|
17
18
|
*/
|
|
18
|
-
export const SwitchFieldBinding =
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
19
|
+
export const SwitchFieldBinding = function SwitchFieldBinding({
|
|
20
|
+
propertyKey,
|
|
21
|
+
value,
|
|
22
|
+
setValue,
|
|
23
|
+
error,
|
|
24
|
+
showError,
|
|
25
|
+
autoFocus,
|
|
26
|
+
disabled,
|
|
27
|
+
size = "large",
|
|
28
|
+
property,
|
|
29
|
+
includeDescription
|
|
30
|
+
}: SwitchFieldProps) {
|
|
30
31
|
|
|
31
32
|
useClearRestoreValue({
|
|
32
33
|
property,
|
|
@@ -37,17 +38,21 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
37
38
|
return (
|
|
38
39
|
<>
|
|
39
40
|
|
|
40
|
-
<
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
42
|
+
<BooleanSwitchWithLabel
|
|
43
|
+
value={value}
|
|
44
|
+
onValueChange={(v) => setValue(v)}
|
|
45
|
+
error={showError}
|
|
46
|
+
className={property.widthPercentage !== undefined ? "mt-8" : undefined}
|
|
47
|
+
label={<LabelWithIcon
|
|
48
|
+
icon={getIconForProperty(property, "small")}
|
|
49
|
+
required={property.validation?.required}
|
|
50
|
+
title={property.name}/>}
|
|
51
|
+
disabled={disabled}
|
|
52
|
+
autoFocus={autoFocus}
|
|
53
|
+
size={size}
|
|
54
|
+
/>
|
|
55
|
+
</PropertyIdCopyTooltip>
|
|
51
56
|
|
|
52
57
|
<FieldHelperText includeDescription={includeDescription}
|
|
53
58
|
showError={showError}
|
|
@@ -57,4 +62,4 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
57
62
|
</>
|
|
58
63
|
|
|
59
64
|
);
|
|
60
|
-
}
|
|
65
|
+
};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import React, { useCallback } from "react";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import { CloseIcon, Collapse, IconButton, TextField } from "@firecms/ui";
|
|
4
4
|
import { FieldProps, PreviewType } from "../../types";
|
|
5
5
|
import { FieldHelperText, LabelWithIcon } from "../components";
|
|
6
6
|
import { getIconForProperty } from "../../util";
|
|
7
7
|
import { PropertyPreview } from "../../preview";
|
|
8
8
|
import { useClearRestoreValue } from "../useClearRestoreValue";
|
|
9
|
+
import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
|
|
9
10
|
|
|
10
11
|
interface TextFieldBindingProps<T extends string | number> extends FieldProps<T> {
|
|
11
12
|
allowInfinity?: boolean
|
|
@@ -18,7 +19,6 @@ interface TextFieldBindingProps<T extends string | number> extends FieldProps<T>
|
|
|
18
19
|
* @group Form fields
|
|
19
20
|
*/
|
|
20
21
|
export function TextFieldBinding<T extends string | number>({
|
|
21
|
-
context,
|
|
22
22
|
propertyKey,
|
|
23
23
|
value,
|
|
24
24
|
setValue,
|
|
@@ -28,6 +28,7 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
28
28
|
autoFocus,
|
|
29
29
|
property,
|
|
30
30
|
includeDescription,
|
|
31
|
+
size = "large"
|
|
31
32
|
}: TextFieldBindingProps<T>) {
|
|
32
33
|
|
|
33
34
|
let multiline: boolean | undefined;
|
|
@@ -67,27 +68,30 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
67
68
|
const isMultiline = Boolean(multiline);
|
|
68
69
|
|
|
69
70
|
const inputType = property.dataType === "number" ? "number" : undefined;
|
|
70
|
-
return (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
71
|
+
return (<>
|
|
72
|
+
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
73
|
+
<TextField
|
|
74
|
+
size={size}
|
|
75
|
+
value={value}
|
|
76
|
+
onChange={onChange}
|
|
77
|
+
autoFocus={autoFocus}
|
|
78
|
+
className={property.widthPercentage !== undefined ? "mt-8" : undefined}
|
|
79
|
+
label={<LabelWithIcon
|
|
80
|
+
icon={getIconForProperty(property, "small")}
|
|
81
|
+
required={property.validation?.required}
|
|
82
|
+
title={property.name}/>}
|
|
83
|
+
type={inputType}
|
|
84
|
+
multiline={isMultiline}
|
|
85
|
+
disabled={disabled}
|
|
86
|
+
endAdornment={
|
|
87
|
+
property.clearable && <IconButton
|
|
88
|
+
onClick={handleClearClick}>
|
|
89
|
+
<CloseIcon/>
|
|
90
|
+
</IconButton>
|
|
91
|
+
}
|
|
92
|
+
error={showError ? error : undefined}
|
|
93
|
+
inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
|
|
94
|
+
</PropertyIdCopyTooltip>
|
|
91
95
|
<FieldHelperText includeDescription={includeDescription}
|
|
92
96
|
showError={showError}
|
|
93
97
|
error={error}
|
|
@@ -100,7 +104,7 @@ export function TextFieldBinding<T extends string | number>({
|
|
|
100
104
|
<PropertyPreview
|
|
101
105
|
value={value}
|
|
102
106
|
property={property}
|
|
103
|
-
size={
|
|
107
|
+
size={size}/>
|
|
104
108
|
</Collapse>}
|
|
105
109
|
|
|
106
110
|
</>
|
package/src/form/index.tsx
CHANGED
|
@@ -1,43 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
import { MultiSelectBinding } from "./field_bindings/MultiSelectBinding";
|
|
3
|
-
import { ArrayOfReferencesFieldBinding } from "./field_bindings/ArrayOfReferencesFieldBinding";
|
|
4
|
-
import { StorageUploadFieldBinding } from "./field_bindings/StorageUploadFieldBinding";
|
|
5
|
-
import { TextFieldBinding } from "./field_bindings/TextFieldBinding";
|
|
6
|
-
import { SwitchFieldBinding } from "./field_bindings/SwitchFieldBinding";
|
|
7
|
-
import { DateTimeFieldBinding } from "./field_bindings/DateTimeFieldBinding";
|
|
8
|
-
import { ReferenceFieldBinding } from "./field_bindings/ReferenceFieldBinding";
|
|
9
|
-
import { MapFieldBinding } from "./field_bindings/MapFieldBinding";
|
|
10
|
-
import { KeyValueFieldBinding } from "./field_bindings/KeyValueFieldBinding";
|
|
11
|
-
import { RepeatFieldBinding } from "./field_bindings/RepeatFieldBinding";
|
|
12
|
-
import { BlockFieldBinding } from "./field_bindings/BlockFieldBinding";
|
|
13
|
-
import { ReadOnlyFieldBinding } from "./field_bindings/ReadOnlyFieldBinding";
|
|
14
|
-
import { MarkdownFieldBinding } from "./field_bindings/MarkdownFieldBinding";
|
|
15
|
-
import { ArrayCustomShapedFieldBinding } from "./field_bindings/ArrayCustomShapedFieldBinding";
|
|
1
|
+
export * from "./EntityForm";
|
|
16
2
|
|
|
17
|
-
export {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
TextFieldBinding
|
|
33
|
-
};
|
|
3
|
+
export { SelectFieldBinding } from "./field_bindings/SelectFieldBinding";
|
|
4
|
+
export { MultiSelectFieldBinding } from "./field_bindings/MultiSelectFieldBinding";
|
|
5
|
+
export { ArrayOfReferencesFieldBinding } from "./field_bindings/ArrayOfReferencesFieldBinding";
|
|
6
|
+
export { StorageUploadFieldBinding } from "./field_bindings/StorageUploadFieldBinding";
|
|
7
|
+
export { TextFieldBinding } from "./field_bindings/TextFieldBinding";
|
|
8
|
+
export { SwitchFieldBinding } from "./field_bindings/SwitchFieldBinding";
|
|
9
|
+
export { DateTimeFieldBinding } from "./field_bindings/DateTimeFieldBinding";
|
|
10
|
+
export { ReferenceFieldBinding } from "./field_bindings/ReferenceFieldBinding";
|
|
11
|
+
export { MapFieldBinding } from "./field_bindings/MapFieldBinding";
|
|
12
|
+
export { KeyValueFieldBinding } from "./field_bindings/KeyValueFieldBinding";
|
|
13
|
+
export { RepeatFieldBinding } from "./field_bindings/RepeatFieldBinding";
|
|
14
|
+
export { BlockFieldBinding } from "./field_bindings/BlockFieldBinding";
|
|
15
|
+
export { ReadOnlyFieldBinding } from "./field_bindings/ReadOnlyFieldBinding";
|
|
16
|
+
export { MarkdownEditorFieldBinding } from "./field_bindings/MarkdownEditorFieldBinding";
|
|
17
|
+
export { ArrayCustomShapedFieldBinding } from "./field_bindings/ArrayCustomShapedFieldBinding";
|
|
34
18
|
|
|
35
19
|
export * from "./components";
|
|
36
20
|
|
|
37
|
-
export type { EntityFormProps } from "./EntityForm";
|
|
38
|
-
export {
|
|
39
|
-
EntityForm
|
|
40
|
-
} from "./EntityForm";
|
|
41
|
-
|
|
42
21
|
export { PropertyFieldBinding } from "./PropertyFieldBinding";
|
|
43
22
|
export * from "./useClearRestoreValue";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
|
-
import { CMSType, ResolvedProperty } from "../types";
|
|
2
|
+
import { CMSType, Property, ResolvedProperty } from "../types";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Hook we use to restore a value after it has been cleared
|
|
@@ -14,7 +14,7 @@ export function useClearRestoreValue<T extends CMSType>({
|
|
|
14
14
|
setValue
|
|
15
15
|
}:
|
|
16
16
|
{
|
|
17
|
-
property: ResolvedProperty<T>,
|
|
17
|
+
property: Property<T> | ResolvedProperty<T>,
|
|
18
18
|
value: T,
|
|
19
19
|
setValue: (value: T | null, shouldValidate?: boolean) => void
|
|
20
20
|
}) {
|
package/src/form/validation.ts
CHANGED
|
@@ -90,11 +90,11 @@ export function mapPropertyToYup<T extends CMSType>(propertyContext: PropertyCon
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
export function getYupMapObjectSchema({
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
93
|
+
property,
|
|
94
|
+
entityId,
|
|
95
|
+
customFieldValidator,
|
|
96
|
+
name
|
|
97
|
+
}: PropertyContext<Record<string, any>>): ObjectSchema<any> {
|
|
98
98
|
const objectSchema: any = {};
|
|
99
99
|
const validation = property.validation;
|
|
100
100
|
if (property.properties)
|
|
@@ -112,23 +112,7 @@ export function getYupMapObjectSchema({
|
|
|
112
112
|
if (validation?.required) {
|
|
113
113
|
return shape.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true);
|
|
114
114
|
}
|
|
115
|
-
return shape.nullable(true);
|
|
116
|
-
// const object: ObjectSchema<any> = yup.object().shape(objectSchema);
|
|
117
|
-
// return validation?.required
|
|
118
|
-
// ? object.required(validation?.requiredMessage ? validation.requiredMessage : "Required").nullable(true)
|
|
119
|
-
// : yup.object().optional().default(undefined).notRequired().nullable(true).test(
|
|
120
|
-
// "empty-check",
|
|
121
|
-
// "Optional map can be empty",
|
|
122
|
-
// (o: any, testContext: any) => {
|
|
123
|
-
// try {
|
|
124
|
-
// if (!o || Object.keys(o).length === 0) return true;
|
|
125
|
-
// return object.validateSync(o);
|
|
126
|
-
// } catch (e) {
|
|
127
|
-
// testContext.createError(e);
|
|
128
|
-
// console.error(e);
|
|
129
|
-
// return false;
|
|
130
|
-
// }
|
|
131
|
-
// });
|
|
115
|
+
return yup.object().shape(shape.fields).default(undefined).notRequired().nullable(true);
|
|
132
116
|
}
|
|
133
117
|
|
|
134
118
|
function getYupStringSchema({
|
|
@@ -175,7 +159,13 @@ function getYupStringSchema({
|
|
|
175
159
|
if (validation.lowercase) collection = collection.lowercase();
|
|
176
160
|
if (validation.uppercase) collection = collection.uppercase();
|
|
177
161
|
if (property.email) collection = collection.email(`${property.name} must be an email`);
|
|
178
|
-
if (property.url)
|
|
162
|
+
if (property.url) {
|
|
163
|
+
if (!property.storage || property.storage?.storeUrl) {
|
|
164
|
+
collection = collection.url(`${property.name} must be a url`);
|
|
165
|
+
} else {
|
|
166
|
+
console.warn(`Property ${property.name} has a url validation but its storage configuration is not set to store urls`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
179
169
|
} else {
|
|
180
170
|
collection = collection.notRequired().nullable(true);
|
|
181
171
|
}
|
package/src/hooks/data/delete.ts
CHANGED
|
@@ -12,10 +12,10 @@ import {
|
|
|
12
12
|
/**
|
|
13
13
|
* @group Hooks and utilities
|
|
14
14
|
*/
|
|
15
|
-
export type DeleteEntityWithCallbacksProps<M extends Record<string, any>,
|
|
15
|
+
export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, USER extends User = User> =
|
|
16
16
|
DeleteEntityProps<M>
|
|
17
17
|
& {
|
|
18
|
-
callbacks?: EntityCallbacks<M,
|
|
18
|
+
callbacks?: EntityCallbacks<M, USER>;
|
|
19
19
|
onDeleteSuccess?: (entity: Entity<M>) => void;
|
|
20
20
|
onDeleteFailure?: (entity: Entity<M>, e: Error) => void;
|
|
21
21
|
onPreDeleteHookError?: (entity: Entity<M>, e: Error) => void;
|
|
@@ -43,7 +43,7 @@ export type DeleteEntityWithCallbacksProps<M extends Record<string, any>, UserTy
|
|
|
43
43
|
* @param context
|
|
44
44
|
* @group Hooks and utilities
|
|
45
45
|
*/
|
|
46
|
-
export async function deleteEntityWithCallbacks<M extends Record<string, any>,
|
|
46
|
+
export async function deleteEntityWithCallbacks<M extends Record<string, any>, USER extends User>({
|
|
47
47
|
dataSource,
|
|
48
48
|
entity,
|
|
49
49
|
collection,
|
|
@@ -56,7 +56,7 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
|
|
|
56
56
|
}: DeleteEntityWithCallbacksProps<M> & {
|
|
57
57
|
collection: ResolvedEntityCollection<M>,
|
|
58
58
|
dataSource: DataSource,
|
|
59
|
-
context: FireCMSContext<
|
|
59
|
+
context: FireCMSContext<USER>
|
|
60
60
|
}
|
|
61
61
|
): Promise<boolean> {
|
|
62
62
|
|
|
@@ -81,7 +81,8 @@ export async function deleteEntityWithCallbacks<M extends Record<string, any>, U
|
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
return dataSource.deleteEntity({
|
|
84
|
-
entity
|
|
84
|
+
entity,
|
|
85
|
+
collection
|
|
85
86
|
}).then(() => {
|
|
86
87
|
onDeleteSuccess && onDeleteSuccess(entity);
|
|
87
88
|
try {
|