@firecms/core 3.3.0-canary.102f274 → 3.3.0-canary.3afa809

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@firecms/core",
3
3
  "type": "module",
4
- "version": "3.3.0-canary.102f274",
4
+ "version": "3.3.0-canary.3afa809",
5
5
  "description": "Awesome Firebase/Firestore-based headless open-source CMS",
6
6
  "funding": {
7
7
  "url": "https://github.com/sponsors/firecmsco"
@@ -53,8 +53,8 @@
53
53
  "@dnd-kit/core": "^6.3.1",
54
54
  "@dnd-kit/modifiers": "^9.0.0",
55
55
  "@dnd-kit/sortable": "^10.0.0",
56
- "@firecms/formex": "^3.3.0-canary.102f274",
57
- "@firecms/ui": "^3.3.0-canary.102f274",
56
+ "@firecms/formex": "^3.3.0-canary.3afa809",
57
+ "@firecms/ui": "^3.3.0-canary.3afa809",
58
58
  "@floating-ui/dom": "^1.7.4",
59
59
  "@radix-ui/react-portal": "^1.1.10",
60
60
  "@radix-ui/react-slot": "^1.2.4",
@@ -70,7 +70,13 @@ export const Scaffold = React.memo<PropsWithChildren<ScaffoldProps>>(
70
70
  const includeDrawer = drawerChildren.length > 0;
71
71
  const largeLayout = useLargeLayout();
72
72
 
73
- const [drawerOpen, setDrawerOpen] = React.useState(false);
73
+ const [drawerOpen, setDrawerOpen] = React.useState(() => {
74
+ try {
75
+ return localStorage.getItem("firecms_drawer_open") === "true";
76
+ } catch {
77
+ return false;
78
+ }
79
+ });
74
80
  const [onHover, setOnHover] = React.useState(false);
75
81
 
76
82
  const setOnHoverTrue = useCallback(() => setOnHover(true), []);
@@ -78,10 +84,16 @@ export const Scaffold = React.memo<PropsWithChildren<ScaffoldProps>>(
78
84
 
79
85
  const handleDrawerOpen = useCallback(() => {
80
86
  setDrawerOpen(true);
87
+ try {
88
+ localStorage.setItem("firecms_drawer_open", "true");
89
+ } catch { /* ignore */ }
81
90
  }, []);
82
91
 
83
92
  const handleDrawerClose = useCallback(() => {
84
93
  setDrawerOpen(false);
94
+ try {
95
+ localStorage.setItem("firecms_drawer_open", "false");
96
+ } catch { /* ignore */ }
85
97
  }, []);
86
98
 
87
99
  const computedDrawerOpen: boolean = drawerOpen || Boolean(largeLayout && autoOpenDrawer && onHover);
@@ -178,7 +178,9 @@ export const EntityCollectionView = React.memo(
178
178
 
179
179
  const collection = useMemo(() => {
180
180
  const userOverride = userConfigPersistence?.getCollectionConfig<M>(fullPath);
181
- return (userOverride ? mergeDeep(collectionProp, userOverride) : collectionProp) as EntityCollection<M>;
181
+ if (!userOverride) return collectionProp;
182
+ const { properties, ...rest } = userOverride;
183
+ return mergeDeep(collectionProp, rest) as EntityCollection<M>;
182
184
  }, [collectionProp, fullPath, userConfigPersistence?.getCollectionConfig]);
183
185
 
184
186
  const openEntityMode = collection?.openEntityMode ?? DEFAULT_ENTITY_OPEN_MODE;
@@ -507,7 +509,8 @@ export const EntityCollectionView = React.memo(
507
509
  path: fullPath,
508
510
  propertyConfigs: customizationController.propertyConfigs,
509
511
  authController,
510
- }), [collection, fullPath]);
512
+ userConfigPersistence,
513
+ }), [collection, fullPath, userConfigPersistence]);
511
514
 
512
515
  // Check if Kanban view is possible (collection has at least one string enum property)
513
516
  const hasEnumProperty = useMemo(() => {
@@ -414,7 +414,11 @@ export function useBuildNavigationController<EC extends EntityCollection, USER e
414
414
  const baseCollection = getCollectionByPathOrId(removeInitialAndTrailingSlashes(idOrPath), collections);
415
415
 
416
416
  const userOverride = includeUserOverride ? userConfigPersistence?.getCollectionConfig(idOrPath) : undefined;
417
- const overriddenCollection = baseCollection ? mergeDeep(baseCollection, userOverride ?? {}) : undefined;
417
+ let overriddenCollection = baseCollection;
418
+ if (baseCollection && userOverride) {
419
+ const { properties, ...rest } = userOverride;
420
+ overriddenCollection = mergeDeep(baseCollection, rest);
421
+ }
418
422
 
419
423
  let result: Partial<EntityCollection> | undefined = overriddenCollection;
420
424
 
@@ -90,8 +90,11 @@ export const resolveCollection = <M extends Record<string, any>,>
90
90
  .map(([id, property]) => ({ [id]: property }))
91
91
  .reduce((a, b) => ({ ...a, ...b }), {});
92
92
 
93
+ const { properties: overrideProps, ...restOverrides } = collectionOverride ?? {};
94
+
93
95
  return {
94
96
  ...collection,
97
+ ...restOverrides,
95
98
  properties: cleanedProperties,
96
99
  originalCollection: collection
97
100
  } as ResolvedEntityCollection<M>;