@firecms/core 3.0.0-canary.23 → 3.0.0-canary.231

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 (385) 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 +30 -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 +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 +5 -4
  26. package/dist/components/ErrorView.d.ts +1 -1
  27. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  28. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  29. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  30. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  31. package/dist/components/ReferenceWidget.d.ts +3 -1
  32. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  33. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  34. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  35. package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
  36. package/dist/components/VirtualTable/types.d.ts +3 -3
  37. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  38. package/dist/components/common/index.d.ts +2 -1
  39. package/dist/components/common/table_height.d.ts +5 -0
  40. package/dist/components/common/types.d.ts +4 -6
  41. package/dist/components/common/useColumnsIds.d.ts +3 -1
  42. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  43. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  44. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  45. package/dist/components/index.d.ts +4 -2
  46. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  47. package/dist/core/DefaultAppBar.d.ts +29 -0
  48. package/dist/core/DefaultDrawer.d.ts +19 -0
  49. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  50. package/dist/core/EntityEditView.d.ts +40 -11
  51. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  52. package/dist/core/FireCMS.d.ts +3 -3
  53. package/dist/core/FireCMSRouter.d.ts +4 -0
  54. package/dist/core/NavigationRoutes.d.ts +2 -3
  55. package/dist/core/SideDialogs.d.ts +4 -2
  56. package/dist/core/index.d.ts +4 -4
  57. package/dist/form/EntityForm.d.ts +36 -64
  58. package/dist/form/EntityFormActions.d.ts +17 -0
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/ErrorFocus.d.ts +1 -1
  61. package/dist/form/components/FieldHelperText.d.ts +3 -3
  62. package/dist/form/components/FormEntry.d.ts +6 -0
  63. package/dist/form/components/FormLayout.d.ts +5 -0
  64. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  65. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  66. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  67. package/dist/form/components/index.d.ts +3 -1
  68. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  69. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  74. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  75. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  77. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  80. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  81. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  82. package/dist/form/index.d.ts +16 -18
  83. package/dist/form/useClearRestoreValue.d.ts +2 -2
  84. package/dist/hooks/data/delete.d.ts +4 -4
  85. package/dist/hooks/data/save.d.ts +4 -5
  86. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  87. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  88. package/dist/hooks/index.d.ts +1 -0
  89. package/dist/hooks/useAuthController.d.ts +1 -1
  90. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  91. package/dist/hooks/useBuildNavigationController.d.ts +7 -5
  92. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  93. package/dist/hooks/useModeController.d.ts +1 -2
  94. package/dist/hooks/useProjectLog.d.ts +8 -2
  95. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  96. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  97. package/dist/index.d.ts +1 -0
  98. package/dist/index.es.js +21418 -13882
  99. package/dist/index.es.js.map +1 -1
  100. package/dist/index.umd.js +24216 -588
  101. package/dist/index.umd.js.map +1 -1
  102. package/dist/internal/useBuildDataSource.d.ts +3 -17
  103. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  104. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  105. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  106. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  107. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  108. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  109. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  110. package/dist/preview/util.d.ts +3 -3
  111. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  112. package/dist/routes/FireCMSRoute.d.ts +1 -0
  113. package/dist/routes/HomePageRoute.d.ts +3 -0
  114. package/dist/types/auth.d.ts +8 -10
  115. package/dist/types/collections.d.ts +83 -22
  116. package/dist/types/datasource.d.ts +52 -36
  117. package/dist/types/dialogs_controller.d.ts +7 -3
  118. package/dist/types/entities.d.ts +7 -2
  119. package/dist/types/entity_actions.d.ts +28 -4
  120. package/dist/types/entity_callbacks.d.ts +16 -16
  121. package/dist/types/entity_overrides.d.ts +2 -2
  122. package/dist/types/export_import.d.ts +4 -4
  123. package/dist/types/fields.d.ts +74 -42
  124. package/dist/types/firecms.d.ts +6 -2
  125. package/dist/types/firecms_context.d.ts +1 -1
  126. package/dist/types/index.d.ts +0 -1
  127. package/dist/types/navigation.d.ts +36 -14
  128. package/dist/types/permissions.d.ts +4 -4
  129. package/dist/types/plugins.d.ts +24 -12
  130. package/dist/types/properties.d.ts +73 -24
  131. package/dist/types/property_config.d.ts +0 -2
  132. package/dist/types/side_dialogs_controller.d.ts +10 -0
  133. package/dist/types/side_entity_controller.d.ts +6 -1
  134. package/dist/types/storage.d.ts +86 -3
  135. package/dist/types/user.d.ts +1 -0
  136. package/dist/util/builders.d.ts +3 -3
  137. package/dist/util/createFormexStub.d.ts +2 -0
  138. package/dist/util/entities.d.ts +3 -3
  139. package/dist/util/entity_actions.d.ts +2 -0
  140. package/dist/util/entity_cache.d.ts +23 -0
  141. package/dist/util/icon_list.d.ts +5 -1
  142. package/dist/util/icon_synonyms.d.ts +1 -98
  143. package/dist/util/icons.d.ts +6 -3
  144. package/dist/util/index.d.ts +2 -0
  145. package/dist/util/navigation_from_path.d.ts +6 -1
  146. package/dist/util/navigation_utils.d.ts +15 -3
  147. package/dist/util/objects.d.ts +2 -1
  148. package/dist/util/permissions.d.ts +4 -4
  149. package/dist/util/plurals.d.ts +0 -2
  150. package/dist/util/property_utils.d.ts +4 -4
  151. package/dist/util/references.d.ts +2 -2
  152. package/dist/util/resolutions.d.ts +41 -17
  153. package/dist/util/storage.d.ts +23 -2
  154. package/dist/util/useStorageUploadController.d.ts +3 -3
  155. package/package.json +62 -48
  156. package/src/app/AppBar.tsx +18 -0
  157. package/src/app/Drawer.tsx +24 -0
  158. package/src/app/Scaffold.tsx +253 -0
  159. package/src/app/index.ts +4 -0
  160. package/src/app/useApp.tsx +32 -0
  161. package/src/components/ArrayContainer.tsx +149 -46
  162. package/src/components/CircularProgressCenter.tsx +2 -2
  163. package/src/components/ClearFilterSortButton.tsx +41 -0
  164. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  165. package/src/components/DeleteEntityDialog.tsx +13 -20
  166. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
  167. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  168. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  169. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  170. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  171. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  172. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  173. package/src/components/EntityCollectionTable/index.tsx +1 -1
  174. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
  175. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  176. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  177. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +84 -80
  178. package/src/components/EntityCollectionView/EntityCollectionView.tsx +227 -117
  179. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
  180. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  181. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  182. package/src/components/EntityCollectionView/utils.ts +19 -0
  183. package/src/components/EntityJsonPreview.tsx +66 -0
  184. package/src/components/EntityPreview.tsx +70 -53
  185. package/src/components/EntityView.tsx +13 -10
  186. package/src/components/ErrorView.tsx +4 -4
  187. package/src/components/HomePage/DefaultHomePage.tsx +26 -19
  188. package/src/components/HomePage/FavouritesView.tsx +6 -11
  189. package/src/components/HomePage/NavigationCard.tsx +3 -3
  190. package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
  191. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  192. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  193. package/src/components/NotFoundPage.tsx +2 -2
  194. package/src/components/PropertyConfigBadge.tsx +9 -3
  195. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  196. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
  197. package/src/components/ReferenceWidget.tsx +21 -11
  198. package/src/components/SearchIconsView.tsx +10 -7
  199. package/src/components/SelectableTable/SelectableTable.tsx +27 -12
  200. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  201. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  202. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  203. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  204. package/src/components/UnsavedChangesDialog.tsx +42 -0
  205. package/src/components/VirtualTable/VirtualTable.tsx +125 -49
  206. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  207. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  208. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  209. package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
  210. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  211. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  212. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
  213. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  214. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  215. package/src/components/VirtualTable/types.tsx +2 -3
  216. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
  217. package/src/components/common/index.ts +2 -1
  218. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  219. package/src/components/common/types.tsx +4 -6
  220. package/src/components/common/useColumnsIds.tsx +24 -3
  221. package/src/components/common/useDataSourceTableController.tsx +420 -0
  222. package/src/components/common/useDebouncedCallback.tsx +20 -0
  223. package/src/components/common/useScrollRestoration.tsx +68 -0
  224. package/src/components/common/useTableSearchHelper.ts +53 -12
  225. package/src/components/index.tsx +4 -2
  226. package/src/contexts/BreacrumbsContext.tsx +38 -0
  227. package/src/contexts/DialogsProvider.tsx +5 -4
  228. package/src/contexts/ModeController.tsx +1 -3
  229. package/src/contexts/SnackbarProvider.tsx +2 -0
  230. package/src/core/DefaultAppBar.tsx +219 -0
  231. package/src/core/DefaultDrawer.tsx +185 -0
  232. package/src/core/DrawerNavigationItem.tsx +66 -0
  233. package/src/core/EntityEditView.tsx +397 -479
  234. package/src/core/EntityEditViewFormActions.tsx +199 -0
  235. package/src/core/EntitySidePanel.tsx +86 -17
  236. package/src/core/FireCMS.tsx +67 -59
  237. package/src/core/FireCMSRouter.tsx +17 -0
  238. package/src/core/NavigationRoutes.tsx +28 -38
  239. package/src/core/SideDialogs.tsx +22 -12
  240. package/src/core/field_configs.tsx +11 -12
  241. package/src/core/index.tsx +6 -5
  242. package/src/form/EntityForm.tsx +589 -535
  243. package/src/form/EntityFormActions.tsx +169 -0
  244. package/src/form/PropertyFieldBinding.tsx +89 -45
  245. package/src/form/components/CustomIdField.tsx +6 -2
  246. package/src/form/components/FieldHelperText.tsx +4 -4
  247. package/src/form/components/FormEntry.tsx +22 -0
  248. package/src/form/components/FormLayout.tsx +16 -0
  249. package/src/form/components/LabelWithIcon.tsx +30 -19
  250. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  251. package/src/form/components/StorageItemPreview.tsx +22 -12
  252. package/src/form/components/StorageUploadProgress.tsx +4 -5
  253. package/src/form/components/index.tsx +3 -1
  254. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
  255. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +48 -35
  256. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  257. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  258. package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
  259. package/src/form/field_bindings/MapFieldBinding.tsx +71 -54
  260. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -0
  261. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  262. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  263. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  264. package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
  265. package/src/form/field_bindings/SelectFieldBinding.tsx +23 -15
  266. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +47 -52
  267. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  268. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  269. package/src/form/index.tsx +16 -37
  270. package/src/form/useClearRestoreValue.tsx +2 -2
  271. package/src/form/validation.ts +13 -23
  272. package/src/hooks/data/delete.ts +6 -5
  273. package/src/hooks/data/save.ts +32 -33
  274. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  275. package/src/hooks/data/useDataSource.tsx +11 -3
  276. package/src/hooks/data/useEntityFetch.tsx +10 -6
  277. package/src/hooks/index.tsx +1 -0
  278. package/src/hooks/useAuthController.tsx +1 -1
  279. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  280. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  281. package/src/hooks/useBuildModeController.tsx +22 -29
  282. package/src/hooks/useBuildNavigationController.tsx +170 -54
  283. package/src/hooks/useFireCMSContext.tsx +3 -33
  284. package/src/hooks/useLargeLayout.tsx +0 -35
  285. package/src/hooks/useModeController.tsx +1 -2
  286. package/src/hooks/useProjectLog.tsx +32 -10
  287. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  288. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  289. package/src/index.ts +1 -0
  290. package/src/internal/useBuildDataSource.ts +79 -85
  291. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  292. package/src/internal/useBuildSideEntityController.tsx +201 -75
  293. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  294. package/src/preview/PropertyPreview.tsx +20 -25
  295. package/src/preview/PropertyPreviewProps.tsx +7 -1
  296. package/src/preview/components/BooleanPreview.tsx +2 -2
  297. package/src/preview/components/EmptyValue.tsx +1 -1
  298. package/src/preview/components/EnumValuesChip.tsx +2 -2
  299. package/src/preview/components/ImagePreview.tsx +25 -36
  300. package/src/preview/components/ReferencePreview.tsx +22 -33
  301. package/src/preview/components/StorageThumbnail.tsx +5 -1
  302. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  303. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +5 -5
  304. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
  305. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
  306. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
  307. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
  308. package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
  309. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  310. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  311. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  312. package/src/preview/util.ts +10 -10
  313. package/src/routes/CustomCMSRoute.tsx +21 -0
  314. package/src/routes/FireCMSRoute.tsx +246 -0
  315. package/src/routes/HomePageRoute.tsx +17 -0
  316. package/src/types/auth.tsx +9 -13
  317. package/src/types/collections.ts +101 -27
  318. package/src/types/customization_controller.tsx +0 -1
  319. package/src/types/datasource.ts +61 -43
  320. package/src/types/dialogs_controller.tsx +7 -3
  321. package/src/types/entities.ts +12 -2
  322. package/src/types/entity_actions.tsx +32 -7
  323. package/src/types/entity_callbacks.ts +18 -18
  324. package/src/types/entity_overrides.tsx +2 -2
  325. package/src/types/export_import.ts +4 -4
  326. package/src/types/fields.tsx +85 -46
  327. package/src/types/firecms.tsx +7 -2
  328. package/src/types/firecms_context.tsx +1 -1
  329. package/src/types/index.ts +0 -1
  330. package/src/types/navigation.ts +43 -18
  331. package/src/types/permissions.ts +5 -5
  332. package/src/types/plugins.tsx +26 -14
  333. package/src/types/properties.ts +87 -26
  334. package/src/types/property_config.tsx +0 -2
  335. package/src/types/side_dialogs_controller.tsx +15 -0
  336. package/src/types/side_entity_controller.tsx +11 -1
  337. package/src/types/storage.ts +94 -3
  338. package/src/types/user.ts +2 -0
  339. package/src/util/builders.ts +10 -8
  340. package/src/util/createFormexStub.tsx +62 -0
  341. package/src/util/entities.ts +9 -6
  342. package/src/util/entity_actions.ts +28 -0
  343. package/src/util/entity_cache.ts +204 -0
  344. package/src/util/enums.ts +1 -1
  345. package/src/util/icon_list.ts +16 -10
  346. package/src/util/icon_synonyms.ts +3 -100
  347. package/src/util/icons.tsx +17 -7
  348. package/src/util/index.ts +2 -0
  349. package/src/util/join_collections.ts +6 -1
  350. package/src/util/make_properties_editable.ts +13 -5
  351. package/src/util/navigation_from_path.ts +18 -7
  352. package/src/util/navigation_utils.ts +121 -20
  353. package/src/util/objects.ts +52 -28
  354. package/src/util/parent_references_from_path.ts +3 -3
  355. package/src/util/permissions.ts +9 -8
  356. package/src/util/plurals.ts +0 -2
  357. package/src/util/property_utils.tsx +17 -6
  358. package/src/util/references.ts +19 -8
  359. package/src/util/resolutions.ts +110 -48
  360. package/src/util/storage.ts +79 -21
  361. package/src/util/strings.ts +2 -2
  362. package/src/util/useStorageUploadController.tsx +91 -28
  363. package/dist/components/FireCMSAppBar.d.ts +0 -26
  364. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  365. package/dist/components/VirtualTable/common.d.ts +0 -2
  366. package/dist/core/Drawer.d.ts +0 -23
  367. package/dist/core/Scaffold.d.ts +0 -55
  368. package/dist/core/SideEntityView.d.ts +0 -7
  369. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  370. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  371. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  372. package/dist/internal/useLocaleConfig.d.ts +0 -1
  373. package/dist/types/appcheck.d.ts +0 -26
  374. package/src/components/FireCMSAppBar.tsx +0 -165
  375. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  376. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  377. package/src/core/Drawer.tsx +0 -191
  378. package/src/core/Scaffold.tsx +0 -281
  379. package/src/core/SideEntityView.tsx +0 -38
  380. package/src/form/components/FormikArrayContainer.tsx +0 -44
  381. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  382. package/src/internal/useBuildCustomizationController.tsx +0 -5
  383. package/src/internal/useLocaleConfig.tsx +0 -18
  384. package/src/types/appcheck.ts +0 -29
  385. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
 
