@firecms/core 3.0.0-beta.1 → 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
@@ -1,15 +1,25 @@
1
1
  import React, { useMemo } from "react";
2
2
 
3
- import { ErrorMessage } from "formik";
4
-
3
+ // import { ErrorMessage } from "@firecms/formex";
5
4
  import { Entity, EntityStatus, EnumValueConfig, EnumValues } from "../../types";
6
5
 
7
6
  import { useClipboard, useSnackbarController } from "../../hooks";
8
7
  import { enumToObjectEntries } from "../../util";
9
- import { ContentCopyIcon, IconButton, OpenInNewIcon, Select, SelectItem, TextField, Tooltip } from "@firecms/ui";
8
+ import {
9
+ CircularProgress,
10
+ ContentCopyIcon,
11
+ IconButton,
12
+ OpenInNewIcon,
13
+ Select,
14
+ SelectItem,
15
+ TextField,
16
+ Tooltip,
17
+ Typography
18
+ } from "@firecms/ui";
10
19
  import { EnumValuesChip } from "../../preview";
11
20
  import { useCustomizationController } from "../../hooks/useCustomizationController";
12
21
  import { CustomizationController } from "../../types/customization_controller";
22
+ import { useFormex } from "@firecms/formex";
13
23
 
14
24
  export function CustomIdField<M extends Record<string, any>>({
15
25
  customId,
@@ -17,16 +27,19 @@ export function CustomIdField<M extends Record<string, any>>({
17
27
  status,
18
28
  onChange,
19
29
  error,
20
- entity
30
+ entity,
31
+ loading
21
32
  }: {
22
33
  customId?: boolean | EnumValues | "optional"
23
34
  entityId?: string
24
35
  status: EntityStatus,
25
36
  onChange: (id?: string) => void,
26
37
  error: boolean,
27
- entity: Entity<M> | undefined
38
+ entity: Entity<M> | undefined,
39
+ loading: boolean
28
40
  }) {
29
41
 
42
+ const { errors } = useFormex();
30
43
  const disabled = status === "existing" || !customId;
31
44
  const idSetAutomatically = status !== "existing" && !customId;
32
45
 
@@ -48,36 +61,38 @@ export function CustomIdField<M extends Record<string, any>>({
48
61
 
49
62
  const fieldProps = {
50
63
  label: idSetAutomatically ? "ID is set automatically" : "ID",
51
- disabled,
64
+ disabled: disabled || loading,
52
65
  name: "id",
53
66
  value: (entity && status === "existing" ? entity.id : entityId) ?? "",
54
- endAdornment: entity
55
- ? (
56
- <>
57
-
58
- <Tooltip title={"Copy"}>
59
- <IconButton onClick={(e) => copy(entity.id)}
60
- aria-label="copy-id">
61
- <ContentCopyIcon size={"small"}/>
62
- </IconButton>
63
- </Tooltip>
64
-
65
- {customizationController?.entityLinkBuilder &&
66
- <Tooltip title={"Open in the console"}>
67
- <IconButton component={"a"}
68
- href={customizationController.entityLinkBuilder({ entity })}
69
- rel="noopener noreferrer"
70
- target="_blank"
71
- onClick={(e) => e.stopPropagation()}
72
- aria-label="go-to-datasource">
73
- <OpenInNewIcon size={"small"}/>
67
+ endAdornment: loading ? <CircularProgress size={"small"}/> : (entity
68
+ ? (
69
+ <>
70
+
71
+ <Tooltip title={"Copy"}
72
+ asChild={true}>
73
+ <IconButton onClick={(e) => copy(entity.id)}
74
+ aria-label="copy-id">
75
+ <ContentCopyIcon size={"small"}/>
74
76
  </IconButton>
75
- </Tooltip>}
76
-
77
- </>
78
- )
79
- : undefined
80
-
77
+ </Tooltip>
78
+
79
+ {customizationController?.entityLinkBuilder &&
80
+ <Tooltip title={"Open in the console"}
81
+ asChild={true}>
82
+ <IconButton component={"a"}
83
+ href={customizationController.entityLinkBuilder({ entity })}
84
+ rel="noopener noreferrer"
85
+ target="_blank"
86
+ onClick={(e) => e.stopPropagation()}
87
+ aria-label="go-to-datasource">
88
+ <OpenInNewIcon size={"small"}/>
89
+ </IconButton>
90
+ </Tooltip>}
91
+
92
+ </>
93
+ )
94
+ : undefined
95
+ )
81
96
  };
82
97
 
83
98
  return (
@@ -116,10 +131,10 @@ export function CustomIdField<M extends Record<string, any>>({
116
131
  return onChange(value.length ? value : undefined);
117
132
  }}/>}
118
133
 
119
- <ErrorMessage name={"id"}
120
- component="div">
121
- {(_) => "You need to specify an ID"}
122
- </ErrorMessage>
134
+ {errors.id && <Typography variant={"caption"}
135
+ className={"ml-3.5 text-red-500 dark:text-red-500"}>
136
+ {errors.id}
137
+ </Typography>}
123
138
 
124
139
  </>
125
140
  );
@@ -1,11 +1,11 @@
1
1
  import React, { useEffect } from "react";
2
- import { useFormikContext } from "formik";
2
+ import { useFormex } from "@firecms/formex";
3
3
 
4
4
  export const ErrorFocus = ({ containerRef }:
5
5
  {
6
6
  containerRef?: React.RefObject<HTMLDivElement>
7
7
  }) => {
8
- const { isSubmitting, isValidating, errors } = useFormikContext();
8
+ const { isSubmitting, isValidating, errors } = useFormex();
9
9
 
10
10
  useEffect(() => {
11
11
  const keys = Object.keys(errors);
@@ -21,7 +21,7 @@ export const ErrorFocus = ({ containerRef }:
21
21
  if (scrollableParent) {
22
22
  const top = errorElement.getBoundingClientRect().top;
23
23
  scrollableParent.scrollTo({
24
- top: scrollableParent.scrollTop + top - 64,
24
+ top: scrollableParent.scrollTop + top - 196,
25
25
  behavior: "smooth"
26
26
  });
27
27
  }
@@ -1,4 +1,4 @@
1
- import { ResolvedProperty } from "../../types";
1
+ import { Property, ResolvedProperty } from "../../types";
2
2
  import { IconButton, InfoIcon, Tooltip, Typography } from "@firecms/ui";
3
3
 
4
4
  /**
@@ -13,8 +13,8 @@ export function FieldHelperText({
13
13
  disabled
14
14
  }: {
15
15
  error?: string,
16
- showError: boolean,
17
- property: ResolvedProperty,
16
+ showError?: boolean,
17
+ property: ResolvedProperty | Property,
18
18
  includeDescription?: boolean,
19
19
  disabled?: boolean,
20
20
  }
@@ -44,7 +44,7 @@ export function FieldHelperText({
44
44
  {property.longDescription &&
45
45
  <Tooltip title={property.longDescription}
46
46
  side="bottom"
47
- >
47
+ asChild={true}>
48
48
  <IconButton
49
49
  size={"small"}
50
50
  className="self-start">
@@ -12,6 +12,7 @@ interface ArrayContainerProps<T> {
12
12
  includeAddButton?: boolean;
13
13
  newDefaultEntry?: T | null;
14
14
  setFieldValue: (field: string, value: any, shouldValidate?: boolean | undefined) => void;
15
+ className?: string;
15
16
  }
16
17
 
17
18
  /**
@@ -27,7 +28,8 @@ export function FormikArrayContainer<T>({
27
28
  onInternalIdAdded,
28
29
  includeAddButton,
29
30
  newDefaultEntry = null,
30
- setFieldValue
31
+ setFieldValue,
32
+ className
31
33
  }: ArrayContainerProps<T>) {
32
34
 
33
35
  return <ArrayContainer droppableId={name}
@@ -39,6 +41,7 @@ export function FormikArrayContainer<T>({
39
41
  onInternalIdAdded={onInternalIdAdded}
40
42
  includeAddButton={includeAddButton}
41
43
  newDefaultEntry={newDefaultEntry}
44
+ className={className}
42
45
  onValueChange={(value) => setFieldValue(name, value)}
43
46
  />;
44
47
  }
@@ -0,0 +1,41 @@
1
+ import React, { forwardRef } from "react";
2
+
3
+ interface LabelWithIconProps {
4
+ icon: React.ReactNode;
5
+ title?: string;
6
+ small?: boolean;
7
+ className?: string;
8
+ required?: boolean;
9
+ }
10
+
11
+ /**
12
+ * Render the label of with an icon and the title of a property
13
+ * @group Form custom fields
14
+ */
15
+ export const LabelWithIcon = forwardRef<HTMLDivElement, LabelWithIconProps>(
16
+ ({
17
+ icon,
18
+ title,
19
+ small,
20
+ className,
21
+ required
22
+ }, ref) => {
23
+ return (
24
+ <div
25
+ ref={ref}
26
+ className={`inline-flex items-center my-0.5 ${small ? "gap-1" : "gap-2"} ${className ?? ""}`}
27
+ >
28
+ {icon}
29
+ <span
30
+ className={`text-start font-medium text-${small ? "base" : "sm"} origin-top-left transform ${
31
+ small ? "translate-x-2 scale-75" : ""
32
+ }`}
33
+ >
34
+ {(title ?? "") + (required ? " *" : "")}
35
+ </span>
36
+ </div>
37
+ );
38
+ }
39
+ );
40
+
41
+ LabelWithIcon.displayName = "LabelWithIcon";
@@ -0,0 +1,28 @@
1
+ import React from "react";
2
+ import { LabelWithIcon } from "./LabelWithIcon";
3
+ import { PropertyIdCopyTooltip } from "../../components/PropertyIdCopyTooltip";
4
+
5
+ interface LabelWithIconAndTooltip {
6
+ icon: React.ReactNode;
7
+ title?: string;
8
+ small?: boolean;
9
+ className?: string;
10
+ required?: boolean;
11
+ propertyKey: string
12
+ }
13
+
14
+ /**
15
+ * Render the label of with an icon and the title of a property
16
+ * @group Form custom fields
17
+ */
18
+ export function LabelWithIconAndTooltip({
19
+ propertyKey,
20
+ className,
21
+ ...props
22
+ }: LabelWithIconAndTooltip) {
23
+ return (
24
+ <PropertyIdCopyTooltip propertyKey={propertyKey} className={className}>
25
+ <LabelWithIcon {...props}/>
26
+ </PropertyIdCopyTooltip>
27
+ );
28
+ }
@@ -1,41 +1,45 @@
1
1
  import React from "react";
2
2
 
3
- import { Entity, ResolvedStringProperty } from "../../types";
3
+ import { ResolvedStringProperty } from "../../types";
4
4
  import { PreviewSize, PropertyPreview } from "../../preview";
5
5
 
6
- import { cn, IconButton, paperMixin, RemoveIcon, Tooltip } from "@firecms/ui";
6
+ import { cls, DescriptionIcon, IconButton, paperMixin, RemoveIcon, Tooltip } from "@firecms/ui";
7
7
  import { ErrorBoundary } from "../../components";
8
8
 
9
9
  interface StorageItemPreviewProps {
10
10
  name: string;
11
11
  property: ResolvedStringProperty;
12
12
  value: string,
13
- entity: Entity<any>,
14
13
  onRemove: (value: string) => void;
15
14
  size: PreviewSize;
16
15
  disabled: boolean;
16
+ placeholder?: boolean;
17
+ className?: string;
17
18
  }
18
19
 
19
20
  export function StorageItemPreview({
20
21
  name,
21
22
  property,
22
23
  value,
23
- entity,
24
24
  onRemove,
25
25
  disabled,
26
- size
26
+ size,
27
+ placeholder,
28
+ className
27
29
  }: StorageItemPreviewProps) {
28
30
 
29
31
  return (
30
- <div className={cn(paperMixin,
32
+ <div className={cls(paperMixin,
31
33
  "relative m-4 border-box flex items-center justify-center",
32
- size === "medium" ? "min-w-[220px] min-h-[220px] max-w-[220px]" : "min-w-[118px] min-h-[118px] max-w-[118px]")}>
34
+ size === "medium" ? "min-w-[220px] min-h-[220px] max-w-[220px]" : "min-w-[118px] min-h-[118px] max-w-[118px]",
35
+ className)}>
33
36
 
34
- {!disabled &&
37
+ {!placeholder && !disabled &&
35
38
  <div
36
39
  className="absolute rounded-full -top-2 -right-2 z-10 bg-white dark:bg-gray-900">
37
40
 
38
41
  <Tooltip
42
+ asChild={true}
39
43
  title="Remove">
40
44
  <IconButton
41
45
  size={"small"}
@@ -49,16 +53,24 @@ export function StorageItemPreview({
49
53
  </div>
50
54
  }
51
55
 
52
- {value &&
56
+ {!placeholder && value &&
53
57
  <ErrorBoundary>
54
58
  <PropertyPreview propertyKey={name}
55
59
  value={value}
56
60
  property={property}
57
- // entity={entity}
61
+ interactive={false}
58
62
  size={size}/>
59
63
  </ErrorBoundary>
60
64
  }
61
65
 
66
+ {placeholder &&
67
+ <div
68
+ onClick={(e) => e.stopPropagation()}
69
+ className="flex flex-col items-center justify-center w-full h-full">
70
+ <DescriptionIcon className="text-gray-700 dark:text-gray-300"/>
71
+ </div>
72
+ }
73
+
62
74
 
63
75
  </div>
64
76
  );
@@ -3,7 +3,7 @@ import React, { useCallback } from "react";
3
3
  import { useSnackbarController, useStorageSource } from "../../hooks";
4
4
  import { StorageFieldItem } from "../../util/useStorageUploadController";
5
5
  import { ErrorView } from "../../components";
6
- import { cn, paperMixin, Skeleton } from "@firecms/ui";
6
+ import { cls, paperMixin, Skeleton } from "@firecms/ui";
7
7
 
8
8
  export interface StorageUploadItemProps {
9
9
  storagePath: string;
@@ -22,10 +22,10 @@ export function StorageUploadProgress({
22
22
  metadata,
23
23
  onFileUploadComplete,
24
24
  imageSize,
25
- simple
25
+ simple,
26
26
  }: StorageUploadItemProps) {
27
27
 
28
- const storage = useStorageSource();
28
+ const storageSource = useStorageSource();
29
29
 
30
30
  const snackbarController = useSnackbarController();
31
31
 
@@ -41,14 +41,14 @@ export function StorageUploadProgress({
41
41
  setError(undefined);
42
42
  setLoading(true);
43
43
 
44
- storage.uploadFile({
44
+ storageSource.uploadFile({
45
45
  file,
46
46
  fileName,
47
47
  path: storagePath,
48
48
  metadata
49
49
  })
50
50
  .then(async ({ path }) => {
51
- console.debug("Upload successful");
51
+ console.debug("Upload successful", path);
52
52
  await onFileUploadComplete(path, entry, metadata);
53
53
  if (mounted.current)
54
54
  setLoading(false);
@@ -67,7 +67,7 @@ export function StorageUploadProgress({
67
67
  .finally(() => {
68
68
  uploading.current = false;
69
69
  });
70
- }, [entry, metadata, onFileUploadComplete, storage, storagePath]);
70
+ }, [entry, metadata, onFileUploadComplete, storageSource, storagePath]);
71
71
 
72
72
  React.useEffect(() => {
73
73
  mounted.current = true;
@@ -87,9 +87,9 @@ export function StorageUploadProgress({
87
87
  }
88
88
  return (
89
89
 
90
- <div className={cn(paperMixin,
90
+ <div className={cls(paperMixin,
91
91
  "relative m-4 border-box flex items-center justify-center",
92
- `min-w-[${imageSize}px] min-h-[${imageSize}px]`)}>
92
+ `min-w-[${imageSize}px] min-h-[${imageSize}px]`)}>
93
93
 
94
94
  {loading &&
95
95
  <Skeleton className="w-full h-full"/>}
@@ -1,3 +1,4 @@
1
1
  export * from "./FormikArrayContainer";
2
- export * from "./SwitchControl";
3
2
  export * from "./FieldHelperText";
3
+ export * from "./LabelWithIcon";
4
+ export * from "./LabelWithIconAndTooltip";
@@ -1,11 +1,10 @@
1
1
  import React from "react";
2
2
  import { FieldProps } from "../../types";
3
- import { FieldHelperText } from "../components";
3
+ import { FieldHelperText, LabelWithIconAndTooltip } from "../components";
4
4
  import { PropertyFieldBinding } from "../PropertyFieldBinding";
5
- import { useClearRestoreValue } from "../../hooks";
6
- import { ExpandablePanel } from "@firecms/ui";
7
- import { getIconForProperty } from "../../util";
8
- import { LabelWithIcon } from "../../components";
5
+ import { ExpandablePanel, Typography } from "@firecms/ui";
6
+ import { getArrayResolvedProperties, getIconForProperty } from "../../util";
7
+ import { useClearRestoreValue } from "../useClearRestoreValue";
9
8
 
10
9
  /**
11
10
  * Array field used for custom
@@ -21,7 +20,7 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
21
20
  showError,
22
21
  isSubmitting,
23
22
  setValue,
24
- tableMode,
23
+ minimalistView,
25
24
  property,
26
25
  includeDescription,
27
26
  underlyingValueHasChanged,
@@ -29,8 +28,15 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
29
28
  disabled
30
29
  }: FieldProps<T, any, any>) {
31
30
 
32
- if (!Array.isArray(property.resolvedProperties))
33
- throw Error("ArrayCustomShapedFieldBinding misconfiguration. Property `of` not set");
31
+ let resolvedProperties = "resolvedProperties" in property ? property.resolvedProperties : undefined;
32
+ if (!resolvedProperties) {
33
+ resolvedProperties = getArrayResolvedProperties({
34
+ propertyValue: value,
35
+ propertyKey,
36
+ property,
37
+ ignoreMissingFields: false
38
+ })
39
+ }
34
40
 
35
41
  const expanded = property.expanded === undefined ? true : property.expanded;
36
42
 
@@ -40,12 +46,17 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
40
46
  setValue
41
47
  });
42
48
 
43
- const title = <LabelWithIcon icon={getIconForProperty(property, "small")}
44
- required={property.validation?.required}
45
- className={"text-text-secondary dark:text-text-secondary-dark"}
46
- title={property.name}/>;
49
+ const title = (<>
50
+ <LabelWithIconAndTooltip
51
+ propertyKey={propertyKey}
52
+ icon={getIconForProperty(property, "small")}
53
+ required={property.validation?.required}
54
+ title={property.name}
55
+ className={"flex-grow text-text-secondary dark:text-text-secondary-dark"}/>
56
+ {Array.isArray(value) && <Typography variant={"caption"} className={"px-4"}>({value.length})</Typography>}
57
+ </>);
47
58
 
48
- const body = property.resolvedProperties.map((childProperty, index) => {
59
+ const body = resolvedProperties.map((childProperty, index) => {
49
60
  const fieldProps = {
50
61
  propertyKey: `${propertyKey}[${index}]`,
51
62
  disabled,
@@ -53,9 +64,8 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
53
64
  includeDescription,
54
65
  underlyingValueHasChanged,
55
66
  context,
56
- tableMode: false,
57
67
  partOfArray: true,
58
- partOfBlock: false,
68
+ minimalistView: false,
59
69
  autoFocus: false
60
70
  };
61
71
  return <div key={`custom_shaped_array_${index}`} className="pb-4">
@@ -67,14 +77,14 @@ export function ArrayCustomShapedFieldBinding<T extends Array<any>>({
67
77
 
68
78
  <>
69
79
 
70
- {!tableMode &&
80
+ {!minimalistView &&
71
81
  <ExpandablePanel initiallyExpanded={expanded}
72
82
  title={title}
73
- className={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
83
+ innerClassName={"px-2 md:px-4 pb-2 md:pb-4 pt-1 md:pt-2"}>
74
84
  {body}
75
85
  </ExpandablePanel>}
76
86
 
77
- {tableMode && body}
87
+ {minimalistView && body}
78
88
 
79
89
  <FieldHelperText includeDescription={includeDescription}
80
90
  showError={showError}