@firecms/core 3.0.0-alpha.70 → 3.0.0-alpha.71

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 (225) hide show
  1. package/package.json +3 -3
  2. package/src/components/ArrayContainer.d.ts +42 -0
  3. package/src/components/CircularProgressCenter.d.ts +11 -0
  4. package/src/components/DeleteConfirmationDialog.d.ts +9 -0
  5. package/src/components/EntityCollectionTable/EntityCollectionTable.d.ts +30 -0
  6. package/src/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +106 -0
  7. package/src/components/EntityCollectionTable/fields/TableReferenceField.d.ts +15 -0
  8. package/src/components/EntityCollectionTable/fields/TableStorageUpload.d.ts +33 -0
  9. package/src/components/EntityCollectionTable/filters/BooleanFilterField.d.ts +9 -0
  10. package/src/components/EntityCollectionTable/filters/DateTimeFilterField.d.ts +11 -0
  11. package/src/components/EntityCollectionTable/filters/ReferenceFilterField.d.ts +14 -0
  12. package/src/components/EntityCollectionTable/filters/StringNumberFilterField.d.ts +13 -0
  13. package/src/components/EntityCollectionTable/index.d.ts +4 -0
  14. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +18 -0
  15. package/src/components/EntityCollectionTable/internal/DeleteEntityDialog.d.ts +12 -0
  16. package/src/components/EntityCollectionTable/internal/EntityCollectionRowActions.d.ts +35 -0
  17. package/src/components/EntityCollectionTable/internal/EntityTableCell.d.ts +26 -0
  18. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.d.ts +9 -0
  19. package/src/components/EntityCollectionTable/internal/PropertyTableCell.d.ts +18 -0
  20. package/src/components/EntityCollectionTable/internal/common.d.ts +4 -0
  21. package/src/components/EntityCollectionTable/internal/default_entity_actions.d.ts +6 -0
  22. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +5 -0
  23. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +23 -0
  24. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.d.ts +13 -0
  25. package/src/components/EntityCollectionTable/internal/popup_field/useWindowSize.d.ts +6 -0
  26. package/src/components/EntityCollectionTable/types.d.ts +39 -0
  27. package/src/components/EntityCollectionTable/useDebouncedData.d.ts +9 -0
  28. package/src/components/EntityCollectionTable/useEntityCollectionTableController.d.ts +21 -0
  29. package/src/components/EntityCollectionView/EntityCollectionView.d.ts +37 -0
  30. package/src/components/EntityCollectionView/EntityCollectionViewActions.d.ts +14 -0
  31. package/src/components/EntityCollectionView/useColumnsIds.d.ts +4 -0
  32. package/src/components/EntityPreview.d.ts +11 -0
  33. package/src/components/ErrorBoundary.d.ts +11 -0
  34. package/src/components/ErrorTooltip.d.ts +2 -0
  35. package/src/components/ErrorView.d.ts +19 -0
  36. package/src/components/FieldConfigBadge.d.ts +4 -0
  37. package/src/components/FireCMSAppBar.d.ts +26 -0
  38. package/src/components/FireCMSLogo.d.ts +7 -0
  39. package/src/components/HomePage/DefaultHomePage.d.ts +21 -0
  40. package/src/components/HomePage/FavouritesView.d.ts +3 -0
  41. package/src/components/HomePage/NavigationCollectionCard.d.ts +17 -0
  42. package/src/components/HomePage/NavigationGroup.d.ts +4 -0
  43. package/src/components/HomePage/index.d.ts +3 -0
  44. package/src/components/LabelWithIcon.d.ts +14 -0
  45. package/src/components/NotFoundPage.d.ts +1 -0
  46. package/src/components/ReferenceSelectionInner.d.ts +58 -0
  47. package/src/components/ReferenceWidget.d.ts +28 -0
  48. package/src/components/VirtualTable/VirtualTable.d.ts +11 -0
  49. package/src/components/VirtualTable/VirtualTableCell.d.ts +14 -0
  50. package/src/components/VirtualTable/VirtualTableHeader.d.ts +27 -0
  51. package/src/components/VirtualTable/VirtualTableHeaderRow.d.ts +2 -0
  52. package/src/components/VirtualTable/VirtualTableProps.d.ts +215 -0
  53. package/src/components/VirtualTable/VirtualTableRow.d.ts +3 -0
  54. package/src/components/VirtualTable/common.d.ts +2 -0
  55. package/src/components/VirtualTable/fields/VirtualTableDateField.d.ts +11 -0
  56. package/src/components/VirtualTable/fields/VirtualTableInput.d.ts +8 -0
  57. package/src/components/VirtualTable/fields/VirtualTableNumberInput.d.ts +8 -0
  58. package/src/components/VirtualTable/fields/VirtualTableSelect.d.ts +15 -0
  59. package/src/components/VirtualTable/fields/VirtualTableSwitch.d.ts +7 -0
  60. package/src/components/VirtualTable/index.d.ts +2 -0
  61. package/src/components/VirtualTable/types.d.ts +34 -0
  62. package/src/components/index.d.ts +20 -0
  63. package/src/contexts/AuthControllerContext.d.ts +3 -0
  64. package/src/contexts/DataSourceContext.d.ts +3 -0
  65. package/src/contexts/DialogsProvider.d.ts +4 -0
  66. package/src/contexts/ModeController.d.ts +4 -0
  67. package/src/contexts/NavigationContext.d.ts +3 -0
  68. package/src/contexts/SideDialogsControllerContext.d.ts +3 -0
  69. package/src/contexts/SideEntityControllerContext.d.ts +3 -0
  70. package/src/contexts/SnackbarProvider.d.ts +2 -0
  71. package/src/contexts/StorageSourceContext.d.ts +3 -0
  72. package/src/contexts/UserConfigurationPersistenceContext.d.ts +3 -0
  73. package/src/contexts/index.d.ts +3 -0
  74. package/src/core/Drawer.d.ts +23 -0
  75. package/src/core/EntitySidePanel.d.ts +10 -0
  76. package/src/core/FireCMS.d.ts +14 -0
  77. package/src/core/NavigationRoutes.d.ts +21 -0
  78. package/src/core/Scaffold.d.ts +52 -0
  79. package/src/core/SideDialogs.d.ts +23 -0
  80. package/src/core/field_configs.d.ts +7 -0
  81. package/src/core/index.d.ts +10 -0
  82. package/src/core/useBuildLocalConfigurationPersistence.d.ts +2 -0
  83. package/src/core/useBuildModeController.d.ts +6 -0
  84. package/src/form/EntityForm.d.ts +75 -0
  85. package/src/form/PropertyFieldBinding.d.ts +30 -0
  86. package/src/form/components/CustomIdField.d.ts +9 -0
  87. package/src/form/components/ErrorFocus.d.ts +4 -0
  88. package/src/form/components/FieldHelperText.d.ts +12 -0
  89. package/src/form/components/FormikArrayContainer.d.ts +18 -0
  90. package/src/form/components/StorageItemPreview.d.ts +13 -0
  91. package/src/form/components/StorageUploadProgress.d.ts +10 -0
  92. package/src/form/components/SwitchControl.d.ts +8 -0
  93. package/src/form/components/index.d.ts +3 -0
  94. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +9 -0
  95. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +11 -0
  96. package/src/form/field_bindings/BlockFieldBinding.d.ts +10 -0
  97. package/src/form/field_bindings/DateTimeFieldBinding.d.ts +11 -0
  98. package/src/form/field_bindings/KeyValueFieldBinding.d.ts +7 -0
  99. package/src/form/field_bindings/MapFieldBinding.d.ts +9 -0
  100. package/src/form/field_bindings/MarkdownFieldBinding.d.ts +9 -0
  101. package/src/form/field_bindings/MultiSelectBinding.d.ts +9 -0
  102. package/src/form/field_bindings/ReadOnlyFieldBinding.d.ts +10 -0
  103. package/src/form/field_bindings/ReferenceFieldBinding.d.ts +9 -0
  104. package/src/form/field_bindings/RepeatFieldBinding.d.ts +10 -0
  105. package/src/form/field_bindings/SelectFieldBinding.d.ts +12 -0
  106. package/src/form/field_bindings/StorageUploadFieldBinding.d.ts +28 -0
  107. package/src/form/field_bindings/SwitchFieldBinding.d.ts +12 -0
  108. package/src/form/field_bindings/TextFieldBinding.d.ts +12 -0
  109. package/src/form/index.d.ts +20 -0
  110. package/src/form/useClearRestoreValue.d.ts +13 -0
  111. package/src/form/validation.d.ts +25 -0
  112. package/src/hooks/data/delete.d.ts +37 -0
  113. package/src/hooks/data/save.d.ts +42 -0
  114. package/src/hooks/data/useCollectionFetch.d.ts +50 -0
  115. package/src/hooks/data/useDataOrder.d.ts +12 -0
  116. package/src/hooks/data/useDataSource.d.ts +6 -0
  117. package/src/hooks/data/useEntityFetch.d.ts +28 -0
  118. package/src/hooks/index.d.ts +19 -0
  119. package/src/hooks/useAuthController.d.ts +11 -0
  120. package/src/hooks/useBrowserTitleAndIcon.d.ts +6 -0
  121. package/src/hooks/useClipboard.d.ts +57 -0
  122. package/src/hooks/useDialogsController.d.ts +11 -0
  123. package/src/hooks/useFireCMSContext.d.ts +12 -0
  124. package/src/hooks/useLargeLayout.d.ts +1 -0
  125. package/src/hooks/useModeController.d.ts +20 -0
  126. package/src/hooks/useNavigationController.d.ts +9 -0
  127. package/src/hooks/useReferenceDialog.d.ts +18 -0
  128. package/src/hooks/useResolvedNavigationFrom.d.ts +72 -0
  129. package/src/hooks/useSideDialogsController.d.ts +18 -0
  130. package/src/hooks/useSideEntityController.d.ts +12 -0
  131. package/src/hooks/useSnackbarController.d.ts +41 -0
  132. package/src/hooks/useStorageSource.d.ts +6 -0
  133. package/src/hooks/useUserConfigurationPersistence.d.ts +8 -0
  134. package/src/index.d.ts +8 -0
  135. package/src/internal/EntityView.d.ts +22 -0
  136. package/src/internal/common.d.ts +3 -0
  137. package/src/internal/useBuildDataSource.d.ts +22 -0
  138. package/src/internal/useBuildNavigationController.d.ts +14 -0
  139. package/src/internal/useBuildSideDialogsController.d.ts +2 -0
  140. package/src/internal/useBuildSideEntityController.d.ts +4 -0
  141. package/src/internal/useLocaleConfig.d.ts +1 -0
  142. package/src/internal/useRestoreScroll.d.ts +6 -0
  143. package/src/internal/useUnsavedChangesDialog.d.ts +14 -0
  144. package/src/preview/PropertyPreview.d.ts +7 -0
  145. package/src/preview/PropertyPreviewProps.d.ts +43 -0
  146. package/src/preview/components/ArrayEnumPreview.d.ts +11 -0
  147. package/src/preview/components/AsyncPreviewComponent.d.ts +11 -0
  148. package/src/preview/components/BooleanPreview.d.ts +7 -0
  149. package/src/preview/components/DatePreview.d.ts +7 -0
  150. package/src/preview/components/EmptyValue.d.ts +4 -0
  151. package/src/preview/components/EnumValuesChip.d.ts +13 -0
  152. package/src/preview/components/ImagePreview.d.ts +12 -0
  153. package/src/preview/components/ReferencePreview.d.ts +22 -0
  154. package/src/preview/components/StorageThumbnail.d.ts +13 -0
  155. package/src/preview/components/UrlComponentPreview.d.ts +12 -0
  156. package/src/preview/index.d.ts +23 -0
  157. package/src/preview/property_previews/ArrayOfMapsPreview.d.ts +5 -0
  158. package/src/preview/property_previews/ArrayOfReferencesPreview.d.ts +5 -0
  159. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.d.ts +5 -0
  160. package/src/preview/property_previews/ArrayOfStringsPreview.d.ts +5 -0
  161. package/src/preview/property_previews/ArrayOneOfPreview.d.ts +5 -0
  162. package/src/preview/property_previews/ArrayPropertyEnumPreview.d.ts +5 -0
  163. package/src/preview/property_previews/ArrayPropertyPreview.d.ts +5 -0
  164. package/src/preview/property_previews/MapPropertyPreview.d.ts +8 -0
  165. package/src/preview/property_previews/NumberPropertyPreview.d.ts +6 -0
  166. package/src/preview/property_previews/SkeletonPropertyComponent.d.ts +14 -0
  167. package/src/preview/property_previews/StringPropertyPreview.d.ts +6 -0
  168. package/src/preview/util.d.ts +7 -0
  169. package/src/types/analytics.d.ts +1 -0
  170. package/src/types/appcheck.d.ts +26 -0
  171. package/src/types/auth.d.ts +40 -0
  172. package/src/types/collections.d.ts +451 -0
  173. package/src/types/datasource.d.ts +262 -0
  174. package/src/types/dialogs_controller.d.ts +32 -0
  175. package/src/types/entities.d.ts +57 -0
  176. package/src/types/entity_actions.d.ts +35 -0
  177. package/src/types/entity_callbacks.d.ts +171 -0
  178. package/src/types/entity_link_builder.d.ts +7 -0
  179. package/src/types/export_import.d.ts +21 -0
  180. package/src/types/fields.d.ts +181 -0
  181. package/src/types/firecms.d.ts +151 -0
  182. package/src/types/firecms_context.d.ts +110 -0
  183. package/src/types/index.d.ts +26 -0
  184. package/src/types/local_config_persistence.d.ts +21 -0
  185. package/src/types/locales.d.ts +4 -0
  186. package/src/types/modify_collections.d.ts +5 -0
  187. package/src/types/navigation.d.ts +178 -0
  188. package/src/types/permissions.d.ts +63 -0
  189. package/src/types/plugins.d.ts +179 -0
  190. package/src/types/properties.d.ts +681 -0
  191. package/src/types/property_config.d.ts +42 -0
  192. package/src/types/resolved_entities.d.ts +98 -0
  193. package/src/types/side_dialogs_controller.d.ts +57 -0
  194. package/src/types/side_entity_controller.d.ts +83 -0
  195. package/src/types/storage.d.ts +82 -0
  196. package/src/types/user.d.ts +36 -0
  197. package/src/util/arrays.d.ts +1 -0
  198. package/src/util/builders.d.ts +64 -0
  199. package/src/util/chip_utils.d.ts +3 -0
  200. package/src/util/collections.d.ts +3 -0
  201. package/src/util/common.d.ts +2 -0
  202. package/src/util/dates.d.ts +1 -0
  203. package/src/util/entities.d.ts +28 -0
  204. package/src/util/enums.d.ts +7 -0
  205. package/src/util/flatten_object.d.ts +3 -0
  206. package/src/util/hash.d.ts +1 -0
  207. package/src/util/icons.d.ts +4 -0
  208. package/src/util/index.d.ts +20 -0
  209. package/src/util/join_collections.d.ts +9 -0
  210. package/src/util/make_properties_editable.d.ts +3 -0
  211. package/src/util/navigation_from_path.d.ts +24 -0
  212. package/src/util/navigation_utils.d.ts +20 -0
  213. package/src/util/objects.d.ts +10 -0
  214. package/src/util/parent_references_from_path.d.ts +6 -0
  215. package/src/util/paths.d.ts +14 -0
  216. package/src/util/permissions.d.ts +5 -0
  217. package/src/util/plurals.d.ts +18 -0
  218. package/src/util/property_utils.d.ts +23 -0
  219. package/src/util/references.d.ts +2 -0
  220. package/src/util/regexp.d.ts +7 -0
  221. package/src/util/resolutions.d.ts +64 -0
  222. package/src/util/storage.d.ts +3 -0
  223. package/src/util/strings.d.ts +6 -0
  224. package/src/util/useDebounce.d.ts +1 -0
  225. package/src/util/useStorageUploadController.d.ts +36 -0
