mario-core 2.9.415-feedback → 2.9.417-feedback

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.
@@ -2,8 +2,8 @@ import 'bootstrap/dist/css/bootstrap.min.css';
2
2
  import i18n from 'i18next';
3
3
  import { initReactI18next, useTranslation } from 'react-i18next';
4
4
  export { I18nextProvider, useTranslation } from 'react-i18next';
5
- import React, { useCallback, useState, useEffect, useRef, useMemo, Suspense, memo, Fragment, forwardRef, useImperativeHandle } from 'react';
6
- import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Modal, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
5
+ import React, { useCallback, useState, useEffect, useRef, Suspense, memo, Fragment, forwardRef, useImperativeHandle, useMemo } from 'react';
6
+ import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, Modal, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
7
7
  import { Link, useLocation, useHistory, Switch, Route, Prompt, useParams } from 'react-router-dom';
8
8
  import { useDispatch, useSelector } from 'react-redux';
9
9
  import { Formik } from 'formik';
@@ -17,7 +17,7 @@ import { track, setSessionId, init, Identify, identify } from '@amplitude/analyt
17
17
  import moment from 'moment';
18
18
  import { LogLevel, PublicClientApplication } from '@azure/msal-browser';
19
19
  import { GiHamburgerMenu } from 'react-icons/gi';
20
- import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CHeader, CToggler, CHeaderBrand, CHeaderNav, CContainer } from '@coreui/react';
20
+ import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CContainer, CHeader, CToggler, CHeaderBrand, CHeaderNav } from '@coreui/react';
21
21
  import { CgMenuRight } from 'react-icons/cg';
22
22
  import { RiLogoutBoxRLine } from 'react-icons/ri';
23
23
  import Pusher from 'pusher-js/with-encryption';
@@ -2189,6 +2189,7 @@ var save_new_password = "Save new password";
2189
2189
  var teacher_code = "Teacher code";
2190
2190
  var number_of_conversations = "Number of conversations";
2191
2191
  var number_of_expected_conversations_based_on_the_goal = "Number of expected conversations based on the goal";
