mario-core 2.9.423-feedback → 2.9.425-feedback

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@ import 'bootstrap/dist/css/bootstrap.min.css';
2
2
  import i18n from 'i18next';
3
3
  import { initReactI18next, useTranslation } from 'react-i18next';
4
4
  export { I18nextProvider, useTranslation } from 'react-i18next';
5
- import React, { useCallback, useState, useEffect, useRef, 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';
@@ -772,7 +772,7 @@ var image_is_a_required = "Image is a required";
772
772
  var old_iep = "Old IEP";
773
773
  var create_next_years_iep = "Create Next Year's IEP";
774
774
  var write_something_optional = "Write something (Optional)";
775
- var the_effectiveness_of_learning_strategies_by_students_feedback = "The effectiveness of learning strategies as rated by students";
775
+ var the_effectiveness_of_learning_strategies_by_students_feedback = "The effectiveness of learning strategies are rated by students";
776
776
  var perceived_usefulness = "Perceived Usefulness";
777
777
  var performance$1 = "Performance";
778
778
  var not_enough_challenge_leading_to_boredom_and_lack_of_interest = "Not enough challenge, leading to boredom and lack of interest.";
@@ -2194,6 +2194,7 @@ var search_for_a_student = "Search for a student";
2194
2194
  var survey_resulting_in_scheduled_sessions = "Survey resulting in scheduled sessions";
2195
2195
  var current_class_grade = "Current Class Grade";
2196
2196
  var these_are_the_answers_from_classroom_teachers = "These are the answers from classroom teachers.";
2197
+ var total_responses = "Total Responses";
2197
2198
  var lang_us = {
2198
2199
  dashboard: dashboard,
2199
2200
  user: user,
@@ -4404,7 +4405,8 @@ var lang_us = {
4404
4405
  search_for_a_student: search_for_a_student,
4405
4406
  survey_resulting_in_scheduled_sessions: survey_resulting_in_scheduled_sessions,
4406
4407
  current_class_grade: current_class_grade,
4407
- these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers
4408
+ these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers,
4409
+ total_responses: total_responses
4408
4410
  };
4409
4411
 
4410
4412
  var dashboard$1 = "Dashboard";
@@ -5144,7 +5146,7 @@ var image_is_a_required$1 = "Image is a required";
5144
5146
  var old_iep$1 = "Old IEP";
5145
5147
  var create_next_years_iep$1 = "Create Next Year's IEP";
5146
5148
  var write_something_optional$1 = "Write something (Optional)";
5147
- var the_effectiveness_of_learning_strategies_by_students_feedback$1 = "The effectiveness of learning strategies as rated by students";
5149
+ var the_effectiveness_of_learning_strategies_by_students_feedback$1 = "The effectiveness of learning strategies are rated by students";
5148
5150
  var perceived_usefulness$1 = "Perceived Usefulness";
5149
5151
  var performance$2 = "Performance";
5150
5152
  var not_enough_challenge_leading_to_boredom_and_lack_of_interest$1 = "Not enough challenge, leading to boredom and lack of interest.";
@@ -6562,6 +6564,7 @@ var search_for_a_student$1 = "Search for a student";
6562
6564
  var survey_resulting_in_scheduled_sessions$1 = "Survey resulting in scheduled sessions";
6563
6565
  var current_class_grade$1 = "Current Class Grade";
6564
6566
  var these_are_the_answers_from_classroom_teachers$1 = "These are the answers from classroom teachers.";
6567
+ var total_responses$1 = "Total Responses";
6565
6568
  var lang_uk = {
6566
6569
  dashboard: dashboard$1,
6567
6570
  user: user$1,
@@ -8769,7 +8772,8 @@ var lang_uk = {
8769
8772
  search_for_a_student: search_for_a_student$1,
8770
8773
  survey_resulting_in_scheduled_sessions: survey_resulting_in_scheduled_sessions$1,
8771
8774
  current_class_grade: current_class_grade$1,
8772
- these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$1
8775
+ these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$1,
8776
+ total_responses: total_responses$1
8773
8777
  };
8774
8778
 
8775
8779
  var dashboard$2 = "لوحة المعلومات";
@@ -10957,6 +10961,7 @@ var search_for_a_student$2 = "Search for a student";
10957
10961
  var survey_resulting_in_scheduled_sessions$2 = "Survey resulting in scheduled sessions";
10958
10962
  var current_class_grade$2 = "Current Class Grade";
10959
10963
  var these_are_the_answers_from_classroom_teachers$2 = "These are the answers from classroom teachers.";
10964
+ var total_responses$2 = "Total Responses";
10960
10965
  var lang_ar = {
10961
10966
  dashboard: dashboard$2,
10962
10967
  user: user$2,
@@ -13196,7 +13201,8 @@ var lang_ar = {
13196
13201
  search_for_a_student: search_for_a_student$2,
13197
13202
  survey_resulting_in_scheduled_sessions: survey_resulting_in_scheduled_sessions$2,
13198
13203
  current_class_grade: current_class_grade$2,
13199
- these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$2
13204
+ these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$2,
13205
+ total_responses: total_responses$2
13200
13206
  };
13201
13207
 
13202
13208
  var dashboard$3 = "Cuadro de mandos";
@@ -15384,6 +15390,7 @@ var search_for_a_student$3 = "Search for a student";
15384
15390
  var survey_resulting_in_scheduled_sessions$3 = "Survey resulting in scheduled sessions";
15385
15391
  var current_class_grade$3 = "Current Class Grade";
15386
15392
  var these_are_the_answers_from_classroom_teachers$3 = "These are the answers from classroom teachers.";
15393
+ var total_responses$3 = "Total Responses";
15387
15394
  var lang_es = {
15388
15395
  dashboard: dashboard$3,
15389
15396
  user: user$3,
@@ -17623,7 +17630,8 @@ var lang_es = {
17623
17630
  search_for_a_student: search_for_a_student$3,
17624
17631
  survey_resulting_in_scheduled_sessions: survey_resulting_in_scheduled_sessions$3,
17625
17632
  current_class_grade: current_class_grade$3,
17626
- these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$3
17633
+ these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$3,
17634
+ total_responses: total_responses$3
17627
17635
  };
17628
17636
 
17629
17637
  var dashboard$4 = "仪表板";
@@ -19811,6 +19819,7 @@ var search_for_a_student$4 = "Search for a student";
19811
19819
  var survey_resulting_in_scheduled_sessions$4 = "Survey resulting in scheduled sessions";
19812
19820
  var current_class_grade$4 = "Current Class Grade";
19813
19821
  var these_are_the_answers_from_classroom_teachers$4 = "These are the answers from classroom teachers.";
19822
+ var total_responses$4 = "Total Responses";
19814
19823
  var lang_zh = {
19815
19824
  dashboard: dashboard$4,
19816
19825
  user: user$4,
@@ -22050,7 +22059,8 @@ var lang_zh = {
22050
22059
  search_for_a_student: search_for_a_student$4,
22051
22060
  survey_resulting_in_scheduled_sessions: survey_resulting_in_scheduled_sessions$4,
22052
22061
  current_class_grade: current_class_grade$4,
22053
- these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$4
22062
+ these_are_the_answers_from_classroom_teachers: these_are_the_answers_from_classroom_teachers$4,
22063
+ total_responses: total_responses$4
22054
22064
  };
22055
22065
 
22056
22066
  var TINY_MCE_API_KEY = "htqausuofrnali3nh9ivmlpq6v415o0tv2qikpg39bqf4pnk";
@@ -41933,6 +41943,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41933
41943
  })), t("log_out")))));
