@firecms/core 3.0.0-canary.153 → 3.0.0-canary.155
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.
- package/dist/form/field_bindings/SwitchFieldBinding.d.ts +1 -2
- package/dist/index.es.js +13727 -11119
- package/dist/index.es.js.map +1 -1
- package/dist/index.umd.js +13718 -11111
- package/dist/index.umd.js.map +1 -1
- package/dist/preview/PropertyPreviewProps.d.ts +1 -1
- package/dist/types/auth.d.ts +2 -0
- package/package.json +131 -125
- package/src/components/ConfirmationDialog.tsx +2 -2
- package/src/components/DeleteEntityDialog.tsx +8 -17
- package/src/components/EntityPreview.tsx +1 -1
- package/src/components/ErrorView.tsx +1 -1
- package/src/components/HomePage/DefaultHomePage.tsx +1 -0
- package/src/components/SelectableTable/filters/DateTimeFilterField.tsx +1 -0
- package/src/components/SelectableTable/filters/ReferenceFilterField.tsx +1 -0
- package/src/components/SelectableTable/filters/StringNumberFilterField.tsx +2 -0
- package/src/components/VirtualTable/fields/VirtualTableSelect.tsx +1 -0
- package/src/contexts/SnackbarProvider.tsx +2 -0
- package/src/core/FireCMS.tsx +3 -0
- package/src/core/field_configs.tsx +1 -1
- package/src/form/components/CustomIdField.tsx +1 -0
- package/src/form/components/StorageItemPreview.tsx +1 -1
- package/src/form/field_bindings/BlockFieldBinding.tsx +1 -0
- package/src/form/field_bindings/MapFieldBinding.tsx +1 -0
- package/src/form/field_bindings/SelectFieldBinding.tsx +1 -0
- package/src/form/field_bindings/StorageUploadFieldBinding.tsx +1 -1
- package/src/form/field_bindings/SwitchFieldBinding.tsx +25 -25
- package/src/internal/useUnsavedChangesDialog.tsx +2 -2
- package/src/preview/PropertyPreviewProps.tsx +1 -1
- package/src/types/auth.tsx +2 -0
- package/src/util/useStorageUploadController.tsx +1 -1
package/dist/types/auth.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { User } from "./user";
|
|
2
|
+
import { Role } from "./roles";
|
|
2
3
|
import { DataSourceDelegate } from "./datasource";
|
|
3
4
|
import { StorageSource } from "./storage";
|
|
4
5
|
/**
|
|
@@ -47,6 +48,7 @@ export type AuthController<USER extends User = any, ExtraData = any> = {
|
|
|
47
48
|
extra: ExtraData;
|
|
48
49
|
setExtra: (extra: ExtraData) => void;
|
|
49
50
|
setUser?: (user: USER | null) => void;
|
|
51
|
+
setUserRoles?: (roles: Role[]) => void;
|
|
50
52
|
};
|
|
51
53
|
/**
|
|
52
54
|
* Implement this function to allow access to specific users.
|
package/package.json
CHANGED
|
@@ -1,131 +1,137 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
"name": "@firecms/core",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "3.0.0-canary.155",
|
|
5
|
+
"description": "Awesome Firebase/Firestore-based headless open-source CMS",
|
|
6
|
+
"funding": {
|
|
7
|
+
"url": "https://github.com/sponsors/firecmsco"
|
|
8
|
+
},
|
|
9
|
+
"author": "FireCMS",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/firecmsco/firecms.git",
|
|
14
|
+
"directory": "packages/firecms_core"
|
|
15
|
+
},
|
|
16
|
+
"main": "./dist/index.umd.js",
|
|
17
|
+
"module": "./dist/index.es.js",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"source": "src/index.ts",
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=14"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"firebase",
|
|
25
|
+
"cms",
|
|
26
|
+
"admin",
|
|
27
|
+
"admin panel",
|
|
28
|
+
"firebase panel",
|
|
29
|
+
"firestore",
|
|
30
|
+
"headless",
|
|
31
|
+
"headless cms",
|
|
32
|
+
"content manager"
|
|
33
|
+
],
|
|
34
|
+
"scripts": {
|
|
35
|
+
"watch": "vite build --watch",
|
|
36
|
+
"build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json",
|
|
37
|
+
"prepublishOnly": "run-s build",
|
|
38
|
+
"createTag": "PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag v$PACKAGE_VERSION && git push --tags",
|
|
39
|
+
"test:lint": "eslint \"src/**\" --quiet",
|
|
40
|
+
"test": "jest",
|
|
41
|
+
"clean": "rm -rf dist && find ./src -name '*.js' -type f | xargs rm -f",
|
|
42
|
+
"generateIcons": "ts-node --esm src/icons/generateIcons.ts"
|
|
43
|
+
},
|
|
44
|
+
"exports": {
|
|
45
|
+
".": {
|
|
46
|
+
"import": "./dist/index.es.js",
|
|
47
|
+
"require": "./dist/index.umd.js",
|
|
48
|
+
"types": "./dist/index.d.ts"
|
|
8
49
|
},
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"
|
|
17
|
-
|
|
50
|
+
"./package.json": "./package.json"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"@firecms/editor": "^3.0.0-canary.155",
|
|
54
|
+
"@firecms/formex": "^3.0.0-canary.155",
|
|
55
|
+
"@firecms/ui": "^3.0.0-canary.155",
|
|
56
|
+
"@hello-pangea/dnd": "^17.0.0",
|
|
57
|
+
"@radix-ui/react-portal": "^1.1.2",
|
|
58
|
+
"clsx": "^2.1.1",
|
|
59
|
+
"date-fns": "^3.6.0",
|
|
60
|
+
"fuse.js": "^7.0.0",
|
|
61
|
+
"history": "^5.3.0",
|
|
62
|
+
"markdown-it": "^14.1.0",
|
|
63
|
+
"notistack": "^3.0.1",
|
|
64
|
+
"object-hash": "^3.0.0",
|
|
65
|
+
"react-dropzone": "^14.2.10",
|
|
66
|
+
"react-fast-compare": "^3.2.2",
|
|
67
|
+
"react-image-file-resizer": "^0.4.8",
|
|
68
|
+
"react-transition-group": "^4.4.5",
|
|
69
|
+
"react-use-measure": "^2.1.1",
|
|
70
|
+
"react-window": "^1.8.10",
|
|
71
|
+
"yup": "^0.32.11"
|
|
72
|
+
},
|
|
73
|
+
"peerDependencies": {
|
|
74
|
+
"firebase": "^10.5.2",
|
|
75
|
+
"react": "^18.3.1",
|
|
76
|
+
"react-dom": "^18.3.1",
|
|
77
|
+
"react-router": "^6.25.1",
|
|
78
|
+
"react-router-dom": "^6.25.1"
|
|
79
|
+
},
|
|
80
|
+
"devDependencies": {
|
|
81
|
+
"@jest/globals": "^29.7.0",
|
|
82
|
+
"@testing-library/react": "^16.0.1",
|
|
83
|
+
"@testing-library/user-event": "^14.5.2",
|
|
84
|
+
"@types/jest": "^29.5.14",
|
|
85
|
+
"@types/node": "^20.16.11",
|
|
86
|
+
"@types/object-hash": "^3.0.6",
|
|
87
|
+
"@types/react": "^18.3.12",
|
|
88
|
+
"@types/react-dom": "^18.3.1",
|
|
89
|
+
"@types/react-measure": "^2.0.12",
|
|
90
|
+
"@vitejs/plugin-react": "^4.3.3",
|
|
91
|
+
"babel-plugin-react-compiler": "beta",
|
|
92
|
+
"cross-env": "^7.0.3",
|
|
93
|
+
"eslint-plugin-react-compiler": "beta",
|
|
94
|
+
"firebase": "^10.14.1",
|
|
95
|
+
"jest": "^29.7.0",
|
|
96
|
+
"npm-run-all": "^4.1.5",
|
|
97
|
+
"react-router": "^6.27.0",
|
|
98
|
+
"react-router-dom": "^6.27.0",
|
|
99
|
+
"ts-jest": "^29.2.5",
|
|
100
|
+
"ts-node": "^10.9.2",
|
|
101
|
+
"tsd": "^0.31.2",
|
|
102
|
+
"typescript": "^5.6.3",
|
|
103
|
+
"vite": "^5.4.10"
|
|
104
|
+
},
|
|
105
|
+
"files": [
|
|
106
|
+
"dist",
|
|
107
|
+
"src"
|
|
108
|
+
],
|
|
109
|
+
"gitHead": "c9b71679d709242ff3a47ec56a0ecf980ec76564",
|
|
110
|
+
"publishConfig": {
|
|
111
|
+
"access": "public"
|
|
112
|
+
},
|
|
113
|
+
"eslintConfig": {
|
|
114
|
+
"extends": [
|
|
115
|
+
"react-app",
|
|
116
|
+
"react-app/jest"
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
"jest": {
|
|
120
|
+
"transform": {
|
|
121
|
+
"^.+\\.tsx?$": "ts-jest"
|
|
18
122
|
},
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
"headless cms",
|
|
28
|
-
"content manager"
|
|
123
|
+
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
|
|
124
|
+
"moduleFileExtensions": [
|
|
125
|
+
"ts",
|
|
126
|
+
"tsx",
|
|
127
|
+
"js",
|
|
128
|
+
"jsx",
|
|
129
|
+
"json",
|
|
130
|
+
"node"
|
|
29
131
|
],
|
|
30
|
-
"
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
"prepublishOnly": "run-s build",
|
|
34
|
-
"createTag": "PACKAGE_VERSION=$(cat package.json | grep version | head -1 | awk -F: '{ print $2 }' | sed 's/[\",]//g' | tr -d '[[:space:]]') && git tag v$PACKAGE_VERSION && git push --tags",
|
|
35
|
-
"test:lint": "eslint \"src/**\" --quiet",
|
|
36
|
-
"test": "jest",
|
|
37
|
-
"clean": "rm -rf dist && find ./src -name '*.js' -type f | xargs rm -f",
|
|
38
|
-
"generateIcons": "ts-node --esm src/icons/generateIcons.ts"
|
|
39
|
-
},
|
|
40
|
-
"exports": {
|
|
41
|
-
".": {
|
|
42
|
-
"import": "./dist/index.es.js",
|
|
43
|
-
"require": "./dist/index.umd.js",
|
|
44
|
-
"types": "./dist/index.d.ts"
|
|
45
|
-
},
|
|
46
|
-
"./package.json": "./package.json"
|
|
47
|
-
},
|
|
48
|
-
"dependencies": {
|
|
49
|
-
"@firecms/editor": "^3.0.0-canary.153",
|
|
50
|
-
"@firecms/formex": "^3.0.0-canary.153",
|
|
51
|
-
"@firecms/ui": "^3.0.0-canary.153",
|
|
52
|
-
"@hello-pangea/dnd": "^17.0.0",
|
|
53
|
-
"@radix-ui/react-portal": "^1.1.2",
|
|
54
|
-
"clsx": "^2.1.1",
|
|
55
|
-
"date-fns": "^3.6.0",
|
|
56
|
-
"fuse.js": "^7.0.0",
|
|
57
|
-
"history": "^5.3.0",
|
|
58
|
-
"markdown-it": "^14.1.0",
|
|
59
|
-
"notistack": "^3.0.1",
|
|
60
|
-
"object-hash": "^3.0.0",
|
|
61
|
-
"react-dropzone": "^14.2.10",
|
|
62
|
-
"react-fast-compare": "^3.2.2",
|
|
63
|
-
"react-image-file-resizer": "^0.4.8",
|
|
64
|
-
"react-transition-group": "^4.4.5",
|
|
65
|
-
"react-use-measure": "^2.1.1",
|
|
66
|
-
"react-window": "^1.8.10",
|
|
67
|
-
"yup": "^0.32.11"
|
|
68
|
-
},
|
|
69
|
-
"peerDependencies": {
|
|
70
|
-
"firebase": "^10.5.2",
|
|
71
|
-
"react": "^18.3.1",
|
|
72
|
-
"react-dom": "^18.3.1",
|
|
73
|
-
"react-router": "^6.25.1",
|
|
74
|
-
"react-router-dom": "^6.25.1"
|
|
75
|
-
},
|
|
76
|
-
"devDependencies": {
|
|
77
|
-
"@jest/globals": "^29.7.0",
|
|
78
|
-
"@testing-library/react": "^16.0.1",
|
|
79
|
-
"@testing-library/user-event": "^14.5.2",
|
|
80
|
-
"@types/jest": "^29.5.14",
|
|
81
|
-
"@types/node": "^20.16.11",
|
|
82
|
-
"@types/object-hash": "^3.0.6",
|
|
83
|
-
"@types/react": "^18.3.12",
|
|
84
|
-
"@types/react-dom": "^18.3.1",
|
|
85
|
-
"@types/react-measure": "^2.0.12",
|
|
86
|
-
"@vitejs/plugin-react": "^4.3.3",
|
|
87
|
-
"cross-env": "^7.0.3",
|
|
88
|
-
"firebase": "^10.14.1",
|
|
89
|
-
"jest": "^29.7.0",
|
|
90
|
-
"npm-run-all": "^4.1.5",
|
|
91
|
-
"react-router": "^6.27.0",
|
|
92
|
-
"react-router-dom": "^6.27.0",
|
|
93
|
-
"ts-jest": "^29.2.5",
|
|
94
|
-
"ts-node": "^10.9.2",
|
|
95
|
-
"tsd": "^0.31.2",
|
|
96
|
-
"typescript": "^5.6.3",
|
|
97
|
-
"vite": "^5.4.10"
|
|
98
|
-
},
|
|
99
|
-
"files": [
|
|
100
|
-
"dist",
|
|
101
|
-
"src"
|
|
102
|
-
],
|
|
103
|
-
"gitHead": "373e77fdfca9d30631a08d14f14b3638f6ad56e5",
|
|
104
|
-
"publishConfig": {
|
|
105
|
-
"access": "public"
|
|
106
|
-
},
|
|
107
|
-
"eslintConfig": {
|
|
108
|
-
"extends": [
|
|
109
|
-
"react-app",
|
|
110
|
-
"react-app/jest"
|
|
111
|
-
]
|
|
112
|
-
},
|
|
113
|
-
"jest": {
|
|
114
|
-
"transform": {
|
|
115
|
-
"^.+\\.tsx?$": "ts-jest"
|
|
116
|
-
},
|
|
117
|
-
"testRegex": "(/__tests__/.*|(\\.|/)(test|spec))\\.tsx?$",
|
|
118
|
-
"moduleFileExtensions": [
|
|
119
|
-
"ts",
|
|
120
|
-
"tsx",
|
|
121
|
-
"js",
|
|
122
|
-
"jsx",
|
|
123
|
-
"json",
|
|
124
|
-
"node"
|
|
125
|
-
],
|
|
126
|
-
"testEnvironment": "node",
|
|
127
|
-
"moduleNameMapper": {
|
|
128
|
-
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js"
|
|
129
|
-
}
|
|
132
|
+
"testEnvironment": "node",
|
|
133
|
+
"moduleNameMapper": {
|
|
134
|
+
"\\.(css|less)$": "<rootDir>/test/__mocks__/styleMock.js"
|
|
130
135
|
}
|
|
136
|
+
}
|
|
131
137
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
|
|
3
|
-
import { Button, Dialog, DialogActions, DialogContent, LoadingButton, Typography } from "@firecms/ui";
|
|
3
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, LoadingButton, Typography } from "@firecms/ui";
|
|
4
4
|
|
|
5
5
|
export function ConfirmationDialog({
|
|
6
6
|
open,
|
|
@@ -22,8 +22,8 @@ export function ConfirmationDialog({
|
|
|
22
22
|
open={open}
|
|
23
23
|
onOpenChange={(open) => !open ? onCancel() : undefined}
|
|
24
24
|
>
|
|
25
|
+
<DialogTitle variant={"h6"} className={"mb-2"}>{title}</DialogTitle>
|
|
25
26
|
<DialogContent>
|
|
26
|
-
<Typography variant={"h6"} className={"mb-2"}>{title}</Typography>
|
|
27
27
|
{body}
|
|
28
28
|
</DialogContent>
|
|
29
29
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Entity, EntityCallbacks, EntityCollection } from "../types";
|
|
2
2
|
import React, { useCallback, useMemo, useState } from "react";
|
|
3
|
-
import { Button, CircularProgress, Dialog, DialogActions, DialogContent,
|
|
3
|
+
import { Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle } from "@firecms/ui";
|
|
4
4
|
import {
|
|
5
5
|
deleteEntityWithCallbacks,
|
|
6
6
|
useCustomizationController,
|
|
@@ -40,20 +40,12 @@ export function DeleteEntityDialog<M extends Record<string, any>>({
|
|
|
40
40
|
const snackbarController = useSnackbarController();
|
|
41
41
|
const [loading, setLoading] = useState(false);
|
|
42
42
|
|
|
43
|
-
const [entityOrEntities, setUsedEntityOrEntities] = React.useState<Entity<M> | Entity<M>[]>();
|
|
44
|
-
|
|
45
|
-
const [multipleEntities, setMultipleEntities] = React.useState<boolean>();
|
|
46
43
|
const context = useFireCMSContext();
|
|
44
|
+
const entityOrEntities = Array.isArray(entityOrEntitiesToDelete) && entityOrEntitiesToDelete.length === 1
|
|
45
|
+
? entityOrEntitiesToDelete[0]
|
|
46
|
+
: entityOrEntitiesToDelete;
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
if (entityOrEntitiesToDelete) {
|
|
50
|
-
const revisedEntityOrEntities = Array.isArray(entityOrEntitiesToDelete) && entityOrEntitiesToDelete.length === 1
|
|
51
|
-
? entityOrEntitiesToDelete[0]
|
|
52
|
-
: entityOrEntitiesToDelete;
|
|
53
|
-
setUsedEntityOrEntities(revisedEntityOrEntities);
|
|
54
|
-
setMultipleEntities(Array.isArray(revisedEntityOrEntities));
|
|
55
|
-
}
|
|
56
|
-
}, [entityOrEntitiesToDelete]);
|
|
48
|
+
const multipleEntities = Array.isArray(entityOrEntities);
|
|
57
49
|
|
|
58
50
|
const resolvedCollection = useMemo(() => resolveCollection<M>({
|
|
59
51
|
collection,
|
|
@@ -181,11 +173,10 @@ export function DeleteEntityDialog<M extends Record<string, any>>({
|
|
|
181
173
|
open={open}
|
|
182
174
|
onOpenChange={(open) => !open ? onClose() : undefined}
|
|
183
175
|
>
|
|
176
|
+
<DialogTitle id="delete-dialog-title">
|
|
177
|
+
{dialogTitle}
|
|
178
|
+
</DialogTitle>
|
|
184
179
|
<DialogContent fullHeight={true}>
|
|
185
|
-
<Typography variant={"subtitle2"} className={"p-4"}>
|
|
186
|
-
{dialogTitle}
|
|
187
|
-
</Typography>
|
|
188
|
-
|
|
189
180
|
{!multipleEntities && <div className={"p-4"}>{content}</div>}
|
|
190
181
|
</DialogContent>
|
|
191
182
|
<DialogActions>
|
|
@@ -98,6 +98,7 @@ export function StringNumberFilterField({
|
|
|
98
98
|
<div className="flex w-[440px]">
|
|
99
99
|
<div className={"w-[80px]"}>
|
|
100
100
|
<Select value={operation}
|
|
101
|
+
fullWidth={true}
|
|
101
102
|
position={"item-aligned"}
|
|
102
103
|
onValueChange={(value) => {
|
|
103
104
|
updateFilter(value as VirtualTableWhereFilterOp, internalValue);
|
|
@@ -131,6 +132,7 @@ export function StringNumberFilterField({
|
|
|
131
132
|
{enumValues && !multiple &&
|
|
132
133
|
<Select
|
|
133
134
|
position={"item-aligned"}
|
|
135
|
+
fullWidth={true}
|
|
134
136
|
value={typeof internalValue === "string" ? internalValue : ""}
|
|
135
137
|
onValueChange={(value) => {
|
|
136
138
|
if (value !== "")
|
package/src/core/FireCMS.tsx
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
1
3
|
import React, { useMemo } from "react";
|
|
2
4
|
import { CenteredView, Typography } from "@firecms/ui";
|
|
3
5
|
import { CustomizationController, EntityCollection, FireCMSContext, FireCMSPlugin, FireCMSProps, User } from "../types";
|
|
@@ -86,6 +88,7 @@ export function FireCMS<USER extends User, EC extends EntityCollection>(props: F
|
|
|
86
88
|
dataSourceDelegate,
|
|
87
89
|
plugins
|
|
88
90
|
});
|
|
91
|
+
|
|
89
92
|
if (accessResponse?.message) {
|
|
90
93
|
console.warn(accessResponse.message);
|
|
91
94
|
}
|
|
@@ -300,7 +300,7 @@ export const DEFAULT_FIELD_CONFIGS: Record<string, PropertyConfig<any>> = {
|
|
|
300
300
|
block: {
|
|
301
301
|
key: "block",
|
|
302
302
|
name: "Block",
|
|
303
|
-
description: "A complex field that allows the user to compose different fields together, with a key
|
|
303
|
+
description: "A complex field that allows the user to compose different fields together, with a key/value format",
|
|
304
304
|
Icon: ViewStreamIcon,
|
|
305
305
|
color: "#ff9408",
|
|
306
306
|
property: {
|
|
@@ -31,7 +31,7 @@ export function StorageItemPreview({
|
|
|
31
31
|
return (
|
|
32
32
|
<div className={cls(paperMixin,
|
|
33
33
|
"relative m-4 border-box flex items-center justify-center",
|
|
34
|
-
size === "
|
|
34
|
+
size === "large" ? "min-w-[220px] min-h-[220px] max-w-[220px]" : "min-w-[118px] min-h-[118px] max-w-[118px]",
|
|
35
35
|
className)}>
|
|
36
36
|
|
|
37
37
|
{!placeholder && !disabled &&
|
|
@@ -226,6 +226,7 @@ function BlockEntry({
|
|
|
226
226
|
placeholder={<Typography variant={"caption"}
|
|
227
227
|
className={"px-4 py-2 font-medium"}>Type</Typography>}
|
|
228
228
|
size={"medium"}
|
|
229
|
+
fullWidth={true}
|
|
229
230
|
position={"item-aligned"}
|
|
230
231
|
value={value1}
|
|
231
232
|
renderValue={(enumKey: any) =>
|
|
@@ -146,6 +146,7 @@ const buildPickKeysSelect = (disabled: boolean, properties: Properties, setValue
|
|
|
146
146
|
<Select
|
|
147
147
|
value={""}
|
|
148
148
|
size={"large"}
|
|
149
|
+
fullWidth={true}
|
|
149
150
|
disabled={disabled}
|
|
150
151
|
onValueChange={handleAddProperty}
|
|
151
152
|
renderValue={(key) => (properties as Properties)[key].name || key}>
|
|
@@ -339,7 +339,7 @@ export function StorageUpload({
|
|
|
339
339
|
}
|
|
340
340
|
|
|
341
341
|
const metadata: Record<string, unknown> | undefined = storage?.metadata;
|
|
342
|
-
const size = multipleFilesSupported ? "
|
|
342
|
+
const size = multipleFilesSupported ? "medium" : "large";
|
|
343
343
|
|
|
344
344
|
const moveItem = useCallback((fromIndex: number, toIndex: number) => {
|
|
345
345
|
if (!multipleFilesSupported) return;
|
|
@@ -16,18 +16,18 @@ type SwitchFieldProps = FieldProps<boolean>;
|
|
|
16
16
|
* and tables to the specified properties.
|
|
17
17
|
* @group Form fields
|
|
18
18
|
*/
|
|
19
|
-
export const SwitchFieldBinding =
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
19
|
+
export const SwitchFieldBinding = function SwitchFieldBinding({
|
|
20
|
+
propertyKey,
|
|
21
|
+
value,
|
|
22
|
+
setValue,
|
|
23
|
+
error,
|
|
24
|
+
showError,
|
|
25
|
+
autoFocus,
|
|
26
|
+
disabled,
|
|
27
|
+
size = "large",
|
|
28
|
+
property,
|
|
29
|
+
includeDescription
|
|
30
|
+
}: SwitchFieldProps) {
|
|
31
31
|
|
|
32
32
|
useClearRestoreValue({
|
|
33
33
|
property,
|
|
@@ -39,18 +39,18 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
39
39
|
<>
|
|
40
40
|
|
|
41
41
|
<PropertyIdCopyTooltip propertyKey={propertyKey}>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
<BooleanSwitchWithLabel
|
|
43
|
+
value={value}
|
|
44
|
+
onValueChange={(v) => setValue(v)}
|
|
45
|
+
error={showError}
|
|
46
|
+
label={<LabelWithIcon
|
|
47
|
+
icon={getIconForProperty(property, "small")}
|
|
48
|
+
required={property.validation?.required}
|
|
49
|
+
title={property.name}/>}
|
|
50
|
+
disabled={disabled}
|
|
51
|
+
autoFocus={autoFocus}
|
|
52
|
+
size={size}
|
|
53
|
+
/>
|
|
54
54
|
</PropertyIdCopyTooltip>
|
|
55
55
|
|
|
56
56
|
<FieldHelperText includeDescription={includeDescription}
|
|
@@ -61,4 +61,4 @@ export const SwitchFieldBinding = React.forwardRef(function SwitchFieldBinding({
|
|
|
61
61
|
</>
|
|
62
62
|
|
|
63
63
|
);
|
|
64
|
-
}
|
|
64
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback } from "react";
|
|
2
2
|
import { Blocker, Transition } from "history";
|
|
3
3
|
import { UNSAFE_NavigationContext, useNavigate } from "react-router-dom";
|
|
4
|
-
import { Button, Dialog, DialogActions, DialogContent, Typography } from "@firecms/ui";
|
|
4
|
+
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from "@firecms/ui";
|
|
5
5
|
|
|
6
6
|
export function useNavigationUnsavedChangesDialog(when: boolean, onSuccess: () => void):
|
|
7
7
|
{
|
|
@@ -89,8 +89,8 @@ export function UnsavedChangesDialog({
|
|
|
89
89
|
}}
|
|
90
90
|
open={open}
|
|
91
91
|
>
|
|
92
|
+
<DialogTitle variant={"h6"}>{title}</DialogTitle>
|
|
92
93
|
<DialogContent>
|
|
93
|
-
<Typography variant={"h6"}>{title}</Typography>
|
|
94
94
|
|
|
95
95
|
{body}
|
|
96
96
|
|
package/src/types/auth.tsx
CHANGED
|
@@ -70,7 +70,7 @@ export function useStorageUploadController<M extends object>({
|
|
|
70
70
|
throw Error("Storage meta must be specified");
|
|
71
71
|
|
|
72
72
|
const metadata: Record<string, any> | undefined = storage?.metadata;
|
|
73
|
-
const size = multipleFilesSupported ? "
|
|
73
|
+
const size = multipleFilesSupported ? "medium" : "large";
|
|
74
74
|
|
|
75
75
|
const compression: ImageCompression | undefined = storage?.imageCompression;
|
|
76
76
|
|