@@ -0,0 +1,42 @@
1
+ import React from "react";
2
+ import { CMSType, PropertyOrBuilder } from "./properties";
3
+ /**
4
+ * This is the configuration object for a property.
5
+ * These configs are generated by default for the properties defined in your
6
+ * collections' configuration, but you can define your own to be used.
7
+ */
8
+ export type PropertyConfig<T extends CMSType = any> = {
9
+ /**
10
+ * Key used to identify this property config.
11
+ */
12
+ key: string;
13
+ /**
14
+ * Name of this field type.
15
+ * This is not the name of the property.
16
+ */
17
+ name: string;
18
+ /**
19
+ * Default config for the property.
20
+ * This property or builder will be used as the base values for the resulting property.
21
+ * You can also use a builder function to generate the base property.
22
+ * You can use a builder function to generate the property based on the values or the path.
23
+ * You can also define a custom Field as a React component to be used for this property.
24
+ */
25
+ property: PropertyOrBuilder<T>;
26
+ /**
27
+ * Optional icon to be used in the field selector.
28
+ * Use a 24x24 component, in order not to break the layout.
29
+ * Any FireCMS icon can be used.
30
+ */
31
+ Icon?: React.ComponentType;
32
+ /**
33
+ * CSS color, used only in some plugins like the field selector.
34
+ * e.g. "#2d7ff9"
35
+ */
36
+ color?: string;
37
+ /**
38
+ * Description of this field type.
39
+ */
40
+ description?: string;
41
+ };
42
+ export type FieldConfigId = "text_field" | "multiline" | "markdown" | "url" | "email" | "select" | "multi_select" | "number_input" | "number_select" | "multi_number_select" | "file_upload" | "multi_file_upload" | "group" | "key_value" | "reference" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
@@ -0,0 +1,98 @@
1
+ import { ArrayProperty, BooleanProperty, CMSType, DateProperty, EnumValueConfig, GeopointProperty, MapProperty, NumberProperty, ReferenceProperty, StringProperty } from "./properties";
2
+ import { EntityReference, GeoPoint } from "./entities";
3
+ import { EntityCollection } from "./collections";
4
+ /**
5
+ * This is the same entity collection you define, only all the property builders
6
+ * are resolved to regular `Property` objects.
7
+ * @group Models
8
+ */
9
+ export type ResolvedEntityCollection<M extends Record<string, any> = any> = Omit<EntityCollection<M>, "properties"> & {
10
+ properties: ResolvedProperties<M>;
11
+ originalCollection: EntityCollection<M>;
12
+ editable?: boolean;
13
+ };
14
+ /**
15
+ * @group Entity properties
16
+ */
17
+ export type ResolvedProperty<T extends CMSType = CMSType> = T extends string ? ResolvedStringProperty : T extends number ? ResolvedNumberProperty : T extends boolean ? ResolvedBooleanProperty : T extends Date ? ResolvedTimestampProperty : T extends GeoPoint ? ResolvedGeopointProperty : T extends EntityReference ? ResolvedReferenceProperty : T extends CMSType[] ? ResolvedArrayProperty<T> : T extends Record<string, any> ? ResolvedMapProperty<T> : any;
18
+ /**
19
+ * @group Entity properties
20
+ */
21
+ export type ResolvedProperties<M extends Record<string, any> = any> = {
22
+ [k in keyof M]: ResolvedProperty<M[keyof M]>;
23
+ };
24
+ /**
25
+ * @group Entity properties
26
+ */
27
+ export type ResolvedStringProperty = Omit<StringProperty, "enumValues" | "dataType"> & {
28
+ dataType: "string";
29
+ resolved: true;
30
+ enumValues?: EnumValueConfig[];
31
+ fromBuilder: boolean;
32
+ };
33
+ /**
34
+ * @group Entity properties
35
+ */
36
+ export type ResolvedNumberProperty = Omit<NumberProperty, "enumValues" | "dataType"> & {
37
+ dataType: "number";
38
+ resolved: true;
39
+ enumValues?: EnumValueConfig[];
40
+ fromBuilder: boolean;
41
+ };
42
+ /**
43
+ * @group Entity properties
44
+ */
45
+ export type ResolvedBooleanProperty = Omit<BooleanProperty, "dataType"> & {
46
+ dataType: "boolean";
47
+ resolved: true;
48
+ fromBuilder: boolean;
49
+ };
50
+ /**
51
+ * @group Entity properties
52
+ */
53
+ export type ResolvedTimestampProperty = Omit<DateProperty, "dataType"> & {
54
+ dataType: "date";
55
+ resolved: true;
56
+ fromBuilder: boolean;
57
+ };
58
+ /**
59
+ * @group Entity properties
60
+ */
61
+ export type ResolvedGeopointProperty = Omit<GeopointProperty, "dataType"> & {
62
+ dataType: "geopoint";
63
+ resolved: true;
64
+ fromBuilder: boolean;
65
+ };
66
+ /**
67
+ * @group Entity properties
68
+ */
69
+ export type ResolvedReferenceProperty = Omit<ReferenceProperty, "dataType"> & {
70
+ dataType: "reference";
71
+ resolved: true;
72
+ fromBuilder: boolean;
73
+ };
74
+ /**
75
+ * @group Entity properties
76
+ */
77
+ export type ResolvedArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = CMSType> = Omit<ArrayProperty, "of" | "oneOf" | "dataType"> & {
78
+ dataType: "array";
79
+ resolved: true;
80
+ of?: ResolvedProperty<any> | ResolvedProperty<any>[];
81
+ oneOf?: {
82
+ properties: ResolvedProperties;
83
+ typeField?: string;
84
+ valueField?: string;
85
+ };
86
+ resolvedProperties: ResolvedProperty<any>[];
87
+ fromBuilder: boolean;
88
+ };
89
+ /**
90
+ * @group Entity properties
91
+ */
92
+ export type ResolvedMapProperty<T extends Record<string, any> = any> = Omit<MapProperty, "properties" | "dataType" | "propertiesOrder"> & {
93
+ dataType: "map";
94
+ resolved: true;
95
+ properties?: ResolvedProperties<T>;
96
+ propertiesOrder?: Extract<keyof T, string>[];
97
+ fromBuilder: boolean;
98
+ };
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Controller to open the side dialog
3
+ * @group Hooks and utilities
4
+ */
5
+ export interface SideDialogsController {
6
+ /**
7
+ * Close the last panel
8
+ */
9
+ close: () => void;
10
+ /**
11
+ * List of side panels currently open
12
+ */
13
+ sidePanels: SideDialogPanelProps[];
14
+ /**
15
+ * Open one or multiple side panels
16
+ * @param props
17
+ */
18
+ open: (panelProps: SideDialogPanelProps | SideDialogPanelProps[]) => void;
19
+ /**
20
+ * Replace the last open panel with the given one
21
+ * @param props
22
+ */
23
+ replace: (panelProps: SideDialogPanelProps | SideDialogPanelProps[]) => void;
24
+ }
25
+ /**
26
+ * Props used to open a side dialog
27
+ * @group Hooks and utilities
28
+ */
29
+ export interface SideDialogPanelProps {
30
+ /**
31
+ * A key that identifies this panel
32
+ */
33
+ key: string;
34
+ /**
35
+ * The component type that will be rendered
36
+ */
37
+ component: React.ReactNode;
38
+ /**
39
+ * Optional width of the panel
40
+ */
41
+ width?: string;
42
+ /**
43
+ * When open, change the URL to this path.
44
+ * Note that if you want to restore state from a URL you need to add the
45
+ * logic yourself by listening to URL updates, and probably call `open`.
46
+ */
47
+ urlPath?: string;
48
+ /**
49
+ * If the navigation stack is empty (you landed in the `urlPath` url), what
50
+ * url path to change to when the panel gets closed.
51
+ */
52
+ parentUrlPath?: string;
53
+ /**
54
+ * Callback when the panel is closed
55
+ */
56
+ onClose?: () => void;
57
+ }
@@ -0,0 +1,83 @@
1
+ import { EntityCollection } from "./collections";
2
+ import { ResolvedEntityCollection } from "./resolved_entities";
3
+ import { Entity } from "./entities";
4
+ /**
5
+ * Props used to open a side dialog
6
+ * @group Hooks and utilities
7
+ */
8
+ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
9
+ /**
10
+ * Absolute path of the entity
11
+ */
12
+ path: string;
13
+ /**
14
+ * ID of the entity, if not set, it means we are creating a new entity
15
+ */
16
+ entityId?: string;
17
+ /**
18
+ * Set this flag to true if you want to make a copy of an existing entity
19
+ */
20
+ copy?: boolean;
21
+ /**
22
+ * Open the entity with a selected sub-collection view. If the panel for this
23
+ * entity was already open, it is replaced.
24
+ */
25
+ selectedSubPath?: string;
26
+ /**
27
+ * Use this prop to override the width of the form view.
28
+ * e.g. "600px"
29
+ */
30
+ width?: number | string;
31
+ /**
32
+ * Collection representing the entities of this view.
33
+ * If you leave it blank it will be induced by your navigation
34
+ */
35
+ collection?: EntityCollection<M> | ResolvedEntityCollection<M>;
36
+ /**
37
+ * Should update the URL when opening the dialog.
38
+ * Consider that if the collection that you provide is not defined in the base
39
+ * config of your `FireCMS` component, you will not be able to recreate
40
+ * the state if copying the URL to a different window.
41
+ */
42
+ updateUrl?: boolean;
43
+ /**
44
+ * Callback when the entity is updated
45
+ * @param params
46
+ */
47
+ onUpdate?: (params: {
48
+ entity: Entity<any>;
49
+ }) => void;
50
+ /**
51
+ * Callback when the dialog is closed
52
+ */
53
+ onClose?: () => void;
54
+ /**
55
+ * Should this panel close when saving
56
+ */
57
+ closeOnSave?: boolean;
58
+ }
59
+ /**
60
+ * Controller to open the side dialog displaying entity forms
61
+ * @group Hooks and utilities
62
+ */
63
+ export interface SideEntityController {
64
+ /**
65
+ * Close the last panel
66
+ */
67
+ close: () => void;
68
+ /**
69
+ * Open a new entity sideDialog. By default, the collection and configuration
70
+ * of the view is fetched from the collections you have specified in the
71
+ * navigation.
72
+ * At least you need to pass the path of the entity you would like
73
+ * to edit. You can set an entityId if you would like to edit and existing one
74
+ * (or a new one with that id).
75
+ * @param props
76
+ */
77
+ open: <M extends Record<string, any> = any>(props: EntitySidePanelProps<M>) => void;
78
+ /**
79
+ * Replace the last open entity panel with the given one.
80
+ * @param props
81
+ */
82
+ replace: <M extends Record<string, any> = any>(props: EntitySidePanelProps<M>) => void;
83
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @group Models
3
+ */
4
+ export interface UploadFileProps {
5
+ file: File;
6
+ fileName?: string;
7
+ path?: string;
8
+ metadata?: any;
9
+ }
10
+ /**
11
+ * @group Models
12
+ */
13
+ export interface UploadFileResult {
14
+ /**
15
+ * Storage path including the file name where the file was uploaded.
16
+ */
17
+ path: string;
18
+ }
19
+ /**
20
+ * @group Models
21
+ */
22
+ export interface DownloadConfig {
23
+ /**
24
+ * Temporal url that can be used to download the file
25
+ */
26
+ url: string | null;
27
+ metadata?: DownloadMetadata;
28
+ fileNotFound?: boolean;
29
+ }
30
+ /**
31
+ * The full set of object metadata, including read-only properties.
32
+ * @public
33
+ */
34
+ export declare interface DownloadMetadata {
35
+ /**
36
+ * The bucket this object is contained in.
37
+ */
38
+ bucket: string;
39
+ /**
40
+ * The full path of this object.
41
+ */
42
+ fullPath: string;
43
+ /**
44
+ * The short name of this object, which is the last component of the full path.
45
+ * For example, if fullPath is 'full/path/image.png', name is 'image.png'.
46
+ */
47
+ name: string;
48
+ /**
49
+ * The size of this object, in bytes.
50
+ */
51
+ size: number;
52
+ /**
53
+ * Type of the uploaded file
54
+ * e.g. "image/jpeg"
55
+ */
56
+ contentType: string;
57
+ customMetadata: Record<string, unknown>;
58
+ }
59
+ /**
60
+ * @group Models
61
+ */
62
+ export interface StorageSource {
63
+ /**
64
+ * Upload a file, specifying a name and a path
65
+ * @param file
66
+ * @param fileName
67
+ * @param path
68
+ * @param metadata
69
+ */
70
+ uploadFile: ({ file, fileName, path, metadata }: UploadFileProps) => Promise<UploadFileResult>;
71
+ /**
72
+ * Convert a storage path or URL into a download configuration
73
+ * @param path
74
+ */
75
+ getDownloadURL: (pathOrUrl: string) => Promise<DownloadConfig>;
76
+ /**
77
+ * Get a file from a storage path.
78
+ * It returns null if the file does not exist.
79
+ * @param props
80
+ */
81
+ getFile: (path: string) => Promise<File | null>;
82
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * This interface represents a user.
3
+ * It has some of the same fields as a Firebase User.
4
+ * Note that in the default implementation, we simply take the Firebase user
5
+ * and use it as a FireCMS user, so that means that even if they are not mapped
6
+ * in this interface, it contains all the methods of the former, such as `delete`,
7
+ * `getIdToken`, etc.
8
+ *
9
+ * @group Models
10
+ */
11
+ export type User = {
12
+ /**
13
+ * The user's unique ID, scoped to the project.
14
+ */
15
+ readonly uid: string;
16
+ /**
17
+ * The display name of the user.
18
+ */
19
+ readonly displayName: string | null;
20
+ /**
21
+ * The email of the user.
22
+ */
23
+ readonly email: string | null;
24
+ /**
25
+ * The profile photo URL of the user.
26
+ */
27
+ readonly photoURL: string | null;
28
+ /**
29
+ * The provider used to authenticate the user.
30
+ */
31
+ readonly providerId: string;
32
+ /**
33
+ *
34
+ */
35
+ readonly isAnonymous: boolean;
36
+ };
@@ -0,0 +1 @@
1
+ export declare function toArray<T>(input?: T | T[]): T[];
@@ -0,0 +1,64 @@
1
+ import { AdditionalFieldDelegate, ArrayProperty, BooleanProperty, CMSType, DateProperty, EntityCallbacks, EntityCollection, EnumValueConfig, EnumValues, GeopointProperty, MapProperty, NumberProperty, PropertiesOrBuilders, PropertyBuilder, PropertyConfig, PropertyOrBuilder, ReferenceProperty, StringProperty, User } from "../types";
2
+ /**
3
+ * Identity function we use to defeat the type system of Typescript and build
4
+ * collection views with all its properties
5
+ * @param collection
6
+ * @group Builder
7
+ */
8
+ export declare function buildCollection<M extends Record<string, any> = any, UserType extends User = User>(collection: EntityCollection<M, UserType>): EntityCollection<M, UserType>;
9
+ /**
10
+ * Identity function we use to defeat the type system of Typescript and preserve
11
+ * the property keys.
12
+ * @param property
13
+ * @group Builder
14
+ */
15
+ export declare function buildProperty<T extends CMSType = CMSType, P extends PropertyOrBuilder<T> = PropertyOrBuilder<T>, M extends Record<string, any> = Record<string, any>>(property: P): P extends StringProperty ? StringProperty : P extends NumberProperty ? NumberProperty : P extends BooleanProperty ? BooleanProperty : P extends DateProperty ? DateProperty : P extends GeopointProperty ? GeopointProperty : P extends ReferenceProperty ? ReferenceProperty : P extends ArrayProperty ? ArrayProperty : P extends MapProperty ? MapProperty : P extends PropertyBuilder<T, M> ? PropertyBuilder<T, M> : never;
16
+ /**
17
+ * Identity function we use to defeat the type system of Typescript and preserve
18
+ * the properties keys.
19
+ * @param properties
20
+ * @group Builder
21
+ */
22
+ export declare function buildProperties<M extends Record<string, any>>(properties: PropertiesOrBuilders<M>): PropertiesOrBuilders<M>;
23
+ /**
24
+ * Identity function we use to defeat the type system of Typescript and preserve
25
+ * the properties keys.
26
+ * @param propertiesOrBuilder
27
+ * @group Builder
28
+ */
29
+ export declare function buildPropertiesOrBuilder<M extends Record<string, any>>(propertiesOrBuilder: PropertiesOrBuilders<M>): PropertiesOrBuilders<M>;
30
+ /**
31
+ * Identity function we use to defeat the type system of Typescript and preserve
32
+ * the properties keys.
33
+ * @param enumValues
34
+ * @group Builder
35
+ */
36
+ export declare function buildEnumValues(enumValues: EnumValues): EnumValues;
37
+ /**
38
+ * Identity function we use to defeat the type system of Typescript and preserve
39
+ * the properties keys.
40
+ * @param enumValueConfig
41
+ * @group Builder
42
+ */
43
+ export declare function buildEnumValueConfig(enumValueConfig: EnumValueConfig): EnumValueConfig;
44
+ /**
45
+ * Identity function we use to defeat the type system of Typescript and preserve
46
+ * the properties keys.
47
+ * @param callbacks
48
+ * @group Builder
49
+ */
50
+ export declare function buildEntityCallbacks<M extends Record<string, any> = any>(callbacks: EntityCallbacks<M>): EntityCallbacks<M>;
51
+ /**
52
+ * Identity function we use to defeat the type system of Typescript and build
53
+ * additional field delegates views with all its properties
54
+ * @param additionalFieldDelegate
55
+ * @group Builder
56
+ */
57
+ export declare function buildAdditionalFieldDelegate<M extends Record<string, any>, UserType extends User = User>(additionalFieldDelegate: AdditionalFieldDelegate<M, UserType>): AdditionalFieldDelegate<M, UserType>;
58
+ /**
59
+ * Identity function we use to defeat the type system of Typescript and build
60
+ * additional field delegates views with all its properties
61
+ * @param propertyConfig
62
+ * @group Builder
63
+ */
64
+ export declare function buildFieldConfig<T extends CMSType = CMSType>(propertyConfig: PropertyConfig<T>): PropertyConfig<T>;
@@ -0,0 +1,3 @@
1
+ import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
2
+ export declare function getColorSchemeForSeed(seed: string): ChipColorScheme;
3
+ export declare function getColorSchemeForKey(key: ChipColorKey): ChipColorScheme;
@@ -0,0 +1,3 @@
1
+ import { DefaultSelectedViewBuilder, DefaultSelectedViewParams, PropertiesOrBuilders } from "../types";
2
+ export declare function sortProperties<M extends Record<string, any>>(properties: PropertiesOrBuilders<M>, propertiesOrder?: (keyof M)[]): PropertiesOrBuilders<M>;
3
+ export declare function resolveDefaultSelectedView(defaultSelectedView: string | DefaultSelectedViewBuilder | undefined, params: DefaultSelectedViewParams): string | undefined;
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_ONE_OF_TYPE = "type";
2
+ export declare const DEFAULT_ONE_OF_VALUE = "value";
@@ -0,0 +1 @@
1
+ export declare const defaultDateFormat = "MMMM dd, yyyy, HH:mm:ss";
@@ -0,0 +1,28 @@
1
+ import { CMSType, DataType, Entity, EntityReference, EntityStatus, EntityValues, PropertiesOrBuilders, Property, PropertyBuilder, PropertyOrBuilder, ResolvedProperties, ResolvedProperty } from "../types";
2
+ export declare function isReadOnly(property: Property | ResolvedProperty): boolean;
3
+ export declare function isHidden(property: Property | ResolvedProperty): boolean;
4
+ export declare function isPropertyBuilder<T extends CMSType, M extends Record<string, any>>(propertyOrBuilder?: PropertyOrBuilder<T, M> | Property<T> | ResolvedProperty<T>): propertyOrBuilder is PropertyBuilder<T, M>;
5
+ export declare function getDefaultValuesFor<M extends Record<string, any>>(properties: PropertiesOrBuilders<M> | ResolvedProperties<M>): Partial<EntityValues<M>>;
6
+ export declare function getDefaultValueFor(property: PropertyOrBuilder): {} | null | undefined;
7
+ export declare function getDefaultValueForDataType(dataType: DataType): {} | null;
8
+ /**
9
+ * Update the automatic values in an entity before save
10
+ * @group Datasource
11
+ */
12
+ export declare function updateDateAutoValues<M extends Record<string, any>>({ inputValues, properties, status, timestampNowValue, setDateToMidnight }: {
13
+ inputValues: Partial<EntityValues<M>>;
14
+ properties: ResolvedProperties<M>;
15
+ status: EntityStatus;
16
+ timestampNowValue: any;
17
+ setDateToMidnight: (input?: any) => any | undefined;
18
+ }): EntityValues<M>;
19
+ /**
20
+ * Add missing required fields, expected in the collection, to the values of an entity
21
+ * @param values
22
+ * @param properties
23
+ * @group Datasource
24
+ */
25
+ export declare function sanitizeData<M extends Record<string, any>>(values: EntityValues<M>, properties: ResolvedProperties<M>): any;
26
+ export declare function getReferenceFrom<M extends Record<string, any>>(entity: Entity<M>): EntityReference<M>;
27
+ export declare function traverseValuesProperties<M extends Record<string, any>>(inputValues: Partial<EntityValues<M>>, properties: ResolvedProperties<M>, operation: (value: any, property: Property) => any): EntityValues<M> | undefined;
28
+ export declare function traverseValueProperty(inputValue: any, property: Property, operation: (value: any, property: Property) => any): any;
@@ -0,0 +1,7 @@
1
+ import { EnumValueConfig, EnumValues } from "../types";
2
+ import { ChipColorScheme } from "@firecms/ui";
3
+ export declare function enumToObjectEntries(enumValues: EnumValues): EnumValueConfig[];
4
+ export declare function getLabelOrConfigFrom(enumValues: EnumValueConfig[], key?: string | number): EnumValueConfig | undefined;
5
+ export declare function getColorScheme(enumValues: EnumValueConfig[], key: string | number): ChipColorScheme | undefined;
6
+ export declare function isEnumValueDisabled(labelOrConfig?: string | EnumValueConfig): boolean | undefined;
7
+ export declare function buildEnumLabel(labelOrConfig?: string | EnumValueConfig): string | undefined;
@@ -0,0 +1,3 @@
1
+ export declare function flattenObject(obj: any, parentKey?: string): any;
2
+ export type ArrayValuesCount = Record<string, number>;
3
+ export declare function getArrayValuesCount(array: any[]): ArrayValuesCount;
@@ -0,0 +1 @@
1
+ export declare function hashString(str: string): number;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { CMSView, EntityCollection } from "../types";
3
+ export declare function getIcon(iconKey?: string, className?: string): React.ReactElement | undefined;
4
+ export declare function getIconForView(collectionOrView: EntityCollection | CMSView, className?: string): React.ReactElement;
@@ -0,0 +1,20 @@
1
+ export * from "./collections";
2
+ export * from "./entities";
3
+ export * from "./strings";
4
+ export * from "./dates";
5
+ export * from "./enums";
6
+ export * from "./objects";
7
+ export * from "./paths";
8
+ export * from "./regexp";
9
+ export * from "./navigation_utils";
10
+ export * from "./useDebounce";
11
+ export * from "./property_utils";
12
+ export * from "./resolutions";
13
+ export * from "./permissions";
14
+ export * from "./icons";
15
+ export * from "./plurals";
16
+ export * from "./references";
17
+ export * from "./flatten_object";
18
+ export * from "./make_properties_editable";
19
+ export * from "./join_collections";
20
+ export * from "./builders";
@@ -0,0 +1,9 @@
1
+ import { EntityCollection, ModifyCollectionProps } from "../types";
2
+ /**
3
+ *
4
+ */
5
+ export declare function joinCollectionLists(targetCollections: EntityCollection[], sourceCollections: EntityCollection[] | undefined, parentPaths?: string[], modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void): EntityCollection[];
6
+ /**
7
+ *
8
+ */
9
+ export declare function mergeCollection(target: EntityCollection, source: EntityCollection, parentPaths?: string[], modifyCollection?: (props: ModifyCollectionProps) => EntityCollection | void): EntityCollection;
@@ -0,0 +1,3 @@
1
+ import { Properties, PropertiesOrBuilders } from "../types";
2
+ export declare function makePropertiesEditable(properties: Properties): Properties<any>;
3
+ export declare function makePropertiesNonEditable(properties: PropertiesOrBuilders): PropertiesOrBuilders;
@@ -0,0 +1,24 @@
1
+ import { EntityCollection, EntityCustomView } from "../types";
2
+ export type NavigationViewInternal<M extends Record<string, any> = any> = NavigationViewEntityInternal<M> | NavigationViewCollectionInternal<M> | NavigationViewEntityCustomInternal<M>;
3
+ export interface NavigationViewEntityInternal<M extends Record<string, any>> {
4
+ type: "entity";
5
+ entityId: string;
6
+ path: string;
7
+ parentCollection: EntityCollection<M>;
8
+ }
9
+ export interface NavigationViewCollectionInternal<M extends Record<string, any>> {
10
+ type: "collection";
11
+ path: string;
12
+ collection: EntityCollection<M>;
13
+ }
14
+ export interface NavigationViewEntityCustomInternal<M extends Record<string, any>> {
15
+ type: "custom_view";
16
+ path: string;
17
+ view: EntityCustomView<M>;
18
+ }
19
+ export declare function getNavigationEntriesFromPathInternal(props: {
20
+ path: string;
21
+ collections: EntityCollection[] | undefined;
22
+ currentFullPath?: string;
23
+ contextEntityViews?: EntityCustomView<any>[];
24
+ }): NavigationViewInternal[];
@@ -0,0 +1,20 @@
1
+ import { EntityCollection } from "../types";
2
+ export declare function removeInitialAndTrailingSlashes(s: string): string;
3
+ export declare function removeInitialSlash(s: string): string;
4
+ export declare function removeTrailingSlash(s: string): string;
5
+ export declare function addInitialSlash(s: string): string;
6
+ export declare function getLastSegment(path: string): string;
7
+ export declare function resolveCollectionPathIds(path: string, allCollections: EntityCollection[]): string;
8
+ /**
9
+ * Find the corresponding view at any depth for a given path.
10
+ * Note that path or segments of the paths can be collection aliases.
11
+ * @param pathOrAlias
12
+ * @param collections
13
+ */
14
+ export declare function getCollectionByPathOrId(pathOrAlias: string, collections: EntityCollection[]): EntityCollection | undefined;
15
+ /**
16
+ * Get the subcollection combinations from a path:
17
+ * "sites/es/locales" => ["sites/es/locales", "sites"]
18
+ * @param subpaths
19
+ */
20
+ export declare function getCollectionPathsCombinations(subpaths: string[]): string[];
@@ -0,0 +1,10 @@
1
+ export declare const pick: <T>(obj: T, ...args: any[]) => T;
2
+ export declare function isObject(item: any): any;
3
+ export declare function mergeDeep<T extends object>(target: T, source: any): T;
4
+ export declare function getValueInPath(o: object | undefined, path: string): any;
5
+ export declare function removeInPath(o: object, path: string): object | undefined;
6
+ export declare function removeFunctions(o: object | undefined): any;
7
+ export declare function getHashValue<T>(v: T): any;
8
+ export declare function removeUndefined(value: any, removeEmptyStrings?: boolean): any;
9
+ export declare function isEmptyObject(obj: object): boolean;
10
+ export declare function removePropsIfExisting(source: any, comparison: any): any;
@@ -0,0 +1,6 @@
1
+ import { EntityCollection, EntityReference } from "../types";
2
+ export declare function getParentReferencesFromPath(props: {
3
+ path: string;
4
+ collections: EntityCollection[] | undefined;
5
+ currentFullPath?: string;
6
+ }): EntityReference[];
@@ -0,0 +1,14 @@
1
+ export declare const COLLECTION_PATH_SEPARATOR = "::";
2
+ /**
3
+ * Remove the entity ids from a given path
4
+ * `products/B44RG6APH/locales` => `products::locales`
5
+ * @param path
6
+ */
7
+ export declare function stripCollectionPath(path: string): string;
8
+ export declare function segmentsToStrippedPath(paths: string[]): string;
9
+ /**
10
+ * Extract the collection path routes
11
+ * `products/B44RG6APH/locales` => [`products`, `locales`]
12
+ * @param path
13
+ */
14
+ export declare function fullPathToCollectionSegments(path: string): string[];