mario-core 2.9.417-release → 2.9.418-release

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,8 +2,8 @@ import 'bootstrap/dist/css/bootstrap.min.css';
2
2
  import i18n from 'i18next';
3
3
  import { initReactI18next, useTranslation } from 'react-i18next';
4
4
  export { I18nextProvider, useTranslation } from 'react-i18next';
5
- import React, { useCallback, useState, useEffect, useRef, Suspense, memo, Fragment, forwardRef, useImperativeHandle, useMemo } from 'react';
6
- import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, Modal, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
5
+ import React, { useCallback, useState, useEffect, useRef, useMemo, Suspense, memo, Fragment, forwardRef, useImperativeHandle } from 'react';
6
+ import { Input, Form, FormGroup, Row, Col, Navbar, NavbarBrand, Collapse, Nav, NavItem, NavLink, Dropdown, DropdownToggle, DropdownMenu, DropdownItem, Modal, Button, Alert, Pagination, PaginationItem, PaginationLink, Table, Label, ModalHeader, ModalBody, ModalFooter, Popover, PopoverBody, TabContent, TabPane, Card, CardBody, CardText, Tooltip, CustomInput, CardImg, CardTitle, CardHeader } from 'reactstrap';
7
7
  import { Link, useLocation, useHistory, Switch, Route, Prompt, useParams } from 'react-router-dom';
8
8
  import { useDispatch, useSelector } from 'react-redux';
9
9
  import { Formik } from 'formik';
@@ -17,7 +17,7 @@ import { track, setSessionId, init, Identify, identify } from '@amplitude/analyt
17
17
  import moment from 'moment';
18
18
  import { LogLevel, PublicClientApplication } from '@azure/msal-browser';
19
19
  import { GiHamburgerMenu } from 'react-icons/gi';
20
- import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CContainer, CHeader, CToggler, CHeaderBrand, CHeaderNav } from '@coreui/react';
20
+ import { CSidebar, CSidebarBrand, CSidebarNav, CCreateElement, CSidebarNavDivider, CSidebarNavDropdown, CSidebarNavItem, CSidebarNavTitle, CSidebarFooter, CHeader, CToggler, CHeaderBrand, CHeaderNav, CContainer } from '@coreui/react';
21
21
  import { CgMenuRight } from 'react-icons/cg';
22
22
  import { RiLogoutBoxRLine } from 'react-icons/ri';
23
23
  import Pusher from 'pusher-js/with-encryption';
@@ -22166,6 +22166,18 @@ var LANGUAGES = [{
22166
22166
  var DEFAULT_LANGUAGE_CODE = "en-US";
22167
22167
  var SUPPORTED_LANGUAGES_CODE = ["en-US", "en-GB", "ar", "es", "zh"];
22168
22168
  var screenWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;
22169
+ var CsvImportType;
22170
+
22171
+ (function (CsvImportType) {
22172
+ CsvImportType[CsvImportType["Teacher"] = 0] = "Teacher";
22173
+ CsvImportType[CsvImportType["Admin"] = 1] = "Admin";
22174
+ })(CsvImportType || (CsvImportType = {}));
22175
+
22176
+ var domainName = window.location.hostname;
22177
+ var listCheckMalvernCollege = ['malverncollege', 'stage', 'localhost'];
22178
+ var isMalvernCollege = listCheckMalvernCollege.some(function (e) {
22179
+ return domainName.includes(e);
22180
+ });
22169
22181
 
22170
22182
  var resources$5 = {
22171
22183
  "en-US": {
@@ -41879,6 +41891,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41879
41891
  })), t("log_out")))));
41880
41892
  };
41881
41893
 
