@firecms/core 3.0.0-canary.29 → 3.0.0-canary.292

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 (433) 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 +77 -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/PropertyCollectionView.d.ts +23 -0
  34. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  35. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  36. package/dist/components/ReferenceWidget.d.ts +3 -1
  37. package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
  38. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  39. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  40. package/dist/components/UserDisplay.d.ts +7 -0
  41. package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
  42. package/dist/components/VirtualTable/fields/VirtualTableUserSelect.d.ts +12 -0
  43. package/dist/components/VirtualTable/types.d.ts +3 -3
  44. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  45. package/dist/components/common/index.d.ts +2 -1
  46. package/dist/components/common/table_height.d.ts +5 -0
  47. package/dist/components/common/types.d.ts +4 -6
  48. package/dist/components/common/useColumnsIds.d.ts +3 -1
  49. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  50. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  51. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  52. package/dist/components/index.d.ts +5 -2
  53. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  54. package/dist/contexts/InternalUserManagementContext.d.ts +3 -0
  55. package/dist/core/DefaultAppBar.d.ts +29 -0
  56. package/dist/core/DefaultDrawer.d.ts +19 -0
  57. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  58. package/dist/core/EntityEditView.d.ts +49 -11
  59. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  60. package/dist/core/FireCMS.d.ts +2 -3
  61. package/dist/core/FireCMSRouter.d.ts +4 -0
  62. package/dist/core/NavigationRoutes.d.ts +2 -3
  63. package/dist/core/SideDialogs.d.ts +4 -2
  64. package/dist/core/field_configs.d.ts +1 -1
  65. package/dist/core/index.d.ts +4 -4
  66. package/dist/form/EntityForm.d.ts +40 -64
  67. package/dist/form/EntityFormActions.d.ts +21 -0
  68. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  69. package/dist/form/components/ErrorFocus.d.ts +1 -1
  70. package/dist/form/components/FieldHelperText.d.ts +3 -3
  71. package/dist/form/components/FormEntry.d.ts +6 -0
  72. package/dist/form/components/FormLayout.d.ts +5 -0
  73. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  74. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  75. package/dist/form/components/LocalChangesMenu.d.ts +11 -0
  76. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  77. package/dist/form/components/index.d.ts +3 -1
  78. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  80. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  81. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  82. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  83. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  84. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  85. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  86. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  87. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  88. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  89. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  90. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -13
  91. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  92. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  93. package/dist/form/field_bindings/UserSelectFieldBinding.d.ts +12 -0
  94. package/dist/form/index.d.ts +18 -18
  95. package/dist/form/useClearRestoreValue.d.ts +2 -2
  96. package/dist/hooks/data/delete.d.ts +4 -4
  97. package/dist/hooks/data/save.d.ts +4 -5
  98. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  99. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  100. package/dist/hooks/index.d.ts +3 -0
  101. package/dist/hooks/useAuthController.d.ts +1 -1
  102. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  103. package/dist/hooks/useBuildNavigationController.d.ts +57 -13
  104. package/dist/hooks/useCollapsedGroups.d.ts +9 -0
  105. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  106. package/dist/hooks/useInternalUserManagementController.d.ts +12 -0
  107. package/dist/hooks/useModeController.d.ts +1 -2
  108. package/dist/hooks/useProjectLog.d.ts +8 -2
  109. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  110. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  111. package/dist/index.d.ts +1 -0
  112. package/dist/index.es.js +24546 -13965
  113. package/dist/index.es.js.map +1 -1
  114. package/dist/index.umd.js +27256 -588
  115. package/dist/index.umd.js.map +1 -1
  116. package/dist/internal/useBuildDataSource.d.ts +3 -17
  117. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  118. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  119. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  120. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  121. package/dist/preview/components/ReferencePreview.d.ts +4 -3
  122. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  123. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  124. package/dist/preview/components/UserPreview.d.ts +8 -0
  125. package/dist/preview/index.d.ts +1 -0
  126. package/dist/preview/util.d.ts +3 -3
  127. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  128. package/dist/routes/FireCMSRoute.d.ts +1 -0
  129. package/dist/routes/HomePageRoute.d.ts +3 -0
  130. package/dist/types/analytics.d.ts +1 -1
  131. package/dist/types/auth.d.ts +8 -10
  132. package/dist/types/collections.d.ts +123 -25
  133. package/dist/types/customization_controller.d.ts +8 -0
  134. package/dist/types/datasource.d.ts +52 -36
  135. package/dist/types/dialogs_controller.d.ts +7 -3
  136. package/dist/types/entities.d.ts +12 -3
  137. package/dist/types/entity_actions.d.ts +72 -8
  138. package/dist/types/entity_callbacks.d.ts +16 -16
  139. package/dist/types/entity_overrides.d.ts +2 -2
  140. package/dist/types/export_import.d.ts +4 -4
  141. package/dist/types/fields.d.ts +79 -39
  142. package/dist/types/firecms.d.ts +31 -3
  143. package/dist/types/firecms_context.d.ts +17 -1
  144. package/dist/types/index.d.ts +1 -1
  145. package/dist/types/internal_user_management.d.ts +20 -0
  146. package/dist/types/navigation.d.ts +62 -19
  147. package/dist/types/permissions.d.ts +4 -4
  148. package/dist/types/plugins.d.ts +58 -13
  149. package/dist/types/properties.d.ts +122 -31
  150. package/dist/types/property_config.d.ts +1 -3
  151. package/dist/types/roles.d.ts +3 -0
  152. package/dist/types/side_dialogs_controller.d.ts +10 -0
  153. package/dist/types/side_entity_controller.d.ts +14 -1
  154. package/dist/types/storage.d.ts +75 -0
  155. package/dist/types/user.d.ts +2 -1
  156. package/dist/util/builders.d.ts +3 -3
  157. package/dist/util/callbacks.d.ts +2 -0
  158. package/dist/util/collections.d.ts +1 -0
  159. package/dist/util/createFormexStub.d.ts +2 -0
  160. package/dist/util/entities.d.ts +3 -3
  161. package/dist/util/entity_actions.d.ts +2 -0
  162. package/dist/util/entity_cache.d.ts +28 -0
  163. package/dist/util/icon_list.d.ts +5 -1
  164. package/dist/util/icon_synonyms.d.ts +1 -98
  165. package/dist/util/icons.d.ts +7 -4
  166. package/dist/util/index.d.ts +3 -0
  167. package/dist/util/make_properties_editable.d.ts +1 -2
  168. package/dist/util/navigation_from_path.d.ts +10 -1
  169. package/dist/util/navigation_utils.d.ts +15 -3
  170. package/dist/util/objects.d.ts +3 -1
  171. package/dist/util/permissions.d.ts +4 -4
  172. package/dist/util/plurals.d.ts +0 -2
  173. package/dist/util/property_utils.d.ts +4 -4
  174. package/dist/util/references.d.ts +2 -2
  175. package/dist/util/resolutions.d.ts +42 -17
  176. package/dist/util/storage.d.ts +23 -2
  177. package/dist/util/useStorageUploadController.d.ts +4 -3
  178. package/package.json +70 -53
  179. package/src/app/AppBar.tsx +18 -0
  180. package/src/app/Drawer.tsx +24 -0
  181. package/src/app/Scaffold.tsx +253 -0
  182. package/src/app/index.ts +4 -0
  183. package/src/app/useApp.tsx +32 -0
  184. package/src/components/ArrayContainer.tsx +447 -229
  185. package/src/components/CircularProgressCenter.tsx +2 -2
  186. package/src/components/ClearFilterSortButton.tsx +41 -0
  187. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
  188. package/src/components/DeleteEntityDialog.tsx +13 -20
  189. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +87 -62
  190. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  191. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  192. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +84 -42
  193. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  194. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  195. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  196. package/src/components/EntityCollectionTable/index.tsx +1 -1
  197. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +34 -39
  198. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
  199. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  200. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
  201. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  202. package/src/components/EntityCollectionView/EntityCollectionView.tsx +241 -119
  203. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
  204. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  205. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  206. package/src/components/EntityCollectionView/utils.ts +19 -0
  207. package/src/components/EntityJsonPreview.tsx +66 -0
  208. package/src/components/EntityPreview.tsx +83 -62
  209. package/src/components/EntityView.tsx +34 -42
  210. package/src/components/ErrorView.tsx +4 -4
  211. package/src/components/FireCMSLogo.tsx +7 -51
  212. package/src/components/HomePage/DefaultHomePage.tsx +516 -158
  213. package/src/components/HomePage/FavouritesView.tsx +9 -14
  214. package/src/components/HomePage/HomePageDnD.tsx +702 -0
  215. package/src/components/HomePage/NavigationCard.tsx +48 -39
  216. package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
  217. package/src/components/HomePage/NavigationGroup.tsx +144 -30
  218. package/src/components/HomePage/RenameGroupDialog.tsx +123 -0
  219. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  220. package/src/components/NotFoundPage.tsx +2 -2
  221. package/src/components/PropertyCollectionView.tsx +329 -0
  222. package/src/components/PropertyConfigBadge.tsx +10 -4
  223. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  224. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +23 -13
  225. package/src/components/ReferenceWidget.tsx +21 -11
  226. package/src/components/SearchIconsView.tsx +10 -7
  227. package/src/components/SelectableTable/SelectableTable.tsx +157 -157
  228. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  229. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +27 -9
  230. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  231. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -24
  232. package/src/components/UnsavedChangesDialog.tsx +46 -0
  233. package/src/components/UserDisplay.tsx +55 -0
  234. package/src/components/VirtualTable/VirtualTable.tsx +105 -51
  235. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  236. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  237. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  238. package/src/components/VirtualTable/VirtualTableProps.tsx +28 -14
  239. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  240. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  241. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  242. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  243. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  244. package/src/components/VirtualTable/fields/VirtualTableUserSelect.tsx +99 -0
  245. package/src/components/VirtualTable/types.tsx +2 -3
  246. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +64 -44
  247. package/src/components/common/index.ts +2 -1
  248. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  249. package/src/components/common/types.tsx +4 -6
  250. package/src/components/common/useColumnsIds.tsx +16 -2
  251. package/src/components/common/useDataSourceTableController.tsx +420 -0
  252. package/src/components/common/useDebouncedCallback.tsx +20 -0
  253. package/src/components/common/useScrollRestoration.tsx +68 -0
  254. package/src/components/common/useTableSearchHelper.ts +53 -12
  255. package/src/components/index.tsx +6 -2
  256. package/src/contexts/BreacrumbsContext.tsx +38 -0
  257. package/src/contexts/DialogsProvider.tsx +5 -4
  258. package/src/contexts/InternalUserManagementContext.tsx +4 -0
  259. package/src/contexts/ModeController.tsx +1 -3
  260. package/src/contexts/SnackbarProvider.tsx +2 -0
  261. package/src/core/DefaultAppBar.tsx +219 -0
  262. package/src/core/DefaultDrawer.tsx +185 -0
  263. package/src/core/DrawerNavigationItem.tsx +66 -0
  264. package/src/core/EntityEditView.tsx +447 -469
  265. package/src/core/EntityEditViewFormActions.tsx +344 -0
  266. package/src/core/EntitySidePanel.tsx +96 -23
  267. package/src/core/FireCMS.tsx +85 -60
  268. package/src/core/FireCMSRouter.tsx +17 -0
  269. package/src/core/NavigationRoutes.tsx +28 -38
  270. package/src/core/SideDialogs.tsx +22 -12
  271. package/src/core/field_configs.tsx +41 -14
  272. package/src/core/index.tsx +6 -5
  273. package/src/form/EntityForm.tsx +740 -523
  274. package/src/form/EntityFormActions.tsx +226 -0
  275. package/src/form/PropertyFieldBinding.tsx +88 -41
  276. package/src/form/components/CustomIdField.tsx +9 -3
  277. package/src/form/components/ErrorFocus.tsx +22 -29
  278. package/src/form/components/FieldHelperText.tsx +4 -4
  279. package/src/form/components/FormEntry.tsx +22 -0
  280. package/src/form/components/FormLayout.tsx +16 -0
  281. package/src/form/components/LabelWithIcon.tsx +30 -19
  282. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  283. package/src/form/components/LocalChangesMenu.tsx +144 -0
  284. package/src/form/components/StorageItemPreview.tsx +23 -13
  285. package/src/form/components/StorageUploadProgress.tsx +5 -6
  286. package/src/form/components/index.tsx +3 -1
  287. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
  288. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
  289. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -33
  290. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  291. package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
  292. package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
  293. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
  294. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  295. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  296. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  297. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  298. package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
  299. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
  300. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
  301. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  302. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  303. package/src/form/field_bindings/UserSelectFieldBinding.tsx +94 -0
  304. package/src/form/index.tsx +21 -37
  305. package/src/form/useClearRestoreValue.tsx +2 -2
  306. package/src/form/validation.ts +13 -23
  307. package/src/hooks/data/delete.ts +6 -5
  308. package/src/hooks/data/save.ts +26 -33
  309. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  310. package/src/hooks/data/useDataSource.tsx +11 -3
  311. package/src/hooks/data/useEntityFetch.tsx +10 -6
  312. package/src/hooks/index.tsx +4 -0
  313. package/src/hooks/useAuthController.tsx +1 -1
  314. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  315. package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
  316. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  317. package/src/hooks/useBuildModeController.tsx +22 -29
  318. package/src/hooks/useBuildNavigationController.tsx +515 -121
  319. package/src/hooks/useCollapsedGroups.ts +64 -0
  320. package/src/hooks/useFireCMSContext.tsx +9 -35
  321. package/src/hooks/useInternalUserManagementController.tsx +16 -0
  322. package/src/hooks/useLargeLayout.tsx +0 -35
  323. package/src/hooks/useModeController.tsx +1 -2
  324. package/src/hooks/useProjectLog.tsx +32 -10
  325. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  326. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  327. package/src/index.ts +1 -0
  328. package/src/internal/useBuildDataSource.ts +79 -85
  329. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  330. package/src/internal/useBuildSideEntityController.tsx +204 -77
  331. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  332. package/src/preview/PropertyPreview.tsx +42 -25
  333. package/src/preview/PropertyPreviewProps.tsx +7 -1
  334. package/src/preview/components/BooleanPreview.tsx +2 -2
  335. package/src/preview/components/EmptyValue.tsx +1 -1
  336. package/src/preview/components/EnumValuesChip.tsx +2 -2
  337. package/src/preview/components/ImagePreview.tsx +26 -37
  338. package/src/preview/components/ReferencePreview.tsx +30 -38
  339. package/src/preview/components/StorageThumbnail.tsx +5 -1
  340. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  341. package/src/preview/components/UserPreview.tsx +27 -0
  342. package/src/preview/index.ts +1 -0
  343. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
  344. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
  345. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
  346. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
  347. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
  348. package/src/preview/property_previews/ArrayPropertyPreview.tsx +8 -7
  349. package/src/preview/property_previews/MapPropertyPreview.tsx +14 -13
  350. package/src/preview/property_previews/NumberPropertyPreview.tsx +2 -2
  351. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  352. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  353. package/src/preview/util.ts +10 -10
  354. package/src/routes/CustomCMSRoute.tsx +21 -0
  355. package/src/routes/FireCMSRoute.tsx +246 -0
  356. package/src/routes/HomePageRoute.tsx +17 -0
  357. package/src/types/analytics.ts +3 -0
  358. package/src/types/auth.tsx +9 -13
  359. package/src/types/collections.ts +146 -30
  360. package/src/types/customization_controller.tsx +9 -1
  361. package/src/types/datasource.ts +61 -43
  362. package/src/types/dialogs_controller.tsx +7 -3
  363. package/src/types/entities.ts +19 -3
  364. package/src/types/entity_actions.tsx +86 -10
  365. package/src/types/entity_callbacks.ts +18 -18
  366. package/src/types/entity_overrides.tsx +2 -2
  367. package/src/types/export_import.ts +4 -4
  368. package/src/types/fields.tsx +91 -42
  369. package/src/types/firecms.tsx +34 -4
  370. package/src/types/firecms_context.tsx +18 -1
  371. package/src/types/index.ts +1 -1
  372. package/src/types/internal_user_management.ts +24 -0
  373. package/src/types/navigation.ts +77 -24
  374. package/src/types/permissions.ts +5 -5
  375. package/src/types/plugins.tsx +69 -15
  376. package/src/types/properties.ts +141 -33
  377. package/src/types/property_config.tsx +2 -2
  378. package/src/types/roles.ts +3 -0
  379. package/src/types/side_dialogs_controller.tsx +15 -0
  380. package/src/types/side_entity_controller.tsx +16 -1
  381. package/src/types/storage.ts +83 -1
  382. package/src/types/user.ts +3 -1
  383. package/src/util/builders.ts +10 -8
  384. package/src/util/callbacks.ts +119 -0
  385. package/src/util/collections.ts +8 -0
  386. package/src/util/createFormexStub.tsx +66 -0
  387. package/src/util/entities.ts +11 -8
  388. package/src/util/entity_actions.ts +28 -0
  389. package/src/util/entity_cache.ts +223 -0
  390. package/src/util/enums.ts +1 -1
  391. package/src/util/icon_list.ts +16 -10
  392. package/src/util/icon_synonyms.ts +3 -100
  393. package/src/util/icons.tsx +36 -11
  394. package/src/util/index.ts +3 -0
  395. package/src/util/join_collections.ts +11 -4
  396. package/src/util/make_properties_editable.ts +5 -19
  397. package/src/util/navigation_from_path.ts +33 -12
  398. package/src/util/navigation_utils.ts +141 -25
  399. package/src/util/objects.ts +128 -33
  400. package/src/util/parent_references_from_path.ts +3 -3
  401. package/src/util/permissions.ts +9 -8
  402. package/src/util/plurals.ts +0 -2
  403. package/src/util/property_utils.tsx +17 -6
  404. package/src/util/references.ts +19 -8
  405. package/src/util/resolutions.ts +122 -48
  406. package/src/util/storage.ts +79 -21
  407. package/src/util/strings.ts +2 -2
  408. package/src/util/useStorageUploadController.tsx +162 -62
  409. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  410. package/dist/components/FireCMSAppBar.d.ts +0 -26
  411. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  412. package/dist/components/VirtualTable/common.d.ts +0 -2
  413. package/dist/core/Drawer.d.ts +0 -23
  414. package/dist/core/Scaffold.d.ts +0 -55
  415. package/dist/core/SideEntityView.d.ts +0 -7
  416. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  417. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  418. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  419. package/dist/internal/useLocaleConfig.d.ts +0 -1
  420. package/dist/types/appcheck.d.ts +0 -26
  421. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  422. package/src/components/FireCMSAppBar.tsx +0 -165
  423. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  424. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  425. package/src/core/Drawer.tsx +0 -191
  426. package/src/core/Scaffold.tsx +0 -281
  427. package/src/core/SideEntityView.tsx +0 -38
  428. package/src/form/components/FormikArrayContainer.tsx +0 -44
  429. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  430. package/src/internal/useBuildCustomizationController.tsx +0 -5
  431. package/src/internal/useLocaleConfig.tsx +0 -18
  432. package/src/types/appcheck.ts +0 -29
  433. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -1,9 +1,11 @@
