@firecms/core 3.0.0-alpha.84 → 3.0.0-beta.10

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 (370) hide show
  1. package/README.md +6 -7
  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 +3 -4
  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 -18
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
  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 +2 -4
  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 +3 -3
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -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/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
  35. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  36. package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
  37. package/dist/components/ReferenceWidget.d.ts +6 -4
  38. package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
  39. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  40. package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
  41. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  42. package/dist/components/VirtualTable/types.d.ts +3 -3
  43. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  44. package/dist/components/common/index.d.ts +6 -0
  45. package/dist/components/common/table_height.d.ts +5 -0
  46. package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
  47. package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
  48. package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
  49. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  50. package/dist/components/index.d.ts +14 -8
  51. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  52. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  53. package/dist/core/DefaultDrawer.d.ts +19 -0
  54. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  55. package/dist/core/EntityEditView.d.ts +36 -0
  56. package/dist/core/FireCMS.d.ts +1 -1
  57. package/dist/core/NavigationRoutes.d.ts +3 -3
  58. package/dist/core/index.d.ts +3 -6
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/CustomIdField.d.ts +2 -1
  61. package/dist/form/components/ErrorFocus.d.ts +1 -1
  62. package/dist/form/components/FieldHelperText.d.ts +3 -3
  63. package/dist/form/components/FormikArrayContainer.d.ts +2 -1
  64. package/dist/{components → 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 -3
  67. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  68. package/dist/form/components/index.d.ts +2 -1
  69. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  75. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  76. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  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 -4
  80. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  81. package/dist/form/index.d.ts +4 -5
  82. package/dist/form/useClearRestoreValue.d.ts +2 -2
  83. package/dist/form/validation.d.ts +1 -1
  84. package/dist/hooks/data/delete.d.ts +2 -2
  85. package/dist/hooks/data/save.d.ts +2 -3
  86. package/dist/hooks/data/useDataSource.d.ts +2 -2
  87. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  88. package/dist/hooks/index.d.ts +5 -1
  89. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  90. package/dist/hooks/useBuildNavigationController.d.ts +23 -0
  91. package/dist/hooks/useProjectLog.d.ts +14 -0
  92. package/dist/hooks/useSnackbarController.d.ts +1 -0
  93. package/dist/hooks/useStorageSource.d.ts +2 -2
  94. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.es.js +16297 -12643
  97. package/dist/index.es.js.map +1 -1
  98. package/dist/index.umd.js +20043 -587
  99. package/dist/index.umd.js.map +1 -1
  100. package/dist/internal/useBuildDataSource.d.ts +1 -12
  101. package/dist/preview/PropertyPreview.d.ts +1 -1
  102. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  103. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  104. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  105. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  106. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  107. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  108. package/dist/types/analytics.d.ts +1 -1
  109. package/dist/types/auth.d.ts +38 -2
  110. package/dist/types/collections.d.ts +56 -9
  111. package/dist/types/datasource.d.ts +59 -39
  112. package/dist/types/entities.d.ts +7 -1
  113. package/dist/types/entity_actions.d.ts +14 -0
  114. package/dist/types/entity_callbacks.d.ts +3 -3
  115. package/dist/types/entity_overrides.d.ts +6 -0
  116. package/dist/types/fields.d.ts +47 -42
  117. package/dist/types/firecms.d.ts +8 -23
  118. package/dist/types/index.d.ts +2 -1
  119. package/dist/types/navigation.d.ts +18 -16
  120. package/dist/types/permissions.d.ts +5 -1
  121. package/dist/types/plugins.d.ts +31 -31
  122. package/dist/types/properties.d.ts +36 -23
  123. package/dist/types/property_config.d.ts +2 -2
  124. package/dist/types/roles.d.ts +31 -0
  125. package/dist/types/side_dialogs_controller.d.ts +10 -0
  126. package/dist/types/storage.d.ts +86 -3
  127. package/dist/types/user.d.ts +5 -0
  128. package/dist/util/collections.d.ts +9 -1
  129. package/dist/util/entities.d.ts +2 -2
  130. package/dist/util/icon_list.d.ts +5 -1
  131. package/dist/util/icon_synonyms.d.ts +1 -97
  132. package/dist/util/icons.d.ts +10 -3
  133. package/dist/util/index.d.ts +3 -1
  134. package/dist/util/navigation_utils.d.ts +2 -2
  135. package/dist/util/objects.d.ts +1 -1
  136. package/dist/util/permissions.d.ts +4 -4
  137. package/dist/util/plurals.d.ts +0 -2
  138. package/dist/util/property_utils.d.ts +1 -1
  139. package/dist/util/references.d.ts +4 -2
  140. package/dist/util/resolutions.d.ts +28 -14
  141. package/dist/util/storage.d.ts +23 -2
  142. package/dist/util/strings.d.ts +1 -1
  143. package/dist/util/useDebouncedCallback.d.ts +1 -0
  144. package/dist/util/useStorageUploadController.d.ts +3 -3
  145. package/dist/util/useTraceUpdate.d.ts +1 -0
  146. package/package.json +129 -112
  147. package/src/app/AppBar.tsx +18 -0
  148. package/src/app/Drawer.tsx +24 -0
  149. package/src/app/Scaffold.tsx +243 -0
  150. package/src/app/index.ts +4 -0
  151. package/src/app/useApp.tsx +32 -0
  152. package/src/components/ArrayContainer.tsx +45 -75
  153. package/src/components/CircularProgressCenter.tsx +1 -1
  154. package/src/components/ClearFilterSortButton.tsx +41 -0
  155. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  156. package/src/components/DeleteEntityDialog.tsx +4 -4
  157. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
  158. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
  159. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
  160. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
  161. package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
  162. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
  163. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
  164. package/src/components/EntityCollectionTable/index.tsx +1 -9
  165. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
  166. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
  167. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  168. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
  169. package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
  170. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  171. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  172. package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
  173. package/src/components/EntityCollectionView/utils.ts +19 -0
  174. package/src/components/EntityPreview.tsx +208 -71
  175. package/src/components/EntityView.tsx +84 -0
  176. package/src/components/ErrorView.tsx +1 -1
  177. package/src/components/FieldCaption.tsx +14 -0
  178. package/src/components/HomePage/DefaultHomePage.tsx +38 -28
  179. package/src/components/HomePage/NavigationCard.tsx +69 -0
  180. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  181. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  182. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  183. package/src/components/HomePage/index.tsx +3 -1
  184. package/src/components/PropertyConfigBadge.tsx +23 -0
  185. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  186. package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
  187. package/src/components/ReferenceWidget.tsx +26 -16
  188. package/src/components/SearchIconsView.tsx +10 -7
  189. package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
  190. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  191. package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
  192. package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
  193. package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
  194. package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
  195. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  196. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  197. package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
  198. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  199. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  200. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  201. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  202. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
  203. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
  204. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  205. package/src/components/VirtualTable/types.tsx +2 -3
  206. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
  207. package/src/components/common/index.ts +6 -0
  208. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  209. package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
  210. package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
  211. package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
  212. package/src/components/common/useTableSearchHelper.ts +88 -0
  213. package/src/components/index.tsx +15 -8
  214. package/src/contexts/AuthControllerContext.tsx +1 -1
  215. package/src/contexts/DialogsProvider.tsx +2 -2
  216. package/src/core/DefaultAppBar.tsx +176 -0
  217. package/src/core/DefaultDrawer.tsx +183 -0
  218. package/src/core/DrawerNavigationItem.tsx +66 -0
  219. package/src/core/EntityEditView.tsx +1127 -0
  220. package/src/core/EntitySidePanel.tsx +9 -8
  221. package/src/core/FireCMS.tsx +67 -59
  222. package/src/core/NavigationRoutes.tsx +25 -17
  223. package/src/core/SideDialogs.tsx +1 -0
  224. package/src/core/field_configs.tsx +18 -19
  225. package/src/core/index.tsx +3 -6
  226. package/src/form/PropertyFieldBinding.tsx +60 -33
  227. package/src/form/components/CustomIdField.tsx +51 -36
  228. package/src/form/components/ErrorFocus.tsx +3 -3
  229. package/src/form/components/FieldHelperText.tsx +4 -4
  230. package/src/form/components/FormikArrayContainer.tsx +4 -1
  231. package/src/form/components/LabelWithIcon.tsx +41 -0
  232. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  233. package/src/form/components/StorageItemPreview.tsx +22 -10
  234. package/src/form/components/StorageUploadProgress.tsx +8 -8
  235. package/src/form/components/index.tsx +2 -1
  236. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
  237. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
  238. package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
  239. package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
  240. package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
  241. package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
  242. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  243. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  244. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
  245. package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
  246. package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
  247. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
  248. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
  249. package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
  250. package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
  251. package/src/form/index.tsx +5 -9
  252. package/src/form/useClearRestoreValue.tsx +2 -2
  253. package/src/form/validation.ts +4 -21
  254. package/src/hooks/data/delete.ts +5 -4
  255. package/src/hooks/data/save.ts +7 -2
  256. package/src/hooks/data/useCollectionFetch.tsx +1 -1
  257. package/src/hooks/data/useDataSource.tsx +15 -2
  258. package/src/hooks/data/useEntityFetch.tsx +4 -4
  259. package/src/hooks/index.tsx +7 -1
  260. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  261. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  262. package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
  263. package/src/hooks/useFireCMSContext.tsx +51 -3
  264. package/src/hooks/useLargeLayout.tsx +10 -7
  265. package/src/hooks/useProjectLog.tsx +63 -0
  266. package/src/hooks/useReferenceDialog.tsx +3 -3
  267. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  268. package/src/hooks/useSnackbarController.tsx +1 -2
  269. package/src/hooks/useStorageSource.tsx +7 -2
  270. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  271. package/src/index.ts +1 -0
  272. package/src/internal/useBuildDataSource.ts +79 -84
  273. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  274. package/src/internal/useBuildSideEntityController.tsx +103 -23
  275. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  276. package/src/preview/PropertyPreview.tsx +12 -19
  277. package/src/preview/PropertyPreviewProps.tsx +6 -10
  278. package/src/preview/components/BooleanPreview.tsx +19 -4
  279. package/src/preview/components/EnumValuesChip.tsx +2 -2
  280. package/src/preview/components/ImagePreview.tsx +24 -34
  281. package/src/preview/components/ReferencePreview.tsx +73 -176
  282. package/src/preview/components/StorageThumbnail.tsx +5 -1
  283. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  284. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
  285. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
  286. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
  287. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  288. package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
  289. package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
  290. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  291. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  292. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  293. package/src/preview/util.ts +2 -2
  294. package/src/types/analytics.ts +1 -0
  295. package/src/types/auth.tsx +51 -2
  296. package/src/types/collections.ts +65 -9
  297. package/src/types/customization_controller.tsx +0 -1
  298. package/src/types/datasource.ts +69 -47
  299. package/src/types/entities.ts +15 -1
  300. package/src/types/entity_actions.tsx +17 -0
  301. package/src/types/entity_callbacks.ts +4 -3
  302. package/src/types/entity_overrides.tsx +7 -0
  303. package/src/types/fields.tsx +51 -45
  304. package/src/types/firecms.tsx +9 -26
  305. package/src/types/index.ts +2 -1
  306. package/src/types/navigation.ts +20 -19
  307. package/src/types/permissions.ts +6 -1
  308. package/src/types/plugins.tsx +38 -40
  309. package/src/types/properties.ts +42 -24
  310. package/src/types/property_config.tsx +2 -2
  311. package/src/types/roles.ts +41 -0
  312. package/src/types/side_dialogs_controller.tsx +13 -0
  313. package/src/types/side_entity_controller.tsx +1 -0
  314. package/src/types/storage.ts +94 -3
  315. package/src/types/user.ts +7 -0
  316. package/src/util/collections.ts +22 -0
  317. package/src/util/entities.ts +6 -5
  318. package/src/util/enums.ts +1 -1
  319. package/src/util/icon_list.ts +15 -10
  320. package/src/util/icon_synonyms.ts +3 -99
  321. package/src/util/icons.tsx +18 -4
  322. package/src/util/index.ts +3 -1
  323. package/src/util/make_properties_editable.ts +13 -5
  324. package/src/util/navigation_utils.ts +6 -6
  325. package/src/util/objects.ts +25 -28
  326. package/src/util/permissions.ts +12 -8
  327. package/src/util/plurals.ts +0 -2
  328. package/src/util/property_utils.tsx +1 -1
  329. package/src/util/references.ts +39 -5
  330. package/src/util/resolutions.ts +75 -42
  331. package/src/util/storage.ts +79 -21
  332. package/src/util/strings.ts +4 -3
  333. package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
  334. package/src/util/useStorageUploadController.tsx +33 -7
  335. package/src/util/useTraceUpdate.tsx +2 -1
  336. package/dist/components/VirtualTable/common.d.ts +0 -2
  337. package/dist/core/Drawer.d.ts +0 -23
  338. package/dist/core/Scaffold.d.ts +0 -52
  339. package/dist/form/EntityForm.d.ts +0 -75
  340. package/dist/form/components/SubmitListener.d.ts +0 -1
  341. package/dist/form/components/SwitchControl.d.ts +0 -8
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  344. package/dist/internal/EntityView.d.ts +0 -22
  345. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  346. package/dist/internal/useBuildNavigationController.d.ts +0 -14
  347. package/dist/internal/useLocaleConfig.d.ts +0 -1
  348. package/dist/types/appcheck.d.ts +0 -26
  349. package/dist/util/useDebounce.d.ts +0 -1
  350. package/src/components/FieldConfigBadge.tsx +0 -17
  351. package/src/components/FireCMSAppBar.tsx +0 -157
  352. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  353. package/src/components/LabelWithIcon.tsx +0 -33
  354. package/src/core/Drawer.tsx +0 -162
  355. package/src/core/Scaffold.tsx +0 -278
  356. package/src/form/EntityForm.tsx +0 -657
  357. package/src/form/components/SubmitListener.tsx +0 -32
  358. package/src/form/components/SwitchControl.tsx +0 -39
  359. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  360. package/src/hooks/useVerifyLicense.tsx +0 -1
  361. package/src/internal/EntityView.tsx +0 -578
  362. package/src/internal/useBuildCustomizationController.tsx +0 -5
  363. package/src/internal/useLocaleConfig.tsx +0 -18
  364. package/src/types/appcheck.ts +0 -29
  365. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
  366. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
  367. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
  368. /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
  369. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  370. /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
@@ -10,12 +10,7 @@ import {
10
10
  SelectionController,
11
11
  User
12
12
  } from "../../types";
13
- import { OnCellValueChange, UniqueFieldValidator } from "./types";
14
-
15
- /**
16
- * @group Collection components
17
- */
18
- export type OnColumnResizeParams = { width: number, key: string };
13
+ import { OnCellValueChange, OnColumnResizeParams, UniqueFieldValidator } from "../common/types";
19
14
 
20
15
  /**
21
16
  * @group Collection components
@@ -23,7 +18,10 @@ export type OnColumnResizeParams = { width: number, key: string };
23
18
  export type EntityCollectionTableProps<M extends Record<string, any>,
24
19
  UserType extends User = User> = {
25
20
 
26
- debugKey?: string;
21
+ className?: string;
22
+
23
+ style?: React.CSSProperties;
24
+
27
25
  /**
28
26
  * Display these entities as selected
29
27
  */
@@ -97,13 +95,13 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
97
95
  */
98
96
  tableController: EntityTableController<M>;
99
97
 
100
- displayedColumnIds: PropertyColumnConfig[];
98
+ displayedColumnIds?: PropertyColumnConfig[];
101
99
 
102
100
  forceFilter?: FilterValues<Extract<keyof M, string>>;
103
101
 
104
102
  textSearchEnabled?: boolean;
105
103
 
106
- inlineEditing?: boolean | ((entity: Entity<M>) => boolean);
104
+ inlineEditing?: boolean;
107
105
 
108
106
  additionalFields?: AdditionalFieldDelegate<M, UserType>[];
109
107
 
@@ -136,15 +134,16 @@ export type EntityCollectionTableProps<M extends Record<string, any>,
136
134
  onTextSearchClick?: () => void;
137
135
 
138
136
  textSearchLoading?: boolean;
139
- }
137
+
138
+ enablePopupIcon: boolean;
139
+ };
140
140
 