41934
41944
  };
41935
41945
 
41946
+ var apiGetLanguage = function apiGetLanguage() {
41947
+ return api.get(BASE_URL + "/api/language");
41948
+ };
41949
+
41950
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41951
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41952
+ };
41953
+
41954
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41955
+
41956
+ var useLanguages = function useLanguages() {
41957
+ var dispatch = useDispatch();
41958
+
41959
+ var _useTranslation = useTranslation(),
41960
+ i18n = _useTranslation.i18n;
41961
+
41962
+ var language = useSelector(function (state) {
41963
+ return state.common.language;
41964
+ });
41965
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41966
+
41967
+ var _useState = useState([]),
41968
+ languageList = _useState[0],
41969
+ setLanguageList = _useState[1];
41970
+
41971
+ var _useState2 = useState(false),
41972
+ dropdownOpen = _useState2[0],
41973
+ setDropdownOpen = _useState2[1];
41974
+
41975
+ var _useState3 = useState(defaultLanguage),
41976
+ currentLang = _useState3[0],
41977
+ setCurrentLang = _useState3[1];
41978
+
41979
+ var toggle = function toggle() {
41980
+ return setDropdownOpen(function (prevState) {
41981
+ return !prevState;
41982
+ });
41983
+ };
41984
+
41985
+ var changeLanguageApp = function changeLanguageApp(lang) {
41986
+ try {
41987
+ var _temp3 = function _temp3() {
41988
+ dispatch(setLoading(false));
41989
+ };
41990
+
41991
+ dispatch(setLoading(true));
41992
+
41993
+ var _temp4 = _catch(function () {
41994
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41995
+ i18n.changeLanguage(lang);
41996
+ setCurrentLang(lang);
41997
+ dispatch(setLanguage(lang));
41998
+ });
41999
+ }, function (err) {
42000
+ var _err$response, _err$response$data;
42001
+
42002
+ dispatch(setAlert({
42003
+ type: "danger",
42004
+ 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
42005
+ }));
42006
+ });
42007
+
42008
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
42009
+ } catch (e) {
42010
+ return Promise.reject(e);
42011
+ }
42012
+ };
42013
+
42014
+ var getListLanguage = function getListLanguage() {
42015
+ try {
42016
+ var _temp6 = _catch(function () {
42017
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
42018
+ setLanguageList(res.data);
42019
+ });
42020
+ }, function (err) {
42021
+ var _err$response2, _err$response2$data;
42022
+
42023
+ dispatch(setAlert({
42024
+ type: "danger",
42025
+ 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
42026
+ }));
42027
+ });
42028
+
42029
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42030
+ } catch (e) {
42031
+ return Promise.reject(e);
42032
+ }
42033
+ };
42034
+
42035
+ useEffect(function () {
42036
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
42037
+ getListLanguage();
42038
+ }, []);
42039
+ return {
42040
+ languageList: languageList,
42041
+ toggle: toggle,
42042
+ dropdownOpen: dropdownOpen,
42043
+ currentLang: currentLang,
42044
+ changeLanguageApp: changeLanguageApp,
42045
+ setCurrentLang: setCurrentLang
42046
+ };
42047
+ };
42048
+
42049
+ var TheLanguageDropdown = function TheLanguageDropdown() {
42050
+ var _useLanguages = useLanguages(),
42051
+ languageList = _useLanguages.languageList,
42052
+ toggle = _useLanguages.toggle,
42053
+ dropdownOpen = _useLanguages.dropdownOpen,
42054
+ currentLang = _useLanguages.currentLang,
42055
+ changeLanguageApp = _useLanguages.changeLanguageApp;
42056
+
42057
+ var currentLanguage = useMemo(function () {
42058
+ var current = languageList.find(function (i) {
42059
+ return i.code === currentLang;
42060
+ });
42061
+ if (!current) return null;
42062
+ return React.createElement(React.Fragment, null, React.createElement("img", {
42063
+ className: "mr-2 " + styles['dropdown-menu-flag'],
42064
+ src: "" + getStaticFileUrl(current.image)
42065
+ }), " ", current.name);
42066
+ }, [currentLang, languageList]);
42067
+ return React.createElement(Dropdown, {
42068
+ isOpen: dropdownOpen,
42069
+ toggle: toggle,
42070
+ className: "" + styles["dropdown-menu"]
42071
+ }, React.createElement(DropdownToggle, {
42072
+ className: styles["header-avatar"] + " d-flex align-items-center"
42073
+ }, React.createElement("span", {
42074
+ style: {
42075
+ color: "#000",
42076
+ textTransform: "capitalize",
42077
+ display: 'flex',
42078
+ alignItems: 'center'
42079
+ }
42080
+ }, currentLanguage, React.createElement(BsChevronDown, {
42081
+ className: "ml-2",
42082
+ style: {
42083
+ fontSize: '10px'
42084
+ }
42085
+ }))), React.createElement(DropdownMenu, {
42086
+ className: styles["dropdown-content-language"]
42087
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42088
+ return React.createElement(DropdownItem, {
42089
+ key: lang.code,
42090
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42091
+ onClick: function onClick() {
42092
+ return changeLanguageApp(lang.code);
42093
+ }
42094
+ }, React.createElement("div", {
42095
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42096
+ }, React.createElement("span", {
42097
+ className: "mr-2 d-flex hover-opacity"
42098
+ }, React.createElement("img", {
42099
+ style: {
42100
+ width: "30px",
42101
+ height: "25px",
42102
+ borderRadius: "5px"
42103
+ },
42104
+ src: getStaticFileUrl(lang.image)
42105
+ })), lang.name));
42106
+ })));
42107
+ };
42108
+
42109
+ var TheHeader = function TheHeader(_ref) {
42110
+ var onToggleModel = _ref.onToggleModel;
42111
+ var dispatch = useDispatch();
42112
+ var sidebarShow = useSelector(function (state) {
42113
+ return state.common.sidebarShow;
42114
+ });
42115
+
42116
+ var _useTranslation = useTranslation(),
42117
+ t = _useTranslation.t;
42118
+
42119
+ var toggleSidebarMobile = function toggleSidebarMobile() {
42120
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42121
+ dispatch(setSidebar(val));
42122
+ };
42123
+
42124
+ var isDistrict = window.location.host.includes("-district");
42125
+ return React.createElement(CHeader, {
42126
+ withSubheader: true,
42127
+ className: "d-flex align-items-center justify-content-end"
42128
+ }, React.createElement(CToggler, {
42129
+ inHeader: true,
42130
+ className: "ml-md-3 d-lg-none",
42131
+ onClick: toggleSidebarMobile
42132
+ }), React.createElement(CHeaderBrand, {
42133
+ className: "mx-auto flex-grow-1 d-lg-none",
42134
+ to: "/"
42135
+ }, React.createElement("img", {
42136
+ src: getStaticFileUrl(Images.LOGO_HEADER),
42137
+ className: styles["header-logo"]
42138
+ })), React.createElement(CHeaderNav, {
42139
+ className: "pr-3"
42140
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42141
+ className: "mr-3",
42142
+ style: {
42143
+ color: '#000'
42144
+ },
42145
+ href: '/privacy-policy',
42146
+ target: "blank"
42147
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42148
+ onToggleModel: onToggleModel
42149
+ })));
42150
+ };
42151
+
41936
42152
  var TITLE$3 = "Not found";
