@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
@@ -0,0 +1,243 @@
1
+ import React, { PropsWithChildren, useCallback } from "react";
2
+ import { ChevronLeftIcon, cls, defaultBorderMixin, IconButton, MenuIcon, Sheet, Tooltip } from "@firecms/ui";
3
+ import equal from "react-fast-compare"
4
+ import { useLargeLayout } from "../hooks";
5
+ import { ErrorBoundary } from "../components";
6
+ import { AppContext } from "./useApp";
7
+
8
+ export const DRAWER_WIDTH = 280;
9
+
10
+ /**
11
+ * @group Core
12
+ */
13
+ export interface ScaffoldProps {
14
+
15
+ /**
16
+ * Open the drawer on hover
17
+ */
18
+ autoOpenDrawer?: boolean;
19
+
20
+ /**
21
+ * Logo to be displayed in the top bar and drawer.
22
+ * Note that this has no effect if you are using a custom AppBar or Drawer.
23
+ */
24
+ logo?: string;
25
+
26
+ className?: string;
27
+
28
+ style?: React.CSSProperties;
29
+ }
30
+
31
+ /**
32
+ * This view acts as a scaffold for FireCMS.
33
+ *
34
+ * It is in charge of displaying the navigation drawer, top bar and main
35
+ * collection views.
36
+ * This component needs a parent {@link FireCMS}
37
+ *
38
+ * @param props
39
+
40
+ * @group Core
41
+ */
42
+ export const Scaffold = React.memo<PropsWithChildren<ScaffoldProps>>(
43
+ function Scaffold(props: PropsWithChildren<ScaffoldProps>) {
44
+
45
+ const {
46
+ children,
47
+ autoOpenDrawer,
48
+ logo,
49
+ className,
50
+ style
51
+ } = props;
52
+
53
+ const drawerChildren = React.Children.toArray(children).filter((child: any) => child.type.componentType === "Drawer");
54
+ if (drawerChildren.length > 1) {
55
+ throw Error("Only one Drawer component is allowed in Scaffold");
56
+ }
57
+ const appBarChildren = React.Children.toArray(children).filter((child: any) => child.type.componentType === "AppBar");
58
+ if (appBarChildren.length > 1) {
59
+ throw Error("Only one AppBar component is allowed in Scaffold");
60
+ }
61
+ const otherChildren = React.Children.toArray(children)
62
+ .filter((child: any) => child.type.componentType !== "Drawer" && child.type.componentType !== "AppBar");
63
+ const includeDrawer = drawerChildren.length > 0;
64
+ const largeLayout = useLargeLayout();
65
+
66
+ const [drawerOpen, setDrawerOpen] = React.useState(false);
67
+ const [onHover, setOnHover] = React.useState(false);
68
+
69
+ const setOnHoverTrue = useCallback(() => setOnHover(true), []);
70
+ const setOnHoverFalse = useCallback(() => setOnHover(false), []);
71
+
72
+ const handleDrawerOpen = useCallback(() => {
73
+ setDrawerOpen(true);
74
+ }, []);
75
+
76
+ const handleDrawerClose = useCallback(() => {
77
+ setDrawerOpen(false);
78
+ }, []);
79
+
80
+ const computedDrawerOpen: boolean = drawerOpen || Boolean(largeLayout && autoOpenDrawer && onHover);
81
+
82
+ const hasAppBar = Boolean(appBarChildren.length > 0);
83
+ return (
84
+ <AppContext.Provider value={{
85
+ logo,
86
+ hasDrawer: includeDrawer,
87
+ drawerHovered: onHover,
88
+ drawerOpen: computedDrawerOpen,
89
+ closeDrawer: handleDrawerClose,
90
+ openDrawer: handleDrawerOpen,
91
+ autoOpenDrawer
92
+ }}>
93
+ <div
94
+ className={cls("flex h-screen w-screen bg-gray-50 dark:bg-gray-900 text-gray-900 dark:text-white overflow-hidden", className)}
95
+ style={{
96
+ paddingTop: "env(safe-area-inset-top)",
97
+ paddingLeft: "env(safe-area-inset-left)",
98
+ paddingRight: "env(safe-area-inset-right)",
99
+ paddingBottom: "env(safe-area-inset-bottom)",
100
+ height: "100dvh",
101
+ ...style
102
+ }}>
103
+
104
+ {appBarChildren}
105
+
106
+ <DrawerWrapper
107
+ displayed={includeDrawer}
108
+ onMouseEnter={setOnHoverTrue}
109
+ onMouseMove={setOnHoverTrue}
110
+ onMouseLeave={setOnHoverFalse}
111
+ open={computedDrawerOpen}
112
+ hovered={onHover}
113
+ setDrawerOpen={setDrawerOpen}>
114
+ {includeDrawer && drawerChildren}
115
+ </DrawerWrapper>
116
+
117
+ <main
118
+ className="flex flex-col flex-grow overflow-auto">
119
+ {hasAppBar && <DrawerHeader/>}
120
+ <div
121
+ className={cls(defaultBorderMixin, "flex-grow overflow-auto lg:m-0 lg:mx-4 lg:mb-4 lg:rounded-lg lg:border lg:border-solid m-0 mt-1", {
122
+ "lg:mt-4": !hasAppBar
123
+ })}>
124
+
125
+ <ErrorBoundary>
126
+ {otherChildren}
127
+ </ErrorBoundary>
128
+
129
+ </div>
130
+ </main>
131
+ </div>
132
+ </AppContext.Provider>
133
+ );
134
+ },
135
+ equal
136
+ )
137
+
138
+ const DrawerHeader = () => {
139
+ return (
140
+ <div className="flex flex-col min-h-16"></div>
141
+ );
142
+ };
143
+
144
+ function DrawerWrapper(props: {
145
+ children: React.ReactNode,
146
+ displayed: boolean,
147
+ open: boolean,
148
+ logo?: string,
149
+ hovered: boolean,
150
+ setDrawerOpen: (open: boolean) => void,
151
+ onMouseEnter: () => void,
152
+ onMouseMove: () => void,
153
+ onMouseLeave: () => void
154
+ }) {
155
+
156
+ const width = !props.displayed ? 0 : (props.open ? DRAWER_WIDTH : 72);
157
+ const innerDrawer = <div
158
+ className={"relative h-full no-scrollbar overflow-y-auto overflow-x-hidden"}
159
+ style={{
160
+ width,
161
+ transition: "left 100ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, opacity 100ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, width 100ms cubic-bezier(0.4, 0, 0.6, 1) 0ms"
162
+ }}
163
+ >
164
+
165
+ {!props.open && props.displayed && (
166
+ <Tooltip title="Open menu"
167
+ side="right"
168
+ sideOffset={12}
169
+ asChild={true}>
170
+ <div
171
+ className="ml-2 fixed top-1 left-2 sm:top-2 sm:left-3 !bg-gray-50 dark:!bg-gray-900 rounded-full w-fit z-20">
172
+ <IconButton
173
+ color="inherit"
174
+ aria-label="Open menu"
175
+ onClick={() => props.setDrawerOpen(true)}
176
+ size="large"
177
+ >
178
+ <MenuIcon/>
179
+ </IconButton>
180
+ </div>
181
+ </Tooltip>
182
+ )}
183
+
184
+ <div
185
+ className={`z-20 absolute right-0 top-4 ${
186
+ props.open ? "opacity-100" : "opacity-0 invisible"
187
+ } transition-opacity duration-200 ease-in-out`}>
188
+ <IconButton
189
+ aria-label="Close drawer"
190
+ onClick={() => props.setDrawerOpen(false)}
191
+ >
192
+ <ChevronLeftIcon/>
193
+ </IconButton>
194
+ </div>
195
+
196
+ <div className={"flex flex-col h-full"}>
197
+ {props.children}
198
+ </div>
199
+
200
+ </div>;
201
+
202
+ const largeLayout = useLargeLayout();
203
+ if (!largeLayout) {
204
+ if (!props.displayed)
205
+ return null;
206
+ return <>
207
+ <IconButton
208
+ color="inherit"
209
+ aria-label="Open drawer"
210
+ onClick={() => props.setDrawerOpen(true)}
211
+ size="large"
212
+ className="absolute sm:top-2 sm:left-5 top-1 left-2"
213
+ >
214
+ <MenuIcon/>
215
+ </IconButton>
216
+ <Sheet side={"left"}
217
+ transparent={true}
218
+ open={props.open}
219
+ onOpenChange={props.setDrawerOpen}
220
+ title={"Navigaion drawer"}
221
+ overlayClassName={"bg-white bg-opacity-80"}
222
+ >
223
+ {innerDrawer}
224
+ </Sheet>
225
+ </>;
226
+ }
227
+
228
+ return (
229
+ <div
230
+ className="z-20 relative"
231
+ onMouseEnter={props.onMouseEnter}
232
+ onMouseMove={props.onMouseMove}
233
+ onMouseLeave={props.onMouseLeave}
234
+ style={{
235
+ width,
236
+ transition: "left 100ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, opacity 100ms cubic-bezier(0.4, 0, 0.6, 1) 0ms, width 100ms cubic-bezier(0.4, 0, 0.6, 1) 0ms"
237
+ }}>
238
+
239
+ {innerDrawer}
240
+
241
+ </div>
242
+ );
243
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./Drawer";
2
+ export * from "./AppBar";
3
+ export * from "./Scaffold";
4
+ export * from "./useApp";
@@ -0,0 +1,32 @@
1
+ import React from "react";
2
+
3
+ /**
4
+ * This context represents the state of the app in terms of layout.
5
+ * @group Core
6
+ */
7
+ export type AppState = {
8
+ hasDrawer: boolean,
9
+ drawerHovered: boolean,
10
+ drawerOpen: boolean,
11
+ openDrawer: () => void,
12
+ closeDrawer: () => void,
13
+ autoOpenDrawer?: boolean,
14
+ logo?: string
15
+ }
16
+
17
+ export const AppContext = React.createContext<AppState>({
18
+ hasDrawer: false,
19
+ drawerHovered: false,
20
+ drawerOpen: false,
21
+ openDrawer: () => {
22
+ throw new Error("openDrawer not implemented");
23
+ },
24
+ closeDrawer: () => {
25
+ throw new Error("closeDrawer not implemented");
26
+ },
27
+ autoOpenDrawer: false
28
+ });
29
+
30
+ export function useApp() {
31
+ return React.useContext(AppContext);
32
+ }
@@ -3,18 +3,18 @@ import React, { useCallback, useEffect, useRef, useState } from "react";
3
3
  import { DragDropContext, Draggable, DraggableProvided, Droppable } from "@hello-pangea/dnd";
4
4
 
5
5
  import { getHashValue } from "../util";
6
- import useMeasure from "react-use-measure";
7
6
  import {
8
7
  AddIcon,
9
8
  Button,
10
9
  ContentCopyIcon,
11
10
  fieldBackgroundHoverMixin,
11
+ HandleIcon,
12
12
  IconButton,
13
13
  Menu,
14
14
  MenuItem,
15
- MoreVertIcon,
16
15
  RemoveIcon,
17
- Tooltip
16
+ Tooltip,
17
+ useOutsideAlerter
18
18
  } from "@firecms/ui";
19
19
 
20
20
  interface ArrayContainerProps<T> {
@@ -27,7 +27,8 @@ interface ArrayContainerProps<T> {
27
27
  onInternalIdAdded?: (id: number) => void;
28
28
  includeAddButton?: boolean;
29
29
  newDefaultEntry: T;
30
- onValueChange: (value: T[]) => void
30
+ onValueChange: (value: T[]) => void,
31
+ className?: string;
31
32
  }
32
33
 
33
34
  const buildIdsMap = (value: any[]) =>
@@ -49,11 +50,12 @@ export function ArrayContainer<T>({
49
50
  value,
50
51
  disabled = false,
51
52
  buildEntry,
52
- size,
53
+ size = "medium",
53
54
  onInternalIdAdded,
54
55
  includeAddButton,
55
56
  newDefaultEntry,
56
- onValueChange
57
+ onValueChange,
58
+ className
57
59
  }: ArrayContainerProps<T>) {
58
60
 
59
61
  const hasValue = value && Array.isArray(value) && value.length > 0;
@@ -154,6 +156,7 @@ export function ArrayContainer<T>({
154
156
  >
155
157
  {(droppableProvided, droppableSnapshot) => (
156
158
  <div
159
+ className={className}
157
160
  {...droppableProvided.droppableProps}
158
161
  ref={droppableProvided.innerRef}>
159
162
  {hasValue && internalIds.map((internalId: number, index: number) => {
@@ -224,11 +227,6 @@ export function ArrayContainerItem({
224
227
  isDragging
225
228
  }: ArrayContainerItemProps) {
226
229
 
227
- const [measureRef, bounds] = useMeasure();
228
-
229
- const measuring = size !== "small" && bounds.height === 0;
230
- const menuOverflow = size !== "small" && bounds.height < 100;
231
-
232
230
  const [onHover, setOnHover] = React.useState(false);
233
231
  const setOnHoverTrue = useCallback(() => setOnHover(true), []);
234
232
  const setOnHoverFalse = useCallback(() => setOnHover(false), []);
@@ -241,14 +239,13 @@ export function ArrayContainerItem({
241
239
  {...provided.draggableProps}
242
240
  style={provided.draggableProps.style}
243
241
  className={`${
244
- (isDragging || onHover) ? fieldBackgroundHoverMixin : ""
242
+ (isDragging || onHover) ? "hover:bg-slate-50 dark:hover:bg-gray-800 dark:hover:bg-opacity-20" : ""
245
243
  } mb-1 rounded-md opacity-100`}
246
244
  >
247
245
  <div
248
246
  className="flex items-start">
249
- <div ref={measureRef}
250
- className="flex-grow w-[calc(100%-48px)] text-text-primary dark:text-text-primary-dark"
251
- >
247
+ <div
248
+ className="flex-grow w-[calc(100%-48px)] text-text-primary dark:text-text-primary-dark">
252
249
  {buildEntry(index, internalId)}
253
250
  </div>
254
251
  <ArrayItemOptions direction={size === "small" ? "row" : "column"}
@@ -256,8 +253,6 @@ export function ArrayContainerItem({
256
253
  remove={remove}
257
254
  index={index}
258
255
  provided={provided}
259
- measuring={measuring}
260
- contentOverflow={menuOverflow}
261
256
  copy={copy}/>
262
257
  </div>
263
258
  </div>;
@@ -270,12 +265,8 @@ export function ArrayItemOptions({
270
265
  index,
271
266
  provided,
272
267
  copy,
273
- contentOverflow,
274
- measuring
275
268
  }: {
276
269
  direction?: "row" | "column",
277
- contentOverflow: boolean,
278
- measuring: boolean,
279
270
  disabled: boolean,
280
271
  remove: (index: number) => void,
281
272
  index: number,
@@ -283,77 +274,56 @@ export function ArrayItemOptions({
283
274
  copy: (index: number) => void
284
275
  }) {
285
276
 
286
- return <div className={`p-1 flex ${direction === "row" ? "flex-row-reverse" : "flex-col"} items-center`}
287
- {...provided.dragHandleProps}
288
- >
277
+ const [menuOpen, setMenuOpen] = useState(false);
278
+
279
+ const iconRef = React.useRef<HTMLDivElement>(null);
280
+ useOutsideAlerter(iconRef, () => setMenuOpen(false));
281
+
282
+ return <div className={`pl-2 pt-1 pb-1 flex ${direction === "row" ? "flex-row-reverse" : "flex-col"} items-center`}
283
+ ref={iconRef}
284
+ {...provided.dragHandleProps}>
289
285
  <Tooltip
286
+ delayDuration={400}
287
+ open={menuOpen ? false : undefined}
290
288
  side={direction === "column" ? "left" : undefined}
291
- title="Move">
289
+ title="Drag to move. Click for more options">
292
290
  <IconButton
293
291
  size="small"
294
292
  disabled={disabled}
293
+ onClick={(e) => {
294
+ e.preventDefault();
295
+ setMenuOpen(true);
296
+ }}
297
+ onDragStart={(e: any) => {
298
+ setMenuOpen(false);
299
+ }}
295
300
  className={`cursor-${disabled ? "inherit" : "grab"}`}>
296
- {/* TODO: for some reason, the icon as a span does not work with Drag and Drop
297
- */}
298
- <svg focusable="false"
299
- fill={"currentColor"}
300
- aria-hidden="true" viewBox="0 0 24 24">
301
- <path d="M20 9H4v2h16V9zM4 15h16v-2H4v2z"></path>
302
- </svg>
303
- {/*<DragHandleIcon*/}
304
- {/* size={"small"}*/}
305
- {/* color={disabled ? "disabled" : "inherit"}/>*/}
301
+ <HandleIcon/>
306
302
  </IconButton>
307
- </Tooltip>
308
-
309
- {!measuring && !contentOverflow && <>
310
- <Tooltip
311
- title="Remove"
312
- side={direction === "column" ? "left" : undefined}>
313
- <IconButton
314
- size="small"
315
- aria-label="remove"
316
- disabled={disabled}
317
- onClick={() => remove(index)}>
318
- <RemoveIcon
319
- size={"small"}/>
320
- </IconButton>
321
- </Tooltip>
322
-
323
- <Tooltip
324
- side={direction === "column" ? "left" : undefined}
325
- title="Copy in this position">
326
- <IconButton
327
- size="small"
328
- aria-label="copy"
329
- disabled={disabled}
330
- onClick={() => copy(index)}>
331
- <ContentCopyIcon
332
- size={"small"}/>
333
- </IconButton>
334
- </Tooltip>
335
- </>}
336
-
337
- {!measuring && contentOverflow && <>
338
303
 
339
304
  <Menu
340
- trigger={<IconButton size={"small"}>
341
- <MoreVertIcon
342
- size={"small"}/>
343
- </IconButton>}
344
- >
345
-
346
- <MenuItem dense onClick={() => remove(index)}>
305
+ portalContainer={iconRef.current}
306
+ open={menuOpen}
307
+ trigger={<div tabIndex={-1}/>}>
308
+
309
+ <MenuItem dense onClick={(e) => {
310
+ setMenuOpen(false);
311
+ remove(index);
312
+ }}>
347
313
  <RemoveIcon size={"small"}/>
348
314
  Remove
349
315
  </MenuItem>
350
- <MenuItem dense onClick={() => copy(index)}>
316
+ <MenuItem dense onClick={() => {
317
+ setMenuOpen(false);
318
+ copy(index);
319
+ }}>
351
320
  <ContentCopyIcon size={"small"}/>
352
321
  Copy
353
322
  </MenuItem>
354
323
 
355
324
  </Menu>
356
- </>}
325
+ </Tooltip>
326
+
357
327
  </div>;
358
328
  }
359
329
 
@@ -5,7 +5,7 @@ import { CircularProgress, CircularProgressProps, Typography } from "@firecms/ui
5
5
  *
6
6
  * @param text
7
7
  * @param props
8
- * @constructor
8
+
9
9
  * @ignore
10
10
  */
11
11
  export function CircularProgressCenter({ text, ...props }: CircularProgressProps & {
@@ -0,0 +1,41 @@
1
+ import { Button, FilterListOffIcon } from "@firecms/ui";
2
+ import { EntityTableController } from "../types";
3
+
4
+ export function ClearFilterSortButton({
5
+ tableController,
6
+ enabled
7
+ }: {
8
+ enabled: boolean;
9
+ tableController: EntityTableController
10
+ }) {
11
+ if (!enabled) {
12
+ return null;
13
+ }
14
+
15
+ const filterIsSet = !!tableController.filterValues && Object.keys(tableController.filterValues).length > 0;
16
+ const sortIsSet = !!tableController.sortBy && tableController.sortBy.length > 0;
17
+
18
+ if ((filterIsSet || sortIsSet) && (tableController.clearFilter || tableController.setSortBy)) {
19
+ let label;
20
+ if (filterIsSet && sortIsSet) {
21
+ label = "Clear filter and sort";
22
+ } else if (filterIsSet) {
23
+ label = "Clear filter";
24
+ } else {
25
+ label = "Clear sort";
26
+ }
27
+ return <Button
28
+ variant={"outlined"}
29
+ className="h-fit-content"
30
+ aria-label="filter clear"
31
+ onClick={() => {
32
+ tableController.clearFilter?.();
33
+ tableController.setSortBy?.(undefined);
34
+ }}
35
+ size={"small"}>
36
+ <FilterListOffIcon/>
37
+ {label}
38
+ </Button>
39
+ }
40
+ return null;
41
+ }
@@ -2,7 +2,7 @@ import React from "react";
2
2
 
3
3
  import { Button, Dialog, DialogActions, DialogContent, LoadingButton, Typography } from "@firecms/ui";
4
4
 
5
- export function DeleteConfirmationDialog({
5
+ export function ConfirmationDialog({
6
6
  open,
7
7
  onAccept,
8
8
  onCancel,
@@ -9,7 +9,7 @@ import {
9
9
  useSnackbarController
10
10
  } from "../hooks";
11
11
  import { resolveCollection } from "../util";
12
- import { EntityPreview } from "./EntityPreview";
12
+ import { EntityView } from "./EntityView";
13
13
 
14
14
  export interface DeleteEntityDialogProps<M extends Record<string, any>> {
15
15
  entityOrEntitiesToDelete?: Entity<M> | Entity<M>[],
@@ -35,7 +35,7 @@ export function DeleteEntityDialog<M extends Record<string, any>>({
35
35
  path
36
36
  }: DeleteEntityDialogProps<M>) {
37
37
 
38
- const dataSource = useDataSource();
38
+ const dataSource = useDataSource(collection);
39
39
  const customizationController = useCustomizationController();
40
40
  const snackbarController = useSnackbarController();
41
41
  const [loading, setLoading] = useState(false);
@@ -163,7 +163,7 @@ export function DeleteEntityDialog<M extends Record<string, any>>({
163
163
  } else {
164
164
  const entity = entityOrEntities as Entity<M> | undefined;
165
165
  content = entity
166
- ? <EntityPreview
166
+ ? <EntityView
167
167
  entity={entity}
168
168
  collection={collection}
169
169
  path={path}/>
@@ -176,7 +176,7 @@ export function DeleteEntityDialog<M extends Record<string, any>>({
176
176
 
177
177
  return (
178
178
  <Dialog
179
- maxWidth={"2xl"}
179
+ maxWidth={multipleEntities ? "lg" : "2xl"}
180
180
  aria-labelledby="delete-dialog"
181
181
  open={open}
182
182
  onOpenChange={(open) => !open ? onClose() : undefined}