@firecms/core 3.0.0-canary.17 → 3.0.0-canary.171

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 (365) hide show
  1. package/README.md +3 -3
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +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 +23 -6
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -13
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +22 -6
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +1 -0
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/index.d.ts +1 -1
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +7 -4
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +16 -2
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  24. package/dist/components/EntityPreview.d.ts +7 -6
  25. package/dist/components/ErrorView.d.ts +1 -1
  26. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  27. package/dist/components/HomePage/NavigationCardBinding.d.ts +1 -1
  28. package/dist/components/PropertyConfigBadge.d.ts +2 -1
  29. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  30. package/dist/components/ReferenceWidget.d.ts +3 -1
  31. package/dist/components/SelectableTable/SelectableTable.d.ts +13 -3
  32. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  33. package/dist/components/UnsavedChangesDialog.d.ts +8 -0
  34. package/dist/components/VirtualTable/VirtualTableProps.d.ts +28 -12
  35. package/dist/components/VirtualTable/types.d.ts +3 -3
  36. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -3
  37. package/dist/components/common/index.d.ts +2 -1
  38. package/dist/components/common/table_height.d.ts +5 -0
  39. package/dist/components/common/types.d.ts +4 -6
  40. package/dist/components/common/useColumnsIds.d.ts +3 -1
  41. package/dist/components/common/{useDataSourceEntityCollectionTableController.d.ts → useDataSourceTableController.d.ts} +13 -2
  42. package/dist/components/common/useDebouncedCallback.d.ts +1 -0
  43. package/dist/components/common/useScrollRestoration.d.ts +14 -0
  44. package/dist/components/index.d.ts +4 -2
  45. package/dist/contexts/BreacrumbsContext.d.ts +8 -0
  46. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  47. package/dist/core/DefaultDrawer.d.ts +19 -0
  48. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  49. package/dist/core/EntityEditView.d.ts +41 -9
  50. package/dist/core/FireCMS.d.ts +2 -2
  51. package/dist/core/FireCMSRouter.d.ts +4 -0
  52. package/dist/core/NavigationRoutes.d.ts +2 -3
  53. package/dist/core/index.d.ts +4 -4
  54. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  55. package/dist/form/components/ErrorFocus.d.ts +1 -1
  56. package/dist/form/components/FieldHelperText.d.ts +3 -3
  57. package/dist/form/components/LabelWithIcon.d.ts +1 -1
  58. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  59. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  60. package/dist/form/components/index.d.ts +1 -1
  61. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  62. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  63. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  64. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  65. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  66. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  67. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  68. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  69. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  70. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -5
  73. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  74. package/dist/form/field_bindings/TextFieldBinding.d.ts +1 -1
  75. package/dist/form/index.d.ts +3 -5
  76. package/dist/form/useClearRestoreValue.d.ts +2 -2
  77. package/dist/hooks/data/delete.d.ts +4 -4
  78. package/dist/hooks/data/save.d.ts +4 -5
  79. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  80. package/dist/hooks/data/useEntityFetch.d.ts +4 -3
  81. package/dist/hooks/index.d.ts +1 -0
  82. package/dist/hooks/useAuthController.d.ts +1 -1
  83. package/dist/hooks/useBreadcrumbsController.d.ts +26 -0
  84. package/dist/hooks/useBuildNavigationController.d.ts +3 -5
  85. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  86. package/dist/hooks/useProjectLog.d.ts +8 -2
  87. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  88. package/dist/hooks/useValidateAuthenticator.d.ts +5 -9
  89. package/dist/index.d.ts +1 -0
  90. package/dist/index.es.js +21408 -14205
  91. package/dist/index.es.js.map +1 -1
  92. package/dist/index.umd.js +23883 -588
  93. package/dist/index.umd.js.map +1 -1
  94. package/dist/internal/useBuildDataSource.d.ts +1 -16
  95. package/dist/internal/useUnsavedChangesDialog.d.ts +7 -9
  96. package/dist/preview/PropertyPreviewProps.d.ts +6 -1
  97. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  98. package/dist/preview/components/ReferencePreview.d.ts +3 -2
  99. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  100. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  101. package/dist/preview/util.d.ts +3 -3
  102. package/dist/routes/CustomCMSRoute.d.ts +4 -0
  103. package/dist/routes/FireCMSRoute.d.ts +1 -0
  104. package/dist/routes/HomePageRoute.d.ts +3 -0
  105. package/dist/types/auth.d.ts +8 -10
  106. package/dist/types/collections.d.ts +69 -22
  107. package/dist/types/datasource.d.ts +52 -36
  108. package/dist/types/dialogs_controller.d.ts +7 -3
  109. package/dist/types/entities.d.ts +7 -2
  110. package/dist/types/entity_actions.d.ts +28 -4
  111. package/dist/types/entity_callbacks.d.ts +16 -16
  112. package/dist/types/entity_overrides.d.ts +2 -2
  113. package/dist/types/export_import.d.ts +4 -4
  114. package/dist/types/fields.d.ts +63 -41
  115. package/dist/types/firecms.d.ts +6 -2
  116. package/dist/types/firecms_context.d.ts +1 -1
  117. package/dist/types/index.d.ts +0 -1
  118. package/dist/types/navigation.d.ts +34 -17
  119. package/dist/types/permissions.d.ts +4 -4
  120. package/dist/types/plugins.d.ts +23 -12
  121. package/dist/types/properties.d.ts +34 -21
  122. package/dist/types/property_config.d.ts +0 -2
  123. package/dist/types/side_dialogs_controller.d.ts +10 -0
  124. package/dist/types/side_entity_controller.d.ts +1 -1
  125. package/dist/types/storage.d.ts +86 -3
  126. package/dist/types/user.d.ts +1 -0
  127. package/dist/util/builders.d.ts +2 -2
  128. package/dist/util/entities.d.ts +3 -3
  129. package/dist/util/entity_actions.d.ts +2 -0
  130. package/dist/util/entity_cache.d.ts +23 -0
  131. package/dist/util/icon_list.d.ts +5 -1
  132. package/dist/util/icon_synonyms.d.ts +1 -98
  133. package/dist/util/icons.d.ts +6 -3
  134. package/dist/util/index.d.ts +2 -0
  135. package/dist/util/navigation_from_path.d.ts +5 -1
  136. package/dist/util/navigation_utils.d.ts +14 -3
  137. package/dist/util/objects.d.ts +2 -1
  138. package/dist/util/permissions.d.ts +4 -4
  139. package/dist/util/plurals.d.ts +0 -2
  140. package/dist/util/property_utils.d.ts +3 -3
  141. package/dist/util/resolutions.d.ts +30 -16
  142. package/dist/util/storage.d.ts +23 -2
  143. package/dist/util/useStorageUploadController.d.ts +3 -3
  144. package/package.json +58 -45
  145. package/src/app/AppBar.tsx +18 -0
  146. package/src/app/Drawer.tsx +24 -0
  147. package/src/app/Scaffold.tsx +243 -0
  148. package/src/app/index.ts +4 -0
  149. package/src/app/useApp.tsx +32 -0
  150. package/src/components/ArrayContainer.tsx +126 -40
  151. package/src/components/CircularProgressCenter.tsx +2 -2
  152. package/src/components/ClearFilterSortButton.tsx +41 -0
  153. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  154. package/src/components/DeleteEntityDialog.tsx +10 -19
  155. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +54 -37
  156. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +38 -31
  157. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +30 -9
  158. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +47 -39
  159. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  160. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +31 -17
  161. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +19 -17
  162. package/src/components/EntityCollectionTable/index.tsx +1 -1
  163. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +31 -36
  164. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  165. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  166. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +84 -77
  167. package/src/components/EntityCollectionView/EntityCollectionView.tsx +206 -112
  168. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  169. package/src/components/EntityCollectionView/useSelectionController.tsx +20 -7
  170. package/src/components/EntityCollectionView/utils.ts +19 -0
  171. package/src/components/EntityPreview.tsx +66 -53
  172. package/src/components/EntityView.tsx +10 -10
  173. package/src/components/ErrorView.tsx +4 -4
  174. package/src/components/HomePage/DefaultHomePage.tsx +26 -19
  175. package/src/components/HomePage/FavouritesView.tsx +6 -11
  176. package/src/components/HomePage/NavigationCard.tsx +4 -4
  177. package/src/components/HomePage/NavigationCardBinding.tsx +5 -10
  178. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  179. package/src/components/HomePage/SmallNavigationCard.tsx +5 -6
  180. package/src/components/NotFoundPage.tsx +2 -2
  181. package/src/components/PropertyConfigBadge.tsx +9 -3
  182. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  183. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +19 -13
  184. package/src/components/ReferenceWidget.tsx +22 -12
  185. package/src/components/SearchIconsView.tsx +10 -7
  186. package/src/components/SelectableTable/SelectableTable.tsx +27 -12
  187. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  188. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +25 -8
  189. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +36 -12
  190. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +92 -23
  191. package/src/components/UnsavedChangesDialog.tsx +42 -0
  192. package/src/components/VirtualTable/VirtualTable.tsx +96 -48
  193. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  194. package/src/components/VirtualTable/VirtualTableHeader.tsx +10 -10
  195. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  196. package/src/components/VirtualTable/VirtualTableProps.tsx +33 -14
  197. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  198. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  199. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +3 -2
  200. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +2 -1
  201. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  202. package/src/components/VirtualTable/types.tsx +2 -3
  203. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +33 -40
  204. package/src/components/common/index.ts +2 -1
  205. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  206. package/src/components/common/types.tsx +4 -6
  207. package/src/components/common/useColumnsIds.tsx +24 -3
  208. package/src/components/common/useDataSourceTableController.tsx +420 -0
  209. package/src/components/common/useDebouncedCallback.tsx +20 -0
  210. package/src/components/common/useScrollRestoration.tsx +68 -0
  211. package/src/components/common/useTableSearchHelper.ts +53 -12
  212. package/src/components/index.tsx +4 -2
  213. package/src/contexts/BreacrumbsContext.tsx +38 -0
  214. package/src/contexts/DialogsProvider.tsx +5 -4
  215. package/src/contexts/SnackbarProvider.tsx +2 -0
  216. package/src/core/DefaultAppBar.tsx +201 -0
  217. package/src/core/DefaultDrawer.tsx +185 -0
  218. package/src/core/DrawerNavigationItem.tsx +66 -0
  219. package/src/core/EntityEditView.tsx +933 -204
  220. package/src/core/EntitySidePanel.tsx +73 -8
  221. package/src/core/FireCMS.tsx +56 -49
  222. package/src/core/FireCMSRouter.tsx +17 -0
  223. package/src/core/NavigationRoutes.tsx +20 -34
  224. package/src/core/SideDialogs.tsx +12 -6
  225. package/src/core/field_configs.tsx +11 -12
  226. package/src/core/index.tsx +6 -5
  227. package/src/form/PropertyFieldBinding.tsx +74 -35
  228. package/src/form/components/CustomIdField.tsx +6 -2
  229. package/src/form/components/FieldHelperText.tsx +4 -4
  230. package/src/form/components/LabelWithIcon.tsx +27 -19
  231. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  232. package/src/form/components/StorageItemPreview.tsx +22 -12
  233. package/src/form/components/StorageUploadProgress.tsx +3 -4
  234. package/src/form/components/index.tsx +1 -1
  235. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +29 -17
  236. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +45 -35
  237. package/src/form/field_bindings/BlockFieldBinding.tsx +53 -33
  238. package/src/form/field_bindings/DateTimeFieldBinding.tsx +17 -14
  239. package/src/form/field_bindings/KeyValueFieldBinding.tsx +60 -51
  240. package/src/form/field_bindings/MapFieldBinding.tsx +67 -48
  241. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  242. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +25 -20
  243. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +11 -16
  244. package/src/form/field_bindings/ReferenceFieldBinding.tsx +42 -31
  245. package/src/form/field_bindings/RepeatFieldBinding.tsx +52 -34
  246. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -14
  247. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +37 -47
  248. package/src/form/field_bindings/SwitchFieldBinding.tsx +28 -24
  249. package/src/form/field_bindings/TextFieldBinding.tsx +27 -24
  250. package/src/form/index.tsx +4 -9
  251. package/src/form/useClearRestoreValue.tsx +2 -2
  252. package/src/form/validation.ts +1 -17
  253. package/src/hooks/data/delete.ts +6 -5
  254. package/src/hooks/data/save.ts +13 -9
  255. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  256. package/src/hooks/data/useDataSource.tsx +11 -3
  257. package/src/hooks/data/useEntityFetch.tsx +10 -6
  258. package/src/hooks/index.tsx +1 -0
  259. package/src/hooks/useAuthController.tsx +1 -1
  260. package/src/hooks/useBreadcrumbsController.tsx +31 -0
  261. package/src/hooks/useBuildLocalConfigurationPersistence.tsx +8 -10
  262. package/src/hooks/useBuildModeController.tsx +11 -5
  263. package/src/hooks/useBuildNavigationController.tsx +153 -55
  264. package/src/hooks/useFireCMSContext.tsx +5 -5
  265. package/src/hooks/useLargeLayout.tsx +0 -35
  266. package/src/hooks/useProjectLog.tsx +32 -10
  267. package/src/hooks/useResolvedNavigationFrom.tsx +10 -12
  268. package/src/hooks/useValidateAuthenticator.tsx +21 -41
  269. package/src/index.ts +1 -0
  270. package/src/internal/useBuildDataSource.ts +72 -82
  271. package/src/internal/useBuildSideDialogsController.tsx +4 -2
  272. package/src/internal/useBuildSideEntityController.tsx +230 -70
  273. package/src/internal/useUnsavedChangesDialog.tsx +127 -91
  274. package/src/preview/PropertyPreview.tsx +13 -20
  275. package/src/preview/PropertyPreviewProps.tsx +7 -1
  276. package/src/preview/components/BooleanPreview.tsx +2 -2
  277. package/src/preview/components/EmptyValue.tsx +1 -1
  278. package/src/preview/components/EnumValuesChip.tsx +2 -2
  279. package/src/preview/components/ImagePreview.tsx +25 -36
  280. package/src/preview/components/ReferencePreview.tsx +23 -34
  281. package/src/preview/components/StorageThumbnail.tsx +5 -1
  282. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  283. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  284. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  285. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  286. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  287. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  288. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  289. package/src/preview/property_previews/MapPropertyPreview.tsx +9 -9
  290. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  291. package/src/preview/property_previews/StringPropertyPreview.tsx +3 -3
  292. package/src/preview/util.ts +10 -10
  293. package/src/routes/CustomCMSRoute.tsx +21 -0
  294. package/src/routes/FireCMSRoute.tsx +230 -0
  295. package/src/routes/HomePageRoute.tsx +17 -0
  296. package/src/types/auth.tsx +9 -13
  297. package/src/types/collections.ts +79 -24
  298. package/src/types/customization_controller.tsx +0 -1
  299. package/src/types/datasource.ts +61 -43
  300. package/src/types/dialogs_controller.tsx +7 -3
  301. package/src/types/entities.ts +12 -2
  302. package/src/types/entity_actions.tsx +32 -7
  303. package/src/types/entity_callbacks.ts +18 -18
  304. package/src/types/entity_overrides.tsx +2 -2
  305. package/src/types/export_import.ts +4 -4
  306. package/src/types/fields.tsx +69 -45
  307. package/src/types/firecms.tsx +7 -2
  308. package/src/types/firecms_context.tsx +1 -1
  309. package/src/types/index.ts +0 -1
  310. package/src/types/navigation.ts +40 -21
  311. package/src/types/permissions.ts +5 -5
  312. package/src/types/plugins.tsx +25 -14
  313. package/src/types/properties.ts +39 -22
  314. package/src/types/property_config.tsx +0 -2
  315. package/src/types/side_dialogs_controller.tsx +13 -0
  316. package/src/types/side_entity_controller.tsx +1 -1
  317. package/src/types/storage.ts +94 -3
  318. package/src/types/user.ts +2 -0
  319. package/src/util/builders.ts +6 -6
  320. package/src/util/entities.ts +9 -6
  321. package/src/util/entity_actions.ts +28 -0
  322. package/src/util/entity_cache.ts +196 -0
  323. package/src/util/enums.ts +1 -1
  324. package/src/util/icon_list.ts +16 -10
  325. package/src/util/icon_synonyms.ts +3 -100
  326. package/src/util/icons.tsx +17 -7
  327. package/src/util/index.ts +2 -0
  328. package/src/util/make_properties_editable.ts +13 -5
  329. package/src/util/navigation_from_path.ts +10 -2
  330. package/src/util/navigation_utils.ts +59 -7
  331. package/src/util/objects.ts +45 -28
  332. package/src/util/parent_references_from_path.ts +3 -3
  333. package/src/util/permissions.ts +9 -8
  334. package/src/util/plurals.ts +0 -2
  335. package/src/util/property_utils.tsx +11 -4
  336. package/src/util/references.ts +11 -2
  337. package/src/util/resolutions.ts +79 -46
  338. package/src/util/storage.ts +79 -21
  339. package/src/util/strings.ts +2 -2
  340. package/src/util/useStorageUploadController.tsx +34 -8
  341. package/src/util/useTraceUpdate.tsx +1 -0
  342. package/dist/components/PropertyIdCopyTooltipContent.d.ts +0 -3
  343. package/dist/components/VirtualTable/common.d.ts +0 -2
  344. package/dist/core/Drawer.d.ts +0 -23
  345. package/dist/core/Scaffold.d.ts +0 -55
  346. package/dist/core/SideEntityView.d.ts +0 -7
  347. package/dist/form/EntityForm.d.ts +0 -77
  348. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  349. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  350. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  351. package/dist/internal/useLocaleConfig.d.ts +0 -1
  352. package/dist/types/appcheck.d.ts +0 -26
  353. package/src/components/FireCMSAppBar.tsx +0 -165
  354. package/src/components/PropertyIdCopyTooltipContent.tsx +0 -28
  355. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +0 -225
  356. package/src/core/Drawer.tsx +0 -191
  357. package/src/core/Scaffold.tsx +0 -281
  358. package/src/core/SideEntityView.tsx +0 -38
  359. package/src/form/EntityForm.tsx +0 -728
  360. package/src/form/components/FormikArrayContainer.tsx +0 -44
  361. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -695
  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/src/util/{common.tsx → common.ts} +0 -0
