mario-core 2.9.407-feedback → 2.9.408-feedback

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1009,6 +1009,7 @@ var create_template_system = "Create Template System";
1009
1009
  var created_at = "Created At";
1010
1010
  var do_you_want_to_remove_this_template = "Do you want to remove this template?";
1011
1011
  var one_roster_setting = "OneRoster Setting";
1012
+ var clever_setting = "Clever Setting";
1012
1013
  var users = "Users";
1013
1014
  var one_roster_config = "OneRoster Config";
1014
1015
  var end_point_url = "End Point URL";
@@ -3170,6 +3171,7 @@ var lang_us = {
3170
3171
  created_at: created_at,
3171
3172
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template,
3172
3173
  one_roster_setting: one_roster_setting,
3174
+ clever_setting: clever_setting,
3173
3175
  users: users,
3174
3176
  one_roster_config: one_roster_config,
3175
3177
  end_point_url: end_point_url,
@@ -5353,6 +5355,7 @@ var create_template_system$1 = "Create Template System";
5353
5355
  var created_at$1 = "Created At";
5354
5356
  var do_you_want_to_remove_this_template$1 = "Do you want to remove this template?";
5355
5357
  var one_roster_setting$1 = "OneRoster Setting";
5358
+ var clever_setting$1 = "Clever Setting";
5356
5359
  var users$1 = "Users";
5357
5360
  var one_roster_config$1 = "OneRoster Config";
5358
5361
  var end_point_url$1 = "End Point URL";
@@ -7514,6 +7517,7 @@ var lang_uk = {
7514
7517
  created_at: created_at$1,
7515
7518
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$1,
7516
7519
  one_roster_setting: one_roster_setting$1,
7520
+ clever_setting: clever_setting$1,
7517
7521
  users: users$1,
7518
7522
  one_roster_config: one_roster_config$1,
7519
7523
  end_point_url: end_point_url$1,
@@ -9689,6 +9693,7 @@ var create_template_system$2 = "إنشاء قالب النظام";
9689
9693
  var created_at$2 = "تم إنشاؤه في";
9690
9694
  var do_you_want_to_remove_this_template$2 = "هل تريد إزالة هذا القالب؟";
9691
9695
  var one_roster_setting$2 = "إعداد OneRoster";
9696
+ var clever_setting$2 = "إعداد ذكي";
9692
9697
  var users$2 = "المستخدمون";
9693
9698
  var one_roster_config$2 = "ضبط OneRoster";
9694
9699
  var end_point_url$2 = "عنوان URL لنقطة النهاية";
@@ -11878,6 +11883,7 @@ var lang_ar = {
11878
11883
  created_at: created_at$2,
11879
11884
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$2,
11880
11885
  one_roster_setting: one_roster_setting$2,
11886
+ clever_setting: clever_setting$2,
11881
11887
  users: users$2,
11882
11888
  one_roster_config: one_roster_config$2,
11883
11889
  end_point_url: end_point_url$2,
@@ -14090,6 +14096,7 @@ var create_template_system$3 = "Crear sistema de plantillas";
14090
14096
  var created_at$3 = "Creado en";
14091
14097
  var do_you_want_to_remove_this_template$3 = "¿Desea eliminar esta plantilla?";
14092
14098
  var one_roster_setting$3 = "Configuración de OneRoster";
14099
+ var clever_setting$3 = "Configuración inteligente";
14093
14100
  var users$3 = "Usuarios";
14094
14101
  var one_roster_config$3 = "Configuración OneRoster";
14095
14102
  var end_point_url$3 = "URL del punto final";
@@ -16279,6 +16286,7 @@ var lang_es = {
16279
16286
  created_at: created_at$3,
16280
16287
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$3,
16281
16288
  one_roster_setting: one_roster_setting$3,
16289
+ clever_setting: clever_setting$3,
16282
16290
  users: users$3,
16283
16291
  one_roster_config: one_roster_config$3,
16284
16292
  end_point_url: end_point_url$3,
@@ -18491,6 +18499,7 @@ var create_template_system$4 = "创建模板系统";
18491
18499
  var created_at$4 = "创建时间";
18492
18500
  var do_you_want_to_remove_this_template$4 = "是否要删除此模板?";
18493
18501
  var one_roster_setting$4 = "OneRoster 设置";
18502
+ var clever_setting$4 = "巧妙的设置";
18494
18503
  var users$4 = "用户";
18495
18504
  var one_roster_config$4 = "OneRoster 配置";
18496
18505
  var end_point_url$4 = "端点 URL";
@@ -20680,6 +20689,7 @@ var lang_zh = {
20680
20689
  created_at: created_at$4,
20681
20690
  do_you_want_to_remove_this_template: do_you_want_to_remove_this_template$4,
20682
20691
  one_roster_setting: one_roster_setting$4,
20692
+ clever_setting: clever_setting$4,
20683
20693
  users: users$4,
20684
20694
  one_roster_config: one_roster_config$4,
20685
20695
  end_point_url: end_point_url$4,
@@ -41787,6 +41797,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
41787
41797
  })), t("log_out")))));
