@firecms/core 3.0.0-canary.98 → 3.0.0-rc.1

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 (349) hide show
  1. package/README.md +2 -2
  2. package/dist/app/Drawer.d.ts +0 -1
  3. package/dist/app/Scaffold.d.ts +4 -0
  4. package/dist/components/ArrayContainer.d.ts +31 -12
  5. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  6. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +3 -1
  7. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  8. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +17 -3
  9. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
  10. package/dist/components/EntityCollectionTable/index.d.ts +1 -1
  11. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +6 -3
  12. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
  13. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  14. package/dist/components/EntityJsonPreview.d.ts +3 -0
  15. package/dist/components/EntityPreview.d.ts +8 -6
  16. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  17. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  18. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  19. package/dist/components/HomePage/NavigationCardBinding.d.ts +3 -2
  20. package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
  21. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  22. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  23. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  24. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  25. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
  26. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  27. package/dist/components/VirtualTable/VirtualTableProps.d.ts +11 -2
  28. package/dist/components/common/default_entity_actions.d.ts +0 -2
  29. package/dist/components/common/index.d.ts +1 -1
  30. package/dist/components/common/useColumnsIds.d.ts +1 -0
  31. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -2
  32. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  33. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  34. package/dist/components/index.d.ts +3 -1
  35. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  36. package/dist/core/DefaultAppBar.d.ts +8 -2
  37. package/dist/core/DrawerNavigationItem.d.ts +2 -1
  38. package/dist/core/EntityEditView.d.ts +40 -22
  39. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  40. package/dist/core/FireCMS.d.ts +2 -2
  41. package/dist/core/FireCMSRouter.d.ts +4 -0
  42. package/dist/core/NavigationRoutes.d.ts +0 -1
  43. package/dist/core/SideDialogs.d.ts +4 -2
  44. package/dist/core/field_configs.d.ts +1 -1
  45. package/dist/core/index.d.ts +2 -1
  46. package/dist/form/EntityForm.d.ts +50 -0
  47. package/dist/form/EntityFormActions.d.ts +21 -0
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/FormEntry.d.ts +6 -0
  50. package/dist/form/components/FormLayout.d.ts +5 -0
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/index.d.ts +3 -1
  54. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  60. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  61. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  62. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +4 -10
  67. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  68. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  69. package/dist/form/index.d.ts +17 -16
  70. package/dist/form/useClearRestoreValue.d.ts +2 -2
  71. package/dist/hooks/data/delete.d.ts +4 -4
  72. package/dist/hooks/data/save.d.ts +3 -3
  73. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  74. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  75. package/dist/hooks/useAuthController.d.ts +1 -1
  76. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  77. package/dist/hooks/useBuildNavigationController.d.ts +57 -12
  78. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  79. package/dist/hooks/useModeController.d.ts +1 -2
  80. package/dist/hooks/useProjectLog.d.ts +7 -1
  81. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  82. package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
  83. package/dist/index.es.js +20108 -14471
  84. package/dist/index.es.js.map +1 -1
  85. package/dist/index.umd.js +20039 -14407
  86. package/dist/index.umd.js.map +1 -1
  87. package/dist/internal/useBuildDataSource.d.ts +3 -2
  88. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  89. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  90. package/dist/preview/PropertyPreviewProps.d.ts +1 -1
  91. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  92. package/dist/preview/components/ReferencePreview.d.ts +2 -2
  93. package/dist/preview/util.d.ts +3 -3
  94. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  95. package/dist/routes/FireCMSRoute.d.ts +1 -0
  96. package/dist/routes/HomePageRoute.d.ts +3 -0
  97. package/dist/types/analytics.d.ts +1 -1
  98. package/dist/types/auth.d.ts +7 -9
  99. package/dist/types/collections.d.ts +86 -25
  100. package/dist/types/customization_controller.d.ts +8 -0
  101. package/dist/types/datasource.d.ts +19 -17
  102. package/dist/types/dialogs_controller.d.ts +7 -3
  103. package/dist/types/entities.d.ts +2 -1
  104. package/dist/types/entity_actions.d.ts +58 -8
  105. package/dist/types/entity_callbacks.d.ts +16 -16
  106. package/dist/types/entity_overrides.d.ts +2 -2
  107. package/dist/types/export_import.d.ts +4 -4
  108. package/dist/types/fields.d.ts +43 -17
  109. package/dist/types/firecms.d.ts +16 -3
  110. package/dist/types/firecms_context.d.ts +1 -1
  111. package/dist/types/navigation.d.ts +60 -17
  112. package/dist/types/permissions.d.ts +4 -4
  113. package/dist/types/plugins.d.ts +42 -9
  114. package/dist/types/properties.d.ts +65 -22
  115. package/dist/types/property_config.d.ts +1 -3
  116. package/dist/types/roles.d.ts +3 -0
  117. package/dist/types/side_dialogs_controller.d.ts +10 -0
  118. package/dist/types/side_entity_controller.d.ts +14 -1
  119. package/dist/types/storage.d.ts +75 -0
  120. package/dist/types/user.d.ts +1 -0
  121. package/dist/util/builders.d.ts +3 -3
  122. package/dist/util/callbacks.d.ts +2 -0
  123. package/dist/util/createFormexStub.d.ts +2 -0
  124. package/dist/util/entities.d.ts +2 -2
  125. package/dist/util/entity_actions.d.ts +2 -0
  126. package/dist/util/entity_cache.d.ts +23 -0
  127. package/dist/util/icon_synonyms.d.ts +0 -1
  128. package/dist/util/icons.d.ts +5 -2
  129. package/dist/util/index.d.ts +3 -0
  130. package/dist/util/navigation_from_path.d.ts +10 -1
  131. package/dist/util/navigation_utils.d.ts +13 -1
  132. package/dist/util/objects.d.ts +2 -1
  133. package/dist/util/permissions.d.ts +4 -4
  134. package/dist/util/property_utils.d.ts +4 -4
  135. package/dist/util/references.d.ts +2 -2
  136. package/dist/util/resolutions.d.ts +30 -6
  137. package/dist/util/storage.d.ts +1 -1
  138. package/dist/util/useStorageUploadController.d.ts +2 -2
  139. package/package.json +133 -125
  140. package/src/app/Drawer.tsx +0 -1
  141. package/src/app/Scaffold.tsx +33 -29
  142. package/src/components/ArrayContainer.tsx +447 -229
  143. package/src/components/CircularProgressCenter.tsx +1 -1
  144. package/src/components/ClearFilterSortButton.tsx +1 -1
  145. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
  146. package/src/components/DeleteEntityDialog.tsx +13 -20
  147. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -25
  148. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +23 -17
  149. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +20 -3
  150. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +35 -9
  151. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -16
  152. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +6 -12
  153. package/src/components/EntityCollectionTable/index.tsx +1 -1
  154. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +6 -6
  155. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +35 -26
  156. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  157. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +132 -101
  158. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  159. package/src/components/EntityCollectionView/EntityCollectionView.tsx +178 -85
  160. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
  161. package/src/components/EntityCollectionView/useSelectionController.tsx +5 -4
  162. package/src/components/EntityCollectionView/utils.ts +19 -0
  163. package/src/components/EntityJsonPreview.tsx +66 -0
  164. package/src/components/EntityPreview.tsx +75 -57
  165. package/src/components/EntityView.tsx +8 -5
  166. package/src/components/ErrorView.tsx +3 -3
  167. package/src/components/FireCMSLogo.tsx +7 -51
  168. package/src/components/HomePage/DefaultHomePage.tsx +522 -160
  169. package/src/components/HomePage/FavouritesView.tsx +9 -14
  170. package/src/components/HomePage/HomePageDnD.tsx +642 -0
  171. package/src/components/HomePage/NavigationCard.tsx +47 -38
  172. package/src/components/HomePage/NavigationCardBinding.tsx +16 -15
  173. package/src/components/HomePage/NavigationGroup.tsx +144 -30
  174. package/src/components/HomePage/RenameGroupDialog.tsx +117 -0
  175. package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
  176. package/src/components/NotFoundPage.tsx +2 -2
  177. package/src/components/PropertyConfigBadge.tsx +9 -3
  178. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  179. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -13
  180. package/src/components/SearchIconsView.tsx +2 -2
  181. package/src/components/SelectableTable/SelectableTable.tsx +154 -142
  182. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +4 -2
  183. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +10 -8
  184. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +59 -10
  185. package/src/components/UnsavedChangesDialog.tsx +46 -0
  186. package/src/components/VirtualTable/VirtualTable.tsx +65 -44
  187. package/src/components/VirtualTable/VirtualTableCell.tsx +0 -8
  188. package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
  189. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
  190. package/src/components/VirtualTable/VirtualTableProps.tsx +12 -2
  191. package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
  192. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  193. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  194. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  195. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  196. package/src/components/common/default_entity_actions.tsx +62 -42
  197. package/src/components/common/index.ts +1 -1
  198. package/src/components/common/useColumnsIds.tsx +1 -1
  199. package/src/components/common/useDataSourceTableController.tsx +420 -0
  200. package/src/components/common/useDebouncedCallback.tsx +20 -0
  201. package/src/components/common/useScrollRestoration.tsx +68 -0
  202. package/src/components/common/useTableSearchHelper.ts +1 -0
  203. package/src/components/index.tsx +4 -1
  204. package/src/contexts/BreacrumbsContext.tsx +38 -0
  205. package/src/contexts/DialogsProvider.tsx +3 -2
  206. package/src/contexts/ModeController.tsx +1 -3
  207. package/src/contexts/SnackbarProvider.tsx +2 -0
  208. package/src/core/DefaultAppBar.tsx +124 -85
  209. package/src/core/DefaultDrawer.tsx +30 -22
  210. package/src/core/DrawerNavigationItem.tsx +32 -28
  211. package/src/core/EntityEditView.tsx +388 -995
  212. package/src/core/EntityEditViewFormActions.tsx +329 -0
  213. package/src/core/EntitySidePanel.tsx +88 -20
  214. package/src/core/FireCMS.tsx +46 -25
  215. package/src/core/FireCMSRouter.tsx +17 -0
  216. package/src/core/NavigationRoutes.tsx +23 -32
  217. package/src/core/SideDialogs.tsx +22 -12
  218. package/src/core/field_configs.tsx +24 -10
  219. package/src/core/index.tsx +4 -2
  220. package/src/form/EntityForm.tsx +814 -0
  221. package/src/form/EntityFormActions.tsx +211 -0
  222. package/src/form/PropertyFieldBinding.tsx +55 -41
  223. package/src/form/components/CustomIdField.tsx +9 -3
  224. package/src/form/components/FieldHelperText.tsx +1 -1
  225. package/src/form/components/FormEntry.tsx +22 -0
  226. package/src/form/components/FormLayout.tsx +16 -0
  227. package/src/form/components/LabelWithIcon.tsx +30 -19
  228. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  229. package/src/form/components/StorageItemPreview.tsx +5 -4
  230. package/src/form/components/StorageUploadProgress.tsx +2 -3
  231. package/src/form/components/index.tsx +3 -1
  232. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -18
  233. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -36
  234. package/src/form/field_bindings/BlockFieldBinding.tsx +55 -33
  235. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  236. package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -15
  237. package/src/form/field_bindings/MapFieldBinding.tsx +72 -62
  238. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
  239. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  240. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +10 -8
  241. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  242. package/src/form/field_bindings/ReferenceFieldBinding.tsx +28 -19
  243. package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -32
  244. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -13
  245. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +247 -168
  246. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  247. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  248. package/src/form/index.tsx +17 -37
  249. package/src/form/useClearRestoreValue.tsx +2 -2
  250. package/src/form/validation.ts +12 -6
  251. package/src/hooks/data/delete.ts +6 -5
  252. package/src/hooks/data/save.ts +26 -35
  253. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  254. package/src/hooks/data/useDataSource.tsx +10 -2
  255. package/src/hooks/data/useEntityFetch.tsx +10 -6
  256. package/src/hooks/useAuthController.tsx +1 -1
  257. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  258. package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
  259. package/src/hooks/useBuildModeController.tsx +15 -28
  260. package/src/hooks/useBuildNavigationController.tsx +386 -124
  261. package/src/hooks/useFireCMSContext.tsx +3 -33
  262. package/src/hooks/useLargeLayout.tsx +0 -35
  263. package/src/hooks/useModeController.tsx +1 -2
  264. package/src/hooks/useProjectLog.tsx +16 -5
  265. package/src/hooks/useResolvedNavigationFrom.tsx +9 -11
  266. package/src/hooks/useValidateAuthenticator.tsx +3 -3
  267. package/src/internal/useBuildDataSource.ts +67 -80
  268. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  269. package/src/internal/useBuildSideEntityController.tsx +149 -86
  270. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  271. package/src/preview/PropertyPreview.tsx +28 -12
  272. package/src/preview/PropertyPreviewProps.tsx +1 -1
  273. package/src/preview/components/BooleanPreview.tsx +1 -1
  274. package/src/preview/components/EmptyValue.tsx +1 -1
  275. package/src/preview/components/EnumValuesChip.tsx +1 -1
  276. package/src/preview/components/ImagePreview.tsx +10 -9
  277. package/src/preview/components/ReferencePreview.tsx +6 -16
  278. package/src/preview/components/UrlComponentPreview.tsx +20 -21
  279. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -5
  280. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -4
  281. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -3
  282. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
  283. package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -4
  284. package/src/preview/property_previews/ArrayPropertyPreview.tsx +5 -3
  285. package/src/preview/property_previews/MapPropertyPreview.tsx +7 -6
  286. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  287. package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
  288. package/src/preview/util.ts +10 -10
  289. package/src/routes/CustomCMSRoute.tsx +21 -0
  290. package/src/routes/FireCMSRoute.tsx +246 -0
  291. package/src/routes/HomePageRoute.tsx +17 -0
  292. package/src/types/analytics.ts +3 -0
  293. package/src/types/auth.tsx +8 -12
  294. package/src/types/collections.ts +101 -28
  295. package/src/types/customization_controller.tsx +9 -0
  296. package/src/types/datasource.ts +21 -20
  297. package/src/types/dialogs_controller.tsx +7 -3
  298. package/src/types/entities.ts +3 -1
  299. package/src/types/entity_actions.tsx +71 -8
  300. package/src/types/entity_callbacks.ts +18 -18
  301. package/src/types/entity_overrides.tsx +2 -2
  302. package/src/types/export_import.ts +4 -4
  303. package/src/types/fields.tsx +52 -19
  304. package/src/types/firecms.tsx +18 -4
  305. package/src/types/firecms_context.tsx +1 -1
  306. package/src/types/navigation.ts +76 -22
  307. package/src/types/permissions.ts +5 -5
  308. package/src/types/plugins.tsx +50 -9
  309. package/src/types/properties.ts +74 -22
  310. package/src/types/property_config.tsx +1 -2
  311. package/src/types/roles.ts +3 -0
  312. package/src/types/side_dialogs_controller.tsx +15 -0
  313. package/src/types/side_entity_controller.tsx +16 -1
  314. package/src/types/storage.ts +82 -0
  315. package/src/types/user.ts +2 -0
  316. package/src/util/builders.ts +10 -8
  317. package/src/util/callbacks.ts +119 -0
  318. package/src/util/createFormexStub.tsx +62 -0
  319. package/src/util/entities.ts +5 -3
  320. package/src/util/entity_actions.ts +28 -0
  321. package/src/util/entity_cache.ts +204 -0
  322. package/src/util/icon_list.ts +1 -1
  323. package/src/util/icon_synonyms.ts +0 -1
  324. package/src/util/icons.tsx +36 -11
  325. package/src/util/index.ts +3 -0
  326. package/src/util/join_collections.ts +9 -2
  327. package/src/util/make_properties_editable.ts +13 -5
  328. package/src/util/navigation_from_path.ts +33 -12
  329. package/src/util/navigation_utils.ts +135 -19
  330. package/src/util/objects.ts +74 -14
  331. package/src/util/parent_references_from_path.ts +3 -3
  332. package/src/util/permissions.ts +8 -8
  333. package/src/util/property_utils.tsx +17 -6
  334. package/src/util/references.ts +19 -8
  335. package/src/util/resolutions.ts +93 -24
  336. package/src/util/storage.ts +6 -2
  337. package/src/util/useStorageUploadController.tsx +74 -29
  338. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  339. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  340. package/dist/form/PropertiesForm.d.ts +0 -8
  341. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  344. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
  345. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
  346. package/src/form/PropertiesForm.tsx +0 -81
  347. package/src/form/components/FormikArrayContainer.tsx +0 -44
  348. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  349. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -6,6 +6,7 @@ import { FieldProps, FormContext } from "./fields";