41937
42153
 
41938
42154
  var NotFound = function NotFound() {
@@ -41990,6 +42206,258 @@ var TheContent = function TheContent(_ref) {
41990
42206
 
41991
42207
  var TheContent$1 = React.memo(TheContent);
41992
42208
 
42209
+ var loadingStyle = {
42210
+ minWidth: "100vw",
42211
+ minHeight: "100vh",
42212
+ position: "fixed",
42213
+ top: 0,
42214
+ left: 0,
42215
+ zIndex: 999999999,
42216
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42217
+ display: "flex",
42218
+ justifyContent: "center",
42219
+ alignItems: "center"
42220
+ };
42221
+
42222
+ var Loading = function Loading() {
42223
+ var isLoading = useSelector(function (state) {
42224
+ return state.common.isLoading;
42225
+ });
42226
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42227
+ return isLoading ? React.createElement("div", {
42228
+ style: loadingStyle
42229
+ }, React.createElement("div", {
42230
+ className: "spinner-border text-secondary",
42231
+ role: "status"
42232
+ }, React.createElement("span", {
42233
+ className: "sr-only"
42234
+ }, "Loading..."))) : null;
42235
+ };
42236
+
42237
+ var firstCheckToken = function firstCheckToken() {
42238
+ return Promise.resolve(_catch(function () {
42239
+ var token = getAccessToken();
42240
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42241
+ return tokenStatus.data ? true : false;
42242
+ }) : false;
42243
+ }, function () {
42244
+ return false;
42245
+ }));
42246
+ };
42247
+
42248
+ var canAccess = function canAccess(userRoles, componentRoles) {
42249
+ if (!Array.isArray(userRoles)) {
42250
+ return false;
42251
+ }
42252
+
42253
+ if (Array.isArray(componentRoles)) {
42254
+ var intersects = userRoles.filter(function (i) {
42255
+ return componentRoles.includes(i);
42256
+ });
42257
+ return intersects.length > 0;
42258
+ }
42259
+
42260
+ return true;
42261
+ };
42262
+
42263
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42264
+ var _handleUserRole;
42265
+
42266
+ var open = _ref.open,
42267
+ onToggleModel = _ref.onToggleModel;
42268
+ var dispatch = useDispatch();
42269
+
42270
+ var _useTranslation = useTranslation(),
42271
+ t = _useTranslation.t;
42272
+
42273
+ var history = useHistory();
42274
+ var pathname = window.location.pathname;
42275
+ var user = useSelector(function (state) {
42276
+ return state.common.user;
42277
+ });
42278
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42279
+
42280
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42281
+ dispatch(setLoading(true));
42282
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42283
+ dispatch(setUser(_extends({}, user, {
42284
+ roles: roleSelect
42285
+ })));
42286
+ localStorage.setItem("ROLES", roleSelect.toString());
42287
+ onToggleModel();
42288
+
42289
+ if (roles.includes("Parent")) {
42290
+ history.push("/parent");
42291
+ } else if (roles.includes("Admin")) {
42292
+ history.push("/admin/home");
42293
+ } else {
42294
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42295
+ }
42296
+ };
42297
+
42298
+ return React.createElement(Modal, {
42299
+ isOpen: open,
42300
+ toggle: function toggle() {
42301
+ return onToggleModel();
42302
+ },
42303
+ className: "" + styles["model-switch-roles"],
42304
+ centered: true
42305
+ }, React.createElement("p", {
42306
+ className: "" + styles["title"]
42307
+ }, 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) {
42308
+ return React.createElement("p", {
42309
+ key: r,
42310
+ 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" : ""],
42311
+ onClick: function onClick() {
42312
+ return handleSelectUserRoles([r]);
42313
+ }
42314
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42315
+ })));
42316
+ };
42317
+
42318
+ var TheLayout = function TheLayout(_ref) {
42319
+ var routes = _ref.routes,
42320
+ navigation = _ref.navigation;
42321
+ var history = useHistory();
42322
+ var dispatch = useDispatch();
42323
+ var user = useSelector(function (state) {
42324
+ return state.common.user;
42325
+ });
42326
+ var language = useSelector(function (state) {
42327
+ return state.common.language;
42328
+ });
42329
+
42330
+ var _useState = useState(false),
42331
+ openModelSelectRole = _useState[0],
42332
+ setOpenModelSelectRole = _useState[1];
42333
+
42334
+ var _useTranslation = useTranslation(),
42335
+ t = _useTranslation.t;
42336
+
42337
+ var location = useLocation();
42338
+ var isNotification = location.pathname.includes("notifications");
42339
+ var isDistrict = window.location.host.includes("-district");
42340
+
42341
+ var handleToggleModel = function handleToggleModel() {
42342
+ setOpenModelSelectRole(!openModelSelectRole);
42343
+ };
42344
+
42345
+ var authRoutes = useMemo(function () {
42346
+ return routes.filter(function (route) {
42347
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42348
+ }).filter(function (route) {
42349
+ return !!route.isDistrict === isDistrict;
42350
+ });
42351
+ }, [user, language]);
42352
+ var authNavigations = useMemo(function () {
42353
+ return navigation.map(function (item) {
42354
+ var _item$_children, _item$_children2;
42355
+
42356
+ return _extends({}, item, {
42357
+ name: t(item.name),
42358
+ _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) {
42359
+ return _extends({}, x, {
42360
+ name: t(x.name)
42361
+ });
42362
+ }) : undefined
42363
+ });
42364
+ }).filter(function (nav) {
42365
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42366
+ }).filter(function (nav) {
42367
+ return !!nav.isDistrict === isDistrict;
42368
+ });
42369
+ }, [user, language]);
42370
+
42371
+ var getInformationSetting = function getInformationSetting() {
42372
+ try {
42373
+ var _temp2 = _catch(function () {
42374
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42375
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42376
+ });
42377
+ }, function (err) {
42378
+ console.error(err);
42379
+ });
42380
+
42381
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42382
+ } catch (e) {
42383
+ return Promise.reject(e);
42384
+ }
42385
+ };
42386
+
42387
+ useEffect(function () {
42388
+ checkAuthentication();
42389
+ }, []);
42390
+ useEffect(function () {
42391
+ getInformationSetting();
42392
+ }, [location.pathname]);
42393
+
42394
+ var checkAuthentication = function checkAuthentication() {
42395
+ try {
42396
+ var _temp4 = _catch(function () {
42397
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42398
+ tokenStatus ? loadInfo() : resetAuth();
42399
+ });
42400
+ }, function () {
42401
+ resetAuth();
42402
+ });
42403
+
42404
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42405
+ } catch (e) {
42406
+ return Promise.reject(e);
42407
+ }
42408
+ };
42409
+
42410
+ var loadInfo = function loadInfo() {
42411
+ try {
42412
+ var _temp6 = _catch(function () {
42413
+ return Promise.resolve(getInfo()).then(function (info) {
42414
+ var _info$data, _info$data$roles;
42415
+
42416
+ 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"))) {
42417
+ resetAuth();
42418
+ }
42419
+
42420
+ dispatch(setUser(info.data));
42421
+ });
42422
+ }, function () {
42423
+ resetAuth();
42424
+ });
42425
+
42426
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42427
+ } catch (e) {
42428
+ return Promise.reject(e);
42429
+ }
42430
+ };
42431
+
42432
+ var resetAuth = function resetAuth() {
42433
+ localStorage.removeItem(ACCESS_TOKEN);
42434
+ sessionStorage.removeItem(ACCESS_TOKEN);
42435
+ localStorage.removeItem("ROLES");
42436
+ history.push("/");
42437
+ };
42438
+
42439
+ if (!user) {
42440
+ return React.createElement(Loading, null);
42441
+ }
42442
+
42443
+ return React.createElement("div", {
42444
+ className: "c-app c-default-layout"
42445
+ }, !isNotification && React.createElement(TheSidebar, {
42446
+ navigation: authNavigations
42447
+ }), React.createElement("div", {
42448
+ className: "c-wrapper"
42449
+ }, !isNotification && React.createElement(TheHeader, {
42450
+ onToggleModel: handleToggleModel
42451
+ }), React.createElement("div", {
42452
+ className: "c-body bg-white"
42453
+ }, React.createElement(TheContent$1, {
42454
+ routes: authRoutes
42455
+ }))), React.createElement(ModelSelectRole, {
42456
+ open: openModelSelectRole,
42457
+ onToggleModel: handleToggleModel
42458
+ }));
42459
+ };
42460
+
41993
42461
  var buttonTextStyle = {
41994
42462
  fontWeight: 500
41995
42463
  };
