@firecms/core 3.0.0-canary.25 → 3.0.0-canary.251

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 (401) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +34 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +31 -12
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +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 +8 -5
  26. package/dist/components/ErrorView.d.ts +1 -1
  27. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  28. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  29. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  30. package/dist/components/HomePage/NavigationCardBinding.d.ts +4 -3
  31. package/dist/components/HomePage/NavigationGroup.d.ts +7 -1
  32. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  33. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  34. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  35. package/dist/components/ReferenceWidget.d.ts +3 -1
  36. package/dist/components/SelectableTable/SelectableTable.d.ts +14 -4
  37. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  38. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  39. package/dist/components/VirtualTable/VirtualTableProps.d.ts +24 -12
  40. package/dist/components/VirtualTable/types.d.ts +3 -3
  41. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  42. package/dist/components/common/index.d.ts +2 -1
  43. package/dist/components/common/table_height.d.ts +5 -0
  44. package/dist/components/common/types.d.ts +4 -6
  45. package/dist/components/common/useColumnsIds.d.ts +3 -1
  46. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  47. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  48. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  49. package/dist/components/index.d.ts +5 -2
  50. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  51. package/dist/core/DefaultAppBar.d.ts +29 -0
  52. package/dist/core/DefaultDrawer.d.ts +19 -0
  53. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  54. package/dist/core/EntityEditView.d.ts +40 -11
  55. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  56. package/dist/core/FireCMS.d.ts +3 -3
  57. package/dist/core/FireCMSRouter.d.ts +4 -0
  58. package/dist/core/NavigationRoutes.d.ts +2 -3
  59. package/dist/core/SideDialogs.d.ts +4 -2
  60. package/dist/core/field_configs.d.ts +1 -1
  61. package/dist/core/index.d.ts +4 -4
  62. package/dist/form/EntityForm.d.ts +36 -64
  63. package/dist/form/EntityFormActions.d.ts +17 -0
  64. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  65. package/dist/form/components/ErrorFocus.d.ts +1 -1
  66. package/dist/form/components/FieldHelperText.d.ts +3 -3
  67. package/dist/form/components/FormEntry.d.ts +6 -0
  68. package/dist/form/components/FormLayout.d.ts +5 -0
  69. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  70. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  71. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  72. package/dist/form/components/index.d.ts +3 -1
  73. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  75. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  79. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  80. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  81. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  82. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  83. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  84. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  85. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +5 -13
  86. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  87. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  88. package/dist/form/index.d.ts +17 -18
  89. package/dist/form/useClearRestoreValue.d.ts +2 -2
  90. package/dist/hooks/data/delete.d.ts +4 -4
  91. package/dist/hooks/data/save.d.ts +4 -5
  92. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  93. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  94. package/dist/hooks/index.d.ts +1 -0
  95. package/dist/hooks/useAuthController.d.ts +1 -1
  96. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  97. package/dist/hooks/useBuildNavigationController.d.ts +57 -13
  98. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  99. package/dist/hooks/useModeController.d.ts +1 -2
  100. package/dist/hooks/useProjectLog.d.ts +8 -2
  101. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  102. package/dist/hooks/useValidateAuthenticator.d.ts +4 -8
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.es.js +22838 -13874
  105. package/dist/index.es.js.map +1 -1
  106. package/dist/index.umd.js +25639 -588
  107. package/dist/index.umd.js.map +1 -1
  108. package/dist/internal/useBuildDataSource.d.ts +3 -17
  109. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  110. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  111. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  112. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  113. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  114. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  115. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  116. package/dist/preview/util.d.ts +3 -3
  117. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  118. package/dist/routes/FireCMSRoute.d.ts +1 -0
  119. package/dist/routes/HomePageRoute.d.ts +3 -0
  120. package/dist/types/analytics.d.ts +1 -1
  121. package/dist/types/auth.d.ts +8 -10
  122. package/dist/types/collections.d.ts +107 -25
  123. package/dist/types/datasource.d.ts +52 -36
  124. package/dist/types/dialogs_controller.d.ts +7 -3
  125. package/dist/types/entities.d.ts +7 -2
  126. package/dist/types/entity_actions.d.ts +28 -4
  127. package/dist/types/entity_callbacks.d.ts +16 -16
  128. package/dist/types/entity_overrides.d.ts +2 -2
  129. package/dist/types/export_import.d.ts +4 -4
  130. package/dist/types/fields.d.ts +74 -42
  131. package/dist/types/firecms.d.ts +8 -3
  132. package/dist/types/firecms_context.d.ts +1 -1
  133. package/dist/types/index.d.ts +0 -1
  134. package/dist/types/navigation.d.ts +62 -19
  135. package/dist/types/permissions.d.ts +4 -4
  136. package/dist/types/plugins.d.ts +48 -12
  137. package/dist/types/properties.d.ts +80 -24
  138. package/dist/types/property_config.d.ts +1 -3
  139. package/dist/types/side_dialogs_controller.d.ts +10 -0
  140. package/dist/types/side_entity_controller.d.ts +10 -1
  141. package/dist/types/storage.d.ts +75 -0
  142. package/dist/types/user.d.ts +1 -0
  143. package/dist/util/builders.d.ts +3 -3
  144. package/dist/util/callbacks.d.ts +2 -0
  145. package/dist/util/createFormexStub.d.ts +2 -0
  146. package/dist/util/entities.d.ts +3 -3
  147. package/dist/util/entity_actions.d.ts +2 -0
  148. package/dist/util/entity_cache.d.ts +23 -0
  149. package/dist/util/icon_list.d.ts +5 -1
  150. package/dist/util/icon_synonyms.d.ts +1 -98
  151. package/dist/util/icons.d.ts +7 -4
  152. package/dist/util/index.d.ts +3 -0
  153. package/dist/util/navigation_from_path.d.ts +6 -1
  154. package/dist/util/navigation_utils.d.ts +15 -3
  155. package/dist/util/objects.d.ts +2 -1
  156. package/dist/util/permissions.d.ts +4 -4
  157. package/dist/util/plurals.d.ts +0 -2
  158. package/dist/util/property_utils.d.ts +4 -4
  159. package/dist/util/references.d.ts +2 -2
  160. package/dist/util/resolutions.d.ts +41 -17
  161. package/dist/util/storage.d.ts +23 -2
  162. package/dist/util/useStorageUploadController.d.ts +3 -3
  163. package/package.json +64 -48
  164. package/src/app/AppBar.tsx +18 -0
  165. package/src/app/Drawer.tsx +24 -0
  166. package/src/app/Scaffold.tsx +253 -0
  167. package/src/app/index.ts +4 -0
  168. package/src/app/useApp.tsx +32 -0
  169. package/src/components/ArrayContainer.tsx +447 -229
  170. package/src/components/CircularProgressCenter.tsx +2 -2
  171. package/src/components/ClearFilterSortButton.tsx +41 -0
  172. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +11 -11
  173. package/src/components/DeleteEntityDialog.tsx +13 -20
  174. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -40
  175. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  176. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  177. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +72 -42
  178. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  179. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +30 -16
  180. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  181. package/src/components/EntityCollectionTable/index.tsx +1 -1
  182. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +32 -37
  183. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +49 -36
  184. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  185. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +135 -105
  186. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  187. package/src/components/EntityCollectionView/EntityCollectionView.tsx +231 -117
  188. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +4 -2
  189. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  190. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  191. package/src/components/EntityCollectionView/utils.ts +19 -0
  192. package/src/components/EntityJsonPreview.tsx +66 -0
  193. package/src/components/EntityPreview.tsx +80 -59
  194. package/src/components/EntityView.tsx +13 -10
  195. package/src/components/ErrorView.tsx +4 -4
  196. package/src/components/HomePage/DefaultHomePage.tsx +486 -159
  197. package/src/components/HomePage/FavouritesView.tsx +9 -14
  198. package/src/components/HomePage/HomePageDnD.tsx +613 -0
  199. package/src/components/HomePage/NavigationCard.tsx +48 -39
  200. package/src/components/HomePage/NavigationCardBinding.tsx +17 -16
  201. package/src/components/HomePage/NavigationGroup.tsx +63 -29
  202. package/src/components/HomePage/RenameGroupDialog.tsx +113 -0
  203. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  204. package/src/components/NotFoundPage.tsx +2 -2
  205. package/src/components/PropertyConfigBadge.tsx +9 -3
  206. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  207. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +21 -13
  208. package/src/components/ReferenceWidget.tsx +21 -11
  209. package/src/components/SearchIconsView.tsx +10 -7
  210. package/src/components/SelectableTable/SelectableTable.tsx +157 -145
  211. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  212. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  213. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  214. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  215. package/src/components/UnsavedChangesDialog.tsx +42 -0
  216. package/src/components/VirtualTable/VirtualTable.tsx +105 -51
  217. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  218. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  219. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  220. package/src/components/VirtualTable/VirtualTableProps.tsx +28 -14
  221. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  222. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  223. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  224. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  225. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  226. package/src/components/VirtualTable/types.tsx +2 -3
  227. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +44 -40
  228. package/src/components/common/index.ts +2 -1
  229. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  230. package/src/components/common/types.tsx +4 -6
  231. package/src/components/common/useColumnsIds.tsx +24 -3
  232. package/src/components/common/useDataSourceTableController.tsx +420 -0
  233. package/src/components/common/useDebouncedCallback.tsx +20 -0
  234. package/src/components/common/useScrollRestoration.tsx +68 -0
  235. package/src/components/common/useTableSearchHelper.ts +53 -12
  236. package/src/components/index.tsx +6 -2
  237. package/src/contexts/BreacrumbsContext.tsx +38 -0
  238. package/src/contexts/DialogsProvider.tsx +5 -4
  239. package/src/contexts/ModeController.tsx +1 -3
  240. package/src/contexts/SnackbarProvider.tsx +2 -0
  241. package/src/core/DefaultAppBar.tsx +219 -0
  242. package/src/core/DefaultDrawer.tsx +185 -0
  243. package/src/core/DrawerNavigationItem.tsx +66 -0
  244. package/src/core/EntityEditView.tsx +408 -478
  245. package/src/core/EntityEditViewFormActions.tsx +199 -0
  246. package/src/core/EntitySidePanel.tsx +85 -21
  247. package/src/core/FireCMS.tsx +72 -58
  248. package/src/core/FireCMSRouter.tsx +17 -0
  249. package/src/core/NavigationRoutes.tsx +28 -38
  250. package/src/core/SideDialogs.tsx +22 -12
  251. package/src/core/field_configs.tsx +26 -13
  252. package/src/core/index.tsx +6 -5
  253. package/src/form/EntityForm.tsx +589 -535
  254. package/src/form/EntityFormActions.tsx +169 -0
  255. package/src/form/PropertyFieldBinding.tsx +88 -45
  256. package/src/form/components/CustomIdField.tsx +9 -3
  257. package/src/form/components/FieldHelperText.tsx +4 -4
  258. package/src/form/components/FormEntry.tsx +22 -0
  259. package/src/form/components/FormLayout.tsx +16 -0
  260. package/src/form/components/LabelWithIcon.tsx +30 -19
  261. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  262. package/src/form/components/StorageItemPreview.tsx +23 -13
  263. package/src/form/components/StorageUploadProgress.tsx +5 -6
  264. package/src/form/components/index.tsx +3 -1
  265. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +34 -19
  266. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +50 -36
  267. package/src/form/field_bindings/BlockFieldBinding.tsx +56 -34
  268. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  269. package/src/form/field_bindings/KeyValueFieldBinding.tsx +61 -52
  270. package/src/form/field_bindings/MapFieldBinding.tsx +73 -55
  271. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +157 -0
  272. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  273. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  274. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  275. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  276. package/src/form/field_bindings/RepeatFieldBinding.tsx +62 -35
  277. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -15
  278. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +257 -199
  279. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  280. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  281. package/src/form/index.tsx +17 -37
  282. package/src/form/useClearRestoreValue.tsx +2 -2
  283. package/src/form/validation.ts +13 -23
  284. package/src/hooks/data/delete.ts +6 -5
  285. package/src/hooks/data/save.ts +26 -33
  286. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  287. package/src/hooks/data/useDataSource.tsx +11 -3
  288. package/src/hooks/data/useEntityFetch.tsx +10 -6
  289. package/src/hooks/index.tsx +1 -0
  290. package/src/hooks/useAuthController.tsx +1 -1
  291. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  292. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  293. package/src/hooks/useBuildModeController.tsx +22 -29
  294. package/src/hooks/useBuildNavigationController.tsx +440 -119
  295. package/src/hooks/useFireCMSContext.tsx +3 -33
  296. package/src/hooks/useLargeLayout.tsx +0 -35
  297. package/src/hooks/useModeController.tsx +1 -2
  298. package/src/hooks/useProjectLog.tsx +32 -10
  299. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  300. package/src/hooks/useValidateAuthenticator.tsx +17 -37
  301. package/src/index.ts +1 -0
  302. package/src/internal/useBuildDataSource.ts +79 -85
  303. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  304. package/src/internal/useBuildSideEntityController.tsx +201 -77
  305. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  306. package/src/preview/PropertyPreview.tsx +34 -25
  307. package/src/preview/PropertyPreviewProps.tsx +7 -1
  308. package/src/preview/components/BooleanPreview.tsx +2 -2
  309. package/src/preview/components/EmptyValue.tsx +1 -1
  310. package/src/preview/components/EnumValuesChip.tsx +2 -2
  311. package/src/preview/components/ImagePreview.tsx +26 -37
  312. package/src/preview/components/ReferencePreview.tsx +23 -34
  313. package/src/preview/components/StorageThumbnail.tsx +5 -1
  314. package/src/preview/components/UrlComponentPreview.tsx +60 -28
  315. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -6
  316. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +7 -5
  317. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -4
  318. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -4
  319. package/src/preview/property_previews/ArrayOneOfPreview.tsx +7 -6
  320. package/src/preview/property_previews/ArrayPropertyPreview.tsx +7 -6
  321. package/src/preview/property_previews/MapPropertyPreview.tsx +12 -11
  322. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  323. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  324. package/src/preview/util.ts +10 -10
  325. package/src/routes/CustomCMSRoute.tsx +21 -0
  326. package/src/routes/FireCMSRoute.tsx +246 -0
  327. package/src/routes/HomePageRoute.tsx +17 -0
  328. package/src/types/analytics.ts +3 -0
  329. package/src/types/auth.tsx +9 -13
  330. package/src/types/collections.ts +129 -30
  331. package/src/types/customization_controller.tsx +0 -1
  332. package/src/types/datasource.ts +61 -43
  333. package/src/types/dialogs_controller.tsx +7 -3
  334. package/src/types/entities.ts +12 -2
  335. package/src/types/entity_actions.tsx +32 -7
  336. package/src/types/entity_callbacks.ts +18 -18
  337. package/src/types/entity_overrides.tsx +2 -2
  338. package/src/types/export_import.ts +4 -4
  339. package/src/types/fields.tsx +85 -46
  340. package/src/types/firecms.tsx +9 -4
  341. package/src/types/firecms_context.tsx +1 -1
  342. package/src/types/index.ts +0 -1
  343. package/src/types/navigation.ts +77 -24
  344. package/src/types/permissions.ts +5 -5
  345. package/src/types/plugins.tsx +57 -14
  346. package/src/types/properties.ts +95 -26
  347. package/src/types/property_config.tsx +1 -2
  348. package/src/types/side_dialogs_controller.tsx +15 -0
  349. package/src/types/side_entity_controller.tsx +11 -1
  350. package/src/types/storage.ts +83 -1
  351. package/src/types/user.ts +2 -0
  352. package/src/util/builders.ts +10 -8
  353. package/src/util/callbacks.ts +119 -0
  354. package/src/util/createFormexStub.tsx +62 -0
  355. package/src/util/entities.ts +9 -6
  356. package/src/util/entity_actions.ts +28 -0
  357. package/src/util/entity_cache.ts +204 -0
  358. package/src/util/enums.ts +1 -1
  359. package/src/util/icon_list.ts +16 -10
  360. package/src/util/icon_synonyms.ts +3 -100
  361. package/src/util/icons.tsx +36 -11
  362. package/src/util/index.ts +3 -0
  363. package/src/util/join_collections.ts +6 -1
  364. package/src/util/make_properties_editable.ts +13 -5
  365. package/src/util/navigation_from_path.ts +18 -7
  366. package/src/util/navigation_utils.ts +141 -25
  367. package/src/util/objects.ts +90 -33
  368. package/src/util/parent_references_from_path.ts +3 -3
  369. package/src/util/permissions.ts +9 -8
  370. package/src/util/plurals.ts +0 -2
  371. package/src/util/property_utils.tsx +17 -6
  372. package/src/util/references.ts +19 -8
  373. package/src/util/resolutions.ts +110 -48
  374. package/src/util/storage.ts +79 -21
  375. package/src/util/strings.ts +2 -2
  376. package/src/util/useStorageUploadController.tsx +91 -28
  377. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  378. package/dist/components/FireCMSAppBar.d.ts +0 -26
  379. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  380. package/dist/components/VirtualTable/common.d.ts +0 -2
  381. package/dist/core/Drawer.d.ts +0 -23
  382. package/dist/core/Scaffold.d.ts +0 -55
  383. package/dist/core/SideEntityView.d.ts +0 -7
  384. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  385. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  386. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  387. package/dist/internal/useLocaleConfig.d.ts +0 -1
  388. package/dist/types/appcheck.d.ts +0 -26
  389. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  390. package/src/components/FireCMSAppBar.tsx +0 -165
  391. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  392. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  393. package/src/core/Drawer.tsx +0 -191
  394. package/src/core/Scaffold.tsx +0 -281
  395. package/src/core/SideEntityView.tsx +0 -38
  396. package/src/form/components/FormikArrayContainer.tsx +0 -44
  397. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  398. package/src/internal/useBuildCustomizationController.tsx +0 -5
  399. package/src/internal/useLocaleConfig.tsx +0 -18
  400. package/src/types/appcheck.ts +0 -29
  401. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -4,10 +4,12 @@ import {
4
4
  CMSType,
5
5
  Entity,
6
6
  EntityReference,
7
+ ReferenceProperty,
7
8
  ResolvedArrayProperty,
8
9
  ResolvedNumberProperty,
9
10
  ResolvedProperty,
10
- ResolvedStringProperty
11
+ ResolvedStringProperty,
12
+ StringProperty
11
13
  } from "../../types";