6
6
  import { CMSType, Property } from "./properties";
7
7
  import { EntityStatus } from "./entities";
8
8
  import { ResolvedProperty } from "./resolved_entities";
9
+ import { NavigationGroupMapping } from "./navigation";
9
10
  /**
10
11
  * Interface used to define plugins for FireCMS.
11
12
  * NOTE: This is a work in progress and the API is not stable yet.
@@ -70,6 +71,17 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
70
71
  title: string;
71
72
  children: React.ReactNode;
72
73
  };
74
+ /**
75
+ * Allow reordering with drag and drop of the collections in the home page.
76
+ */
77
+ allowDragAndDrop?: boolean;
78
+ navigationEntries?: NavigationGroupMapping[];
79
+ /**
80
+ * This method will be called when the entries are updated in the home page.
81
+ * group => navigationEntriesOrder (path)
82
+ * @param entries
83
+ */
84
+ onNavigationEntriesUpdate?: (entries: NavigationGroupMapping[]) => void;
73
85
  };
74
86
  collectionView?: {
75
87
  /**
@@ -127,10 +139,29 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
127
139
  Component: React.ComponentType<PropsWithChildren<FORM_PROPS & PluginFormActionProps<any, EC>>>;
128
140
  props?: FORM_PROPS;
129
141
  };
142
+ /**
143
+ * Add custom actions to the default ones ("Save", "Discard"...)
144
+ */
130
145
  Actions?: React.ComponentType<PluginFormActionProps<any, EC>>;
146
+ /**
147
+ * Add custom actions to the top of the form
148
+ */
149
+ ActionsTop?: React.ComponentType<PluginFormActionProps<any, EC>>;
131
150
  fieldBuilder?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T, any, EC>) => React.ComponentType<FieldProps<T>> | null;
