@firecms/core 3.0.0-canary.99 → 3.0.0-rc.1

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 (349) hide show
  1. package/README.md +2 -2
  2. package/dist/app/Drawer.d.ts +0 -1
  3. package/dist/app/Scaffold.d.ts +4 -0
  4. package/dist/components/ArrayContainer.d.ts +31 -12
  5. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  6. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +3 -1
  7. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  8. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +17 -3
  9. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +1 -1
  10. package/dist/components/EntityCollectionTable/index.d.ts +1 -1
  11. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +6 -3
  12. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +8 -0
  13. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  14. package/dist/components/EntityJsonPreview.d.ts +3 -0
  15. package/dist/components/EntityPreview.d.ts +8 -6
  16. package/dist/components/HomePage/DefaultHomePage.d.ts +2 -15
  17. package/dist/components/HomePage/HomePageDnD.d.ts +76 -0
  18. package/dist/components/HomePage/NavigationCard.d.ts +3 -1
  19. package/dist/components/HomePage/NavigationCardBinding.d.ts +3 -2
  20. package/dist/components/HomePage/NavigationGroup.d.ts +8 -1
  21. package/dist/components/HomePage/RenameGroupDialog.d.ts +9 -0
  22. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  23. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  24. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  25. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +1 -1
  26. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  27. package/dist/components/VirtualTable/VirtualTableProps.d.ts +11 -2
  28. package/dist/components/common/default_entity_actions.d.ts +0 -2
  29. package/dist/components/common/index.d.ts +1 -1
  30. package/dist/components/common/useColumnsIds.d.ts +1 -0
  31. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +10 -2
  32. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  33. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  34. package/dist/components/index.d.ts +3 -1
  35. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  36. package/dist/core/DefaultAppBar.d.ts +8 -2
  37. package/dist/core/DrawerNavigationItem.d.ts +2 -1
  38. package/dist/core/EntityEditView.d.ts +40 -22
  39. package/dist/core/EntityEditViewFormActions.d.ts +2 -0
  40. package/dist/core/FireCMS.d.ts +2 -2
  41. package/dist/core/FireCMSRouter.d.ts +4 -0
  42. package/dist/core/NavigationRoutes.d.ts +0 -1
  43. package/dist/core/SideDialogs.d.ts +4 -2
  44. package/dist/core/field_configs.d.ts +1 -1
  45. package/dist/core/index.d.ts +2 -1
  46. package/dist/form/EntityForm.d.ts +50 -0
  47. package/dist/form/EntityFormActions.d.ts +21 -0
  48. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  49. package/dist/form/components/FormEntry.d.ts +6 -0
  50. package/dist/form/components/FormLayout.d.ts +5 -0
  51. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  52. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  53. package/dist/form/components/index.d.ts +3 -1
  54. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  55. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  56. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  57. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  60. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  61. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  62. package/dist/form/field_bindings/ReferenceAsStringFieldBinding.d.ts +9 -0
  63. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  64. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +4 -10
  67. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  68. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  69. package/dist/form/index.d.ts +17 -16
  70. package/dist/form/useClearRestoreValue.d.ts +2 -2
  71. package/dist/hooks/data/delete.d.ts +4 -4
  72. package/dist/hooks/data/save.d.ts +3 -3
  73. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  74. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  75. package/dist/hooks/useAuthController.d.ts +1 -1
  76. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  77. package/dist/hooks/useBuildNavigationController.d.ts +57 -12
  78. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  79. package/dist/hooks/useModeController.d.ts +1 -2
  80. package/dist/hooks/useProjectLog.d.ts +7 -1
  81. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  82. package/dist/hooks/useValidateAuthenticator.d.ts +3 -3
  83. package/dist/index.es.js +20108 -14471
  84. package/dist/index.es.js.map +1 -1
  85. package/dist/index.umd.js +20039 -14407
  86. package/dist/index.umd.js.map +1 -1
  87. package/dist/internal/useBuildDataSource.d.ts +3 -2
  88. package/dist/internal/useBuildSideEntityController.d.ts +3 -3
  89. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  90. package/dist/preview/PropertyPreviewProps.d.ts +1 -1
  91. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  92. package/dist/preview/components/ReferencePreview.d.ts +2 -2
  93. package/dist/preview/util.d.ts +3 -3
  94. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  95. package/dist/routes/FireCMSRoute.d.ts +1 -0
  96. package/dist/routes/HomePageRoute.d.ts +3 -0
  97. package/dist/types/analytics.d.ts +1 -1
  98. package/dist/types/auth.d.ts +7 -9
  99. package/dist/types/collections.d.ts +86 -25
  100. package/dist/types/customization_controller.d.ts +8 -0
  101. package/dist/types/datasource.d.ts +19 -17
  102. package/dist/types/dialogs_controller.d.ts +7 -3
  103. package/dist/types/entities.d.ts +2 -1
  104. package/dist/types/entity_actions.d.ts +58 -8
  105. package/dist/types/entity_callbacks.d.ts +16 -16
  106. package/dist/types/entity_overrides.d.ts +2 -2
  107. package/dist/types/export_import.d.ts +4 -4
  108. package/dist/types/fields.d.ts +43 -17
  109. package/dist/types/firecms.d.ts +16 -3
  110. package/dist/types/firecms_context.d.ts +1 -1
  111. package/dist/types/navigation.d.ts +60 -17
  112. package/dist/types/permissions.d.ts +4 -4
  113. package/dist/types/plugins.d.ts +42 -9
  114. package/dist/types/properties.d.ts +65 -22
  115. package/dist/types/property_config.d.ts +1 -3
  116. package/dist/types/roles.d.ts +3 -0
  117. package/dist/types/side_dialogs_controller.d.ts +10 -0
  118. package/dist/types/side_entity_controller.d.ts +14 -1
  119. package/dist/types/storage.d.ts +75 -0
  120. package/dist/types/user.d.ts +1 -0
  121. package/dist/util/builders.d.ts +3 -3
  122. package/dist/util/callbacks.d.ts +2 -0
  123. package/dist/util/createFormexStub.d.ts +2 -0
  124. package/dist/util/entities.d.ts +2 -2
  125. package/dist/util/entity_actions.d.ts +2 -0
  126. package/dist/util/entity_cache.d.ts +23 -0
  127. package/dist/util/icon_synonyms.d.ts +0 -1
  128. package/dist/util/icons.d.ts +5 -2
  129. package/dist/util/index.d.ts +3 -0
  130. package/dist/util/navigation_from_path.d.ts +10 -1
  131. package/dist/util/navigation_utils.d.ts +13 -1
  132. package/dist/util/objects.d.ts +2 -1
  133. package/dist/util/permissions.d.ts +4 -4
  134. package/dist/util/property_utils.d.ts +4 -4
  135. package/dist/util/references.d.ts +2 -2
  136. package/dist/util/resolutions.d.ts +30 -6
  137. package/dist/util/storage.d.ts +1 -1
  138. package/dist/util/useStorageUploadController.d.ts +2 -2
  139. package/package.json +133 -125
  140. package/src/app/Drawer.tsx +0 -1
  141. package/src/app/Scaffold.tsx +33 -29
  142. package/src/components/ArrayContainer.tsx +447 -229
  143. package/src/components/CircularProgressCenter.tsx +1 -1
  144. package/src/components/ClearFilterSortButton.tsx +1 -1
  145. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +12 -11
  146. package/src/components/DeleteEntityDialog.tsx +13 -20
  147. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +59 -25
  148. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +23 -17
  149. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +20 -3
  150. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +35 -9
  151. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +21 -16
  152. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +6 -12
  153. package/src/components/EntityCollectionTable/index.tsx +1 -1
  154. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +6 -6
  155. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +35 -26
  156. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  157. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +132 -101
  158. package/src/components/EntityCollectionTable/internal/popup_field/useDraggable.tsx +9 -9
  159. package/src/components/EntityCollectionView/EntityCollectionView.tsx +178 -85
  160. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +7 -4
  161. package/src/components/EntityCollectionView/useSelectionController.tsx +5 -4
  162. package/src/components/EntityCollectionView/utils.ts +19 -0
  163. package/src/components/EntityJsonPreview.tsx +66 -0
  164. package/src/components/EntityPreview.tsx +75 -57
  165. package/src/components/EntityView.tsx +8 -5
  166. package/src/components/ErrorView.tsx +3 -3
  167. package/src/components/FireCMSLogo.tsx +7 -51
  168. package/src/components/HomePage/DefaultHomePage.tsx +522 -160
  169. package/src/components/HomePage/FavouritesView.tsx +9 -14
  170. package/src/components/HomePage/HomePageDnD.tsx +642 -0
  171. package/src/components/HomePage/NavigationCard.tsx +47 -38
  172. package/src/components/HomePage/NavigationCardBinding.tsx +16 -15
  173. package/src/components/HomePage/NavigationGroup.tsx +144 -30
  174. package/src/components/HomePage/RenameGroupDialog.tsx +117 -0
  175. package/src/components/HomePage/SmallNavigationCard.tsx +1 -2
  176. package/src/components/NotFoundPage.tsx +2 -2
  177. package/src/components/PropertyConfigBadge.tsx +9 -3
  178. package/src/components/PropertyIdCopyTooltip.tsx +47 -0
  179. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +22 -13
  180. package/src/components/SearchIconsView.tsx +2 -2
  181. package/src/components/SelectableTable/SelectableTable.tsx +154 -142
  182. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +4 -2
  183. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +10 -8
  184. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +59 -10
  185. package/src/components/UnsavedChangesDialog.tsx +46 -0
  186. package/src/components/VirtualTable/VirtualTable.tsx +65 -44
  187. package/src/components/VirtualTable/VirtualTableCell.tsx +0 -8
  188. package/src/components/VirtualTable/VirtualTableHeader.tsx +8 -8
  189. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +1 -1
  190. package/src/components/VirtualTable/VirtualTableProps.tsx +12 -2
  191. package/src/components/VirtualTable/VirtualTableRow.tsx +1 -1
  192. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  193. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +2 -2
  194. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  195. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  196. package/src/components/common/default_entity_actions.tsx +62 -42
  197. package/src/components/common/index.ts +1 -1
  198. package/src/components/common/useColumnsIds.tsx +1 -1
  199. package/src/components/common/useDataSourceTableController.tsx +420 -0
  200. package/src/components/common/useDebouncedCallback.tsx +20 -0
  201. package/src/components/common/useScrollRestoration.tsx +68 -0
  202. package/src/components/common/useTableSearchHelper.ts +1 -0
  203. package/src/components/index.tsx +4 -1
  204. package/src/contexts/BreacrumbsContext.tsx +38 -0
  205. package/src/contexts/DialogsProvider.tsx +3 -2
  206. package/src/contexts/ModeController.tsx +1 -3
  207. package/src/contexts/SnackbarProvider.tsx +2 -0
  208. package/src/core/DefaultAppBar.tsx +124 -85
  209. package/src/core/DefaultDrawer.tsx +30 -22
  210. package/src/core/DrawerNavigationItem.tsx +32 -28
  211. package/src/core/EntityEditView.tsx +388 -995
  212. package/src/core/EntityEditViewFormActions.tsx +329 -0
  213. package/src/core/EntitySidePanel.tsx +88 -20
  214. package/src/core/FireCMS.tsx +46 -25
  215. package/src/core/FireCMSRouter.tsx +17 -0
  216. package/src/core/NavigationRoutes.tsx +23 -32
  217. package/src/core/SideDialogs.tsx +22 -12
  218. package/src/core/field_configs.tsx +24 -10
  219. package/src/core/index.tsx +4 -2
  220. package/src/form/EntityForm.tsx +814 -0
  221. package/src/form/EntityFormActions.tsx +211 -0
  222. package/src/form/PropertyFieldBinding.tsx +55 -41
  223. package/src/form/components/CustomIdField.tsx +9 -3
  224. package/src/form/components/FieldHelperText.tsx +1 -1
  225. package/src/form/components/FormEntry.tsx +22 -0
  226. package/src/form/components/FormLayout.tsx +16 -0
  227. package/src/form/components/LabelWithIcon.tsx +30 -19
  228. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  229. package/src/form/components/StorageItemPreview.tsx +5 -4
  230. package/src/form/components/StorageUploadProgress.tsx +2 -3
  231. package/src/form/components/index.tsx +3 -1
  232. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -18
  233. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +47 -36
  234. package/src/form/field_bindings/BlockFieldBinding.tsx +55 -33
  235. package/src/form/field_bindings/DateTimeFieldBinding.tsx +18 -14
  236. package/src/form/field_bindings/KeyValueFieldBinding.tsx +19 -15
  237. package/src/form/field_bindings/MapFieldBinding.tsx +72 -62
  238. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +159 -0
  239. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -21
  240. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +10 -8
  241. package/src/form/field_bindings/ReferenceAsStringFieldBinding.tsx +135 -0
  242. package/src/form/field_bindings/ReferenceFieldBinding.tsx +28 -19
  243. package/src/form/field_bindings/RepeatFieldBinding.tsx +56 -32
  244. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -13
  245. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +247 -168
  246. package/src/form/field_bindings/SwitchFieldBinding.tsx +29 -24
  247. package/src/form/field_bindings/TextFieldBinding.tsx +28 -24
  248. package/src/form/index.tsx +17 -37
  249. package/src/form/useClearRestoreValue.tsx +2 -2
  250. package/src/form/validation.ts +12 -6
  251. package/src/hooks/data/delete.ts +6 -5
  252. package/src/hooks/data/save.ts +26 -35
  253. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  254. package/src/hooks/data/useDataSource.tsx +10 -2
  255. package/src/hooks/data/useEntityFetch.tsx +10 -6
  256. package/src/hooks/useAuthController.tsx +1 -1
  257. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  258. package/src/hooks/useBrowserTitleAndIcon.tsx +1 -1
  259. package/src/hooks/useBuildModeController.tsx +15 -28
  260. package/src/hooks/useBuildNavigationController.tsx +386 -124
  261. package/src/hooks/useFireCMSContext.tsx +3 -33
  262. package/src/hooks/useLargeLayout.tsx +0 -35
  263. package/src/hooks/useModeController.tsx +1 -2
  264. package/src/hooks/useProjectLog.tsx +16 -5
  265. package/src/hooks/useResolvedNavigationFrom.tsx +9 -11
  266. package/src/hooks/useValidateAuthenticator.tsx +3 -3
  267. package/src/internal/useBuildDataSource.ts +67 -80
  268. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  269. package/src/internal/useBuildSideEntityController.tsx +149 -86
  270. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  271. package/src/preview/PropertyPreview.tsx +28 -12
  272. package/src/preview/PropertyPreviewProps.tsx +1 -1
  273. package/src/preview/components/BooleanPreview.tsx +1 -1
  274. package/src/preview/components/EmptyValue.tsx +1 -1
  275. package/src/preview/components/EnumValuesChip.tsx +1 -1
  276. package/src/preview/components/ImagePreview.tsx +10 -9
  277. package/src/preview/components/ReferencePreview.tsx +6 -16
  278. package/src/preview/components/UrlComponentPreview.tsx +20 -21
  279. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +6 -5
  280. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +5 -4
  281. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +5 -3
  282. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +4 -3
  283. package/src/preview/property_previews/ArrayOneOfPreview.tsx +6 -4
  284. package/src/preview/property_previews/ArrayPropertyPreview.tsx +5 -3
  285. package/src/preview/property_previews/MapPropertyPreview.tsx +7 -6
  286. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +13 -13
  287. package/src/preview/property_previews/StringPropertyPreview.tsx +2 -2
  288. package/src/preview/util.ts +10 -10
  289. package/src/routes/CustomCMSRoute.tsx +21 -0
  290. package/src/routes/FireCMSRoute.tsx +246 -0
  291. package/src/routes/HomePageRoute.tsx +17 -0
  292. package/src/types/analytics.ts +3 -0
  293. package/src/types/auth.tsx +8 -12
  294. package/src/types/collections.ts +101 -28
  295. package/src/types/customization_controller.tsx +9 -0
  296. package/src/types/datasource.ts +21 -20
  297. package/src/types/dialogs_controller.tsx +7 -3
  298. package/src/types/entities.ts +3 -1
  299. package/src/types/entity_actions.tsx +71 -8
  300. package/src/types/entity_callbacks.ts +18 -18
  301. package/src/types/entity_overrides.tsx +2 -2
  302. package/src/types/export_import.ts +4 -4
  303. package/src/types/fields.tsx +52 -19
  304. package/src/types/firecms.tsx +18 -4
  305. package/src/types/firecms_context.tsx +1 -1
  306. package/src/types/navigation.ts +76 -22
  307. package/src/types/permissions.ts +5 -5
  308. package/src/types/plugins.tsx +50 -9
  309. package/src/types/properties.ts +74 -22
  310. package/src/types/property_config.tsx +1 -2
  311. package/src/types/roles.ts +3 -0
  312. package/src/types/side_dialogs_controller.tsx +15 -0
  313. package/src/types/side_entity_controller.tsx +16 -1
  314. package/src/types/storage.ts +82 -0
  315. package/src/types/user.ts +2 -0
  316. package/src/util/builders.ts +10 -8
  317. package/src/util/callbacks.ts +119 -0
  318. package/src/util/createFormexStub.tsx +62 -0
  319. package/src/util/entities.ts +5 -3
  320. package/src/util/entity_actions.ts +28 -0
  321. package/src/util/entity_cache.ts +204 -0
  322. package/src/util/icon_list.ts +1 -1
  323. package/src/util/icon_synonyms.ts +0 -1
  324. package/src/util/icons.tsx +36 -11
  325. package/src/util/index.ts +3 -0
  326. package/src/util/join_collections.ts +9 -2
  327. package/src/util/make_properties_editable.ts +13 -5
  328. package/src/util/navigation_from_path.ts +33 -12
  329. package/src/util/navigation_utils.ts +135 -19
  330. package/src/util/objects.ts +74 -14
  331. package/src/util/parent_references_from_path.ts +3 -3
  332. package/src/util/permissions.ts +8 -8
  333. package/src/util/property_utils.tsx +17 -6
  334. package/src/util/references.ts +19 -8
  335. package/src/util/resolutions.ts +93 -24
  336. package/src/util/storage.ts +6 -2
  337. package/src/util/useStorageUploadController.tsx +74 -29
  338. package/dist/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.d.ts +0 -5
  339. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  340. package/dist/form/PropertiesForm.d.ts +0 -8
  341. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/src/components/EntityCollectionTable/internal/popup_field/ElementResizeListener.tsx +0 -59
  344. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -27
  345. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -236
  346. package/src/form/PropertiesForm.tsx +0 -81
  347. package/src/form/components/FormikArrayContainer.tsx +0 -44
  348. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  349. /package/src/util/{common.tsx → common.ts} +0 -0