@@ -1,10 +1,10 @@
1
1
  import React, { useState } from "react";
2
- import { CMSType, FieldProps, ResolvedProperty } from "../../types";
3
- import { FieldHelperText, FormikArrayContainer, LabelWithIcon } from "../components";
4
- import { ErrorBoundary } from "../../components";
5
- import { getIconForProperty } from "../../util";
2
+ import { CMSType, FieldProps, PropertyFieldBindingProps, ResolvedProperty } from "../../types";
3
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
4
+ import { ArrayContainer, ArrayEntryParams, ErrorBoundary } from "../../components";
5
+ import { getArrayResolvedProperties, getDefaultValueFor, getIconForProperty, mergeDeep } from "../../util";
6
6
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
7
- import { ExpandablePanel } from "@firecms/ui";
7
+ import { ExpandablePanel, Typography } from "@firecms/ui";
8
8
  import { useClearRestoreValue } from "../useClearRestoreValue";
9
9
 
10
10
  /**
@@ -23,7 +23,7 @@ export function RepeatFieldBinding<T extends Array<any>>({
23
23
  isSubmitting,
24
24
  setValue,
25
25
  setFieldValue,
26
- tableMode,
26
+ minimalistView,
27
27
  property,
28
28
  includeDescription,
29
29
  underlyingValueHasChanged,
@@ -34,8 +34,15 @@ export function RepeatFieldBinding<T extends Array<any>>({
34
34
  if (!property.of)
35
35
  throw Error("RepeatFieldBinding misconfiguration. Property `of` not set");
36
36
 
37
- if (!property.resolvedProperties || !Array.isArray(property.resolvedProperties))
38
- throw Error("RepeatFieldBinding - Internal error: Expected array in 'property.resolvedProperties'");
37
+ let resolvedProperties = "resolvedProperties" in property ? property.resolvedProperties : undefined;
38
+ if (!resolvedProperties) {
39
+ resolvedProperties = getArrayResolvedProperties({
40
+ propertyValue: value,
41
+ propertyKey,
42
+ property,
43
+ ignoreMissingFields: false
44
+ })
45
+ }
39
46
 
40
47
  const expanded = property.expanded === undefined ? true : property.expanded;
41
48
  const ofProperty: ResolvedProperty<CMSType[]> = property.of as ResolvedProperty<CMSType[]>;
@@ -48,55 +55,66 @@ export function RepeatFieldBinding<T extends Array<any>>({
48
55
  setValue
49
56
  });
50
57
 
51
- const buildEntry = (index: number, internalId: number) => {
52
- const childProperty = property.resolvedProperties[index] ?? ofProperty;
53
- const fieldProps = {
58
+ const buildEntry = ({
59
+ index,
60
+ internalId,
61
+ storedProps,
62
+ storeProps
63
+ }: ArrayEntryParams) => {
64
+ const childProperty = resolvedProperties[index] ?? ofProperty;
65
+ const fieldProps: PropertyFieldBindingProps<any, any> = {
54
66
  propertyKey: `${propertyKey}.${index}`,
55
67
  disabled,
56
- property: childProperty,
68
+ property: storedProps ? mergeDeep(childProperty, storedProps) : childProperty,
69
+ onPropertyChange: storeProps,
57
70
  includeDescription,
58
71
  underlyingValueHasChanged,
59
72
  context,
60
- tableMode: false,
61
73
  partOfArray: true,
62
- partOfBlock: false,
63
- autoFocus: internalId === lastAddedId
74
+ minimalistView: false,
75
+ autoFocus: internalId === lastAddedId,
64
76
  };
65
77
  return <ErrorBoundary>
66
- <PropertyFieldBinding {...fieldProps}/>
78
+ <PropertyFieldBinding {...fieldProps} index={index}/>
67
79
  </ErrorBoundary>;
68
80
  };
69
81
 
70
- const arrayContainer = <FormikArrayContainer value={value}
71
- addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
72
- name={propertyKey}
73
- setFieldValue={setFieldValue}
74
- buildEntry={buildEntry}
75
- onInternalIdAdded={setLastAddedId}
76
- disabled={isSubmitting || Boolean(property.disabled)}
77
- includeAddButton={!property.disabled}
78
- newDefaultEntry={property.of.defaultValue}/>;
82
+ const arrayContainer = <ArrayContainer droppableId={propertyKey}
83
+ addLabel={property.name ? "Add entry to " + property.name : "Add entry"}
84
+ value={value}
85
+ buildEntry={buildEntry}
86
+ onInternalIdAdded={setLastAddedId}
87
+ disabled={isSubmitting || Boolean(property.disabled)}
88
+ includeAddButton={!property.disabled}
89
+ newDefaultEntry={getDefaultValueFor(property.of)}
90
+ onValueChange={(value) => setFieldValue(propertyKey, value)}
91
+ />;
79
92
 
80
- const title = (<LabelWithIcon icon={getIconForProperty(property, "small")}
81
- required={property.validation?.required}
82
- title={property.name}
83
- className={"text-text-secondary dark:text-text-secondary-dark"}/>);
93
+ const title = (<>
94
+ <LabelWithIconAndTooltip
95
+ propertyKey={propertyKey}
96
+ icon={getIconForProperty(property, "small")}
97
+ required={property.validation?.required}
98
+ title={property.name}
99
+ className={"flex flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
100
+ {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
101
+ </>);
84
102
 
85
103
  return (
86
104
 
87
105
  <>
88
106
 
89
- {!tableMode && <ExpandablePanel initiallyExpanded={expanded}
90
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
91
- title={title}>
107
+ {!minimalistView && <ExpandablePanel initiallyExpanded={expanded}
108
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}
109
+ title={title}>
92
110
  {arrayContainer}
93
111
  </ExpandablePanel>}
94
112
 
95
- {tableMode && arrayContainer}
113
+ {minimalistView && arrayContainer}
96
114
 
97
115
  <FieldHelperText includeDescription={includeDescription}
98
116
  showError={showError}
99
- error={error}
117
+ error={error ? (typeof error === "string" ? error : "A property of this array/repeat has an error") : undefined}
100
118
  disabled={disabled}
101
119
  property={property}/>
102
120
 
@@ -3,9 +3,10 @@ import React, { useCallback } from "react";
3
3
  import { EnumType, FieldProps } from "../../types";
4
4
  import { FieldHelperText, LabelWithIcon } from "../components";
5
5
  import { EnumValuesChip } from "../../preview";
6
- import { getIconForProperty } from "../../util";
7
- import { ClearIcon, cn, IconButton, Select, SelectItem } from "@firecms/ui";
6
+ import { getIconForProperty, resolveEnumValues } from "../../util";
7
+ import { CloseIcon, cls, IconButton, Select, SelectItem } from "@firecms/ui";
8
8
  import { useClearRestoreValue } from "../useClearRestoreValue";
9
+ import { PropertyIdCopyTooltip } from "../../components";
9
10
 
10
11
  type SelectProps<T extends EnumType> = FieldProps<T>;
11
12
 
@@ -27,10 +28,11 @@ export function SelectFieldBinding<T extends EnumType>({
27
28
  autoFocus,
28
29
  touched,
29
30
  property,
30
- includeDescription
31
+ includeDescription,
32
+ size = "large"
31
33
  }: SelectProps<T>) {
32
34
 
33
- const enumValues = property.enumValues;
35
+ const enumValues = resolveEnumValues(property.enumValues ?? []);
34
36
 
35
37
  useClearRestoreValue({
36
38
  property,
@@ -48,19 +50,25 @@ export function SelectFieldBinding<T extends EnumType>({
48
50
  <>
49
51
 
50
52
  <Select
51
- value={value ? value.toString() : ""}
53
+ value={value !== undefined && value != null ? value.toString() : ""}
52
54
  disabled={disabled}
55
+ size={size}
56
+ fullWidth={true}
53
57
  position="item-aligned"
54
- inputClassName={cn("w-full")}
55
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
56
- required={property.validation?.required}
57
- title={property.name}
58
- className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}
59
- />}
58
+ inputClassName={cls("w-full")}
59
+ label={
60
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
61
+ <LabelWithIcon
62
+ icon={getIconForProperty(property, "small")}
63
+ required={property.validation?.required}
64
+ title={property.name}
65
+ className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}
66
+ />
67
+ </PropertyIdCopyTooltip>}
60
68
  endAdornment={
61
69
  property.clearable && <IconButton
62
70
  onClick={handleClearClick}>
63
- <ClearIcon/>
71
+ <CloseIcon/>
64
72
  </IconButton>
65
73
  }
66
74
  onValueChange={(updatedValue: string) => {
@@ -73,7 +81,7 @@ export function SelectFieldBinding<T extends EnumType>({
73
81
  return <EnumValuesChip
74
82
  enumKey={enumKey}
75
83
  enumValues={enumValues}
76
- size={"medium"}/>;
84
+ size={size}/>;
77
85
  }}
78
86
  >
79
87
  {enumValues && enumValues.map((option) => {
@@ -83,7 +91,7 @@ export function SelectFieldBinding<T extends EnumType>({
83
91
  <EnumValuesChip
84
92
  enumKey={String(option.id)}
85
93
  enumValues={enumValues}
86
- size={"medium"}/>
94
+ size={size}/>
87
95
  </SelectItem>
88
96
  })}
89
97
  </Select>
@@ -2,36 +2,34 @@ import React, { useCallback } from "react";
2
2
 
3
3
  import {
4
4
  ArrayProperty,
5
- Entity,
6
- EntityCollection,
7
5
  FieldProps,
6
+ PropertyOrBuilder,
8
7
  ResolvedArrayProperty,
9
8
  ResolvedStringProperty,
10
9
  StorageConfig
11
10
  } from "../../types";
12
11
  import { useDropzone } from "react-dropzone";
13
12
  import { PreviewSize } from "../../preview";
14
- import { FieldHelperText, LabelWithIcon } from "../components";
13
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
15
14
 
16
- import { getIconForProperty, isReadOnly } from "../../util";
15
+ import { getIconForProperty, isReadOnly, resolveProperty } from "../../util";
17
16
  import { useSnackbarController, useStorageSource } from "../../hooks";
18
17
  import { DragDropContext, Draggable, Droppable } from "@hello-pangea/dnd";
19
18
  import { StorageFieldItem, useStorageUploadController } from "../../util/useStorageUploadController";
20
19
  import { StorageUploadProgress } from "../components/StorageUploadProgress";
21
20
  import { StorageItemPreview } from "../components/StorageItemPreview";
22
21
  import {
23
- cn,
22
+ cls,
24
23
  fieldBackgroundDisabledMixin,
25
24
  fieldBackgroundHoverMixin,
26
25
  fieldBackgroundMixin,
27
- focusedMixin,
28
26
  Typography
29
27
  } from "@firecms/ui";
30
28
  import { useClearRestoreValue } from "../useClearRestoreValue";
31
29
 
32
30
  const dropZoneClasses = "box-border relative pt-[2px] items-center border border-transparent min-h-[254px] outline-none rounded-md duration-200 ease-[cubic-bezier(0.4,0,0.2,1)] focus:border-primary-solid";
33
31
  const disabledClasses = "border-dotted-gray"
34
- const nonActiveDropClasses = "hover:bg-field-hover dark:hover:bg-field-hover-dark"
32
+ const nonActiveDropClasses = fieldBackgroundHoverMixin
35
33
  const activeDropClasses = "pt-0 border-2 border-solid"
36
34
  const acceptDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-green-500"
37
35
  const rejectDropClasses = "transition-colors duration-200 ease-[cubic-bezier(0,0,0.2,1)] border-2 border-solid border-red-500"
@@ -52,7 +50,7 @@ export function StorageUploadFieldBinding({
52
50
  error,
53
51
  showError,
54
52
  autoFocus,
55
- tableMode,
53
+ minimalistView,
56
54
  property,
57
55
  includeDescription,
58
56
  context,
@@ -81,7 +79,7 @@ export function StorageUploadFieldBinding({
81
79
  propertyKey,
82
80
  value,
83
81
  storageSource,
84
- disabled,
82
+ disabled: disabled ?? false,
85
83
  onChange: setValue
86
84
  });
87
85
 
@@ -91,33 +89,31 @@ export function StorageUploadFieldBinding({
91
89
  setValue
92
90
  });
93
91
 
94
- const entity: Entity<any> = {
95
- id: context.entityId,
96
- values: context.values,
97
- path: context.path
98
- };
92
+ const resolvedProperty = resolveProperty({
93
+ propertyOrBuilder: property as PropertyOrBuilder,
94
+ }) as ResolvedStringProperty | ResolvedArrayProperty<string[]>;
99
95
 
100
96
  return (
101
97
 
102
98
  <>
103
99
 
104
- {!tableMode &&
105
- <LabelWithIcon icon={getIconForProperty(property, "small")}
106
- required={property.validation?.required}
107
- title={property.name}
108
- className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
100
+ {!minimalistView &&
101
+ <LabelWithIconAndTooltip
102
+ propertyKey={propertyKey}
103
+ icon={getIconForProperty(property, "small")}
104
+ required={property.validation?.required}
105
+ title={property.name}
106
+ className={"text-text-secondary dark:text-text-secondary-dark ml-3.5"}/>}
109
107
 
110
108
  <StorageUpload
111
109
  value={internalValue}
112
- collection={context.collection}
113
110
  name={propertyKey}
114
- disabled={disabled}
115
- autoFocus={autoFocus}
116
- property={property}
111
+ disabled={disabled ?? false}
112
+ autoFocus={autoFocus ?? false}
113
+ property={resolvedProperty}
117
114
  onChange={setValue}
118
115
  setInternalValue={setInternalValue}
119
116
  onFilesAdded={onFilesAdded}
120
- entity={entity}
121
117
  onFileUploadComplete={onFileUploadComplete}
122
118
  storagePathBuilder={storagePathBuilder}
123
119
  storage={storage}
@@ -135,7 +131,6 @@ export function StorageUploadFieldBinding({
135
131
 
136
132
  function FileDropComponent({
137
133
  storage,
138
- collection,
139
134
  disabled,
140
135
  isDraggingOver,
141
136
  onFilesAdded,
@@ -144,7 +139,6 @@ function FileDropComponent({
144
139
  autoFocus,
145
140
  internalValue,
146
141
  property,
147
- entity,
148
142
  onClear,
149
143
  metadata,
150
144
  storagePathBuilder,
@@ -154,7 +148,6 @@ function FileDropComponent({
154
148
  helpText
155
149
  }: {
156
150
  storage: StorageConfig,
157
- collection: EntityCollection,
158
151
  disabled: boolean,
159
152
  isDraggingOver: boolean,
160
153
  droppableProvided: any,
@@ -165,7 +158,6 @@ function FileDropComponent({
165
158
  property: ResolvedStringProperty,
166
159
  onClear: (clearedStoragePathOrDownloadUrl: string) => void,
167
160
  metadata: any,
168
- entity: Entity<any>;
169
161
  storagePathBuilder: (file: File) => string,
170
162
  onFileUploadComplete: (uploadedPath: string, entry: StorageFieldItem, fileMetadata?: any) => Promise<void>,
171
163
  size: PreviewSize,
@@ -190,10 +182,18 @@ function FileDropComponent({
190
182
  onDropRejected: (fileRejections, event) => {
191
183
  for (const fileRejection of fileRejections) {
192
184
  for (const error of fileRejection.errors) {
193
- snackbarContext.open({
194
- type: "error",
195
- message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
196
- });
185
+ console.error("Error uploading file: ", error);
186
+ if (error.code === "file-too-large") {
187
+ snackbarContext.open({
188
+ type: "error",
189
+ message: `Error uploading file: File is larger than ${storage.maxSize} bytes`
190
+ });
191
+ } else if (error.code === "file-invalid-type") {
192
+ snackbarContext.open({
193
+ type: "error",
194
+ message: "Error uploading file: File type is not supported"
195
+ });
196
+ }
197
197
  }
198
198
  }
199
199
  }
@@ -203,12 +203,11 @@ function FileDropComponent({
203
203
  return (
204
204
  <div
205
205
  {...getRootProps()}
206
- className={cn(
206
+ className={cls(
207
207
  fieldBackgroundMixin,
208
208
  disabled ? fieldBackgroundDisabledMixin : fieldBackgroundHoverMixin,
209
209
  dropZoneClasses,
210
210
  multipleFilesSupported && internalValue.length ? "" : "flex",
211
- focusedMixin,
212
211
  {
213
212
  [nonActiveDropClasses]: !isDragActive,
214
213
  [activeDropClasses]: isDragActive,
@@ -220,7 +219,7 @@ function FileDropComponent({
220
219
  <div
221
220
  {...droppableProvided.droppableProps}
222
221
  ref={droppableProvided.innerRef}
223
- className={cn("flex items-center p-1 no-scrollbar",
222
+ className={cls("flex items-center p-1 no-scrollbar",
224
223
  multipleFilesSupported && internalValue.length ? "overflow-auto" : "",
225
224
  multipleFilesSupported && internalValue.length ? "min-h-[180px]" : "min-h-[250px]"
226
225
  )}
@@ -235,11 +234,9 @@ function FileDropComponent({
235
234
  if (entry.storagePathOrDownloadUrl) {
236
235
  child = (
237
236
  <StorageItemPreview
238
- collection={collection}
239
237
  name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
240
238
  property={property}
241
239
  disabled={disabled}
242
- entity={entity}
243
240
  value={entry.storagePathOrDownloadUrl}
244
241
  onRemove={onClear}
245
242
  size={entry.size}/>
@@ -268,7 +265,7 @@ function FileDropComponent({
268
265
  ref={provided.innerRef}
269
266
  {...provided.draggableProps}
270
267
  {...provided.dragHandleProps}
271
- className={cn(focusedMixin, "rounded-md")}
268
+ className={cls("rounded-md")}
272
269
  style={{
273
270
  ...provided.draggableProps.style
274
271
  }}
@@ -299,7 +296,6 @@ function FileDropComponent({
299
296
 
300
297
  export interface StorageUploadProps {
301
298
  value: StorageFieldItem[];
302
- collection: EntityCollection;
303
299
  setInternalValue: (v: StorageFieldItem[]) => void;
304
300
  name: string;
305
301
  property: ResolvedStringProperty | ResolvedArrayProperty<string[]>;
@@ -307,7 +303,6 @@ export interface StorageUploadProps {
307
303
  multipleFilesSupported: boolean;
308
304
  autoFocus: boolean;
309
305
  disabled: boolean;
310
- entity: Entity<any>;
311
306
  storage: StorageConfig;
312
307
  onFilesAdded: (acceptedFiles: File[]) => void;
313
308
  storagePathBuilder: (file: File) => string;
@@ -315,7 +310,6 @@ export interface StorageUploadProps {
315
310
  }
316
311
 
317
312
  export function StorageUpload({
318
- collection,
319
313
  property,
320
314
  name,
321
315
  value,
@@ -327,7 +321,6 @@ export function StorageUpload({
327
321
  onFilesAdded,
328
322
  autoFocus,
329
323
  storage,
330
- entity,
331
324
  storagePathBuilder,
332
325
  }: StorageUploadProps) {
333
326
 
@@ -346,7 +339,7 @@ export function StorageUpload({
346
339
  }
347
340
 
348
341
  const metadata: Record<string, unknown> | undefined = storage?.metadata;
349
- const size = multipleFilesSupported ? "small" : "medium";
342
+ const size = multipleFilesSupported ? "medium" : "large";
350
343
 
351
344
  const moveItem = useCallback((fromIndex: number, toIndex: number) => {
352
345
  if (!multipleFilesSupported) return;
@@ -408,11 +401,10 @@ export function StorageUpload({
408
401
  className="rounded"
409
402
  >
410
403
  <StorageItemPreview
411
- collection={collection}
412
404
  name={`storage_preview_${entry.storagePathOrDownloadUrl}`}
405
+ placeholder={true}
413
406
  property={renderProperty}
414
407
  disabled={true}
415
- entity={entity}
416
408
  value={entry.storagePathOrDownloadUrl as string}
417
409
  onRemove={onClear}
418
410
  size={entry.size}/>
@@ -422,7 +414,6 @@ export function StorageUpload({
422
414
  >
423
415
  {(provided, snapshot) => {
424
416
  return <FileDropComponent storage={storage}
425
- collection={collection}
426
417
  disabled={disabled}
427
418
  isDraggingOver={snapshot.isDraggingOver}
428
419
  droppableProvided={provided}
@@ -431,7 +422,6 @@ export function StorageUpload({
431
422
  autoFocus={autoFocus}
432
423
  internalValue={value}
433
424
  property={renderProperty}
434
- entity={entity}
435
425
  onClear={onClear}
436
426
  metadata={metadata}
437
427
  storagePathBuilder={storagePathBuilder}
@@ -5,6 +5,7 @@ import { getIconForProperty } from "../../util";
5
5
  import { FieldHelperText, LabelWithIcon } from "../components";
6
6
  import { BooleanSwitchWithLabel } from "@firecms/ui";
7
7
  import { useClearRestoreValue } from "../useClearRestoreValue";
8
+ import { PropertyIdCopyTooltip } from "../../components";
8
9
 
9
10
  type SwitchFieldProps = FieldProps<boolean>;
10
11
 
@@ -15,18 +16,18 @@ type SwitchFieldProps = FieldProps<boolean>;
15
16
  * and tables to the specified properties.
16
17
  * @group Form fields
17
18
  */
