@firecms/core 3.0.0-canary.1 → 3.0.0-canary.100

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 (301) hide show
  1. package/README.md +2 -2
  2. package/dist/app/AppBar.d.ts +12 -0
  3. package/dist/app/Drawer.d.ts +17 -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/CircularProgressCenter.d.ts +1 -1
  8. package/dist/components/ClearFilterSortButton.d.ts +5 -0
  9. package/dist/components/EntityCollectionTable/EntityCollectionRowActions.d.ts +11 -12
  10. package/dist/components/EntityCollectionTable/EntityCollectionTable.d.ts +2 -2
  11. package/dist/components/EntityCollectionTable/EntityCollectionTableProps.d.ts +5 -3
  12. package/dist/components/EntityCollectionTable/PropertyTableCell.d.ts +3 -2
  13. package/dist/components/EntityCollectionTable/column_utils.d.ts +1 -2
  14. package/dist/components/EntityCollectionTable/fields/TableReferenceField.d.ts +2 -0
  15. package/dist/components/EntityCollectionTable/internal/CollectionTableToolbar.d.ts +1 -4
  16. package/dist/components/EntityCollectionTable/internal/EntityTableCell.d.ts +2 -2
  17. package/dist/components/EntityCollectionTable/internal/popup_field/PopupFormField.d.ts +1 -1
  18. package/dist/components/EntityCollectionView/EntityCollectionView.d.ts +13 -4
  19. package/dist/components/EntityCollectionView/EntityCollectionViewStartActions.d.ts +11 -0
  20. package/dist/components/EntityCollectionView/useSelectionController.d.ts +2 -0
  21. package/dist/components/EntityPreview.d.ts +26 -7
  22. package/dist/components/EntityView.d.ts +11 -0
  23. package/dist/components/ErrorView.d.ts +1 -1
  24. package/dist/components/FieldCaption.d.ts +5 -0
  25. package/dist/components/HomePage/DefaultHomePage.d.ts +1 -1
  26. package/dist/components/HomePage/NavigationCard.d.ts +8 -0
  27. package/dist/components/HomePage/{NavigationCollectionCard.d.ts → NavigationCardBinding.d.ts} +3 -3
  28. package/dist/components/HomePage/SmallNavigationCard.d.ts +6 -0
  29. package/dist/components/HomePage/index.d.ts +3 -1
  30. package/dist/components/ReferenceWidget.d.ts +6 -4
  31. package/dist/components/SelectableTable/SelectableTable.d.ts +1 -1
  32. package/dist/components/SelectableTable/filters/ReferenceFilterField.d.ts +2 -1
  33. package/dist/components/VirtualTable/VirtualTableProps.d.ts +16 -13
  34. package/dist/components/VirtualTable/types.d.ts +3 -3
  35. package/dist/components/{EntityCollectionTable/internal → common}/default_entity_actions.d.ts +1 -1
  36. package/dist/components/common/index.d.ts +1 -0
  37. package/dist/components/common/table_height.d.ts +5 -0
  38. package/dist/components/common/types.d.ts +4 -6
  39. package/dist/components/common/useColumnsIds.d.ts +2 -1
  40. package/dist/components/common/useDataSourceEntityCollectionTableController.d.ts +3 -0
  41. package/dist/components/index.d.ts +6 -4
  42. package/dist/contexts/AuthControllerContext.d.ts +1 -1
  43. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +6 -9
  44. package/dist/core/DefaultDrawer.d.ts +19 -0
  45. package/dist/core/DrawerNavigationItem.d.ts +9 -0
  46. package/dist/core/EntityEditView.d.ts +36 -0
  47. package/dist/core/FireCMS.d.ts +1 -1
  48. package/dist/core/NavigationRoutes.d.ts +3 -3
  49. package/dist/core/index.d.ts +3 -6
  50. package/dist/form/PropertiesForm.d.ts +8 -0
  51. package/dist/form/PropertyFieldBinding.d.ts +1 -1
  52. package/dist/form/components/ErrorFocus.d.ts +1 -1
  53. package/dist/form/components/FieldHelperText.d.ts +3 -3
  54. package/dist/form/components/StorageItemPreview.d.ts +4 -3
  55. package/dist/form/components/StorageUploadProgress.d.ts +1 -1
  56. package/dist/form/components/index.d.ts +1 -0
  57. package/dist/form/field_bindings/KeyValueFieldBinding.d.ts +1 -1
  58. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  59. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +3 -4
  60. package/dist/form/field_bindings/TextFieldBinding.d.ts +2 -2
  61. package/dist/form/index.d.ts +1 -2
  62. package/dist/form/validation.d.ts +1 -1
  63. package/dist/hooks/data/delete.d.ts +2 -2
  64. package/dist/hooks/data/save.d.ts +2 -3
  65. package/dist/hooks/data/useDataSource.d.ts +2 -2
  66. package/dist/hooks/data/useEntityFetch.d.ts +3 -3
  67. package/dist/hooks/index.d.ts +4 -1
  68. package/dist/{core → hooks}/useBuildModeController.d.ts +1 -1
  69. package/dist/hooks/useBuildNavigationController.d.ts +6 -4
  70. package/dist/hooks/useProjectLog.d.ts +6 -2
  71. package/dist/hooks/useStorageSource.d.ts +2 -2
  72. package/dist/hooks/useValidateAuthenticator.d.ts +21 -0
  73. package/dist/index.d.ts +1 -0
  74. package/dist/index.es.js +16400 -12423
  75. package/dist/index.es.js.map +1 -1
  76. package/dist/index.umd.js +19713 -7
  77. package/dist/index.umd.js.map +1 -1
  78. package/dist/internal/useBuildDataSource.d.ts +1 -12
  79. package/dist/preview/PropertyPreview.d.ts +1 -1
  80. package/dist/preview/PropertyPreviewProps.d.ts +6 -4
  81. package/dist/preview/components/BooleanPreview.d.ts +5 -1
  82. package/dist/preview/components/EnumValuesChip.d.ts +1 -1
  83. package/dist/preview/components/ReferencePreview.d.ts +3 -8
  84. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  85. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  86. package/dist/types/analytics.d.ts +1 -1
  87. package/dist/types/auth.d.ts +38 -2
  88. package/dist/types/collections.d.ts +45 -8
  89. package/dist/types/datasource.d.ts +34 -20
  90. package/dist/types/entities.d.ts +6 -1
  91. package/dist/types/entity_actions.d.ts +14 -0
  92. package/dist/types/entity_callbacks.d.ts +2 -2
  93. package/dist/types/entity_overrides.d.ts +6 -0
  94. package/dist/types/fields.d.ts +36 -30
  95. package/dist/types/index.d.ts +2 -1
  96. package/dist/types/navigation.d.ts +15 -14
  97. package/dist/types/permissions.d.ts +5 -1
  98. package/dist/types/plugins.d.ts +31 -23
  99. package/dist/types/properties.d.ts +34 -21
  100. package/dist/types/property_config.d.ts +2 -2
  101. package/dist/types/roles.d.ts +31 -0
  102. package/dist/types/storage.d.ts +11 -3
  103. package/dist/types/user.d.ts +5 -0
  104. package/dist/util/collections.d.ts +9 -1
  105. package/dist/util/entities.d.ts +1 -1
  106. package/dist/util/icon_list.d.ts +5 -1
  107. package/dist/util/icon_synonyms.d.ts +1 -97
  108. package/dist/util/icons.d.ts +9 -3
  109. package/dist/util/index.d.ts +1 -0
  110. package/dist/util/navigation_utils.d.ts +2 -2
  111. package/dist/util/objects.d.ts +1 -1
  112. package/dist/util/permissions.d.ts +4 -4
  113. package/dist/util/plurals.d.ts +0 -2
  114. package/dist/util/references.d.ts +4 -2
  115. package/dist/util/resolutions.d.ts +15 -14
  116. package/dist/util/storage.d.ts +23 -2
  117. package/dist/util/useStorageUploadController.d.ts +1 -1
  118. package/dist/util/useTraceUpdate.d.ts +1 -0
  119. package/package.json +128 -119
  120. package/src/app/AppBar.tsx +18 -0
  121. package/src/app/Drawer.tsx +25 -0
  122. package/src/app/Scaffold.tsx +251 -0
  123. package/src/app/index.ts +4 -0
  124. package/src/app/useApp.tsx +32 -0
  125. package/src/components/ArrayContainer.tsx +1 -1
  126. package/src/components/CircularProgressCenter.tsx +1 -1
  127. package/src/components/ClearFilterSortButton.tsx +41 -0
  128. package/src/components/DeleteEntityDialog.tsx +4 -4
  129. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +11 -21
  130. package/src/components/EntityCollectionTable/EntityCollectionTable.tsx +276 -279
  131. package/src/components/EntityCollectionTable/EntityCollectionTableProps.tsx +9 -5
  132. package/src/components/EntityCollectionTable/PropertyTableCell.tsx +49 -45
  133. package/src/components/EntityCollectionTable/column_utils.tsx +3 -3
  134. package/src/components/EntityCollectionTable/fields/TableReferenceField.tsx +20 -18
  135. package/src/components/EntityCollectionTable/fields/TableStorageUpload.tsx +17 -9
  136. package/src/components/EntityCollectionTable/internal/CollectionTableToolbar.tsx +29 -34
  137. package/src/components/EntityCollectionTable/internal/EntityTableCell.tsx +16 -12
  138. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +4 -5
  139. package/src/components/EntityCollectionView/EntityCollectionView.tsx +95 -92
  140. package/src/components/EntityCollectionView/EntityCollectionViewActions.tsx +5 -6
  141. package/src/components/EntityCollectionView/EntityCollectionViewStartActions.tsx +68 -0
  142. package/src/components/EntityCollectionView/useSelectionController.tsx +42 -0
  143. package/src/components/EntityPreview.tsx +210 -70
  144. package/src/components/EntityView.tsx +84 -0
  145. package/src/components/ErrorView.tsx +1 -1
  146. package/src/components/FieldCaption.tsx +14 -0
  147. package/src/components/HomePage/DefaultHomePage.tsx +37 -24
  148. package/src/components/HomePage/NavigationCard.tsx +69 -0
  149. package/src/components/HomePage/NavigationCardBinding.tsx +116 -0
  150. package/src/components/HomePage/SmallNavigationCard.tsx +45 -0
  151. package/src/components/HomePage/index.tsx +3 -1
  152. package/src/components/PropertyIdCopyTooltipContent.tsx +2 -3
  153. package/src/components/ReferenceTable/ReferenceSelectionTable.tsx +4 -4
  154. package/src/components/ReferenceWidget.tsx +26 -16
  155. package/src/components/SearchIconsView.tsx +9 -6
  156. package/src/components/SelectableTable/SelectableTable.tsx +7 -7
  157. package/src/components/SelectableTable/filters/BooleanFilterField.tsx +2 -3
  158. package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +22 -7
  159. package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +38 -24
  160. package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +35 -15
  161. package/src/components/VirtualTable/VirtualTable.tsx +70 -37
  162. package/src/components/VirtualTable/VirtualTableCell.tsx +1 -1
  163. package/src/components/VirtualTable/VirtualTableHeader.tsx +4 -4
  164. package/src/components/VirtualTable/VirtualTableHeaderRow.tsx +2 -2
  165. package/src/components/VirtualTable/VirtualTableProps.tsx +19 -15
  166. package/src/components/VirtualTable/VirtualTableRow.tsx +4 -5
  167. package/src/components/VirtualTable/fields/VirtualTableDateField.tsx +1 -1
  168. package/src/components/VirtualTable/types.tsx +2 -3
  169. package/src/components/{EntityCollectionTable/internal → common}/default_entity_actions.tsx +11 -7
  170. package/src/components/common/index.ts +1 -0
  171. package/src/components/{VirtualTable/common.tsx → common/table_height.tsx} +5 -2
  172. package/src/components/common/types.tsx +4 -6
  173. package/src/components/common/useColumnsIds.tsx +23 -2
  174. package/src/components/common/useDataSourceEntityCollectionTableController.tsx +12 -1
  175. package/src/components/common/useTableSearchHelper.ts +52 -12
  176. package/src/components/index.tsx +6 -4
  177. package/src/contexts/AuthControllerContext.tsx +1 -1
  178. package/src/contexts/DialogsProvider.tsx +2 -2
  179. package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +60 -37
  180. package/src/core/DefaultDrawer.tsx +177 -0
  181. package/src/core/DrawerNavigationItem.tsx +62 -0
  182. package/src/core/EntityEditView.tsx +1130 -0
  183. package/src/core/EntitySidePanel.tsx +3 -4
  184. package/src/core/FireCMS.tsx +55 -44
  185. package/src/core/NavigationRoutes.tsx +15 -8
  186. package/src/core/SideDialogs.tsx +1 -0
  187. package/src/core/field_configs.tsx +2 -3
  188. package/src/core/index.tsx +3 -6
  189. package/src/form/PropertiesForm.tsx +81 -0
  190. package/src/form/PropertyFieldBinding.tsx +38 -9
  191. package/src/form/components/FieldHelperText.tsx +3 -3
  192. package/src/form/components/StorageItemPreview.tsx +21 -10
  193. package/src/form/components/StorageUploadProgress.tsx +9 -8
  194. package/src/form/components/index.tsx +1 -0
  195. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +10 -8
  196. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +18 -18
  197. package/src/form/field_bindings/BlockFieldBinding.tsx +4 -5
  198. package/src/form/field_bindings/DateTimeFieldBinding.tsx +3 -3
  199. package/src/form/field_bindings/KeyValueFieldBinding.tsx +62 -57
  200. package/src/form/field_bindings/MapFieldBinding.tsx +28 -20
  201. package/src/form/field_bindings/MarkdownFieldBinding.tsx +3 -4
  202. package/src/form/field_bindings/MultiSelectBinding.tsx +2 -3
  203. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +4 -11
  204. package/src/form/field_bindings/ReferenceFieldBinding.tsx +21 -17
  205. package/src/form/field_bindings/RepeatFieldBinding.tsx +14 -11
  206. package/src/form/field_bindings/SelectFieldBinding.tsx +5 -6
  207. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +28 -40
  208. package/src/form/field_bindings/SwitchFieldBinding.tsx +3 -4
  209. package/src/form/field_bindings/TextFieldBinding.tsx +10 -9
  210. package/src/form/index.tsx +5 -4
  211. package/src/form/validation.ts +4 -21
  212. package/src/hooks/data/delete.ts +3 -3
  213. package/src/hooks/data/save.ts +4 -2
  214. package/src/hooks/data/useCollectionFetch.tsx +1 -1
  215. package/src/hooks/data/useDataSource.tsx +7 -2
  216. package/src/hooks/data/useEntityFetch.tsx +4 -4
  217. package/src/hooks/index.tsx +6 -1
  218. package/src/{core → hooks}/useBuildLocalConfigurationPersistence.tsx +8 -10
  219. package/src/{core → hooks}/useBuildModeController.tsx +12 -6
  220. package/src/hooks/useBuildNavigationController.tsx +208 -92
  221. package/src/hooks/useProjectLog.tsx +30 -9
  222. package/src/hooks/useReferenceDialog.tsx +2 -2
  223. package/src/hooks/useResolvedNavigationFrom.tsx +1 -1
  224. package/src/hooks/useStorageSource.tsx +7 -2
  225. package/src/hooks/useValidateAuthenticator.tsx +115 -0
  226. package/src/index.ts +1 -0
  227. package/src/internal/useBuildDataSource.ts +56 -44
  228. package/src/internal/useBuildSideEntityController.tsx +88 -21
  229. package/src/preview/PropertyPreview.tsx +11 -18
  230. package/src/preview/PropertyPreviewProps.tsx +4 -8
  231. package/src/preview/components/BooleanPreview.tsx +19 -4
  232. package/src/preview/components/EnumValuesChip.tsx +2 -2
  233. package/src/preview/components/ImagePreview.tsx +21 -33
  234. package/src/preview/components/ReferencePreview.tsx +74 -166
  235. package/src/preview/components/StorageThumbnail.tsx +5 -1
  236. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  237. package/src/preview/property_previews/ArrayOfMapsPreview.tsx +0 -1
  238. package/src/preview/property_previews/ArrayOfReferencesPreview.tsx +2 -1
  239. package/src/preview/property_previews/ArrayOfStorageComponentsPreview.tsx +0 -1
  240. package/src/preview/property_previews/ArrayOfStringsPreview.tsx +0 -1
  241. package/src/preview/property_previews/ArrayOneOfPreview.tsx +2 -3
  242. package/src/preview/property_previews/ArrayPropertyPreview.tsx +2 -3
  243. package/src/preview/property_previews/MapPropertyPreview.tsx +5 -5
  244. package/src/preview/property_previews/StringPropertyPreview.tsx +8 -7
  245. package/src/types/analytics.ts +1 -0
  246. package/src/types/auth.tsx +51 -2
  247. package/src/types/collections.ts +52 -8
  248. package/src/types/customization_controller.tsx +0 -1
  249. package/src/types/datasource.ts +41 -24
  250. package/src/types/entities.ts +13 -1
  251. package/src/types/entity_actions.tsx +17 -0
  252. package/src/types/entity_callbacks.ts +2 -2
  253. package/src/types/entity_overrides.tsx +7 -0
  254. package/src/types/fields.tsx +39 -33
  255. package/src/types/firecms.tsx +0 -1
  256. package/src/types/index.ts +2 -1
  257. package/src/types/navigation.ts +17 -17
  258. package/src/types/permissions.ts +6 -1
  259. package/src/types/plugins.tsx +38 -31
  260. package/src/types/properties.ts +40 -22
  261. package/src/types/property_config.tsx +2 -2
  262. package/src/types/roles.ts +41 -0
  263. package/src/types/side_entity_controller.tsx +1 -0
  264. package/src/types/storage.ts +12 -3
  265. package/src/types/user.ts +7 -0
  266. package/src/util/collections.ts +22 -0
  267. package/src/util/entities.ts +5 -4
  268. package/src/util/enums.ts +1 -1
  269. package/src/util/icon_list.ts +15 -10
  270. package/src/util/icon_synonyms.ts +3 -99
  271. package/src/util/icons.tsx +11 -3
  272. package/src/util/index.ts +1 -0
  273. package/src/util/navigation_utils.ts +6 -6
  274. package/src/util/objects.ts +25 -28
  275. package/src/util/permissions.ts +12 -8
  276. package/src/util/plurals.ts +0 -2
  277. package/src/util/references.ts +36 -5
  278. package/src/util/resolutions.ts +44 -39
  279. package/src/util/storage.ts +75 -21
  280. package/src/util/strings.ts +2 -2
  281. package/src/util/useStorageUploadController.tsx +21 -3
  282. package/src/util/useTraceUpdate.tsx +2 -1
  283. package/dist/components/VirtualTable/common.d.ts +0 -2
  284. package/dist/core/Drawer.d.ts +0 -23
  285. package/dist/core/Scaffold.d.ts +0 -55
  286. package/dist/form/EntityForm.d.ts +0 -77
  287. package/dist/internal/EntityView.d.ts +0 -22
  288. package/dist/internal/useBuildCustomizationController.d.ts +0 -2
  289. package/dist/internal/useLocaleConfig.d.ts +0 -1
  290. package/dist/types/appcheck.d.ts +0 -26
  291. package/src/components/HomePage/NavigationCollectionCard.tsx +0 -146
  292. package/src/core/Drawer.tsx +0 -164
  293. package/src/core/Scaffold.tsx +0 -281
  294. package/src/form/EntityForm.tsx +0 -720
  295. package/src/internal/EntityView.tsx +0 -578
  296. package/src/internal/useBuildCustomizationController.tsx +0 -5
  297. package/src/internal/useLocaleConfig.tsx +0 -18
  298. package/src/types/appcheck.ts +0 -29
  299. /package/dist/{components → form/components}/LabelWithIcon.d.ts +0 -0
  300. /package/dist/{core → hooks}/useBuildLocalConfigurationPersistence.d.ts +0 -0
  301. /package/src/{components → form/components}/LabelWithIcon.tsx +0 -0
