mario-core 2.9.416-feedback → 2.9.416-release

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, 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';
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';
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, CContainer, CHeader, CToggler, CHeaderBrand, CHeaderNav } from '@coreui/react';
20
+ import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CHeader, CToggler, CHeaderBrand, CHeaderNav, CContainer } 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';
@@ -22166,12 +22166,6 @@ var LANGUAGES = [{
22166
22166
  var DEFAULT_LANGUAGE_CODE = "en-US";
22167
22167
  var SUPPORTED_LANGUAGES_CODE = ["en-US", "en-GB", "ar", "es", "zh"];
22168
22168
  var screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
22169
- var CsvImportType;
22170
-
22171
- (function (CsvImportType) {
22172
- CsvImportType[CsvImportType["Teacher"] = 0] = "Teacher";
22173
- CsvImportType[CsvImportType["Admin"] = 1] = "Admin";
22174
- })(CsvImportType || (CsvImportType = {}));
22175
22169
 
22176
22170
  var resources$5 = {
22177
22171
  "en-US": {
@@ -39656,7 +39650,7 @@ var BlockLogin = function BlockLogin(_ref) {
39656
39650
 
39657
39651
  var onSuccessGoogle = function onSuccessGoogle(res) {
39658
39652
  if (!!(res !== null && res !== void 0 && res.accessToken)) {
39659
- var _hostName$split, _email$split;
39653
+ var _hostName$split, _email$split, _extensionEmail$split, _extensionEmail$split2;
39660
39654
 
39661
39655
  var _res$profileObj = res.profileObj,
39662
39656
  email = _res$profileObj.email,
@@ -39669,8 +39663,15 @@ var BlockLogin = function BlockLogin(_ref) {
39669
39663
  var hostName = window.location.hostname;
39670
39664
  var subDomain = (_hostName$split = hostName.split(".marioforme.com")) === null || _hostName$split === void 0 ? void 0 : _hostName$split[0];
39671
39665
  var emailDomain = (_email$split = email.split("@")) === null || _email$split === void 0 ? void 0 : _email$split[1];
39666
+ var matchExtension = extensionEmail === null || extensionEmail === void 0 ? void 0 : (_extensionEmail$split = extensionEmail.split(",")) === null || _extensionEmail$split === void 0 ? void 0 : (_extensionEmail$split2 = _extensionEmail$split.map(function (x) {
39667
+ return x.trim();
39668
+ })) === null || _extensionEmail$split2 === void 0 ? void 0 : _extensionEmail$split2.filter(function (x) {
39669
+ return x;
39670
+ }).some(function (ext) {
39671
+ return emailDomain.includes(ext);
39672
+ });
39672
39673
 
39673
- if (!emailDomain.includes(subDomain) && !emailDomain.includes(extensionEmail)) {
39674
+ if (!emailDomain.includes(subDomain) && !matchExtension) {
39674
39675
  alert("The email address you used does not match the login information in the database. Please check that you are using your school assigned email address to log into MARIO for Me. If you have further trouble please notify your school site administrator");
39675
39676
  return;
39676
39677
  }
@@ -41885,6 +41886,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41885
41886
  })), t("log_out")))));
41886
41887
  };
41887
41888
 
41889
+ var apiGetLanguage = function apiGetLanguage() {
41890
+ return api.get(BASE_URL + "/api/language");
41891
+ };
41892
+
41893
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41894
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41895
+ };
41896
+
41897
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41898
+
41899
+ var useLanguages = function useLanguages() {
41900
+ var dispatch = useDispatch();
41901
+
41902
+ var _useTranslation = useTranslation(),
41903
+ i18n = _useTranslation.i18n;
41904
+
41905
+ var language = useSelector(function (state) {
41906
+ return state.common.language;
41907
+ });
41908
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41909
+
41910
+ var _useState = useState([]),
41911
+ languageList = _useState[0],
41912
+ setLanguageList = _useState[1];
41913
+
41914
+ var _useState2 = useState(false),
41915
+ dropdownOpen = _useState2[0],
41916
+ setDropdownOpen = _useState2[1];
41917
+
41918
+ var _useState3 = useState(defaultLanguage),
41919
+ currentLang = _useState3[0],
41920
+ setCurrentLang = _useState3[1];
41921
+
41922
+ var toggle = function toggle() {
41923
+ return setDropdownOpen(function (prevState) {
41924
+ return !prevState;
41925
+ });
41926
+ };
41927
+
41928
+ var changeLanguageApp = function changeLanguageApp(lang) {
41929
+ try {
41930
+ var _temp3 = function _temp3() {
41931
+ dispatch(setLoading(false));
41932
+ };
41933
+
41934
+ dispatch(setLoading(true));
41935
+
41936
+ var _temp4 = _catch(function () {
41937
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41938
+ i18n.changeLanguage(lang);
41939
+ setCurrentLang(lang);
41940
+ dispatch(setLanguage(lang));
41941
+ });
41942
+ }, function (err) {
41943
+ var _err$response, _err$response$data;
41944
+
41945
+ dispatch(setAlert({
41946
+ type: "danger",
41947
+ 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
41948
+ }));
41949
+ });
41950
+
41951
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41952
+ } catch (e) {
41953
+ return Promise.reject(e);
41954
+ }
41955
+ };
41956
+
41957
+ var getListLanguage = function getListLanguage() {
41958
+ try {
41959
+ var _temp6 = _catch(function () {
41960
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
41961
+ setLanguageList(res.data);
41962
+ });
41963
+ }, function (err) {
41964
+ var _err$response2, _err$response2$data;
41965
+
41966
+ dispatch(setAlert({
41967
+ type: "danger",
41968
+ 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
41969
+ }));
41970
+ });
41971
+
41972
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41973
+ } catch (e) {
41974
+ return Promise.reject(e);
41975
+ }
41976
+ };
41977
+
41978
+ useEffect(function () {
41979
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
41980
+ getListLanguage();
41981
+ }, []);
41982
+ return {
41983
+ languageList: languageList,
41984
+ toggle: toggle,
41985
+ dropdownOpen: dropdownOpen,
41986
+ currentLang: currentLang,
41987
+ changeLanguageApp: changeLanguageApp,
41988
+ setCurrentLang: setCurrentLang
41989
+ };
41990
+ };
41991
+
41992
+ var TheLanguageDropdown = function TheLanguageDropdown() {
41993
+ var _useLanguages = useLanguages(),
41994
+ languageList = _useLanguages.languageList,
41995
+ toggle = _useLanguages.toggle,
41996
+ dropdownOpen = _useLanguages.dropdownOpen,
41997
+ currentLang = _useLanguages.currentLang,
41998
+ changeLanguageApp = _useLanguages.changeLanguageApp;
41999
+
42000
+ var currentLanguage = useMemo(function () {
42001
+ var current = languageList.find(function (i) {
42002
+ return i.code === currentLang;
42003
+ });
42004
+ if (!current) return null;
42005
+ return React.createElement(React.Fragment, null, React.createElement("img", {
42006
+ className: "mr-2 " + styles['dropdown-menu-flag'],
42007
+ src: "" + getStaticFileUrl(current.image)
42008
+ }), " ", current.name);
42009
+ }, [currentLang, languageList]);
42010
+ return React.createElement(Dropdown, {
42011
+ isOpen: dropdownOpen,
42012
+ toggle: toggle,
42013
+ className: "" + styles["dropdown-menu"]
42014
+ }, React.createElement(DropdownToggle, {
42015
+ className: styles["header-avatar"] + " d-flex align-items-center"
42016
+ }, React.createElement("span", {
42017
+ style: {
42018
+ color: "#000",
42019
+ textTransform: "capitalize",
42020
+ display: 'flex',
42021
+ alignItems: 'center'
42022
+ }
42023
+ }, currentLanguage, React.createElement(BsChevronDown, {
42024
+ className: "ml-2",
42025
+ style: {
42026
+ fontSize: '10px'
42027
+ }
42028
+ }))), React.createElement(DropdownMenu, {
42029
+ className: styles["dropdown-content-language"]
42030
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42031
+ return React.createElement(DropdownItem, {
42032
+ key: lang.code,
42033
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42034
+ onClick: function onClick() {
42035
+ return changeLanguageApp(lang.code);
42036
+ }
42037
+ }, React.createElement("div", {
42038
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42039
+ }, React.createElement("span", {
42040
+ className: "mr-2 d-flex hover-opacity"
42041
+ }, React.createElement("img", {
42042
+ style: {
42043
+ width: "30px",
42044
+ height: "25px",
42045
+ borderRadius: "5px"
42046
+ },
42047
+ src: getStaticFileUrl(lang.image)
42048
+ })), lang.name));
42049
+ })));
42050
+ };
42051
+
42052
+ var TheHeader = function TheHeader(_ref) {
42053
+ var onToggleModel = _ref.onToggleModel;
42054
+ var dispatch = useDispatch();
42055
+ var sidebarShow = useSelector(function (state) {
42056
+ return state.common.sidebarShow;
42057
+ });
42058
+
42059
+ var _useTranslation = useTranslation(),
42060
+ t = _useTranslation.t;
42061
+
42062
+ var toggleSidebarMobile = function toggleSidebarMobile() {
42063
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42064
+ dispatch(setSidebar(val));
42065
+ };
42066
+
42067
+ var isDistrict = window.location.host.includes("-district");
42068
+ return React.createElement(CHeader, {
42069
+ withSubheader: true,
42070
+ className: "d-flex align-items-center justify-content-end"
42071
+ }, React.createElement(CToggler, {
42072
+ inHeader: true,
42073
+ className: "ml-md-3 d-lg-none",
42074
+ onClick: toggleSidebarMobile
42075
+ }), React.createElement(CHeaderBrand, {
42076
+ className: "mx-auto flex-grow-1 d-lg-none",
42077
+ to: "/"
42078
+ }, React.createElement("img", {
42079
+ src: getStaticFileUrl(Images.LOGO_HEADER),
42080
+ className: styles["header-logo"]
42081
+ })), React.createElement(CHeaderNav, {
42082
+ className: "pr-3"
42083
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42084
+ className: "mr-3",
42085
+ style: {
42086
+ color: '#000'
42087
+ },
42088
+ href: '/privacy-policy',
42089
+ target: "blank"
42090
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42091
+ onToggleModel: onToggleModel
42092
+ })));
42093
+ };
42094
+
41888
42095
  var TITLE$3 = "Not found";
