mario-core 2.9.417-feedback → 2.9.419-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';
@@ -22175,6 +22175,12 @@ var CsvImportType;
22175
22175
  CsvImportType[CsvImportType["Admin"] = 1] = "Admin";
22176
22176
  })(CsvImportType || (CsvImportType = {}));
22177
22177
 
22178
+ var domainName = window.location.hostname;
22179
+ var listCheckMalvernCollege = ['malverncollege', 'stage', 'localhost'];
22180
+ var isMalvernCollege = listCheckMalvernCollege.some(function (e) {
22181
+ return domainName.includes(e);
22182
+ });
22183
+
22178
22184
  var resources$5 = {
22179
22185
  "en-US": {
22180
22186
  translation: lang_us
@@ -41887,6 +41893,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41887
41893
  })), t("log_out")))));
41888
41894
  };
41889
41895
 
41896
+ var apiGetLanguage = function apiGetLanguage() {
41897
+ return api.get(BASE_URL + "/api/language");
41898
+ };
41899
+
41900
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41901
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41902
+ };
41903
+
41904
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41905
+
41906
+ var useLanguages = function useLanguages() {
41907
+ var dispatch = useDispatch();
41908
+
41909
+ var _useTranslation = useTranslation(),
41910
+ i18n = _useTranslation.i18n;
41911
+
41912
+ var language = useSelector(function (state) {
41913
+ return state.common.language;
41914
+ });
41915
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41916
+
41917
+ var _useState = useState([]),
41918
+ languageList = _useState[0],
41919
+ setLanguageList = _useState[1];
41920
+
41921
+ var _useState2 = useState(false),
41922
+ dropdownOpen = _useState2[0],
41923
+ setDropdownOpen = _useState2[1];
41924
+
41925
+ var _useState3 = useState(defaultLanguage),
41926
+ currentLang = _useState3[0],
41927
+ setCurrentLang = _useState3[1];
41928
+
41929
+ var toggle = function toggle() {
41930
+ return setDropdownOpen(function (prevState) {
41931
+ return !prevState;
41932
+ });
41933
+ };
41934
+
41935
+ var changeLanguageApp = function changeLanguageApp(lang) {
41936
+ try {
41937
+ var _temp3 = function _temp3() {
41938
+ dispatch(setLoading(false));
41939
+ };
41940
+
41941
+ dispatch(setLoading(true));
41942
+
41943
+ var _temp4 = _catch(function () {
41944
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41945
+ i18n.changeLanguage(lang);
41946
+ setCurrentLang(lang);
41947
+ dispatch(setLanguage(lang));
41948
+ });
41949
+ }, function (err) {
41950
+ var _err$response, _err$response$data;
41951
+
41952
+ dispatch(setAlert({
41953
+ type: "danger",
41954
+ 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
41955
+ }));
41956
+ });
41957
+
41958
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41959
+ } catch (e) {
41960
+ return Promise.reject(e);
41961
+ }
41962
+ };
41963
+
41964
+ var getListLanguage = function getListLanguage() {
41965
+ try {
41966
+ var _temp6 = _catch(function () {
41967
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
41968
+ setLanguageList(res.data);
41969
+ });
41970
+ }, function (err) {
41971
+ var _err$response2, _err$response2$data;
41972
+
41973
+ dispatch(setAlert({
41974
+ type: "danger",
41975
+ 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
41976
+ }));
41977
+ });
41978
+
41979
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41980
+ } catch (e) {
41981
+ return Promise.reject(e);
41982
+ }
41983
+ };
41984
+
41985
+ useEffect(function () {
41986
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
41987
+ getListLanguage();
41988
+ }, []);
41989
+ return {
41990
+ languageList: languageList,
41991
+ toggle: toggle,
41992
+ dropdownOpen: dropdownOpen,
41993
+ currentLang: currentLang,
41994
+ changeLanguageApp: changeLanguageApp,
41995
+ setCurrentLang: setCurrentLang
41996
+ };
41997
+ };
41998
+
41999
+ var TheLanguageDropdown = function TheLanguageDropdown() {
42000
+ var _useLanguages = useLanguages(),
42001
+ languageList = _useLanguages.languageList,
42002
+ toggle = _useLanguages.toggle,
42003
+ dropdownOpen = _useLanguages.dropdownOpen,
42004
+ currentLang = _useLanguages.currentLang,
42005
+ changeLanguageApp = _useLanguages.changeLanguageApp;
42006
+
42007
+ var currentLanguage = useMemo(function () {
42008
+ var current = languageList.find(function (i) {
42009
+ return i.code === currentLang;
42010
+ });
42011
+ if (!current) return null;
42012
+ return React.createElement(React.Fragment, null, React.createElement("img", {
42013
+ className: "mr-2 " + styles['dropdown-menu-flag'],
42014
+ src: "" + getStaticFileUrl(current.image)
42015
+ }), " ", current.name);
42016
+ }, [currentLang, languageList]);
42017
+ return React.createElement(Dropdown, {
42018
+ isOpen: dropdownOpen,
42019
+ toggle: toggle,
42020
+ className: "" + styles["dropdown-menu"]
42021
+ }, React.createElement(DropdownToggle, {
42022
+ className: styles["header-avatar"] + " d-flex align-items-center"
42023
+ }, React.createElement("span", {
42024
+ style: {
42025
+ color: "#000",
42026
+ textTransform: "capitalize",
42027
+ display: 'flex',
42028
+ alignItems: 'center'
42029
+ }
42030
+ }, currentLanguage, React.createElement(BsChevronDown, {
42031
+ className: "ml-2",
42032
+ style: {
42033
+ fontSize: '10px'
42034
+ }
42035
+ }))), React.createElement(DropdownMenu, {
42036
+ className: styles["dropdown-content-language"]
42037
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42038
+ return React.createElement(DropdownItem, {
42039
+ key: lang.code,
42040
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42041
+ onClick: function onClick() {
42042
+ return changeLanguageApp(lang.code);
42043
+ }
42044
+ }, React.createElement("div", {
42045
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42046
+ }, React.createElement("span", {
42047
+ className: "mr-2 d-flex hover-opacity"
42048
+ }, React.createElement("img", {
42049
+ style: {
42050
+ width: "30px",
42051
+ height: "25px",
42052
+ borderRadius: "5px"
42053
+ },
42054
+ src: getStaticFileUrl(lang.image)
42055
+ })), lang.name));
42056
+ })));
42057
+ };
42058
+
42059
+ var TheHeader = function TheHeader(_ref) {
42060
+ var onToggleModel = _ref.onToggleModel;
42061
+ var dispatch = useDispatch();
42062
+ var sidebarShow = useSelector(function (state) {
42063
+ return state.common.sidebarShow;
42064
+ });
42065
+
42066
+ var _useTranslation = useTranslation(),
42067
+ t = _useTranslation.t;
42068
+
42069
+ var toggleSidebarMobile = function toggleSidebarMobile() {
42070
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42071
+ dispatch(setSidebar(val));
42072
+ };
42073
+
42074
+ var isDistrict = window.location.host.includes("-district");
42075
+ return React.createElement(CHeader, {
42076
+ withSubheader: true,
42077
+ className: "d-flex align-items-center justify-content-end"
42078
+ }, React.createElement(CToggler, {
42079
+ inHeader: true,
42080
+ className: "ml-md-3 d-lg-none",
42081
+ onClick: toggleSidebarMobile
42082
+ }), React.createElement(CHeaderBrand, {
42083
+ className: "mx-auto flex-grow-1 d-lg-none",
42084
+ to: "/"
42085
+ }, React.createElement("img", {
42086
+ src: getStaticFileUrl(Images.LOGO_HEADER),
42087
+ className: styles["header-logo"]
42088
+ })), React.createElement(CHeaderNav, {
42089
+ className: "pr-3"
42090
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42091
+ className: "mr-3",
42092
+ style: {
42093
+ color: '#000'
42094
+ },
42095
+ href: '/privacy-policy',
42096
+ target: "blank"
42097
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42098
+ onToggleModel: onToggleModel
42099
+ })));
42100
+ };
42101
+
41890
42102
  var TITLE$3 = "Not found";
