mario-core 2.9.317-release → 2.9.319-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
@@ -65,6 +65,7 @@ var students_by_designation = "Students by Designation";
65
65
  var calendar = "Calendar";
66
66
  var gender = "Gender";
67
67
  var grade = "Grade";
68
+ var grades = "Grades";
68
69
  var current_grade = "Current Grade";
69
70
  var student_name = "Student name";
70
71
  var teacher_name = "Teacher name";
@@ -1996,6 +1997,7 @@ var all_of_the_students_marked_as_feeling_safe = "All of the students marked as
1996
1997
  var integrations = "Integrations";
1997
1998
  var open_responses = "Open Responses";
1998
1999
  var this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it = "This survey was sent all survey links that were sent will be invalid. Are you sure to delete it";
2000
+ var assign_teacher = "Assign Teacher";
1999
2001
  var lang_us = {
2000
2002
  dashboard: dashboard,
2001
2003
  user: user,
@@ -2023,6 +2025,7 @@ var lang_us = {
2023
2025
  calendar: calendar,
2024
2026
  gender: gender,
2025
2027
  grade: grade,
2028
+ grades: grades,
2026
2029
  current_grade: current_grade,
2027
2030
  student_name: student_name,
2028
2031
  teacher_name: teacher_name,
@@ -3989,7 +3992,8 @@ var lang_us = {
3989
3992
  integrations: integrations,
3990
3993
  "this_check_in_will_be_deleted_from_all_databases._are_you_sure_you_want_to_continue?": "This check-in will be deleted from all databases. Are you sure you want to continue?",
3991
3994
  open_responses: open_responses,
3992
- this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it: this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it
3995
+ this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it: this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it,
3996
+ assign_teacher: assign_teacher
3993
3997
  };
3994
3998
 
3995
3999
  var dashboard$1 = "Dashboard";
@@ -4017,6 +4021,7 @@ var students_by_designation$1 = "Students by Designation";
4017
4021
  var calendar$1 = "Calendar";
4018
4022
  var gender$1 = "Gender";
4019
4023
  var grade$1 = "Grade";
4024
+ var grades$1 = "Grades";
4020
4025
  var current_grade$1 = "Current Grade";
4021
4026
  var student_name$1 = "Student name";
4022
4027
  var teacher_name$1 = "Teacher name";
@@ -5948,6 +5953,7 @@ var all_of_the_students_marked_as_feeling_safe$1 = "All of the students marked a
5948
5953
  var integrations$1 = "Integrations";
5949
5954
  var open_responses$1 = "Open Responses";
5950
5955
  var this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it$1 = "This survey was sent all survey links that were sent will be invalid. Are you sure to delete it";
5956
+ var assign_teacher$1 = "Assign Teacher";
5951
5957
  var lang_uk = {
5952
5958
  dashboard: dashboard$1,
5953
5959
  user: user$1,
@@ -5975,6 +5981,7 @@ var lang_uk = {
5975
5981
  calendar: calendar$1,
5976
5982
  gender: gender$1,
5977
5983
  grade: grade$1,
5984
+ grades: grades$1,
5978
5985
  current_grade: current_grade$1,
5979
5986
  student_name: student_name$1,
5980
5987
  teacher_name: teacher_name$1,
@@ -7941,7 +7948,8 @@ var lang_uk = {
7941
7948
  integrations: integrations$1,
7942
7949
  "this_check_in_will_be_deleted_from_all_databases._are_you_sure_you_want_to_continue?": "This check-in will be deleted from all databases. Are you sure you want to continue?",
7943
7950
  open_responses: open_responses$1,
7944
- this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it: this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it$1
7951
+ this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it: this_survey_was_sent_all_survey_links_that_were_sent_will_be_invalid_are_you_sure_to_delete_it$1,
7952
+ assign_teacher: assign_teacher$1
7945
7953
  };
7946
7954
 
7947
7955
  var dashboard$2 = "لوحة المعلومات";
@@ -39749,212 +39757,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
39749
39757
  })), t("log_out")))));
39750
39758
  };
39751
39759
 
