@firecms/core 3.0.0-beta.11 → 3.0.0-beta.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/Scaffold.d.ts +4 -0
- package/dist/components/ArrayContainer.d.ts +14 -3
- package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +2 -1
- package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
- package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +15 -1
- package/dist/components/EntityCollectionTable/index.d.ts +1 -1
- package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
- package/dist/components/EntityJsonPreview.d.ts +3 -0
- package/dist/components/PropertyIdCopyTooltip.d.ts +1 -1
- package/dist/components/SelectableTable/SelectableTable.d.ts +12 -2
- package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
- package/dist/components/UnsavedChangesDialog.d.ts +8 -0
- package/dist/components/VirtualTable/VirtualTableProps.d.ts +13 -0
- package/dist/components/common/default_entity_actions.d.ts +0 -2
- package/dist/components/common/index.d.ts +1 -1
- package/dist/components/common/useColumnsIds.d.ts +1 -0
- package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -2
- package/dist/components/common/useDebouncedCallback.d.ts +1 -0
- package/dist/components/common/useScrollRestoration.d.ts +14 -0
- package/dist/contexts/BreacrumbsContext.d.ts +8 -0
- package/dist/core/DefaultAppBar.d.ts +8 -2
- package/dist/core/EntityEditView.d.ts +36 -21
- 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 +0 -1
- package/dist/core/SideDialogs.d.ts +4 -2
- package/dist/core/index.d.ts +2 -1
- package/dist/form/EntityForm.d.ts +49 -0
- package/dist/form/EntityFormActions.d.ts +17 -0
- package/dist/form/PropertyFieldBinding.d.ts +1 -1
- package/dist/form/components/FormEntry.d.ts +6 -0
- package/dist/form/components/FormLayout.d.ts +5 -0
- package/dist/form/components/index.d.ts +2 -0
- 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/MapFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +1 -1
- package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
- package/dist/form/index.d.ts +16 -16
- package/dist/hooks/data/save.d.ts +1 -1
- package/dist/hooks/data/useEntityFetch.d.ts +2 -1
- package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
- package/dist/hooks/useBuildNavigationController.d.ts +4 -1
- package/dist/hooks/useModeController.d.ts +1 -2
- package/dist/index.es.js +15842 -14396
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +15833 -14389
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildDataSource.d.ts +3 -2
- package/dist/internal/useBuildSideEntityController.d.ts +3 -3
- package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
- 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/collections.d.ts +36 -10
- package/dist/types/datasource.d.ts +2 -2
- package/dist/types/dialogs_controller.d.ts +7 -3
- package/dist/types/entities.d.ts +1 -1
- package/dist/types/entity_actions.d.ts +10 -0
- package/dist/types/fields.d.ts +13 -3
- package/dist/types/firecms.d.ts +1 -1
- package/dist/types/navigation.d.ts +33 -12
- package/dist/types/plugins.d.ts +2 -0
- package/dist/types/properties.d.ts +40 -4
- package/dist/types/side_entity_controller.d.ts +6 -1
- package/dist/util/builders.d.ts +1 -1
- package/dist/util/createFormexStub.d.ts +2 -0
- package/dist/util/entity_actions.d.ts +2 -0
- package/dist/util/entity_cache.d.ts +23 -0
- package/dist/util/index.d.ts +1 -0
- package/dist/util/navigation_from_path.d.ts +6 -1
- package/dist/util/navigation_utils.d.ts +13 -1
- package/dist/util/objects.d.ts +1 -1
- package/dist/util/property_utils.d.ts +2 -2
- package/dist/util/references.d.ts +2 -2
- package/dist/util/resolutions.d.ts +12 -2
- package/package.json +20 -21
- package/src/app/Scaffold.tsx +13 -3
- package/src/components/ArrayContainer.tsx +60 -24
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/DeleteEntityDialog.tsx +5 -3
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +46 -23
- package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +10 -4
- package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +18 -1
- package/src/components/EntityCollectionTable/index.tsx +1 -1
- package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +3 -3
- package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +10 -13
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +105 -47
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/EntityJsonPreview.tsx +66 -0
- package/src/components/EntityPreview.tsx +10 -3
- package/src/components/EntityView.tsx +4 -1
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyIdCopyTooltip.tsx +2 -3
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +14 -7
- package/src/components/SelectableTable/SelectableTable.tsx +18 -3
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +7 -7
- package/src/components/UnsavedChangesDialog.tsx +42 -0
- package/src/components/VirtualTable/VirtualTable.tsx +48 -3
- package/src/components/VirtualTable/VirtualTableProps.tsx +15 -0
- package/src/components/VirtualTable/fields/VirtualTableInput.tsx +1 -1
- package/src/components/common/default_entity_actions.tsx +37 -37
- package/src/components/common/index.ts +1 -1
- package/src/components/common/useColumnsIds.tsx +1 -1
- 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/contexts/BreacrumbsContext.tsx +38 -0
- package/src/contexts/DialogsProvider.tsx +3 -2
- package/src/contexts/ModeController.tsx +1 -3
- package/src/core/DefaultAppBar.tsx +59 -17
- package/src/core/DefaultDrawer.tsx +1 -1
- package/src/core/EntityEditView.tsx +354 -1000
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +85 -15
- package/src/core/FireCMS.tsx +20 -16
- package/src/core/FireCMSRouter.tsx +17 -0
- package/src/core/NavigationRoutes.tsx +23 -32
- package/src/core/SideDialogs.tsx +20 -11
- package/src/core/index.tsx +4 -2
- package/src/form/EntityForm.tsx +782 -0
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +21 -16
- package/src/form/components/FormEntry.tsx +22 -0
- package/src/form/components/FormLayout.tsx +16 -0
- package/src/form/components/LabelWithIcon.tsx +6 -3
- package/src/form/components/StorageUploadProgress.tsx +1 -1
- package/src/form/components/index.tsx +2 -0
- package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +8 -5
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +5 -2
- package/src/form/field_bindings/BlockFieldBinding.tsx +5 -3
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -0
- package/src/form/field_bindings/KeyValueFieldBinding.tsx +1 -1
- package/src/form/field_bindings/MapFieldBinding.tsx +14 -16
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +15 -8
- package/src/form/field_bindings/MultiSelectFieldBinding.tsx +3 -3
- package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +2 -2
- package/src/form/field_bindings/ReferenceFieldBinding.tsx +1 -1
- package/src/form/field_bindings/RepeatFieldBinding.tsx +13 -4
- package/src/form/field_bindings/SelectFieldBinding.tsx +2 -2
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +11 -6
- package/src/form/field_bindings/SwitchFieldBinding.tsx +1 -0
- package/src/form/field_bindings/TextFieldBinding.tsx +1 -0
- package/src/form/index.tsx +16 -32
- package/src/form/validation.ts +12 -6
- package/src/hooks/data/save.ts +25 -30
- package/src/hooks/data/useCollectionFetch.tsx +1 -1
- package/src/hooks/data/useEntityFetch.tsx +5 -1
- package/src/hooks/useBreadcrumbsController.tsx +31 -0
- package/src/hooks/useBuildModeController.tsx +15 -28
- package/src/hooks/useBuildNavigationController.tsx +81 -24
- package/src/hooks/useFireCMSContext.tsx +0 -30
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +4 -6
- package/src/internal/useBuildDataSource.ts +9 -5
- package/src/internal/useBuildSideDialogsController.tsx +3 -2
- package/src/internal/useBuildSideEntityController.tsx +135 -88
- package/src/internal/useUnsavedChangesDialog.tsx +126 -92
- package/src/preview/PropertyPreview.tsx +12 -10
- package/src/preview/components/UrlComponentPreview.tsx +17 -18
- package/src/preview/property_previews/ArrayOfMapsPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +4 -2
- package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
- package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -2
- package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -2
- package/src/preview/property_previews/MapPropertyPreview.tsx +3 -2
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +246 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/collections.ts +45 -13
- package/src/types/datasource.ts +2 -1
- package/src/types/dialogs_controller.tsx +7 -3
- package/src/types/entities.ts +1 -1
- package/src/types/entity_actions.tsx +12 -0
- package/src/types/fields.tsx +18 -3
- package/src/types/firecms.tsx +1 -1
- package/src/types/navigation.ts +41 -16
- package/src/types/plugins.tsx +2 -0
- package/src/types/properties.ts +48 -4
- package/src/types/side_dialogs_controller.tsx +2 -0
- package/src/types/side_entity_controller.tsx +11 -1
- package/src/util/builders.ts +5 -3
- package/src/util/createFormexStub.tsx +62 -0
- package/src/util/entity_actions.ts +28 -0
- package/src/util/entity_cache.ts +204 -0
- package/src/util/index.ts +1 -0
- package/src/util/join_collections.ts +6 -1
- package/src/util/navigation_from_path.ts +18 -7
- package/src/util/navigation_utils.ts +115 -14
- package/src/util/objects.ts +9 -2
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/property_utils.tsx +7 -3
- package/src/util/references.ts +8 -6
- package/src/util/resolutions.ts +41 -12
- package/src/util/useStorageUploadController.tsx +60 -23
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import { Link
|
|
3
|
+
import { Link, useNavigate } from "react-router-dom";
|
|
4
4
|
import { ErrorBoundary, FireCMSLogo } from "../components";
|
|
5
5
|
import {
|
|
6
6
|
Avatar,
|
|
7
|
+
BrightnessMediumIcon,
|
|
7
8
|
cls,
|
|
8
9
|
DarkModeIcon,
|
|
9
10
|
IconButton,
|
|
@@ -17,15 +18,23 @@ import {
|
|
|
17
18
|
import { useAuthController, useLargeLayout, useModeController, useNavigationController } from "../hooks";
|
|
18
19
|
import { User } from "../types";
|
|
19
20
|
import { useApp } from "../app/useApp";
|
|
21
|
+
import { useBreadcrumbsController } from "../hooks/useBreadcrumbsController";
|
|
20
22
|
|
|
21
23
|
export type DefaultAppBarProps<ADDITIONAL_PROPS = object> = {
|
|
22
24
|
|
|
25
|
+
/**
|
|
26
|
+
* The content of the app bar, usually a title or logo. This includes a link to the home page.
|
|
27
|
+
*/
|
|
23
28
|
title?: React.ReactNode;
|
|
29
|
+
|
|
24
30
|
/**
|
|
25
|
-
* A component that gets rendered on the upper side of the main toolbar
|
|
31
|
+
* A component that gets rendered on the upper side to the end of the main toolbar
|
|
26
32
|
*/
|
|
27
33
|
endAdornment?: React.ReactNode;
|
|
28
34
|
|
|
35
|
+
/**
|
|
36
|
+
* A component that gets rendered on the upper side to the start of the main toolbar
|
|
37
|
+
*/
|
|
29
38
|
startAdornment?: React.ReactNode;
|
|
30
39
|
|
|
31
40
|
dropDownActions?: React.ReactNode;
|
|
@@ -55,20 +64,26 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
55
64
|
includeModeToggle = true,
|
|
56
65
|
className,
|
|
57
66
|
style,
|
|
58
|
-
user: userProp
|
|
67
|
+
user: userProp,
|
|
68
|
+
logo: logoProp,
|
|
59
69
|
}: DefaultAppBarProps) {
|
|
60
70
|
|
|
61
71
|
const {
|
|
62
72
|
hasDrawer,
|
|
63
73
|
drawerOpen,
|
|
64
|
-
logo
|
|
74
|
+
logo: appLogo
|
|
65
75
|
} = useApp();
|
|
76
|
+
|
|
77
|
+
const logo = logoProp ?? appLogo;
|
|
78
|
+
|
|
66
79
|
const navigation = useNavigationController();
|
|
67
80
|
|
|
81
|
+
const breadcrumbs = useBreadcrumbsController();
|
|
82
|
+
|
|
68
83
|
const authController = useAuthController();
|
|
69
84
|
const {
|
|
70
85
|
mode,
|
|
71
|
-
|
|
86
|
+
setMode
|
|
72
87
|
} = useModeController();
|
|
73
88
|
|
|
74
89
|
const navigate = useNavigate();
|
|
@@ -108,8 +123,8 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
108
123
|
className)}>
|
|
109
124
|
|
|
110
125
|
|
|
111
|
-
{navigation && <div className="mr-
|
|
112
|
-
<
|
|
126
|
+
{navigation && <div className="mr-2 hidden lg:block">
|
|
127
|
+
<Link
|
|
113
128
|
className="visited:text-inherit visited:dark:text-inherit block"
|
|
114
129
|
to={navigation?.basePath ?? "/"}
|
|
115
130
|
>
|
|
@@ -127,7 +142,28 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
127
142
|
</Typography>
|
|
128
143
|
: title}
|
|
129
144
|
</div>
|
|
130
|
-
</
|
|
145
|
+
</Link>
|
|
146
|
+
</div>}
|
|
147
|
+
|
|
148
|
+
{(breadcrumbs.breadcrumbs ?? []).length > 0 && <div className="mr-8 hidden lg:block">
|
|
149
|
+
<div className={"flex flex-row gap-2"}>
|
|
150
|
+
{breadcrumbs.breadcrumbs.map((breadcrumb, index) => {
|
|
151
|
+
return <React.Fragment key={breadcrumb.url + "_" + index}>
|
|
152
|
+
<Typography variant={"caption"} color={"secondary"}>
|
|
153
|
+
/
|
|
154
|
+
</Typography>
|
|
155
|
+
<Link
|
|
156
|
+
key={index}
|
|
157
|
+
className="visited:text-inherit visited:dark:text-inherit block"
|
|
158
|
+
to={breadcrumb.url}
|
|
159
|
+
>
|
|
160
|
+
<Typography variant={"caption"} color={"secondary"}>
|
|
161
|
+
{breadcrumb.title}
|
|
162
|
+
</Typography>
|
|
163
|
+
</Link>
|
|
164
|
+
</React.Fragment>;
|
|
165
|
+
})}
|
|
166
|
+
</div>
|
|
131
167
|
</div>}
|
|
132
168
|
|
|
133
169
|
{startAdornment}
|
|
@@ -139,15 +175,21 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
139
175
|
{endAdornment}
|
|
140
176
|
</ErrorBoundary>}
|
|
141
177
|
|
|
142
|
-
{includeModeToggle &&
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
178
|
+
{includeModeToggle &&
|
|
179
|
+
<Menu
|
|
180
|
+
trigger={<IconButton
|
|
181
|
+
color="inherit"
|
|
182
|
+
aria-label="Open drawer"
|
|
183
|
+
size="large">
|
|
184
|
+
{mode === "dark"
|
|
185
|
+
? <DarkModeIcon/>
|
|
186
|
+
: <LightModeIcon/>}
|
|
187
|
+
</IconButton>}>
|
|
188
|
+
<MenuItem onClick={() => setMode("dark")}><DarkModeIcon size={"smallest"}/> Dark</MenuItem>
|
|
189
|
+
<MenuItem onClick={() => setMode("light")}><LightModeIcon size={"smallest"}/> Light </MenuItem>
|
|
190
|
+
<MenuItem onClick={() => setMode("system")}> <BrightnessMediumIcon
|
|
191
|
+
size={"smallest"}/>System</MenuItem>
|
|
192
|
+
</Menu>}
|
|
151
193
|
|
|
152
194
|
<Menu trigger={avatarComponent}>
|
|
153
195
|
{user && <div className={"px-4 py-2 mb-2"}>
|
|
@@ -175,7 +175,7 @@ export function DrawerLogo({ logo }: {
|
|
|
175
175
|
{logo
|
|
176
176
|
? <img src={logo}
|
|
177
177
|
alt="Logo"
|
|
178
|
-
className={cls("max-w-full max-h-full transition-all",
|
|
178
|
+
className={cls("max-w-full max-h-full transition-all object-contain",
|
|
179
179
|
drawerOpen ? "w-[96px] h-[96px]" : "w-[32px] h-[32px]")}/>
|
|
180
180
|
: <FireCMSLogo/>}
|
|
181
181
|
|