mario-core 2.9.425-feedback → 2.9.426-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.
package/dist/index.js CHANGED
@@ -41944,212 +41944,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41944
41944
  })), t("log_out")))));
41945
41945
  };
41946
41946
 
41947
- var apiGetLanguage = function apiGetLanguage() {
41948
- return api.get(BASE_URL + "/api/language");
41949
- };
41950
-
41951
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41952
- return api.put(BASE_URL + "/api/language?lang=" + lang);
41953
- };
41954
-
41955
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41956
-
41957
- var useLanguages = function useLanguages() {
41958
- var dispatch = reactRedux.useDispatch();
41959
-
41960
- var _useTranslation = reactI18next.useTranslation(),
41961
- i18n = _useTranslation.i18n;
41962
-
41963
- var language = reactRedux.useSelector(function (state) {
41964
- return state.common.language;
41965
- });
41966
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41967
-
41968
- var _useState = React.useState([]),
41969
- languageList = _useState[0],
41970
- setLanguageList = _useState[1];
41971
-
41972
- var _useState2 = React.useState(false),
41973
- dropdownOpen = _useState2[0],
41974
- setDropdownOpen = _useState2[1];
41975
-
41976
- var _useState3 = React.useState(defaultLanguage),
41977
- currentLang = _useState3[0],
41978
- setCurrentLang = _useState3[1];
41979
-
41980
- var toggle = function toggle() {
41981
- return setDropdownOpen(function (prevState) {
41982
- return !prevState;
41983
- });
41984
- };
41985
-
41986
- var changeLanguageApp = function changeLanguageApp(lang) {
41987
- try {
41988
- var _temp3 = function _temp3() {
41989
- dispatch(setLoading(false));
41990
- };
41991
-
41992
- dispatch(setLoading(true));
41993
-
41994
- var _temp4 = _catch(function () {
41995
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41996
- i18n.changeLanguage(lang);
41997
- setCurrentLang(lang);
41998
- dispatch(setLanguage(lang));
41999
- });
42000
- }, function (err) {
42001
- var _err$response, _err$response$data;
42002
-
42003
- dispatch(setAlert({
42004
- type: "danger",
42005
- 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
42006
- }));
42007
- });
42008
-
42009
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
42010
- } catch (e) {
42011
- return Promise.reject(e);
42012
- }
42013
- };
42014
-
42015
- var getListLanguage = function getListLanguage() {
42016
- try {
42017
- var _temp6 = _catch(function () {
42018
- return Promise.resolve(apiGetLanguage()).then(function (res) {
42019
- setLanguageList(res.data);
42020
- });
42021
- }, function (err) {
42022
- var _err$response2, _err$response2$data;
42023
-
42024
- dispatch(setAlert({
42025
- type: "danger",
42026
- 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
42027
- }));
42028
- });
42029
-
42030
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42031
- } catch (e) {
42032
- return Promise.reject(e);
42033
- }
42034
- };
42035
-
42036
- React.useEffect(function () {
42037
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
42038
- getListLanguage();
42039
- }, []);
42040
- return {
42041
- languageList: languageList,
42042
- toggle: toggle,
42043
- dropdownOpen: dropdownOpen,
42044
- currentLang: currentLang,
42045
- changeLanguageApp: changeLanguageApp,
42046
- setCurrentLang: setCurrentLang
42047
- };
42048
- };
42049
-
42050
- var TheLanguageDropdown = function TheLanguageDropdown() {
42051
- var _useLanguages = useLanguages(),
42052
- languageList = _useLanguages.languageList,
42053
- toggle = _useLanguages.toggle,
42054
- dropdownOpen = _useLanguages.dropdownOpen,
42055
- currentLang = _useLanguages.currentLang,
42056
- changeLanguageApp = _useLanguages.changeLanguageApp;
42057
-
42058
- var currentLanguage = React.useMemo(function () {
42059
- var current = languageList.find(function (i) {
42060
- return i.code === currentLang;
42061
- });
42062
- if (!current) return null;
42063
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
42064
- className: "mr-2 " + styles['dropdown-menu-flag'],
42065
- src: "" + getStaticFileUrl(current.image)
42066
- }), " ", current.name);
42067
- }, [currentLang, languageList]);
42068
- return React__default.createElement(reactstrap.Dropdown, {
42069
- isOpen: dropdownOpen,
42070
- toggle: toggle,
42071
- className: "" + styles["dropdown-menu"]
42072
- }, React__default.createElement(reactstrap.DropdownToggle, {
42073
- className: styles["header-avatar"] + " d-flex align-items-center"
42074
- }, React__default.createElement("span", {
42075
- style: {
42076
- color: "#000",
42077
- textTransform: "capitalize",
42078
- display: 'flex',
42079
- alignItems: 'center'
42080
- }
42081
- }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
42082
- className: "ml-2",
42083
- style: {
42084
- fontSize: '10px'
42085
- }
42086
- }))), React__default.createElement(reactstrap.DropdownMenu, {
42087
- className: styles["dropdown-content-language"]
42088
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42089
- return React__default.createElement(reactstrap.DropdownItem, {
42090
- key: lang.code,
42091
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42092
- onClick: function onClick() {
42093
- return changeLanguageApp(lang.code);
42094
- }
42095
- }, React__default.createElement("div", {
42096
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42097
- }, React__default.createElement("span", {
42098
- className: "mr-2 d-flex hover-opacity"
42099
- }, React__default.createElement("img", {
42100
- style: {
42101
- width: "30px",
42102
- height: "25px",
42103
- borderRadius: "5px"
42104
- },
42105
- src: getStaticFileUrl(lang.image)
42106
- })), lang.name));
42107
- })));
42108
- };
42109
-
42110
- var TheHeader = function TheHeader(_ref) {
42111
- var onToggleModel = _ref.onToggleModel;
42112
- var dispatch = reactRedux.useDispatch();
42113
- var sidebarShow = reactRedux.useSelector(function (state) {
42114
- return state.common.sidebarShow;
42115
- });
42116
-
42117
- var _useTranslation = reactI18next.useTranslation(),
42118
- t = _useTranslation.t;
42119
-
42120
- var toggleSidebarMobile = function toggleSidebarMobile() {
42121
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42122
- dispatch(setSidebar(val));
42123
- };
42124
-
42125
- var isDistrict = window.location.host.includes("-district");
42126
- return React__default.createElement(react.CHeader, {
42127
- withSubheader: true,
42128
- className: "d-flex align-items-center justify-content-end"
42129
- }, React__default.createElement(react.CToggler, {
42130
- inHeader: true,
42131
- className: "ml-md-3 d-lg-none",
42132
- onClick: toggleSidebarMobile
42133
- }), React__default.createElement(react.CHeaderBrand, {
42134
- className: "mx-auto flex-grow-1 d-lg-none",
42135
- to: "/"
42136
- }, React__default.createElement("img", {
42137
- src: getStaticFileUrl(Images.LOGO_HEADER),
42138
- className: styles["header-logo"]
42139
- })), React__default.createElement(react.CHeaderNav, {
42140
- className: "pr-3"
42141
- }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
42142
- className: "mr-3",
42143
- style: {
42144
- color: '#000'
42145
- },
42146
- href: '/privacy-policy',
42147
- target: "blank"
42148
- }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
42149
- onToggleModel: onToggleModel
42150
- })));
42151
- };
42152
-
42153
41947
  var TITLE$3 = "Not found";
