@firecms/core 3.0.0-rc.2 → 3.0.0-rc.3

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.
Files changed (46) hide show
  1. package/dist/components/HomePage/HomePageDnD.d.ts +2 -1
  2. package/dist/components/PropertyCollectionView.d.ts +23 -0
  3. package/dist/core/EntityEditView.d.ts +10 -4
  4. package/dist/form/EntityForm.d.ts +5 -2
  5. package/dist/form/components/LocalChangesMenu.d.ts +11 -0
  6. package/dist/form/index.d.ts +2 -1
  7. package/dist/index.es.js +1288 -364
  8. package/dist/index.es.js.map +1 -1
  9. package/dist/index.umd.js +1287 -363
  10. package/dist/index.umd.js.map +1 -1
  11. package/dist/types/collections.d.ts +11 -0
  12. package/dist/types/properties.d.ts +32 -6
  13. package/dist/util/collections.d.ts +1 -0
  14. package/dist/util/entity_cache.d.ts +6 -1
  15. package/dist/util/make_properties_editable.d.ts +1 -2
  16. package/dist/util/objects.d.ts +1 -0
  17. package/dist/util/useStorageUploadController.d.ts +1 -0
  18. package/package.json +6 -6
  19. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -47
  20. package/src/components/EntityCollectionView/EntityCollectionView.tsx +6 -1
  21. package/src/components/EntityView.tsx +29 -40
  22. package/src/components/HomePage/DefaultHomePage.tsx +13 -9
  23. package/src/components/HomePage/HomePageDnD.tsx +140 -38
  24. package/src/components/PropertyCollectionView.tsx +329 -0
  25. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +2 -1
  26. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +0 -1
  27. package/src/core/EntityEditView.tsx +27 -14
  28. package/src/core/EntityEditViewFormActions.tsx +33 -18
  29. package/src/core/EntitySidePanel.tsx +9 -3
  30. package/src/form/EntityForm.tsx +173 -42
  31. package/src/form/EntityFormActions.tsx +30 -15
  32. package/src/form/components/ErrorFocus.tsx +22 -29
  33. package/src/form/components/LocalChangesMenu.tsx +144 -0
  34. package/src/form/index.tsx +5 -1
  35. package/src/hooks/useBuildNavigationController.tsx +104 -31
  36. package/src/preview/property_previews/MapPropertyPreview.tsx +2 -2
  37. package/src/preview/property_previews/NumberPropertyPreview.tsx +2 -2
  38. package/src/types/collections.ts +12 -0
  39. package/src/types/properties.ts +35 -6
  40. package/src/util/collections.ts +8 -0
  41. package/src/util/createFormexStub.tsx +4 -0
  42. package/src/util/entity_cache.ts +71 -52
  43. package/src/util/join_collections.ts +3 -3
  44. package/src/util/make_properties_editable.ts +0 -22
  45. package/src/util/objects.ts +40 -2
  46. package/src/util/useStorageUploadController.tsx +71 -34
@@ -16,7 +16,7 @@ export declare function SortableNavigationGroup({ groupName, children, disabled
16
16
  children: React.ReactNode;
17
17
  disabled?: boolean;
18
18
  }): import("react/jsx-runtime").JSX.Element;
