@firecms/core 3.0.0-beta.7 → 3.0.0-beta.8

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 (94) hide show
  1. package/dist/app/AppBar.d.ts +12 -0
  2. package/dist/app/Drawer.d.ts +17 -0
  3. package/dist/app/Scaffold.d.ts +30 -0
  4. package/dist/app/index.d.ts +4 -0
  5. package/dist/app/useApp.d.ts +16 -0
  6. package/dist/components/VirtualTable/VirtualTableProps.d.ts +4 -0
  7. package/dist/components/index.d.ts +1 -1
  8. package/dist/{components/FireCMSAppBar.d.ts → core/DefaultAppBar.d.ts} +2 -7
  9. package/dist/core/DefaultDrawer.d.ts +19 -0
  10. package/dist/core/EntityEditView.d.ts +17 -3
  11. package/dist/core/NavigationRoutes.d.ts +1 -1
  12. package/dist/core/index.d.ts +2 -2
  13. package/dist/form/PropertiesForm.d.ts +8 -0
  14. package/dist/form/components/FieldHelperText.d.ts +3 -3
  15. package/dist/form/components/StorageItemPreview.d.ts +4 -4
  16. package/dist/form/field_bindings/MapFieldBinding.d.ts +1 -1
  17. package/dist/form/field_bindings/StorageUploadFieldBinding.d.ts +2 -4
  18. package/dist/form/index.d.ts +0 -2
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.es.js +5595 -5574
  21. package/dist/index.es.js.map +1 -1
  22. package/dist/index.umd.js +5 -5
  23. package/dist/index.umd.js.map +1 -1
  24. package/dist/preview/PropertyPreviewProps.d.ts +5 -0
  25. package/dist/preview/components/StorageThumbnail.d.ts +2 -1
  26. package/dist/preview/components/UrlComponentPreview.d.ts +2 -1
  27. package/dist/types/auth.d.ts +1 -1
  28. package/dist/types/collections.d.ts +14 -0
  29. package/dist/types/datasource.d.ts +18 -8
  30. package/dist/types/fields.d.ts +31 -30
  31. package/dist/types/plugins.d.ts +11 -3
  32. package/dist/types/properties.d.ts +7 -2
  33. package/dist/util/icons.d.ts +2 -2
  34. package/dist/util/storage.d.ts +23 -2
  35. package/dist/util/useStorageUploadController.d.ts +1 -1
  36. package/package.json +13 -22
  37. package/src/app/AppBar.tsx +18 -0
  38. package/src/app/Drawer.tsx +25 -0
  39. package/src/{core → app}/Scaffold.tsx +61 -107
  40. package/src/app/index.ts +4 -0
  41. package/src/app/useApp.tsx +32 -0
  42. package/src/components/EntityCollectionTable/EntityCollectionRowActions.tsx +7 -9
  43. package/src/components/EntityCollectionTable/internal/popup_field/PopupFormField.tsx +2 -1
  44. package/src/components/EntityCollectionView/EntityCollectionView.tsx +7 -4
  45. package/src/components/VirtualTable/VirtualTable.tsx +3 -1
  46. package/src/components/VirtualTable/VirtualTableProps.tsx +5 -0
  47. package/src/components/common/useTableSearchHelper.ts +52 -12
  48. package/src/components/index.tsx +1 -1
  49. package/src/contexts/DialogsProvider.tsx +2 -2
  50. package/src/{components/FireCMSAppBar.tsx → core/DefaultAppBar.tsx} +26 -28
  51. package/src/core/DefaultDrawer.tsx +177 -0
  52. package/src/core/EntityEditView.tsx +669 -129
  53. package/src/core/EntitySidePanel.tsx +0 -1
  54. package/src/core/NavigationRoutes.tsx +3 -3
  55. package/src/core/index.tsx +2 -2
  56. package/src/form/PropertiesForm.tsx +81 -0
  57. package/src/form/PropertyFieldBinding.tsx +29 -5
  58. package/src/form/components/FieldHelperText.tsx +3 -3
  59. package/src/form/components/StorageItemPreview.tsx +19 -10
  60. package/src/form/field_bindings/ArrayCustomShapedFieldBinding.tsx +8 -5
  61. package/src/form/field_bindings/ArrayOfReferencesFieldBinding.tsx +5 -4
  62. package/src/form/field_bindings/KeyValueFieldBinding.tsx +40 -35
  63. package/src/form/field_bindings/MapFieldBinding.tsx +11 -3
  64. package/src/form/field_bindings/ReadOnlyFieldBinding.tsx +0 -7
  65. package/src/form/field_bindings/RepeatFieldBinding.tsx +10 -7
  66. package/src/form/field_bindings/StorageUploadFieldBinding.tsx +6 -35
  67. package/src/form/field_bindings/SwitchFieldBinding.tsx +1 -1
  68. package/src/form/index.tsx +4 -4
  69. package/src/form/validation.ts +1 -17
  70. package/src/index.ts +1 -0
  71. package/src/internal/useBuildDataSource.ts +12 -0
  72. package/src/preview/PropertyPreview.tsx +5 -2
  73. package/src/preview/PropertyPreviewProps.tsx +6 -0
  74. package/src/preview/components/ImagePreview.tsx +21 -33
  75. package/src/preview/components/ReferencePreview.tsx +2 -1
  76. package/src/preview/components/StorageThumbnail.tsx +5 -1
  77. package/src/preview/components/UrlComponentPreview.tsx +44 -11
  78. package/src/types/auth.tsx +1 -1
  79. package/src/types/collections.ts +14 -0
  80. package/src/types/customization_controller.tsx +0 -1
  81. package/src/types/datasource.ts +20 -16
  82. package/src/types/fields.tsx +33 -33
  83. package/src/types/plugins.tsx +12 -3
  84. package/src/types/properties.ts +7 -2
  85. package/src/util/entities.ts +4 -3
  86. package/src/util/objects.ts +17 -7
  87. package/src/util/permissions.ts +1 -0
  88. package/src/util/storage.ts +75 -21
  89. package/src/util/useStorageUploadController.tsx +21 -3
  90. package/dist/core/Drawer.d.ts +0 -16
  91. package/dist/core/Scaffold.d.ts +0 -51
  92. package/dist/form/EntityForm.d.ts +0 -77
  93. package/src/core/Drawer.tsx +0 -139
  94. package/src/form/EntityForm.tsx +0 -736