132
151
  fieldBuilderEnabled?: <T extends CMSType = CMSType>(props: PluginFieldBuilderParams<T>) => boolean;
133
152
  };
153
+ collection?: {
154
+ /**
155
+ * Use this method to modify a single collection before it is rendered.
156
+ * @param collection
157
+ */
158
+ modifyCollection?: (collection: EntityCollection) => EntityCollection;
159
+ /**
160
+ * Use this method to modify, add or remove collections.
161
+ * @param collections
162
+ */
163
+ injectCollections?: (collections: EntityCollection[]) => EntityCollection[];
164
+ };
134
165
  };
135
166
  /**
136
167
  * Props passed to the {@link FireCMSPlugin.homePage.CollectionActions} method.
@@ -138,7 +169,7 @@ export type FireCMSPlugin<PROPS = any, FORM_PROPS = any, EC extends EntityCollec
138
169
  *
139
170
  * @group Models
140
171
  */
141
- export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, UserType extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
172
+ export interface PluginHomePageActionsProps<EP extends object = object, M extends Record<string, any> = any, USER extends User = User, EC extends EntityCollection<M> = EntityCollection<M>> {
142
173
  /**
143
174
  * Collection path of this entity. This is the full path, like
144
175
  * `users/1234/addresses`
@@ -151,17 +182,19 @@ export interface PluginHomePageActionsProps<EP extends object = object, M extend
151
182
  /**
152
183
  * Context of the app status
153
184
  */
154
- context: FireCMSContext<UserType>;
185
+ context: FireCMSContext<USER>;
155
186
  extraProps?: EP;
156
187
  }
