@firecms/core 3.0.0-canary.2 → 3.0.0-canary.200

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 (409) hide show
  1. package/README.md +4 -4
  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 +30 -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 +23 -6
  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 +13 -13
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +3 -3
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  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 +17 -4
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  24. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +26 -7
  26. package/dist/components/EntityView.d.ts +11 -0
  27. package/dist/components/ErrorView.d.ts +1 -1
  28. package/dist/components/FieldCaption.d.ts +5 -0
  29. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  30. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  31. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  32. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  33. package/dist/components/HomePage/index.d.ts +3 -1
  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 +6 -4
  37. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  38. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  39. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  40. package/dist/components/VirtualTable/VirtualTableProps.d.ts +29 -13
  41. package/dist/components/VirtualTable/types.d.ts +3 -3
  42. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  43. package/dist/components/common/index.d.ts +2 -1
  44. package/dist/components/common/table_height.d.ts +5 -0
  45. package/dist/components/common/types.d.ts +4 -6
  46. package/dist/components/common/useColumnsIds.d.ts +3 -1
  47. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  48. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  49. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  50. package/dist/components/index.d.ts +8 -5
  51. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  52. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  53. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  54. package/dist/core/DefaultDrawer.d.ts +19 -0
  55. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  56. package/dist/core/EntityEditView.d.ts +44 -0
  57. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  58. package/dist/core/FireCMS.d.ts +2 -2
  59. package/dist/core/FireCMSRouter.d.ts +4 -0
  60. package/dist/core/NavigationRoutes.d.ts +2 -3
  61. package/dist/core/SideDialogs.d.ts +4 -2
  62. package/dist/core/index.d.ts +4 -6
  63. package/dist/form/EntityForm.d.ts +45 -69
  64. package/dist/form/EntityFormActions.d.ts +17 -0
  65. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  66. package/dist/form/components/ErrorFocus.d.ts +1 -1
  67. package/dist/form/components/FieldHelperText.d.ts +3 -3
  68. package/dist/form/components/FormEntry.d.ts +6 -0
  69. package/dist/form/components/FormLayout.d.ts +5 -0
  70. package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
  71. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  72. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  73. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  74. package/dist/form/components/index.d.ts +4 -1
  75. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  80. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  81. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  82. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  83. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  84. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  85. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  86. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  87. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  88. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  89. package/dist/form/index.d.ts +17 -18
  90. package/dist/form/useClearRestoreValue.d.ts +2 -2
  91. package/dist/form/validation.d.ts +1 -1
  92. package/dist/hooks/data/delete.d.ts +4 -4
  93. package/dist/hooks/data/save.d.ts +4 -5
  94. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  95. package/dist/hooks/data/useDataSource.d.ts +2 -2
  96. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  97. package/dist/hooks/index.d.ts +4 -1
  98. package/dist/hooks/useAuthController.d.ts +1 -1
  99. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  100. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  101. package/dist/hooks/useBuildNavigationController.d.ts +11 -6
  102. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  103. package/dist/hooks/useModeController.d.ts +1 -2
  104. package/dist/hooks/useProjectLog.d.ts +12 -2
  105. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  106. package/dist/hooks/useStorageSource.d.ts +2 -2
  107. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  108. package/dist/index.d.ts +1 -0
  109. package/dist/index.es.js +22131 -14039
  110. package/dist/index.es.js.map +1 -1
  111. package/dist/index.umd.js +24420 -588
  112. package/dist/index.umd.js.map +1 -1
  113. package/dist/internal/useBuildDataSource.d.ts +1 -12
  114. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  115. package/dist/preview/PropertyPreview.d.ts +1 -1
  116. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  117. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  118. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  119. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  120. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  121. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  122. package/dist/preview/util.d.ts +3 -3
  123. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  124. package/dist/routes/FireCMSRoute.d.ts +1 -0
  125. package/dist/routes/HomePageRoute.d.ts +3 -0
  126. package/dist/types/analytics.d.ts +1 -1
  127. package/dist/types/auth.d.ts +37 -3
  128. package/dist/types/collections.d.ts +86 -24
  129. package/dist/types/datasource.d.ts +53 -37
  130. package/dist/types/dialogs_controller.d.ts +7 -3
  131. package/dist/types/entities.d.ts +8 -2
  132. package/dist/types/entity_actions.d.ts +28 -4
  133. package/dist/types/entity_callbacks.d.ts +16 -16
  134. package/dist/types/entity_overrides.d.ts +6 -0
  135. package/dist/types/export_import.d.ts +4 -4
  136. package/dist/types/fields.d.ts +71 -42
  137. package/dist/types/firecms.d.ts +6 -2
  138. package/dist/types/firecms_context.d.ts +1 -1
  139. package/dist/types/index.d.ts +2 -1
  140. package/dist/types/navigation.d.ts +45 -26
  141. package/dist/types/permissions.d.ts +8 -4
  142. package/dist/types/plugins.d.ts +40 -31
  143. package/dist/types/properties.d.ts +54 -26
  144. package/dist/types/property_config.d.ts +2 -4
  145. package/dist/types/roles.d.ts +31 -0
  146. package/dist/types/side_dialogs_controller.d.ts +10 -0
  147. package/dist/types/side_entity_controller.d.ts +6 -1
  148. package/dist/types/storage.d.ts +86 -3
  149. package/dist/types/user.d.ts +6 -0
  150. package/dist/util/builders.d.ts +3 -3
  151. package/dist/util/collections.d.ts +9 -1
  152. package/dist/util/entities.d.ts +3 -3
  153. package/dist/util/entity_actions.d.ts +2 -0
  154. package/dist/util/entity_cache.d.ts +23 -0
  155. package/dist/util/icon_list.d.ts +5 -1
  156. package/dist/util/icon_synonyms.d.ts +1 -98
  157. package/dist/util/icons.d.ts +13 -4
  158. package/dist/util/index.d.ts +2 -0
  159. package/dist/util/navigation_from_path.d.ts +6 -1
  160. package/dist/util/navigation_utils.d.ts +14 -3
  161. package/dist/util/objects.d.ts +2 -1
  162. package/dist/util/permissions.d.ts +4 -4
  163. package/dist/util/plurals.d.ts +0 -2
  164. package/dist/util/property_utils.d.ts +3 -3
  165. package/dist/util/references.d.ts +4 -2
  166. package/dist/util/resolutions.d.ts +31 -17
  167. package/dist/util/storage.d.ts +23 -2
  168. package/dist/util/useStorageUploadController.d.ts +3 -3
  169. package/dist/util/useTraceUpdate.d.ts +1 -0
  170. package/package.json +64 -51
  171. package/src/app/AppBar.tsx +18 -0
  172. package/src/app/Drawer.tsx +24 -0
  173. package/src/app/Scaffold.tsx +243 -0
  174. package/src/app/index.ts +4 -0
  175. package/src/app/useApp.tsx +32 -0
  176. package/src/components/ArrayContainer.tsx +126 -40
  177. package/src/components/CircularProgressCenter.tsx +2 -2
  178. package/src/components/ClearFilterSortButton.tsx +41 -0
  179. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  180. package/src/components/DeleteEntityDialog.tsx +14 -23
  181. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +56 -39
  182. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +283 -280
  183. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +29 -8
  184. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +58 -50
  185. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  186. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -33
  187. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +22 -20
  188. package/src/components/EntityCollectionTable/index.tsx +1 -1
  189. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
  190. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  191. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  192. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +81 -80
  193. package/src/components/EntityCollectionView/EntityCollectionView.tsx +228 -155
  194. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +9 -8
  195. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  196. package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
  197. package/src/components/EntityCollectionView/utils.ts +19 -0
  198. package/src/components/EntityPreview.tsx +218 -71
  199. package/src/components/EntityView.tsx +84 -0
  200. package/src/components/ErrorView.tsx +4 -4
  201. package/src/components/FieldCaption.tsx +14 -0
  202. package/src/components/HomePage/DefaultHomePage.tsx +39 -28
  203. package/src/components/HomePage/FavouritesView.tsx +6 -11
  204. package/src/components/HomePage/NavigationCard.tsx +69 -0
  205. package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
  206. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  207. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  208. package/src/components/HomePage/index.tsx +3 -1
  209. package/src/components/NotFoundPage.tsx +2 -2
  210. package/src/components/PropertyConfigBadge.tsx +9 -3
  211. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  212. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -17
  213. package/src/components/ReferenceWidget.tsx +26 -16
  214. package/src/components/SearchIconsView.tsx +10 -7
  215. package/src/components/SelectableTable/SelectableTable.tsx +27 -12
  216. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  217. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  218. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +46 -30
  219. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  220. package/src/components/UnsavedChangesDialog.tsx +42 -0
  221. package/src/components/VirtualTable/VirtualTable.tsx +96 -48
  222. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  223. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  224. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  225. package/src/components/VirtualTable/VirtualTableProps.tsx +34 -15
  226. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  227. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  228. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
  229. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  230. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  231. package/src/components/VirtualTable/types.tsx +2 -3
  232. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +40 -43
  233. package/src/components/common/index.ts +2 -1
  234. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  235. package/src/components/common/types.tsx +4 -6
  236. package/src/components/common/useColumnsIds.tsx +24 -3
  237. package/src/components/common/useDataSourceTableController.tsx +420 -0
  238. package/src/components/common/useDebouncedCallback.tsx +20 -0
  239. package/src/components/common/useScrollRestoration.tsx +68 -0
  240. package/src/components/common/useTableSearchHelper.ts +53 -12
  241. package/src/components/index.tsx +8 -5
  242. package/src/contexts/AuthControllerContext.tsx +1 -1
  243. package/src/contexts/BreacrumbsContext.tsx +38 -0
  244. package/src/contexts/DialogsProvider.tsx +5 -4
  245. package/src/contexts/ModeController.tsx +1 -3
  246. package/src/contexts/SnackbarProvider.tsx +2 -0
  247. package/src/core/DefaultAppBar.tsx +207 -0
  248. package/src/core/DefaultDrawer.tsx +185 -0
  249. package/src/core/DrawerNavigationItem.tsx +66 -0
  250. package/src/core/EntityEditView.tsx +455 -0
  251. package/src/core/EntityEditViewFormActions.tsx +199 -0
  252. package/src/core/EntitySidePanel.tsx +87 -18
  253. package/src/core/FireCMS.tsx +67 -44
  254. package/src/core/FireCMSRouter.tsx +17 -0
  255. package/src/core/NavigationRoutes.tsx +36 -38
  256. package/src/core/SideDialogs.tsx +22 -12
  257. package/src/core/field_configs.tsx +11 -12
  258. package/src/core/index.tsx +6 -7
  259. package/src/form/EntityForm.tsx +565 -519
  260. package/src/form/EntityFormActions.tsx +169 -0
  261. package/src/form/PropertyFieldBinding.tsx +85 -44
  262. package/src/form/components/CustomIdField.tsx +6 -2
  263. package/src/form/components/FieldHelperText.tsx +4 -4
  264. package/src/form/components/FormEntry.tsx +22 -0
  265. package/src/form/components/FormLayout.tsx +16 -0
  266. package/src/form/components/LabelWithIcon.tsx +44 -0
  267. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  268. package/src/form/components/StorageItemPreview.tsx +23 -11
  269. package/src/form/components/StorageUploadProgress.tsx +9 -9
  270. package/src/form/components/index.tsx +4 -1
  271. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +32 -21
  272. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +54 -45
  273. package/src/form/field_bindings/BlockFieldBinding.tsx +57 -36
  274. package/src/form/field_bindings/DateTimeFieldBinding.tsx +21 -17
  275. package/src/form/field_bindings/KeyValueFieldBinding.tsx +76 -67
  276. package/src/form/field_bindings/MapFieldBinding.tsx +82 -65
  277. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +153 -0
  278. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  279. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -17
  280. package/src/form/field_bindings/ReferenceFieldBinding.tsx +47 -34
  281. package/src/form/field_bindings/RepeatFieldBinding.tsx +57 -36
  282. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -17
  283. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -46
  284. package/src/form/field_bindings/SwitchFieldBinding.tsx +31 -27
  285. package/src/form/field_bindings/TextFieldBinding.tsx +35 -30
  286. package/src/form/index.tsx +17 -37
  287. package/src/form/useClearRestoreValue.tsx +2 -2
  288. package/src/form/validation.ts +15 -26
  289. package/src/hooks/data/delete.ts +7 -6
  290. package/src/hooks/data/save.ts +13 -9
  291. package/src/hooks/data/useCollectionFetch.tsx +4 -4
  292. package/src/hooks/data/useDataSource.tsx +15 -2
  293. package/src/hooks/data/useEntityFetch.tsx +11 -7
  294. package/src/hooks/index.tsx +6 -1
  295. package/src/hooks/useAuthController.tsx +1 -1
  296. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  297. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  298. package/src/{core → hooks}/useBuildModeController.tsx +23 -30
  299. package/src/hooks/useBuildNavigationController.tsx +278 -117
  300. package/src/hooks/useFireCMSContext.tsx +5 -5
  301. package/src/hooks/useLargeLayout.tsx +0 -35
  302. package/src/hooks/useModeController.tsx +1 -2
  303. package/src/hooks/useProjectLog.tsx +41 -9
  304. package/src/hooks/useReferenceDialog.tsx +2 -2
  305. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  306. package/src/hooks/useStorageSource.tsx +7 -2
  307. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  308. package/src/index.ts +1 -0
  309. package/src/internal/useBuildDataSource.ts +72 -77
  310. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  311. package/src/internal/useBuildSideEntityController.tsx +177 -70
  312. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  313. package/src/preview/PropertyPreview.tsx +19 -26
  314. package/src/preview/PropertyPreviewProps.tsx +5 -9
  315. package/src/preview/components/BooleanPreview.tsx +19 -4
  316. package/src/preview/components/EmptyValue.tsx +1 -1
  317. package/src/preview/components/EnumValuesChip.tsx +2 -2
  318. package/src/preview/components/ImagePreview.tsx +25 -36
  319. package/src/preview/components/ReferencePreview.tsx +73 -176
  320. package/src/preview/components/StorageThumbnail.tsx +5 -1
  321. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  322. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  323. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  324. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  325. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  326. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  327. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  328. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  329. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  330. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  331. package/src/preview/util.ts +10 -10
  332. package/src/routes/CustomCMSRoute.tsx +21 -0
  333. package/src/routes/FireCMSRoute.tsx +236 -0
  334. package/src/routes/HomePageRoute.tsx +17 -0
  335. package/src/types/analytics.ts +1 -0
  336. package/src/types/auth.tsx +48 -3
  337. package/src/types/collections.ts +102 -27
  338. package/src/types/customization_controller.tsx +0 -1
  339. package/src/types/datasource.ts +62 -44
  340. package/src/types/dialogs_controller.tsx +7 -3
  341. package/src/types/entities.ts +16 -2
  342. package/src/types/entity_actions.tsx +33 -4
  343. package/src/types/entity_callbacks.ts +18 -18
  344. package/src/types/entity_overrides.tsx +7 -0
  345. package/src/types/export_import.ts +4 -4
  346. package/src/types/fields.tsx +81 -46
  347. package/src/types/firecms.tsx +6 -2
  348. package/src/types/firecms_context.tsx +1 -1
  349. package/src/types/index.ts +2 -1
  350. package/src/types/navigation.ts +52 -31
  351. package/src/types/permissions.ts +10 -5
  352. package/src/types/plugins.tsx +47 -39
  353. package/src/types/properties.ts +63 -27
  354. package/src/types/property_config.tsx +2 -4
  355. package/src/types/roles.ts +41 -0
  356. package/src/types/side_dialogs_controller.tsx +15 -0
  357. package/src/types/side_entity_controller.tsx +7 -1
  358. package/src/types/storage.ts +94 -3
  359. package/src/types/user.ts +9 -0
  360. package/src/util/builders.ts +10 -8
  361. package/src/util/collections.ts +22 -0
  362. package/src/util/entities.ts +9 -6
  363. package/src/util/entity_actions.ts +28 -0
  364. package/src/util/entity_cache.ts +204 -0
  365. package/src/util/enums.ts +1 -1
  366. package/src/util/icon_list.ts +16 -10
  367. package/src/util/icon_synonyms.ts +3 -100
  368. package/src/util/icons.tsx +26 -8
  369. package/src/util/index.ts +2 -0
  370. package/src/util/join_collections.ts +3 -0
  371. package/src/util/make_properties_editable.ts +13 -5
  372. package/src/util/navigation_from_path.ts +13 -6
  373. package/src/util/navigation_utils.ts +59 -7
  374. package/src/util/objects.ts +45 -28
  375. package/src/util/parent_references_from_path.ts +3 -3
  376. package/src/util/permissions.ts +20 -16
  377. package/src/util/plurals.ts +0 -2
  378. package/src/util/property_utils.tsx +11 -4
  379. package/src/util/references.ts +45 -5
  380. package/src/util/resolutions.ts +79 -46
  381. package/src/util/storage.ts +79 -21
  382. package/src/util/strings.ts +2 -2
  383. package/src/util/useStorageUploadController.tsx +71 -27
  384. package/src/util/useTraceUpdate.tsx +2 -1
  385. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  386. package/dist/components/VirtualTable/common.d.ts +0 -2
  387. package/dist/core/Drawer.d.ts +0 -23
  388. package/dist/core/Scaffold.d.ts +0 -55
  389. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  390. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  391. package/dist/internal/EntityView.d.ts +0 -22
  392. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  393. package/dist/internal/useLocaleConfig.d.ts +0 -1
  394. package/dist/types/appcheck.d.ts +0 -26
  395. package/src/components/FireCMSAppBar.tsx +0 -157
  396. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  397. package/src/components/LabelWithIcon.tsx +0 -33
  398. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  399. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  400. package/src/core/Drawer.tsx +0 -164
  401. package/src/core/Scaffold.tsx +0 -281
  402. package/src/form/components/FormikArrayContainer.tsx +0 -44
  403. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  404. package/src/internal/EntityView.tsx +0 -578
  405. package/src/internal/useBuildCustomizationController.tsx +0 -5
  406. package/src/internal/useLocaleConfig.tsx +0 -18
  407. package/src/types/appcheck.ts +0 -29
  408. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  409. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -12,12 +12,15 @@ import {
12
12
  } from "../../types";
