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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/README.md +6 -7
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +16 -0
  4. package/dist/app/Scaffold.d.ts +30 -0
  5. package/dist/app/index.d.ts +4 -0
  6. package/dist/app/useApp.d.ts +16 -0
  7. package/dist/components/ArrayContainer.d.ts +19 -8
  8. package/dist/components/CircularProgressCenter.d.ts +1 -1
  9. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  10. package/dist/components/{DeleteConfirmationDialog.d.ts → ConfirmationDialog.d.ts} +1 -1
  11. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +13 -18
  12. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -5
  13. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +9 -15
  14. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  15. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  16. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +3 -1
  17. package/dist/components/EntityCollectionTable/index.d.ts +2 -4
  18. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  19. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  20. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +8 -5
  21. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
  22. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  23. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  24. package/dist/components/EntityCollectionView/utils.d.ts +3 -0
  25. package/dist/components/EntityPreview.d.ts +26 -7
  26. package/dist/components/EntityView.d.ts +11 -0
  27. package/dist/components/ErrorView.d.ts +1 -1
  28. package/dist/components/FieldCaption.d.ts +5 -0
  29. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  30. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  31. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  32. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  33. package/dist/components/HomePage/index.d.ts +3 -1
  34. package/dist/components/{FieldConfigBadge.d.ts → PropertyConfigBadge.d.ts} +2 -1
  35. package/dist/components/PropertyIdCopyTooltip.d.ts +8 -0
  36. package/dist/components/{ReferenceSelectionInner.d.ts → ReferenceTable/ReferenceSelectionTable.d.ts} +2 -2
  37. package/dist/components/ReferenceWidget.d.ts +6 -4
  38. package/dist/components/{EntityCollectionTable/SimpleEntityCollectionTable.d.ts → SelectableTable/SelectableTable.d.ts} +8 -28
  39. package/dist/components/SelectableTable/SelectableTableContext.d.ts +4 -0
  40. package/dist/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.d.ts +2 -1
  41. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  42. package/dist/components/VirtualTable/types.d.ts +3 -3
  43. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  44. package/dist/components/common/index.d.ts +6 -0
  45. package/dist/components/common/table_height.d.ts +5 -0
  46. package/dist/components/{EntityCollectionTable → common}/types.d.ts +11 -6
  47. package/dist/components/{EntityCollectionView → common}/useColumnsIds.d.ts +2 -1
  48. package/dist/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.d.ts +5 -2
  49. package/dist/components/common/useTableSearchHelper.d.ts +12 -0
  50. package/dist/components/index.d.ts +14 -8
  51. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  52. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  53. package/dist/core/DefaultDrawer.d.ts +19 -0
  54. package/dist/core/DrawerNavigationItem.d.ts +10 -0
  55. package/dist/core/EntityEditView.d.ts +36 -0
  56. package/dist/core/FireCMS.d.ts +2 -2
  57. package/dist/core/NavigationRoutes.d.ts +3 -3
  58. package/dist/core/index.d.ts +3 -6
  59. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  60. package/dist/form/components/CustomIdField.d.ts +2 -1
  61. package/dist/form/components/ErrorFocus.d.ts +1 -1
  62. package/dist/form/components/FieldHelperText.d.ts +3 -3
  63. package/dist/{components → form/components}/LabelWithIcon.d.ts +1 -1
  64. package/dist/form/components/LabelWithIconAndTooltip.d.ts +15 -0
  65. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  66. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  67. package/dist/form/components/index.d.ts +2 -2
  68. package/dist/form/field_bindings/ArrayCustomShapedFieldBinding.d.ts +1 -1
  69. package/dist/form/field_bindings/ArrayOfReferencesFieldBinding.d.ts +1 -1
  70. package/dist/form/field_bindings/BlockFieldBinding.d.ts +1 -1
  71. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  72. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  73. package/dist/form/field_bindings/MarkdownEditorFieldBinding.d.ts +11 -0
  74. package/dist/form/field_bindings/{MultiSelectBinding.d.ts → MultiSelectFieldBinding.d.ts} +1 -1
  75. package/dist/form/field_bindings/ReadOnlyFieldBinding.d.ts +1 -1
  76. package/dist/form/field_bindings/ReferenceFieldBinding.d.ts +2 -2
  77. package/dist/form/field_bindings/RepeatFieldBinding.d.ts +1 -1
  78. package/dist/form/field_bindings/SelectFieldBinding.d.ts +1 -1
  79. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  80. package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
  81. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  82. package/dist/form/index.d.ts +4 -5
  83. package/dist/form/useClearRestoreValue.d.ts +2 -2
  84. package/dist/form/validation.d.ts +1 -1
  85. package/dist/hooks/data/delete.d.ts +4 -4
  86. package/dist/hooks/data/save.d.ts +4 -5
  87. package/dist/hooks/data/useCollectionFetch.d.ts +1 -1
  88. package/dist/hooks/data/useDataSource.d.ts +2 -2
  89. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  90. package/dist/hooks/index.d.ts +5 -1
  91. package/dist/hooks/useAuthController.d.ts +1 -1
  92. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  93. package/dist/hooks/useBuildNavigationController.d.ts +23 -0
  94. package/dist/hooks/useFireCMSContext.d.ts +1 -1
  95. package/dist/hooks/useProjectLog.d.ts +14 -0
  96. package/dist/hooks/useResolvedNavigationFrom.d.ts +3 -3
  97. package/dist/hooks/useSnackbarController.d.ts +1 -0
  98. package/dist/hooks/useStorageSource.d.ts +2 -2
  99. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  100. package/dist/index.d.ts +1 -0
  101. package/dist/index.es.js +20246 -13863
  102. package/dist/index.es.js.map +1 -1
  103. package/dist/index.umd.js +22772 -588
  104. package/dist/index.umd.js.map +1 -1
  105. package/dist/internal/useBuildDataSource.d.ts +1 -12
  106. package/dist/preview/PropertyPreview.d.ts +1 -1
  107. package/dist/preview/PropertyPreviewProps.d.ts +7 -5
  108. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  109. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  110. package/dist/preview/components/ReferencePreview.d.ts +4 -9
  111. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  112. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  113. package/dist/preview/util.d.ts +3 -3
  114. package/dist/types/analytics.d.ts +1 -1
  115. package/dist/types/auth.d.ts +37 -3
  116. package/dist/types/collections.d.ts +68 -20
  117. package/dist/types/datasource.d.ts +55 -39
  118. package/dist/types/entities.d.ts +7 -1
  119. package/dist/types/entity_actions.d.ts +18 -4
  120. package/dist/types/entity_callbacks.d.ts +17 -17
  121. package/dist/types/entity_overrides.d.ts +6 -0
  122. package/dist/types/export_import.d.ts +4 -4
  123. package/dist/types/fields.d.ts +63 -42
  124. package/dist/types/firecms.d.ts +10 -25
  125. package/dist/types/firecms_context.d.ts +1 -1
  126. package/dist/types/index.d.ts +2 -1
  127. package/dist/types/navigation.d.ts +18 -16
  128. package/dist/types/permissions.d.ts +8 -4
  129. package/dist/types/plugins.d.ts +39 -39
  130. package/dist/types/properties.d.ts +36 -23
  131. package/dist/types/property_config.d.ts +2 -4
  132. package/dist/types/roles.d.ts +31 -0
  133. package/dist/types/side_dialogs_controller.d.ts +10 -0
  134. package/dist/types/storage.d.ts +86 -3
  135. package/dist/types/user.d.ts +6 -0
  136. package/dist/util/builders.d.ts +2 -2
  137. package/dist/util/collections.d.ts +9 -1
  138. package/dist/util/entities.d.ts +3 -3
  139. package/dist/util/icon_list.d.ts +5 -1
  140. package/dist/util/icon_synonyms.d.ts +1 -98
  141. package/dist/util/icons.d.ts +13 -4
  142. package/dist/util/index.d.ts +3 -1
  143. package/dist/util/navigation_utils.d.ts +2 -2
  144. package/dist/util/objects.d.ts +2 -1
  145. package/dist/util/permissions.d.ts +4 -4
  146. package/dist/util/plurals.d.ts +0 -2
  147. package/dist/util/property_utils.d.ts +3 -3
  148. package/dist/util/references.d.ts +4 -2
  149. package/dist/util/resolutions.d.ts +31 -17
  150. package/dist/util/storage.d.ts +23 -2
  151. package/dist/util/strings.d.ts +1 -1
  152. package/dist/util/useDebouncedCallback.d.ts +1 -0
  153. package/dist/util/useStorageUploadController.d.ts +3 -3
  154. package/dist/util/useTraceUpdate.d.ts +1 -0
  155. package/package.json +70 -47
  156. package/src/app/AppBar.tsx +18 -0
  157. package/src/app/Drawer.tsx +24 -0
  158. package/src/app/Scaffold.tsx +243 -0
  159. package/src/app/index.ts +4 -0
  160. package/src/app/useApp.tsx +32 -0
  161. package/src/components/ArrayContainer.tsx +122 -90
  162. package/src/components/CircularProgressCenter.tsx +2 -2
  163. package/src/components/ClearFilterSortButton.tsx +41 -0
  164. package/src/components/{DeleteConfirmationDialog.tsx → ConfirmationDialog.tsx} +3 -3
  165. package/src/components/DeleteEntityDialog.tsx +13 -22
  166. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +51 -59
  167. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +258 -453
  168. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +13 -14
  169. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +60 -52
  170. package/src/components/EntityCollectionTable/column_utils.tsx +4 -4
  171. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +40 -33
  172. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +22 -20
  173. package/src/components/EntityCollectionTable/index.tsx +1 -9
  174. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +44 -46
  175. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +36 -34
  176. package/src/components/EntityCollectionTable/internal/EntityTableCellActions.tsx +20 -8
  177. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +191 -178
  178. package/src/components/EntityCollectionView/EntityCollectionView.tsx +187 -175
  179. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  180. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  181. package/src/components/EntityCollectionView/useSelectionController.tsx +43 -0
  182. package/src/components/EntityCollectionView/utils.ts +19 -0
  183. package/src/components/EntityPreview.tsx +218 -72
  184. package/src/components/EntityView.tsx +84 -0
  185. package/src/components/ErrorView.tsx +4 -4
  186. package/src/components/FieldCaption.tsx +14 -0
  187. package/src/components/HomePage/DefaultHomePage.tsx +39 -28
  188. package/src/components/HomePage/FavouritesView.tsx +6 -11
  189. package/src/components/HomePage/NavigationCard.tsx +69 -0
  190. package/src/components/HomePage/NavigationCardBinding.tsx +111 -0
  191. package/src/components/HomePage/NavigationGroup.tsx +2 -2
  192. package/src/components/HomePage/SmallNavigationCard.tsx +44 -0
  193. package/src/components/HomePage/index.tsx +3 -1
  194. package/src/components/PropertyConfigBadge.tsx +23 -0
  195. package/src/components/PropertyIdCopyTooltip.tsx +48 -0
  196. package/src/components/{ReferenceSelectionInner.tsx → ReferenceTable/ReferenceSelectionTable.tsx} +38 -24
  197. package/src/components/ReferenceWidget.tsx +26 -16
  198. package/src/components/SearchIconsView.tsx +10 -7
  199. package/src/components/{EntityCollectionTable/SimpleEntityCollectionTable.tsx → SelectableTable/SelectableTable.tsx} +46 -84
  200. package/src/components/SelectableTable/SelectableTableContext.tsx +6 -0
  201. package/src/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.tsx +2 -3
  202. package/src/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.tsx +25 -8
  203. package/src/components/{EntityCollectionTable → SelectableTable}/filters/ReferenceFilterField.tsx +40 -24
  204. package/src/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.tsx +92 -24
  205. package/src/components/VirtualTable/VirtualTable.tsx +77 -46
  206. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -9
  207. package/src/components/VirtualTable/VirtualTableHeader.tsx +19 -13
  208. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  209. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  210. package/src/components/VirtualTable/VirtualTableRow.tsx +5 -6
  211. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +5 -5
  212. package/src/components/VirtualTable/fields/VirtualTableInput.tsx +4 -3
  213. package/src/components/VirtualTable/fields/VirtualTableNumberInput.tsx +4 -3
  214. package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +16 -28
  215. package/src/components/VirtualTable/types.tsx +2 -3
  216. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +17 -9
  217. package/src/components/common/index.ts +6 -0
  218. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  219. package/src/components/{EntityCollectionTable → common}/types.tsx +9 -6
  220. package/src/components/{EntityCollectionView → common}/useColumnsIds.tsx +23 -2
  221. package/src/components/{EntityCollectionTable → common}/useDataSourceEntityCollectionTableController.tsx +27 -16
  222. package/src/components/common/useTableSearchHelper.ts +88 -0
  223. package/src/components/index.tsx +15 -8
  224. package/src/contexts/AuthControllerContext.tsx +1 -1
  225. package/src/contexts/DialogsProvider.tsx +2 -2
  226. package/src/contexts/SnackbarProvider.tsx +2 -0
  227. package/src/core/DefaultAppBar.tsx +177 -0
  228. package/src/core/DefaultDrawer.tsx +185 -0
  229. package/src/core/DrawerNavigationItem.tsx +66 -0
  230. package/src/core/EntityEditView.tsx +1125 -0
  231. package/src/core/EntitySidePanel.tsx +9 -8
  232. package/src/core/FireCMS.tsx +71 -63
  233. package/src/core/NavigationRoutes.tsx +25 -17
  234. package/src/core/SideDialogs.tsx +2 -1
  235. package/src/core/field_configs.tsx +22 -23
  236. package/src/core/index.tsx +3 -6
  237. package/src/form/PropertyFieldBinding.tsx +79 -45
  238. package/src/form/components/CustomIdField.tsx +53 -36
  239. package/src/form/components/ErrorFocus.tsx +3 -3
  240. package/src/form/components/FieldHelperText.tsx +4 -4
  241. package/src/form/components/LabelWithIcon.tsx +41 -0
  242. package/src/form/components/LabelWithIconAndTooltip.tsx +28 -0
  243. package/src/form/components/StorageItemPreview.tsx +23 -11
  244. package/src/form/components/StorageUploadProgress.tsx +8 -8
  245. package/src/form/components/index.tsx +2 -2
  246. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +30 -19
  247. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +52 -46
  248. package/src/form/field_bindings/BlockFieldBinding.tsx +67 -47
  249. package/src/form/field_bindings/DateTimeFieldBinding.tsx +20 -17
  250. package/src/form/field_bindings/KeyValueFieldBinding.tsx +76 -67
  251. package/src/form/field_bindings/MapFieldBinding.tsx +81 -60
  252. package/src/form/field_bindings/MarkdownEditorFieldBinding.tsx +150 -0
  253. package/src/form/field_bindings/{MultiSelectBinding.tsx → MultiSelectFieldBinding.tsx} +26 -22
  254. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +12 -18
  255. package/src/form/field_bindings/ReferenceFieldBinding.tsx +46 -34
  256. package/src/form/field_bindings/RepeatFieldBinding.tsx +55 -35
  257. package/src/form/field_bindings/SelectFieldBinding.tsx +24 -17
  258. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +42 -43
  259. package/src/form/field_bindings/SwitchFieldBinding.tsx +30 -27
  260. package/src/form/field_bindings/TextFieldBinding.tsx +34 -30
  261. package/src/form/index.tsx +5 -9
  262. package/src/form/useClearRestoreValue.tsx +2 -2
  263. package/src/form/validation.ts +4 -21
  264. package/src/hooks/data/delete.ts +7 -6
  265. package/src/hooks/data/save.ts +12 -8
  266. package/src/hooks/data/useCollectionFetch.tsx +3 -3
  267. package/src/hooks/data/useDataSource.tsx +15 -2
  268. package/src/hooks/data/useEntityFetch.tsx +6 -6
  269. package/src/hooks/index.tsx +7 -1
  270. package/src/hooks/useAuthController.tsx +1 -1
  271. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  272. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  273. package/src/{internal → hooks}/useBuildNavigationController.tsx +245 -101
  274. package/src/hooks/useFireCMSContext.tsx +53 -5
  275. package/src/hooks/useLargeLayout.tsx +10 -7
  276. package/src/hooks/useProjectLog.tsx +63 -0
  277. package/src/hooks/useReferenceDialog.tsx +3 -3
  278. package/src/hooks/useResolvedNavigationFrom.tsx +6 -6
  279. package/src/hooks/useSnackbarController.tsx +1 -2
  280. package/src/hooks/useStorageSource.tsx +7 -2
  281. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  282. package/src/index.ts +1 -0
  283. package/src/internal/useBuildDataSource.ts +80 -85
  284. package/src/internal/useBuildSideDialogsController.tsx +1 -0
  285. package/src/internal/useBuildSideEntityController.tsx +103 -23
  286. package/src/internal/useUnsavedChangesDialog.tsx +5 -3
  287. package/src/preview/PropertyPreview.tsx +15 -22
  288. package/src/preview/PropertyPreviewProps.tsx +6 -10
  289. package/src/preview/components/BooleanPreview.tsx +19 -4
  290. package/src/preview/components/EmptyValue.tsx +1 -1
  291. package/src/preview/components/EnumValuesChip.tsx +2 -2
  292. package/src/preview/components/ImagePreview.tsx +25 -36
  293. package/src/preview/components/ReferencePreview.tsx +73 -176
  294. package/src/preview/components/StorageThumbnail.tsx +5 -1
  295. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  296. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +2 -3
  297. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +4 -3
  298. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +2 -3
  299. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +1 -2
  300. package/src/preview/property_previews/ArrayOneOfPreview.tsx +4 -5
  301. package/src/preview/property_previews/ArrayPropertyPreview.tsx +4 -5
  302. package/src/preview/property_previews/MapPropertyPreview.tsx +9 -9
  303. package/src/preview/property_previews/SkeletonPropertyComponent.tsx +12 -12
  304. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  305. package/src/preview/util.ts +10 -10
  306. package/src/types/analytics.ts +1 -0
  307. package/src/types/auth.tsx +48 -3
  308. package/src/types/collections.ts +77 -20
  309. package/src/types/customization_controller.tsx +0 -1
  310. package/src/types/datasource.ts +64 -47
  311. package/src/types/entities.ts +15 -1
  312. package/src/types/entity_actions.tsx +21 -4
  313. package/src/types/entity_callbacks.ts +20 -19
  314. package/src/types/entity_overrides.tsx +7 -0
  315. package/src/types/export_import.ts +4 -4
  316. package/src/types/fields.tsx +69 -45
  317. package/src/types/firecms.tsx +11 -28
  318. package/src/types/firecms_context.tsx +1 -1
  319. package/src/types/index.ts +2 -1
  320. package/src/types/navigation.ts +20 -19
  321. package/src/types/permissions.ts +10 -5
  322. package/src/types/plugins.tsx +46 -48
  323. package/src/types/properties.ts +42 -24
  324. package/src/types/property_config.tsx +2 -4
  325. package/src/types/roles.ts +41 -0
  326. package/src/types/side_dialogs_controller.tsx +13 -0
  327. package/src/types/side_entity_controller.tsx +1 -0
  328. package/src/types/storage.ts +94 -3
  329. package/src/types/user.ts +9 -0
  330. package/src/util/builders.ts +6 -6
  331. package/src/util/collections.ts +22 -0
  332. package/src/util/entities.ts +9 -6
  333. package/src/util/enums.ts +1 -1
  334. package/src/util/icon_list.ts +16 -10
  335. package/src/util/icon_synonyms.ts +3 -100
  336. package/src/util/icons.tsx +26 -8
  337. package/src/util/index.ts +3 -1
  338. package/src/util/make_properties_editable.ts +13 -5
  339. package/src/util/navigation_utils.ts +6 -6
  340. package/src/util/objects.ts +45 -28
  341. package/src/util/permissions.ts +20 -16
  342. package/src/util/plurals.ts +0 -2
  343. package/src/util/property_utils.tsx +11 -4
  344. package/src/util/references.ts +45 -5
  345. package/src/util/resolutions.ts +80 -47
  346. package/src/util/storage.ts +79 -21
  347. package/src/util/strings.ts +4 -3
  348. package/src/util/{useDebounce.ts → useDebouncedCallback.ts} +1 -1
  349. package/src/util/useStorageUploadController.tsx +34 -8
  350. package/src/util/useTraceUpdate.tsx +2 -1
  351. package/dist/components/VirtualTable/common.d.ts +0 -2
  352. package/dist/core/Drawer.d.ts +0 -23
  353. package/dist/core/Scaffold.d.ts +0 -52
  354. package/dist/form/EntityForm.d.ts +0 -75
  355. package/dist/form/components/FormikArrayContainer.d.ts +0 -18
  356. package/dist/form/components/SubmitListener.d.ts +0 -1
  357. package/dist/form/components/SwitchControl.d.ts +0 -8
  358. package/dist/form/field_bindings/MarkdownFieldBinding.d.ts +0 -9
  359. package/dist/hooks/useVerifyLicense.d.ts +0 -0
  360. package/dist/internal/EntityView.d.ts +0 -22
  361. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  362. package/dist/internal/useBuildNavigationController.d.ts +0 -14
  363. package/dist/internal/useLocaleConfig.d.ts +0 -1
  364. package/dist/types/appcheck.d.ts +0 -26
  365. package/dist/util/useDebounce.d.ts +0 -1
  366. package/src/components/FieldConfigBadge.tsx +0 -17
  367. package/src/components/FireCMSAppBar.tsx +0 -157
  368. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  369. package/src/components/LabelWithIcon.tsx +0 -33
  370. package/src/core/Drawer.tsx +0 -162
  371. package/src/core/Scaffold.tsx +0 -278
  372. package/src/form/EntityForm.tsx +0 -657
  373. package/src/form/components/FormikArrayContainer.tsx +0 -44
  374. package/src/form/components/SubmitListener.tsx +0 -32
  375. package/src/form/components/SwitchControl.tsx +0 -39
  376. package/src/form/field_bindings/MarkdownFieldBinding.tsx +0 -696
  377. package/src/hooks/useVerifyLicense.tsx +0 -1
  378. package/src/internal/EntityView.tsx +0 -578
  379. package/src/internal/useBuildCustomizationController.tsx +0 -5
  380. package/src/internal/useLocaleConfig.tsx +0 -18
  381. package/src/types/appcheck.ts +0 -29
  382. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/BooleanFilterField.d.ts +0 -0
  383. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/DateTimeFilterField.d.ts +0 -0
  384. /package/dist/components/{EntityCollectionTable → SelectableTable}/filters/StringNumberFilterField.d.ts +0 -0
  385. /package/dist/components/{EntityCollectionTable → common}/useDebouncedData.d.ts +0 -0
  386. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  387. /package/src/components/{EntityCollectionTable → common}/useDebouncedData.ts +0 -0