157
- export interface PluginFormActionProps<UserType extends User = User, EC extends EntityCollection = EntityCollection> {
188
+ export interface PluginFormActionProps<USER extends User = User, EC extends EntityCollection = EntityCollection> {
158
189
  entityId?: string;
159
190
  path: string;
191
+ parentCollectionIds: string[];
160
192
  status: EntityStatus;
161
193
  collection: EC;
194
+ disabled: boolean;
162
195
  formContext?: FormContext<any>;
163
- context: FireCMSContext<UserType>;
164
- currentEntityId?: string;
196
+ context: FireCMSContext<USER>;
197
+ openEntityMode: "side_panel" | "full_screen";
165
198
  }
166
199
  export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Record<string, any> = any, EC extends EntityCollection<M> = EntityCollection<M>> = {
167
200
  fieldConfigId: string;
@@ -172,10 +205,10 @@ export type PluginFieldBuilderParams<T extends CMSType = CMSType, M extends Reco
172
205
  path?: string;
173
206
  collection?: EC;
174
207
  };
175
- export interface PluginGenericProps<UserType extends User = User> {
176
- context: FireCMSContext<UserType>;
208
+ export interface PluginGenericProps<USER extends User = User> {
209
+ context: FireCMSContext<USER>;
177
210
  }
178
- export interface PluginHomePageAdditionalCardsProps<UserType extends User = User> {
211
+ export interface PluginHomePageAdditionalCardsProps<USER extends User = User> {
179
212
  group?: string;
180
- context: FireCMSContext<UserType>;
213
+ context: FireCMSContext<USER>;
181
214
  }
@@ -5,10 +5,11 @@ import { EntityReference, EntityValues, GeoPoint, Vector } from "./entities";
5
5
  import { ResolvedArrayProperty, ResolvedStringProperty } from "./resolved_entities";
6
6
  import { FilterValues } from "./collections";
7
7
  import { ChipColorKey, ChipColorScheme } from "@firecms/ui";
8
+ import { AuthController } from "./auth";
8
9
  /**
9
10
  * @group Entity properties
10
11
  */
11
- export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<CMSType> ? "array" : T extends Record<string, any> ? "map" : never;
12
+ export type DataType<T extends CMSType = CMSType> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T extends Date ? "date" : T extends GeoPoint ? "geopoint" : T extends Vector ? "vector" : T extends EntityReference ? "reference" : T extends Array<any> ? "array" : T extends Record<string, any> ? "map" : never;
12
13
  /**
13
14
  * @group Entity properties
14
15
  */
@@ -20,7 +21,7 @@ export type AnyProperty = StringProperty | NumberProperty | BooleanProperty | Da
20
21
  /**
21
22
  * @group Entity properties
22
23
  */
23
- export type Property<T extends CMSType = CMSType> = T extends string ? StringProperty : T extends number ? NumberProperty : T extends boolean ? BooleanProperty : T extends Date ? DateProperty : T extends GeoPoint ? GeopointProperty : T extends EntityReference ? ReferenceProperty : T extends Array<CMSType> ? ArrayProperty<T> : T extends Record<string, any> ? MapProperty<T> : AnyProperty;
24
+ export type Property<T extends CMSType = any> = T extends string ? StringProperty : T extends number ? NumberProperty : T extends boolean ? BooleanProperty : T extends Date ? DateProperty : T extends GeoPoint ? GeopointProperty : T extends EntityReference ? ReferenceProperty : T extends Array<CMSType> ? ArrayProperty<T> : T extends Record<string, any> ? MapProperty<T> : AnyProperty;
24
25
  /**
25
26
  * Interface including all common properties of a CMS property
26
27
  * @group Entity properties
@@ -103,6 +104,11 @@ export interface BaseProperty<T extends CMSType, CustomProps = any> {
103
104
  * save the new config. The saved config will then become the source of truth.
104
105
  */
105
106
  editable?: boolean;
107
+ /**
108
+ * A number between 0 and 100 that indicates the width of the field in the form view.
109
+ * It defaults to 100, but you can set it to 50 to have two fields in the same row.
110
+ */
111
+ widthPercentage?: number;
106
112
  }
107
113
  /**
108
114
  * @group Entity properties
@@ -200,6 +206,10 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> = {
200
206
  * Entity ID
201
207
  */
202
208
  entityId?: string;
209
+ /**
210
+ * Controller to manage authentication
211
+ */
212
+ authController: AuthController;
203
213
  };
204
214
  /**
205
215
  * You can use this type to define a property dynamically, based
@@ -207,15 +217,15 @@ export type PropertyBuilderProps<M extends Record<string, any> = any> = {
207
217
  * current value of the property, as well as the path and entity ID.
208
218
  * @group Entity properties
209
219
  */
210
- export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, index, path, entityId }: PropertyBuilderProps<M>) => Property<T> | null;
220
+ export type PropertyBuilder<T extends CMSType = any, M extends Record<string, any> = any> = ({ values, previousValues, propertyValue, index, path, entityId, authController }: PropertyBuilderProps<M>) => Property<T> | null;
211
221
  /**
212
222
  * @group Entity properties
213
223
  */