41891
42103
 
41892
42104
  var NotFound = function NotFound() {
@@ -41944,6 +42156,258 @@ var TheContent = function TheContent(_ref) {
41944
42156
 
41945
42157
  var TheContent$1 = React.memo(TheContent);
41946
42158
 
42159
+ var loadingStyle = {
42160
+ minWidth: "100vw",
42161
+ minHeight: "100vh",
42162
+ position: "fixed",
42163
+ top: 0,
42164
+ left: 0,
42165
+ zIndex: 999999999,
42166
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42167
+ display: "flex",
42168
+ justifyContent: "center",
42169
+ alignItems: "center"
42170
+ };
42171
+
42172
+ var Loading = function Loading() {
42173
+ var isLoading = useSelector(function (state) {
42174
+ return state.common.isLoading;
42175
+ });
42176
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42177
+ return isLoading ? React.createElement("div", {
42178
+ style: loadingStyle
42179
+ }, React.createElement("div", {
42180
+ className: "spinner-border text-secondary",
42181
+ role: "status"
42182
+ }, React.createElement("span", {
42183
+ className: "sr-only"
42184
+ }, "Loading..."))) : null;
42185
+ };
42186
+
42187
+ var firstCheckToken = function firstCheckToken() {
42188
+ return Promise.resolve(_catch(function () {
42189
+ var token = getAccessToken();
42190
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42191
+ return tokenStatus.data ? true : false;
42192
+ }) : false;
42193
+ }, function () {
42194
+ return false;
42195
+ }));
42196
+ };
42197
+
42198
+ var canAccess = function canAccess(userRoles, componentRoles) {
42199
+ if (!Array.isArray(userRoles)) {
42200
+ return false;
42201
+ }
42202
+
42203
+ if (Array.isArray(componentRoles)) {
42204
+ var intersects = userRoles.filter(function (i) {
42205
+ return componentRoles.includes(i);
42206
+ });
42207
+ return intersects.length > 0;
42208
+ }
42209
+
42210
+ return true;
42211
+ };
42212
+
42213
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42214
+ var _handleUserRole;
42215
+
42216
+ var open = _ref.open,
42217
+ onToggleModel = _ref.onToggleModel;
42218
+ var dispatch = useDispatch();
42219
+
42220
+ var _useTranslation = useTranslation(),
42221
+ t = _useTranslation.t;
42222
+
42223
+ var history = useHistory();
42224
+ var pathname = window.location.pathname;
42225
+ var user = useSelector(function (state) {
42226
+ return state.common.user;
42227
+ });
42228
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42229
+
42230
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42231
+ dispatch(setLoading(true));
42232
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42233
+ dispatch(setUser(_extends({}, user, {
42234
+ roles: roleSelect
42235
+ })));
42236
+ localStorage.setItem("ROLES", roleSelect.toString());
42237
+ onToggleModel();
42238
+
42239
+ if (roles.includes("Parent")) {
42240
+ history.push("/parent");
42241
+ } else if (roles.includes("Admin")) {
42242
+ history.push("/admin/home");
42243
+ } else {
42244
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42245
+ }
42246
+ };
42247
+
42248
+ return React.createElement(Modal, {
42249
+ isOpen: open,
42250
+ toggle: function toggle() {
42251
+ return onToggleModel();
42252
+ },
42253
+ className: "" + styles["model-switch-roles"],
42254
+ centered: true
42255
+ }, React.createElement("p", {
42256
+ className: "" + styles["title"]
42257
+ }, 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) {
42258
+ return React.createElement("p", {
42259
+ key: r,
42260
+ 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" : ""],
42261
+ onClick: function onClick() {
42262
+ return handleSelectUserRoles([r]);
42263
+ }
42264
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42265
+ })));
42266
+ };
42267
+
42268
+ var TheLayout = function TheLayout(_ref) {
42269
+ var routes = _ref.routes,
42270
+ navigation = _ref.navigation;
42271
+ var history = useHistory();
42272
+ var dispatch = useDispatch();
42273
+ var user = useSelector(function (state) {
42274
+ return state.common.user;
42275
+ });
42276
+ var language = useSelector(function (state) {
42277
+ return state.common.language;
42278
+ });
42279
+
42280
+ var _useState = useState(false),
42281
+ openModelSelectRole = _useState[0],
42282
+ setOpenModelSelectRole = _useState[1];
42283
+
42284
+ var _useTranslation = useTranslation(),
42285
+ t = _useTranslation.t;
42286
+
42287
+ var location = useLocation();
42288
+ var isNotification = location.pathname.includes("notifications");
42289
+ var isDistrict = window.location.host.includes("-district");
42290
+
42291
+ var handleToggleModel = function handleToggleModel() {
42292
+ setOpenModelSelectRole(!openModelSelectRole);
42293
+ };
42294
+
42295
+ var authRoutes = useMemo(function () {
42296
+ return routes.filter(function (route) {
42297
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42298
+ }).filter(function (route) {
42299
+ return !!route.isDistrict === isDistrict;
42300
+ });
42301
+ }, [user, language]);
42302
+ var authNavigations = useMemo(function () {
42303
+ return navigation.map(function (item) {
42304
+ var _item$_children, _item$_children2;
42305
+
42306
+ return _extends({}, item, {
42307
+ name: t(item.name),
42308
+ _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) {
42309
+ return _extends({}, x, {
42310
+ name: t(x.name)
42311
+ });
42312
+ }) : undefined
42313
+ });
42314
+ }).filter(function (nav) {
42315
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42316
+ }).filter(function (nav) {
42317
+ return !!nav.isDistrict === isDistrict;
42318
+ });
42319
+ }, [user, language]);
42320
+
42321
+ var getInformationSetting = function getInformationSetting() {
42322
+ try {
42323
+ var _temp2 = _catch(function () {
42324
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42325
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42326
+ });
42327
+ }, function (err) {
42328
+ console.error(err);
42329
+ });
42330
+
42331
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42332
+ } catch (e) {
42333
+ return Promise.reject(e);
42334
+ }
42335
+ };
42336
+
42337
+ useEffect(function () {
42338
+ checkAuthentication();
42339
+ }, []);
42340
+ useEffect(function () {
42341
+ getInformationSetting();
42342
+ }, [location.pathname]);
42343
+
42344
+ var checkAuthentication = function checkAuthentication() {
42345
+ try {
42346
+ var _temp4 = _catch(function () {
42347
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42348
+ tokenStatus ? loadInfo() : resetAuth();
42349
+ });
42350
+ }, function () {
42351
+ resetAuth();
42352
+ });
42353
+
42354
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42355
+ } catch (e) {
42356
+ return Promise.reject(e);
42357
+ }
42358
+ };
42359
+
42360
+ var loadInfo = function loadInfo() {
42361
+ try {
42362
+ var _temp6 = _catch(function () {
42363
+ return Promise.resolve(getInfo()).then(function (info) {
42364
+ var _info$data, _info$data$roles;
42365
+
42366
+ 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"))) {
42367
+ resetAuth();
42368
+ }
42369
+
42370
+ dispatch(setUser(info.data));
42371
+ });
42372
+ }, function () {
42373
+ resetAuth();
42374
+ });
42375
+
42376
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42377
+ } catch (e) {
42378
+ return Promise.reject(e);
42379
+ }
42380
+ };
42381
+
42382
+ var resetAuth = function resetAuth() {
42383
+ localStorage.removeItem(ACCESS_TOKEN);
42384
+ sessionStorage.removeItem(ACCESS_TOKEN);
42385
+ localStorage.removeItem("ROLES");
42386
+ history.push("/");
42387
+ };
42388
+
42389
+ if (!user) {
42390
+ return React.createElement(Loading, null);
42391
+ }
42392
+
42393
+ return React.createElement("div", {
42394
+ className: "c-app c-default-layout"
42395
+ }, !isNotification && React.createElement(TheSidebar, {
42396
+ navigation: authNavigations
42397
+ }), React.createElement("div", {
42398
+ className: "c-wrapper"
42399
+ }, !isNotification && React.createElement(TheHeader, {
42400
+ onToggleModel: handleToggleModel
42401
+ }), React.createElement("div", {
42402
+ className: "c-body bg-white"
42403
+ }, React.createElement(TheContent$1, {
42404
+ routes: authRoutes
42405
+ }))), React.createElement(ModelSelectRole, {
42406
+ open: openModelSelectRole,
42407
+ onToggleModel: handleToggleModel
42408
+ }));
42409
+ };
42410
+
41947
42411
  var buttonTextStyle = {
41948
42412
  fontWeight: 500
41949
42413
  };