41788
41798
  };
41789
41799
 
41800
+ var apiGetLanguage = function apiGetLanguage() {
41801
+ return api.get(BASE_URL + "/api/language");
41802
+ };
41803
+
41804
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
41805
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
41806
+ };
41807
+
41808
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
41809
+
41810
+ var useLanguages = function useLanguages() {
41811
+ var dispatch = reactRedux.useDispatch();
41812
+
41813
+ var _useTranslation = reactI18next.useTranslation(),
41814
+ i18n = _useTranslation.i18n;
41815
+
41816
+ var language = reactRedux.useSelector(function (state) {
41817
+ return state.common.language;
41818
+ });
41819
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
41820
+
41821
+ var _useState = React.useState([]),
41822
+ languageList = _useState[0],
41823
+ setLanguageList = _useState[1];
41824
+
41825
+ var _useState2 = React.useState(false),
41826
+ dropdownOpen = _useState2[0],
41827
+ setDropdownOpen = _useState2[1];
41828
+
41829
+ var _useState3 = React.useState(defaultLanguage),
41830
+ currentLang = _useState3[0],
41831
+ setCurrentLang = _useState3[1];
41832
+
41833
+ var toggle = function toggle() {
41834
+ return setDropdownOpen(function (prevState) {
41835
+ return !prevState;
41836
+ });
41837
+ };
41838
+
41839
+ var changeLanguageApp = function changeLanguageApp(lang) {
41840
+ try {
41841
+ var _temp3 = function _temp3() {
41842
+ dispatch(setLoading(false));
41843
+ };
41844
+
41845
+ dispatch(setLoading(true));
41846
+
41847
+ var _temp4 = _catch(function () {
41848
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
41849
+ i18n.changeLanguage(lang);
41850
+ setCurrentLang(lang);
41851
+ dispatch(setLanguage(lang));
41852
+ });
41853
+ }, function (err) {
41854
+ var _err$response, _err$response$data;
41855
+
41856
+ dispatch(setAlert({
41857
+ type: "danger",
41858
+ 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
41859
+ }));
41860
+ });
41861
+
41862
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
41863
+ } catch (e) {
41864
+ return Promise.reject(e);
41865
+ }
41866
+ };
41867
+
41868
+ var getListLanguage = function getListLanguage() {
41869
+ try {
41870
+ var _temp6 = _catch(function () {
41871
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
41872
+ setLanguageList(res.data);
41873
+ });
41874
+ }, function (err) {
41875
+ var _err$response2, _err$response2$data;
41876
+
41877
+ dispatch(setAlert({
41878
+ type: "danger",
41879
+ 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
41880
+ }));
41881
+ });
41882
+
41883
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
41884
+ } catch (e) {
41885
+ return Promise.reject(e);
41886
+ }
41887
+ };
41888
+
41889
+ React.useEffect(function () {
41890
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
41891
+ getListLanguage();
41892
+ }, []);
41893
+ return {
41894
+ languageList: languageList,
41895
+ toggle: toggle,
41896
+ dropdownOpen: dropdownOpen,
41897
+ currentLang: currentLang,
41898
+ changeLanguageApp: changeLanguageApp,
41899
+ setCurrentLang: setCurrentLang
41900
+ };
41901
+ };
41902
+
41903
+ var TheLanguageDropdown = function TheLanguageDropdown() {
41904
+ var _useLanguages = useLanguages(),
41905
+ languageList = _useLanguages.languageList,
41906
+ toggle = _useLanguages.toggle,
41907
+ dropdownOpen = _useLanguages.dropdownOpen,
41908
+ currentLang = _useLanguages.currentLang,
41909
+ changeLanguageApp = _useLanguages.changeLanguageApp;
41910
+
41911
+ var currentLanguage = React.useMemo(function () {
41912
+ var current = languageList.find(function (i) {
41913
+ return i.code === currentLang;
41914
+ });
41915
+ if (!current) return null;
41916
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
41917
+ className: "mr-2 " + styles['dropdown-menu-flag'],
41918
+ src: "" + getStaticFileUrl(current.image)
41919
+ }), " ", current.name);
41920
+ }, [currentLang, languageList]);
41921
+ return React__default.createElement(reactstrap.Dropdown, {
41922
+ isOpen: dropdownOpen,
41923
+ toggle: toggle,
41924
+ className: "" + styles["dropdown-menu"]
41925
+ }, React__default.createElement(reactstrap.DropdownToggle, {
41926
+ className: styles["header-avatar"] + " d-flex align-items-center"
41927
+ }, React__default.createElement("span", {
41928
+ style: {
41929
+ color: "#000",
41930
+ textTransform: "capitalize",
41931
+ display: 'flex',
41932
+ alignItems: 'center'
41933
+ }
41934
+ }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
41935
+ className: "ml-2",
41936
+ style: {
41937
+ fontSize: '10px'
41938
+ }
41939
+ }))), React__default.createElement(reactstrap.DropdownMenu, {
41940
+ className: styles["dropdown-content-language"]
41941
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
41942
+ return React__default.createElement(reactstrap.DropdownItem, {
41943
+ key: lang.code,
41944
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
41945
+ onClick: function onClick() {
41946
+ return changeLanguageApp(lang.code);
41947
+ }
41948
+ }, React__default.createElement("div", {
41949
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
41950
+ }, React__default.createElement("span", {
41951
+ className: "mr-2 d-flex hover-opacity"
41952
+ }, React__default.createElement("img", {
41953
+ style: {
41954
+ width: "30px",
41955
+ height: "25px",
41956
+ borderRadius: "5px"
41957
+ },
41958
+ src: getStaticFileUrl(lang.image)
41959
+ })), lang.name));
41960
+ })));
41961
+ };
41962
+
41963
+ var TheHeader = function TheHeader(_ref) {
41964
+ var onToggleModel = _ref.onToggleModel;
41965
+ var dispatch = reactRedux.useDispatch();
41966
+ var sidebarShow = reactRedux.useSelector(function (state) {
41967
+ return state.common.sidebarShow;
41968
+ });
41969
+
41970
+ var _useTranslation = reactI18next.useTranslation(),
41971
+ t = _useTranslation.t;
41972
+
41973
+ var toggleSidebarMobile = function toggleSidebarMobile() {
41974
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
41975
+ dispatch(setSidebar(val));
41976
+ };
41977
+
41978
+ var isDistrict = window.location.host.includes("-district");
41979
+ return React__default.createElement(react.CHeader, {
41980
+ withSubheader: true,
41981
+ className: "d-flex align-items-center justify-content-end"
41982
+ }, React__default.createElement(react.CToggler, {
41983
+ inHeader: true,
41984
+ className: "ml-md-3 d-lg-none",
41985
+ onClick: toggleSidebarMobile
41986
+ }), React__default.createElement(react.CHeaderBrand, {
41987
+ className: "mx-auto flex-grow-1 d-lg-none",
41988
+ to: "/"
41989
+ }, React__default.createElement("img", {
41990
+ src: getStaticFileUrl(Images.LOGO_HEADER),
41991
+ className: styles["header-logo"]
41992
+ })), React__default.createElement(react.CHeaderNav, {
41993
+ className: "pr-3"
41994
+ }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
41995
+ className: "mr-3",
41996
+ style: {
41997
+ color: '#000'
41998
+ },
41999
+ href: '/privacy-policy',
42000
+ target: "blank"
42001
+ }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
42002
+ onToggleModel: onToggleModel
42003
+ })));
42004
+ };
42005
+
41790
42006
  var TITLE$3 = "Not found";