41894
+ var apiGetLanguage = function apiGetLanguage() {
41895
+ return api.get(BASE_URL + "/api/language");
41896
+ };
41897
+
41898
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41899
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41900
+ };
41901
+
41902
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41903
+
41904
+ var useLanguages = function useLanguages() {
41905
+ var dispatch = useDispatch();
41906
+
41907
+ var _useTranslation = useTranslation(),
41908
+ i18n = _useTranslation.i18n;
41909
+
41910
+ var language = useSelector(function (state) {
41911
+ return state.common.language;
41912
+ });
41913
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41914
+
41915
+ var _useState = useState([]),
41916
+ languageList = _useState[0],
41917
+ setLanguageList = _useState[1];
41918
+
41919
+ var _useState2 = useState(false),
41920
+ dropdownOpen = _useState2[0],
41921
+ setDropdownOpen = _useState2[1];
41922
+
41923
+ var _useState3 = useState(defaultLanguage),
41924
+ currentLang = _useState3[0],
41925
+ setCurrentLang = _useState3[1];
41926
+
41927
+ var toggle = function toggle() {
41928
+ return setDropdownOpen(function (prevState) {
41929
+ return !prevState;
41930
+ });
41931
+ };
41932
+
41933
+ var changeLanguageApp = function changeLanguageApp(lang) {
41934
+ try {
41935
+ var _temp3 = function _temp3() {
41936
+ dispatch(setLoading(false));
41937
+ };
41938
+
41939
+ dispatch(setLoading(true));
41940
+
41941
+ var _temp4 = _catch(function () {
41942
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41943
+ i18n.changeLanguage(lang);
41944
+ setCurrentLang(lang);
41945
+ dispatch(setLanguage(lang));
41946
+ });
41947
+ }, function (err) {
41948
+ var _err$response, _err$response$data;
41949
+
41950
+ dispatch(setAlert({
41951
+ type: "danger",
41952
+ 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
41953
+ }));
41954
+ });
41955
+
41956
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41957
+ } catch (e) {
41958
+ return Promise.reject(e);
41959
+ }
41960
+ };
41961
+
41962
+ var getListLanguage = function getListLanguage() {
41963
+ try {
41964
+ var _temp6 = _catch(function () {
41965
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
41966
+ setLanguageList(res.data);
41967
+ });
41968
+ }, function (err) {
41969
+ var _err$response2, _err$response2$data;
41970
+
41971
+ dispatch(setAlert({
41972
+ type: "danger",
41973
+ 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
41974
+ }));
41975
+ });
41976
+
41977
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41978
+ } catch (e) {
41979
+ return Promise.reject(e);
41980
+ }
41981
+ };
41982
+
41983
+ useEffect(function () {
41984
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
41985
+ getListLanguage();
41986
+ }, []);
41987
+ return {
41988
+ languageList: languageList,
41989
+ toggle: toggle,
41990
+ dropdownOpen: dropdownOpen,
41991
+ currentLang: currentLang,
41992
+ changeLanguageApp: changeLanguageApp,
41993
+ setCurrentLang: setCurrentLang
41994
+ };
41995
+ };
41996
+
41997
+ var TheLanguageDropdown = function TheLanguageDropdown() {
41998
+ var _useLanguages = useLanguages(),
41999
+ languageList = _useLanguages.languageList,
42000
+ toggle = _useLanguages.toggle,
42001
+ dropdownOpen = _useLanguages.dropdownOpen,
42002
+ currentLang = _useLanguages.currentLang,
42003
+ changeLanguageApp = _useLanguages.changeLanguageApp;
42004
+
42005
+ var currentLanguage = useMemo(function () {
42006
+ var current = languageList.find(function (i) {
42007
+ return i.code === currentLang;
42008
+ });
42009
+ if (!current) return null;
42010
+ return React.createElement(React.Fragment, null, React.createElement("img", {
42011
+ className: "mr-2 " + styles['dropdown-menu-flag'],
42012
+ src: "" + getStaticFileUrl(current.image)
42013
+ }), " ", current.name);
42014
+ }, [currentLang, languageList]);
42015
+ return React.createElement(Dropdown, {
42016
+ isOpen: dropdownOpen,
42017
+ toggle: toggle,
42018
+ className: "" + styles["dropdown-menu"]
42019
+ }, React.createElement(DropdownToggle, {
42020
+ className: styles["header-avatar"] + " d-flex align-items-center"
42021
+ }, React.createElement("span", {
42022
+ style: {
42023
+ color: "#000",
42024
+ textTransform: "capitalize",
42025
+ display: 'flex',
42026
+ alignItems: 'center'
42027
+ }
42028
+ }, currentLanguage, React.createElement(BsChevronDown, {
42029
+ className: "ml-2",
42030
+ style: {
42031
+ fontSize: '10px'
42032
+ }
42033
+ }))), React.createElement(DropdownMenu, {
42034
+ className: styles["dropdown-content-language"]
42035
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
42036
+ return React.createElement(DropdownItem, {
42037
+ key: lang.code,
42038
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
42039
+ onClick: function onClick() {
42040
+ return changeLanguageApp(lang.code);
42041
+ }
42042
+ }, React.createElement("div", {
42043
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
42044
+ }, React.createElement("span", {
42045
+ className: "mr-2 d-flex hover-opacity"
42046
+ }, React.createElement("img", {
42047
+ style: {
42048
+ width: "30px",
42049
+ height: "25px",
42050
+ borderRadius: "5px"
42051
+ },
42052
+ src: getStaticFileUrl(lang.image)
42053
+ })), lang.name));
42054
+ })));
42055
+ };
42056
+
42057
+ var TheHeader = function TheHeader(_ref) {
42058
+ var onToggleModel = _ref.onToggleModel;
42059
+ var dispatch = useDispatch();
42060
+ var sidebarShow = useSelector(function (state) {
42061
+ return state.common.sidebarShow;
42062
+ });
42063
+
42064
+ var _useTranslation = useTranslation(),
42065
+ t = _useTranslation.t;
42066
+
42067
+ var toggleSidebarMobile = function toggleSidebarMobile() {
42068
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
42069
+ dispatch(setSidebar(val));
42070
+ };
42071
+
42072
+ var isDistrict = window.location.host.includes("-district");
42073
+ return React.createElement(CHeader, {
42074
+ withSubheader: true,
42075
+ className: "d-flex align-items-center justify-content-end"
42076
+ }, React.createElement(CToggler, {
42077
+ inHeader: true,
42078
+ className: "ml-md-3 d-lg-none",
42079
+ onClick: toggleSidebarMobile
42080
+ }), React.createElement(CHeaderBrand, {
42081
+ className: "mx-auto flex-grow-1 d-lg-none",
42082
+ to: "/"
42083
+ }, React.createElement("img", {
42084
+ src: getStaticFileUrl(Images.LOGO_HEADER),
42085
+ className: styles["header-logo"]
42086
+ })), React.createElement(CHeaderNav, {
42087
+ className: "pr-3"
42088
+ }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
42089
+ className: "mr-3",
42090
+ style: {
42091
+ color: '#000'
42092
+ },
42093
+ href: '/privacy-policy',
42094
+ target: "blank"
42095
+ }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
42096
+ onToggleModel: onToggleModel
42097
+ })));
42098
+ };
42099
+
41882
42100
  var TITLE$3 = "Not found";