@@ -44655,11 +45119,14 @@ var GRADE_DEFAULT = [{
44655
45119
  }, {
44656
45120
  label: "12",
44657
45121
  value: "12"
44658
- }, {
45122
+ }].concat(isMalvernCollege ? [{
45123
+ label: "12/13",
45124
+ value: "12/13"
45125
+ }] : [], [{
44659
45126
  label: "13",
44660
45127
  value: "13"
44661
- }];
44662
- var GRADE = ["K", "G", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"];
45128
+ }]);
45129
+ var GRADE = ["K", "G", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"].concat(isMalvernCollege ? ["12/13"] : [], ["13"]);
44663
45130
  var gradeOptions = [{
44664
45131
  label: "K",
44665
45132
  value: "K"
@@ -44702,10 +45169,13 @@ var gradeOptions = [{
44702
45169
  }, {
44703
45170
  label: "12",
44704
45171
  value: "12"
44705
- }, {
45172
+ }].concat(isMalvernCollege ? [{
45173
+ label: "12/13",
45174
+ value: "12/13"
45175
+ }] : [], [{
44706
45176
  label: "13",
44707
45177
  value: "13"
44708
- }];
45178
+ }]);
44709
45179
  var initStaffDeleteBulk = {
44710
45180
  assistantRemoveUserId: [],
44711
45181
  counselorRemoveUserIds: [],
@@ -51318,34 +51788,6 @@ var UserDetail = function UserDetail() {
51318
51788
  });
51319
51789
  };