1
- import React, { useMemo } from "react";
1
+ "use client";
2
2
 
3
- import { EntityCollection, FireCMSContext, FireCMSPlugin, FireCMSProps, User } from "../types";
4
- import { AuthControllerContext, ModeControllerContext } from "../contexts";
3
+ import React, { useMemo } from "react";
4
+ import { CenteredView, Typography } from "@firecms/ui";
5
+ import { CustomizationController, FireCMSContext, FireCMSPlugin, FireCMSProps, User } from "../types";
6
+ import { AuthControllerContext } from "../contexts";
5
7
  import { useBuildSideEntityController } from "../internal/useBuildSideEntityController";
6
- import { useCustomizationController, useFireCMSContext, useModeController } from "../hooks";
8
+ import { useCustomizationController, useFireCMSContext } from "../hooks";
7
9
  import { useBuildSideDialogsController } from "../internal/useBuildSideDialogsController";
8
10
  import { ErrorView } from "../components";
9
11
  import { StorageSourceContext } from "../contexts/StorageSourceContext";
@@ -12,14 +14,13 @@ import { DataSourceContext } from "../contexts/DataSourceContext";
12
14
  import { SideEntityControllerContext } from "../contexts/SideEntityControllerContext";
13
15
  import { NavigationContext } from "../contexts/NavigationContext";
