phx-uikit 1.0.46 → 1.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/dist/cjs/components/DateRangePicker/DatePicker.js +4 -1
  2. package/dist/cjs/components/DateRangePicker/DatePicker.js.map +1 -1
  3. package/dist/cjs/components/FormTuitionV3/FormTuitionV3.d.ts +11 -0
  4. package/dist/cjs/components/FormTuitionV3/FormTuitionV3.js +223 -0
  5. package/dist/cjs/components/FormTuitionV3/FormTuitionV3.js.map +1 -0
  6. package/dist/cjs/components/FormTuitionV3/index.d.ts +1 -0
  7. package/dist/cjs/components/FormTuitionV3/index.js +5 -0
  8. package/dist/cjs/components/FormTuitionV3/index.js.map +1 -0
  9. package/dist/cjs/components/Func/SchoolYearV3/getActiveAndNextSchoolYearV3.d.ts +3 -0
  10. package/dist/cjs/components/Func/SchoolYearV3/getActiveAndNextSchoolYearV3.js +41 -0
  11. package/dist/cjs/components/Func/SchoolYearV3/getActiveAndNextSchoolYearV3.js.map +1 -0
  12. package/dist/cjs/components/Func/SchoolYearV3/getSchoolYearHocVuV3.d.ts +2 -0
  13. package/dist/cjs/components/Func/SchoolYearV3/getSchoolYearHocVuV3.js +61 -0
  14. package/dist/cjs/components/Func/SchoolYearV3/getSchoolYearHocVuV3.js.map +1 -0
  15. package/dist/cjs/components/Func/SchoolYearV3/getSchoolYearV3.d.ts +2 -0
  16. package/dist/cjs/components/Func/SchoolYearV3/getSchoolYearV3.js +61 -0
  17. package/dist/cjs/components/Func/SchoolYearV3/getSchoolYearV3.js.map +1 -0
  18. package/dist/cjs/components/Func/clientMutationV3.d.ts +5 -1
  19. package/dist/cjs/components/Func/clientMutationV3.js +10 -10
  20. package/dist/cjs/components/Func/clientMutationV3.js.map +1 -1
  21. package/dist/cjs/components/Func/clientQueryV3.d.ts +5 -1
  22. package/dist/cjs/components/Func/clientQueryV3.js +10 -10
  23. package/dist/cjs/components/Func/clientQueryV3.js.map +1 -1
  24. package/dist/cjs/components/Func/logUserActivityV3.d.ts +6 -0
  25. package/dist/cjs/components/Func/logUserActivityV3.js +32 -0
  26. package/dist/cjs/components/Func/logUserActivityV3.js.map +1 -0
  27. package/dist/cjs/components/MainWrapV3/MainWrapV3.d.ts +12 -0
  28. package/dist/cjs/components/MainWrapV3/MainWrapV3.js +744 -0
  29. package/dist/cjs/components/MainWrapV3/MainWrapV3.js.map +1 -0
  30. package/dist/cjs/components/MainWrapV3/index.d.ts +1 -0
  31. package/dist/cjs/components/MainWrapV3/index.js +5 -0
  32. package/dist/cjs/components/MainWrapV3/index.js.map +1 -0
  33. package/dist/cjs/components/MainWrapV3/search/search-bar.d.ts +2 -0
  34. package/dist/cjs/components/MainWrapV3/search/search-bar.js +149 -0
  35. package/dist/cjs/components/MainWrapV3/search/search-bar.js.map +1 -0
  36. package/dist/cjs/components/PagePermissionV3/PagePermissionV3.d.ts +6 -0
  37. package/dist/cjs/components/PagePermissionV3/PagePermissionV3.js +71 -0
  38. package/dist/cjs/components/PagePermissionV3/PagePermissionV3.js.map +1 -0
  39. package/dist/cjs/components/PagePermissionV3/index.d.ts +1 -0
  40. package/dist/cjs/components/PagePermissionV3/index.js +5 -0
  41. package/dist/cjs/components/PagePermissionV3/index.js.map +1 -0
  42. package/dist/cjs/env.d.ts +0 -2
  43. package/dist/cjs/env.js +1 -3
  44. package/dist/cjs/env.js.map +1 -1
  45. package/dist/cjs/index.d.ts +8 -1
  46. package/dist/cjs/index.js +15 -1
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/query/index.d.ts +6 -0
  49. package/dist/cjs/query/index.js +8 -1
  50. package/dist/cjs/query/index.js.map +1 -1
  51. package/dist/cjs/query/school-year-v3/index.d.ts +3 -0
  52. package/dist/cjs/query/school-year-v3/index.js +7 -0
  53. package/dist/cjs/query/school-year-v3/index.js.map +1 -0
  54. package/dist/cjs/query/userActivity/mutation.d.ts +1 -0
  55. package/dist/cjs/query/userActivity/mutation.js +2 -1
  56. package/dist/cjs/query/userActivity/mutation.js.map +1 -1
  57. package/dist/esm/components/DateRangePicker/DatePicker.js +4 -1
  58. package/dist/esm/components/DateRangePicker/DatePicker.js.map +1 -1
  59. package/dist/esm/components/FormTuitionV3/FormTuitionV3.d.ts +11 -0
  60. package/dist/esm/components/FormTuitionV3/FormTuitionV3.js +219 -0
  61. package/dist/esm/components/FormTuitionV3/FormTuitionV3.js.map +1 -0
  62. package/dist/esm/components/FormTuitionV3/index.d.ts +1 -0
  63. package/dist/esm/components/FormTuitionV3/index.js +2 -0
  64. package/dist/esm/components/FormTuitionV3/index.js.map +1 -0
  65. package/dist/esm/components/Func/SchoolYearV3/getActiveAndNextSchoolYearV3.d.ts +3 -0
  66. package/dist/esm/components/Func/SchoolYearV3/getActiveAndNextSchoolYearV3.js +38 -0
  67. package/dist/esm/components/Func/SchoolYearV3/getActiveAndNextSchoolYearV3.js.map +1 -0
  68. package/dist/esm/components/Func/SchoolYearV3/getSchoolYearHocVuV3.d.ts +2 -0
  69. package/dist/esm/components/Func/SchoolYearV3/getSchoolYearHocVuV3.js +59 -0
  70. package/dist/esm/components/Func/SchoolYearV3/getSchoolYearHocVuV3.js.map +1 -0
  71. package/dist/esm/components/Func/SchoolYearV3/getSchoolYearV3.d.ts +2 -0
  72. package/dist/esm/components/Func/SchoolYearV3/getSchoolYearV3.js +59 -0
  73. package/dist/esm/components/Func/SchoolYearV3/getSchoolYearV3.js.map +1 -0
  74. package/dist/esm/components/Func/clientMutationV3.d.ts +5 -1
  75. package/dist/esm/components/Func/clientMutationV3.js +10 -10
  76. package/dist/esm/components/Func/clientMutationV3.js.map +1 -1
  77. package/dist/esm/components/Func/clientQueryV3.d.ts +5 -1
  78. package/dist/esm/components/Func/clientQueryV3.js +10 -10
  79. package/dist/esm/components/Func/clientQueryV3.js.map +1 -1
  80. package/dist/esm/components/Func/logUserActivityV3.d.ts +6 -0
  81. package/dist/esm/components/Func/logUserActivityV3.js +28 -0
  82. package/dist/esm/components/Func/logUserActivityV3.js.map +1 -0
  83. package/dist/esm/components/MainWrapV3/MainWrapV3.d.ts +12 -0
  84. package/dist/esm/components/MainWrapV3/MainWrapV3.js +740 -0
  85. package/dist/esm/components/MainWrapV3/MainWrapV3.js.map +1 -0
  86. package/dist/esm/components/MainWrapV3/index.d.ts +1 -0
  87. package/dist/esm/components/MainWrapV3/index.js +2 -0
  88. package/dist/esm/components/MainWrapV3/index.js.map +1 -0
  89. package/dist/esm/components/MainWrapV3/search/search-bar.d.ts +2 -0
  90. package/dist/esm/components/MainWrapV3/search/search-bar.js +146 -0
  91. package/dist/esm/components/MainWrapV3/search/search-bar.js.map +1 -0
  92. package/dist/esm/components/PagePermissionV3/PagePermissionV3.d.ts +6 -0
  93. package/dist/esm/components/PagePermissionV3/PagePermissionV3.js +67 -0
  94. package/dist/esm/components/PagePermissionV3/PagePermissionV3.js.map +1 -0
  95. package/dist/esm/components/PagePermissionV3/index.d.ts +1 -0
  96. package/dist/esm/components/PagePermissionV3/index.js +2 -0
  97. package/dist/esm/components/PagePermissionV3/index.js.map +1 -0
  98. package/dist/esm/env.d.ts +0 -2
  99. package/dist/esm/env.js +1 -3
  100. package/dist/esm/env.js.map +1 -1
  101. package/dist/esm/index.d.ts +8 -1
  102. package/dist/esm/index.js +8 -1
  103. package/dist/esm/index.js.map +1 -1
  104. package/dist/esm/query/index.d.ts +6 -0
  105. package/dist/esm/query/index.js +7 -0
  106. package/dist/esm/query/index.js.map +1 -1
  107. package/dist/esm/query/school-year-v3/index.d.ts +3 -0
  108. package/dist/esm/query/school-year-v3/index.js +4 -0
  109. package/dist/esm/query/school-year-v3/index.js.map +1 -0
  110. package/dist/esm/query/userActivity/mutation.d.ts +1 -0
  111. package/dist/esm/query/userActivity/mutation.js +1 -0
  112. package/dist/esm/query/userActivity/mutation.js.map +1 -1
  113. package/package.json +1 -1