12
14
 
13
15
  import { VirtualTableInput } from "../VirtualTable/fields/VirtualTableInput";
@@ -24,14 +26,13 @@ import { getPreviewSizeFrom } from "../../preview/util";
24
26
  import { isReadOnly } from "../../util";
25
27
 
26
28
  import { CustomFieldValidator, mapPropertyToYup } from "../../form/validation";
27
- import { useFireCMSContext } from "../../hooks";
28
29
 
29
30
  import { EntityTableCell } from "./internal/EntityTableCell";
30
31
  import { EntityTableCellActions } from "./internal/EntityTableCellActions";
31
32
 
32
- import { getRowHeight } from "../VirtualTable/common";
33
33
  import { useSelectableTableController } from "../SelectableTable/SelectableTableContext";
34
34
  import { useClearRestoreValue } from "../../form/useClearRestoreValue";
35
+ import { getRowHeight } from "../common/table_height";
35
36
 
36
37
  export interface PropertyTableCellProps<T extends CMSType> {
37
38
  propertyKey: string;
@@ -46,9 +47,12 @@ export interface PropertyTableCellProps<T extends CMSType> {
46
47
  entity: Entity<any>;
47
48
  path: string;
48
49
  disabled: boolean;
50
+ enablePopupIcon?: boolean;
49
51
  }
50
52
 
51
53
  function isStorageProperty(property: ResolvedProperty) {
54
+ if (property.dataType === "string" && property.markdown)
55
+ return false;
52
56
  if (property.dataType === "string" && (property as ResolvedStringProperty).storage)
53
57
  return true;
54
58
  if (property.dataType === "array") {
@@ -74,11 +78,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
74
78
  path,
75
79
  entity,
76
80
  readonly,
77
- disabled: disabledProp
81
+ disabled: disabledProp,
82
+ enablePopupIcon = true
78
83
  }: PropertyTableCellProps<T>) {
79
84
 
80
- const context = useFireCMSContext();
81
-
82
85
  const {
83
86
  onValueChange,
84
87
  size,
@@ -88,13 +91,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
88
91
  } = useSelectableTableController();
89
92
 
90
93
  const selected = selectedCell?.propertyKey === propertyKey &&
91
- selectedCell?.entity.path === entity.path &&
92
- selectedCell?.entity.id === entity.id;
94
+ selectedCell?.entityPath === entity.path &&
95
+ selectedCell?.entityId === entity.id;
93
96
 
94
97
  const [internalValue, setInternalValue] = useState<any | null>(value);
95
98
  const internalValueRef = useRef(value);
96
99
 
97
100
  const [error, setError] = useState<Error | undefined>();
101
+ const [validationError, setValidationError] = useState<Error | undefined>();
98
102
  const [saved, setSaved] = useState<boolean>(false);
99
103
 
100
104
  const onValueUpdated = useCallback(() => {
@@ -120,7 +124,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
120
124
  useEffect(
121
125
  () => {
122
126
  if (!equal(value, internalValueRef.current)) {
123
- setError(undefined);
127
+ setValidationError(undefined);
124
128
  setInternalValue(value);
125
129
  internalValueRef.current = value;
126
130
  onValueUpdated();
@@ -136,32 +140,34 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
136
140
  validation
137
141
  .validate(value)
138
142
  .then(() => {
139
- setError(undefined);
143
+ setValidationError(undefined);
140
144
  internalValueRef.current = value;
141
145
  if (onValueChange) {
142
- onValueChange({
143
- value,
144
- propertyKey,
145
- setError,
146
- onValueUpdated,
147
- entity,
148
- fullPath: path,
149
- context
150
- });
146
+ try {
147
+ onValueChange({
148
+ value,
149
+ propertyKey,
150
+ setError,
151
+ onValueUpdated,
152
+ data: entity,
153
+ });
154
+ } catch (e: any) {
155
+ console.error("onValueChange error", e);
156
+ setError(e);
157
+ }
158
+
151
159
  }
152
160
  })
153
161
  .catch((e) => {
154
- setError(e);
162
+ setValidationError(e);
155
163
  });
156
164
  };
157
165
 
158
166
  useEffect(() => {
159
167
  validation
160
168
  .validate(internalValue)
161
- .then(() => setError(undefined))
162
- .catch((e) => {
163
- setError(e);
164
- });
169
+ .then(() => setValidationError(undefined))
170
+ .catch(setValidationError);
165
171
  }, [internalValue, validation, propertyKey, property, entity]);
166
172
 
167
173
  const updateValue = (newValue: any | null) => {
@@ -189,7 +195,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
189
195
  select({
190
196
  width,
191
197
  height,
192
- entity,
198
+ entityPath: entity.path,
199
+ entityId: entity.id,
193
200
  cellRect,
194
201
  propertyKey: propertyKey as Extract<keyof M, string>
195
202
  });
@@ -205,7 +212,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
205
212
  setPopupCell({
206
213
  width,
207
214
  height,
208
- entity,
215
+ entityPath: entity.path,
216
+ entityId: entity.id,
209
217
  cellRect,
210
218
  propertyKey: propertyKey as Extract<keyof M, string>
211
219
  });
@@ -237,7 +245,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
237
245
  height={getRowHeight(size)}
238
246
  propertyKey={propertyKey}
239
247
  property={property}
240
- // entity={entity}
241
248
  value={internalValue}
242
249
  size={getPreviewSizeFrom(size)}
243
250
  />
@@ -246,8 +253,28 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
246
253
 
247
254
  if (!customField && (!customPreview || selected)) {
248
255
  const isAStorageProperty = isStorageProperty(property);
249
- if (isAStorageProperty) {
250
- innerComponent = <TableStorageUpload error={error}
256
+ if (property.dataType === "string" && (property as StringProperty).reference?.path) {
257
+ const stringProperty = property as StringProperty;
258
+ const path = stringProperty.reference?.path as string;
259
+ const referenceProperty = stringProperty.reference as ReferenceProperty;
260
+ const referenceValue = internalValue ? new EntityReference(internalValue, path) : undefined;
261
+ innerComponent =
262
+ <TableReferenceField name={propertyKey as string}
263
+ internalValue={referenceValue}
264
+ updateValue={(v) => updateValue(v ? (v as EntityReference).id : null)}
265
+ disabled={disabled}
266
+ size={size}
267
+ path={path}
268
+ multiselect={false}
269
+ previewProperties={referenceProperty.previewProperties}
270
+ includeId={referenceProperty.includeId}
271
+ includeEntityLink={referenceProperty.includeEntityLink}
272
+ title={stringProperty.name}
273
+ forceFilter={referenceProperty.forceFilter}
274
+ />;
275
+ allowScroll = false;
276
+ } else if (isAStorageProperty) {
277
+ innerComponent = <TableStorageUpload error={validationError ?? error}
251
278
  disabled={disabled}
252
279
  focused={selected}
253
280
  selected={selected}
@@ -274,7 +301,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
274
301
  valueType={"number"}
275
302
  small={getPreviewSizeFrom(size) !== "medium"}
276
303
  enumValues={numberProperty.enumValues}
277
- error={error}
304
+ error={validationError ?? error}
278
305
  internalValue={internalValue as string | number}
279
306
  updateValue={updateValue}
280
307
  />;
@@ -282,7 +309,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
282
309
  } else {
283
310
  innerComponent = <VirtualTableNumberInput
284
311
  align={align}
285
- error={error}
312
+ error={validationError ?? error}
286
313
  focused={selected}
287
314
  disabled={disabled}
288
315
  value={internalValue as number}
@@ -300,14 +327,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
300
327
  valueType={"string"}
301
328
  small={getPreviewSizeFrom(size) !== "medium"}
302
329
  enumValues={stringProperty.enumValues}
303
- error={error}
330
+ error={validationError ?? error}
304
331
  internalValue={internalValue as string | number}
305
332
  updateValue={updateValue}
306
333
  />;
307
334
  fullHeight = true;
308
- } else if (!stringProperty.storage) {
335
+ } else if (stringProperty.markdown || !stringProperty.storage || !stringProperty.reference) {
309
336
  const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
310
- innerComponent = <VirtualTableInput error={error}
337
+ innerComponent = <VirtualTableInput error={validationError ?? error}
311
338
  disabled={disabled}
312
339
  multiline={multiline}
313
340
  focused={selected}
@@ -317,7 +344,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
317
344
  allowScroll = true;
318
345
  }
319
346
  } else if (property.dataType === "boolean") {
320
- innerComponent = <VirtualTableSwitch error={error}
347
+ innerComponent = <VirtualTableSwitch error={validationError ?? error}
321
348
  disabled={disabled}
322
349
  focused={selected}
323
350
  internalValue={internalValue as boolean}
@@ -325,7 +352,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
325
352
  />;
326
353
  } else if (property.dataType === "date") {
327
354
  innerComponent = <VirtualTableDateField name={propertyKey as string}
328
- error={error}
355
+ error={validationError ?? error}
329
356
  disabled={disabled}
330
357
  mode={property.mode}
331
358
  focused={selected}
@@ -346,6 +373,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
346
373
  path={property.path}
347
374
  multiselect={false}
348
375
  previewProperties={property.previewProperties}
376
+ includeId={property.includeId}
377
+ includeEntityLink={property.includeEntityLink}
349
378
  title={property.name}
350
379
  forceFilter={property.forceFilter}
351
380
  />;
@@ -368,7 +397,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
368
397
  small={getPreviewSizeFrom(size) !== "medium"}
369
398
  valueType={arrayProperty.of.dataType}
370
399
  enumValues={arrayProperty.of.enumValues}
371
- error={error}
400
+ error={validationError ?? error}
372
401
  internalValue={internalValue as string | number}
373
402
  updateValue={updateValue}
374
403
  />;
@@ -387,9 +416,11 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
387
416
  size={size}
388
417
  multiselect={true}
389
418
  path={arrayProperty.of.path}
390
- previewProperties={arrayProperty.of.previewProperties}
419
+ previewProperties={arrayProperty.of.previewKeys}
391
420
  title={arrayProperty.name}
392
421
  forceFilter={arrayProperty.of.forceFilter}
422
+ includeId={arrayProperty.of.includeId}
423
+ includeEntityLink={arrayProperty.of.includeEntityLink}
393
424
  />;
394
425
  }
395
426
  allowScroll = false;
@@ -401,11 +432,10 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
401
432
 
402
433
  if (!innerComponent) {
403
434
  allowScroll = false;
404
- showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
435
+ showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
405
436
  innerComponent = (
406
- <PropertyPreview width={width}
437
+ <PropertyPreview width={width}
407
438
  height={height}
408
- // entity={entity}
409
439
  propertyKey={propertyKey as string}
410
440
  value={internalValue}
411
441
  property={property}
@@ -426,7 +456,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any>>(
426
456
  removePadding={removePadding}
427
457
  fullHeight={fullHeight}
428
458
  saved={saved}
429
- error={error}
459
+ error={validationError ?? error}
430
460
  align={align}
431
461
  allowScroll={allowScroll}
432
462
  showExpandIcon={showExpandIcon}
@@ -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,14 @@
1
- import React, { useCallback, useState } from "react";
1
+ import React, { useCallback } from "react";
2
2
  import equal from "react-fast-compare"
3
3
 
4
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
12
  import { EntityPreviewContainer } from "../../EntityPreview";
13
13
 
14
14
  type TableReferenceFieldProps = {
@@ -22,6 +22,8 @@ type TableReferenceFieldProps = {
22
22
  title?: string;
23
23
  path: string;
24
24
  forceFilter?: FilterValues<string>;
25
+ includeId?: boolean;
26
+ includeEntityLink?: boolean;
25
27
  };
26
28
 
27
29
  export function TableReferenceField(props: TableReferenceFieldProps) {
@@ -37,11 +39,11 @@ export function TableReferenceField(props: TableReferenceFieldProps) {
37
39
  throw Error(`Couldn't find the corresponding collection view for the path: ${path}`);
38
40
  }
39
41
  }
40
- return <TableReferenceFieldSuccess {...props} collection={collection}/>;
42
+ return <TableReferenceFieldInternal {...props} collection={collection}/>;
41
43
  }
42
44
 
43
- export const TableReferenceFieldSuccess = React.memo(
44
- function TableReferenceFieldSuccess(props: TableReferenceFieldProps & {
45
+ export const TableReferenceFieldInternal = React.memo(
46
+ function TableReferenceFieldInternal(props: TableReferenceFieldProps & {
45
47
  collection: EntityCollection;
46
48
  }) {
47
49
  const {
@@ -55,7 +57,9 @@ export const TableReferenceFieldSuccess = React.memo(
55
57
  title,
56
58
  disabled,
57
59
  forceFilter,
58
- collection
60
+ collection,
61
+ includeId,
62
+ includeEntityLink
59
63
  } = props;
60
64
 
61
65
  const onSingleEntitySelected = useCallback((entity: Entity<any>) => {
@@ -83,11 +87,11 @@ export const TableReferenceFieldSuccess = React.memo(
83
87
  }
84
88
  );
85
89
 
86
- const handleOpen = useCallback(() => {
90
+ const handleOpen = () => {
87
91
  if (disabled)
88
92
  return;
89
93
  referenceDialogController.open();
90
- }, [disabled, referenceDialogController]);
94
+ };
91
95
 
92
96
  const valueNotSet = !internalValue || (Array.isArray(internalValue) && internalValue.length === 0);
93
97
 
@@ -100,6 +104,8 @@ export const TableReferenceFieldSuccess = React.memo(
100
104
  hover={!disabled}
101
105
  disabled={!path}
102
106
  previewProperties={previewProperties}
107
+ includeId={includeId}
108
+ includeEntityLink={includeEntityLink}
103
109
  />;
104
110
  else
105
111
  return <EntityPreviewContainer
@@ -117,11 +123,13 @@ export const TableReferenceFieldSuccess = React.memo(
117
123
  key={`preview_array_ref_${name}_${index}`}>
118
124
  <ReferencePreview
119
125
  onClick={disabled ? undefined : handleOpen}
120
- size={"tiny"}
126
+ size={"small"}
121
127
  reference={reference}
122
128
  hover={!disabled}
123
129
  disabled={!path}
124
130
  previewProperties={previewProperties}
131
+ includeId={includeId}
132
+ includeEntityLink={includeEntityLink}
125
133
  />
126
134
  </div>
127
135
  )
@@ -142,13 +150,19 @@ export const TableReferenceFieldSuccess = React.memo(
142
150
  {internalValue && multiselect && buildMultipleReferenceField()}
143
151
 
144
152
  {valueNotSet &&
145
- <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")}
146
159
  onClick={handleOpen}
147
- size={"small"}
148
- variant="outlined"
149
- color="primary">
150
- Edit {title}
151
- </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>}
152
166
 
153
167
  </div>
154
168
  );
@@ -1,5 +1,5 @@
1
1
  import * as React from "react";
2
- import { useMemo, useState } from "react";
2
+ import { useMemo } from "react";
3
3
 
4
4
  import { Entity, ResolvedArrayProperty, ResolvedStringProperty, StorageConfig } from "../../../types";
5
5
  import { useDropzone } from "react-dropzone";
@@ -9,7 +9,7 @@ import { useSnackbarController, useStorageSource } from "../../../hooks";
9
9
  import { getThumbnailMeasure } from "../../../preview/util";
10
10
  import { StorageFieldItem, useStorageUploadController } from "../../../util/useStorageUploadController";
11
11
  import { StorageUploadProgress } from "../../../form/components/StorageUploadProgress";
12
- import { cn, EditIcon, IconButton, Typography } from "@firecms/ui";
12
+ import { cls, EditIcon, IconButton, Typography } from "@firecms/ui";
13
13
  import { EntityTableCellActions } from "../internal/EntityTableCellActions";
14
14
 
15
15
  const dropZoneClasses = "max-w-full box-border relative pt-[2px] items-center border border-transparent outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
@@ -140,9 +140,7 @@ function StorageUpload({
140
140
  storagePathBuilder,
141
141
  }: StorageUploadProps) {
142
142
 
143
- const [onHover, setOnHover] = useState(false);
144
-
145
- const previewSize = multipleFilesSupported && previewSizeInput === "medium" ? "small" : previewSizeInput;
143
+ const previewSize = previewSizeInput;
146
144
  if (multipleFilesSupported) {
147
145
  const arrayProperty = property as ResolvedArrayProperty<string[]>;
148
146
  if (Array.isArray(arrayProperty.of)) {
@@ -179,10 +177,18 @@ function StorageUpload({
179
177
  onDropRejected: (fileRejections, event) => {
180
178
  for (const fileRejection of fileRejections) {
181
179
  for (const error of fileRejection.errors) {
182
- snackbarContext.open({
183
- type: "error",
184
- message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
185
- });
180
+ console.error("Error uploading file: ", error);
181
+ if (error.code === "file-too-large") {
182
+ snackbarContext.open({
183
+ type: "error",
184
+ message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
185
+ });
186
+ } else if (error.code === "file-invalid-type") {
187
+ snackbarContext.open({
188
+ type: "error",
189
+ message: "Error uploading file: File type is not supported"
190
+ });
191
+ }
186
192
  }
187
193
  }
188
194
  }
@@ -204,10 +210,7 @@ function StorageUpload({
204
210
 
205
211
  return (
206
212
  <div {...rootProps}
207
- onMouseEnter={() => setOnHover(true)}
208
- onMouseMove={() => setOnHover(true)}
209
- onMouseLeave={() => setOnHover(false)}
210
- className={cn(dropZoneClasses,
213
+ className={cls(dropZoneClasses,
211
214
  "relative w-full h-full flex",
212
215
  `justify-${hasValue ? "start" : "center"}`,
213
216
  isDragActive ? activeDropClasses : "",
@@ -244,14 +247,13 @@ function StorageUpload({
244
247
  }
245
248
 
246
249
  return child;
247
- })
248
- }
250
+ })}
249
251
 
250
252
  {!internalValue && <div
251
253
  className="flex-grow m-2 max-w-[200px]"
252
254
  onClick={open}>
253
255
  <Typography
254
- className="text-gray-400 dark:text-gray-600"
256
+ className="text-surface-400 dark:text-surface-600"
255
257
  variant={"body2"}
256
258
  align={"center"}>
257
259
  {helpText}
@@ -268,7 +270,7 @@ function StorageUpload({
268
270
  color={"inherit"}
269
271
  size={"small"}
270
272
  onClick={open}>
271
- <EditIcon size={"small"} className={"text-gray-500"}/>
273
+ <EditIcon size={"small"} className={"text-surface-500"}/>
272
274
  </IconButton>
273
275
  </EntityTableCellActions>
274
276
 
@@ -8,5 +8,5 @@ export type {
8
8
 
9
9
  export * from "./PropertyTableCell";
10
10
  export * from "./EntityCollectionRowActions";
11
- export * from "../common/useDataSourceEntityCollectionTableController";
11
+ export * from "../common/useDataSourceTableController";
12
12
  export * from "./column_utils";