51320
51790
 
51321
- var loadingStyle = {
51322
- minWidth: "100vw",
51323
- minHeight: "100vh",
51324
- position: "fixed",
51325
- top: 0,
51326
- left: 0,
51327
- zIndex: 999999999,
51328
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51329
- display: "flex",
51330
- justifyContent: "center",
51331
- alignItems: "center"
51332
- };
51333
-
51334
- var Loading = function Loading() {
51335
- var isLoading = useSelector(function (state) {
51336
- return state.common.isLoading;
51337
- });
51338
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51339
- return isLoading ? React.createElement("div", {
51340
- style: loadingStyle
51341
- }, React.createElement("div", {
51342
- className: "spinner-border text-secondary",
51343
- role: "status"
51344
- }, React.createElement("span", {
51345
- className: "sr-only"
51346
- }, "Loading..."))) : null;
51347
- };
51348
-
51349
51791
  var ScrollToTop = function ScrollToTop() {
51350
51792
  var _useLocation = useLocation(),
51351
51793
  pathname = _useLocation.pathname;
@@ -54369,32 +54811,6 @@ var store = configureStore({
54369
54811
  }
54370
54812
  });
54371
54813
 
54372
- var firstCheckToken = function firstCheckToken() {
54373
- return Promise.resolve(_catch(function () {
54374
- var token = getAccessToken();
54375
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54376
- return tokenStatus.data ? true : false;
54377
- }) : false;
54378
- }, function () {
54379
- return false;
54380
- }));
54381
- };
54382
-
54383
- var canAccess = function canAccess(userRoles, componentRoles) {
54384
- if (!Array.isArray(userRoles)) {
54385
- return false;
54386
- }
54387
-
54388
- if (Array.isArray(componentRoles)) {
54389
- var intersects = userRoles.filter(function (i) {
54390
- return componentRoles.includes(i);
54391
- });
54392
- return intersects.length > 0;
54393
- }
54394
-
54395
- return true;
54396
- };
54397
-
54398
54814
  var isInViewport = function isInViewport(el) {
54399
54815
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54400
54816
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54428,410 +54844,6 @@ var generateRandomString = (function () {
54428
54844
  return (Math.random() + 1).toString(36).substring(7);
54429
54845
  });
54430
54846
 
54431
- var apiGetLanguage = function apiGetLanguage() {
54432
- return api.get(BASE_URL + "/api/language");
54433
- };
54434
-
54435
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54436
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54437
- };
54438
-
54439
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54440
-
54441
- var useLanguages = function useLanguages() {
54442
- var dispatch = useDispatch();
54443
-
54444
- var _useTranslation = useTranslation(),
54445
- i18n = _useTranslation.i18n;
54446
-
54447
- var language = useSelector(function (state) {
54448
- return state.common.language;
54449
- });
54450
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54451
-
54452
- var _useState = useState([]),
54453
- languageList = _useState[0],
54454
- setLanguageList = _useState[1];
54455
-
54456
- var _useState2 = useState(false),
54457
- dropdownOpen = _useState2[0],
54458
- setDropdownOpen = _useState2[1];
54459
-
54460
- var _useState3 = useState(defaultLanguage),
54461
- currentLang = _useState3[0],
54462
- setCurrentLang = _useState3[1];
54463
-
54464
- var toggle = function toggle() {
54465
- return setDropdownOpen(function (prevState) {
54466
- return !prevState;
54467
- });
54468
- };
54469
-
54470
- var changeLanguageApp = function changeLanguageApp(lang) {
54471
- try {
54472
- var _temp3 = function _temp3() {
54473
- dispatch(setLoading(false));
54474
- };
54475
-
54476
- dispatch(setLoading(true));
54477
-
54478
- var _temp4 = _catch(function () {
54479
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54480
- i18n.changeLanguage(lang);
54481
- setCurrentLang(lang);
54482
- dispatch(setLanguage(lang));
54483
- });
54484
- }, function (err) {
54485
- var _err$response, _err$response$data;
54486
-
54487
- dispatch(setAlert({
54488
- type: "danger",
54489
- message: ((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.title) || err.message
54490
- }));
54491
- });
54492
-
54493
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54494
- } catch (e) {
54495
- return Promise.reject(e);
54496
- }
54497
- };
54498
-
54499
- var getListLanguage = function getListLanguage() {
54500
- try {
54501
- var _temp6 = _catch(function () {
54502
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54503
- setLanguageList(res.data);
54504
- });
54505
- }, function (err) {
54506
- var _err$response2, _err$response2$data;
54507
-
54508
- dispatch(setAlert({
54509
- type: "danger",
54510
- message: ((_err$response2 = err.response) === null || _err$response2 === void 0 ? void 0 : (_err$response2$data = _err$response2.data) === null || _err$response2$data === void 0 ? void 0 : _err$response2$data.title) || err.message
54511
- }));
54512
- });
54513
-
54514
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54515
- } catch (e) {
54516
- return Promise.reject(e);
54517
- }
54518
- };
54519
-
54520
- useEffect(function () {
54521
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54522
- getListLanguage();
54523
- }, []);
54524
- return {
54525
- languageList: languageList,
54526
- toggle: toggle,
54527
- dropdownOpen: dropdownOpen,
54528
- currentLang: currentLang,
54529
- changeLanguageApp: changeLanguageApp,
54530
- setCurrentLang: setCurrentLang
54531
- };
54532
- };
54533
-
54534
- var TheLanguageDropdown = function TheLanguageDropdown() {
54535
- var _useLanguages = useLanguages(),
54536
- languageList = _useLanguages.languageList,
54537
- toggle = _useLanguages.toggle,
54538
- dropdownOpen = _useLanguages.dropdownOpen,
54539
- currentLang = _useLanguages.currentLang,
54540
- changeLanguageApp = _useLanguages.changeLanguageApp;
54541
-
54542
- var currentLanguage = useMemo(function () {
54543
- var current = languageList.find(function (i) {
54544
- return i.code === currentLang;
54545
- });
54546
- if (!current) return null;
54547
- return React.createElement(React.Fragment, null, React.createElement("img", {
54548
- className: "mr-2 " + styles['dropdown-menu-flag'],
54549
- src: "" + getStaticFileUrl(current.image)
54550
- }), " ", current.name);
54551
- }, [currentLang, languageList]);
54552
- return React.createElement(Dropdown, {
54553
- isOpen: dropdownOpen,
54554
- toggle: toggle,
54555
- className: "" + styles["dropdown-menu"]
54556
- }, React.createElement(DropdownToggle, {
54557
- className: styles["header-avatar"] + " d-flex align-items-center"
54558
- }, React.createElement("span", {
54559
- style: {
54560
- color: "#000",
54561
- textTransform: "capitalize",
54562
- display: 'flex',
54563
- alignItems: 'center'
54564
- }
54565
- }, currentLanguage, React.createElement(BsChevronDown, {
54566
- className: "ml-2",
54567
- style: {
54568
- fontSize: '10px'
54569
- }
54570
- }))), React.createElement(DropdownMenu, {
54571
- className: styles["dropdown-content-language"]
54572
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54573
- return React.createElement(DropdownItem, {
54574
- key: lang.code,
54575
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54576
- onClick: function onClick() {
54577
- return changeLanguageApp(lang.code);
54578
- }
54579
- }, React.createElement("div", {
54580
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54581
- }, React.createElement("span", {
54582
- className: "mr-2 d-flex hover-opacity"
54583
- }, React.createElement("img", {
54584
- style: {
54585
- width: "30px",
54586
- height: "25px",
54587
- borderRadius: "5px"
54588
- },
54589
- src: getStaticFileUrl(lang.image)
54590
- })), lang.name));
54591
- })));
54592
- };
54593
-
54594
- var TheHeader = function TheHeader(_ref) {
54595
- var onToggleModel = _ref.onToggleModel;
54596
- var dispatch = useDispatch();
54597
- var sidebarShow = useSelector(function (state) {
54598
- return state.common.sidebarShow;
54599
- });
54600
-
54601
- var _useTranslation = useTranslation(),
54602
- t = _useTranslation.t;
54603
-
54604
- var toggleSidebarMobile = function toggleSidebarMobile() {
54605
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54606
- dispatch(setSidebar(val));
54607
- };
54608
-
54609
- var isDistrict = window.location.host.includes("-district");
54610
- return React.createElement(CHeader, {
54611
- withSubheader: true,
54612
- className: "d-flex align-items-center justify-content-end"
54613
- }, React.createElement(CToggler, {
54614
- inHeader: true,
54615
- className: "ml-md-3 d-lg-none",
54616
- onClick: toggleSidebarMobile
54617
- }), React.createElement(CHeaderBrand, {
54618
- className: "mx-auto flex-grow-1 d-lg-none",
54619
- to: "/"
54620
- }, React.createElement("img", {
54621
- src: getStaticFileUrl(Images.LOGO_HEADER),
54622
- className: styles["header-logo"]
54623
- })), React.createElement(CHeaderNav, {
54624
- className: "pr-3"
54625
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54626
- className: "mr-3",
54627
- style: {
54628
- color: '#000'
54629
- },
54630
- href: '/privacy-policy',
54631
- target: "blank"
54632
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54633
- onToggleModel: onToggleModel
54634
- })));
54635
- };
54636
-
54637
- var ModelSelectRole = function ModelSelectRole(_ref) {
54638
- var _handleUserRole;
54639
-
54640
- var open = _ref.open,
54641
- onToggleModel = _ref.onToggleModel;
54642
- var dispatch = useDispatch();
54643
-
54644
- var _useTranslation = useTranslation(),
54645
- t = _useTranslation.t;
54646
-
54647
- var history = useHistory();
54648
- var pathname = window.location.pathname;
54649
- var user = useSelector(function (state) {
54650
- return state.common.user;
54651
- });
54652
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54653
-
54654
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54655
- dispatch(setLoading(true));
54656
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54657
- dispatch(setUser(_extends({}, user, {
54658
- roles: roleSelect
54659
- })));
54660
- localStorage.setItem("ROLES", roleSelect.toString());
54661
- onToggleModel();
54662
-
54663
- if (roles.includes("Parent")) {
54664
- history.push("/parent");
54665
- } else if (roles.includes("Admin")) {
54666
- history.push("/admin/home");
54667
- } else {
54668
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54669
- }
54670
- };
54671
-
54672
- return React.createElement(Modal, {
54673
- isOpen: open,
54674
- toggle: function toggle() {
54675
- return onToggleModel();
54676
- },
54677
- className: "" + styles["model-switch-roles"],
54678
- centered: true
54679
- }, React.createElement("p", {
54680
- className: "" + styles["title"]
54681
- }, t("continue_as")), React.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
54682
- return React.createElement("p", {
54683
- key: r,
54684
- className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
54685
- onClick: function onClick() {
54686
- return handleSelectUserRoles([r]);
54687
- }
54688
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54689
- })));
54690
- };
54691
-
54692
- var TheLayout = function TheLayout(_ref) {
54693
- var routes = _ref.routes,
54694
- navigation = _ref.navigation;
54695
- var history = useHistory();
54696
- var dispatch = useDispatch();
54697
- var user = useSelector(function (state) {
54698
- return state.common.user;
54699
- });
54700
- var language = useSelector(function (state) {
54701
- return state.common.language;
54702
- });
54703
-
54704
- var _useState = useState(false),
54705
- openModelSelectRole = _useState[0],
54706
- setOpenModelSelectRole = _useState[1];
54707
-
54708
- var _useTranslation = useTranslation(),
54709
- t = _useTranslation.t;
54710
-
54711
- var location = useLocation();
54712
- var isNotification = location.pathname.includes("notifications");
54713
- var isDistrict = window.location.host.includes("-district");
54714
-
54715
- var handleToggleModel = function handleToggleModel() {
54716
- setOpenModelSelectRole(!openModelSelectRole);
54717
- };
54718
-
54719
- var authRoutes = useMemo(function () {
54720
- return routes.filter(function (route) {
54721
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54722
- }).filter(function (route) {
54723
- return !!route.isDistrict === isDistrict;
54724
- });
54725
- }, [user, language]);
54726
- var authNavigations = useMemo(function () {
54727
- return navigation.map(function (item) {
54728
- var _item$_children, _item$_children2;
54729
-
54730
- return _extends({}, item, {
54731
- name: t(item.name),
54732
- _children: item !== null && item !== void 0 && (_item$_children = item._children) !== null && _item$_children !== void 0 && _item$_children.length ? item === null || item === void 0 ? void 0 : (_item$_children2 = item._children) === null || _item$_children2 === void 0 ? void 0 : _item$_children2.map(function (x) {
54733
- return _extends({}, x, {
54734
- name: t(x.name)
54735
- });
54736
- }) : undefined
54737
- });
54738
- }).filter(function (nav) {
54739
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54740
- }).filter(function (nav) {
54741
- return !!nav.isDistrict === isDistrict;
54742
- });
54743
- }, [user, language]);
54744
-
54745
- var getInformationSetting = function getInformationSetting() {
54746
- try {
54747
- var _temp2 = _catch(function () {
54748
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54749
- dispatch(setSandboxMode(res.data.isSandboxMode));
54750
- });
54751
- }, function (err) {
54752
- console.error(err);
54753
- });
54754
-
54755
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54756
- } catch (e) {
54757
- return Promise.reject(e);
54758
- }
54759
- };
54760
-
54761
- useEffect(function () {
54762
- checkAuthentication();
54763
- }, []);
54764
- useEffect(function () {
54765
- getInformationSetting();
54766
- }, [location.pathname]);
54767
-
54768
- var checkAuthentication = function checkAuthentication() {
54769
- try {
54770
- var _temp4 = _catch(function () {
54771
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54772
- tokenStatus ? loadInfo() : resetAuth();
54773
- });
54774
- }, function () {
54775
- resetAuth();
54776
- });
54777
-
54778
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54779
- } catch (e) {
54780
- return Promise.reject(e);
54781
- }
54782
- };
54783
-
54784
- var loadInfo = function loadInfo() {
54785
- try {
54786
- var _temp6 = _catch(function () {
54787
- return Promise.resolve(getInfo()).then(function (info) {
54788
- var _info$data, _info$data$roles;
54789
-
54790
- if (!info || !(info !== null && info !== void 0 && (_info$data = info.data) !== null && _info$data !== void 0 && (_info$data$roles = _info$data.roles) !== null && _info$data$roles !== void 0 && _info$data$roles.includes("Admin"))) {
54791
- resetAuth();
54792
- }
54793
-
54794
- dispatch(setUser(info.data));
54795
- });
54796
- }, function () {
54797
- resetAuth();
54798
- });
54799
-
54800
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54801
- } catch (e) {
54802
- return Promise.reject(e);
54803
- }
54804
- };
54805
-
54806
- var resetAuth = function resetAuth() {
54807
- localStorage.removeItem(ACCESS_TOKEN);
54808
- sessionStorage.removeItem(ACCESS_TOKEN);
54809
- localStorage.removeItem("ROLES");
54810
- history.push("/");
54811
- };
54812
-
54813
- if (!user) {
54814
- return React.createElement(Loading, null);
54815
- }
54816
-
54817
- return React.createElement("div", {
54818
- className: "c-app c-default-layout"
54819
- }, !isNotification && React.createElement(TheSidebar, {
54820
- navigation: authNavigations
54821
- }), React.createElement("div", {
54822
- className: "c-wrapper"
54823
- }, !isNotification && React.createElement(TheHeader, {
54824
- onToggleModel: handleToggleModel
54825
- }), React.createElement("div", {
54826
- className: "c-body bg-white"
54827
- }, React.createElement(TheContent$1, {
54828
- routes: authRoutes
54829
- }))), React.createElement(ModelSelectRole, {
54830
- open: openModelSelectRole,
54831
- onToggleModel: handleToggleModel
54832
- }));
54833
- };
54834
-
54835
54847
  var amplitudeClient = amplitude;
54836
54848
 
54837
54849
  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 };