@etsoo/materialui 1.6.58 → 1.6.60
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/lib/cjs/ResponsibleContainer.d.ts +1 -1
- package/lib/cjs/UserAvatarEditor.js +10 -7
- package/lib/cjs/pages/ResponsivePage.d.ts +8 -0
- package/lib/cjs/pages/ResponsivePage.js +3 -3
- package/lib/mjs/ResponsibleContainer.d.ts +1 -1
- package/lib/mjs/UserAvatarEditor.js +10 -7
- package/lib/mjs/pages/ResponsivePage.d.ts +8 -0
- package/lib/mjs/pages/ResponsivePage.js +3 -3
- package/package.json +2 -2
- package/src/ResponsibleContainer.tsx +1 -1
- package/src/UserAvatarEditor.tsx +16 -12
- package/src/pages/ResponsivePage.tsx +19 -1
|
@@ -130,6 +130,12 @@ function UserAvatarEditor(props) {
|
|
|
130
130
|
const newState = { ...editorState, rotate };
|
|
131
131
|
setEditorState(newState);
|
|
132
132
|
};
|
|
133
|
+
let picaInstance;
|
|
134
|
+
// toBlob helper
|
|
135
|
+
// Convenience method, similar to canvas.toBlob(), but with promise interface & polyfill for old browsers.
|
|
136
|
+
const toBlob = (canvas, mimeType = type.current, quality = 1) => {
|
|
137
|
+
return picaInstance.toBlob(canvas, mimeType, quality);
|
|
138
|
+
};
|
|
133
139
|
// Handle done
|
|
134
140
|
const handleDone = async () => {
|
|
135
141
|
// Data
|
|
@@ -139,13 +145,10 @@ function UserAvatarEditor(props) {
|
|
|
139
145
|
if (data == null)
|
|
140
146
|
return;
|
|
141
147
|
// pica
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const toBlob = (canvas, mimeType = type.current, quality = 1) => {
|
|
147
|
-
return picaInstance.toBlob(canvas, mimeType, quality);
|
|
148
|
-
};
|
|
148
|
+
if (picaInstance == null) {
|
|
149
|
+
const pica = (await import("pica")).Pica;
|
|
150
|
+
picaInstance = new pica();
|
|
151
|
+
}
|
|
149
152
|
if (data.width > maxWidthCalculated) {
|
|
150
153
|
// Target height
|
|
151
154
|
const heightCalculated = (localHeight * maxWidthCalculated) / width;
|
|
@@ -43,6 +43,14 @@ export type ResponsePageProps<T extends object, F> = Omit<DataGridPageProps<T, F
|
|
|
43
43
|
* Row height
|
|
44
44
|
*/
|
|
45
45
|
rowHeight?: ResponsibleContainerProps<T, F>["rowHeight"];
|
|
46
|
+
/**
|
|
47
|
+
* Header
|
|
48
|
+
*/
|
|
49
|
+
header?: React.ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* Footer
|
|
52
|
+
*/
|
|
53
|
+
footer?: React.ReactNode;
|
|
46
54
|
};
|
|
47
55
|
/**
|
|
48
56
|
* Fixed height list page
|
|
@@ -17,14 +17,14 @@ const OperationMessageContainer_1 = require("../messages/OperationMessageContain
|
|
|
17
17
|
*/
|
|
18
18
|
function ResponsivePage(props) {
|
|
19
19
|
// Destruct
|
|
20
|
-
const { pageProps = {}, operationMessageHandler, ...rest } = props;
|
|
20
|
+
const { pageProps = {}, operationMessageHandler, header, footer, ...rest } = props;
|
|
21
21
|
pageProps.paddings ??= MUGlobal_1.MUGlobal.pagePaddings;
|
|
22
22
|
const { paddings, fabColumnDirection, ...pageRest } = pageProps;
|
|
23
23
|
// State
|
|
24
24
|
const [scrollContainer, setScrollContainer] = react_1.default.useState();
|
|
25
25
|
const [direction, setDirection] = react_1.default.useState(fabColumnDirection);
|
|
26
26
|
// Layout
|
|
27
|
-
return ((0, jsx_runtime_1.jsxs)(CommonPage_1.CommonPage, { ...pageRest, paddings: {}, scrollContainer: scrollContainer, fabColumnDirection: direction, children: [operationMessageHandler && ((0, jsx_runtime_1.jsx)(OperationMessageContainer_1.OperationMessageContainer, { handler: operationMessageHandler })), (0, jsx_runtime_1.jsx)(ResponsibleContainer_1.ResponsibleContainer, { paddings: paddings, containerBoxSx: (paddings, hasField, _dataGrid) => {
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)(CommonPage_1.CommonPage, { ...pageRest, paddings: {}, scrollContainer: scrollContainer, fabColumnDirection: direction, children: [operationMessageHandler && ((0, jsx_runtime_1.jsx)(OperationMessageContainer_1.OperationMessageContainer, { handler: operationMessageHandler })), header, (0, jsx_runtime_1.jsx)(ResponsibleContainer_1.ResponsibleContainer, { paddings: paddings, containerBoxSx: (paddings, hasField, _dataGrid) => {
|
|
28
28
|
// Half
|
|
29
29
|
const half = typeof paddings == "number"
|
|
30
30
|
? paddings / 2
|
|
@@ -49,5 +49,5 @@ function ResponsivePage(props) {
|
|
|
49
49
|
}, elementReady: (element, isDataGrid) => {
|
|
50
50
|
setDirection(!isDataGrid);
|
|
51
51
|
setScrollContainer(element);
|
|
52
|
-
}, ...rest })] }));
|
|
52
|
+
}, ...rest }), footer] }));
|
|
53
53
|
}
|
|
@@ -124,6 +124,12 @@ export function UserAvatarEditor(props) {
|
|
|
124
124
|
const newState = { ...editorState, rotate };
|
|
125
125
|
setEditorState(newState);
|
|
126
126
|
};
|
|
127
|
+
let picaInstance;
|
|
128
|
+
// toBlob helper
|
|
129
|
+
// Convenience method, similar to canvas.toBlob(), but with promise interface & polyfill for old browsers.
|
|
130
|
+
const toBlob = (canvas, mimeType = type.current, quality = 1) => {
|
|
131
|
+
return picaInstance.toBlob(canvas, mimeType, quality);
|
|
132
|
+
};
|
|
127
133
|
// Handle done
|
|
128
134
|
const handleDone = async () => {
|
|
129
135
|
// Data
|
|
@@ -133,13 +139,10 @@ export function UserAvatarEditor(props) {
|
|
|
133
139
|
if (data == null)
|
|
134
140
|
return;
|
|
135
141
|
// pica
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const toBlob = (canvas, mimeType = type.current, quality = 1) => {
|
|
141
|
-
return picaInstance.toBlob(canvas, mimeType, quality);
|
|
142
|
-
};
|
|
142
|
+
if (picaInstance == null) {
|
|
143
|
+
const pica = (await import("pica")).Pica;
|
|
144
|
+
picaInstance = new pica();
|
|
145
|
+
}
|
|
143
146
|
if (data.width > maxWidthCalculated) {
|
|
144
147
|
// Target height
|
|
145
148
|
const heightCalculated = (localHeight * maxWidthCalculated) / width;
|
|
@@ -43,6 +43,14 @@ export type ResponsePageProps<T extends object, F> = Omit<DataGridPageProps<T, F
|
|
|
43
43
|
* Row height
|
|
44
44
|
*/
|
|
45
45
|
rowHeight?: ResponsibleContainerProps<T, F>["rowHeight"];
|
|
46
|
+
/**
|
|
47
|
+
* Header
|
|
48
|
+
*/
|
|
49
|
+
header?: React.ReactNode;
|
|
50
|
+
/**
|
|
51
|
+
* Footer
|
|
52
|
+
*/
|
|
53
|
+
footer?: React.ReactNode;
|
|
46
54
|
};
|
|
47
55
|
/**
|
|
48
56
|
* Fixed height list page
|
|
@@ -11,14 +11,14 @@ import { OperationMessageContainer } from "../messages/OperationMessageContainer
|
|
|
11
11
|
*/
|
|
12
12
|
export function ResponsivePage(props) {
|
|
13
13
|
// Destruct
|
|
14
|
-
const { pageProps = {}, operationMessageHandler, ...rest } = props;
|
|
14
|
+
const { pageProps = {}, operationMessageHandler, header, footer, ...rest } = props;
|
|
15
15
|
pageProps.paddings ??= MUGlobal.pagePaddings;
|
|
16
16
|
const { paddings, fabColumnDirection, ...pageRest } = pageProps;
|
|
17
17
|
// State
|
|
18
18
|
const [scrollContainer, setScrollContainer] = React.useState();
|
|
19
19
|
const [direction, setDirection] = React.useState(fabColumnDirection);
|
|
20
20
|
// Layout
|
|
21
|
-
return (_jsxs(CommonPage, { ...pageRest, paddings: {}, scrollContainer: scrollContainer, fabColumnDirection: direction, children: [operationMessageHandler && (_jsx(OperationMessageContainer, { handler: operationMessageHandler })), _jsx(ResponsibleContainer, { paddings: paddings, containerBoxSx: (paddings, hasField, _dataGrid) => {
|
|
21
|
+
return (_jsxs(CommonPage, { ...pageRest, paddings: {}, scrollContainer: scrollContainer, fabColumnDirection: direction, children: [operationMessageHandler && (_jsx(OperationMessageContainer, { handler: operationMessageHandler })), header, _jsx(ResponsibleContainer, { paddings: paddings, containerBoxSx: (paddings, hasField, _dataGrid) => {
|
|
22
22
|
// Half
|
|
23
23
|
const half = typeof paddings == "number"
|
|
24
24
|
? paddings / 2
|
|
@@ -43,5 +43,5 @@ export function ResponsivePage(props) {
|
|
|
43
43
|
}, elementReady: (element, isDataGrid) => {
|
|
44
44
|
setDirection(!isDataGrid);
|
|
45
45
|
setScrollContainer(element);
|
|
46
|
-
}, ...rest })] }));
|
|
46
|
+
}, ...rest }), footer] }));
|
|
47
47
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@etsoo/materialui",
|
|
3
|
-
"version": "1.6.
|
|
3
|
+
"version": "1.6.60",
|
|
4
4
|
"description": "TypeScript Material-UI Implementation",
|
|
5
5
|
"main": "lib/cjs/index.js",
|
|
6
6
|
"module": "lib/mjs/index.js",
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
"chartjs-plugin-datalabels": "^2.2.0",
|
|
52
52
|
"dompurify": "^3.4.5",
|
|
53
53
|
"eventemitter3": "^5.0.4",
|
|
54
|
-
"pica": "^
|
|
54
|
+
"pica": "^10.0.1",
|
|
55
55
|
"pulltorefreshjs": "^0.1.22",
|
|
56
56
|
"react": "^19.2.6",
|
|
57
57
|
"react-avatar-editor": "^15.1.0",
|
package/src/UserAvatarEditor.tsx
CHANGED
|
@@ -251,6 +251,18 @@ export function UserAvatarEditor(props: UserAvatarEditorProps) {
|
|
|
251
251
|
setEditorState(newState);
|
|
252
252
|
};
|
|
253
253
|
|
|
254
|
+
let picaInstance: any;
|
|
255
|
+
|
|
256
|
+
// toBlob helper
|
|
257
|
+
// Convenience method, similar to canvas.toBlob(), but with promise interface & polyfill for old browsers.
|
|
258
|
+
const toBlob = (
|
|
259
|
+
canvas: HTMLCanvasElement,
|
|
260
|
+
mimeType: string = type.current,
|
|
261
|
+
quality: number = 1
|
|
262
|
+
) => {
|
|
263
|
+
return picaInstance.toBlob(canvas, mimeType, quality);
|
|
264
|
+
};
|
|
265
|
+
|
|
254
266
|
// Handle done
|
|
255
267
|
const handleDone = async () => {
|
|
256
268
|
// Data
|
|
@@ -260,18 +272,10 @@ export function UserAvatarEditor(props: UserAvatarEditorProps) {
|
|
|
260
272
|
if (data == null) return;
|
|
261
273
|
|
|
262
274
|
// pica
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
// Convenience method, similar to canvas.toBlob(), but with promise interface & polyfill for old browsers.
|
|
268
|
-
const toBlob = (
|
|
269
|
-
canvas: HTMLCanvasElement,
|
|
270
|
-
mimeType: string = type.current,
|
|
271
|
-
quality: number = 1
|
|
272
|
-
) => {
|
|
273
|
-
return picaInstance.toBlob(canvas, mimeType, quality);
|
|
274
|
-
};
|
|
275
|
+
if (picaInstance == null) {
|
|
276
|
+
const pica = (await import("pica")).Pica;
|
|
277
|
+
picaInstance = new pica();
|
|
278
|
+
}
|
|
275
279
|
|
|
276
280
|
if (data.width > maxWidthCalculated) {
|
|
277
281
|
// Target height
|
|
@@ -60,6 +60,16 @@ export type ResponsePageProps<T extends object, F> = Omit<
|
|
|
60
60
|
* Row height
|
|
61
61
|
*/
|
|
62
62
|
rowHeight?: ResponsibleContainerProps<T, F>["rowHeight"];
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Header
|
|
66
|
+
*/
|
|
67
|
+
header?: React.ReactNode;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Footer
|
|
71
|
+
*/
|
|
72
|
+
footer?: React.ReactNode;
|
|
63
73
|
};
|
|
64
74
|
|
|
65
75
|
/**
|
|
@@ -71,7 +81,13 @@ export function ResponsivePage<T extends object, F>(
|
|
|
71
81
|
props: ResponsePageProps<T, F>
|
|
72
82
|
) {
|
|
73
83
|
// Destruct
|
|
74
|
-
const {
|
|
84
|
+
const {
|
|
85
|
+
pageProps = {},
|
|
86
|
+
operationMessageHandler,
|
|
87
|
+
header,
|
|
88
|
+
footer,
|
|
89
|
+
...rest
|
|
90
|
+
} = props;
|
|
75
91
|
|
|
76
92
|
pageProps.paddings ??= MUGlobal.pagePaddings;
|
|
77
93
|
const { paddings, fabColumnDirection, ...pageRest } = pageProps;
|
|
@@ -91,6 +107,7 @@ export function ResponsivePage<T extends object, F>(
|
|
|
91
107
|
{operationMessageHandler && (
|
|
92
108
|
<OperationMessageContainer handler={operationMessageHandler} />
|
|
93
109
|
)}
|
|
110
|
+
{header}
|
|
94
111
|
<ResponsibleContainer<T, F>
|
|
95
112
|
paddings={paddings}
|
|
96
113
|
containerBoxSx={(paddings, hasField, _dataGrid) => {
|
|
@@ -124,6 +141,7 @@ export function ResponsivePage<T extends object, F>(
|
|
|
124
141
|
}}
|
|
125
142
|
{...rest}
|
|
126
143
|
/>
|
|
144
|
+
{footer}
|
|
127
145
|
</CommonPage>
|
|
128
146
|
);
|
|
129
147
|
}
|