41889
42096
 
41890
42097
  var NotFound = function NotFound() {
@@ -41942,6 +42149,258 @@ var TheContent = function TheContent(_ref) {
41942
42149
 
41943
42150
  var TheContent$1 = React.memo(TheContent);
41944
42151
 
42152
+ var loadingStyle = {
42153
+ minWidth: "100vw",
42154
+ minHeight: "100vh",
42155
+ position: "fixed",
42156
+ top: 0,
42157
+ left: 0,
42158
+ zIndex: 999999999,
42159
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42160
+ display: "flex",
42161
+ justifyContent: "center",
42162
+ alignItems: "center"
42163
+ };
42164
+
42165
+ var Loading = function Loading() {
42166
+ var isLoading = useSelector(function (state) {
42167
+ return state.common.isLoading;
42168
+ });
42169
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42170
+ return isLoading ? React.createElement("div", {
42171
+ style: loadingStyle
42172
+ }, React.createElement("div", {
42173
+ className: "spinner-border text-secondary",
42174
+ role: "status"
42175
+ }, React.createElement("span", {
42176
+ className: "sr-only"
42177
+ }, "Loading..."))) : null;
42178
+ };
42179
+
42180
+ var firstCheckToken = function firstCheckToken() {
42181
+ return Promise.resolve(_catch(function () {
42182
+ var token = getAccessToken();
42183
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42184
+ return tokenStatus.data ? true : false;
42185
+ }) : false;
42186
+ }, function () {
42187
+ return false;
42188
+ }));
42189
+ };
42190
+
42191
+ var canAccess = function canAccess(userRoles, componentRoles) {
42192
+ if (!Array.isArray(userRoles)) {
42193
+ return false;
42194
+ }
42195
+
42196
+ if (Array.isArray(componentRoles)) {
42197
+ var intersects = userRoles.filter(function (i) {
42198
+ return componentRoles.includes(i);
42199
+ });
42200
+ return intersects.length > 0;
42201
+ }
42202
+
42203
+ return true;
42204
+ };
42205
+
42206
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42207
+ var _handleUserRole;
42208
+
42209
+ var open = _ref.open,
42210
+ onToggleModel = _ref.onToggleModel;
42211
+ var dispatch = useDispatch();
42212
+
42213
+ var _useTranslation = useTranslation(),
42214
+ t = _useTranslation.t;
42215
+
42216
+ var history = useHistory();
42217
+ var pathname = window.location.pathname;
42218
+ var user = useSelector(function (state) {
42219
+ return state.common.user;
42220
+ });
42221
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42222
+
42223
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42224
+ dispatch(setLoading(true));
42225
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42226
+ dispatch(setUser(_extends({}, user, {
42227
+ roles: roleSelect
42228
+ })));
42229
+ localStorage.setItem("ROLES", roleSelect.toString());
42230
+ onToggleModel();
42231
+
42232
+ if (roles.includes("Parent")) {
42233
+ history.push("/parent");
42234
+ } else if (roles.includes("Admin")) {
42235
+ history.push("/admin/home");
42236
+ } else {
42237
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42238
+ }
42239
+ };
42240
+
42241
+ return React.createElement(Modal, {
42242
+ isOpen: open,
42243
+ toggle: function toggle() {
42244
+ return onToggleModel();
42245
+ },
42246
+ className: "" + styles["model-switch-roles"],
42247
+ centered: true
42248
+ }, React.createElement("p", {
42249
+ className: "" + styles["title"]
42250
+ }, 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) {
42251
+ return React.createElement("p", {
42252
+ key: r,
42253
+ 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" : ""],
42254
+ onClick: function onClick() {
42255
+ return handleSelectUserRoles([r]);
42256
+ }
42257
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42258
+ })));
42259
+ };
42260
+
42261
+ var TheLayout = function TheLayout(_ref) {
42262
+ var routes = _ref.routes,
42263
+ navigation = _ref.navigation;
42264
+ var history = useHistory();
42265
+ var dispatch = useDispatch();
42266
+ var user = useSelector(function (state) {
42267
+ return state.common.user;
42268
+ });
42269
+ var language = useSelector(function (state) {
42270
+ return state.common.language;
42271
+ });
42272
+
42273
+ var _useState = useState(false),
42274
+ openModelSelectRole = _useState[0],
42275
+ setOpenModelSelectRole = _useState[1];
42276
+
42277
+ var _useTranslation = useTranslation(),
42278
+ t = _useTranslation.t;
42279
+
42280
+ var location = useLocation();
42281
+ var isNotification = location.pathname.includes("notifications");
42282
+ var isDistrict = window.location.host.includes("-district");
42283
+
42284
+ var handleToggleModel = function handleToggleModel() {
42285
+ setOpenModelSelectRole(!openModelSelectRole);
42286
+ };
42287
+
42288
+ var authRoutes = useMemo(function () {
42289
+ return routes.filter(function (route) {
42290
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42291
+ }).filter(function (route) {
42292
+ return !!route.isDistrict === isDistrict;
42293
+ });
42294
+ }, [user, language]);
42295
+ var authNavigations = useMemo(function () {
42296
+ return navigation.map(function (item) {
42297
+ var _item$_children, _item$_children2;
42298
+
42299
+ return _extends({}, item, {
42300
+ name: t(item.name),
42301
+ _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) {
42302
+ return _extends({}, x, {
42303
+ name: t(x.name)
42304
+ });
42305
+ }) : undefined
42306
+ });
42307
+ }).filter(function (nav) {
42308
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42309
+ }).filter(function (nav) {
42310
+ return !!nav.isDistrict === isDistrict;
42311
+ });
42312
+ }, [user, language]);
42313
+
42314
+ var getInformationSetting = function getInformationSetting() {
42315
+ try {
42316
+ var _temp2 = _catch(function () {
42317
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42318
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42319
+ });
42320
+ }, function (err) {
42321
+ console.error(err);
42322
+ });
42323
+
42324
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42325
+ } catch (e) {
42326
+ return Promise.reject(e);
42327
+ }
42328
+ };
42329
+
42330
+ useEffect(function () {
42331
+ checkAuthentication();
42332
+ }, []);
42333
+ useEffect(function () {
42334
+ getInformationSetting();
42335
+ }, [location.pathname]);
42336
+
42337
+ var checkAuthentication = function checkAuthentication() {
42338
+ try {
42339
+ var _temp4 = _catch(function () {
42340
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42341
+ tokenStatus ? loadInfo() : resetAuth();
42342
+ });
42343
+ }, function () {
42344
+ resetAuth();
42345
+ });
42346
+
42347
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42348
+ } catch (e) {
42349
+ return Promise.reject(e);
42350
+ }
42351
+ };
42352
+
42353
+ var loadInfo = function loadInfo() {
42354
+ try {
42355
+ var _temp6 = _catch(function () {
42356
+ return Promise.resolve(getInfo()).then(function (info) {
42357
+ var _info$data, _info$data$roles;
42358
+
42359
+ 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"))) {
42360
+ resetAuth();
42361
+ }
42362
+
42363
+ dispatch(setUser(info.data));
42364
+ });
42365
+ }, function () {
42366
+ resetAuth();
42367
+ });
42368
+
42369
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42370
+ } catch (e) {
42371
+ return Promise.reject(e);
42372
+ }
42373
+ };
42374
+
42375
+ var resetAuth = function resetAuth() {
42376
+ localStorage.removeItem(ACCESS_TOKEN);
42377
+ sessionStorage.removeItem(ACCESS_TOKEN);
42378
+ localStorage.removeItem("ROLES");
42379
+ history.push("/");
42380
+ };
42381
+
42382
+ if (!user) {
42383
+ return React.createElement(Loading, null);
42384
+ }
42385
+
42386
+ return React.createElement("div", {
42387
+ className: "c-app c-default-layout"
42388
+ }, !isNotification && React.createElement(TheSidebar, {
42389
+ navigation: authNavigations
42390
+ }), React.createElement("div", {
42391
+ className: "c-wrapper"
42392
+ }, !isNotification && React.createElement(TheHeader, {
42393
+ onToggleModel: handleToggleModel
42394
+ }), React.createElement("div", {
42395
+ className: "c-body bg-white"
42396
+ }, React.createElement(TheContent$1, {
42397
+ routes: authRoutes
42398
+ }))), React.createElement(ModelSelectRole, {
42399
+ open: openModelSelectRole,
42400
+ onToggleModel: handleToggleModel
42401
+ }));
42402
+ };
42403
+
41945
42404
  var buttonTextStyle = {
41946
42405
  fontWeight: 500
41947
42406
  };