2192
+ var check_in = "Check-in";
2192
2193
  var lang_us = {
2193
2194
  dashboard: dashboard,
2194
2195
  user: user,
@@ -4394,7 +4395,8 @@ var lang_us = {
4394
4395
  save_new_password: save_new_password,
4395
4396
  teacher_code: teacher_code,
4396
4397
  number_of_conversations: number_of_conversations,
4397
- number_of_expected_conversations_based_on_the_goal: number_of_expected_conversations_based_on_the_goal
4398
+ number_of_expected_conversations_based_on_the_goal: number_of_expected_conversations_based_on_the_goal,
4399
+ check_in: check_in
4398
4400
  };
4399
4401
 
4400
4402
  var dashboard$1 = "Dashboard";
@@ -4412,7 +4414,7 @@ var cancel$1 = "Cancel";
4412
4414
  var hey$1 = "Hey";
4413
4415
  var readiness_to_learn$1 = "Readiness to Learn";
4414
4416
  var high_impact_learning_strategies$1 = "High Impact Learning Strategies";
4415
- var check_in = "Check In";
4417
+ var check_in$1 = "Check In";
4416
4418
  var check_ins$1 = "Check Ins";
4417
4419
  var reflection$1 = "Reflection";
4418
4420
  var conferences$1 = "Conferences";
@@ -6565,7 +6567,7 @@ var lang_uk = {
6565
6567
  readiness_to_learn: readiness_to_learn$1,
6566
6568
  high_impact_learning_strategies: high_impact_learning_strategies$1,
6567
6569
  "1_to_1": "1 to 1",
6568
- check_in: check_in,
6570
+ check_in: check_in$1,
6569
6571
  check_ins: check_ins$1,
6570
6572
  reflection: reflection$1,
6571
6573
  conferences: conferences$1,
@@ -8769,7 +8771,7 @@ var cancel$2 = "إلغاء";
8769
8771
  var hey$2 = "مرحبًا";
8770
8772
  var readiness_to_learn$2 = "الاستعداد للتعلم";
8771
8773
  var high_impact_learning_strategies$2 = "استراتيجيات التعلم عالية التأثير";
8772
- var check_in$1 = "تسجيل الحضور";
8774
+ var check_in$2 = "تسجيل الحضور";
8773
8775
  var check_ins$2 = "عمليات تسجيل الحضور";
8774
8776
  var reflection$2 = "التفكير";
8775
8777
  var conferences$2 = "اللقاءات";
@@ -10952,7 +10954,7 @@ var lang_ar = {
10952
10954
  readiness_to_learn: readiness_to_learn$2,
10953
10955
  high_impact_learning_strategies: high_impact_learning_strategies$2,
10954
10956
  "1_to_1": "1 إلى 1",
10955
- check_in: check_in$1,
10957
+ check_in: check_in$2,
10956
10958
  check_ins: check_ins$2,
10957
10959
  reflection: reflection$2,
10958
10960
  conferences: conferences$2,
@@ -13188,7 +13190,7 @@ var cancel$3 = "Cancelar";
13188
13190
  var hey$3 = "Hola";
13189
13191
  var readiness_to_learn$3 = "Preparación para el aprendizaje";
13190
13192
  var high_impact_learning_strategies$3 = "Estrategias de aprendizaje de alto impacto";
13191
- var check_in$2 = "Registro";
13193
+ var check_in$3 = "Registro";
13192
13194
  var check_ins$3 = "Registro de entrada";
13193
13195
  var reflection$3 = "Reflexión";
13194
13196
  var conferences$3 = "Conferencias";
@@ -15371,7 +15373,7 @@ var lang_es = {
15371
15373
  readiness_to_learn: readiness_to_learn$3,
15372
15374
  high_impact_learning_strategies: high_impact_learning_strategies$3,
15373
15375
  "1_to_1": "1 a 1",
15374
- check_in: check_in$2,
15376
+ check_in: check_in$3,
15375
15377
  check_ins: check_ins$3,
15376
15378
  reflection: reflection$3,
15377
15379
  conferences: conferences$3,
@@ -17607,7 +17609,7 @@ var cancel$4 = "取消";
17607
17609
  var hey$4 = "您好";
17608
17610
  var readiness_to_learn$4 = "准备学习";
17609
17611
  var high_impact_learning_strategies$4 = "高效学习策略";
17610
- var check_in$3 = "签到";
17612
+ var check_in$4 = "签到";
17611
17613
  var check_ins$4 = "签到";
17612
17614
  var reflection$4 = "反思";
17613
17615
  var conferences$4 = "讨论会";
@@ -19790,7 +19792,7 @@ var lang_zh = {
19790
19792
  readiness_to_learn: readiness_to_learn$4,
19791
19793
  high_impact_learning_strategies: high_impact_learning_strategies$4,
19792
19794
  "1_to_1": "一对一",
19793
- check_in: check_in$3,
19795
+ check_in: check_in$4,
19794
19796
  check_ins: check_ins$4,
19795
19797
  reflection: reflection$4,
19796
19798
  conferences: conferences$4,
@@ -22166,6 +22168,12 @@ var LANGUAGES = [{
22166
22168
  var DEFAULT_LANGUAGE_CODE = "en-US";
22167
22169
  var SUPPORTED_LANGUAGES_CODE = ["en-US", "en-GB", "ar", "es", "zh"];
22168
22170
  var screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
22171
+ var CsvImportType;
22172
+
22173
+ (function (CsvImportType) {
22174
+ CsvImportType[CsvImportType["Teacher"] = 0] = "Teacher";
22175
+ CsvImportType[CsvImportType["Admin"] = 1] = "Admin";
22176
+ })(CsvImportType || (CsvImportType = {}));
22169
22177
 
22170
22178
  var resources$5 = {
22171
22179
  "en-US": {
@@ -41879,212 +41887,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41879
41887
  })), t("log_out")))));
41880
41888
  };
41881
41889
 
41882
- var apiGetLanguage = function apiGetLanguage() {
41883
- return api.get(BASE_URL + "/api/language");
41884
- };
41885
-
41886
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41887
- return api.put(BASE_URL + "/api/language?lang=" + lang);
41888
- };
41889
-
41890
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41891
-
41892
- var useLanguages = function useLanguages() {
41893
- var dispatch = useDispatch();
41894
-
41895
- var _useTranslation = useTranslation(),
41896
- i18n = _useTranslation.i18n;
41897
-
41898
- var language = useSelector(function (state) {
41899
- return state.common.language;
41900
- });
41901
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41902
-
41903
- var _useState = useState([]),
41904
- languageList = _useState[0],
41905
- setLanguageList = _useState[1];
41906
-
41907
- var _useState2 = useState(false),
41908
- dropdownOpen = _useState2[0],
41909
- setDropdownOpen = _useState2[1];
41910
-
41911
- var _useState3 = useState(defaultLanguage),
41912
- currentLang = _useState3[0],
41913
- setCurrentLang = _useState3[1];
41914
-
41915
- var toggle = function toggle() {
41916
- return setDropdownOpen(function (prevState) {
41917
- return !prevState;
41918
- });
41919
- };
41920
-
41921
- var changeLanguageApp = function changeLanguageApp(lang) {
41922
- try {
41923
- var _temp3 = function _temp3() {
41924
- dispatch(setLoading(false));
41925
- };
41926
-
41927
- dispatch(setLoading(true));
41928
-
41929
- var _temp4 = _catch(function () {
41930
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41931
- i18n.changeLanguage(lang);
41932
- setCurrentLang(lang);
41933
- dispatch(setLanguage(lang));
41934
- });
41935
- }, function (err) {
41936
- var _err$response, _err$response$data;
41937
-
41938
- dispatch(setAlert({
41939
- type: "danger",
41940
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
41941
- }));
41942
- });
41943
-
41944
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41945
- } catch (e) {
41946
- return Promise.reject(e);
41947
- }
41948
- };
41949
-
41950
- var getListLanguage = function getListLanguage() {
41951
- try {
41952
- var _temp6 = _catch(function () {
41953
- return Promise.resolve(apiGetLanguage()).then(function (res) {
41954
- setLanguageList(res.data);
41955
- });
41956
- }, function (err) {
41957
- var _err$response2, _err$response2$data;
41958
-
41959
- dispatch(setAlert({
41960
- type: "danger",
41961
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
41962
- }));
41963
- });
41964
-
41965
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41966
- } catch (e) {
41967
- return Promise.reject(e);
41968
- }
41969
- };
41970
-
41971
- useEffect(function () {
41972
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
41973
- getListLanguage();
41974
- }, []);
41975
- return {
41976
- languageList: languageList,
41977
- toggle: toggle,
41978
- dropdownOpen: dropdownOpen,
41979
- currentLang: currentLang,
41980
- changeLanguageApp: changeLanguageApp,
41981
- setCurrentLang: setCurrentLang
41982
- };
41983
- };
41984
-
41985
- var TheLanguageDropdown = function TheLanguageDropdown() {
41986
- var _useLanguages = useLanguages(),
41987
- languageList = _useLanguages.languageList,
41988
- toggle = _useLanguages.toggle,
41989
- dropdownOpen = _useLanguages.dropdownOpen,
41990
- currentLang = _useLanguages.currentLang,
41991
- changeLanguageApp = _useLanguages.changeLanguageApp;
41992
-
41993
- var currentLanguage = useMemo(function () {
41994
- var current = languageList.find(function (i) {
41995
- return i.code === currentLang;
41996
- });
41997
- if (!current) return null;
41998
- return React.createElement(React.Fragment, null, React.createElement("img", {
41999
- className: "mr-2 " + styles['dropdown-menu-flag'],
42000
- src: "" + getStaticFileUrl(current.image)
42001
- }), " ", current.name);
42002
- }, [currentLang, languageList]);
42003
- return React.createElement(Dropdown, {
42004
- isOpen: dropdownOpen,
42005
- toggle: toggle,
42006
- className: "" + styles["dropdown-menu"]
42007
- }, React.createElement(DropdownToggle, {
42008
- className: styles["header-avatar"] + " d-flex align-items-center"
42009
- }, React.createElement("span", {
42010
- style: {
42011
- color: "#000",
42012
- textTransform: "capitalize",
42013
- display: 'flex',
42014
- alignItems: 'center'
42015
- }
42016
- }, currentLanguage, React.createElement(BsChevronDown, {
42017
- className: "ml-2",
42018
- style: {
42019
- fontSize: '10px'
42020
- }
42021
- }))), React.createElement(DropdownMenu, {
42022
- className: styles["dropdown-content-language"]
42023
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42024
- return React.createElement(DropdownItem, {
42025
- key: lang.code,
42026
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42027
- onClick: function onClick() {
42028
- return changeLanguageApp(lang.code);
42029
- }
42030
- }, React.createElement("div", {
42031
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42032
- }, React.createElement("span", {
42033
- className: "mr-2 d-flex hover-opacity"
42034
- }, React.createElement("img", {
42035
- style: {
42036
- width: "30px",
42037
- height: "25px",
42038
- borderRadius: "5px"
42039
- },
42040
- src: getStaticFileUrl(lang.image)
42041
- })), lang.name));
42042
- })));
42043
- };
42044
-
42045
- var TheHeader = function TheHeader(_ref) {
42046
- var onToggleModel = _ref.onToggleModel;
42047
- var dispatch = useDispatch();
42048
- var sidebarShow = useSelector(function (state) {
42049
- return state.common.sidebarShow;
42050
- });
42051
-
42052
- var _useTranslation = useTranslation(),
42053
- t = _useTranslation.t;
42054
-
42055
- var toggleSidebarMobile = function toggleSidebarMobile() {
42056
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42057
- dispatch(setSidebar(val));
42058
- };
42059
-
42060
- var isDistrict = window.location.host.includes("-district");
42061
- return React.createElement(CHeader, {
42062
- withSubheader: true,
42063
- className: "d-flex align-items-center justify-content-end"
42064
- }, React.createElement(CToggler, {
42065
- inHeader: true,
42066
- className: "ml-md-3 d-lg-none",
42067
- onClick: toggleSidebarMobile
42068
- }), React.createElement(CHeaderBrand, {
42069
- className: "mx-auto flex-grow-1 d-lg-none",
42070
- to: "/"
42071
- }, React.createElement("img", {
42072
- src: getStaticFileUrl(Images.LOGO_HEADER),
42073
- className: styles["header-logo"]
42074
- })), React.createElement(CHeaderNav, {
42075
- className: "pr-3"
42076
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42077
- className: "mr-3",
42078
- style: {
42079
- color: '#000'
42080
- },
42081
- href: '/privacy-policy',
42082
- target: "blank"
42083
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42084
- onToggleModel: onToggleModel
42085
- })));
42086
- };
42087
-
42088
41890
  var TITLE$3 = "Not found";