41883
42101
 
41884
42102
  var NotFound = function NotFound() {
@@ -41936,6 +42154,258 @@ var TheContent = function TheContent(_ref) {
41936
42154
 
41937
42155
  var TheContent$1 = React.memo(TheContent);
41938
42156
 
42157
+ var loadingStyle = {
42158
+ minWidth: "100vw",
42159
+ minHeight: "100vh",
42160
+ position: "fixed",
42161
+ top: 0,
42162
+ left: 0,
42163
+ zIndex: 999999999,
42164
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42165
+ display: "flex",
42166
+ justifyContent: "center",
42167
+ alignItems: "center"
42168
+ };
42169
+
42170
+ var Loading = function Loading() {
42171
+ var isLoading = useSelector(function (state) {
42172
+ return state.common.isLoading;
42173
+ });
42174
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42175
+ return isLoading ? React.createElement("div", {
42176
+ style: loadingStyle
42177
+ }, React.createElement("div", {
42178
+ className: "spinner-border text-secondary",
42179
+ role: "status"
42180
+ }, React.createElement("span", {
42181
+ className: "sr-only"
42182
+ }, "Loading..."))) : null;
42183
+ };
42184
+
42185
+ var firstCheckToken = function firstCheckToken() {
42186
+ return Promise.resolve(_catch(function () {
42187
+ var token = getAccessToken();
42188
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42189
+ return tokenStatus.data ? true : false;
42190
+ }) : false;
42191
+ }, function () {
42192
+ return false;
42193
+ }));
42194
+ };
42195
+
42196
+ var canAccess = function canAccess(userRoles, componentRoles) {
42197
+ if (!Array.isArray(userRoles)) {
42198
+ return false;
42199
+ }
42200
+
42201
+ if (Array.isArray(componentRoles)) {
42202
+ var intersects = userRoles.filter(function (i) {
42203
+ return componentRoles.includes(i);
42204
+ });
42205
+ return intersects.length > 0;
42206
+ }
42207
+
42208
+ return true;
42209
+ };
42210
+
42211
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42212
+ var _handleUserRole;
42213
+
42214
+ var open = _ref.open,
42215
+ onToggleModel = _ref.onToggleModel;
42216
+ var dispatch = useDispatch();
42217
+
42218
+ var _useTranslation = useTranslation(),
42219
+ t = _useTranslation.t;
42220
+
42221
+ var history = useHistory();
42222
+ var pathname = window.location.pathname;
42223
+ var user = useSelector(function (state) {
42224
+ return state.common.user;
42225
+ });
42226
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42227
+
42228
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42229
+ dispatch(setLoading(true));
42230
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42231
+ dispatch(setUser(_extends({}, user, {
42232
+ roles: roleSelect
42233
+ })));
42234
+ localStorage.setItem("ROLES", roleSelect.toString());
42235
+ onToggleModel();
42236
+
42237
+ if (roles.includes("Parent")) {
42238
+ history.push("/parent");
42239
+ } else if (roles.includes("Admin")) {
42240
+ history.push("/admin/home");
42241
+ } else {
42242
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42243
+ }
42244
+ };
42245
+
42246
+ return React.createElement(Modal, {
42247
+ isOpen: open,
42248
+ toggle: function toggle() {
42249
+ return onToggleModel();
42250
+ },
42251
+ className: "" + styles["model-switch-roles"],
42252
+ centered: true
42253
+ }, React.createElement("p", {
42254
+ className: "" + styles["title"]
42255
+ }, 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) {
42256
+ return React.createElement("p", {
42257
+ key: r,
42258
+ 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" : ""],
42259
+ onClick: function onClick() {
42260
+ return handleSelectUserRoles([r]);
42261
+ }
42262
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42263
+ })));
42264
+ };
42265
+
42266
+ var TheLayout = function TheLayout(_ref) {
42267
+ var routes = _ref.routes,
42268
+ navigation = _ref.navigation;
42269
+ var history = useHistory();
42270
+ var dispatch = useDispatch();
42271
+ var user = useSelector(function (state) {
42272
+ return state.common.user;
42273
+ });
42274
+ var language = useSelector(function (state) {
42275
+ return state.common.language;
42276
+ });
42277
+
42278
+ var _useState = useState(false),
42279
+ openModelSelectRole = _useState[0],
42280
+ setOpenModelSelectRole = _useState[1];
42281
+
42282
+ var _useTranslation = useTranslation(),
42283
+ t = _useTranslation.t;
42284
+
42285
+ var location = useLocation();
42286
+ var isNotification = location.pathname.includes("notifications");
42287
+ var isDistrict = window.location.host.includes("-district");
42288
+
42289
+ var handleToggleModel = function handleToggleModel() {
42290
+ setOpenModelSelectRole(!openModelSelectRole);
42291
+ };
42292
+
42293
+ var authRoutes = useMemo(function () {
42294
+ return routes.filter(function (route) {
42295
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42296
+ }).filter(function (route) {
42297
+ return !!route.isDistrict === isDistrict;
42298
+ });
42299
+ }, [user, language]);
42300
+ var authNavigations = useMemo(function () {
42301
+ return navigation.map(function (item) {
42302
+ var _item$_children, _item$_children2;
42303
+
42304
+ return _extends({}, item, {
42305
+ name: t(item.name),
42306
+ _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) {
42307
+ return _extends({}, x, {
42308
+ name: t(x.name)
42309
+ });
42310
+ }) : undefined
42311
+ });
42312
+ }).filter(function (nav) {
42313
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42314
+ }).filter(function (nav) {
42315
+ return !!nav.isDistrict === isDistrict;
42316
+ });
42317
+ }, [user, language]);
42318
+
42319
+ var getInformationSetting = function getInformationSetting() {
42320
+ try {
42321
+ var _temp2 = _catch(function () {
42322
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42323
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42324
+ });
42325
+ }, function (err) {
42326
+ console.error(err);
42327
+ });
42328
+
42329
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42330
+ } catch (e) {
42331
+ return Promise.reject(e);
42332
+ }
42333
+ };
42334
+
42335
+ useEffect(function () {
42336
+ checkAuthentication();
42337
+ }, []);
42338
+ useEffect(function () {
42339
+ getInformationSetting();
42340
+ }, [location.pathname]);
42341
+
42342
+ var checkAuthentication = function checkAuthentication() {
42343
+ try {
42344
+ var _temp4 = _catch(function () {
42345
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42346
+ tokenStatus ? loadInfo() : resetAuth();
42347
+ });
42348
+ }, function () {
42349
+ resetAuth();
42350
+ });
42351
+
42352
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42353
+ } catch (e) {
42354
+ return Promise.reject(e);
42355
+ }
42356
+ };
42357
+
42358
+ var loadInfo = function loadInfo() {
42359
+ try {
42360
+ var _temp6 = _catch(function () {
42361
+ return Promise.resolve(getInfo()).then(function (info) {
42362
+ var _info$data, _info$data$roles;
42363
+
42364
+ 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"))) {
42365
+ resetAuth();
42366
+ }
42367
+
42368
+ dispatch(setUser(info.data));
42369
+ });
42370
+ }, function () {
42371
+ resetAuth();
42372
+ });
42373
+
42374
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42375
+ } catch (e) {
42376
+ return Promise.reject(e);
42377
+ }
42378
+ };
42379
+
42380
+ var resetAuth = function resetAuth() {
42381
+ localStorage.removeItem(ACCESS_TOKEN);
42382
+ sessionStorage.removeItem(ACCESS_TOKEN);
42383
+ localStorage.removeItem("ROLES");
42384
+ history.push("/");
42385
+ };
42386
+
42387
+ if (!user) {
42388
+ return React.createElement(Loading, null);
42389
+ }
42390
+
42391
+ return React.createElement("div", {
42392
+ className: "c-app c-default-layout"
42393
+ }, !isNotification && React.createElement(TheSidebar, {
42394
+ navigation: authNavigations
42395
+ }), React.createElement("div", {
42396
+ className: "c-wrapper"
42397
+ }, !isNotification && React.createElement(TheHeader, {
42398
+ onToggleModel: handleToggleModel
42399
+ }), React.createElement("div", {
42400
+ className: "c-body bg-white"
42401
+ }, React.createElement(TheContent$1, {
42402
+ routes: authRoutes
42403
+ }))), React.createElement(ModelSelectRole, {
42404
+ open: openModelSelectRole,
42405
+ onToggleModel: handleToggleModel
42406
+ }));
42407
+ };
42408
+
41939
42409
  var buttonTextStyle = {
41940
42410
  fontWeight: 500
41941
42411
  };