41791
42007
 
41792
42008
  var NotFound = function NotFound() {
@@ -41844,6 +42060,258 @@ var TheContent = function TheContent(_ref) {
41844
42060
 
41845
42061
  var TheContent$1 = React__default.memo(TheContent);
41846
42062
 
42063
+ var loadingStyle = {
42064
+ minWidth: "100vw",
42065
+ minHeight: "100vh",
42066
+ position: "fixed",
42067
+ top: 0,
42068
+ left: 0,
42069
+ zIndex: 999999999,
42070
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
42071
+ display: "flex",
42072
+ justifyContent: "center",
42073
+ alignItems: "center"
42074
+ };
42075
+
42076
+ var Loading = function Loading() {
42077
+ var isLoading = reactRedux.useSelector(function (state) {
42078
+ return state.common.isLoading;
42079
+ });
42080
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
42081
+ return isLoading ? React__default.createElement("div", {
42082
+ style: loadingStyle
42083
+ }, React__default.createElement("div", {
42084
+ className: "spinner-border text-secondary",
42085
+ role: "status"
42086
+ }, React__default.createElement("span", {
42087
+ className: "sr-only"
42088
+ }, "Loading..."))) : null;
42089
+ };
42090
+
42091
+ var firstCheckToken = function firstCheckToken() {
42092
+ return Promise.resolve(_catch(function () {
42093
+ var token = getAccessToken();
42094
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
42095
+ return tokenStatus.data ? true : false;
42096
+ }) : false;
42097
+ }, function () {
42098
+ return false;
42099
+ }));
42100
+ };
42101
+
42102
+ var canAccess = function canAccess(userRoles, componentRoles) {
42103
+ if (!Array.isArray(userRoles)) {
42104
+ return false;
42105
+ }
42106
+
42107
+ if (Array.isArray(componentRoles)) {
42108
+ var intersects = userRoles.filter(function (i) {
42109
+ return componentRoles.includes(i);
42110
+ });
42111
+ return intersects.length > 0;
42112
+ }
42113
+
42114
+ return true;
42115
+ };
42116
+
42117
+ var ModelSelectRole = function ModelSelectRole(_ref) {
42118
+ var _handleUserRole;
42119
+
42120
+ var open = _ref.open,
42121
+ onToggleModel = _ref.onToggleModel;
42122
+ var dispatch = reactRedux.useDispatch();
42123
+
42124
+ var _useTranslation = reactI18next.useTranslation(),
42125
+ t = _useTranslation.t;
42126
+
42127
+ var history = reactRouterDom.useHistory();
42128
+ var pathname = window.location.pathname;
42129
+ var user = reactRedux.useSelector(function (state) {
42130
+ return state.common.user;
42131
+ });
42132
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
42133
+
42134
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
42135
+ dispatch(setLoading(true));
42136
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
42137
+ dispatch(setUser(_extends({}, user, {
42138
+ roles: roleSelect
42139
+ })));
42140
+ localStorage.setItem("ROLES", roleSelect.toString());
42141
+ onToggleModel();
42142
+
42143
+ if (roles.includes("Parent")) {
42144
+ history.push("/parent");
42145
+ } else if (roles.includes("Admin")) {
42146
+ history.push("/admin/home");
42147
+ } else {
42148
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
42149
+ }
42150
+ };
42151
+
42152
+ return React__default.createElement(reactstrap.Modal, {
42153
+ isOpen: open,
42154
+ toggle: function toggle() {
42155
+ return onToggleModel();
42156
+ },
42157
+ className: "" + styles["model-switch-roles"],
42158
+ centered: true
42159
+ }, React__default.createElement("p", {
42160
+ className: "" + styles["title"]
42161
+ }, 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) {
42162
+ return React__default.createElement("p", {
42163
+ key: r,
42164
+ 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" : ""],
42165
+ onClick: function onClick() {
42166
+ return handleSelectUserRoles([r]);
42167
+ }
42168
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
42169
+ })));
42170
+ };
42171
+
42172
+ var TheLayout = function TheLayout(_ref) {
42173
+ var routes = _ref.routes,
42174
+ navigation = _ref.navigation;
42175
+ var history = reactRouterDom.useHistory();
42176
+ var dispatch = reactRedux.useDispatch();
42177
+ var user = reactRedux.useSelector(function (state) {
42178
+ return state.common.user;
42179
+ });
42180
+ var language = reactRedux.useSelector(function (state) {
42181
+ return state.common.language;
42182
+ });
42183
+
42184
+ var _useState = React.useState(false),
42185
+ openModelSelectRole = _useState[0],
42186
+ setOpenModelSelectRole = _useState[1];
42187
+
42188
+ var _useTranslation = reactI18next.useTranslation(),
42189
+ t = _useTranslation.t;
42190
+
42191
+ var location = reactRouterDom.useLocation();
42192
+ var isNotification = location.pathname.includes("notifications");
42193
+ var isDistrict = window.location.host.includes("-district");
42194
+
42195
+ var handleToggleModel = function handleToggleModel() {
42196
+ setOpenModelSelectRole(!openModelSelectRole);
42197
+ };
42198
+
42199
+ var authRoutes = React.useMemo(function () {
42200
+ return routes.filter(function (route) {
42201
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
42202
+ }).filter(function (route) {
42203
+ return !!route.isDistrict === isDistrict;
42204
+ });
42205
+ }, [user, language]);
42206
+ var authNavigations = React.useMemo(function () {
42207
+ return navigation.map(function (item) {
42208
+ var _item$_children, _item$_children2;
42209
+
42210
+ return _extends({}, item, {
42211
+ name: t(item.name),
42212
+ _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) {
42213
+ return _extends({}, x, {
42214
+ name: t(x.name)
42215
+ });
42216
+ }) : undefined
42217
+ });
42218
+ }).filter(function (nav) {
42219
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
42220
+ }).filter(function (nav) {
42221
+ return !!nav.isDistrict === isDistrict;
42222
+ });
42223
+ }, [user, language]);
42224
+
42225
+ var getInformationSetting = function getInformationSetting() {
42226
+ try {
42227
+ var _temp2 = _catch(function () {
42228
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
42229
+ dispatch(setSandboxMode(res.data.isSandboxMode));
42230
+ });
42231
+ }, function (err) {
42232
+ console.error(err);
42233
+ });
42234
+
42235
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
42236
+ } catch (e) {
42237
+ return Promise.reject(e);
42238
+ }
42239
+ };
42240
+
42241
+ React.useEffect(function () {
42242
+ checkAuthentication();
42243
+ }, []);
42244
+ React.useEffect(function () {
42245
+ getInformationSetting();
42246
+ }, [location.pathname]);
42247
+
42248
+ var checkAuthentication = function checkAuthentication() {
42249
+ try {
42250
+ var _temp4 = _catch(function () {
42251
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
42252
+ tokenStatus ? loadInfo() : resetAuth();
42253
+ });
42254
+ }, function () {
42255
+ resetAuth();
42256
+ });
42257
+
42258
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
42259
+ } catch (e) {
42260
+ return Promise.reject(e);
42261
+ }
42262
+ };
42263
+
42264
+ var loadInfo = function loadInfo() {
42265
+ try {
42266
+ var _temp6 = _catch(function () {
42267
+ return Promise.resolve(getInfo()).then(function (info) {
42268
+ var _info$data, _info$data$roles;
42269
+
42270
+ 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"))) {
42271
+ resetAuth();
42272
+ }
42273
+
42274
+ dispatch(setUser(info.data));
42275
+ });
42276
+ }, function () {
42277
+ resetAuth();
42278
+ });
42279
+
42280
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
42281
+ } catch (e) {
42282
+ return Promise.reject(e);
42283
+ }
42284
+ };
42285
+
42286
+ var resetAuth = function resetAuth() {
42287
+ localStorage.removeItem(ACCESS_TOKEN);
42288
+ sessionStorage.removeItem(ACCESS_TOKEN);
42289
+ localStorage.removeItem("ROLES");
42290
+ history.push("/");
42291
+ };
42292
+
42293
+ if (!user) {
42294
+ return React__default.createElement(Loading, null);
42295
+ }
42296
+
42297
+ return React__default.createElement("div", {
42298
+ className: "c-app c-default-layout"
42299
+ }, !isNotification && React__default.createElement(TheSidebar, {
42300
+ navigation: authNavigations
42301
+ }), React__default.createElement("div", {
42302
+ className: "c-wrapper"
42303
+ }, !isNotification && React__default.createElement(TheHeader, {
42304
+ onToggleModel: handleToggleModel
42305
+ }), React__default.createElement("div", {
42306
+ className: "c-body bg-white"
42307
+ }, React__default.createElement(TheContent$1, {
42308
+ routes: authRoutes
42309
+ }))), React__default.createElement(ModelSelectRole, {
42310
+ open: openModelSelectRole,
42311
+ onToggleModel: handleToggleModel
42312
+ }));
42313
+ };
42314
+
41847
42315
  var buttonTextStyle = {
41848
42316
  fontWeight: 500
41849
42317
  };