42089
41891
 
42090
41892
  var NotFound = function NotFound() {
@@ -42142,258 +41944,6 @@ var TheContent = function TheContent(_ref) {
42142
41944
 
42143
41945
  var TheContent$1 = React.memo(TheContent);
42144
41946
 
42145
- var loadingStyle = {
42146
- minWidth: "100vw",
42147
- minHeight: "100vh",
42148
- position: "fixed",
42149
- top: 0,
42150
- left: 0,
42151
- zIndex: 999999999,
42152
- backgroundColor: "rgba(0, 0, 0, 0.4)",
42153
- display: "flex",
42154
- justifyContent: "center",
42155
- alignItems: "center"
42156
- };
42157
-
42158
- var Loading = function Loading() {
42159
- var isLoading = useSelector(function (state) {
42160
- return state.common.isLoading;
42161
- });
42162
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42163
- return isLoading ? React.createElement("div", {
42164
- style: loadingStyle
42165
- }, React.createElement("div", {
42166
- className: "spinner-border text-secondary",
42167
- role: "status"
42168
- }, React.createElement("span", {
42169
- className: "sr-only"
42170
- }, "Loading..."))) : null;
42171
- };
42172
-
42173
- var firstCheckToken = function firstCheckToken() {
42174
- return Promise.resolve(_catch(function () {
42175
- var token = getAccessToken();
42176
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42177
- return tokenStatus.data ? true : false;
42178
- }) : false;
42179
- }, function () {
42180
- return false;
42181
- }));
42182
- };
42183
-
42184
- var canAccess = function canAccess(userRoles, componentRoles) {
42185
- if (!Array.isArray(userRoles)) {
42186
- return false;
42187
- }
42188
-
42189
- if (Array.isArray(componentRoles)) {
42190
- var intersects = userRoles.filter(function (i) {
42191
- return componentRoles.includes(i);
42192
- });
42193
- return intersects.length > 0;
42194
- }
42195
-
42196
- return true;
42197
- };
42198
-
42199
- var ModelSelectRole = function ModelSelectRole(_ref) {
42200
- var _handleUserRole;
42201
-
42202
- var open = _ref.open,
42203
- onToggleModel = _ref.onToggleModel;
42204
- var dispatch = useDispatch();
42205
-
42206
- var _useTranslation = useTranslation(),
42207
- t = _useTranslation.t;
42208
-
42209
- var history = useHistory();
42210
- var pathname = window.location.pathname;
42211
- var user = useSelector(function (state) {
42212
- return state.common.user;
42213
- });
42214
- var roles = user === null || user === void 0 ? void 0 : user.roles;
42215
-
42216
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42217
- dispatch(setLoading(true));
42218
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42219
- dispatch(setUser(_extends({}, user, {
42220
- roles: roleSelect
42221
- })));
42222
- localStorage.setItem("ROLES", roleSelect.toString());
42223
- onToggleModel();
42224
-
42225
- if (roles.includes("Parent")) {
42226
- history.push("/parent");
42227
- } else if (roles.includes("Admin")) {
42228
- history.push("/admin/home");
42229
- } else {
42230
- pathname !== "/home" ? history.push("/home") : window.location.reload();
42231
- }
42232
- };
42233
-
42234
- return React.createElement(Modal, {
42235
- isOpen: open,
42236
- toggle: function toggle() {
42237
- return onToggleModel();
42238
- },
42239
- className: "" + styles["model-switch-roles"],
42240
- centered: true
42241
- }, React.createElement("p", {
42242
- className: "" + styles["title"]
42243
- }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
42244
- return React.createElement("p", {
42245
- key: r,
42246
- className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
42247
- onClick: function onClick() {
42248
- return handleSelectUserRoles([r]);
42249
- }
42250
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42251
- })));
42252
- };
42253
-
42254
- var TheLayout = function TheLayout(_ref) {
42255
- var routes = _ref.routes,
42256
- navigation = _ref.navigation;
42257
- var history = useHistory();
42258
- var dispatch = useDispatch();
42259
- var user = useSelector(function (state) {
42260
- return state.common.user;
42261
- });
42262
- var language = useSelector(function (state) {
42263
- return state.common.language;
42264
- });
42265
-
42266
- var _useState = useState(false),
42267
- openModelSelectRole = _useState[0],
42268
- setOpenModelSelectRole = _useState[1];
42269
-
42270
- var _useTranslation = useTranslation(),
42271
- t = _useTranslation.t;
42272
-
42273
- var location = useLocation();
42274
- var isNotification = location.pathname.includes("notifications");
42275
- var isDistrict = window.location.host.includes("-district");
42276
-
42277
- var handleToggleModel = function handleToggleModel() {
42278
- setOpenModelSelectRole(!openModelSelectRole);
42279
- };
42280
-
42281
- var authRoutes = useMemo(function () {
42282
- return routes.filter(function (route) {
42283
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42284
- }).filter(function (route) {
42285
- return !!route.isDistrict === isDistrict;
42286
- });
42287
- }, [user, language]);
42288
- var authNavigations = useMemo(function () {
42289
- return navigation.map(function (item) {
42290
- var _item$_children, _item$_children2;
42291
-
42292
- return _extends({}, item, {
42293
- name: t(item.name),
42294
- _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
42295
- return _extends({}, x, {
42296
- name: t(x.name)
42297
- });
42298
- }) : undefined
42299
- });
42300
- }).filter(function (nav) {
42301
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42302
- }).filter(function (nav) {
42303
- return !!nav.isDistrict === isDistrict;
42304
- });
42305
- }, [user, language]);
42306
-
42307
- var getInformationSetting = function getInformationSetting() {
42308
- try {
42309
- var _temp2 = _catch(function () {
42310
- return Promise.resolve(getSchoolSettings()).then(function (res) {
42311
- dispatch(setSandboxMode(res.data.isSandboxMode));
42312
- });
42313
- }, function (err) {
42314
- console.error(err);
42315
- });
42316
-
42317
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42318
- } catch (e) {
42319
- return Promise.reject(e);
42320
- }
42321
- };
42322
-
42323
- useEffect(function () {
42324
- checkAuthentication();
42325
- }, []);
42326
- useEffect(function () {
42327
- getInformationSetting();
42328
- }, [location.pathname]);
42329
-
42330
- var checkAuthentication = function checkAuthentication() {
42331
- try {
42332
- var _temp4 = _catch(function () {
42333
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42334
- tokenStatus ? loadInfo() : resetAuth();
42335
- });
42336
- }, function () {
42337
- resetAuth();
42338
- });
42339
-
42340
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42341
- } catch (e) {
42342
- return Promise.reject(e);
42343
- }
42344
- };
42345
-
42346
- var loadInfo = function loadInfo() {
42347
- try {
42348
- var _temp6 = _catch(function () {
42349
- return Promise.resolve(getInfo()).then(function (info) {
42350
- var _info$data, _info$data$roles;
42351
-
42352
- if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
42353
- resetAuth();
42354
- }
42355
-
42356
- dispatch(setUser(info.data));
42357
- });
42358
- }, function () {
42359
- resetAuth();
42360
- });
42361
-
42362
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42363
- } catch (e) {
42364
- return Promise.reject(e);
42365
- }
42366
- };
42367
-
42368
- var resetAuth = function resetAuth() {
42369
- localStorage.removeItem(ACCESS_TOKEN);
42370
- sessionStorage.removeItem(ACCESS_TOKEN);
42371
- localStorage.removeItem("ROLES");
42372
- history.push("/");
42373
- };
42374
-
42375
- if (!user) {
42376
- return React.createElement(Loading, null);
42377
- }
42378
-
42379
- return React.createElement("div", {
42380
- className: "c-app c-default-layout"
42381
- }, !isNotification && React.createElement(TheSidebar, {
42382
- navigation: authNavigations
42383
- }), React.createElement("div", {
42384
- className: "c-wrapper"
42385
- }, !isNotification && React.createElement(TheHeader, {
42386
- onToggleModel: handleToggleModel
42387
- }), React.createElement("div", {
42388
- className: "c-body bg-white"
42389
- }, React.createElement(TheContent$1, {
42390
- routes: authRoutes
42391
- }))), React.createElement(ModelSelectRole, {
42392
- open: openModelSelectRole,
42393
- onToggleModel: handleToggleModel
42394
- }));
42395
- };
42396
-
42397
41947
  var buttonTextStyle = {
42398
41948
  fontWeight: 500
42399
41949
  };
