@firecms/core 3.0.0-alpha.8 → 3.0.0-alpha.81
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 +1 -1
- package/dist/components/ArrayContainer.d.ts +42 -0
- package/dist/components/CircularProgressCenter.d.ts +11 -0
- package/dist/components/DeleteConfirmationDialog.d.ts +9 -0
- package/dist/components/DeleteEntityDialog.d.ts +12 -0
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +35 -0
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +18 -0
- package/dist/components/EntityCollectionTable/SimpleEntityCollectionTable.d.ts +95 -0
- package/dist/components/EntityCollectionTable/column_utils.d.ts +16 -0
- package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
- package/dist/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
- package/dist/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
- package/dist/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
- package/dist/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
- package/dist/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
- package/dist/components/EntityCollectionTable/index.d.ts +8 -0
- package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
- package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
- package/dist/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
- package/dist/components/EntityCollectionTable/internal/common.d.ts +4 -0
- package/dist/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
- package/dist/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
- package/dist/components/EntityCollectionTable/types.d.ts +53 -0
- package/dist/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.d.ts +32 -0
- package/dist/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
- package/dist/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
- package/dist/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
- package/dist/components/EntityPreview.d.ts +11 -0
- package/dist/components/ErrorBoundary.d.ts +11 -0
- package/dist/components/ErrorTooltip.d.ts +2 -0
- package/dist/components/ErrorView.d.ts +19 -0
- package/dist/components/FieldConfigBadge.d.ts +4 -0
- package/dist/components/FireCMSAppBar.d.ts +26 -0
- package/dist/components/FireCMSLogo.d.ts +7 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +21 -0
- package/dist/components/HomePage/FavouritesView.d.ts +3 -0
- package/dist/components/HomePage/NavigationCollectionCard.d.ts +17 -0
- package/dist/components/HomePage/NavigationGroup.d.ts +4 -0
- package/dist/components/HomePage/index.d.ts +3 -0
- package/dist/components/LabelWithIcon.d.ts +14 -0
- package/dist/components/NotFoundPage.d.ts +1 -0
- package/dist/components/ReferenceSelectionInner.d.ts +58 -0
- package/dist/components/ReferenceWidget.d.ts +28 -0
- package/dist/components/SearchIconsView.d.ts +5 -0
- package/dist/components/VirtualTable/VirtualTable.d.ts +11 -0
- package/dist/components/VirtualTable/VirtualTableCell.d.ts +14 -0
- package/dist/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
- package/dist/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +214 -0
- package/dist/components/VirtualTable/VirtualTableRow.d.ts +3 -0
- package/dist/components/VirtualTable/common.d.ts +2 -0
- package/dist/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
- package/dist/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
- package/dist/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
- package/dist/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
- package/dist/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
- package/dist/components/VirtualTable/index.d.ts +2 -0
- package/dist/components/VirtualTable/types.d.ts +34 -0
- package/dist/components/index.d.ts +21 -0
- package/dist/contexts/AuthControllerContext.d.ts +3 -0
- package/dist/contexts/DataSourceContext.d.ts +3 -0
- package/dist/contexts/DialogsProvider.d.ts +4 -0
- package/dist/contexts/ModeController.d.ts +4 -0
- package/dist/contexts/NavigationContext.d.ts +3 -0
- package/dist/contexts/SideDialogsControllerContext.d.ts +3 -0
- package/dist/contexts/SideEntityControllerContext.d.ts +3 -0
- package/dist/contexts/SnackbarProvider.d.ts +2 -0
- package/dist/contexts/StorageSourceContext.d.ts +3 -0
- package/dist/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
- package/dist/contexts/index.d.ts +3 -0
- package/dist/core/Drawer.d.ts +23 -0
- package/dist/core/EntitySidePanel.d.ts +10 -0
- package/dist/core/FireCMS.d.ts +14 -0
- package/dist/core/NavigationRoutes.d.ts +21 -0
- package/dist/core/Scaffold.d.ts +52 -0
- package/dist/core/SideDialogs.d.ts +23 -0
- package/dist/core/field_configs.d.ts +7 -0
- package/dist/core/index.d.ts +10 -0
- package/dist/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
- package/dist/core/useBuildModeController.d.ts +6 -0
- package/dist/form/EntityForm.d.ts +75 -0
- package/dist/form/PropertyFieldBinding.d.ts +30 -0
- package/dist/form/components/CustomIdField.d.ts +9 -0
- package/dist/form/components/ErrorFocus.d.ts +4 -0
- package/dist/form/components/FieldHelperText.d.ts +12 -0
- package/dist/form/components/FormikArrayContainer.d.ts +18 -0
- package/dist/form/components/StorageItemPreview.d.ts +13 -0
- package/dist/form/components/StorageUploadProgress.d.ts +10 -0
- package/dist/form/components/SubmitListener.d.ts +1 -0
- package/dist/form/components/SwitchControl.d.ts +8 -0
- package/dist/form/components/index.d.ts +3 -0
- package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/BlockFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
- package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
- package/dist/form/field_bindings/MapFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/MultiSelectBinding.d.ts +9 -0
- package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
- package/dist/form/field_bindings/SelectFieldBinding.d.ts +12 -0
- package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
- package/dist/form/field_bindings/TextFieldBinding.d.ts +12 -0
- package/dist/form/index.d.ts +20 -0
- package/dist/form/useClearRestoreValue.d.ts +13 -0
- package/dist/form/validation.d.ts +25 -0
- package/dist/hooks/data/delete.d.ts +37 -0
- package/dist/hooks/data/save.d.ts +42 -0
- package/dist/hooks/data/useCollectionFetch.d.ts +50 -0
- package/dist/hooks/data/useDataOrder.d.ts +12 -0
- package/dist/hooks/data/useDataSource.d.ts +6 -0
- package/dist/hooks/data/useEntityFetch.d.ts +28 -0
- package/dist/hooks/index.d.ts +19 -0
- package/dist/hooks/useAuthController.d.ts +11 -0
- package/dist/hooks/useBrowserTitleAndIcon.d.ts +6 -0
- package/dist/hooks/useClipboard.d.ts +57 -0
- package/dist/hooks/useDialogsController.d.ts +11 -0
- package/dist/hooks/useFireCMSContext.d.ts +12 -0
- package/dist/hooks/useLargeLayout.d.ts +1 -0
- package/dist/hooks/useModeController.d.ts +20 -0
- package/dist/hooks/useNavigationController.d.ts +9 -0
- package/dist/hooks/useReferenceDialog.d.ts +18 -0
- package/dist/hooks/useResolvedNavigationFrom.d.ts +72 -0
- package/dist/hooks/useSideDialogsController.d.ts +18 -0
- package/dist/hooks/useSideEntityController.d.ts +12 -0
- package/dist/hooks/useSnackbarController.d.ts +41 -0
- package/dist/hooks/useStorageSource.d.ts +6 -0
- package/dist/hooks/useUserConfigurationPersistence.d.ts +8 -0
- package/dist/hooks/useVerifyLicense.d.ts +0 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.es.js +15810 -26791
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +5 -1027
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/EntityView.d.ts +22 -0
- package/dist/internal/common.d.ts +3 -0
- package/dist/internal/useBuildDataSource.d.ts +22 -0
- package/dist/internal/useBuildNavigationController.d.ts +14 -0
- package/dist/internal/useBuildSideDialogsController.d.ts +2 -0
- package/dist/internal/useBuildSideEntityController.d.ts +4 -0
- package/dist/internal/useLocaleConfig.d.ts +1 -0
- package/dist/internal/useRestoreScroll.d.ts +6 -0
- package/dist/internal/useUnsavedChangesDialog.d.ts +14 -0
- package/dist/preview/PropertyPreview.d.ts +7 -0
- package/dist/preview/PropertyPreviewProps.d.ts +43 -0
- package/dist/preview/components/ArrayEnumPreview.d.ts +11 -0
- package/dist/preview/components/AsyncPreviewComponent.d.ts +11 -0
- package/dist/preview/components/BooleanPreview.d.ts +7 -0
- package/dist/preview/components/DatePreview.d.ts +7 -0
- package/dist/preview/components/EmptyValue.d.ts +4 -0
- package/dist/preview/components/EnumValuesChip.d.ts +13 -0
- package/dist/preview/components/ImagePreview.d.ts +12 -0
- package/dist/preview/components/ReferencePreview.d.ts +22 -0
- package/dist/preview/components/StorageThumbnail.d.ts +13 -0
- package/dist/preview/components/UrlComponentPreview.d.ts +12 -0
- package/dist/preview/index.d.ts +23 -0
- package/dist/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
- package/dist/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
- package/dist/preview/property_previews/MapPropertyPreview.d.ts +8 -0
- package/dist/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
- package/dist/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
- package/dist/preview/property_previews/StringPropertyPreview.d.ts +6 -0
- package/dist/preview/util.d.ts +7 -0
- package/dist/types/analytics.d.ts +1 -0
- package/dist/types/appcheck.d.ts +26 -0
- package/dist/types/auth.d.ts +40 -0
- package/dist/types/collections.d.ts +451 -0
- package/dist/types/datasource.d.ts +262 -0
- package/dist/types/dialogs_controller.d.ts +32 -0
- package/dist/types/entities.d.ts +57 -0
- package/dist/types/entity_actions.d.ts +35 -0
- package/dist/types/entity_callbacks.d.ts +171 -0
- package/dist/types/entity_link_builder.d.ts +7 -0
- package/dist/types/export_import.d.ts +21 -0
- package/dist/types/fields.d.ts +181 -0
- package/dist/types/firecms.d.ts +151 -0
- package/dist/types/firecms_context.d.ts +110 -0
- package/dist/types/index.d.ts +26 -0
- package/dist/types/local_config_persistence.d.ts +21 -0
- package/dist/types/locales.d.ts +4 -0
- package/dist/types/modify_collections.d.ts +5 -0
- package/dist/types/navigation.d.ts +178 -0
- package/dist/types/permissions.d.ts +63 -0
- package/dist/types/plugins.d.ts +181 -0
- package/dist/types/properties.d.ts +681 -0
- package/dist/types/property_config.d.ts +42 -0
- package/dist/types/resolved_entities.d.ts +98 -0
- package/dist/types/side_dialogs_controller.d.ts +57 -0
- package/dist/types/side_entity_controller.d.ts +83 -0
- package/dist/types/storage.d.ts +82 -0
- package/dist/types/user.d.ts +36 -0
- package/dist/util/arrays.d.ts +1 -0
- package/dist/util/builders.d.ts +64 -0
- package/dist/util/collections.d.ts +3 -0
- package/dist/util/common.d.ts +2 -0
- package/dist/util/dates.d.ts +1 -0
- package/dist/util/entities.d.ts +28 -0
- package/dist/util/enums.d.ts +7 -0
- package/dist/util/flatten_object.d.ts +3 -0
- package/dist/util/hash.d.ts +1 -0
- package/dist/util/icon_list.d.ts +1 -0
- package/dist/util/icon_synonyms.d.ts +1950 -0
- package/dist/util/icons.d.ts +4 -0
- package/dist/util/index.d.ts +22 -0
- package/dist/util/join_collections.d.ts +9 -0
- package/dist/util/make_properties_editable.d.ts +3 -0
- package/dist/util/navigation_from_path.d.ts +24 -0
- package/dist/util/navigation_utils.d.ts +20 -0
- package/dist/util/objects.d.ts +10 -0
- package/dist/util/os.d.ts +2 -0
- package/dist/util/parent_references_from_path.d.ts +6 -0
- package/dist/util/paths.d.ts +14 -0
- package/dist/util/permissions.d.ts +5 -0
- package/dist/util/plurals.d.ts +18 -0
- package/dist/util/property_utils.d.ts +23 -0
- package/dist/util/references.d.ts +2 -0
- package/dist/util/regexp.d.ts +7 -0
- package/dist/util/resolutions.d.ts +64 -0
- package/dist/util/storage.d.ts +3 -0
- package/dist/util/strings.d.ts +6 -0
- package/dist/util/useDebounce.d.ts +1 -0
- package/dist/util/useStorageUploadController.d.ts +36 -0
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +112 -142
- package/src/components/ArrayContainer.tsx +369 -0
- package/src/components/CircularProgressCenter.tsx +26 -0
- package/src/components/DeleteConfirmationDialog.tsx +47 -0
- package/src/components/DeleteEntityDialog.tsx +207 -0
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +174 -0
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +496 -0
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +150 -0
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +461 -0
- package/src/components/EntityCollectionTable/SimpleEntityCollectionTable.tsx +369 -0
- package/src/components/EntityCollectionTable/column_utils.tsx +74 -0
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +159 -0
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +313 -0
- package/src/components/EntityCollectionTable/filters/BooleanFilterField.tsx +49 -0
- package/src/components/EntityCollectionTable/filters/DateTimeFilterField.tsx +109 -0
- package/src/components/EntityCollectionTable/filters/ReferenceFilterField.tsx +187 -0
- package/src/components/EntityCollectionTable/filters/StringNumberFilterField.tsx +159 -0
- package/src/components/EntityCollectionTable/index.tsx +20 -0
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +113 -0
- package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +257 -0
- package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +70 -0
- package/src/components/EntityCollectionTable/internal/common.tsx +70 -0
- package/src/components/EntityCollectionTable/internal/default_entity_actions.tsx +122 -0
- package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +59 -0
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +401 -0
- package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +97 -0
- package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.tsx +20 -0
- package/src/components/EntityCollectionTable/types.tsx +58 -0
- package/src/components/EntityCollectionTable/useDataSourceEntityCollectionTableController.tsx +225 -0
- package/src/components/EntityCollectionTable/useDebouncedData.ts +49 -0
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +815 -0
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +131 -0
- package/src/components/EntityCollectionView/useColumnsIds.tsx +100 -0
- package/src/components/EntityPreview.tsx +83 -0
- package/src/components/ErrorBoundary.tsx +40 -0
- package/src/components/ErrorTooltip.tsx +11 -0
- package/src/components/ErrorView.tsx +52 -0
- package/src/components/FieldConfigBadge.tsx +17 -0
- package/src/components/FireCMSAppBar.tsx +157 -0
- package/src/components/FireCMSLogo.tsx +73 -0
- package/src/components/HomePage/DefaultHomePage.tsx +209 -0
- package/src/components/HomePage/FavouritesView.tsx +64 -0
- package/src/components/HomePage/NavigationCollectionCard.tsx +145 -0
- package/src/components/HomePage/NavigationGroup.tsx +39 -0
- package/src/components/HomePage/index.tsx +3 -0
- package/src/components/LabelWithIcon.tsx +33 -0
- package/src/components/NotFoundPage.tsx +25 -0
- package/src/components/ReferenceSelectionInner.tsx +364 -0
- package/src/components/ReferenceWidget.tsx +145 -0
- package/src/components/SearchIconsView.tsx +75 -0
- package/src/components/VirtualTable/VirtualTable.tsx +402 -0
- package/src/components/VirtualTable/VirtualTableCell.tsx +32 -0
- package/src/components/VirtualTable/VirtualTableHeader.tsx +260 -0
- package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +131 -0
- package/src/components/VirtualTable/VirtualTableProps.tsx +269 -0
- package/src/components/VirtualTable/VirtualTableRow.tsx +53 -0
- package/src/components/VirtualTable/common.tsx +18 -0
- package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +37 -0
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +91 -0
- package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +82 -0
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +130 -0
- package/src/components/VirtualTable/fields/VirtualTableSwitch.tsx +32 -0
- package/src/components/VirtualTable/index.tsx +2 -0
- package/src/components/VirtualTable/types.tsx +44 -0
- package/src/components/index.tsx +31 -0
- package/src/contexts/AuthControllerContext.tsx +4 -0
- package/src/contexts/DataSourceContext.tsx +4 -0
- package/src/contexts/DialogsProvider.tsx +52 -0
- package/src/contexts/ModeController.tsx +13 -0
- package/src/contexts/NavigationContext.tsx +4 -0
- package/src/contexts/SideDialogsControllerContext.tsx +4 -0
- package/src/contexts/SideEntityControllerContext.tsx +4 -0
- package/src/contexts/SnackbarProvider.tsx +12 -0
- package/src/contexts/StorageSourceContext.tsx +4 -0
- package/src/contexts/UserConfigurationPersistenceContext.tsx +4 -0
- package/src/contexts/index.ts +3 -0
- package/src/core/Drawer.tsx +161 -0
- package/src/core/EntitySidePanel.tsx +89 -0
- package/src/core/FireCMS.tsx +184 -0
- package/src/core/NavigationRoutes.tsx +118 -0
- package/src/core/Scaffold.tsx +278 -0
- package/src/core/SideDialogs.tsx +156 -0
- package/src/core/field_configs.tsx +400 -0
- package/src/core/index.tsx +14 -0
- package/src/core/useBuildLocalConfigurationPersistence.tsx +67 -0
- package/src/core/useBuildModeController.tsx +60 -0
- package/src/form/EntityForm.tsx +646 -0
- package/src/form/PropertyFieldBinding.tsx +313 -0
- package/src/form/components/CustomIdField.tsx +124 -0
- package/src/form/components/ErrorFocus.tsx +51 -0
- package/src/form/components/FieldHelperText.tsx +58 -0
- package/src/form/components/FormikArrayContainer.tsx +44 -0
- package/src/form/components/StorageItemPreview.tsx +66 -0
- package/src/form/components/StorageUploadProgress.tsx +104 -0
- package/src/form/components/SubmitListener.tsx +32 -0
- package/src/form/components/SwitchControl.tsx +39 -0
- package/src/form/components/index.tsx +3 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +88 -0
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +153 -0
- package/src/form/field_bindings/BlockFieldBinding.tsx +245 -0
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +67 -0
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +560 -0
- package/src/form/field_bindings/MapFieldBinding.tsx +136 -0
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +696 -0
- package/src/form/field_bindings/MultiSelectBinding.tsx +115 -0
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +70 -0
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +122 -0
- package/src/form/field_bindings/RepeatFieldBinding.tsx +103 -0
- package/src/form/field_bindings/SelectFieldBinding.tsx +100 -0
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +438 -0
- package/src/form/field_bindings/SwitchFieldBinding.tsx +61 -0
- package/src/form/field_bindings/TextFieldBinding.tsx +108 -0
- package/src/form/index.tsx +42 -0
- package/src/form/useClearRestoreValue.tsx +35 -0
- package/src/form/validation.ts +413 -0
- package/src/hooks/data/delete.ts +101 -0
- package/src/hooks/data/save.ts +165 -0
- package/src/hooks/data/useCollectionFetch.tsx +162 -0
- package/src/hooks/data/useDataOrder.ts +26 -0
- package/src/hooks/data/useDataSource.tsx +9 -0
- package/src/hooks/data/useEntityFetch.tsx +129 -0
- package/src/hooks/index.tsx +23 -0
- package/src/hooks/useAuthController.tsx +14 -0
- package/src/hooks/useBrowserTitleAndIcon.tsx +25 -0
- package/src/hooks/useClipboard.tsx +158 -0
- package/src/hooks/useDialogsController.tsx +14 -0
- package/src/hooks/useFireCMSContext.tsx +50 -0
- package/src/hooks/useLargeLayout.tsx +97 -0
- package/src/hooks/useModeController.tsx +24 -0
- package/src/hooks/useNavigationController.tsx +12 -0
- package/src/hooks/useReferenceDialog.tsx +56 -0
- package/src/hooks/useResolvedNavigationFrom.tsx +160 -0
- package/src/hooks/useSideDialogsController.tsx +21 -0
- package/src/hooks/useSideEntityController.tsx +15 -0
- package/src/hooks/useSnackbarController.tsx +76 -0
- package/src/hooks/useStorageSource.tsx +9 -0
- package/src/hooks/useUserConfigurationPersistence.tsx +11 -0
- package/src/hooks/useVerifyLicense.tsx +1 -0
- package/src/index.ts +8 -0
- package/src/internal/EntityView.tsx +576 -0
- package/src/internal/common.tsx +5 -0
- package/src/internal/useBuildDataSource.ts +358 -0
- package/src/internal/useBuildNavigationController.tsx +371 -0
- package/src/internal/useBuildSideDialogsController.tsx +126 -0
- package/src/internal/useBuildSideEntityController.tsx +172 -0
- package/src/internal/useLocaleConfig.tsx +18 -0
- package/src/internal/useRestoreScroll.tsx +48 -0
- package/src/internal/useUnsavedChangesDialog.tsx +106 -0
- package/src/preview/PropertyPreview.tsx +222 -0
- package/src/preview/PropertyPreviewProps.tsx +59 -0
- package/src/preview/components/ArrayEnumPreview.tsx +39 -0
- package/src/preview/components/AsyncPreviewComponent.tsx +47 -0
- package/src/preview/components/BooleanPreview.tsx +11 -0
- package/src/preview/components/DatePreview.tsx +27 -0
- package/src/preview/components/EmptyValue.tsx +10 -0
- package/src/preview/components/EnumValuesChip.tsx +38 -0
- package/src/preview/components/ImagePreview.tsx +106 -0
- package/src/preview/components/ReferencePreview.tsx +249 -0
- package/src/preview/components/StorageThumbnail.tsx +84 -0
- package/src/preview/components/UrlComponentPreview.tsx +79 -0
- package/src/preview/index.ts +27 -0
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +82 -0
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +52 -0
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +54 -0
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +55 -0
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +67 -0
- package/src/preview/property_previews/ArrayPropertyEnumPreview.tsx +28 -0
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +68 -0
- package/src/preview/property_previews/MapPropertyPreview.tsx +146 -0
- package/src/preview/property_previews/NumberPropertyPreview.tsx +27 -0
- package/src/preview/property_previews/SkeletonPropertyComponent.tsx +283 -0
- package/src/preview/property_previews/StringPropertyPreview.tsx +59 -0
- package/src/preview/util.ts +31 -0
- package/src/types/analytics.ts +34 -0
- package/src/types/appcheck.ts +29 -0
- package/src/types/auth.tsx +49 -0
- package/src/types/collections.ts +530 -0
- package/src/types/datasource.ts +389 -0
- package/src/types/dialogs_controller.tsx +33 -0
- package/src/types/entities.ts +76 -0
- package/src/types/entity_actions.tsx +39 -0
- package/src/types/entity_callbacks.ts +209 -0
- package/src/types/entity_link_builder.ts +8 -0
- package/src/types/export_import.ts +26 -0
- package/src/types/fields.tsx +220 -0
- package/src/types/firecms.tsx +175 -0
- package/src/types/firecms_context.tsx +128 -0
- package/src/types/index.ts +26 -0
- package/src/types/local_config_persistence.tsx +23 -0
- package/src/types/locales.ts +81 -0
- package/src/types/modify_collections.tsx +6 -0
- package/src/types/navigation.ts +214 -0
- package/src/types/permissions.ts +76 -0
- package/src/types/plugins.tsx +219 -0
- package/src/types/properties.ts +851 -0
- package/src/types/property_config.tsx +72 -0
- package/src/types/resolved_entities.ts +148 -0
- package/src/types/side_dialogs_controller.tsx +68 -0
- package/src/types/side_entity_controller.tsx +96 -0
- package/src/types/storage.ts +96 -0
- package/src/types/user.ts +37 -0
- package/src/util/arrays.ts +3 -0
- package/src/util/builders.ts +139 -0
- package/src/util/collections.ts +50 -0
- package/src/util/common.tsx +2 -0
- package/src/util/dates.ts +1 -0
- package/src/util/entities.ts +196 -0
- package/src/util/enums.ts +56 -0
- package/src/util/flatten_object.ts +45 -0
- package/src/util/hash.ts +11 -0
- package/src/util/icon_list.ts +17 -0
- package/src/util/icon_synonyms.ts +1950 -0
- package/src/util/icons.tsx +45 -0
- package/src/util/index.ts +22 -0
- package/src/util/join_collections.ts +172 -0
- package/src/util/make_properties_editable.ts +29 -0
- package/src/util/navigation_from_path.ts +107 -0
- package/src/util/navigation_utils.ts +111 -0
- package/src/util/objects.ts +168 -0
- package/src/util/os.ts +13 -0
- package/src/util/parent_references_from_path.ts +56 -0
- package/src/util/paths.ts +27 -0
- package/src/util/permissions.ts +80 -0
- package/src/util/plurals.ts +190 -0
- package/src/util/property_utils.tsx +130 -0
- package/src/util/references.ts +20 -0
- package/src/util/regexp.ts +32 -0
- package/src/util/resolutions.ts +399 -0
- package/src/util/storage.ts +92 -0
- package/src/util/strings.ts +62 -0
- package/src/util/useDebounce.ts +25 -0
- package/src/util/useStorageUploadController.tsx +243 -0
- package/src/util/useTraceUpdate.tsx +23 -0
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { EntityValues } from "./entities";
|
|
2
|
+
import { CMSType, PropertyOrBuilder } from "./properties";
|
|
3
|
+
import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
|
|
4
|
+
/**
|
|
5
|
+
* When building a custom field you need to create a React component that takes
|
|
6
|
+
* this interface as props.
|
|
7
|
+
*
|
|
8
|
+
* @group Form custom fields
|
|
9
|
+
*/
|
|
10
|
+
export interface FieldProps<T extends CMSType = any, CustomProps = any, M extends Record<string, any> = any> {
|
|
11
|
+
/**
|
|
12
|
+
* Key of the property
|
|
13
|
+
* E.g. "user.name" for a property with path "user.name"
|
|
14
|
+
*/
|
|
15
|
+
propertyKey: string;
|
|
16
|
+
/**
|
|
17
|
+
* Current value of this field
|
|
18
|
+
*/
|
|
19
|
+
value: T;
|
|
20
|
+
/**
|
|
21
|
+
* Initial value of this field
|
|
22
|
+
*/
|
|
23
|
+
initialValue: T | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Set value of field directly
|
|
26
|
+
*/
|
|
27
|
+
setValue: (value: T | null, shouldValidate?: boolean) => void;
|
|
28
|
+
/**
|
|
29
|
+
* Set value of a different field directly
|
|
30
|
+
* @param propertyKey
|
|
31
|
+
* @param value
|
|
32
|
+
* @param shouldValidate
|
|
33
|
+
*/
|
|
34
|
+
setFieldValue: (propertyKey: string, value: CMSType | null, shouldValidate?: boolean) => void;
|
|
35
|
+
/**
|
|
36
|
+
* Is the form currently submitting
|
|
37
|
+
*/
|
|
38
|
+
isSubmitting: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Should this field show the error indicator.
|
|
41
|
+
* Note that there might be an error (like an empty field that should be
|
|
42
|
+
* filled) but we don't want to show the error until the user has tried
|
|
43
|
+
* saving.
|
|
44
|
+
*/
|
|
45
|
+
showError: boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Is there an error in this field. The error field has the same shape as
|
|
48
|
+
* the field, replacing values with a string containing the error.
|
|
49
|
+
* It takes the value `null` if there is no error
|
|
50
|
+
*/
|
|
51
|
+
error: any | null;
|
|
52
|
+
/**
|
|
53
|
+
* Has this field been touched
|
|
54
|
+
*/
|
|
55
|
+
touched: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Property related to this field
|
|
58
|
+
*/
|
|
59
|
+
property: ResolvedProperty<T>;
|
|
60
|
+
/**
|
|
61
|
+
* Should this field include a description
|
|
62
|
+
*/
|
|
63
|
+
includeDescription: boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Flag to indicate that the underlying value has been updated in the
|
|
66
|
+
* datasource
|
|
67
|
+
*/
|
|
68
|
+
underlyingValueHasChanged: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* Is this field part of an array
|
|
71
|
+
*/
|
|
72
|
+
partOfArray: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Is this field part of a block (oneOf array)
|
|
75
|
+
*/
|
|
76
|
+
partOfBlock: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Is this field being rendered in the entity table popup
|
|
79
|
+
*/
|
|
80
|
+
tableMode: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Should this field autofocus on mount
|
|
83
|
+
*/
|
|
84
|
+
autoFocus: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Additional properties set by the developer
|
|
87
|
+
*/
|
|
88
|
+
customProps: CustomProps;
|
|
89
|
+
/**
|
|
90
|
+
* Additional values related to the state of the form or the entity
|
|
91
|
+
*/
|
|
92
|
+
context: FormContext<M>;
|
|
93
|
+
/**
|
|
94
|
+
* Flag to indicate if this field should be disabled
|
|
95
|
+
*/
|
|
96
|
+
disabled: boolean;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Context passed to custom fields
|
|
100
|
+
* @group Form custom fields
|
|
101
|
+
*/
|
|
102
|
+
export interface FormContext<M extends Record<string, any> = any> {
|
|
103
|
+
/**
|
|
104
|
+
* Collection of the entity being modified
|
|
105
|
+
*/
|
|
106
|
+
collection: ResolvedEntityCollection<M>;
|
|
107
|
+
/**
|
|
108
|
+
* Current values of the entity
|
|
109
|
+
*/
|
|
110
|
+
values: EntityValues<M>;
|
|
111
|
+
/**
|
|
112
|
+
* Entity id, it can be null if it's a new entity
|
|
113
|
+
*/
|
|
114
|
+
entityId?: string;
|
|
115
|
+
/**
|
|
116
|
+
* Path this entity is located at
|
|
117
|
+
*/
|
|
118
|
+
path: string;
|
|
119
|
+
/**
|
|
120
|
+
* Update the value of a field
|
|
121
|
+
* @param key
|
|
122
|
+
* @param value
|
|
123
|
+
* @param shouldValidate
|
|
124
|
+
*/
|
|
125
|
+
setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
|
|
126
|
+
/**
|
|
127
|
+
* Save the entity
|
|
128
|
+
*/
|
|
129
|
+
save: (values: EntityValues<M>) => void;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* In case you need to render a field bound to a Property inside your
|
|
133
|
+
* custom field you can use {@link PropertyFieldBinding} with these props.
|
|
134
|
+
* @group Form custom fields
|
|
135
|
+
*/
|
|
136
|
+
export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<string, any> = any> {
|
|
137
|
+
/**
|
|
138
|
+
* The key/path of the property, such as `age`. You can use nested and array
|
|
139
|
+
* indexed such as `address.street` or `people[3]`
|
|
140
|
+
*/
|
|
141
|
+
propertyKey: string;
|
|
142
|
+
/**
|
|
143
|
+
* The CMS property you are binding this field to
|
|
144
|
+
*/
|
|
145
|
+
property: PropertyOrBuilder<T> | ResolvedProperty<T>;
|
|
146
|
+
/**
|
|
147
|
+
* The context where this field is being rendered. You get a context as a
|
|
148
|
+
* prop when creating a custom field.
|
|
149
|
+
*/
|
|
150
|
+
context: FormContext<M>;
|
|
151
|
+
/**
|
|
152
|
+
* Should the description be included in this field
|
|
153
|
+
*/
|
|
154
|
+
includeDescription?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Has the value of this property been updated in the database while this
|
|
157
|
+
* field is being edited
|
|
158
|
+
*/
|
|
159
|
+
underlyingValueHasChanged?: boolean;
|
|
160
|
+
/**
|
|
161
|
+
* Is this field being rendered in a table
|
|
162
|
+
*/
|
|
163
|
+
tableMode?: boolean;
|
|
164
|
+
/**
|
|
165
|
+
* Is this field part of an array
|
|
166
|
+
*/
|
|
167
|
+
partOfArray?: boolean;
|
|
168
|
+
/**
|
|
169
|
+
* Is this field part of a block (oneOf array)
|
|
170
|
+
*/
|
|
171
|
+
partOfBlock?: boolean;
|
|
172
|
+
/**
|
|
173
|
+
* Should the field take focus when rendered. When opening the popup view
|
|
174
|
+
* in table mode, it makes sense to put the focus on the only field rendered.
|
|
175
|
+
*/
|
|
176
|
+
autoFocus?: boolean;
|
|
177
|
+
/**
|
|
178
|
+
* Should this field be disabled
|
|
179
|
+
*/
|
|
180
|
+
disabled?: boolean;
|
|
181
|
+
}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { User } from "./user";
|
|
3
|
+
import { AuthController } from "./auth";
|
|
4
|
+
import { DataSourceDelegate } from "./datasource";
|
|
5
|
+
import { EntityCollection, EntityCustomView } from "./collections";
|
|
6
|
+
import { CMSView } from "./navigation";
|
|
7
|
+
import { FireCMSContext } from "./firecms_context";
|
|
8
|
+
import { PropertyConfig } from "./property_config";
|
|
9
|
+
import { Locale } from "./locales";
|
|
10
|
+
import { StorageSource } from "./storage";
|
|
11
|
+
import { EntityLinkBuilder } from "./entity_link_builder";
|
|
12
|
+
import { UserConfigurationPersistence } from "./local_config_persistence";
|
|
13
|
+
import { FireCMSPlugin } from "./plugins";
|
|
14
|
+
import { CMSAnalyticsEvent } from "./analytics";
|
|
15
|
+
/**
|
|
16
|
+
* Use this callback to build entity collections dynamically.
|
|
17
|
+
* You can use the user to decide which collections to show.
|
|
18
|
+
* You can also use the data source to fetch additional data to build the
|
|
19
|
+
* collections.
|
|
20
|
+
* Note: you can use any type of synchronous or asynchronous code here,
|
|
21
|
+
* including fetching data from external sources, like using the Firestore
|
|
22
|
+
* APIs directly, or a REST API.
|
|
23
|
+
* @group Models
|
|
24
|
+
*/
|
|
25
|
+
export type EntityCollectionsBuilder<EC extends EntityCollection = EntityCollection> = (params: {
|
|
26
|
+
user: User | null;
|
|
27
|
+
authController: AuthController;
|
|
28
|
+
dataSource: DataSourceDelegate;
|
|
29
|
+
}) => EC[] | Promise<EC[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Use this callback to build custom views dynamically.
|
|
32
|
+
* You can use the user to decide which views to show.
|
|
33
|
+
* You can also use the data source to fetch additional data to build the
|
|
34
|
+
* views. Note: you can use any type of synchronous or asynchronous code here,
|
|
35
|
+
* including fetching data from external sources, like using the Firestore
|
|
36
|
+
* APIs directly, or a REST API.
|
|
37
|
+
* @group Models
|
|
38
|
+
*/
|
|
39
|
+
export type CMSViewsBuilder = (params: {
|
|
40
|
+
user: User | null;
|
|
41
|
+
authController: AuthController;
|
|
42
|
+
dataSource: DataSourceDelegate;
|
|
43
|
+
}) => CMSView[] | Promise<CMSView[]>;
|
|
44
|
+
/**
|
|
45
|
+
* @group Models
|
|
46
|
+
*/
|
|
47
|
+
export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
|
|
48
|
+
/**
|
|
49
|
+
* Use this function to return the components you want to render under
|
|
50
|
+
* FireCMS
|
|
51
|
+
* @param props
|
|
52
|
+
*/
|
|
53
|
+
children: (props: {
|
|
54
|
+
/**
|
|
55
|
+
* Context of the app
|
|
56
|
+
*/
|
|
57
|
+
context: FireCMSContext;
|
|
58
|
+
/**
|
|
59
|
+
* Is one of the main processes, auth and navigation resolving, currently
|
|
60
|
+
* loading. If you are building your custom implementation, you probably
|
|
61
|
+
* want to show a loading indicator if this flag is `true`
|
|
62
|
+
*/
|
|
63
|
+
loading: boolean;
|
|
64
|
+
}) => React.ReactNode;
|
|
65
|
+
/**
|
|
66
|
+
* List of the mapped collections in the CMS.
|
|
67
|
+
* Each entry relates to a collection in the root database.
|
|
68
|
+
* Each of the navigation entries in this field
|
|
69
|
+
* generates an entry in the main menu.
|
|
70
|
+
*/
|
|
71
|
+
collections?: EC[] | EntityCollectionsBuilder<EC>;
|
|
72
|
+
/**
|
|
73
|
+
* Custom additional views created by the developer, added to the main
|
|
74
|
+
* navigation
|
|
75
|
+
*/
|
|
76
|
+
views?: CMSView[] | CMSViewsBuilder;
|
|
77
|
+
/**
|
|
78
|
+
* Record of custom form fields to be used in the CMS.
|
|
79
|
+
* You can use the key to reference the custom field in
|
|
80
|
+
* the `propertyConfig` prop of a property in a collection.
|
|
81
|
+
*/
|
|
82
|
+
propertyConfigs?: Record<string, PropertyConfig>;
|
|
83
|
+
/**
|
|
84
|
+
* List of additional custom views for entities.
|
|
85
|
+
* You can use the key to reference the custom view in
|
|
86
|
+
* the `entityViews` prop of a collection.
|
|
87
|
+
*
|
|
88
|
+
* You can also define an entity view from the UI.
|
|
89
|
+
*/
|
|
90
|
+
entityViews?: EntityCustomView[];
|
|
91
|
+
/**
|
|
92
|
+
* Format of the dates in the CMS.
|
|
93
|
+
* Defaults to 'MMMM dd, yyyy, HH:mm:ss'
|
|
94
|
+
*/
|
|
95
|
+
dateTimeFormat?: string;
|
|
96
|
+
/**
|
|
97
|
+
* Locale of the CMS, currently only affecting dates
|
|
98
|
+
*/
|
|
99
|
+
locale?: Locale;
|
|
100
|
+
/**
|
|
101
|
+
* Connector to your database
|
|
102
|
+
*/
|
|
103
|
+
dataSourceDelegate: DataSourceDelegate;
|
|
104
|
+
/**
|
|
105
|
+
* Connector to your file upload/fetch implementation
|
|
106
|
+
*/
|
|
107
|
+
storageSource: StorageSource;
|
|
108
|
+
/**
|
|
109
|
+
* Delegate for implementing your auth operations.
|
|
110
|
+
*/
|
|
111
|
+
authController: AuthController<UserType>;
|
|
112
|
+
/**
|
|
113
|
+
* Path under the navigation routes of the CMS will be created. Defaults to `/`.
|
|
114
|
+
* Internally FireCMS uses `react-router` to create the routes, the base path is attached to the
|
|
115
|
+
* `BrowserRouter` component. If you are using FireCMS in a subpath of your website, you can use
|
|
116
|
+
* this prop to specify the base path.
|
|
117
|
+
*/
|
|
118
|
+
basePath?: string;
|
|
119
|
+
/**
|
|
120
|
+
* Path under the collection routes of the CMS will be created.
|
|
121
|
+
* Defaults to `/c`.
|
|
122
|
+
*/
|
|
123
|
+
baseCollectionPath?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Use this controller to access the configuration that is stored locally,
|
|
126
|
+
* and not defined in code
|
|
127
|
+
*/
|
|
128
|
+
userConfigPersistence?: UserConfigurationPersistence;
|
|
129
|
+
/**
|
|
130
|
+
* Use plugins to modify the behaviour of the CMS.
|
|
131
|
+
* Currently, in ALPHA, and likely subject to change.
|
|
132
|
+
*/
|
|
133
|
+
plugins?: FireCMSPlugin<any, any, any>[];
|
|
134
|
+
/**
|
|
135
|
+
* Callback used to get analytics events from the CMS
|
|
136
|
+
*/
|
|
137
|
+
onAnalyticsEvent?: (event: CMSAnalyticsEvent, data?: object) => void;
|
|
138
|
+
/**
|
|
139
|
+
* Optional link builder you can add to generate a button in your entity forms.
|
|
140
|
+
* The function must return a URL that gets opened when the button is clicked
|
|
141
|
+
*/
|
|
142
|
+
entityLinkBuilder?: EntityLinkBuilder;
|
|
143
|
+
components?: {
|
|
144
|
+
/**
|
|
145
|
+
* Component to render when a reference is missing
|
|
146
|
+
*/
|
|
147
|
+
missingReference?: React.ComponentType<{
|
|
148
|
+
path: string;
|
|
149
|
+
}>;
|
|
150
|
+
};
|
|
151
|
+
};
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { Locale } from "./locales";
|
|
2
|
+
import { DataSource } from "./datasource";
|
|
3
|
+
import { StorageSource } from "./storage";
|
|
4
|
+
import { NavigationController } from "./navigation";
|
|
5
|
+
import { SideEntityController } from "./side_entity_controller";
|
|
6
|
+
import { AuthController } from "./auth";
|
|
7
|
+
import { EntityLinkBuilder } from "./entity_link_builder";
|
|
8
|
+
import { User } from "./user";
|
|
9
|
+
import { SnackbarController } from "../hooks";
|
|
10
|
+
import { UserConfigurationPersistence } from "./local_config_persistence";
|
|
11
|
+
import { SideDialogsController } from "./side_dialogs_controller";
|
|
12
|
+
import { FireCMSPlugin } from "./plugins";
|
|
13
|
+
import { CMSAnalyticsEvent } from "./analytics";
|
|
14
|
+
import { PropertyConfig } from "./property_config";
|
|
15
|
+
import { EntityCustomView } from "./collections";
|
|
16
|
+
import { DialogsController } from "./dialogs_controller";
|
|
17
|
+
/**
|
|
18
|
+
* Context that includes the internal controllers and contexts used by the app.
|
|
19
|
+
* Some controllers and context included in this context can be accessed
|
|
20
|
+
* directly from their respective hooks.
|
|
21
|
+
* @group Hooks and utilities
|
|
22
|
+
* @see useFireCMSContext
|
|
23
|
+
*/
|
|
24
|
+
export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
|
|
25
|
+
/**
|
|
26
|
+
* Connector to your database, e.g. your Firestore database
|
|
27
|
+
*/
|
|
28
|
+
dataSource: DataSource;
|
|
29
|
+
/**
|
|
30
|
+
* Used storage implementation
|
|
31
|
+
*/
|
|
32
|
+
storageSource: StorageSource;
|
|
33
|
+
/**
|
|
34
|
+
* Context that includes the resolved navigation and utility methods and
|
|
35
|
+
* attributes.
|
|
36
|
+
* @see useNavigation
|
|
37
|
+
*/
|
|
38
|
+
navigation: NavigationController;
|
|
39
|
+
/**
|
|
40
|
+
* Controller to open the side dialog displaying entity forms
|
|
41
|
+
* @see useSideEntityController
|
|
42
|
+
*/
|
|
43
|
+
sideEntityController: SideEntityController;
|
|
44
|
+
/**
|
|
45
|
+
* Controller used to open side dialogs
|
|
46
|
+
* This is the controller used internally by side entity dialogs
|
|
47
|
+
* or reference dialogs.
|
|
48
|
+
*/
|
|
49
|
+
sideDialogsController: SideDialogsController;
|
|
50
|
+
/**
|
|
51
|
+
* Controller used to open regular dialogs
|
|
52
|
+
*/
|
|
53
|
+
dialogsController: DialogsController;
|
|
54
|
+
/**
|
|
55
|
+
* Used auth controller
|
|
56
|
+
*/
|
|
57
|
+
authController: AuthControllerType;
|
|
58
|
+
/**
|
|
59
|
+
* Builder for generating utility links for entities
|
|
60
|
+
*/
|
|
61
|
+
entityLinkBuilder?: EntityLinkBuilder;
|
|
62
|
+
/**
|
|
63
|
+
* Use this controller to display snackbars
|
|
64
|
+
*/
|
|
65
|
+
snackbarController: SnackbarController;
|
|
66
|
+
/**
|
|
67
|
+
* Use this controller to access data stored in the browser for the user
|
|
68
|
+
*/
|
|
69
|
+
userConfigPersistence?: UserConfigurationPersistence;
|
|
70
|
+
/**
|
|
71
|
+
* Use plugins to modify the behaviour of the CMS.
|
|
72
|
+
* Currently, in ALPHA, and likely subject to change.
|
|
73
|
+
*/
|
|
74
|
+
plugins?: FireCMSPlugin[];
|
|
75
|
+
/**
|
|
76
|
+
* Callback used to get analytics events from the CMS
|
|
77
|
+
*/
|
|
78
|
+
onAnalyticsEvent?: (event: CMSAnalyticsEvent, data?: object) => void;
|
|
79
|
+
/**
|
|
80
|
+
* Record of custom form fields to be used in the CMS.
|
|
81
|
+
* You can use the key to reference the custom field in
|
|
82
|
+
* the `propertyConfig` prop of a property in a collection.
|
|
83
|
+
*/
|
|
84
|
+
propertyConfigs: Record<string, PropertyConfig>;
|
|
85
|
+
/**
|
|
86
|
+
* List of additional custom views for entities.
|
|
87
|
+
* You can use the key to reference the custom view in
|
|
88
|
+
* the `entityViews` prop of a collection.
|
|
89
|
+
*
|
|
90
|
+
* You can also define an entity view from the UI.
|
|
91
|
+
*/
|
|
92
|
+
entityViews?: EntityCustomView[];
|
|
93
|
+
/**
|
|
94
|
+
* Format of the dates in the CMS.
|
|
95
|
+
* Defaults to 'MMMM dd, yyyy, HH:mm:ss'
|
|
96
|
+
*/
|
|
97
|
+
dateTimeFormat?: string;
|
|
98
|
+
/**
|
|
99
|
+
* Locale of the CMS, currently only affecting dates
|
|
100
|
+
*/
|
|
101
|
+
locale?: Locale;
|
|
102
|
+
components?: {
|
|
103
|
+
/**
|
|
104
|
+
* Component to render when a reference is missing
|
|
105
|
+
*/
|
|
106
|
+
missingReference?: React.ComponentType<{
|
|
107
|
+
path: string;
|
|
108
|
+
}>;
|
|
109
|
+
};
|
|
110
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export * from "./auth";
|
|
2
|
+
export * from "./entities";
|
|
3
|
+
export * from "./entity_actions";
|
|
4
|
+
export * from "./resolved_entities";
|
|
5
|
+
export * from "./properties";
|
|
6
|
+
export * from "./collections";
|
|
7
|
+
export * from "./permissions";
|
|
8
|
+
export * from "./navigation";
|
|
9
|
+
export * from "./locales";
|
|
10
|
+
export * from "./user";
|
|
11
|
+
export * from "./storage";
|
|
12
|
+
export * from "./fields";
|
|
13
|
+
export * from "./property_config";
|
|
14
|
+
export * from "./datasource";
|
|
15
|
+
export * from "./entity_link_builder";
|
|
16
|
+
export * from "./side_entity_controller";
|
|
17
|
+
export * from "./side_dialogs_controller";
|
|
18
|
+
export * from "./firecms_context";
|
|
19
|
+
export * from "./entity_callbacks";
|
|
20
|
+
export * from "./local_config_persistence";
|
|
21
|
+
export * from "./plugins";
|
|
22
|
+
export * from "./analytics";
|
|
23
|
+
export * from "./firecms";
|
|
24
|
+
export * from "./appcheck";
|
|
25
|
+
export * from "./export_import";
|
|
26
|
+
export * from "./modify_collections";
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EntityCollection } from "./collections";
|
|
2
|
+
/**
|
|
3
|
+
* Use to resolve the collection properties for specific path, entity id or values.
|
|
4
|
+
* @group Models
|
|
5
|
+
*/
|
|
6
|
+
export type PartialEntityCollection<M extends Record<string, any> = any> = Partial<EntityCollection<M>>;
|
|
7
|
+
/**
|
|
8
|
+
* This interface is in charge of defining the controller that persists
|
|
9
|
+
* modifications to a collection or collection, and retrieves them back from
|
|
10
|
+
* a data source, such as local storage or Firestore.
|
|
11
|
+
*/
|
|
12
|
+
export interface UserConfigurationPersistence {
|
|
13
|
+
onCollectionModified: <M extends Record<string, any> = any>(path: string, partialCollection: PartialEntityCollection<M>) => void;
|
|
14
|
+
getCollectionConfig: <M extends Record<string, any> = any>(path: string) => PartialEntityCollection<M>;
|
|
15
|
+
recentlyVisitedPaths: string[];
|
|
16
|
+
setRecentlyVisitedPaths: (paths: string[]) => void;
|
|
17
|
+
favouritePaths: string[];
|
|
18
|
+
setFavouritePaths: (paths: string[]) => void;
|
|
19
|
+
collapsedGroups: string[];
|
|
20
|
+
setCollapsedGroups: (paths: string[]) => void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @group Models
|
|
3
|
+
*/
|
|
4
|
+
export type Locale = "af" | "ar" | "arDZ" | "arMA" | "arSA" | "az" | "be" | "bg" | "bn" | "ca" | "cs" | "cy" | "da" | "de" | "el" | "enAU" | "enCA" | "enGB" | "enIN" | "enNZ" | "enUS" | "eo" | "es" | "et" | "eu" | "faIR" | "fi" | "fil" | "fr" | "frCA" | "frCH" | "gd" | "gl" | "gu" | "he" | "hi" | "hr" | "hu" | "hy" | "id" | "is" | "it" | "ja" | "ka" | "kk" | "kn" | "ko" | "lb" | "lt" | "lv" | "mk" | "ms" | "mt" | "nb" | "nl" | "nlBE" | "nn" | "pl" | "pt" | "ptBR" | "ro" | "ru" | "sk" | "sl" | "sr" | "srLatn" | "sv" | "ta" | "te" | "th" | "tr" | "ug" | "uk" | "uz" | "vi" | "zhCN" | "zhTW";
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { EntityCollection } from "./collections";
|
|
2
|
+
import { EntityReference } from "./entities";
|
|
3
|
+
/**
|
|
4
|
+
* Controller that includes the resolved navigation and utility methods and
|
|
5
|
+
* attributes.
|
|
6
|
+
* @group Models
|
|
7
|
+
*/
|
|
8
|
+
export type NavigationController = {
|
|
9
|
+
/**
|
|
10
|
+
* List of the mapped collections in the CMS.
|
|
11
|
+
* Each entry relates to a collection in the root database.
|
|
12
|
+
* Each of the navigation entries in this field
|
|
13
|
+
* generates an entry in the main menu.
|
|
14
|
+
*/
|
|
15
|
+
collections: EntityCollection[];
|
|
16
|
+
/**
|
|
17
|
+
* Custom additional views created by the developer, added to the main
|
|
18
|
+
* navigation
|
|
19
|
+
*/
|
|
20
|
+
views: CMSView[];
|
|
21
|
+
/**
|
|
22
|
+
* Configuration for the views that should be displayed at the top
|
|
23
|
+
* level of the navigation (e.g. in the home page or the navigation
|
|
24
|
+
* drawer)
|
|
25
|
+
*/
|
|
26
|
+
topLevelNavigation?: TopNavigationResult;
|
|
27
|
+
/**
|
|
28
|
+
* Is the navigation loading (the configuration persistence has not
|
|
29
|
+
* loaded yet, or a specified navigation builder has not completed)
|
|
30
|
+
*/
|
|
31
|
+
loading: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Was there an error while loading the navigation data
|
|
34
|
+
*/
|
|
35
|
+
navigationLoadingError?: any;
|
|
36
|
+
/**
|
|
37
|
+
* Is the registry ready to be used
|
|
38
|
+
*/
|
|
39
|
+
initialised: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Get the collection configuration for a given path.
|
|
42
|
+
* The collection is resolved from the given path or alias.
|
|
43
|
+
*/
|
|
44
|
+
getCollection: <EC extends EntityCollection = EntityCollection<any>>(pathOrAlias: string, entityId?: string, includeUserOverride?: boolean) => EC | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Get the collection configuration from its parent path segments.
|
|
47
|
+
*/
|
|
48
|
+
getCollectionFromIds: <EC extends EntityCollection = EntityCollection<any>>(ids: string[]) => EC | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Get the collection configuration from its parent path segments.
|
|
51
|
+
*/
|
|
52
|
+
getCollectionFromPaths: <EC extends EntityCollection = EntityCollection<any>>(pathSegments: string[]) => EC | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Default path under the navigation routes of the CMS will be created
|
|
55
|
+
*/
|
|
56
|
+
basePath: string;
|
|
57
|
+
/**
|
|
58
|
+
* Default path under the collection routes of the CMS will be created
|
|
59
|
+
*/
|
|
60
|
+
baseCollectionPath: string;
|
|
61
|
+
/**
|
|
62
|
+
* Convert a URL path to a collection or entity path
|
|
63
|
+
* `/c/products` => `products`
|
|
64
|
+
* `/my_cms/c/products/B34SAP8Z` => `products/B34SAP8Z`
|
|
65
|
+
* `/my_cms/my_view` => `my_view`
|
|
66
|
+
* @param cmsPath
|
|
67
|
+
*/
|
|
68
|
+
urlPathToDataPath: (cmsPath: string) => string;
|
|
69
|
+
/**
|
|
70
|
+
* Convert a collection or entity path to a URL path
|
|
71
|
+
* @param path
|
|
72
|
+
*/
|
|
73
|
+
buildCMSUrlPath: (path: string) => string;
|
|
74
|
+
buildUrlEditCollectionPath: (props: {
|
|
75
|
+
path: string;
|
|
76
|
+
}) => string;
|
|
77
|
+
/**
|
|
78
|
+
* Base url path for the home screen
|
|
79
|
+
*/
|
|
80
|
+
homeUrl: string;
|
|
81
|
+
/**
|
|
82
|
+
* Check if a url path belongs to a collection
|
|
83
|
+
* @param path
|
|
84
|
+
*/
|
|
85
|
+
isUrlCollectionPath: (urlPath: string) => boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Build a URL collection path from a data path
|
|
88
|
+
* `products` => `/c/products`
|
|
89
|
+
* `products/B34SAP8Z` => `/c/products/B34SAP8Z`
|
|
90
|
+
* @param path
|
|
91
|
+
*/
|
|
92
|
+
buildUrlCollectionPath: (path: string) => string;
|
|
93
|
+
/**
|
|
94
|
+
* Turn a path with aliases into a resolved path
|
|
95
|
+
* @param pathWithAliases
|
|
96
|
+
*/
|
|
97
|
+
resolveAliasesFrom: (pathWithAliases: string) => string;
|
|
98
|
+
/**
|
|
99
|
+
* Location used as the base for routes.
|
|
100
|
+
* This is the location that will be used underneath, when the url changes while
|
|
101
|
+
* opening a side dialog
|
|
102
|
+
*/
|
|
103
|
+
baseLocation: string;
|
|
104
|
+
/**
|
|
105
|
+
* Call this method to recalculate the navigation
|
|
106
|
+
*/
|
|
107
|
+
refreshNavigation: () => void;
|
|
108
|
+
/**
|
|
109
|
+
* Retrieve all the related parent references for a given path
|
|
110
|
+
* @param path
|
|
111
|
+
*/
|
|
112
|
+
getParentReferencesFromPath: (path: string) => EntityReference[];
|
|
113
|
+
/**
|
|
114
|
+
* Retrieve all the related parent collection ids for a given path
|
|
115
|
+
* @param path
|
|
116
|
+
*/
|
|
117
|
+
getParentCollectionIds: (path: string) => string[];
|
|
118
|
+
/**
|
|
119
|
+
* Resolve paths from a list of ids
|
|
120
|
+
* @param ids
|
|
121
|
+
*/
|
|
122
|
+
convertIdsToPaths: (ids: string[]) => string[];
|
|
123
|
+
};
|
|
124
|
+
/**
|
|
125
|
+
* Custom additional views created by the developer, added to the main
|
|
126
|
+
* navigation.
|
|
127
|
+
* @group Models
|
|
128
|
+
*/
|
|
129
|
+
export interface CMSView {
|
|
130
|
+
/**
|
|
131
|
+
* CMS Path you can reach this view from.
|
|
132
|
+
*/
|
|
133
|
+
path: string;
|
|
134
|
+
/**
|
|
135
|
+
* Name of this view
|
|
136
|
+
*/
|
|
137
|
+
name: string;
|
|
138
|
+
/**
|
|
139
|
+
* Optional description of this view. You can use Markdown
|
|
140
|
+
*/
|
|
141
|
+
description?: string;
|
|
142
|
+
/**
|
|
143
|
+
* Icon key to use in this view.
|
|
144
|
+
* You can use any of the icons in the Material specs:
|
|
145
|
+
* https://fonts.google.com/icons
|
|
146
|
+
* e.g. 'account_tree' or 'person'
|
|
147
|
+
*/
|
|
148
|
+
icon?: string;
|
|
149
|
+
/**
|
|
150
|
+
* Should this view be hidden from the main navigation panel.
|
|
151
|
+
* It will still be accessible if you reach the specified path
|
|
152
|
+
*/
|
|
153
|
+
hideFromNavigation?: boolean;
|
|
154
|
+
/**
|
|
155
|
+
* Component to be rendered. This can be any React component, and can use
|
|
156
|
+
* any of the provided hooks
|
|
157
|
+
*/
|
|
158
|
+
view: React.ReactNode;
|
|
159
|
+
/**
|
|
160
|
+
* Optional field used to group top level navigation entries under a
|
|
161
|
+
* navigation view.
|
|
162
|
+
*/
|
|
163
|
+
group?: string;
|
|
164
|
+
}
|
|
165
|
+
export interface TopNavigationEntry {
|
|
166
|
+
url: string;
|
|
167
|
+
name: string;
|
|
168
|
+
path: string;
|
|
169
|
+
type: "collection" | "view";
|
|
170
|
+
collection?: EntityCollection;
|
|
171
|
+
view: CMSView;
|
|
172
|
+
description?: string;
|
|
173
|
+
group?: string;
|
|
174
|
+
}
|
|
175
|
+
export type TopNavigationResult = {
|
|
176
|
+
navigationEntries: TopNavigationEntry[];
|
|
177
|
+
groups: string[];
|
|
178
|
+
};
|