@firecms/core 3.0.0-alpha.84 → 3.0.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/README.md +6 -7
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +3 -4
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -18
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +7 -13
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/index.d.ts +2 -4
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +3 -3
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  24. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +26 -7
  26. package/dist/components/EntityView.d.ts +11 -0
  27. package/dist/components/ErrorView.d.ts +1 -1
  28. package/dist/components/FieldCaption.d.ts +5 -0
  29. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  30. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  31. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  32. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  33. package/dist/components/HomePage/index.d.ts +3 -1
  34. package/dist/components/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
  35. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  36. package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
  37. package/dist/components/ReferenceWidget.d.ts +6 -4
  38. package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
  39. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  40. package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
  41. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  42. package/dist/components/VirtualTable/types.d.ts +3 -3
  43. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  44. package/dist/components/common/index.d.ts +6 -0
  45. package/dist/components/common/table_height.d.ts +5 -0
  46. package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
  47. package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
  48. package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +4 -1
  49. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  50. package/dist/components/index.d.ts +14 -8
  51. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  52. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  53. package/dist/core/DefaultDrawer.d.ts +19 -0
  54. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  55. package/dist/core/EntityEditView.d.ts +36 -0
  56. package/dist/core/FireCMS.d.ts +1 -1
  57. package/dist/core/NavigationRoutes.d.ts +3 -3
  58. package/dist/core/index.d.ts +3 -6
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/CustomIdField.d.ts +2 -1
  61. package/dist/form/components/ErrorFocus.d.ts +1 -1
  62. package/dist/form/components/FieldHelperText.d.ts +3 -3
  63. package/dist/form/components/FormikArrayContainer.d.ts +2 -1
  64. package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
  65. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  66. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  67. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  68. package/dist/form/components/index.d.ts +2 -1
  69. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  74. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  75. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  76. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  77. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  80. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  81. package/dist/form/index.d.ts +4 -5
  82. package/dist/form/useClearRestoreValue.d.ts +2 -2
  83. package/dist/form/validation.d.ts +1 -1
  84. package/dist/hooks/data/delete.d.ts +2 -2
  85. package/dist/hooks/data/save.d.ts +2 -3
  86. package/dist/hooks/data/useDataSource.d.ts +2 -2
  87. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  88. package/dist/hooks/index.d.ts +5 -1
  89. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  90. package/dist/hooks/useBuildNavigationController.d.ts +23 -0
  91. package/dist/hooks/useProjectLog.d.ts +14 -0
  92. package/dist/hooks/useSnackbarController.d.ts +1 -0
  93. package/dist/hooks/useStorageSource.d.ts +2 -2
  94. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  95. package/dist/index.d.ts +1 -0
  96. package/dist/index.es.js +16297 -12643
  97. package/dist/index.es.js.map +1 -1
  98. package/dist/index.umd.js +20043 -587
  99. package/dist/index.umd.js.map +1 -1
  100. package/dist/internal/useBuildDataSource.d.ts +1 -12
  101. package/dist/preview/PropertyPreview.d.ts +1 -1
  102. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  103. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  104. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  105. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  106. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  107. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  108. package/dist/types/analytics.d.ts +1 -1
  109. package/dist/types/auth.d.ts +38 -2
  110. package/dist/types/collections.d.ts +56 -9
  111. package/dist/types/datasource.d.ts +59 -39
  112. package/dist/types/entities.d.ts +7 -1
  113. package/dist/types/entity_actions.d.ts +14 -0
  114. package/dist/types/entity_callbacks.d.ts +3 -3
  115. package/dist/types/entity_overrides.d.ts +6 -0
  116. package/dist/types/fields.d.ts +47 -42
  117. package/dist/types/firecms.d.ts +8 -23
  118. package/dist/types/index.d.ts +2 -1
  119. package/dist/types/navigation.d.ts +18 -16
  120. package/dist/types/permissions.d.ts +5 -1
  121. package/dist/types/plugins.d.ts +31 -31
  122. package/dist/types/properties.d.ts +36 -23
  123. package/dist/types/property_config.d.ts +2 -2
  124. package/dist/types/roles.d.ts +31 -0
  125. package/dist/types/side_dialogs_controller.d.ts +10 -0
  126. package/dist/types/storage.d.ts +86 -3
  127. package/dist/types/user.d.ts +5 -0
  128. package/dist/util/collections.d.ts +9 -1
  129. package/dist/util/entities.d.ts +2 -2
  130. package/dist/util/icon_list.d.ts +5 -1
  131. package/dist/util/icon_synonyms.d.ts +1 -97
  132. package/dist/util/icons.d.ts +10 -3
  133. package/dist/util/index.d.ts +3 -1
  134. package/dist/util/navigation_utils.d.ts +2 -2
  135. package/dist/util/objects.d.ts +1 -1
  136. package/dist/util/permissions.d.ts +4 -4
  137. package/dist/util/plurals.d.ts +0 -2
  138. package/dist/util/property_utils.d.ts +1 -1
  139. package/dist/util/references.d.ts +4 -2
  140. package/dist/util/resolutions.d.ts +28 -14
  141. package/dist/util/storage.d.ts +23 -2
  142. package/dist/util/strings.d.ts +1 -1
  143. package/dist/util/useDebouncedCallback.d.ts +1 -0
  144. package/dist/util/useStorageUploadController.d.ts +3 -3
  145. package/dist/util/useTraceUpdate.d.ts +1 -0
  146. package/package.json +129 -112
  147. package/src/app/AppBar.tsx +18 -0
  148. package/src/app/Drawer.tsx +24 -0
  149. package/src/app/Scaffold.tsx +243 -0
  150. package/src/app/index.ts +4 -0
  151. package/src/app/useApp.tsx +32 -0
  152. package/src/components/ArrayContainer.tsx +45 -75
  153. package/src/components/CircularProgressCenter.tsx +1 -1
  154. package/src/components/ClearFilterSortButton.tsx +41 -0
  155. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +1 -1
  156. package/src/components/DeleteEntityDialog.tsx +4 -4
  157. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +47 -58
  158. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +253 -448
  159. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +11 -12
  160. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +54 -48
  161. package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
  162. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -32
  163. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
  164. package/src/components/EntityCollectionTable/index.tsx +1 -9
  165. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
  166. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +32 -30
  167. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +19 -7
  168. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +145 -142
  169. package/src/components/EntityCollectionView/EntityCollectionView.tsx +184 -171
  170. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  171. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  172. package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
  173. package/src/components/EntityCollectionView/utils.ts +19 -0
  174. package/src/components/EntityPreview.tsx +208 -71
  175. package/src/components/EntityView.tsx +84 -0
  176. package/src/components/ErrorView.tsx +1 -1
  177. package/src/components/FieldCaption.tsx +14 -0
  178. package/src/components/HomePage/DefaultHomePage.tsx +38 -28
  179. package/src/components/HomePage/NavigationCard.tsx +69 -0
  180. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  181. package/src/components/HomePage/NavigationGroup.tsx +1 -1
  182. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  183. package/src/components/HomePage/index.tsx +3 -1
  184. package/src/components/PropertyConfigBadge.tsx +23 -0
  185. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  186. package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +37 -23
  187. package/src/components/ReferenceWidget.tsx +26 -16
  188. package/src/components/SearchIconsView.tsx +10 -7
  189. package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
  190. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  191. package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
  192. package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +22 -7
  193. package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +38 -24
  194. package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +88 -22
  195. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  196. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  197. package/src/components/VirtualTable/VirtualTableHeader.tsx +14 -8
  198. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  199. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  200. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  201. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +4 -4
  202. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
  203. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
  204. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +14 -28
  205. package/src/components/VirtualTable/types.tsx +2 -3
  206. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
  207. package/src/components/common/index.ts +6 -0
  208. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  209. package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
  210. package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
  211. package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +25 -14
  212. package/src/components/common/useTableSearchHelper.ts +88 -0
  213. package/src/components/index.tsx +15 -8
  214. package/src/contexts/AuthControllerContext.tsx +1 -1
  215. package/src/contexts/DialogsProvider.tsx +2 -2
  216. package/src/core/DefaultAppBar.tsx +176 -0
  217. package/src/core/DefaultDrawer.tsx +183 -0
  218. package/src/core/DrawerNavigationItem.tsx +66 -0
  219. package/src/core/EntityEditView.tsx +1127 -0
  220. package/src/core/EntitySidePanel.tsx +9 -8
  221. package/src/core/FireCMS.tsx +67 -59
  222. package/src/core/NavigationRoutes.tsx +25 -17
  223. package/src/core/SideDialogs.tsx +1 -0
  224. package/src/core/field_configs.tsx +18 -19
  225. package/src/core/index.tsx +3 -6
  226. package/src/form/PropertyFieldBinding.tsx +60 -33
  227. package/src/form/components/CustomIdField.tsx +51 -36
  228. package/src/form/components/ErrorFocus.tsx +3 -3
  229. package/src/form/components/FieldHelperText.tsx +4 -4
  230. package/src/form/components/FormikArrayContainer.tsx +4 -1
  231. package/src/form/components/LabelWithIcon.tsx +41 -0
  232. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  233. package/src/form/components/StorageItemPreview.tsx +22 -10
  234. package/src/form/components/StorageUploadProgress.tsx +8 -8
  235. package/src/form/components/index.tsx +2 -1
  236. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +28 -18
  237. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +37 -37
  238. package/src/form/field_bindings/BlockFieldBinding.tsx +29 -27
  239. package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
  240. package/src/form/field_bindings/KeyValueFieldBinding.tsx +66 -60
  241. package/src/form/field_bindings/MapFieldBinding.tsx +35 -33
  242. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  243. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  244. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
  245. package/src/form/field_bindings/ReferenceFieldBinding.tsx +45 -33
  246. package/src/form/field_bindings/RepeatFieldBinding.tsx +36 -21
  247. package/src/form/field_bindings/SelectFieldBinding.tsx +22 -16
  248. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +41 -42
  249. package/src/form/field_bindings/SwitchFieldBinding.tsx +11 -8
  250. package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
  251. package/src/form/index.tsx +5 -9
  252. package/src/form/useClearRestoreValue.tsx +2 -2
  253. package/src/form/validation.ts +4 -21
  254. package/src/hooks/data/delete.ts +5 -4
  255. package/src/hooks/data/save.ts +7 -2
  256. package/src/hooks/data/useCollectionFetch.tsx +1 -1
  257. package/src/hooks/data/useDataSource.tsx +15 -2
  258. package/src/hooks/data/useEntityFetch.tsx +4 -4
  259. package/src/hooks/index.tsx +7 -1
  260. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  261. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  262. package/src/{internal → hooks}/useBuildNavigationController.tsx +244 -99
  263. package/src/hooks/useFireCMSContext.tsx +51 -3
  264. package/src/hooks/useLargeLayout.tsx +10 -7
  265. package/src/hooks/useProjectLog.tsx +63 -0
  266. package/src/hooks/useReferenceDialog.tsx +3 -3
  267. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  268. package/src/hooks/useSnackbarController.tsx +1 -2
  269. package/src/hooks/useStorageSource.tsx +7 -2
  270. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  271. package/src/index.ts +1 -0
  272. package/src/internal/useBuildDataSource.ts +79 -84
  273. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  274. package/src/internal/useBuildSideEntityController.tsx +103 -23
  275. package/src/internal/useUnsavedChangesDialog.tsx +3 -1
  276. package/src/preview/PropertyPreview.tsx +12 -19
  277. package/src/preview/PropertyPreviewProps.tsx +6 -10
  278. package/src/preview/components/BooleanPreview.tsx +19 -4
  279. package/src/preview/components/EnumValuesChip.tsx +2 -2
  280. package/src/preview/components/ImagePreview.tsx +24 -34
  281. package/src/preview/components/ReferencePreview.tsx +73 -176
  282. package/src/preview/components/StorageThumbnail.tsx +5 -1
  283. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  284. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +1 -2
  285. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +3 -2
  286. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +1 -2
  287. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  288. package/src/preview/property_previews/ArrayOneOfPreview.tsx +3 -4
  289. package/src/preview/property_previews/ArrayPropertyPreview.tsx +3 -4
  290. package/src/preview/property_previews/MapPropertyPreview.tsx +6 -6
  291. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +2 -2
  292. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  293. package/src/preview/util.ts +2 -2
  294. package/src/types/analytics.ts +1 -0
  295. package/src/types/auth.tsx +51 -2
  296. package/src/types/collections.ts +65 -9
  297. package/src/types/customization_controller.tsx +0 -1
  298. package/src/types/datasource.ts +69 -47
  299. package/src/types/entities.ts +15 -1
  300. package/src/types/entity_actions.tsx +17 -0
  301. package/src/types/entity_callbacks.ts +4 -3
  302. package/src/types/entity_overrides.tsx +7 -0
  303. package/src/types/fields.tsx +51 -45
  304. package/src/types/firecms.tsx +9 -26
  305. package/src/types/index.ts +2 -1
  306. package/src/types/navigation.ts +20 -19
  307. package/src/types/permissions.ts +6 -1
  308. package/src/types/plugins.tsx +38 -40
  309. package/src/types/properties.ts +42 -24
  310. package/src/types/property_config.tsx +2 -2
  311. package/src/types/roles.ts +41 -0
  312. package/src/types/side_dialogs_controller.tsx +13 -0
  313. package/src/types/side_entity_controller.tsx +1 -0
  314. package/src/types/storage.ts +94 -3
  315. package/src/types/user.ts +7 -0
  316. package/src/util/collections.ts +22 -0
  317. package/src/util/entities.ts +6 -5
  318. package/src/util/enums.ts +1 -1
  319. package/src/util/icon_list.ts +15 -10
  320. package/src/util/icon_synonyms.ts +3 -99
  321. package/src/util/icons.tsx +18 -4
  322. package/src/util/index.ts +3 -1
  323. package/src/util/make_properties_editable.ts +13 -5
  324. package/src/util/navigation_utils.ts +6 -6
  325. package/src/util/objects.ts +25 -28
  326. package/src/util/permissions.ts +12 -8
  327. package/src/util/plurals.ts +0 -2
  328. package/src/util/property_utils.tsx +1 -1
  329. package/src/util/references.ts +39 -5
  330. package/src/util/resolutions.ts +75 -42
  331. package/src/util/storage.ts +79 -21
  332. package/src/util/strings.ts +4 -3
  333. package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
  334. package/src/util/useStorageUploadController.tsx +33 -7
  335. package/src/util/useTraceUpdate.tsx +2 -1
  336. package/dist/components/VirtualTable/common.d.ts +0 -2
  337. package/dist/core/Drawer.d.ts +0 -23
  338. package/dist/core/Scaffold.d.ts +0 -52
  339. package/dist/form/EntityForm.d.ts +0 -75
  340. package/dist/form/components/SubmitListener.d.ts +0 -1
  341. package/dist/form/components/SwitchControl.d.ts +0 -8
  342. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  343. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  344. package/dist/internal/EntityView.d.ts +0 -22
  345. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  346. package/dist/internal/useBuildNavigationController.d.ts +0 -14
  347. package/dist/internal/useLocaleConfig.d.ts +0 -1
  348. package/dist/types/appcheck.d.ts +0 -26
  349. package/dist/util/useDebounce.d.ts +0 -1
  350. package/src/components/FieldConfigBadge.tsx +0 -17
  351. package/src/components/FireCMSAppBar.tsx +0 -157
  352. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  353. package/src/components/LabelWithIcon.tsx +0 -33
  354. package/src/core/Drawer.tsx +0 -162
  355. package/src/core/Scaffold.tsx +0 -278
  356. package/src/form/EntityForm.tsx +0 -657
  357. package/src/form/components/SubmitListener.tsx +0 -32
  358. package/src/form/components/SwitchControl.tsx +0 -39
  359. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  360. package/src/hooks/useVerifyLicense.tsx +0 -1
  361. package/src/internal/EntityView.tsx +0 -578
  362. package/src/internal/useBuildCustomizationController.tsx +0 -5
  363. package/src/internal/useLocaleConfig.tsx +0 -18
  364. package/src/types/appcheck.ts +0 -29
  365. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
  366. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
  367. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
  368. /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
  369. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  370. /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