@@ -46298,6 +45848,9 @@ var importUsersCSV = function importUsersCSV(formData) {
46298
45848
  var downloadTemplateFileUser = function downloadTemplateFileUser() {
46299
45849
  return api.get(CSV_FILE_TEACHER + "/download-template-file-user");
46300
45850
  };
45851
+ var validateCsvApi = function validateCsvApi(formData, type) {
45852
+ return api.post(CSV_FILE_TEACHER + "/validate-csv-template-student/" + type, formData);
45853
+ };
46301
45854
 
46302
45855
  var CSVType;
46303
45856
 
@@ -50094,7 +49647,7 @@ var style$2 = {
50094
49647
  color: "#fff",
50095
49648
  fontWeight: 500,
50096
49649
  fontSize: "14px",
50097
- height: "100%",
49650
+ height: "56px",
50098
49651
  justifyContent: "center"
50099
49652
  };
50100
49653
 
@@ -50193,15 +49746,19 @@ var useCSVImportTab = function useCSVImportTab() {
50193
49746
  studentDataFile = _useState5[0],
50194
49747
  setStudentDataFile = _useState5[1];
50195
49748
 
49749
+ var _useState6 = useState([]),
49750
+ errorsValidate = _useState6[0],
49751
+ setErrorsValidate = _useState6[1];
49752
+
50196
49753
  var isCheckDomainIBS = true;
50197
49754
 
50198
- var _useState6 = useState(0),
50199
- defaultTeacher = _useState6[0],
50200
- setDefaultTeacher = _useState6[1];
49755
+ var _useState7 = useState(0),
49756
+ defaultTeacher = _useState7[0],
49757
+ setDefaultTeacher = _useState7[1];
50201
49758
 
50202
- var _useState7 = useState(""),
50203
- fileName = _useState7[0],
50204
- setFileName = _useState7[1];
49759
+ var _useState8 = useState(""),
49760
+ fileName = _useState8[0],
49761
+ setFileName = _useState8[1];
50205
49762
 
50206
49763
  useEffect(function () {
50207
49764
  document.title = title$5;
@@ -50246,10 +49803,10 @@ var useCSVImportTab = function useCSVImportTab() {
50246
49803
 
50247
49804
  var upload = useCallback(function (file) {
50248
49805
  try {
50249
- var _exit2 = false;
49806
+ var _exit3 = false;
50250
49807
 
50251
- var _temp12 = function _temp12(_result2) {
50252
- if (_exit2) return _result2;
49808
+ var _temp12 = function _temp12(_result) {
49809
+ if (_exit3) return _result;
50253
49810
  dispatch(setLoading(false));
50254
49811
  var inputId = document.getElementById(id$1);
50255
49812
  var input = document.getElementById('import-student');
@@ -50263,103 +49820,114 @@ var useCSVImportTab = function useCSVImportTab() {
50263
49820
  dispatch(setLoading(true));
50264
49821
 
50265
49822
  var _temp13 = _catch(function () {
50266
- function _temp9(_result) {
50267
- if (_exit2) return _result;
50268
- dispatch(setAlert({
50269
- type: "success",
50270
- message: "Import CSV successfully"
50271
- }));
50272
- }
50273
-
50274
49823
  var formData = new FormData();
50275
49824
  formData.append("file", file, file.name);
49825
+ var typeOfCsv = type === CSVType$1.AllUser ? CsvImportType.Admin : CsvImportType.Teacher;
49826
+ return Promise.resolve(validateCsvApi(formData, typeOfCsv)).then(function (res) {
49827
+ var _exit2 = false;
50276
49828
 
50277
- var _temp8 = function () {
50278
- if (type == CSVType$1.AllUser) {
50279
- return Promise.resolve(file.text()).then(function (fileTextRaw) {
50280
- var fileText = fileTextRaw.trim();
50281
- var rows = fileText.split("\n").map(function (row) {
50282
- return row.trim();
50283
- });
50284
- var headerIndex = rows.findIndex(function (row) {
50285
- return row.split(",").includes("First Name");
50286
- });
50287
-
50288
- if (headerIndex === 0) {
50289
- throw new Error("Invalid CSV: Missing header row.");
50290
- }
49829
+ function _temp9(_result2) {
49830
+ if (_exit2) return _result2;
49831
+ dispatch(setAlert({
49832
+ type: "success",
49833
+ message: "Import CSV successfully"
49834
+ }));
49835
+ }
50291
49836
 
50292
- fileText = rows.slice(headerIndex).join("\n");
50293
- var parsedData = Papa.parse(fileText, {
50294
- header: true,
50295
- skipEmptyLines: true
50296
- });
50297
- var header = parsedData.meta.fields;
50298
- var dataRows = parsedData.data;
49837
+ if (res.data && res.data.length > 0) {
49838
+ setErrorsValidate(res.data);
49839
+ dispatch(setLoading(false));
49840
+ _exit3 = true;
49841
+ return;
49842
+ }
50299
49843
 
50300
- if (!!!dataRows.length) {
50301
- dispatch(setLoading(false));
50302
- dispatch(setAlert({
50303
- type: "danger",
50304
- message: 'The file has no data or some column names are misformed.'
50305
- }));
50306
- _exit2 = true;
50307
- return;
50308
- }
49844
+ var _temp8 = function () {
49845
+ if (type == CSVType$1.AllUser) {
49846
+ return Promise.resolve(file.text()).then(function (fileTextRaw) {
49847
+ var fileText = fileTextRaw.trim();
49848
+ var rows = fileText.split("\n").map(function (row) {
49849
+ return row.trim();
49850
+ });
49851
+ var headerIndex = rows.findIndex(function (row) {
49852
+ return row.split(",").includes("First Name");
49853
+ });
50309
49854
 
50310
- var chunkSize = 10;
50311
- var chunks = [];
49855
+ if (headerIndex === 0) {
49856
+ throw new Error("Invalid CSV: Missing header row.");
49857
+ }
50312
49858
 
50313
- for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
50314
- var chunkData = dataRows.slice(_i, _i + chunkSize);
50315
- var valuesOnly = chunkData.map(function (row) {
50316
- return Object.values(row).map(function (v) {
50317
- return (v != null ? v : "").toString().trim();
50318
- });
49859
+ fileText = rows.slice(headerIndex).join("\n");
49860
+ var parsedData = Papa.parse(fileText, {
49861
+ header: true,
49862
+ skipEmptyLines: true
50319
49863
  });
49864
+ var header = parsedData.meta.fields;
49865
+ var dataRows = parsedData.data;
50320
49866
 
50321
- if (header) {
50322
- valuesOnly.unshift(header);
49867
+ if (!!!dataRows.length) {
49868
+ dispatch(setLoading(false));
49869
+ dispatch(setAlert({
49870
+ type: "danger",
49871
+ message: 'The file has no data or some column names are misformed.'
49872
+ }));
49873
+ _exit3 = true;
49874
+ return;
50323
49875
  }
50324
49876
 
50325
- console.log({
50326
- valuesOnly: valuesOnly
50327
- });
50328
- chunks.push(valuesOnly);
50329
- }
49877
+ var chunkSize = 10;
49878
+ var chunks = [];
50330
49879
 
50331
- var _temp5 = _forTo(chunks, function (i) {
50332
- return Promise.resolve(importChunkFileUsers({
50333
- chunks: chunks[i]
50334
- })).then(function () {
50335
- return Promise.resolve(new Promise(function (res) {
50336
- return setTimeout(res, 500);
50337
- })).then(function () {});
50338
- });
50339
- });
49880
+ for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
49881
+ var chunkData = dataRows.slice(_i, _i + chunkSize);
49882
+ var valuesOnly = chunkData.map(function (row) {
49883
+ return Object.values(row).map(function (v) {
49884
+ return (v != null ? v : "").toString().trim();
49885
+ });
49886
+ });
50340
49887
 
50341
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
50342
- });
50343
- } else {
50344
- var _temp14 = function () {
50345
- if (isCheckDomainIBS) {
50346
- var _temp15 = function () {
50347
- if (type == CSVType$1.ClassReflection) {
50348
- return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
49888
+ if (header) {
49889
+ valuesOnly.unshift(header);
50349
49890
  }
50350
- }();
50351
49891
 
50352
- if (_temp15 && _temp15.then) return _temp15.then(function () {});
50353
- } else {
50354
- return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
50355
- }
50356
- }();
49892
+ console.log({
49893
+ valuesOnly: valuesOnly
49894
+ });
49895
+ chunks.push(valuesOnly);
49896
+ }
50357
49897
 
50358
- if (_temp14 && _temp14.then) return _temp14.then(function () {});
50359
- }
50360
- }();
49898
+ var _temp5 = _forTo(chunks, function (i) {
49899
+ return Promise.resolve(importChunkFileUsers({
49900
+ chunks: chunks[i]
49901
+ })).then(function () {
49902
+ return Promise.resolve(new Promise(function (res) {
49903
+ return setTimeout(res, 500);
49904
+ })).then(function () {});
49905
+ });
49906
+ });
50361
49907
 
50362
- return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49908
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
49909
+ });
49910
+ } else {
49911
+ var _temp14 = function () {
49912
+ if (isCheckDomainIBS) {
49913
+ var _temp15 = function () {
49914
+ if (type == CSVType$1.ClassReflection) {
49915
+ return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
49916
+ }
49917
+ }();
49918
+
49919
+ if (_temp15 && _temp15.then) return _temp15.then(function () {});
49920
+ } else {
49921
+ return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
49922
+ }
49923
+ }();
49924
+
49925
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
49926
+ }
49927
+ }();
49928
+
49929
+ return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49930
+ });
50363
49931
  }, function (err) {
50364
49932
  var _err$response, _err$response$data;
50365
49933
 
@@ -50514,7 +50082,9 @@ var useCSVImportTab = function useCSVImportTab() {
50514
50082
  defaultTeacher: defaultTeacher,
50515
50083
  fileName: fileName,
50516
50084
  onStudentSubmit: onStudentSubmit,
50517
- downloadTemplateUser: downloadTemplateUser
50085
+ downloadTemplateUser: downloadTemplateUser,
50086
+ errorsValidate: errorsValidate,
50087
+ setErrorsValidate: setErrorsValidate
50518
50088
  };
50519
50089
  };
50520
50090
 
@@ -50541,7 +50111,8 @@ var CSVImport = function CSVImport() {
50541
50111
  setArrStudent = _useCSVImportTab.setArrStudent,
50542
50112
  buttons = _useCSVImportTab.buttons,
50543
50113
  upload = _useCSVImportTab.upload,
50544
- downloadTemplateUser = _useCSVImportTab.downloadTemplateUser;
50114
+ downloadTemplateUser = _useCSVImportTab.downloadTemplateUser,
50115
+ errorsValidate = _useCSVImportTab.errorsValidate;
50545
50116
 
50546
50117
  var _useTranslation = useTranslation(),
50547
50118
  t = _useTranslation.t;
@@ -50594,9 +50165,9 @@ var CSVImport = function CSVImport() {
50594
50165
  accept: "text/csv"
50595
50166
  }), React.createElement(Col, {
50596
50167
  md: 6,
50597
- className: "mb-2 d-flex align-items-end"
50168
+ className: "mb-2 d-flex mt-5"
50598
50169
  }, React.createElement(Row, {
50599
- className: "w-100"
50170
+ className: "w-100 flex-column"
50600
50171
  }, React.createElement(Col, {
50601
50172
  md: 12,
50602
50173
  className: ""
@@ -50625,7 +50196,9 @@ var CSVImport = function CSVImport() {
50625
50196
  })))), React.createElement(Col, {
50626
50197
  md: 6,
50627
50198
  className: "mb-2"
50628
- }, React.createElement(Row, null, React.createElement(Col, {
50199
+ }, React.createElement(Row, {
50200
+ className: "flex-column"
50201
+ }, React.createElement(Col, {
50629
50202
  md: 12,
50630
50203
  className: "mb-2 text-right"
50631
50204
  }, React.createElement(Button, {
@@ -50655,7 +50228,12 @@ var CSVImport = function CSVImport() {
50655
50228
  return setType(button.type);
50656
50229
  }
50657
50230
  });
50658
- })))));
50231
+ })), (errorsValidate === null || errorsValidate === void 0 ? void 0 : errorsValidate.length) > 0 && errorsValidate.map(function (error, index) {
50232
+ return React.createElement(ErrorHandler, {
50233
+ key: index,
50234
+ text: error
50235
+ });
50236
+ }))));
50659
50237
  }))) );
50660
50238
  };
50661
50239
 
@@ -51740,6 +51318,34 @@ var UserDetail = function UserDetail() {
51740
51318
  });