14
16
  import { SideDialogsControllerContext } from "../contexts/SideDialogsControllerContext";
15
- import { useLocaleConfig } from "../internal/useLocaleConfig";
16
- import { CenteredView, Typography } from "@firecms/ui";
17
17
  import { DialogsProvider } from "../contexts/DialogsProvider";
18
18
  import { useBuildDataSource } from "../internal/useBuildDataSource";
19
- import { useBuildCustomizationController } from "../internal/useBuildCustomizationController";
20
19
  import { CustomizationControllerContext } from "../contexts/CustomizationControllerContext";
21
20
  import { AnalyticsContext } from "../contexts/AnalyticsContext";
22
21
  import { useProjectLog } from "../hooks/useProjectLog";
22
+ import { BreadcrumbsProvider } from "../contexts/BreacrumbsContext";
23
+ import { InternalUserManagementContext } from "../contexts/InternalUserManagementContext";
23
24
 
24
25
  /**
25
26
  * If you are using independent components of the CMS
@@ -30,12 +31,10 @@ import { useProjectLog } from "../hooks/useProjectLog";
30
31
  *
31
32
  * You only need to use this component if you are building a custom app.
32
33
  *
33
- * @constructor
34
34
  * @group Core
35
35
  */
36
- export function FireCMS<UserType extends User, EC extends EntityCollection>(props: FireCMSProps<UserType, EC>) {
36
+ export function FireCMS<USER extends User>(props: FireCMSProps<USER>) {
37
37
 
38
- const modeController = useModeController();
39
38
  const {
40
39
  children,
41
40
  entityLinkBuilder,
@@ -45,47 +44,71 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
45
44
  authController,
46
45
  storageSource,
47
46
  dataSourceDelegate,
48
- plugins,
47
+ plugins: _pluginsProp,
49
48
  onAnalyticsEvent,
50
49
  propertyConfigs,
51
50
  entityViews,
51
+ entityActions,
52
52
  components,
53
53
  navigationController,
54
+ apiKey,
55
+ userManagement: _userManagement
54
56
  } = props;
55
57
 
56
- useLocaleConfig(locale);
58
+ if (_pluginsProp) {
59
+ console.warn("The `plugins` prop is deprecated in the FireCMS component. You should pass your plugins to `useBuildNavigationController` instead.");
60
+ }
57
61
 
58
- /**
59
- * Controller in charge of fetching and persisting data
60
- */
61
- const dataSource = useBuildDataSource({
62
- delegate: dataSourceDelegate,
63
- propertyConfigs,
64
- navigationController
65
- });
62
+ const plugins = navigationController.plugins ?? _pluginsProp;
63
+ const userManagement = plugins?.find(p => p.userManagement)?.userManagement
64
+ ?? _userManagement
65
+ ?? {
66
+ users: [],
67
+ getUser: (uid: string) => null
68
+ };
66
69
 
67
70
  const sideDialogsController = useBuildSideDialogsController();
68
- const sideEntityController = useBuildSideEntityController(navigationController, sideDialogsController);
71
+ const sideEntityController = useBuildSideEntityController(navigationController, sideDialogsController, authController);
69
72
 
70
73
  const pluginsLoading = plugins?.some(p => p.loading) ?? false;
71
74
 
72
75
  const loading = authController.initialLoading || navigationController.loading || pluginsLoading;
73
76
 
74
- const customizationController = useBuildCustomizationController({
77
+ const customizationController: CustomizationController = {
75
78
  dateTimeFormat,
76
79
  locale,
77
80
  entityLinkBuilder,
78
81
  plugins,
79
82
  entityViews: entityViews ?? [],
83
+ entityActions: entityActions ?? [],
80
84
  propertyConfigs: propertyConfigs ?? {},
81
85
  components
82
- });
86
+ };
83
87
 
84
88
  const analyticsController = useMemo(() => ({
85
89
  onAnalyticsEvent
86
90
  }), []);
87
91
 
88
- const accessResponse = useProjectLog(authController, plugins);
92
+ const accessResponse = useProjectLog({
93
+ apiKey,
94
+ authController,
95
+ dataSourceDelegate,
96
+ plugins
97
+ });
98
+
99
+ /**
100
+ * Controller in charge of fetching and persisting data
101
+ */
102
+ const dataSource = useBuildDataSource({
103
+ delegate: dataSourceDelegate,
104
+ propertyConfigs,
105
+ navigationController,
106
+ authController
107
+ });
108
+
109
+ if (accessResponse?.message) {
110
+ console.warn(accessResponse.message);
111
+ }
89
112
 
90
113
  if (navigationController.navigationLoadingError) {
91
114
  return (
@@ -109,54 +132,56 @@ export function FireCMS<UserType extends User, EC extends EntityCollection>(prop
109
132
 
110
133
  if (accessResponse?.blocked) {
111
134
  return (
112
- <CenteredView maxWidth={"md"} fullScreen={true}>
113
- <Typography variant={"h4"}>
114
- Access blocked
135
+ <CenteredView maxWidth={"md"} fullScreen={true} className={"flex flex-col gap-2"}>
136
+ <Typography variant={"h4"} gutterBottom>
137
+ License needed
115
138
  </Typography>
116
139
  <Typography>
117
- This app has been blocked. Please reach out at <a
140
+ You need a valid license to use FireCMS PRO. Please reach out at <a
118
141
  href={"mailto:hello@firecms.co"}>hello@firecms.co</a> for more information.
119
142
  </Typography>
120
143
  {accessResponse?.message &&
121
- <Typography>Response from the server: {accessResponse?.message}</Typography>}
144
+ <Typography>{accessResponse?.message}</Typography>}
122
145
  </CenteredView>
123
146
  );
124
147
  }
125
148
 
126
149
  return (
127
- <ModeControllerContext.Provider value={modeController}>
128
- <AnalyticsContext.Provider value={analyticsController}>
129
- <CustomizationControllerContext.Provider value={customizationController}>
130
- <UserConfigurationPersistenceContext.Provider
131
- value={userConfigPersistence}>
132
- <StorageSourceContext.Provider
133
- value={storageSource}>
134
- <DataSourceContext.Provider
135
- value={dataSource}>
136
- <AuthControllerContext.Provider
137
- value={authController}>
138
- <SideDialogsControllerContext.Provider
139
- value={sideDialogsController}>
140
- <SideEntityControllerContext.Provider
141
- value={sideEntityController}>
142
- <NavigationContext.Provider
143
- value={navigationController}>
150
+ <AnalyticsContext.Provider value={analyticsController}>
151
+ <CustomizationControllerContext.Provider value={customizationController}>
152
+ <UserConfigurationPersistenceContext.Provider
153
+ value={userConfigPersistence}>
154
+ <StorageSourceContext.Provider
155
+ value={storageSource}>
156
+ <DataSourceContext.Provider
157
+ value={dataSource}>
158
+ <AuthControllerContext.Provider
159
+ value={authController}>
160
+ <SideDialogsControllerContext.Provider
161
+ value={sideDialogsController}>
162
+ <SideEntityControllerContext.Provider
163
+ value={sideEntityController}>
164
+ <NavigationContext.Provider
165
+ value={navigationController}>
166
+ <InternalUserManagementContext.Provider value={userManagement}>
144
167
  <DialogsProvider>
145
- <FireCMSInternal
146
- loading={loading}>
147
- {children}
148
- </FireCMSInternal>
168
+ <BreadcrumbsProvider>
169
+ <FireCMSInternal
170
+ loading={loading}>
171
+ {children}
172
+ </FireCMSInternal>
173
+ </BreadcrumbsProvider>
149
174
  </DialogsProvider>
150
- </NavigationContext.Provider>
151
- </SideEntityControllerContext.Provider>
152
- </SideDialogsControllerContext.Provider>
153
- </AuthControllerContext.Provider>
154
- </DataSourceContext.Provider>
155
- </StorageSourceContext.Provider>
156
- </UserConfigurationPersistenceContext.Provider>
157
- </CustomizationControllerContext.Provider>
158
- </AnalyticsContext.Provider>
159
- </ModeControllerContext.Provider>
175
+ </InternalUserManagementContext.Provider>
176
+ </NavigationContext.Provider>
177
+ </SideEntityControllerContext.Provider>
178
+ </SideDialogsControllerContext.Provider>
179
+ </AuthControllerContext.Provider>
180
+ </DataSourceContext.Provider>
181
+ </StorageSourceContext.Provider>
182
+ </UserConfigurationPersistenceContext.Provider>
183
+ </CustomizationControllerContext.Provider>
184
+ </AnalyticsContext.Provider>
160
185
  );
161
186
 
162
187
  }
@@ -0,0 +1,17 @@
1
+ import { createBrowserRouter, RouterProvider } from "react-router-dom"
2
+ import { removeInitialAndTrailingSlashes } from "../util";
3
+
4
+ export function FireCMSRouter({
5
+ children,
6
+ basePath
7
+ }: {
8
+ children: React.ReactNode,
9
+ basePath?: string;
10
+ }) {
11
+ return <RouterProvider router={createBrowserRouter([
12
+ {
13
+ path: basePath ? `${removeInitialAndTrailingSlashes(basePath)}/*` : "/*",
14
+ element: children
15
+ }
16
+ ])}/>;
17
+ }
@@ -2,9 +2,11 @@ import React from "react";
2
2
 
3
3
  import { Route, Routes, useLocation } from "react-router-dom";
4
4
  import { CMSView } from "../types";
5
- import { DefaultHomePage, EntityCollectionView, ErrorBoundary, NotFoundPage } from "../components";
5
+ import { DefaultHomePage, ErrorBoundary, NotFoundPage } from "../components";
6
6
  import { useNavigationController } from "../hooks";
7
- import { toArray } from "../util/arrays";
7
+ import { FireCMSRoute } from "../routes/FireCMSRoute";
8
+ import { CustomCMSRoute } from "../routes/CustomCMSRoute";
9
+ import { HomePageRoute } from "../routes/HomePageRoute";
8
10
 
9
11
  /**
10
12
  * @group Components
@@ -13,9 +15,9 @@ export type NavigationRoutesProps = {
13
15
  /**
14
16
  * In case you need to override the home page
15
17
  */
16
- HomePage?: React.ComponentType;
18
+ homePage?: React.ReactNode;
17
19
 
18
- customRoutes?: React.ReactNode[]
20
+ children?: React.ReactNode | React.ReactNode[]
19
21
 
20
22
  };
21
23
 
@@ -25,14 +27,12 @@ export type NavigationRoutesProps = {
25
27
  * or the home route) related to a {@link NavigationController}.
26
28
  * This component needs a parent {@link FireCMS}
27
29
  *
28
- * @constructor
29
30
  * @group Components
30
31
  */
31
-
32
32
  export const NavigationRoutes = React.memo<NavigationRoutesProps>(
33
33
  function NavigationRoutes({
34
- HomePage = DefaultHomePage,
35
- customRoutes
34
+ homePage = <DefaultHomePage/>,
35
+ children
36
36
  }: NavigationRoutesProps) {
37
37
 
38
38
  const location = useLocation();
@@ -68,43 +68,33 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
68
68
  });
69
69
  }
70
70
 
71
- // we reorder collections so that nested paths are included first
72
- const sortedCollections = [...(navigation.collections ?? [])]
73
- .sort((a, b) => b.path.length - a.path.length);
74
-
75
- const collectionRoutes = sortedCollections
76
- .map((collection) => {
77
- const urlPath = navigation.buildUrlCollectionPath(collection.id ?? collection.path);
78
- return <Route path={urlPath + "/*"}
79
- key={`navigation_${collection.id ?? collection.path}`}
80
- element={
81
- <ErrorBoundary>
82
- <EntityCollectionView
83
- key={`collection_view_${collection.id ?? collection.path}`}
84
- isSubCollection={false}
85
- parentCollectionIds={[]}
86
- fullPath={collection.id ?? collection.path}
87
- {...collection}
88
- Actions={toArray(collection.Actions)}/>
89
- </ErrorBoundary>
90
- }/>;
91
- }
92
- );
71
+ const collectionUrlPath = navigation.buildUrlCollectionPath("");
72
+ const collectionRoute = (
73
+ <Route path={collectionUrlPath + "/*"}
74
+ key={`navigation_entity`}
75
+ element={
76
+ <ErrorBoundary>
77
+ <FireCMSRoute/>
78
+ </ErrorBoundary>
79
+ }/>
80
+ );
93
81
 
94
82
  const homeRoute = (
95
83
  <Route path={"/"}
96
- element={<HomePage/>}/>
84
+ element={<HomePageRoute>{homePage}</HomePageRoute>}/>
97
85
  );
98
86
 
99
- const notFoundRoute = <Route path={"*"}
100
- element={
101
- <NotFoundPage/>
102
- }/>;
87
+ const notFoundRoute = (
88
+ <Route path={"*"}
89
+ element={
90
+ <NotFoundPage/>
91
+ }/>
92
+ );
103
93
 
104
94
  return (
105
95
  <Routes location={baseLocation}>
106
96
 
107
- {collectionRoutes}
97
+ {collectionRoute}
108
98
 
109
99
  {cmsViews}
110
100
 
@@ -112,7 +102,7 @@ export const NavigationRoutes = React.memo<NavigationRoutesProps>(
112
102
 
113
103
  {notFoundRoute}
114
104
 
115
- {customRoutes}
105
+ {children}
116
106
 
117
107
  </Routes>
118
108
  );
@@ -122,6 +112,6 @@ const buildCMSViewRoute = (path: string, cmsView: CMSView) => {
122
112
  return <Route
123
113
  key={"navigation_view_" + path}
124
114
  path={path}
125
- element={cmsView.view}
115
+ element={<CustomCMSRoute cmsView={cmsView}/>}
126
116
  />;
127
117
  };
@@ -1,19 +1,22 @@
1
- import React, { useContext, useEffect, useState } from "react";
1
+ import React, { useCallback, useContext, useEffect, useRef, useState } from "react";
2
2
  import { useSideDialogsController } from "../hooks";
3
3
  import { SideDialogPanelProps } from "../types";
4
4
  import { Sheet } from "@firecms/ui";
5
- import { UnsavedChangesDialog, useNavigationUnsavedChangesDialog } from "../internal/useUnsavedChangesDialog";
5
+ import { useNavigationUnsavedChangesDialog } from "../internal/useUnsavedChangesDialog";
6
6
  import { ErrorBoundary } from "../components";
7
+ import { UnsavedChangesDialog } from "../components/UnsavedChangesDialog";
7
8
 
8
- export type SideDialogContextProps = {
9
+ export type SideDialogController = {
9
10
  blocked: boolean,
10
11
  setBlocked: (blocked: boolean) => void,
11
12
  setBlockedNavigationMessage: (message?: React.ReactNode) => void,
12
13
  width?: string,
13
- close: (force?: boolean) => void
14
+ close: (force?: boolean) => void;
15
+ pendingClose: boolean,
16
+ setPendingClose: (pendingClose: boolean) => void
14
17
  }
15
18
 
16
- const SideDialogContext = React.createContext<SideDialogContextProps>({
19
+ const SideDialogContext = React.createContext<SideDialogController>({
17
20
  width: "",
18
21
  blocked: false,
19
22
  setBlocked: (blocked: boolean) => {
@@ -21,6 +24,10 @@ const SideDialogContext = React.createContext<SideDialogContextProps>({
21
24
  setBlockedNavigationMessage: (message?: React.ReactNode) => {
22
25
  },
23
26
  close: () => {
27
+ },
28
+ pendingClose: false,
29
+ setPendingClose: () => {
30
+
24
31
  }
25
32
  });
26
33
 
@@ -29,7 +36,7 @@ const SideDialogContext = React.createContext<SideDialogContextProps>({
29
36
  * in contrast with {@link useSideDialogsController} which handles the
30
37
  * state of all the dialogs.
31
38
  */
32
- export const useSideDialogContext = () => useContext<SideDialogContextProps>(SideDialogContext);
39
+ export const useSideDialogContext = () => useContext<SideDialogController>(SideDialogContext);
33
40
 
34
41
  /**
35
42
  * This is the component in charge of rendering the side dialogs used
@@ -72,6 +79,8 @@ function SideDialogView({
72
79
  const [blocked, setBlocked] = useState(false);
73
80
  const [blockedNavigationMessage, setBlockedNavigationMessage] = useState<React.ReactNode | undefined>();
74
81
 
82
+ const [pendingClose, setPendingClose] = useState(false);
83
+
75
84
  const widthRef = React.useRef<string | undefined>(panel?.width);
76
85
  const width = widthRef.current;
77
86
 
@@ -111,8 +120,6 @@ function SideDialogView({
111
120
  }
112
121
  };
113
122
 
114
- // const offsetClass = offsetPosition > 0 ? `transform translate-x-${offsetPosition}` : "";
115
-
116
123
  return (
117
124
  <SideDialogContext.Provider
118
125
  value={{
@@ -120,19 +127,22 @@ function SideDialogView({
120
127
  setBlocked,
121
128
  setBlockedNavigationMessage,
122
129
  width,
123
- close: onCloseRequest
130
+ close: onCloseRequest,
131
+ pendingClose,
132
+ setPendingClose
124
133
  }}>
125
134
 
126
135
  <Sheet
127
136
  open={Boolean(panel)}
128
137
  onOpenChange={(open) => !open && onCloseRequest()}
138
+ title={"Side dialog " + panel?.key}
129
139
  >
130
140
  {panel &&
131
141
  <div
132
- className={"transform max-w-[100vw] lg:max-w-[95vw] flex flex-col h-full transition-all duration-250 ease-in-out bg-white dark:bg-gray-900 "}
142
+ className={"transform max-w-[100vw] lg:max-w-[95vw] flex flex-col h-full transition-all duration-250 ease-in-out bg-white dark:bg-surface-900 "}
133
143
  style={{
134
144
  width: panel.width,
135
- transform: `translateX(-${offsetPosition * 200}px)`
145
+ transform: `translateX(-${offsetPosition * 200}px)`,
136
146
  }}
137
147
  >
138
148
  <ErrorBoundary>
@@ -145,7 +155,7 @@ function SideDialogView({
145
155
  </Sheet>
146
156
 
147
157
  <UnsavedChangesDialog
148
- open={navigationWasBlocked || drawerCloseRequested}
158
+ open={drawerCloseRequested}
149
159
  handleOk={drawerCloseRequested ? handleDrawerCloseOk : handleNavigationOk}
150
160
  handleCancel={drawerCloseRequested ? handleDrawerCloseCancel : handleNavigationCancel}
151
161
  body={blockedNavigationMessage}/>
@@ -8,8 +8,9 @@ import {
8
8
  DateTimeFieldBinding,
9
9
  KeyValueFieldBinding,
10
10
  MapFieldBinding,
11
- MarkdownFieldBinding,
12
- MultiSelectBinding,
11
+ MarkdownEditorFieldBinding,
12
+ MultiSelectFieldBinding,
13
+ ReferenceAsStringFieldBinding,
13
14
  ReferenceFieldBinding,
14
15
  RepeatFieldBinding,
15
16
  SelectFieldBinding,
@@ -23,7 +24,6 @@ import {
23
24
  AddLinkIcon,
24
25
  BallotIcon,
25
26
  DriveFolderUploadIcon,
26
- EmailIcon,
27
27
  FlagIcon,
28
28
  FormatListNumberedIcon,
29
29
  FormatQuoteIcon,
@@ -31,14 +31,17 @@ import {
31
31
  LinkIcon,
32
32
  ListAltIcon,
33
33
  ListIcon,
34
- NumbersIcon,
34
+ MailIcon,
35
+ NumbersIcon, PersonIcon,
35
36
  RepeatIcon,
36
37
  ScheduleIcon,
37
38
  ShortTextIcon,
38
39
  SubjectIcon,
39
40
  UploadFileIcon,
41
+ VerifiedUserIcon,
40
42
  ViewStreamIcon
41
43
  } from "@firecms/ui";
44
+ import { UserSelectFieldBinding } from "../form/field_bindings/UserSelectFieldBinding";
42
45
 
43
46
  export function isDefaultFieldConfigId(id: string) {
44
47
  return Object.keys(DEFAULT_FIELD_CONFIGS).includes(id);
@@ -77,7 +80,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
77
80
  property: {
78
81
  dataType: "string",
79
82
  markdown: true,
80
- Field: MarkdownFieldBinding
83
+ Field: MarkdownEditorFieldBinding
81
84
  }
82
85
  },
83
86
  url: {
@@ -96,7 +99,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
96
99
  key: "email",
97
100
  name: "Email",
98
101
  description: "Text with email validation",
99
- Icon: EmailIcon,
102
+ Icon: MailIcon,
100
103
  color: "#154fb3",
101
104
  property: {
102
105
  dataType: "string",
@@ -129,7 +132,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
129
132
  },
130
133
  multi_select: {
131
134
  key: "multi_select",
132
- name: "Multi select",
135
+ name: "Multi select (enum)",
133
136
  description: "Select multiple text values from within an enumeration",
134
137
  Icon: ListAltIcon,
135
138
  color: "#4223c9",
@@ -139,7 +142,17 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
139
142
  dataType: "string",
140
143
  enumValues: [],
141
144
  },
142
- Field: MultiSelectBinding
145
+ Field: MultiSelectFieldBinding
146
+ }
147
+ },
148
+ user_select: {
149
+ key: "user_select",
150
+ name: "User select",
151
+ description: "Select a user from the user management system. Store the user ID.",
152
+ Icon: PersonIcon,
153
+ property: {
154
+ dataType: "string",
155
+ Field: UserSelectFieldBinding
143
156
  }
144
157
  },
145
158
  number_input: {
@@ -177,7 +190,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
177
190
  dataType: "number",
178
191
  enumValues: [],
179
192
  },
180
- Field: MultiSelectBinding
193
+ Field: MultiSelectFieldBinding
181
194
  }
182
195
  },
183
196
  file_upload: {
@@ -211,10 +224,21 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
211
224
  Field: StorageUploadFieldBinding
212
225
  }
213
226
  },
227
+ reference_as_string: {
228
+ key: "reference_as_string",
229
+ name: "Reference (as string)",
230
+ description: "The value refers to a different collection (it is saved as a string)",
231
+ Icon: LinkIcon,
232
+ color: "#154fb3",
233
+ property: {
234
+ dataType: "string",
235
+ Field: ReferenceAsStringFieldBinding
236
+ }
237
+ },
214
238
  reference: {
215
239
  key: "reference",
216
240
  name: "Reference",
217
- description: "The value refers to a different collection",
241
+ description: "The value refers to a different collection (it is saved as a reference)",
218
242
  Icon: LinkIcon,
219
243
  color: "#ff0042",
220
244
  property: {
@@ -300,7 +324,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
300
324
  block: {
301
325
  key: "block",
302
326
  name: "Block",
303
- description: "A complex field that allows the user to compose different fields together, with a key->value format",
327
+ description: "A complex field that allows the user to compose different fields together, with a key/value format",
304
328
  Icon: ViewStreamIcon,
305
329
  color: "#ff9408",
306
330
  property: {
@@ -331,7 +355,7 @@ export function getFieldConfig(property: Property | ResolvedProperty, propertyCo
331
355
  }
332
356
  const defaultFieldConfig = DEFAULT_FIELD_CONFIGS[defaultFieldId];
333
357
  const customField = fieldId ? propertyConfigs[fieldId] : undefined;
334
- return mergeDeep(defaultFieldConfig ?? {}, customField ?? {});
358
+ return mergeDeep(defaultFieldConfig ?? {}, customField ?? {} as PropertyConfig);
335
359
  }
336
360
 
337
361
  export function getDefaultFieldId(property: Property | ResolvedProperty) {
@@ -348,6 +372,10 @@ export function getDefaultFieldId(property: Property | ResolvedProperty) {
348
372
  return "email";
349
373
  } else if (property.enumValues) {
350
374
  return "select";
375
+ } else if (property.userSelect) {
376
+ return "user_select";
377
+ } else if (property.reference) {
378
+ return "reference_as_string";
351
379
  } else {
352
380
  return "text_field";
353
381
  }
@@ -359,8 +387,7 @@ export function getDefaultFieldId(property: Property | ResolvedProperty) {
359
387
  } else if (property.dataType === "map") {
360
388
  if (property.keyValue)
361
389
  return "key_value";
362
- if (property.properties)
363
- return "group";
390
+ return "group";
364
391
  } else if (property.dataType === "array") {
365
392
  const of = (property as ArrayProperty).of;
366
393
  const oneOf = (property as ArrayProperty).oneOf;
@@ -1,12 +1,13 @@
1
1
  export * from "./FireCMS";
2
2
 
3
- export type { ScaffoldProps } from "./Scaffold";
4
- export { Scaffold } from "./Scaffold";
5
-
6
- export type { DrawerProps } from "./Drawer";
7
- export { Drawer, DrawerNavigationItem } from "./Drawer";
3
+ export * from "./DefaultDrawer";
4
+ export * from "./DrawerNavigationItem";
8
5
 
9
6
  export * from "./field_configs";
10
7
 
11
8
  export * from "./SideDialogs";
12
9
  export * from "./NavigationRoutes";
10
+
11
+ export * from "./FireCMSRouter";
12
+
13
+ export * from "../app";