39752
- var apiGetLanguage = function apiGetLanguage() {
39753
- return api.get(BASE_URL + "/api/language");
39754
- };
39755
-
39756
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
39757
- return api.put(BASE_URL + "/api/language?lang=" + lang);
39758
- };
39759
-
39760
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
39761
-
39762
- var useLanguages = function useLanguages() {
39763
- var dispatch = reactRedux.useDispatch();
39764
-
39765
- var _useTranslation = reactI18next.useTranslation(),
39766
- i18n = _useTranslation.i18n;
39767
-
39768
- var language = reactRedux.useSelector(function (state) {
39769
- return state.common.language;
39770
- });
39771
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
39772
-
39773
- var _useState = React.useState([]),
39774
- languageList = _useState[0],
39775
- setLanguageList = _useState[1];
39776
-
39777
- var _useState2 = React.useState(false),
39778
- dropdownOpen = _useState2[0],
39779
- setDropdownOpen = _useState2[1];
39780
-
39781
- var _useState3 = React.useState(defaultLanguage),
39782
- currentLang = _useState3[0],
39783
- setCurrentLang = _useState3[1];
39784
-
39785
- var toggle = function toggle() {
39786
- return setDropdownOpen(function (prevState) {
39787
- return !prevState;
39788
- });
39789
- };
39790
-
39791
- var changeLanguageApp = function changeLanguageApp(lang) {
39792
- try {
39793
- var _temp3 = function _temp3() {
39794
- dispatch(setLoading(false));
39795
- };
39796
-
39797
- dispatch(setLoading(true));
39798
-
39799
- var _temp4 = _catch(function () {
39800
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
39801
- i18n.changeLanguage(lang);
39802
- setCurrentLang(lang);
39803
- dispatch(setLanguage(lang));
39804
- });
39805
- }, function (err) {
39806
- var _err$response, _err$response$data;
39807
-
39808
- dispatch(setAlert({
39809
- type: "danger",
39810
- 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
39811
- }));
39812
- });
39813
-
39814
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
39815
- } catch (e) {
39816
- return Promise.reject(e);
39817
- }
39818
- };
39819
-
39820
- var getListLanguage = function getListLanguage() {
39821
- try {
39822
- var _temp6 = _catch(function () {
39823
- return Promise.resolve(apiGetLanguage()).then(function (res) {
39824
- setLanguageList(res.data);
39825
- });
39826
- }, function (err) {
39827
- var _err$response2, _err$response2$data;
39828
-
39829
- dispatch(setAlert({
39830
- type: "danger",
39831
- 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
39832
- }));
39833
- });
39834
-
39835
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
39836
- } catch (e) {
39837
- return Promise.reject(e);
39838
- }
39839
- };
39840
-
39841
- React.useEffect(function () {
39842
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
39843
- getListLanguage();
39844
- }, []);
39845
- return {
39846
- languageList: languageList,
39847
- toggle: toggle,
39848
- dropdownOpen: dropdownOpen,
39849
- currentLang: currentLang,
39850
- changeLanguageApp: changeLanguageApp,
39851
- setCurrentLang: setCurrentLang
39852
- };
39853
- };
39854
-
39855
- var TheLanguageDropdown = function TheLanguageDropdown() {
39856
- var _useLanguages = useLanguages(),
39857
- languageList = _useLanguages.languageList,
39858
- toggle = _useLanguages.toggle,
39859
- dropdownOpen = _useLanguages.dropdownOpen,
39860
- currentLang = _useLanguages.currentLang,
39861
- changeLanguageApp = _useLanguages.changeLanguageApp;
39862
-
39863
- var currentLanguage = React.useMemo(function () {
39864
- var current = languageList.find(function (i) {
39865
- return i.code === currentLang;
39866
- });
39867
- if (!current) return null;
39868
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
39869
- className: "mr-2 " + styles['dropdown-menu-flag'],
39870
- src: "" + getStaticFileUrl(current.image)
39871
- }), " ", current.name);
39872
- }, [currentLang, languageList]);
39873
- return React__default.createElement(reactstrap.Dropdown, {
39874
- isOpen: dropdownOpen,
39875
- toggle: toggle,
39876
- className: "" + styles["dropdown-menu"]
39877
- }, React__default.createElement(reactstrap.DropdownToggle, {
39878
- className: styles["header-avatar"] + " d-flex align-items-center"
39879
- }, React__default.createElement("span", {
39880
- style: {
39881
- color: "#000",
39882
- textTransform: "capitalize",
39883
- display: 'flex',
39884
- alignItems: 'center'
39885
- }
39886
- }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
39887
- className: "ml-2",
39888
- style: {
39889
- fontSize: '10px'
39890
- }
39891
- }))), React__default.createElement(reactstrap.DropdownMenu, {
39892
- className: styles["dropdown-content-language"]
39893
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
39894
- return React__default.createElement(reactstrap.DropdownItem, {
39895
- key: lang.code,
39896
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
39897
- onClick: function onClick() {
39898
- return changeLanguageApp(lang.code);
39899
- }
39900
- }, React__default.createElement("div", {
39901
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
39902
- }, React__default.createElement("span", {
39903
- className: "mr-2 d-flex hover-opacity"
39904
- }, React__default.createElement("img", {
39905
- style: {
39906
- width: "30px",
39907
- height: "25px",
39908
- borderRadius: "5px"
39909
- },
39910
- src: getStaticFileUrl(lang.image)
39911
- })), lang.name));
39912
- })));
39913
- };
39914
-
39915
- var TheHeader = function TheHeader(_ref) {
39916
- var onToggleModel = _ref.onToggleModel;
39917
- var dispatch = reactRedux.useDispatch();
39918
- var sidebarShow = reactRedux.useSelector(function (state) {
39919
- return state.common.sidebarShow;
39920
- });
39921
-
39922
- var _useTranslation = reactI18next.useTranslation(),
39923
- t = _useTranslation.t;
39924
-
39925
- var toggleSidebarMobile = function toggleSidebarMobile() {
39926
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
39927
- dispatch(setSidebar(val));
39928
- };
39929
-
39930
- var isDistrict = window.location.host.includes("-district");
39931
- return React__default.createElement(react.CHeader, {
39932
- withSubheader: true,
39933
- className: "d-flex align-items-center justify-content-end"
39934
- }, React__default.createElement(react.CToggler, {
39935
- inHeader: true,
39936
- className: "ml-md-3 d-lg-none",
39937
- onClick: toggleSidebarMobile
39938
- }), React__default.createElement(react.CHeaderBrand, {
39939
- className: "mx-auto flex-grow-1 d-lg-none",
39940
- to: "/"
39941
- }, React__default.createElement("img", {
39942
- src: getStaticFileUrl(Images.LOGO_HEADER),
39943
- className: styles["header-logo"]
39944
- })), React__default.createElement(react.CHeaderNav, {
39945
- className: "pr-3"
39946
- }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
39947
- className: "mr-3",
39948
- style: {
39949
- color: '#000'
39950
- },
39951
- href: '/privacy-policy',
39952
- target: "blank"
39953
- }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
39954
- onToggleModel: onToggleModel
39955
- })));
39956
- };
39957
-
39958
39760
  var TITLE$3 = "Not found";