51741
51319
  };
51742
51320
 
51321
+ var loadingStyle = {
51322
+ minWidth: "100vw",
51323
+ minHeight: "100vh",
51324
+ position: "fixed",
51325
+ top: 0,
51326
+ left: 0,
51327
+ zIndex: 999999999,
51328
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
51329
+ display: "flex",
51330
+ justifyContent: "center",
51331
+ alignItems: "center"
51332
+ };
51333
+
51334
+ var Loading = function Loading() {
51335
+ var isLoading = useSelector(function (state) {
51336
+ return state.common.isLoading;
51337
+ });
51338
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51339
+ return isLoading ? React.createElement("div", {
51340
+ style: loadingStyle
51341
+ }, React.createElement("div", {
51342
+ className: "spinner-border text-secondary",
51343
+ role: "status"
51344
+ }, React.createElement("span", {
51345
+ className: "sr-only"
51346
+ }, "Loading..."))) : null;
51347
+ };
51348
+
51743
51349
  var ScrollToTop = function ScrollToTop() {
51744
51350
  var _useLocation = useLocation(),
51745
51351
  pathname = _useLocation.pathname;
@@ -54763,6 +54369,32 @@ var store = configureStore({
54763
54369
  }
54764
54370
  });
54765
54371
 
54372
+ var firstCheckToken = function firstCheckToken() {
54373
+ return Promise.resolve(_catch(function () {
54374
+ var token = getAccessToken();
54375
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54376
+ return tokenStatus.data ? true : false;
54377
+ }) : false;
54378
+ }, function () {
54379
+ return false;
54380
+ }));
54381
+ };
54382
+
54383
+ var canAccess = function canAccess(userRoles, componentRoles) {
54384
+ if (!Array.isArray(userRoles)) {
54385
+ return false;
54386
+ }
54387
+
54388
+ if (Array.isArray(componentRoles)) {
54389
+ var intersects = userRoles.filter(function (i) {
54390
+ return componentRoles.includes(i);
54391
+ });
54392
+ return intersects.length > 0;
54393
+ }
54394
+
54395
+ return true;
54396
+ };
54397
+
54766
54398
  var isInViewport = function isInViewport(el) {
54767
54399
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54768
54400
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54796,6 +54428,410 @@ var generateRandomString = (function () {
54796
54428
  return (Math.random() + 1).toString(36).substring(7);
54797
54429
  });
54798
54430
 
54431
+ var apiGetLanguage = function apiGetLanguage() {
54432
+ return api.get(BASE_URL + "/api/language");
54433
+ };
54434
+
54435
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54436
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
54437
+ };
54438
+
54439
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54440
+
54441
+ var useLanguages = function useLanguages() {
54442
+ var dispatch = useDispatch();
54443
+
54444
+ var _useTranslation = useTranslation(),
54445
+ i18n = _useTranslation.i18n;
54446
+
54447
+ var language = useSelector(function (state) {
54448
+ return state.common.language;
54449
+ });
54450
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54451
+
54452
+ var _useState = useState([]),
54453
+ languageList = _useState[0],
54454
+ setLanguageList = _useState[1];
54455
+
54456
+ var _useState2 = useState(false),
54457
+ dropdownOpen = _useState2[0],
54458
+ setDropdownOpen = _useState2[1];
54459
+
54460
+ var _useState3 = useState(defaultLanguage),
54461
+ currentLang = _useState3[0],
54462
+ setCurrentLang = _useState3[1];
54463
+
54464
+ var toggle = function toggle() {
54465
+ return setDropdownOpen(function (prevState) {
54466
+ return !prevState;
54467
+ });
54468
+ };
54469
+
54470
+ var changeLanguageApp = function changeLanguageApp(lang) {
54471
+ try {
54472
+ var _temp3 = function _temp3() {
54473
+ dispatch(setLoading(false));
54474
+ };
54475
+
54476
+ dispatch(setLoading(true));
54477
+
54478
+ var _temp4 = _catch(function () {
54479
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54480
+ i18n.changeLanguage(lang);
54481
+ setCurrentLang(lang);
54482
+ dispatch(setLanguage(lang));
54483
+ });
54484
+ }, function (err) {
54485
+ var _err$response, _err$response$data;
54486
+
54487
+ dispatch(setAlert({
54488
+ type: "danger",
54489
+ message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
54490
+ }));
54491
+ });
54492
+
54493
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54494
+ } catch (e) {
54495
+ return Promise.reject(e);
54496
+ }
54497
+ };
54498
+
54499
+ var getListLanguage = function getListLanguage() {
54500
+ try {
54501
+ var _temp6 = _catch(function () {
54502
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
54503
+ setLanguageList(res.data);
54504
+ });
54505
+ }, function (err) {
54506
+ var _err$response2, _err$response2$data;
54507
+
54508
+ dispatch(setAlert({
54509
+ type: "danger",
54510
+ message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
54511
+ }));
54512
+ });
54513
+
54514
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54515
+ } catch (e) {
54516
+ return Promise.reject(e);
54517
+ }
54518
+ };
54519
+
54520
+ useEffect(function () {
54521
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
54522
+ getListLanguage();
54523
+ }, []);
54524
+ return {
54525
+ languageList: languageList,
54526
+ toggle: toggle,
54527
+ dropdownOpen: dropdownOpen,
54528
+ currentLang: currentLang,
54529
+ changeLanguageApp: changeLanguageApp,
54530
+ setCurrentLang: setCurrentLang
54531
+ };
54532
+ };
54533
+
54534
+ var TheLanguageDropdown = function TheLanguageDropdown() {
54535
+ var _useLanguages = useLanguages(),
54536
+ languageList = _useLanguages.languageList,
54537
+ toggle = _useLanguages.toggle,
54538
+ dropdownOpen = _useLanguages.dropdownOpen,
54539
+ currentLang = _useLanguages.currentLang,
54540
+ changeLanguageApp = _useLanguages.changeLanguageApp;
54541
+
54542
+ var currentLanguage = useMemo(function () {
54543
+ var current = languageList.find(function (i) {
54544
+ return i.code === currentLang;
54545
+ });
54546
+ if (!current) return null;
54547
+ return React.createElement(React.Fragment, null, React.createElement("img", {
54548
+ className: "mr-2 " + styles['dropdown-menu-flag'],
54549
+ src: "" + getStaticFileUrl(current.image)
54550
+ }), " ", current.name);
54551
+ }, [currentLang, languageList]);
54552
+ return React.createElement(Dropdown, {
54553
+ isOpen: dropdownOpen,
54554
+ toggle: toggle,
54555
+ className: "" + styles["dropdown-menu"]
54556
+ }, React.createElement(DropdownToggle, {
54557
+ className: styles["header-avatar"] + " d-flex align-items-center"
54558
+ }, React.createElement("span", {
54559
+ style: {
54560
+ color: "#000",
54561
+ textTransform: "capitalize",
54562
+ display: 'flex',
54563
+ alignItems: 'center'
54564
+ }
54565
+ }, currentLanguage, React.createElement(BsChevronDown, {
54566
+ className: "ml-2",
54567
+ style: {
54568
+ fontSize: '10px'
54569
+ }
54570
+ }))), React.createElement(DropdownMenu, {
54571
+ className: styles["dropdown-content-language"]
54572
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54573
+ return React.createElement(DropdownItem, {
54574
+ key: lang.code,
54575
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54576
+ onClick: function onClick() {
54577
+ return changeLanguageApp(lang.code);
54578
+ }
54579
+ }, React.createElement("div", {
54580
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54581
+ }, React.createElement("span", {
54582
+ className: "mr-2 d-flex hover-opacity"
54583
+ }, React.createElement("img", {
54584
+ style: {
54585
+ width: "30px",
54586
+ height: "25px",
54587
+ borderRadius: "5px"
54588
+ },
54589
+ src: getStaticFileUrl(lang.image)
54590
+ })), lang.name));
54591
+ })));
54592
+ };
54593
+
54594
+ var TheHeader = function TheHeader(_ref) {
54595
+ var onToggleModel = _ref.onToggleModel;
54596
+ var dispatch = useDispatch();
54597
+ var sidebarShow = useSelector(function (state) {
54598
+ return state.common.sidebarShow;
54599
+ });
54600
+
54601
+ var _useTranslation = useTranslation(),
54602
+ t = _useTranslation.t;
54603
+
54604
+ var toggleSidebarMobile = function toggleSidebarMobile() {
54605
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54606
+ dispatch(setSidebar(val));
54607
+ };
54608
+
54609
+ var isDistrict = window.location.host.includes("-district");
54610
+ return React.createElement(CHeader, {
54611
+ withSubheader: true,
54612
+ className: "d-flex align-items-center justify-content-end"
54613
+ }, React.createElement(CToggler, {
54614
+ inHeader: true,
54615
+ className: "ml-md-3 d-lg-none",
54616
+ onClick: toggleSidebarMobile
54617
+ }), React.createElement(CHeaderBrand, {
54618
+ className: "mx-auto flex-grow-1 d-lg-none",
54619
+ to: "/"
54620
+ }, React.createElement("img", {
54621
+ src: getStaticFileUrl(Images.LOGO_HEADER),
54622
+ className: styles["header-logo"]
54623
+ })), React.createElement(CHeaderNav, {
54624
+ className: "pr-3"
54625
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54626
+ className: "mr-3",
54627
+ style: {
54628
+ color: '#000'
54629
+ },
54630
+ href: '/privacy-policy',
54631
+ target: "blank"
54632
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54633
+ onToggleModel: onToggleModel
54634
+ })));
54635
+ };
54636
+
54637
+ var ModelSelectRole = function ModelSelectRole(_ref) {
54638
+ var _handleUserRole;
54639
+
54640
+ var open = _ref.open,
54641
+ onToggleModel = _ref.onToggleModel;
54642
+ var dispatch = useDispatch();
54643
+
54644
+ var _useTranslation = useTranslation(),
54645
+ t = _useTranslation.t;
54646
+
54647
+ var history = useHistory();
54648
+ var pathname = window.location.pathname;
54649
+ var user = useSelector(function (state) {
54650
+ return state.common.user;
54651
+ });
54652
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
54653
+
54654
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54655
+ dispatch(setLoading(true));
54656
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54657
+ dispatch(setUser(_extends({}, user, {
54658
+ roles: roleSelect
54659
+ })));
54660
+ localStorage.setItem("ROLES", roleSelect.toString());
54661
+ onToggleModel();
54662
+
54663
+ if (roles.includes("Parent")) {
54664
+ history.push("/parent");
54665
+ } else if (roles.includes("Admin")) {
54666
+ history.push("/admin/home");
54667
+ } else {
54668
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
54669
+ }
54670
+ };
54671
+
54672
+ return React.createElement(Modal, {
54673
+ isOpen: open,
54674
+ toggle: function toggle() {
54675
+ return onToggleModel();
54676
+ },
54677
+ className: "" + styles["model-switch-roles"],
54678
+ centered: true
54679
+ }, React.createElement("p", {
54680
+ className: "" + styles["title"]
54681
+ }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
54682
+ return React.createElement("p", {
54683
+ key: r,
54684
+ className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
54685
+ onClick: function onClick() {
54686
+ return handleSelectUserRoles([r]);
54687
+ }
54688
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54689
+ })));
54690
+ };
54691
+
54692
+ var TheLayout = function TheLayout(_ref) {
54693
+ var routes = _ref.routes,
54694
+ navigation = _ref.navigation;
54695
+ var history = useHistory();
54696
+ var dispatch = useDispatch();
54697
+ var user = useSelector(function (state) {
54698
+ return state.common.user;
54699
+ });
54700
+ var language = useSelector(function (state) {
54701
+ return state.common.language;
54702
+ });
54703
+
54704
+ var _useState = useState(false),
54705
+ openModelSelectRole = _useState[0],
54706
+ setOpenModelSelectRole = _useState[1];
54707
+
54708
+ var _useTranslation = useTranslation(),
54709
+ t = _useTranslation.t;
54710
+
54711
+ var location = useLocation();
54712
+ var isNotification = location.pathname.includes("notifications");
54713
+ var isDistrict = window.location.host.includes("-district");
54714
+
54715
+ var handleToggleModel = function handleToggleModel() {
54716
+ setOpenModelSelectRole(!openModelSelectRole);
54717
+ };
54718
+
54719
+ var authRoutes = useMemo(function () {
54720
+ return routes.filter(function (route) {
54721
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54722
+ }).filter(function (route) {
54723
+ return !!route.isDistrict === isDistrict;
54724
+ });
54725
+ }, [user, language]);
54726
+ var authNavigations = useMemo(function () {
54727
+ return navigation.map(function (item) {
54728
+ var _item$_children, _item$_children2;
54729
+
54730
+ return _extends({}, item, {
54731
+ name: t(item.name),
54732
+ _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
54733
+ return _extends({}, x, {
54734
+ name: t(x.name)
54735
+ });
54736
+ }) : undefined
54737
+ });
54738
+ }).filter(function (nav) {
54739
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54740
+ }).filter(function (nav) {
54741
+ return !!nav.isDistrict === isDistrict;
54742
+ });
54743
+ }, [user, language]);
54744
+
54745
+ var getInformationSetting = function getInformationSetting() {
54746
+ try {
54747
+ var _temp2 = _catch(function () {
54748
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
54749
+ dispatch(setSandboxMode(res.data.isSandboxMode));
54750
+ });
54751
+ }, function (err) {
54752
+ console.error(err);
54753
+ });
54754
+
54755
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54756
+ } catch (e) {
54757
+ return Promise.reject(e);
54758
+ }
54759
+ };
54760
+
54761
+ useEffect(function () {
54762
+ checkAuthentication();
54763
+ }, []);
54764
+ useEffect(function () {
54765
+ getInformationSetting();
54766
+ }, [location.pathname]);
54767
+
54768
+ var checkAuthentication = function checkAuthentication() {
54769
+ try {
54770
+ var _temp4 = _catch(function () {
54771
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54772
+ tokenStatus ? loadInfo() : resetAuth();
54773
+ });
54774
+ }, function () {
54775
+ resetAuth();
54776
+ });
54777
+
54778
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54779
+ } catch (e) {
54780
+ return Promise.reject(e);
54781
+ }
54782
+ };
54783
+
54784
+ var loadInfo = function loadInfo() {
54785
+ try {
54786
+ var _temp6 = _catch(function () {
54787
+ return Promise.resolve(getInfo()).then(function (info) {
54788
+ var _info$data, _info$data$roles;
54789
+
54790
+ if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
54791
+ resetAuth();
54792
+ }
54793
+
54794
+ dispatch(setUser(info.data));
54795
+ });
54796
+ }, function () {
54797
+ resetAuth();
54798
+ });
54799
+
54800
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54801
+ } catch (e) {
54802
+ return Promise.reject(e);
54803
+ }
54804
+ };
54805
+
54806
+ var resetAuth = function resetAuth() {
54807
+ localStorage.removeItem(ACCESS_TOKEN);
54808
+ sessionStorage.removeItem(ACCESS_TOKEN);
54809
+ localStorage.removeItem("ROLES");
54810
+ history.push("/");
54811
+ };
54812
+
54813
+ if (!user) {
54814
+ return React.createElement(Loading, null);
54815
+ }
54816
+
54817
+ return React.createElement("div", {
54818
+ className: "c-app c-default-layout"
54819
+ }, !isNotification && React.createElement(TheSidebar, {
54820
+ navigation: authNavigations
54821
+ }), React.createElement("div", {
54822
+ className: "c-wrapper"
54823
+ }, !isNotification && React.createElement(TheHeader, {
54824
+ onToggleModel: handleToggleModel
54825
+ }), React.createElement("div", {
54826
+ className: "c-body bg-white"
54827
+ }, React.createElement(TheContent$1, {
54828
+ routes: authRoutes
54829
+ }))), React.createElement(ModelSelectRole, {
54830
+ open: openModelSelectRole,
54831
+ onToggleModel: handleToggleModel
54832
+ }));
54833
+ };
54834
+
54799
54835
  var amplitudeClient = amplitude;
54800
54836
 
54801
54837
  export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, DEFAULT_LANGUAGE_CODE, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, IS_USER_SESSION_BROWSER, Images, LANGUAGES, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationLogoutModal, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SANDBOX_NOTIFICATION, SUPPORTED_LANGUAGES_CODE, SandboxAlert, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserContainer, UserDetail, UserList, addTab, amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getCookieValue, getFileUrl, getInfo, getStaticFileUrl, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableMarioAi, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setOpenModelCongratulation, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSandboxMode, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, setWeeklyQuestList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };