@firecms/core 3.0.0-canary.28 → 3.0.0-canary.280

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 (424) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +34 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +31 -12
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +14 -13
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/index.d.ts +1 -1
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +20 -2
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  24. package/dist/components/EntityJsonPreview.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +10 -7
  26. package/dist/components/ErrorView.d.ts +1 -1
  27. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  28. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  29. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  30. package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
  31. package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
  32. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  33. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  34. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  35. package/dist/components/ReferenceWidget.d.ts +3 -1
  36. package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
  37. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  38. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  39. package/dist/components/UserDisplay.d.ts +7 -0
  40. package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
  41. package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
  42. package/dist/components/VirtualTable/types.d.ts +3 -3
  43. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  44. package/dist/components/common/index.d.ts +2 -1
  45. package/dist/components/common/table_height.d.ts +5 -0
  46. package/dist/components/common/types.d.ts +4 -6
  47. package/dist/components/common/useColumnsIds.d.ts +3 -1
  48. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  49. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  50. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  51. package/dist/components/index.d.ts +5 -2
  52. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  53. package/dist/contexts/InternalUserManagementContext.d.ts +3 -0
  54. package/dist/core/DefaultAppBar.d.ts +29 -0
  55. package/dist/core/DefaultDrawer.d.ts +19 -0
  56. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  57. package/dist/core/EntityEditView.d.ts +43 -11
  58. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  59. package/dist/core/FireCMS.d.ts +2 -3
  60. package/dist/core/FireCMSRouter.d.ts +4 -0
  61. package/dist/core/NavigationRoutes.d.ts +2 -3
  62. package/dist/core/SideDialogs.d.ts +4 -2
  63. package/dist/core/field_configs.d.ts +1 -1
  64. package/dist/core/index.d.ts +4 -4
  65. package/dist/form/EntityForm.d.ts +37 -64
  66. package/dist/form/EntityFormActions.d.ts +21 -0
  67. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  68. package/dist/form/components/ErrorFocus.d.ts +1 -1
  69. package/dist/form/components/FieldHelperText.d.ts +3 -3
  70. package/dist/form/components/FormEntry.d.ts +6 -0
  71. package/dist/form/components/FormLayout.d.ts +5 -0
  72. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  73. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  74. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  75. package/dist/form/components/index.d.ts +3 -1
  76. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  80. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  81. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  82. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  83. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  84. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  85. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  86. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  87. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  88. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -13
  89. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  90. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  91. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +12 -0
  92. package/dist/form/index.d.ts +17 -18
  93. package/dist/form/useClearRestoreValue.d.ts +2 -2
  94. package/dist/hooks/data/delete.d.ts +4 -4
  95. package/dist/hooks/data/save.d.ts +4 -5
  96. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  97. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  98. package/dist/hooks/index.d.ts +3 -0
  99. package/dist/hooks/useAuthController.d.ts +1 -1
  100. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  101. package/dist/hooks/useBuildNavigationController.d.ts +57 -13
  102. package/dist/hooks/useCollapsedGroups.d.ts +9 -0
  103. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  104. package/dist/hooks/useInternalUserManagementController.d.ts +12 -0
  105. package/dist/hooks/useModeController.d.ts +1 -2
  106. package/dist/hooks/useProjectLog.d.ts +8 -2
  107. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  108. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  109. package/dist/index.d.ts +1 -0
  110. package/dist/index.es.js +23563 -13933
  111. package/dist/index.es.js.map +1 -1
  112. package/dist/index.umd.js +26305 -588
  113. package/dist/index.umd.js.map +1 -1
  114. package/dist/internal/useBuildDataSource.d.ts +3 -17
  115. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  116. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  117. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  118. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  119. package/dist/preview/components/ReferencePreview.d.ts +4 -3
  120. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  121. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  122. package/dist/preview/components/UserPreview.d.ts +8 -0
  123. package/dist/preview/index.d.ts +1 -0
  124. package/dist/preview/util.d.ts +3 -3
  125. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  126. package/dist/routes/FireCMSRoute.d.ts +1 -0
  127. package/dist/routes/HomePageRoute.d.ts +3 -0
  128. package/dist/types/analytics.d.ts +1 -1
  129. package/dist/types/auth.d.ts +8 -10
  130. package/dist/types/collections.d.ts +112 -25
  131. package/dist/types/customization_controller.d.ts +8 -0
  132. package/dist/types/datasource.d.ts +52 -36
  133. package/dist/types/dialogs_controller.d.ts +7 -3
  134. package/dist/types/entities.d.ts +12 -3
  135. package/dist/types/entity_actions.d.ts +72 -8
  136. package/dist/types/entity_callbacks.d.ts +16 -16
  137. package/dist/types/entity_overrides.d.ts +2 -2
  138. package/dist/types/export_import.d.ts +4 -4
  139. package/dist/types/fields.d.ts +74 -42
  140. package/dist/types/firecms.d.ts +31 -3
  141. package/dist/types/firecms_context.d.ts +17 -1
  142. package/dist/types/index.d.ts +1 -1
  143. package/dist/types/internal_user_management.d.ts +20 -0
  144. package/dist/types/navigation.d.ts +62 -19
  145. package/dist/types/permissions.d.ts +4 -4
  146. package/dist/types/plugins.d.ts +58 -13
  147. package/dist/types/properties.d.ts +90 -25
  148. package/dist/types/property_config.d.ts +1 -3
  149. package/dist/types/roles.d.ts +3 -0
  150. package/dist/types/side_dialogs_controller.d.ts +10 -0
  151. package/dist/types/side_entity_controller.d.ts +14 -1
  152. package/dist/types/storage.d.ts +75 -0
  153. package/dist/types/user.d.ts +2 -1
  154. package/dist/util/builders.d.ts +3 -3
  155. package/dist/util/callbacks.d.ts +2 -0
  156. package/dist/util/createFormexStub.d.ts +2 -0
  157. package/dist/util/entities.d.ts +3 -3
  158. package/dist/util/entity_actions.d.ts +2 -0
  159. package/dist/util/entity_cache.d.ts +23 -0
  160. package/dist/util/icon_list.d.ts +5 -1
  161. package/dist/util/icon_synonyms.d.ts +1 -98
  162. package/dist/util/icons.d.ts +7 -4
  163. package/dist/util/index.d.ts +3 -0
  164. package/dist/util/navigation_from_path.d.ts +10 -1
  165. package/dist/util/navigation_utils.d.ts +15 -3
  166. package/dist/util/objects.d.ts +2 -1
  167. package/dist/util/permissions.d.ts +4 -4
  168. package/dist/util/plurals.d.ts +0 -2
  169. package/dist/util/property_utils.d.ts +4 -4
  170. package/dist/util/references.d.ts +2 -2
  171. package/dist/util/resolutions.d.ts +42 -17
  172. package/dist/util/storage.d.ts +23 -2
  173. package/dist/util/useStorageUploadController.d.ts +3 -3
  174. package/package.json +69 -52
  175. package/src/app/AppBar.tsx +18 -0
  176. package/src/app/Drawer.tsx +24 -0
  177. package/src/app/Scaffold.tsx +253 -0
  178. package/src/app/index.ts +4 -0
  179. package/src/app/useApp.tsx +32 -0
  180. package/src/components/ArrayContainer.tsx +447 -229
  181. package/src/components/CircularProgressCenter.tsx +2 -2
  182. package/src/components/ClearFilterSortButton.tsx +41 -0
  183. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
  184. package/src/components/DeleteEntityDialog.tsx +13 -20
  185. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +65 -40
  186. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  187. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  188. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +84 -42
  189. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  190. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  191. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  192. package/src/components/EntityCollectionTable/index.tsx +1 -1
  193. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +34 -39
  194. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
  195. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  196. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
  197. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  198. package/src/components/EntityCollectionView/EntityCollectionView.tsx +235 -118
  199. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
  200. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  201. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  202. package/src/components/EntityCollectionView/utils.ts +19 -0
  203. package/src/components/EntityJsonPreview.tsx +66 -0
  204. package/src/components/EntityPreview.tsx +83 -62
  205. package/src/components/EntityView.tsx +13 -10
  206. package/src/components/ErrorView.tsx +4 -4
  207. package/src/components/FireCMSLogo.tsx +7 -51
  208. package/src/components/HomePage/DefaultHomePage.tsx +511 -157
  209. package/src/components/HomePage/FavouritesView.tsx +9 -14
  210. package/src/components/HomePage/HomePageDnD.tsx +600 -0
  211. package/src/components/HomePage/NavigationCard.tsx +48 -39
  212. package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
  213. package/src/components/HomePage/NavigationGroup.tsx +144 -30
  214. package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
  215. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  216. package/src/components/NotFoundPage.tsx +2 -2
  217. package/src/components/PropertyConfigBadge.tsx +9 -3
  218. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  219. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +23 -13
  220. package/src/components/ReferenceWidget.tsx +21 -11
  221. package/src/components/SearchIconsView.tsx +10 -7
  222. package/src/components/SelectableTable/SelectableTable.tsx +157 -145
  223. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  224. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  225. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  226. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +93 -24
  227. package/src/components/UnsavedChangesDialog.tsx +46 -0
  228. package/src/components/UserDisplay.tsx +54 -0
  229. package/src/components/VirtualTable/VirtualTable.tsx +105 -51
  230. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  231. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  232. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  233. package/src/components/VirtualTable/VirtualTableProps.tsx +28 -14
  234. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  235. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  236. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  237. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  238. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  239. package/src/components/VirtualTable/fields/VirtualTableUserSelect.tsx +99 -0
  240. package/src/components/VirtualTable/types.tsx +2 -3
  241. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +64 -44
  242. package/src/components/common/index.ts +2 -1
  243. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  244. package/src/components/common/types.tsx +4 -6
  245. package/src/components/common/useColumnsIds.tsx +16 -2
  246. package/src/components/common/useDataSourceTableController.tsx +420 -0
  247. package/src/components/common/useDebouncedCallback.tsx +20 -0
  248. package/src/components/common/useScrollRestoration.tsx +68 -0
  249. package/src/components/common/useTableSearchHelper.ts +53 -12
  250. package/src/components/index.tsx +6 -2
  251. package/src/contexts/BreacrumbsContext.tsx +38 -0
  252. package/src/contexts/DialogsProvider.tsx +5 -4
  253. package/src/contexts/InternalUserManagementContext.tsx +4 -0
  254. package/src/contexts/ModeController.tsx +1 -3
  255. package/src/contexts/SnackbarProvider.tsx +2 -0
  256. package/src/core/DefaultAppBar.tsx +219 -0
  257. package/src/core/DefaultDrawer.tsx +185 -0
  258. package/src/core/DrawerNavigationItem.tsx +66 -0
  259. package/src/core/EntityEditView.tsx +435 -470
  260. package/src/core/EntityEditViewFormActions.tsx +329 -0
  261. package/src/core/EntitySidePanel.tsx +88 -21
  262. package/src/core/FireCMS.tsx +85 -60
  263. package/src/core/FireCMSRouter.tsx +17 -0
  264. package/src/core/NavigationRoutes.tsx +28 -38
  265. package/src/core/SideDialogs.tsx +22 -12
  266. package/src/core/field_configs.tsx +41 -14
  267. package/src/core/index.tsx +6 -5
  268. package/src/form/EntityForm.tsx +620 -534
  269. package/src/form/EntityFormActions.tsx +211 -0
  270. package/src/form/PropertyFieldBinding.tsx +88 -45
  271. package/src/form/components/CustomIdField.tsx +9 -3
  272. package/src/form/components/FieldHelperText.tsx +4 -4
  273. package/src/form/components/FormEntry.tsx +22 -0
  274. package/src/form/components/FormLayout.tsx +16 -0
  275. package/src/form/components/LabelWithIcon.tsx +30 -19
  276. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  277. package/src/form/components/StorageItemPreview.tsx +23 -13
  278. package/src/form/components/StorageUploadProgress.tsx +5 -6
  279. package/src/form/components/index.tsx +3 -1
  280. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
  281. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
  282. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  283. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  284. package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
  285. package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
  286. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
  287. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  288. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  289. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  290. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  291. package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
  292. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
  293. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
  294. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  295. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  296. package/src/form/field_bindings/UserSelectFieldBinding.tsx +94 -0
  297. package/src/form/index.tsx +17 -37
  298. package/src/form/useClearRestoreValue.tsx +2 -2
  299. package/src/form/validation.ts +13 -23
  300. package/src/hooks/data/delete.ts +6 -5
  301. package/src/hooks/data/save.ts +26 -33
  302. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  303. package/src/hooks/data/useDataSource.tsx +11 -3
  304. package/src/hooks/data/useEntityFetch.tsx +10 -6
  305. package/src/hooks/index.tsx +4 -0
  306. package/src/hooks/useAuthController.tsx +1 -1
  307. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  308. package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
  309. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  310. package/src/hooks/useBuildModeController.tsx +22 -29
  311. package/src/hooks/useBuildNavigationController.tsx +440 -119
  312. package/src/hooks/useCollapsedGroups.ts +64 -0
  313. package/src/hooks/useFireCMSContext.tsx +9 -35
  314. package/src/hooks/useInternalUserManagementController.tsx +16 -0
  315. package/src/hooks/useLargeLayout.tsx +0 -35
  316. package/src/hooks/useModeController.tsx +1 -2
  317. package/src/hooks/useProjectLog.tsx +32 -10
  318. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  319. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  320. package/src/index.ts +1 -0
  321. package/src/internal/useBuildDataSource.ts +79 -85
  322. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  323. package/src/internal/useBuildSideEntityController.tsx +204 -77
  324. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  325. package/src/preview/PropertyPreview.tsx +42 -25
  326. package/src/preview/PropertyPreviewProps.tsx +7 -1
  327. package/src/preview/components/BooleanPreview.tsx +2 -2
  328. package/src/preview/components/EmptyValue.tsx +1 -1
  329. package/src/preview/components/EnumValuesChip.tsx +2 -2
  330. package/src/preview/components/ImagePreview.tsx +26 -37
  331. package/src/preview/components/ReferencePreview.tsx +26 -36
  332. package/src/preview/components/StorageThumbnail.tsx +5 -1
  333. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  334. package/src/preview/components/UserPreview.tsx +22 -0
  335. package/src/preview/index.ts +1 -0
  336. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
  337. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
  338. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
  339. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
  340. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
  341. package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
  342. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  343. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  344. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  345. package/src/preview/util.ts +10 -10
  346. package/src/routes/CustomCMSRoute.tsx +21 -0
  347. package/src/routes/FireCMSRoute.tsx +246 -0
  348. package/src/routes/HomePageRoute.tsx +17 -0
  349. package/src/types/analytics.ts +3 -0
  350. package/src/types/auth.tsx +9 -13
  351. package/src/types/collections.ts +134 -30
  352. package/src/types/customization_controller.tsx +9 -1
  353. package/src/types/datasource.ts +61 -43
  354. package/src/types/dialogs_controller.tsx +7 -3
  355. package/src/types/entities.ts +19 -3
  356. package/src/types/entity_actions.tsx +86 -10
  357. package/src/types/entity_callbacks.ts +18 -18
  358. package/src/types/entity_overrides.tsx +2 -2
  359. package/src/types/export_import.ts +4 -4
  360. package/src/types/fields.tsx +85 -46
  361. package/src/types/firecms.tsx +34 -4
  362. package/src/types/firecms_context.tsx +18 -1
  363. package/src/types/index.ts +1 -1
  364. package/src/types/internal_user_management.ts +24 -0
  365. package/src/types/navigation.ts +77 -24
  366. package/src/types/permissions.ts +5 -5
  367. package/src/types/plugins.tsx +69 -15
  368. package/src/types/properties.ts +106 -27
  369. package/src/types/property_config.tsx +2 -2
  370. package/src/types/roles.ts +3 -0
  371. package/src/types/side_dialogs_controller.tsx +15 -0
  372. package/src/types/side_entity_controller.tsx +16 -1
  373. package/src/types/storage.ts +83 -1
  374. package/src/types/user.ts +3 -1
  375. package/src/util/builders.ts +10 -8
  376. package/src/util/callbacks.ts +119 -0
  377. package/src/util/createFormexStub.tsx +62 -0
  378. package/src/util/entities.ts +11 -8
  379. package/src/util/entity_actions.ts +28 -0
  380. package/src/util/entity_cache.ts +204 -0
  381. package/src/util/enums.ts +1 -1
  382. package/src/util/icon_list.ts +16 -10
  383. package/src/util/icon_synonyms.ts +3 -100
  384. package/src/util/icons.tsx +36 -11
  385. package/src/util/index.ts +3 -0
  386. package/src/util/join_collections.ts +9 -2
  387. package/src/util/make_properties_editable.ts +13 -5
  388. package/src/util/navigation_from_path.ts +33 -12
  389. package/src/util/navigation_utils.ts +141 -25
  390. package/src/util/objects.ts +90 -33
  391. package/src/util/parent_references_from_path.ts +3 -3
  392. package/src/util/permissions.ts +9 -8
  393. package/src/util/plurals.ts +0 -2
  394. package/src/util/property_utils.tsx +17 -6
  395. package/src/util/references.ts +19 -8
  396. package/src/util/resolutions.ts +122 -48
  397. package/src/util/storage.ts +79 -21
  398. package/src/util/strings.ts +2 -2
  399. package/src/util/useStorageUploadController.tsx +91 -28
  400. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  401. package/dist/components/FireCMSAppBar.d.ts +0 -26
  402. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  403. package/dist/components/VirtualTable/common.d.ts +0 -2
  404. package/dist/core/Drawer.d.ts +0 -23
  405. package/dist/core/Scaffold.d.ts +0 -55
  406. package/dist/core/SideEntityView.d.ts +0 -7
  407. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  408. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  409. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  410. package/dist/internal/useLocaleConfig.d.ts +0 -1
  411. package/dist/types/appcheck.d.ts +0 -26
  412. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  413. package/src/components/FireCMSAppBar.tsx +0 -165
  414. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  415. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  416. package/src/core/Drawer.tsx +0 -191
  417. package/src/core/Scaffold.tsx +0 -281
  418. package/src/core/SideEntityView.tsx +0 -38
  419. package/src/form/components/FormikArrayContainer.tsx +0 -44
  420. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  421. package/src/internal/useBuildCustomizationController.tsx +0 -5
  422. package/src/internal/useLocaleConfig.tsx +0 -18
  423. package/src/types/appcheck.ts +0 -29
  424. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -4,12 +4,47 @@ import { Entity } from "./entities";