39959
39761
 
39960
39762
  var NotFound = function NotFound() {
@@ -40012,258 +39814,6 @@ var TheContent = function TheContent(_ref) {
40012
39814
 
40013
39815
  var TheContent$1 = React__default.memo(TheContent);
40014
39816
 
40015
- var loadingStyle = {
40016
- minWidth: "100vw",
40017
- minHeight: "100vh",
40018
- position: "fixed",
40019
- top: 0,
40020
- left: 0,
40021
- zIndex: 999999999,
40022
- backgroundColor: "rgba(0, 0, 0, 0.4)",
40023
- display: "flex",
40024
- justifyContent: "center",
40025
- alignItems: "center"
40026
- };
40027
-
40028
- var Loading = function Loading() {
40029
- var isLoading = reactRedux.useSelector(function (state) {
40030
- return state.common.isLoading;
40031
- });
40032
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
40033
- return isLoading ? React__default.createElement("div", {
40034
- style: loadingStyle
40035
- }, React__default.createElement("div", {
40036
- className: "spinner-border text-secondary",
40037
- role: "status"
40038
- }, React__default.createElement("span", {
40039
- className: "sr-only"
40040
- }, "Loading..."))) : null;
40041
- };
40042
-
40043
- var firstCheckToken = function firstCheckToken() {
40044
- return Promise.resolve(_catch(function () {
40045
- var token = getAccessToken();
40046
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
40047
- return tokenStatus.data ? true : false;
40048
- }) : false;
40049
- }, function () {
40050
- return false;
40051
- }));
40052
- };
40053
-
40054
- var canAccess = function canAccess(userRoles, componentRoles) {
40055
- if (!Array.isArray(userRoles)) {
40056
- return false;
40057
- }
40058
-
40059
- if (Array.isArray(componentRoles)) {
40060
- var intersects = userRoles.filter(function (i) {
40061
- return componentRoles.includes(i);
40062
- });
40063
- return intersects.length > 0;
40064
- }
40065
-
40066
- return true;
40067
- };
40068
-
40069
- var ModelSelectRole = function ModelSelectRole(_ref) {
40070
- var _handleUserRole;
40071
-
40072
- var open = _ref.open,
40073
- onToggleModel = _ref.onToggleModel;
40074
- var dispatch = reactRedux.useDispatch();
40075
-
40076
- var _useTranslation = reactI18next.useTranslation(),
40077
- t = _useTranslation.t;
40078
-
40079
- var history = reactRouterDom.useHistory();
40080
- var pathname = window.location.pathname;
40081
- var user = reactRedux.useSelector(function (state) {
40082
- return state.common.user;
40083
- });
40084
- var roles = user === null || user === void 0 ? void 0 : user.roles;
40085
-
40086
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
40087
- dispatch(setLoading(true));
40088
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
40089
- dispatch(setUser(_extends({}, user, {
40090
- roles: roleSelect
40091
- })));
40092
- localStorage.setItem("ROLES", roleSelect.toString());
40093
- onToggleModel();
40094
-
40095
- if (roles.includes("Parent")) {
40096
- history.push("/parent");
40097
- } else if (roles.includes("Admin")) {
40098
- history.push("/admin/home");
40099
- } else {
40100
- pathname !== "/home" ? history.push("/home") : window.location.reload();
40101
- }
40102
- };
40103
-
40104
- return React__default.createElement(reactstrap.Modal, {
40105
- isOpen: open,
40106
- toggle: function toggle() {
40107
- return onToggleModel();
40108
- },
40109
- className: "" + styles["model-switch-roles"],
40110
- centered: true
40111
- }, React__default.createElement("p", {
40112
- className: "" + styles["title"]
40113
- }, 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) {
40114
- return React__default.createElement("p", {
40115
- key: r,
40116
- 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" : ""],
40117
- onClick: function onClick() {
40118
- return handleSelectUserRoles([r]);
40119
- }
40120
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
40121
- })));
40122
- };
40123
-
40124
- var TheLayout = function TheLayout(_ref) {
40125
- var routes = _ref.routes,
40126
- navigation = _ref.navigation;
40127
- var history = reactRouterDom.useHistory();
40128
- var dispatch = reactRedux.useDispatch();
40129
- var user = reactRedux.useSelector(function (state) {
40130
- return state.common.user;
40131
- });
40132
- var language = reactRedux.useSelector(function (state) {
40133
- return state.common.language;
40134
- });
40135
-
40136
- var _useState = React.useState(false),
40137
- openModelSelectRole = _useState[0],
40138
- setOpenModelSelectRole = _useState[1];
40139
-
40140
- var _useTranslation = reactI18next.useTranslation(),
40141
- t = _useTranslation.t;
40142
-
40143
- var location = reactRouterDom.useLocation();
40144
- var isNotification = location.pathname.includes("notifications");
40145
- var isDistrict = window.location.host.includes("-district");
40146
-
40147
- var handleToggleModel = function handleToggleModel() {
40148
- setOpenModelSelectRole(!openModelSelectRole);
40149
- };
40150
-
40151
- var authRoutes = React.useMemo(function () {
40152
- return routes.filter(function (route) {
40153
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
40154
- }).filter(function (route) {
40155
- return !!route.isDistrict === isDistrict;
40156
- });
40157
- }, [user, language]);
40158
- var authNavigations = React.useMemo(function () {
40159
- return navigation.map(function (item) {
40160
- var _item$_children, _item$_children2;
40161
-
40162
- return _extends({}, item, {
40163
- name: t(item.name),
40164
- _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) {
40165
- return _extends({}, x, {
40166
- name: t(x.name)
40167
- });
40168
- }) : undefined
40169
- });
40170
- }).filter(function (nav) {
40171
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
40172
- }).filter(function (nav) {
40173
- return !!nav.isDistrict === isDistrict;
40174
- });
40175
- }, [user, language]);
40176
-
40177
- var getInformationSetting = function getInformationSetting() {
40178
- try {
40179
- var _temp2 = _catch(function () {
40180
- return Promise.resolve(getSchoolSettings()).then(function (res) {
40181
- dispatch(setSandboxMode(res.data.isSandboxMode));
40182
- });
40183
- }, function (err) {
40184
- console.error(err);
40185
- });
40186
-
40187
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
40188
- } catch (e) {
40189
- return Promise.reject(e);
40190
- }
40191
- };
40192
-
40193
- React.useEffect(function () {
40194
- checkAuthentication();
40195
- }, []);
40196
- React.useEffect(function () {
40197
- getInformationSetting();
40198
- }, [location.pathname]);
40199
-
40200
- var checkAuthentication = function checkAuthentication() {
40201
- try {
40202
- var _temp4 = _catch(function () {
40203
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
40204
- tokenStatus ? loadInfo() : resetAuth();
40205
- });
40206
- }, function () {
40207
- resetAuth();
40208
- });
40209
-
40210
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
40211
- } catch (e) {
40212
- return Promise.reject(e);
40213
- }
40214
- };
40215
-
40216
- var loadInfo = function loadInfo() {
40217
- try {
40218
- var _temp6 = _catch(function () {
40219
- return Promise.resolve(getInfo()).then(function (info) {
40220
- var _info$data, _info$data$roles;
40221
-
40222
- 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"))) {
40223
- resetAuth();
40224
- }
40225
-
40226
- dispatch(setUser(info.data));
40227
- });
40228
- }, function () {
40229
- resetAuth();
40230
- });
40231
-
40232
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
40233
- } catch (e) {
40234
- return Promise.reject(e);
40235
- }
40236
- };
40237
-
40238
- var resetAuth = function resetAuth() {
40239
- localStorage.removeItem(ACCESS_TOKEN);
40240
- sessionStorage.removeItem(ACCESS_TOKEN);
40241
- localStorage.removeItem("ROLES");
40242
- history.push("/");
40243
- };
40244
-
40245
- if (!user) {
40246
- return React__default.createElement(Loading, null);
40247
- }
40248
-
40249
- return React__default.createElement("div", {
40250
- className: "c-app c-default-layout"
40251
- }, !isNotification && React__default.createElement(TheSidebar, {
40252
- navigation: authNavigations
40253
- }), React__default.createElement("div", {
40254
- className: "c-wrapper"
40255
- }, !isNotification && React__default.createElement(TheHeader, {
40256
- onToggleModel: handleToggleModel
40257
- }), React__default.createElement("div", {
40258
- className: "c-body bg-white"
40259
- }, React__default.createElement(TheContent$1, {
40260
- routes: authRoutes
40261
- }))), React__default.createElement(ModelSelectRole, {
40262
- open: openModelSelectRole,
40263
- onToggleModel: handleToggleModel
40264
- }));
40265
- };
40266
-
40267
39817
  var buttonTextStyle = {
40268
39818
  fontWeight: 500
40269
39819
  };