@@ -47741,6 +48209,8 @@ var useAssignStudent = function useAssignStudent(teacherSelected, assistantSelec
47741
48209
 
47742
48210
  var onAssignStaffToStudents = function onAssignStaffToStudents(listUserIds) {
47743
48211
  try {
48212
+ var _userSelected$filter$, _userSelected$filter;
48213
+
47744
48214
  var _temp27 = function _temp27() {
47745
48215
  dispatch(setLoading(false));
47746
48216
  };
@@ -47761,6 +48231,20 @@ var useAssignStudent = function useAssignStudent(teacherSelected, assistantSelec
47761
48231
  return Promise.resolve();
47762
48232
  }
47763
48233
 
48234
+ var allUsersHaveTeachers = (_userSelected$filter$ = userSelected === null || userSelected === void 0 ? void 0 : (_userSelected$filter = userSelected.filter(function (user) {
48235
+ return listUserIds === null || listUserIds === void 0 ? void 0 : listUserIds.includes(user.id);
48236
+ })) === null || _userSelected$filter === void 0 ? void 0 : _userSelected$filter.every(function (u) {
48237
+ return Array.isArray(u.teachers) && u.teachers.length > 0;
48238
+ })) != null ? _userSelected$filter$ : false;
48239
+
48240
+ if (staffBulkAssign.teacher.length === 0 && !allUsersHaveTeachers) {
48241
+ dispatch(setAlert({
48242
+ type: "danger",
48243
+ message: "Please assign a teacher to each student before giving other educators access to them"
48244
+ }));
48245
+ return Promise.resolve();
48246
+ }
48247
+
47764
48248
  dispatch(setLoading(true));
47765
48249
 
47766
48250
  var _temp28 = _catch(function () {
@@ -51370,34 +51854,6 @@ var UserDetail = function UserDetail() {
51370
51854
  });
51371
51855
  };
51372
51856
 
51373
- var loadingStyle = {
51374
- minWidth: "100vw",
51375
- minHeight: "100vh",
51376
- position: "fixed",
51377
- top: 0,
51378
- left: 0,
51379
- zIndex: 999999999,
51380
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51381
- display: "flex",
51382
- justifyContent: "center",
51383
- alignItems: "center"
51384
- };
51385
-
51386
- var Loading = function Loading() {
51387
- var isLoading = useSelector(function (state) {
51388
- return state.common.isLoading;
51389
- });
51390
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51391
- return isLoading ? React.createElement("div", {
51392
- style: loadingStyle
51393
- }, React.createElement("div", {
51394
- className: "spinner-border text-secondary",
51395
- role: "status"
51396
- }, React.createElement("span", {
51397
- className: "sr-only"
51398
- }, "Loading..."))) : null;
51399
- };
51400
-
51401
51857
  var ScrollToTop = function ScrollToTop() {
51402
51858
  var _useLocation = useLocation(),
51403
51859
  pathname = _useLocation.pathname;
@@ -51505,7 +51961,12 @@ var CommonHeader = function CommonHeader(_ref) {
51505
51961
  }, header))));