42154
41948
 
42155
41949
  var NotFound = function NotFound() {
@@ -42207,277 +42001,25 @@ var TheContent = function TheContent(_ref) {
42207
42001
 
42208
42002
  var TheContent$1 = React__default.memo(TheContent);
42209
42003
 
42210
- var loadingStyle = {
42211
- minWidth: "100vw",
42212
- minHeight: "100vh",
42213
- position: "fixed",
42214
- top: 0,
42215
- left: 0,
42216
- zIndex: 999999999,
42217
- backgroundColor: "rgba(0, 0, 0, 0.4)",
42218
- display: "flex",
42219
- justifyContent: "center",
42220
- alignItems: "center"
42004
+ var buttonTextStyle = {
42005
+ fontWeight: 500
42221
42006
  };
42222
-
42223
- var Loading = function Loading() {
42224
- var isLoading = reactRedux.useSelector(function (state) {
42225
- return state.common.isLoading;
42226
- });
42227
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42228
- return isLoading ? React__default.createElement("div", {
42229
- style: loadingStyle
42230
- }, React__default.createElement("div", {
42231
- className: "spinner-border text-secondary",
42232
- role: "status"
42233
- }, React__default.createElement("span", {
42234
- className: "sr-only"
42235
- }, "Loading..."))) : null;
42007
+ var buttonStyle = {
42008
+ height: 38
42236
42009
  };
42237
42010
 
42238
- var firstCheckToken = function firstCheckToken() {
42239
- return Promise.resolve(_catch(function () {
42240
- var token = getAccessToken();
42241
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42242
- return tokenStatus.data ? true : false;
42243
- }) : false;
42244
- }, function () {
42245
- return false;
42246
- }));
42247
- };
42248
-
42249
- var canAccess = function canAccess(userRoles, componentRoles) {
42250
- if (!Array.isArray(userRoles)) {
42251
- return false;
42252
- }
42253
-
42254
- if (Array.isArray(componentRoles)) {
42255
- var intersects = userRoles.filter(function (i) {
42256
- return componentRoles.includes(i);
42257
- });
42258
- return intersects.length > 0;
42259
- }
42260
-
42261
- return true;
42262
- };
42263
-
42264
- var ModelSelectRole = function ModelSelectRole(_ref) {
42265
- var _handleUserRole;
42266
-
42267
- var open = _ref.open,
42268
- onToggleModel = _ref.onToggleModel;
42269
- var dispatch = reactRedux.useDispatch();
42270
-
42271
- var _useTranslation = reactI18next.useTranslation(),
42272
- t = _useTranslation.t;
42273
-
42274
- var history = reactRouterDom.useHistory();
42275
- var pathname = window.location.pathname;
42276
- var user = reactRedux.useSelector(function (state) {
42277
- return state.common.user;
42278
- });
42279
- var roles = user === null || user === void 0 ? void 0 : user.roles;
42280
-
42281
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42282
- dispatch(setLoading(true));
42283
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42284
- dispatch(setUser(_extends({}, user, {
42285
- roles: roleSelect
42286
- })));
42287
- localStorage.setItem("ROLES", roleSelect.toString());
42288
- onToggleModel();
42289
-
42290
- if (roles.includes("Parent")) {
42291
- history.push("/parent");
42292
- } else if (roles.includes("Admin")) {
42293
- history.push("/admin/home");
42294
- } else {
42295
- pathname !== "/home" ? history.push("/home") : window.location.reload();
42296
- }
42297
- };
42298
-
42299
- return React__default.createElement(reactstrap.Modal, {
42300
- isOpen: open,
42301
- toggle: function toggle() {
42302
- return onToggleModel();
42303
- },
42304
- className: "" + styles["model-switch-roles"],
42305
- centered: true
42306
- }, React__default.createElement("p", {
42307
- className: "" + styles["title"]
42308
- }, t("continue_as")), React__default.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
42309
- return React__default.createElement("p", {
42310
- key: r,
42311
- 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" : ""],
42312
- onClick: function onClick() {
42313
- return handleSelectUserRoles([r]);
42314
- }
42315
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42316
- })));
42317
- };
42318
-
42319
- var TheLayout = function TheLayout(_ref) {
42320
- var routes = _ref.routes,
42321
- navigation = _ref.navigation;
42322
- var history = reactRouterDom.useHistory();
42323
- var dispatch = reactRedux.useDispatch();
42324
- var user = reactRedux.useSelector(function (state) {
42325
- return state.common.user;
42326
- });
42327
- var language = reactRedux.useSelector(function (state) {
42328
- return state.common.language;
42329
- });
42330
-
42331
- var _useState = React.useState(false),
42332
- openModelSelectRole = _useState[0],
42333
- setOpenModelSelectRole = _useState[1];
42334
-
42335
- var _useTranslation = reactI18next.useTranslation(),
42336
- t = _useTranslation.t;
42337
-
42338
- var location = reactRouterDom.useLocation();
42339
- var isNotification = location.pathname.includes("notifications");
42340
- var isDistrict = window.location.host.includes("-district");
42341
-
42342
- var handleToggleModel = function handleToggleModel() {
42343
- setOpenModelSelectRole(!openModelSelectRole);
42344
- };
42345
-
42346
- var authRoutes = React.useMemo(function () {
42347
- return routes.filter(function (route) {
42348
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42349
- }).filter(function (route) {
42350
- return !!route.isDistrict === isDistrict;
42351
- });
42352
- }, [user, language]);
42353
- var authNavigations = React.useMemo(function () {
42354
- return navigation.map(function (item) {
42355
- var _item$_children, _item$_children2;
42356
-
42357
- return _extends({}, item, {
42358
- name: t(item.name),
42359
- _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) {
42360
- return _extends({}, x, {
42361
- name: t(x.name)
42362
- });
42363
- }) : undefined
42364
- });
42365
- }).filter(function (nav) {
42366
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42367
- }).filter(function (nav) {
42368
- return !!nav.isDistrict === isDistrict;
42369
- });
42370
- }, [user, language]);
42371
-
42372
- var getInformationSetting = function getInformationSetting() {
42373
- try {
42374
- var _temp2 = _catch(function () {
42375
- return Promise.resolve(getSchoolSettings()).then(function (res) {
42376
- dispatch(setSandboxMode(res.data.isSandboxMode));
42377
- });
42378
- }, function (err) {
42379
- console.error(err);
42380
- });
42381
-
42382
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42383
- } catch (e) {
42384
- return Promise.reject(e);
42385
- }
42386
- };
42387
-
42388
- React.useEffect(function () {
42389
- checkAuthentication();
42390
- }, []);
42391
- React.useEffect(function () {
42392
- getInformationSetting();
42393
- }, [location.pathname]);
42394
-
42395
- var checkAuthentication = function checkAuthentication() {
42396
- try {
42397
- var _temp4 = _catch(function () {
42398
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42399
- tokenStatus ? loadInfo() : resetAuth();
42400
- });
42401
- }, function () {
42402
- resetAuth();
42403
- });
42404
-
42405
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42406
- } catch (e) {
42407
- return Promise.reject(e);
42408
- }
42409
- };
42410
-
42411
- var loadInfo = function loadInfo() {
42412
- try {
42413
- var _temp6 = _catch(function () {
42414
- return Promise.resolve(getInfo()).then(function (info) {
42415
- var _info$data, _info$data$roles;
42416
-
42417
- 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"))) {
42418
- resetAuth();
42419
- }
42420
-
42421
- dispatch(setUser(info.data));
42422
- });
42423
- }, function () {
42424
- resetAuth();
42425
- });
42426
-
42427
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42428
- } catch (e) {
42429
- return Promise.reject(e);
42430
- }
42431
- };
42432
-
42433
- var resetAuth = function resetAuth() {
42434
- localStorage.removeItem(ACCESS_TOKEN);
42435
- sessionStorage.removeItem(ACCESS_TOKEN);
42436
- localStorage.removeItem("ROLES");
42437
- history.push("/");
42438
- };
42439
-
42440
- if (!user) {
42441
- return React__default.createElement(Loading, null);
42442
- }
42443
-
42444
- return React__default.createElement("div", {
42445
- className: "c-app c-default-layout"
42446
- }, !isNotification && React__default.createElement(TheSidebar, {
42447
- navigation: authNavigations
42448
- }), React__default.createElement("div", {
42449
- className: "c-wrapper"
42450
- }, !isNotification && React__default.createElement(TheHeader, {
42451
- onToggleModel: handleToggleModel
42452
- }), React__default.createElement("div", {
42453
- className: "c-body bg-white"
42454
- }, React__default.createElement(TheContent$1, {
42455
- routes: authRoutes
42456
- }))), React__default.createElement(ModelSelectRole, {
42457
- open: openModelSelectRole,
42458
- onToggleModel: handleToggleModel
42459
- }));
42460
- };
42461
-
42462
- var buttonTextStyle = {
42463
- fontWeight: 500
42464
- };
42465
- var buttonStyle = {
42466
- height: 38
42467
- };
42468
-
42469
- var AddButton = function AddButton(_ref) {
42470
- var text = _ref.text,
42471
- onClick = _ref.onClick;
42472
- return React__default.createElement(reactstrap.Button, {
42473
- onClick: onClick,
42474
- color: 'success',
42475
- style: buttonStyle,
42476
- className: 'd-flex align-items-center'
42477
- }, React__default.createElement(fa.FaPlus, null), React__default.createElement("span", {
42478
- className: 'ml-2',
42479
- style: buttonTextStyle
42480
- }, text));
42011
+ var AddButton = function AddButton(_ref) {
42012
+ var text = _ref.text,
42013
+ onClick = _ref.onClick;
42014
+ return React__default.createElement(reactstrap.Button, {
42015
+ onClick: onClick,
42016
+ color: 'success',
42017
+ style: buttonStyle,
42018
+ className: 'd-flex align-items-center'
42019
+ }, React__default.createElement(fa.FaPlus, null), React__default.createElement("span", {
42020
+ className: 'ml-2',
42021
+ style: buttonTextStyle
42022
+ }, text));
42481
42023
  };
42482
42024
 
42483
42025
  var DeleteButtonIcon = function DeleteButtonIcon(_ref) {
@@ -51855,19 +51397,47 @@ var UserDetail = function UserDetail() {
51855
51397
  });
51856
51398
  };