@@ -3,32 +3,40 @@ import React, { useEffect } from "react";
3
3
  import {
4
4
  Button,
5
5
  CircularProgress,
6
- cn,
6
+ cls,
7
7
  defaultBorderMixin,
8
8
  FilterListOffIcon,
9
9
  SearchBar,
10
10
  Select,
11
- SelectItem
11
+ SelectItem,
12
+ Tooltip
12
13
  } from "@firecms/ui";
13
14
  import { CollectionSize } from "../../../types";
14
15
  import { useLargeLayout } from "../../../hooks";
15
16
 
16
17
  interface CollectionTableToolbarProps {
17
18
  size: CollectionSize;
18
- filterIsSet: boolean;
19
19
  loading: boolean;
20
- forceFilter?: boolean;
21
20
  actionsStart?: React.ReactNode;
22
21
  actions?: React.ReactNode;
23
22
  title?: React.ReactNode,
24
23
  onTextSearchClick?: () => void;
25
24
  onTextSearch?: (searchString?: string) => void;
26
25
  onSizeChanged: (size: CollectionSize) => void;
27
- clearFilter?: () => void;
28
26
  textSearchLoading?: boolean;
29
27
  }
30
28
 
31
- export function CollectionTableToolbar(props: CollectionTableToolbarProps) {
29
+ export function CollectionTableToolbar({
30
+ actions,
31
+ actionsStart,
32
+ loading,
33
+ onSizeChanged,
34
+ onTextSearch,
35
+ onTextSearchClick,
36
+ size,
37
+ textSearchLoading,
38
+ title
39
+ }: CollectionTableToolbarProps) {
32
40
 
33
41
  const searchInputRef = React.useRef<HTMLInputElement>(null);
34
42
  const largeLayout = useLargeLayout();
@@ -36,75 +44,65 @@ export function CollectionTableToolbar(props: CollectionTableToolbarProps) {
36
44
  const searchLoading = React.useRef<boolean>(false);
37
45
 
38
46
  useEffect(() => {
39
- if (searchInputRef.current && searchLoading.current && !props.textSearchLoading) {
47
+ if (searchInputRef.current && searchLoading.current && !textSearchLoading) {
40
48
  searchInputRef.current.focus();
41
49
  }
42
- searchLoading.current = props.textSearchLoading ?? false;
43
- }, [props.textSearchLoading]);
44
-
45
- const clearFilterButton = !props.forceFilter && props.filterIsSet && props.clearFilter &&
46
- <Button
47
- variant={"outlined"}
48
- className="h-fit-content"
49
- aria-label="filter clear"
50
- onClick={props.clearFilter}
51
- size="small">
52
- <FilterListOffIcon/>
53
- Clear filter
54
- </Button>;
50
+ searchLoading.current = textSearchLoading ?? false;
51
+ }, [textSearchLoading]);
52
+
55
53
 
56
54
  const sizeSelect = (
57
- <Select
58
- value={props.size as string}
59
- className="w-16 h-10"
60
- size={"small"}
61
- onValueChange={(v) => props.onSizeChanged(v as CollectionSize)}
62
- renderValue={(v) => <div className={"font-medium"}>{v.toUpperCase()}</div>}
63
- >
64
- {["xs", "s", "m", "l", "xl"].map((size) => (
65
- <SelectItem key={size} value={size} className={"w-12 font-medium text-center"}>
66
- {size.toUpperCase()}
67
- </SelectItem>
68
- ))}
69
- </Select>
55
+ <Tooltip title={"Table row size"} side={"right"} sideOffset={4}>
56
+ <Select
57
+ value={size as string}
58
+ className="w-16 h-10"
59
+ size={"small"}
60
+ onValueChange={(v) => onSizeChanged(v as CollectionSize)}
61
+ renderValue={(v) => <div className={"font-medium"}>{v.toUpperCase()}</div>}
62
+ >
63
+ {["xs", "s", "m", "l", "xl"].map((size) => (
64
+ <SelectItem key={size} value={size} className={"w-12 font-medium text-center"}>
65
+ {size.toUpperCase()}
66
+ </SelectItem>
67
+ ))}
68
+ </Select>
69
+ </Tooltip>
70
70
  );
71
71
 
72
72
  return (
73
73
  <div
74
- className={cn(defaultBorderMixin, "no-scrollbar min-h-[56px] overflow-x-auto px-2 md:px-4 bg-gray-50 dark:bg-gray-900 border-b flex flex-row justify-between items-center w-full")}>
74
+ className={cls(defaultBorderMixin, "no-scrollbar min-h-[56px] overflow-x-auto px-2 md:px-4 bg-gray-50 dark:bg-gray-900 border-b flex flex-row justify-between items-center w-full")}>
75
75
 
76
76
  <div className="flex items-center gap-2 md:mr-4 mr-2">
77
77
 
78
- {props.title && <div className={"hidden lg:block"}>
79
- {props.title}
78
+ {title && <div className={"hidden lg:block"}>
79
+ {title}
80
80
  </div>}
81
81
 
82
82
  {sizeSelect}
83
83
 
84
- {props.actionsStart}
85
-
86
- {clearFilterButton}
84
+ {actionsStart}
87
85
 
88
86
  </div>
89
87
 
90
88
  <div className="flex items-center gap-2">
91
89
 
92
90
  {largeLayout && <div className="w-[22px]">
93
- {props.loading &&
91
+ {loading &&
94
92
  <CircularProgress size={"small"}/>}
95
93
  </div>}
96
94
 
97
- {(props.onTextSearch || props.onTextSearchClick) &&
95
+ {(onTextSearch || onTextSearchClick) &&
98
96
  <SearchBar
99
97
  key={"search-bar"}
100
98
  inputRef={searchInputRef}
101
- loading={props.textSearchLoading}
102
- disabled={Boolean(props.onTextSearchClick)}
103
- onClick={props.onTextSearchClick}
104
- onTextSearch={props.onTextSearchClick ? undefined : props.onTextSearch}
99
+ loading={textSearchLoading}
100
+ disabled={Boolean(onTextSearchClick)}
101
+ onClick={onTextSearchClick}
102
+ onTextSearch={onTextSearchClick ? undefined : onTextSearch}
105
103
  expandable={true}/>}
106
104
 
107
- {props.actions}
105
+ {actions}
108
106
 
109
107
  </div>
110
108
 
@@ -2,10 +2,9 @@ import React, { useCallback, useEffect, useMemo, useRef, useState } from "react"
2
2
 
3
3
  import useMeasure from "react-use-measure";
4
4
 
5
- import { VirtualTableSize } from "../../VirtualTable";
6
- import { getRowHeight } from "../../VirtualTable/common";
7
- import { cn, RemoveCircleIcon, Tooltip } from "@firecms/ui";
5
+ import { cls, RemoveCircleIcon, Tooltip } from "@firecms/ui";
8
6
  import { ErrorBoundary } from "../../../components";
7
+ import { getRowHeight, TableSize } from "../../common/table_height";
9
8
 
10
9
  interface EntityTableCellProps {
11
10
  children: React.ReactNode;
@@ -19,7 +18,7 @@ interface EntityTableCellProps {
19
18
  error?: Error;
20
19
  allowScroll?: boolean;
21
20
  align: "right" | "left" | "center";
22
- size: VirtualTableSize;
21
+ size: TableSize;
23
22
  disabledTooltip?: string;
24
23
  width: number;
25
24
  showExpandIcon?: boolean;
@@ -46,22 +45,21 @@ const TableCellInner = ({
46
45
  children
47
46
  }: TableCellInnerProps) => {
48
47
  return (
49
- <div
50
- className={cn("flex flex-col max-h-full w-full",
51
- {
52
- "items-start": faded || scrollable
53
- })}
54
- style={{
55
- justifyContent,
56
- height: fullHeight ? "100%" : undefined,
57
- overflow: scrollable ? "auto" : undefined,
58
- WebkitMaskImage: faded
59
- ? "linear-gradient(to bottom, black 60%, transparent 100%)"
60
- : undefined,
61
- maskImage: faded
62
- ? "linear-gradient(to bottom, black 60%, transparent 100%)"
63
- : undefined
64
- }}
48
+ <div className={cls("flex flex-col max-h-full w-full",
49
+ {
50
+ "items-start": faded || scrollable
51
+ })}
52
+ style={{
53
+ justifyContent,
54
+ height: fullHeight ? "100%" : undefined,
55
+ overflow: scrollable ? "auto" : undefined,
56
+ WebkitMaskImage: faded
57
+ ? "linear-gradient(to bottom, black 60%, transparent 100%)"
58
+ : undefined,
59
+ maskImage: faded
60
+ ? "linear-gradient(to bottom, black 60%, transparent 100%)"
61
+ : undefined
62
+ }}
65
63
  >
66
64
  {children}
67
65
  </div>
@@ -96,7 +94,7 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
96
94
  const [onHover, setOnHover] = useState(false);
97
95
  const [internalSaved, setInternalSaved] = useState(saved);
98
96
 
99
- const showError = !disabled && error;
97
+ const showError = !disabled && Boolean(error);
100
98
 
101
99
  useEffect(() => {
102
100
  if (saved) {
@@ -157,8 +155,9 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
157
155
  }, [ref, onSelect, selected, disabled]);
158
156
 
159
157
  const onFocus = useCallback((event: React.SyntheticEvent<HTMLDivElement>) => {
160
- onSelectCallback();
161
158
  event.stopPropagation();
159
+ event.preventDefault();
160
+ onSelectCallback();
162
161
  }, [onSelectCallback]);
163
162
 
164
163
  const isOverflowing = useMemo(() => {
@@ -176,21 +175,26 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
176
175
  const setOnHoverTrue = useCallback(() => setOnHover(true), []);
177
176
  const setOnHoverFalse = useCallback(() => setOnHover(false), []);
178
177
 
178
+ const borderClass = showError
179
+ ? "border-red-500"
180
+ : internalSaved
181
+ ? "border-green-500"
182
+ : isSelected
183
+ ? "border-primary"
184
+ : "border-transparent";
185
+
179
186
  return (
180
187
  <div
181
- ref={ref}
182
- className={cn(
188
+ className={cls(
183
189
  "transition-colors duration-100 ease-in-out",
184
190
  `flex relative h-full rounded-md p-${p} border border-4 border-opacity-75`,
185
191
  onHover && !disabled ? "bg-gray-50 dark:bg-gray-900" : "",
186
192
  saved ? "bg-gray-100 bg-opacity-75 dark:bg-gray-800 dark:bg-opacity-75" : "",
187
- !isSelected && !internalSaved && !showError ? "border-transparent" : "",
188
193
  hideOverflow ? "overflow-hidden" : "",
189
194
  isSelected ? "bg-gray-50 dark:bg-gray-900" : "",
190
- isSelected && !internalSaved ? "border-primary" : "",
191
- internalSaved ? "border-green-500 " : "",
192
- showError ? "border-red-500" : ""
195
+ borderClass
193
196
  )}
197
+ ref={ref}
194
198
  style={{
195
199
  justifyContent,
196
200
  alignItems: disabled || !isOverflowing ? "center" : undefined,
@@ -199,11 +203,9 @@ export const EntityTableCell = React.memo<EntityTableCellProps>(
199
203
  }}
200
204
  tabIndex={selected || disabled ? undefined : 0}
201
205
  onFocus={onFocus}
202
- // onClick={onClick}
203
206
  onMouseEnter={setOnHoverTrue}
204
207
  onMouseMove={setOnHoverTrue}
205
208
  onMouseLeave={setOnHoverFalse}
206
- // contain={scrollable ? "content" : "size"}
207
209
  >
208
210
 
209
211
  <ErrorBoundary>
@@ -11,7 +11,14 @@ export interface EntityTableCellActionsProps {
11
11
  children?: React.ReactNode;
12
12
  }
13
13
 
14
- export function EntityTableCellActions({ showError, disabled, showExpandIcon, selected, openPopup, children }: EntityTableCellActionsProps) {
14
+ export function EntityTableCellActions({
15
+ showError,
16
+ disabled,
17
+ showExpandIcon,
18
+ selected,
19
+ openPopup,
20
+ children
21
+ }: EntityTableCellActionsProps) {
15
22
 
16
23
  const ref = useRef<HTMLDivElement>(null);
17
24
  const doOpenPopup = useCallback(() => {
@@ -54,13 +61,18 @@ export function EntityTableCellActions({ showError, disabled, showExpandIcon, se
54
61
 
55
62
  {showError && <ErrorTooltip
56
63
  side={"left"}
57
- className={"flex items-center justify-center"}
58
- style={{ width: 32, height: 32 }}
59
64
  title={showError.message}>
60
- <ErrorOutlineIcon
61
- size={"small"}
62
- color={"error"}
63
- />
65
+ <div
66
+ className={"flex items-center justify-center"}
67
+ style={{
68
+ width: 32,
69
+ height: 32
70
+ }}>
71
+ <ErrorOutlineIcon
72
+ size={"small"}
73
+ color={"error"}
74
+ />
75
+ </div>
64
76
  </ErrorTooltip>
65
77
  }
66
78
 
@@ -14,19 +14,20 @@ import {
14
14
  ResolvedProperties,
15
15
  ResolvedProperty
16
16
  } from "../../../../types";
17
- import { Form, Formik, FormikProps } from "formik";
17
+ import { Formex, useCreateFormex } from "@firecms/formex";
18
18
  import { useDraggable } from "./useDraggable";
19
19
  import { CustomFieldValidator, getYupEntitySchema } from "../../../../form/validation";
20
20
  import { useWindowSize } from "./useWindowSize";
21
21
  import { ElementResizeListener } from "./ElementResizeListener";
22
- import { ErrorView, OnCellValueChangeParams } from "../../../../components";
22
+ import { ErrorView } from "../../../ErrorView";
23
23
  import { getPropertyInPath, isReadOnly, resolveCollection } from "../../../../util";
24
24
  import { Button, ClearIcon, DialogActions, IconButton, Typography } from "@firecms/ui";
25
25
  import { PropertyFieldBinding } from "../../../../form";
26
26
  import { useCustomizationController, useFireCMSContext } from "../../../../hooks";
27
+ import { OnCellValueChangeParams } from "../../../common";
27
28
 
28
29
  interface PopupFormFieldProps<M extends Record<string, any>> {
29
- entity?: Entity<M>;
30
+ entity: Entity<M>;
30
31
  customFieldValidator?: CustomFieldValidator;
31
32
  path: string;
32
33
  tableKey: string;
@@ -40,7 +41,7 @@ interface PopupFormFieldProps<M extends Record<string, any>> {
40
41
  * Callback when the value of a cell has been edited
41
42
  * @param params
42
43
  */
43
- onCellValueChange?: (params: OnCellValueChangeParams<any, M>) => Promise<void> | void;
44
+ onCellValueChange?: (params: OnCellValueChangeParams<any, any>) => Promise<void> | void;
44
45
  }
45
46
 
46
47
  export function PopupFormField<M extends Record<string, any>>(props: PopupFormFieldProps<M>) {
@@ -73,7 +74,7 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
73
74
  y: number
74
75
  }>();
75
76
 
76
- const entityId = entityProp?.id;
77
+ const entityId = entityProp.id;
77
78
  const [entity, setEntity] = useState<Entity<M> | undefined>(entityProp);
78
79
  // useEffect(() => {
79
80
  // if (entityId && inputCollection) {
@@ -204,12 +205,10 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
204
205
  return onCellValueChange({
205
206
  value: values[propertyKey as string],
206
207
  propertyKey: propertyKey as string,
207
- entity,
208
+ data: entity,
208
209
  setError: setSavingError,
209
210
  onValueUpdated: () => {
210
211
  },
211
- fullPath: path,
212
- context: fireCMSContext
213
212
  });
214
213
  }
215
214
  return Promise.resolve();
@@ -218,139 +217,142 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
218
217
  if (!entity)
219
218
  return <></>;
220
219
 
221
- const form = entity && (
220
+ // eslint-disable-next-line react-hooks/rules-of-hooks
221
+ const formex = useCreateFormex<M>({
222
+ initialValues: (entity?.values ?? {}) as EntityValues<M>,
223
+ validation: (values) => {
224
+ return validationSchema?.validate(values, { abortEarly: false })
225
+ .then(() => ({}))
226
+ .catch((e) => {
227
+ const errors: Record<string, string> = {};
228
+ e.inner.forEach((error: any) => {
229
+ errors[error.path] = error.message;
230
+ });
231
+ return errors;
232
+ });
233
+ },
234
+ validateOnInitialRender: true,
235
+ onSubmit: (values, actions) => {
236
+ saveValue(values)
237
+ .then(() => onClose())
238
+ .finally(() => actions.setSubmitting(false));
239
+ }
240
+ });
241
+
242
+ const { values, isSubmitting, setFieldValue, handleSubmit } = formex;
243
+
244
+ // eslint-disable-next-line react-hooks/rules-of-hooks
245
+ useEffect(() => {
246
+ if (!equal(values, internalValue)) {
247
+ setInternalValue(values);
248
+ }
249
+ }, [values]);
250
+
251
+ if (!entity)
252
+ return <ErrorView
253
+ error={"PopupFormField misconfiguration"}/>;
254
+
255
+ if (!collection)
256
+ return <></>;
257
+
258
+ const disabled = isSubmitting;
259
+
260
+ const formContext: FormContext<M> = {
261
+ collection,
262
+ entityId,
263
+ values,
264
+ path,
265
+ setFieldValue,
266
+ save: saveValue,
267
+ formex
268
+ };
269
+
270
+ const property: ResolvedProperty<any> | undefined = propertyKey && getPropertyInPath(collection.properties, propertyKey as string);
271
+ const fieldProps: PropertyFieldBindingProps<any, M> | undefined = propertyKey && property
272
+ ? {
273
+ propertyKey: propertyKey as string,
274
+ disabled: isSubmitting || isReadOnly(property) || !!property.disabled,
275
+ property,
276
+ includeDescription: false,
277
+ underlyingValueHasChanged: false,
278
+ context: formContext,
279
+ partOfArray: false,
280
+ minimalistView: false,
281
+ autoFocus: open
282
+ }
283
+ : undefined;
284
+
285
+ let internalForm = <>
222
286
  <div
223
- className={`text-gray-900 dark:text-white overflow-auto rounded rounded-md bg-white dark:bg-gray-950 ${!open ? "hidden" : ""} cursor-grab max-w-[100vw]`}>
224
- <Formik
225
- initialValues={(entity?.values ?? {}) as EntityValues<M>}
226
- enableReinitialize={true}
227
- validationSchema={validationSchema}
228
- validateOnMount={true}
229
- validate={(values) => console.debug("Validating", values)}
230
- onSubmit={(values, actions) => {
231
- saveValue(values)
232
- .then(() => onClose())
233
- .finally(() => actions.setSubmitting(false));
234
- }}
235
- >
236
- {({
237
- values,
238
- setFieldValue,
239
- handleSubmit,
240
- isSubmitting
241
- }: FormikProps<EntityValues<M>>) => {
242
-
243
- // eslint-disable-next-line react-hooks/rules-of-hooks
244
- useEffect(() => {
245
- if (!equal(values, internalValue)) {
246
- setInternalValue(values);
247
- }
248
- }, [values]);
249
-
250
- if (!entity)
251
- return <ErrorView
252
- error={"PopupFormField misconfiguration"}/>;
253
-
254
- if (!collection)
255
- return <></>;
256
-
257
- const disabled = isSubmitting;
258
-
259
- const formContext: FormContext<M> = {
260
- collection,
261
- entityId,
262
- values,
263
- path,
264
- setFieldValue,
265
- save: saveValue
266
- };
267
-
268
- const property: ResolvedProperty<any> | undefined = propertyKey && getPropertyInPath(collection.properties, propertyKey as string);
269
- const fieldProps: PropertyFieldBindingProps<any, M> | undefined = propertyKey && property
270
- ? {
271
- propertyKey: propertyKey as string,
272
- disabled: isSubmitting || isReadOnly(property) || !!property.disabled,
273
- property,
274
- includeDescription: false,
275
- underlyingValueHasChanged: false,
276
- context: formContext,
277
- tableMode: true,
278
- partOfArray: false,
279
- partOfBlock: false,
280
- autoFocus: open
281
- }
282
- : undefined;
283
-
284
- let internalForm = <>
285
- <div
286
- key={`popup_form_${tableKey}_${entityId}_${propertyKey}`}
287
- className="w-[560px] max-w-full max-h-[85vh]">
288
- <Form
289
- onSubmit={handleSubmit}
290
- noValidate>
291
-
292
- <div
293
- className="mb-1 p-4 flex flex-col relative">
294
- <div
295
- ref={innerRef}
296
- className="cursor-auto"
297
- style={{ cursor: "auto !important" }}>
298
- {fieldProps &&
299
- <PropertyFieldBinding {...fieldProps}/>}
300
- </div>
301
- </div>
302
-
303
- <DialogActions>
304
- <Button
305
- variant="filled"
306
- color="primary"
307
- type="submit"
308
- disabled={disabled}
309
- >
310
- Save
311
- </Button>
312
- </DialogActions>
313
-
314
- </Form>
315
-
316
- </div>
317
- </>;
318
-
319
- const plugins = customizationController.plugins;
320
- if (plugins) {
321
- // const formController: FormContext<M> = {
322
- // values,
323
- // setFieldValue
324
- // }
325
- plugins.forEach((plugin: FireCMSPlugin) => {
326
- if (plugin.form?.provider) {
327
- internalForm = (
328
- <plugin.form.provider.Component
329
- status={"existing"}
330
- path={path}
331
- collection={collection}
332
- entity={entity}
333
- context={fireCMSContext}
334
- currentEntityId={entityId}
335
- formContext={formContext}
336
- {...plugin.form.provider.props}>
337
- {internalForm}
338
- </plugin.form.provider.Component>
339
- );
340
- }
341
- });
342
- }
343
- return internalForm;
344
- }}
345
- </Formik>
346
-
347
- {savingError &&
348
- <Typography color={"error"}>
349
- {savingError.message}
350
- </Typography>
351
- }
287
+ key={`popup_form_${tableKey}_${entityId}_${propertyKey}`}
288
+ className="w-[560px] max-w-full max-h-[85vh]">
289
+ <form
290
+ onSubmit={handleSubmit}
291
+ noValidate>
292
+
293
+ <div
294
+ className="mb-1 p-4 flex flex-col relative">
295
+ <div
296
+ ref={innerRef}
297
+ className="cursor-auto"
298
+ style={{ cursor: "auto !important" }}>
299
+ {fieldProps &&
300
+ <PropertyFieldBinding {...fieldProps}/>}
301
+ </div>
302
+ </div>
303
+
304
+ <DialogActions>
305
+ <Button
306
+ variant="filled"
307
+ color="primary"
308
+ type="submit"
309
+ disabled={disabled}
310
+ >
311
+ Save
312
+ </Button>
313
+ </DialogActions>
314
+
315
+ </form>
316
+
352
317
  </div>
353
- );
318
+
319
+ </>;
320
+
321
+ const plugins = customizationController.plugins;
322
+ if (plugins) {
323
+ // const formController: FormContext<M> = {
324
+ // values,
325
+ // setFieldValue
326
+ // }
327
+ plugins.forEach((plugin: FireCMSPlugin) => {
328
+ if (plugin.form?.provider) {
329
+ internalForm = (
330
+ <plugin.form.provider.Component
331
+ status={"existing"}
332
+ path={path}
333
+ collection={collection}
334
+ entity={entity}
335
+ context={fireCMSContext}
336
+ currentEntityId={entityId}
337
+ formContext={formContext}
338
+ {...plugin.form.provider.props}>
339
+ {internalForm}
340
+ </plugin.form.provider.Component>
341
+ );
342
+ }
343
+ });
344
+ }
345
+ const form = <div
346
+ className={`text-gray-900 dark:text-white overflow-auto rounded rounded-md bg-white dark:bg-gray-950 ${!open ? "hidden" : ""} cursor-grab max-w-[100vw]`}>
347
+
348
+ {internalForm}
349
+
350
+ {savingError &&
351
+ <Typography color={"error"}>
352
+ {savingError.message}
353
+ </Typography>
354
+ }
355
+ </div>;
354
356
 
355
357
  const draggable = (
356
358
  <div
@@ -393,9 +395,10 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
393
395
 
394
396
  return (
395
397
  <Portal.Root asChild
396
- container={container}
397
- >
398
- {draggable}
398
+ container={container}>
399
+ <Formex value={formex}>
400
+ {draggable}
401
+ </Formex>
399
402
  </Portal.Root>
400
403
  );
401
404