@@ -1,5 +1,4 @@
1
1
  import React, { useCallback, useEffect, useLayoutEffect, useMemo, useState } from "react";
2
- import equal from "react-fast-compare"
3
2
 
4
3
  import * as Portal from "@radix-ui/react-portal";
5
4
 
@@ -14,24 +13,25 @@ import {
14
13
  ResolvedProperties,
15
14
  ResolvedProperty
16
15
  } from "../../../../types";
17
- import { Form, Formik, FormikProps } from "formik";
16
+ import { Formex, useCreateFormex } from "@firecms/formex";
18
17
  import { useDraggable } from "./useDraggable";
19
18
  import { CustomFieldValidator, getYupEntitySchema } from "../../../../form/validation";
20
19
  import { useWindowSize } from "./useWindowSize";
21
20
  import { ElementResizeListener } from "./ElementResizeListener";
22
- import { ErrorView, OnCellValueChangeParams } from "../../../../components";
23
21
  import { getPropertyInPath, isReadOnly, resolveCollection } from "../../../../util";
24
- import { Button, ClearIcon, DialogActions, IconButton, Typography } from "@firecms/ui";
22
+ import { Button, CloseIcon, DialogActions, IconButton, Typography } from "@firecms/ui";
25
23
  import { PropertyFieldBinding } from "../../../../form";