@@ -0,0 +1,744 @@
1
+ "use strict";
2
+ exports.__esModule = true;
3
+ exports.PHXMainWrapV3 = void 0;
4
+ var tslib_1 = require("tslib");
5
+ var free_solid_svg_icons_1 = require("@fortawesome/free-solid-svg-icons");
6
+ var react_fontawesome_1 = require("@fortawesome/react-fontawesome");
7
+ var react_1 = require("@headlessui/react");
8
+ var outline_1 = require("@heroicons/react/24/outline");
9
+ var react_2 = tslib_1.__importStar(require("react"));
10
+ var Modal_1 = require("../Modal");
11
+ var Skeleton_1 = require("../Skeleton");
12
+ var read_env_config_1 = require("../../read-env-config");
13
+ var js_cookie_1 = tslib_1.__importDefault(require("js-cookie"));
14
+ var constants_1 = require("../../utils/constants");
15
+ var solid_1 = require("@heroicons/react/20/solid");
16
+ var fontawesome_svg_core_1 = require("@fortawesome/fontawesome-svg-core");
17
+ var search_bar_1 = tslib_1.__importDefault(require("./search/search-bar"));
18
+ var Banner_1 = require("../Banner");
19
+ var solid_2 = require("@heroicons/react/24/solid");
20
+ var getLoginInfo_1 = tslib_1.__importDefault(require("../Func/getLoginInfo"));
21
+ var clientQueryV3_1 = tslib_1.__importDefault(require("../Func/clientQueryV3"));
22
+ var sub_menu_style_1 = require("../MainWrap/style/sub-menu-style");
23
+ var nav_mobile_1 = tslib_1.__importDefault(require("../MainWrap/navigator/nav-mobile"));
24
+ var appearance_styled_1 = tslib_1.__importDefault(require("../MainWrap/appearance/appearance-styled"));
25
+ var query_1 = require("../../query");
26
+ fontawesome_svg_core_1.library.add(free_solid_svg_icons_1.fas);
27
+ function classNames() {
28
+ var classes = [];
29
+ for (var _i = 0; _i < arguments.length; _i++) {
30
+ classes[_i] = arguments[_i];
31
+ }
32
+ return classes.filter(Boolean).join(' ');
33
+ }
34
+ var PHXMainWrapV3 = function (_a) {
35
+ var _b, _c, _d, _e;
36
+ var children = _a.children, params = _a.params, pathName = _a.pathName, router = _a.router, _f = _a.hiddenLeftMenu, hiddenLeftMenu = _f === void 0 ? false : _f, _g = _a.logoHeight, logoHeight = _g === void 0 ? '28px' : _g, getDataCookies = _a.getDataCookies, _h = _a.multipleMenu, multipleMenu = _h === void 0 ? false : _h;
37
+ var pid = (params ? params : {}).pid;
38
+ var _j = (0, react_2.useState)(false), modal = _j[0], setModal = _j[1];
39
+ var _k = (0, react_2.useState)(true), openSubMenu = _k[0], setOpenSubMenu = _k[1];
40
+ var _l = (0, react_2.useState)(''), campaignName = _l[0], setCampaignName = _l[1];
41
+ var _m = (0, react_2.useState)(false), sidebarOpen = _m[0], setSidebarOpen = _m[1];
42
+ var _o = (0, react_2.useState)([]), subNavigation = _o[0], setSubNavigation = _o[1];
43
+ var _p = (0, react_2.useState)([]), navigation = _p[0], setNavigation = _p[1];
44
+ var _q = (0, react_2.useState)([]), menu = _q[0], setMenu = _q[1];
45
+ var _r = (0, react_2.useState)(true), loadingSchool = _r[0], setLoadingSchool = _r[1];
46
+ var _s = (0, react_2.useState)(true), loadingMenu = _s[0], setLoadingMenu = _s[1];
47
+ var _t = (0, react_2.useState)(false), modalSignOut = _t[0], setModalSignOut = _t[1];
48
+ var _u = (0, react_2.useState)([]), infoSchool = _u[0], setInfoSchool = _u[1];
49
+ var _v = (0, react_2.useState)(), dataSchool = _v[0], setDataSchool = _v[1];
50
+ var _w = (0, react_2.useState)([]), roleCode = _w[0], setRoleCode = _w[1];
51
+ var _x = (0, react_2.useState)([]), perCode = _x[0], setPerCode = _x[1];
52
+ var _y = (0, react_2.useState)(null), schoolId = _y[0], setSchoolId = _y[1];
53
+ var _z = (0, react_2.useState)(true), showBanner = _z[0], setShowBanner = _z[1];
54
+ var _0 = (0, react_2.useState)({}), configLayout = _0[0], setConfigLayout = _0[1];
55
+ var _1 = (0, react_2.useState)(true), isLoading = _1[0], setIsLoading = _1[1];
56
+ var locationPathname = typeof window !== 'undefined' ? window.location.pathname : '';
57
+ var pathArr = locationPathname.split('/');
58
+ var pathNameWithBasePath = "/".concat(pathArr[1]).concat(pathName);
59
+ function checkRole(role, arr) {
60
+ return arr === null || arr === void 0 ? void 0 : arr.some(function (item) { return (item === null || item === void 0 ? void 0 : item.toLowerCase()) === (role === null || role === void 0 ? void 0 : role.toLowerCase()); });
61
+ }
62
+ function enablePer(code, arr) {
63
+ return arr === null || arr === void 0 ? void 0 : arr.some(function (item) { return item === code; });
64
+ }
65
+ var _2 = (0, react_2.useState)({
66
+ path: '',
67
+ height: logoHeight
68
+ }), logo = _2[0], setLogo = _2[1];
69
+ var cookie = js_cookie_1["default"].get(constants_1.isLoggedCookie);
70
+ var authen = js_cookie_1["default"].get(constants_1.AUTH_TOKEN);
71
+ function compareObjects(settingQuery, settingCookies) {
72
+ var keysSettingQuery = Object.keys(settingQuery);
73
+ if (keysSettingQuery.length !== Object.keys(settingCookies).length) {
74
+ return false;
75
+ }
76
+ for (var _i = 0, keysSettingQuery_1 = keysSettingQuery; _i < keysSettingQuery_1.length; _i++) {
77
+ var key = keysSettingQuery_1[_i];
78
+ if (!Object.prototype.hasOwnProperty.call(settingCookies, key)) {
79
+ return false;
80
+ }
81
+ if (settingQuery[key] !== settingCookies[key]) {
82
+ return false;
83
+ }
84
+ }
85
+ return true;
86
+ }
87
+ var schoolInfo = (0, getLoginInfo_1["default"])();
88
+ var schoolInfoId = schoolInfo === null || schoolInfo === void 0 ? void 0 : schoolInfo.school_id;
89
+ var userId = schoolInfo === null || schoolInfo === void 0 ? void 0 : schoolInfo.id;
90
+ var getProfileData = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
91
+ var response, profileStaff, profileTeacher, error_1;
92
+ var _a, _b, _c, _d, _e, _f;
93
+ return tslib_1.__generator(this, function (_g) {
94
+ switch (_g.label) {
95
+ case 0:
96
+ _g.trys.push([0, 2, , 3]);
97
+ return [4 /*yield*/, (0, clientQueryV3_1["default"])({
98
+ query: query_1.queryGetProfileV3,
99
+ variables: {
100
+ user_id: userId,
101
+ school_id: schoolInfoId
102
+ }
103
+ })];
104
+ case 1:
105
+ response = _g.sent();
106
+ profileStaff = (_c = (_b = (_a = response.data) === null || _a === void 0 ? void 0 : _a.profile_staff) === null || _b === void 0 ? void 0 : _b[0]) === null || _c === void 0 ? void 0 : _c.is_quit_job;
107
+ profileTeacher = (_f = (_e = (_d = response.data) === null || _d === void 0 ? void 0 : _d.profile_teacher) === null || _e === void 0 ? void 0 : _e[0]) === null || _f === void 0 ? void 0 : _f.is_quit_job;
108
+ if (profileStaff || profileTeacher) {
109
+ console.log('Phiên đăng nhập đã hết hạn');
110
+ Object.keys(js_cookie_1["default"].get()).forEach(function (cookieName) {
111
+ js_cookie_1["default"].remove(cookieName);
112
+ });
113
+ }
114
+ return [3 /*break*/, 3];
115
+ case 2:
116
+ error_1 = _g.sent();
117
+ console.log(error_1);
118
+ return [3 /*break*/, 3];
119
+ case 3: return [2 /*return*/];
120
+ }
121
+ });
122
+ }); };
123
+ (0, react_2.useEffect)(function () {
124
+ getProfileData();
125
+ }, []);
126
+ (0, react_2.useEffect)(function () {
127
+ var _a;
128
+ if (!cookie || !authen) {
129
+ // Require login if production mode
130
+ requireLoginValidation();
131
+ }
132
+ else {
133
+ var data = JSON.parse(cookie);
134
+ var allRoleCodes = (_a = data === null || data === void 0 ? void 0 : data.user_roles) === null || _a === void 0 ? void 0 : _a.map(function (userRole) { var _a; return (_a = userRole === null || userRole === void 0 ? void 0 : userRole.role) === null || _a === void 0 ? void 0 : _a.role_code; });
135
+ var _b = data.school, group_id_1 = _b.school_name.group_id, school_name_id_1 = _b.school_name_id, school_id_1 = data.school_id, id_1 = data.id;
136
+ setRoleCode(allRoleCodes);
137
+ setSchoolId(data === null || data === void 0 ? void 0 : data.school_id);
138
+ var fetchData = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
139
+ var res, data_1, dataLength, settingFetchData, cleanedJsonString, jsonObjectSetting, getSeting, dataCompare, error_2;
140
+ var _a, _b, _c, _d;
141
+ return tslib_1.__generator(this, function (_e) {
142
+ switch (_e.label) {
143
+ case 0:
144
+ setIsLoading(true);
145
+ _e.label = 1;
146
+ case 1:
147
+ _e.trys.push([1, 3, , 4]);
148
+ return [4 /*yield*/, (0, clientQueryV3_1["default"])({
149
+ query: query_1.GET_SCHOOL_V3,
150
+ variables: { group_id: group_id_1, school_name_id: school_name_id_1, user_id: id_1 },
151
+ isDelay: false
152
+ })];
153
+ case 2:
154
+ res = _e.sent();
155
+ setDataSchool(res === null || res === void 0 ? void 0 : res.data);
156
+ data_1 = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.school_name[0]) === null || _b === void 0 ? void 0 : _b.schools;
157
+ dataLength = data_1.length;
158
+ if (data_1 && dataLength > 0) {
159
+ setLoadingSchool(false);
160
+ }
161
+ setInfoSchool(data_1);
162
+ setIsLoading(false);
163
+ settingFetchData = (_d = (_c = res === null || res === void 0 ? void 0 : res.data) === null || _c === void 0 ? void 0 : _c.setting_site[0]) === null || _d === void 0 ? void 0 : _d.value_setting;
164
+ if (settingFetchData) {
165
+ cleanedJsonString = settingFetchData.replace(/^"(.*)"$/, '$1');
166
+ jsonObjectSetting = JSON.parse(cleanedJsonString);
167
+ setConfigLayout(jsonObjectSetting);
168
+ getSeting = js_cookie_1["default"].get(constants_1.KEY_SETTING);
169
+ // Nếu chưa có cookeis
170
+ if (!getSeting) {
171
+ js_cookie_1["default"].set(constants_1.KEY_SETTING, JSON.stringify(jsonObjectSetting));
172
+ return [2 /*return*/];
173
+ }
174
+ dataCompare = compareObjects(jsonObjectSetting, JSON.parse(getSeting));
175
+ if (dataCompare) {
176
+ console.log('log debug database === cookies');
177
+ return [2 /*return*/];
178
+ }
179
+ console.log('log debug database !== cookies');
180
+ js_cookie_1["default"].set(constants_1.KEY_SETTING, JSON.stringify(jsonObjectSetting));
181
+ }
182
+ return [3 /*break*/, 4];
183
+ case 3:
184
+ error_2 = _e.sent();
185
+ setIsLoading(false);
186
+ console.error('Error fetching school data:', error_2);
187
+ return [3 /*break*/, 4];
188
+ case 4: return [2 /*return*/];
189
+ }
190
+ });
191
+ }); };
192
+ fetchData()["catch"](function (err) {
193
+ console.log(err);
194
+ setIsLoading(false);
195
+ });
196
+ var allRoleCodesLength = allRoleCodes === null || allRoleCodes === void 0 ? void 0 : allRoleCodes.length;
197
+ if (allRoleCodes && allRoleCodesLength > 0) {
198
+ var fetchDataPer = function () { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
199
+ var res, userPermission, rolePermission, dataCodePermissionRole, dataCodePermissionUser, allCodes, uniqueValues, error_3;
200
+ var _a, _b;
201
+ return tslib_1.__generator(this, function (_c) {
202
+ switch (_c.label) {
203
+ case 0:
204
+ _c.trys.push([0, 2, , 3]);
205
+ return [4 /*yield*/, (0, clientQueryV3_1["default"])({
206
+ query: query_1.GET_PERMISSION_DETAIL_USER_V3,
207
+ variables: { id: id_1, school_id: school_id_1 }
208
+ })];
209
+ case 1:
210
+ res = _c.sent();
211
+ userPermission = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.permission_user;
212
+ rolePermission = (_b = res === null || res === void 0 ? void 0 : res.data) === null || _b === void 0 ? void 0 : _b.permission_role;
213
+ dataCodePermissionRole = rolePermission === null || rolePermission === void 0 ? void 0 : rolePermission.map(function (item) { var _a; return (_a = item === null || item === void 0 ? void 0 : item.permission) === null || _a === void 0 ? void 0 : _a.code; });
214
+ dataCodePermissionUser = userPermission === null || userPermission === void 0 ? void 0 : userPermission.map(function (item) { var _a; return (_a = item === null || item === void 0 ? void 0 : item.permission) === null || _a === void 0 ? void 0 : _a.code; });
215
+ allCodes = tslib_1.__spreadArray(tslib_1.__spreadArray([], dataCodePermissionRole, true), dataCodePermissionUser, true);
216
+ uniqueValues = Array.from(new Set(allCodes));
217
+ setPerCode(uniqueValues);
218
+ return [3 /*break*/, 3];
219
+ case 2:
220
+ error_3 = _c.sent();
221
+ console.error('Error fetching school data:', error_3);
222
+ return [3 /*break*/, 3];
223
+ case 3: return [2 /*return*/];
224
+ }
225
+ });
226
+ }); };
227
+ fetchDataPer()["catch"](console.error);
228
+ }
229
+ }
230
+ }, [cookie, authen]);
231
+ (0, react_2.useEffect)(function () {
232
+ // Let load left menu data
233
+ if (loadingMenu) {
234
+ var fetchDataMenu = function (url) { return tslib_1.__awaiter(void 0, void 0, void 0, function () {
235
+ var data, json;
236
+ return tslib_1.__generator(this, function (_a) {
237
+ switch (_a.label) {
238
+ case 0: return [4 /*yield*/, fetch(url)];
239
+ case 1:
240
+ data = _a.sent();
241
+ return [4 /*yield*/, data.json()];
242
+ case 2:
243
+ json = _a.sent();
244
+ setMenu(json);
245
+ setLoadingMenu(false);
246
+ return [2 /*return*/];
247
+ }
248
+ });
249
+ }); };
250
+ var publicEnvSchoolMenu = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_ENV_SCHOOL_MENU', process.env.NEXT_PUBLIC_ENV_SCHOOL_MENU);
251
+ var publicEnvSchoolLogo = (0, read_env_config_1.getEnv)('NEXT_PUBLIC_ENV_SCHOOL_TOP_MENU_LOGO', process.env.NEXT_PUBLIC_ENV_SCHOOL_TOP_MENU_LOGO);
252
+ if (!publicEnvSchoolMenu || !publicEnvSchoolLogo) {
253
+ console.error('menu or logo not found');
254
+ }
255
+ fetchDataMenu(publicEnvSchoolMenu)["catch"](console.error);
256
+ setLogo({ path: publicEnvSchoolLogo, height: logoHeight });
257
+ }
258
+ }, [loadingMenu, menu]);
259
+ var requireLoginValidation = function () {
260
+ var currentURL = window.location.href;
261
+ var url = currentURL.split('/');
262
+ var loginPush = "".concat(url[0], "//").concat(url[2], "/login-sso");
263
+ window.location.replace(loginPush);
264
+ };
265
+ var isEqualUrl = function (parentHref, pathName) {
266
+ if (!parentHref || !pathName) {
267
+ return false;
268
+ }
269
+ var pathNameSplit = pathName.split('/');
270
+ var hrefSplit = parentHref.split('/');
271
+ if (!pathNameSplit || !hrefSplit) {
272
+ return false;
273
+ }
274
+ var urlRouter;
275
+ var currentMenu;
276
+ if (multipleMenu) {
277
+ urlRouter = pathNameSplit[1] + pathNameSplit[2];
278
+ currentMenu = hrefSplit[1] + hrefSplit[2];
279
+ }
280
+ else {
281
+ urlRouter = pathNameSplit[1];
282
+ currentMenu = hrefSplit[1];
283
+ }
284
+ return urlRouter === currentMenu;
285
+ };
286
+ var isBelongParent = function (parentUrl, pathName) {
287
+ var parentSplit = parentUrl.split('/');
288
+ var pathNameSplit = pathName.split('/');
289
+ if (parentSplit.length > 2 && !parentSplit.includes('list')) {
290
+ return parentSplit[1] === pathNameSplit[2] && parentSplit[2] === pathNameSplit[3];
291
+ }
292
+ else {
293
+ return parentSplit[1] === pathNameSplit[2];
294
+ }
295
+ };
296
+ var checkAdmissions = function (path) {
297
+ var pathNameSplit = path.split('/');
298
+ return pathNameSplit[1] === 'admissions';
299
+ };
300
+ var loadParentNavigation = function (path) {
301
+ var mainNavigation = menu;
302
+ var naviSize = mainNavigation.length;
303
+ for (var i = 0; i < naviSize; i++) {
304
+ var item = mainNavigation[i];
305
+ item.current = false;
306
+ if (item.path === path || isEqualUrl(item.path, path)) {
307
+ item.current = true;
308
+ // Find sub modules
309
+ var itemLength = item.child.length;
310
+ var listChildren = [];
311
+ for (var j = 0; j < itemLength; j++) {
312
+ var childItem = item.child[j];
313
+ // Active child item
314
+ childItem.current = isBelongParent(childItem.path, path);
315
+ if (childItem.child) {
316
+ var childItemLength = childItem.child.length;
317
+ var count = 0;
318
+ for (var k = 0; k < childItemLength; k++) {
319
+ var subChild = childItem.child[k];
320
+ subChild.current = isBelongParent(subChild.path, path);
321
+ if (isBelongParent(subChild.path, path) || isBelongParent(childItem.path, path)) {
322
+ count++;
323
+ }
324
+ count > 0 ? (childItem.showChild = true) : (childItem.showChild = false);
325
+ subChild.path === childItem.path ? (childItem.current = false) : null;
326
+ }
327
+ }
328
+ listChildren.push(childItem);
329
+ }
330
+ setSubNavigation(listChildren);
331
+ }
332
+ }
333
+ setNavigation(mainNavigation);
334
+ };
335
+ var loadChildrenCampaign = function (path) {
336
+ var mainNavigation = menu;
337
+ var naviSize = mainNavigation.length;
338
+ for (var i = 0; i < naviSize; i++) {
339
+ var item = mainNavigation[i];
340
+ item.current = false;
341
+ if (item.path === path || isEqualUrl(item.path, path)) {
342
+ item.current = true;
343
+ // Find sub modules
344
+ // const itemLength = item.child.length;
345
+ var campaign = item.child.filter(function (child) { return child.path === '/campaign/list'; });
346
+ var listCampaign = campaign[0];
347
+ var itemLength = listCampaign === null || listCampaign === void 0 ? void 0 : listCampaign.childrenByParentDetail.length;
348
+ var listChildren = [];
349
+ for (var j = 0; j < itemLength; j++) {
350
+ var childItem = listCampaign === null || listCampaign === void 0 ? void 0 : listCampaign.childrenByParentDetail[j];
351
+ // Active child item
352
+ childItem.current = isBelongParent(childItem.path, path);
353
+ if (childItem.child) {
354
+ var childItemLength = childItem.child.length;
355
+ for (var k = 0; k < childItemLength; k++) {
356
+ var subChild = childItem.child[k];
357
+ subChild.current = isBelongParent(subChild.path, path);
358
+ if (isBelongParent(subChild.path, path) || isBelongParent(childItem.path, path))
359
+ childItem.showChild = true;
360
+ subChild.path === childItem.path ? (childItem.current = false) : null;
361
+ }
362
+ }
363
+ listChildren.push(childItem);
364
+ }
365
+ setSubNavigation(listChildren);
366
+ }
367
+ }
368
+ setNavigation(mainNavigation);
369
+ };
370
+ var checkChildrenCampaign = function (path) {
371
+ var campaignMenu = menu === null || menu === void 0 ? void 0 : menu.find(function (item) { return item.path === '/admissions/campaign/list'; });
372
+ var campaignChild = campaignMenu === null || campaignMenu === void 0 ? void 0 : campaignMenu.child;
373
+ var listChild = campaignChild === null || campaignChild === void 0 ? void 0 : campaignChild.find(function (item) { return item.path === '/campaign/list'; });
374
+ var isChild = listChild === null || listChild === void 0 ? void 0 : listChild.childrenByParentDetail.find(function (item) { return isBelongParent(item.path, path); });
375
+ return isChild !== undefined;
376
+ };
377
+ (0, react_2.useEffect)(function () {
378
+ var isAdmissions = checkAdmissions(pathNameWithBasePath);
379
+ if (isAdmissions && checkChildrenCampaign(pathNameWithBasePath)) {
380
+ if (pathNameWithBasePath.includes('/admissions/overview/list/') && pid) {
381
+ (0, clientQueryV3_1["default"])({
382
+ query: query_1.getCampaignNameV3,
383
+ variables: { id: pid },
384
+ isDelay: false
385
+ }).then(function (res) {
386
+ var data = res.data.admissions_campaigns_by_pk;
387
+ setCampaignName(data.campaign_name);
388
+ js_cookie_1["default"].set('campaign_name', JSON.stringify(data.campaign_name));
389
+ });
390
+ loadChildrenCampaign(pathNameWithBasePath);
391
+ }
392
+ else if (pathNameWithBasePath === '/admissions/campaign/list') {
393
+ loadParentNavigation(pathNameWithBasePath);
394
+ }
395
+ else {
396
+ loadChildrenCampaign(pathNameWithBasePath);
397
+ }
398
+ }
399
+ else {
400
+ loadParentNavigation(pathNameWithBasePath);
401
+ }
402
+ // eslint-disable-next-line react-hooks/exhaustive-deps
403
+ }, [menu, pid, pathNameWithBasePath]);
404
+ (0, react_2.useEffect)(function () {
405
+ var isAdmissions = checkAdmissions(pathNameWithBasePath);
406
+ if (isAdmissions) {
407
+ if (pathNameWithBasePath === '/admissions/campaign/list' || !checkChildrenCampaign(pathNameWithBasePath)) {
408
+ setOpenSubMenu(true);
409
+ }
410
+ else {
411
+ setOpenSubMenu(true);
412
+ var campaign_name = js_cookie_1["default"].get('campaign_name');
413
+ setCampaignName(campaign_name ? JSON.parse(campaign_name) : campaignName);
414
+ loadChildrenCampaign(pathNameWithBasePath);
415
+ }
416
+ }
417
+ else {
418
+ setOpenSubMenu(true);
419
+ }
420
+ }, [pathNameWithBasePath, menu]);
421
+ var loadSubNavigation = function (path, isChild, childPath) {
422
+ var subLength = subNavigation.length;
423
+ var newSub = [];
424
+ for (var i = 0; i < subLength; i++) {
425
+ var item = subNavigation[i];
426
+ item.current = item.path === path && !isChild;
427
+ if (item.child) {
428
+ item.showChild = item.path === path;
429
+ for (var j = 0; j < item.child.length; j++) {
430
+ var child = item.child[j];
431
+ child.current = child.path === childPath;
432
+ if (child.path === item.path) {
433
+ item.current = false;
434
+ child.current = childPath ? child.path === childPath : child.path === path;
435
+ }
436
+ }
437
+ }
438
+ newSub.push(item);
439
+ }
440
+ setSubNavigation(newSub);
441
+ };
442
+ var triggerClicked = function (path) {
443
+ loadParentNavigation(path);
444
+ };
445
+ var handleClicked = function (path) {
446
+ triggerClicked(path);
447
+ };
448
+ var subNavigationTriggerClicked = function (item, parent) {
449
+ parent ? loadSubNavigation(parent.path, true, item.path) : loadSubNavigation(item.path, false);
450
+ var queryString = window.location.search;
451
+ var urlParams = new URLSearchParams(queryString);
452
+ var campaign = Number(urlParams.get('campaignId'));
453
+ // handle for admissions
454
+ if (campaign) {
455
+ router.push("".concat(item.path, "?campaignId=").concat(campaign));
456
+ }
457
+ else {
458
+ router.push(item.path);
459
+ }
460
+ };
461
+ var path = logo.path, height = logo.height;
462
+ var handleModalSignOut = function () { return setModalSignOut(true); };
463
+ var handleRedirectRouter = function (path) {
464
+ var currentURL = window.location.href;
465
+ var url = currentURL.split('/');
466
+ var pushPath = "".concat(url[0], "//").concat(url[2], "/").concat(path);
467
+ window.location.replace(pushPath);
468
+ };
469
+ var handleSignOut = function () {
470
+ setModalSignOut(false);
471
+ Object.keys(js_cookie_1["default"].get()).forEach(function (cookieName) {
472
+ js_cookie_1["default"].remove(cookieName);
473
+ });
474
+ console.log('Đăng xuất tài khoản');
475
+ handleRedirectRouter('login-sso');
476
+ };
477
+ var handleProfilePage = function () {
478
+ handleRedirectRouter('profile');
479
+ };
480
+ var handleBackMenu = function () {
481
+ router.push('/campaign/list');
482
+ loadParentNavigation('/admissions/campaign/list');
483
+ };
484
+ var handleClickPageAdmin = function () {
485
+ window.location.replace('/permission/role/list');
486
+ };
487
+ var checkChildBefore = function (item, currentItem) {
488
+ var currentIndexActive = item.find(function (s) { return s.current; });
489
+ return currentIndexActive ? currentIndexActive.id > currentItem.id : false;
490
+ };
491
+ var _3 = (0, react_2.useState)(false), openNavName = _3[0], setOpenNavName = _3[1];
492
+ var _4 = (0, react_2.useState)(false), showSearchBar = _4[0], setShowSearchBar = _4[1];
493
+ var _5 = (0, react_2.useState)(null), selected = _5[0], setSelected = _5[1];
494
+ var handleOpenModal = function (id) {
495
+ setModal(id !== schoolId);
496
+ setSelected(id);
497
+ };
498
+ var handlePrimaryModal = function () {
499
+ if (cookie) {
500
+ try {
501
+ var data = JSON.parse(cookie);
502
+ if (data) {
503
+ var newSchoolId = selected;
504
+ if (newSchoolId && newSchoolId !== data.school_id) {
505
+ data.school_id = newSchoolId;
506
+ var updatedCookie = encodeURIComponent(JSON.stringify(data));
507
+ document.cookie = "".concat(constants_1.isLoggedCookie, "=").concat(updatedCookie, ";path=/");
508
+ window.location.replace('/');
509
+ }
510
+ }
511
+ }
512
+ catch (error) {
513
+ console.error(error);
514
+ }
515
+ }
516
+ setModal(false);
517
+ };
518
+ var avatar = (_b = dataSchool === null || dataSchool === void 0 ? void 0 : dataSchool.users[0]) === null || _b === void 0 ? void 0 : _b.avatar;
519
+ var sourceAvatar = !avatar ? constants_1.DEFAULT_AVATAR : avatar;
520
+ // settings page
521
+ var isSettings = function () {
522
+ var pathNameSplit = pathNameWithBasePath.split('/');
523
+ return pathNameSplit[1] === 'setting';
524
+ };
525
+ var defaultSettingLayout = {
526
+ df_header_bg_color: constants_1.DF_HEADER_BG_COLOR,
527
+ df_logo_login: constants_1.DEFAULT_LOGO_LOGIN,
528
+ df_logo_dashboard: constants_1.DEFAULT_LOGO_DASHBOARD,
529
+ df_color_loading_skeleton: constants_1.DF_SKELETON_COLOR,
530
+ df_search_icon_color: constants_1.DF_SEARCH_ICON_COLOR,
531
+ df_search_bg_color: constants_1.DF_SEARCH_BG_COLOR,
532
+ df_search_border_color: constants_1.DF_SEARCH_BORDER_COLOR,
533
+ df_search_border_hover_color: constants_1.DF_SEARCH_BORDER_HOVER_COLOR,
534
+ df_search_text_color: constants_1.DF_SEARCH_TEXT_COLOR,
535
+ df_menu_bg_color: constants_1.DF_MENU_BG_COLOR,
536
+ df_menu_text_color: constants_1.DF_MENU_TEXT_COLOR,
537
+ df_menu_bg_active: constants_1.DF_MENU_BG_ACTIVE_COLOR,
538
+ df_menu_icon_color: constants_1.DF_MENU_ICON_COLOR,
539
+ df_menu_icon_hover: constants_1.DF_MENU_ICON_HOVER_COLOR,
540
+ df_menu_text_and_icon_hover_color: constants_1.DF_MENU_ICON_AND_TEXT_HOVER_COLOR,
541
+ df_menu_icon_active: constants_1.DF_MENU_ICON_ACTICE_COLOR,
542
+ df_menu_hover_bg: constants_1.DF_MENU_HOVER_BG_COLOR
543
+ };
544
+ var settingLength = (_d = (_c = dataSchool === null || dataSchool === void 0 ? void 0 : dataSchool.setting_site) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0;
545
+ var df_logo_dashboard = defaultSettingLayout === null || defaultSettingLayout === void 0 ? void 0 : defaultSettingLayout.df_logo_dashboard;
546
+ var logo_dashboard = configLayout === null || configLayout === void 0 ? void 0 : configLayout.logo_dashboard;
547
+ var checkLogoHeader = settingLength === 0 ? df_logo_dashboard : logo_dashboard || path;
548
+ return (react_2["default"].createElement(react_2["default"].Fragment, null,
549
+ react_2["default"].createElement("div", { className: 'flex min-h-full flex-col' },
550
+ react_2["default"].createElement(appearance_styled_1["default"], { defaultSettingLayout: defaultSettingLayout, data: dataSchool, configLayout: configLayout, settingLocal: getDataCookies }),
551
+ react_2["default"].createElement("header", { className: 'fixed top-0 z-50 min-w-full border-gray-200 bg-white header-color-styled' },
552
+ react_2["default"].createElement("div", { className: 'mx-auto flex h-14 items-center justify-between pr-4 bg-[#1a1a1a] header-styled' },
553
+ react_2["default"].createElement("div", { className: 'flex items-center lg:w-32 gap-x-3' },
554
+ react_2["default"].createElement("a", { href: '/', className: 'w-full flex items-center' }, path ? (react_2["default"].createElement(react_2["default"].Fragment, null, isLoading ? (react_2["default"].createElement("div", { className: 'animate-pulse w-full h-8 ml-3 header-loading-logo' })) : (react_2["default"].createElement("img", { alt: 'Logo', className: 'w-auto ml-3', src: checkLogoHeader, style: { height: height } })))) : (react_2["default"].createElement(react_2["default"].Fragment, null))),
555
+ react_2["default"].createElement("div", { className: 'lg:hidden flex items-center' },
556
+ react_2["default"].createElement("button", { className: 'bg-grey-100 mr-3 inline-flex p-1 items-center justify-center rounded-md text-gray-600 hover:bg-white focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white', onClick: function () { return setSidebarOpen(true); }, type: 'button' },
557
+ react_2["default"].createElement("span", { className: 'sr-only' }, "Open sidebar"),
558
+ react_2["default"].createElement(outline_1.Bars3Icon, { "aria-hidden": 'true', className: 'h-6 w-6' })))),
559
+ react_2["default"].createElement("div", { "aria-hidden": true, className: 'hidden sm:block w-[30%] h-8 bg-indigo-700 rounded-lg border border-indigo-500 relative hover:border-gray-200 cursor-pointer search-box-styled', onClick: function () { return setShowSearchBar(true); } },
560
+ react_2["default"].createElement("div", { className: 'relative text-indigo-400 flex items-center gap-x-3 text-xs top-1.5 left-2.5' },
561
+ react_2["default"].createElement("div", { className: 'flex items-center' },
562
+ react_2["default"].createElement("svg", { xmlns: 'http://www.w3.org/2000/svg', fill: 'none', viewBox: '0 0 24 24', strokeWidth: '1.5', stroke: 'currentColor', className: 'w-4 h-4' },
563
+ react_2["default"].createElement("path", { strokeLinecap: 'round', strokeLinejoin: 'round', d: 'M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z' })),
564
+ react_2["default"].createElement("p", { className: 'ml-2' }, "T\u00ECm ki\u1EBFm")))),
565
+ react_2["default"].createElement(search_bar_1["default"], { open: showSearchBar, onClose: function () { return setShowSearchBar(false); } }),
566
+ react_2["default"].createElement("div", { className: 'flex items-center gap-x-8' },
567
+ react_2["default"].createElement("div", { className: '-m-1.5 p-1.5' },
568
+ react_2["default"].createElement(react_1.Menu, { as: 'div', className: 'relative ml-3' },
569
+ react_2["default"].createElement("div", null,
570
+ react_2["default"].createElement(react_1.Menu.Button, { className: 'flex max-w-xs items-center rounded-full bg-gray-800 text-sm focus:outline-none focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-gray-800' },
571
+ react_2["default"].createElement("span", { className: 'sr-only' }, "Open user menu"),
572
+ isLoading ? (react_2["default"].createElement("div", { className: 'animate-pulse flex' },
573
+ react_2["default"].createElement("div", { className: 'rounded-full h-8 w-8 header-loading-avatar' }))) : (react_2["default"].createElement("img", { alt: '', className: 'h-8 w-8 rounded-full', src: sourceAvatar })))),
574
+ react_2["default"].createElement(react_1.Transition, { as: react_2.Fragment, enter: 'transition ease-out duration-100', enterFrom: 'transform opacity-0 scale-95', enterTo: 'transform opacity-100 scale-100', leave: 'transition ease-in duration-75', leaveFrom: 'transform opacity-100 scale-100', leaveTo: 'transform opacity-0 scale-95' },
575
+ react_2["default"].createElement(react_1.Menu.Items, { className: ' px-2 absolute right-0 z-10 mt-2 w-[340px] origin-top-right rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none' },
576
+ react_2["default"].createElement(react_1.Menu.Item, null,
577
+ react_2["default"].createElement("div", { "aria-hidden": true, className: 'px-2 pt-4 pb-2 font-semibold text-gray-900 text-sm ' }, "Ch\u1ECDn tr\u01B0\u1EDDng")),
578
+ !loadingSchool ? (react_2["default"].createElement(react_2["default"].Fragment, null, infoSchool
579
+ .filter(function (val) {
580
+ if (!enablePer(constants_1.switchSchool, perCode)) {
581
+ return val.id === schoolId;
582
+ }
583
+ else {
584
+ return true;
585
+ }
586
+ })
587
+ .map(function (item) { return (react_2["default"].createElement(react_1.Menu.Item, { key: item.id },
588
+ react_2["default"].createElement("div", { "aria-hidden": true, className: "".concat(item.id === schoolId &&
589
+ infoSchool.length > 1 &&
590
+ !enablePer(constants_1.switchSchool, perCode) === false
591
+ ? 'rounded-lg bg-zinc-200 text-gray-900 font-semibold '
592
+ : 'font-normal ', " \n ").concat(item.id !== schoolId &&
593
+ (infoSchool.length === 1 || !enablePer(constants_1.switchSchool, perCode)) === false
594
+ ? 'hover:bg-gray-100 hover:rounded-lg cursor-pointer'
595
+ : '', "\n py-1.5 relative px-2 mb-1 text-gray-900 text-sm flex justify-between items-center"), onClick: function () { return handleOpenModal(item.id); } },
596
+ react_2["default"].createElement("p", { className: 'truncate max-w-[95%]' }, item.name),
597
+ item.id === schoolId &&
598
+ infoSchool.length > 1 &&
599
+ !enablePer(constants_1.switchSchool, perCode) === false && (react_2["default"].createElement(solid_2.CheckIcon, { "aria-hidden": 'true', className: 'h-4 w-4' }))))); }))) : (react_2["default"].createElement(Skeleton_1.PHXSkeleton, { className: 'flex-1 py-2 px-2', type: 'single' })),
600
+ react_2["default"].createElement("div", { className: 'border-b pt-1.5' }),
601
+ react_2["default"].createElement(react_1.Menu.Item, null,
602
+ react_2["default"].createElement("div", { "aria-hidden": true, className: 'pt-4 px-2 pb-2 font-semibold text-gray-900 text-sm' }, "T\u00F9y ch\u1ECDn")),
603
+ react_2["default"].createElement(react_1.Menu.Item, null,
604
+ react_2["default"].createElement("div", { "aria-hidden": true, className: 'py-1.5 px-2 cursor-pointer text-gray-900 text-sm hover:bg-gray-100 hover:rounded-lg', onClick: handleProfilePage }, "Th\u00F4ng tin c\u00E1 nh\u00E2n")),
605
+ (checkRole(constants_1.admin, roleCode) || checkRole(constants_1.superAdmin, roleCode)) && (react_2["default"].createElement(react_1.Menu.Item, null,
606
+ react_2["default"].createElement("div", { "aria-hidden": true, className: 'py-1.5 px-2 cursor-pointer text-gray-900 text-sm hover:bg-gray-100 hover:rounded-lg', onClick: handleClickPageAdmin }, "Qu\u1EA3n tr\u1ECB \u0111\u0103ng nh\u1EADp portal"))),
607
+ react_2["default"].createElement(react_1.Menu.Item, null,
608
+ react_2["default"].createElement("div", { "aria-hidden": true, className: 'py-1.5 px-2 mb-2.5 cursor-pointer text-[#8e1f0c] text-sm hover:bg-gray-100 hover:rounded-lg', onClick: handleModalSignOut }, "\u0110\u0103ng xu\u1EA5t")))))))))),
609
+ react_2["default"].createElement("div", null,
610
+ react_2["default"].createElement(Modal_1.PHXModal, { dangerActionText: '\u0110\u0103ng xu\u1EA5t', onDangerClick: handleSignOut, onHide: function () { return setModalSignOut(false); }, primaryActionText: '', show: modalSignOut, title: '\u0110\u0103ng xu\u1EA5t' },
611
+ react_2["default"].createElement("div", { className: 'text-gray-700 text-sm' }, "Khi th\u1EF1c hi\u1EC7n thao t\u00E1c n\u00E0y b\u1EA1n s\u1EBD tho\u00E1t kh\u1ECFi trang qu\u1EA3n tr\u1ECB v\u00E0 tr\u1EDF v\u1EC1 trang \u0111\u0103ng nh\u1EADp"))),
612
+ react_2["default"].createElement(Modal_1.PHXModal, { onHide: function () { return setModal(false); }, primaryActionText: 'X\u00E1c nh\u1EADn', show: modal, onPrimaryClick: handlePrimaryModal, title: 'X\u00E1c nh\u1EADn thay \u0111\u1ED5i tr\u01B0\u1EDDng' },
613
+ react_2["default"].createElement(Banner_1.PHXBanner, { description: 'Khi thay \u0111\u1ED5i tr\u01B0\u1EDDng t\u1EA5t c\u1EA3 d\u1EEF li\u1EC7u s\u1EBD hi\u1EC3n th\u1ECB theo tr\u01B0\u1EDDng v\u1EEBa \u0111\u01B0\u1EE3c ch\u1ECDn', onClose: function () { return setShowBanner(false); }, show: showBanner, title: 'L\u01B0u \u00FD', type: 'warning' })),
614
+ react_2["default"].createElement("div", { className: 'relative flex min-h-screen bg-[#f1f1f1]' },
615
+ react_2["default"].createElement(react_1.Transition.Root, { as: react_2.Fragment, show: sidebarOpen },
616
+ react_2["default"].createElement(react_1.Dialog, { as: 'div', className: 'relative z-40 lg:hidden', onClose: setSidebarOpen },
617
+ react_2["default"].createElement(react_1.Transition.Child, { as: react_2.Fragment, enter: 'transition-opacity ease-linear duration-300', enterFrom: 'opacity-0', enterTo: 'opacity-100', leave: 'transition-opacity ease-linear duration-300', leaveFrom: 'opacity-100', leaveTo: 'opacity-0' },
618
+ react_2["default"].createElement("div", { className: 'fixed inset-0 bg-gray-600 bg-opacity-75' })),
619
+ react_2["default"].createElement("div", { className: 'fixed inset-0 z-40 flex' },
620
+ react_2["default"].createElement(react_1.Transition.Child, { as: react_2.Fragment, enter: 'transition ease-in-out duration-300 transform', enterFrom: '-translate-x-full', enterTo: 'translate-x-0', leave: 'transition ease-in-out duration-300 transform', leaveFrom: 'translate-x-0', leaveTo: '-translate-x-full' },
621
+ react_2["default"].createElement(react_1.Dialog.Panel, { className: 'relative flex w-full max-w-xs flex-1 flex-col bg-[#ebebeb]' },
622
+ react_2["default"].createElement(react_1.Transition.Child, { as: react_2.Fragment, enter: 'ease-in-out duration-300', enterFrom: 'opacity-0', enterTo: 'opacity-100', leave: 'ease-in-out duration-300', leaveFrom: 'opacity-100', leaveTo: 'opacity-0' },
623
+ react_2["default"].createElement("div", { className: 'absolute right-0 top-0 -mr-12 pt-2' },
624
+ react_2["default"].createElement("button", { className: 'ml-1 flex h-10 w-10 items-center justify-center rounded-full focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white', onClick: function () { return setSidebarOpen(false); }, type: 'button' },
625
+ react_2["default"].createElement("span", { className: 'sr-only' }, "Close sidebar"),
626
+ react_2["default"].createElement(outline_1.XMarkIcon, { "aria-hidden": 'true', className: 'h-6 w-6 text-white' })))),
627
+ react_2["default"].createElement("div", { className: 'mt-8 h-0 flex-1 overflow-y-auto pb-4 pt-5' },
628
+ react_2["default"].createElement(nav_mobile_1["default"], { setSideBarOpen: function () { return setSidebarOpen(false); }, permission: perCode, menu: menu, path: pathNameWithBasePath, router: router })))),
629
+ react_2["default"].createElement("div", { "aria-hidden": 'true', className: 'w-14 flex-shrink-0' })))),
630
+ react_2["default"].createElement("div", { className: 'hidden lg:flex lg:flex-shrink-0' },
631
+ react_2["default"].createElement("div", { className: 'flex' },
632
+ react_2["default"].createElement("div", { className: 'mt-14 flex lg:inset-y-0' },
633
+ react_2["default"].createElement("div", { "aria-hidden": true, className: "".concat(openNavName ? 'w-64' : 'w-14', " transition-all duration-300 z-10 flex h-full flex-col justify-between border-r bg-[#f1f1f1] lg:fixed menu-styled"), onMouseOver: function () { return setOpenNavName(true); }, onMouseOut: function () { return setOpenNavName(false); } },
634
+ react_2["default"].createElement("div", { className: classNames('#ebebeb flex flex-1 flex-col', openNavName ? 'overflow-y-auto' : 'overflow-y-hidden') },
635
+ react_2["default"].createElement("div", { className: 'flex-1 relative' },
636
+ react_2["default"].createElement("div", { "aria-label": 'Sidebar', className: 'hidden md:block md:flex-shrink-0 md:overflow-y-auto overflow-x-hidden' }, !hiddenLeftMenu && (react_2["default"].createElement("div", { className: "space-y- flex ".concat(openNavName ? 'w-64' : 'w-12', " flex-col overflow-hidden p-3") }, navigation.map(function (item, index) { return (react_2["default"].createElement("div", { key: index, className: 'w-full' }, (roleCode === null || roleCode === void 0 ? void 0 : roleCode.length) > 0 ? (react_2["default"].createElement(react_2["default"].Fragment, null, enablePer(item.code, perCode) && (react_2["default"].createElement("a", { className: "".concat(classNames(item.current && !openNavName
637
+ ? 'font-semibold menu-bg-color-icon-active-styled' // màu background của icon đang active của menu
638
+ : 'font-medium menu-icon-color-styled', // màu icon của menu
639
+ !openNavName
640
+ ? 'mb-1.5 inline-flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg'
641
+ : 'mb-1.5 inline-flex h-8 flex-shrink-0 items-center rounded-lg min-w-full', openNavName && item.current
642
+ ? 'rounded-lg menu-bg-color-icon-active-styled'
643
+ : 'hover:rounded-lg hover:bg-opacity-50 menu-hover-bg')), href: item.path, onClick: function () { return handleClicked(item.path); }, onMouseOver: function () { return setOpenNavName(true); } },
644
+ react_2["default"].createElement("span", { className: 'sr-only' }, item.name),
645
+ react_2["default"].createElement("span", { className: classNames(!openNavName
646
+ ? 'group cursor-pointer hover:fixed hover:z-10 focus-visible:outline-none mt-0.5'
647
+ : "flex gap-x-2 ".concat(item.menuIconSL ? 'pl-[3px] pt-[2px]' : 'pl-[0.45rem]')) },
648
+ item.menuIconSL ? (react_2["default"].createElement("img", { src: item.menuIconSL, className: 'w-[1.6rem]', alt: 'icon' })) : (react_2["default"].createElement(react_fontawesome_1.FontAwesomeIcon, { className: 'h-[1.125rem] w-[1.125rem] mt-1', icon: item.image })),
649
+ openNavName && (react_2["default"].createElement("div", { className: 'h-6' },
650
+ react_2["default"].createElement("p", { className: "transition-all h-full duration-300 text-[0.86rem] mt-0.5 ".concat(openNavName ? 'opacity-100' : 'opacity-0', " ").concat(item.current ? 'font-semibold' : '') }, item.name)))))))) : (react_2["default"].createElement("a", { className: classNames(item.current && !openNavName
651
+ ? 'text-indigo-900 font-semibold menu-bg-color-icon-active-styled' // màu background của icon đang active trong menu
652
+ : 'text-gray-700 font-medium menu-icon-color-styled', // màu icon
653
+ !openNavName
654
+ ? 'mb-1.5 inline-flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg'
655
+ : 'mb-1.5 inline-flex h-8 flex-shrink-0 items-center rounded-lg min-w-full', openNavName && item.current
656
+ ? 'rounded-lg text-indigo-900 menu-bg-color-icon-active-styled' // màu background của icon đang active
657
+ : 'hover:rounded-lg hover:bg-opacity-50 menu-hover-bg'), href: item.path, onClick: function () { return handleClicked(item.path); }, onMouseOver: function () { return setOpenNavName(true); } },
658
+ react_2["default"].createElement("span", { className: classNames(!openNavName
659
+ ? 'group cursor-pointer hover:fixed hover:z-10 focus-visible:outline-none mt-0.5'
660
+ : "flex gap-x-2 ".concat(item.menuIconSL ? 'pl-[3px] pt-[2px]' : 'pl-[0.45rem]')) },
661
+ item.menuIconSL ? (react_2["default"].createElement("img", { src: item.menuIconSL, className: 'w-[1.6rem]', alt: 'icon' })) : (react_2["default"].createElement(react_fontawesome_1.FontAwesomeIcon, { className: 'h-[1.125rem] w-[1.125rem] mt-1', icon: item.image })),
662
+ openNavName && (react_2["default"].createElement("div", { className: 'h-6' },
663
+ react_2["default"].createElement("p", { className: "transition-all h-full duration-300 text-[0.86rem] mt-0.5 ".concat(openNavName ? 'opacity-100' : 'opacity-0', " ").concat(item.current ? 'font-semibold' : '', " ") }, item.name)))))))); })))))),
664
+ react_2["default"].createElement("div", { className: classNames('border-t', navigation.length > 0 && ((_e = navigation[0]) === null || _e === void 0 ? void 0 : _e.isSchoolink) ? 'border-[#1c222b]' : 'border-indigo-100') },
665
+ react_2["default"].createElement("div", { className: "mb-14 space-y- flex ".concat(openNavName ? 'w-64' : 'w-12', " overflow-hidden p-3") },
666
+ react_2["default"].createElement("a", { className: classNames('text-gray-700 font-medium', !openNavName
667
+ ? 'inline-flex h-8 w-8 flex-shrink-0 items-center justify-center rounded-lg'
668
+ : 'inline-flex h-8 flex-shrink-0 items-center rounded-lg hover:rounded-lg hover:bg-opacity-50 min-w-full', isSettings() && !openNavName
669
+ ? 'text-indigo-900 font-semibold setting-bg-icon-active' // màu background của icon đang active trong menu
670
+ : 'text-gray-700 font-medium setting-icon-color', // màu icon
671
+ openNavName && isSettings()
672
+ ? 'rounded-lg text-indigo-900 setting-bg-icon-active' // màu background của icon đang active trong menu
673
+ : 'hover:rounded-lg hover:bg-opacity-50 setting-hover-bg'), href: '/setting',
674
+ // onClick={() => handleClicked(item.path)}
675
+ onMouseOver: function () { return setOpenNavName(true); } },
676
+ react_2["default"].createElement("span", { className: 'sr-only' }, "setting"),
677
+ react_2["default"].createElement("span", { className: classNames(!openNavName
678
+ ? 'group cursor-pointer p-4 hover:fixed hover:z-10 focus-visible:outline-none mt-0.5'
679
+ : 'flex gap-x-2 pl-[0.45rem]') },
680
+ react_2["default"].createElement(react_fontawesome_1.FontAwesomeIcon, { className: 'h-[1.125rem] w-[1.125rem] mt-1', icon: 'fa-solid fa-gear' }),
681
+ openNavName && (react_2["default"].createElement("div", { className: 'h-6' },
682
+ react_2["default"].createElement("p", { className: "transition-all h-full duration-300 text-[0.86rem] setting-text-color mt-0.5 ".concat(openNavName ? 'opacity-100' : 'opacity-0', " ").concat(isSettings() ? 'font-semibold' : '', " ") }, "C\u00E0i \u0111\u1EB7t")))))))),
683
+ !hiddenLeftMenu && (react_2["default"].createElement(react_1.Transition, { as: react_2.Fragment, enter: 'transition ease-in-out duration-300 transform', enterFrom: '-translate-x-full', enterTo: 'translate-x-0', leave: 'transition ease-in-out duration-300 transform', leaveFrom: 'translate-x-0', leaveTo: '-translate-x-full', show: openSubMenu },
684
+ react_2["default"].createElement("aside", { className: 'z-9 fixed ml-[3.438rem] hidden h-full bg-[#ebebeb] lg:block lg:flex-shrink-0' },
685
+ react_2["default"].createElement("div", { className: 'relative flex h-full w-64 flex-col overflow-y-auto border-r border-gray-200 bg-[#ebebeb]' },
686
+ checkAdmissions(pathNameWithBasePath) &&
687
+ checkChildrenCampaign(pathNameWithBasePath) &&
688
+ pathNameWithBasePath !== '/admissions/campaign/list' && (react_2["default"].createElement("div", { className: 'mx-1 flex items-center p-2 pb-0' },
689
+ react_2["default"].createElement("button", { className: 'inline-flex items-center rounded-lg border-gray-300 bg-transparent mr-1 px-2 py-1 text-xs font-medium text-gray-700 hover:bg-gray-200 active:bg-gray-300 active:pb-[0.2rem] active:pt-[0.3rem] active:shadow-[0rem_0.125rem_0.1rem_0rem_#0004_inset]', onClick: function () { return handleBackMenu(); }, type: 'button' },
690
+ react_2["default"].createElement(solid_1.ArrowLeftIcon, { className: 'h-5 w-5' })),
691
+ react_2["default"].createElement("p", { className: 'font-medium text-sm text-slate-600' }, campaignName))),
692
+ react_2["default"].createElement("div", { className: 'flex-1 overflow-y-auto pt-3' }, subNavigation.map(function (item, subNavIndex) { return (react_2["default"].createElement("div", { key: subNavIndex }, (roleCode === null || roleCode === void 0 ? void 0 : roleCode.length) > 0 ? (react_2["default"].createElement(react_2["default"].Fragment, null, enablePer(item.code, perCode) ? (react_2["default"].createElement(react_2["default"].Fragment, null,
693
+ react_2["default"].createElement("div", { "aria-hidden": true, "aria-current": (item === null || item === void 0 ? void 0 : item.current) ? 'page' : undefined, className: classNames((item === null || item === void 0 ? void 0 : item.current)
694
+ ? 'rounded-lg bg-white' // màu background menu cha khi active
695
+ : 'hover:rounded-lg hover:bg-white hover:bg-opacity-50', // màu background khi hover vào menu cha
696
+ 'mx-1 flex cursor-pointer border-slate-200 p-2'), onClick: function () { return subNavigationTriggerClicked(item); } }, !loadingMenu ? (react_2["default"].createElement("div", { className: 'ml-1 text-[0.84rem] flex items-center' },
697
+ react_2["default"].createElement("div", { className: 'flex items-center gap-x-3' },
698
+ react_2["default"].createElement("p", { className: classNames('leading-5', (item === null || item === void 0 ? void 0 : item.current) ? 'font-semibold' : 'font-medium text-gray-800') }, item === null || item === void 0 ? void 0 : item.name)),
699
+ react_2["default"].createElement("p", { className: 'mt-1 text-slate-500' }, item === null || item === void 0 ? void 0 : item.description))) : (react_2["default"].createElement(Skeleton_1.PHXSkeleton, { className: 'mr-3 flex-1', type: 'single' }))),
700
+ item.showChild && item.child && (react_2["default"].createElement(react_2["default"].Fragment, null, item.child.map(function (children, childIndex) { return (react_2["default"].createElement("div", { key: childIndex, className: classNames('relative') },
701
+ react_2["default"].createElement("div", { style: (children === null || children === void 0 ? void 0 : children.current)
702
+ ? sub_menu_style_1.styles.childMenuActiveBefore
703
+ : checkChildBefore(item.child, children)
704
+ ? sub_menu_style_1.styles.childMenuBefBefore
705
+ : {} }),
706
+ react_2["default"].createElement("div", { "aria-hidden": true, className: classNames('mx-1 flex cursor-pointer border-slate-200 p-2 text-[0.84rem]', (children === null || children === void 0 ? void 0 : children.current)
707
+ ? 'rounded-lg bg-white text-gray-900' // màu chữ menu con khi active
708
+ : 'hover:rounded-lg hover:bg-white hover:bg-opacity-50 hover:text-gray-900'), onClick: function () { return subNavigationTriggerClicked(children, item); } },
709
+ react_2["default"].createElement("div", { className: 'flex items-center gap-x-3' },
710
+ react_2["default"].createElement("div", { className: 'w-3' }),
711
+ react_2["default"].createElement("p", { className: classNames('ml-3 leading-5 my-[0.05rem]', (children === null || children === void 0 ? void 0 : children.current) ? 'font-semibold' : 'text-gray-500 font-normal') }, children.name))),
712
+ react_2["default"].createElement("div", { style: (children === null || children === void 0 ? void 0 : children.current)
713
+ ? sub_menu_style_1.styles.childMenuActiveAfter
714
+ : checkChildBefore(item.child, children)
715
+ ? sub_menu_style_1.styles.childMenuBefAfter
716
+ : {} }))); }))))) : (react_2["default"].createElement("div", { "aria-current": (item === null || item === void 0 ? void 0 : item.current) ? 'page' : undefined, className: classNames((item === null || item === void 0 ? void 0 : item.current)
717
+ ? 'rounded-lg bg-white '
718
+ : 'hover:rounded-lg hover:bg-white hover:bg-opacity-50', // hover:bg-white
719
+ 'mx-1 flex cursor-pointer border-slate-200 p-2') }, !loadingMenu ? (react_2["default"].createElement("div", { className: 'ml-1 text-[0.84rem] flex items-center' },
720
+ react_2["default"].createElement("div", { className: 'flex items-center gap-x-3 text-gray-700' },
721
+ react_2["default"].createElement("p", { className: classNames('leading-5', (item === null || item === void 0 ? void 0 : item.current) ? 'font-semibold' : 'font-medium text-gray-300') }, item === null || item === void 0 ? void 0 : item.name)),
722
+ react_2["default"].createElement("p", { className: 'mt-1 text-slate-500' }, item === null || item === void 0 ? void 0 : item.description))) : (react_2["default"].createElement(Skeleton_1.PHXSkeleton, { className: 'mr-3 flex-1', type: 'single' })))))) : (react_2["default"].createElement(react_2["default"].Fragment, null,
723
+ react_2["default"].createElement("div", { "aria-hidden": true, "aria-current": (item === null || item === void 0 ? void 0 : item.current) ? 'page' : undefined, className: classNames((item === null || item === void 0 ? void 0 : item.current)
724
+ ? 'rounded-lg bg-white'
725
+ : 'hover:rounded-lg hover:bg-white hover:bg-opacity-50', 'mx-1 flex cursor-pointer border-slate-200 p-2'), onClick: function () { return subNavigationTriggerClicked(item); } }, !loadingMenu ? (react_2["default"].createElement("div", { className: 'ml-3 text-[0.84rem] flex items-center' },
726
+ react_2["default"].createElement("div", { className: 'flex items-center gap-x-3 text-gray-700' },
727
+ react_2["default"].createElement("p", { className: classNames('leading-5', (item === null || item === void 0 ? void 0 : item.current) ? 'font-semibold' : 'font-normal text-gray-500') }, item === null || item === void 0 ? void 0 : item.name)),
728
+ react_2["default"].createElement("p", { className: 'mt-1 text-slate-500' }, item === null || item === void 0 ? void 0 : item.description))) : (react_2["default"].createElement(Skeleton_1.PHXSkeleton, { className: 'mr-3 flex-1', type: 'single' }))),
729
+ item.showChild && item.child && (react_2["default"].createElement(react_2["default"].Fragment, null, item.child.map(function (children, index) { return (react_2["default"].createElement("div", { key: index, className: classNames('relative', (children === null || children === void 0 ? void 0 : children.current) && 'child-menu-active', checkChildBefore(item.child, children) && 'child-menu-bef') },
730
+ react_2["default"].createElement("div", { "aria-hidden": true, className: classNames('mx-1 flex cursor-pointer border-slate-200 p-2 text-[0.84rem]', (children === null || children === void 0 ? void 0 : children.current)
731
+ ? 'rounded-lg bg-white text-gray-900 '
732
+ : 'hover:rounded-lg hover:bg-white hover:bg-opacity-50 hover:text-gray-900'), onClick: function () { return subNavigationTriggerClicked(children, item); } },
733
+ react_2["default"].createElement("div", { className: 'flex items-center gap-x-3' },
734
+ react_2["default"].createElement("div", { className: 'w-3' }),
735
+ react_2["default"].createElement("p", { className: classNames('ml-3 leading-5 my-[0.05rem]', (children === null || children === void 0 ? void 0 : children.current) ? 'font-semibold' : 'text-gray-500 font-normal') }, children.name))))); }))))))); }))))))))),
736
+ react_2["default"].createElement("div", { className: 'flex min-w-0 flex-1 flex-col overflow-hidden' },
737
+ react_2["default"].createElement("main", { className: 'flex flex-1 overflow-hidden' },
738
+ react_2["default"].createElement("section", { "aria-labelledby": 'primary-heading', className: 'flex h-full min-w-0 flex-1 flex-col lg:order-last' },
739
+ react_2["default"].createElement("div", { className: 'bg-bgcl-50 sticky top-0 z-10 flex h-14 flex-shrink-0 border-b border-l px-4 sm:px-6 lg:px-4' }),
740
+ react_2["default"].createElement("div", { className: "".concat(openSubMenu ? 'lg:ml-[20.063rem]' : 'lg:ml-[5.063rem]', " bg-[#f1f1f1] px-6") },
741
+ react_2["default"].createElement("div", { className: 'py-4' }, children))))))));
742
+ };
743
+ exports.PHXMainWrapV3 = PHXMainWrapV3;
744
+ //# sourceMappingURL=MainWrapV3.js.map