@@ -1,55 +0,0 @@
1
- import React from "react";
2
- import { DrawerProps } from "./Drawer";
3
- import { FireCMSAppBarProps } from "../components";
4
- export declare const DRAWER_WIDTH = 280;
5
- /**
6
- * @group Core
7
- */
8
- export interface ScaffoldProps<ExtraDrawerProps = object, ExtraAppbarProps = object> {
9
- /**
10
- * Name of the app, displayed as the main title and in the tab title
11
- */
12
- name: string;
13
- /**
14
- * Logo to be displayed in the drawer of the CMS
15
- */
16
- logo?: string;
17
- /**
18
- * Whether to include the drawer in the scaffold
19
- */
20
- includeDrawer?: boolean;
21
- /**
22
- * In case you need to override the view that gets rendered as a drawer
23
- * @see DefaultDrawer
24
- */
25
- Drawer?: React.ComponentType<DrawerProps<ExtraDrawerProps>>;
26
- /**
27
- * Additional props passed to the custom Drawer
28
- */
29
- drawerProps?: Partial<DrawerProps> & ExtraDrawerProps;
30
- /**
31
- * Open the drawer on hover
32
- */
33
- autoOpenDrawer?: boolean;
34
- /**
35
- * A component that gets rendered on the upper side of the main toolbar.
36
- * `toolbarExtraWidget` has no effect if this is set.
37
- */
38
- FireCMSAppBar?: React.ComponentType<FireCMSAppBarProps<ExtraAppbarProps>>;
39
- /**
40
- * Additional props passed to the custom AppBar
41
- */
42
- fireCMSAppBarProps?: Partial<FireCMSAppBarProps> & ExtraAppbarProps;
43
- }
44
- /**
45
- * This view acts as a scaffold for FireCMS.
46
- *
47
- * It is in charge of displaying the navigation drawer, top bar and main
48
- * collection views.
49
- * This component needs a parent {@link FireCMS}
50
- *
51
- * @param props
52
- * @constructor
53
- * @group Core
54
- */
55
- export declare const Scaffold: React.NamedExoticComponent<React.PropsWithChildren<ScaffoldProps<object, object>>>;
@@ -1,77 +0,0 @@
1
- import { Entity, EntityCollection, EntityStatus, EntityValues, FormContext, ResolvedEntityCollection } from "../types";
2
- import { ValidationError } from "yup";
3
- /**
4
- * @group Components
5
- */
6
- export interface EntityFormProps<M extends Record<string, any>> {
7
- /**
8
- * New or existing status
9
- */
10
- status: EntityStatus;
11
- /**
12
- * Path of the collection this entity is located
13
- */
14
- path: string;
15
- /**
16
- * The collection is used to build the fields of the form
17
- */
18
- collection: EntityCollection<M>;
19
- /**
20
- * The updated entity is passed from the parent component when the underlying data
21
- * has changed in the datasource
22
- */
23
- entity?: Entity<M>;
24
- /**
25
- * The callback function called when Save is clicked and validation is correct
26
- */
27
- onEntitySaveRequested: (props: EntityFormSaveParams<M>) => Promise<void>;
28
- /**
29
- * The callback function called when discard is clicked
30
- */
31
- onDiscard?: () => void;
32
- /**
33
- * The callback function when the form is dirty, so the values are different
34
- * from the original ones
35
- */
36
- onModified?: (dirty: boolean) => void;
37
- /**
38
- * The callback function when the form original values have been modified
39
- */
40
- onValuesChanged?: (values?: EntityValues<M>) => void;
41
- /**
42
- *
43
- * @param id
44
- */
45
- onIdChange?: (id: string) => void;
46
- currentEntityId?: string;
47
- onFormContextChange?: (formContext: FormContext<M>) => void;
48
- hideId?: boolean;
49
- autoSave?: boolean;
50
- onIdUpdateError?: (error: any) => void;
51
- }
52
- export type EntityFormSaveParams<M extends Record<string, any>> = {
53
- collection: ResolvedEntityCollection<M>;
54
- path: string;
55
- entityId: string | undefined;
56
- values: EntityValues<M>;
57
- previousValues?: EntityValues<M>;
58
- closeAfterSave: boolean;
59
- autoSave: boolean;
60
- };
61
- /**
62
- * This is the form used internally by the CMS
63
- * @param status
64
- * @param path
65
- * @param collection
66
- * @param entity
67
- * @param onEntitySave
68
- * @param onDiscard
69
- * @param onModified
70
- * @param onValuesChanged
71
- * @constructor
72
- * @group Components
73
- */
74
- export declare const EntityForm: typeof EntityFormInternal;
75
- declare function EntityFormInternal<M extends Record<string, any>>({ status, path, collection: inputCollection, entity, onEntitySaveRequested, onDiscard, onModified, onValuesChanged, onIdChange, onFormContextChange, hideId, autoSave, onIdUpdateError }: EntityFormProps<M>): import("react/jsx-runtime").JSX.Element;
76
- export declare function yupToFormErrors(yupError: ValidationError): Record<string, any>;
77
- export {};
@@ -1,22 +0,0 @@
1
- import { Entity, EntityCollection, User } from "../types";
2
- export interface EntityViewProps<M extends Record<string, any>> {
3
- path: string;
4
- collection: EntityCollection<M>;
5
- entityId?: string;
6
- copy?: boolean;
7
- selectedSubPath?: string;
8
- parentCollectionIds: string[];
9
- formWidth?: number | string;
10
- onValuesAreModified: (modified: boolean) => void;
11
- onUpdate?: (params: {
12
- entity: Entity<any>;
13
- }) => void;
14
- onClose?: () => void;
15
- }
16
- /**
17
- * This is the default view that is used as the content of a side panel when
18
- * an entity is opened.
19
- * You probably don't want to use this view directly since it is bound to the
20
- * side panel. Instead, you might want to use {@link EntityForm} or {@link EntityCollectionView}
21
- */
22
- export declare function EntityView<M extends Record<string, any>, UserType extends User>({ path, entityId, selectedSubPath, copy, collection, parentCollectionIds, onValuesAreModified, formWidth, onUpdate, onClose }: EntityViewProps<M>): import("react/jsx-runtime").JSX.Element;
@@ -1,2 +0,0 @@
1
- import { CustomizationController } from "../types/customization_controller";
2
- export declare function useBuildCustomizationController(controller: CustomizationController): CustomizationController;
@@ -1 +0,0 @@
1
- export declare function useLocaleConfig(locale?: string): void;
@@ -1,26 +0,0 @@
1
- import { FirebaseApp } from "firebase/app";
2
- /**
3
- * @group Firebase
4
- */
5
- export interface AppCheck {
6
- firebaseApp?: FirebaseApp;
7
- }
8
- /**
9
- * @group Firebase
10
- */
11
- export interface AppCheckOptions {
12
- providerKey: string;
13
- useEnterpriseRecaptcha: boolean;
14
- isTokenAutoRefreshEnabled?: boolean;
15
- debugToken?: string;
16
- forceRefresh?: boolean;
17
- }
18
- /**
19
- * @group Firebase
20
- */
21
- export declare interface AppCheckTokenResult {
22
- /**
23
- * The token string in JWT format.
24
- */
25
- readonly token: string;
26
- }
@@ -1,146 +0,0 @@
1
- import { useNavigate } from "react-router-dom";
2
-
3
- import { useCustomizationController, useFireCMSContext } from "../../hooks";
4
- import { PluginHomePageActionsProps, TopNavigationEntry } from "../../types";
5
- import { IconForView } from "../../util";
6
- import { useUserConfigurationPersistence } from "../../hooks/useUserConfigurationPersistence";
7
- import { ArrowForwardIcon, Card, cn, IconButton, Markdown, StarBorderIcon, StarIcon, Typography } from "@firecms/ui";
8
-
9
- /**
10
- * This is the component used in the home page to render a card for each
11
- * collection.
12
- * @group Components
13
- * @param view
14
- * @param path
15
- * @param collection
16
- * @param url
17
- * @param name
18
- * @param description
19
- * @param onClick
20
- * @constructor
21
- */
22
- export function NavigationCollectionCard({
23
- view,
24
- path,
25
- collection,
26
- url,
27
- name,
28
- description,
29
- onClick
30
- }: TopNavigationEntry & {
31
- onClick?: () => void
32
- }) {
33
-
34
- const userConfigurationPersistence = useUserConfigurationPersistence();
35
- const collectionIcon = <IconForView collectionOrView={collection ?? view}/>;
36
-
37
- const navigate = useNavigate();
38
- const context = useFireCMSContext();
39
- const customizationController = useCustomizationController();
40
-
41
- const favourite = (userConfigurationPersistence?.favouritePaths ?? []).includes(path);
42
-
43
- let actions: React.ReactNode | undefined;
44
- if (customizationController.plugins && collection) {
45
- const actionProps: PluginHomePageActionsProps = {
46
- path,
47
- collection,
48
- context
49
- };
50
- actions = <>
51
- {customizationController.plugins.map((plugin, i) => (
52
- plugin.homePage?.CollectionActions
53
- ? <plugin.homePage.CollectionActions
54
- key={`actions_${i}`}
55
- {...actionProps}
56
- extraProps={plugin.homePage.extraProps}
57
- />
58
- : null
59
- ))}
60
- </>
61
- ;
62
- }
63
-
64
- return (
65
- <Card
66
- className={cn("h-full p-4 cursor-pointer min-h-[230px]")}
67
- onClick={() => {
68
- onClick?.();
69
- navigate(url);
70
- if (userConfigurationPersistence) {
71
- userConfigurationPersistence.setRecentlyVisitedPaths(
72
- [path, ...(userConfigurationPersistence.recentlyVisitedPaths ?? []).filter(p => p !== path)]
73
- );
74
- }
75
- }}>
76
-
77
- <div className="flex flex-col items-start h-full">
78
- <div
79
- className="flex-grow w-full">
80
-
81
- <div
82
- className="h-10 flex items-center w-full justify-between text-gray-300 dark:text-gray-600">
83
-
84
- {collectionIcon}
85
-
86
- <div
87
- className="flex items-center gap-1"
88
- onClick={(event: React.MouseEvent) => {
89
- event.preventDefault();
90
- event.stopPropagation();
91
- }}>
92
-
93
- {actions}
94
-
95
- {userConfigurationPersistence &&
96
- <IconButton
97
- onClick={(e) => {
98
- e.preventDefault();
99
- e.stopPropagation();
100
- if (favourite) {
101
- userConfigurationPersistence.setFavouritePaths(
102
- userConfigurationPersistence.favouritePaths.filter(p => p !== path)
103
- );
104
- } else {
105
- userConfigurationPersistence.setFavouritePaths(
106
- [...userConfigurationPersistence.favouritePaths, path]
107
- );
108
- }
109
- }}>
110
- {
111
- favourite
112
- ? <StarIcon
113
- size={18}
114
- className={"text-secondary"}/>
115
- : <StarBorderIcon
116
- size={18}
117
- className={"text-gray-400 dark:text-gray-500"}/>}
118
- </IconButton>}
119
-
120
- </div>
121
-
122
- </div>
123
-
124
- <Typography gutterBottom variant="h5"
125
- component="h2">
126
- {name}
127
- </Typography>
128
-
129
- {description && <Typography variant="body2"
130
- color="secondary"
131
- component="div">
132
- <Markdown source={description}/>
133
- </Typography>}
134
- </div>
135
-
136
- <div style={{ alignSelf: "flex-end" }}>
137
-
138
- <div className={"p-4"}>
139
- <ArrowForwardIcon className="text-primary"/>
140
- </div>
141
- </div>
142
-
143
- </div>
144
-
145
- </Card>);
146
- }
@@ -1,164 +0,0 @@
1
- import React, { useCallback } from "react";
2
-
3
- import { useLargeLayout, useNavigationController } from "../hooks";
4
-
5
- import { NavLink } from "react-router-dom";
6
- import { CMSAnalyticsEvent, TopNavigationEntry, TopNavigationResult } from "../types";
7
- import { IconForView } from "../util";
8
- import { cn, Tooltip, Typography } from "@firecms/ui";
9
- import { useAnalyticsController } from "../hooks/useAnalyticsController";
10
-
11
- /**
12
- * Props used in case you need to override the default drawer
13
- * @group Core
14
- */
15
- export type DrawerProps<T = {}> = T & {
16
- hovered: boolean,
17
- drawerOpen: boolean,
18
- closeDrawer: () => any,
19
- }
20
-
21
- /**
22
- * Default drawer used in the CMS
23
- * @group Core
24
- */
25
- export function Drawer({
26
- hovered,
27
- drawerOpen,
28
- closeDrawer
29
- }: DrawerProps) {
30
-
31
- const analyticsController = useAnalyticsController();
32
- const navigation = useNavigationController();
33
-
34
- const tooltipsOpen = hovered && !drawerOpen;
35
- const largeLayout = useLargeLayout();
36
-
37
- if (!navigation.topLevelNavigation)
38
- throw Error("Navigation not ready in Drawer");
39
-
40
- const {
41
- navigationEntries,
42
- groups
43
- }: TopNavigationResult = navigation.topLevelNavigation;
44
-
45
- const ungroupedNavigationViews = Object.values(navigationEntries).filter(e => !e.group);
46
-
47
- const buildGroupHeader = useCallback((group?: string) => {
48
- if (!drawerOpen) return <div className="h-12 w-full"/>;
49
- return <div
50
- className="pt-8 pl-6 pr-8 pb-2 flex flex-row items-center">
51
- <Typography variant={"caption"}
52
- color={"secondary"}
53
- className="font-medium flex-grow line-clamp-1">
54
- {group ? group.toUpperCase() : "Views".toUpperCase()}
55
- </Typography>
56
-
57
- </div>;
58
- }, [drawerOpen]);
59
-
60
- const onClick = (view: TopNavigationEntry) => {
61
- const eventName: CMSAnalyticsEvent = view.type === "collection"
62
- ? "drawer_navigate_to_collection"
63
- : (view.type === "view" ? "drawer_navigate_to_view" : "unmapped_event");
64
- analyticsController.onAnalyticsEvent?.(eventName, { url: view.url });
65
- if (!largeLayout)
66
- closeDrawer();
67
- };
68
-
69
- return (
70
- <div className={"flex-grow overflow-scroll no-scrollbar"}>
71
-
72
- {groups.map((group) => (
73
- <React.Fragment
74
- key={`drawer_group_${group}`}>
75
- {buildGroupHeader(group)}
76
- {Object.values(navigationEntries)
77
- .filter(e => e.group === group)
78
- .map((view, index) =>
79
- <DrawerNavigationItem
80
- key={`navigation_${index}`}
81
- icon={<IconForView collectionOrView={view.collection ?? view.view}/>}
82
- tooltipsOpen={tooltipsOpen}
83
- drawerOpen={drawerOpen}
84
- onClick={() => onClick(view)}
85
- url={view.url}
86
- name={view.name}/>)}
87
- </React.Fragment>
88
- ))}
89
-
90
- {ungroupedNavigationViews.length > 0 && buildGroupHeader()}
91
-
92
- {ungroupedNavigationViews.map((view, index) => {
93
-
94
- return <DrawerNavigationItem
95
- key={`navigation_${index}`}
96
- icon={<IconForView collectionOrView={view.collection ?? view.view}/>}
97
- tooltipsOpen={tooltipsOpen}
98
- onClick={() => onClick(view)}
99
- drawerOpen={drawerOpen}
100
- url={view.url}
101
- name={view.name}/>;
102
- })}
103
-
104
- </div>
105
- );
106
- }
107
-
108
- export function DrawerNavigationItem({
109
- name,
110
- icon,
111
- drawerOpen,
112
- tooltipsOpen,
113
- url,
114
- onClick
115
- }: {
116
- icon: React.ReactElement,
117
- name: string,
118
- tooltipsOpen: boolean,
119
- drawerOpen: boolean,
120
- url: string,
121
- onClick?: () => void,
122
- }) {
123
-
124
- const iconWrap = <div
125
- className={"text-gray-600 dark:text-gray-500"}>
126
- {icon}
127
- </div>;
128
-
129
- const listItem = <NavLink
130
- onClick={onClick}
131
- style={{
132
- width: !drawerOpen ? "72px" : "280px",
133
- transition: drawerOpen ? "width 150ms ease-in" : undefined
134
- }}
135
- className={({ isActive }: any) => cn("rounded-r-xl truncate",
136
- "hover:bg-slate-300 hover:bg-opacity-75 dark:hover:bg-gray-700 dark:hover:bg-opacity-75 text-gray-800 dark:text-gray-200 hover:text-gray-900 hover:dark:text-gray-100",
137
- "flex flex-row items-center mr-8",
138
- // "transition-all ease-in-out delay-100 duration-300",
139
- // drawerOpen ? "w-full" : "w-18",
140
- drawerOpen ? "pl-8 h-12" : "pl-6 h-11",
141
- "font-medium text-sm",
142
- isActive ? "bg-slate-200 bg-opacity-75 dark:bg-gray-800" : ""
143
- )}
144
- to={url}
145
- >
146
-
147
- {iconWrap}
148
-
149
- <div
150
- className={cn(
151
- drawerOpen ? "opacity-100" : "opacity-0 hidden",
152
- "ml-4 font-inherit text-inherit"
153
- )}>
154
- {name.toUpperCase()}
155
- </div>
156
- </NavLink>;
157
-
158
- return <Tooltip
159
- open={drawerOpen ? false : tooltipsOpen}
160
- side="right"
161
- title={name}>
162
- {listItem}
163
- </Tooltip>;
164
- }