51857
51399
 
51858
- var ScrollToTop = function ScrollToTop() {
51859
- var _useLocation = reactRouterDom.useLocation(),
51860
- pathname = _useLocation.pathname;
51861
-
51862
- React.useEffect(function () {
51863
- window.scrollTo(0, 0);
51864
- }, [pathname]);
51865
- return null;
51400
+ var loadingStyle = {
51401
+ minWidth: "100vw",
51402
+ minHeight: "100vh",
51403
+ position: "fixed",
51404
+ top: 0,
51405
+ left: 0,
51406
+ zIndex: 999999999,
51407
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
51408
+ display: "flex",
51409
+ justifyContent: "center",
51410
+ alignItems: "center"
51866
51411
  };
51867
51412
 
51868
- var modalInfo = function modalInfo(type) {
51869
- switch (type) {
51870
- case "danger":
51413
+ var Loading = function Loading() {
51414
+ var isLoading = reactRedux.useSelector(function (state) {
51415
+ return state.common.isLoading;
51416
+ });
51417
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51418
+ return isLoading ? React__default.createElement("div", {
51419
+ style: loadingStyle
51420
+ }, React__default.createElement("div", {
51421
+ className: "spinner-border text-secondary",
51422
+ role: "status"
51423
+ }, React__default.createElement("span", {
51424
+ className: "sr-only"
51425
+ }, "Loading..."))) : null;
51426
+ };
51427
+
51428
+ var ScrollToTop = function ScrollToTop() {
51429
+ var _useLocation = reactRouterDom.useLocation(),
51430
+ pathname = _useLocation.pathname;
51431
+
51432
+ React.useEffect(function () {
51433
+ window.scrollTo(0, 0);
51434
+ }, [pathname]);
51435
+ return null;
51436
+ };
51437
+
51438
+ var modalInfo = function modalInfo(type) {
51439
+ switch (type) {
51440
+ case "danger":
51871
51441
  return {
51872
51442
  header: "Error",
51873
51443
  color: COLORS.DANGER
@@ -54911,6 +54481,32 @@ var store = toolkit.configureStore({
54911
54481
  }
54912
54482
  });
54913
54483
 
54484
+ var firstCheckToken = function firstCheckToken() {
54485
+ return Promise.resolve(_catch(function () {
54486
+ var token = getAccessToken();
54487
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54488
+ return tokenStatus.data ? true : false;
54489
+ }) : false;
54490
+ }, function () {
54491
+ return false;
54492
+ }));
54493
+ };
54494
+
54495
+ var canAccess = function canAccess(userRoles, componentRoles) {
54496
+ if (!Array.isArray(userRoles)) {
54497
+ return false;
54498
+ }
54499
+
54500
+ if (Array.isArray(componentRoles)) {
54501
+ var intersects = userRoles.filter(function (i) {
54502
+ return componentRoles.includes(i);
54503
+ });
54504
+ return intersects.length > 0;
54505
+ }
54506
+
54507
+ return true;
54508
+ };
54509
+
54914
54510
  var isInViewport = function isInViewport(el) {
54915
54511
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54916
54512
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54944,6 +54540,410 @@ var generateRandomString = (function () {
54944
54540
  return (Math.random() + 1).toString(36).substring(7);
54945
54541
  });
54946
54542
 
54543
+ var apiGetLanguage = function apiGetLanguage() {
54544
+ return api.get(BASE_URL + "/api/language");
54545
+ };
54546
+
54547
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54548
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
54549
+ };
54550
+
54551
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54552
+
54553
+ var useLanguages = function useLanguages() {
54554
+ var dispatch = reactRedux.useDispatch();
54555
+
54556
+ var _useTranslation = reactI18next.useTranslation(),
54557
+ i18n = _useTranslation.i18n;
54558
+
54559
+ var language = reactRedux.useSelector(function (state) {
54560
+ return state.common.language;
54561
+ });
54562
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54563
+
54564
+ var _useState = React.useState([]),
54565
+ languageList = _useState[0],
54566
+ setLanguageList = _useState[1];
54567
+
54568
+ var _useState2 = React.useState(false),
54569
+ dropdownOpen = _useState2[0],
54570
+ setDropdownOpen = _useState2[1];
54571
+
54572
+ var _useState3 = React.useState(defaultLanguage),
54573
+ currentLang = _useState3[0],
54574
+ setCurrentLang = _useState3[1];
54575
+
54576
+ var toggle = function toggle() {
54577
+ return setDropdownOpen(function (prevState) {
54578
+ return !prevState;
54579
+ });
54580
+ };
54581
+
54582
+ var changeLanguageApp = function changeLanguageApp(lang) {
54583
+ try {
54584
+ var _temp3 = function _temp3() {
54585
+ dispatch(setLoading(false));
54586
+ };
54587
+
54588
+ dispatch(setLoading(true));
54589
+
54590
+ var _temp4 = _catch(function () {
54591
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54592
+ i18n.changeLanguage(lang);
54593
+ setCurrentLang(lang);
54594
+ dispatch(setLanguage(lang));
54595
+ });
54596
+ }, function (err) {
54597
+ var _err$response, _err$response$data;
54598
+
54599
+ dispatch(setAlert({
54600
+ type: "danger",
54601
+ 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
54602
+ }));
54603
+ });
54604
+
54605
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54606
+ } catch (e) {
54607
+ return Promise.reject(e);
54608
+ }
54609
+ };
54610
+
54611
+ var getListLanguage = function getListLanguage() {
54612
+ try {
54613
+ var _temp6 = _catch(function () {
54614
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
54615
+ setLanguageList(res.data);
54616
+ });
54617
+ }, function (err) {
54618
+ var _err$response2, _err$response2$data;
54619
+
54620
+ dispatch(setAlert({
54621
+ type: "danger",
54622
+ 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
54623
+ }));
54624
+ });
54625
+
54626
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54627
+ } catch (e) {
54628
+ return Promise.reject(e);
54629
+ }
54630
+ };
54631
+
54632
+ React.useEffect(function () {
54633
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
54634
+ getListLanguage();
54635
+ }, []);
54636
+ return {
54637
+ languageList: languageList,
54638
+ toggle: toggle,
54639
+ dropdownOpen: dropdownOpen,
54640
+ currentLang: currentLang,
54641
+ changeLanguageApp: changeLanguageApp,
54642
+ setCurrentLang: setCurrentLang
54643
+ };
54644
+ };
54645
+
54646
+ var TheLanguageDropdown = function TheLanguageDropdown() {
54647
+ var _useLanguages = useLanguages(),
54648
+ languageList = _useLanguages.languageList,
54649
+ toggle = _useLanguages.toggle,
54650
+ dropdownOpen = _useLanguages.dropdownOpen,
54651
+ currentLang = _useLanguages.currentLang,
54652
+ changeLanguageApp = _useLanguages.changeLanguageApp;
54653
+
54654
+ var currentLanguage = React.useMemo(function () {
54655
+ var current = languageList.find(function (i) {
54656
+ return i.code === currentLang;
54657
+ });
54658
+ if (!current) return null;
54659
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
54660
+ className: "mr-2 " + styles['dropdown-menu-flag'],
54661
+ src: "" + getStaticFileUrl(current.image)
54662
+ }), " ", current.name);
54663
+ }, [currentLang, languageList]);
54664
+ return React__default.createElement(reactstrap.Dropdown, {
54665
+ isOpen: dropdownOpen,
54666
+ toggle: toggle,
54667
+ className: "" + styles["dropdown-menu"]
54668
+ }, React__default.createElement(reactstrap.DropdownToggle, {
54669
+ className: styles["header-avatar"] + " d-flex align-items-center"
54670
+ }, React__default.createElement("span", {
54671
+ style: {
54672
+ color: "#000",
54673
+ textTransform: "capitalize",
54674
+ display: 'flex',
54675
+ alignItems: 'center'
54676
+ }
54677
+ }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
54678
+ className: "ml-2",
54679
+ style: {
54680
+ fontSize: '10px'
54681
+ }
54682
+ }))), React__default.createElement(reactstrap.DropdownMenu, {
54683
+ className: styles["dropdown-content-language"]
54684
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54685
+ return React__default.createElement(reactstrap.DropdownItem, {
54686
+ key: lang.code,
54687
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54688
+ onClick: function onClick() {
54689
+ return changeLanguageApp(lang.code);
54690
+ }
54691
+ }, React__default.createElement("div", {
54692
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54693
+ }, React__default.createElement("span", {
54694
+ className: "mr-2 d-flex hover-opacity"
54695
+ }, React__default.createElement("img", {
54696
+ style: {
54697
+ width: "30px",
54698
+ height: "25px",
54699
+ borderRadius: "5px"
54700
+ },
54701
+ src: getStaticFileUrl(lang.image)
54702
+ })), lang.name));
54703
+ })));
54704
+ };
54705
+
54706
+ var TheHeader = function TheHeader(_ref) {
54707
+ var onToggleModel = _ref.onToggleModel;
54708
+ var dispatch = reactRedux.useDispatch();
54709
+ var sidebarShow = reactRedux.useSelector(function (state) {
54710
+ return state.common.sidebarShow;
54711
+ });
54712
+
54713
+ var _useTranslation = reactI18next.useTranslation(),
54714
+ t = _useTranslation.t;
54715
+
54716
+ var toggleSidebarMobile = function toggleSidebarMobile() {
54717
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54718
+ dispatch(setSidebar(val));
54719
+ };
54720
+
54721
+ var isDistrict = window.location.host.includes("-district");
54722
+ return React__default.createElement(react.CHeader, {
54723
+ withSubheader: true,
54724
+ className: "d-flex align-items-center justify-content-end"
54725
+ }, React__default.createElement(react.CToggler, {
54726
+ inHeader: true,
54727
+ className: "ml-md-3 d-lg-none",
54728
+ onClick: toggleSidebarMobile
54729
+ }), React__default.createElement(react.CHeaderBrand, {
54730
+ className: "mx-auto flex-grow-1 d-lg-none",
54731
+ to: "/"
54732
+ }, React__default.createElement("img", {
54733
+ src: getStaticFileUrl(Images.LOGO_HEADER),
54734
+ className: styles["header-logo"]
54735
+ })), React__default.createElement(react.CHeaderNav, {
54736
+ className: "pr-3"
54737
+ }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
54738
+ className: "mr-3",
54739
+ style: {
54740
+ color: '#000'
54741
+ },
54742
+ href: '/privacy-policy',
54743
+ target: "blank"
54744
+ }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
54745
+ onToggleModel: onToggleModel
54746
+ })));
54747
+ };
54748
+
54749
+ var ModelSelectRole = function ModelSelectRole(_ref) {
54750
+ var _handleUserRole;
54751
+
54752
+ var open = _ref.open,
54753
+ onToggleModel = _ref.onToggleModel;
54754
+ var dispatch = reactRedux.useDispatch();
54755
+
54756
+ var _useTranslation = reactI18next.useTranslation(),
54757
+ t = _useTranslation.t;
54758
+
54759
+ var history = reactRouterDom.useHistory();
54760
+ var pathname = window.location.pathname;
54761
+ var user = reactRedux.useSelector(function (state) {
54762
+ return state.common.user;
54763
+ });
54764
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
54765
+
54766
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54767
+ dispatch(setLoading(true));
54768
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54769
+ dispatch(setUser(_extends({}, user, {
54770
+ roles: roleSelect
54771
+ })));
54772
+ localStorage.setItem("ROLES", roleSelect.toString());
54773
+ onToggleModel();
54774
+
54775
+ if (roles.includes("Parent")) {
54776
+ history.push("/parent");
54777
+ } else if (roles.includes("Admin")) {
54778
+ history.push("/admin/home");
54779
+ } else {
54780
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
54781
+ }
54782
+ };
54783
+
54784
+ return React__default.createElement(reactstrap.Modal, {
54785
+ isOpen: open,
54786
+ toggle: function toggle() {
54787
+ return onToggleModel();
54788
+ },
54789
+ className: "" + styles["model-switch-roles"],
54790
+ centered: true
54791
+ }, React__default.createElement("p", {
54792
+ className: "" + styles["title"]
54793
+ }, t("continue_as")), React__default.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
54794
+ return React__default.createElement("p", {
54795
+ key: r,
54796
+ 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" : ""],
54797
+ onClick: function onClick() {
54798
+ return handleSelectUserRoles([r]);
54799
+ }
54800
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54801
+ })));
54802
+ };
54803
+
54804
+ var TheLayout = function TheLayout(_ref) {
54805
+ var routes = _ref.routes,
54806
+ navigation = _ref.navigation;
54807
+ var history = reactRouterDom.useHistory();
54808
+ var dispatch = reactRedux.useDispatch();
54809
+ var user = reactRedux.useSelector(function (state) {
54810
+ return state.common.user;
54811
+ });
54812
+ var language = reactRedux.useSelector(function (state) {
54813
+ return state.common.language;
54814
+ });
54815
+
54816
+ var _useState = React.useState(false),
54817
+ openModelSelectRole = _useState[0],
54818
+ setOpenModelSelectRole = _useState[1];
54819
+
54820
+ var _useTranslation = reactI18next.useTranslation(),
54821
+ t = _useTranslation.t;
54822
+
54823
+ var location = reactRouterDom.useLocation();
54824
+ var isNotification = location.pathname.includes("notifications");
54825
+ var isDistrict = window.location.host.includes("-district");
54826
+
54827
+ var handleToggleModel = function handleToggleModel() {
54828
+ setOpenModelSelectRole(!openModelSelectRole);
54829
+ };
54830
+
54831
+ var authRoutes = React.useMemo(function () {
54832
+ return routes.filter(function (route) {
54833
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54834
+ }).filter(function (route) {
54835
+ return !!route.isDistrict === isDistrict;
54836
+ });
54837
+ }, [user, language]);
54838
+ var authNavigations = React.useMemo(function () {
54839
+ return navigation.map(function (item) {
54840
+ var _item$_children, _item$_children2;
54841
+
54842
+ return _extends({}, item, {
54843
+ name: t(item.name),
54844
+ _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) {
54845
+ return _extends({}, x, {
54846
+ name: t(x.name)
54847
+ });
54848
+ }) : undefined
54849
+ });
54850
+ }).filter(function (nav) {
54851
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54852
+ }).filter(function (nav) {
54853
+ return !!nav.isDistrict === isDistrict;
54854
+ });
54855
+ }, [user, language]);
54856
+
54857
+ var getInformationSetting = function getInformationSetting() {
54858
+ try {
54859
+ var _temp2 = _catch(function () {
54860
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
54861
+ dispatch(setSandboxMode(res.data.isSandboxMode));
54862
+ });
54863
+ }, function (err) {
54864
+ console.error(err);
54865
+ });
54866
+
54867
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54868
+ } catch (e) {
54869
+ return Promise.reject(e);
54870
+ }
54871
+ };
54872
+
54873
+ React.useEffect(function () {
54874
+ checkAuthentication();
54875
+ }, []);
54876
+ React.useEffect(function () {
54877
+ getInformationSetting();
54878
+ }, [location.pathname]);
54879
+
54880
+ var checkAuthentication = function checkAuthentication() {
54881
+ try {
54882
+ var _temp4 = _catch(function () {
54883
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54884
+ tokenStatus ? loadInfo() : resetAuth();
54885
+ });
54886
+ }, function () {
54887
+ resetAuth();
54888
+ });
54889
+
54890
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54891
+ } catch (e) {
54892
+ return Promise.reject(e);
54893
+ }
54894
+ };
54895
+
54896
+ var loadInfo = function loadInfo() {
54897
+ try {
54898
+ var _temp6 = _catch(function () {
54899
+ return Promise.resolve(getInfo()).then(function (info) {
54900
+ var _info$data, _info$data$roles;
54901
+
54902
+ 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"))) {
54903
+ resetAuth();
54904
+ }
54905
+
54906
+ dispatch(setUser(info.data));
54907
+ });
54908
+ }, function () {
54909
+ resetAuth();
54910
+ });
54911
+
54912
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54913
+ } catch (e) {
54914
+ return Promise.reject(e);
54915
+ }
54916
+ };
54917
+
54918
+ var resetAuth = function resetAuth() {
54919
+ localStorage.removeItem(ACCESS_TOKEN);
54920
+ sessionStorage.removeItem(ACCESS_TOKEN);
54921
+ localStorage.removeItem("ROLES");
54922
+ history.push("/");
54923
+ };
54924
+
54925
+ if (!user) {
54926
+ return React__default.createElement(Loading, null);
54927
+ }
54928
+
54929
+ return React__default.createElement("div", {
54930
+ className: "c-app c-default-layout"
54931
+ }, !isNotification && React__default.createElement(TheSidebar, {
54932
+ navigation: authNavigations
54933
+ }), React__default.createElement("div", {
54934
+ className: "c-wrapper"
54935
+ }, !isNotification && React__default.createElement(TheHeader, {
54936
+ onToggleModel: handleToggleModel
54937
+ }), React__default.createElement("div", {
54938
+ className: "c-body bg-white"
54939
+ }, React__default.createElement(TheContent$1, {
54940
+ routes: authRoutes
54941
+ }))), React__default.createElement(ModelSelectRole, {
54942
+ open: openModelSelectRole,
54943
+ onToggleModel: handleToggleModel
54944
+ }));
54945
+ };
54946
+
54947
54947
  var amplitudeClient = amplitude;
54948
54948
 
54949
54949
  Object.defineProperty(exports, 'I18nextProvider', {