@@ -44647,11 +45117,14 @@ var GRADE_DEFAULT = [{
44647
45117
  }, {
44648
45118
  label: "12",
44649
45119
  value: "12"
44650
- }, {
45120
+ }].concat(isMalvernCollege ? [{
45121
+ label: "12/13",
45122
+ value: "12/13"
45123
+ }] : [], [{
44651
45124
  label: "13",
44652
45125
  value: "13"
44653
- }];
44654
- var GRADE = ["K", "G", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13"];
45126
+ }]);
45127
+ var GRADE = ["K", "G", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"].concat(isMalvernCollege ? ["12/13"] : [], ["13"]);
44655
45128
  var gradeOptions = [{
44656
45129
  label: "K",
44657
45130
  value: "K"
@@ -44694,10 +45167,13 @@ var gradeOptions = [{
44694
45167
  }, {
44695
45168
  label: "12",
44696
45169
  value: "12"
44697
- }, {
45170
+ }].concat(isMalvernCollege ? [{
45171
+ label: "12/13",
45172
+ value: "12/13"
45173
+ }] : [], [{
44698
45174
  label: "13",
44699
45175
  value: "13"
44700
- }];
45176
+ }]);
44701
45177
  var initStaffDeleteBulk = {
44702
45178
  assistantRemoveUserId: [],
44703
45179
  counselorRemoveUserIds: [],
@@ -51282,34 +51758,6 @@ var UserDetail = function UserDetail() {
51282
51758
  });
51283
51759
  };