4
4
  import { EntityCollection, SelectionController } from "./collections";
5
5
  import { User } from "./user";
6
6
  import { SideEntityController } from "./side_entity_controller";
7
- import { EntityOverrides } from "./entity_overrides";
7
+ import { FormContext } from "./fields";
8
8
 
9
- export type EntityAction<M extends object = any, UserType extends User = User> = {
9
+ /**
10
+ * An entity action is a custom action that can be performed on an entity.
11
+ * They are displayed in the entity view and in the collection view.
12
+ */
13
+ export type EntityAction<M extends object = any, USER extends User = User> = {
14
+ /**
15
+ * Title of the action
16
+ */
10
17
  name: string;
18
+
19
+ /**
20
+ * Key of the action. You only need to provide this if you want to
21
+ * override the default actions, or if you are not passing the action
22
+ * directly to the `entityActions` prop of a collection.
23
+ * You can define your actions at the app level, in which case you
24
+ * must provide a key.
25
+ * The default actions are:
26
+ * - edit
27
+ * - delete
28
+ * - copy
29
+ */
30
+ key?: string;
31
+
32
+ /**
33
+ * Icon of the action
34
+ */
11
35
  icon?: React.ReactElement;
12
- onClick: (props: EntityActionClickProps<M, UserType>) => Promise<void> | void;
36
+
37
+ /**
38
+ * Callback when the action is clicked
39
+ * @param props
40
+ */
41
+ onClick: (props: EntityActionClickProps<M, USER>) => Promise<void> | void;
42
+
43
+ /**
44
+ * Optional callback in case you want to disable the action
45
+ * @param props
46
+ */
47
+ isEnabled?: (props: EntityActionClickProps<M, USER>) => boolean;
13
48
 
14
49
  /**
15
50
  * Show this action collapsed in the menu of the collection view.
@@ -25,19 +60,60 @@ export type EntityAction<M extends object = any, UserType extends User = User> =
25
60
 
26
61
  }
27
62
 
63
+ export type EntityActionClickProps<M extends object, USER extends User = User> = {
64
+ entity?: Entity<M>;
65
+ context: FireCMSContext<USER>;
28
66
 
29
-
30
- export type EntityActionClickProps<M extends object, UserType extends User = User> = {
31
- entity: Entity<M>;
32
- context: FireCMSContext<UserType>;
33
67
  fullPath?: string;
68
+ fullIdPath?: string;
34
69
  collection?: EntityCollection<M>;
70
+
71
+ /**
72
+ * Optional form context, present if the action is being called from a form.
73
+ * This allows you to access the form state and methods, including modifying the form values.
74
+ */
75
+ formContext?: FormContext;
76
+
77
+ /**
78
+ * Present if this actions is being called from a side dialog only
79
+ */
80
+ sideEntityController?: SideEntityController;
81
+
82
+ /**
83
+ * Is the action being called from the collection view or from the entity form view?
84
+ */
85
+ view: "collection" | "form";
86
+
87
+ /**
88
+ * If the action is rendered in the form, is it open in a side panel or full screen?
89
+ */
90
+ openEntityMode: "side_panel" | "full_screen";
91
+
92
+ /**
93
+ * Optional selection controller, present if the action is being called from a collection view
94
+ */
35
95
  selectionController?: SelectionController;
96
+
97
+ /**
98
+ * Optional highlight function to highlight the entity in the collection view
99
+ * @param entity
100
+ */
36
101
  highlightEntity?: (entity: Entity<any>) => void;
102
+
103
+ /**
104
+ * Optional unhighlight function to remove the highlight from the entity in the collection view
105
+ * @param entity
106
+ */
37
107
  unhighlightEntity?: (entity: Entity<any>) => void;
38
- onCollectionChange?: () => void;
108
+
39
109
  /**
40
- * If this actions is being called from a side dialog
110
+ * Optional function to navigate back (e.g. when deleting an entity or navigating from a form)
41
111
  */
42
- sideEntityController?: SideEntityController;
112
+ navigateBack?: () => void;
113
+
114
+ /**
115
+ * Callback to be called when the collection changes, e.g. after an entity is deleted or created.
116
+ */
117
+ onCollectionChange?: () => void;
118
+
43
119
  };
@@ -10,27 +10,27 @@ import { User } from "./user";
10
10
  * Useful for adding your own logic or blocking the execution of the operation.
11
11
  * @group Models
12
12
  */
13
- export type EntityCallbacks<M extends Record<string, any> = any, UserType extends User = User> = {
13
+ export type EntityCallbacks<M extends Record<string, any> = any, USER extends User = User> = {
14
14
 
15
15
  /**
16
16
  * Callback used after fetching data
17
17
  * @param entityFetchProps
18
18
  */
19
- onFetch?(entityFetchProps: EntityOnFetchProps<M, UserType>)
19
+ onFetch?(entityFetchProps: EntityOnFetchProps<M, USER>)
20
20
  : Promise<Entity<M>> | Entity<M>;
21
21
 
22
22
  /**
23
23
  * Callback used when save is successful
24
24
  * @param entitySaveProps
25
25
  */
26
- onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, UserType>)
26
+ onSaveSuccess?(entitySaveProps: EntityOnSaveProps<M, USER>)
27
27
  : Promise<void> | void;
28
28
 
29
29
  /**
30
30
  * Callback used when saving fails
31
31
  * @param entitySaveProps
32
32
  */
33
- onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, UserType>)
33
+ onSaveFailure?(entitySaveProps: EntityOnSaveFailureProps<M, USER>)
34
34
  : Promise<void> | void;
35
35
 
36
36
  /**
@@ -39,7 +39,7 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
39
39
  * error snackbar gets displayed.
40
40
  * @param entitySaveProps
41
41
  */
42
- onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, UserType>)
42
+ onPreSave?(entitySaveProps: EntityOnPreSaveProps<M, USER>)
43
43
  : Promise<Partial<EntityValues<M>>> | Partial<EntityValues<M>>;
