@firecms/core 3.0.0-beta.1 → 3.0.0-beta.11

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 (387) 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 +19 -8
  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 +9 -15
  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 +8 -5
  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 +5 -2
  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 +2 -2
  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/{components → form/components}/LabelWithIcon.d.ts +1 -1
  64. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  65. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  66. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  67. package/dist/form/components/index.d.ts +2 -2
  68. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  69. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  74. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  75. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  77. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  80. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  81. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  82. package/dist/form/index.d.ts +4 -5
  83. package/dist/form/useClearRestoreValue.d.ts +2 -2
  84. package/dist/form/validation.d.ts +1 -1
  85. package/dist/hooks/data/delete.d.ts +4 -4
  86. package/dist/hooks/data/save.d.ts +4 -5
  87. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  88. package/dist/hooks/data/useDataSource.d.ts +2 -2
  89. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  90. package/dist/hooks/index.d.ts +5 -1
  91. package/dist/hooks/useAuthController.d.ts +1 -1
  92. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  93. package/dist/hooks/useBuildNavigationController.d.ts +23 -0
  94. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  95. package/dist/hooks/useProjectLog.d.ts +14 -0
  96. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  97. package/dist/hooks/useSnackbarController.d.ts +1 -0
  98. package/dist/hooks/useStorageSource.d.ts +2 -2
  99. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  100. package/dist/index.d.ts +1 -0
  101. package/dist/index.es.js +20246 -13863
  102. package/dist/index.es.js.map +1 -1
  103. package/dist/index.umd.js +22772 -588
  104. package/dist/index.umd.js.map +1 -1
  105. package/dist/internal/useBuildDataSource.d.ts +1 -12
  106. package/dist/preview/PropertyPreview.d.ts +1 -1
  107. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  108. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  109. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  110. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  111. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  112. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  113. package/dist/preview/util.d.ts +3 -3
  114. package/dist/types/analytics.d.ts +1 -1
  115. package/dist/types/auth.d.ts +37 -3
  116. package/dist/types/collections.d.ts +68 -20
  117. package/dist/types/datasource.d.ts +55 -39
  118. package/dist/types/entities.d.ts +7 -1
  119. package/dist/types/entity_actions.d.ts +18 -4
  120. package/dist/types/entity_callbacks.d.ts +17 -17
  121. package/dist/types/entity_overrides.d.ts +6 -0
  122. package/dist/types/export_import.d.ts +4 -4
  123. package/dist/types/fields.d.ts +63 -42
  124. package/dist/types/firecms.d.ts +10 -25
  125. package/dist/types/firecms_context.d.ts +1 -1
  126. package/dist/types/index.d.ts +2 -1
  127. package/dist/types/navigation.d.ts +18 -16
  128. package/dist/types/permissions.d.ts +8 -4
  129. package/dist/types/plugins.d.ts +39 -39
  130. package/dist/types/properties.d.ts +36 -23
  131. package/dist/types/property_config.d.ts +2 -4
  132. package/dist/types/roles.d.ts +31 -0
  133. package/dist/types/side_dialogs_controller.d.ts +10 -0
  134. package/dist/types/storage.d.ts +86 -3
  135. package/dist/types/user.d.ts +6 -0
  136. package/dist/util/builders.d.ts +2 -2
  137. package/dist/util/collections.d.ts +9 -1
  138. package/dist/util/entities.d.ts +3 -3
  139. package/dist/util/icon_list.d.ts +5 -1
  140. package/dist/util/icon_synonyms.d.ts +1 -98
  141. package/dist/util/icons.d.ts +13 -4
  142. package/dist/util/index.d.ts +3 -1
  143. package/dist/util/navigation_utils.d.ts +2 -2
  144. package/dist/util/objects.d.ts +2 -1
  145. package/dist/util/permissions.d.ts +4 -4
  146. package/dist/util/plurals.d.ts +0 -2
  147. package/dist/util/property_utils.d.ts +3 -3
  148. package/dist/util/references.d.ts +4 -2
  149. package/dist/util/resolutions.d.ts +31 -17
  150. package/dist/util/storage.d.ts +23 -2
  151. package/dist/util/strings.d.ts +1 -1
  152. package/dist/util/useDebouncedCallback.d.ts +1 -0
  153. package/dist/util/useStorageUploadController.d.ts +3 -3
  154. package/dist/util/useTraceUpdate.d.ts +1 -0
  155. package/package.json +70 -47
  156. package/src/app/AppBar.tsx +18 -0
  157. package/src/app/Drawer.tsx +24 -0
  158. package/src/app/Scaffold.tsx +243 -0
  159. package/src/app/index.ts +4 -0
  160. package/src/app/useApp.tsx +32 -0
  161. package/src/components/ArrayContainer.tsx +122 -90
  162. package/src/components/CircularProgressCenter.tsx +2 -2
  163. package/src/components/ClearFilterSortButton.tsx +41 -0
  164. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  165. package/src/components/DeleteEntityDialog.tsx +13 -22
  166. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +51 -59
  167. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +258 -453
  168. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +13 -14
  169. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +60 -52
  170. package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
  171. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -33
  172. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +22 -20
  173. package/src/components/EntityCollectionTable/index.tsx +1 -9
  174. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
  175. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  176. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  177. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +191 -178
  178. package/src/components/EntityCollectionView/EntityCollectionView.tsx +187 -175
  179. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  180. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  181. package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
  182. package/src/components/EntityCollectionView/utils.ts +19 -0
  183. package/src/components/EntityPreview.tsx +218 -72
  184. package/src/components/EntityView.tsx +84 -0
  185. package/src/components/ErrorView.tsx +4 -4
  186. package/src/components/FieldCaption.tsx +14 -0
  187. package/src/components/HomePage/DefaultHomePage.tsx +39 -28
  188. package/src/components/HomePage/FavouritesView.tsx +6 -11
  189. package/src/components/HomePage/NavigationCard.tsx +69 -0
  190. package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
  191. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  192. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  193. package/src/components/HomePage/index.tsx +3 -1
  194. package/src/components/PropertyConfigBadge.tsx +23 -0
  195. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  196. package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +38 -24
  197. package/src/components/ReferenceWidget.tsx +26 -16
  198. package/src/components/SearchIconsView.tsx +10 -7
  199. package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
  200. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  201. package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
  202. package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +25 -8
  203. package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +40 -24
  204. package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +92 -24
  205. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  206. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  207. package/src/components/VirtualTable/VirtualTableHeader.tsx +19 -13
  208. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  209. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  210. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  211. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  212. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
  213. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
  214. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  215. package/src/components/VirtualTable/types.tsx +2 -3
  216. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
  217. package/src/components/common/index.ts +6 -0
  218. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  219. package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
  220. package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
  221. package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +27 -16
  222. package/src/components/common/useTableSearchHelper.ts +88 -0
  223. package/src/components/index.tsx +15 -8
  224. package/src/contexts/AuthControllerContext.tsx +1 -1
  225. package/src/contexts/DialogsProvider.tsx +2 -2
  226. package/src/contexts/SnackbarProvider.tsx +2 -0
  227. package/src/core/DefaultAppBar.tsx +177 -0
  228. package/src/core/DefaultDrawer.tsx +185 -0
  229. package/src/core/DrawerNavigationItem.tsx +66 -0
  230. package/src/core/EntityEditView.tsx +1125 -0
  231. package/src/core/EntitySidePanel.tsx +9 -8
  232. package/src/core/FireCMS.tsx +71 -63
  233. package/src/core/NavigationRoutes.tsx +25 -17
  234. package/src/core/SideDialogs.tsx +2 -1
  235. package/src/core/field_configs.tsx +22 -23
  236. package/src/core/index.tsx +3 -6
  237. package/src/form/PropertyFieldBinding.tsx +79 -45
  238. package/src/form/components/CustomIdField.tsx +53 -36
  239. package/src/form/components/ErrorFocus.tsx +3 -3
  240. package/src/form/components/FieldHelperText.tsx +4 -4
  241. package/src/form/components/LabelWithIcon.tsx +41 -0
  242. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  243. package/src/form/components/StorageItemPreview.tsx +23 -11
  244. package/src/form/components/StorageUploadProgress.tsx +8 -8
  245. package/src/form/components/index.tsx +2 -2
  246. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -19
  247. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +52 -46
  248. package/src/form/field_bindings/BlockFieldBinding.tsx +67 -47
  249. package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
  250. package/src/form/field_bindings/KeyValueFieldBinding.tsx +76 -67
  251. package/src/form/field_bindings/MapFieldBinding.tsx +81 -60
  252. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  253. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  254. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
  255. package/src/form/field_bindings/ReferenceFieldBinding.tsx +46 -34
  256. package/src/form/field_bindings/RepeatFieldBinding.tsx +55 -35
  257. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -17
  258. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +42 -43
  259. package/src/form/field_bindings/SwitchFieldBinding.tsx +30 -27
  260. package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
  261. package/src/form/index.tsx +5 -9
  262. package/src/form/useClearRestoreValue.tsx +2 -2
  263. package/src/form/validation.ts +4 -21
  264. package/src/hooks/data/delete.ts +7 -6
  265. package/src/hooks/data/save.ts +12 -8
  266. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  267. package/src/hooks/data/useDataSource.tsx +15 -2
  268. package/src/hooks/data/useEntityFetch.tsx +6 -6
  269. package/src/hooks/index.tsx +7 -1
  270. package/src/hooks/useAuthController.tsx +1 -1
  271. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  272. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  273. package/src/{internal → hooks}/useBuildNavigationController.tsx +245 -101
  274. package/src/hooks/useFireCMSContext.tsx +53 -5
  275. package/src/hooks/useLargeLayout.tsx +10 -7
  276. package/src/hooks/useProjectLog.tsx +63 -0
  277. package/src/hooks/useReferenceDialog.tsx +3 -3
  278. package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
  279. package/src/hooks/useSnackbarController.tsx +1 -2
  280. package/src/hooks/useStorageSource.tsx +7 -2
  281. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  282. package/src/index.ts +1 -0
  283. package/src/internal/useBuildDataSource.ts +80 -85
  284. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  285. package/src/internal/useBuildSideEntityController.tsx +103 -23
  286. package/src/internal/useUnsavedChangesDialog.tsx +5 -3
  287. package/src/preview/PropertyPreview.tsx +15 -22
  288. package/src/preview/PropertyPreviewProps.tsx +6 -10
  289. package/src/preview/components/BooleanPreview.tsx +19 -4
  290. package/src/preview/components/EmptyValue.tsx +1 -1
  291. package/src/preview/components/EnumValuesChip.tsx +2 -2
  292. package/src/preview/components/ImagePreview.tsx +25 -36
  293. package/src/preview/components/ReferencePreview.tsx +73 -176
  294. package/src/preview/components/StorageThumbnail.tsx +5 -1
  295. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  296. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  297. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  298. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  299. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  300. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  301. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  302. package/src/preview/property_previews/MapPropertyPreview.tsx +9 -9
  303. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  304. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  305. package/src/preview/util.ts +10 -10
  306. package/src/types/analytics.ts +1 -0
  307. package/src/types/auth.tsx +48 -3
  308. package/src/types/collections.ts +77 -20
  309. package/src/types/customization_controller.tsx +0 -1
  310. package/src/types/datasource.ts +64 -47
  311. package/src/types/entities.ts +15 -1
  312. package/src/types/entity_actions.tsx +21 -4
  313. package/src/types/entity_callbacks.ts +20 -19
  314. package/src/types/entity_overrides.tsx +7 -0
  315. package/src/types/export_import.ts +4 -4
  316. package/src/types/fields.tsx +69 -45
  317. package/src/types/firecms.tsx +11 -28
  318. package/src/types/firecms_context.tsx +1 -1
  319. package/src/types/index.ts +2 -1
  320. package/src/types/navigation.ts +20 -19
  321. package/src/types/permissions.ts +10 -5
  322. package/src/types/plugins.tsx +46 -48
  323. package/src/types/properties.ts +42 -24
  324. package/src/types/property_config.tsx +2 -4
  325. package/src/types/roles.ts +41 -0
  326. package/src/types/side_dialogs_controller.tsx +13 -0
  327. package/src/types/side_entity_controller.tsx +1 -0
  328. package/src/types/storage.ts +94 -3
  329. package/src/types/user.ts +9 -0
  330. package/src/util/builders.ts +6 -6
  331. package/src/util/collections.ts +22 -0
  332. package/src/util/entities.ts +9 -6
  333. package/src/util/enums.ts +1 -1
  334. package/src/util/icon_list.ts +16 -10
  335. package/src/util/icon_synonyms.ts +3 -100
  336. package/src/util/icons.tsx +26 -8
  337. package/src/util/index.ts +3 -1
  338. package/src/util/make_properties_editable.ts +13 -5
  339. package/src/util/navigation_utils.ts +6 -6
  340. package/src/util/objects.ts +45 -28
  341. package/src/util/permissions.ts +20 -16
  342. package/src/util/plurals.ts +0 -2
  343. package/src/util/property_utils.tsx +11 -4
  344. package/src/util/references.ts +45 -5
  345. package/src/util/resolutions.ts +80 -47
  346. package/src/util/storage.ts +79 -21
  347. package/src/util/strings.ts +4 -3
  348. package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
  349. package/src/util/useStorageUploadController.tsx +34 -8
  350. package/src/util/useTraceUpdate.tsx +2 -1
  351. package/dist/components/VirtualTable/common.d.ts +0 -2
  352. package/dist/core/Drawer.d.ts +0 -23
  353. package/dist/core/Scaffold.d.ts +0 -52
  354. package/dist/form/EntityForm.d.ts +0 -75
  355. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  356. package/dist/form/components/SubmitListener.d.ts +0 -1
  357. package/dist/form/components/SwitchControl.d.ts +0 -8
  358. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  359. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  360. package/dist/internal/EntityView.d.ts +0 -22
  361. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  362. package/dist/internal/useBuildNavigationController.d.ts +0 -14
  363. package/dist/internal/useLocaleConfig.d.ts +0 -1
  364. package/dist/types/appcheck.d.ts +0 -26
  365. package/dist/util/useDebounce.d.ts +0 -1
  366. package/src/components/FieldConfigBadge.tsx +0 -17
  367. package/src/components/FireCMSAppBar.tsx +0 -157
  368. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  369. package/src/components/LabelWithIcon.tsx +0 -33
  370. package/src/core/Drawer.tsx +0 -162
  371. package/src/core/Scaffold.tsx +0 -278
  372. package/src/form/EntityForm.tsx +0 -657
  373. package/src/form/components/FormikArrayContainer.tsx +0 -44
  374. package/src/form/components/SubmitListener.tsx +0 -32
  375. package/src/form/components/SwitchControl.tsx +0 -39
  376. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  377. package/src/hooks/useVerifyLicense.tsx +0 -1
  378. package/src/internal/EntityView.tsx +0 -578
  379. package/src/internal/useBuildCustomizationController.tsx +0 -5
  380. package/src/internal/useLocaleConfig.tsx +0 -18
  381. package/src/types/appcheck.ts +0 -29
  382. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
  383. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
  384. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
  385. /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
  386. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  387. /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