@@ -51192,34 +51660,6 @@ var UserDetail = function UserDetail() {
51192
51660
  });
51193
51661
  };
51194
51662
 
51195
- var loadingStyle = {
51196
- minWidth: "100vw",
51197
- minHeight: "100vh",
51198
- position: "fixed",
51199
- top: 0,
51200
- left: 0,
51201
- zIndex: 999999999,
51202
- backgroundColor: "rgba(0, 0, 0, 0.4)",
51203
- display: "flex",
51204
- justifyContent: "center",
51205
- alignItems: "center"
51206
- };
51207
-
51208
- var Loading = function Loading() {
51209
- var isLoading = reactRedux.useSelector(function (state) {
51210
- return state.common.isLoading;
51211
- });
51212
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
51213
- return isLoading ? React__default.createElement("div", {
51214
- style: loadingStyle
51215
- }, React__default.createElement("div", {
51216
- className: "spinner-border text-secondary",
51217
- role: "status"
51218
- }, React__default.createElement("span", {
51219
- className: "sr-only"
51220
- }, "Loading..."))) : null;
51221
- };
51222
-
51223
51663
  var ScrollToTop = function ScrollToTop() {
51224
51664
  var _useLocation = reactRouterDom.useLocation(),
51225
51665
  pathname = _useLocation.pathname;
@@ -54243,32 +54683,6 @@ var store = toolkit.configureStore({
54243
54683
  }
54244
54684
  });
