aq-fe-framework 0.1.214 → 0.1.215
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/{BasicAppShell-BwcDlG28.d.mts → BasicAppShell-CGKvZ5wV.d.mts} +1 -0
- package/dist/{chunk-4LGIOYGW.mjs → chunk-23JEDPUS.mjs} +383 -337
- package/dist/components/index.d.mts +8 -6
- package/dist/components/index.mjs +1 -3
- package/dist/modules-features/index.d.mts +1 -1
- package/dist/modules-features/index.mjs +4 -4
- package/package.json +1 -1
@@ -626,152 +626,111 @@ function MySwitchTheme() {
|
|
626
626
|
}
|
627
627
|
|
628
628
|
// src/components/AppSpotlight/MyAppSpotlight.tsx
|
629
|
+
import {
|
630
|
+
Badge,
|
631
|
+
Group as Group3,
|
632
|
+
Text as Text4,
|
633
|
+
TextInput as TextInput2
|
634
|
+
} from "@mantine/core";
|
629
635
|
import { Spotlight, spotlight } from "@mantine/spotlight";
|
630
636
|
import { IconSearch } from "@tabler/icons-react";
|
631
637
|
import { usePathname, useRouter } from "next/navigation";
|
632
638
|
import { useMemo, useState as useState5 } from "react";
|
633
|
-
|
634
|
-
// src/components/Layouts/BasicAppShell/useS_BasicAppShell.ts
|
635
|
-
var useStore = createGenericStore({
|
636
|
-
initialState: {
|
637
|
-
menuCode: "",
|
638
|
-
moduleCode: "Module code",
|
639
|
-
moduleName: "Module name",
|
640
|
-
title: "",
|
641
|
-
opened: true,
|
642
|
-
groupMenuOpenId: []
|
643
|
-
},
|
644
|
-
storageKey: "useS_BasicAppShell"
|
645
|
-
});
|
646
|
-
function useS_BasicAppShell() {
|
647
|
-
const store = useStore();
|
648
|
-
const GetAQModule_query = useQ_AQ_GetAQModule();
|
649
|
-
function toggle() {
|
650
|
-
store.setProperty("opened", !store.state.opened);
|
651
|
-
}
|
652
|
-
function toggleGroupMenuOpenId(id) {
|
653
|
-
const currentIds = store.state.groupMenuOpenId;
|
654
|
-
if (currentIds.includes(id)) {
|
655
|
-
store.setProperty(
|
656
|
-
"groupMenuOpenId",
|
657
|
-
currentIds.filter((existingId) => existingId !== id)
|
658
|
-
);
|
659
|
-
} else {
|
660
|
-
store.setProperty("groupMenuOpenId", [...currentIds, id]);
|
661
|
-
}
|
662
|
-
}
|
663
|
-
function clearGroupMenuOpenId() {
|
664
|
-
store.setProperty("groupMenuOpenId", []);
|
665
|
-
}
|
666
|
-
function setDefault() {
|
667
|
-
var _a, _b;
|
668
|
-
if (!GetAQModule_query.data) return;
|
669
|
-
store.setProperty("faviconFileDetail", (_a = GetAQModule_query.data) == null ? void 0 : _a.faviconFileDetail);
|
670
|
-
store.setProperty("logoFileDetail", (_b = GetAQModule_query.data) == null ? void 0 : _b.logoFileDetail);
|
671
|
-
}
|
672
|
-
return __spreadProps(__spreadValues({}, store), {
|
673
|
-
toggle,
|
674
|
-
toggleGroupMenuOpenId,
|
675
|
-
clearGroupMenuOpenId,
|
676
|
-
setDefault
|
677
|
-
});
|
678
|
-
}
|
679
|
-
|
680
|
-
// src/components/AppSpotlight/MyAppSpotlight.tsx
|
681
|
-
import { jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
682
|
-
function convertMenuToSpotlightActions(items, router, parentPath = "", sideBarStore, pathName) {
|
683
|
-
let actions = [];
|
684
|
-
items.forEach((item) => {
|
685
|
-
if (item.link) {
|
686
|
-
actions.push({
|
687
|
-
id: item.label.toLowerCase().replace(/\s+/g, "-"),
|
688
|
-
label: item.label,
|
689
|
-
description: `Chuy\u1EC3n \u0111\u1EBFn ${item.label} (Code: ${item.link})`,
|
690
|
-
onClick: () => {
|
691
|
-
sideBarStore.setProperty("title", item.label);
|
692
|
-
sideBarStore.setProperty("menuCode", item.link);
|
693
|
-
router.push(
|
694
|
-
pathName.split("/")[0] + "/" + pathName.split("/")[1] + "/" + item.link
|
695
|
-
);
|
696
|
-
spotlight.close();
|
697
|
-
},
|
698
|
-
rightSection: item.status ? item.status === "Prototype" ? "P" : item.status === "New" ? "N" : item.status === "Menu" ? "M" : null : null
|
699
|
-
});
|
700
|
-
}
|
701
|
-
if (item.links) {
|
702
|
-
actions = actions.concat(
|
703
|
-
convertMenuToSpotlightActions(
|
704
|
-
item.links,
|
705
|
-
router,
|
706
|
-
item.link || "",
|
707
|
-
sideBarStore,
|
708
|
-
pathName
|
709
|
-
)
|
710
|
-
);
|
711
|
-
}
|
712
|
-
});
|
713
|
-
return actions;
|
714
|
-
}
|
639
|
+
import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs7 } from "react/jsx-runtime";
|
715
640
|
function MyAppSpotlight({ menu }) {
|
716
|
-
const [query, setQuery] = useState5("");
|
717
641
|
const router = useRouter();
|
718
642
|
const pathName = usePathname();
|
719
|
-
const
|
720
|
-
const
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
643
|
+
const [query, setQuery] = useState5("");
|
644
|
+
const allChildItems = useMemo(() => {
|
645
|
+
const result = [];
|
646
|
+
const extractChildren = (items) => {
|
647
|
+
items.forEach((item) => {
|
648
|
+
if (item.link) {
|
649
|
+
result.push(item);
|
650
|
+
}
|
651
|
+
if (item.links) {
|
652
|
+
extractChildren(item.links);
|
653
|
+
}
|
654
|
+
});
|
655
|
+
};
|
656
|
+
extractChildren(menu);
|
657
|
+
return result;
|
658
|
+
}, [menu]);
|
659
|
+
const filteredItems = allChildItems.filter((item) => {
|
660
|
+
var _a, _b;
|
661
|
+
const lowerQuery = query.toLowerCase().trim();
|
662
|
+
return item.label.toLowerCase().includes(lowerQuery) || ((_a = item.note) == null ? void 0 : _a.toLowerCase().includes(lowerQuery)) || ((_b = item.link) == null ? void 0 : _b.toLowerCase().includes(lowerQuery));
|
663
|
+
});
|
664
|
+
return /* @__PURE__ */ jsxs7(Fragment4, { children: [
|
665
|
+
/* @__PURE__ */ jsx16(
|
666
|
+
TextInput2,
|
667
|
+
{
|
668
|
+
mt: "md",
|
669
|
+
placeholder: "T\xECm menu (Ctrl + K)",
|
670
|
+
mx: 10,
|
671
|
+
component: "button",
|
672
|
+
onClick: spotlight.open,
|
673
|
+
leftSection: /* @__PURE__ */ jsx16(IconSearch, {}),
|
674
|
+
children: "T\xECm ki\u1EBFm (Ctrl + K)"
|
739
675
|
}
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
676
|
+
),
|
677
|
+
/* @__PURE__ */ jsxs7(
|
678
|
+
Spotlight.Root,
|
679
|
+
{
|
680
|
+
maxHeight: 800,
|
681
|
+
query,
|
682
|
+
onQueryChange: setQuery,
|
683
|
+
children: [
|
684
|
+
/* @__PURE__ */ jsx16(
|
685
|
+
Spotlight.Search,
|
686
|
+
{
|
687
|
+
placeholder: "T\xECm ki\u1EBFm menu...",
|
688
|
+
leftSection: /* @__PURE__ */ jsx16(IconSearch, { stroke: 1.5 })
|
689
|
+
}
|
690
|
+
),
|
691
|
+
/* @__PURE__ */ jsx16(Spotlight.ActionsList, { children: filteredItems.length > 0 ? filteredItems.map((item, idx) => /* @__PURE__ */ jsx16(
|
692
|
+
Spotlight.Action,
|
693
|
+
{
|
694
|
+
onClick: () => {
|
695
|
+
router.push(
|
696
|
+
`/${pathName.split("/")[1]}/${item.link}`
|
697
|
+
);
|
698
|
+
spotlight.close();
|
699
|
+
},
|
700
|
+
children: /* @__PURE__ */ jsxs7(Group3, { wrap: "nowrap", w: "100%", children: [
|
701
|
+
/* @__PURE__ */ jsxs7("div", { style: { flex: 1 }, children: [
|
702
|
+
/* @__PURE__ */ jsx16(Text4, { children: item.label }),
|
703
|
+
/* @__PURE__ */ jsxs7(Group3, { gap: 5, children: [
|
704
|
+
item.note && /* @__PURE__ */ jsx16(Text4, { opacity: 0.6, size: "xs", children: item.note }),
|
705
|
+
/* @__PURE__ */ jsxs7(Text4, { opacity: 0.6, size: "xs", children: [
|
706
|
+
"(",
|
707
|
+
item.link,
|
708
|
+
")"
|
709
|
+
] })
|
710
|
+
] })
|
711
|
+
] }),
|
712
|
+
item.status && item.status != "Default" && /* @__PURE__ */ jsx16(Badge, { variant: "default", children: item.status })
|
713
|
+
] })
|
714
|
+
},
|
715
|
+
idx
|
716
|
+
)) : /* @__PURE__ */ jsx16(Spotlight.Empty, { children: "Kh\xF4ng t\xECm th\u1EA5y trang..." }) })
|
717
|
+
]
|
718
|
+
}
|
719
|
+
)
|
720
|
+
] });
|
762
721
|
}
|
763
722
|
|
764
723
|
// src/components/Buttons/Anchor/MyAnchorViewPDF.tsx
|
765
|
-
import { ActionIcon as ActionIcon8, Anchor, Group as
|
724
|
+
import { ActionIcon as ActionIcon8, Anchor, Group as Group4, Modal as Modal4, Paper as Paper2, Text as Text5 } from "@mantine/core";
|
766
725
|
import { useDisclosure as useDisclosure5 } from "@mantine/hooks";
|
767
726
|
import { IconMaximize as IconMaximize2, IconMinimize as IconMinimize2 } from "@tabler/icons-react";
|
768
727
|
import { useState as useState6 } from "react";
|
769
|
-
import { Fragment as
|
728
|
+
import { Fragment as Fragment5, jsx as jsx17, jsxs as jsxs8 } from "react/jsx-runtime";
|
770
729
|
function MyAnchorViewPDF({ label, pdfLink }) {
|
771
730
|
const disc = useDisclosure5(false);
|
772
731
|
const fullScreen = useState6(false);
|
773
732
|
const hSize = useState6("80vh");
|
774
|
-
return /* @__PURE__ */ jsxs8(
|
733
|
+
return /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
775
734
|
/* @__PURE__ */ jsx17(Anchor, { onClick: disc[1].open, children: label }),
|
776
735
|
/* @__PURE__ */ jsx17(
|
777
736
|
Modal4,
|
@@ -780,8 +739,8 @@ function MyAnchorViewPDF({ label, pdfLink }) {
|
|
780
739
|
opened: disc[0],
|
781
740
|
onClose: disc[1].close,
|
782
741
|
size: "80%",
|
783
|
-
title: /* @__PURE__ */ jsxs8(
|
784
|
-
/* @__PURE__ */ jsx17(
|
742
|
+
title: /* @__PURE__ */ jsxs8(Group4, { children: [
|
743
|
+
/* @__PURE__ */ jsx17(Text5, { children: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp" }),
|
785
744
|
fullScreen[0] ? /* @__PURE__ */ jsx17(
|
786
745
|
ActionIcon8,
|
787
746
|
{
|
@@ -818,7 +777,7 @@ import * as XLSX from "xlsx";
|
|
818
777
|
// src/components/Buttons/ButtonModal/MyButtonModal.tsx
|
819
778
|
import { Button as Button3, Modal as Modal5 } from "@mantine/core";
|
820
779
|
import { IconEdit as IconEdit4, IconPlus as IconPlus4, IconTrash as IconTrash4 } from "@tabler/icons-react";
|
821
|
-
import { Fragment as
|
780
|
+
import { Fragment as Fragment6, jsx as jsx18, jsxs as jsxs9 } from "react/jsx-runtime";
|
822
781
|
function MyButtonModal(_a) {
|
823
782
|
var _b = _a, {
|
824
783
|
fullScreen = false,
|
@@ -841,7 +800,7 @@ function MyButtonModal(_a) {
|
|
841
800
|
]);
|
842
801
|
const objectNameLower = objectName == null ? void 0 : objectName.toLowerCase();
|
843
802
|
if (crudType == "default") {
|
844
|
-
return /* @__PURE__ */ jsxs9(
|
803
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
845
804
|
/* @__PURE__ */ jsx18(Button3, __spreadProps(__spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "indigo" }, rest), { children: label })),
|
846
805
|
/* @__PURE__ */ jsx18(
|
847
806
|
Modal5,
|
@@ -857,7 +816,7 @@ function MyButtonModal(_a) {
|
|
857
816
|
] });
|
858
817
|
}
|
859
818
|
if (crudType == "create") {
|
860
|
-
return /* @__PURE__ */ jsxs9(
|
819
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
861
820
|
/* @__PURE__ */ jsx18(Button3, __spreadProps(__spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, leftSection: /* @__PURE__ */ jsx18(IconPlus4, {}) }, rest), { children: label ? label : `Th\xEAm` })),
|
862
821
|
/* @__PURE__ */ jsx18(
|
863
822
|
Modal5,
|
@@ -873,7 +832,7 @@ function MyButtonModal(_a) {
|
|
873
832
|
] });
|
874
833
|
}
|
875
834
|
if (crudType == "createMultiple") {
|
876
|
-
return /* @__PURE__ */ jsxs9(
|
835
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
877
836
|
/* @__PURE__ */ jsx18(Button3, __spreadProps(__spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "green", leftSection: /* @__PURE__ */ jsx18(IconPlus4, {}) }, rest), { children: label ? label : `Import ${objectNameLower}` })),
|
878
837
|
/* @__PURE__ */ jsx18(
|
879
838
|
Modal5,
|
@@ -889,7 +848,7 @@ function MyButtonModal(_a) {
|
|
889
848
|
] });
|
890
849
|
}
|
891
850
|
if (crudType == "update") {
|
892
|
-
return /* @__PURE__ */ jsxs9(
|
851
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
893
852
|
/* @__PURE__ */ jsx18(Button3, __spreadProps(__spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "yellow", leftSection: /* @__PURE__ */ jsx18(IconEdit4, {}) }, rest), { children: label ? label : `Ch\u1EC9nh s\u1EEDa ${objectNameLower}` })),
|
894
853
|
/* @__PURE__ */ jsx18(
|
895
854
|
Modal5,
|
@@ -905,7 +864,7 @@ function MyButtonModal(_a) {
|
|
905
864
|
] });
|
906
865
|
}
|
907
866
|
if (crudType == "delete") {
|
908
|
-
return /* @__PURE__ */ jsxs9(
|
867
|
+
return /* @__PURE__ */ jsxs9(Fragment6, { children: [
|
909
868
|
/* @__PURE__ */ jsx18(Button3, __spreadProps(__spreadValues({ onClick: disclosure == null ? void 0 : disclosure[1].open, color: "red", leftSection: /* @__PURE__ */ jsx18(IconTrash4, {}) }, rest), { children: label ? label : `X\xF3a ${objectNameLower}` })),
|
910
869
|
/* @__PURE__ */ jsx18(
|
911
870
|
Modal5,
|
@@ -1103,21 +1062,21 @@ function MySelect(_a) {
|
|
1103
1062
|
}
|
1104
1063
|
|
1105
1064
|
// src/components/Layouts/FlexEnd/MyFlexEnd.tsx
|
1106
|
-
import { Group as
|
1065
|
+
import { Group as Group5 } from "@mantine/core";
|
1107
1066
|
import { jsx as jsx23 } from "react/jsx-runtime";
|
1108
1067
|
function MyFlexEnd(_a) {
|
1109
1068
|
var _b = _a, { children } = _b, rest = __objRest(_b, ["children"]);
|
1110
|
-
return /* @__PURE__ */ jsx23(
|
1069
|
+
return /* @__PURE__ */ jsx23(Group5, __spreadProps(__spreadValues({ justify: "end", mt: "md" }, rest), { children }));
|
1111
1070
|
}
|
1112
1071
|
|
1113
1072
|
// src/components/Buttons/ButtonImport/SelectFieldModal.tsx
|
1114
|
-
import { Button as Button5, Divider, Fieldset, Group as
|
1073
|
+
import { Button as Button5, Divider, Fieldset, Group as Group6, Modal as Modal6, SimpleGrid, Space as Space2, Table } from "@mantine/core";
|
1115
1074
|
import { IconArrowBackUp, IconArrowBigLeft, IconArrowBigRight, IconSquareRoundedX } from "@tabler/icons-react";
|
1116
1075
|
|
1117
1076
|
// src/components/Buttons/ButtonImport/useS_ButtonImport.ts
|
1118
1077
|
import { useEffect as useEffect4, useMemo as useMemo2 } from "react";
|
1119
1078
|
import * as XLSX3 from "xlsx";
|
1120
|
-
var
|
1079
|
+
var useStore = createGenericStore({
|
1121
1080
|
initialState: {
|
1122
1081
|
data: [],
|
1123
1082
|
title: [],
|
@@ -1126,7 +1085,7 @@ var useStore2 = createGenericStore({
|
|
1126
1085
|
}
|
1127
1086
|
});
|
1128
1087
|
function useS_ButtonImport() {
|
1129
|
-
const store =
|
1088
|
+
const store = useStore();
|
1130
1089
|
function autoMap() {
|
1131
1090
|
if (!store.state.data || !store.state.data.length || !store.state.fieldConfig) return;
|
1132
1091
|
const sampleRow = store.state.data[0];
|
@@ -1290,7 +1249,7 @@ function SelectFieldModal({ stack, onImport }) {
|
|
1290
1249
|
)) })
|
1291
1250
|
] }),
|
1292
1251
|
/* @__PURE__ */ jsx24(Space2, {}),
|
1293
|
-
/* @__PURE__ */ jsx24(
|
1252
|
+
/* @__PURE__ */ jsx24(Group6, { children: /* @__PURE__ */ jsx24(
|
1294
1253
|
Button5,
|
1295
1254
|
{
|
1296
1255
|
onClick: () => {
|
@@ -1368,7 +1327,7 @@ function SelectFieldModal({ stack, onImport }) {
|
|
1368
1327
|
}
|
1369
1328
|
|
1370
1329
|
// src/components/DataDisplay/DataTable/MyDataTable.tsx
|
1371
|
-
import { Button as Button6, Group as
|
1330
|
+
import { Button as Button6, Group as Group7, Portal } from "@mantine/core";
|
1372
1331
|
import { IconDownload as IconDownload3 } from "@tabler/icons-react";
|
1373
1332
|
import { download, generateCsv, mkConfig } from "export-to-csv";
|
1374
1333
|
import {
|
@@ -1377,7 +1336,7 @@ import {
|
|
1377
1336
|
} from "mantine-react-table";
|
1378
1337
|
import { MRT_Localization_VI } from "mantine-react-table/locales/vi/index.cjs";
|
1379
1338
|
import { useEffect as useEffect5 } from "react";
|
1380
|
-
import { Fragment as
|
1339
|
+
import { Fragment as Fragment7, jsx as jsx25, jsxs as jsxs13 } from "react/jsx-runtime";
|
1381
1340
|
function formatData(data, formats) {
|
1382
1341
|
return data.map((row) => {
|
1383
1342
|
const transformedRow = {};
|
@@ -1418,9 +1377,9 @@ function MyDataTable(_a) {
|
|
1418
1377
|
columns,
|
1419
1378
|
data,
|
1420
1379
|
renderTopToolbarCustomActions: ({ table: table2 }) => {
|
1421
|
-
return /* @__PURE__ */ jsxs13(
|
1380
|
+
return /* @__PURE__ */ jsxs13(Group7, { children: [
|
1422
1381
|
renderTopToolbarCustomActions && renderTopToolbarCustomActions({ table: table2 }),
|
1423
|
-
exportAble && /* @__PURE__ */ jsx25(
|
1382
|
+
exportAble && /* @__PURE__ */ jsx25(Fragment7, { children: /* @__PURE__ */ jsx25(
|
1424
1383
|
Button6,
|
1425
1384
|
{
|
1426
1385
|
color: "green.8",
|
@@ -1582,14 +1541,14 @@ function SelectFileModal({ onExportStructure, stack }) {
|
|
1582
1541
|
}
|
1583
1542
|
|
1584
1543
|
// src/components/Buttons/ButtonImport/MyButtonImport.tsx
|
1585
|
-
import { Fragment as
|
1544
|
+
import { Fragment as Fragment8, jsx as jsx27, jsxs as jsxs15 } from "react/jsx-runtime";
|
1586
1545
|
function MyButtonImport({
|
1587
1546
|
onExportStructure,
|
1588
1547
|
onImport
|
1589
1548
|
}) {
|
1590
1549
|
const stack = useModalsStack3(["select-file-page", "select-field-page", "implement-page"]);
|
1591
1550
|
const store = useS_ButtonImport();
|
1592
|
-
return /* @__PURE__ */ jsxs15(
|
1551
|
+
return /* @__PURE__ */ jsxs15(Fragment8, { children: [
|
1593
1552
|
/* @__PURE__ */ jsx27(Button8, { color: "teal.8", onClick: () => stack.open("select-file-page"), leftSection: /* @__PURE__ */ jsx27(IconFileImport2, {}), title: "Import", children: "Import" }),
|
1594
1553
|
/* @__PURE__ */ jsxs15(Modal8.Stack, { children: [
|
1595
1554
|
/* @__PURE__ */ jsx27(SelectFileModal, { stack, onExportStructure }),
|
@@ -1601,7 +1560,7 @@ function MyButtonImport({
|
|
1601
1560
|
// src/components/Buttons/ButtonModal/AQSelectTableByOpenModal.tsx
|
1602
1561
|
import { Button as Button9, Fieldset as Fieldset3, Modal as Modal9 } from "@mantine/core";
|
1603
1562
|
import { useDisclosure as useDisclosure8 } from "@mantine/hooks";
|
1604
|
-
import { Fragment as
|
1563
|
+
import { Fragment as Fragment9, jsx as jsx28, jsxs as jsxs16 } from "react/jsx-runtime";
|
1605
1564
|
function AQSelectTableByOpenModal(_a) {
|
1606
1565
|
var _b = _a, {
|
1607
1566
|
setSelectedData,
|
@@ -1629,7 +1588,7 @@ function AQSelectTableByOpenModal(_a) {
|
|
1629
1588
|
"closeAfterSelect"
|
1630
1589
|
]);
|
1631
1590
|
const disclosure = useDisclosure8(false);
|
1632
|
-
return /* @__PURE__ */ jsxs16(
|
1591
|
+
return /* @__PURE__ */ jsxs16(Fragment9, { children: [
|
1633
1592
|
/* @__PURE__ */ jsx28(
|
1634
1593
|
Button9,
|
1635
1594
|
__spreadProps(__spreadValues({
|
@@ -1670,7 +1629,7 @@ import { useRef as useRef2 } from "react";
|
|
1670
1629
|
import { Button as Button10 } from "@mantine/core";
|
1671
1630
|
import { IconPrinter as IconPrinter2 } from "@tabler/icons-react";
|
1672
1631
|
import { useReactToPrint } from "react-to-print";
|
1673
|
-
import { Fragment as
|
1632
|
+
import { Fragment as Fragment10, jsx as jsx29, jsxs as jsxs17 } from "react/jsx-runtime";
|
1674
1633
|
function MyButtonPrintPDF(_a) {
|
1675
1634
|
var _b = _a, { contentToPrint, children } = _b, rest = __objRest(_b, ["contentToPrint", "children"]);
|
1676
1635
|
const printRef = useRef2(null);
|
@@ -1684,7 +1643,7 @@ function MyButtonPrintPDF(_a) {
|
|
1684
1643
|
if (!contentToPrint) return;
|
1685
1644
|
handlePrint();
|
1686
1645
|
}
|
1687
|
-
return /* @__PURE__ */ jsxs17(
|
1646
|
+
return /* @__PURE__ */ jsxs17(Fragment10, { children: [
|
1688
1647
|
/* @__PURE__ */ jsx29("div", { style: { display: "none" }, children: /* @__PURE__ */ jsx29("div", { ref: printRef, children: contentToPrint }) }),
|
1689
1648
|
/* @__PURE__ */ jsx29(Button10, __spreadProps(__spreadValues({ color: "orange", onClick: handleClick, leftSection: /* @__PURE__ */ jsx29(IconPrinter2, {}) }, rest), { children }))
|
1690
1649
|
] });
|
@@ -1834,7 +1793,7 @@ function MyButtonPrintTablePDF(_a) {
|
|
1834
1793
|
}
|
1835
1794
|
|
1836
1795
|
// src/components/Buttons/ButtonRouterBack/MyButtonRouterBack.tsx
|
1837
|
-
import {
|
1796
|
+
import { ActionIcon as ActionIcon9 } from "@mantine/core";
|
1838
1797
|
import { IconArrowBack } from "@tabler/icons-react";
|
1839
1798
|
import { useRouter as useRouter2 } from "next/navigation";
|
1840
1799
|
import { jsx as jsx32 } from "react/jsx-runtime";
|
@@ -1842,10 +1801,10 @@ function MyButtonRouterBack(_a) {
|
|
1842
1801
|
var _b = _a, { url, label } = _b, rest = __objRest(_b, ["url", "label"]);
|
1843
1802
|
const router = useRouter2();
|
1844
1803
|
return /* @__PURE__ */ jsx32(
|
1845
|
-
|
1804
|
+
ActionIcon9,
|
1846
1805
|
__spreadProps(__spreadValues({
|
1806
|
+
size: "xl",
|
1847
1807
|
variant: "light",
|
1848
|
-
leftSection: /* @__PURE__ */ jsx32(IconArrowBack, { stroke: 2 }),
|
1849
1808
|
onClick: () => {
|
1850
1809
|
if (url) {
|
1851
1810
|
router.replace(url);
|
@@ -1854,27 +1813,27 @@ function MyButtonRouterBack(_a) {
|
|
1854
1813
|
router.back();
|
1855
1814
|
}
|
1856
1815
|
}, rest), {
|
1857
|
-
children:
|
1816
|
+
children: /* @__PURE__ */ jsx32(IconArrowBack, { stroke: 2 })
|
1858
1817
|
})
|
1859
1818
|
);
|
1860
1819
|
}
|
1861
1820
|
|
1862
1821
|
// src/components/Buttons/ButtonViewPDF/MyButtonViewPDF.tsx
|
1863
1822
|
import {
|
1864
|
-
ActionIcon as
|
1865
|
-
Button as
|
1866
|
-
Group as
|
1823
|
+
ActionIcon as ActionIcon10,
|
1824
|
+
Button as Button11,
|
1825
|
+
Group as Group8,
|
1867
1826
|
LoadingOverlay,
|
1868
1827
|
Modal as Modal10,
|
1869
1828
|
Paper as Paper3,
|
1870
|
-
Text as
|
1829
|
+
Text as Text6,
|
1871
1830
|
Tooltip as Tooltip4
|
1872
1831
|
} from "@mantine/core";
|
1873
1832
|
import { useDisclosure as useDisclosure9 } from "@mantine/hooks";
|
1874
1833
|
import { IconLivePhoto as IconLivePhoto2, IconMaximize as IconMaximize3, IconMinimize as IconMinimize3 } from "@tabler/icons-react";
|
1875
1834
|
import { useQuery } from "@tanstack/react-query";
|
1876
1835
|
import { useState as useState7 } from "react";
|
1877
|
-
import { Fragment as
|
1836
|
+
import { Fragment as Fragment11, jsx as jsx33, jsxs as jsxs19 } from "react/jsx-runtime";
|
1878
1837
|
function MyButtonViewPDF({
|
1879
1838
|
id,
|
1880
1839
|
modalSize = "80%",
|
@@ -1899,9 +1858,9 @@ function MyButtonViewPDF({
|
|
1899
1858
|
},
|
1900
1859
|
enabled: disc[0] == true
|
1901
1860
|
});
|
1902
|
-
return /* @__PURE__ */ jsxs19(
|
1861
|
+
return /* @__PURE__ */ jsxs19(Fragment11, { children: [
|
1903
1862
|
/* @__PURE__ */ jsx33(Tooltip4, { label: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp", children: isActionIcon ? /* @__PURE__ */ jsx33(
|
1904
|
-
|
1863
|
+
ActionIcon10,
|
1905
1864
|
{
|
1906
1865
|
onClick: () => {
|
1907
1866
|
disc[1].open();
|
@@ -1909,7 +1868,7 @@ function MyButtonViewPDF({
|
|
1909
1868
|
children: /* @__PURE__ */ jsx33(IconLivePhoto2, {})
|
1910
1869
|
}
|
1911
1870
|
) : /* @__PURE__ */ jsx33(
|
1912
|
-
|
1871
|
+
Button11,
|
1913
1872
|
{
|
1914
1873
|
color: "cyan",
|
1915
1874
|
onClick: () => {
|
@@ -1926,10 +1885,10 @@ function MyButtonViewPDF({
|
|
1926
1885
|
opened: disc[0],
|
1927
1886
|
onClose: disc[1].close,
|
1928
1887
|
size: modalSize,
|
1929
|
-
title: /* @__PURE__ */ jsxs19(
|
1930
|
-
/* @__PURE__ */ jsx33(
|
1888
|
+
title: /* @__PURE__ */ jsxs19(Group8, { children: [
|
1889
|
+
/* @__PURE__ */ jsx33(Text6, { children: "Xem t\xE0i li\u1EC7u tr\u1EF1c ti\u1EBFp" }),
|
1931
1890
|
fullScreen[0] ? /* @__PURE__ */ jsx33(
|
1932
|
-
|
1891
|
+
ActionIcon10,
|
1933
1892
|
{
|
1934
1893
|
onClick: () => {
|
1935
1894
|
fullScreen[1](false);
|
@@ -1938,7 +1897,7 @@ function MyButtonViewPDF({
|
|
1938
1897
|
children: /* @__PURE__ */ jsx33(IconMinimize3, {})
|
1939
1898
|
}
|
1940
1899
|
) : /* @__PURE__ */ jsx33(
|
1941
|
-
|
1900
|
+
ActionIcon10,
|
1942
1901
|
{
|
1943
1902
|
onClick: () => {
|
1944
1903
|
fullScreen[1](true);
|
@@ -6264,7 +6223,7 @@ var createViewMonthAgenda = () => createPreactView(config);
|
|
6264
6223
|
import { createEventModalPlugin } from "@schedule-x/event-modal";
|
6265
6224
|
import { createEventsServicePlugin } from "@schedule-x/events-service";
|
6266
6225
|
import { ScheduleXCalendar, useNextCalendarApp } from "@schedule-x/react";
|
6267
|
-
import { Paper as Paper4, Text as
|
6226
|
+
import { Paper as Paper4, Text as Text7 } from "@mantine/core";
|
6268
6227
|
import "@schedule-x/theme-default/dist/index.css";
|
6269
6228
|
import { useEffect as useEffect6 } from "react";
|
6270
6229
|
import { jsx as jsx34, jsxs as jsxs20 } from "react/jsx-runtime";
|
@@ -6345,12 +6304,12 @@ function MyCalendar() {
|
|
6345
6304
|
timeGridEvent: ({ calendarEvent }) => {
|
6346
6305
|
console.log(calendarEvent);
|
6347
6306
|
return /* @__PURE__ */ jsx34(Paper4, { h: "100%", bg: calendarEvent.laLichThi ? "violet.2" : "blue.2", p: 4, children: /* @__PURE__ */ jsxs20(MyFlexColumn, { gap: 1, children: [
|
6348
|
-
/* @__PURE__ */ jsxs20(
|
6307
|
+
/* @__PURE__ */ jsxs20(Text7, { size: "sm", fw: "bold", children: [
|
6349
6308
|
calendarEvent.laLichThi ? "(Thi) " : "(H\u1ECDc) ",
|
6350
6309
|
calendarEvent.title
|
6351
6310
|
] }),
|
6352
|
-
calendarEvent.laLichThi == false && /* @__PURE__ */ jsx34(
|
6353
|
-
/* @__PURE__ */ jsx34(
|
6311
|
+
calendarEvent.laLichThi == false && /* @__PURE__ */ jsx34(Text7, { size: "sm", children: calendarEvent.giangvien }),
|
6312
|
+
/* @__PURE__ */ jsx34(Text7, { size: "sm", children: calendarEvent.location })
|
6354
6313
|
] }) });
|
6355
6314
|
}
|
6356
6315
|
// eventModal: ({ calendarEvent }) => {
|
@@ -6364,10 +6323,10 @@ function MyCalendar() {
|
|
6364
6323
|
}
|
6365
6324
|
|
6366
6325
|
// src/components/CenterFull/MyCenterFull.tsx
|
6367
|
-
import { Center as Center2, Group as
|
6326
|
+
import { Center as Center2, Group as Group9 } from "@mantine/core";
|
6368
6327
|
import { jsx as jsx35 } from "react/jsx-runtime";
|
6369
6328
|
function MyCenterFull({ children }) {
|
6370
|
-
return /* @__PURE__ */ jsx35(Center2, { w: "100%", children: /* @__PURE__ */ jsx35(
|
6329
|
+
return /* @__PURE__ */ jsx35(Center2, { w: "100%", children: /* @__PURE__ */ jsx35(Group9, { children }) });
|
6371
6330
|
}
|
6372
6331
|
|
6373
6332
|
// src/components/Checkbox/MyCheckbox.tsx
|
@@ -6387,7 +6346,7 @@ function MyFlexRow(_a) {
|
|
6387
6346
|
}
|
6388
6347
|
|
6389
6348
|
// src/components/DataDisplay/Card/AQCard.tsx
|
6390
|
-
import { Badge, Card, Center as Center3, Image, Text as
|
6349
|
+
import { Badge as Badge2, Card, Center as Center3, Image, Text as Text8 } from "@mantine/core";
|
6391
6350
|
import Link from "next/link";
|
6392
6351
|
import { jsx as jsx38, jsxs as jsxs21 } from "react/jsx-runtime";
|
6393
6352
|
function AQCard({
|
@@ -6411,16 +6370,16 @@ function AQCard({
|
|
6411
6370
|
}
|
6412
6371
|
) }) }),
|
6413
6372
|
/* @__PURE__ */ jsxs21(MyFlexRow, { justify: "space-between", mt: "md", mb: "xs", children: [
|
6414
|
-
/* @__PURE__ */ jsx38(
|
6415
|
-
status && /* @__PURE__ */ jsx38(
|
6373
|
+
/* @__PURE__ */ jsx38(Text8, { fw: 500, children: title }),
|
6374
|
+
status && /* @__PURE__ */ jsx38(Badge2, { color: "violet.5", w: "150px", children: status })
|
6416
6375
|
] }),
|
6417
|
-
/* @__PURE__ */ jsx38(
|
6376
|
+
/* @__PURE__ */ jsx38(Text8, { size: "sm", c: "dimmed", lineClamp: 2, children: description }),
|
6418
6377
|
children
|
6419
6378
|
] });
|
6420
6379
|
}
|
6421
6380
|
|
6422
6381
|
// src/components/DataDisplay/CardInformation/MyCardInformation.tsx
|
6423
|
-
import { Box as Box2, Flex as Flex3, Group as
|
6382
|
+
import { Box as Box2, Flex as Flex3, Group as Group10, Paper as Paper5, Text as Text9 } from "@mantine/core";
|
6424
6383
|
import { IconArrowDownRight, IconArrowUpRight } from "@tabler/icons-react";
|
6425
6384
|
import { jsx as jsx39, jsxs as jsxs22 } from "react/jsx-runtime";
|
6426
6385
|
function MyCardInformation({
|
@@ -6439,10 +6398,10 @@ function MyCardInformation({
|
|
6439
6398
|
p: "md",
|
6440
6399
|
radius: "md",
|
6441
6400
|
children: [
|
6442
|
-
/* @__PURE__ */ jsxs22(
|
6401
|
+
/* @__PURE__ */ jsxs22(Group10, { justify: "space-between", children: [
|
6443
6402
|
/* @__PURE__ */ jsxs22(Flex3, { direction: "column", children: [
|
6444
6403
|
/* @__PURE__ */ jsx39(
|
6445
|
-
|
6404
|
+
Text9,
|
6446
6405
|
{
|
6447
6406
|
tt: "uppercase",
|
6448
6407
|
size: "lg",
|
@@ -6450,10 +6409,10 @@ function MyCardInformation({
|
|
6450
6409
|
children: title
|
6451
6410
|
}
|
6452
6411
|
),
|
6453
|
-
unit == "" ? /* @__PURE__ */ jsxs22(
|
6412
|
+
unit == "" ? /* @__PURE__ */ jsxs22(Text9, { size: "xs", style: { visibility: "hidden" }, children: [
|
6454
6413
|
"\u0110\u01A1n v\u1ECB: ",
|
6455
6414
|
/* @__PURE__ */ jsx39("strong", { children: unit })
|
6456
|
-
] }) : /* @__PURE__ */ jsxs22(
|
6415
|
+
] }) : /* @__PURE__ */ jsxs22(Text9, { size: "xs", children: [
|
6457
6416
|
"\u0110\u01A1n v\u1ECB: ",
|
6458
6417
|
/* @__PURE__ */ jsx39("strong", { children: unit })
|
6459
6418
|
] })
|
@@ -6461,14 +6420,14 @@ function MyCardInformation({
|
|
6461
6420
|
/* @__PURE__ */ jsx39(Box2, { children: icon })
|
6462
6421
|
] }),
|
6463
6422
|
/* @__PURE__ */ jsxs22(
|
6464
|
-
|
6423
|
+
Group10,
|
6465
6424
|
{
|
6466
6425
|
mt: "5",
|
6467
6426
|
align: "flex-end",
|
6468
6427
|
gap: "xs",
|
6469
6428
|
children: [
|
6470
6429
|
/* @__PURE__ */ jsx39(
|
6471
|
-
|
6430
|
+
Text9,
|
6472
6431
|
{
|
6473
6432
|
fw: 700,
|
6474
6433
|
fz: "h1",
|
@@ -6476,7 +6435,7 @@ function MyCardInformation({
|
|
6476
6435
|
}
|
6477
6436
|
),
|
6478
6437
|
/* @__PURE__ */ jsxs22(
|
6479
|
-
|
6438
|
+
Text9,
|
6480
6439
|
{
|
6481
6440
|
mb: "2",
|
6482
6441
|
c: diff > 0 ? "teal" : "red",
|
@@ -6494,8 +6453,8 @@ function MyCardInformation({
|
|
6494
6453
|
]
|
6495
6454
|
}
|
6496
6455
|
),
|
6497
|
-
/* @__PURE__ */ jsxs22(
|
6498
|
-
/* @__PURE__ */ jsx39(
|
6456
|
+
/* @__PURE__ */ jsxs22(Group10, { justify: "space-between", children: [
|
6457
|
+
/* @__PURE__ */ jsx39(Text9, { tt: "uppercase", fz: "xs", c: "dimmed", children: description }),
|
6499
6458
|
extraControl
|
6500
6459
|
] })
|
6501
6460
|
]
|
@@ -6505,25 +6464,25 @@ function MyCardInformation({
|
|
6505
6464
|
}
|
6506
6465
|
|
6507
6466
|
// src/components/DataDisplay/IconText/MyIconText.tsx
|
6508
|
-
import { Group as
|
6467
|
+
import { Group as Group11, Text as Text10 } from "@mantine/core";
|
6509
6468
|
import { jsx as jsx40, jsxs as jsxs23 } from "react/jsx-runtime";
|
6510
6469
|
function MyIconText({ icon: Icon, text }) {
|
6511
|
-
return /* @__PURE__ */ jsxs23(
|
6470
|
+
return /* @__PURE__ */ jsxs23(Group11, { wrap: "nowrap", gap: 10, mt: 3, children: [
|
6512
6471
|
Icon && /* @__PURE__ */ jsx40(Icon, { stroke: 1.5, size: 16 }),
|
6513
|
-
/* @__PURE__ */ jsx40(
|
6472
|
+
/* @__PURE__ */ jsx40(Text10, { fz: "lg", c: "dimmed", children: text })
|
6514
6473
|
] });
|
6515
6474
|
}
|
6516
6475
|
|
6517
6476
|
// src/components/DataDisplay/KeyLabel/MyKeyLabel.tsx
|
6518
|
-
import { Group as
|
6477
|
+
import { Group as Group12, Text as Text11 } from "@mantine/core";
|
6519
6478
|
import { jsx as jsx41, jsxs as jsxs24 } from "react/jsx-runtime";
|
6520
6479
|
function MyKeyLabel({ keyLabel, label }) {
|
6521
|
-
return /* @__PURE__ */ jsxs24(
|
6522
|
-
/* @__PURE__ */ jsxs24(
|
6480
|
+
return /* @__PURE__ */ jsxs24(Group12, { gap: 5, children: [
|
6481
|
+
/* @__PURE__ */ jsxs24(Text11, { fw: "bold", children: [
|
6523
6482
|
keyLabel,
|
6524
6483
|
":"
|
6525
6484
|
] }),
|
6526
|
-
/* @__PURE__ */ jsx41(
|
6485
|
+
/* @__PURE__ */ jsx41(Text11, { children: label })
|
6527
6486
|
] });
|
6528
6487
|
}
|
6529
6488
|
|
@@ -6536,21 +6495,21 @@ function MyNumberFormatter(_a) {
|
|
6536
6495
|
}
|
6537
6496
|
|
6538
6497
|
// src/components/DataDisplay/StatCard/AQStatCard1.tsx
|
6539
|
-
import { Box as Box3, Button as
|
6498
|
+
import { Box as Box3, Button as Button13, Flex as Flex4, Group as Group13, Paper as Paper6, Text as Text12 } from "@mantine/core";
|
6540
6499
|
import { IconArrowDownRight as IconArrowDownRight2, IconArrowUpRight as IconArrowUpRight2 } from "@tabler/icons-react";
|
6541
|
-
import { Fragment as
|
6500
|
+
import { Fragment as Fragment12, jsx as jsx43, jsxs as jsxs25 } from "react/jsx-runtime";
|
6542
6501
|
function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
6543
|
-
return /* @__PURE__ */ jsx43(
|
6502
|
+
return /* @__PURE__ */ jsx43(Fragment12, { children: /* @__PURE__ */ jsxs25(
|
6544
6503
|
Paper6,
|
6545
6504
|
{
|
6546
6505
|
withBorder: true,
|
6547
6506
|
p: "md",
|
6548
6507
|
radius: "md",
|
6549
6508
|
children: [
|
6550
|
-
/* @__PURE__ */ jsxs25(
|
6509
|
+
/* @__PURE__ */ jsxs25(Group13, { justify: "space-between", children: [
|
6551
6510
|
/* @__PURE__ */ jsxs25(Flex4, { direction: "column", children: [
|
6552
6511
|
/* @__PURE__ */ jsx43(
|
6553
|
-
|
6512
|
+
Text12,
|
6554
6513
|
{
|
6555
6514
|
tt: "uppercase",
|
6556
6515
|
size: "lg",
|
@@ -6558,10 +6517,10 @@ function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
|
6558
6517
|
children: title
|
6559
6518
|
}
|
6560
6519
|
),
|
6561
|
-
unit == "" ? /* @__PURE__ */ jsxs25(
|
6520
|
+
unit == "" ? /* @__PURE__ */ jsxs25(Text12, { size: "xs", style: { visibility: "hidden" }, children: [
|
6562
6521
|
"\u0110\u01A1n v\u1ECB: ",
|
6563
6522
|
/* @__PURE__ */ jsx43("strong", { children: unit })
|
6564
|
-
] }) : /* @__PURE__ */ jsxs25(
|
6523
|
+
] }) : /* @__PURE__ */ jsxs25(Text12, { size: "xs", children: [
|
6565
6524
|
"\u0110\u01A1n v\u1ECB: ",
|
6566
6525
|
/* @__PURE__ */ jsx43("strong", { children: unit })
|
6567
6526
|
] })
|
@@ -6569,14 +6528,14 @@ function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
|
6569
6528
|
/* @__PURE__ */ jsx43(Box3, { children: icons })
|
6570
6529
|
] }),
|
6571
6530
|
/* @__PURE__ */ jsxs25(
|
6572
|
-
|
6531
|
+
Group13,
|
6573
6532
|
{
|
6574
6533
|
mt: "5",
|
6575
6534
|
align: "flex-end",
|
6576
6535
|
gap: "xs",
|
6577
6536
|
children: [
|
6578
6537
|
/* @__PURE__ */ jsx43(
|
6579
|
-
|
6538
|
+
Text12,
|
6580
6539
|
{
|
6581
6540
|
fw: 700,
|
6582
6541
|
fz: "h1",
|
@@ -6584,7 +6543,7 @@ function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
|
6584
6543
|
}
|
6585
6544
|
),
|
6586
6545
|
/* @__PURE__ */ jsxs25(
|
6587
|
-
|
6546
|
+
Text12,
|
6588
6547
|
{
|
6589
6548
|
mb: "2",
|
6590
6549
|
c: diff > 0 ? "teal" : "red",
|
@@ -6602,10 +6561,10 @@ function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
|
6602
6561
|
]
|
6603
6562
|
}
|
6604
6563
|
),
|
6605
|
-
/* @__PURE__ */ jsxs25(
|
6606
|
-
/* @__PURE__ */ jsx43(
|
6564
|
+
/* @__PURE__ */ jsxs25(Group13, { justify: "space-between", children: [
|
6565
|
+
/* @__PURE__ */ jsx43(Text12, { tt: "uppercase", fz: "xs", c: "dimmed", children: description }),
|
6607
6566
|
/* @__PURE__ */ jsx43(
|
6608
|
-
|
6567
|
+
Button13,
|
6609
6568
|
{
|
6610
6569
|
variant: "light",
|
6611
6570
|
size: "xs",
|
@@ -6621,6 +6580,54 @@ function AQStatCard1({ title, value, unit = "", description, icons, diff }) {
|
|
6621
6580
|
|
6622
6581
|
// src/components/FaviconSetter/FaviconSetter.tsx
|
6623
6582
|
import { useEffect as useEffect7 } from "react";
|
6583
|
+
|
6584
|
+
// src/components/Layouts/BasicAppShell/useS_BasicAppShell.ts
|
6585
|
+
var useStore2 = createGenericStore({
|
6586
|
+
initialState: {
|
6587
|
+
menuCode: "",
|
6588
|
+
moduleCode: "Module code",
|
6589
|
+
moduleName: "Module name",
|
6590
|
+
title: "",
|
6591
|
+
opened: true,
|
6592
|
+
groupMenuOpenId: []
|
6593
|
+
},
|
6594
|
+
storageKey: "useS_BasicAppShell"
|
6595
|
+
});
|
6596
|
+
function useS_BasicAppShell() {
|
6597
|
+
const store = useStore2();
|
6598
|
+
const GetAQModule_query = useQ_AQ_GetAQModule();
|
6599
|
+
function toggle() {
|
6600
|
+
store.setProperty("opened", !store.state.opened);
|
6601
|
+
}
|
6602
|
+
function toggleGroupMenuOpenId(id) {
|
6603
|
+
const currentIds = store.state.groupMenuOpenId;
|
6604
|
+
if (currentIds.includes(id)) {
|
6605
|
+
store.setProperty(
|
6606
|
+
"groupMenuOpenId",
|
6607
|
+
currentIds.filter((existingId) => existingId !== id)
|
6608
|
+
);
|
6609
|
+
} else {
|
6610
|
+
store.setProperty("groupMenuOpenId", [...currentIds, id]);
|
6611
|
+
}
|
6612
|
+
}
|
6613
|
+
function clearGroupMenuOpenId() {
|
6614
|
+
store.setProperty("groupMenuOpenId", []);
|
6615
|
+
}
|
6616
|
+
function setDefault() {
|
6617
|
+
var _a, _b;
|
6618
|
+
if (!GetAQModule_query.data) return;
|
6619
|
+
store.setProperty("faviconFileDetail", (_a = GetAQModule_query.data) == null ? void 0 : _a.faviconFileDetail);
|
6620
|
+
store.setProperty("logoFileDetail", (_b = GetAQModule_query.data) == null ? void 0 : _b.logoFileDetail);
|
6621
|
+
}
|
6622
|
+
return __spreadProps(__spreadValues({}, store), {
|
6623
|
+
toggle,
|
6624
|
+
toggleGroupMenuOpenId,
|
6625
|
+
clearGroupMenuOpenId,
|
6626
|
+
setDefault
|
6627
|
+
});
|
6628
|
+
}
|
6629
|
+
|
6630
|
+
// src/components/FaviconSetter/FaviconSetter.tsx
|
6624
6631
|
function FaviconSetter() {
|
6625
6632
|
var _a;
|
6626
6633
|
const store = useS_BasicAppShell();
|
@@ -6654,7 +6661,7 @@ function MyDateInput(_a) {
|
|
6654
6661
|
}
|
6655
6662
|
|
6656
6663
|
// src/components/Inputs/Fieldset/MyFieldset.tsx
|
6657
|
-
import { Box as Box4, Fieldset as Fieldset4, Text as
|
6664
|
+
import { Box as Box4, Fieldset as Fieldset4, Text as Text13 } from "@mantine/core";
|
6658
6665
|
import { jsx as jsx45 } from "react/jsx-runtime";
|
6659
6666
|
function MyFieldset(_a) {
|
6660
6667
|
var _b = _a, {
|
@@ -6674,7 +6681,7 @@ function MyFieldset(_a) {
|
|
6674
6681
|
px: "xs",
|
6675
6682
|
py: 2,
|
6676
6683
|
style: { borderRadius: 4 },
|
6677
|
-
children: /* @__PURE__ */ jsx45(
|
6684
|
+
children: /* @__PURE__ */ jsx45(Text13, { c: "white", fw: 500, children: title })
|
6678
6685
|
}
|
6679
6686
|
),
|
6680
6687
|
children
|
@@ -6886,7 +6893,7 @@ function MyTextEditor(_a) {
|
|
6886
6893
|
}
|
6887
6894
|
|
6888
6895
|
// src/modules-features/authenticate/F_authenticate_Logout.tsx
|
6889
|
-
import { Button as
|
6896
|
+
import { Button as Button14 } from "@mantine/core";
|
6890
6897
|
import { IconLogout } from "@tabler/icons-react";
|
6891
6898
|
import { useRouter as useRouter3 } from "next/navigation";
|
6892
6899
|
|
@@ -6907,7 +6914,7 @@ import { jsx as jsx50 } from "react/jsx-runtime";
|
|
6907
6914
|
function F_authenticate_Logout({ redirectURL = "/auth/login" }) {
|
6908
6915
|
const router = useRouter3();
|
6909
6916
|
const S_Authenticate = useS_authenticate();
|
6910
|
-
return /* @__PURE__ */ jsx50(
|
6917
|
+
return /* @__PURE__ */ jsx50(Button14, { onClick: () => {
|
6911
6918
|
S_Authenticate.setProperty("token", "");
|
6912
6919
|
router.replace(redirectURL);
|
6913
6920
|
}, leftSection: /* @__PURE__ */ jsx50(IconLogout, {}), fullWidth: true, justify: "start", variant: "subtle", children: "\u0110\u0103ng xu\u1EA5t" });
|
@@ -6915,39 +6922,48 @@ function F_authenticate_Logout({ redirectURL = "/auth/login" }) {
|
|
6915
6922
|
|
6916
6923
|
// src/components/Layouts/BasicAppShell/BasicAppShell.tsx
|
6917
6924
|
import {
|
6918
|
-
ActionIcon as
|
6925
|
+
ActionIcon as ActionIcon11,
|
6919
6926
|
AppShell,
|
6920
|
-
Badge as
|
6927
|
+
Badge as Badge3,
|
6921
6928
|
Divider as Divider2,
|
6922
|
-
Group as
|
6929
|
+
Group as Group14,
|
6923
6930
|
Image as Image3,
|
6924
6931
|
NavLink,
|
6925
6932
|
ScrollArea as ScrollArea3,
|
6926
|
-
Text as
|
6927
|
-
TextInput as TextInput2,
|
6933
|
+
Text as Text14,
|
6928
6934
|
Tooltip as Tooltip5
|
6929
6935
|
} from "@mantine/core";
|
6930
6936
|
import { useFavicon, useMediaQuery } from "@mantine/hooks";
|
6931
|
-
import { spotlight as spotlight2 } from "@mantine/spotlight";
|
6932
6937
|
import {
|
6933
6938
|
IconLayoutSidebarLeftCollapse,
|
6934
6939
|
IconLayoutSidebarLeftExpand,
|
6935
|
-
IconLibraryMinus
|
6936
|
-
IconSearch as IconSearch2
|
6940
|
+
IconLibraryMinus
|
6937
6941
|
} from "@tabler/icons-react";
|
6938
6942
|
import Link3 from "next/link";
|
6939
6943
|
import { usePathname as usePathname2 } from "next/navigation";
|
6940
|
-
import { useEffect as useEffect9, useState as useState9 } from "react";
|
6941
|
-
import { Fragment as
|
6944
|
+
import { useEffect as useEffect9, useMemo as useMemo3, useState as useState9 } from "react";
|
6945
|
+
import { Fragment as Fragment13, jsx as jsx51, jsxs as jsxs27 } from "react/jsx-runtime";
|
6946
|
+
function findBreadcrumbPath(items, currentPath, parents = []) {
|
6947
|
+
for (const item of items) {
|
6948
|
+
if (item.link === currentPath) {
|
6949
|
+
return [...parents, item.label];
|
6950
|
+
}
|
6951
|
+
if (item.links) {
|
6952
|
+
const found = findBreadcrumbPath(item.links, currentPath, [...parents, item.label]);
|
6953
|
+
if (found) return found;
|
6954
|
+
}
|
6955
|
+
}
|
6956
|
+
return null;
|
6957
|
+
}
|
6942
6958
|
function getRightSection(status) {
|
6943
6959
|
if (status === "Prototype")
|
6944
|
-
return /* @__PURE__ */ jsx51(
|
6960
|
+
return /* @__PURE__ */ jsx51(Badge3, { styles: { root: { cursor: "pointer" } }, radius: "xs", color: "pink", circle: true, children: "P" });
|
6945
6961
|
if (status === "New")
|
6946
|
-
return /* @__PURE__ */ jsx51(
|
6962
|
+
return /* @__PURE__ */ jsx51(Badge3, { styles: { root: { cursor: "pointer" } }, radius: "xs", circle: true, children: "N" });
|
6947
6963
|
if (status === "Menu")
|
6948
|
-
return /* @__PURE__ */ jsx51(
|
6964
|
+
return /* @__PURE__ */ jsx51(Badge3, { styles: { root: { cursor: "pointer" } }, radius: "xs", color: "gray", circle: true, children: "M" });
|
6949
6965
|
if (status === "Change")
|
6950
|
-
return /* @__PURE__ */ jsx51(
|
6966
|
+
return /* @__PURE__ */ jsx51(Badge3, { styles: { root: { cursor: "pointer" } }, radius: "xs", color: "green", circle: true, children: "C" });
|
6951
6967
|
return null;
|
6952
6968
|
}
|
6953
6969
|
function RenderNavLinks({
|
@@ -6955,7 +6971,7 @@ function RenderNavLinks({
|
|
6955
6971
|
}) {
|
6956
6972
|
const basicAppShellStore = useS_BasicAppShell();
|
6957
6973
|
const pathName = usePathname2();
|
6958
|
-
return /* @__PURE__ */ jsx51(
|
6974
|
+
return /* @__PURE__ */ jsx51(Fragment13, { children: items.map((item, index) => /* @__PURE__ */ jsx51(
|
6959
6975
|
NavLink,
|
6960
6976
|
{
|
6961
6977
|
active: item.link === pathName.split("/")[2],
|
@@ -6973,8 +6989,6 @@ function RenderNavLinks({
|
|
6973
6989
|
basicAppShellStore.toggleGroupMenuOpenId(item.label);
|
6974
6990
|
return;
|
6975
6991
|
}
|
6976
|
-
basicAppShellStore.setProperty("menuCode", item.link);
|
6977
|
-
basicAppShellStore.setProperty("title", item.label);
|
6978
6992
|
},
|
6979
6993
|
children: item.links && /* @__PURE__ */ jsx51(RenderNavLinks, { items: item.links })
|
6980
6994
|
},
|
@@ -7041,11 +7055,27 @@ function BasicAppShell_transformMenuToEnum(prefixProjectName, menu) {
|
|
7041
7055
|
}
|
7042
7056
|
function BasicAppShell({ children, menu, extraTopRight, title }) {
|
7043
7057
|
var _a, _b;
|
7058
|
+
const pathName = usePathname2();
|
7044
7059
|
const basicAppShellStore = useS_BasicAppShell();
|
7045
7060
|
const media = useMediaQuery("(min-width: 72em)");
|
7046
7061
|
const GetAQModule_query = useQ_AQ_GetAQModule();
|
7047
7062
|
const BasicAppShell_store = useS_BasicAppShell();
|
7048
7063
|
const [faviconUrl, setFaviconUrl] = useState9("");
|
7064
|
+
const allChildItems = useMemo3(() => {
|
7065
|
+
const result = [];
|
7066
|
+
const extractChildren = (items) => {
|
7067
|
+
items.forEach((item) => {
|
7068
|
+
if (item.link) {
|
7069
|
+
result.push(item);
|
7070
|
+
}
|
7071
|
+
if (item.links) {
|
7072
|
+
extractChildren(item.links);
|
7073
|
+
}
|
7074
|
+
});
|
7075
|
+
};
|
7076
|
+
extractChildren(menu);
|
7077
|
+
return result;
|
7078
|
+
}, [menu]);
|
7049
7079
|
useFavicon(faviconUrl);
|
7050
7080
|
useEffect9(() => {
|
7051
7081
|
var _a2;
|
@@ -7074,6 +7104,15 @@ function BasicAppShell({ children, menu, extraTopRight, title }) {
|
|
7074
7104
|
if (!data) return;
|
7075
7105
|
document.title = data.name || "";
|
7076
7106
|
}, [GetAQModule_query.data]);
|
7107
|
+
useEffect9(() => {
|
7108
|
+
const linkItem = allChildItems.find((item) => pathName.includes(item.link));
|
7109
|
+
const breadcrumb = findBreadcrumbPath(menu, linkItem == null ? void 0 : linkItem.link);
|
7110
|
+
basicAppShellStore.setProperty("breadcrumb", breadcrumb);
|
7111
|
+
basicAppShellStore.setProperty("title", linkItem == null ? void 0 : linkItem.label);
|
7112
|
+
basicAppShellStore.setProperty("menuCode", linkItem == null ? void 0 : linkItem.link);
|
7113
|
+
basicAppShellStore.setProperty("note", linkItem == null ? void 0 : linkItem.note);
|
7114
|
+
basicAppShellStore.setProperty("status", linkItem == null ? void 0 : linkItem.status);
|
7115
|
+
}, [pathName]);
|
7077
7116
|
return /* @__PURE__ */ jsxs27(
|
7078
7117
|
AppShell,
|
7079
7118
|
{
|
@@ -7088,86 +7127,72 @@ function BasicAppShell({ children, menu, extraTopRight, title }) {
|
|
7088
7127
|
},
|
7089
7128
|
padding: "md",
|
7090
7129
|
children: [
|
7091
|
-
/* @__PURE__ */
|
7092
|
-
/* @__PURE__ */
|
7093
|
-
media ? /* @__PURE__ */ jsxs27(Group13, { h: "100%", px: "md", justify: "space-between", align: "center", children: [
|
7094
|
-
/* @__PURE__ */ jsxs27(Group13, { h: "100%", children: [
|
7095
|
-
/* @__PURE__ */ jsx51(
|
7096
|
-
Tooltip5,
|
7097
|
-
{
|
7098
|
-
label: basicAppShellStore.state.opened ? "\u1EA8n thanh menu" : "Hi\u1EC7n thanh menu",
|
7099
|
-
children: /* @__PURE__ */ jsx51(
|
7100
|
-
ActionIcon10,
|
7101
|
-
{
|
7102
|
-
size: "lg",
|
7103
|
-
radius: "md",
|
7104
|
-
variant: "default",
|
7105
|
-
onClick: basicAppShellStore.toggle,
|
7106
|
-
children: basicAppShellStore.state.opened ? /* @__PURE__ */ jsx51(IconLayoutSidebarLeftExpand, {}) : /* @__PURE__ */ jsx51(IconLayoutSidebarLeftCollapse, {})
|
7107
|
-
}
|
7108
|
-
)
|
7109
|
-
}
|
7110
|
-
),
|
7111
|
-
/* @__PURE__ */ jsx51(Tooltip5, { label: "\u0110\xF3ng t\u1EA5t c\u1EA3 menu", children: /* @__PURE__ */ jsx51(
|
7112
|
-
ActionIcon10,
|
7113
|
-
{
|
7114
|
-
size: "lg",
|
7115
|
-
radius: "md",
|
7116
|
-
variant: "default",
|
7117
|
-
onClick: () => basicAppShellStore.clearGroupMenuOpenId(),
|
7118
|
-
children: /* @__PURE__ */ jsx51(IconLibraryMinus, {})
|
7119
|
-
}
|
7120
|
-
) })
|
7121
|
-
] }),
|
7130
|
+
/* @__PURE__ */ jsx51(AppShell.Header, { children: media ? /* @__PURE__ */ jsxs27(Group14, { h: "100%", px: "md", justify: "space-between", align: "center", children: [
|
7131
|
+
/* @__PURE__ */ jsxs27(Group14, { h: "100%", children: [
|
7122
7132
|
/* @__PURE__ */ jsx51(
|
7123
|
-
|
7133
|
+
Tooltip5,
|
7124
7134
|
{
|
7125
|
-
|
7126
|
-
|
7127
|
-
|
7128
|
-
|
7129
|
-
|
7130
|
-
|
7135
|
+
label: basicAppShellStore.state.opened ? "\u1EA8n thanh menu" : "Hi\u1EC7n thanh menu",
|
7136
|
+
children: /* @__PURE__ */ jsx51(
|
7137
|
+
ActionIcon11,
|
7138
|
+
{
|
7139
|
+
size: "lg",
|
7140
|
+
radius: "md",
|
7141
|
+
variant: "default",
|
7142
|
+
onClick: basicAppShellStore.toggle,
|
7143
|
+
children: basicAppShellStore.state.opened ? /* @__PURE__ */ jsx51(IconLayoutSidebarLeftExpand, {}) : /* @__PURE__ */ jsx51(IconLayoutSidebarLeftCollapse, {})
|
7144
|
+
}
|
7145
|
+
)
|
7131
7146
|
}
|
7132
7147
|
),
|
7133
|
-
/* @__PURE__ */
|
7134
|
-
|
7135
|
-
|
7136
|
-
|
7137
|
-
|
7138
|
-
|
7139
|
-
|
7140
|
-
|
7141
|
-
|
7142
|
-
|
7143
|
-
|
7144
|
-
radius: "md",
|
7145
|
-
variant: "default",
|
7146
|
-
onClick: basicAppShellStore.toggle,
|
7147
|
-
children: basicAppShellStore.state.opened ? /* @__PURE__ */ jsx51(IconLayoutSidebarLeftExpand, {}) : /* @__PURE__ */ jsx51(IconLayoutSidebarLeftCollapse, {})
|
7148
|
-
}
|
7149
|
-
),
|
7150
|
-
/* @__PURE__ */ jsx51(Text13, { c: "green", fw: "bold", size: "sm", children: title ? title : `${basicAppShellStore.state.moduleCode} - ${basicAppShellStore.state.moduleName}` }),
|
7151
|
-
/* @__PURE__ */ jsxs27(Group13, { children: [
|
7152
|
-
extraTopRight,
|
7153
|
-
/* @__PURE__ */ jsx51(MySwitchTheme, {})
|
7154
|
-
] })
|
7155
|
-
] })
|
7156
|
-
)
|
7157
|
-
] }),
|
7158
|
-
/* @__PURE__ */ jsxs27(AppShell.Navbar, { children: [
|
7148
|
+
/* @__PURE__ */ jsx51(Tooltip5, { label: "\u0110\xF3ng t\u1EA5t c\u1EA3 menu", children: /* @__PURE__ */ jsx51(
|
7149
|
+
ActionIcon11,
|
7150
|
+
{
|
7151
|
+
size: "lg",
|
7152
|
+
radius: "md",
|
7153
|
+
variant: "default",
|
7154
|
+
onClick: () => basicAppShellStore.clearGroupMenuOpenId(),
|
7155
|
+
children: /* @__PURE__ */ jsx51(IconLibraryMinus, {})
|
7156
|
+
}
|
7157
|
+
) })
|
7158
|
+
] }),
|
7159
7159
|
/* @__PURE__ */ jsx51(
|
7160
|
-
|
7160
|
+
Group14,
|
7161
7161
|
{
|
7162
|
-
|
7163
|
-
|
7164
|
-
|
7165
|
-
|
7166
|
-
|
7167
|
-
|
7168
|
-
children: "T\xECm ki\u1EBFm (Ctrl + K)"
|
7162
|
+
style: {
|
7163
|
+
position: "absolute",
|
7164
|
+
left: "50%",
|
7165
|
+
transform: "translateX(-50%)"
|
7166
|
+
},
|
7167
|
+
children: /* @__PURE__ */ jsx51(Text14, { c: "green", fw: "bold", size: "sm", children: title ? title : `${basicAppShellStore.state.moduleCode} - ${basicAppShellStore.state.moduleName}` })
|
7169
7168
|
}
|
7170
7169
|
),
|
7170
|
+
/* @__PURE__ */ jsxs27(Group14, { children: [
|
7171
|
+
extraTopRight,
|
7172
|
+
/* @__PURE__ */ jsx51(MySwitchTheme, {})
|
7173
|
+
] })
|
7174
|
+
] }) : (
|
7175
|
+
// For mobile screens - simplified layout
|
7176
|
+
/* @__PURE__ */ jsxs27(Group14, { h: "100%", px: "md", justify: "space-between", children: [
|
7177
|
+
/* @__PURE__ */ jsx51(
|
7178
|
+
ActionIcon11,
|
7179
|
+
{
|
7180
|
+
size: "lg",
|
7181
|
+
radius: "md",
|
7182
|
+
variant: "default",
|
7183
|
+
onClick: basicAppShellStore.toggle,
|
7184
|
+
children: basicAppShellStore.state.opened ? /* @__PURE__ */ jsx51(IconLayoutSidebarLeftExpand, {}) : /* @__PURE__ */ jsx51(IconLayoutSidebarLeftCollapse, {})
|
7185
|
+
}
|
7186
|
+
),
|
7187
|
+
/* @__PURE__ */ jsx51(Text14, { c: "green", fw: "bold", size: "sm", children: title ? title : `${basicAppShellStore.state.moduleCode} - ${basicAppShellStore.state.moduleName}` }),
|
7188
|
+
/* @__PURE__ */ jsxs27(Group14, { children: [
|
7189
|
+
extraTopRight,
|
7190
|
+
/* @__PURE__ */ jsx51(MySwitchTheme, {})
|
7191
|
+
] })
|
7192
|
+
] })
|
7193
|
+
) }),
|
7194
|
+
/* @__PURE__ */ jsxs27(AppShell.Navbar, { children: [
|
7195
|
+
/* @__PURE__ */ jsx51(MyAppSpotlight, { menu }),
|
7171
7196
|
/* @__PURE__ */ jsxs27(AppShell.Section, { grow: true, component: ScrollArea3, p: 5, children: [
|
7172
7197
|
/* @__PURE__ */ jsx51(RenderNavLinks, { items: menu }),
|
7173
7198
|
/* @__PURE__ */ jsx51(Divider2, {}),
|
@@ -7261,14 +7286,14 @@ var OBJECT_COlORS = {
|
|
7261
7286
|
import {
|
7262
7287
|
Box as Box5,
|
7263
7288
|
Burger,
|
7264
|
-
Button as
|
7289
|
+
Button as Button15,
|
7265
7290
|
Container as Container2,
|
7266
7291
|
Divider as Divider3,
|
7267
7292
|
Drawer,
|
7268
|
-
Group as
|
7293
|
+
Group as Group15,
|
7269
7294
|
Image as Image4,
|
7270
7295
|
ScrollArea as ScrollArea4,
|
7271
|
-
Text as
|
7296
|
+
Text as Text15,
|
7272
7297
|
TextInput as TextInput3,
|
7273
7298
|
ThemeIcon,
|
7274
7299
|
UnstyledButton,
|
@@ -7282,7 +7307,7 @@ import {
|
|
7282
7307
|
IconCoin,
|
7283
7308
|
IconFingerprint,
|
7284
7309
|
IconNotification,
|
7285
|
-
IconSearch as
|
7310
|
+
IconSearch as IconSearch2
|
7286
7311
|
} from "@tabler/icons-react";
|
7287
7312
|
import Link4 from "next/link";
|
7288
7313
|
|
@@ -7338,21 +7363,21 @@ function HeaderMegaMenu({ children, menus }) {
|
|
7338
7363
|
const [linksOpened, { toggle: toggleLinks }] = useDisclosure10(false);
|
7339
7364
|
const HeaderMegaMenuStore = useHeaderMegaMenuStore();
|
7340
7365
|
const theme = useMantineTheme();
|
7341
|
-
const links = mockdata.map((item) => /* @__PURE__ */ jsx53(UnstyledButton, { className: css_default.subLink, children: /* @__PURE__ */ jsxs28(
|
7366
|
+
const links = mockdata.map((item) => /* @__PURE__ */ jsx53(UnstyledButton, { className: css_default.subLink, children: /* @__PURE__ */ jsxs28(Group15, { wrap: "nowrap", align: "flex-start", children: [
|
7342
7367
|
/* @__PURE__ */ jsx53(ThemeIcon, { size: 34, variant: "default", radius: "md", children: /* @__PURE__ */ jsx53(item.icon, { size: 22, color: theme.colors.blue[6] }) }),
|
7343
7368
|
/* @__PURE__ */ jsxs28("div", { children: [
|
7344
|
-
/* @__PURE__ */ jsx53(
|
7345
|
-
/* @__PURE__ */ jsx53(
|
7369
|
+
/* @__PURE__ */ jsx53(Text15, { size: "sm", fw: 500, children: item.title }),
|
7370
|
+
/* @__PURE__ */ jsx53(Text15, { size: "xs", c: "dimmed", children: item.description })
|
7346
7371
|
] })
|
7347
7372
|
] }) }, item.title));
|
7348
7373
|
return /* @__PURE__ */ jsxs28(Box5, { children: [
|
7349
|
-
/* @__PURE__ */ jsx53("header", { className: css_default.header, children: /* @__PURE__ */ jsxs28(
|
7350
|
-
/* @__PURE__ */ jsxs28(
|
7374
|
+
/* @__PURE__ */ jsx53("header", { className: css_default.header, children: /* @__PURE__ */ jsxs28(Group15, { justify: "space-between", h: "100%", children: [
|
7375
|
+
/* @__PURE__ */ jsxs28(Group15, { children: [
|
7351
7376
|
/* @__PURE__ */ jsx53(Image4, { src: "/imgs/0/IMG0LogoAQTech.png", h: 30, alt: "", w: "auto" }),
|
7352
|
-
/* @__PURE__ */ jsx53(
|
7377
|
+
/* @__PURE__ */ jsx53(Group15, { h: "100%", gap: 5, visibleFrom: "sm", children: menus == null ? void 0 : menus.map((item, idx) => /* @__PURE__ */ jsx53(Button15, { component: Link4, href: item.href, variant: HeaderMegaMenuStore.state.name == item.label ? "light" : "subtle", onClick: () => HeaderMegaMenuStore.setState({ name: item.label }), children: item.label }, idx)) })
|
7353
7378
|
] }),
|
7354
|
-
/* @__PURE__ */ jsxs28(
|
7355
|
-
/* @__PURE__ */ jsx53(TextInput3, { placeholder: "T\xECm ki\u1EBFm", leftSection: /* @__PURE__ */ jsx53(
|
7379
|
+
/* @__PURE__ */ jsxs28(Group15, { children: [
|
7380
|
+
/* @__PURE__ */ jsx53(TextInput3, { placeholder: "T\xECm ki\u1EBFm", leftSection: /* @__PURE__ */ jsx53(IconSearch2, {}), radius: "xl", w: "250px" }),
|
7356
7381
|
/* @__PURE__ */ jsx53(MySwitchTheme, {})
|
7357
7382
|
] }),
|
7358
7383
|
/* @__PURE__ */ jsx53(Burger, { opened: drawerOpened, onClick: toggleDrawer, hiddenFrom: "sm" })
|
@@ -7370,7 +7395,7 @@ function HeaderMegaMenu({ children, menus }) {
|
|
7370
7395
|
zIndex: 1e6,
|
7371
7396
|
children: /* @__PURE__ */ jsxs28(ScrollArea4, { h: "calc(100vh - 80px", mx: "-md", children: [
|
7372
7397
|
/* @__PURE__ */ jsx53(Divider3, { my: "sm" }),
|
7373
|
-
/* @__PURE__ */ jsx53(MyFlexColumn, { h: "100%", gap: 0, children: menus == null ? void 0 : menus.map((item, idx) => /* @__PURE__ */ jsx53(
|
7398
|
+
/* @__PURE__ */ jsx53(MyFlexColumn, { h: "100%", gap: 0, children: menus == null ? void 0 : menus.map((item, idx) => /* @__PURE__ */ jsx53(Button15, { component: Link4, href: item.href, variant: HeaderMegaMenuStore.state.name == item.label ? "light" : "subtle", onClick: () => HeaderMegaMenuStore.setState({ name: item.label }), children: item.label }, idx)) }),
|
7374
7399
|
/* @__PURE__ */ jsx53(Divider3, { my: "sm" })
|
7375
7400
|
] })
|
7376
7401
|
}
|
@@ -7379,46 +7404,68 @@ function HeaderMegaMenu({ children, menus }) {
|
|
7379
7404
|
}
|
7380
7405
|
|
7381
7406
|
// src/components/Layouts/PageContent/MyPageContent.tsx
|
7382
|
-
import { Code, Container as Container3, Divider as Divider4, Group as
|
7407
|
+
import { Badge as Badge4, Breadcrumbs, Code, Container as Container3, Divider as Divider4, Group as Group16, Text as Text16, Title } from "@mantine/core";
|
7383
7408
|
import { jsx as jsx54, jsxs as jsxs29 } from "react/jsx-runtime";
|
7384
7409
|
var getStatusColor = (status) => {
|
7385
7410
|
switch (status) {
|
7386
7411
|
case "Prototype":
|
7387
|
-
return "
|
7388
|
-
case "Beta":
|
7389
|
-
return "orange";
|
7412
|
+
return "pink";
|
7390
7413
|
default:
|
7391
|
-
return "
|
7414
|
+
return "";
|
7392
7415
|
}
|
7393
7416
|
};
|
7394
|
-
|
7417
|
+
function PageTitle({ title, status, note }) {
|
7395
7418
|
const color = getStatusColor(status);
|
7396
|
-
return /* @__PURE__ */ jsx54(
|
7397
|
-
|
7419
|
+
return /* @__PURE__ */ jsx54(Group16, { children: /* @__PURE__ */ jsxs29(MyFlexColumn, { gap: 0, children: [
|
7420
|
+
/* @__PURE__ */ jsxs29(Group16, { align: "center", children: [
|
7421
|
+
/* @__PURE__ */ jsx54(Title, { order: 3, children: title }),
|
7422
|
+
status && /* @__PURE__ */ jsx54(
|
7423
|
+
Badge4,
|
7424
|
+
{
|
7425
|
+
variant: "gradient",
|
7426
|
+
gradient: { from: color, to: `${color}.5` },
|
7427
|
+
size: "lg",
|
7428
|
+
radius: "sm",
|
7429
|
+
children: status
|
7430
|
+
}
|
7431
|
+
)
|
7432
|
+
] }),
|
7433
|
+
/* @__PURE__ */ jsx54(Text16, { size: "lg", c: "dimmed", fs: "italic", children: note })
|
7434
|
+
] }) });
|
7435
|
+
}
|
7398
7436
|
function MyPageContent({
|
7399
7437
|
leftTopBar,
|
7400
7438
|
title,
|
7401
7439
|
canBack = false,
|
7402
7440
|
rightTopBar,
|
7403
|
-
status,
|
7404
7441
|
children
|
7405
7442
|
}) {
|
7443
|
+
var _a;
|
7406
7444
|
const basicAppShellStore = useS_BasicAppShell();
|
7407
7445
|
const finalTitle = title || basicAppShellStore.state.title;
|
7408
7446
|
return /* @__PURE__ */ jsxs29(Container3, { p: 0, fluid: true, children: [
|
7409
|
-
/* @__PURE__ */ jsxs29(
|
7410
|
-
/* @__PURE__ */ jsxs29(
|
7411
|
-
|
7412
|
-
/* @__PURE__ */ jsx54(
|
7447
|
+
/* @__PURE__ */ jsxs29(Group16, { justify: "space-between", children: [
|
7448
|
+
/* @__PURE__ */ jsxs29(Group16, { children: [
|
7449
|
+
/* @__PURE__ */ jsx54(MyButtonRouterBack, {}),
|
7450
|
+
/* @__PURE__ */ jsx54(
|
7451
|
+
PageTitle,
|
7452
|
+
{
|
7453
|
+
title: finalTitle,
|
7454
|
+
status: basicAppShellStore.state.status,
|
7455
|
+
note: basicAppShellStore.state.note
|
7456
|
+
}
|
7457
|
+
),
|
7413
7458
|
leftTopBar
|
7414
7459
|
] }),
|
7415
|
-
/* @__PURE__ */ jsxs29(
|
7460
|
+
/* @__PURE__ */ jsxs29(Group16, { p: "md", children: [
|
7416
7461
|
rightTopBar,
|
7417
|
-
/* @__PURE__ */ jsx54(
|
7462
|
+
/* @__PURE__ */ jsx54(Breadcrumbs, { separatorMargin: "7", children: (_a = basicAppShellStore.state.breadcrumb) == null ? void 0 : _a.map((item, idx) => /* @__PURE__ */ jsx54(Text16, { fw: "600", c: "blue", children: item }, idx)) })
|
7418
7463
|
] })
|
7419
7464
|
] }),
|
7420
7465
|
/* @__PURE__ */ jsx54(Divider4, { my: "xs" }),
|
7421
|
-
children
|
7466
|
+
children,
|
7467
|
+
/* @__PURE__ */ jsx54(Divider4, { my: "xs" }),
|
7468
|
+
/* @__PURE__ */ jsx54(MyFlexEnd, { children: /* @__PURE__ */ jsx54(Code, { color: "var(--mantine-color-blue-light)", children: basicAppShellStore.state.menuCode }) })
|
7422
7469
|
] });
|
7423
7470
|
}
|
7424
7471
|
|
@@ -7438,7 +7485,7 @@ function MyTab(_a) {
|
|
7438
7485
|
}
|
7439
7486
|
|
7440
7487
|
// src/components/RESTAPIComponents/DataTableSelect/MyDataTableSelect.tsx
|
7441
|
-
import { ActionIcon as
|
7488
|
+
import { ActionIcon as ActionIcon12, Button as Button16, Fieldset as Fieldset5, Group as Group17, Modal as Modal11 } from "@mantine/core";
|
7442
7489
|
import { useDisclosure as useDisclosure11 } from "@mantine/hooks";
|
7443
7490
|
import { IconX as IconX2 } from "@tabler/icons-react";
|
7444
7491
|
import { jsx as jsx56, jsxs as jsxs31 } from "react/jsx-runtime";
|
@@ -7451,15 +7498,15 @@ function MyDataTableSelect(_a) {
|
|
7451
7498
|
MyDataTable,
|
7452
7499
|
__spreadValues({
|
7453
7500
|
renderTopToolbarCustomActions: ({ table }) => {
|
7454
|
-
return /* @__PURE__ */ jsxs31(
|
7501
|
+
return /* @__PURE__ */ jsxs31(Group17, { children: [
|
7455
7502
|
renderTopToolbarCustomActions && renderTopToolbarCustomActions({ table }),
|
7456
|
-
/* @__PURE__ */ jsx56(
|
7503
|
+
/* @__PURE__ */ jsx56(Button16, { onClick: disc[1].open, children: selectButtonlabel || "Ch\u1ECDn t\u1EEB danh s\xE1ch" })
|
7457
7504
|
] });
|
7458
7505
|
},
|
7459
7506
|
columns,
|
7460
7507
|
data: listState[0],
|
7461
7508
|
renderRowActions: ({ row }) => {
|
7462
|
-
return /* @__PURE__ */ jsx56(MyCenterFull, { children: /* @__PURE__ */ jsx56(
|
7509
|
+
return /* @__PURE__ */ jsx56(MyCenterFull, { children: /* @__PURE__ */ jsx56(ActionIcon12, { color: "red", onClick: () => listState[1].remove(row.index), children: /* @__PURE__ */ jsx56(IconX2, {}) }) });
|
7463
7510
|
}
|
7464
7511
|
}, rest)
|
7465
7512
|
),
|
@@ -7467,7 +7514,7 @@ function MyDataTableSelect(_a) {
|
|
7467
7514
|
MyDataTable,
|
7468
7515
|
__spreadValues({
|
7469
7516
|
renderTopToolbarCustomActions: ({ table }) => {
|
7470
|
-
return /* @__PURE__ */ jsx56(
|
7517
|
+
return /* @__PURE__ */ jsx56(Button16, { onClick: () => {
|
7471
7518
|
table.getSelectedRowModel().rows.map((item) => listState[1].append(item.original));
|
7472
7519
|
disc[1].close();
|
7473
7520
|
}, children: "Ch\u1ECDn" });
|
@@ -7578,9 +7625,7 @@ export {
|
|
7578
7625
|
MyActionIconUpload,
|
7579
7626
|
MyActionIconViewPDF,
|
7580
7627
|
MySwitchTheme,
|
7581
|
-
useS_BasicAppShell,
|
7582
7628
|
MyAppSpotlight,
|
7583
|
-
SpotlightTrigger,
|
7584
7629
|
MyAnchorViewPDF,
|
7585
7630
|
MyButtonModal,
|
7586
7631
|
AQButtonCreateByImportFile,
|
@@ -7609,6 +7654,7 @@ export {
|
|
7609
7654
|
MyKeyLabel,
|
7610
7655
|
MyNumberFormatter,
|
7611
7656
|
AQStatCard1,
|
7657
|
+
useS_BasicAppShell,
|
7612
7658
|
FaviconSetter,
|
7613
7659
|
MyDateInput,
|
7614
7660
|
MyFieldset,
|