13
13
  import { OnCellValueChange, OnColumnResizeParams, UniqueFieldValidator } from "../common/types";
14
14
 
15
-
16
15
  /**
17
16
  * @group Collection components
18
17
  */
19
18
  export type EntityCollectionTableProps<M extends Record<string, any>,
20
- UserType extends User = User> = {
19
+ USER extends User = User> = {
20
+
21
+ className?: string;
22
+
23
+ style?: React.CSSProperties;
21
24
 
22
25
  /**
23
26
  * Display these entities as selected
@@ -69,6 +72,21 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
69
72
  */
70
73
  onColumnResize?(params: OnColumnResizeParams): void;
71
74
 
75
+ /**
76
+ * Initial scroll position
77
+ */
78
+ initialScroll?: number;
79
+
80
+ /**
81
+ * Callback when the table is scrolled
82
+ * @param props
83
+ */
84
+ onScroll?: (props: {
85
+ scrollDirection: "forward" | "backward",
86
+ scrollOffset: number,
87
+ scrollUpdateWasRequested: boolean
88
+ }) => void;
89
+
72
90
  /**
73
91
  * Callback when the selected size of the table is changed
74
92
  */
@@ -87,12 +105,12 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
87
105
 
88
106
  /**
89
107
  * Controller holding the logic for the table
90
- * {@link useDataSourceEntityCollectionTableController}
108
+ * {@link useDataSourceTableController}
91
109
  * {@link EntityTableController}
92
110
  */
93
111
  tableController: EntityTableController<M>;
94
112
 
95
- displayedColumnIds: PropertyColumnConfig[];
113
+ displayedColumnIds?: PropertyColumnConfig[];
96
114
 
97
115
  forceFilter?: FilterValues<Extract<keyof M, string>>;
98
116
 
@@ -100,7 +118,7 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
100
118
 
101
119
  inlineEditing?: boolean;
102
120
 
103
- additionalFields?: AdditionalFieldDelegate<M, UserType>[];
121
+ additionalFields?: AdditionalFieldDelegate<M, USER>[];
104
122
 
105
123
  defaultSize?: CollectionSize;
106
124
 
@@ -131,15 +149,18 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
131
149
  onTextSearchClick?: () => void;
132
150
 
133
151
  textSearchLoading?: boolean;
134
- }
152
+
153
+ enablePopupIcon: boolean;
154
+
155
+ openEntityMode?: "side_panel" | "full_screen";
156
+ };
135
157
 