141
141
  export type GetPropertyForProps<M extends Record<string, any>> = {
142
142
  propertyKey: string,
143
- propertyValue: any,
144
143
  entity: Entity<M>
145
144
  };
146
145
 
147
146
  export type PropertyColumnConfig = {
148
147
  key: string,
149
- disabled: boolean,
148
+ disabled?: boolean,
150
149
  };
@@ -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 { useEntityCollectionTableController } from "./EntityCollectionTable";
28
- import { useClearRestoreValue, useFireCMSContext } from "../../hooks";
29
27
 
30
28
  import { EntityTableCell } from "./internal/EntityTableCell";
31
29
  import { EntityTableCellActions } from "./internal/EntityTableCellActions";
32
30
 
33
- import { getRowHeight } from "../VirtualTable/common";
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,
@@ -84,7 +86,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
84
86
  selectedCell,
85
87
  select,
86
88
  setPopupCell
87
- } = useEntityCollectionTableController();
89
+ } = useSelectableTableController();
88
90
 
89
91
  const selected = selectedCell?.propertyKey === propertyKey &&
90
92
  selectedCell?.entity.path === entity.path &&
@@ -94,6 +96,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
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) => {
@@ -236,7 +241,6 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
236
241
  height={getRowHeight(size)}
237
242
  propertyKey={propertyKey}
238
243
  property={property}
239
- // entity={entity}
240
244
  value={internalValue}
241
245
  size={getPreviewSizeFrom(size)}
242
246
  />
@@ -246,7 +250,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
246
250
  if (!customField && (!customPreview || selected)) {
247
251
  const isAStorageProperty = isStorageProperty(property);
248
252
  if (isAStorageProperty) {
249
- innerComponent = <TableStorageUpload error={error}
253
+ innerComponent = <TableStorageUpload error={validationError ?? error}
250
254
  disabled={disabled}
251
255
  focused={selected}
252
256
  selected={selected}
@@ -273,7 +277,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
273
277
  valueType={"number"}
274
278
  small={getPreviewSizeFrom(size) !== "medium"}
275
279
  enumValues={numberProperty.enumValues}
276
- error={error}
280
+ error={validationError ?? error}
277
281
  internalValue={internalValue as string | number}
278
282
  updateValue={updateValue}
279
283
  />;
@@ -281,7 +285,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
281
285
  } else {
282
286
  innerComponent = <VirtualTableNumberInput
283
287
  align={align}
284
- error={error}
288
+ error={validationError ?? error}
285
289
  focused={selected}
286
290
  disabled={disabled}
287
291
  value={internalValue as number}
@@ -299,14 +303,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
299
303
  valueType={"string"}
300
304
  small={getPreviewSizeFrom(size) !== "medium"}
301
305
  enumValues={stringProperty.enumValues}
302
- error={error}
306
+ error={validationError ?? error}
303
307
  internalValue={internalValue as string | number}
304
308
  updateValue={updateValue}
305
309
  />;
306
310
  fullHeight = true;
307
- } else if (!stringProperty.storage) {
311
+ } else if (stringProperty.markdown || !stringProperty.storage) {
308
312
  const multiline = Boolean(stringProperty.multiline) || Boolean(stringProperty.markdown);
309
- innerComponent = <VirtualTableInput error={error}
313
+ innerComponent = <VirtualTableInput error={validationError ?? error}
310
314
  disabled={disabled}
311
315
  multiline={multiline}
312
316
  focused={selected}
@@ -316,7 +320,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
316
320
  allowScroll = true;
317
321
  }
318
322
  } else if (property.dataType === "boolean") {
319
- innerComponent = <VirtualTableSwitch error={error}
323
+ innerComponent = <VirtualTableSwitch error={validationError ?? error}
320
324
  disabled={disabled}
321
325
  focused={selected}
322
326
  internalValue={internalValue as boolean}
@@ -324,7 +328,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
324
328
  />;
325
329
  } else if (property.dataType === "date") {
326
330
  innerComponent = <VirtualTableDateField name={propertyKey as string}
327
- error={error}
331
+ error={validationError ?? error}
328
332
  disabled={disabled}
329
333
  mode={property.mode}
330
334
  focused={selected}
@@ -345,6 +349,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
345
349
  path={property.path}
346
350
  multiselect={false}
347
351
  previewProperties={property.previewProperties}
352
+ includeId={property.includeId}
353
+ includeEntityLink={property.includeEntityLink}
348
354
  title={property.name}
349
355
  forceFilter={property.forceFilter}
350
356
  />;
@@ -367,7 +373,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
367
373
  small={getPreviewSizeFrom(size) !== "medium"}
368
374
  valueType={arrayProperty.of.dataType}
369
375
  enumValues={arrayProperty.of.enumValues}
370
- error={error}
376
+ error={validationError ?? error}
371
377
  internalValue={internalValue as string | number}
372
378
  updateValue={updateValue}
373
379
  />;
@@ -389,6 +395,8 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
389
395
  previewProperties={arrayProperty.of.previewProperties}
390
396
  title={arrayProperty.name}
391
397
  forceFilter={arrayProperty.of.forceFilter}
398
+ includeId={arrayProperty.of.includeId}
399
+ includeEntityLink={arrayProperty.of.includeEntityLink}
392
400
  />;
393
401
  }
394
402
  allowScroll = false;
@@ -400,16 +408,14 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
400
408
 
401
409
  if (!innerComponent) {
402
410
  allowScroll = false;
403
- showExpandIcon = selected && !innerComponent && !disabled && !readOnlyProperty;
411
+ showExpandIcon = enablePopupIcon && selected && !innerComponent && !disabled && !readOnlyProperty;
404
412
  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)}