19
- export declare function useHomePageDnd({ items: dndItems, setItems: setDndItems, disabled, onCardMovedBetweenGroups, onGroupMoved, onNewGroupDrop, onPersist }: {
19
+ export declare function useHomePageDnd({ items, setItems, disabled, onCardMovedBetweenGroups, onGroupMoved, onNewGroupDrop, onPersist }: {
20
20
  items: {
21
21
  name: string;
22
22
  entries: NavigationEntry[];
@@ -67,6 +67,7 @@ export declare function useHomePageDnd({ items: dndItems, setItems: setDndItems,
67
67
  dialogOpenForGroup: string | null;
68
68
  setDialogOpenForGroup: React.Dispatch<React.SetStateAction<string | null>>;
69
69
  handleRenameGroup: (oldName: string, newName: string) => void;
70
+ handleDialogClose: () => void;
70
71
  isHoveringNewGroupDropZone: boolean;
71
72
  setIsHoveringNewGroupDropZone: React.Dispatch<React.SetStateAction<boolean>>;
72
73
  };
@@ -0,0 +1,23 @@
1
+ import { PreviewSize } from "../preview";
2
+ import { ResolvedProperties, ResolvedProperty } from "../types";
3
+ /**
4
+ * Build a readable label for a path and resolve the property
5
+ * Supports map and array (including arrays of maps)
6
+ */
7
+ export declare function buildPropertyLabelAndGetProperty(properties: ResolvedProperties, key: string): {
8
+ label: string;
9
+ property: ResolvedProperty | undefined;
10
+ };
11
+ /**
12
+ * Improved simple layout for nested changes:
13
+ * - Map or Array-of-Map -> section header + indented rows
14
+ * - Leaf or Array-of-Primitives -> single row with label and value
15
+ */
16
+ export declare const PropertyCollectionView: ({ data, properties, baseKey, suppressHeader, size }: {
17
+ data: any;
18
+ properties: ResolvedProperties;
19
+ baseKey?: string;
20
+ suppressHeader?: boolean;
21
+ size?: PreviewSize;
22
+ }) => import("react/jsx-runtime").JSX.Element | null;
23
+ export declare function buildDataFromPaths(values: object, paths: string[]): object;
@@ -11,6 +11,12 @@ export type OnUpdateParams = {
11
11
  selectedTab?: string;
12
12
  collection: EntityCollection<any>;
13
13
  };
14
+ export type BarActionsParams = {
15
+ values: object;
16
+ status: EntityStatus;
17
+ path: string;
18
+ entityId?: string;
19
+ };
14
20
  export type OnTabChangeParams<M extends Record<string, any>> = {
15
21
  path: string;
16
22
  entityId?: string;
@@ -32,11 +38,11 @@ export interface EntityEditViewProps<M extends Record<string, any>> {
32
38
  copy?: boolean;
33
39
  selectedTab?: string;
34
40
  parentCollectionIds: string[];
35
- onValuesModified?: (modified: boolean) => void;
41
+ onValuesModified?: (modified: boolean, values: M) => void;
36
42
  onSaved?: (params: OnUpdateParams) => void;
37
43
  onTabChange?: (props: OnTabChangeParams<M>) => void;
38
44
  layout?: "side_panel" | "full_screen";
39
- barActions?: React.ReactNode;
45
+ barActions?: (params: BarActionsParams) => React.ReactNode;
40
46
  formProps?: Partial<EntityFormProps<M>>;
41
47
  }
42
48
  /**
@@ -44,9 +50,9 @@ export interface EntityEditViewProps<M extends Record<string, any>> {
44
50
  * an entity is opened.
45
51
  */
46
52
  export declare function EntityEditView<M extends Record<string, any>, USER extends User>({ entityId, ...props }: EntityEditViewProps<M>): import("react/jsx-runtime").JSX.Element;
47
- export declare function EntityEditViewInner<M extends Record<string, any>>({ path, fullIdPath, entityId, selectedTab: selectedTabProp, collection, parentCollectionIds, onValuesModified, onSaved, onTabChange, entity, cachedDirtyValues, dataLoading, layout, barActions, status, setStatus, formProps, canEdit }: EntityEditViewProps<M> & {
53
+ export declare function EntityEditViewInner<M extends Record<string, any>>({ path, fullIdPath, entityId, selectedTab: selectedTabProp, collection, parentCollectionIds, onValuesModified, onSaved, onTabChange, entity, initialDirtyValues, dataLoading, layout, barActions, status, setStatus, formProps, canEdit }: EntityEditViewProps<M> & {
48
54
  entity?: Entity<M>;
49
- cachedDirtyValues?: Partial<M>;
55
+ initialDirtyValues?: Partial<M>;
50
56
  dataLoading: boolean;
51
57
  status: EntityStatus;
52
58
  setStatus: (status: EntityStatus) => void;
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Entity, EntityCollection, EntityCustomViewParams, EntityStatus, FormContext } from "../types";
2
+ import { AuthController, Entity, EntityCollection, EntityCustomViewParams, EntityStatus, EntityValues, FormContext, PropertyConfig } from "../types";
3
3
  import { FormexController } from "@firecms/formex";
4
4
  import { ValidationError } from "yup";
5
5
  import { EntityFormActionsProps } from "./EntityFormActions";
@@ -19,7 +19,7 @@ export type EntityFormProps<M extends Record<string, any>> = {
19
19
  entity?: Entity<M>;
20
20
  databaseId?: string;
21
21
  onIdChange?: (id: string) => void;
22
- onValuesModified?: (modified: boolean) => void;
22
+ onValuesModified?: (modified: boolean, values: M) => void;
23
23
  onSaved?: (params: OnUpdateParams) => void;
24
24
  initialDirtyValues?: Partial<M>;
25
25
  onFormContextReady?: (formContext: FormContext) => void;
@@ -46,5 +46,8 @@ export type EntityFormProps<M extends Record<string, any>> = {
46
46
  Builder?: React.ComponentType<EntityCustomViewParams<M>>;
47
47
  children?: React.ReactNode;
48
48
  };
49
+ export declare function extractTouchedValues(values: any, touched: Record<string, boolean>): Record<string, any>;
50
+ export declare function getChanges<T extends object>(source: Partial<T>, comparison: Partial<T>): Partial<T>;
49
51
  export declare function EntityForm<M extends Record<string, any>>({ path, fullIdPath, entityId: entityIdProp, collection, onValuesModified, onIdChange, onSaved, entity, initialDirtyValues, onFormContextReady, forceActionsAtTheBottom, initialStatus, className, onStatusChange, onEntityChange, openEntityMode, formex: formexProp, disabled: disabledProp, Builder, EntityFormActionsComponent, showDefaultActions, showEntityPath, children }: EntityFormProps<M>): import("react/jsx-runtime").JSX.Element;
52
+ export declare function getInitialEntityValues<M extends object>(authController: AuthController, collection: EntityCollection, path: string, status: "new" | "existing" | "copy", entity: Entity<M> | undefined, propertyConfigs?: Record<string, PropertyConfig>): Partial<EntityValues<M>>;
50
53
  export declare function yupToFormErrors(yupError: ValidationError): Record<string, any>;
@@ -0,0 +1,11 @@
1
+ import { FormexController } from "@firecms/formex";
2
+ import { ResolvedProperties } from "../../types";
3
+ interface LocalChangesMenuProps<M extends object> {
4
+ cacheKey: string;
5
+ localChangesData: Partial<M>;
6
+ formex: FormexController<M>;
7
+ onClearLocalChanges?: () => void;
8
+ properties: ResolvedProperties<M>;
9
+ }
10
+ export declare function LocalChangesMenu<M extends object>({ localChangesData, formex, onClearLocalChanges, cacheKey, properties }: LocalChangesMenuProps<M>): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -1,4 +1,5 @@
1
- export * from "./EntityForm";
1
+ export { EntityForm, yupToFormErrors, } from "./EntityForm";
2
+ export type { EntityFormProps } from "./EntityForm";
2
3
  export { SelectFieldBinding } from "./field_bindings/SelectFieldBinding";
3
4
  export { MultiSelectFieldBinding } from "./field_bindings/MultiSelectFieldBinding";
4
5
  export { ArrayOfReferencesFieldBinding } from "./field_bindings/ArrayOfReferencesFieldBinding";