18
- export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
19
- propertyKey,
20
- value,
21
- setValue,
22
- error,
23
- showError,
24
- autoFocus,
25
- disabled,
26
- touched,
27
- property,
28
- includeDescription
29
- }: SwitchFieldProps, ref) {
19
+ export const SwitchFieldBinding = function SwitchFieldBinding({
20
+ propertyKey,
21
+ value,
22
+ setValue,
23
+ error,
24
+ showError,
25
+ autoFocus,
26
+ disabled,
27
+ size = "large",
28
+ property,
29
+ includeDescription
30
+ }: SwitchFieldProps) {
30
31
 
31
32
  useClearRestoreValue({
32
33
  property,
@@ -37,17 +38,20 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
37
38
  return (
38
39
  <>
39
40
 
40
- <BooleanSwitchWithLabel
41
- value={value}
42
- onValueChange={(v) => setValue(v)}
43
- error={showError}
44
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
45
- required={property.validation?.required}
46
- title={property.name}/>}
47
- disabled={disabled}
48
- autoFocus={autoFocus}
49
- size={"medium"}
50
- />
41
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
42
+ <BooleanSwitchWithLabel
43
+ value={value}
44
+ onValueChange={(v) => setValue(v)}
45
+ error={showError}
46
+ label={<LabelWithIcon
47
+ icon={getIconForProperty(property, "small")}
48
+ required={property.validation?.required}
49
+ title={property.name}/>}
50
+ disabled={disabled}
51
+ autoFocus={autoFocus}
52
+ size={size}
53
+ />
54
+ </PropertyIdCopyTooltip>
51
55
 
52
56
  <FieldHelperText includeDescription={includeDescription}
53
57
  showError={showError}
@@ -57,4 +61,4 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
57
61
  </>
58
62
 
59
63
  );
60
- });
64
+ };
@@ -1,11 +1,12 @@
1
1
  import React, { useCallback } from "react";