26
- import { useCustomizationController, useFireCMSContext } from "../../../../hooks";
24
+ import { useCustomizationController, useDataSource, useFireCMSContext } from "../../../../hooks";
25
+ import { OnCellValueChangeParams } from "../../../common";
26
+ import { yupToFormErrors } from "../../../../core/EntityEditView";
27
27
 
28
28
  interface PopupFormFieldProps<M extends Record<string, any>> {
29
- entity?: Entity<M>;
30
29
  customFieldValidator?: CustomFieldValidator;
31
30
  path: string;
31
+ entityId: string;
32
32
  tableKey: string;
33
33
  propertyKey?: Extract<keyof M, string>;
34
- collection?: EntityCollection<M>;
34
+ collection?: EntityCollection<any>;
35
35
  cellRect?: DOMRect;
36
36
  open: boolean;
37
37
  onClose: () => void;
@@ -40,18 +40,59 @@ interface PopupFormFieldProps<M extends Record<string, any>> {
40
40
  * Callback when the value of a cell has been edited
41
41
  * @param params
42
42
  */
43
- onCellValueChange?: (params: OnCellValueChangeParams<any, M>) => Promise<void> | void;
43
+ onCellValueChange?: (params: OnCellValueChangeParams<any, any>) => Promise<void> | void;
44
44
  }
45
45
 
46
46
  export function PopupFormField<M extends Record<string, any>>(props: PopupFormFieldProps<M>) {
47
47
  if (!props.open) return null;
48
- return <PopupFormFieldInternal {...props} />;
48
+ return <PopupFormFieldLoading {...props} />;
49
49
 
50
50
  }
51
51
 
52
+ export function PopupFormFieldLoading<M extends Record<string, any>>({
53
+ tableKey,
54
+ entityId,
55
+ customFieldValidator,
56
+ propertyKey,
57
+ collection: inputCollection,
58
+ path,
59
+ cellRect,
60
+ open,
61
+ onClose,
62
+ onCellValueChange,
63
+ container
64
+ }: PopupFormFieldProps<M>) {
65
+ const dataSource = useDataSource();
66
+ const [entity, setEntity] = useState<Entity<M> | undefined>(undefined);
67
+ useEffect(() => {
68
+ if (entityId && inputCollection) {
69
+ dataSource.fetchEntity({
70
+ path,
71
+ entityId,
72
+ collection: inputCollection
73
+ }).then(setEntity);
74
+ }
75
+ }, [entityId, inputCollection]);
76
+
77
+ if (!entity) return null;
78
+ return <PopupFormFieldInternal {...{
79
+ tableKey,
80
+ entityId,
81
+ customFieldValidator,
82
+ propertyKey,
83
+ collection: inputCollection,
84
+ path,
85
+ cellRect,
86
+ open,
87
+ onClose,
88
+ onCellValueChange,
89
+ container
90
+ }} entity={entity}/>;
91
+ }
92
+
52
93
  export function PopupFormFieldInternal<M extends Record<string, any>>({
53
94
  tableKey,
54
- entity: entityProp,
95
+ entityId,
55
96
  customFieldValidator,
56
97
  propertyKey,
57
98
  collection: inputCollection,
@@ -60,10 +101,12 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
60
101
  open,
61
102
  onClose,
62
103
  onCellValueChange,
63
- container
64
- }: PopupFormFieldProps<M>) {
104
+ container,
105
+ entity
106
+ }: PopupFormFieldProps<M> & {
107
+ entity?: Entity<M>
108
+ }) {
65
109
 
66
- // const dataSource = useDataSource();
67
110
  const fireCMSContext = useFireCMSContext();
68
111
  const customizationController = useCustomizationController();
69
112
 
@@ -73,34 +116,13 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
73
116
  y: number
74
117
  }>();