@@ -1,139 +0,0 @@
1
- import React, { useCallback } from "react";
2
-
3
- import { useLargeLayout, useNavigationController } from "../hooks";
4
-
5
- import { useNavigate } from "react-router-dom";
6
- import { CMSAnalyticsEvent, TopNavigationEntry, TopNavigationResult } from "../types";
7
- import { IconForView } from "../util";
8
- import { cls, IconButton, Menu, MenuItem, MoreVertIcon, Tooltip, Typography } from "@firecms/ui";
9
- import { useAnalyticsController } from "../hooks/useAnalyticsController";
10
- import { useDrawer } from "./Scaffold";
11
- import { DrawerNavigationItem } from "./DrawerNavigationItem";
12
-
13
- /**
14
- * Props used in case you need to override the default drawer
15
- * @group Core
16
- */
17
- export type DrawerProps = {
18
- hovered: boolean,
19
- drawerOpen: boolean,
20
- openDrawer: () => void,
21
- closeDrawer: () => void,
22
- autoOpenDrawer?: boolean
23
- }
24
-
25
- /**
26
- * Default drawer used in the CMS
27
- * @group Core
28
- */
29
- export function Drawer() {
30
-
31
- const {
32
- hovered,
33
- drawerOpen,
34
- closeDrawer,
35
- } = useDrawer();
36
-
37
- const analyticsController = useAnalyticsController();
38
- const navigation = useNavigationController();
39
-
40
- const tooltipsOpen = hovered && !drawerOpen;
41
- const largeLayout = useLargeLayout();
42
- const navigate = useNavigate();
43
-
44
- const [adminMenuOpen, setAdminMenuOpen] = React.useState(false);
45
-
46
- if (!navigation.topLevelNavigation)
47
- throw Error("Navigation not ready in Drawer");
48
-
49
- const {
50
- navigationEntries,
51
- groups
52
- }: TopNavigationResult = navigation.topLevelNavigation;
53
-
54
- const adminViews = navigationEntries.filter(e => e.type === "admin") ?? [];
55
- const groupsWithoutAdmin = groups.filter(g => g !== "Admin");
56
-
57
- const buildGroupHeader = useCallback((group?: string) => {
58
- if (!drawerOpen) return <div className="h-12 w-full"/>;
59
- return <div
60
- className="pt-8 pl-6 pr-8 pb-2 flex flex-row items-center">
61
- <Typography variant={"caption"}
62
- color={"secondary"}
63
- className="font-medium flex-grow line-clamp-1">
64
- {group ? group.toUpperCase() : "Views".toUpperCase()}
65
- </Typography>
66
-
67
- </div>;
68
- }, [drawerOpen]);
69
-
70
- const onClick = (view: TopNavigationEntry) => {
71
- const eventName: CMSAnalyticsEvent = view.type === "collection"
72
- ? "drawer_navigate_to_collection"
73
- : (view.type === "view" ? "drawer_navigate_to_view" : "unmapped_event");
74
- analyticsController.onAnalyticsEvent?.(eventName, { url: view.url });
75
- if (!largeLayout)
76
- closeDrawer();
77
- };
78
-
79
- return (
80
- <>
81
-
82
- <div className={"flex-grow overflow-scroll no-scrollbar"}>
83
-
84
- {groupsWithoutAdmin.map((group) => (
85
- <React.Fragment
86
- key={`drawer_group_${group}`}>
87
- {buildGroupHeader(group)}
88
- {Object.values(navigationEntries)
89
- .filter(e => e.group === group)
90
- .map((view, index) =>
91
- <DrawerNavigationItem
92
- key={`navigation_${index}`}
93
- icon={<IconForView collectionOrView={view.collection ?? view.view}/>}
94
- tooltipsOpen={tooltipsOpen}
95
- drawerOpen={drawerOpen}
96
- onClick={() => onClick(view)}
97
- url={view.url}
98
- name={view.name}/>)}
99
- </React.Fragment>
100
- ))}
101
-
102
- </div>
103
-
104
- {adminViews.length > 0 && <Menu
105
- open={adminMenuOpen}
106
- onOpenChange={setAdminMenuOpen}
107
- trigger={
108
- <IconButton
109
- shape={"square"}
110
- className={"m-4 text-gray-900 dark:text-white w-fit"}>
111
- <Tooltip title={"Admin"}
112
- open={tooltipsOpen}
113
- side={"right"} sideOffset={28}>
114
- <MoreVertIcon/>
115
- </Tooltip>
116
- {drawerOpen && <div
117
- className={cls(
118
- drawerOpen ? "opacity-100" : "opacity-0 hidden",
119
- "mx-4 font-inherit text-inherit"
120
- )}>
121
- ADMIN
122
- </div>}
123
- </IconButton>}
124
- >
125
- {adminViews.map((entry, index) =>
126
- <MenuItem
127
- onClick={(event) => {
128
- event.preventDefault();
129
- navigate(entry.path);
130
- }}
131
- key={`navigation_${index}`}>
132
- {<IconForView collectionOrView={entry.view}/>}
133
- {entry.name}
134
- </MenuItem>)}
135
-
136
- </Menu>}
137
- </>
138
- );
139
- }