@@ -40353,7 +39903,15 @@ var CustomPagination = function CustomPagination(props) {
40353
39903
  options: DEFAULT_PAGE_SIZE_VALUES,
40354
39904
  onChange: function onChange(e) {
40355
39905
  return changePageSize(e.value);
40356
- }
39906
+ },
39907
+ styles: {
39908
+ menu: function menu(base) {
39909
+ return _extends({}, base, {
39910
+ zIndex: 9999
39911
+ });
39912
+ }
39913
+ },
39914
+ menuPosition: 'fixed'
40357
39915
  })), React__default.createElement(reactstrap.PaginationItem, {
40358
39916
  className: "mr-1"
40359
39917
  }, React__default.createElement(reactstrap.PaginationLink, {
@@ -46041,6 +45599,34 @@ var UserDetail = function UserDetail() {
46041
45599
  });
46042
45600
  };
46043
45601
 
45602
+ var loadingStyle = {
45603
+ minWidth: "100vw",
45604
+ minHeight: "100vh",
45605
+ position: "fixed",
45606
+ top: 0,
45607
+ left: 0,
45608
+ zIndex: 999999999,
45609
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
45610
+ display: "flex",
45611
+ justifyContent: "center",
45612
+ alignItems: "center"
45613
+ };
45614
+
45615
+ var Loading = function Loading() {
45616
+ var isLoading = reactRedux.useSelector(function (state) {
45617
+ return state.common.isLoading;
45618
+ });
45619
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
45620
+ return isLoading ? React__default.createElement("div", {
45621
+ style: loadingStyle
45622
+ }, React__default.createElement("div", {
45623
+ className: "spinner-border text-secondary",
45624
+ role: "status"
45625
+ }, React__default.createElement("span", {
45626
+ className: "sr-only"
45627
+ }, "Loading..."))) : null;
45628
+ };
45629
+
46044
45630
  var ScrollToTop = function ScrollToTop() {
46045
45631
  var _useLocation = reactRouterDom.useLocation(),
46046
45632
  pathname = _useLocation.pathname;
@@ -49060,6 +48646,32 @@ var store = toolkit.configureStore({
49060
48646
  }
49061
48647
  });
49062
48648
 
48649
+ var firstCheckToken = function firstCheckToken() {
48650
+ return Promise.resolve(_catch(function () {
48651
+ var token = getAccessToken();
48652
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
48653
+ return tokenStatus.data ? true : false;
48654
+ }) : false;
48655
+ }, function () {
48656
+ return false;
48657
+ }));
48658
+ };
48659
+
48660
+ var canAccess = function canAccess(userRoles, componentRoles) {
48661
+ if (!Array.isArray(userRoles)) {
48662
+ return false;
48663
+ }
48664
+
48665
+ if (Array.isArray(componentRoles)) {
48666
+ var intersects = userRoles.filter(function (i) {
48667
+ return componentRoles.includes(i);
48668
+ });
48669
+ return intersects.length > 0;
48670
+ }
48671
+
48672
+ return true;
48673
+ };
48674
+
49063
48675
  var isInViewport = function isInViewport(el) {
49064
48676
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
49065
48677
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -49095,6 +48707,412 @@ var generateRandomString = (function () {
49095
48707
 
49096
48708
  var amplitudeClient = amplitude.getInstance();
49097
48709
 
48710
+ var apiGetLanguage = function apiGetLanguage() {
48711
+ return api.get(BASE_URL + "/api/language");
48712
+ };
48713
+
48714
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
48715
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
48716
+ };
48717
+
48718
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
48719
+
48720
+ var useLanguages = function useLanguages() {
48721
+ var dispatch = reactRedux.useDispatch();
48722
+
48723
+ var _useTranslation = reactI18next.useTranslation(),
48724
+ i18n = _useTranslation.i18n;
48725
+
48726
+ var language = reactRedux.useSelector(function (state) {
48727
+ return state.common.language;
48728
+ });
48729
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
48730
+
48731
+ var _useState = React.useState([]),
48732
+ languageList = _useState[0],
48733
+ setLanguageList = _useState[1];
48734
+
48735
+ var _useState2 = React.useState(false),
48736
+ dropdownOpen = _useState2[0],
48737
+ setDropdownOpen = _useState2[1];
48738
+
48739
+ var _useState3 = React.useState(defaultLanguage),
48740
+ currentLang = _useState3[0],
48741
+ setCurrentLang = _useState3[1];
48742
+
48743
+ var toggle = function toggle() {
48744
+ return setDropdownOpen(function (prevState) {
48745
+ return !prevState;
48746
+ });
48747
+ };
48748
+
48749
+ var changeLanguageApp = function changeLanguageApp(lang) {
48750
+ try {
48751
+ var _temp3 = function _temp3() {
48752
+ dispatch(setLoading(false));
48753
+ };
48754
+
48755
+ dispatch(setLoading(true));
48756
+
48757
+ var _temp4 = _catch(function () {
48758
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
48759
+ i18n.changeLanguage(lang);
48760
+ setCurrentLang(lang);
48761
+ dispatch(setLanguage(lang));
48762
+ });
48763
+ }, function (err) {
48764
+ var _err$response, _err$response$data;
48765
+
48766
+ dispatch(setAlert({
48767
+ type: "danger",
48768
+ 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
48769
+ }));
48770
+ });
48771
+
48772
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
48773
+ } catch (e) {
48774
+ return Promise.reject(e);
48775
+ }
48776
+ };
48777
+
48778
+ var getListLanguage = function getListLanguage() {
48779
+ try {
48780
+ var _temp6 = _catch(function () {
48781
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
48782
+ setLanguageList(res.data);
48783
+ });
48784
+ }, function (err) {
48785
+ var _err$response2, _err$response2$data;
48786
+
48787
+ dispatch(setAlert({
48788
+ type: "danger",
48789
+ 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
48790
+ }));
48791
+ });
48792
+
48793
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
48794
+ } catch (e) {
48795
+ return Promise.reject(e);
48796
+ }
48797
+ };
48798
+
48799
+ React.useEffect(function () {
48800
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
48801
+ getListLanguage();
48802
+ }, []);
48803
+ return {
48804
+ languageList: languageList,
48805
+ toggle: toggle,
48806
+ dropdownOpen: dropdownOpen,
48807
+ currentLang: currentLang,
48808
+ changeLanguageApp: changeLanguageApp,
48809
+ setCurrentLang: setCurrentLang
48810
+ };
48811
+ };
48812
+
48813
+ var TheLanguageDropdown = function TheLanguageDropdown() {
48814
+ var _useLanguages = useLanguages(),
48815
+ languageList = _useLanguages.languageList,
48816
+ toggle = _useLanguages.toggle,
48817
+ dropdownOpen = _useLanguages.dropdownOpen,
48818
+ currentLang = _useLanguages.currentLang,
48819
+ changeLanguageApp = _useLanguages.changeLanguageApp;
48820
+
48821
+ var currentLanguage = React.useMemo(function () {
48822
+ var current = languageList.find(function (i) {
48823
+ return i.code === currentLang;
48824
+ });
48825
+ if (!current) return null;
48826
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
48827
+ className: "mr-2 " + styles['dropdown-menu-flag'],
48828
+ src: "" + getStaticFileUrl(current.image)
48829
+ }), " ", current.name);
48830
+ }, [currentLang, languageList]);
48831
+ return React__default.createElement(reactstrap.Dropdown, {
48832
+ isOpen: dropdownOpen,
48833
+ toggle: toggle,
48834
+ className: "" + styles["dropdown-menu"]
48835
+ }, React__default.createElement(reactstrap.DropdownToggle, {
48836
+ className: styles["header-avatar"] + " d-flex align-items-center"
48837
+ }, React__default.createElement("span", {
48838
+ style: {
48839
+ color: "#000",
48840
+ textTransform: "capitalize",
48841
+ display: 'flex',
48842
+ alignItems: 'center'
48843
+ }
48844
+ }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
48845
+ className: "ml-2",
48846
+ style: {
48847
+ fontSize: '10px'
48848
+ }
48849
+ }))), React__default.createElement(reactstrap.DropdownMenu, {
48850
+ className: styles["dropdown-content-language"]
48851
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
48852
+ return React__default.createElement(reactstrap.DropdownItem, {
48853
+ key: lang.code,
48854
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
48855
+ onClick: function onClick() {
48856
+ return changeLanguageApp(lang.code);
48857
+ }
48858
+ }, React__default.createElement("div", {
48859
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
48860
+ }, React__default.createElement("span", {
48861
+ className: "mr-2 d-flex hover-opacity"
48862
+ }, React__default.createElement("img", {
48863
+ style: {
48864
+ width: "30px",
48865
+ height: "25px",
48866
+ borderRadius: "5px"
48867
+ },
48868
+ src: getStaticFileUrl(lang.image)
48869
+ })), lang.name));
48870
+ })));
48871
+ };
48872
+
48873
+ var TheHeader = function TheHeader(_ref) {
48874
+ var onToggleModel = _ref.onToggleModel;
48875
+ var dispatch = reactRedux.useDispatch();
48876
+ var sidebarShow = reactRedux.useSelector(function (state) {
48877
+ return state.common.sidebarShow;
48878
+ });
48879
+
48880
+ var _useTranslation = reactI18next.useTranslation(),
48881
+ t = _useTranslation.t;
48882
+
48883
+ var toggleSidebarMobile = function toggleSidebarMobile() {
48884
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
48885
+ dispatch(setSidebar(val));
48886
+ };
48887
+
48888
+ var isDistrict = window.location.host.includes("-district");
48889
+ return React__default.createElement(react.CHeader, {
48890
+ withSubheader: true,
48891
+ className: "d-flex align-items-center justify-content-end"
48892
+ }, React__default.createElement(react.CToggler, {
48893
+ inHeader: true,
48894
+ className: "ml-md-3 d-lg-none",
48895
+ onClick: toggleSidebarMobile
48896
+ }), React__default.createElement(react.CHeaderBrand, {
48897
+ className: "mx-auto flex-grow-1 d-lg-none",
48898
+ to: "/"
48899
+ }, React__default.createElement("img", {
48900
+ src: getStaticFileUrl(Images.LOGO_HEADER),
48901
+ className: styles["header-logo"]
48902
+ })), React__default.createElement(react.CHeaderNav, {
48903
+ className: "pr-3"
48904
+ }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
48905
+ className: "mr-3",
48906
+ style: {
48907
+ color: '#000'
48908
+ },
48909
+ href: '/privacy-policy',
48910
+ target: "blank"
48911
+ }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
48912
+ onToggleModel: onToggleModel
48913
+ })));
48914
+ };
48915
+
48916
+ var ModelSelectRole = function ModelSelectRole(_ref) {
48917
+ var _handleUserRole;
48918
+
48919
+ var open = _ref.open,
48920
+ onToggleModel = _ref.onToggleModel;
48921
+ var dispatch = reactRedux.useDispatch();
48922
+
48923
+ var _useTranslation = reactI18next.useTranslation(),
48924
+ t = _useTranslation.t;
48925
+
48926
+ var history = reactRouterDom.useHistory();
48927
+ var pathname = window.location.pathname;
48928
+ var user = reactRedux.useSelector(function (state) {
48929
+ return state.common.user;
48930
+ });
48931
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
48932
+
48933
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
48934
+ dispatch(setLoading(true));
48935
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
48936
+ dispatch(setUser(_extends({}, user, {
48937
+ roles: roleSelect
48938
+ })));
48939
+ localStorage.setItem("ROLES", roleSelect.toString());
48940
+ onToggleModel();
48941
+
48942
+ if (roles.includes("Parent")) {
48943
+ history.push("/parent");
48944
+ } else if (roles.includes("Admin")) {
48945
+ history.push("/admin/home");
48946
+ } else {
48947
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
48948
+ }
48949
+ };
48950
+
48951
+ return React__default.createElement(reactstrap.Modal, {
48952
+ isOpen: open,
48953
+ toggle: function toggle() {
48954
+ return onToggleModel();
48955
+ },
48956
+ className: "" + styles["model-switch-roles"],
48957
+ centered: true
48958
+ }, React__default.createElement("p", {
48959
+ className: "" + styles["title"]
48960
+ }, 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) {
48961
+ return React__default.createElement("p", {
48962
+ key: r,
48963
+ 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" : ""],
48964
+ onClick: function onClick() {
48965
+ return handleSelectUserRoles([r]);
48966
+ }
48967
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
48968
+ })));
48969
+ };
48970
+
48971
+ var TheLayout = function TheLayout(_ref) {
48972
+ var routes = _ref.routes,
48973
+ navigation = _ref.navigation;
48974
+ var history = reactRouterDom.useHistory();
48975
+ var dispatch = reactRedux.useDispatch();
48976
+ var user = reactRedux.useSelector(function (state) {
48977
+ return state.common.user;
48978
+ });
48979
+ var language = reactRedux.useSelector(function (state) {
48980
+ return state.common.language;
48981
+ });
48982
+
48983
+ var _useState = React.useState(false),
48984
+ openModelSelectRole = _useState[0],
48985
+ setOpenModelSelectRole = _useState[1];
48986
+
48987
+ var _useTranslation = reactI18next.useTranslation(),
48988
+ t = _useTranslation.t;
48989
+
48990
+ var location = reactRouterDom.useLocation();
48991
+ var isNotification = location.pathname.includes("notifications");
48992
+ var isDistrict = window.location.host.includes("-district");
48993
+
48994
+ var handleToggleModel = function handleToggleModel() {
48995
+ setOpenModelSelectRole(!openModelSelectRole);
48996
+ };
48997
+
48998
+ var authRoutes = React.useMemo(function () {
48999
+ return routes.filter(function (route) {
49000
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
49001
+ }).filter(function (route) {
49002
+ return !!route.isDistrict === isDistrict;
49003
+ });
49004
+ }, [user, language]);
49005
+ var authNavigations = React.useMemo(function () {
49006
+ return navigation.map(function (item) {
49007
+ var _item$_children, _item$_children2;
49008
+
49009
+ return _extends({}, item, {
49010
+ name: t(item.name),
49011
+ _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) {
49012
+ return _extends({}, x, {
49013
+ name: t(x.name)
49014
+ });
49015
+ }) : undefined
49016
+ });
49017
+ }).filter(function (nav) {
49018
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
49019
+ }).filter(function (nav) {
49020
+ return !!nav.isDistrict === isDistrict;
49021
+ });
49022
+ }, [user, language]);
49023
+
49024
+ var getInformationSetting = function getInformationSetting() {
49025
+ try {
49026
+ var _temp2 = _catch(function () {
49027
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
49028
+ dispatch(setSandboxMode(res.data.isSandboxMode));
49029
+ });
49030
+ }, function (err) {
49031
+ console.error(err);
49032
+ });
49033
+
49034
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
49035
+ } catch (e) {
49036
+ return Promise.reject(e);
49037
+ }
49038
+ };
49039
+
49040
+ React.useEffect(function () {
49041
+ checkAuthentication();
49042
+ }, []);
49043
+ React.useEffect(function () {
49044
+ getInformationSetting();
49045
+ }, [location.pathname]);
49046
+
49047
+ var checkAuthentication = function checkAuthentication() {
49048
+ try {
49049
+ var _temp4 = _catch(function () {
49050
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
49051
+ tokenStatus ? loadInfo() : resetAuth();
49052
+ });
49053
+ }, function () {
49054
+ resetAuth();
49055
+ });
49056
+
49057
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
49058
+ } catch (e) {
49059
+ return Promise.reject(e);
49060
+ }
49061
+ };
49062
+
49063
+ var loadInfo = function loadInfo() {
49064
+ try {
49065
+ var _temp6 = _catch(function () {
49066
+ return Promise.resolve(getInfo()).then(function (info) {
49067
+ var _info$data, _info$data$roles;
49068
+
49069
+ 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"))) {
49070
+ resetAuth();
49071
+ }
49072
+
49073
+ dispatch(setUser(info.data));
49074
+ });
49075
+ }, function () {
49076
+ resetAuth();
49077
+ });
49078
+
49079
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
49080
+ } catch (e) {
49081
+ return Promise.reject(e);
49082
+ }
49083
+ };
49084
+
49085
+ var resetAuth = function resetAuth() {
49086
+ localStorage.removeItem(ACCESS_TOKEN);
49087
+ sessionStorage.removeItem(ACCESS_TOKEN);
49088
+ localStorage.removeItem("ROLES");
49089
+ history.push("/");
49090
+ };
49091
+
49092
+ if (!user) {
49093
+ return React__default.createElement(Loading, null);
49094
+ }
49095
+
49096
+ return React__default.createElement("div", {
49097
+ className: "c-app c-default-layout"
49098
+ }, !isNotification && React__default.createElement(TheSidebar, {
49099
+ navigation: authNavigations
49100
+ }), React__default.createElement("div", {
49101
+ className: "c-wrapper"
49102
+ }, !isNotification && React__default.createElement(TheHeader, {
49103
+ onToggleModel: handleToggleModel
49104
+ }), React__default.createElement("div", {
49105
+ className: "c-body bg-white"
49106
+ }, React__default.createElement(TheContent$1, {
49107
+ routes: authRoutes
49108
+ }))), React__default.createElement(ModelSelectRole, {
49109
+ open: openModelSelectRole,
49110
+ onToggleModel: handleToggleModel
49111
+ }));
49112
+ };
49113
+
49114
+ var amplitudeClient$1 = amplitude.getInstance();
49115
+
49098
49116
  Object.defineProperty(exports, 'I18nextProvider', {
49099
49117
  enumerable: true,
49100
49118
  get: function () {
@@ -49182,7 +49200,7 @@ exports.UserContainer = UserContainer;
49182
49200
  exports.UserDetail = UserDetail;
49183
49201
  exports.UserList = UserList;
49184
49202
  exports.addTab = addTab;
49185
- exports.amplitudeClient = amplitudeClient;
49203
+ exports.amplitudeClient = amplitudeClient$1;
49186
49204
  exports.answerQuestion = answerQuestion;
49187
49205
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
49188
49206
  exports.api = api;