mario-core 2.9.416-feedback → 2.9.416-release

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