@firecms/core 3.0.0-canary.2 → 3.0.0-canary.200
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 +4 -4
- package/dist/app/AppBar.d.ts +12 -0
- package/dist/app/Drawer.d.ts +16 -0
- package/dist/app/Scaffold.d.ts +30 -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 +3 -3
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
- package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
- 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 +17 -4
- package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
- package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
- package/dist/components/EntityCollectionView/utils.d.ts +3 -0
- package/dist/components/EntityPreview.d.ts +26 -7
- package/dist/components/EntityView.d.ts +11 -0
- package/dist/components/ErrorView.d.ts +1 -1
- package/dist/components/FieldCaption.d.ts +5 -0
- package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
- package/dist/components/HomePage/NavigationCard.d.ts +8 -0
- package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
- package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
- package/dist/components/HomePage/index.d.ts +3 -1
- package/dist/components/PropertyConfigBadge.d.ts +2 -1
- package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
- package/dist/components/ReferenceWidget.d.ts +6 -4
- 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 +29 -13
- 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 +8 -5
- package/dist/contexts/AuthControllerContext.d.ts +1 -1
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
- package/dist/core/DefaultDrawer.d.ts +19 -0
- package/dist/core/DrawerNavigationItem.d.ts +10 -0
- package/dist/core/EntityEditView.d.ts +44 -0
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- package/dist/core/FireCMS.d.ts +2 -2
- 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 -6
- package/dist/form/EntityForm.d.ts +45 -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/{components → form/components}/LabelWithIcon.d.ts +1 -1
- package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
- package/dist/form/components/StorageItemPreview.d.ts +4 -3
- package/dist/form/components/StorageUploadProgress.d.ts +1 -1
- package/dist/form/components/index.d.ts +4 -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 -4
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
- package/dist/form/index.d.ts +17 -18
- package/dist/form/useClearRestoreValue.d.ts +2 -2
- package/dist/form/validation.d.ts +1 -1
- 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/useDataSource.d.ts +2 -2
- package/dist/hooks/data/useEntityFetch.d.ts +4 -3
- package/dist/hooks/index.d.ts +4 -1
- package/dist/hooks/useAuthController.d.ts +1 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
- package/dist/hooks/useBuildNavigationController.d.ts +11 -6
- package/dist/hooks/useFireCMSContext.d.ts +1 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/hooks/useProjectLog.d.ts +12 -2
- package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
- package/dist/hooks/useStorageSource.d.ts +2 -2
- package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.es.js +22131 -14039
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +24420 -588
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +1 -12
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- package/dist/preview/PropertyPreview.d.ts +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +7 -5
- package/dist/preview/components/BooleanPreview.d.ts +5 -1
- package/dist/preview/components/EnumValuesChip.d.ts +1 -1
- package/dist/preview/components/ReferencePreview.d.ts +4 -9
- 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/analytics.d.ts +1 -1
- package/dist/types/auth.d.ts +37 -3
- package/dist/types/collections.d.ts +86 -24
- package/dist/types/datasource.d.ts +53 -37
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +8 -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 +6 -0
- 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 +2 -1
- package/dist/types/navigation.d.ts +45 -26
- package/dist/types/permissions.d.ts +8 -4
- package/dist/types/plugins.d.ts +40 -31
- package/dist/types/properties.d.ts +54 -26
- package/dist/types/property_config.d.ts +2 -4
- package/dist/types/roles.d.ts +31 -0
- 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 +6 -0
- package/dist/util/builders.d.ts +3 -3
- package/dist/util/collections.d.ts +9 -1
- 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 +13 -4
- 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/references.d.ts +4 -2
- package/dist/util/resolutions.d.ts +31 -17
- package/dist/util/storage.d.ts +23 -2
- package/dist/util/useStorageUploadController.d.ts +3 -3
- package/dist/util/useTraceUpdate.d.ts +1 -0
- package/package.json +64 -51
- package/src/app/AppBar.tsx +18 -0
- package/src/app/Drawer.tsx +24 -0
- package/src/app/Scaffold.tsx +243 -0
- package/src/app/index.ts +4 -0
- package/src/app/useApp.tsx +32 -0
- package/src/components/ArrayContainer.tsx +126 -40
- 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 +14 -23
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +56 -39
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +283 -280
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +29 -8
- package/src/components/EntityCollectionTable/PropertyTableCell.tsx +58 -50
- package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
- package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -33
- package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +22 -20
- 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 +228 -155
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +9 -8
- package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
- package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
- package/src/components/EntityCollectionView/utils.ts +19 -0
- package/src/components/EntityPreview.tsx +218 -71
- package/src/components/EntityView.tsx +84 -0
- package/src/components/ErrorView.tsx +4 -4
- package/src/components/FieldCaption.tsx +14 -0
- package/src/components/HomePage/DefaultHomePage.tsx +39 -28
- package/src/components/HomePage/FavouritesView.tsx +6 -11
- package/src/components/HomePage/NavigationCard.tsx +69 -0
- package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
- package/src/components/HomePage/NavigationGroup.tsx +2 -2
- package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
- package/src/components/HomePage/index.tsx +3 -1
- 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 +22 -17
- package/src/components/ReferenceWidget.tsx +26 -16
- 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 +46 -30
- 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 +34 -15
- 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 +40 -43
- 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 +8 -5
- package/src/contexts/AuthControllerContext.tsx +1 -1
- 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 +207 -0
- package/src/core/DefaultDrawer.tsx +185 -0
- package/src/core/DrawerNavigationItem.tsx +66 -0
- package/src/core/EntityEditView.tsx +455 -0
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +87 -18
- package/src/core/FireCMS.tsx +67 -44
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +36 -38
- package/src/core/SideDialogs.tsx +22 -12
- package/src/core/field_configs.tsx +11 -12
- package/src/core/index.tsx +6 -7
- package/src/form/EntityForm.tsx +565 -519
- 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 +44 -0
- package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
- package/src/form/components/StorageItemPreview.tsx +23 -11
- package/src/form/components/StorageUploadProgress.tsx +9 -9
- package/src/form/components/index.tsx +4 -1
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +32 -21
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +54 -45
- package/src/form/field_bindings/BlockFieldBinding.tsx +57 -36
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +21 -17
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +76 -67
- package/src/form/field_bindings/MapFieldBinding.tsx +82 -65
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
- package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -17
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +47 -34
- package/src/form/field_bindings/RepeatFieldBinding.tsx +57 -36
- package/src/form/field_bindings/SelectFieldBinding.tsx +24 -17
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -46
- package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -27
- package/src/form/field_bindings/TextFieldBinding.tsx +35 -30
- package/src/form/index.tsx +17 -37
- package/src/form/useClearRestoreValue.tsx +2 -2
- package/src/form/validation.ts +15 -26
- package/src/hooks/data/delete.ts +7 -6
- package/src/hooks/data/save.ts +13 -9
- package/src/hooks/data/useCollectionFetch.tsx +4 -4
- package/src/hooks/data/useDataSource.tsx +15 -2
- package/src/hooks/data/useEntityFetch.tsx +11 -7
- package/src/hooks/index.tsx +6 -1
- package/src/hooks/useAuthController.tsx +1 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
- package/src/{core → hooks}/useBuildModeController.tsx +23 -30
- package/src/hooks/useBuildNavigationController.tsx +278 -117
- 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 +41 -9
- package/src/hooks/useReferenceDialog.tsx +2 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
- package/src/hooks/useStorageSource.tsx +7 -2
- package/src/hooks/useValidateAuthenticator.tsx +115 -0
- package/src/index.ts +1 -0
- package/src/internal/useBuildDataSource.ts +72 -77
- package/src/internal/useBuildSideDialogsController.tsx +4 -2
- package/src/internal/useBuildSideEntityController.tsx +177 -70
- package/src/internal/useUnsavedChangesDialog.tsx +127 -91
- package/src/preview/PropertyPreview.tsx +19 -26
- package/src/preview/PropertyPreviewProps.tsx +5 -9
- package/src/preview/components/BooleanPreview.tsx +19 -4
- 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 +73 -176
- 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 +8 -7
- package/src/preview/util.ts +10 -10
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +236 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/analytics.ts +1 -0
- package/src/types/auth.tsx +48 -3
- package/src/types/collections.ts +102 -27
- package/src/types/customization_controller.tsx +0 -1
- package/src/types/datasource.ts +62 -44
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +16 -2
- package/src/types/entity_actions.tsx +33 -4
- package/src/types/entity_callbacks.ts +18 -18
- package/src/types/entity_overrides.tsx +7 -0
- package/src/types/export_import.ts +4 -4
- package/src/types/fields.tsx +81 -46
- package/src/types/firecms.tsx +6 -2
- package/src/types/firecms_context.tsx +1 -1
- package/src/types/index.ts +2 -1
- package/src/types/navigation.ts +52 -31
- package/src/types/permissions.ts +10 -5
- package/src/types/plugins.tsx +47 -39
- package/src/types/properties.ts +63 -27
- package/src/types/property_config.tsx +2 -4
- package/src/types/roles.ts +41 -0
- package/src/types/side_dialogs_controller.tsx +15 -0
- package/src/types/side_entity_controller.tsx +7 -1
- package/src/types/storage.ts +94 -3
- package/src/types/user.ts +9 -0
- package/src/util/builders.ts +10 -8
- package/src/util/collections.ts +22 -0
- 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 +26 -8
- 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 +45 -28
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/permissions.ts +20 -16
- package/src/util/plurals.ts +0 -2
- package/src/util/property_utils.tsx +11 -4
- package/src/util/references.ts +45 -5
- package/src/util/resolutions.ts +79 -46
- package/src/util/storage.ts +79 -21
- package/src/util/strings.ts +2 -2
- package/src/util/useStorageUploadController.tsx +71 -27
- package/src/util/useTraceUpdate.tsx +2 -1
- 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/form/components/FormikArrayContainer.d.ts +0 -18
- package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
- package/dist/internal/EntityView.d.ts +0 -22
- 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 -157
- package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
- package/src/components/LabelWithIcon.tsx +0 -33
- package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
- package/src/core/Drawer.tsx +0 -164
- package/src/core/Scaffold.tsx +0 -281
- package/src/form/components/FormikArrayContainer.tsx +0 -44
- package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
- package/src/internal/EntityView.tsx +0 -578
- package/src/internal/useBuildCustomizationController.tsx +0 -5
- package/src/internal/useLocaleConfig.tsx +0 -18
- package/src/types/appcheck.ts +0 -29
- /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
- /package/src/util/{common.tsx → common.ts} +0 -0
package/src/util/storage.ts
CHANGED
|
@@ -1,22 +1,39 @@
|
|
|
1
1
|
import {
|
|
2
|
+
ArrayProperty,
|
|
2
3
|
EntityValues,
|
|
4
|
+
PropertyOrBuilder,
|
|
3
5
|
ResolvedArrayProperty,
|
|
4
6
|
ResolvedStringProperty,
|
|
5
7
|
StorageConfig,
|
|
8
|
+
StringProperty,
|
|
6
9
|
UploadedFileContext
|
|
7
10
|
} from "../types";
|
|
8
11
|
import { randomString } from "./strings";
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
input: string | ((context: UploadedFileContext) => Promise<string> | string)
|
|
12
|
-
storage: StorageConfig
|
|
13
|
-
values: EntityValues<M
|
|
14
|
-
entityId: string
|
|
15
|
-
path
|
|
13
|
+
interface ResolveFilenameStringParams<M extends object> {
|
|
14
|
+
input: string | ((context: UploadedFileContext) => (Promise<string> | string));
|
|
15
|
+
storage: StorageConfig;
|
|
16
|
+
values: EntityValues<M>;
|
|
17
|
+
entityId: string;
|
|
18
|
+
path?: string;
|
|
16
19
|
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>,
|
|
17
|
-
file: File
|
|
18
|
-
propertyKey: string
|
|
20
|
+
file: File;
|
|
21
|
+
propertyKey: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export async function resolveStorageFilenameString<M extends object>(
|
|
25
|
+
{
|
|
26
|
+
input,
|
|
27
|
+
storage,
|
|
28
|
+
values,
|
|
29
|
+
entityId,
|
|
30
|
+
path,
|
|
31
|
+
property,
|
|
32
|
+
file,
|
|
33
|
+
propertyKey
|
|
34
|
+
}: ResolveFilenameStringParams<M>): Promise<string> {
|
|
19
35
|
let result;
|
|
36
|
+
|
|
20
37
|
if (typeof input === "function") {
|
|
21
38
|
result = await input({
|
|
22
39
|
path,
|
|
@@ -30,7 +47,13 @@ export async function resolveFilenameString<M extends object>(
|
|
|
30
47
|
if (!result)
|
|
31
48
|
console.warn("Storage callback returned empty result. Using default name value")
|
|
32
49
|
} else {
|
|
33
|
-
result = replacePlaceholders(
|
|
50
|
+
result = replacePlaceholders({
|
|
51
|
+
file,
|
|
52
|
+
input,
|
|
53
|
+
entityId,
|
|
54
|
+
propertyKey,
|
|
55
|
+
path
|
|
56
|
+
});
|
|
34
57
|
}
|
|
35
58
|
|
|
36
59
|
if (!result)
|
|
@@ -39,15 +62,28 @@ export async function resolveFilenameString<M extends object>(
|
|
|
39
62
|
return result;
|
|
40
63
|
}
|
|
41
64
|
|
|
65
|
+
interface ResolveStoragePathStringParams<M extends object> {
|
|
66
|
+
input: string | ((context: UploadedFileContext) => string);
|
|
67
|
+
storage: StorageConfig;
|
|
68
|
+
values: EntityValues<M>;
|
|
69
|
+
entityId: string;
|
|
70
|
+
path?: string;
|
|
71
|
+
property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
72
|
+
file: File;
|
|
73
|
+
propertyKey: string;
|
|
74
|
+
}
|
|
75
|
+
|
|
42
76
|
export function resolveStoragePathString<M extends object>(
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
77
|
+
{
|
|
78
|
+
input,
|
|
79
|
+
storage,
|
|
80
|
+
values,
|
|
81
|
+
entityId,
|
|
82
|
+
path,
|
|
83
|
+
property,
|
|
84
|
+
file,
|
|
85
|
+
propertyKey
|
|
86
|
+
}: ResolveStoragePathStringParams<M>): string {
|
|
51
87
|
let result;
|
|
52
88
|
if (typeof input === "function") {
|
|
53
89
|
result = input({
|
|
@@ -62,7 +98,13 @@ export function resolveStoragePathString<M extends object>(
|
|
|
62
98
|
if (!result)
|
|
63
99
|
console.warn("Storage callback returned empty result. Using default name value")
|
|
64
100
|
} else {
|
|
65
|
-
result = replacePlaceholders(
|
|
101
|
+
result = replacePlaceholders({
|
|
102
|
+
file,
|
|
103
|
+
input,
|
|
104
|
+
entityId,
|
|
105
|
+
propertyKey,
|
|
106
|
+
path
|
|
107
|
+
});
|
|
66
108
|
}
|
|
67
109
|
|
|
68
110
|
if (!result)
|
|
@@ -71,14 +113,30 @@ export function resolveStoragePathString<M extends object>(
|
|
|
71
113
|
return result;
|
|
72
114
|
}
|
|
73
115
|
|
|
74
|
-
|
|
116
|
+
interface Placeholders {
|
|
117
|
+
file: File;
|
|
118
|
+
input: string;
|
|
119
|
+
entityId: string;
|
|
120
|
+
propertyKey: string;
|
|
121
|
+
path?: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
function replacePlaceholders({
|
|
125
|
+
file,
|
|
126
|
+
input,
|
|
127
|
+
entityId,
|
|
128
|
+
propertyKey,
|
|
129
|
+
path
|
|
130
|
+
}: Placeholders) {
|
|
75
131
|
const ext = file.name.split(".").pop();
|
|
76
132
|
let result = input.replace("{entityId}", entityId)
|
|
77
133
|
.replace("{propertyKey}", propertyKey)
|
|
78
134
|
.replace("{rand}", randomString())
|
|
79
135
|
.replace("{file}", file.name)
|
|
80
|
-
.replace("{file.type}", file.type)
|
|
81
|
-
|
|
136
|
+
.replace("{file.type}", file.type);
|
|
137
|
+
if (path) {
|
|
138
|
+
result = result.replace("{path}", path);
|
|
139
|
+
}
|
|
82
140
|
if (ext) {
|
|
83
141
|
result = result.replace("{file.ext}", ext);
|
|
84
142
|
const name = file.name.replace(`.${ext}`, "");
|
package/src/util/strings.ts
CHANGED
|
@@ -56,8 +56,8 @@ export function unslugify(slug?: string): string {
|
|
|
56
56
|
const result = slug.replace(/[-_]/g, " ");
|
|
57
57
|
return result.replace(/\w\S*/g, function (txt) {
|
|
58
58
|
return txt.charAt(0).toUpperCase() + txt.substr(1);
|
|
59
|
-
});
|
|
59
|
+
}).trim();
|
|
60
60
|
} else {
|
|
61
|
-
return slug;
|
|
61
|
+
return slug.trim();
|
|
62
62
|
}
|
|
63
63
|
}
|
|
@@ -2,9 +2,11 @@ import Resizer from "react-image-file-resizer";
|
|
|
2
2
|
import equal from "react-fast-compare";
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
+
ArrayProperty,
|
|
5
6
|
EntityValues,
|
|
6
7
|
ImageCompression,
|
|
7
8
|
Property,
|
|
9
|
+
PropertyOrBuilder,
|
|
8
10
|
ResolvedArrayProperty,
|
|
9
11
|
ResolvedStringProperty,
|
|
10
12
|
StorageConfig,
|
|
@@ -14,7 +16,8 @@ import {
|
|
|
14
16
|
import { useCallback, useEffect, useState } from "react";
|
|
15
17
|
import { PreviewSize } from "../preview";
|
|
16
18
|
import { randomString } from "./strings";
|
|
17
|
-
import {
|
|
19
|
+
import { resolveStorageFilenameString, resolveStoragePathString } from "./storage";
|
|
20
|
+
import { resolveProperty } from "./resolutions";
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* Internal representation of an item in the storage
|
|
@@ -31,6 +34,7 @@ export interface StorageFieldItem {
|
|
|
31
34
|
size: PreviewSize
|
|
32
35
|
}
|
|
33
36
|
|
|
37
|
+
|
|
34
38
|
export function useStorageUploadController<M extends object>({
|
|
35
39
|
entityId,
|
|
36
40
|
entityValues,
|
|
@@ -42,17 +46,17 @@ export function useStorageUploadController<M extends object>({
|
|
|
42
46
|
disabled,
|
|
43
47
|
onChange
|
|
44
48
|
}:
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
{
|
|
50
|
+
entityId: string,
|
|
51
|
+
entityValues: EntityValues<M>,
|
|
52
|
+
value: string | string[] | null;
|
|
53
|
+
path?: string,
|
|
54
|
+
propertyKey: string,
|
|
55
|
+
property: StringProperty | ArrayProperty<string[]> | ResolvedStringProperty | ResolvedArrayProperty<string[]>,
|
|
56
|
+
storageSource: StorageSource,
|
|
57
|
+
disabled: boolean,
|
|
58
|
+
onChange: (value: string | string[] | null) => void
|
|
59
|
+
}) {
|
|
56
60
|
|
|
57
61
|
const storage: StorageConfig | undefined = property.dataType === "string"
|
|
58
62
|
? property.storage
|
|
@@ -67,21 +71,12 @@ export function useStorageUploadController<M extends object>({
|
|
|
67
71
|
throw Error("Storage meta must be specified");
|
|
68
72
|
|
|
69
73
|
const metadata: Record<string, any> | undefined = storage?.metadata;
|
|
70
|
-
const size = multipleFilesSupported ? "
|
|
74
|
+
const size = multipleFilesSupported ? "medium" : "large";
|
|
71
75
|
|
|
72
76
|
const compression: ImageCompression | undefined = storage?.imageCompression;
|
|
73
77
|
|
|
74
78
|
const internalInitialValue: StorageFieldItem[] =
|
|
75
|
-
(multipleFilesSupported
|
|
76
|
-
? (value ?? []) as string[]
|
|
77
|
-
: value ? [value as string] : []).map(entry => (
|
|
78
|
-
{
|
|
79
|
-
id: getRandomId(),
|
|
80
|
-
storagePathOrDownloadUrl: entry,
|
|
81
|
-
metadata,
|
|
82
|
-
size
|
|
83
|
-
}
|
|
84
|
-
));
|
|
79
|
+
getInternalInitialValue(multipleFilesSupported, value, metadata, size);
|
|
85
80
|
|
|
86
81
|
const [initialValue, setInitialValue] = useState<string | string[] | null>(value);
|
|
87
82
|
const [internalValue, setInternalValue] = useState<StorageFieldItem[]>(internalInitialValue);
|
|
@@ -93,20 +88,43 @@ export function useStorageUploadController<M extends object>({
|
|
|
93
88
|
}
|
|
94
89
|
}, [internalInitialValue, value, initialValue]);
|
|
95
90
|
|
|
91
|
+
const resolvedProperty = resolveProperty({
|
|
92
|
+
propertyOrBuilder: property as PropertyOrBuilder,
|
|
93
|
+
values: entityValues
|
|
94
|
+
}) as ResolvedStringProperty | ResolvedArrayProperty<string[]>;
|
|
95
|
+
|
|
96
96
|
const fileNameBuilder = useCallback(async (file: File) => {
|
|
97
97
|
if (storage.fileName) {
|
|
98
|
-
const fileName = await
|
|
98
|
+
const fileName = await resolveStorageFilenameString({
|
|
99
|
+
input: storage.fileName,
|
|
100
|
+
storage,
|
|
101
|
+
values: entityValues,
|
|
102
|
+
entityId,
|
|
103
|
+
path,
|
|
104
|
+
property: resolvedProperty,
|
|
105
|
+
file,
|
|
106
|
+
propertyKey
|
|
107
|
+
});
|
|
99
108
|
if (!fileName || fileName.length === 0) {
|
|
100
109
|
throw Error("You need to return a valid filename");
|
|
101
110
|
}
|
|
102
111
|
return fileName;
|
|
103
112
|
}
|
|
104
113
|
return randomString() + "_" + file.name;
|
|
105
|
-
}, [entityId, entityValues, path,
|
|
114
|
+
}, [entityId, entityValues, path, resolvedProperty, propertyKey, storage]);
|
|
106
115
|
|
|
107
116
|
const storagePathBuilder = useCallback((file: File) => {
|
|
108
|
-
return resolveStoragePathString(
|
|
109
|
-
|
|
117
|
+
return resolveStoragePathString({
|
|
118
|
+
input: storage.storagePath,
|
|
119
|
+
storage,
|
|
120
|
+
values: entityValues,
|
|
121
|
+
entityId,
|
|
122
|
+
path,
|
|
123
|
+
property: resolvedProperty,
|
|
124
|
+
file,
|
|
125
|
+
propertyKey
|
|
126
|
+
}) ?? "/";
|
|
127
|
+
}, [entityId, entityValues, path, resolvedProperty, propertyKey, storage]);
|
|
110
128
|
|
|
111
129
|
const onFileUploadComplete = useCallback(async (uploadedPath: string,
|
|
112
130
|
entry: StorageFieldItem,
|
|
@@ -200,6 +218,32 @@ export function useStorageUploadController<M extends object>({
|
|
|
200
218
|
}
|
|
201
219
|
}
|
|
202
220
|
|
|
221
|
+
function getInternalInitialValue(multipleFilesSupported: boolean,
|
|
222
|
+
value: string | string[] | null,
|
|
223
|
+
metadata: Record<string, any> | undefined,
|
|
224
|
+
size: PreviewSize): StorageFieldItem[] {
|
|
225
|
+
let strings: string[] = [];
|
|
226
|
+
if (multipleFilesSupported) {
|
|
227
|
+
if (Array.isArray(value) && value.every((v) => typeof v === "string")) {
|
|
228
|
+
strings = (value ?? []) as string[];
|
|
229
|
+
}
|
|
230
|
+
} else {
|
|
231
|
+
if (typeof value === "string") {
|
|
232
|
+
strings = value ? [value as string] : [];
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
return strings
|
|
237
|
+
.map(entry => (
|
|
238
|
+
{
|
|
239
|
+
id: getRandomId(),
|
|
240
|
+
storagePathOrDownloadUrl: entry,
|
|
241
|
+
metadata,
|
|
242
|
+
size
|
|
243
|
+
}
|
|
244
|
+
));
|
|
245
|
+
}
|
|
246
|
+
|
|
203
247
|
function removeDuplicates(items: StorageFieldItem[]) {
|
|
204
248
|
return items.filter(
|
|
205
249
|
(item, i) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { useEffect, useRef } from "react";
|
|
2
2
|
|
|
3
|
-
function printChanged(props: any, prev: any, path = "", depth = 0, maxDepth: number) {
|
|
3
|
+
export function printChanged(props: any, prev: any, path: string | undefined = "", depth: number | undefined = 0, maxDepth: number | undefined = 10) {
|
|
4
4
|
if (depth > maxDepth) {
|
|
5
5
|
return;
|
|
6
6
|
}
|
|
@@ -17,6 +17,7 @@ function printChanged(props: any, prev: any, path = "", depth = 0, maxDepth: num
|
|
|
17
17
|
export function useTraceUpdate(props: any, maxDepth = 3) {
|
|
18
18
|
const prev = useRef(props);
|
|
19
19
|
useEffect(() => {
|
|
20
|
+
console.log("Changed props:");
|
|
20
21
|
printChanged(props, prev.current, "", 0, maxDepth);
|
|
21
22
|
prev.current = props;
|
|
22
23
|
});
|
package/dist/core/Drawer.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Props used in case you need to override the default drawer
|
|
4
|
-
* @group Core
|
|
5
|
-
*/
|
|
6
|
-
export type DrawerProps<T = {}> = T & {
|
|
7
|
-
hovered: boolean;
|
|
8
|
-
drawerOpen: boolean;
|
|
9
|
-
closeDrawer: () => any;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Default drawer used in the CMS
|
|
13
|
-
* @group Core
|
|
14
|
-
*/
|
|
15
|
-
export declare function Drawer({ hovered, drawerOpen, closeDrawer }: DrawerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
-
export declare function DrawerNavigationItem({ name, icon, drawerOpen, tooltipsOpen, url, onClick }: {
|
|
17
|
-
icon: React.ReactElement;
|
|
18
|
-
name: string;
|
|
19
|
-
tooltipsOpen: boolean;
|
|
20
|
-
drawerOpen: boolean;
|
|
21
|
-
url: string;
|
|
22
|
-
onClick?: () => void;
|
|
23
|
-
}): import("react/jsx-runtime").JSX.Element;
|
package/dist/core/Scaffold.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import { DrawerProps } from "./Drawer";
|
|
3
|
-
import { FireCMSAppBarProps } from "../components";
|
|
4
|
-
export declare const DRAWER_WIDTH = 280;
|
|
5
|
-
/**
|
|
6
|
-
* @group Core
|
|
7
|
-
*/
|
|
8
|
-
export interface ScaffoldProps<ExtraDrawerProps = object, ExtraAppbarProps = object> {
|
|
9
|
-
/**
|
|
10
|
-
* Name of the app, displayed as the main title and in the tab title
|
|
11
|
-
*/
|
|
12
|
-
name: string;
|
|
13
|
-
/**
|
|
14
|
-
* Logo to be displayed in the drawer of the CMS
|
|
15
|
-
*/
|
|
16
|
-
logo?: string;
|
|
17
|
-
/**
|
|
18
|
-
* Whether to include the drawer in the scaffold
|
|
19
|
-
*/
|
|
20
|
-
includeDrawer?: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* In case you need to override the view that gets rendered as a drawer
|
|
23
|
-
* @see DefaultDrawer
|
|
24
|
-
*/
|
|
25
|
-
Drawer?: React.ComponentType<DrawerProps<ExtraDrawerProps>>;
|
|
26
|
-
/**
|
|
27
|
-
* Additional props passed to the custom Drawer
|
|
28
|
-
*/
|
|
29
|
-
drawerProps?: Partial<DrawerProps> & ExtraDrawerProps;
|
|
30
|
-
/**
|
|
31
|
-
* Open the drawer on hover
|
|
32
|
-
*/
|
|
33
|
-
autoOpenDrawer?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* A component that gets rendered on the upper side of the main toolbar.
|
|
36
|
-
* `toolbarExtraWidget` has no effect if this is set.
|
|
37
|
-
*/
|
|
38
|
-
FireCMSAppBar?: React.ComponentType<FireCMSAppBarProps<ExtraAppbarProps>>;
|
|
39
|
-
/**
|
|
40
|
-
* Additional props passed to the custom AppBar
|
|
41
|
-
*/
|
|
42
|
-
fireCMSAppBarProps?: Partial<FireCMSAppBarProps> & ExtraAppbarProps;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* This view acts as a scaffold for FireCMS.
|
|
46
|
-
*
|
|
47
|
-
* It is in charge of displaying the navigation drawer, top bar and main
|
|
48
|
-
* collection views.
|
|
49
|
-
* This component needs a parent {@link FireCMS}
|
|
50
|
-
*
|
|
51
|
-
* @param props
|
|
52
|
-
* @constructor
|
|
53
|
-
* @group Core
|
|
54
|
-
*/
|
|
55
|
-
export declare const Scaffold: React.NamedExoticComponent<React.PropsWithChildren<ScaffoldProps<object, object>>>;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
interface ArrayContainerProps<T> {
|
|
3
|
-
value: T[];
|
|
4
|
-
name: string;
|
|
5
|
-
addLabel: string;
|
|
6
|
-
buildEntry: (index: number, internalId: number) => React.ReactNode;
|
|
7
|
-
disabled?: boolean;
|
|
8
|
-
small?: boolean;
|
|
9
|
-
onInternalIdAdded?: (id: number) => void;
|
|
10
|
-
includeAddButton?: boolean;
|
|
11
|
-
newDefaultEntry?: T | null;
|
|
12
|
-
setFieldValue: (field: string, value: any, shouldValidate?: boolean | undefined) => void;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* @group Form custom fields
|
|
16
|
-
*/
|
|
17
|
-
export declare function FormikArrayContainer<T>({ name, addLabel, value, disabled, buildEntry, small, onInternalIdAdded, includeAddButton, newDefaultEntry, setFieldValue }: ArrayContainerProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
18
|
-
export {};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FieldProps } from "../../types";
|
|
2
|
-
/**
|
|
3
|
-
* Render a markdown field that allows edition and seeing the preview.
|
|
4
|
-
*
|
|
5
|
-
* This is one of the internal components that get mapped natively inside forms
|
|
6
|
-
* and tables to the specified properties.
|
|
7
|
-
* @group Form fields
|
|
8
|
-
*/
|
|
9
|
-
export declare function MarkdownFieldBinding({ propertyKey, value, setValue, error, showError, disabled, autoFocus, touched, property, tableMode, includeDescription, context }: FieldProps<string>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Entity, EntityCollection, User } from "../types";
|
|
2
|
-
export interface EntityViewProps<M extends Record<string, any>> {
|
|
3
|
-
path: string;
|
|
4
|
-
collection: EntityCollection<M>;
|
|
5
|
-
entityId?: string;
|
|
6
|
-
copy?: boolean;
|
|
7
|
-
selectedSubPath?: string;
|
|
8
|
-
parentCollectionIds: string[];
|
|
9
|
-
formWidth?: number | string;
|
|
10
|
-
onValuesAreModified: (modified: boolean) => void;
|
|
11
|
-
onUpdate?: (params: {
|
|
12
|
-
entity: Entity<any>;
|
|
13
|
-
}) => void;
|
|
14
|
-
onClose?: () => void;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* This is the default view that is used as the content of a side panel when
|
|
18
|
-
* an entity is opened.
|
|
19
|
-
* You probably don't want to use this view directly since it is bound to the
|
|
20
|
-
* side panel. Instead, you might want to use {@link EntityForm} or {@link EntityCollectionView}
|
|
21
|
-
*/
|
|
22
|
-
export declare function EntityView<M extends Record<string, any>, UserType extends User>({ path, entityId, selectedSubPath, copy, collection, parentCollectionIds, onValuesAreModified, formWidth, onUpdate, onClose }: EntityViewProps<M>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function useLocaleConfig(locale?: string): void;
|
package/dist/types/appcheck.d.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { FirebaseApp } from "firebase/app";
|
|
2
|
-
/**
|
|
3
|
-
* @group Firebase
|
|
4
|
-
*/
|
|
5
|
-
export interface AppCheck {
|
|
6
|
-
firebaseApp?: FirebaseApp;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* @group Firebase
|
|
10
|
-
*/
|
|
11
|
-
export interface AppCheckOptions {
|
|
12
|
-
providerKey: string;
|
|
13
|
-
useEnterpriseRecaptcha: boolean;
|
|
14
|
-
isTokenAutoRefreshEnabled?: boolean;
|
|
15
|
-
debugToken?: string;
|
|
16
|
-
forceRefresh?: boolean;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* @group Firebase
|
|
20
|
-
*/
|
|
21
|
-
export declare interface AppCheckTokenResult {
|
|
22
|
-
/**
|
|
23
|
-
* The token string in JWT format.
|
|
24
|
-
*/
|
|
25
|
-
readonly token: string;
|
|
26
|
-
}
|
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
|
|
3
|
-
import { Link as ReactLink } from "react-router-dom";
|
|
4
|
-
import { ErrorBoundary } from "../components";
|
|
5
|
-
import {
|
|
6
|
-
Avatar,
|
|
7
|
-
cn,
|
|
8
|
-
DarkModeIcon,
|
|
9
|
-
IconButton,
|
|
10
|
-
LightModeIcon,
|
|
11
|
-
LogoutIcon,
|
|
12
|
-
Menu,
|
|
13
|
-
MenuItem,
|
|
14
|
-
Skeleton,
|
|
15
|
-
Typography
|
|
16
|
-
} from "@firecms/ui";
|
|
17
|
-
import { useAuthController, useLargeLayout, useModeController, useNavigationController } from "../hooks";
|
|
18
|
-
import { User } from "../types";
|
|
19
|
-
|
|
20
|
-
export type FireCMSAppBarProps<ADDITIONAL_PROPS = object> = {
|
|
21
|
-
title: string;
|
|
22
|
-
/**
|
|
23
|
-
* A component that gets rendered on the upper side of the main toolbar
|
|
24
|
-
*/
|
|
25
|
-
endAdornment?: React.ReactNode;
|
|
26
|
-
|
|
27
|
-
startAdornment?: React.ReactNode;
|
|
28
|
-
|
|
29
|
-
dropDownActions?: React.ReactNode;
|
|
30
|
-
|
|
31
|
-
includeDrawer?: boolean;
|
|
32
|
-
|
|
33
|
-
drawerOpen: boolean;
|
|
34
|
-
|
|
35
|
-
className?: string;
|
|
36
|
-
|
|
37
|
-
style?: React.CSSProperties;
|
|
38
|
-
|
|
39
|
-
user?: User;
|
|
40
|
-
} & ADDITIONAL_PROPS;
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* This component renders the main app bar of FireCMS.
|
|
44
|
-
* You will likely not need to use this component directly.
|
|
45
|
-
*
|
|
46
|
-
* @param title
|
|
47
|
-
* @param toolbarExtraWidget
|
|
48
|
-
* @param drawerOpen
|
|
49
|
-
* @constructor
|
|
50
|
-
*/
|
|
51
|
-
export const FireCMSAppBar = function FireCMSAppBar({
|
|
52
|
-
title,
|
|
53
|
-
endAdornment,
|
|
54
|
-
startAdornment,
|
|
55
|
-
drawerOpen,
|
|
56
|
-
dropDownActions,
|
|
57
|
-
includeDrawer,
|
|
58
|
-
className,
|
|
59
|
-
style,
|
|
60
|
-
user: userProp
|
|
61
|
-
}: FireCMSAppBarProps) {
|
|
62
|
-
const navigation = useNavigationController();
|
|
63
|
-
|
|
64
|
-
const authController = useAuthController();
|
|
65
|
-
const {
|
|
66
|
-
mode,
|
|
67
|
-
toggleMode
|
|
68
|
-
} = useModeController();
|
|
69
|
-
|
|
70
|
-
const largeLayout = useLargeLayout();
|
|
71
|
-
|
|
72
|
-
const user = userProp ?? authController.user;
|
|
73
|
-
|
|
74
|
-
let avatarComponent: JSX.Element;
|
|
75
|
-
if (user && user.photoURL) {
|
|
76
|
-
avatarComponent = <Avatar
|
|
77
|
-
src={user.photoURL}/>;
|
|
78
|
-
} else if (user === undefined || authController.initialLoading) {
|
|
79
|
-
avatarComponent = <div className={"p-1 flex justify-center"}>
|
|
80
|
-
<Skeleton className={"w-10 h-10 rounded-full"}/>
|
|
81
|
-
</div>;
|
|
82
|
-
} else {
|
|
83
|
-
const initial = user?.displayName
|
|
84
|
-
? user.displayName[0].toUpperCase()
|
|
85
|
-
: (user?.email ? user.email[0].toUpperCase() : "A");
|
|
86
|
-
avatarComponent = <Avatar>{initial}</Avatar>;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return (
|
|
90
|
-
<div
|
|
91
|
-
style={style}
|
|
92
|
-
className={cn("pr-2",
|
|
93
|
-
{
|
|
94
|
-
"ml-[17rem]": drawerOpen && largeLayout,
|
|
95
|
-
"ml-16": includeDrawer && !(drawerOpen && largeLayout) && !startAdornment,
|
|
96
|
-
"h-16": true,
|
|
97
|
-
"z-10": largeLayout,
|
|
98
|
-
"transition-all": true,
|
|
99
|
-
"ease-in": true,
|
|
100
|
-
"duration-75": true,
|
|
101
|
-
"w-full": !includeDrawer,
|
|
102
|
-
"w-[calc(100%-64px)]": includeDrawer && !(drawerOpen && largeLayout),
|
|
103
|
-
"w-[calc(100%-17rem)]": includeDrawer && (drawerOpen && largeLayout),
|
|
104
|
-
"duration-150": drawerOpen && largeLayout,
|
|
105
|
-
fixed: true,
|
|
106
|
-
},
|
|
107
|
-
className)}>
|
|
108
|
-
|
|
109
|
-
<div className="flex flex-row gap-2 px-4 h-full items-center">
|
|
110
|
-
|
|
111
|
-
{startAdornment}
|
|
112
|
-
|
|
113
|
-
{navigation && <div className="mr-8 hidden lg:block">
|
|
114
|
-
<ReactLink
|
|
115
|
-
className="visited:text-inherit visited:dark:text-inherit"
|
|
116
|
-
to={navigation?.basePath ?? "/"}
|
|
117
|
-
>
|
|
118
|
-
<Typography variant="subtitle1"
|
|
119
|
-
noWrap
|
|
120
|
-
className={"ml-2 !font-medium"}>
|
|
121
|
-
{title}
|
|
122
|
-
</Typography>
|
|
123
|
-
</ReactLink>
|
|
124
|
-
</div>}
|
|
125
|
-
|
|
126
|
-
<div className={"flex-grow"}/>
|
|
127
|
-
|
|
128
|
-
{endAdornment &&
|
|
129
|
-
<ErrorBoundary>
|
|
130
|
-
{endAdornment}
|
|
131
|
-
</ErrorBoundary>}
|
|
132
|
-
|
|
133
|
-
<IconButton
|
|
134
|
-
color="inherit"
|
|
135
|
-
aria-label="Open drawer"
|
|
136
|
-
onClick={toggleMode}
|
|
137
|
-
size="large">
|
|
138
|
-
{mode === "dark"
|
|
139
|
-
? <DarkModeIcon/>
|
|
140
|
-
: <LightModeIcon/>}
|
|
141
|
-
</IconButton>
|
|
142
|
-
|
|
143
|
-
<Menu trigger={avatarComponent}>
|
|
144
|
-
|
|
145
|
-
{dropDownActions}
|
|
146
|
-
|
|
147
|
-
{!dropDownActions && <MenuItem onClick={authController.signOut}>
|
|
148
|
-
<LogoutIcon/>
|
|
149
|
-
Log Out
|
|
150
|
-
</MenuItem>}
|
|
151
|
-
|
|
152
|
-
</Menu>
|
|
153
|
-
|
|
154
|
-
</div>
|
|
155
|
-
</div>
|
|
156
|
-
);
|
|
157
|
-
}
|