2
2
 
3
- import { ClearIcon, Collapse, IconButton, TextField } from "@firecms/ui";
3
+ import { CloseIcon, Collapse, IconButton, TextField } from "@firecms/ui";
4
4
  import { FieldProps, PreviewType } from "../../types";
5
5
  import { FieldHelperText, LabelWithIcon } from "../components";
6
6
  import { getIconForProperty } from "../../util";
7
7
  import { PropertyPreview } from "../../preview";
8
8
  import { useClearRestoreValue } from "../useClearRestoreValue";
9
+ import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
9
10
 
10
11
  interface TextFieldBindingProps<T extends string | number> extends FieldProps<T> {
11
12
  allowInfinity?: boolean
@@ -18,7 +19,6 @@ interface TextFieldBindingProps<T extends string | number> extends FieldProps<T>
18
19
  * @group Form fields
19
20
  */
20
21
  export function TextFieldBinding<T extends string | number>({
21
- context,
22
22
  propertyKey,
23
23
  value,
24
24
  setValue,
@@ -28,6 +28,7 @@ export function TextFieldBinding<T extends string | number>({
28
28
  autoFocus,
29
29
  property,
30
30
  includeDescription,
31
+ size = "large"
31
32
  }: TextFieldBindingProps<T>) {
32
33
 
33
34
  let multiline: boolean | undefined;
@@ -67,27 +68,29 @@ export function TextFieldBinding<T extends string | number>({
67
68
  const isMultiline = Boolean(multiline);
68
69
 
69
70
  const inputType = property.dataType === "number" ? "number" : undefined;
70
- return (
71
- <>
72
- <TextField
73
- value={value}
74
- onChange={onChange}
75
- autoFocus={autoFocus}
76
- label={<LabelWithIcon icon={getIconForProperty(property, "small")}
77
- required={property.validation?.required}
78
- title={property.name}/>}
79
- type={inputType}
80
- multiline={isMultiline}
81
- disabled={disabled}
82
- endAdornment={
83
- property.clearable && <IconButton
84
- onClick={handleClearClick}>
85
- <ClearIcon/>
86
- </IconButton>
87
- }
88
- error={showError ? error : undefined}
89
- inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
90
-
71
+ return (<>
72
+ <PropertyIdCopyTooltip propertyKey={propertyKey}>
73
+ <TextField
74
+ size={size}
75
+ value={value}
76
+ onChange={onChange}
77
+ autoFocus={autoFocus}
78
+ label={<LabelWithIcon
79
+ icon={getIconForProperty(property, "small")}
80
+ required={property.validation?.required}
81
+ title={property.name}/>}
82
+ type={inputType}
83
+ multiline={isMultiline}
84
+ disabled={disabled}
85
+ endAdornment={
86
+ property.clearable && <IconButton
87
+ onClick={handleClearClick}>
88
+ <CloseIcon/>
89
+ </IconButton>
90
+ }
91
+ error={showError ? error : undefined}
92
+ inputClassName={error ? "text-red-500 dark:text-red-600" : ""}/>
93
+ </PropertyIdCopyTooltip>
91
94
  <FieldHelperText includeDescription={includeDescription}
92
95
  showError={showError}
93
96
  error={error}
@@ -100,7 +103,7 @@ export function TextFieldBinding<T extends string | number>({
100
103
  <PropertyPreview
101
104
  value={value}
102
105
  property={property}
103
- size={"medium"}/>
106
+ size={size}/>
104
107
  </Collapse>}
105
108
 
106
109
  </>