75
118
 
76
- const entityId = entityProp?.id;
77
- const [entity, setEntity] = useState<Entity<M> | undefined>(entityProp);
78
- // useEffect(() => {
79
- // if (entityId && inputCollection) {
80
- // return dataSource.listenEntity?.({
81
- // path,
82
- // entityId,
83
- // collection: inputCollection,
84
- // onUpdate: (e) => {
85
- // setEntity(e);
86
- // setInternalValue(e?.values);
87
- // }
88
- // });
89
- // } else {
90
- // return () => {
91
- // };
92
- // }
93
- // }, [dataSource, entityId, inputCollection, path, open]);
94
-
95
- const [internalValue, setInternalValue] = useState<EntityValues<M> | undefined>(entity?.values);
96
-
97
119
  const collection: ResolvedEntityCollection<M> | undefined = inputCollection
98
120
  ? resolveCollection<M>({
99
121
  collection: inputCollection,
100
122
  path,
101
- values: internalValue,
123
+ values: entity?.values,
102
124
  entityId,
103
- fields: customizationController.propertyConfigs
125
+ propertyConfigs: customizationController.propertyConfigs
104
126
  })
105
127
  : undefined;
106
128
 
@@ -204,153 +226,143 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
204
226
  return onCellValueChange({
205
227
  value: values[propertyKey as string],
206
228
  propertyKey: propertyKey as string,
207
- entity,
229
+ data: entity,
208
230
  setError: setSavingError,
209
231
  onValueUpdated: () => {
210
232
  },
211
- fullPath: path,
212
- context: fireCMSContext
213
233
  });