3
- import { canCreateEntity, canDeleteEntity, fullPathToCollectionSegments } from "../../util";
3
+ import { canCreateEntity, canDeleteEntity } from "../../util";
4
4
  import { useAuthController, useCustomizationController, useFireCMSContext, useLargeLayout } from "../../hooks";
5
5
  import { CollectionActionsProps, EntityCollection, EntityTableController, SelectionController } from "../../types";
6
6
  import { AddIcon, Button, DeleteIcon, IconButton, Tooltip } from "@firecms/ui";
@@ -124,7 +124,9 @@ export function EntityCollectionViewActions<M extends Record<string, any>>({
124
124
 
125
125
  return (
126
126
  <>
127
- {actions}
127
+ <ErrorBoundary>
128
+ {actions}
129
+ </ErrorBoundary>
128
130
  {multipleDeleteButton}
129
131
  {addButton}
130
132
  </>
@@ -0,0 +1,68 @@
1
+ import React from "react";
2
+ import { useCustomizationController, useFireCMSContext } from "../../hooks";
3
+ import { CollectionActionsProps, EntityCollection, EntityTableController, SelectionController } from "../../types";
4
+ import { toArray } from "../../util/arrays";
5
+ import { ErrorBoundary } from "../ErrorBoundary";
6
+ import { ClearFilterSortButton } from "../ClearFilterSortButton";
7
+
8
+ export type EntityCollectionViewStartActionsProps<M extends Record<string, any>> = {
9
+ collection: EntityCollection<M>;
10
+ path: string;
11
+ relativePath: string;
12
+ parentCollectionIds: string[];
13
+ selectionController: SelectionController<M>;
14
+ tableController: EntityTableController<M>;
15
+ collectionEntitiesCount: number;
16
+ }
17
+
18
+ export function EntityCollectionViewStartActions<M extends Record<string, any>>({
19
+ collection,
20
+ relativePath,
21
+ parentCollectionIds,
22
+ path,
23
+ selectionController,
24
+ tableController,
25
+ collectionEntitiesCount
26
+ }: EntityCollectionViewStartActionsProps<M>) {
27
+
28
+ const context = useFireCMSContext();
29
+
30
+ const customizationController = useCustomizationController();
31
+ const plugins = customizationController.plugins ?? [];
32
+
33
+ const actionProps: CollectionActionsProps = {
34
+ path,
35
+ relativePath,
36
+ parentCollectionIds,
37
+ collection,
38
+ selectionController,
39
+ context,
40
+ tableController,
41
+ collectionEntitiesCount
42
+ };
43
+ const actions: React.ReactNode[] = [
44
+ <ClearFilterSortButton
45
+ key={"clear_filter"}
46
+ tableController={tableController}
47
+ enabled={!collection.forceFilter}/>
48
+ ];
49
+
50
+ if (plugins) {
51
+ plugins.forEach((plugin, i) => {
52
+ if (plugin.collectionView?.CollectionActionsStart) {
53
+ actions.push(...toArray(plugin.collectionView?.CollectionActionsStart)
54
+ .map((Action, j) => (
55
+ <ErrorBoundary key={`plugin_actions_${i}_${j}`}>
56
+ <Action {...actionProps} {...plugin.collectionView?.collectionActionsStartProps}/>
57
+ </ErrorBoundary>
58
+ )));
59
+ }
60
+ });
61
+ }
62
+
63
+ return (
64
+ <>
65
+ {actions}
66
+ </>
67
+ );
68
+ }
@@ -7,19 +7,32 @@ export function useSelectionController<M extends Record<string, any> = any>(
7
7
 
8
8
  const [selectedEntities, setSelectedEntities] = useState<Entity<M>[]>([]);
9
9
 
10
- const toggleEntitySelection = useCallback((entity: Entity<M>) => {
10
+ const toggleEntitySelection = useCallback((entity: Entity<M>, newSelectedState?: boolean) => {
11
11
  let newValue;
12
- if (selectedEntities.map(e => e.id).includes(entity.id)) {
13
- onSelectionChange?.(entity, false);
14
- newValue = selectedEntities.filter((item: Entity<M>) => item.id !== entity.id);
12
+ if (newSelectedState === undefined) {
13
+ const isSelected = Boolean(selectedEntities.find(e => e.id === entity.id && e.path === entity.path));
14
+ if (isSelected) {
15
+ onSelectionChange?.(entity, false);
16
+ newValue = selectedEntities.filter((item: Entity<M>) => !(item.id === entity.id && item.path === entity.path));
17
+ } else {
18
+ onSelectionChange?.(entity, true);
19
+ newValue = [...selectedEntities, entity];
20
+ }
15
21
  } else {
16
- onSelectionChange?.(entity, true);
17
- newValue = [...selectedEntities, entity];
22
+ if (newSelectedState) {
23
+ onSelectionChange?.(entity, true);
24
+ newValue = [...selectedEntities, entity];
25
+ } else {
26
+ onSelectionChange?.(entity, false);
27
+ newValue = selectedEntities.filter((item: Entity<M>) => !(item.id === entity.id && item.path === entity.path));
28
+ }
18
29
  }
19
30
  setSelectedEntities(newValue);
20
31
  }, [selectedEntities]);
21
32
 
22
- const isEntitySelected = useCallback((entity: Entity<M>) => selectedEntities.map(e => e.id).includes(entity.id), [selectedEntities]);
33
+ const isEntitySelected = useCallback((entity: Entity<M>) => {
34
+ return Boolean(selectedEntities.find(e => e.id === entity.id && e.path === entity.path));
35
+ }, [selectedEntities]);
23
36
 
24
37
  return {
25
38
  selectedEntities,
@@ -0,0 +1,19 @@
1
+ export function addRecentId(collectionId: string, id: string) {
2
+ const recentIds = getRecentIds(collectionId);
3
+ const newRecentIds = [id, ...recentIds.filter(i => i !== id)];
4
+ if (newRecentIds.length > 5) {
5
+ newRecentIds.pop();
6
+ }
7
+ saveSearchedIdsLocally(collectionId, newRecentIds);
8
+ return newRecentIds;
9
+ }
10
+
11
+ export function saveSearchedIdsLocally(collectionId: string, ids: string[]) {
12
+ localStorage.setItem("recent_id_searches::" + collectionId, JSON.stringify(ids));
13
+ }
14
+
15
+ export function getRecentIds(collectionId: string): string[] {
16
+ const stored = localStorage.getItem("recent_id_searches::" + collectionId);
17
+ if (!stored) return [];
18
+ return JSON.parse(stored);
19
+ }
@@ -0,0 +1,66 @@
1
+ import React, { useRef } from "react";
2
+ import { Highlight, themes } from "prism-react-renderer";
3
+ import { useModeController } from "../hooks";
4
+
5
+ export function EntityJsonPreview({ values }: { values: object }) {
6
+ const code = JSON.stringify(values, null, "\t");
7
+ const { mode } = useModeController();
8
+ const preRef = useRef<HTMLPreElement>(null);
9
+
10
+ // Global keydown handler
11
+ // const handleGlobalKeyDown = useCallback((e: KeyboardEvent) => {
12
+ // // Check for Control (Windows/Linux) or Command (macOS) + "a":
13
+ // if ((e.ctrlKey || e.metaKey) && e.key.toLowerCase() === "a") {
14
+ // // If our code view is mounted, perform selection
15
+ // if (preRef.current) {
16
+ // e.preventDefault();
17
+ // e.stopPropagation();
18
+ //
19
+ // const selection = window.getSelection();
20
+ // const range = document.createRange();
21
+ // range.selectNodeContents(preRef.current);
22
+ // if (selection) {
23
+ // selection.removeAllRanges();
24
+ // selection.addRange(range);
25
+ // }
26
+ // }
27
+ // }
28
+ // }, []);
29
+
30
+ // // Attach the global keydown listener when component mounts,
31
+ // // and remove it when it unmounts.
32
+ // useEffect(() => {
33
+ // document.addEventListener("keydown", handleGlobalKeyDown);
34
+ // return () => {
35
+ // document.removeEventListener("keydown", handleGlobalKeyDown);
36
+ // };
37
+ // }, [handleGlobalKeyDown]);
38
+
39
+ return (
40
+ <Highlight
41
+ theme={mode === "dark" ? themes.vsDark : themes.github}
42
+ code={code}
43
+ language="json"
44
+ >
45
+ {({ style, tokens, getLineProps, getTokenProps }) => (
46
+ <pre
47
+ // Bind the ref to our pre element so we can select its contents.
48
+ ref={preRef}
49
+ style={{
50
+ ...style,
51
+ backgroundColor: "inherit"
52
+ }}
53
+ className="max-w-6xl mx-auto p-8 rounded text-sm"
54
+ >
55
+ {tokens.map((line, i) => (
56
+ <div key={i} {...getLineProps({ line })} className="text-wrap">
57
+ {line.map((token, key) => (
58
+ <span key={key} {...getTokenProps({ token })} className="word-break" />
59
+ ))}
60
+ </div>
61
+ ))}
62
+ </pre>
63
+ )}
64
+ </Highlight>
65
+ );
66
+ }
@@ -8,11 +8,17 @@ import {
8
8
  getEntityPreviewKeys,
9
9
  getEntityTitlePropertyKey,
10
10
  getValueInPath,
11
+ IconForView,
11
12
  resolveCollection
12
13
  } from "../util";
13
- import { cn, defaultBorderMixin, IconButton, KeyboardTabIcon, Skeleton, Tooltip, Typography } from "@firecms/ui";
14
+ import { cls, defaultBorderMixin, IconButton, KeyboardTabIcon, Skeleton, Tooltip, Typography } from "@firecms/ui";
14
15
  import { PreviewSize, PropertyPreview, SkeletonPropertyComponent } from "../preview";
15
- import { useCustomizationController, useNavigationController, useSideEntityController } from "../hooks";
16
+ import {
17
+ useAuthController,
18
+ useCustomizationController,
19
+ useNavigationController,
20
+ useSideEntityController
21
+ } from "../hooks";
16
22
  import { useAnalyticsController } from "../hooks/useAnalyticsController";
17
23
 
18
24
  export type EntityPreviewProps = {
@@ -21,9 +27,10 @@ export type EntityPreviewProps = {
21
27
  collection?: EntityCollection,
22
28
  hover?: boolean;
23
29
  previewProperties?: string[],
24
- disabled: undefined | boolean,
30
+ disabled?: boolean,
25
31
  entity: Entity<any>,
26
- includeEntityNavigation?: boolean,
32
+ includeId?: boolean,
33
+ includeEntityLink?: boolean,
27
34
  onClick?: (e: React.SyntheticEvent) => void;
28
35
  };
29
36
 
@@ -39,10 +46,12 @@ export function EntityPreview({
39
46
  previewProperties,
40
47
  onClick,
41
48
  size,
42
- includeEntityNavigation,
49
+ includeId = true,
50
+ includeEntityLink = true,
43
51
  entity
44
52
  }: EntityPreviewProps) {
45
53
 
54
+ const authController = useAuthController();
46
55
  const analyticsController = useAnalyticsController();
47
56
  const sideEntityController = useSideEntityController();
48
57
  const customizationController = useCustomizationController();
@@ -59,39 +68,48 @@ export function EntityPreview({
59
68
  collection,
60
69
  path: entity.path,
61
70
  values: entity.values,
62
- fields: customizationController.propertyConfigs
71
+ propertyConfigs: customizationController.propertyConfigs,
72
+ authController
63
73
  }), [collection]);
64
74
 
65
- const listProperties = useMemo(() => getEntityPreviewKeys(resolvedCollection, customizationController.propertyConfigs, previewProperties, size === "small" || size === "medium" ? 3 : 1),
75
+ const listProperties = useMemo(() => getEntityPreviewKeys(authController, resolvedCollection, customizationController.propertyConfigs, previewProperties, size === "medium" || size === "large" ? 3 : 1),
66
76
  [previewProperties, resolvedCollection, size]);
67
77
 
68
78
  const titleProperty = getEntityTitlePropertyKey(resolvedCollection, customizationController.propertyConfigs);
69
79
  const imagePropertyKey = getEntityImagePreviewPropertyKey(resolvedCollection);
70
80
  const imageProperty = imagePropertyKey ? resolvedCollection.properties[imagePropertyKey] : undefined;
71
-
81
+ const usedImageProperty = imageProperty && "of" in imageProperty ? imageProperty.of : imageProperty;
72
82
  const restProperties = listProperties.filter(p => p !== titleProperty && p !== imagePropertyKey);
73
83
 
84
+ const imageValue = imagePropertyKey ? getValueInPath(entity.values, imagePropertyKey) : undefined;
85
+ const usedImageValue = imageProperty !== undefined ? ("of" in imageProperty
86
+ ? ((imageValue ?? []).length > 0
87
+ ? imageValue[0] : undefined)
88
+ : imageValue)
89
+ : undefined;
90
+
74
91
  return <EntityPreviewContainer onClick={disabled ? undefined : onClick}
75
92
  hover={disabled ? undefined : hover}
76
93
  size={size}>
77
- {imageProperty && (
78
- <div className={cn("w-10 h-10 mr-2 shrink-0 grow-0", size === "tiny" ? "my-0.5" : "m-2 self-start")}>
79
- <PropertyPreview property={imageProperty}
80
- propertyKey={imagePropertyKey as string}
81
- size={"tiny"}
82
- value={getValueInPath(entity.values, imagePropertyKey as string)}/>
83
- </div>
84
- )}
85
-
86
- <div className={"flex flex-col flex-grow w-full m-1"}>
87
-
88
- {size !== "tiny" && (
94
+ <div className={cls("flex w-10 h-10 ml-1 mr-2 shrink-0", size === "small" ? "my-0.5" : "m-2 self-start")}>
95
+ {usedImageProperty && usedImageValue && <PropertyPreview property={usedImageProperty}
96
+ propertyKey={imagePropertyKey as string}
97
+ size={"small"}
98
+ value={usedImageValue}/>}
99
+ {(!usedImageProperty || !usedImageValue) && <IconForView collectionOrView={collection}
100
+ color={"primary"}
101
+ size={size}
102
+ className={"m-auto p-1"}/>}
103
+ </div>
104
+
105
+
106
+ <div className={"flex flex-col grow-1 w-full m-1 shrink-1"} style={{
107
+ "maxWidth": "calc(100% - 96px)"
108
+ }}>
109
+
110
+ {size !== "small" && includeId && (
89
111
  entity
90
- ? <div className={`${
91
- size !== "medium"
92
- ? "block whitespace-nowrap overflow-hidden truncate"
93
- : ""
94
- }`}>
112
+ ? <div className={"block whitespace-nowrap overflow-hidden truncate"}>
95
113
  <Typography variant={"caption"}
96
114
  color={"disabled"}
97
115
  className={"font-mono"}>
@@ -101,17 +119,17 @@ export function EntityPreview({
101
119
  : <Skeleton/>)}
102
120
 
103
121
  {titleProperty && (
104
- <div className={"my-0.5 text-sm font-medium"}>
122
+ <div className={"truncate my-0.5 text-sm font-medium"}>
105
123
  {
106
124
  entity
107
125
  ? <PropertyPreview
108
126
  propertyKey={titleProperty as string}
109
127
  value={getValueInPath(entity.values, titleProperty)}
110
128
  property={resolvedCollection.properties[titleProperty as string] as ResolvedProperty}
111
- size={"medium"}/>
129
+ size={"large"}/>
112
130
  : <SkeletonPropertyComponent
113
131
  property={resolvedCollection.properties[titleProperty as string] as ResolvedProperty}
114
- size={"medium"}/>
132
+ size={"large"}/>
115
133
  }
116
134
  </div>
117
135
  )}
@@ -122,17 +140,17 @@ export function EntityPreview({
122
140
 
123
141
  return (
124
142
  <div key={"ref_prev_" + key}
125
- className={restProperties.length > 1 ? "my-0.5" : "my-0"}>
143
+ className={cls("truncate", restProperties.length > 1 ? "my-0.5" : "my-0")}>
126
144
  {
127
145
  entity
128
146
  ? <PropertyPreview
129
147
  propertyKey={key as string}
130
148
  value={getValueInPath(entity.values, key)}
131
149
  property={childProperty as ResolvedProperty}
132
- size={"tiny"}/>
150
+ size={"small"}/>
133
151
  : <SkeletonPropertyComponent
134
152
  property={childProperty as ResolvedProperty}
135
- size={"tiny"}/>
153
+ size={"small"}/>
136
154
  }
137
155
  </div>
138
156
  );
@@ -140,12 +158,12 @@ export function EntityPreview({
140
158
 
141
159
  </div>
142
160
 
143
- {entity && includeEntityNavigation &&
144
- <Tooltip title={`See details for ${entity.id}`}
145
- className={size !== "tiny" ? "self-start" : ""}>
161
+ {entity && includeEntityLink &&
162
+ <Tooltip title={`See details for ${entity.id}`} className={"shrink-0"}>
146
163
  <IconButton
147
164
  color={"inherit"}
148
- size={"small"}
165
+ size={"medium"}
166
+ className={size !== "small" ? "self-start" : ""}
149
167
  onClick={(e) => {
150
168
  e.stopPropagation();
151
169
  analyticsController.onAnalyticsEvent?.("entity_click_from_reference", {
@@ -159,7 +177,7 @@ export function EntityPreview({
159
177
  updateUrl: true
160
178
  });
161
179
  }}>
162
- <KeyboardTabIcon size={"small"}/>
180
+ <KeyboardTabIcon size={"medium"}/>
163
181
  </IconButton>
164
182
  </Tooltip>}
165
183
 
@@ -178,16 +196,16 @@ export type EntityPreviewContainerProps = {
178
196
  onClick?: (e: React.SyntheticEvent) => void;
179
197
  };
180
198
 
181
- const EntityPreviewContainerInner = React.forwardRef<HTMLDivElement, EntityPreviewContainerProps>(({
182
- children,
183
- hover,
184
- onClick,
185
- size,
186
- style,
187
- className,
188
- fullwidth = true,
189
- ...props
190
- }, ref) => {
199
+ export const EntityPreviewContainer = React.forwardRef<HTMLDivElement, EntityPreviewContainerProps>(({
200
+ children,
201
+ hover,
202
+ onClick,
203
+ size,
204
+ style,
205
+ className,
206
+ fullwidth = true,
207
+ ...props
208
+ }, ref) => {
191
209
  return <div
192
210
  ref={ref}
193
211
  style={{
@@ -195,12 +213,13 @@ const EntityPreviewContainerInner = React.forwardRef<HTMLDivElement, EntityPrevi
195
213
  // @ts-ignore
196
214
  tabindex: 0
197
215
  }}
198
- className={cn(
199
- "bg-white dark:bg-gray-900",
216
+ className={cls(
217
+ "bg-white dark:bg-surface-900",
218
+ "min-h-[42px]",
200
219
  fullwidth ? "w-full" : "",
201
220
  "items-center",
202
- hover ? "hover:bg-slate-50 dark:hover:bg-gray-800 group-hover:bg-slate-50 dark:group-hover:bg-gray-800" : "",
203
- size === "tiny" ? "p-1" : "p-2",
221
+ hover ? "hover:bg-surface-accent-50 dark:hover:bg-surface-800 group-hover:bg-surface-accent-50 dark:group-hover:bg-surface-800" : "",
222
+ size === "small" ? "p-1" : "px-2 py-1",
204
223
  "flex border rounded-lg",
205
224
  onClick ? "cursor-pointer" : "",
206
225
  defaultBorderMixin,
@@ -216,6 +235,4 @@ const EntityPreviewContainerInner = React.forwardRef<HTMLDivElement, EntityPrevi
216
235
  </div>;
217
236
  });
218
237
 
219
- EntityPreviewContainerInner.displayName = "EntityPreviewContainer";
220
-
221
- export const EntityPreviewContainer = React.memo(EntityPreviewContainerInner) as React.FC<EntityPreviewContainerProps>;
238
+ EntityPreviewContainer.displayName = "EntityPreviewContainer";
@@ -2,9 +2,10 @@ import React, { useMemo } from "react";
2
2
  import { PropertyPreview } from "../preview";
3
3
  import { Entity, EntityCollection, ResolvedEntityCollection, ResolvedProperties } from "../types";
4
4
  import { resolveCollection } from "../util";
5
- import { cn, defaultBorderMixin, IconButton, OpenInNewIcon } from "@firecms/ui";
5
+ import { cls, defaultBorderMixin, IconButton, OpenInNewIcon } from "@firecms/ui";
6
6
  import { CustomizationController } from "../types/customization_controller";
7
7
  import { useCustomizationController } from "../hooks/useCustomizationController";
8
+ import { useAuthController } from "../hooks";
8
9
 
9
10
  /**
10
11
  * @group Components
@@ -24,26 +25,28 @@ export function EntityView<M extends Record<string, any>>(
24
25
  className
25
26
  }: EntityViewProps<M>) {
26
27
 
28
+ const authController = useAuthController();
27
29
  const customizationController: CustomizationController = useCustomizationController();
28
30
  const resolvedCollection: ResolvedEntityCollection<M> = useMemo(() => resolveCollection<M>({
29
31
  collection,
30
32
  path,
31
33
  entityId: entity.id,
32
34
  values: entity.values,
33
- fields: customizationController.propertyConfigs
34
- }), [collection, path, entity]);
35
+ propertyConfigs: customizationController.propertyConfigs,
36
+ authController
37
+ }), [collection, path, entity, customizationController.propertyConfigs]);
35
38
 
36
39
  const properties: ResolvedProperties = resolvedCollection.properties;
37
40
 
38
41
  return (
39
42
  <div className={"w-full " + className}>
40
43
  <div className={"w-full mb-4"}>
41
- <div className={cn(defaultBorderMixin, "flex justify-between py-2 border-b last:border-b-0")}>
44
+ <div className={cls(defaultBorderMixin, "flex justify-between py-2 border-b last:border-b-0")}>
42
45
  <div className="flex items-center w-1/4">
43
- <span className="pl-2 text-sm text-gray-600">Id</span>
46
+ <span className="pl-2 text-sm text-surface-600">Id</span>
44
47
  </div>
45
48
  <div
46
- className="flex-grow p-2 ml-2 w-3/4 text-gray-900 dark:text-white min-h-[56px] flex items-center">
49
+ className="flex-grow p-2 ml-2 w-3/4 text-surface-900 dark:text-white min-h-[56px] flex items-center">
47
50
  <span className="flex-grow mr-2">{entity.id}</span>
48
51
  {customizationController?.entityLinkBuilder &&
49
52
  <a href={customizationController.entityLinkBuilder({ entity })}
@@ -58,16 +61,16 @@ export function EntityView<M extends Record<string, any>>(
58
61
  </div>
59
62
  {Object.entries(properties)
60
63
  .map(([key, property]) => {
61
- const value = (entity.values)[key];
64
+ const value = entity.values?.[key];
62
65
  return (
63
66
  <div
64
67
  key={`reference_previews_${key}`}
65
- className={cn(defaultBorderMixin, "flex justify-between py-2 border-b last:border-b-0")}>
68
+ className={cls(defaultBorderMixin, "flex justify-between py-2 border-b last:border-b-0")}>
66
69
  <div className="flex items-center w-1/4">
67
- <span className="pl-2 text-sm text-gray-600">{property.name}</span>
70
+ <span className="pl-2 text-sm text-surface-600">{property.name}</span>
68
71
  </div>
69
72
  <div
70
- className="flex-grow p-2 ml-2 w-3/4 text-gray-900 dark:text-white min-h-[56px] flex items-center">
73
+ className="flex-grow p-2 ml-2 w-3/4 text-surface-900 dark:text-white min-h-[56px] flex items-center">
71
74
  <PropertyPreview
72
75
  propertyKey={key}
73
76
  value={value}
@@ -17,7 +17,7 @@ export interface ErrorViewProps {
17
17
  * @param title
18
18
  * @param error
19
19
  * @param tooltip
20
- * @constructor
20
+
21
21
  * @group Components
22
22
  */
23
23
  export function ErrorView({
@@ -26,13 +26,13 @@ export function ErrorView({
26
26
  tooltip
27
27
  }: ErrorViewProps): React.ReactElement {
28
28
  const component = error instanceof Error ? error.message : error;
29
- console.error("ErrorView", error)
29
+ console.warn("ErrorView", error)
30
30
 
31
31
  const body = (
32
32
  <div
33
33
  className="flex items-center m-2">
34
- <ErrorIcon size={"small"} color={"error"}/>
35
- <div className="pl-2">
34
+ <ErrorIcon className={"mx-2"} size={"small"} color={"error"}/>
35
+ <div className="pl-4">
36
36
  {title && <Typography
37
37
  variant={"body2"}
38
38
  className="font-medium">{title}</Typography>}