214
- export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = Record<string, any>> = Property<T> | PropertyBuilder<T, M>;
224
+ export type PropertyOrBuilder<T extends CMSType = CMSType, M extends Record<string, any> = any> = Property<T> | PropertyBuilder<T, M>;
215
225
  /**
216
226
  * @group Entity properties
217
227
  */
218
- export type PropertiesOrBuilders<M extends Record<string, any> = Record<string, any>> = {
228
+ export type PropertiesOrBuilders<M extends Record<string, any> = any> = {
219
229
  [k in keyof M]: PropertyOrBuilder<M[k], M>;
220
230
  };
221
231
  /**
@@ -278,7 +288,7 @@ export interface StringProperty extends BaseProperty<string> {
278
288
  enumValues?: EnumValues;
279
289
  /**
280
290
  * You can specify a `Storage` configuration. It is used to
281
- * indicate that this string refers to a path in Google Cloud Storage.
291
+ * indicate that this string refers to a path in your storage provider.
282
292
  */
283
293
  storage?: StorageConfig;
284
294
  /**
@@ -302,11 +312,18 @@ export interface StringProperty extends BaseProperty<string> {
302
312
  * Add an icon to clear the value and set it to `null`. Defaults to `false`
303
313
  */
304
314
  clearable?: boolean;
315
+ /**
316
+ * You can use this property (a string) to behave as a reference to another
317
+ * collection. The stored value is the ID of the entity in the
318
+ * collection, and the `path` prop is used to
319
+ * define the collection this reference points to.
320
+ */
321
+ reference?: ReferenceProperty;
305
322
  }
306
323
  /**
307
324
  * @group Entity properties
308
325
  */