214
234
  }
215
235
  return Promise.resolve();
216
236
  };
217
237
 
218
- if (!entity)
219
- return <></>;
238
+ const formex = useCreateFormex<M>({
239
+ initialValues: (entity?.values ?? {}) as EntityValues<M>,
240
+ validation: (values) => {
241
+ return validationSchema?.validate(values, { abortEarly: false })
242
+ .then(() => ({}))
243
+ .catch((e) => {
244
+ // const errors: Record<string, string> = {};
245
+ // e.inner.forEach((error: any) => {
246
+ // errors[error.path] = error.message;
247
+ // });
248
+ // return errors;
249
+ return yupToFormErrors(e);
250
+ });
251
+ },
252
+ validateOnInitialRender: true,
253
+ onSubmit: (values, actions) => {
254
+ saveValue(values)
255
+ .then(() => {
256
+ formex.resetForm({
257
+ values: values
258
+ })
259
+ onClose();
260
+ })
261
+ .finally(() => actions.setSubmitting(false));
262
+ }
263
+ });
220
264
 
221
- const form = entity && (
265
+ const {
266
+ values,
267
+ isSubmitting,
268
+ setFieldValue,
269
+ handleSubmit
270
+ } = formex;
271
+
272
+ const disabled = isSubmitting;
273
+
274
+ const formContext: FormContext<M> = {
275
+ collection,
276
+ entityId,
277
+ values,
278
+ path,
279
+ setFieldValue,
280
+ save: saveValue,
281
+ formex
282
+ };
283
+
284
+ const property: ResolvedProperty<any> | undefined = propertyKey && getPropertyInPath(collection?.properties ?? {} as ResolvedProperties, propertyKey as string);
285
+ const fieldProps: PropertyFieldBindingProps<any, M> | undefined = propertyKey && property
286
+ ? {
287
+ propertyKey: propertyKey as string,
288
+ disabled: isSubmitting || isReadOnly(property) || !!property.disabled,
289
+ property,
290
+ includeDescription: false,
291
+ underlyingValueHasChanged: false,
292
+ context: formContext,
293
+ partOfArray: false,
294
+ minimalistView: false,
295
+ autoFocus: open
296
+ }
297
+ : undefined;
298
+
299
+ let internalForm = <>
222
300
  <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
- }
301
+ key={`popup_form_${tableKey}_${entityId}_${propertyKey}`}
302
+ className="w-[700px] max-w-full max-h-[85vh]">
303
+ <form
304
+ onSubmit={handleSubmit}
305
+ noValidate>
306
+
307
+ <div
308
+ className="mb-1 p-4 flex flex-col relative">
309
+ <div
310
+ ref={innerRef}
311
+ className="cursor-auto"
312
+ style={{ cursor: "auto !important" }}>
313
+ {fieldProps &&
314
+ <PropertyFieldBinding {...fieldProps}/>}
315
+ </div>
316
+ </div>
317
+
318
+ <DialogActions>
319
+ <Button
320
+ variant="filled"
321
+ color="primary"
322
+ type="submit"
323
+ disabled={disabled}
324
+ >
325
+ Save
326
+ </Button>
327
+ </DialogActions>
328
+
329
+ </form>
330
+
352
331
  </div>
