@firecms/core 3.0.0-beta.11 → 3.0.0-beta.12
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/components/ArrayContainer.d.ts +7 -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 +4 -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/EntityEditView.d.ts +29 -21
- package/dist/core/EntityEditViewFormActions.d.ts +2 -0
- 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 +45 -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/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 +18213 -16819
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +18164 -16771
- package/dist/index.umd.js.map +1 -1
- package/dist/internal/useBuildSideEntityController.d.ts +2 -2
- 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 +30 -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 +9 -2
- package/dist/types/navigation.d.ts +29 -12
- package/dist/types/plugins.d.ts +1 -0
- package/dist/types/properties.d.ts +18 -3
- package/dist/types/side_entity_controller.d.ts +6 -1
- package/dist/util/builders.d.ts +1 -1
- 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 +12 -1
- package/dist/util/resolutions.d.ts +6 -1
- package/package.json +19 -21
- package/src/components/ArrayContainer.tsx +48 -29
- package/src/components/CircularProgressCenter.tsx +1 -1
- package/src/components/DeleteEntityDialog.tsx +1 -1
- package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +40 -19
- 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 +5 -11
- package/src/components/EntityCollectionView/EntityCollectionView.tsx +83 -41
- package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
- package/src/components/NotFoundPage.tsx +2 -2
- package/src/components/PropertyIdCopyTooltip.tsx +2 -3
- package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +11 -6
- 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 +19 -2
- 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 +26 -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 +44 -14
- package/src/core/DefaultDrawer.tsx +1 -1
- package/src/core/EntityEditView.tsx +278 -1000
- package/src/core/EntityEditViewFormActions.tsx +199 -0
- package/src/core/EntitySidePanel.tsx +85 -15
- package/src/core/FireCMS.tsx +7 -4
- 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 +774 -0
- package/src/form/EntityFormActions.tsx +169 -0
- package/src/form/PropertyFieldBinding.tsx +13 -11
- 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 +4 -4
- package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +4 -2
- package/src/form/field_bindings/BlockFieldBinding.tsx +4 -2
- package/src/form/field_bindings/DateTimeFieldBinding.tsx +1 -0
- package/src/form/field_bindings/MapFieldBinding.tsx +14 -16
- package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +9 -6
- package/src/form/field_bindings/MultiSelectFieldBinding.tsx +1 -1
- 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 +5 -2
- package/src/form/field_bindings/SelectFieldBinding.tsx +1 -1
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +6 -4
- 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 +1 -1
- 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 +70 -24
- package/src/hooks/useLargeLayout.tsx +0 -35
- package/src/hooks/useModeController.tsx +1 -2
- package/src/hooks/useResolvedNavigationFrom.tsx +4 -6
- package/src/internal/useBuildSideDialogsController.tsx +3 -2
- package/src/internal/useBuildSideEntityController.tsx +124 -83
- package/src/internal/useUnsavedChangesDialog.tsx +126 -92
- package/src/preview/PropertyPreview.tsx +8 -8
- package/src/preview/components/UrlComponentPreview.tsx +17 -18
- package/src/preview/property_previews/MapPropertyPreview.tsx +3 -2
- package/src/routes/CustomCMSRoute.tsx +21 -0
- package/src/routes/FireCMSRoute.tsx +235 -0
- package/src/routes/HomePageRoute.tsx +17 -0
- package/src/types/collections.ts +38 -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 +13 -2
- package/src/types/navigation.ts +36 -16
- package/src/types/plugins.tsx +1 -0
- package/src/types/properties.ts +21 -3
- package/src/types/side_dialogs_controller.tsx +2 -0
- package/src/types/side_entity_controller.tsx +6 -1
- package/src/util/builders.ts +5 -3
- 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 +3 -0
- package/src/util/navigation_from_path.ts +13 -6
- package/src/util/navigation_utils.ts +53 -1
- package/src/util/objects.ts +4 -1
- package/src/util/parent_references_from_path.ts +3 -3
- package/src/util/resolutions.ts +26 -5
- package/src/util/useStorageUploadController.tsx +39 -21
- package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
- /package/src/util/{common.tsx → common.ts} +0 -0
|
@@ -8,7 +8,7 @@ export const DialogsProvider: React.FC<PropsWithChildren<{}>> = ({ children }) =
|
|
|
8
8
|
const [dialogEntries, setDialogEntries] = useState<DialogControllerEntryProps[]>([]);
|
|
9
9
|
const dialogEntriesRef = useRef<DialogControllerEntryProps[]>(dialogEntries);
|
|
10
10
|
|
|
11
|
-
const updateDialogEntries = (newPanels: DialogControllerEntryProps[]) => {
|
|
11
|
+
const updateDialogEntries = (newPanels: DialogControllerEntryProps<any>[]) => {
|
|
12
12
|
dialogEntriesRef.current = newPanels;
|
|
13
13
|
setDialogEntries(newPanels);
|
|
14
14
|
};
|
|
@@ -23,7 +23,7 @@ export const DialogsProvider: React.FC<PropsWithChildren<{}>> = ({ children }) =
|
|
|
23
23
|
|
|
24
24
|
}, [dialogEntries]);
|
|
25
25
|
|
|
26
|
-
const open = useCallback((dialogEntry: DialogControllerEntryProps) => {
|
|
26
|
+
const open = useCallback(<T extends object = object>(dialogEntry: DialogControllerEntryProps<T>) => {
|
|
27
27
|
|
|
28
28
|
const updatedPanels = [...dialogEntriesRef.current, dialogEntry];
|
|
29
29
|
updateDialogEntries(updatedPanels);
|
|
@@ -46,6 +46,7 @@ export const DialogsProvider: React.FC<PropsWithChildren<{}>> = ({ children }) =
|
|
|
46
46
|
key={`dialog_${i}`}
|
|
47
47
|
open={true}
|
|
48
48
|
closeDialog={close}
|
|
49
|
+
{...entry.props}
|
|
49
50
|
/>)}
|
|
50
51
|
</DialogsControllerContext.Provider>
|
|
51
52
|
);
|
|
@@ -3,10 +3,8 @@ import { ModeController } from "../hooks";
|
|
|
3
3
|
|
|
4
4
|
const DEFAULT_MODE_STATE: ModeController = {
|
|
5
5
|
mode: "light",
|
|
6
|
-
setMode: (mode: "light" | "dark") => {
|
|
6
|
+
setMode: (mode: "light" | "dark" | "system") => {
|
|
7
7
|
},
|
|
8
|
-
toggleMode: () => {
|
|
9
|
-
}
|
|
10
8
|
};
|
|
11
9
|
export const ModeControllerContext = React.createContext<ModeController>(DEFAULT_MODE_STATE);
|
|
12
10
|
|
|
@@ -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,6 +18,7 @@ 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
|
|
|
@@ -65,10 +67,12 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
65
67
|
} = useApp();
|
|
66
68
|
const navigation = useNavigationController();
|
|
67
69
|
|
|
70
|
+
const breadcrumbs = useBreadcrumbsController();
|
|
71
|
+
|
|
68
72
|
const authController = useAuthController();
|
|
69
73
|
const {
|
|
70
74
|
mode,
|
|
71
|
-
|
|
75
|
+
setMode
|
|
72
76
|
} = useModeController();
|
|
73
77
|
|
|
74
78
|
const navigate = useNavigate();
|
|
@@ -108,8 +112,8 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
108
112
|
className)}>
|
|
109
113
|
|
|
110
114
|
|
|
111
|
-
{navigation && <div className="mr-
|
|
112
|
-
<
|
|
115
|
+
{navigation && <div className="mr-2 hidden lg:block">
|
|
116
|
+
<Link
|
|
113
117
|
className="visited:text-inherit visited:dark:text-inherit block"
|
|
114
118
|
to={navigation?.basePath ?? "/"}
|
|
115
119
|
>
|
|
@@ -127,7 +131,28 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
127
131
|
</Typography>
|
|
128
132
|
: title}
|
|
129
133
|
</div>
|
|
130
|
-
</
|
|
134
|
+
</Link>
|
|
135
|
+
</div>}
|
|
136
|
+
|
|
137
|
+
{breadcrumbs.breadcrumbs && <div className="mr-8 hidden lg:block">
|
|
138
|
+
<div className={"flex flex-row gap-2"}>
|
|
139
|
+
{breadcrumbs.breadcrumbs.map((breadcrumb, index) => {
|
|
140
|
+
return <React.Fragment key={breadcrumb.url + "_" + index}>
|
|
141
|
+
<Typography variant={"caption"} color={"secondary"}>
|
|
142
|
+
/
|
|
143
|
+
</Typography>
|
|
144
|
+
<Link
|
|
145
|
+
key={index}
|
|
146
|
+
className="visited:text-inherit visited:dark:text-inherit block"
|
|
147
|
+
to={breadcrumb.url}
|
|
148
|
+
>
|
|
149
|
+
<Typography variant={"caption"} color={"secondary"}>
|
|
150
|
+
{breadcrumb.title}
|
|
151
|
+
</Typography>
|
|
152
|
+
</Link>
|
|
153
|
+
</React.Fragment>;
|
|
154
|
+
})}
|
|
155
|
+
</div>
|
|
131
156
|
</div>}
|
|
132
157
|
|
|
133
158
|
{startAdornment}
|
|
@@ -139,15 +164,20 @@ export const DefaultAppBar = function DefaultAppBar({
|
|
|
139
164
|
{endAdornment}
|
|
140
165
|
</ErrorBoundary>}
|
|
141
166
|
|
|
142
|
-
{includeModeToggle &&
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
167
|
+
{includeModeToggle &&
|
|
168
|
+
<Menu
|
|
169
|
+
trigger={<IconButton
|
|
170
|
+
color="inherit"
|
|
171
|
+
aria-label="Open drawer"
|
|
172
|
+
size="large">
|
|
173
|
+
{mode === "dark"
|
|
174
|
+
? <DarkModeIcon/>
|
|
175
|
+
: <LightModeIcon/>}
|
|
176
|
+
</IconButton>}>
|
|
177
|
+
<MenuItem onClick={() => setMode("dark")}><DarkModeIcon size={"smallest"}/> Dark</MenuItem>
|
|
178
|
+
<MenuItem onClick={() => setMode("light")}><LightModeIcon size={"smallest"}/> Light </MenuItem>
|
|
179
|
+
<MenuItem onClick={() => setMode("system")}> <BrightnessMediumIcon size={"smallest"}/>System</MenuItem>
|
|
180
|
+
</Menu>}
|
|
151
181
|
|
|
152
182
|
<Menu trigger={avatarComponent}>
|
|
153
183
|
{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
|
|