51506
51962
  };
51507
51963
 
51964
+ var IDLE_MINUTES_WARNING = 13;
51965
+ var AUTO_LOGOUT_MINUTES = 15;
51966
+
51508
51967
  var NotificationLogoutModal = function NotificationLogoutModal() {
51968
+ var history = useHistory();
51969
+
51509
51970
  var _useState = useState(false),
51510
51971
  isOpen = _useState[0],
51511
51972
  setIsOpen = _useState[1];
@@ -51517,37 +51978,65 @@ var NotificationLogoutModal = function NotificationLogoutModal() {
51517
51978
  objTime = _useState2[0],
51518
51979
  setObjTime = _useState2[1];
51519
51980
 
51981
+ var getLastActivity = function getLastActivity() {
51982
+ try {
51983
+ var _localStorage$getItem, _localStorage, _localStorage$getItem2;
51984
+
51985
+ return (_localStorage$getItem = (_localStorage = localStorage) === null || _localStorage === void 0 ? void 0 : (_localStorage$getItem2 = _localStorage.getItem) === null || _localStorage$getItem2 === void 0 ? void 0 : _localStorage$getItem2.call(_localStorage, "LAST_ACTIVITY_TIME")) != null ? _localStorage$getItem : null;
51986
+ } catch (_unused) {
51987
+ return null;
51988
+ }
51989
+ };
51990
+
51991
+ var doLogout = function doLogout() {
51992
+ localStorage.removeItem(ACCESS_TOKEN);
51993
+ sessionStorage.removeItem(ACCESS_TOKEN);
51994
+ localStorage.removeItem("ROLES");
51995
+ localStorage.removeItem("LAST_ACTIVITY_TIME");
51996
+ setIsOpen(false);
51997
+ history.replace("/login");
51998
+ };
51999
+
51520
52000
  var checkOpenModalLogout = function checkOpenModalLogout() {
51521
- var lastTimeOut = localStorage.getItem("LAST_TIME_REQUETST");
51522
- var timeMoment = moment(lastTimeOut, "YYYY-MM-DD HH:mm");
52001
+ var accessToken = getAccessToken();
52002
+ if (!accessToken) return;
52003
+ var lastActivity = getLastActivity();
52004
+
52005
+ if (!lastActivity) {
52006
+ var _localStorage2, _localStorage2$setIte;
52007
+
52008
+ (_localStorage2 = localStorage) === null || _localStorage2 === void 0 ? void 0 : (_localStorage2$setIte = _localStorage2.setItem) === null || _localStorage2$setIte === void 0 ? void 0 : _localStorage2$setIte.call(_localStorage2, "LAST_ACTIVITY_TIME", new Date().toISOString());
52009
+ return;
52010
+ }
52011
+
52012
+ var timeMoment = moment(lastActivity, "YYYY-MM-DD HH:mm");
51523
52013
  var currentTime = moment(moment().utc().format("YYYY-MM-DD HH:mm"));
51524
52014
  var minutes = currentTime.diff(timeMoment, "minutes");
51525
- var timeLogout = utcToLocalTime(currentTime.add(16 - minutes, 'minutes').format("YYYY-MM-DD HH:mm"), "HH:mm");
51526
52015
 
51527
- if (minutes == 13) {
51528
- var dataTime = {
52016
+ if (minutes >= AUTO_LOGOUT_MINUTES) {
52017
+ doLogout();
52018
+ return;
52019
+ }
52020
+
52021
+ var timeLogout = utcToLocalTime(currentTime.add(AUTO_LOGOUT_MINUTES - minutes, 'minutes').format("YYYY-MM-DD HH:mm"), "HH:mm");
52022
+
52023
+ if (minutes >= IDLE_MINUTES_WARNING) {
52024
+ setObjTime({
51529
52025
  minutes: minutes,
51530
52026
  timeLogout: timeLogout
51531
- };
51532
- setObjTime(dataTime);
51533
- onToggle();
52027
+ });
52028
+ setIsOpen(true);
51534
52029
  }
51535
52030
  };
51536
52031
 
51537
52032
  useEffect(function () {
51538
- var accessToken = getAccessToken();
51539
-
51540
- if (accessToken) {
51541
- var interval = setInterval(function () {
51542
- checkOpenModalLogout();
51543
- }, 60 * 1000);
51544
- return function () {
51545
- return clearInterval(interval);
51546
- };
51547
- }
51548
-
51549
- return;
51550
- }, [location.href]);
52033
+ var interval = setInterval(function () {
52034
+ checkOpenModalLogout();
52035
+ }, 60 * 1000);
52036
+ return function () {
52037
+ return clearInterval(interval);
52038
+ };
52039
+ }, []);
51551
52040
 
51552
52041
  var onToggle = function onToggle() {
51553
52042
  setIsOpen(!isOpen);
@@ -51559,7 +52048,7 @@ var NotificationLogoutModal = function NotificationLogoutModal() {
51559
52048
  size: "xs"
51560
52049
  }, React.createElement(ModalHeader, {
51561
52050
  toggle: onToggle
51562
- }, "Notification Logout"), React.createElement(ModalBody, null, "Are you still here? You have had no action for " + (objTime === null || objTime === void 0 ? void 0 : objTime.minutes) + " mins. \n Your account could be log out after " + (15 - (objTime === null || objTime === void 0 ? void 0 : objTime.minutes)) + " mins at " + (objTime === null || objTime === void 0 ? void 0 : objTime.timeLogout) + " if you don't action."), React.createElement(ModalFooter, {
52051
+ }, "Notification Logout"), React.createElement(ModalBody, null, "Are you still here? You have had no action for " + (objTime === null || objTime === void 0 ? void 0 : objTime.minutes) + " mins. \n Your account could be log out after " + (AUTO_LOGOUT_MINUTES - (objTime === null || objTime === void 0 ? void 0 : objTime.minutes)) + " mins at " + (objTime === null || objTime === void 0 ? void 0 : objTime.timeLogout) + " if you don't action."), React.createElement(ModalFooter, {
51563
52052
  className: "text-right"
51564
52053
  }, React.createElement(Button, {
51565
52054
  color: "primary",
@@ -54421,32 +54910,6 @@ var store = configureStore({
54421
54910
  }
54422
54911
  });
54423
54912
 
54424
- var firstCheckToken = function firstCheckToken() {
54425
- return Promise.resolve(_catch(function () {
54426
- var token = getAccessToken();
54427
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54428
- return tokenStatus.data ? true : false;
54429
- }) : false;
54430
- }, function () {
54431
- return false;
54432
- }));
54433
- };
54434
-
54435
- var canAccess = function canAccess(userRoles, componentRoles) {
54436
- if (!Array.isArray(userRoles)) {
54437
- return false;
54438
- }
54439
-
54440
- if (Array.isArray(componentRoles)) {
54441
- var intersects = userRoles.filter(function (i) {
54442
- return componentRoles.includes(i);
54443
- });
54444
- return intersects.length > 0;
54445
- }
54446
-
54447
- return true;
54448
- };
54449
-
54450
54913
  var isInViewport = function isInViewport(el) {
54451
54914
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54452
54915
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54480,411 +54943,7 @@ var generateRandomString = (function () {
54480
54943
  return (Math.random() + 1).toString(36).substring(7);
54481
54944
  });
54482
54945
 
54483
- var apiGetLanguage = function apiGetLanguage() {
54484
- return api.get(BASE_URL + "/api/language");
54485
- };
54486
-
54487
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54488
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54489
- };
54490
-
54491
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54492
-
54493
- var useLanguages = function useLanguages() {
54494
- var dispatch = useDispatch();
54495
-
54496
- var _useTranslation = useTranslation(),
54497
- i18n = _useTranslation.i18n;
54498
-
54499
- var language = useSelector(function (state) {
54500
- return state.common.language;
54501
- });
54502
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54503
-
54504
- var _useState = useState([]),
54505
- languageList = _useState[0],
54506
- setLanguageList = _useState[1];
54507
-
54508
- var _useState2 = useState(false),
54509
- dropdownOpen = _useState2[0],
54510
- setDropdownOpen = _useState2[1];
54511
-
54512
- var _useState3 = useState(defaultLanguage),
54513
- currentLang = _useState3[0],
54514
- setCurrentLang = _useState3[1];
54515
-
54516
- var toggle = function toggle() {
54517
- return setDropdownOpen(function (prevState) {
54518
- return !prevState;
54519
- });
54520
- };
54521
-
54522
- var changeLanguageApp = function changeLanguageApp(lang) {
54523
- try {
54524
- var _temp3 = function _temp3() {
54525
- dispatch(setLoading(false));
54526
- };
54527
-
54528
- dispatch(setLoading(true));
54529
-
54530
- var _temp4 = _catch(function () {
54531
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54532
- i18n.changeLanguage(lang);
54533
- setCurrentLang(lang);
54534
- dispatch(setLanguage(lang));
54535
- });
54536
- }, function (err) {
54537
- var _err$response, _err$response$data;
54538
-
54539
- dispatch(setAlert({
54540
- type: "danger",
54541
- 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
54542
- }));
54543
- });
54544
-
54545
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54546
- } catch (e) {
54547
- return Promise.reject(e);
54548
- }
54549
- };
54550
-
54551
- var getListLanguage = function getListLanguage() {
54552
- try {
54553
- var _temp6 = _catch(function () {
54554
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54555
- setLanguageList(res.data);
54556
- });
54557
- }, function (err) {
54558
- var _err$response2, _err$response2$data;
54559
-
54560
- dispatch(setAlert({
54561
- type: "danger",
54562
- 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
54563
- }));
54564
- });
54565
-
54566
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54567
- } catch (e) {
54568
- return Promise.reject(e);
54569
- }
54570
- };
54571
-
54572
- useEffect(function () {
54573
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54574
- getListLanguage();
54575
- }, []);
54576
- return {
54577
- languageList: languageList,
54578
- toggle: toggle,
54579
- dropdownOpen: dropdownOpen,
54580
- currentLang: currentLang,
54581
- changeLanguageApp: changeLanguageApp,
54582
- setCurrentLang: setCurrentLang
54583
- };
54584
- };
54585
-
54586
- var TheLanguageDropdown = function TheLanguageDropdown() {
54587
- var _useLanguages = useLanguages(),
54588
- languageList = _useLanguages.languageList,
54589
- toggle = _useLanguages.toggle,
54590
- dropdownOpen = _useLanguages.dropdownOpen,
54591
- currentLang = _useLanguages.currentLang,
54592
- changeLanguageApp = _useLanguages.changeLanguageApp;
54593
-
54594
- var currentLanguage = useMemo(function () {
54595
- var current = languageList.find(function (i) {
54596
- return i.code === currentLang;
54597
- });
54598
- if (!current) return null;
54599
- return React.createElement(React.Fragment, null, React.createElement("img", {
54600
- className: "mr-2 " + styles['dropdown-menu-flag'],
54601
- src: "" + getStaticFileUrl(current.image)
54602
- }), " ", current.name);
54603
- }, [currentLang, languageList]);
54604
- return React.createElement(Dropdown, {
54605
- isOpen: dropdownOpen,
54606
- toggle: toggle,
54607
- className: "" + styles["dropdown-menu"]
54608
- }, React.createElement(DropdownToggle, {
54609
- className: styles["header-avatar"] + " d-flex align-items-center"
54610
- }, React.createElement("span", {
54611
- style: {
54612
- color: "#000",
54613
- textTransform: "capitalize",
54614
- display: 'flex',
54615
- alignItems: 'center'
54616
- }
54617
- }, currentLanguage, React.createElement(BsChevronDown, {
54618
- className: "ml-2",
54619
- style: {
54620
- fontSize: '10px'
54621
- }
54622
- }))), React.createElement(DropdownMenu, {
54623
- className: styles["dropdown-content-language"]
54624
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54625
- return React.createElement(DropdownItem, {
54626
- key: lang.code,
54627
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54628
- onClick: function onClick() {
54629
- return changeLanguageApp(lang.code);
54630
- }
54631
- }, React.createElement("div", {
54632
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54633
- }, React.createElement("span", {
54634
- className: "mr-2 d-flex hover-opacity"
54635
- }, React.createElement("img", {
54636
- style: {
54637
- width: "30px",
54638
- height: "25px",
54639
- borderRadius: "5px"
54640
- },
54641
- src: getStaticFileUrl(lang.image)
54642
- })), lang.name));
54643
- })));
54644
- };
54645
-
54646
- var TheHeader = function TheHeader(_ref) {
54647
- var onToggleModel = _ref.onToggleModel;
54648
- var dispatch = useDispatch();
54649
- var sidebarShow = useSelector(function (state) {
54650
- return state.common.sidebarShow;
54651
- });
54652
-
54653
- var _useTranslation = useTranslation(),
54654
- t = _useTranslation.t;
54655
-
54656
- var toggleSidebarMobile = function toggleSidebarMobile() {
54657
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54658
- dispatch(setSidebar(val));
54659
- };
54660
-
54661
- var isDistrict = window.location.host.includes("-district");
54662
- return React.createElement(CHeader, {
54663
- withSubheader: true,
54664
- className: "d-flex align-items-center justify-content-end"
54665
- }, React.createElement(CToggler, {
54666
- inHeader: true,
54667
- className: "ml-md-3 d-lg-none",
54668
- onClick: toggleSidebarMobile
54669
- }), React.createElement(CHeaderBrand, {
54670
- className: "mx-auto flex-grow-1 d-lg-none",
54671
- to: "/"
54672
- }, React.createElement("img", {
54673
- src: getStaticFileUrl(Images.LOGO_HEADER),
54674
- className: styles["header-logo"]
54675
- })), React.createElement(CHeaderNav, {
54676
- className: "pr-3"
54677
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54678
- className: "mr-3",
54679
- style: {
54680
- color: '#000'
54681
- },
54682
- href: '/privacy-policy',
54683
- target: "blank"
54684
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54685
- onToggleModel: onToggleModel
54686
- })));
54687
- };
54688
-
54689
- var ModelSelectRole = function ModelSelectRole(_ref) {
54690
- var _handleUserRole;
54691
-
54692
- var open = _ref.open,
54693
- onToggleModel = _ref.onToggleModel;
54694
- var dispatch = useDispatch();
54695
-
54696
- var _useTranslation = useTranslation(),
54697
- t = _useTranslation.t;
54698
-
54699
- var history = useHistory();
54700
- var pathname = window.location.pathname;
54701
- var user = useSelector(function (state) {
54702
- return state.common.user;
54703
- });
54704
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54705
-
54706
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54707
- dispatch(setLoading(true));
54708
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54709
- dispatch(setUser(_extends({}, user, {
54710
- roles: roleSelect
54711
- })));
54712
- localStorage.setItem("ROLES", roleSelect.toString());
54713
- onToggleModel();
54714
-
54715
- if (roles.includes("Parent")) {
54716
- history.push("/parent");
54717
- } else if (roles.includes("Admin")) {
54718
- history.push("/admin/home");
54719
- } else {
54720
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54721
- }
54722
- };
54723
-
54724
- return React.createElement(Modal, {
54725
- isOpen: open,
54726
- toggle: function toggle() {
54727
- return onToggleModel();
54728
- },
54729
- className: "" + styles["model-switch-roles"],
54730
- centered: true
54731
- }, React.createElement("p", {
54732
- className: "" + styles["title"]
54733
- }, 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) {
54734
- return React.createElement("p", {
54735
- key: r,
54736
- 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" : ""],
54737
- onClick: function onClick() {
54738
- return handleSelectUserRoles([r]);
54739
- }
54740
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54741
- })));
54742
- };
54743
-
54744
- var TheLayout = function TheLayout(_ref) {
54745
- var routes = _ref.routes,
54746
- navigation = _ref.navigation;
54747
- var history = useHistory();
54748
- var dispatch = useDispatch();
54749
- var user = useSelector(function (state) {
54750
- return state.common.user;
54751
- });
54752
- var language = useSelector(function (state) {
54753
- return state.common.language;
54754
- });
54755
-
54756
- var _useState = useState(false),
54757
- openModelSelectRole = _useState[0],
54758
- setOpenModelSelectRole = _useState[1];
54759
-
54760
- var _useTranslation = useTranslation(),
54761
- t = _useTranslation.t;
54762
-
54763
- var location = useLocation();
54764
- var isNotification = location.pathname.includes("notifications");
54765
- var isDistrict = window.location.host.includes("-district");
54766
-
54767
- var handleToggleModel = function handleToggleModel() {
54768
- setOpenModelSelectRole(!openModelSelectRole);
54769
- };
54770
-
54771
- var authRoutes = useMemo(function () {
54772
- return routes.filter(function (route) {
54773
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54774
- }).filter(function (route) {
54775
- return !!route.isDistrict === isDistrict;
54776
- });
54777
- }, [user, language]);
54778
- var authNavigations = useMemo(function () {
54779
- return navigation.map(function (item) {
54780
- var _item$_children, _item$_children2;
54781
-
54782
- return _extends({}, item, {
54783
- name: t(item.name),
54784
- _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) {
54785
- return _extends({}, x, {
54786
- name: t(x.name)
54787
- });
54788
- }) : undefined
54789
- });
54790
- }).filter(function (nav) {
54791
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54792
- }).filter(function (nav) {
54793
- return !!nav.isDistrict === isDistrict;
54794
- });
54795
- }, [user, language]);
54796
-
54797
- var getInformationSetting = function getInformationSetting() {
54798
- try {
54799
- var _temp2 = _catch(function () {
54800
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54801
- dispatch(setSandboxMode(res.data.isSandboxMode));
54802
- });
54803
- }, function (err) {
54804
- console.error(err);
54805
- });
54806
-
54807
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54808
- } catch (e) {
54809
- return Promise.reject(e);
54810
- }
54811
- };
54812
-
54813
- useEffect(function () {
54814
- checkAuthentication();
54815
- }, []);
54816
- useEffect(function () {
54817
- getInformationSetting();
54818
- }, [location.pathname]);
54819
-
54820
- var checkAuthentication = function checkAuthentication() {
54821
- try {
54822
- var _temp4 = _catch(function () {
54823
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54824
- tokenStatus ? loadInfo() : resetAuth();
54825
- });
54826
- }, function () {
54827
- resetAuth();
54828
- });
54829
-
54830
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54831
- } catch (e) {
54832
- return Promise.reject(e);
54833
- }
54834
- };
54835
-
54836
- var loadInfo = function loadInfo() {
54837
- try {
54838
- var _temp6 = _catch(function () {
54839
- return Promise.resolve(getInfo()).then(function (info) {
54840
- var _info$data, _info$data$roles;
54841
-
54842
- 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"))) {
54843
- resetAuth();
54844
- }
54845
-
54846
- dispatch(setUser(info.data));
54847
- });
54848
- }, function () {
54849
- resetAuth();
54850
- });
54851
-
54852
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54853
- } catch (e) {
54854
- return Promise.reject(e);
54855
- }
54856
- };
54857
-
54858
- var resetAuth = function resetAuth() {
54859
- localStorage.removeItem(ACCESS_TOKEN);
54860
- sessionStorage.removeItem(ACCESS_TOKEN);
54861
- localStorage.removeItem("ROLES");
54862
- history.push("/");
54863
- };
54864
-
54865
- if (!user) {
54866
- return React.createElement(Loading, null);
54867
- }
54868
-
54869
- return React.createElement("div", {
54870
- className: "c-app c-default-layout"
54871
- }, !isNotification && React.createElement(TheSidebar, {
54872
- navigation: authNavigations
54873
- }), React.createElement("div", {
54874
- className: "c-wrapper"
54875
- }, !isNotification && React.createElement(TheHeader, {
54876
- onToggleModel: handleToggleModel
54877
- }), React.createElement("div", {
54878
- className: "c-body bg-white"
54879
- }, React.createElement(TheContent$1, {
54880
- routes: authRoutes
54881
- }))), React.createElement(ModelSelectRole, {
54882
- open: openModelSelectRole,
54883
- onToggleModel: handleToggleModel
54884
- }));
54885
- };
54886
-
54887
54946
  var amplitudeClient = amplitude;
54888
54947
 
54889
- 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 };
54948
+ 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, getAccessToken, 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 };
54890
54949
  //# sourceMappingURL=index.modern.js.map