353
- );
332
+
333
+ </>;
334
+
335
+ const plugins = customizationController.plugins;
336
+ if (plugins) {
337
+ plugins.forEach((plugin: FireCMSPlugin) => {
338
+ if (plugin.form?.provider) {
339
+ internalForm = (
340
+ <plugin.form.provider.Component
341
+ status={"existing"}
342
+ path={path}
343
+ collection={collection}
344
+ entity={entity}
345
+ context={fireCMSContext}
346
+ currentEntityId={entityId}
347
+ formContext={formContext}
348
+ {...plugin.form.provider.props}>
349
+ {internalForm}
350
+ </plugin.form.provider.Component>
351
+ );
352
+ }
353
+ });
354
+ }
355
+ const form = <div
356
+ className={`text-surface-900 dark:text-white overflow-auto rounded rounded-md bg-white dark:bg-surface-950 ${!open ? "hidden" : ""} cursor-grab max-w-[100vw]`}>
357
+
358
+ {internalForm}
359
+
360
+ {savingError &&
361
+ <Typography color={"error"}>
362
+ {savingError.message}
363
+ </Typography>
364
+ }
365
+ </div>;
354
366
 
355
367
  const draggable = (
356
368
  <div
@@ -358,7 +370,7 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
358
370
  style={{
359
371
  boxShadow: "0 0 0 2px rgba(128,128,128,0.2)",
360
372
  }}
361
- className={`inline-block fixed z-20 shadow-outline rounded-md bg-white dark:bg-gray-950 ${
373
+ className={`inline-block fixed z-20 shadow-outline rounded-md bg-white dark:bg-surface-950 ${
362
374
  !open ? "invisible" : "visible"
363
375
  } cursor-grab overflow-visible`}
364
376
  ref={draggableRef}>
@@ -371,7 +383,7 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
371
383
  {form}
372
384
 
373
385
  <div
374
- className="absolute -top-3.5 -right-3.5 bg-gray-500 rounded-full"
386
+ className="absolute -top-3.5 -right-3.5 bg-surface-500 rounded-full"
375
387
  style={{
376
388
  width: "32px",
377
389
  height: "32px"
@@ -382,7 +394,7 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
382
394
  event.stopPropagation();
383
395
  onClose();
384
396
  }}>
385
- <ClearIcon className="text-white"
397
+ <CloseIcon className="text-white"
386
398
  size={"small"}/>
387
399
  </IconButton>
388
400
  </div>
@@ -393,9 +405,10 @@ export function PopupFormFieldInternal<M extends Record<string, any>>({
393
405
 
394
406
  return (
395
407
  <Portal.Root asChild
396
- container={container}
397
- >
398
- {draggable}
408
+ container={container}>
409
+ <Formex value={formex}>
410
+ {draggable}
411
+ </Formex>
399
412
  </Portal.Root>
400
413
  );
401
414