@@ -1,11 +1,10 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "../../types";
3
- import { FieldHelperText } from "../components";
3
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
4
4
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
5
- import { useClearRestoreValue } from "../../hooks";
6
- import { ExpandablePanel } from "@firecms/ui";
7
- import { getIconForProperty } from "../../util";
8
- import { LabelWithIcon } from "../../components";
5
+ import { ExpandablePanel, Typography } from "@firecms/ui";
6
+ import { getArrayResolvedProperties, getIconForProperty, isReadOnly } from "../../util";
7
+ import { useClearRestoreValue } from "../useClearRestoreValue";
9
8
 
10
9
  /**
11
10
  * Array field used for custom
@@ -21,7 +20,7 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
21
20
  showError,
22
21
  isSubmitting,
23
22
  setValue,
24
- tableMode,
23
+ minimalistView,
25
24
  property,
26
25
  includeDescription,
27
26
  underlyingValueHasChanged,
@@ -29,8 +28,15 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
29
28
  disabled
30
29
  }: FieldProps<T, any, any>) {
31
30
 
32
- if (!Array.isArray(property.resolvedProperties))
33
- throw Error("ArrayCustomShapedFieldBinding misconfiguration. Property `of` not set");
31
+ let resolvedProperties = "resolvedProperties" in property ? property.resolvedProperties : undefined;
32
+ if (!resolvedProperties) {
33
+ resolvedProperties = getArrayResolvedProperties({
34
+ propertyValue: value,
35
+ propertyKey,
36
+ property,
37
+ ignoreMissingFields: false
38
+ })
39
+ }
34
40
 
35
41
  const expanded = property.expanded === undefined ? true : property.expanded;
36
42
 
@@ -40,22 +46,27 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
40
46
  setValue
41
47
  });
42
48
 
43
- const title = <LabelWithIcon icon={getIconForProperty(property, "small")}
44
- required={property.validation?.required}
45
- className={"text-text-secondary dark:text-text-secondary-dark"}
46
- title={property.name}/>;
49
+ const title = (<>
50
+ <LabelWithIconAndTooltip
51
+ propertyKey={propertyKey}
52
+ icon={getIconForProperty(property, "small")}
53
+ required={property.validation?.required}
54
+ title={property.name}
55
+ className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
56
+ {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
57
+ </>);
47
58
 
48
- const body = property.resolvedProperties.map((childProperty, index) => {
59
+ const body = resolvedProperties.map((childProperty, index) => {
60
+ const thisDisabled = isReadOnly(childProperty) || Boolean(childProperty.disabled);
49
61
  const fieldProps = {
50
62
  propertyKey: `${propertyKey}[${index}]`,
51
- disabled,
63
+ disabled: disabled || thisDisabled,
52
64
  property: childProperty,
53
65
  includeDescription,
54
66
  underlyingValueHasChanged,
55
67
  context,
56
- tableMode: false,
57
68
  partOfArray: true,
58
- partOfBlock: false,
69
+ minimalistView: false,
59
70
  autoFocus: false
60
71
  };
61
72
  return <div key={`custom_shaped_array_${index}`} className="pb-4">
@@ -67,14 +78,14 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
67
78
 
68
79
  <>
69
80
 
70
- {!tableMode &&
81
+ {!minimalistView &&
71
82
  <ExpandablePanel initiallyExpanded={expanded}
72
83
  title={title}
73
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
84
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
74
85
  {body}
75
86
  </ExpandablePanel>}
76
87
 
77
- {tableMode && body}
88
+ {minimalistView && body}
78
89
 
79
90
  <FieldHelperText includeDescription={includeDescription}
80
91
  showError={showError}
@@ -1,13 +1,13 @@
1
1
  import React, { useCallback, useMemo } from "react";
2
2
  import { Entity, EntityCollection, EntityReference, FieldProps, ResolvedProperty } from "../../types";
3
3
  import { ReferencePreview } from "../../preview";
4
- import { FieldHelperText, FormikArrayContainer } from "../components";
5
- import { LabelWithIcon } from "../../components";
4
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
5
+ import { ArrayContainer, ArrayEntryParams, ErrorView } from "../../components";
6
6
  import { getIconForProperty, getReferenceFrom } from "../../util";
7
7
 
8
- import { useClearRestoreValue, useNavigationController, useReferenceDialog } from "../../hooks";
9
- import { Button, ExpandablePanel } from "@firecms/ui";
10
- import { ErrorView } from "../../components";
8
+ import { useNavigationController, useReferenceDialog } from "../../hooks";
9
+ import { Button, cls, ExpandablePanel, fieldBackgroundMixin, Typography } from "@firecms/ui";
10
+ import { useClearRestoreValue } from "../useClearRestoreValue";
11
11
 
12
12
  type ArrayOfReferencesFieldProps = FieldProps<EntityReference[]>;
13
13
 
@@ -25,7 +25,7 @@ export function ArrayOfReferencesFieldBinding({
25
25
  showError,
26
26
  disabled,
27
27
  isSubmitting,
28
- tableMode,
28
+ minimalistView,
29
29
  property,
30
30
  includeDescription,
31
31
  setValue,
@@ -38,7 +38,6 @@ export function ArrayOfReferencesFieldBinding({
38
38
  }
39
39
 
40
40
  const expanded = property.expanded === undefined ? true : property.expanded;
41
- const [onHover, setOnHover] = React.useState(false);
42
41
  const selectedEntityIds = value && Array.isArray(value) ? value.map((ref) => ref.id) : [];
43
42
 
44
43
  useClearRestoreValue({
@@ -57,7 +56,6 @@ export function ArrayOfReferencesFieldBinding({
57
56
  }
58
57
 
59
58
  const onMultipleEntitiesSelected = useCallback((entities: Entity<any>[]) => {
60
- console.debug("onMultipleEntitiesSelected", entities);
61
59
  setValue(entities.map(e => getReferenceFrom(e)));
62
60
  }, [setValue]);
63
61
 
@@ -71,76 +69,84 @@ export function ArrayOfReferencesFieldBinding({
71
69
  }
72
70
  );
73
71
 
74
- const onEntryClick = useCallback((e: React.SyntheticEvent) => {
72
+ const onEntryClick = (e: React.SyntheticEvent) => {
75
73
  e.preventDefault();
76
74
  referenceDialogController.open();
77
- }, [referenceDialogController]);
78
-
79
- const buildEntry = useCallback((index: number, internalId: number) => {
75
+ };
76
+
77
+ const buildEntry = useCallback(({
78
+ index,
79
+ internalId,
80
+ storedProps,
81
+ storeProps
82
+ }: ArrayEntryParams) => {
80
83
  const entryValue = value && value.length > index ? value[index] : undefined;
81
84
  if (!entryValue)
82
85
  return <div>Internal ERROR</div>;
83
86
  return (
84
- <div
85
- onMouseEnter={() => setOnHover(true)}
86
- onMouseMove={() => setOnHover(true)}
87
- onMouseLeave={() => setOnHover(false)}>
88
- <ReferencePreview
89
- disabled={!ofProperty.path}
90
- previewProperties={ofProperty.previewProperties}
91
- size={"medium"}
92
- onClick={onEntryClick}
93
- reference={entryValue}
94
- onHover={onHover}
95
- />
96
- </div>
87
+ <ReferencePreview
88
+ key={internalId}
89
+ disabled={!ofProperty.path}
90
+ previewProperties={ofProperty.previewProperties}
91
+ size={"medium"}
92
+ onClick={onEntryClick}
93
+ hover={!disabled}
94
+ reference={entryValue}
95
+ includeId={ofProperty.includeId}
96
+ includeEntityLink={ofProperty.includeEntityLink}
97
+ />
97
98
  );
98
- }, [ofProperty.path, ofProperty.previewProperties, onHover, value]);
99
-
100
- const title = (
101
- <LabelWithIcon icon={getIconForProperty(property, "small")}
102
- required={property.validation?.required}
103
- title={property.name}
104
- className={"text-text-secondary dark:text-text-secondary-dark"}/>
105
- );
99
+ }, [ofProperty.path, ofProperty.previewProperties, value]);
100
+
101
+ const title = (<>
102
+ <LabelWithIconAndTooltip
103
+ propertyKey={propertyKey}
104
+ icon={getIconForProperty(property, "small")}
105
+ required={property.validation?.required}
106
+ title={property.name}
107
+ className={"flex flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
108
+ {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
109
+ </>);
106
110
 
107
111
  const body = <>
108
112
  {!collection && <ErrorView
109
113
  error={"The specified collection does not exist. Check console"}/>}
110
114
 
111
- {collection && <>
115
+ {collection && <div className={"group"}>
112
116
 
113
- <FormikArrayContainer value={value}
114
- addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
115
- name={propertyKey}
116
- buildEntry={buildEntry}
117
- disabled={isSubmitting}
118
- setFieldValue={setFieldValue}
119
- newDefaultEntry={property.of.defaultValue}/>
117
+ <ArrayContainer droppableId={propertyKey}
118
+ value={value}
119
+ disabled={isSubmitting}
120
+ buildEntry={buildEntry}
121
+ addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
122
+ newDefaultEntry={property.of.defaultValue}
123
+ onValueChange={(value) => setFieldValue(propertyKey, value)}
124
+ />
120
125
 
121
126
  <Button
122
127
  className="my-4 justify-center text-left"
123
- variant="outlined"
128
+ variant="text"
124
129
  color="primary"
125
130
  disabled={isSubmitting}
126
131
  onClick={onEntryClick}>
127
132
  Edit {property.name}
128
133
  </Button>
129
- </>}
134
+ </div>}
130
135
  </>;
131
136
 
132
137
  return (
133
138
  <>
134
139
 
135
- {!tableMode &&
140
+ {!minimalistView &&
136
141
  <ExpandablePanel
137
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
142
+ titleClassName={fieldBackgroundMixin}
143
+ innerClassName={cls("px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2", fieldBackgroundMixin)}
138
144
  initiallyExpanded={expanded}
139
145
  title={title}>
140
146
  {body}
141
147
  </ExpandablePanel>}
142
148
 
143
- {tableMode && body}
149
+ {minimalistView && body}
144
150
 
145
151
  <FieldHelperText includeDescription={includeDescription}
146
152
  showError={showError}
@@ -1,16 +1,16 @@
1
1
  import React, { useCallback, useEffect, useState } from "react";
2
2
 
3
- import { FastField, FieldProps as FormikFieldProps, useFormikContext } from "formik";
3
+ import { Field, useFormex } from "@firecms/formex";
4
4
 
5
- import { FieldHelperText, FormikArrayContainer } from "../components";
6
- import { LabelWithIcon } from "../../components";
7
- import { useClearRestoreValue } from "../../hooks";
5
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
8
6
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
9
7
  import { EnumValuesChip } from "../../preview";
10
8
  import { FieldProps, FormContext, PropertyFieldBindingProps, PropertyOrBuilder } from "../../types";
11
- import { getDefaultValueFor, getIconForProperty, } from "../../util";
9
+ import { getDefaultValueFor, getIconForProperty, mergeDeep, } from "../../util";
12
10
  import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "../../util/common";
13
- import { cn, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
11
+ import { cls, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
12
+ import { useClearRestoreValue } from "../useClearRestoreValue";
13
+ import { ArrayContainer, ArrayEntryParams } from "../../components";
14
14
 
15
15
  /**
16
16
  * If the `oneOf` property is specified, this fields render each array entry as
@@ -28,7 +28,7 @@ export function BlockFieldBinding<T extends Array<any>>({
28
28
  isSubmitting,
29
29
  setValue,
30
30
  setFieldValue,
31
- tableMode,
31
+ minimalistView,
32
32
  property,
33
33
  includeDescription,
34
34
  underlyingValueHasChanged,
@@ -48,9 +48,15 @@ export function BlockFieldBinding<T extends Array<any>>({
48
48
 
49
49
  const [lastAddedId, setLastAddedId] = useState<number | undefined>();
50
50
 
51
- const buildEntry = useCallback((index: number, internalId: number) => {
51
+ const buildEntry = ({
52
+ index,
53
+ internalId,
54
+ storedProps,
55
+ storeProps
56
+ }: ArrayEntryParams) => {
57
+
52
58
  return <BlockEntry
53
- key={`array_one_of_${index}`}
59
+ key={`array_one_of_${internalId}`}
54
60
  name={`${propertyKey}.${index}`}
55
61
  index={index}
56
62
  value={value[index]}
@@ -58,42 +64,47 @@ export function BlockFieldBinding<T extends Array<any>>({
58
64
  valueField={property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE}
59
65
  properties={property.oneOf!.properties}
60
66
  autoFocus={internalId === lastAddedId}
61
- context={context}/>;
62
- }, [context, lastAddedId, property.oneOf, propertyKey, value]);
67
+ context={context}
68
+ storeProps={storeProps}
69
+ storedProps={storedProps}/>;
70
+ };
63
71
 
64
72
  const title = (
65
- <LabelWithIcon icon={getIconForProperty(property, "small")}
66
- required={property.validation?.required}
67
- title={property.name}
68
- className={"text-text-secondary dark:text-text-secondary-dark"}/>
73
+ <LabelWithIconAndTooltip
74
+ propertyKey={propertyKey}
75
+ icon={getIconForProperty(property, "small")}
76
+ required={property.validation?.required}
77
+ title={property.name}
78
+ className={"text-text-secondary dark:text-text-secondary-dark"}/>
69
79
  );
70
80
 
71
81
  const firstOneOfKey = Object.keys(property.oneOf.properties)[0];
72
- const body = <FormikArrayContainer value={value}
73
- name={propertyKey}
74
- addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
75
- buildEntry={buildEntry}
76
- onInternalIdAdded={setLastAddedId}
77
- disabled={isSubmitting || Boolean(property.disabled)}
78
- includeAddButton={!property.disabled}
79
- setFieldValue={setFieldValue}
80
- newDefaultEntry={{
81
- [property.oneOf!.typeField ?? DEFAULT_ONE_OF_TYPE]: firstOneOfKey,
82
- [property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE]: getDefaultValueFor(property.oneOf.properties[firstOneOfKey])
83
- }}/>;
82
+ const body = <ArrayContainer value={value}
83
+ className={"flex flex-col gap-3"}
84
+ droppableId={propertyKey}
85
+ addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
86
+ buildEntry={buildEntry}
87
+ onInternalIdAdded={setLastAddedId}
88
+ disabled={isSubmitting || Boolean(property.disabled)}
89
+ includeAddButton={!property.disabled}
90
+ onValueChange={(value) => setFieldValue(propertyKey, value)}
91
+ newDefaultEntry={{
92
+ [property.oneOf!.typeField ?? DEFAULT_ONE_OF_TYPE]: firstOneOfKey,
93
+ [property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE]: getDefaultValueFor(property.oneOf.properties[firstOneOfKey])
94
+ }}/>;
84
95
  return (
85
96
 
86
97
  <>
87
98
 
88
- {!tableMode &&
99
+ {!minimalistView &&
89
100
  <ExpandablePanel
90
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
101
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
91
102
  initiallyExpanded={expanded}
92
103
  title={title}>
93
104
  {body}
94
105
  </ExpandablePanel>}
95
106
 
96
- {tableMode && body}
107
+ {minimalistView && body}
97
108
 
98
109
  <FieldHelperText includeDescription={includeDescription}
99
110
  showError={showError}
@@ -132,6 +143,9 @@ interface BlockEntryProps {
132
143
  */