136
158
  export type GetPropertyForProps<M extends Record<string, any>> = {
137
159
  propertyKey: string,
138
- propertyValue: any,
139
160
  entity: Entity<M>
140
161
  };
141
162
 
142
163
  export type PropertyColumnConfig = {
143
164
  key: string,
144
- disabled: boolean,
165
+ disabled?: boolean,
145
166
  };
@@ -24,15 +24,15 @@ import { getPreviewSizeFrom } from "../../preview/util";
24
24
  import { isReadOnly } from "../../util";
25
25
 
26
26
  import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
27
- import { useClearRestoreValue, useFireCMSContext } from "../../hooks";
28
27
 
29
28
  import { EntityTableCell } from "./internal/EntityTableCell";
30
29
  import { EntityTableCellActions } from "./internal/EntityTableCellActions";
31
30
 
32
- import { getRowHeight } from "../VirtualTable/common";
33
31
  import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
32
+ import { useClearRestoreValue } from "../../form/useClearRestoreValue";
33
+ import { getRowHeight } from "../common/table_height";
34
34
 
35
- export interface PropertyTableCellProps<T extends CMSType, M extends Record<string, any>> {
35
+ export interface PropertyTableCellProps<T extends CMSType> {
36
36
  propertyKey: string;
37
37
  columnIndex: number;
38
38
  align: "right" | "left" | "center";
@@ -45,9 +45,12 @@ export interface PropertyTableCellProps<T extends CMSType, M extends Record<stri
45
45
  entity: Entity<any>;
46
46
  path: string;
47
47
  disabled: boolean;
48
+ enablePopupIcon?: boolean;
48
49
  }
49
50
 
50
51
  function isStorageProperty(property: ResolvedProperty) {
52
+ if (property.dataType === "string" && property.markdown)
53
+ return false;
51
54
  if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
52
55
  return true;
53
56
  if (property.dataType === "array") {
@@ -61,7 +64,7 @@ function isStorageProperty(property: ResolvedProperty) {
61
64
  return false;
62
65
  }
63
66
 
64
- export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
67
+ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
65
68
  function PropertyTableCell<T extends CMSType, M extends Record<string, any>>({
66
69
  propertyKey,
67
70
  customFieldValidator,
@@ -73,10 +76,9 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
73
76
  path,
74
77
  entity,
75
78
  readonly,
76
- disabled: disabledProp
77
- }: PropertyTableCellProps<T, M>) {
78
-
79
- const context = useFireCMSContext();
79
+ disabled: disabledProp,
80
+ enablePopupIcon = true
81
+ }: PropertyTableCellProps<T>) {
80
82
 
81
83
  const {
82
84
  onValueChange,
@@ -87,13 +89,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
87
89
  } = useSelectableTableController();
88
90
 
89
91
  const selected = selectedCell?.propertyKey === propertyKey &&
90
- selectedCell?.entity.path === entity.path &&
91
- selectedCell?.entity.id === entity.id;
92
+ selectedCell?.entityPath === entity.path &&
93
+ selectedCell?.entityId === entity.id;
92
94
 
93
95
  const [internalValue, setInternalValue] = useState<any | null>(value);
94
96
  const internalValueRef = useRef(value);
95
97
 
96
98
  const [error, setError] = useState<Error | undefined>();
99
+ const [validationError, setValidationError] = useState<Error | undefined>();
97
100
  const [saved, setSaved] = useState<boolean>(false);
98
101
 
99
102
  const onValueUpdated = useCallback(() => {
@@ -119,7 +122,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
119
122
  useEffect(
120
123
  () => {
121
124
  if (!equal(value, internalValueRef.current)) {
122
- setError(undefined);
125
+ setValidationError(undefined);
123
126
  setInternalValue(value);
124
127
  internalValueRef.current = value;
125
128
  onValueUpdated();
@@ -135,32 +138,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
135
138
  validation
136
139
  .validate(value)
137
140
  .then(() => {
138
- setError(undefined);
141
+ setValidationError(undefined);
139
142
  internalValueRef.current = value;
140
143
  if (onValueChange) {
141
- onValueChange({
142
- value,
143
- propertyKey,
144
- setError,
145
- onValueUpdated,
146
- entity,
147
- fullPath: path,
148
- context
149
- });
144
+ try {
145
+ onValueChange({
146
+ value,
147
+ propertyKey,
148
+ setError,
149
+ onValueUpdated,
150
+ data: entity,
151
+ });
152
+ } catch (e: any) {
153
+ console.error("onValueChange error", e);
154
+ setError(e);
155
+ }
156
+
150
157
  }
151
158
  })
152
159
  .catch((e) => {
153
- setError(e);
160
+ setValidationError(e);
154
161
  });
155
162
  };
156
163
 
157
164
  useEffect(() => {
158
165
  validation
159
166
  .validate(internalValue)
160
- .then(() => setError(undefined))
161
- .catch((e) => {
162
- setError(e);
163
- });
167
+ .then(() => setValidationError(undefined))
168
+ .catch(setValidationError);
164
169
  }, [internalValue, validation, propertyKey, property, entity]);
165
170
 
166
171
  const updateValue = (newValue: any | null) => {
@@ -188,7 +193,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
188
193
  select({
189
194
  width,
190
195
  height,
191
- entity,
196
+ entityPath: entity.path,
197
+ entityId: entity.id,
192
198
  cellRect,
193
199
  propertyKey: propertyKey as Extract<keyof M, string>
194
200
  });
@@ -204,7 +210,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
204
210
  setPopupCell({
205
211
  width,
206
212
  height,
207
- entity,
213
+ entityPath: entity.path,
214
+ entityId: entity.id,
208
215
  cellRect,
209
216
  propertyKey: propertyKey as Extract<keyof M, string>
210
217
  });
@@ -236,7 +243,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
236
243
  height={getRowHeight(size)}
237
244
  propertyKey={propertyKey}
238
245
  property={property}
239
- // entity={entity}
240
246
  value={internalValue}
241
247
  size={getPreviewSizeFrom(size)}
242
248
  />
@@ -246,7 +252,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
246
252
  if (!customField && (!customPreview || selected)) {
247
253
  const isAStorageProperty = isStorageProperty(property);
248
254
  if (isAStorageProperty) {
249
- innerComponent = <TableStorageUpload error={error}
255
+ innerComponent = <TableStorageUpload error={validationError ?? error}
250
256
  disabled={disabled}
251
257
  focused={selected}
252
258
  selected={selected}
@@ -273,7 +279,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
273
279
  valueType={"number"}
274
280
  small={getPreviewSizeFrom(size) !== "medium"}
275
281
  enumValues={numberProperty.enumValues}
276
- error={error}
282
+ error={validationError ?? error}
277
283
  internalValue={internalValue as string | number}
278
284
  updateValue={updateValue}
279
285
  />;
@@ -281,7 +287,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
281
287
  } else {
282
288
  innerComponent = <VirtualTableNumberInput
283
289
  align={align}
284
- error={error}
290
+ error={validationError ?? error}
285
291
  focused={selected}
286
292
  disabled={disabled}
287
293
  value={internalValue as number}
@@ -299,14 +305,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
299
305
  valueType={"string"}
300
306
  small={getPreviewSizeFrom(size) !== "medium"}
301
307
  enumValues={stringProperty.enumValues}
302
- error={error}
308
+ error={validationError ?? error}
303
309
  internalValue={internalValue as string | number}
304
310
  updateValue={updateValue}
305
311
  />;
306
312
  fullHeight = true;
307
- } else if (!stringProperty.storage) {
313
+ } else if (stringProperty.markdown || !stringProperty.storage) {
308
314
  const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
309
- innerComponent = <VirtualTableInput error={error}
315
+ innerComponent = <VirtualTableInput error={validationError ?? error}
310
316
  disabled={disabled}
311
317
  multiline={multiline}
312
318
  focused={selected}
@@ -316,7 +322,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
316
322
  allowScroll = true;
317
323
  }
318
324
  } else if (property.dataType === "boolean") {
319
- innerComponent = <VirtualTableSwitch error={error}
325
+ innerComponent = <VirtualTableSwitch error={validationError ?? error}
320
326
  disabled={disabled}
321
327
  focused={selected}
322
328
  internalValue={internalValue as boolean}
@@ -324,7 +330,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
324
330
  />;
325
331
  } else if (property.dataType === "date") {
326
332
  innerComponent = <VirtualTableDateField name={propertyKey as string}
327
- error={error}
333
+ error={validationError ?? error}
328
334
  disabled={disabled}
329
335
  mode={property.mode}
330
336
  focused={selected}
@@ -345,6 +351,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
345
351
  path={property.path}
346
352
  multiselect={false}
347
353
  previewProperties={property.previewProperties}
354
+ includeId={property.includeId}
355
+ includeEntityLink={property.includeEntityLink}
348
356
  title={property.name}
349
357
  forceFilter={property.forceFilter}
350
358
  />;
@@ -367,7 +375,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
367
375
  small={getPreviewSizeFrom(size) !== "medium"}
368
376
  valueType={arrayProperty.of.dataType}
369
377
  enumValues={arrayProperty.of.enumValues}
370
- error={error}
378
+ error={validationError ?? error}
371
379
  internalValue={internalValue as string | number}
372
380
  updateValue={updateValue}
373
381
  />;
@@ -389,6 +397,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
389
397
  previewProperties={arrayProperty.of.previewProperties}
390
398
  title={arrayProperty.name}
391
399
  forceFilter={arrayProperty.of.forceFilter}
400
+ includeId={arrayProperty.of.includeId}
401
+ includeEntityLink={arrayProperty.of.includeEntityLink}
392
402
  />;
393
403
  }
394
404
  allowScroll = false;
@@ -400,16 +410,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
400
410
 
401
411
  if (!innerComponent) {
402
412
  allowScroll = false;
403
- showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
413
+ showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
404
414
  innerComponent = (
405
- <PropertyPreview
406
- width={width}
407
- height={height}
408
- // entity={entity}
409
- propertyKey={propertyKey as string}
410
- value={internalValue}
411
- property={property}
412
- size={getPreviewSizeFrom(size)}
415
+ <PropertyPreview width={width}
416
+ height={height}
417
+ propertyKey={propertyKey as string}
418
+ value={internalValue}
419
+ property={property}
420
+ size={getPreviewSizeFrom(size)}
413
421
  />
414
422
  );
415
423
  }
@@ -426,7 +434,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
426
434
  removePadding={removePadding}
427
435
  fullHeight={fullHeight}
428
436
  saved={saved}
429
- error={error}
437
+ error={validationError ?? error}
430
438
  align={align}
431
439
  allowScroll={allowScroll}
432
440
  showExpandIcon={showExpandIcon}
@@ -446,9 +454,9 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
446
454
  );
447
455
 
448
456
  },
449
- areEqual) as React.FunctionComponent<PropertyTableCellProps<any, any>>;
457
+ areEqual) as React.FunctionComponent<PropertyTableCellProps<any>>;
450
458
 
451
- function areEqual(prevProps: PropertyTableCellProps<any, any>, nextProps: PropertyTableCellProps<any, any>) {
459
+ function areEqual(prevProps: PropertyTableCellProps<any>, nextProps: PropertyTableCellProps<any>) {
452
460
  return prevProps.height === nextProps.height &&
453
461
  prevProps.propertyKey === nextProps.propertyKey &&
454
462
  prevProps.align === nextProps.align &&
@@ -21,7 +21,6 @@ export interface PropertiesToColumnsParams<M extends Record<string, any>> {
21
21
  properties: ResolvedProperties<M>;
22
22
  sortable?: boolean;
23
23
  forceFilter?: FilterValues<keyof M extends string ? keyof M : never>;
24
- disabledFilter?: boolean;
25
24
  AdditionalHeaderWidget?: React.ComponentType<{
26
25
  property: ResolvedProperty,
27
26
  propertyKey: string,
@@ -29,7 +28,8 @@ export interface PropertiesToColumnsParams<M extends Record<string, any>> {
29
28
  }>;
30
29
  }
31
30
 
32
- export function propertiesToColumns<M extends Record<string, any>>({ properties, sortable, forceFilter, disabledFilter, AdditionalHeaderWidget }: PropertiesToColumnsParams<M>): VirtualTableColumn[] {
31
+ export function propertiesToColumns<M extends Record<string, any>>({ properties, sortable, forceFilter, AdditionalHeaderWidget }: PropertiesToColumnsParams<M>): VirtualTableColumn[] {
32
+ const disabledFilter = Boolean(forceFilter);
33
33
  return Object.entries<ResolvedProperty>(properties)
34
34
  .flatMap(([key, property]) => getColumnKeysForProperty(property, key))
35
35
  .map(({
@@ -45,7 +45,7 @@ export function propertiesToColumns<M extends Record<string, any>>({ properties,
45
45
  align: getTableCellAlignment(property),
46
46
  icon: getIconForProperty(property, "small"),
47
47
  title: property.name ?? key as string,
48
- sortable: sortable && (forceFilter ? Object.keys(forceFilter).includes(key) : true),
48
+ sortable: sortable,
49
49
  filter: !disabledFilter && filterable,
50
50
  width: getTablePropertyColumnWidth(property),
51
51
  resizable: true,
@@ -1,14 +1,15 @@
1
- import React, { useCallback, useState } from "react";
1
+ import React, { useCallback } from "react";
2
2
  import equal from "react-fast-compare"
3
3
 
4
- import { ReferencePreview, ReferencePreviewContainer } from "../../../preview";
4
+ import { ReferencePreview } from "../../../preview";
5
5
  import { CollectionSize, Entity, EntityCollection, EntityReference, FilterValues } from "../../../types";
6
6
 
7
7
  import { getPreviewSizeFrom } from "../../../preview/util";
8
- import { getReferenceFrom } from "../../../util";
8
+ import { getReferenceFrom, IconForView } from "../../../util";
9
9
  import { useCustomizationController, useNavigationController, useReferenceDialog } from "../../../hooks";
10
10
  import { ErrorView } from "../../ErrorView";
11
- import { Button } from "@firecms/ui";
11
+ import { cls, EditIcon } from "@firecms/ui";
12
+ import { EntityPreviewContainer } from "../../EntityPreview";
12
13
 
13
14
  type TableReferenceFieldProps = {
14
15
  name: string;
@@ -21,6 +22,8 @@ type TableReferenceFieldProps = {
21
22
  title?: string;
22
23
  path: string;
23
24
  forceFilter?: FilterValues<string>;
25
+ includeId?: boolean;
26
+ includeEntityLink?: boolean;
24
27
  };
25
28
 
26
29
  export function TableReferenceField(props: TableReferenceFieldProps) {
@@ -28,7 +31,7 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
28
31
 
29
32
  const navigationController = useNavigationController();
30
33
  const { path } = props;
31
- const collection = navigationController.getCollection<EntityCollection>(path);
34
+ const collection = navigationController.getCollection(path);
32
35
  if (!collection) {
33
36
  if (customizationController.components?.missingReference) {
34
37
  return <customizationController.components.missingReference path={path}/>;
@@ -36,11 +39,11 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
36
39
  throw Error(`Couldn't find the corresponding collection view for the path: ${path}`);
37
40
  }
38
41
  }
39
- return <TableReferenceFieldSuccess {...props} collection={collection}/>;
42
+ return <TableReferenceFieldInternal {...props} collection={collection}/>;
40
43
  }
41
44
 
42
- export const TableReferenceFieldSuccess = React.memo(
43
- function TableReferenceFieldSuccess(props: TableReferenceFieldProps & {
45
+ export const TableReferenceFieldInternal = React.memo(
46
+ function TableReferenceFieldInternal(props: TableReferenceFieldProps & {
44
47
  collection: EntityCollection;
45
48
  }) {
46
49
  const {
@@ -54,14 +57,11 @@ export const TableReferenceFieldSuccess = React.memo(
54
57
  title,
55
58
  disabled,
56
59
  forceFilter,
57
- collection
60
+ collection,
61
+ includeId,
62
+ includeEntityLink
58
63
  } = props;
59
64
 
60
- const [onHover, setOnHover] = useState(false);
61
-
62
- const hoverTrue = useCallback(() => setOnHover(true), []);
63
- const hoverFalse = useCallback(() => setOnHover(false), []);
64
-
65
65
  const onSingleEntitySelected = useCallback((entity: Entity<any>) => {
66
66
  updateValue(entity ? getReferenceFrom(entity) : null);
67
67
  }, [updateValue]);
@@ -87,45 +87,49 @@ export const TableReferenceFieldSuccess = React.memo(
87
87
  }
88
88
  );
89
89
 
90
- const handleOpen = useCallback(() => {
90
+ const handleOpen = () => {
91
91
  if (disabled)
92
92
  return;
93
93
  referenceDialogController.open();
94
- }, [disabled, referenceDialogController]);
94
+ };
95
95
 
96
96
  const valueNotSet = !internalValue || (Array.isArray(internalValue) && internalValue.length === 0);
97
97
 
98
98
  const buildSingleReferenceField = () => {
99
- if (internalValue instanceof EntityReference)
99
+ if (internalValue && !Array.isArray(internalValue) && internalValue.isEntityReference && internalValue.isEntityReference())
100
100
  return <ReferencePreview
101
101
  onClick={disabled ? undefined : handleOpen}
102
102
  size={getPreviewSizeFrom(size)}
103
103
  reference={internalValue as EntityReference}
104
- onHover={onHover}
104
+ hover={!disabled}
105
105
  disabled={!path}
106
106
  previewProperties={previewProperties}
107
+ includeId={includeId}
108
+ includeEntityLink={includeEntityLink}
107
109
  />;
108
110
  else
109
- return <ReferencePreviewContainer
111
+ return <EntityPreviewContainer
110
112
  onClick={disabled ? undefined : handleOpen}
111
113
  size={getPreviewSizeFrom(size)}>
112
114
  <ErrorView title="Value is not a reference." error={"Click to edit"}/>
113
- </ReferencePreviewContainer>;
115
+ </EntityPreviewContainer>;
114
116
  };
115
117
 
116
118
  const buildMultipleReferenceField = () => {
117
119
  if (Array.isArray(internalValue))
118
120
  return <>
119
121
  {internalValue.map((reference, index) =>
120
- <div className="m-1 w-full"
122
+ <div className="w-full my-0.5"
121
123
  key={`preview_array_ref_${name}_${index}`}>
122
124
  <ReferencePreview
123
125
  onClick={disabled ? undefined : handleOpen}
124
- size={"tiny"}
126
+ size={"small"}
125
127
  reference={reference}
126
- onHover={onHover}
128
+ hover={!disabled}
127
129
  disabled={!path}
128
130
  previewProperties={previewProperties}
131
+ includeId={includeId}
132
+ includeEntityLink={includeEntityLink}
129
133
  />
130
134
  </div>
131
135
  )
@@ -139,23 +143,26 @@ export const TableReferenceFieldSuccess = React.memo(
139
143
  return <ErrorView error={"The specified collection does not exist"}/>;
140
144
 
141
145
  return (
142
- <div className="w-full"
143
- onMouseEnter={hoverTrue}
144
- onMouseMove={hoverTrue}
145
- onMouseLeave={hoverFalse}>
146
+ <div className="w-full group">
146
147
 
147
148
  {internalValue && !multiselect && buildSingleReferenceField()}
148
149
 
149
150
  {internalValue && multiselect && buildMultipleReferenceField()}
150
151
 
151
152
  {valueNotSet &&
152
- <Button
153
+ <EntityPreviewContainer
154
+ className={cls("px-3 py-2 text-sm font-medium flex items-center",
155
+ multiselect ? "gap-4" : "gap-6",
156
+ disabled
157
+ ? "text-surface-accent-500"
158
+ : "cursor-pointer text-text-secondary dark:text-text-secondary-dark hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800")}
153
159
  onClick={handleOpen}
154
- size={"small"}
155
- variant="outlined"
156
- color="primary">
157
- Edit {title}
158
- </Button>}
160
+ size={"medium"}>
161
+ <EditIcon
162
+ size={"small"}
163
+ className={"ml-2 mr-1 text-surface-300 dark:text-surface-600"}/>
164
+ {title}
165
+ </EntityPreviewContainer>}
159
166
 
160
167
  </div>
161
168
  );