413
+ <PropertyPreview width={width}
414
+ height={height}
415
+ propertyKey={propertyKey as string}
416
+ value={internalValue}
417
+ property={property}
418
+ size={getPreviewSizeFrom(size)}
413
419
  />
414
420
  );
415
421
  }
@@ -426,7 +432,7 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
426
432
  removePadding={removePadding}
427
433
  fullHeight={fullHeight}
428
434
  saved={saved}
429
- error={error}
435
+ error={validationError ?? error}
430
436
  align={align}
431
437
  allowScroll={allowScroll}
432
438
  showExpandIcon={showExpandIcon}
@@ -446,9 +452,9 @@ export const PropertyTableCell = React.memo<PropertyTableCellProps<any, any>>(
446
452
  );
447
453
 
448
454
  },
449
- areEqual) as React.FunctionComponent<PropertyTableCellProps<any, any>>;
455
+ areEqual) as React.FunctionComponent<PropertyTableCellProps<any>>;
450
456
 
451
- function areEqual(prevProps: PropertyTableCellProps<any, any>, nextProps: PropertyTableCellProps<any, any>) {
457
+ function areEqual(prevProps: PropertyTableCellProps<any>, nextProps: PropertyTableCellProps<any>) {
452
458
  return prevProps.height === nextProps.height &&
453
459
  prevProps.propertyKey === nextProps.propertyKey &&
454
460
  prevProps.align === nextProps.align &&
@@ -3,7 +3,7 @@ import { getTableCellAlignment, getTablePropertyColumnWidth } from "./internal/c
3
3
  import { FilterValues, ResolvedProperties, ResolvedProperty } from "../../types";
4
4
  import { VirtualTableColumn } from "../VirtualTable";
5
5
  import { getIconForProperty, getResolvedPropertyInPath } from "../../util";
6
- import { getColumnKeysForProperty } from "../EntityCollectionView/useColumnsIds";
6
+ import { getColumnKeysForProperty } from "../common/useColumnsIds";
7
7
 
8
8
  export function buildIdColumn(largeLayout?: boolean): VirtualTableColumn {
9
9
  return {
@@ -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 } 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={"smallest"}
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,27 @@ 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-4 py-2 text-sm font-medium flex items-center uppercase",
155
+ multiselect ? "gap-4" : "gap-6",
156
+ disabled
157
+ ? "text-slate-500"
158
+ : "cursor-pointer text-slate-700 dark:text-slate-300 hover:bg-slate-50 dark:hover:bg-gray-800 group-hover:bg-slate-50 dark:group-hover:bg-gray-800")}
153
159
  onClick={handleOpen}
154
- size={"small"}
155
- variant="outlined"
156
- color="primary">
160
+ size={"medium"}>
161
+ <IconForView
162
+ size={"small"}
163
+ collectionOrView={collection}
164
+ className={"text-gray-300 dark:text-gray-600"}/>
157
165
  Edit {title}
158
- </Button>}
166
+ </EntityPreviewContainer>}
159
167
 
