@firecms/core 3.0.0-canary.2 → 3.0.0-canary.200

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