44
44
 
45
45
  /**
@@ -49,14 +49,14 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
49
49
  *
50
50
  * @param entityDeleteProps
51
51
  */
52
- onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, UserType>): void;
52
+ onPreDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
53
53
 
54
54
  /**
55
55
  * Callback used after the entity is deleted.
56
56
  *
57
57
  * @param entityDeleteProps
58
58
  */
59
- onDelete?(entityDeleteProps: EntityOnDeleteProps<M, UserType>): void;
59
+ onDelete?(entityDeleteProps: EntityOnDeleteProps<M, USER>): void;
60
60
 
61
61
  /**
62
62
  * Callback fired when any value in the form changes. You can use it
@@ -73,12 +73,12 @@ export type EntityCallbacks<M extends Record<string, any> = any, UserType extend
73
73
  * Parameters passed to hooks when an entity is fetched
74
74
  * @group Models
75
75
  */
76
- export interface EntityOnFetchProps<M extends Record<string, any> = any, UserType extends User = User> {
76
+ export interface EntityOnFetchProps<M extends Record<string, any> = any, USER extends User = User> {
77
77
 
78
78
  /**
79
79
  * Collection of the entity
80
80
  */
81
- collection: EntityCollection<M, UserType>;
81
+ collection: EntityCollection<M, USER>;
82
82
 
83
83
  /**
84
84
  * Full path of the CMS where this collection is being fetched.
@@ -94,15 +94,15 @@ export interface EntityOnFetchProps<M extends Record<string, any> = any, UserTyp
94
94
  /**
95
95
  * Context of the app status
96
96
  */
97
- context: FireCMSContext<UserType>;
97
+ context: FireCMSContext<USER>;
98
98
  }
99
99
 
100
100
  /**
101
101
  * Parameters passed to hooks before an entity is saved
102
102
  * @group Models
103
103
  */
104
- export type EntityOnPreSaveProps<M extends Record<string, any> = any, UserType extends User = User> =
105
- Omit<EntityOnSaveProps<M, UserType>, "entityId">
104
+ export type EntityOnPreSaveProps<M extends Record<string, any> = any, USER extends User = User> =
105
+ Omit<EntityOnSaveProps<M, USER>, "entityId">
106
106
  & {
107
107
  entityId?: string;
108
108
  }
@@ -110,8 +110,8 @@ export type EntityOnPreSaveProps<M extends Record<string, any> = any, UserType e
110
110
  * Parameters passed to hooks before an entity is saved
111
111
  * @group Models
112
112
  */
113
- export type EntityOnSaveFailureProps<M extends Record<string, any> = any, UserType extends User = User> =
114
- Omit<EntityOnSaveProps<M, UserType>, "entityId">
113
+ export type EntityOnSaveFailureProps<M extends Record<string, any> = any, USER extends User = User> =
114
+ Omit<EntityOnSaveProps<M, USER>, "entityId">
115
115
  & {
116
116
  entityId?: string;
117
117
  }
@@ -120,7 +120,7 @@ export type EntityOnSaveFailureProps<M extends Record<string, any> = any, UserTy
120
120
  * Parameters passed to hooks when an entity is saved
121
121
  * @group Models
122
122
  */
123
- export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType extends User = User> {
123
+ export interface EntityOnSaveProps<M extends Record<string, any> = any, USER extends User = User> {
124
124
 
125
125
  /**
126
126
  * Resolved collection of the entity
@@ -161,14 +161,14 @@ export interface EntityOnSaveProps<M extends Record<string, any> = any, UserType
161
161
  /**
162
162
  * Context of the app status
163
163
  */
164
- context: FireCMSContext<UserType>;
164
+ context: FireCMSContext<USER>;
165
165
  }
166
166
 
167
167
  /**
168
168
  * Parameters passed to hooks when an entity is deleted
169
169
  * @group Models
170
170
  */
171
- export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserType extends User = User> {
171
+ export interface EntityOnDeleteProps<M extends Record<string, any> = any, USER extends User = User> {
172
172
 
173
173
  /**
174
174
  * collection of the entity being deleted
@@ -193,7 +193,7 @@ export interface EntityOnDeleteProps<M extends Record<string, any> = any, UserTy
193
193
  /**
194
194
  * Context of the app status
195
195
  */
196
- context: FireCMSContext<UserType>;
196
+ context: FireCMSContext<USER>;
197
197
  }
198
198
 
199
199
  /**
@@ -1,7 +1,7 @@
1
- import { DataSource } from "./datasource";
1
+ import { DataSource, DataSourceDelegate } from "./datasource";
2
2
  import { StorageSource } from "./storage";
3
3
 
4
4
  export type EntityOverrides = {
5
- dataSource?: DataSource;
5
+ dataSourceDelegate?: DataSourceDelegate;
6
6
  storageSource?: StorageSource;
7
7
  };
@@ -7,20 +7,20 @@ import { FireCMSContext } from "./firecms_context";
7
7
  * exports
8
8
  * @group Models
9
9
  */
10
- export interface ExportConfig<UserType extends User = User> {
11
- additionalFields: ExportMappingFunction<UserType> [];
10
+ export interface ExportConfig<USER extends User = User> {
11
+ additionalFields: ExportMappingFunction<USER> [];
12
12
  }
13
13
 
14
14
  /**
15
15
  * @group Models
16
16
  */
17
- export interface ExportMappingFunction<UserType extends User = User> {
17
+ export interface ExportMappingFunction<USER extends User = User> {
18
18
  key: string;
19
19
  builder: ({
20
20
  entity,
21
21
  context
22
22
  }: {
23
23
  entity: Entity<any>,
24
- context: FireCMSContext<UserType>
24
+ context: FireCMSContext<USER>
25
25
  }) => Promise<string> | string;
26
26
  }
@@ -1,6 +1,7 @@
1
- import { EntityValues } from "./entities";
2
- import { CMSType, PropertyOrBuilder } from "./properties";
1
+ import { CMSType, Property, PropertyOrBuilder } from "./properties";
3
2
  import { ResolvedEntityCollection, ResolvedProperty } from "./resolved_entities";
3
+ import { FormexController } from "@firecms/formex";
4
+ import { Entity } from "./entities";
4
5
 
5
6
  /**
6
7
  * When building a custom field you need to create a React component that takes
@@ -21,11 +22,6 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
21
22
  */
22
23
  value: T;
23
24
 
24
- /**
25
- * Initial value of this field
26
- */
27
- // initialValue: T | undefined;
28
-
29
25
  /**
30
26
  * Set value of field directly
31
27
  */
@@ -42,7 +38,7 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
42
38
  /**
43
39
  * Is the form currently submitting
44
40
  */
45
- isSubmitting: boolean;
41
+ isSubmitting?: boolean;
46
42
 
47
43
  /**
48
44
  * Should this field show the error indicator.
@@ -50,55 +46,51 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
50
46
  * filled) but we don't want to show the error until the user has tried
51
47
  * saving.
52
48
  */
53
- showError: boolean;
49
+ showError?: boolean;
54
50
 
55
51
  /**
56
52
  * Is there an error in this field. The error field has the same shape as
57
53
  * the field, replacing values with a string containing the error.
58
54
  * It takes the value `null` if there is no error
59
55
  */
60
- error: any | null;
56
+ error?: any | null;
61
57
 
62
58
  /**
63
59
  * Has this field been touched
64
60
  */
65
- touched: boolean;
61
+ touched?: boolean;
66
62
 
67
63
  /**
68
64
  * Property related to this field
69
65
  */
70
- property: ResolvedProperty<T>;
66
+ property: Property<T> | ResolvedProperty<T>;
71
67
 
72
68
  /**
73
69
  * Should this field include a description
74
70
  */
75
- includeDescription: boolean;
71
+ includeDescription?: boolean;
76
72
 
77
73
  /**
78
74
  * Flag to indicate that the underlying value has been updated in the
79
75
  * datasource
80
76
  */
81
- underlyingValueHasChanged: boolean;
77
+ underlyingValueHasChanged?: boolean;
82
78
 
83
79
  /**
84
80
  * Is this field part of an array
85
81
  */
86
- partOfArray: boolean;
87
-
88
- /**
89
- * Is this field part of a block (oneOf array)
90
- */
91
- partOfBlock: boolean;
82
+ partOfArray?: boolean;
92
83
 
93
84
  /**
94
- * Is this field being rendered in the entity table popup
85
+ * Display the child properties directly, without being wrapped in an
86
+ * extendable panel. Note that this will also hide the title of this property.
95
87
  */
96
- tableMode: boolean;
88
+ minimalistView?: boolean;
97
89
 
98
90
  /**
99
91
  * Should this field autofocus on mount
100
92
  */
101
- autoFocus: boolean;
93
+ autoFocus?: boolean;
102
94
 
103
95
  /**
104
96
  * Additional properties set by the developer
@@ -113,7 +105,21 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
113
105
  /**
114
106
  * Flag to indicate if this field should be disabled
115
107
  */
116
- disabled: boolean;
108
+ disabled?: boolean;
109
+
110
+ /**
111
+ * Size of the field
112
+ */
113
+ size?: "small" | "medium" | "large";
114
+
115
+ /**
116
+ * Some properties might change internal state (like expanding a panel).
117
+ * This function should be called when the internal state changes.
118
+ * This is used to preserve state in array containers.
119
+ *
120
+ * @param property
121
+ */
122
+ onPropertyChange?: (property: Partial<Property<any>>) => void;
117
123
 
118
124
  }
119
125
 
@@ -124,37 +130,54 @@ export interface FieldProps<T extends CMSType = any, CustomProps = any, M extend
124
130
  export interface FormContext<M extends Record<string, any> = any> {
125
131
 
126
132
  /**
127
- * Collection of the entity being modified
133
+ * Current values of the entity
128
134
  */
129
- collection: ResolvedEntityCollection<M>;
135
+ values: M;
130
136
 
131
137
  /**
132
- * Current values of the entity
138
+ * Update the value of a field
139
+ * @param key
140
+ * @param value
141
+ * @param shouldValidate
133
142
  */
134
- values: EntityValues<M>;
143
+ setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
135
144
 
136
145
  /**
137
- * Entity id, it can be null if it's a new entity
146
+ * Save the entity.
138
147
  */
139
- entityId?: string;
148
+ save: (values: M) => void;
140
149
 
141
150
  /**
142
- * Path this entity is located at
151
+ * Collection of the entity being modified
143
152
  */
144
- path: string;
153
+ collection?: ResolvedEntityCollection<M>;
145
154
 
146
155
  /**
147
- * Update the value of a field
148
- * @param key
149
- * @param value
150
- * @param shouldValidate
156
+ * Entity id, it can be null if it's a new entity
151
157
  */
152
- setFieldValue: (key: string, value: any, shouldValidate?: boolean) => void;
158
+ entityId: string;
159
+
160
+ /**
161
+ * Path this entity is located at
162
+ */
163
+ path?: string;
164
+
165
+ status: "new" | "existing" | "copy";
166
+
167
+ entity?: Entity<M>;
168
+
169
+ savingError?: Error;
170
+
171
+ openEntityMode: "side_panel" | "full_screen";
153
172
 
154
173
  /**
155
- * Save the entity
174
+ * This is the underlying formex controller that powers the form.
175
+ * If you are in a red only mode, the formex controller is there, but you can't
176
+ * operate with it
156
177
  */
157
- save: (values: EntityValues<M>) => void;
178
+ formex: FormexController<M>;
179
+
180
+ disabled: boolean;
158
181
  }
159
182
 
160
183
  /**
@@ -192,20 +215,16 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
192
215
  */
193
216
  underlyingValueHasChanged?: boolean;
194
217
 
195
- /**
196
- * Is this field being rendered in a table
197
- */
198
- tableMode?: boolean;
199
-
200
218
  /**
201
219
  * Is this field part of an array
202
220
  */
203
221
  partOfArray?: boolean;
204
222
 
205
223
  /**
206
- * Is this field part of a block (oneOf array)
224
+ * Display the child properties directly, without being wrapped in an
225
+ * extendable panel. Note that this will also hide the title of this property.
207
226
  */
208
- partOfBlock?: boolean;
227
+ minimalistView?: boolean;
209
228
 
210
229
  /**
211
230
  * Should the field take focus when rendered. When opening the popup view
@@ -217,4 +236,24 @@ export interface PropertyFieldBindingProps<T extends CMSType, M extends Record<s
217
236
  * Should this field be disabled
218
237
  */
219
238
  disabled?: boolean;
239
+
240
+ /**
241
+ * Index of the field in the array.
242
+ * Only used when the field is part of an array.
243
+ */
244
+ index?: number;
245
+
246
+ /**
247
+ * The size of the field
248
+ */
249
+ size?: "small" | "medium" | "large",
250
+
251
+ /**
252
+ * Some properties might change internal state (like expanding a panel).
253
+ * This function should be called when the internal state changes.
254
+ * This is used to preserve state in array containers.
255
+ *
256
+ * @param property
257
+ */
258
+ onPropertyChange?: (property: Partial<Property<any>>) => void;
220
259
  }
@@ -12,6 +12,8 @@ import { EntityLinkBuilder } from "./entity_link_builder";
12
12
  import { UserConfigurationPersistence } from "./local_config_persistence";
13
13
  import { FireCMSPlugin } from "./plugins";
14
14
  import { CMSAnalyticsEvent } from "./analytics";
15
+ import { EntityAction } from "./entity_actions";
16
+ import { InternalUserManagement } from "./internal_user_management";
15
17
 
16
18
  /**
17
19
  * Use this callback to build entity collections dynamically.
@@ -47,7 +49,7 @@ export type CMSViewsBuilder = (params: {
47
49
  /**
48
50
  * @group Models
49
51
  */
50
- export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
52
+ export type FireCMSProps<USER extends User> = {
51
53
 
52
54
  /**
53
55
  * Use this function to return the components you want to render under
@@ -67,6 +69,11 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
67
69
  loading: boolean;
68
70
  }) => React.ReactNode;
69
71
 
72
+ /**
73
+ * If you have a custom API key, you can use it here.
74
+ */
75
+ apiKey?: string;
76
+
70
77
  /**
71
78
  * Record of custom form fields to be used in the CMS.
72
79
  * You can use the key to reference the custom field in
@@ -87,9 +94,16 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
87
94
  *
88
95
  * You can also define an entity view from the UI.
89
96
  */
90
-
91
97
  entityViews?: EntityCustomView[];
92
98
 
99
+ /**
100
+ * List of actions that can be performed on entities.
101
+ * These actions are displayed in the entity view and in the collection view.
102
+ * You can later reuse these actions in the `entityActions` prop of a collection,
103
+ * by specifying the `key` of the action.
104
+ */
105
+ entityActions?: EntityAction[];
106
+
93
107
  /**
94
108
  * Format of the dates in the CMS.
95
109
  * Defaults to 'MMMM dd, yyyy, HH:mm:ss'
@@ -114,7 +128,7 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
114
128
  /**
115
129
  * Delegate for implementing your auth operations.
116
130
  */
117
- authController: AuthController<UserType>;
131
+ authController: AuthController<USER>;
118
132
 
119
133
  /**
120
134
  * Use this controller to access the configuration that is stored locally,
@@ -124,7 +138,9 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
124
138
 
125
139
  /**
126
140
  * Use plugins to modify the behaviour of the CMS.
127
- * Currently, in ALPHA, and likely subject to change.
141
+ * DEPRECATED: use the `plugins` prop in the `useBuildNavigationController` instead.
142
+ * This prop will work as a fallback for the `plugins` prop in the `useBuildNavigationController`.
143
+ * @deprecated
128
144
  */
129
145
  plugins?: FireCMSPlugin<any, any, any>[];
130
146
 
@@ -139,6 +155,20 @@ export type FireCMSProps<UserType extends User, EC extends EntityCollection> = {
139
155
  */
140
156
  entityLinkBuilder?: EntityLinkBuilder;
141
157
 
158
+ /**
159
+ * You can use this props to provide your own user management implementation.
160
+ * Note that this will not affect the UI, but it will be used to show user information
161
+ * in various places of the CMS, for example, to show who created or modified an entity,
162
+ * or to assign ownership of an entity.
163
+ *
164
+ * You can also use this data to be retrieved in your custom properties,
165
+ * for example, to show a list of users in a dropdown.
166
+ *
167
+ * If you are using the FireCMS user management plugin, this
168
+ * prop will be implemented automatically.
169
+ */
170
+ userManagement?: InternalUserManagement
171
+
142
172
  components?: {
143
173
 
144
174
  /**
@@ -10,6 +10,7 @@ import { SideDialogsController } from "./side_dialogs_controller";
10
10
  import { DialogsController } from "./dialogs_controller";
11
11
  import { CustomizationController } from "./customization_controller";
12
12
  import { AnalyticsController } from "./analytics_controller";
13
+ import { InternalUserManagement } from "./internal_user_management";
13
14
 
14
15
  /**
15
16
  * Context that includes the internal controllers and contexts used by the app.
@@ -18,7 +19,7 @@ import { AnalyticsController } from "./analytics_controller";
18
19
  * @group Hooks and utilities
19
20
  * @see useFireCMSContext
20
21
  */
21
- export type FireCMSContext<UserType extends User = User, AuthControllerType extends AuthController<UserType> = AuthController<UserType>> = {
22
+ export type FireCMSContext<USER extends User = User, AuthControllerType extends AuthController<USER> = AuthController<USER>> = {
22
23
 
23
24
  /**
24
25
  * Connector to your database, e.g. your Firestore database
@@ -80,4 +81,20 @@ export type FireCMSContext<UserType extends User = User, AuthControllerType exte
80
81
  */
81
82
  analyticsController?: AnalyticsController;
82
83
 
84
+ /**
85
+ * This section is used to manage users in the CMS.
86
+ * It is used to show user information in various places of the CMS,
87
+ * for example, to show who created or modified an entity,
88
+ * or to assign ownership of an entity.
89
+ *
90
+ * In the base CMS, this information is not used for access control.
91
+ * You can pass your own implementation of this section, to populate
92
+ * the dropdown of users when assigning ownership of an entity,
93
+ * or to show more information about the user.
94
+ *
95
+ * If you are using the FireCMS user management plugin, this
96
+ * section will be implemented automatically.
97
+ */
98
+ userManagement: InternalUserManagement<USER>
99
+
83
100
  };
@@ -13,6 +13,7 @@ export * from "./fields";
13
13
  export * from "./property_config";
14
14
  export * from "./datasource";
15
15
  export * from "./entity_link_builder";
16
+ export * from "./internal_user_management";
16
17
  export * from "./side_entity_controller";
17
18
  export * from "./side_dialogs_controller";
18
19
  export * from "./firecms_context";
@@ -23,7 +24,6 @@ export * from "./plugins";
23
24
  export * from "./analytics";
24
25
  export * from "./firecms";
25
26
  export * from "./roles";
26
- export * from "./appcheck";
27
27
  export * from "./export_import";
28
28
  export * from "./modify_collections";
29
29
  export * from "./analytics_controller";