51284
51760
 
51285
- var loadingStyle = {
51286
- minWidth: "100vw",
51287
- minHeight: "100vh",
51288
- position: "fixed",
51289
- top: 0,
51290
- left: 0,
51291
- zIndex: 999999999,
51292
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51293
- display: "flex",
51294
- justifyContent: "center",
51295
- alignItems: "center"
51296
- };
51297
-
51298
- var Loading = function Loading() {
51299
- var isLoading = useSelector(function (state) {
51300
- return state.common.isLoading;
51301
- });
51302
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51303
- return isLoading ? React.createElement("div", {
51304
- style: loadingStyle
51305
- }, React.createElement("div", {
51306
- className: "spinner-border text-secondary",
51307
- role: "status"
51308
- }, React.createElement("span", {
51309
- className: "sr-only"
51310
- }, "Loading..."))) : null;
51311
- };
51312
-
51313
51761
  var ScrollToTop = function ScrollToTop() {
51314
51762
  var _useLocation = useLocation(),
51315
51763
  pathname = _useLocation.pathname;
@@ -54333,32 +54781,6 @@ var store = configureStore({
54333
54781
  }
54334
54782
  });
54335
54783
 
54336
- var firstCheckToken = function firstCheckToken() {
54337
- return Promise.resolve(_catch(function () {
54338
- var token = getAccessToken();
54339
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54340
- return tokenStatus.data ? true : false;
54341
- }) : false;
54342
- }, function () {
54343
- return false;
54344
- }));
54345
- };
54346
-
54347
- var canAccess = function canAccess(userRoles, componentRoles) {
54348
- if (!Array.isArray(userRoles)) {
54349
- return false;
54350
- }
54351
-
54352
- if (Array.isArray(componentRoles)) {
54353
- var intersects = userRoles.filter(function (i) {
54354
- return componentRoles.includes(i);
54355
- });
54356
- return intersects.length > 0;
54357
- }
54358
-
54359
- return true;
54360
- };
54361
-
54362
54784
  var isInViewport = function isInViewport(el) {
54363
54785
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54364
54786
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54392,410 +54814,6 @@ var generateRandomString = (function () {
54392
54814
  return (Math.random() + 1).toString(36).substring(7);
54393
54815
  });
54394
54816
 
54395
- var apiGetLanguage = function apiGetLanguage() {
54396
- return api.get(BASE_URL + "/api/language");
54397
- };
54398
-
54399
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54400
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54401
- };
54402
-
54403
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54404
-
54405
- var useLanguages = function useLanguages() {
54406
- var dispatch = useDispatch();
54407
-
54408
- var _useTranslation = useTranslation(),
54409
- i18n = _useTranslation.i18n;
54410
-
54411
- var language = useSelector(function (state) {
54412
- return state.common.language;
54413
- });
54414
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54415
-
54416
- var _useState = useState([]),
54417
- languageList = _useState[0],
54418
- setLanguageList = _useState[1];
54419
-
54420
- var _useState2 = useState(false),
54421
- dropdownOpen = _useState2[0],
54422
- setDropdownOpen = _useState2[1];
54423
-
54424
- var _useState3 = useState(defaultLanguage),
54425
- currentLang = _useState3[0],
54426
- setCurrentLang = _useState3[1];
54427
-
54428
- var toggle = function toggle() {
54429
- return setDropdownOpen(function (prevState) {
54430
- return !prevState;
54431
- });
54432
- };
54433
-
54434
- var changeLanguageApp = function changeLanguageApp(lang) {
54435
- try {
54436
- var _temp3 = function _temp3() {
54437
- dispatch(setLoading(false));
54438
- };
54439
-
54440
- dispatch(setLoading(true));
54441
-
54442
- var _temp4 = _catch(function () {
54443
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54444
- i18n.changeLanguage(lang);
54445
- setCurrentLang(lang);
54446
- dispatch(setLanguage(lang));
54447
- });
54448
- }, function (err) {
54449
- var _err$response, _err$response$data;
54450
-
54451
- dispatch(setAlert({
54452
- type: "danger",
54453
- 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
54454
- }));
54455
- });
54456
-
54457
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54458
- } catch (e) {
54459
- return Promise.reject(e);
54460
- }
54461
- };
54462
-
54463
- var getListLanguage = function getListLanguage() {
54464
- try {
54465
- var _temp6 = _catch(function () {
54466
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54467
- setLanguageList(res.data);
54468
- });
54469
- }, function (err) {
54470
- var _err$response2, _err$response2$data;
54471
-
54472
- dispatch(setAlert({
54473
- type: "danger",
54474
- 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
54475
- }));
54476
- });
54477
-
54478
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54479
- } catch (e) {
54480
- return Promise.reject(e);
54481
- }
54482
- };
54483
-
54484
- useEffect(function () {
54485
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54486
- getListLanguage();
54487
- }, []);
54488
- return {
54489
- languageList: languageList,
54490
- toggle: toggle,
54491
- dropdownOpen: dropdownOpen,
54492
- currentLang: currentLang,
54493
- changeLanguageApp: changeLanguageApp,
54494
- setCurrentLang: setCurrentLang
54495
- };
54496
- };
54497
-
54498
- var TheLanguageDropdown = function TheLanguageDropdown() {
54499
- var _useLanguages = useLanguages(),
54500
- languageList = _useLanguages.languageList,
54501
- toggle = _useLanguages.toggle,
54502
- dropdownOpen = _useLanguages.dropdownOpen,
54503
- currentLang = _useLanguages.currentLang,
54504
- changeLanguageApp = _useLanguages.changeLanguageApp;
54505
-
54506
- var currentLanguage = useMemo(function () {
54507
- var current = languageList.find(function (i) {
54508
- return i.code === currentLang;
54509
- });
54510
- if (!current) return null;
54511
- return React.createElement(React.Fragment, null, React.createElement("img", {
54512
- className: "mr-2 " + styles['dropdown-menu-flag'],
54513
- src: "" + getStaticFileUrl(current.image)
54514
- }), " ", current.name);
54515
- }, [currentLang, languageList]);
54516
- return React.createElement(Dropdown, {
54517
- isOpen: dropdownOpen,
54518
- toggle: toggle,
54519
- className: "" + styles["dropdown-menu"]
54520
- }, React.createElement(DropdownToggle, {
54521
- className: styles["header-avatar"] + " d-flex align-items-center"
54522
- }, React.createElement("span", {
54523
- style: {
54524
- color: "#000",
54525
- textTransform: "capitalize",
54526
- display: 'flex',
54527
- alignItems: 'center'
54528
- }
54529
- }, currentLanguage, React.createElement(BsChevronDown, {
54530
- className: "ml-2",
54531
- style: {
54532
- fontSize: '10px'
54533
- }
54534
- }))), React.createElement(DropdownMenu, {
54535
- className: styles["dropdown-content-language"]
54536
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54537
- return React.createElement(DropdownItem, {
54538
- key: lang.code,
54539
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54540
- onClick: function onClick() {
54541
- return changeLanguageApp(lang.code);
54542
- }
54543
- }, React.createElement("div", {
54544
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54545
- }, React.createElement("span", {
54546
- className: "mr-2 d-flex hover-opacity"
54547
- }, React.createElement("img", {
54548
- style: {
54549
- width: "30px",
54550
- height: "25px",
54551
- borderRadius: "5px"
54552
- },
54553
- src: getStaticFileUrl(lang.image)
54554
- })), lang.name));
54555
- })));
54556
- };
54557
-
54558
- var TheHeader = function TheHeader(_ref) {
54559
- var onToggleModel = _ref.onToggleModel;
54560
- var dispatch = useDispatch();
54561
- var sidebarShow = useSelector(function (state) {
54562
- return state.common.sidebarShow;
54563
- });
54564
-
54565
- var _useTranslation = useTranslation(),
54566
- t = _useTranslation.t;
54567
-
54568
- var toggleSidebarMobile = function toggleSidebarMobile() {
54569
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54570
- dispatch(setSidebar(val));
54571
- };
54572
-
54573
- var isDistrict = window.location.host.includes("-district");
54574
- return React.createElement(CHeader, {
54575
- withSubheader: true,
54576
- className: "d-flex align-items-center justify-content-end"
54577
- }, React.createElement(CToggler, {
54578
- inHeader: true,
54579
- className: "ml-md-3 d-lg-none",
54580
- onClick: toggleSidebarMobile
54581
- }), React.createElement(CHeaderBrand, {
54582
- className: "mx-auto flex-grow-1 d-lg-none",
54583
- to: "/"
54584
- }, React.createElement("img", {
54585
- src: getStaticFileUrl(Images.LOGO_HEADER),
54586
- className: styles["header-logo"]
54587
- })), React.createElement(CHeaderNav, {
54588
- className: "pr-3"
54589
- }, React.createElement(TheLanguageDropdown, null), React.createElement("a", {
54590
- className: "mr-3",
54591
- style: {
54592
- color: '#000'
54593
- },
54594
- href: '/privacy-policy',
54595
- target: "blank"
54596
- }, t("privacy_policy")), !isDistrict && React.createElement(NotificationButton, null), React.createElement(TheHeaderDropdown, {
54597
- onToggleModel: onToggleModel
54598
- })));
54599
- };
54600
-
54601
- var ModelSelectRole = function ModelSelectRole(_ref) {
54602
- var _handleUserRole;
54603
-
54604
- var open = _ref.open,
54605
- onToggleModel = _ref.onToggleModel;
54606
- var dispatch = useDispatch();
54607
-
54608
- var _useTranslation = useTranslation(),
54609
- t = _useTranslation.t;
54610
-
54611
- var history = useHistory();
54612
- var pathname = window.location.pathname;
54613
- var user = useSelector(function (state) {
54614
- return state.common.user;
54615
- });
54616
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54617
-
54618
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54619
- dispatch(setLoading(true));
54620
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54621
- dispatch(setUser(_extends({}, user, {
54622
- roles: roleSelect
54623
- })));
54624
- localStorage.setItem("ROLES", roleSelect.toString());
54625
- onToggleModel();
54626
-
54627
- if (roles.includes("Parent")) {
54628
- history.push("/parent");
54629
- } else if (roles.includes("Admin")) {
54630
- history.push("/admin/home");
54631
- } else {
54632
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54633
- }
54634
- };
54635
-
54636
- return React.createElement(Modal, {
54637
- isOpen: open,
54638
- toggle: function toggle() {
54639
- return onToggleModel();
54640
- },
54641
- className: "" + styles["model-switch-roles"],
54642
- centered: true
54643
- }, React.createElement("p", {
54644
- className: "" + styles["title"]
54645
- }, 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) {
54646
- return React.createElement("p", {
54647
- key: r,
54648
- 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" : ""],
54649
- onClick: function onClick() {
54650
- return handleSelectUserRoles([r]);
54651
- }
54652
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54653
- })));
54654
- };
54655
-
54656
- var TheLayout = function TheLayout(_ref) {
54657
- var routes = _ref.routes,
54658
- navigation = _ref.navigation;
54659
- var history = useHistory();
54660
- var dispatch = useDispatch();
54661
- var user = useSelector(function (state) {
54662
- return state.common.user;
54663
- });
54664
- var language = useSelector(function (state) {
54665
- return state.common.language;
54666
- });
54667
-
54668
- var _useState = useState(false),
54669
- openModelSelectRole = _useState[0],
54670
- setOpenModelSelectRole = _useState[1];
54671
-
54672
- var _useTranslation = useTranslation(),
54673
- t = _useTranslation.t;
54674
-
54675
- var location = useLocation();
54676
- var isNotification = location.pathname.includes("notifications");
54677
- var isDistrict = window.location.host.includes("-district");
54678
-
54679
- var handleToggleModel = function handleToggleModel() {
54680
- setOpenModelSelectRole(!openModelSelectRole);
54681
- };
54682
-
54683
- var authRoutes = useMemo(function () {
54684
- return routes.filter(function (route) {
54685
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54686
- }).filter(function (route) {
54687
- return !!route.isDistrict === isDistrict;
54688
- });
54689
- }, [user, language]);
54690
- var authNavigations = useMemo(function () {
54691
- return navigation.map(function (item) {
54692
- var _item$_children, _item$_children2;
54693
-
54694
- return _extends({}, item, {
54695
- name: t(item.name),
54696
- _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) {
54697
- return _extends({}, x, {
54698
- name: t(x.name)
54699
- });
54700
- }) : undefined
54701
- });
54702
- }).filter(function (nav) {
54703
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54704
- }).filter(function (nav) {
54705
- return !!nav.isDistrict === isDistrict;
54706
- });
54707
- }, [user, language]);
54708
-
54709
- var getInformationSetting = function getInformationSetting() {
54710
- try {
54711
- var _temp2 = _catch(function () {
54712
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54713
- dispatch(setSandboxMode(res.data.isSandboxMode));
54714
- });
54715
- }, function (err) {
54716
- console.error(err);
54717
- });
54718
-
54719
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54720
- } catch (e) {
54721
- return Promise.reject(e);
54722
- }
54723
- };
54724
-
54725
- useEffect(function () {
54726
- checkAuthentication();
54727
- }, []);
54728
- useEffect(function () {
54729
- getInformationSetting();
54730
- }, [location.pathname]);
54731
-
54732
- var checkAuthentication = function checkAuthentication() {
54733
- try {
54734
- var _temp4 = _catch(function () {
54735
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54736
- tokenStatus ? loadInfo() : resetAuth();
54737
- });
54738
- }, function () {
54739
- resetAuth();
54740
- });
54741
-
54742
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54743
- } catch (e) {
54744
- return Promise.reject(e);
54745
- }
54746
- };
54747
-
54748
- var loadInfo = function loadInfo() {
54749
- try {
54750
- var _temp6 = _catch(function () {
54751
- return Promise.resolve(getInfo()).then(function (info) {
54752
- var _info$data, _info$data$roles;
54753
-
54754
- 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"))) {
54755
- resetAuth();
54756
- }
54757
-
54758
- dispatch(setUser(info.data));
54759
- });
54760
- }, function () {
54761
- resetAuth();
54762
- });
54763
-
54764
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54765
- } catch (e) {
54766
- return Promise.reject(e);
54767
- }
54768
- };
54769
-
54770
- var resetAuth = function resetAuth() {
54771
- localStorage.removeItem(ACCESS_TOKEN);
54772
- sessionStorage.removeItem(ACCESS_TOKEN);
54773
- localStorage.removeItem("ROLES");
54774
- history.push("/");
54775
- };
54776
-
54777
- if (!user) {
54778
- return React.createElement(Loading, null);
54779
- }
54780
-
54781
- return React.createElement("div", {
54782
- className: "c-app c-default-layout"
54783
- }, !isNotification && React.createElement(TheSidebar, {
54784
- navigation: authNavigations
54785
- }), React.createElement("div", {
54786
- className: "c-wrapper"
54787
- }, !isNotification && React.createElement(TheHeader, {
54788
- onToggleModel: handleToggleModel
54789
- }), React.createElement("div", {
54790
- className: "c-body bg-white"
54791
- }, React.createElement(TheContent$1, {
54792
- routes: authRoutes
54793
- }))), React.createElement(ModelSelectRole, {
54794
- open: openModelSelectRole,
54795
- onToggleModel: handleToggleModel
54796
- }));
54797
- };
54798
-
54799
54817
  var amplitudeClient = amplitude;
54800
54818
 
54801
54819
  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 };