54245
54685
 
54246
- var firstCheckToken = function firstCheckToken() {
54247
- return Promise.resolve(_catch(function () {
54248
- var token = getAccessToken();
54249
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
54250
- return tokenStatus.data ? true : false;
54251
- }) : false;
54252
- }, function () {
54253
- return false;
54254
- }));
54255
- };
54256
-
54257
- var canAccess = function canAccess(userRoles, componentRoles) {
54258
- if (!Array.isArray(userRoles)) {
54259
- return false;
54260
- }
54261
-
54262
- if (Array.isArray(componentRoles)) {
54263
- var intersects = userRoles.filter(function (i) {
54264
- return componentRoles.includes(i);
54265
- });
54266
- return intersects.length > 0;
54267
- }
54268
-
54269
- return true;
54270
- };
54271
-
54272
54686
  var isInViewport = function isInViewport(el) {
54273
54687
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
54274
54688
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -54302,410 +54716,6 @@ var generateRandomString = (function () {
54302
54716
  return (Math.random() + 1).toString(36).substring(7);
54303
54717
  });
54304
54718
 
54305
- var apiGetLanguage = function apiGetLanguage() {
54306
- return api.get(BASE_URL + "/api/language");
54307
- };
54308
-
54309
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
54310
- return api.put(BASE_URL + "/api/language?lang=" + lang);
54311
- };
54312
-
54313
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
54314
-
54315
- var useLanguages = function useLanguages() {
54316
- var dispatch = reactRedux.useDispatch();
54317
-
54318
- var _useTranslation = reactI18next.useTranslation(),
54319
- i18n = _useTranslation.i18n;
54320
-
54321
- var language = reactRedux.useSelector(function (state) {
54322
- return state.common.language;
54323
- });
54324
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
54325
-
54326
- var _useState = React.useState([]),
54327
- languageList = _useState[0],
54328
- setLanguageList = _useState[1];
54329
-
54330
- var _useState2 = React.useState(false),
54331
- dropdownOpen = _useState2[0],
54332
- setDropdownOpen = _useState2[1];
54333
-
54334
- var _useState3 = React.useState(defaultLanguage),
54335
- currentLang = _useState3[0],
54336
- setCurrentLang = _useState3[1];
54337
-
54338
- var toggle = function toggle() {
54339
- return setDropdownOpen(function (prevState) {
54340
- return !prevState;
54341
- });
54342
- };
54343
-
54344
- var changeLanguageApp = function changeLanguageApp(lang) {
54345
- try {
54346
- var _temp3 = function _temp3() {
54347
- dispatch(setLoading(false));
54348
- };
54349
-
54350
- dispatch(setLoading(true));
54351
-
54352
- var _temp4 = _catch(function () {
54353
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
54354
- i18n.changeLanguage(lang);
54355
- setCurrentLang(lang);
54356
- dispatch(setLanguage(lang));
54357
- });
54358
- }, function (err) {
54359
- var _err$response, _err$response$data;
54360
-
54361
- dispatch(setAlert({
54362
- type: "danger",
54363
- 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
54364
- }));
54365
- });
54366
-
54367
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
54368
- } catch (e) {
54369
- return Promise.reject(e);
54370
- }
54371
- };
54372
-
54373
- var getListLanguage = function getListLanguage() {
54374
- try {
54375
- var _temp6 = _catch(function () {
54376
- return Promise.resolve(apiGetLanguage()).then(function (res) {
54377
- setLanguageList(res.data);
54378
- });
54379
- }, function (err) {
54380
- var _err$response2, _err$response2$data;
54381
-
54382
- dispatch(setAlert({
54383
- type: "danger",
54384
- 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
54385
- }));
54386
- });
54387
-
54388
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54389
- } catch (e) {
54390
- return Promise.reject(e);
54391
- }
54392
- };
54393
-
54394
- React.useEffect(function () {
54395
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
54396
- getListLanguage();
54397
- }, []);
54398
- return {
54399
- languageList: languageList,
54400
- toggle: toggle,
54401
- dropdownOpen: dropdownOpen,
54402
- currentLang: currentLang,
54403
- changeLanguageApp: changeLanguageApp,
54404
- setCurrentLang: setCurrentLang
54405
- };
54406
- };
54407
-
54408
- var TheLanguageDropdown = function TheLanguageDropdown() {
54409
- var _useLanguages = useLanguages(),
54410
- languageList = _useLanguages.languageList,
54411
- toggle = _useLanguages.toggle,
54412
- dropdownOpen = _useLanguages.dropdownOpen,
54413
- currentLang = _useLanguages.currentLang,
54414
- changeLanguageApp = _useLanguages.changeLanguageApp;
54415
-
54416
- var currentLanguage = React.useMemo(function () {
54417
- var current = languageList.find(function (i) {
54418
- return i.code === currentLang;
54419
- });
54420
- if (!current) return null;
54421
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
54422
- className: "mr-2 " + styles['dropdown-menu-flag'],
54423
- src: "" + getStaticFileUrl(current.image)
54424
- }), " ", current.name);
54425
- }, [currentLang, languageList]);
54426
- return React__default.createElement(reactstrap.Dropdown, {
54427
- isOpen: dropdownOpen,
54428
- toggle: toggle,
54429
- className: "" + styles["dropdown-menu"]
54430
- }, React__default.createElement(reactstrap.DropdownToggle, {
54431
- className: styles["header-avatar"] + " d-flex align-items-center"
54432
- }, React__default.createElement("span", {
54433
- style: {
54434
- color: "#000",
54435
- textTransform: "capitalize",
54436
- display: 'flex',
54437
- alignItems: 'center'
54438
- }
54439
- }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
54440
- className: "ml-2",
54441
- style: {
54442
- fontSize: '10px'
54443
- }
54444
- }))), React__default.createElement(reactstrap.DropdownMenu, {
54445
- className: styles["dropdown-content-language"]
54446
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
54447
- return React__default.createElement(reactstrap.DropdownItem, {
54448
- key: lang.code,
54449
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
54450
- onClick: function onClick() {
54451
- return changeLanguageApp(lang.code);
54452
- }
54453
- }, React__default.createElement("div", {
54454
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
54455
- }, React__default.createElement("span", {
54456
- className: "mr-2 d-flex hover-opacity"
54457
- }, React__default.createElement("img", {
54458
- style: {
54459
- width: "30px",
54460
- height: "25px",
54461
- borderRadius: "5px"
54462
- },
54463
- src: getStaticFileUrl(lang.image)
54464
- })), lang.name));
54465
- })));
54466
- };
54467
-
54468
- var TheHeader = function TheHeader(_ref) {
54469
- var onToggleModel = _ref.onToggleModel;
54470
- var dispatch = reactRedux.useDispatch();
54471
- var sidebarShow = reactRedux.useSelector(function (state) {
54472
- return state.common.sidebarShow;
54473
- });
54474
-
54475
- var _useTranslation = reactI18next.useTranslation(),
54476
- t = _useTranslation.t;
54477
-
54478
- var toggleSidebarMobile = function toggleSidebarMobile() {
54479
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
54480
- dispatch(setSidebar(val));
54481
- };
54482
-
54483
- var isDistrict = window.location.host.includes("-district");
54484
- return React__default.createElement(react.CHeader, {
54485
- withSubheader: true,
54486
- className: "d-flex align-items-center justify-content-end"
54487
- }, React__default.createElement(react.CToggler, {
54488
- inHeader: true,
54489
- className: "ml-md-3 d-lg-none",
54490
- onClick: toggleSidebarMobile
54491
- }), React__default.createElement(react.CHeaderBrand, {
54492
- className: "mx-auto flex-grow-1 d-lg-none",
54493
- to: "/"
54494
- }, React__default.createElement("img", {
54495
- src: getStaticFileUrl(Images.LOGO_HEADER),
54496
- className: styles["header-logo"]
54497
- })), React__default.createElement(react.CHeaderNav, {
54498
- className: "pr-3"
54499
- }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
54500
- className: "mr-3",
54501
- style: {
54502
- color: '#000'
54503
- },
54504
- href: '/privacy-policy',
54505
- target: "blank"
54506
- }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
54507
- onToggleModel: onToggleModel
54508
- })));
54509
- };
54510
-
54511
- var ModelSelectRole = function ModelSelectRole(_ref) {
54512
- var _handleUserRole;
54513
-
54514
- var open = _ref.open,
54515
- onToggleModel = _ref.onToggleModel;
54516
- var dispatch = reactRedux.useDispatch();
54517
-
54518
- var _useTranslation = reactI18next.useTranslation(),
54519
- t = _useTranslation.t;
54520
-
54521
- var history = reactRouterDom.useHistory();
54522
- var pathname = window.location.pathname;
54523
- var user = reactRedux.useSelector(function (state) {
54524
- return state.common.user;
54525
- });
54526
- var roles = user === null || user === void 0 ? void 0 : user.roles;
54527
-
54528
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
54529
- dispatch(setLoading(true));
54530
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
54531
- dispatch(setUser(_extends({}, user, {
54532
- roles: roleSelect
54533
- })));
54534
- localStorage.setItem("ROLES", roleSelect.toString());
54535
- onToggleModel();
54536
-
54537
- if (roles.includes("Parent")) {
54538
- history.push("/parent");
54539
- } else if (roles.includes("Admin")) {
54540
- history.push("/admin/home");
54541
- } else {
54542
- pathname !== "/home" ? history.push("/home") : window.location.reload();
54543
- }
54544
- };
54545
-
54546
- return React__default.createElement(reactstrap.Modal, {
54547
- isOpen: open,
54548
- toggle: function toggle() {
54549
- return onToggleModel();
54550
- },
54551
- className: "" + styles["model-switch-roles"],
54552
- centered: true
54553
- }, React__default.createElement("p", {
54554
- className: "" + styles["title"]
54555
- }, 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) {
54556
- return React__default.createElement("p", {
54557
- key: r,
54558
- 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" : ""],
54559
- onClick: function onClick() {
54560
- return handleSelectUserRoles([r]);
54561
- }
54562
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
54563
- })));
54564
- };
54565
-
54566
- var TheLayout = function TheLayout(_ref) {
54567
- var routes = _ref.routes,
54568
- navigation = _ref.navigation;
54569
- var history = reactRouterDom.useHistory();
54570
- var dispatch = reactRedux.useDispatch();
54571
- var user = reactRedux.useSelector(function (state) {
54572
- return state.common.user;
54573
- });
54574
- var language = reactRedux.useSelector(function (state) {
54575
- return state.common.language;
54576
- });
54577
-
54578
- var _useState = React.useState(false),
54579
- openModelSelectRole = _useState[0],
54580
- setOpenModelSelectRole = _useState[1];
54581
-
54582
- var _useTranslation = reactI18next.useTranslation(),
54583
- t = _useTranslation.t;
54584
-
54585
- var location = reactRouterDom.useLocation();
54586
- var isNotification = location.pathname.includes("notifications");
54587
- var isDistrict = window.location.host.includes("-district");
54588
-
54589
- var handleToggleModel = function handleToggleModel() {
54590
- setOpenModelSelectRole(!openModelSelectRole);
54591
- };
54592
-
54593
- var authRoutes = React.useMemo(function () {
54594
- return routes.filter(function (route) {
54595
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
54596
- }).filter(function (route) {
54597
- return !!route.isDistrict === isDistrict;
54598
- });
54599
- }, [user, language]);
54600
- var authNavigations = React.useMemo(function () {
54601
- return navigation.map(function (item) {
54602
- var _item$_children, _item$_children2;
54603
-
54604
- return _extends({}, item, {
54605
- name: t(item.name),
54606
- _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) {
54607
- return _extends({}, x, {
54608
- name: t(x.name)
54609
- });
54610
- }) : undefined
54611
- });
54612
- }).filter(function (nav) {
54613
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
54614
- }).filter(function (nav) {
54615
- return !!nav.isDistrict === isDistrict;
54616
- });
54617
- }, [user, language]);
54618
-
54619
- var getInformationSetting = function getInformationSetting() {
54620
- try {
54621
- var _temp2 = _catch(function () {
54622
- return Promise.resolve(getSchoolSettings()).then(function (res) {
54623
- dispatch(setSandboxMode(res.data.isSandboxMode));
54624
- });
54625
- }, function (err) {
54626
- console.error(err);
54627
- });
54628
-
54629
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
54630
- } catch (e) {
54631
- return Promise.reject(e);
54632
- }
54633
- };
54634
-
54635
- React.useEffect(function () {
54636
- checkAuthentication();
54637
- }, []);
54638
- React.useEffect(function () {
54639
- getInformationSetting();
54640
- }, [location.pathname]);
54641
-
54642
- var checkAuthentication = function checkAuthentication() {
54643
- try {
54644
- var _temp4 = _catch(function () {
54645
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
54646
- tokenStatus ? loadInfo() : resetAuth();
54647
- });
54648
- }, function () {
54649
- resetAuth();
54650
- });
54651
-
54652
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
54653
- } catch (e) {
54654
- return Promise.reject(e);
54655
- }
54656
- };
54657
-
54658
- var loadInfo = function loadInfo() {
54659
- try {
54660
- var _temp6 = _catch(function () {
54661
- return Promise.resolve(getInfo()).then(function (info) {
54662
- var _info$data, _info$data$roles;
54663
-
54664
- 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"))) {
54665
- resetAuth();
54666
- }
54667
-
54668
- dispatch(setUser(info.data));
54669
- });
54670
- }, function () {
54671
- resetAuth();
54672
- });
54673
-
54674
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
54675
- } catch (e) {
54676
- return Promise.reject(e);
54677
- }
54678
- };
54679
-
54680
- var resetAuth = function resetAuth() {
54681
- localStorage.removeItem(ACCESS_TOKEN);
54682
- sessionStorage.removeItem(ACCESS_TOKEN);
54683
- localStorage.removeItem("ROLES");
54684
- history.push("/");
54685
- };
54686
-
54687
- if (!user) {
54688
- return React__default.createElement(Loading, null);
54689
- }
54690
-
54691
- return React__default.createElement("div", {
54692
- className: "c-app c-default-layout"
54693
- }, !isNotification && React__default.createElement(TheSidebar, {
54694
- navigation: authNavigations
54695
- }), React__default.createElement("div", {
54696
- className: "c-wrapper"
54697
- }, !isNotification && React__default.createElement(TheHeader, {
54698
- onToggleModel: handleToggleModel
54699
- }), React__default.createElement("div", {
54700
- className: "c-body bg-white"
54701
- }, React__default.createElement(TheContent$1, {
54702
- routes: authRoutes
54703
- }))), React__default.createElement(ModelSelectRole, {
54704
- open: openModelSelectRole,
54705
- onToggleModel: handleToggleModel
54706
- }));
54707
- };
54708
-
54709
54719
  var amplitudeClient = amplitude;
54710
54720
 
54711
54721
  Object.defineProperty(exports, 'I18nextProvider', {