309
- export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = CMSType> extends BaseProperty<T> {
326
+ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSType = any> extends BaseProperty<T> {
310
327
  dataType: "array";
311
328
  /**
312
329
  * The property of this array.
@@ -361,6 +378,21 @@ export interface ArrayProperty<T extends ArrayT[] = any[], ArrayT extends CMSTyp
361
378
  * Should the field be initially expanded. Defaults to `true`
362
379
  */
363
380
  expanded?: boolean;
381
+ /**
382
+ * Display the child properties directly, without being wrapped in an
383
+ * extendable panel.
384
+ */
385
+ minimalistView?: boolean;
386
+ /**
387
+ * Can the elements in this array be reordered. Defaults to `true`.
388
+ * This prop has no effect if `disabled` is set to true.
389
+ */
390
+ sortable?: boolean;
391
+ /**
392
+ * Can the elements in this array be added. Defaults to `true`
393
+ * This prop has no effect if `disabled` is set to true.
394
+ */
395
+ canAddElements?: boolean;
364
396
  }
365
397
  /**
366
398
  * @group Entity properties
@@ -400,6 +432,11 @@ export interface MapProperty<T extends Record<string, CMSType> = Record<string,
400
432
  * view
401
433
  */
402
434
  spreadChildren?: boolean;
435
+ /**
436
+ * Display the child properties directly, without being wrapped in an
437
+ * extendable panel. Note that this will also hide the title of this property.
438
+ */
439
+ minimalistView?: boolean;
403
440
  /**
404
441
  * Should the field be initially expanded. Defaults to `true`
405
442
  */
@@ -460,7 +497,7 @@ export interface ReferenceProperty extends BaseProperty<EntityReference> {
460
497
  * You can leave this prop undefined if the path is not yet know, e.g.
461
498
  * you are using a property builder and the path depends on a different
462
499
  * property.
463
- * Note that you can also use a collection alias.
500
+ * Note that you can also use a collection id.
464
501
  */
465
502
  path?: string;
466
503
  /**
@@ -583,13 +620,13 @@ export type StorageConfig = {
583
620
  * You can use this prop to customize the uploaded filename.
584
621
  * You can use a function as a callback or a string where you
585
622
  * specify some placeholders that get replaced with the corresponding values.
586
- * - {file} - Full file name
587
- * - {file.name} - Name of the file without extension
588
- * - {file.ext} - Extension of the file
589
- * - {rand} - Random value used to avoid name collisions
590
- * - {entityId} - ID of the entity
591
- * - {propertyKey} - ID of this property
592
- * - {path} - Path of this entity
623
+ * - `{file}` - Full file name
624
+ * - `{file.name}` - Name of the file without extension
625
+ * - `{file.ext}` - Extension of the file
626
+ * - `{rand}` - Random value used to avoid name collisions
627
+ * - `{entityId}` - ID of the entity
628
+ * - `{propertyKey}` - ID of this property
629
+ * - `{path}` - Path of this entity
593
630
  *
594
631
  * @param context
595
632
  */
@@ -599,13 +636,13 @@ export type StorageConfig = {
599
636
  *
600
637
  * You can use a function as a callback or a string where you
601
638
  * specify some placeholders that get replaced with the corresponding values.
602
- * - {file} - Full file name
603
- * - {file.name} - Name of the file without extension
604
- * - {file.ext} - Extension of the file
605
- * - {rand} - Random value used to avoid name collisions
606
- * - {entityId} - ID of the entity
607
- * - {propertyKey} - ID of this property
608
- * - {path} - Path of this entity
639
+ * - `{file}` - Full file name
640
+ * - `{file.name}` - Name of the file without extension
641
+ * - `{file.ext}` - Extension of the file
642
+ * - `{rand}` - Random value used to avoid name collisions
643
+ * - `{entityId}` - ID of the entity
644
+ * - `{propertyKey}` - ID of this property
645
+ * - `{path}` - Path of this entity
609
646
  */
610
647
  storagePath: string | ((context: UploadedFileContext) => string);
611
648
  /**
@@ -623,6 +660,12 @@ export type StorageConfig = {
623
660
  * Define maximal file size in bytes
624
661
  */
625
662
  maxSize?: number;
663
+ /**
664
+ * Use this callback to process the file before uploading it to the storage.
665
+ * If nothing is returned, the file is uploaded as it is.
666
+ * @param file
667
+ */
668
+ processFile?: (file: File) => Promise<File> | undefined;
626
669
  /**
627
670
  * Postprocess the saved value (storage path or URL)
628
671
  * after it has been resolved.
@@ -19,8 +19,6 @@ export type PropertyConfig<T extends CMSType = any> = {
19
19
  * Default config for the property.
20
20
  * This property or builder will be used as the base values for the resulting property.
21
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
22
  */
25
23
  property: PropertyOrBuilder<T>;
26
24
  /**
@@ -39,4 +37,4 @@ export type PropertyConfig<T extends CMSType = any> = {
39
37
  */
40
38
  description?: string;
41
39
  };
42
- export type PropertyConfigId = "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";
40
+ export type PropertyConfigId = "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" | "reference_as_string" | "multi_references" | "switch" | "date_time" | "repeat" | "custom_array" | "block";
@@ -23,6 +23,9 @@ export type Role = {
23
23
  * @see stripCollectionPath
24
24
  */
25
25
  collectionPermissions?: Record<string, Permissions>;
26
+ /**
27
+ * Permissions related to editing the collections
28
+ */
26
29
  config?: {
27
30
  createCollections?: boolean;
28
31
  editCollections?: boolean | "own";
@@ -1,3 +1,4 @@
1
+ import React from "react";
1
2
  /**
2
3
  * Controller to open the side dialog
3
4
  * @group Hooks and utilities
@@ -11,6 +12,11 @@ export interface SideDialogsController {
11
12
  * List of side panels currently open
12
13
  */
13
14
  sidePanels: SideDialogPanelProps[];
15
+ /**
16
+ * Override the current side panels
17
+ * @param panels
18
+ */
19
+ setSidePanels: (panels: SideDialogPanelProps[]) => void;
14
20
  /**
15
21
  * Open one or multiple side panels
16
22
  * @param props
@@ -54,4 +60,8 @@ export interface SideDialogPanelProps {
54
60
  * Callback when the panel is closed
55
61
  */
56
62
  onClose?: () => void;
63
+ /**
64
+ * Use this prop to store additional data in the panel
65
+ */
66
+ additional?: any;
57
67
  }
@@ -1,6 +1,7 @@
1
1
  import { EntityCollection } from "./collections";
2
2
  import { ResolvedEntityCollection } from "./resolved_entities";
3
3
  import { Entity } from "./entities";
4
+ import { EntityFormProps } from "../form";
4
5
  /**
5
6
  * Props used to open a side dialog
6
7
  * @group Hooks and utilities
@@ -10,6 +11,10 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
10
11
  * Absolute path of the entity
11
12
  */
12
13
  path: string;
14
+ /**
15
+ * Full CMS path of the entity, including the collection and sub-collections.
16
+ */
17
+ fullIdPath?: string;
13
18
  /**
14
19
  * ID of the entity, if not set, it means we are creating a new entity
15
20
  */
@@ -22,7 +27,7 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
22
27
  * Open the entity with a selected sub-collection view. If the panel for this
23
28
  * entity was already open, it is replaced.
24
29
  */
25
- selectedSubPath?: string;
30
+ selectedTab?: string;
26
31
  /**
27
32
  * Use this prop to override the width of the form view.
28
33
  * e.g. "600px"
@@ -55,6 +60,14 @@ export interface EntitySidePanelProps<M extends Record<string, any> = any> {
55
60
  * Should this panel close when saving
56
61
  */
57
62
  closeOnSave?: boolean;
63
+ /**
64
+ * Override some form properties
65
+ */
66
+ formProps?: Partial<EntityFormProps<M>>;
67
+ /**
68
+ * Allow the user to open the entity fullscreen
69
+ */
70
+ allowFullScreen?: boolean;
58
71
  }
59
72
  /**
60
73
  * Controller to open the side dialog displaying entity forms
@@ -87,4 +87,79 @@ export interface StorageSource {
87
87
  * @param bucket
88
88
  */
89
89
  getFile: (path: string, bucket?: string) => Promise<File | null>;
90
+ /**
91
+ * Delete a file.
92
+ * @param path
93
+ * @param bucket
94
+ */
95
+ deleteFile: (path: string, bucket?: string) => Promise<void>;
96
+ /**
97
+ * List the contents of a path.
98
+ * @param path
99
+ * @param options
100
+ */
101
+ list: (path: string, options?: {
102
+ bucket?: string;
103
+ maxResults?: number;
104
+ pageToken?: string;
105
+ }) => Promise<StorageListResult>;
106
+ }
107
+ /**
108
+ * Result returned by list().
109
+ * @public
110
+ */
111
+ export declare interface StorageListResult {
112
+ /**
113
+ * References to prefixes (sub-folders). You can call list() on them to
114
+ * get its contents.
115
+ *
116
+ * Folders are implicit based on '/' in the object paths.
117
+ * For example, if a bucket has two objects '/a/b/1' and '/a/b/2', list('/a')
118
+ * will return '/a/b' as a prefix.
119
+ */
120
+ prefixes: StorageReference[];
121
+ /**
122
+ * Objects in this directory.
123
+ * You can call getMetadata() and getDownloadUrl() on them.
124
+ */
125
+ items: StorageReference[];
126
+ /**
127
+ * If set, there might be more results for this list. Use this token to resume the list.
128
+ */
129
+ nextPageToken?: string;
130
+ }
131
+ /**
132
+ * Represents a reference to a Google Cloud Storage object. Developers can
133
+ * upload, download, and delete objects, as well as get/set object metadata.
134
+ * @public
135
+ */
136
+ export declare interface StorageReference {
137
+ /**
138
+ * Returns a gs:// URL for this object in the form
139
+ * `gs://<bucket>/<path>/<to>/<object>`
140
+ * @returns The gs:// URL.
141
+ */
142
+ toString(): string;
143
+ /**
144
+ * A reference to the root of this object's bucket.
145
+ */
146
+ root: StorageReference;
147
+ /**
148
+ * The name of the bucket containing this reference's object.
149
+ */
150
+ bucket: string;
151
+ /**
152
+ * The full path of this object.
153
+ */
154
+ fullPath: string;
155
+ /**
156
+ * The short name of this object, which is the last component of the full path.
157
+ * For example, if fullPath is 'full/path/image.png', name is 'image.png'.
158
+ */
159
+ name: string;
160
+ /**
161
+ * A reference pointing to the parent location of this reference, or null if
162
+ * this reference is the root.
163
+ */
164
+ parent: StorageReference | null;
90
165
  }
@@ -38,4 +38,5 @@ export type User = {
38
38
  *
39
39
  */
40
40
  roles?: Role[];
41
+ getIdToken?: (forceRefresh?: boolean) => Promise<string>;
41
42
  };
@@ -5,14 +5,14 @@ import { AdditionalFieldDelegate, ArrayProperty, BooleanProperty, CMSType, DateP
5
5
  * @param collection
6
6
  * @group Builder
7
7
  */
8
- export declare function buildCollection<M extends Record<string, any> = any, UserType extends User = User>(collection: EntityCollection<M, UserType>): EntityCollection<M, UserType>;
8
+ export declare function buildCollection<M extends Record<string, any> = any, USER extends User = User>(collection: EntityCollection<M, USER>): EntityCollection<M, USER>;
9
9
  /**
10
10
  * Identity function we use to defeat the type system of Typescript and preserve
11
11
  * the property keys.
12
12
  * @param property
13
13
  * @group Builder
14
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;
15
+ export declare function buildProperty<T extends CMSType = CMSType, P extends PropertyOrBuilder<T> = PropertyOrBuilder<T>, M extends Record<string, any> = 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
16
  /**
17
17
  * Identity function we use to defeat the type system of Typescript and preserve
18
18
  * the properties keys.
@@ -54,7 +54,7 @@ export declare function buildEntityCallbacks<M extends Record<string, any> = any
54
54
  * @param additionalFieldDelegate
55
55
  * @group Builder
56
56
  */
57
- export declare function buildAdditionalFieldDelegate<M extends Record<string, any>, UserType extends User = User>(additionalFieldDelegate: AdditionalFieldDelegate<M, UserType>): AdditionalFieldDelegate<M, UserType>;
57
+ export declare function buildAdditionalFieldDelegate<M extends Record<string, any>, USER extends User = User>(additionalFieldDelegate: AdditionalFieldDelegate<M, USER>): AdditionalFieldDelegate<M, USER>;
58
58
  /**
59
59
  * Identity function we use to defeat the type system of Typescript and build
60
60
  * additional field delegates views with all its properties
@@ -0,0 +1,2 @@
1
+ import { EntityCallbacks } from "../types";
2
+ export declare const mergeCallbacks: (baseCallbacks?: EntityCallbacks, pluginCallbacks?: EntityCallbacks) => EntityCallbacks | undefined;
@@ -0,0 +1,2 @@
1
+ import { FormexController } from "@firecms/formex";
2
+ export declare function createFormexStub<T extends object>(values: T): FormexController<T>;
@@ -1,9 +1,9 @@
1
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;
2
+ export declare function isReadOnly(property: Property<any> | ResolvedProperty<any>): boolean;
3
3
  export declare function isHidden(property: Property | ResolvedProperty): boolean;
4
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
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;
6
+ export declare function getDefaultValueFor(property?: PropertyOrBuilder): {} | null | undefined;
7
7
  export declare function getDefaultValueForDataType(dataType: DataType): {} | null;
8
8
  /**
9
9
  * Update the automatic values in an entity before save
@@ -0,0 +1,2 @@
1
+ import { EntityAction } from "../types";
2
+ export declare function mergeEntityActions(currentActions: EntityAction[], newActions: EntityAction[]): EntityAction[];
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Saves data to the in-memory cache and persists it individually in `localStorage`.
3
+ * @param path - The unique path/key for the data.
4
+ * @param data - The data to cache and persist.
5
+ */
6
+ export declare function saveEntityToCache(path: string, data: object): void;
7
+ /**
8
+ * Retrieves an entity from the in-memory cache or `localStorage`.
9
+ * If the entity is not in the cache but exists in `localStorage`, it loads it into the cache.
10
+ * @param path - The unique path/key for the entity.
11
+ * @returns The cached entity or `undefined` if not found.
12
+ */
13
+ export declare function getEntityFromCache(path: string): object | undefined;
14
+ export declare function hasEntityInCache(path: string): boolean;
15
+ /**
16
+ * Removes an entity from both the in-memory cache and `localStorage`.
17
+ * @param path - The unique path/key for the entity to remove.
18
+ */
19
+ export declare function removeEntityFromCache(path: string): void;
20
+ /**
21
+ * Clears the entire in-memory cache and removes all related entities from `localStorage`.
22
+ */
23
+ export declare function clearEntityCache(): void;
@@ -1222,7 +1222,6 @@ export declare const iconSynonyms: {
1222
1222
  picture_in_picture_alt: string;
1223
1223
  pie_chart: string;
1224
1224
  pie_chart_outline: string;
1225
- pie_chart_outlined: string;
1226
1225
  pin: string;
1227
1226
  pinch: string;
1228
1227
  pin_drop: string;
@@ -1,13 +1,16 @@
1
1
  import React from "react";
2
- export declare function getIcon(iconKey?: string, className?: string): React.ReactElement | undefined;
2
+ import { IconColor } from "@firecms/ui";
3
+ export declare function getIcon(iconKey?: string | React.ReactNode, className?: string, color?: IconColor, size?: "smallest" | "small" | "medium" | "large" | number): React.ReactElement | undefined;
3
4
  export type IconViewProps = {
4
5
  path: string;
5
6
  name: string;
6
7
  singularName?: string;
7
8
  group?: string;
8
- icon?: string;
9
+ icon?: string | React.ReactNode;
9
10
  };
10
11
  export declare const IconForView: React.NamedExoticComponent<{
11
12
  collectionOrView?: IconViewProps;
13
+ color?: IconColor;
12
14
  className?: string;
15
+ size?: "smallest" | "small" | "medium" | "large" | number;
13
16
  }>;
@@ -7,6 +7,7 @@ export * from "./objects";
7
7
  export * from "./paths";
8
8
  export * from "./regexp";
9
9
  export * from "./navigation_utils";
10
+ export * from "./entity_actions";
10
11
  export * from "./useDebouncedCallback";
11
12
  export * from "./property_utils";
12
13
  export * from "./resolutions";
@@ -21,3 +22,5 @@ export * from "./make_properties_editable";
21
22
  export * from "./join_collections";
22
23
  export * from "./builders";
23
24
  export * from "./useTraceUpdate";
25
+ export * from "./storage";
26
+ export * from "./callbacks";
@@ -4,21 +4,30 @@ export interface NavigationViewEntityInternal<M extends Record<string, any>> {
4
4
  type: "entity";
5
5
  entityId: string;
6
6
  path: string;
7
+ fullIdPath: string;
8
+ fullPath: string;
7
9
  parentCollection: EntityCollection<M>;
8
10
  }
9
11
  export interface NavigationViewCollectionInternal<M extends Record<string, any>> {
10
12
  type: "collection";
13
+ id: string;
11
14
  path: string;
15
+ fullIdPath: string;
16
+ fullPath: string;
12
17
  collection: EntityCollection<M>;
13
18
  }
14
19
  export interface NavigationViewEntityCustomInternal<M extends Record<string, any>> {
15
20
  type: "custom_view";
16
21
  path: string;
22
+ fullIdPath: string;
23
+ fullPath: string;
24
+ entityId: string;
17
25
  view: EntityCustomView<M>;
18
26
  }
19
- export declare function getNavigationEntriesFromPathInternal(props: {
27
+ export declare function getNavigationEntriesFromPath(props: {
20
28
  path: string;
21
29
  collections: EntityCollection[] | undefined;
22
30
  currentFullPath?: string;
31
+ currentFullIdPath?: string;
23
32
  contextEntityViews?: EntityCustomView<any>[];
24
33
  }): NavigationViewInternal[];
@@ -1,4 +1,4 @@
1
- import { EntityCollection } from "../types";
1
+ import { EntityCollection, NavigationController, SideEntityController } from "../types";
2
2
  export declare function removeInitialAndTrailingSlashes(s: string): string;
3
3
  export declare function removeInitialSlash(s: string): string;
4
4
  export declare function removeTrailingSlash(s: string): string;
@@ -18,3 +18,15 @@ export declare function getCollectionByPathOrId(pathOrId: string, collections: E
18
18
  * @param subpaths
19
19
  */
20
20
  export declare function getCollectionPathsCombinations(subpaths: string[]): string[];
21
+ export declare function navigateToEntity({ openEntityMode, collection, entityId, copy, path, fullIdPath, selectedTab, sideEntityController, onClose, navigation }: {
22
+ openEntityMode: "side_panel" | "full_screen";
23
+ collection?: EntityCollection;
24
+ entityId?: string;
25
+ selectedTab?: string;
26
+ copy?: boolean;
27
+ path: string;
28
+ fullIdPath?: string;
29
+ sideEntityController: SideEntityController;
30
+ onClose?: () => void;
31
+ navigation: NavigationController;
32
+ }): void;