133
144
  context: FormContext<any>;
134
145
 
146
+ storedProps?: object,
147
+ storeProps: (props: object) => void
148
+
135
149
  }
136
150
 
137
151
  function BlockEntry({
@@ -142,13 +156,15 @@ function BlockEntry({
142
156
  valueField,
143
157
  properties,
144
158
  autoFocus,
145
- context
159
+ context,
160
+ storedProps,
161
+ storeProps
146
162
  }: BlockEntryProps) {
147
163
 
148
164
  const type = value && value[typeField];
149
165
  const [typeInternal, setTypeInternal] = useState<string | undefined>(type ?? undefined);
150
166
 
151
- const formikContext = useFormikContext();
167
+ const formex = useFormex();
152
168
 
153
169
  useEffect(() => {
154
170
  if (!type) {
@@ -162,7 +178,9 @@ function BlockEntry({
162
178
  }
163
179
  }, [type]);
164
180
 
165
- const property = typeInternal ? properties[typeInternal] : undefined;
181
+ const propertyInternal = typeInternal ? properties[typeInternal] : undefined;
182
+
183
+ const property = storedProps && typeof propertyInternal === "object" ? mergeDeep(propertyInternal, storedProps) : propertyInternal;
166
184
 
167
185
  const enumValuesConfigs = Object.entries(properties)
168
186
  .map(([key, property]) => ({
@@ -180,36 +198,37 @@ function BlockEntry({
180
198
  context,
181
199
  autoFocus,
182
200
  partOfArray: false,
183
- partOfBlock: true,
184
- tableMode: false
201
+ minimalistView: true,
202
+ onPropertyChange: storeProps,
185
203
  }
186
204
  : undefined;
187
205
 
188
206
  const updateType = (newType: any) => {
189
207
  const newSelectedProperty = newType ? properties[newType] : undefined;
190
208
  setTypeInternal(newType);
191
- formikContext.setFieldTouched(typeFieldName);
192
- formikContext.setFieldValue(typeFieldName, newType);
193
- formikContext.setFieldValue(valueFieldName, newSelectedProperty ? getDefaultValueFor(newSelectedProperty) : null);
209
+ formex.setFieldTouched(typeFieldName, true);
210
+ formex.setFieldValue(typeFieldName, newType);
211
+ formex.setFieldValue(valueFieldName, newSelectedProperty ? getDefaultValueFor(newSelectedProperty) : null);
194
212
  };
195
213
 
196
214
  return (
197
- <div className={cn(paperMixin, "bg-transparent p-4 my-4 py-8")}>
215
+ <div className={cls(paperMixin, "bg-transparent p-2")}>
198
216
 
199
- <FastField
200
- required={true}
217
+ <Field
201
218
  name={typeFieldName}
202
219
  >
203
- {(fieldProps: FormikFieldProps) =>
204
- (
220
+ {(fieldProps) => {
221
+ const value1 = fieldProps.field.value !== undefined && fieldProps.field.value !== null ? fieldProps.field.value as string : "";
222
+ return (
205
223
  <>
206
224
  <Select
207
225
  className="mb-2"
208
226
  placeholder={<Typography variant={"caption"}
209
227
  className={"px-4 py-2 font-medium"}>Type</Typography>}
210
- size={"small"}
228
+ size={"medium"}
229
+ fullWidth={true}
211
230
  position={"item-aligned"}
212
- value={fieldProps.field.value !== undefined && fieldProps.field.value !== null ? fieldProps.field.value : ""}
231
+ value={value1}
213
232
  renderValue={(enumKey: any) =>
214
233
  <EnumValuesChip
215
234
  enumKey={enumKey}
@@ -231,9 +250,10 @@ function BlockEntry({
231
250
  )}
232
251
  </Select>
233
252
  </>
234
- )
253
+ );
254
+ }
235
255
  }
236
- </FastField>
256
+ </Field>
237
257
 
238
258
  {fieldProps && (
239
259
  // It is important to use this key to force a re-render of the field on type change
@@ -2,11 +2,12 @@ import React from "react";
2
2
 
3
3
  import { FieldProps } from "../../types";
4
4
 
5
- import { FieldHelperText } from "../components";
6
- import { LabelWithIcon } from "../../components";
7
- import { useClearRestoreValue, useCustomizationController } from "../../hooks";
5
+ import { FieldHelperText, LabelWithIcon } from "../components";
6
+ import { useCustomizationController } from "../../hooks";
8
7
  import { getIconForProperty } from "../../util";
9
8
  import { DateTimeField } from "@firecms/ui";
9
+ import { useClearRestoreValue } from "../useClearRestoreValue";
10
+ import { PropertyIdCopyTooltip } from "../../components";
10
11
 
11
12
  type DateTimeFieldProps = FieldProps<Date>;
12
13
 
@@ -41,20 +42,22 @@ export function DateTimeFieldBinding({
41
42
 
42
43
  return (
43
44
  <>
44
- <DateTimeField
45
- value={internalValue}
46
- onChange={(dateValue) => setValue(dateValue)}
47
- size={"medium"}
48
- mode={property.mode}
49
- clearable={property.clearable}
50
- locale={locale}
51
- error={showError}
52
- label={<LabelWithIcon
53
- icon={getIconForProperty(property, "small")}
54
- required={property.validation?.required}
55
- className={showError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark"}
56
- title={property.name}/>}
57
- />
45
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
46
+ <DateTimeField
47
+ value={internalValue}
48
+ onChange={(dateValue) => setValue(dateValue)}
49
+ size={"large"}
50
+ mode={property.mode}
51
+ clearable={property.clearable}
52
+ locale={locale}
53
+ error={showError}
54
+ label={<LabelWithIcon
55
+ icon={getIconForProperty(property, "small")}
56
+ required={property.validation?.required}
57
+ className={showError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark"}
58
+ title={property.name}/>}
59
+ />
60
+ </PropertyIdCopyTooltip>
58
61
 
59
62
  <FieldHelperText includeDescription={includeDescription}
60
63
  showError={showError}