@@ -45846,9 +46305,6 @@ var importUsersCSV = function importUsersCSV(formData) {
45846
46305
  var downloadTemplateFileUser = function downloadTemplateFileUser() {
45847
46306
  return api.get(CSV_FILE_TEACHER + "/download-template-file-user");
45848
46307
  };
45849
- var validateCsvApi = function validateCsvApi(formData, type) {
45850
- return api.post(CSV_FILE_TEACHER + "/validate-csv-template-student/" + type, formData);
45851
- };
45852
46308
 
45853
46309
  var CSVType;
45854
46310
 
@@ -49645,7 +50101,7 @@ var style$2 = {
49645
50101
  color: "#fff",
49646
50102
  fontWeight: 500,
49647
50103
  fontSize: "14px",
49648
- height: "56px",
50104
+ height: "100%",
49649
50105
  justifyContent: "center"
49650
50106
  };
49651
50107
 
@@ -49744,19 +50200,15 @@ var useCSVImportTab = function useCSVImportTab() {
49744
50200
  studentDataFile = _useState5[0],
49745
50201
  setStudentDataFile = _useState5[1];
49746
50202
 
49747
- var _useState6 = useState([]),
49748
- errorsValidate = _useState6[0],
49749
- setErrorsValidate = _useState6[1];
49750
-
49751
50203
  var isCheckDomainIBS = true;
49752
50204
 
49753
- var _useState7 = useState(0),
49754
- defaultTeacher = _useState7[0],
49755
- setDefaultTeacher = _useState7[1];
50205
+ var _useState6 = useState(0),
50206
+ defaultTeacher = _useState6[0],
50207
+ setDefaultTeacher = _useState6[1];
49756
50208
 
49757
- var _useState8 = useState(""),
49758
- fileName = _useState8[0],
49759
- setFileName = _useState8[1];
50209
+ var _useState7 = useState(""),
50210
+ fileName = _useState7[0],
50211
+ setFileName = _useState7[1];
49760
50212
 
49761
50213
  useEffect(function () {
49762
50214
  document.title = title$5;
@@ -49801,10 +50253,10 @@ var useCSVImportTab = function useCSVImportTab() {
49801
50253
 
49802
50254
  var upload = useCallback(function (file) {
49803
50255
  try {
49804
- var _exit3 = false;
50256
+ var _exit2 = false;
49805
50257
 
49806
- var _temp12 = function _temp12(_result) {
49807
- if (_exit3) return _result;
50258
+ var _temp12 = function _temp12(_result2) {
50259
+ if (_exit2) return _result2;
49808
50260
  dispatch(setLoading(false));
49809
50261
  var inputId = document.getElementById(id$1);
49810
50262
  var input = document.getElementById('import-student');
@@ -49818,114 +50270,103 @@ var useCSVImportTab = function useCSVImportTab() {
49818
50270
  dispatch(setLoading(true));
49819
50271
 
49820
50272
  var _temp13 = _catch(function () {
50273
+ function _temp9(_result) {
50274
+ if (_exit2) return _result;
50275
+ dispatch(setAlert({
50276
+ type: "success",
50277
+ message: "Import CSV successfully"
50278
+ }));
50279
+ }
50280
+
49821
50281
  var formData = new FormData();
49822
50282
  formData.append("file", file, file.name);
49823
- var typeOfCsv = type === CSVType$1.AllUser ? CsvImportType.Admin : CsvImportType.Teacher;
49824
- return Promise.resolve(validateCsvApi(formData, typeOfCsv)).then(function (res) {
49825
- var _exit2 = false;
49826
50283
 
49827
- function _temp9(_result2) {
49828
- if (_exit2) return _result2;
49829
- dispatch(setAlert({
49830
- type: "success",
49831
- message: "Import CSV successfully"
49832
- }));
49833
- }
49834
-
49835
- if (res.data && res.data.length > 0) {
49836
- setErrorsValidate(res.data);
49837
- dispatch(setLoading(false));
49838
- _exit3 = true;
49839
- return;
49840
- }
49841
-
49842
- var _temp8 = function () {
49843
- if (type == CSVType$1.AllUser) {
49844
- return Promise.resolve(file.text()).then(function (fileTextRaw) {
49845
- var fileText = fileTextRaw.trim();
49846
- var rows = fileText.split("\n").map(function (row) {
49847
- return row.trim();
49848
- });
49849
- var headerIndex = rows.findIndex(function (row) {
49850
- return row.split(",").includes("First Name");
49851
- });
50284
+ var _temp8 = function () {
50285
+ if (type == CSVType$1.AllUser) {
50286
+ return Promise.resolve(file.text()).then(function (fileTextRaw) {
50287
+ var fileText = fileTextRaw.trim();
50288
+ var rows = fileText.split("\n").map(function (row) {
50289
+ return row.trim();
50290
+ });
50291
+ var headerIndex = rows.findIndex(function (row) {
50292
+ return row.split(",").includes("First Name");
50293
+ });
49852
50294
 
49853
- if (headerIndex === 0) {
49854
- throw new Error("Invalid CSV: Missing header row.");
49855
- }
50295
+ if (headerIndex === 0) {
50296
+ throw new Error("Invalid CSV: Missing header row.");
50297
+ }
49856
50298
 
49857
- fileText = rows.slice(headerIndex).join("\n");
49858
- var parsedData = Papa.parse(fileText, {
49859
- header: true,
49860
- skipEmptyLines: true
49861
- });
49862
- var header = parsedData.meta.fields;
49863
- var dataRows = parsedData.data;
50299
+ fileText = rows.slice(headerIndex).join("\n");
50300
+ var parsedData = Papa.parse(fileText, {
50301
+ header: true,
50302
+ skipEmptyLines: true
50303
+ });
50304
+ var header = parsedData.meta.fields;
50305
+ var dataRows = parsedData.data;
49864
50306
 
49865
- if (!!!dataRows.length) {
49866
- dispatch(setLoading(false));
49867
- dispatch(setAlert({
49868
- type: "danger",
49869
- message: 'The file has no data or some column names are misformed.'
49870
- }));
49871
- _exit3 = true;
49872
- return;
49873
- }
50307
+ if (!!!dataRows.length) {
50308
+ dispatch(setLoading(false));
50309
+ dispatch(setAlert({
50310
+ type: "danger",
50311
+ message: 'The file has no data or some column names are misformed.'
50312
+ }));
50313
+ _exit2 = true;
50314
+ return;
50315
+ }
49874
50316
 
49875
- var chunkSize = 10;
49876
- var chunks = [];
50317
+ var chunkSize = 10;
50318
+ var chunks = [];
49877
50319
 
49878
- for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
49879
- var chunkData = dataRows.slice(_i, _i + chunkSize);
49880
- var valuesOnly = chunkData.map(function (row) {
49881
- return Object.values(row).map(function (v) {
49882
- return (v != null ? v : "").toString().trim();
49883
- });
50320
+ for (var _i = 0; _i < dataRows.length; _i += chunkSize) {
50321
+ var chunkData = dataRows.slice(_i, _i + chunkSize);
50322
+ var valuesOnly = chunkData.map(function (row) {
50323
+ return Object.values(row).map(function (v) {
50324
+ return (v != null ? v : "").toString().trim();
49884
50325
  });
50326
+ });
49885
50327
 
49886
- if (header) {
49887
- valuesOnly.unshift(header);
49888
- }
49889
-
49890
- console.log({
49891
- valuesOnly: valuesOnly
49892
- });
49893
- chunks.push(valuesOnly);
50328
+ if (header) {
50329
+ valuesOnly.unshift(header);
49894
50330
  }
49895
50331
 
49896
- var _temp5 = _forTo(chunks, function (i) {
49897
- return Promise.resolve(importChunkFileUsers({
49898
- chunks: chunks[i]
49899
- })).then(function () {
49900
- return Promise.resolve(new Promise(function (res) {
49901
- return setTimeout(res, 500);
49902
- })).then(function () {});
49903
- });
50332
+ console.log({
50333
+ valuesOnly: valuesOnly
49904
50334
  });
50335
+ chunks.push(valuesOnly);
50336
+ }
49905
50337
 
49906
- if (_temp5 && _temp5.then) return _temp5.then(function () {});
50338
+ var _temp5 = _forTo(chunks, function (i) {
50339
+ return Promise.resolve(importChunkFileUsers({
50340
+ chunks: chunks[i]
50341
+ })).then(function () {
50342
+ return Promise.resolve(new Promise(function (res) {
50343
+ return setTimeout(res, 500);
50344
+ })).then(function () {});
50345
+ });
49907
50346
  });
49908
- } else {
49909
- var _temp14 = function () {
49910
- if (isCheckDomainIBS) {
49911
- var _temp15 = function () {
49912
- if (type == CSVType$1.ClassReflection) {
49913
- return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
49914
- }
49915
- }();
49916
-
49917
- if (_temp15 && _temp15.then) return _temp15.then(function () {});
49918
- } else {
49919
- return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
49920
- }
49921
- }();
49922
50347
 
49923
- if (_temp14 && _temp14.then) return _temp14.then(function () {});
49924
- }
49925
- }();
50348
+ if (_temp5 && _temp5.then) return _temp5.then(function () {});
50349
+ });
50350
+ } else {
50351
+ var _temp14 = function () {
50352
+ if (isCheckDomainIBS) {
50353
+ var _temp15 = function () {
50354
+ if (type == CSVType$1.ClassReflection) {
50355
+ return Promise.resolve(importClassReflectionCSV$1(formData)).then(function () {});
50356
+ }
50357
+ }();
49926
50358
 
49927
- return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49928
- });
50359
+ if (_temp15 && _temp15.then) return _temp15.then(function () {});
50360
+ } else {
50361
+ return Promise.resolve(importCSV$1(formData, type.toString())).then(function () {});
50362
+ }
50363
+ }();
50364
+
50365
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
50366
+ }
50367
+ }();
50368
+
50369
+ return _temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8);
49929
50370
  }, function (err) {
49930
50371
  var _err$response, _err$response$data;
49931
50372
 
@@ -50080,9 +50521,7 @@ var useCSVImportTab = function useCSVImportTab() {
50080
50521
  defaultTeacher: defaultTeacher,
50081
50522
  fileName: fileName,
50082
50523
  onStudentSubmit: onStudentSubmit,
50083
- downloadTemplateUser: downloadTemplateUser,
50084
- errorsValidate: errorsValidate,
50085
- setErrorsValidate: setErrorsValidate
50524
+ downloadTemplateUser: downloadTemplateUser
50086
50525
  };
50087
50526
  };
50088
50527
 
@@ -50109,8 +50548,7 @@ var CSVImport = function CSVImport() {
50109
50548
  setArrStudent = _useCSVImportTab.setArrStudent,
50110
50549
  buttons = _useCSVImportTab.buttons,
50111
50550
  upload = _useCSVImportTab.upload,
50112
- downloadTemplateUser = _useCSVImportTab.downloadTemplateUser,
50113
- errorsValidate = _useCSVImportTab.errorsValidate;
50551
+ downloadTemplateUser = _useCSVImportTab.downloadTemplateUser;
50114
50552
 
50115
50553
  var _useTranslation = useTranslation(),
50116
50554
  t = _useTranslation.t;
@@ -50163,9 +50601,9 @@ var CSVImport = function CSVImport() {
50163
50601
  accept: "text/csv"
50164
50602
  }), React.createElement(Col, {
50165
50603
  md: 6,
50166
- className: "mb-2 d-flex mt-5"
50604
+ className: "mb-2 d-flex align-items-end"
50167
50605
  }, React.createElement(Row, {
50168
- className: "w-100 flex-column"
50606
+ className: "w-100"
50169
50607
  }, React.createElement(Col, {
50170
50608
  md: 12,
50171
50609
  className: ""
@@ -50194,9 +50632,7 @@ var CSVImport = function CSVImport() {
50194
50632
  })))), React.createElement(Col, {
50195
50633
  md: 6,
50196
50634
  className: "mb-2"
50197
- }, React.createElement(Row, {
50198
- className: "flex-column"
50199
- }, React.createElement(Col, {
50635
+ }, React.createElement(Row, null, React.createElement(Col, {
50200
50636
  md: 12,
50201
50637
  className: "mb-2 text-right"
50202
50638
  }, React.createElement(Button, {
@@ -50226,12 +50662,7 @@ var CSVImport = function CSVImport() {
50226
50662
  return setType(button.type);
50227
50663
  }
50228
50664
  });
50229
- })), (errorsValidate === null || errorsValidate === void 0 ? void 0 : errorsValidate.length) > 0 && errorsValidate.map(function (error, index) {
50230
- return React.createElement(ErrorHandler, {
50231
- key: index,
50232
- text: error
50233
- });
50234
- }))));
50665
+ })))));
50235
50666
  }))) );
50236
50667
  };
50237
50668
 
@@ -51316,34 +51747,6 @@ var UserDetail = function UserDetail() {
51316
51747
  });
51317
51748
  };
51318
51749
 
51319
- var loadingStyle = {
51320
- minWidth: "100vw",
51321
- minHeight: "100vh",
51322
- position: "fixed",
51323
- top: 0,
51324
- left: 0,
51325
- zIndex: 999999999,
51326
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51327
- display: "flex",
51328
- justifyContent: "center",
51329
- alignItems: "center"
51330
- };
51331
-
51332
- var Loading = function Loading() {
51333
- var isLoading = useSelector(function (state) {
51334
- return state.common.isLoading;
51335
- });
51336
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51337
- return isLoading ? React.createElement("div", {
51338
- style: loadingStyle
51339
- }, React.createElement("div", {
51340
- className: "spinner-border text-secondary",
51341
- role: "status"
51342
- }, React.createElement("span", {
51343
- className: "sr-only"
51344
- }, "Loading..."))) : null;
51345
- };
51346
-
51347
51750
  var ScrollToTop = function ScrollToTop() {
51348
51751
  var _useLocation = useLocation(),
51349
51752
  pathname = _useLocation.pathname;
@@ -54367,32 +54770,6 @@ var store = configureStore({
54367
54770
  }
54368
54771
  });
54369
54772
 
54370
- var firstCheckToken = function firstCheckToken() {
54371
- return Promise.resolve(_catch(function () {
54372
- var token = getAccessToken();
54373
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54374
- return tokenStatus.data ? true : false;
54375
- }) : false;
54376
- }, function () {
54377
- return false;
54378
- }));
54379
- };
54380
-
54381
- var canAccess = function canAccess(userRoles, componentRoles) {
54382
- if (!Array.isArray(userRoles)) {
54383
- return false;
54384
- }
54385
-
54386
- if (Array.isArray(componentRoles)) {
54387
- var intersects = userRoles.filter(function (i) {
54388
- return componentRoles.includes(i);
54389
- });
54390
- return intersects.length > 0;
54391
- }
54392
-
54393
- return true;
54394
- };
54395
-
54396
54773
  var isInViewport = function isInViewport(el) {
54397
54774
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54398
54775
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54426,410 +54803,6 @@ var generateRandomString = (function () {
54426
54803
  return (Math.random() + 1).toString(36).substring(7);
54427
54804
  });
54428
54805
 
54429
- var apiGetLanguage = function apiGetLanguage() {
54430
- return api.get(BASE_URL + "/api/language");
54431
- };
54432
-
54433
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54434
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54435
- };
54436
-
54437
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54438
-
54439
- var useLanguages = function useLanguages() {
54440
- var dispatch = useDispatch();
54441
-
54442
- var _useTranslation = useTranslation(),
54443
- i18n = _useTranslation.i18n;
54444
-
54445
- var language = useSelector(function (state) {
54446
- return state.common.language;
54447
- });
54448
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54449
-
54450
- var _useState = useState([]),
54451
- languageList = _useState[0],
54452
- setLanguageList = _useState[1];
54453
-
54454
- var _useState2 = useState(false),
54455
- dropdownOpen = _useState2[0],
54456
- setDropdownOpen = _useState2[1];
54457
-
54458
- var _useState3 = useState(defaultLanguage),
54459
- currentLang = _useState3[0],
54460
- setCurrentLang = _useState3[1];
54461
-
54462
- var toggle = function toggle() {
54463
- return setDropdownOpen(function (prevState) {
54464
- return !prevState;
54465
- });
54466
- };
54467
-
54468
- var changeLanguageApp = function changeLanguageApp(lang) {
54469
- try {
54470
- var _temp3 = function _temp3() {
54471
- dispatch(setLoading(false));
54472
- };
54473
-
54474
- dispatch(setLoading(true));
54475
-
54476
- var _temp4 = _catch(function () {
54477
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54478
- i18n.changeLanguage(lang);
54479
- setCurrentLang(lang);
54480
- dispatch(setLanguage(lang));
54481
- });
54482
- }, function (err) {
54483
- var _err$response, _err$response$data;
54484
-
54485
- dispatch(setAlert({
54486
- type: "danger",
54487
- 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
54488
- }));
54489
- });
54490
-
54491
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54492
- } catch (e) {
54493
- return Promise.reject(e);
54494
- }
54495
- };
54496
-
54497
- var getListLanguage = function getListLanguage() {
54498
- try {
54499
- var _temp6 = _catch(function () {
54500
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54501
- setLanguageList(res.data);
54502
- });
54503
- }, function (err) {
54504
- var _err$response2, _err$response2$data;
54505
-
54506
- dispatch(setAlert({
54507
- type: "danger",
54508
- 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
54509
- }));
54510
- });
54511
-
54512
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54513
- } catch (e) {
54514
- return Promise.reject(e);
54515
- }
54516
- };
54517
-
54518
- useEffect(function () {
54519
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54520
- getListLanguage();
54521
- }, []);
54522
- return {
54523
- languageList: languageList,
54524
- toggle: toggle,
54525
- dropdownOpen: dropdownOpen,
54526
- currentLang: currentLang,
54527
- changeLanguageApp: changeLanguageApp,
54528
- setCurrentLang: setCurrentLang
54529
- };
54530
- };
54531
-
54532
- var TheLanguageDropdown = function TheLanguageDropdown() {
54533
- var _useLanguages = useLanguages(),
54534
- languageList = _useLanguages.languageList,
54535
- toggle = _useLanguages.toggle,
54536
- dropdownOpen = _useLanguages.dropdownOpen,
54537
- currentLang = _useLanguages.currentLang,
54538
- changeLanguageApp = _useLanguages.changeLanguageApp;
54539
-
54540
- var currentLanguage = useMemo(function () {
54541
- var current = languageList.find(function (i) {
54542
- return i.code === currentLang;
54543
- });
54544
- if (!current) return null;
54545
- return React.createElement(React.Fragment, null, React.createElement("img", {
54546
- className: "mr-2 " + styles['dropdown-menu-flag'],
54547
- src: "" + getStaticFileUrl(current.image)
54548
- }), " ", current.name);
54549
- }, [currentLang, languageList]);
54550
- return React.createElement(Dropdown, {
54551
- isOpen: dropdownOpen,
54552
- toggle: toggle,
54553
- className: "" + styles["dropdown-menu"]
54554
- }, React.createElement(DropdownToggle, {
54555
- className: styles["header-avatar"] + " d-flex align-items-center"
54556
- }, React.createElement("span", {
54557
- style: {
54558
- color: "#000",
54559
- textTransform: "capitalize",
54560
- display: 'flex',
54561
- alignItems: 'center'
54562
- }
54563
- }, currentLanguage, React.createElement(BsChevronDown, {
54564
- className: "ml-2",
54565
- style: {
54566
- fontSize: '10px'
54567
- }
54568
- }))), React.createElement(DropdownMenu, {
54569
- className: styles["dropdown-content-language"]
54570
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54571
- return React.createElement(DropdownItem, {
54572
- key: lang.code,
54573
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54574
- onClick: function onClick() {
54575
- return changeLanguageApp(lang.code);
54576
- }
54577
- }, React.createElement("div", {
54578
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54579
- }, React.createElement("span", {
54580
- className: "mr-2 d-flex hover-opacity"
54581
- }, React.createElement("img", {
54582
- style: {
54583
- width: "30px",
54584
- height: "25px",
54585
- borderRadius: "5px"
54586
- },
54587
- src: getStaticFileUrl(lang.image)
54588
- })), lang.name));
54589
- })));
54590
- };
54591
-
54592
- var TheHeader = function TheHeader(_ref) {
54593
- var onToggleModel = _ref.onToggleModel;
54594
- var dispatch = useDispatch();
54595
- var sidebarShow = useSelector(function (state) {
54596
- return state.common.sidebarShow;
54597
- });
54598
-
54599
- var _useTranslation = useTranslation(),
54600
- t = _useTranslation.t;
54601
-
54602
- var toggleSidebarMobile = function toggleSidebarMobile() {
54603
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54604
- dispatch(setSidebar(val));
54605
- };
54606
-
54607
- var isDistrict = window.location.host.includes("-district");
54608
- return React.createElement(CHeader, {
54609
- withSubheader: true,
54610
- className: "d-flex align-items-center justify-content-end"
54611
- }, React.createElement(CToggler, {
54612
- inHeader: true,
54613
- className: "ml-md-3 d-lg-none",
54614
- onClick: toggleSidebarMobile
54615
- }), React.createElement(CHeaderBrand, {
54616
- className: "mx-auto flex-grow-1 d-lg-none",
54617
- to: "/"
54618
- }, React.createElement("img", {
54619
- src: getStaticFileUrl(Images.LOGO_HEADER),
54620
- className: styles["header-logo"]
54621
- })), React.createElement(CHeaderNav, {
54622
- className: "pr-3"
54623
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54624
- className: "mr-3",
54625
- style: {
54626
- color: '#000'
54627
- },
54628
- href: '/privacy-policy',
54629
- target: "blank"
54630
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54631
- onToggleModel: onToggleModel
54632
- })));
54633
- };
54634
-
54635
- var ModelSelectRole = function ModelSelectRole(_ref) {
54636
- var _handleUserRole;
54637
-
54638
- var open = _ref.open,
54639
- onToggleModel = _ref.onToggleModel;
54640
- var dispatch = useDispatch();
54641
-
54642
- var _useTranslation = useTranslation(),
54643
- t = _useTranslation.t;
54644
-
54645
- var history = useHistory();
54646
- var pathname = window.location.pathname;
54647
- var user = useSelector(function (state) {
54648
- return state.common.user;
54649
- });
54650
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54651
-
54652
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54653
- dispatch(setLoading(true));
54654
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54655
- dispatch(setUser(_extends({}, user, {
54656
- roles: roleSelect
54657
- })));
54658
- localStorage.setItem("ROLES", roleSelect.toString());
54659
- onToggleModel();
54660
-
54661
- if (roles.includes("Parent")) {
54662
- history.push("/parent");
54663
- } else if (roles.includes("Admin")) {
54664
- history.push("/admin/home");
54665
- } else {
54666
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54667
- }
54668
- };
54669
-
54670
- return React.createElement(Modal, {
54671
- isOpen: open,
54672
- toggle: function toggle() {
54673
- return onToggleModel();
54674
- },
54675
- className: "" + styles["model-switch-roles"],
54676
- centered: true
54677
- }, React.createElement("p", {
54678
- className: "" + styles["title"]
54679
- }, 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) {
54680
- return React.createElement("p", {
54681
- key: r,
54682
- 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" : ""],
54683
- onClick: function onClick() {
54684
- return handleSelectUserRoles([r]);
54685
- }
54686
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54687
- })));
54688
- };
54689
-
54690
- var TheLayout = function TheLayout(_ref) {
54691
- var routes = _ref.routes,
54692
- navigation = _ref.navigation;
54693
- var history = useHistory();
54694
- var dispatch = useDispatch();
54695
- var user = useSelector(function (state) {
54696
- return state.common.user;
54697
- });
54698
- var language = useSelector(function (state) {
54699
- return state.common.language;
54700
- });
54701
-
54702
- var _useState = useState(false),
54703
- openModelSelectRole = _useState[0],
54704
- setOpenModelSelectRole = _useState[1];
54705
-
54706
- var _useTranslation = useTranslation(),
54707
- t = _useTranslation.t;
54708
-
54709
- var location = useLocation();
54710
- var isNotification = location.pathname.includes("notifications");
54711
- var isDistrict = window.location.host.includes("-district");
54712
-
54713
- var handleToggleModel = function handleToggleModel() {
54714
- setOpenModelSelectRole(!openModelSelectRole);
54715
- };
54716
-
54717
- var authRoutes = useMemo(function () {
54718
- return routes.filter(function (route) {
54719
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54720
- }).filter(function (route) {
54721
- return !!route.isDistrict === isDistrict;
54722
- });
54723
- }, [user, language]);
54724
- var authNavigations = useMemo(function () {
54725
- return navigation.map(function (item) {
54726
- var _item$_children, _item$_children2;
54727
-
54728
- return _extends({}, item, {
54729
- name: t(item.name),
54730
- _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) {
54731
- return _extends({}, x, {
54732
- name: t(x.name)
54733
- });
54734
- }) : undefined
54735
- });
54736
- }).filter(function (nav) {
54737
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54738
- }).filter(function (nav) {
54739
- return !!nav.isDistrict === isDistrict;
54740
- });
54741
- }, [user, language]);
54742
-
54743
- var getInformationSetting = function getInformationSetting() {
54744
- try {
54745
- var _temp2 = _catch(function () {
54746
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54747
- dispatch(setSandboxMode(res.data.isSandboxMode));
54748
- });
54749
- }, function (err) {
54750
- console.error(err);
54751
- });
54752
-
54753
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54754
- } catch (e) {
54755
- return Promise.reject(e);
54756
- }
54757
- };
54758
-
54759
- useEffect(function () {
54760
- checkAuthentication();
54761
- }, []);
54762
- useEffect(function () {
54763
- getInformationSetting();
54764
- }, [location.pathname]);
54765
-
54766
- var checkAuthentication = function checkAuthentication() {
54767
- try {
54768
- var _temp4 = _catch(function () {
54769
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54770
- tokenStatus ? loadInfo() : resetAuth();
54771
- });
54772
- }, function () {
54773
- resetAuth();
54774
- });
54775
-
54776
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54777
- } catch (e) {
54778
- return Promise.reject(e);
54779
- }
54780
- };
54781
-
54782
- var loadInfo = function loadInfo() {
54783
- try {
54784
- var _temp6 = _catch(function () {
54785
- return Promise.resolve(getInfo()).then(function (info) {
54786
- var _info$data, _info$data$roles;
54787
-
54788
- 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"))) {
54789
- resetAuth();
54790
- }
54791
-
54792
- dispatch(setUser(info.data));
54793
- });
54794
- }, function () {
54795
- resetAuth();
54796
- });
54797
-
54798
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54799
- } catch (e) {
54800
- return Promise.reject(e);
54801
- }
54802
- };
54803
-
54804
- var resetAuth = function resetAuth() {
54805
- localStorage.removeItem(ACCESS_TOKEN);
54806
- sessionStorage.removeItem(ACCESS_TOKEN);
54807
- localStorage.removeItem("ROLES");
54808
- history.push("/");
54809
- };
54810
-
54811
- if (!user) {
54812
- return React.createElement(Loading, null);
54813
- }
54814
-
54815
- return React.createElement("div", {
54816
- className: "c-app c-default-layout"
54817
- }, !isNotification && React.createElement(TheSidebar, {
54818
- navigation: authNavigations
54819
- }), React.createElement("div", {
54820
- className: "c-wrapper"
54821
- }, !isNotification && React.createElement(TheHeader, {
54822
- onToggleModel: handleToggleModel
54823
- }), React.createElement("div", {
54824
- className: "c-body bg-white"
54825
- }, React.createElement(TheContent$1, {
54826
- routes: authRoutes
54827
- }))), React.createElement(ModelSelectRole, {
54828
- open: openModelSelectRole,
54829
- onToggleModel: handleToggleModel
54830
- }));
54831
- };
54832
-
54833
54806
  var amplitudeClient = amplitude;
54834
54807
 
54835
54808
  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 };