aq-fe-framework 0.1.39 → 0.1.41
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/chunk-2MRECBKN.mjs +206 -0
- package/dist/{chunk-HI66LEBI.mjs → chunk-7C3TEWTW.mjs} +744 -1101
- package/dist/components/index.d.mts +58 -57
- package/dist/components/index.mjs +1 -1
- package/dist/modules-features/admin/core/index.d.mts +51 -50
- package/dist/modules-features/admin/core/index.mjs +441 -835
- package/dist/utils/index.d.mts +1 -5
- package/dist/utils/index.mjs +9 -138
- package/package.json +1 -1
- package/dist/chunk-GHGYRQUR.mjs +0 -67
|
@@ -15,8 +15,7 @@ function cn(...inputs) {
|
|
|
15
15
|
|
|
16
16
|
// src/components/Aceternity/BoxesBackground/MyBoxes.tsx
|
|
17
17
|
import { motion } from "framer-motion";
|
|
18
|
-
import
|
|
19
|
-
import { jsx } from "react/jsx-runtime";
|
|
18
|
+
import React2 from "react";
|
|
20
19
|
var MyBoxesCore = (_a) => {
|
|
21
20
|
var _b = _a, { className } = _b, rest = __objRest(_b, ["className"]);
|
|
22
21
|
const rows = new Array(150).fill(1);
|
|
@@ -35,9 +34,9 @@ var MyBoxesCore = (_a) => {
|
|
|
35
34
|
const getRandomColor = () => {
|
|
36
35
|
return colors[Math.floor(Math.random() * colors.length)];
|
|
37
36
|
};
|
|
38
|
-
return /* @__PURE__ */
|
|
37
|
+
return /* @__PURE__ */ React2.createElement(
|
|
39
38
|
"div",
|
|
40
|
-
|
|
39
|
+
__spreadValues({
|
|
41
40
|
style: {
|
|
42
41
|
transform: `translate(-40%,-60%) skewX(-48deg) skewY(14deg) scale(0.675) rotate(0deg) translateZ(0)`
|
|
43
42
|
},
|
|
@@ -45,41 +44,39 @@ var MyBoxesCore = (_a) => {
|
|
|
45
44
|
"absolute left-1/4 p-4 -top-1/4 flex -translate-x-1/2 -translate-y-1/2 w-full h-full z-0 ",
|
|
46
45
|
className
|
|
47
46
|
)
|
|
48
|
-
}, rest),
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
}, rest),
|
|
48
|
+
rows.map((_4, i5) => /* @__PURE__ */ React2.createElement(motion.div, { key: `row` + i5, className: "w-16 h-8 border-l border-slate-700 relative" }, cols.map((_5, j4) => /* @__PURE__ */ React2.createElement(
|
|
49
|
+
motion.div,
|
|
50
|
+
{
|
|
51
|
+
whileHover: {
|
|
52
|
+
backgroundColor: `var(${getRandomColor()})`,
|
|
53
|
+
transition: { duration: 0 }
|
|
54
|
+
},
|
|
55
|
+
animate: {
|
|
56
|
+
transition: { duration: 2 }
|
|
57
|
+
},
|
|
58
|
+
key: `col` + j4,
|
|
59
|
+
className: "w-16 h-8 border-r border-t border-slate-700 relative"
|
|
60
|
+
},
|
|
61
|
+
j4 % 2 === 0 && i5 % 2 === 0 ? /* @__PURE__ */ React2.createElement(
|
|
62
|
+
"svg",
|
|
51
63
|
{
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
},
|
|
59
|
-
className: "w-16 h-8 border-r border-t border-slate-700 relative",
|
|
60
|
-
children: j4 % 2 === 0 && i5 % 2 === 0 ? /* @__PURE__ */ jsx(
|
|
61
|
-
"svg",
|
|
62
|
-
{
|
|
63
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
64
|
-
fill: "none",
|
|
65
|
-
viewBox: "0 0 24 24",
|
|
66
|
-
strokeWidth: "1.5",
|
|
67
|
-
stroke: "currentColor",
|
|
68
|
-
className: "absolute h-6 w-10 -top-[14px] -left-[22px] text-slate-700 stroke-[1px] pointer-events-none",
|
|
69
|
-
children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 6v12m6-6H6" })
|
|
70
|
-
}
|
|
71
|
-
) : null
|
|
64
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
65
|
+
fill: "none",
|
|
66
|
+
viewBox: "0 0 24 24",
|
|
67
|
+
strokeWidth: "1.5",
|
|
68
|
+
stroke: "currentColor",
|
|
69
|
+
className: "absolute h-6 w-10 -top-[14px] -left-[22px] text-slate-700 stroke-[1px] pointer-events-none"
|
|
72
70
|
},
|
|
73
|
-
|
|
74
|
-
)
|
|
75
|
-
|
|
71
|
+
/* @__PURE__ */ React2.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M12 6v12m6-6H6" })
|
|
72
|
+
) : null
|
|
73
|
+
))))
|
|
76
74
|
);
|
|
77
75
|
};
|
|
78
|
-
var Boxes =
|
|
76
|
+
var Boxes = React2.memo(MyBoxesCore);
|
|
79
77
|
|
|
80
78
|
// src/components/Loaders/MyCardioLoader.tsx
|
|
81
79
|
import { useEffect } from "react";
|
|
82
|
-
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
83
80
|
function MyCardioLoader() {
|
|
84
81
|
useEffect(() => {
|
|
85
82
|
async function getLoader() {
|
|
@@ -88,62 +85,49 @@ function MyCardioLoader() {
|
|
|
88
85
|
}
|
|
89
86
|
getLoader();
|
|
90
87
|
}, []);
|
|
91
|
-
return /* @__PURE__ */
|
|
88
|
+
return /* @__PURE__ */ React.createElement("l-cardio", { color: "var(--cyan-400)" });
|
|
92
89
|
}
|
|
93
90
|
|
|
94
91
|
// src/components/Aceternity/BoxesBackground/MyBoxesBackground.tsx
|
|
95
92
|
import { Center, Space, Text } from "@mantine/core";
|
|
96
|
-
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
97
93
|
function MyBoxesBackground({ title, desc = "\u0110\u01B0\u1EE3c ph\xE1t tri\u1EC3n b\u1EDFi c\xF4ng ty c\xF4ng ngh\u1EC7 Anh Qu\xE2n." }) {
|
|
98
|
-
return /* @__PURE__ */
|
|
99
|
-
/* @__PURE__ */ jsx3("div", { className: "absolute inset-0 w-full h-full bg-slate-900 z-20 [mask-image:radial-gradient(transparent,white)] pointer-events-none" }),
|
|
100
|
-
/* @__PURE__ */ jsx3(MyBoxesCore, {}),
|
|
101
|
-
/* @__PURE__ */ jsx3(Center, { className: "z-20", children: /* @__PURE__ */ jsx3(MyCardioLoader, {}) }),
|
|
102
|
-
/* @__PURE__ */ jsx3(Space, { my: 7 }),
|
|
103
|
-
/* @__PURE__ */ jsx3(Center, { children: /* @__PURE__ */ jsx3(Text, { className: "z-20", fs: "italic", fw: "bold", c: "white", children: "\u0110ang t\u1EA3i..." }) }),
|
|
104
|
-
/* @__PURE__ */ jsx3(Space, { my: 7 }),
|
|
105
|
-
/* @__PURE__ */ jsx3("h1", { className: cn("md:text-4xl text-xl text-white relative z-20"), children: title }),
|
|
106
|
-
/* @__PURE__ */ jsx3("p", { className: "text-center mt-2 text-neutral-300 relative z-20", children: desc })
|
|
107
|
-
] });
|
|
94
|
+
return /* @__PURE__ */ React.createElement("div", { className: "h-[100vh] relative w-full overflow-hidden bg-slate-900 flex flex-col items-center justify-center rounded-lg" }, /* @__PURE__ */ React.createElement("div", { className: "absolute inset-0 w-full h-full bg-slate-900 z-20 [mask-image:radial-gradient(transparent,white)] pointer-events-none" }), /* @__PURE__ */ React.createElement(MyBoxesCore, null), /* @__PURE__ */ React.createElement(Center, { className: "z-20" }, /* @__PURE__ */ React.createElement(MyCardioLoader, null)), /* @__PURE__ */ React.createElement(Space, { my: 7 }), /* @__PURE__ */ React.createElement(Center, null, /* @__PURE__ */ React.createElement(Text, { className: "z-20", fs: "italic", fw: "bold", c: "white" }, "\u0110ang t\u1EA3i...")), /* @__PURE__ */ React.createElement(Space, { my: 7 }), /* @__PURE__ */ React.createElement("h1", { className: cn("md:text-4xl text-xl text-white relative z-20") }, title), /* @__PURE__ */ React.createElement("p", { className: "text-center mt-2 text-neutral-300 relative z-20" }, desc));
|
|
108
95
|
}
|
|
109
96
|
|
|
110
97
|
// src/components/ActionIcons/ActionIcon/MyActionIcon.tsx
|
|
111
98
|
import { ActionIcon } from "@mantine/core";
|
|
112
99
|
import { IconDeviceFloppy, IconEdit, IconPlus, IconTrash } from "@tabler/icons-react";
|
|
113
|
-
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
114
100
|
function MyActionIcon(_a) {
|
|
115
101
|
var _b = _a, { children, crudType = "delete" } = _b, rest = __objRest(_b, ["children", "crudType"]);
|
|
116
102
|
if (crudType == "default") {
|
|
117
|
-
return /* @__PURE__ */
|
|
103
|
+
return /* @__PURE__ */ React.createElement(ActionIcon, __spreadValues({ color: "indigo" }, rest), children);
|
|
118
104
|
}
|
|
119
105
|
if (crudType == "create") {
|
|
120
|
-
return /* @__PURE__ */
|
|
106
|
+
return /* @__PURE__ */ React.createElement(ActionIcon, __spreadValues({ color: "indigo" }, rest), /* @__PURE__ */ React.createElement(IconPlus, null));
|
|
121
107
|
}
|
|
122
108
|
if (crudType == "delete") {
|
|
123
|
-
return /* @__PURE__ */
|
|
109
|
+
return /* @__PURE__ */ React.createElement(ActionIcon, __spreadValues({ color: "red" }, rest), /* @__PURE__ */ React.createElement(IconTrash, null));
|
|
124
110
|
}
|
|
125
111
|
if (crudType == "update") {
|
|
126
|
-
return /* @__PURE__ */
|
|
112
|
+
return /* @__PURE__ */ React.createElement(ActionIcon, __spreadValues({ color: "yellow" }, rest), /* @__PURE__ */ React.createElement(IconEdit, null));
|
|
127
113
|
}
|
|
128
114
|
if (crudType == "save") {
|
|
129
|
-
return /* @__PURE__ */
|
|
115
|
+
return /* @__PURE__ */ React.createElement(ActionIcon, __spreadValues({ color: "green" }, rest), /* @__PURE__ */ React.createElement(IconDeviceFloppy, null));
|
|
130
116
|
}
|
|
131
117
|
}
|
|
132
118
|
|
|
133
119
|
// src/components/Inputs/TextInput/MyTextInput.tsx
|
|
134
120
|
import { TextInput } from "@mantine/core";
|
|
135
|
-
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
136
121
|
function MyTextInput(_a) {
|
|
137
122
|
var _b = _a, { label, defaultValue } = _b, rest = __objRest(_b, ["label", "defaultValue"]);
|
|
138
|
-
return /* @__PURE__ */
|
|
123
|
+
return /* @__PURE__ */ React.createElement(TextInput, __spreadValues({ label, defaultValue, placeholder: label ? `Nh\u1EADp ${label == null ? void 0 : label.toLowerCase()}` : "" }, rest));
|
|
139
124
|
}
|
|
140
125
|
|
|
141
126
|
// src/components/Layouts/FlexColumn/MyFlexColumn.tsx
|
|
142
127
|
import { Flex } from "@mantine/core";
|
|
143
|
-
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
144
128
|
function MyFlexColumn(_a) {
|
|
145
129
|
var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
|
|
146
|
-
return /* @__PURE__ */
|
|
130
|
+
return /* @__PURE__ */ React.createElement(Flex, __spreadValues({ direction: "column", gap: "md" }, rest), children);
|
|
147
131
|
}
|
|
148
132
|
|
|
149
133
|
// src/components/ActionIcons/ActionIconCheck/MyActionIconCheck.tsx
|
|
@@ -151,79 +135,68 @@ import { ActionIcon as ActionIcon2, Button, Checkbox, Modal, Switch, Text as Tex
|
|
|
151
135
|
import { useDisclosure } from "@mantine/hooks";
|
|
152
136
|
import { IconChecklist } from "@tabler/icons-react";
|
|
153
137
|
import { useState } from "react";
|
|
154
|
-
import { Fragment, jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
155
138
|
function MyActionIconCheck(_a) {
|
|
156
139
|
var _b = _a, { modalSize = "50%", comment = "" } = _b, rest = __objRest(_b, ["modalSize", "comment"]);
|
|
157
140
|
const disc = useDisclosure(false);
|
|
158
141
|
const fullScreen = useState(false);
|
|
159
142
|
const hSize = useState("50vh");
|
|
160
|
-
return /* @__PURE__ */
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
143
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Tooltip, { label: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp" }, /* @__PURE__ */ React.createElement(ActionIcon2, __spreadValues({ color: "cyan", onClick: disc[1].open }, rest), /* @__PURE__ */ React.createElement(IconChecklist, { size: 24, color: "blue" }))), /* @__PURE__ */ React.createElement(
|
|
144
|
+
Modal,
|
|
145
|
+
{
|
|
146
|
+
fullScreen: fullScreen[0],
|
|
147
|
+
opened: disc[0],
|
|
148
|
+
onClose: disc[1].close,
|
|
149
|
+
size: modalSize,
|
|
150
|
+
title: /* @__PURE__ */ React.createElement(Text2, null, "Ki\u1EC3m tra h\u1ED3 s\u01A1 \u0111\xE3 \u0111\u0103ng k\xFD")
|
|
151
|
+
},
|
|
152
|
+
/* @__PURE__ */ React.createElement(
|
|
153
|
+
Switch,
|
|
164
154
|
{
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
onClose: disc[1].close,
|
|
168
|
-
size: modalSize,
|
|
169
|
-
title: /* @__PURE__ */ jsx7(Text2, { children: "Ki\u1EC3m tra h\u1ED3 s\u01A1 \u0111\xE3 \u0111\u0103ng k\xFD" }),
|
|
170
|
-
children: [
|
|
171
|
-
/* @__PURE__ */ jsx7(
|
|
172
|
-
Switch,
|
|
173
|
-
{
|
|
174
|
-
defaultChecked: true,
|
|
175
|
-
label: "\u0110\u1EA1t y\xEAu c\u1EA7u"
|
|
176
|
-
}
|
|
177
|
-
),
|
|
178
|
-
/* @__PURE__ */ jsxs2(MyFlexColumn, { children: [
|
|
179
|
-
/* @__PURE__ */ jsx7(MyTextInput, { label: "Nh\u1EADn x\xE9t" }),
|
|
180
|
-
/* @__PURE__ */ jsx7(Checkbox, { label: "G\u1EEDi mail th\xF4ng b\xE1o" }),
|
|
181
|
-
/* @__PURE__ */ jsx7(Button, { children: "C\u1EADp nh\u1EADp" })
|
|
182
|
-
] })
|
|
183
|
-
]
|
|
155
|
+
defaultChecked: true,
|
|
156
|
+
label: "\u0110\u1EA1t y\xEAu c\u1EA7u"
|
|
184
157
|
}
|
|
185
|
-
)
|
|
186
|
-
|
|
158
|
+
),
|
|
159
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, /* @__PURE__ */ React.createElement(MyTextInput, { label: "Nh\u1EADn x\xE9t" }), /* @__PURE__ */ React.createElement(Checkbox, { label: "G\u1EEDi mail th\xF4ng b\xE1o" }), /* @__PURE__ */ React.createElement(Button, null, "C\u1EADp nh\u1EADp"))
|
|
160
|
+
));
|
|
187
161
|
}
|
|
188
162
|
|
|
189
163
|
// src/components/Buttons/Button/MyButton.tsx
|
|
190
164
|
import { Button as Button2 } from "@mantine/core";
|
|
191
165
|
import { IconDeviceFloppy as IconDeviceFloppy2, IconEdit as IconEdit2, IconFileExport, IconFileImport, IconPlus as IconPlus2, IconPrinter, IconTrash as IconTrash2, IconX } from "@tabler/icons-react";
|
|
192
|
-
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
193
166
|
function MyButton(_a) {
|
|
194
167
|
var _b = _a, { children, crudType = "delete" } = _b, rest = __objRest(_b, ["children", "crudType"]);
|
|
195
168
|
if (crudType == "default") {
|
|
196
|
-
return /* @__PURE__ */
|
|
169
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "indigo" }, rest), children);
|
|
197
170
|
}
|
|
198
171
|
if (crudType == "create") {
|
|
199
|
-
return /* @__PURE__ */
|
|
172
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "indigo", type: "submit", leftSection: /* @__PURE__ */ React.createElement(IconPlus2, null) }, rest), children ? children : "L\u01B0u");
|
|
200
173
|
}
|
|
201
174
|
if (crudType == "createMultiple") {
|
|
202
|
-
return /* @__PURE__ */
|
|
175
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "green", type: "submit", leftSection: /* @__PURE__ */ React.createElement(IconPlus2, null) }, rest), children ? children : "Th\xEAm danh s\xE1ch");
|
|
203
176
|
}
|
|
204
177
|
if (crudType == "delete") {
|
|
205
|
-
return /* @__PURE__ */
|
|
178
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "red", leftSection: /* @__PURE__ */ React.createElement(IconTrash2, null) }, rest), children ? children : "X\xE1c nh\u1EADn x\xF3a");
|
|
206
179
|
}
|
|
207
180
|
if (crudType == "update") {
|
|
208
|
-
return /* @__PURE__ */
|
|
181
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "yellow", type: "submit", leftSection: /* @__PURE__ */ React.createElement(IconEdit2, null) }, rest), children ? children : "Ch\u1EC9nh s\u1EEDa");
|
|
209
182
|
}
|
|
210
183
|
if (crudType == "save") {
|
|
211
|
-
return /* @__PURE__ */
|
|
184
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "blue", type: "submit", leftSection: /* @__PURE__ */ React.createElement(IconDeviceFloppy2, null) }, rest), children ? children : "L\u01B0u");
|
|
212
185
|
}
|
|
213
186
|
if (crudType == "import") {
|
|
214
|
-
return /* @__PURE__ */
|
|
187
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "green.8", leftSection: /* @__PURE__ */ React.createElement(IconFileImport, null) }, rest), children ? children : "Import");
|
|
215
188
|
}
|
|
216
189
|
if (crudType == "print") {
|
|
217
|
-
return /* @__PURE__ */
|
|
190
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "orange.7", leftSection: /* @__PURE__ */ React.createElement(IconPrinter, null) }, rest), children ? children : "In");
|
|
218
191
|
}
|
|
219
192
|
if (crudType == "export") {
|
|
220
|
-
return /* @__PURE__ */
|
|
193
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "green.8", leftSection: /* @__PURE__ */ React.createElement(IconFileExport, null) }, rest), children ? children : "In");
|
|
221
194
|
}
|
|
222
195
|
if (crudType == "cancel") {
|
|
223
|
-
return /* @__PURE__ */
|
|
196
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({ color: "gray", leftSection: /* @__PURE__ */ React.createElement(IconX, null) }, rest), children ? children : "H\u1EE7y thao t\xE1c");
|
|
224
197
|
}
|
|
225
198
|
if (crudType == "select") {
|
|
226
|
-
return /* @__PURE__ */
|
|
199
|
+
return /* @__PURE__ */ React.createElement(Button2, __spreadValues({}, rest), children ? children : "Ch\u1ECDn");
|
|
227
200
|
}
|
|
228
201
|
}
|
|
229
202
|
|
|
@@ -236,7 +209,6 @@ import { useState as useState2 } from "react";
|
|
|
236
209
|
// src/components/ActionIcons/ActionIconModal/MyActionIconModal.tsx
|
|
237
210
|
import { ActionIcon as ActionIcon3, Modal as Modal2 } from "@mantine/core";
|
|
238
211
|
import { IconEdit as IconEdit3, IconPlus as IconPlus3, IconTrash as IconTrash3 } from "@tabler/icons-react";
|
|
239
|
-
import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
240
212
|
function MyActionIconModal(_a) {
|
|
241
213
|
var _b = _a, {
|
|
242
214
|
fullScreen = false,
|
|
@@ -256,89 +228,73 @@ function MyActionIconModal(_a) {
|
|
|
256
228
|
"icon"
|
|
257
229
|
]);
|
|
258
230
|
if (crudType == "default") {
|
|
259
|
-
return /* @__PURE__ */
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
}
|
|
271
|
-
)
|
|
272
|
-
] });
|
|
231
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ActionIcon3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "indigo" }, rest), icon), /* @__PURE__ */ React.createElement(
|
|
232
|
+
Modal2,
|
|
233
|
+
{
|
|
234
|
+
fullScreen,
|
|
235
|
+
size: modalSize,
|
|
236
|
+
title,
|
|
237
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
238
|
+
onClose: disclosure[1].close
|
|
239
|
+
},
|
|
240
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
241
|
+
));
|
|
273
242
|
}
|
|
274
243
|
if (crudType == "create") {
|
|
275
|
-
return /* @__PURE__ */
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
}
|
|
287
|
-
)
|
|
288
|
-
] });
|
|
244
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ActionIcon3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open }, rest), icon ? icon : /* @__PURE__ */ React.createElement(IconPlus3, null)), /* @__PURE__ */ React.createElement(
|
|
245
|
+
Modal2,
|
|
246
|
+
{
|
|
247
|
+
fullScreen,
|
|
248
|
+
size: modalSize,
|
|
249
|
+
title: title ? title : "T\u1EA1o d\u1EEF li\u1EC7u m\u1EDBi",
|
|
250
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
251
|
+
onClose: disclosure[1].close
|
|
252
|
+
},
|
|
253
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
254
|
+
));
|
|
289
255
|
}
|
|
290
256
|
if (crudType == "update") {
|
|
291
|
-
return /* @__PURE__ */
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
}
|
|
303
|
-
)
|
|
304
|
-
] });
|
|
257
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ActionIcon3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "yellow" }, rest), icon ? icon : /* @__PURE__ */ React.createElement(IconEdit3, null)), /* @__PURE__ */ React.createElement(
|
|
258
|
+
Modal2,
|
|
259
|
+
{
|
|
260
|
+
fullScreen,
|
|
261
|
+
size: modalSize,
|
|
262
|
+
title: title ? title : "S\u1EEDa d\u1EEF li\u1EC7u",
|
|
263
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
264
|
+
onClose: disclosure[1].close
|
|
265
|
+
},
|
|
266
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
267
|
+
));
|
|
305
268
|
}
|
|
306
269
|
if (crudType == "delete") {
|
|
307
|
-
return /* @__PURE__ */
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
}
|
|
319
|
-
)
|
|
320
|
-
] });
|
|
270
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ActionIcon3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "red" }, rest), icon ? icon : /* @__PURE__ */ React.createElement(IconTrash3, null)), /* @__PURE__ */ React.createElement(
|
|
271
|
+
Modal2,
|
|
272
|
+
{
|
|
273
|
+
fullScreen,
|
|
274
|
+
size: modalSize,
|
|
275
|
+
title: title ? title : "X\xF3a d\u1EEF li\u1EC7u",
|
|
276
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
277
|
+
onClose: disclosure[1].close
|
|
278
|
+
},
|
|
279
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
280
|
+
));
|
|
321
281
|
}
|
|
322
282
|
if (crudType == "check") {
|
|
323
|
-
return /* @__PURE__ */
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
}
|
|
335
|
-
)
|
|
336
|
-
] });
|
|
283
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ActionIcon3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "green" }, rest), icon ? icon : /* @__PURE__ */ React.createElement(IconTrash3, null)), /* @__PURE__ */ React.createElement(
|
|
284
|
+
Modal2,
|
|
285
|
+
{
|
|
286
|
+
fullScreen,
|
|
287
|
+
size: modalSize,
|
|
288
|
+
title: title ? title : "Ki\u1EC3m tra",
|
|
289
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
290
|
+
onClose: disclosure[1].close
|
|
291
|
+
},
|
|
292
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
293
|
+
));
|
|
337
294
|
}
|
|
338
295
|
}
|
|
339
296
|
|
|
340
297
|
// src/components/ActionIcons/ActionIconCRUD/MyActionIconDelete.tsx
|
|
341
|
-
import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
342
298
|
function MyActionIconDelete(_a) {
|
|
343
299
|
var _b = _a, {
|
|
344
300
|
onSubmit,
|
|
@@ -376,52 +332,45 @@ function MyActionIconDelete(_a) {
|
|
|
376
332
|
loadingState[1](true);
|
|
377
333
|
mutation.mutate();
|
|
378
334
|
}
|
|
379
|
-
return /* @__PURE__ */
|
|
335
|
+
return /* @__PURE__ */ React.createElement(
|
|
380
336
|
MyActionIconModal,
|
|
381
|
-
|
|
337
|
+
__spreadValues({
|
|
382
338
|
disclosure: disc,
|
|
383
339
|
crudType: "delete"
|
|
384
|
-
}, rest),
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
onClick: disc[1].close
|
|
413
|
-
}
|
|
414
|
-
)
|
|
415
|
-
] })
|
|
416
|
-
]
|
|
417
|
-
})
|
|
340
|
+
}, rest),
|
|
341
|
+
/* @__PURE__ */ React.createElement(
|
|
342
|
+
Highlight,
|
|
343
|
+
{
|
|
344
|
+
highlight: contextData || [],
|
|
345
|
+
color: "red.6",
|
|
346
|
+
highlightStyles: {
|
|
347
|
+
fontWeight: 700,
|
|
348
|
+
WebkitBackgroundClip: "text",
|
|
349
|
+
WebkitTextFillColor: "transparent"
|
|
350
|
+
}
|
|
351
|
+
},
|
|
352
|
+
`B\u1EA1n s\u1EAFp x\xF3a d\u1EEF li\u1EC7u ${contextData || ""}. H\xE0nh \u0111\u1ED9ng n\xE0y kh\xF4ng th\u1EC3 ho\xE0n t\xE1c. B\u1EA1n c\xF3 ch\u1EAFc ch\u1EAFn mu\u1ED1n ti\u1EBFp t\u1EE5c?`
|
|
353
|
+
),
|
|
354
|
+
/* @__PURE__ */ React.createElement(Group, { grow: true }, /* @__PURE__ */ React.createElement(
|
|
355
|
+
MyButton,
|
|
356
|
+
{
|
|
357
|
+
crudType: "delete",
|
|
358
|
+
onClick: handleCLick,
|
|
359
|
+
loading: loadingState[0]
|
|
360
|
+
}
|
|
361
|
+
), /* @__PURE__ */ React.createElement(
|
|
362
|
+
MyButton,
|
|
363
|
+
{
|
|
364
|
+
crudType: "cancel",
|
|
365
|
+
onClick: disc[1].close
|
|
366
|
+
}
|
|
367
|
+
))
|
|
418
368
|
);
|
|
419
369
|
}
|
|
420
370
|
|
|
421
371
|
// src/components/ActionIcons/ActionIconCRUD/MyActionIconUpdate.tsx
|
|
422
372
|
import { useDisclosure as useDisclosure3 } from "@mantine/hooks";
|
|
423
373
|
import { useMutation as useMutation2, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
|
|
424
|
-
import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
425
374
|
function MyActionIconUpdate(_a) {
|
|
426
375
|
var _b = _a, {
|
|
427
376
|
form,
|
|
@@ -454,20 +403,16 @@ function MyActionIconUpdate(_a) {
|
|
|
454
403
|
if (onError) onError();
|
|
455
404
|
}
|
|
456
405
|
});
|
|
457
|
-
return /* @__PURE__ */
|
|
406
|
+
return /* @__PURE__ */ React.createElement(MyActionIconModal, __spreadValues({ disclosure: disc, crudType: "update" }, rest), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit((values) => {
|
|
458
407
|
mutation.mutate(values);
|
|
459
|
-
}), children
|
|
460
|
-
children,
|
|
461
|
-
/* @__PURE__ */ jsx11(MyButton, { type: "submit", crudType: "save" })
|
|
462
|
-
] }) }) }));
|
|
408
|
+
}) }, /* @__PURE__ */ React.createElement(MyFlexColumn, null, children, /* @__PURE__ */ React.createElement(MyButton, { type: "submit", crudType: "save" }))));
|
|
463
409
|
}
|
|
464
410
|
|
|
465
411
|
// src/components/ActionIcons/ActionIconDownloadPDF/MyActionIconDownloadPDF.tsx
|
|
466
412
|
import { ActionIcon as ActionIcon4, Tooltip as Tooltip2 } from "@mantine/core";
|
|
467
413
|
import { IconDownload } from "@tabler/icons-react";
|
|
468
|
-
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
469
414
|
function MyActionIconDownloadPDF({ pdfLink = "https://datafiles.chinhphu.vn/cpp/files/vbpq/2021/07/17-bgd.signed.pdf" }) {
|
|
470
|
-
return /* @__PURE__ */
|
|
415
|
+
return /* @__PURE__ */ React.createElement(Tooltip2, { label: "Nh\u1EA5p \u0111\u1EC3 t\u1EA3i xu\u1ED1ng" }, /* @__PURE__ */ React.createElement(ActionIcon4, { onClick: async () => await utils_pdf_download(pdfLink), color: "red" }, /* @__PURE__ */ React.createElement(IconDownload, null)));
|
|
471
416
|
}
|
|
472
417
|
|
|
473
418
|
// src/components/ActionIcons/ActionIconUpload/MyActionIconUpload.tsx
|
|
@@ -475,19 +420,18 @@ import { ActionIcon as ActionIcon5 } from "@mantine/core";
|
|
|
475
420
|
import { Dropzone, MIME_TYPES } from "@mantine/dropzone";
|
|
476
421
|
import { IconCloudUpload } from "@tabler/icons-react";
|
|
477
422
|
import { useRef } from "react";
|
|
478
|
-
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
479
423
|
function MyActionIconUpload() {
|
|
480
424
|
const openRef = useRef(null);
|
|
481
|
-
return /* @__PURE__ */
|
|
425
|
+
return /* @__PURE__ */ React.createElement(
|
|
482
426
|
Dropzone,
|
|
483
427
|
{
|
|
484
428
|
openRef,
|
|
485
429
|
onDrop: () => {
|
|
486
430
|
},
|
|
487
431
|
radius: "md",
|
|
488
|
-
accept: [MIME_TYPES.pdf]
|
|
489
|
-
|
|
490
|
-
|
|
432
|
+
accept: [MIME_TYPES.pdf]
|
|
433
|
+
},
|
|
434
|
+
/* @__PURE__ */ React.createElement(ActionIcon5, null, /* @__PURE__ */ React.createElement(IconCloudUpload, null))
|
|
491
435
|
);
|
|
492
436
|
}
|
|
493
437
|
|
|
@@ -496,47 +440,40 @@ import { ActionIcon as ActionIcon6, Group as Group2, Modal as Modal3, Paper, Tex
|
|
|
496
440
|
import { useDisclosure as useDisclosure4 } from "@mantine/hooks";
|
|
497
441
|
import { IconLivePhoto, IconMaximize, IconMinimize } from "@tabler/icons-react";
|
|
498
442
|
import { useState as useState3 } from "react";
|
|
499
|
-
import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
500
443
|
function MyActionIconViewPDF(_a) {
|
|
501
444
|
var _b = _a, { modalSize = "80%", pdfLink = "https://datafiles.chinhphu.vn/cpp/files/vbpq/2021/07/17-bgd.signed.pdf" } = _b, rest = __objRest(_b, ["modalSize", "pdfLink"]);
|
|
502
445
|
const disc = useDisclosure4(false);
|
|
503
446
|
const fullScreen = useState3(false);
|
|
504
447
|
const hSize = useState3("80vh");
|
|
505
|
-
return /* @__PURE__ */
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
)
|
|
535
|
-
] }),
|
|
536
|
-
children: /* @__PURE__ */ jsx14(Paper, { h: hSize[0], p: "lg", children: /* @__PURE__ */ jsx14("iframe", { src: pdfLink, width: "100%", height: "100%" }) })
|
|
537
|
-
}
|
|
538
|
-
)
|
|
539
|
-
] });
|
|
448
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Tooltip3, { label: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp" }, /* @__PURE__ */ React.createElement(ActionIcon6, __spreadValues({ color: "cyan", onClick: disc[1].open }, rest), /* @__PURE__ */ React.createElement(IconLivePhoto, null))), /* @__PURE__ */ React.createElement(
|
|
449
|
+
Modal3,
|
|
450
|
+
{
|
|
451
|
+
fullScreen: fullScreen[0],
|
|
452
|
+
opened: disc[0],
|
|
453
|
+
onClose: disc[1].close,
|
|
454
|
+
size: modalSize,
|
|
455
|
+
title: /* @__PURE__ */ React.createElement(Group2, null, /* @__PURE__ */ React.createElement(Text3, null, "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp"), fullScreen[0] ? /* @__PURE__ */ React.createElement(
|
|
456
|
+
ActionIcon6,
|
|
457
|
+
{
|
|
458
|
+
onClick: () => {
|
|
459
|
+
fullScreen[1](false);
|
|
460
|
+
hSize[1]("80vh");
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
/* @__PURE__ */ React.createElement(IconMinimize, null)
|
|
464
|
+
) : /* @__PURE__ */ React.createElement(
|
|
465
|
+
ActionIcon6,
|
|
466
|
+
{
|
|
467
|
+
onClick: () => {
|
|
468
|
+
fullScreen[1](true);
|
|
469
|
+
hSize[1]("90vh");
|
|
470
|
+
}
|
|
471
|
+
},
|
|
472
|
+
/* @__PURE__ */ React.createElement(IconMaximize, null)
|
|
473
|
+
))
|
|
474
|
+
},
|
|
475
|
+
/* @__PURE__ */ React.createElement(Paper, { h: hSize[0], p: "lg" }, /* @__PURE__ */ React.createElement("iframe", { src: pdfLink, width: "100%", height: "100%" }))
|
|
476
|
+
));
|
|
540
477
|
}
|
|
541
478
|
|
|
542
479
|
// src/components/ActionIcons/SwitchTheme/MySwitchTheme.tsx
|
|
@@ -548,23 +485,20 @@ import cx from "clsx";
|
|
|
548
485
|
var css_default = {};
|
|
549
486
|
|
|
550
487
|
// src/components/ActionIcons/SwitchTheme/MySwitchTheme.tsx
|
|
551
|
-
import { jsx as jsx15, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
552
488
|
function MySwitchTheme() {
|
|
553
489
|
const { setColorScheme } = useMantineColorScheme();
|
|
554
490
|
const computedColorScheme = useComputedColorScheme("light", { getInitialValueInEffect: true });
|
|
555
|
-
return /* @__PURE__ */
|
|
491
|
+
return /* @__PURE__ */ React.createElement(
|
|
556
492
|
ActionIcon7,
|
|
557
493
|
{
|
|
558
494
|
onClick: () => setColorScheme(computedColorScheme === "light" ? "dark" : "light"),
|
|
559
495
|
variant: "default",
|
|
560
496
|
size: "lg",
|
|
561
497
|
radius: "md",
|
|
562
|
-
"aria-label": "Toggle color scheme"
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
]
|
|
567
|
-
}
|
|
498
|
+
"aria-label": "Toggle color scheme"
|
|
499
|
+
},
|
|
500
|
+
/* @__PURE__ */ React.createElement(IconSun, { className: cx(css_default.icon, css_default.light), stroke: 1.5 }),
|
|
501
|
+
/* @__PURE__ */ React.createElement(IconMoon, { className: cx(css_default.icon, css_default.dark), stroke: 1.5 })
|
|
568
502
|
);
|
|
569
503
|
}
|
|
570
504
|
|
|
@@ -610,7 +544,6 @@ import { Spotlight, spotlight } from "@mantine/spotlight";
|
|
|
610
544
|
import { IconSearch } from "@tabler/icons-react";
|
|
611
545
|
import { usePathname, useRouter } from "next/navigation";
|
|
612
546
|
import { useMemo, useState as useState4 } from "react";
|
|
613
|
-
import { jsx as jsx16, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
614
547
|
function convertMenuToSpotlightActions(items, router, parentPath = "", sideBarStore, pathName) {
|
|
615
548
|
let actions = [];
|
|
616
549
|
items.forEach((item) => {
|
|
@@ -646,7 +579,7 @@ function MyAppSpotlight({ menu }) {
|
|
|
646
579
|
[menu, router, sideBarStore]
|
|
647
580
|
// Add sideBarStore to the dependency array
|
|
648
581
|
);
|
|
649
|
-
return /* @__PURE__ */
|
|
582
|
+
return /* @__PURE__ */ React.createElement(
|
|
650
583
|
Spotlight,
|
|
651
584
|
{
|
|
652
585
|
actions: spotlightActions,
|
|
@@ -658,14 +591,14 @@ function MyAppSpotlight({ menu }) {
|
|
|
658
591
|
nothingFound: "Kh\xF4ng t\xECm th\u1EA5y trang",
|
|
659
592
|
highlightQuery: true,
|
|
660
593
|
searchProps: {
|
|
661
|
-
leftSection: /* @__PURE__ */
|
|
594
|
+
leftSection: /* @__PURE__ */ React.createElement(IconSearch, { stroke: 1.5 }),
|
|
662
595
|
placeholder: "T\xECm ki\u1EBFm trang..."
|
|
663
596
|
}
|
|
664
597
|
}
|
|
665
598
|
);
|
|
666
599
|
}
|
|
667
600
|
function SpotlightTrigger() {
|
|
668
|
-
return /* @__PURE__ */
|
|
601
|
+
return /* @__PURE__ */ React.createElement(
|
|
669
602
|
"button",
|
|
670
603
|
{
|
|
671
604
|
onClick: spotlight.open,
|
|
@@ -676,12 +609,10 @@ function SpotlightTrigger() {
|
|
|
676
609
|
display: "flex",
|
|
677
610
|
alignItems: "center",
|
|
678
611
|
gap: "8px"
|
|
679
|
-
}
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
]
|
|
684
|
-
}
|
|
612
|
+
}
|
|
613
|
+
},
|
|
614
|
+
/* @__PURE__ */ React.createElement(IconSearch, { stroke: 1.5 }),
|
|
615
|
+
"T\xECm ki\u1EBFm (Ctrl + K)"
|
|
685
616
|
);
|
|
686
617
|
}
|
|
687
618
|
|
|
@@ -690,46 +621,39 @@ import { ActionIcon as ActionIcon8, Anchor, Group as Group3, Modal as Modal4, Pa
|
|
|
690
621
|
import { useDisclosure as useDisclosure5 } from "@mantine/hooks";
|
|
691
622
|
import { IconMaximize as IconMaximize2, IconMinimize as IconMinimize2 } from "@tabler/icons-react";
|
|
692
623
|
import { useState as useState5 } from "react";
|
|
693
|
-
import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
694
624
|
function MyAnchorViewPDF({ label, pdfLink }) {
|
|
695
625
|
const disc = useDisclosure5(false);
|
|
696
626
|
const fullScreen = useState5(false);
|
|
697
627
|
const hSize = useState5("80vh");
|
|
698
|
-
return /* @__PURE__ */
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
)
|
|
728
|
-
] }),
|
|
729
|
-
children: /* @__PURE__ */ jsx17(Paper2, { h: hSize[0], children: /* @__PURE__ */ jsx17("iframe", { src: pdfLink, width: "100%", height: "100%" }) })
|
|
730
|
-
}
|
|
731
|
-
)
|
|
732
|
-
] });
|
|
628
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Anchor, { onClick: disc[1].open }, label), /* @__PURE__ */ React.createElement(
|
|
629
|
+
Modal4,
|
|
630
|
+
{
|
|
631
|
+
fullScreen: fullScreen[0],
|
|
632
|
+
opened: disc[0],
|
|
633
|
+
onClose: disc[1].close,
|
|
634
|
+
size: "80%",
|
|
635
|
+
title: /* @__PURE__ */ React.createElement(Group3, null, /* @__PURE__ */ React.createElement(Text4, null, "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp"), fullScreen[0] ? /* @__PURE__ */ React.createElement(
|
|
636
|
+
ActionIcon8,
|
|
637
|
+
{
|
|
638
|
+
onClick: () => {
|
|
639
|
+
fullScreen[1](false);
|
|
640
|
+
hSize[1]("80vh");
|
|
641
|
+
}
|
|
642
|
+
},
|
|
643
|
+
/* @__PURE__ */ React.createElement(IconMinimize2, null)
|
|
644
|
+
) : /* @__PURE__ */ React.createElement(
|
|
645
|
+
ActionIcon8,
|
|
646
|
+
{
|
|
647
|
+
onClick: () => {
|
|
648
|
+
fullScreen[1](true);
|
|
649
|
+
hSize[1]("90vh");
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
/* @__PURE__ */ React.createElement(IconMaximize2, null)
|
|
653
|
+
))
|
|
654
|
+
},
|
|
655
|
+
/* @__PURE__ */ React.createElement(Paper2, { h: hSize[0] }, /* @__PURE__ */ React.createElement("iframe", { src: pdfLink, width: "100%", height: "100%" }))
|
|
656
|
+
));
|
|
733
657
|
}
|
|
734
658
|
|
|
735
659
|
// src/components/Buttons/ButtonCRUD/AQButtonCreateByImportFile.tsx
|
|
@@ -742,7 +666,6 @@ import * as XLSX from "xlsx";
|
|
|
742
666
|
// src/components/Buttons/ButtonModal/MyButtonModal.tsx
|
|
743
667
|
import { Button as Button3, Modal as Modal5 } from "@mantine/core";
|
|
744
668
|
import { IconEdit as IconEdit4, IconPlus as IconPlus4, IconTrash as IconTrash4 } from "@tabler/icons-react";
|
|
745
|
-
import { Fragment as Fragment5, jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
746
669
|
function MyButtonModal(_a) {
|
|
747
670
|
var _b = _a, {
|
|
748
671
|
fullScreen = false,
|
|
@@ -765,89 +688,73 @@ function MyButtonModal(_a) {
|
|
|
765
688
|
]);
|
|
766
689
|
const objectNameLower = objectName == null ? void 0 : objectName.toLowerCase();
|
|
767
690
|
if (crudType == "default") {
|
|
768
|
-
return /* @__PURE__ */
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
}
|
|
780
|
-
)
|
|
781
|
-
] });
|
|
691
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "indigo" }, rest), label), /* @__PURE__ */ React.createElement(
|
|
692
|
+
Modal5,
|
|
693
|
+
{
|
|
694
|
+
fullScreen,
|
|
695
|
+
size: modalSize,
|
|
696
|
+
title,
|
|
697
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
698
|
+
onClose: disclosure[1].close
|
|
699
|
+
},
|
|
700
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
701
|
+
));
|
|
782
702
|
}
|
|
783
703
|
if (crudType == "create") {
|
|
784
|
-
return /* @__PURE__ */
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
}
|
|
796
|
-
)
|
|
797
|
-
] });
|
|
704
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, leftSection: /* @__PURE__ */ React.createElement(IconPlus4, null) }, rest), label ? label : `Th\xEAm`), /* @__PURE__ */ React.createElement(
|
|
705
|
+
Modal5,
|
|
706
|
+
{
|
|
707
|
+
fullScreen,
|
|
708
|
+
size: modalSize,
|
|
709
|
+
title: title ? title : `T\u1EA1o ${objectNameLower} m\u1EDBi`,
|
|
710
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
711
|
+
onClose: disclosure[1].close
|
|
712
|
+
},
|
|
713
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
714
|
+
));
|
|
798
715
|
}
|
|
799
716
|
if (crudType == "createMultiple") {
|
|
800
|
-
return /* @__PURE__ */
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
}
|
|
812
|
-
)
|
|
813
|
-
] });
|
|
717
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "green", leftSection: /* @__PURE__ */ React.createElement(IconPlus4, null) }, rest), label ? label : `Import ${objectNameLower}`), /* @__PURE__ */ React.createElement(
|
|
718
|
+
Modal5,
|
|
719
|
+
{
|
|
720
|
+
fullScreen,
|
|
721
|
+
size: modalSize,
|
|
722
|
+
title: title ? title : `Th\xEAm danh s\xE1ch ${objectNameLower}`,
|
|
723
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
724
|
+
onClose: disclosure[1].close
|
|
725
|
+
},
|
|
726
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
727
|
+
));
|
|
814
728
|
}
|
|
815
729
|
if (crudType == "update") {
|
|
816
|
-
return /* @__PURE__ */
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
}
|
|
828
|
-
)
|
|
829
|
-
] });
|
|
730
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "yellow", leftSection: /* @__PURE__ */ React.createElement(IconEdit4, null) }, rest), label ? label : `Ch\u1EC9nh s\u1EEDa ${objectNameLower}`), /* @__PURE__ */ React.createElement(
|
|
731
|
+
Modal5,
|
|
732
|
+
{
|
|
733
|
+
fullScreen,
|
|
734
|
+
size: modalSize,
|
|
735
|
+
title: title ? title : `Ch\u1EC9nh s\u1EEDa ${objectNameLower}`,
|
|
736
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
737
|
+
onClose: disclosure[1].close
|
|
738
|
+
},
|
|
739
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
740
|
+
));
|
|
830
741
|
}
|
|
831
742
|
if (crudType == "delete") {
|
|
832
|
-
return /* @__PURE__ */
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
}
|
|
844
|
-
)
|
|
845
|
-
] });
|
|
743
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button3, __spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "red", leftSection: /* @__PURE__ */ React.createElement(IconTrash4, null) }, rest), label ? label : `X\xF3a ${objectNameLower}`), /* @__PURE__ */ React.createElement(
|
|
744
|
+
Modal5,
|
|
745
|
+
{
|
|
746
|
+
fullScreen,
|
|
747
|
+
size: modalSize,
|
|
748
|
+
title: title ? title : `X\xF3a ${objectNameLower}`,
|
|
749
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
750
|
+
onClose: disclosure[1].close
|
|
751
|
+
},
|
|
752
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, children)
|
|
753
|
+
));
|
|
846
754
|
}
|
|
847
755
|
}
|
|
848
756
|
|
|
849
757
|
// src/components/Buttons/ButtonCRUD/AQButtonCreateByImportFile.tsx
|
|
850
|
-
import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
851
758
|
function AQButtonCreateByImportFile(_a) {
|
|
852
759
|
var _b = _a, {
|
|
853
760
|
form,
|
|
@@ -896,29 +803,25 @@ function AQButtonCreateByImportFile(_a) {
|
|
|
896
803
|
};
|
|
897
804
|
reader.readAsArrayBuffer(file);
|
|
898
805
|
};
|
|
899
|
-
return /* @__PURE__ */
|
|
900
|
-
}),
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
),
|
|
913
|
-
/* @__PURE__ */ jsx19(MyButton, { type: "submit", crudType: "createMultiple" })
|
|
914
|
-
] }) }) }));
|
|
806
|
+
return /* @__PURE__ */ React.createElement(MyButtonModal, __spreadValues({ disclosure: disc, crudType: "createMultiple" }, rest), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit((values) => {
|
|
807
|
+
}) }, /* @__PURE__ */ React.createElement(MyFlexColumn, null, /* @__PURE__ */ React.createElement(
|
|
808
|
+
FileInput,
|
|
809
|
+
{
|
|
810
|
+
leftSection: /* @__PURE__ */ React.createElement(IconFileTypeXls, null),
|
|
811
|
+
accept: ".xlsx",
|
|
812
|
+
description: "\u0110\u1ECBnh d\u1EA1ng h\u1EE3p l\u1EC7: .xlsx",
|
|
813
|
+
label: "Ch\u1ECDn file",
|
|
814
|
+
onChange: handleFileChange,
|
|
815
|
+
clearable: true,
|
|
816
|
+
placeholder: "Ch\u1ECDn file"
|
|
817
|
+
}
|
|
818
|
+
), /* @__PURE__ */ React.createElement(MyButton, { type: "submit", crudType: "createMultiple" }))));
|
|
915
819
|
}
|
|
916
820
|
|
|
917
821
|
// src/components/Buttons/ButtonCRUD/AQButtonExportData.tsx
|
|
918
822
|
import { Button as Button4 } from "@mantine/core";
|
|
919
823
|
import { IconDownload as IconDownload2 } from "@tabler/icons-react";
|
|
920
824
|
import * as XLSX2 from "xlsx";
|
|
921
|
-
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
922
825
|
function AQButtonExportData({
|
|
923
826
|
isAllData,
|
|
924
827
|
objectName,
|
|
@@ -944,7 +847,7 @@ function AQButtonExportData({
|
|
|
944
847
|
XLSX2.utils.book_append_sheet(workbook, worksheet, "Exported Data");
|
|
945
848
|
XLSX2.writeFile(workbook, `${objectName}.xlsx`);
|
|
946
849
|
};
|
|
947
|
-
return /* @__PURE__ */
|
|
850
|
+
return /* @__PURE__ */ React.createElement(
|
|
948
851
|
Button4,
|
|
949
852
|
{
|
|
950
853
|
disabled: data.length === 0,
|
|
@@ -954,16 +857,15 @@ function AQButtonExportData({
|
|
|
954
857
|
event.preventDefault();
|
|
955
858
|
handleExport();
|
|
956
859
|
},
|
|
957
|
-
leftSection: /* @__PURE__ */
|
|
958
|
-
|
|
959
|
-
|
|
860
|
+
leftSection: /* @__PURE__ */ React.createElement(IconDownload2, null)
|
|
861
|
+
},
|
|
862
|
+
"Export"
|
|
960
863
|
);
|
|
961
864
|
}
|
|
962
865
|
|
|
963
866
|
// src/components/Buttons/ButtonCRUD/MyButtonCreate.tsx
|
|
964
867
|
import { useDisclosure as useDisclosure7 } from "@mantine/hooks";
|
|
965
868
|
import { useMutation as useMutation4, useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
966
|
-
import { jsx as jsx21, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
967
869
|
function MyButtonCreate(_a) {
|
|
968
870
|
var _b = _a, {
|
|
969
871
|
form,
|
|
@@ -1006,12 +908,9 @@ function MyButtonCreate(_a) {
|
|
|
1006
908
|
if (onError) onError();
|
|
1007
909
|
}
|
|
1008
910
|
});
|
|
1009
|
-
return /* @__PURE__ */
|
|
911
|
+
return /* @__PURE__ */ React.createElement(MyButtonModal, __spreadValues({ disclosure, crudType: "create" }, rest), /* @__PURE__ */ React.createElement("form", { onSubmit: form.onSubmit((values) => {
|
|
1010
912
|
mutation.mutate(values);
|
|
1011
|
-
}), children
|
|
1012
|
-
children,
|
|
1013
|
-
/* @__PURE__ */ jsx21(MyButton, { type: "submit", crudType: "save" })
|
|
1014
|
-
] }) }) }));
|
|
913
|
+
}) }, /* @__PURE__ */ React.createElement(MyFlexColumn, null, children, /* @__PURE__ */ React.createElement(MyButton, { type: "submit", crudType: "save" }))));
|
|
1015
914
|
}
|
|
1016
915
|
|
|
1017
916
|
// src/components/Buttons/ButtonImport/MyButtonImport.tsx
|
|
@@ -1020,18 +919,16 @@ import { IconFileImport as IconFileImport2 } from "@tabler/icons-react";
|
|
|
1020
919
|
|
|
1021
920
|
// src/components/Combobox/Select/MySelect.tsx
|
|
1022
921
|
import { Select } from "@mantine/core";
|
|
1023
|
-
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
1024
922
|
function MySelect(_a) {
|
|
1025
923
|
var _b = _a, { label } = _b, rest = __objRest(_b, ["label"]);
|
|
1026
|
-
return /* @__PURE__ */
|
|
924
|
+
return /* @__PURE__ */ React.createElement(Select, __spreadValues({ label, placeholder: label ? `Ch\u1ECDn ${label == null ? void 0 : label.toLowerCase()}` : "" }, rest));
|
|
1027
925
|
}
|
|
1028
926
|
|
|
1029
927
|
// src/components/Layouts/FlexEnd/MyFlexEnd.tsx
|
|
1030
928
|
import { Group as Group4 } from "@mantine/core";
|
|
1031
|
-
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
1032
929
|
function MyFlexEnd(_a) {
|
|
1033
930
|
var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
|
|
1034
|
-
return /* @__PURE__ */
|
|
931
|
+
return /* @__PURE__ */ React.createElement(Group4, __spreadValues({ justify: "end", mt: "md" }, rest), children);
|
|
1035
932
|
}
|
|
1036
933
|
|
|
1037
934
|
// src/components/Buttons/ButtonImport/SelectFieldModal.tsx
|
|
@@ -1202,106 +1099,69 @@ function useS_ButtonImport() {
|
|
|
1202
1099
|
}
|
|
1203
1100
|
|
|
1204
1101
|
// src/components/Buttons/ButtonImport/SelectFieldModal.tsx
|
|
1205
|
-
import { jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1206
1102
|
function SelectFieldModal({ stack, onImport }) {
|
|
1207
1103
|
var _a, _b;
|
|
1208
1104
|
const store = useS_ButtonImport();
|
|
1209
|
-
return /* @__PURE__ */
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
)
|
|
1240
|
-
|
|
1241
|
-
/* @__PURE__ */
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
children: "Chuy\u1EC3n t\u1EA5t c\u1EA3 v\u1EC1"
|
|
1270
|
-
}
|
|
1271
|
-
)
|
|
1272
|
-
] })
|
|
1273
|
-
] }),
|
|
1274
|
-
/* @__PURE__ */ jsx24(Divider, {}),
|
|
1275
|
-
/* @__PURE__ */ jsxs13(MyFlexEnd, { children: [
|
|
1276
|
-
/* @__PURE__ */ jsx24(
|
|
1277
|
-
Button5,
|
|
1278
|
-
{
|
|
1279
|
-
leftSection: /* @__PURE__ */ jsx24(IconArrowBackUp, {}),
|
|
1280
|
-
onClick: () => stack.close("select-field-page"),
|
|
1281
|
-
color: "gray.7",
|
|
1282
|
-
children: "Quay l\u1EA1i"
|
|
1283
|
-
}
|
|
1284
|
-
),
|
|
1285
|
-
/* @__PURE__ */ jsx24(
|
|
1286
|
-
Button5,
|
|
1287
|
-
{
|
|
1288
|
-
color: "blue.8",
|
|
1289
|
-
leftSection: /* @__PURE__ */ jsx24(IconArrowBigRight, {}),
|
|
1290
|
-
onClick: onImport,
|
|
1291
|
-
children: "Ti\u1EBFp t\u1EE5c / Import"
|
|
1292
|
-
}
|
|
1293
|
-
),
|
|
1294
|
-
/* @__PURE__ */ jsx24(
|
|
1295
|
-
Button5,
|
|
1296
|
-
{
|
|
1297
|
-
leftSection: /* @__PURE__ */ jsx24(IconSquareRoundedX, {}),
|
|
1298
|
-
onClick: () => stack.closeAll(),
|
|
1299
|
-
color: "red.6",
|
|
1300
|
-
children: "\u0110\xF3ng"
|
|
1301
|
-
}
|
|
1302
|
-
)
|
|
1303
|
-
] })
|
|
1304
|
-
] }));
|
|
1105
|
+
return /* @__PURE__ */ React.createElement(Modal6, __spreadProps(__spreadValues({ fullScreen: true }, stack.register("select-field-page")), { title: "Import" }), /* @__PURE__ */ React.createElement(SimpleGrid, { cols: { base: 1, lg: 2 } }, /* @__PURE__ */ React.createElement(Fieldset, { legend: "Danh s\xE1ch tr\u01B0\u1EDDng th\xF4ng tin" }, /* @__PURE__ */ React.createElement(Table, { stickyHeader: true, stickyHeaderOffset: 60 }, /* @__PURE__ */ React.createElement(Table.Thead, { bg: "cyan" }, /* @__PURE__ */ React.createElement(Table.Tr, null, /* @__PURE__ */ React.createElement(Table.Th, null, "M\xE3 field"), /* @__PURE__ */ React.createElement(Table.Th, null, "T\xEAn field"))), /* @__PURE__ */ React.createElement(Table.Tbody, null, (_a = store.state.fieldConfig) == null ? void 0 : _a.filter((item) => item.isSelected == false || item.isSelected == void 0).map((item, idx) => /* @__PURE__ */ React.createElement(
|
|
1106
|
+
Table.Tr,
|
|
1107
|
+
{
|
|
1108
|
+
key: idx,
|
|
1109
|
+
style: { cursor: "pointer" }
|
|
1110
|
+
},
|
|
1111
|
+
/* @__PURE__ */ React.createElement(Table.Td, { onClick: () => store.changeSelected(item.fieldKey.toString(), true) }, item.fieldKey.toString()),
|
|
1112
|
+
/* @__PURE__ */ React.createElement(Table.Td, { onClick: () => store.changeSelected(item.fieldKey.toString(), true) }, item.fieldName)
|
|
1113
|
+
)))), /* @__PURE__ */ React.createElement(Space2, null), /* @__PURE__ */ React.createElement(Group5, null, /* @__PURE__ */ React.createElement(
|
|
1114
|
+
Button5,
|
|
1115
|
+
{
|
|
1116
|
+
onClick: () => {
|
|
1117
|
+
store.changeAllSelected(true);
|
|
1118
|
+
},
|
|
1119
|
+
leftSection: /* @__PURE__ */ React.createElement(IconArrowBigRight, null)
|
|
1120
|
+
},
|
|
1121
|
+
"Chuy\u1EC3n t\u1EA5t c\u1EA3"
|
|
1122
|
+
))), /* @__PURE__ */ React.createElement(Fieldset, { legend: "Danh s\xE1ch tr\u01B0\u1EDDng th\xF4ng tin \u0111\u01B0\u1EE3c ch\u1ECDn" }, /* @__PURE__ */ React.createElement(Table, { stickyHeader: true, stickyHeaderOffset: 60 }, /* @__PURE__ */ React.createElement(Table.Thead, null, /* @__PURE__ */ React.createElement(Table.Tr, null, /* @__PURE__ */ React.createElement(Table.Th, null, "M\xE3 field"), /* @__PURE__ */ React.createElement(Table.Th, null, "T\xEAn field"), /* @__PURE__ */ React.createElement(Table.Th, null, "C\u1ED9t map"))), /* @__PURE__ */ React.createElement(Table.Tbody, null, (_b = store.state.fieldConfig) == null ? void 0 : _b.filter((item) => item.isSelected == true).map((item, idx) => /* @__PURE__ */ React.createElement(
|
|
1123
|
+
Table.Tr,
|
|
1124
|
+
{
|
|
1125
|
+
key: idx,
|
|
1126
|
+
style: { cursor: "pointer" }
|
|
1127
|
+
},
|
|
1128
|
+
/* @__PURE__ */ React.createElement(Table.Td, { onClick: () => store.changeSelected(item.fieldKey.toString(), false) }, item.fieldKey.toString()),
|
|
1129
|
+
/* @__PURE__ */ React.createElement(Table.Td, { onClick: () => store.changeSelected(item.fieldKey.toString(), false) }, item.fieldName),
|
|
1130
|
+
/* @__PURE__ */ React.createElement(Table.Td, null, /* @__PURE__ */ React.createElement(MySelect, { data: store.state.title, value: item.fieldToMap, onChange: (e4) => store.setFieldToMap(item.fieldKey.toString(), e4) }))
|
|
1131
|
+
)))), /* @__PURE__ */ React.createElement(Space2, null), /* @__PURE__ */ React.createElement(
|
|
1132
|
+
Button5,
|
|
1133
|
+
{
|
|
1134
|
+
onClick: () => {
|
|
1135
|
+
store.changeAllSelected(false);
|
|
1136
|
+
},
|
|
1137
|
+
leftSection: /* @__PURE__ */ React.createElement(IconArrowBigLeft, null)
|
|
1138
|
+
},
|
|
1139
|
+
"Chuy\u1EC3n t\u1EA5t c\u1EA3 v\u1EC1"
|
|
1140
|
+
))), /* @__PURE__ */ React.createElement(Divider, null), /* @__PURE__ */ React.createElement(MyFlexEnd, null, /* @__PURE__ */ React.createElement(
|
|
1141
|
+
Button5,
|
|
1142
|
+
{
|
|
1143
|
+
leftSection: /* @__PURE__ */ React.createElement(IconArrowBackUp, null),
|
|
1144
|
+
onClick: () => stack.close("select-field-page"),
|
|
1145
|
+
color: "gray.7"
|
|
1146
|
+
},
|
|
1147
|
+
"Quay l\u1EA1i"
|
|
1148
|
+
), /* @__PURE__ */ React.createElement(
|
|
1149
|
+
Button5,
|
|
1150
|
+
{
|
|
1151
|
+
color: "blue.8",
|
|
1152
|
+
leftSection: /* @__PURE__ */ React.createElement(IconArrowBigRight, null),
|
|
1153
|
+
onClick: onImport
|
|
1154
|
+
},
|
|
1155
|
+
"Ti\u1EBFp t\u1EE5c / Import"
|
|
1156
|
+
), /* @__PURE__ */ React.createElement(
|
|
1157
|
+
Button5,
|
|
1158
|
+
{
|
|
1159
|
+
leftSection: /* @__PURE__ */ React.createElement(IconSquareRoundedX, null),
|
|
1160
|
+
onClick: () => stack.closeAll(),
|
|
1161
|
+
color: "red.6"
|
|
1162
|
+
},
|
|
1163
|
+
"\u0110\xF3ng"
|
|
1164
|
+
)));
|
|
1305
1165
|
}
|
|
1306
1166
|
|
|
1307
1167
|
// src/components/DataDisplay/DataTable/MyDataTable.tsx
|
|
@@ -1314,7 +1174,6 @@ import {
|
|
|
1314
1174
|
} from "mantine-react-table";
|
|
1315
1175
|
import { MRT_Localization_VI } from "mantine-react-table/locales/vi/index.cjs";
|
|
1316
1176
|
import { useEffect as useEffect3 } from "react";
|
|
1317
|
-
import { Fragment as Fragment6, jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1318
1177
|
function formatData(data, formats) {
|
|
1319
1178
|
return data.map((row) => {
|
|
1320
1179
|
const transformedRow = {};
|
|
@@ -1355,19 +1214,16 @@ function MyDataTable(_a) {
|
|
|
1355
1214
|
columns,
|
|
1356
1215
|
data,
|
|
1357
1216
|
renderTopToolbarCustomActions: ({ table: table2 }) => {
|
|
1358
|
-
return /* @__PURE__ */
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
}
|
|
1369
|
-
) })
|
|
1370
|
-
] });
|
|
1217
|
+
return /* @__PURE__ */ React.createElement(Group6, null, renderTopToolbarCustomActions && renderTopToolbarCustomActions({ table: table2 }), exportAble && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
1218
|
+
Button6,
|
|
1219
|
+
{
|
|
1220
|
+
color: "green.8",
|
|
1221
|
+
onClick: () => handleExport(table2.getSelectedRowModel().rows),
|
|
1222
|
+
leftSection: /* @__PURE__ */ React.createElement(IconDownload3, null),
|
|
1223
|
+
variant: "filled"
|
|
1224
|
+
},
|
|
1225
|
+
"Export"
|
|
1226
|
+
)));
|
|
1371
1227
|
},
|
|
1372
1228
|
enableRowNumbers: true,
|
|
1373
1229
|
enableRowSelection: exportAble,
|
|
@@ -1414,131 +1270,110 @@ function MyDataTable(_a) {
|
|
|
1414
1270
|
setSelectedRow && setSelectedRow(table.getSelectedRowModel().rows.map((row) => row.original));
|
|
1415
1271
|
}, [table.getState().rowSelection]);
|
|
1416
1272
|
if (data == void 0) return;
|
|
1417
|
-
return /* @__PURE__ */
|
|
1273
|
+
return /* @__PURE__ */ React.createElement(MantineReactTable, { table });
|
|
1418
1274
|
}
|
|
1419
1275
|
|
|
1420
1276
|
// src/components/Buttons/ButtonImport/SelectFileModal.tsx
|
|
1421
1277
|
import { Button as Button7, Fieldset as Fieldset2, FileInput as FileInput2, Modal as Modal7, NumberInput, Select as Select2, SimpleGrid as SimpleGrid2 } from "@mantine/core";
|
|
1422
1278
|
import { IconArrowBigRight as IconArrowBigRight2, IconSquareRoundedX as IconSquareRoundedX2 } from "@tabler/icons-react";
|
|
1423
|
-
import { jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1424
1279
|
function SelectFileModal({ onExportStructure, stack }) {
|
|
1425
1280
|
var _a;
|
|
1426
1281
|
const store = useS_ButtonImport();
|
|
1427
|
-
return /* @__PURE__ */
|
|
1282
|
+
return /* @__PURE__ */ React.createElement(
|
|
1428
1283
|
Modal7,
|
|
1429
|
-
|
|
1284
|
+
__spreadValues({
|
|
1430
1285
|
title: "Import",
|
|
1431
1286
|
fullScreen: true
|
|
1432
|
-
}, stack.register("select-file-page")),
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
/* @__PURE__ */ jsx26(
|
|
1507
|
-
Button7,
|
|
1508
|
-
{
|
|
1509
|
-
color: "red.6",
|
|
1510
|
-
leftSection: /* @__PURE__ */ jsx26(IconSquareRoundedX2, {}),
|
|
1511
|
-
onClick: stack.closeAll,
|
|
1512
|
-
children: "\u0110\xF3ng"
|
|
1513
|
-
}
|
|
1514
|
-
)
|
|
1515
|
-
] })
|
|
1516
|
-
]
|
|
1517
|
-
})
|
|
1287
|
+
}, stack.register("select-file-page")),
|
|
1288
|
+
/* @__PURE__ */ React.createElement(
|
|
1289
|
+
FileInput2,
|
|
1290
|
+
{
|
|
1291
|
+
value: store.state.file,
|
|
1292
|
+
onChange: (e4) => store.setProperty("file", e4),
|
|
1293
|
+
label: "File d\u1EEF li\u1EC7u",
|
|
1294
|
+
placeholder: "Ch\u1ECDn file d\u1EEF li\u1EC7u",
|
|
1295
|
+
clearable: true
|
|
1296
|
+
}
|
|
1297
|
+
),
|
|
1298
|
+
/* @__PURE__ */ React.createElement(SimpleGrid2, { cols: { base: 1, md: 2, lg: 2, xl: 4 } }, /* @__PURE__ */ React.createElement(
|
|
1299
|
+
NumberInput,
|
|
1300
|
+
{
|
|
1301
|
+
label: "D\xF2ng ti\xEAu \u0111\u1EC1 b\u1EAFt \u0111\u1EA7u t\u1EEB",
|
|
1302
|
+
value: store.state.startTitleIndex,
|
|
1303
|
+
onChange: (e4) => store.setProperty("startTitleIndex", e4)
|
|
1304
|
+
}
|
|
1305
|
+
), /* @__PURE__ */ React.createElement(
|
|
1306
|
+
NumberInput,
|
|
1307
|
+
{
|
|
1308
|
+
label: "D\xF2ng d\u1EEF li\u1EC7u b\u1EAFt \u0111\u1EA7u t\u1EEB",
|
|
1309
|
+
value: store.state.startDataIndex,
|
|
1310
|
+
onChange: (e4) => store.setProperty("startDataIndex", e4)
|
|
1311
|
+
}
|
|
1312
|
+
), /* @__PURE__ */ React.createElement(
|
|
1313
|
+
Select2,
|
|
1314
|
+
{
|
|
1315
|
+
readOnly: true,
|
|
1316
|
+
label: "\u0110\u1ECBnh d\u1EA1ng s\u1ED1",
|
|
1317
|
+
data: ["100.000"],
|
|
1318
|
+
defaultValue: "100.000"
|
|
1319
|
+
}
|
|
1320
|
+
), /* @__PURE__ */ React.createElement(
|
|
1321
|
+
Select2,
|
|
1322
|
+
{
|
|
1323
|
+
readOnly: true,
|
|
1324
|
+
label: "\u0110\u1ECBnh d\u1EA1ng ng\xE0y",
|
|
1325
|
+
data: ["dd/MM/yyyy"],
|
|
1326
|
+
defaultValue: "dd/MM/yyyy"
|
|
1327
|
+
}
|
|
1328
|
+
)),
|
|
1329
|
+
/* @__PURE__ */ React.createElement(Fieldset2, { legend: "Danh s\xE1ch tr\u01B0\u1EDDng th\xF4ng tin trong file d\u1EEF li\u1EC7u" }, store.state.data && /* @__PURE__ */ React.createElement(
|
|
1330
|
+
MyDataTable,
|
|
1331
|
+
{
|
|
1332
|
+
columns: store.columns,
|
|
1333
|
+
data: store.state.data
|
|
1334
|
+
}
|
|
1335
|
+
)),
|
|
1336
|
+
/* @__PURE__ */ React.createElement(MyFlexEnd, null, /* @__PURE__ */ React.createElement(
|
|
1337
|
+
Button7,
|
|
1338
|
+
{
|
|
1339
|
+
color: "teal.8",
|
|
1340
|
+
onClick: onExportStructure
|
|
1341
|
+
},
|
|
1342
|
+
"Xu\u1EA5t file c\u1EA5u tr\xFAc"
|
|
1343
|
+
), /* @__PURE__ */ React.createElement(
|
|
1344
|
+
Button7,
|
|
1345
|
+
{
|
|
1346
|
+
disabled: ((_a = store.state.data) == null ? void 0 : _a.length) == 0,
|
|
1347
|
+
color: "blue.8",
|
|
1348
|
+
leftSection: /* @__PURE__ */ React.createElement(IconArrowBigRight2, null),
|
|
1349
|
+
onClick: () => stack.open("select-field-page")
|
|
1350
|
+
},
|
|
1351
|
+
"Ti\u1EBFp t\u1EE5c"
|
|
1352
|
+
), /* @__PURE__ */ React.createElement(
|
|
1353
|
+
Button7,
|
|
1354
|
+
{
|
|
1355
|
+
color: "red.6",
|
|
1356
|
+
leftSection: /* @__PURE__ */ React.createElement(IconSquareRoundedX2, null),
|
|
1357
|
+
onClick: stack.closeAll
|
|
1358
|
+
},
|
|
1359
|
+
"\u0110\xF3ng"
|
|
1360
|
+
))
|
|
1518
1361
|
);
|
|
1519
1362
|
}
|
|
1520
1363
|
|
|
1521
1364
|
// src/components/Buttons/ButtonImport/MyButtonImport.tsx
|
|
1522
|
-
import { Fragment as Fragment7, jsx as jsx27, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1523
1365
|
function MyButtonImport({
|
|
1524
1366
|
onExportStructure,
|
|
1525
1367
|
onImport
|
|
1526
1368
|
}) {
|
|
1527
1369
|
const stack = useModalsStack3(["select-file-page", "select-field-page", "implement-page"]);
|
|
1528
1370
|
const store = useS_ButtonImport();
|
|
1529
|
-
return /* @__PURE__ */
|
|
1530
|
-
/* @__PURE__ */ jsx27(Button8, { color: "teal.8", onClick: () => stack.open("select-file-page"), leftSection: /* @__PURE__ */ jsx27(IconFileImport2, {}), title: "Import", children: "Import" }),
|
|
1531
|
-
/* @__PURE__ */ jsxs16(Modal8.Stack, { children: [
|
|
1532
|
-
/* @__PURE__ */ jsx27(SelectFileModal, { stack, onExportStructure }),
|
|
1533
|
-
/* @__PURE__ */ jsx27(SelectFieldModal, { stack, onImport: () => onImport(store.getDataFinal()) })
|
|
1534
|
-
] })
|
|
1535
|
-
] });
|
|
1371
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Button8, { color: "teal.8", onClick: () => stack.open("select-file-page"), leftSection: /* @__PURE__ */ React.createElement(IconFileImport2, null), title: "Import" }, "Import"), /* @__PURE__ */ React.createElement(Modal8.Stack, null, /* @__PURE__ */ React.createElement(SelectFileModal, { stack, onExportStructure }), /* @__PURE__ */ React.createElement(SelectFieldModal, { stack, onImport: () => onImport(store.getDataFinal()) })));
|
|
1536
1372
|
}
|
|
1537
1373
|
|
|
1538
1374
|
// src/components/Buttons/ButtonModal/AQSelectTableByOpenModal.tsx
|
|
1539
1375
|
import { Button as Button9, Fieldset as Fieldset3, Modal as Modal9 } from "@mantine/core";
|
|
1540
1376
|
import { useDisclosure as useDisclosure8 } from "@mantine/hooks";
|
|
1541
|
-
import { Fragment as Fragment8, jsx as jsx28, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1542
1377
|
function AQSelectTableByOpenModal(_a) {
|
|
1543
1378
|
var _b = _a, {
|
|
1544
1379
|
setSelectedData,
|
|
@@ -1566,40 +1401,36 @@ function AQSelectTableByOpenModal(_a) {
|
|
|
1566
1401
|
"closeAfterSelect"
|
|
1567
1402
|
]);
|
|
1568
1403
|
const disclosure = useDisclosure8(false);
|
|
1569
|
-
return /* @__PURE__ */
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
) }) })
|
|
1600
|
-
}
|
|
1601
|
-
)
|
|
1602
|
-
] });
|
|
1404
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
1405
|
+
Button9,
|
|
1406
|
+
__spreadValues({
|
|
1407
|
+
onClick: disclosure[1].open
|
|
1408
|
+
}, rest),
|
|
1409
|
+
label ? label : `Ch\u1ECDn t\u1EEB danh s\xE1ch`
|
|
1410
|
+
), /* @__PURE__ */ React.createElement(
|
|
1411
|
+
Modal9,
|
|
1412
|
+
{
|
|
1413
|
+
fullScreen,
|
|
1414
|
+
size: modalSize,
|
|
1415
|
+
title,
|
|
1416
|
+
opened: disclosure == null ? void 0 : disclosure[0],
|
|
1417
|
+
onClose: disclosure[1].close
|
|
1418
|
+
},
|
|
1419
|
+
/* @__PURE__ */ React.createElement(MyFlexColumn, null, /* @__PURE__ */ React.createElement(Fieldset3, { legend: listLabel ? listLabel : "Danh s\xE1ch" }, /* @__PURE__ */ React.createElement(
|
|
1420
|
+
MyDataTable,
|
|
1421
|
+
__spreadValues({
|
|
1422
|
+
renderTopToolbarCustomActions: ({ table }) => {
|
|
1423
|
+
return /* @__PURE__ */ React.createElement(Button9, { onClick: () => {
|
|
1424
|
+
setSelectedData(table.getSelectedRowModel().rows.map((row) => row.original));
|
|
1425
|
+
closeAfterSelect && disclosure[1].close();
|
|
1426
|
+
} }, "Ch\u1ECDn");
|
|
1427
|
+
},
|
|
1428
|
+
enableRowSelection: true,
|
|
1429
|
+
data,
|
|
1430
|
+
columns
|
|
1431
|
+
}, rest)
|
|
1432
|
+
)))
|
|
1433
|
+
));
|
|
1603
1434
|
}
|
|
1604
1435
|
|
|
1605
1436
|
// src/components/Buttons/ButtonPrintPDF/MyButtonPrintPDF.tsx
|
|
@@ -1607,7 +1438,6 @@ import { useRef as useRef2 } from "react";
|
|
|
1607
1438
|
import { Button as Button10 } from "@mantine/core";
|
|
1608
1439
|
import { IconPrinter as IconPrinter2 } from "@tabler/icons-react";
|
|
1609
1440
|
import { useReactToPrint } from "react-to-print";
|
|
1610
|
-
import { Fragment as Fragment9, jsx as jsx29, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1611
1441
|
function MyButtonPrintPDF(_a) {
|
|
1612
1442
|
var _b = _a, { contentToPrint } = _b, rest = __objRest(_b, ["contentToPrint"]);
|
|
1613
1443
|
const printRef = useRef2(null);
|
|
@@ -1621,34 +1451,29 @@ function MyButtonPrintPDF(_a) {
|
|
|
1621
1451
|
if (!contentToPrint) return;
|
|
1622
1452
|
handlePrint();
|
|
1623
1453
|
}
|
|
1624
|
-
return /* @__PURE__ */
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
children: "In"
|
|
1634
|
-
})
|
|
1635
|
-
)
|
|
1636
|
-
] });
|
|
1454
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { style: { display: "none" } }, /* @__PURE__ */ React.createElement("div", { ref: printRef }, contentToPrint)), /* @__PURE__ */ React.createElement(
|
|
1455
|
+
Button10,
|
|
1456
|
+
__spreadValues({
|
|
1457
|
+
color: "orange",
|
|
1458
|
+
onClick: handleClick,
|
|
1459
|
+
leftSection: /* @__PURE__ */ React.createElement(IconPrinter2, null)
|
|
1460
|
+
}, rest),
|
|
1461
|
+
"In"
|
|
1462
|
+
));
|
|
1637
1463
|
}
|
|
1638
1464
|
|
|
1639
1465
|
// src/components/Buttons/ButtonRouterBack/MyButtonRouterBack.tsx
|
|
1640
1466
|
import { Button as Button11 } from "@mantine/core";
|
|
1641
1467
|
import { IconArrowBack } from "@tabler/icons-react";
|
|
1642
1468
|
import { useRouter as useRouter2 } from "next/navigation";
|
|
1643
|
-
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
1644
1469
|
function MyButtonRouterBack(_a) {
|
|
1645
1470
|
var _b = _a, { url, label } = _b, rest = __objRest(_b, ["url", "label"]);
|
|
1646
1471
|
const router = useRouter2();
|
|
1647
|
-
return /* @__PURE__ */
|
|
1472
|
+
return /* @__PURE__ */ React.createElement(
|
|
1648
1473
|
Button11,
|
|
1649
|
-
|
|
1474
|
+
__spreadValues({
|
|
1650
1475
|
variant: "light",
|
|
1651
|
-
leftSection: /* @__PURE__ */
|
|
1476
|
+
leftSection: /* @__PURE__ */ React.createElement(IconArrowBack, { stroke: 2 }),
|
|
1652
1477
|
onClick: () => {
|
|
1653
1478
|
if (url) {
|
|
1654
1479
|
router.replace(url);
|
|
@@ -1656,9 +1481,8 @@ function MyButtonRouterBack(_a) {
|
|
|
1656
1481
|
}
|
|
1657
1482
|
router.back();
|
|
1658
1483
|
}
|
|
1659
|
-
}, rest),
|
|
1660
|
-
|
|
1661
|
-
})
|
|
1484
|
+
}, rest),
|
|
1485
|
+
label ? label : "Tr\u1EDF v\u1EC1"
|
|
1662
1486
|
);
|
|
1663
1487
|
}
|
|
1664
1488
|
|
|
@@ -1692,7 +1516,6 @@ import { useDisclosure as useDisclosure9 } from "@mantine/hooks";
|
|
|
1692
1516
|
import { IconLivePhoto as IconLivePhoto2, IconMaximize as IconMaximize3, IconMinimize as IconMinimize3 } from "@tabler/icons-react";
|
|
1693
1517
|
import { useQuery } from "@tanstack/react-query";
|
|
1694
1518
|
import { useState as useState6 } from "react";
|
|
1695
|
-
import { Fragment as Fragment10, jsx as jsx31, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1696
1519
|
function MyButtonViewPDF({ id, modalSize = "80%", label = "Xem file", src = "https://datafiles.chinhphu.vn/cpp/files/vbpq/2016/07/85.signed.pdf" }) {
|
|
1697
1520
|
var _a, _b;
|
|
1698
1521
|
const disc = useDisclosure9(false);
|
|
@@ -1705,60 +1528,51 @@ function MyButtonViewPDF({ id, modalSize = "80%", label = "Xem file", src = "htt
|
|
|
1705
1528
|
},
|
|
1706
1529
|
enabled: id != void 0 && disc[0] == true
|
|
1707
1530
|
});
|
|
1708
|
-
return /* @__PURE__ */
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1531
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(Tooltip4, { label: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp" }, /* @__PURE__ */ React.createElement(Button12, { color: "cyan", onClick: () => {
|
|
1532
|
+
disc[1].open();
|
|
1533
|
+
}, leftSection: /* @__PURE__ */ React.createElement(IconLivePhoto2, null) }, label)), /* @__PURE__ */ React.createElement(
|
|
1534
|
+
Modal10,
|
|
1535
|
+
{
|
|
1536
|
+
fullScreen: fullScreen[0],
|
|
1537
|
+
opened: disc[0],
|
|
1538
|
+
onClose: disc[1].close,
|
|
1539
|
+
size: modalSize,
|
|
1540
|
+
title: /* @__PURE__ */ React.createElement(Group7, null, /* @__PURE__ */ React.createElement(Text5, null, "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp"), fullScreen[0] ? /* @__PURE__ */ React.createElement(
|
|
1541
|
+
ActionIcon9,
|
|
1542
|
+
{
|
|
1543
|
+
onClick: () => {
|
|
1544
|
+
fullScreen[1](false);
|
|
1545
|
+
hSize[1]("80vh");
|
|
1546
|
+
}
|
|
1547
|
+
},
|
|
1548
|
+
/* @__PURE__ */ React.createElement(IconMinimize3, null)
|
|
1549
|
+
) : /* @__PURE__ */ React.createElement(
|
|
1550
|
+
ActionIcon9,
|
|
1551
|
+
{
|
|
1552
|
+
onClick: () => {
|
|
1553
|
+
fullScreen[1](true);
|
|
1554
|
+
hSize[1]("90vh");
|
|
1555
|
+
}
|
|
1556
|
+
},
|
|
1557
|
+
/* @__PURE__ */ React.createElement(IconMaximize3, null)
|
|
1558
|
+
))
|
|
1559
|
+
},
|
|
1560
|
+
/* @__PURE__ */ React.createElement(Paper3, { h: hSize[0], p: "lg", pos: "relative" }, /* @__PURE__ */ React.createElement(LoadingOverlay, { visible: query.isLoading, zIndex: 1e3, overlayProps: { radius: "sm", blur: 2 } }), query.data ? /* @__PURE__ */ React.createElement(
|
|
1561
|
+
"iframe",
|
|
1714
1562
|
{
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
size: modalSize,
|
|
1719
|
-
title: /* @__PURE__ */ jsxs19(Group7, { children: [
|
|
1720
|
-
/* @__PURE__ */ jsx31(Text5, { children: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp" }),
|
|
1721
|
-
fullScreen[0] ? /* @__PURE__ */ jsx31(
|
|
1722
|
-
ActionIcon9,
|
|
1723
|
-
{
|
|
1724
|
-
onClick: () => {
|
|
1725
|
-
fullScreen[1](false);
|
|
1726
|
-
hSize[1]("80vh");
|
|
1727
|
-
},
|
|
1728
|
-
children: /* @__PURE__ */ jsx31(IconMinimize3, {})
|
|
1729
|
-
}
|
|
1730
|
-
) : /* @__PURE__ */ jsx31(
|
|
1731
|
-
ActionIcon9,
|
|
1732
|
-
{
|
|
1733
|
-
onClick: () => {
|
|
1734
|
-
fullScreen[1](true);
|
|
1735
|
-
hSize[1]("90vh");
|
|
1736
|
-
},
|
|
1737
|
-
children: /* @__PURE__ */ jsx31(IconMaximize3, {})
|
|
1738
|
-
}
|
|
1739
|
-
)
|
|
1740
|
-
] }),
|
|
1741
|
-
children: /* @__PURE__ */ jsxs19(Paper3, { h: hSize[0], p: "lg", pos: "relative", children: [
|
|
1742
|
-
/* @__PURE__ */ jsx31(LoadingOverlay, { visible: query.isLoading, zIndex: 1e3, overlayProps: { radius: "sm", blur: 2 } }),
|
|
1743
|
-
query.data ? /* @__PURE__ */ jsx31(
|
|
1744
|
-
"iframe",
|
|
1745
|
-
{
|
|
1746
|
-
src: `data:application/pdf;base64, ${(_b = (_a = query.data) == null ? void 0 : _a.fileDetail) == null ? void 0 : _b.fileBase64String}`,
|
|
1747
|
-
width: "100%",
|
|
1748
|
-
height: "100%"
|
|
1749
|
-
}
|
|
1750
|
-
) : /* @__PURE__ */ jsx31(
|
|
1751
|
-
"iframe",
|
|
1752
|
-
{
|
|
1753
|
-
src,
|
|
1754
|
-
width: "100%",
|
|
1755
|
-
height: "100%"
|
|
1756
|
-
}
|
|
1757
|
-
)
|
|
1758
|
-
] })
|
|
1563
|
+
src: `data:application/pdf;base64, ${(_b = (_a = query.data) == null ? void 0 : _a.fileDetail) == null ? void 0 : _b.fileBase64String}`,
|
|
1564
|
+
width: "100%",
|
|
1565
|
+
height: "100%"
|
|
1759
1566
|
}
|
|
1760
|
-
)
|
|
1761
|
-
|
|
1567
|
+
) : /* @__PURE__ */ React.createElement(
|
|
1568
|
+
"iframe",
|
|
1569
|
+
{
|
|
1570
|
+
src,
|
|
1571
|
+
width: "100%",
|
|
1572
|
+
height: "100%"
|
|
1573
|
+
}
|
|
1574
|
+
))
|
|
1575
|
+
));
|
|
1762
1576
|
}
|
|
1763
1577
|
|
|
1764
1578
|
// node_modules/preact/dist/preact.mjs
|
|
@@ -5700,7 +5514,6 @@ import { ScheduleXCalendar, useNextCalendarApp } from "@schedule-x/react";
|
|
|
5700
5514
|
import { Paper as Paper4, Text as Text6 } from "@mantine/core";
|
|
5701
5515
|
import "@schedule-x/theme-default/dist/index.css";
|
|
5702
5516
|
import { useEffect as useEffect4 } from "react";
|
|
5703
|
-
import { jsx as jsx32, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
5704
5517
|
function MyCalendar() {
|
|
5705
5518
|
const plugins = [createEventsServicePlugin(), createEventModalPlugin()];
|
|
5706
5519
|
const calendar = useNextCalendarApp({
|
|
@@ -5774,17 +5587,10 @@ function MyCalendar() {
|
|
|
5774
5587
|
useEffect4(() => {
|
|
5775
5588
|
calendar == null ? void 0 : calendar.events.getAll();
|
|
5776
5589
|
}, []);
|
|
5777
|
-
return /* @__PURE__ */
|
|
5590
|
+
return /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(ScheduleXCalendar, { calendarApp: calendar, customComponents: {
|
|
5778
5591
|
timeGridEvent: ({ calendarEvent }) => {
|
|
5779
5592
|
console.log(calendarEvent);
|
|
5780
|
-
return /* @__PURE__ */
|
|
5781
|
-
/* @__PURE__ */ jsxs20(Text6, { size: "sm", fw: "bold", children: [
|
|
5782
|
-
calendarEvent.laLichThi ? "(Thi) " : "(H\u1ECDc) ",
|
|
5783
|
-
calendarEvent.title
|
|
5784
|
-
] }),
|
|
5785
|
-
calendarEvent.laLichThi == false && /* @__PURE__ */ jsx32(Text6, { size: "sm", children: calendarEvent.giangvien }),
|
|
5786
|
-
/* @__PURE__ */ jsx32(Text6, { size: "sm", children: calendarEvent.location })
|
|
5787
|
-
] }) });
|
|
5593
|
+
return /* @__PURE__ */ React.createElement(Paper4, { h: "100%", bg: calendarEvent.laLichThi ? "violet.2" : "blue.2", p: 4 }, /* @__PURE__ */ React.createElement(MyFlexColumn, { gap: 1 }, /* @__PURE__ */ React.createElement(Text6, { size: "sm", fw: "bold" }, calendarEvent.laLichThi ? "(Thi) " : "(H\u1ECDc) ", calendarEvent.title), calendarEvent.laLichThi == false && /* @__PURE__ */ React.createElement(Text6, { size: "sm" }, calendarEvent.giangvien), /* @__PURE__ */ React.createElement(Text6, { size: "sm" }, calendarEvent.location)));
|
|
5788
5594
|
}
|
|
5789
5595
|
// eventModal: ({ calendarEvent }) => {
|
|
5790
5596
|
// return (
|
|
@@ -5793,36 +5599,32 @@ function MyCalendar() {
|
|
|
5793
5599
|
// </Paper>
|
|
5794
5600
|
// )
|
|
5795
5601
|
// }
|
|
5796
|
-
} })
|
|
5602
|
+
} }));
|
|
5797
5603
|
}
|
|
5798
5604
|
|
|
5799
5605
|
// src/components/CenterFull/MyCenterFull.tsx
|
|
5800
5606
|
import { Center as Center2, Group as Group8 } from "@mantine/core";
|
|
5801
|
-
import { jsx as jsx33 } from "react/jsx-runtime";
|
|
5802
5607
|
function MyCenterFull({ children }) {
|
|
5803
|
-
return /* @__PURE__ */
|
|
5608
|
+
return /* @__PURE__ */ React.createElement(Center2, { w: "100%" }, /* @__PURE__ */ React.createElement(Group8, null, children));
|
|
5804
5609
|
}
|
|
5805
5610
|
|
|
5806
5611
|
// src/components/Checkbox/MyCheckbox.tsx
|
|
5807
5612
|
import { Checkbox as Checkbox2 } from "@mantine/core";
|
|
5808
|
-
import { jsx as jsx34 } from "react/jsx-runtime";
|
|
5809
5613
|
function MyCheckbox(_a) {
|
|
5810
5614
|
var rest = __objRest(_a, []);
|
|
5811
|
-
return /* @__PURE__ */
|
|
5615
|
+
return /* @__PURE__ */ React.createElement(Checkbox2, __spreadValues({}, rest));
|
|
5812
5616
|
}
|
|
5813
5617
|
|
|
5814
5618
|
// src/components/Layouts/FlexRow/MyFlexRow.tsx
|
|
5815
5619
|
import { Flex as Flex2 } from "@mantine/core";
|
|
5816
|
-
import { jsx as jsx35 } from "react/jsx-runtime";
|
|
5817
5620
|
function MyFlexRow(_a) {
|
|
5818
5621
|
var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
|
|
5819
|
-
return /* @__PURE__ */
|
|
5622
|
+
return /* @__PURE__ */ React.createElement(Flex2, __spreadValues({ gap: "md", align: "center" }, rest), children);
|
|
5820
5623
|
}
|
|
5821
5624
|
|
|
5822
5625
|
// src/components/DataDisplay/Card/AQCard.tsx
|
|
5823
5626
|
import { Badge, Card, Center as Center3, Image, Text as Text7 } from "@mantine/core";
|
|
5824
5627
|
import Link from "next/link";
|
|
5825
|
-
import { jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
5826
5628
|
function AQCard({
|
|
5827
5629
|
imgSrc = "https://raw.githubusercontent.com/mantinedev/mantine/master/.demo/images/bg-8.png",
|
|
5828
5630
|
title,
|
|
@@ -5832,142 +5634,99 @@ function AQCard({
|
|
|
5832
5634
|
status,
|
|
5833
5635
|
href = ""
|
|
5834
5636
|
}) {
|
|
5835
|
-
return /* @__PURE__ */
|
|
5836
|
-
|
|
5837
|
-
|
|
5838
|
-
|
|
5839
|
-
|
|
5840
|
-
|
|
5841
|
-
|
|
5842
|
-
|
|
5843
|
-
|
|
5844
|
-
|
|
5845
|
-
) }) }),
|
|
5846
|
-
/* @__PURE__ */ jsxs21(MyFlexRow, { justify: "space-between", mt: "md", mb: "xs", children: [
|
|
5847
|
-
/* @__PURE__ */ jsx36(Text7, { fw: 500, children: title }),
|
|
5848
|
-
status && /* @__PURE__ */ jsx36(Badge, { color: "violet.5", w: "150px", children: status })
|
|
5849
|
-
] }),
|
|
5850
|
-
/* @__PURE__ */ jsx36(Text7, { size: "sm", c: "dimmed", lineClamp: 2, children: description }),
|
|
5851
|
-
children
|
|
5852
|
-
] });
|
|
5637
|
+
return /* @__PURE__ */ React.createElement(Card, { shadow: "sm", padding: "lg", radius: "md", withBorder: true, component: Link, href }, /* @__PURE__ */ React.createElement(Card.Section, null, /* @__PURE__ */ React.createElement(Center3, null, /* @__PURE__ */ React.createElement(
|
|
5638
|
+
Image,
|
|
5639
|
+
{
|
|
5640
|
+
src: imgSrc,
|
|
5641
|
+
h: 200,
|
|
5642
|
+
w: "auto",
|
|
5643
|
+
fallbackSrc: "https://placehold.co/600x400?text=Placeholder",
|
|
5644
|
+
alt: "Norway"
|
|
5645
|
+
}
|
|
5646
|
+
))), /* @__PURE__ */ React.createElement(MyFlexRow, { justify: "space-between", mt: "md", mb: "xs" }, /* @__PURE__ */ React.createElement(Text7, { fw: 500 }, title), status && /* @__PURE__ */ React.createElement(Badge, { color: "violet.5", w: "150px" }, status)), /* @__PURE__ */ React.createElement(Text7, { size: "sm", c: "dimmed", lineClamp: 2 }, description), children);
|
|
5853
5647
|
}
|
|
5854
5648
|
|
|
5855
5649
|
// src/components/DataDisplay/KeyLabel/MyKeyLabel.tsx
|
|
5856
5650
|
import { Group as Group9, Text as Text8 } from "@mantine/core";
|
|
5857
|
-
import { jsx as jsx37, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
5858
5651
|
function MyKeyLabel({ keyLabel, label }) {
|
|
5859
|
-
return /* @__PURE__ */
|
|
5860
|
-
/* @__PURE__ */ jsxs22(Text8, { fw: "bold", children: [
|
|
5861
|
-
keyLabel,
|
|
5862
|
-
":"
|
|
5863
|
-
] }),
|
|
5864
|
-
/* @__PURE__ */ jsx37(Text8, { children: label })
|
|
5865
|
-
] });
|
|
5652
|
+
return /* @__PURE__ */ React.createElement(Group9, { gap: 5 }, /* @__PURE__ */ React.createElement(Text8, { fw: "bold" }, keyLabel, ":"), /* @__PURE__ */ React.createElement(Text8, null, label));
|
|
5866
5653
|
}
|
|
5867
5654
|
|
|
5868
5655
|
// src/components/DataDisplay/NumberFormatter/MyNumberFormatter.tsx
|
|
5869
5656
|
import { NumberFormatter } from "@mantine/core";
|
|
5870
|
-
import { jsx as jsx38 } from "react/jsx-runtime";
|
|
5871
5657
|
function MyNumberFormatter(_a) {
|
|
5872
5658
|
var rest = __objRest(_a, []);
|
|
5873
|
-
return /* @__PURE__ */
|
|
5659
|
+
return /* @__PURE__ */ React.createElement(NumberFormatter, __spreadValues({ thousandSeparator: true, suffix: " VN\u0110" }, rest));
|
|
5874
5660
|
}
|
|
5875
5661
|
|
|
5876
5662
|
// src/components/DataDisplay/StatCard/AQStatCard1.tsx
|
|
5877
5663
|
import { Box, Button as Button13, Flex as Flex3, Group as Group10, Paper as Paper5, Text as Text9 } from "@mantine/core";
|
|
5878
5664
|
import { IconArrowDownRight, IconArrowUpRight } from "@tabler/icons-react";
|
|
5879
|
-
import { Fragment as Fragment11, jsx as jsx39, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
5880
5665
|
function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
|
5881
|
-
return /* @__PURE__ */
|
|
5666
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
|
|
5882
5667
|
Paper5,
|
|
5883
5668
|
{
|
|
5884
5669
|
withBorder: true,
|
|
5885
5670
|
p: "md",
|
|
5886
5671
|
radius: "md",
|
|
5887
|
-
|
|
5888
|
-
/* @__PURE__ */ jsxs23(Group10, { justify: "space-between", children: [
|
|
5889
|
-
/* @__PURE__ */ jsxs23(Flex3, { direction: "column", children: [
|
|
5890
|
-
/* @__PURE__ */ jsx39(
|
|
5891
|
-
Text9,
|
|
5892
|
-
{
|
|
5893
|
-
tt: "uppercase",
|
|
5894
|
-
size: "lg",
|
|
5895
|
-
c: "dimmed",
|
|
5896
|
-
children: title
|
|
5897
|
-
}
|
|
5898
|
-
),
|
|
5899
|
-
unit == "" ? /* @__PURE__ */ jsxs23(Text9, { size: "xs", style: { visibility: "hidden" }, children: [
|
|
5900
|
-
"\u0110\u01A1n v\u1ECB: ",
|
|
5901
|
-
/* @__PURE__ */ jsx39("strong", { children: unit })
|
|
5902
|
-
] }) : /* @__PURE__ */ jsxs23(Text9, { size: "xs", children: [
|
|
5903
|
-
"\u0110\u01A1n v\u1ECB: ",
|
|
5904
|
-
/* @__PURE__ */ jsx39("strong", { children: unit })
|
|
5905
|
-
] })
|
|
5906
|
-
] }),
|
|
5907
|
-
/* @__PURE__ */ jsx39(Box, { children: icons })
|
|
5908
|
-
] }),
|
|
5909
|
-
/* @__PURE__ */ jsxs23(
|
|
5910
|
-
Group10,
|
|
5911
|
-
{
|
|
5912
|
-
mt: "5",
|
|
5913
|
-
align: "flex-end",
|
|
5914
|
-
gap: "xs",
|
|
5915
|
-
children: [
|
|
5916
|
-
/* @__PURE__ */ jsx39(
|
|
5917
|
-
Text9,
|
|
5918
|
-
{
|
|
5919
|
-
fw: 700,
|
|
5920
|
-
fz: "h1",
|
|
5921
|
-
children: value
|
|
5922
|
-
}
|
|
5923
|
-
),
|
|
5924
|
-
/* @__PURE__ */ jsxs23(
|
|
5925
|
-
Text9,
|
|
5926
|
-
{
|
|
5927
|
-
mb: "2",
|
|
5928
|
-
c: diff > 0 ? "teal" : "red",
|
|
5929
|
-
fz: "h2",
|
|
5930
|
-
fw: 500,
|
|
5931
|
-
children: [
|
|
5932
|
-
/* @__PURE__ */ jsxs23("span", { children: [
|
|
5933
|
-
diff,
|
|
5934
|
-
"%"
|
|
5935
|
-
] }),
|
|
5936
|
-
diff > 0 ? /* @__PURE__ */ jsx39(IconArrowUpRight, {}) : /* @__PURE__ */ jsx39(IconArrowDownRight, {})
|
|
5937
|
-
]
|
|
5938
|
-
}
|
|
5939
|
-
)
|
|
5940
|
-
]
|
|
5941
|
-
}
|
|
5942
|
-
),
|
|
5943
|
-
/* @__PURE__ */ jsxs23(Group10, { justify: "space-between", children: [
|
|
5944
|
-
/* @__PURE__ */ jsx39(Text9, { tt: "uppercase", fz: "xs", c: "dimmed", children: description }),
|
|
5945
|
-
/* @__PURE__ */ jsx39(
|
|
5946
|
-
Button13,
|
|
5947
|
-
{
|
|
5948
|
-
variant: "light",
|
|
5949
|
-
size: "xs",
|
|
5950
|
-
children: "Xem chi ti\u1EBFt"
|
|
5951
|
-
}
|
|
5952
|
-
)
|
|
5953
|
-
] })
|
|
5954
|
-
]
|
|
5672
|
+
key: title
|
|
5955
5673
|
},
|
|
5956
|
-
|
|
5957
|
-
|
|
5674
|
+
/* @__PURE__ */ React.createElement(Group10, { justify: "space-between" }, /* @__PURE__ */ React.createElement(Flex3, { direction: "column" }, /* @__PURE__ */ React.createElement(
|
|
5675
|
+
Text9,
|
|
5676
|
+
{
|
|
5677
|
+
tt: "uppercase",
|
|
5678
|
+
size: "lg",
|
|
5679
|
+
c: "dimmed"
|
|
5680
|
+
},
|
|
5681
|
+
title
|
|
5682
|
+
), unit == "" ? /* @__PURE__ */ React.createElement(Text9, { size: "xs", style: { visibility: "hidden" } }, "\u0110\u01A1n v\u1ECB: ", /* @__PURE__ */ React.createElement("strong", null, unit)) : /* @__PURE__ */ React.createElement(Text9, { size: "xs" }, "\u0110\u01A1n v\u1ECB: ", /* @__PURE__ */ React.createElement("strong", null, unit))), /* @__PURE__ */ React.createElement(Box, null, icons)),
|
|
5683
|
+
/* @__PURE__ */ React.createElement(
|
|
5684
|
+
Group10,
|
|
5685
|
+
{
|
|
5686
|
+
mt: "5",
|
|
5687
|
+
align: "flex-end",
|
|
5688
|
+
gap: "xs"
|
|
5689
|
+
},
|
|
5690
|
+
/* @__PURE__ */ React.createElement(
|
|
5691
|
+
Text9,
|
|
5692
|
+
{
|
|
5693
|
+
fw: 700,
|
|
5694
|
+
fz: "h1"
|
|
5695
|
+
},
|
|
5696
|
+
value
|
|
5697
|
+
),
|
|
5698
|
+
/* @__PURE__ */ React.createElement(
|
|
5699
|
+
Text9,
|
|
5700
|
+
{
|
|
5701
|
+
mb: "2",
|
|
5702
|
+
c: diff > 0 ? "teal" : "red",
|
|
5703
|
+
fz: "h2",
|
|
5704
|
+
fw: 500
|
|
5705
|
+
},
|
|
5706
|
+
/* @__PURE__ */ React.createElement("span", null, diff, "%"),
|
|
5707
|
+
diff > 0 ? /* @__PURE__ */ React.createElement(IconArrowUpRight, null) : /* @__PURE__ */ React.createElement(IconArrowDownRight, null)
|
|
5708
|
+
)
|
|
5709
|
+
),
|
|
5710
|
+
/* @__PURE__ */ React.createElement(Group10, { justify: "space-between" }, /* @__PURE__ */ React.createElement(Text9, { tt: "uppercase", fz: "xs", c: "dimmed" }, description), /* @__PURE__ */ React.createElement(
|
|
5711
|
+
Button13,
|
|
5712
|
+
{
|
|
5713
|
+
variant: "light",
|
|
5714
|
+
size: "xs"
|
|
5715
|
+
},
|
|
5716
|
+
"Xem chi ti\u1EBFt"
|
|
5717
|
+
))
|
|
5718
|
+
));
|
|
5958
5719
|
}
|
|
5959
5720
|
|
|
5960
5721
|
// src/components/Inputs/DateInput/MyDateInput.tsx
|
|
5961
5722
|
import { DateInput } from "@mantine/dates";
|
|
5962
|
-
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
5963
5723
|
function MyDateInput(_a) {
|
|
5964
5724
|
var _b = _a, { label } = _b, rest = __objRest(_b, ["label"]);
|
|
5965
|
-
return /* @__PURE__ */
|
|
5725
|
+
return /* @__PURE__ */ React.createElement(DateInput, __spreadValues({ label, placeholder: label ? `Ch\u1ECDn ${label == null ? void 0 : label.toLowerCase()}` : "" }, rest));
|
|
5966
5726
|
}
|
|
5967
5727
|
|
|
5968
5728
|
// src/components/Inputs/Fieldset/MyFieldset.tsx
|
|
5969
5729
|
import { Box as Box2, Fieldset as Fieldset4, Text as Text10 } from "@mantine/core";
|
|
5970
|
-
import { jsx as jsx41 } from "react/jsx-runtime";
|
|
5971
5730
|
function MyFieldset(_a) {
|
|
5972
5731
|
var _b = _a, {
|
|
5973
5732
|
children,
|
|
@@ -5976,46 +5735,43 @@ function MyFieldset(_a) {
|
|
|
5976
5735
|
"children",
|
|
5977
5736
|
"title"
|
|
5978
5737
|
]);
|
|
5979
|
-
return /* @__PURE__ */
|
|
5738
|
+
return /* @__PURE__ */ React.createElement(
|
|
5980
5739
|
Fieldset4,
|
|
5981
5740
|
__spreadProps(__spreadValues({}, rest), {
|
|
5982
|
-
legend: /* @__PURE__ */
|
|
5741
|
+
legend: /* @__PURE__ */ React.createElement(
|
|
5983
5742
|
Box2,
|
|
5984
5743
|
{
|
|
5985
5744
|
bg: "blue.4",
|
|
5986
5745
|
px: "xs",
|
|
5987
5746
|
py: 2,
|
|
5988
|
-
style: { borderRadius: 4 }
|
|
5989
|
-
|
|
5990
|
-
}
|
|
5991
|
-
)
|
|
5992
|
-
|
|
5993
|
-
|
|
5747
|
+
style: { borderRadius: 4 }
|
|
5748
|
+
},
|
|
5749
|
+
/* @__PURE__ */ React.createElement(Text10, { c: "white", fw: 500 }, title)
|
|
5750
|
+
)
|
|
5751
|
+
}),
|
|
5752
|
+
children
|
|
5994
5753
|
);
|
|
5995
5754
|
}
|
|
5996
5755
|
|
|
5997
5756
|
// src/components/Inputs/FileInput/MyFileInput.tsx
|
|
5998
5757
|
import { FileInput as FileInput3 } from "@mantine/core";
|
|
5999
|
-
import { jsx as jsx42 } from "react/jsx-runtime";
|
|
6000
5758
|
function MyFileInput(_a) {
|
|
6001
5759
|
var _b = _a, { label } = _b, rest = __objRest(_b, ["label"]);
|
|
6002
|
-
return /* @__PURE__ */
|
|
5760
|
+
return /* @__PURE__ */ React.createElement(FileInput3, __spreadValues({ label, placeholder: label ? `Ch\u1ECDn ${label == null ? void 0 : label.toLowerCase()}` : "" }, rest));
|
|
6003
5761
|
}
|
|
6004
5762
|
|
|
6005
5763
|
// src/components/Inputs/NumberInput/MyNumberInput.tsx
|
|
6006
5764
|
import { NumberInput as NumberInput2 } from "@mantine/core";
|
|
6007
|
-
import { jsx as jsx43 } from "react/jsx-runtime";
|
|
6008
5765
|
function MyNumberInput(_a) {
|
|
6009
5766
|
var _b = _a, { label } = _b, rest = __objRest(_b, ["label"]);
|
|
6010
|
-
return /* @__PURE__ */
|
|
5767
|
+
return /* @__PURE__ */ React.createElement(NumberInput2, __spreadValues({ label, placeholder: label ? `Nh\u1EADp ${label == null ? void 0 : label.toLowerCase()}` : "" }, rest));
|
|
6011
5768
|
}
|
|
6012
5769
|
|
|
6013
5770
|
// src/components/Inputs/TextArea/MyTextArea.tsx
|
|
6014
5771
|
import { Textarea } from "@mantine/core";
|
|
6015
|
-
import { jsx as jsx44 } from "react/jsx-runtime";
|
|
6016
5772
|
function MyTextArea(_a) {
|
|
6017
5773
|
var _b = _a, { label } = _b, rest = __objRest(_b, ["label"]);
|
|
6018
|
-
return /* @__PURE__ */
|
|
5774
|
+
return /* @__PURE__ */ React.createElement(Textarea, __spreadValues({ label, placeholder: label ? `Nh\u1EADp ${label == null ? void 0 : label.toLowerCase()}` : "" }, rest));
|
|
6019
5775
|
}
|
|
6020
5776
|
|
|
6021
5777
|
// src/components/Inputs/TextEditor/MyTextEditor.tsx
|
|
@@ -6031,9 +5787,24 @@ import Underline from "@tiptap/extension-underline";
|
|
|
6031
5787
|
import { useEditor } from "@tiptap/react";
|
|
6032
5788
|
import StarterKit from "@tiptap/starter-kit";
|
|
6033
5789
|
import { useEffect as useEffect5, useState as useState7 } from "react";
|
|
6034
|
-
import { jsx as jsx45, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
6035
5790
|
function MyTextEditor(_a) {
|
|
6036
|
-
var _b = _a, {
|
|
5791
|
+
var _b = _a, {
|
|
5792
|
+
autoHiddenToolBar = false,
|
|
5793
|
+
contentHeight = "400px",
|
|
5794
|
+
onChange,
|
|
5795
|
+
value,
|
|
5796
|
+
error,
|
|
5797
|
+
label,
|
|
5798
|
+
withAsterisk
|
|
5799
|
+
} = _b, rest = __objRest(_b, [
|
|
5800
|
+
"autoHiddenToolBar",
|
|
5801
|
+
"contentHeight",
|
|
5802
|
+
"onChange",
|
|
5803
|
+
"value",
|
|
5804
|
+
"error",
|
|
5805
|
+
"label",
|
|
5806
|
+
"withAsterisk"
|
|
5807
|
+
]);
|
|
6037
5808
|
const [hiddenToolBar, setHiddenToolBar] = useState7(autoHiddenToolBar);
|
|
6038
5809
|
const editor = useEditor(__spreadValues({
|
|
6039
5810
|
extensions: [
|
|
@@ -6117,61 +5888,24 @@ function MyTextEditor(_a) {
|
|
|
6117
5888
|
editor.commands.setContent(value);
|
|
6118
5889
|
}
|
|
6119
5890
|
}, [value, editor]);
|
|
6120
|
-
return /* @__PURE__ */
|
|
6121
|
-
|
|
6122
|
-
|
|
6123
|
-
|
|
6124
|
-
|
|
6125
|
-
|
|
6126
|
-
|
|
6127
|
-
|
|
6128
|
-
|
|
6129
|
-
|
|
6130
|
-
|
|
6131
|
-
|
|
6132
|
-
|
|
6133
|
-
|
|
6134
|
-
|
|
6135
|
-
|
|
6136
|
-
|
|
6137
|
-
|
|
6138
|
-
/* @__PURE__ */ jsx45(RichTextEditor.Blockquote, {}),
|
|
6139
|
-
/* @__PURE__ */ jsx45(RichTextEditor.Hr, {}),
|
|
6140
|
-
/* @__PURE__ */ jsx45(RichTextEditor.BulletList, {}),
|
|
6141
|
-
/* @__PURE__ */ jsx45(RichTextEditor.OrderedList, {}),
|
|
6142
|
-
/* @__PURE__ */ jsx45(RichTextEditor.Subscript, {}),
|
|
6143
|
-
/* @__PURE__ */ jsx45(RichTextEditor.Superscript, {})
|
|
6144
|
-
] }),
|
|
6145
|
-
/* @__PURE__ */ jsxs24(RichTextEditor.ControlsGroup, { children: [
|
|
6146
|
-
/* @__PURE__ */ jsx45(RichTextEditor.Link, {}),
|
|
6147
|
-
/* @__PURE__ */ jsx45(RichTextEditor.Unlink, {})
|
|
6148
|
-
] }),
|
|
6149
|
-
/* @__PURE__ */ jsxs24(RichTextEditor.ControlsGroup, { children: [
|
|
6150
|
-
/* @__PURE__ */ jsx45(RichTextEditor.AlignLeft, {}),
|
|
6151
|
-
/* @__PURE__ */ jsx45(RichTextEditor.AlignCenter, {}),
|
|
6152
|
-
/* @__PURE__ */ jsx45(RichTextEditor.AlignJustify, {}),
|
|
6153
|
-
/* @__PURE__ */ jsx45(RichTextEditor.AlignRight, {})
|
|
6154
|
-
] })
|
|
6155
|
-
] }),
|
|
6156
|
-
/* @__PURE__ */ jsx45(
|
|
6157
|
-
ScrollArea.Autosize,
|
|
6158
|
-
{
|
|
6159
|
-
onMouseDown: () => {
|
|
6160
|
-
editor == null ? void 0 : editor.commands.focus();
|
|
6161
|
-
},
|
|
6162
|
-
onBlur: () => {
|
|
6163
|
-
if (autoHiddenToolBar == false) return;
|
|
6164
|
-
setHiddenToolBar(true);
|
|
6165
|
-
},
|
|
6166
|
-
onFocus: () => {
|
|
6167
|
-
if (autoHiddenToolBar == false) return;
|
|
6168
|
-
setHiddenToolBar(false);
|
|
6169
|
-
},
|
|
6170
|
-
style: { cursor: "text", maxHeight: "400px" },
|
|
6171
|
-
children: /* @__PURE__ */ jsx45(RichTextEditor.Content, { mih: contentHeight })
|
|
6172
|
-
}
|
|
6173
|
-
)
|
|
6174
|
-
] }) });
|
|
5891
|
+
return /* @__PURE__ */ React.createElement(Input.Wrapper, { label, flex: 1, error, withAsterisk }, /* @__PURE__ */ React.createElement(RichTextEditor, { editor, style: { border: error && "1px solid #e03131" } }, /* @__PURE__ */ React.createElement(RichTextEditor.Toolbar, { hidden: hiddenToolBar, sticky: true, stickyOffset: 60 }, /* @__PURE__ */ React.createElement(RichTextEditor.ControlsGroup, null, /* @__PURE__ */ React.createElement(RichTextEditor.Bold, null), /* @__PURE__ */ React.createElement(RichTextEditor.Italic, null), /* @__PURE__ */ React.createElement(RichTextEditor.Underline, null), /* @__PURE__ */ React.createElement(RichTextEditor.Strikethrough, null), /* @__PURE__ */ React.createElement(RichTextEditor.ClearFormatting, null), /* @__PURE__ */ React.createElement(RichTextEditor.Highlight, null), /* @__PURE__ */ React.createElement(RichTextEditor.Code, null)), /* @__PURE__ */ React.createElement(RichTextEditor.ControlsGroup, null, /* @__PURE__ */ React.createElement(RichTextEditor.H1, null), /* @__PURE__ */ React.createElement(RichTextEditor.H2, null), /* @__PURE__ */ React.createElement(RichTextEditor.H3, null), /* @__PURE__ */ React.createElement(RichTextEditor.H4, null)), /* @__PURE__ */ React.createElement(RichTextEditor.ControlsGroup, null, /* @__PURE__ */ React.createElement(RichTextEditor.Blockquote, null), /* @__PURE__ */ React.createElement(RichTextEditor.Hr, null), /* @__PURE__ */ React.createElement(RichTextEditor.BulletList, null), /* @__PURE__ */ React.createElement(RichTextEditor.OrderedList, null), /* @__PURE__ */ React.createElement(RichTextEditor.Subscript, null), /* @__PURE__ */ React.createElement(RichTextEditor.Superscript, null)), /* @__PURE__ */ React.createElement(RichTextEditor.ControlsGroup, null, /* @__PURE__ */ React.createElement(RichTextEditor.Link, null), /* @__PURE__ */ React.createElement(RichTextEditor.Unlink, null)), /* @__PURE__ */ React.createElement(RichTextEditor.ControlsGroup, null, /* @__PURE__ */ React.createElement(RichTextEditor.AlignLeft, null), /* @__PURE__ */ React.createElement(RichTextEditor.AlignCenter, null), /* @__PURE__ */ React.createElement(RichTextEditor.AlignJustify, null), /* @__PURE__ */ React.createElement(RichTextEditor.AlignRight, null))), /* @__PURE__ */ React.createElement(
|
|
5892
|
+
ScrollArea.Autosize,
|
|
5893
|
+
{
|
|
5894
|
+
onMouseDown: () => {
|
|
5895
|
+
editor == null ? void 0 : editor.commands.focus();
|
|
5896
|
+
},
|
|
5897
|
+
onBlur: () => {
|
|
5898
|
+
if (autoHiddenToolBar == false) return;
|
|
5899
|
+
setHiddenToolBar(true);
|
|
5900
|
+
},
|
|
5901
|
+
onFocus: () => {
|
|
5902
|
+
if (autoHiddenToolBar == false) return;
|
|
5903
|
+
setHiddenToolBar(false);
|
|
5904
|
+
},
|
|
5905
|
+
style: { cursor: "text", maxHeight: "400px" }
|
|
5906
|
+
},
|
|
5907
|
+
/* @__PURE__ */ React.createElement(RichTextEditor.Content, { mih: contentHeight })
|
|
5908
|
+
)));
|
|
6175
5909
|
}
|
|
6176
5910
|
|
|
6177
5911
|
// src/stores/S0Auth.ts
|
|
@@ -6188,14 +5922,13 @@ function useS0Auth() {
|
|
|
6188
5922
|
import { Button as Button14 } from "@mantine/core";
|
|
6189
5923
|
import { IconLogout } from "@tabler/icons-react";
|
|
6190
5924
|
import { useRouter as useRouter3 } from "next/navigation";
|
|
6191
|
-
import { jsx as jsx46 } from "react/jsx-runtime";
|
|
6192
5925
|
function F0Logout() {
|
|
6193
5926
|
const router = useRouter3();
|
|
6194
5927
|
const s0Auth = useS0Auth();
|
|
6195
|
-
return /* @__PURE__ */
|
|
5928
|
+
return /* @__PURE__ */ React.createElement(Button14, { onClick: () => {
|
|
6196
5929
|
s0Auth.setProperty("token", "");
|
|
6197
5930
|
router.replace("/auth/login");
|
|
6198
|
-
}, leftSection: /* @__PURE__ */
|
|
5931
|
+
}, leftSection: /* @__PURE__ */ React.createElement(IconLogout, null), fullWidth: true, justify: "start", variant: "subtle" }, "\u0110\u0103ng xu\u1EA5t");
|
|
6199
5932
|
}
|
|
6200
5933
|
|
|
6201
5934
|
// src/components/Layouts/BasicAppShell/BasicAppShell.tsx
|
|
@@ -6218,22 +5951,22 @@ import { spotlight as spotlight2 } from "@mantine/spotlight";
|
|
|
6218
5951
|
import { IconLayoutSidebarLeftCollapse, IconLayoutSidebarLeftExpand, IconLibraryMinus, IconSearch as IconSearch2 } from "@tabler/icons-react";
|
|
6219
5952
|
import Link3 from "next/link";
|
|
6220
5953
|
import { usePathname as usePathname2 } from "next/navigation";
|
|
6221
|
-
import { Fragment as Fragment12, jsx as jsx47, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
6222
5954
|
function getRightSection(status) {
|
|
6223
|
-
if (status === "Prototype") return /* @__PURE__ */
|
|
6224
|
-
if (status === "New") return /* @__PURE__ */
|
|
6225
|
-
if (status === "Menu") return /* @__PURE__ */
|
|
6226
|
-
if (status === "Change") return /* @__PURE__ */
|
|
5955
|
+
if (status === "Prototype") return /* @__PURE__ */ React.createElement(Badge2, { styles: { root: { cursor: "pointer" } }, radius: "xs", color: "pink", circle: true }, "P");
|
|
5956
|
+
if (status === "New") return /* @__PURE__ */ React.createElement(Badge2, { styles: { root: { cursor: "pointer" } }, radius: "xs", circle: true }, "N");
|
|
5957
|
+
if (status === "Menu") return /* @__PURE__ */ React.createElement(Badge2, { styles: { root: { cursor: "pointer" } }, radius: "xs", color: "gray", circle: true }, "M");
|
|
5958
|
+
if (status === "Change") return /* @__PURE__ */ React.createElement(Badge2, { styles: { root: { cursor: "pointer" } }, radius: "xs", color: "green", circle: true }, "C");
|
|
6227
5959
|
return null;
|
|
6228
5960
|
}
|
|
6229
5961
|
function RenderNavLinks({ items }) {
|
|
6230
5962
|
const SidebarStore = useS0Sidebar();
|
|
6231
5963
|
const pathName = usePathname2();
|
|
6232
|
-
return /* @__PURE__ */
|
|
5964
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, items.map((item, index) => /* @__PURE__ */ React.createElement(
|
|
6233
5965
|
NavLink,
|
|
6234
5966
|
{
|
|
6235
5967
|
active: item.link === pathName.split("/")[2],
|
|
6236
5968
|
component: Link3,
|
|
5969
|
+
key: index,
|
|
6237
5970
|
rightSection: getRightSection(item.status),
|
|
6238
5971
|
opened: SidebarStore.groupMenuOpenId.includes(item.label),
|
|
6239
5972
|
href: `/${pathName.split("/")[1]}/${item.link}` || "#",
|
|
@@ -6245,11 +5978,10 @@ function RenderNavLinks({ items }) {
|
|
|
6245
5978
|
SidebarStore.setMenuCode(item.link);
|
|
6246
5979
|
SidebarStore.setTitle(item.label);
|
|
6247
5980
|
}
|
|
6248
|
-
}
|
|
6249
|
-
children: item.links && /* @__PURE__ */ jsx47(RenderNavLinks, { items: item.links })
|
|
5981
|
+
}
|
|
6250
5982
|
},
|
|
6251
|
-
|
|
6252
|
-
))
|
|
5983
|
+
item.links && /* @__PURE__ */ React.createElement(RenderNavLinks, { items: item.links })
|
|
5984
|
+
)));
|
|
6253
5985
|
}
|
|
6254
5986
|
function childrenMenuToListEnumUsingPageIdAndName(children) {
|
|
6255
5987
|
return children.flatMap((item) => {
|
|
@@ -6303,7 +6035,7 @@ function BasicAppShell({ children, menu }) {
|
|
|
6303
6035
|
const SidebarStore = useS0Sidebar();
|
|
6304
6036
|
const media = useMediaQuery("(min-width: 72em)");
|
|
6305
6037
|
const selectMedia = useMediaQuery("(min-width: 80em)");
|
|
6306
|
-
return /* @__PURE__ */
|
|
6038
|
+
return /* @__PURE__ */ React.createElement(
|
|
6307
6039
|
AppShell,
|
|
6308
6040
|
{
|
|
6309
6041
|
header: { height: 60 },
|
|
@@ -6312,71 +6044,37 @@ function BasicAppShell({ children, menu }) {
|
|
|
6312
6044
|
breakpoint: "sm",
|
|
6313
6045
|
collapsed: { mobile: SidebarStore.opened, desktop: !SidebarStore.opened }
|
|
6314
6046
|
},
|
|
6315
|
-
padding: "md"
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
|
|
6323
|
-
|
|
6324
|
-
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
|
|
6336
|
-
|
|
6337
|
-
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
6342
|
-
|
|
6343
|
-
|
|
6344
|
-
|
|
6345
|
-
|
|
6346
|
-
/* @__PURE__ */ jsxs25(Group11, { children: [
|
|
6347
|
-
/* @__PURE__ */ jsx47(
|
|
6348
|
-
Select3,
|
|
6349
|
-
{
|
|
6350
|
-
w: 100,
|
|
6351
|
-
size: "xs",
|
|
6352
|
-
placeholder: "H\u1ECDc k\u1EF3",
|
|
6353
|
-
defaultValue: 1 == null ? void 0 : 1 .toString(),
|
|
6354
|
-
data: [
|
|
6355
|
-
{ value: "1", label: "20241" },
|
|
6356
|
-
{ value: "2", label: "20242" }
|
|
6357
|
-
]
|
|
6358
|
-
}
|
|
6359
|
-
),
|
|
6360
|
-
/* @__PURE__ */ jsx47(MySwitchTheme, {})
|
|
6361
|
-
] })
|
|
6362
|
-
] })
|
|
6363
|
-
)
|
|
6364
|
-
] }),
|
|
6365
|
-
/* @__PURE__ */ jsxs25(AppShell.Navbar, { children: [
|
|
6366
|
-
/* @__PURE__ */ jsx47(TextInput2, { mt: "md", placeholder: "T\xECm menu (Ctrl + K)", mx: 10, component: "button", onClick: spotlight2.open, leftSection: /* @__PURE__ */ jsx47(IconSearch2, {}), children: "T\xECm ki\u1EBFm (Ctrl + K)" }),
|
|
6367
|
-
/* @__PURE__ */ jsxs25(AppShell.Section, { grow: true, component: ScrollArea2, p: 5, children: [
|
|
6368
|
-
/* @__PURE__ */ jsx47(RenderNavLinks, { items: menu }),
|
|
6369
|
-
/* @__PURE__ */ jsx47(Divider2, {}),
|
|
6370
|
-
/* @__PURE__ */ jsx47(F0Logout, {})
|
|
6371
|
-
] }),
|
|
6372
|
-
/* @__PURE__ */ jsxs25(AppShell.Section, { p: "md", children: [
|
|
6373
|
-
/* @__PURE__ */ jsx47(Divider2, {}),
|
|
6374
|
-
/* @__PURE__ */ jsx47(Image3, { src: "/imgs/0/IMG0LogoAQTech.png", h: 50, alt: "", w: "auto" })
|
|
6375
|
-
] })
|
|
6376
|
-
] }),
|
|
6377
|
-
/* @__PURE__ */ jsx47(AppShell.Main, { bg: "light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-8))", children })
|
|
6378
|
-
]
|
|
6379
|
-
}
|
|
6047
|
+
padding: "md"
|
|
6048
|
+
},
|
|
6049
|
+
/* @__PURE__ */ React.createElement(AppShell.Header, null, /* @__PURE__ */ React.createElement(MyAppSpotlight, { menu }), media ? /* @__PURE__ */ React.createElement(Group11, { h: "100%", px: "md", justify: "space-between", align: "center" }, /* @__PURE__ */ React.createElement(Group11, { h: "100%" }, /* @__PURE__ */ React.createElement(Tooltip5, { label: SidebarStore.opened ? "\u1EA8n thanh menu" : "Hi\u1EC7n thanh menu" }, /* @__PURE__ */ React.createElement(ActionIcon10, { size: "lg", radius: "md", variant: "default", onClick: SidebarStore.toggle }, SidebarStore.opened ? /* @__PURE__ */ React.createElement(IconLayoutSidebarLeftExpand, null) : /* @__PURE__ */ React.createElement(IconLayoutSidebarLeftCollapse, null))), /* @__PURE__ */ React.createElement(Tooltip5, { label: "\u0110\xF3ng t\u1EA5t c\u1EA3 menu" }, /* @__PURE__ */ React.createElement(ActionIcon10, { size: "lg", radius: "md", variant: "default", onClick: () => SidebarStore.clearGroupMenuOpenId() }, /* @__PURE__ */ React.createElement(IconLibraryMinus, null)))), /* @__PURE__ */ React.createElement(Group11, { style: { position: "absolute", left: "50%", transform: "translateX(-50%)" } }, /* @__PURE__ */ React.createElement(Text11, { c: "green", fw: "bold" }, "AQ EduCourseEvaluation - Ph\u1EA7n m\u1EC1m \u0111\xE1nh gi\xE1 chu\u1EA9n \u0111\u1EA7u ra")), /* @__PURE__ */ React.createElement(Group11, null, /* @__PURE__ */ React.createElement(Text11, null, "H\u1ECDc k\u1EF3 l\xE0m vi\u1EC7c"), /* @__PURE__ */ React.createElement(
|
|
6050
|
+
Select3,
|
|
6051
|
+
{
|
|
6052
|
+
w: selectMedia ? 245 : 150,
|
|
6053
|
+
placeholder: "Ch\u1ECDn c\xF4ng th\u1EE9c s\u1EAFp x\u1EBFp",
|
|
6054
|
+
defaultValue: 1 == null ? void 0 : 1 .toString(),
|
|
6055
|
+
data: [
|
|
6056
|
+
{ value: "1", label: "N\u0103m h\u1ECDc 2024 - 2025 H\u1ECDc k\u1EF3 1" },
|
|
6057
|
+
{ value: "2", label: "N\u0103m h\u1ECDc 2024 - 2025 H\u1ECDc k\u1EF3 1" }
|
|
6058
|
+
]
|
|
6059
|
+
}
|
|
6060
|
+
), /* @__PURE__ */ React.createElement(MySwitchTheme, null))) : (
|
|
6061
|
+
// For mobile screens - simplified layout
|
|
6062
|
+
/* @__PURE__ */ React.createElement(Group11, { h: "100%", px: "md", justify: "space-between" }, /* @__PURE__ */ React.createElement(ActionIcon10, { size: "lg", radius: "md", variant: "default", onClick: SidebarStore.toggle }, SidebarStore.opened ? /* @__PURE__ */ React.createElement(IconLayoutSidebarLeftExpand, null) : /* @__PURE__ */ React.createElement(IconLayoutSidebarLeftCollapse, null)), /* @__PURE__ */ React.createElement(Text11, { c: "green", fw: "bold", size: "sm" }, "AQ EduCourseEvaluation"), /* @__PURE__ */ React.createElement(Group11, null, /* @__PURE__ */ React.createElement(
|
|
6063
|
+
Select3,
|
|
6064
|
+
{
|
|
6065
|
+
w: 100,
|
|
6066
|
+
size: "xs",
|
|
6067
|
+
placeholder: "H\u1ECDc k\u1EF3",
|
|
6068
|
+
defaultValue: 1 == null ? void 0 : 1 .toString(),
|
|
6069
|
+
data: [
|
|
6070
|
+
{ value: "1", label: "20241" },
|
|
6071
|
+
{ value: "2", label: "20242" }
|
|
6072
|
+
]
|
|
6073
|
+
}
|
|
6074
|
+
), /* @__PURE__ */ React.createElement(MySwitchTheme, null)))
|
|
6075
|
+
)),
|
|
6076
|
+
/* @__PURE__ */ React.createElement(AppShell.Navbar, null, /* @__PURE__ */ React.createElement(TextInput2, { mt: "md", placeholder: "T\xECm menu (Ctrl + K)", mx: 10, component: "button", onClick: spotlight2.open, leftSection: /* @__PURE__ */ React.createElement(IconSearch2, null) }, "T\xECm ki\u1EBFm (Ctrl + K)"), /* @__PURE__ */ React.createElement(AppShell.Section, { grow: true, component: ScrollArea2, p: 5 }, /* @__PURE__ */ React.createElement(RenderNavLinks, { items: menu }), /* @__PURE__ */ React.createElement(Divider2, null), /* @__PURE__ */ React.createElement(F0Logout, null)), /* @__PURE__ */ React.createElement(AppShell.Section, { p: "md" }, /* @__PURE__ */ React.createElement(Divider2, null), /* @__PURE__ */ React.createElement(Image3, { src: "/imgs/0/IMG0LogoAQTech.png", h: 50, alt: "", w: "auto" }))),
|
|
6077
|
+
/* @__PURE__ */ React.createElement(AppShell.Main, { bg: "light-dark(var(--mantine-color-gray-1), var(--mantine-color-dark-8))" }, children)
|
|
6380
6078
|
);
|
|
6381
6079
|
}
|
|
6382
6080
|
var groupToTwoLevels = (menu) => {
|
|
@@ -6423,10 +6121,9 @@ function utils_layout_getItemsWithoutLinks(menu) {
|
|
|
6423
6121
|
|
|
6424
6122
|
// src/components/Layouts/Container/MyContainer.tsx
|
|
6425
6123
|
import { Container, Flex as Flex4 } from "@mantine/core";
|
|
6426
|
-
import { jsx as jsx48 } from "react/jsx-runtime";
|
|
6427
6124
|
function MyContainer(_a) {
|
|
6428
6125
|
var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
|
|
6429
|
-
return /* @__PURE__ */
|
|
6126
|
+
return /* @__PURE__ */ React.createElement(Container, __spreadValues({ fluid: true }, rest), /* @__PURE__ */ React.createElement(Flex4, { direction: "column" }, children));
|
|
6430
6127
|
}
|
|
6431
6128
|
|
|
6432
6129
|
// src/constants/object/color.ts
|
|
@@ -6479,7 +6176,6 @@ function useHeaderMegaMenuStore() {
|
|
|
6479
6176
|
}
|
|
6480
6177
|
|
|
6481
6178
|
// src/components/Layouts/HeaderMegaMenu/HeaderMegaMenu.tsx
|
|
6482
|
-
import { jsx as jsx49, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
6483
6179
|
var mockdata = [
|
|
6484
6180
|
{
|
|
6485
6181
|
icon: IconCode,
|
|
@@ -6517,50 +6213,25 @@ function HeaderMegaMenu({ children, menus }) {
|
|
|
6517
6213
|
const [linksOpened, { toggle: toggleLinks }] = useDisclosure10(false);
|
|
6518
6214
|
const HeaderMegaMenuStore = useHeaderMegaMenuStore();
|
|
6519
6215
|
const theme = useMantineTheme();
|
|
6520
|
-
const links = mockdata.map((item) => /* @__PURE__ */
|
|
6521
|
-
|
|
6522
|
-
|
|
6523
|
-
|
|
6524
|
-
|
|
6525
|
-
|
|
6526
|
-
|
|
6527
|
-
|
|
6528
|
-
|
|
6529
|
-
|
|
6530
|
-
|
|
6531
|
-
|
|
6532
|
-
|
|
6533
|
-
|
|
6534
|
-
/* @__PURE__ */ jsx49(TextInput3, { placeholder: "T\xECm ki\u1EBFm", leftSection: /* @__PURE__ */ jsx49(IconSearch3, {}), radius: "xl", w: "250px" }),
|
|
6535
|
-
/* @__PURE__ */ jsx49(MySwitchTheme, {})
|
|
6536
|
-
] }),
|
|
6537
|
-
/* @__PURE__ */ jsx49(Burger, { opened: drawerOpened, onClick: toggleDrawer, hiddenFrom: "sm" })
|
|
6538
|
-
] }) }),
|
|
6539
|
-
/* @__PURE__ */ jsx49(Container2, { fluid: true, pt: "sm", pb: "md", bg: OBJECT_COlORS.mantineBackgroundSecondary, mih: "93vh", children }),
|
|
6540
|
-
/* @__PURE__ */ jsx49(
|
|
6541
|
-
Drawer,
|
|
6542
|
-
{
|
|
6543
|
-
opened: drawerOpened,
|
|
6544
|
-
onClose: closeDrawer,
|
|
6545
|
-
size: "100%",
|
|
6546
|
-
padding: "md",
|
|
6547
|
-
title: "Navigation",
|
|
6548
|
-
hiddenFrom: "sm",
|
|
6549
|
-
zIndex: 1e6,
|
|
6550
|
-
children: /* @__PURE__ */ jsxs26(ScrollArea3, { h: "calc(100vh - 80px", mx: "-md", children: [
|
|
6551
|
-
/* @__PURE__ */ jsx49(Divider3, { my: "sm" }),
|
|
6552
|
-
/* @__PURE__ */ jsx49(MyFlexColumn, { h: "100%", gap: 0, children: menus == null ? void 0 : menus.map((item, idx) => /* @__PURE__ */ jsx49(Button15, { component: Link4, href: item.href, variant: HeaderMegaMenuStore.state.name == item.label ? "light" : "subtle", onClick: () => HeaderMegaMenuStore.setState({ name: item.label }), children: item.label }, idx)) }),
|
|
6553
|
-
/* @__PURE__ */ jsx49(Divider3, { my: "sm" })
|
|
6554
|
-
] })
|
|
6555
|
-
}
|
|
6556
|
-
)
|
|
6557
|
-
] });
|
|
6216
|
+
const links = mockdata.map((item) => /* @__PURE__ */ React.createElement(UnstyledButton, { className: css_default2.subLink, key: item.title }, /* @__PURE__ */ React.createElement(Group12, { wrap: "nowrap", align: "flex-start" }, /* @__PURE__ */ React.createElement(ThemeIcon, { size: 34, variant: "default", radius: "md" }, /* @__PURE__ */ React.createElement(item.icon, { size: 22, color: theme.colors.blue[6] })), /* @__PURE__ */ React.createElement("div", null, /* @__PURE__ */ React.createElement(Text12, { size: "sm", fw: 500 }, item.title), /* @__PURE__ */ React.createElement(Text12, { size: "xs", c: "dimmed" }, item.description)))));
|
|
6217
|
+
return /* @__PURE__ */ React.createElement(Box3, null, /* @__PURE__ */ React.createElement("header", { className: css_default2.header }, /* @__PURE__ */ React.createElement(Group12, { justify: "space-between", h: "100%" }, /* @__PURE__ */ React.createElement(Group12, null, /* @__PURE__ */ React.createElement(Image4, { src: "/imgs/0/IMG0LogoAQTech.png", h: 30, alt: "", w: "auto" }), /* @__PURE__ */ React.createElement(Group12, { h: "100%", gap: 5, visibleFrom: "sm" }, menus == null ? void 0 : menus.map((item, idx) => /* @__PURE__ */ React.createElement(Button15, { key: idx, component: Link4, href: item.href, variant: HeaderMegaMenuStore.state.name == item.label ? "light" : "subtle", onClick: () => HeaderMegaMenuStore.setState({ name: item.label }) }, item.label)))), /* @__PURE__ */ React.createElement(Group12, null, /* @__PURE__ */ React.createElement(TextInput3, { placeholder: "T\xECm ki\u1EBFm", leftSection: /* @__PURE__ */ React.createElement(IconSearch3, null), radius: "xl", w: "250px" }), /* @__PURE__ */ React.createElement(MySwitchTheme, null)), /* @__PURE__ */ React.createElement(Burger, { opened: drawerOpened, onClick: toggleDrawer, hiddenFrom: "sm" }))), /* @__PURE__ */ React.createElement(Container2, { fluid: true, pt: "sm", pb: "md", bg: OBJECT_COlORS.mantineBackgroundSecondary, mih: "93vh" }, children), /* @__PURE__ */ React.createElement(
|
|
6218
|
+
Drawer,
|
|
6219
|
+
{
|
|
6220
|
+
opened: drawerOpened,
|
|
6221
|
+
onClose: closeDrawer,
|
|
6222
|
+
size: "100%",
|
|
6223
|
+
padding: "md",
|
|
6224
|
+
title: "Navigation",
|
|
6225
|
+
hiddenFrom: "sm",
|
|
6226
|
+
zIndex: 1e6
|
|
6227
|
+
},
|
|
6228
|
+
/* @__PURE__ */ React.createElement(ScrollArea3, { h: "calc(100vh - 80px", mx: "-md" }, /* @__PURE__ */ React.createElement(Divider3, { my: "sm" }), /* @__PURE__ */ React.createElement(MyFlexColumn, { h: "100%", gap: 0 }, menus == null ? void 0 : menus.map((item, idx) => /* @__PURE__ */ React.createElement(Button15, { key: idx, component: Link4, href: item.href, variant: HeaderMegaMenuStore.state.name == item.label ? "light" : "subtle", onClick: () => HeaderMegaMenuStore.setState({ name: item.label }) }, item.label))), /* @__PURE__ */ React.createElement(Divider3, { my: "sm" }))
|
|
6229
|
+
));
|
|
6558
6230
|
}
|
|
6559
6231
|
|
|
6560
6232
|
// src/components/Layouts/HtmlWrapper/MyHtmlWrapper.tsx
|
|
6561
6233
|
import { ScrollArea as ScrollArea4, TypographyStylesProvider } from "@mantine/core";
|
|
6562
6234
|
import pako from "pako";
|
|
6563
|
-
import { jsx as jsx50 } from "react/jsx-runtime";
|
|
6564
6235
|
function MyHtmlWrapper(_a) {
|
|
6565
6236
|
var _b = _a, { html, mah, zip = false } = _b, rest = __objRest(_b, ["html", "mah", "zip"]);
|
|
6566
6237
|
const extractHtmlFromZip = () => {
|
|
@@ -6569,19 +6240,18 @@ function MyHtmlWrapper(_a) {
|
|
|
6569
6240
|
const cleanedHtml = decompressedData == null ? void 0 : decompressedData.replaceAll(" font-family:'Times New Roman'; font-size:1em;", "");
|
|
6570
6241
|
return cleanedHtml.replaceAll(" font-family:'Times New Roman'; font-size:1em;", "");
|
|
6571
6242
|
};
|
|
6572
|
-
return /* @__PURE__ */
|
|
6243
|
+
return /* @__PURE__ */ React.createElement(ScrollArea4.Autosize, { mah }, /* @__PURE__ */ React.createElement(TypographyStylesProvider, __spreadValues({}, rest), /* @__PURE__ */ React.createElement(
|
|
6573
6244
|
"div",
|
|
6574
6245
|
{
|
|
6575
6246
|
dangerouslySetInnerHTML: {
|
|
6576
6247
|
__html: zip ? extractHtmlFromZip() : html
|
|
6577
6248
|
}
|
|
6578
6249
|
}
|
|
6579
|
-
)
|
|
6250
|
+
)));
|
|
6580
6251
|
}
|
|
6581
6252
|
|
|
6582
6253
|
// src/components/Layouts/PageContent/MyPageContent.tsx
|
|
6583
6254
|
import { Code, Container as Container3, Divider as Divider4, Group as Group13, Indicator, Title } from "@mantine/core";
|
|
6584
|
-
import { jsx as jsx51, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
6585
6255
|
var getStatusColor = (status) => {
|
|
6586
6256
|
switch (status) {
|
|
6587
6257
|
case "Prototype":
|
|
@@ -6594,90 +6264,64 @@ var getStatusColor = (status) => {
|
|
|
6594
6264
|
};
|
|
6595
6265
|
var PageTitle = ({ title, status }) => {
|
|
6596
6266
|
const color = getStatusColor(status);
|
|
6597
|
-
return /* @__PURE__ */
|
|
6267
|
+
return /* @__PURE__ */ React.createElement(Indicator, { label: status, size: 16, inline: true, color, disabled: !status, pt: 6 }, /* @__PURE__ */ React.createElement(Title, null, title));
|
|
6598
6268
|
};
|
|
6599
6269
|
function MyPageContent({ leftTopBar, title, canBack = false, rightTopBar, status, children }) {
|
|
6600
6270
|
const SidebarStore = useS0Sidebar();
|
|
6601
6271
|
const finalTitle = title || SidebarStore.title;
|
|
6602
|
-
return /* @__PURE__ */
|
|
6603
|
-
/* @__PURE__ */ jsxs27(Group13, { justify: "space-between", children: [
|
|
6604
|
-
/* @__PURE__ */ jsxs27(Group13, { children: [
|
|
6605
|
-
canBack && /* @__PURE__ */ jsx51(MyButtonRouterBack, {}),
|
|
6606
|
-
/* @__PURE__ */ jsx51(PageTitle, { title: finalTitle, status }),
|
|
6607
|
-
leftTopBar
|
|
6608
|
-
] }),
|
|
6609
|
-
/* @__PURE__ */ jsxs27(Group13, { children: [
|
|
6610
|
-
rightTopBar,
|
|
6611
|
-
/* @__PURE__ */ jsx51(Code, { color: "var(--mantine-color-blue-light)", children: SidebarStore.menuCode })
|
|
6612
|
-
] })
|
|
6613
|
-
] }),
|
|
6614
|
-
/* @__PURE__ */ jsx51(Divider4, {}),
|
|
6615
|
-
children
|
|
6616
|
-
] });
|
|
6272
|
+
return /* @__PURE__ */ React.createElement(Container3, { p: 0, fluid: true }, /* @__PURE__ */ React.createElement(Group13, { justify: "space-between" }, /* @__PURE__ */ React.createElement(Group13, null, canBack && /* @__PURE__ */ React.createElement(MyButtonRouterBack, null), /* @__PURE__ */ React.createElement(PageTitle, { title: finalTitle, status }), leftTopBar), /* @__PURE__ */ React.createElement(Group13, null, rightTopBar, /* @__PURE__ */ React.createElement(Code, { color: "var(--mantine-color-blue-light)" }, SidebarStore.menuCode))), /* @__PURE__ */ React.createElement(Divider4, null), children);
|
|
6617
6273
|
}
|
|
6618
6274
|
|
|
6619
6275
|
// src/components/Layouts/Tab/MyTab.tsx
|
|
6620
6276
|
import { rem, Space as Space3, Tabs } from "@mantine/core";
|
|
6621
|
-
import
|
|
6277
|
+
import React3 from "react";
|
|
6622
6278
|
function MyTab(_a) {
|
|
6623
6279
|
var _b = _a, { tabList, children } = _b, rest = __objRest(_b, ["tabList", "children"]);
|
|
6624
6280
|
const iconStyle = { width: rem(20), height: rem(20) };
|
|
6625
|
-
return /* @__PURE__ */
|
|
6626
|
-
/* @__PURE__ */
|
|
6627
|
-
|
|
6628
|
-
}) }),
|
|
6629
|
-
/* @__PURE__ */ jsx52(Space3, { my: "md" }),
|
|
6630
|
-
children
|
|
6631
|
-
] }));
|
|
6281
|
+
return /* @__PURE__ */ React3.createElement(Tabs, __spreadValues({ defaultValue: tabList[0].label }, rest), /* @__PURE__ */ React3.createElement(Tabs.List, null, tabList.map((item, idx) => {
|
|
6282
|
+
return /* @__PURE__ */ React3.createElement(Tabs.Tab, { key: idx, value: item.label, leftSection: item.icon && /* @__PURE__ */ React3.createElement(item.icon, { style: iconStyle }) }, item.label);
|
|
6283
|
+
})), /* @__PURE__ */ React3.createElement(Space3, { my: "md" }), children);
|
|
6632
6284
|
}
|
|
6633
6285
|
|
|
6634
6286
|
// src/components/RESTAPIComponents/DataTableSelect/MyDataTableSelect.tsx
|
|
6635
6287
|
import { ActionIcon as ActionIcon11, Button as Button16, Fieldset as Fieldset5, Group as Group14, Modal as Modal11 } from "@mantine/core";
|
|
6636
6288
|
import { useDisclosure as useDisclosure11 } from "@mantine/hooks";
|
|
6637
6289
|
import { IconX as IconX2 } from "@tabler/icons-react";
|
|
6638
|
-
import { jsx as jsx53, jsxs as jsxs29 } from "react/jsx-runtime";
|
|
6639
6290
|
function MyDataTableSelect(_a) {
|
|
6640
6291
|
var _b = _a, { modalSize, renderTopToolbarCustomActions, data, selectButtonlabel, listState, columns, listLabel } = _b, rest = __objRest(_b, ["modalSize", "renderTopToolbarCustomActions", "data", "selectButtonlabel", "listState", "columns", "listLabel"]);
|
|
6641
6292
|
const disc = useDisclosure11(false);
|
|
6642
6293
|
if (data == void 0) return "\u0110ang t\u1EA3i...";
|
|
6643
|
-
return /* @__PURE__ */
|
|
6644
|
-
|
|
6645
|
-
|
|
6646
|
-
|
|
6647
|
-
renderTopToolbarCustomActions
|
|
6648
|
-
|
|
6649
|
-
|
|
6650
|
-
|
|
6651
|
-
|
|
6652
|
-
},
|
|
6653
|
-
|
|
6654
|
-
|
|
6655
|
-
|
|
6656
|
-
|
|
6657
|
-
|
|
6658
|
-
}
|
|
6659
|
-
|
|
6660
|
-
|
|
6661
|
-
|
|
6662
|
-
|
|
6663
|
-
|
|
6664
|
-
|
|
6665
|
-
|
|
6666
|
-
|
|
6667
|
-
|
|
6668
|
-
|
|
6669
|
-
enableRowSelection: true,
|
|
6670
|
-
data,
|
|
6671
|
-
columns
|
|
6672
|
-
}, rest)
|
|
6673
|
-
) })
|
|
6674
|
-
] });
|
|
6294
|
+
return /* @__PURE__ */ React.createElement(Fieldset5, { legend: listLabel ? listLabel : "Danh s\xE1ch" }, /* @__PURE__ */ React.createElement(
|
|
6295
|
+
MyDataTable,
|
|
6296
|
+
__spreadValues({
|
|
6297
|
+
renderTopToolbarCustomActions: ({ table }) => {
|
|
6298
|
+
return /* @__PURE__ */ React.createElement(Group14, null, renderTopToolbarCustomActions && renderTopToolbarCustomActions({ table }), /* @__PURE__ */ React.createElement(Button16, { onClick: disc[1].open }, selectButtonlabel || "Ch\u1ECDn t\u1EEB danh s\xE1ch"));
|
|
6299
|
+
},
|
|
6300
|
+
columns,
|
|
6301
|
+
data: listState[0],
|
|
6302
|
+
renderRowActions: ({ row }) => {
|
|
6303
|
+
return /* @__PURE__ */ React.createElement(MyCenterFull, null, /* @__PURE__ */ React.createElement(ActionIcon11, { color: "red", onClick: () => listState[1].remove(row.index) }, /* @__PURE__ */ React.createElement(IconX2, null)));
|
|
6304
|
+
}
|
|
6305
|
+
}, rest)
|
|
6306
|
+
), /* @__PURE__ */ React.createElement(Modal11, { opened: disc[0], onClose: disc[1].close, size: modalSize || "80%" }, /* @__PURE__ */ React.createElement(
|
|
6307
|
+
MyDataTable,
|
|
6308
|
+
__spreadValues({
|
|
6309
|
+
renderTopToolbarCustomActions: ({ table }) => {
|
|
6310
|
+
return /* @__PURE__ */ React.createElement(Button16, { onClick: () => {
|
|
6311
|
+
table.getSelectedRowModel().rows.map((item) => listState[1].append(item.original));
|
|
6312
|
+
disc[1].close();
|
|
6313
|
+
} }, "Ch\u1ECDn");
|
|
6314
|
+
},
|
|
6315
|
+
enableRowSelection: true,
|
|
6316
|
+
data,
|
|
6317
|
+
columns
|
|
6318
|
+
}, rest)
|
|
6319
|
+
)));
|
|
6675
6320
|
}
|
|
6676
6321
|
|
|
6677
6322
|
// src/components/RESTAPIComponents/SelectAPIGet/MySelectAPIGet.tsx
|
|
6678
6323
|
import { Select as Select4 } from "@mantine/core";
|
|
6679
6324
|
import { useQuery as useQuery2 } from "@tanstack/react-query";
|
|
6680
|
-
import { jsx as jsx54 } from "react/jsx-runtime";
|
|
6681
6325
|
function MySelectAPIGet(_a) {
|
|
6682
6326
|
var _b = _a, { apiGet, label = "", dataMapper } = _b, rest = __objRest(_b, ["apiGet", "label", "dataMapper"]);
|
|
6683
6327
|
var _a2;
|
|
@@ -6696,7 +6340,7 @@ function MySelectAPIGet(_a) {
|
|
|
6696
6340
|
label: `${item.code}-${item.name}`
|
|
6697
6341
|
};
|
|
6698
6342
|
});
|
|
6699
|
-
return /* @__PURE__ */
|
|
6343
|
+
return /* @__PURE__ */ React.createElement(
|
|
6700
6344
|
Select4,
|
|
6701
6345
|
__spreadValues({
|
|
6702
6346
|
label,
|
|
@@ -6708,9 +6352,8 @@ function MySelectAPIGet(_a) {
|
|
|
6708
6352
|
|
|
6709
6353
|
// src/components/Skeletons/SkeletonTable/MySkeletonTable.tsx
|
|
6710
6354
|
import { Skeleton } from "@mantine/core";
|
|
6711
|
-
import { jsx as jsx55 } from "react/jsx-runtime";
|
|
6712
6355
|
function MySkeletonTable({ h: h4 = 500 }) {
|
|
6713
|
-
return /* @__PURE__ */
|
|
6356
|
+
return /* @__PURE__ */ React.createElement(Skeleton, { h: h4 });
|
|
6714
6357
|
}
|
|
6715
6358
|
|
|
6716
6359
|
export {
|