160
168
  </div>
161
169
  );
@@ -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";
@@ -51,7 +51,7 @@ export function TableStorageUpload(props: {
51
51
  entity,
52
52
  path,
53
53
  previewSize,
54
- updateValue
54
+ updateValue,
55
55
  } = props;
56
56
 
57
57
  const storageSource = useStorageSource();
@@ -137,7 +137,7 @@ function StorageUpload({
137
137
  storage,
138
138
  onFilesAdded,
139
139
  onFileUploadComplete,
140
- storagePathBuilder
140
+ storagePathBuilder,
141
141
  }: StorageUploadProps) {
142
142
 
143
143
  const [onHover, setOnHover] = useState(false);
@@ -179,10 +179,18 @@ function StorageUpload({
179
179
  onDropRejected: (fileRejections, event) => {
180
180
  for (const fileRejection of fileRejections) {
181
181
  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
- });
182
+ console.error("Error uploading file: ", error);
183
+ if (error.code === "file-too-large") {
184
+ snackbarContext.open({
185
+ type: "error",
186
+ message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
187
+ });
188
+ } else if (error.code === "file-invalid-type") {
189
+ snackbarContext.open({
190
+ type: "error",
191
+ message: "Error uploading file: File type is not supported"
192
+ });
193
+ }
186
194
  }
187
195
  }
188
196
  }
@@ -207,7 +215,7 @@ function StorageUpload({
207
215
  onMouseEnter={() => setOnHover(true)}
208
216
  onMouseMove={() => setOnHover(true)}
209
217
  onMouseLeave={() => setOnHover(false)}
210
- className={cn(dropZoneClasses,
218
+ className={cls(dropZoneClasses,
211
219
  "relative w-full h-full flex",
212
220
  `justify-${hasValue ? "start" : "center"}`,
213
221
  isDragActive ? activeDropClasses : "",
@@ -293,7 +301,7 @@ export function TableStorageItemPreview({
293
301
 
294
302
  return (
295
303
  <div
296
- className={"relative m-2"}
304
+ className={"relative p-2 max-w-full"}
297
305
  >
298
306
 
299
307
  {value &&
@@ -4,17 +4,9 @@ export {
4
4
 
5
5
  export type {
6
6
  EntityCollectionTableProps,
7
- OnColumnResizeParams
8
7
  } from "./EntityCollectionTableProps";
9
8
 
10
- export type {
11
- UniqueFieldValidator,
12
- OnCellValueChange,
13
- OnCellValueChangeParams
14
- } from "./types";
15
-
16
9
  export * from "./PropertyTableCell";
17
- export * from "./SimpleEntityCollectionTable";
18
10
  export * from "./EntityCollectionRowActions";
19
- export * from "./useDataSourceEntityCollectionTableController";
11
+ export * from "../common/useDataSourceEntityCollectionTableController";
20
12
  export * from "./column_utils";