@@ -4,7 +4,6 @@ import { useSnackbarController, useStorageSource } from "../../hooks";
4
4
  import { StorageFieldItem } from "../../util/useStorageUploadController";
5
5
  import { ErrorView } from "../../components";
6
6
  import { cls, paperMixin, Skeleton } from "@firecms/ui";
7
- import { EntityCollection, StorageSource } from "../../types";
8
7
 
9
8
  export interface StorageUploadItemProps {
10
9
  storagePath: string;
@@ -80,7 +79,7 @@ export function StorageUploadProgress({
80
79
  }, [entry.file, entry.fileName, upload]);
81
80
 
82
81
  if (simple) {
83
- return <div className={`m-4 w-${imageSize} h-${imageSize}`}>
82
+ return <div className={`w-${imageSize} h-${imageSize}`}>
84
83
 
85
84
  {loading && <Skeleton className={`w-${imageSize} h-${imageSize}`}/>}
86
85
 
@@ -89,7 +88,7 @@ export function StorageUploadProgress({
89
88
  return (
90
89
 
91
90
  <div className={cls(paperMixin,
92
- "relative m-4 border-box flex items-center justify-center",
91
+ "p-4 relative border-box flex items-center justify-center",
93
92
  `min-w-[${imageSize}px] min-h-[${imageSize}px]`)}>
94
93
 
95
94
  {loading &&
@@ -1,3 +1,5 @@
1
- export * from "./FormikArrayContainer";
2
1
  export * from "./FieldHelperText";
3
2
  export * from "./LabelWithIcon";
3
+ export * from "./LabelWithIconAndTooltip";
4
+ export * from "./FormEntry";
5
+ export * from "./FormLayout";
@@ -1,10 +1,11 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "../../types";
3
- import { FieldHelperText, LabelWithIcon } from "../components";
3
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
4
4
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
5
5
  import { ExpandablePanel, Typography } from "@firecms/ui";
6
- import { getIconForProperty } from "../../util";
6
+ import { getArrayResolvedProperties, getIconForProperty, isReadOnly } from "../../util";
7
7
  import { useClearRestoreValue } from "../useClearRestoreValue";
8
+ import { useAuthController } from "../../hooks";
8
9
 
9
10
  /**
10
11
  * Array field used for custom
@@ -20,16 +21,26 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
20
21
  showError,
21
22
  isSubmitting,
22
23
  setValue,
23
- tableMode,
24
+ minimalistView: minimalistViewProp,
24
25
  property,
25
26
  includeDescription,
26
- underlyingValueHasChanged,
27
27
  context,
28
28
  disabled
29
29
  }: FieldProps<T, any, any>) {
30
30
 
31
- if (!Array.isArray(property.resolvedProperties))
32
- throw Error("ArrayCustomShapedFieldBinding misconfiguration. Property `of` not set");
31
+ const authController = useAuthController();
32
+ const minimalistView = minimalistViewProp || property.minimalistView;
33
+
34
+ let resolvedProperties = "resolvedProperties" in property ? property.resolvedProperties : undefined;
35
+ if (!resolvedProperties) {
36
+ resolvedProperties = getArrayResolvedProperties({
37
+ propertyValue: value,
38
+ propertyKey,
39
+ property,
40
+ ignoreMissingFields: false,
41
+ authController
42
+ })
43
+ }
33
44
 
34
45
  const expanded = property.expanded === undefined ? true : property.expanded;
35
46
 
@@ -40,24 +51,25 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
40
51
  });
41
52
 
42
53
  const title = (<>
43
- <LabelWithIcon icon={getIconForProperty(property, "small")}
44
- required={property.validation?.required}
45
- title={property.name}
46
- className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
54
+ <LabelWithIconAndTooltip
55
+ propertyKey={propertyKey}
56
+ icon={getIconForProperty(property, "small")}
57
+ required={property.validation?.required}
58
+ title={property.name}
59
+ className={"h-8 flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
47
60
  {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
48
61
  </>);
49
62
 
50
- const body = property.resolvedProperties.map((childProperty, index) => {
63
+ const body = resolvedProperties.map((childProperty, index) => {
64
+ const thisDisabled = isReadOnly(childProperty) || Boolean(childProperty.disabled);
51
65
  const fieldProps = {
52
66
  propertyKey: `${propertyKey}[${index}]`,
53
- disabled,
67
+ disabled: disabled || thisDisabled,
54
68
  property: childProperty,
55
69
  includeDescription,
56
- underlyingValueHasChanged,
57
70
  context,
58
- tableMode: false,
59
71
  partOfArray: true,
60
- partOfBlock: false,
72
+ minimalistView: false,
61
73
  autoFocus: false
62
74
  };
63
75
  return <div key={`custom_shaped_array_${index}`} className="pb-4">
@@ -69,14 +81,14 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
69
81
 
70
82
  <>
71
83
 
72
- {!tableMode &&
84
+ {!minimalistView &&
73
85
  <ExpandablePanel initiallyExpanded={expanded}
74
86
  title={title}
75
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
87
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
76
88
  {body}
77
89
  </ExpandablePanel>}
78
90
 
79
- {tableMode && body}
91
+ {minimalistView && body}
80
92
 
81
93
  <FieldHelperText includeDescription={includeDescription}
82
94
  showError={showError}
@@ -1,12 +1,12 @@
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, LabelWithIcon } from "../components";
5
- import { ErrorView } 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
8
  import { useNavigationController, useReferenceDialog } from "../../hooks";
9
- import { Button, cls, ExpandablePanel, fieldBackgroundMixin, Typography } from "@firecms/ui";
9
+ import { Button, cls, EditIcon, ExpandablePanel, fieldBackgroundMixin, Typography } from "@firecms/ui";
10
10
  import { useClearRestoreValue } from "../useClearRestoreValue";
11
11
 
12
12
  type ArrayOfReferencesFieldProps = FieldProps<EntityReference[]>;
@@ -25,13 +25,15 @@ export function ArrayOfReferencesFieldBinding({
25
25
  showError,
26
26
  disabled,
27
27
  isSubmitting,
28
- tableMode,
28
+ minimalistView: minimalistViewProp,
29
29
  property,
30
30
  includeDescription,
31
31
  setValue,
32
32
  setFieldValue
33
33
  }: ArrayOfReferencesFieldProps) {
34
34
 
35
+ const minimalistView = minimalistViewProp || property.minimalistView;
36
+
35
37
  const ofProperty = property.of as ResolvedProperty;
36
38
  if (ofProperty.dataType !== "reference") {
37
39
  throw Error("ArrayOfReferencesField expected a property containing references");
@@ -56,7 +58,6 @@ export function ArrayOfReferencesFieldBinding({
56
58
  }
57
59
 
58
60
  const onMultipleEntitiesSelected = useCallback((entities: Entity<any>[]) => {
59
- console.debug("onMultipleEntitiesSelected", entities);
60
61
  setValue(entities.map(e => getReferenceFrom(e)));
61
62
  }, [setValue]);
62
63
 
@@ -70,35 +71,42 @@ export function ArrayOfReferencesFieldBinding({
70
71
  }
71
72
  );
72
73
 
73
- const onEntryClick = useCallback((e: React.SyntheticEvent) => {
74
+ const onEntryClick = (e: React.SyntheticEvent) => {
74
75
  e.preventDefault();
75
76
  referenceDialogController.open();
76
- }, [referenceDialogController]);
77
-
78
- const buildEntry = useCallback((index: number, internalId: number) => {
77
+ };
78
+
79
+ const buildEntry = useCallback(({
80
+ index,
81
+ internalId,
82
+ storedProps,
83
+ storeProps
84
+ }: ArrayEntryParams) => {
79
85
  const entryValue = value && value.length > index ? value[index] : undefined;
80
86
  if (!entryValue)
81
87
  return <div>Internal ERROR</div>;
82
88
  return (
83
- <ReferencePreview
84
- key={internalId}
85
- disabled={!ofProperty.path}
86
- previewProperties={ofProperty.previewProperties}
87
- size={"medium"}
88
- onClick={onEntryClick}
89
- hover={!disabled}
90
- reference={entryValue}
91
- includeId={ofProperty.includeId}
92
- includeEntityLink={ofProperty.includeEntityLink}
93
- />
89
+ <ReferencePreview
90
+ key={internalId}
91
+ disabled={!ofProperty.path}
92
+ previewProperties={ofProperty.previewProperties}
93
+ size={"medium"}
94
+ onClick={onEntryClick}
95
+ hover={!disabled}
96
+ reference={entryValue}
97
+ includeId={ofProperty.includeId}
98
+ includeEntityLink={ofProperty.includeEntityLink}
99
+ />
94
100
  );
95
101
  }, [ofProperty.path, ofProperty.previewProperties, value]);
96
102
 
97
103
  const title = (<>
98
- <LabelWithIcon icon={getIconForProperty(property, "small")}
99
- required={property.validation?.required}
100
- title={property.name}
101
- className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
104
+ <LabelWithIconAndTooltip
105
+ propertyKey={propertyKey}
106
+ icon={getIconForProperty(property, "small")}
107
+ required={property.validation?.required}
108
+ title={property.name}
109
+ className={"h-8 flex flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
102
110
  {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
103
111
  </>);
104
112
 
@@ -108,20 +116,23 @@ export function ArrayOfReferencesFieldBinding({
108
116
 
109
117
  {collection && <div className={"group"}>
110
118
 
111
- <FormikArrayContainer value={value}
112
- addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
113
- name={propertyKey}
114
- buildEntry={buildEntry}
115
- disabled={isSubmitting}
116
- setFieldValue={setFieldValue}
117
- newDefaultEntry={property.of.defaultValue}/>
119
+ <ArrayContainer droppableId={propertyKey}
120
+ value={value}
121
+ disabled={isSubmitting}
122
+ buildEntry={buildEntry}
123
+ canAddElements={false}
124
+ addLabel={property.name ? "Add reference to " + property.name : "Add reference"}
125
+ newDefaultEntry={property.of.defaultValue}
126
+ onValueChange={(value) => setFieldValue(propertyKey, value)}
127
+ />
118
128
 
119
129
  <Button
120
- className="my-4 justify-center text-left"
121
- variant="outlined"
130
+ className="ml-3.5 my-4 justify-center text-left"
131
+ variant="text"
122
132
  color="primary"
123
133
  disabled={isSubmitting}
124
134
  onClick={onEntryClick}>
135
+ <EditIcon size={"small"}/>
125
136
  Edit {property.name}
126
137
  </Button>
127
138
  </div>}
@@ -130,16 +141,16 @@ export function ArrayOfReferencesFieldBinding({
130
141
  return (
131
142
  <>
132
143
 
133
- {!tableMode &&
144
+ {!minimalistView &&
134
145
  <ExpandablePanel
135
146
  titleClassName={fieldBackgroundMixin}
136
- className={cls("px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2", fieldBackgroundMixin)}
147
+ innerClassName={cls("px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2", fieldBackgroundMixin)}
137
148
  initiallyExpanded={expanded}
138
149
  title={title}>
139
150
  {body}
140
151
  </ExpandablePanel>}
141
152
 
142
- {tableMode && body}
153
+ {minimalistView && body}
143
154
 
144
155
  <FieldHelperText includeDescription={includeDescription}
145
156
  showError={showError}
@@ -1,15 +1,16 @@
1
- import React, { useCallback, useEffect, useState } from "react";
1
+ import React, { useEffect, useState } from "react";
2
2
 
3
3
  import { Field, useFormex } from "@firecms/formex";
4
4
 
5
- import { FieldHelperText, FormikArrayContainer, LabelWithIcon } from "../components";
5
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
6
6
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
7
7
  import { EnumValuesChip } from "../../preview";
8
8
  import { FieldProps, FormContext, PropertyFieldBindingProps, PropertyOrBuilder } from "../../types";
9
- import { getDefaultValueFor, getIconForProperty, } from "../../util";
9
+ import { getDefaultValueFor, getIconForProperty, mergeDeep, } from "../../util";
10
10
  import { DEFAULT_ONE_OF_TYPE, DEFAULT_ONE_OF_VALUE } from "../../util/common";
11
11
  import { cls, ExpandablePanel, paperMixin, Select, SelectItem, Typography } from "@firecms/ui";
12
12
  import { useClearRestoreValue } from "../useClearRestoreValue";
13
+ import { ArrayContainer, ArrayEntryParams } from "../../components";
13
14
 
14
15
  /**
15
16
  * If the `oneOf` property is specified, this fields render each array entry as
@@ -27,7 +28,7 @@ export function BlockFieldBinding<T extends Array<any>>({
27
28
  isSubmitting,
28
29
  setValue,
29
30
  setFieldValue,
30
- tableMode,
31
+ minimalistView: minimalistViewProp,
31
32
  property,
32
33
  includeDescription,
33
34
  underlyingValueHasChanged,
@@ -35,6 +36,8 @@ export function BlockFieldBinding<T extends Array<any>>({
35
36
  disabled
36
37
  }: FieldProps<T>) {
37
38
 
39
+ const minimalistView = minimalistViewProp || property.minimalistView;
40
+
38
41
  if (!property.oneOf)
39
42
  throw Error("ArrayOneOfField misconfiguration. Property `oneOf` not set");
40
43
 
@@ -47,9 +50,15 @@ export function BlockFieldBinding<T extends Array<any>>({
47
50
 
48
51
  const [lastAddedId, setLastAddedId] = useState<number | undefined>();
49
52
 
50
- const buildEntry = useCallback((index: number, internalId: number) => {
53
+ const buildEntry = ({
54
+ index,
55
+ internalId,
56
+ storedProps,
57
+ storeProps
58
+ }: ArrayEntryParams) => {
59
+
51
60
  return <BlockEntry
52
- key={`array_one_of_${index}`}
61
+ key={`array_one_of_${internalId}`}
53
62
  name={`${propertyKey}.${index}`}
54
63
  index={index}
55
64
  value={value[index]}
@@ -57,42 +66,47 @@ export function BlockFieldBinding<T extends Array<any>>({
57
66
  valueField={property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE}
58
67
  properties={property.oneOf!.properties}
59
68
  autoFocus={internalId === lastAddedId}
60
- context={context}/>;
61
- }, [context, lastAddedId, property.oneOf, propertyKey, value]);
69
+ context={context}
70
+ storeProps={storeProps}
71
+ storedProps={storedProps}/>;
72
+ };
62
73
 
63
74
  const title = (
64
- <LabelWithIcon icon={getIconForProperty(property, "small")}
65
- required={property.validation?.required}
66
- title={property.name}
67
- className={"text-text-secondary dark:text-text-secondary-dark"}/>
75
+ <LabelWithIconAndTooltip
76
+ propertyKey={propertyKey}
77
+ icon={getIconForProperty(property, "small")}
78
+ required={property.validation?.required}
79
+ title={property.name}
80
+ className={"text-text-secondary dark:text-text-secondary-dark"}/>
68
81
  );
69
82
 
70
83
  const firstOneOfKey = Object.keys(property.oneOf.properties)[0];
71
- const body = <FormikArrayContainer value={value}
72
- name={propertyKey}
73
- addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
74
- buildEntry={buildEntry}
75
- onInternalIdAdded={setLastAddedId}
76
- disabled={isSubmitting || Boolean(property.disabled)}
77
- includeAddButton={!property.disabled}
78
- setFieldValue={setFieldValue}
79
- newDefaultEntry={{
80
- [property.oneOf!.typeField ?? DEFAULT_ONE_OF_TYPE]: firstOneOfKey,
81
- [property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE]: getDefaultValueFor(property.oneOf.properties[firstOneOfKey])
82
- }}/>;
84
+ const body = <ArrayContainer value={value}
85
+ className={"flex flex-col gap-3"}
86
+ droppableId={propertyKey}
87
+ addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
88
+ buildEntry={buildEntry}
89
+ onInternalIdAdded={setLastAddedId}
90
+ disabled={isSubmitting || Boolean(property.disabled)}
91
+ canAddElements={!property.disabled}
92
+ onValueChange={(value) => setFieldValue(propertyKey, value)}
93
+ newDefaultEntry={{
94
+ [property.oneOf!.typeField ?? DEFAULT_ONE_OF_TYPE]: firstOneOfKey,
95
+ [property.oneOf!.valueField ?? DEFAULT_ONE_OF_VALUE]: getDefaultValueFor(property.oneOf.properties[firstOneOfKey])
96
+ }}/>;
83
97
  return (
84
98
 
85
99
  <>
86
100
 
87
- {!tableMode &&
101
+ {!minimalistView &&
88
102
  <ExpandablePanel
89
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
103
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
90
104
  initiallyExpanded={expanded}
91
105
  title={title}>
92
106
  {body}
93
107
  </ExpandablePanel>}
94
108
 
95
- {tableMode && body}
109
+ {minimalistView && body}
96
110
 
97
111
  <FieldHelperText includeDescription={includeDescription}
98
112
  showError={showError}
@@ -131,6 +145,9 @@ interface BlockEntryProps {
131
145
  */
132
146
  context: FormContext<any>;
133
147
 
148
+ storedProps?: object,
149
+ storeProps: (props: object) => void
150
+
134
151
  }
135
152
 
136
153
  function BlockEntry({
@@ -141,7 +158,9 @@ function BlockEntry({
141
158
  valueField,
142
159
  properties,
143
160
  autoFocus,
144
- context
161
+ context,
162
+ storedProps,
163
+ storeProps
145
164
  }: BlockEntryProps) {
146
165
 
147
166
  const type = value && value[typeField];
@@ -161,7 +180,9 @@ function BlockEntry({
161
180
  }
162
181
  }, [type]);
163
182
 
164
- const property = typeInternal ? properties[typeInternal] : undefined;
183
+ const propertyInternal = typeInternal ? properties[typeInternal] : undefined;
184
+
185
+ const property = storedProps && typeof propertyInternal === "object" ? mergeDeep(propertyInternal, storedProps) : propertyInternal;
165
186
 
166
187
  const enumValuesConfigs = Object.entries(properties)
167
188
  .map(([key, property]) => ({
@@ -179,8 +200,8 @@ function BlockEntry({
179
200
  context,
180
201
  autoFocus,
181
202
  partOfArray: false,
182
- partOfBlock: true,
183
- tableMode: false
203
+ minimalistView: true,
204
+ onPropertyChange: storeProps,
184
205
  }
185
206
  : undefined;
186
207
 
@@ -193,7 +214,7 @@ function BlockEntry({
193
214
  };
194
215
 
195
216
  return (
196
- <div className={cls(paperMixin, "bg-transparent p-4 my-4 py-8")}>
217
+ <div className={cls(paperMixin, "bg-transparent p-2")}>
197
218
 
198
219
  <Field
199
220
  name={typeFieldName}
@@ -206,7 +227,8 @@ function BlockEntry({
206
227
  className="mb-2"
207
228
  placeholder={<Typography variant={"caption"}
208
229
  className={"px-4 py-2 font-medium"}>Type</Typography>}
209
- size={"small"}
230
+ size={"medium"}
231
+ fullWidth={true}
210
232
  position={"item-aligned"}
211
233
  value={value1}
212
234
  renderValue={(enumKey: any) =>
@@ -7,6 +7,7 @@ import { useCustomizationController } from "../../hooks";
7
7
  import { getIconForProperty } from "../../util";
8
8
  import { DateTimeField } from "@firecms/ui";
9
9
  import { useClearRestoreValue } from "../useClearRestoreValue";
10
+ import { PropertyIdCopyTooltip } from "../../components";
10
11
 
11
12
  type DateTimeFieldProps = FieldProps<Date>;
12
13
 
@@ -41,20 +42,23 @@ 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
+ disabled={disabled}
55
+ label={<LabelWithIcon
56
+ icon={getIconForProperty(property, "small")}
57
+ required={property.validation?.required}
58
+ className={showError ? "text-red-500 dark:text-red-500" : "text-text-secondary dark:text-text-secondary-dark"}
59
+ title={property.name}/>}
60
+ />
61
+ </PropertyIdCopyTooltip>
58
62
 
59
63
  <FieldHelperText includeDescription={includeDescription}
60
64
  showError={showError}
@@ -2,7 +2,7 @@ import React, { useEffect, useState } from "react";
2
2
  import { DataType, FieldProps, GeoPoint } from "../../types";
3
3
 
4
4
  import { ArrayContainer } from "../../components";
5
- import { FieldHelperText, LabelWithIcon } from "../components";
5
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
6
6
  import {
7
7
  AddIcon,
8
8
  ArrowDropDownIcon,
@@ -41,7 +41,7 @@ export function KeyValueFieldBinding({
41
41
  disabled,
42
42
  property,
43
43
  setValue,
44
- tableMode,
44
+ minimalistView,
45
45
  includeDescription,
46
46
  underlyingValueHasChanged,
47
47
  autoFocus,
@@ -62,7 +62,8 @@ export function KeyValueFieldBinding({
62
62
  initialValue={initialValues}
63
63
  fieldName={property.name ?? propertyKey}/>;
64
64
 
65
- const title = <LabelWithIcon
65
+ const title = <LabelWithIconAndTooltip
66
+ propertyKey={propertyKey}
66
67
  icon={getIconForProperty(property, "small")}
67
68
  required={property.validation?.required}
68
69
  title={property.name}
@@ -71,11 +72,11 @@ export function KeyValueFieldBinding({
71
72
  return (
72
73
  <>
73
74
 
74
- {!tableMode && <ExpandablePanel initiallyExpanded={expanded}
75
- title={title}
76
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>{mapFormView}</ExpandablePanel>}
75
+ {!minimalistView && <ExpandablePanel initiallyExpanded={expanded}
76
+ title={title}
77
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>{mapFormView}</ExpandablePanel>}
77
78
 
78
- {tableMode && mapFormView}
79
+ {minimalistView && mapFormView}
79
80
 
80
81
  <FieldHelperText includeDescription={includeDescription}
81
82
  showError={showError}
@@ -269,7 +270,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
269
270
  placeholder={"value"}
270
271
  value={entryValue}
271
272
  type={dataType === "number" ? "number" : "text"}
272
- size={"small"}
273
+ size={"medium"}
273
274
  disabled={disabled || !fieldKey}
274
275
  onChange={(event) => {
275
276
  if (dataType === "number") {
@@ -299,7 +300,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
299
300
  }}/>;
300
301
  } else if (dataType === "date") {
301
302
  return <DateTimeField value={entryValue}
302
- size={"small"}
303
+ size={"medium"}
303
304
  locale={locale}
304
305
  disabled={disabled || !fieldKey}
305
306
  onChange={(date) => {
@@ -328,14 +329,17 @@ function MapKeyValueRow<T extends Record<string, any>>({
328
329
  addLabel={fieldKey ? `Add to ${fieldKey}` : "Add"}
329
330
  size={"small"}
330
331
  disabled={disabled || !fieldKey}
331
- includeAddButton={true}
332
+ canAddElements={true}
332
333
  onValueChange={(newValue) => {
333
334
  setValue({
334
335
  ...value,
335
336
  [fieldKey]: newValue
336
337
  });
337
338
  }}
338
- buildEntry={(index, internalId) => {
339
+ buildEntry={({
340
+ index,
341
+ internalId
342
+ }) => {
339
343
  return <ArrayKeyValueRow
340
344
  index={index}
341
345
  id={internalId}
@@ -385,7 +389,7 @@ function MapKeyValueRow<T extends Record<string, any>>({
385
389
  value={fieldKey}
386
390
  placeholder={"key"}
387
391
  disabled={disabled || (entryValue !== undefined && entryValue !== null && entryValue !== "")}
388
- size={"small"}
392
+ size={"medium"}
389
393
  onChange={(event) => {
390
394
  onFieldKeyChange(event.target.value);
391
395
  }}/>
@@ -453,7 +457,7 @@ function ArrayKeyValueRow<T>({
453
457
  if (dataType === "string" || dataType === "number") {
454
458
  return <TextField value={entryValue}
455
459
  type={dataType === "number" ? "number" : "text"}
456
- size={"small"}
460
+ size={"medium"}
457
461
  onChange={(event) => {
458
462
  if (dataType === "number") {
459
463
  const numberValue = event.target.value ? parseFloat(event.target.value) : undefined;
@@ -470,14 +474,14 @@ function ArrayKeyValueRow<T>({
470
474
  }}/>;
471
475
  } else if (dataType === "date") {
472
476
  return <DateTimeField value={entryValue}
473
- size={"small"}
477
+ size={"medium"}
474
478
  locale={locale}
475
479
  onChange={(date) => {
476
480
  setValue(date as T);
477
481
  }}/>;
478
482
  } else if (dataType === "boolean") {
479
483
  return <BooleanSwitchWithLabel value={entryValue}
480
- size={"medium"}
484
+ size={"small"}
481
485
  position={"start"}
482
486
  onValueChange={(v) => {
483
487
  setValue(v as T);