mario-core 2.9.326-release → 2.9.327-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
@@ -1787,6 +1787,7 @@ var assign_bulk = "Assign Bulk";
1787
1787
  var assign_bulk_student = "Assign Bulk Student";
1788
1788
  var instruction = "Instruction";
1789
1789
  var name_is_required = "Name is required";
1790
+ var title_is_required = "Title is required";
1790
1791
  var instruction_is_required = "Instruction is required";
1791
1792
  var add_item = "Add item";
1792
1793
  var conference_rubric_items_is_empty = "Conference rubric items is empty";
@@ -3763,6 +3764,7 @@ var lang_us = {
3763
3764
  assign_bulk_student: assign_bulk_student,
3764
3765
  instruction: instruction,
3765
3766
  name_is_required: name_is_required,
3767
+ title_is_required: title_is_required,
3766
3768
  instruction_is_required: instruction_is_required,
3767
3769
  add_item: add_item,
3768
3770
  conference_rubric_items_is_empty: conference_rubric_items_is_empty,
@@ -5746,6 +5748,7 @@ var assign_bulk$1 = "Assign Bulk";
5746
5748
  var assign_bulk_student$1 = "Assign Bulk Student";
5747
5749
  var instruction$1 = "Instruction";
5748
5750
  var name_is_required$1 = "Name is required";
5751
+ var title_is_required$1 = "Title is required";
5749
5752
  var instruction_is_required$1 = "Instruction is required";
5750
5753
  var add_item$1 = "Add item";
5751
5754
  var conference_rubric_items_is_empty$1 = "Conference rubric items is empty";
@@ -7722,6 +7725,7 @@ var lang_uk = {
7722
7725
  assign_bulk_student: assign_bulk_student$1,
7723
7726
  instruction: instruction$1,
7724
7727
  name_is_required: name_is_required$1,
7728
+ title_is_required: title_is_required$1,
7725
7729
  instruction_is_required: instruction_is_required$1,
7726
7730
  add_item: add_item$1,
7727
7731
  conference_rubric_items_is_empty: conference_rubric_items_is_empty$1,
@@ -9701,6 +9705,7 @@ var assign_bulk$2 = "تعيين بالجملة";
9701
9705
  var assign_bulk_student$2 = "تعيين الطلبة بالجملة";
9702
9706
  var instruction$2 = "تعليمات";
9703
9707
  var name_is_required$2 = "الاسم مطلوب";
9708
+ var title_is_required$2 = "العنوان مطلوب";
9704
9709
  var instruction_is_required$2 = "التعليمات مطلوبة";
9705
9710
  var add_item$2 = "إضافة عنصر";
9706
9711
  var conference_rubric_items_is_empty$2 = "عناصر نموذج تقييم اللقاء فارغة";
@@ -11710,6 +11715,7 @@ var lang_ar = {
11710
11715
  assign_bulk_student: assign_bulk_student$2,
11711
11716
  instruction: instruction$2,
11712
11717
  name_is_required: name_is_required$2,
11718
+ title_is_required: title_is_required$2,
11713
11719
  instruction_is_required: instruction_is_required$2,
11714
11720
  add_item: add_item$2,
11715
11721
  conference_rubric_items_is_empty: conference_rubric_items_is_empty$2,
@@ -13727,6 +13733,7 @@ var assign_bulk$3 = "Asignar a granel";
13727
13733
  var assign_bulk_student$3 = "Asignar a granel Alumno";
13728
13734
  var instruction$3 = "Instrucción";
13729
13735
  var name_is_required$3 = "Nombre es requerido";
13736
+ var title_is_required$3 = "El título es requerido";
13730
13737
  var instruction_is_required$3 = "Instrucción es requerida";
13731
13738
  var add_item$3 = "Agregar ítem";
13732
13739
  var conference_rubric_items_is_empty$3 = "Elementos de rúbrica de conferencia está vacío";
@@ -15736,6 +15743,7 @@ var lang_es = {
15736
15743
  assign_bulk_student: assign_bulk_student$3,
15737
15744
  instruction: instruction$3,
15738
15745
  name_is_required: name_is_required$3,
15746
+ title_is_required: title_is_required$3,
15739
15747
  instruction_is_required: instruction_is_required$3,
15740
15748
  add_item: add_item$3,
15741
15749
  conference_rubric_items_is_empty: conference_rubric_items_is_empty$3,
@@ -17753,6 +17761,7 @@ var assign_bulk$4 = "批量分配";
17753
17761
  var assign_bulk_student$4 = "批量分配学生";
17754
17762
  var instruction$4 = "说明";
17755
17763
  var name_is_required$4 = "姓名为必填项";
17764
+ var title_is_required$4 = "标题为必填项";
17756
17765
  var instruction_is_required$4 = "说明为必填项";
17757
17766
  var add_item$4 = "添加项目";
17758
17767
  var conference_rubric_items_is_empty$4 = "会议评分标准项目为空";
@@ -19762,6 +19771,7 @@ var lang_zh = {
19762
19771
  assign_bulk_student: assign_bulk_student$4,
19763
19772
  instruction: instruction$4,
19764
19773
  name_is_required: name_is_required$4,
19774
+ title_is_required: title_is_required$4,
19765
19775
  instruction_is_required: instruction_is_required$4,
19766
19776
  add_item: add_item$4,
19767
19777
  conference_rubric_items_is_empty: conference_rubric_items_is_empty$4,
@@ -39768,212 +39778,6 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
39768
39778
  })), t("log_out")))));
39769
39779
  };
39770
39780
 
39771
- var apiGetLanguage = function apiGetLanguage() {
39772
- return api.get(BASE_URL + "/api/language");
39773
- };
39774
-
39775
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
39776
- return api.put(BASE_URL + "/api/language?lang=" + lang);
39777
- };
39778
-
39779
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
39780
-
39781
- var useLanguages = function useLanguages() {
39782
- var dispatch = reactRedux.useDispatch();
39783
-
39784
- var _useTranslation = reactI18next.useTranslation(),
39785
- i18n = _useTranslation.i18n;
39786
-
39787
- var language = reactRedux.useSelector(function (state) {
39788
- return state.common.language;
39789
- });
39790
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
39791
-
39792
- var _useState = React.useState([]),
39793
- languageList = _useState[0],
39794
- setLanguageList = _useState[1];
39795
-
39796
- var _useState2 = React.useState(false),
39797
- dropdownOpen = _useState2[0],
39798
- setDropdownOpen = _useState2[1];
39799
-
39800
- var _useState3 = React.useState(defaultLanguage),
39801
- currentLang = _useState3[0],
39802
- setCurrentLang = _useState3[1];
39803
-
39804
- var toggle = function toggle() {
39805
- return setDropdownOpen(function (prevState) {
39806
- return !prevState;
39807
- });
39808
- };
39809
-
39810
- var changeLanguageApp = function changeLanguageApp(lang) {
39811
- try {
39812
- var _temp3 = function _temp3() {
39813
- dispatch(setLoading(false));
39814
- };
39815
-
39816
- dispatch(setLoading(true));
39817
-
39818
- var _temp4 = _catch(function () {
39819
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
39820
- i18n.changeLanguage(lang);
39821
- setCurrentLang(lang);
39822
- dispatch(setLanguage(lang));
39823
- });
39824
- }, function (err) {
39825
- var _err$response, _err$response$data;
39826
-
39827
- dispatch(setAlert({
39828
- type: "danger",
39829
- 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
39830
- }));
39831
- });
39832
-
39833
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
39834
- } catch (e) {
39835
- return Promise.reject(e);
39836
- }
39837
- };
39838
-
39839
- var getListLanguage = function getListLanguage() {
39840
- try {
39841
- var _temp6 = _catch(function () {
39842
- return Promise.resolve(apiGetLanguage()).then(function (res) {
39843
- setLanguageList(res.data);
39844
- });
39845
- }, function (err) {
39846
- var _err$response2, _err$response2$data;
39847
-
39848
- dispatch(setAlert({
39849
- type: "danger",
39850
- 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
39851
- }));
39852
- });
39853
-
39854
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
39855
- } catch (e) {
39856
- return Promise.reject(e);
39857
- }
39858
- };
39859
-
39860
- React.useEffect(function () {
39861
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
39862
- getListLanguage();
39863
- }, []);
39864
- return {
39865
- languageList: languageList,
39866
- toggle: toggle,
39867
- dropdownOpen: dropdownOpen,
39868
- currentLang: currentLang,
39869
- changeLanguageApp: changeLanguageApp,
39870
- setCurrentLang: setCurrentLang
39871
- };
39872
- };
39873
-
39874
- var TheLanguageDropdown = function TheLanguageDropdown() {
39875
- var _useLanguages = useLanguages(),
39876
- languageList = _useLanguages.languageList,
39877
- toggle = _useLanguages.toggle,
39878
- dropdownOpen = _useLanguages.dropdownOpen,
39879
- currentLang = _useLanguages.currentLang,
39880
- changeLanguageApp = _useLanguages.changeLanguageApp;
39881
-
39882
- var currentLanguage = React.useMemo(function () {
39883
- var current = languageList.find(function (i) {
39884
- return i.code === currentLang;
39885
- });
39886
- if (!current) return null;
39887
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
39888
- className: "mr-2 " + styles['dropdown-menu-flag'],
39889
- src: "" + getStaticFileUrl(current.image)
39890
- }), " ", current.name);
39891
- }, [currentLang, languageList]);
39892
- return React__default.createElement(reactstrap.Dropdown, {
39893
- isOpen: dropdownOpen,
39894
- toggle: toggle,
39895
- className: "" + styles["dropdown-menu"]
39896
- }, React__default.createElement(reactstrap.DropdownToggle, {
39897
- className: styles["header-avatar"] + " d-flex align-items-center"
39898
- }, React__default.createElement("span", {
39899
- style: {
39900
- color: "#000",
39901
- textTransform: "capitalize",
39902
- display: 'flex',
39903
- alignItems: 'center'
39904
- }
39905
- }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
39906
- className: "ml-2",
39907
- style: {
39908
- fontSize: '10px'
39909
- }
39910
- }))), React__default.createElement(reactstrap.DropdownMenu, {
39911
- className: styles["dropdown-content-language"]
39912
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
39913
- return React__default.createElement(reactstrap.DropdownItem, {
39914
- key: lang.code,
39915
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
39916
- onClick: function onClick() {
39917
- return changeLanguageApp(lang.code);
39918
- }
39919
- }, React__default.createElement("div", {
39920
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
39921
- }, React__default.createElement("span", {
39922
- className: "mr-2 d-flex hover-opacity"
39923
- }, React__default.createElement("img", {
39924
- style: {
39925
- width: "30px",
39926
- height: "25px",
39927
- borderRadius: "5px"
39928
- },
39929
- src: getStaticFileUrl(lang.image)
39930
- })), lang.name));
39931
- })));
39932
- };
39933
-
39934
- var TheHeader = function TheHeader(_ref) {
39935
- var onToggleModel = _ref.onToggleModel;
39936
- var dispatch = reactRedux.useDispatch();
39937
- var sidebarShow = reactRedux.useSelector(function (state) {
39938
- return state.common.sidebarShow;
39939
- });
39940
-
39941
- var _useTranslation = reactI18next.useTranslation(),
39942
- t = _useTranslation.t;
39943
-
39944
- var toggleSidebarMobile = function toggleSidebarMobile() {
39945
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
39946
- dispatch(setSidebar(val));
39947
- };
39948
-
39949
- var isDistrict = window.location.host.includes("-district");
39950
- return React__default.createElement(react.CHeader, {
39951
- withSubheader: true,
39952
- className: "d-flex align-items-center justify-content-end"
39953
- }, React__default.createElement(react.CToggler, {
39954
- inHeader: true,
39955
- className: "ml-md-3 d-lg-none",
39956
- onClick: toggleSidebarMobile
39957
- }), React__default.createElement(react.CHeaderBrand, {
39958
- className: "mx-auto flex-grow-1 d-lg-none",
39959
- to: "/"
39960
- }, React__default.createElement("img", {
39961
- src: getStaticFileUrl(Images.LOGO_HEADER),
39962
- className: styles["header-logo"]
39963
- })), React__default.createElement(react.CHeaderNav, {
39964
- className: "pr-3"
39965
- }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
39966
- className: "mr-3",
39967
- style: {
39968
- color: '#000'
39969
- },
39970
- href: '/privacy-policy',
39971
- target: "blank"
39972
- }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
39973
- onToggleModel: onToggleModel
39974
- })));
39975
- };
39976
-
39977
39781
  var TITLE$3 = "Not found";
39978
39782
 
39979
39783
  var NotFound = function NotFound() {
@@ -40031,258 +39835,6 @@ var TheContent = function TheContent(_ref) {
40031
39835
 
40032
39836
  var TheContent$1 = React__default.memo(TheContent);
40033
39837
 
40034
- var loadingStyle = {
40035
- minWidth: "100vw",
40036
- minHeight: "100vh",
40037
- position: "fixed",
40038
- top: 0,
40039
- left: 0,
40040
- zIndex: 999999999,
40041
- backgroundColor: "rgba(0, 0, 0, 0.4)",
40042
- display: "flex",
40043
- justifyContent: "center",
40044
- alignItems: "center"
40045
- };
40046
-
40047
- var Loading = function Loading() {
40048
- var isLoading = reactRedux.useSelector(function (state) {
40049
- return state.common.isLoading;
40050
- });
40051
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
40052
- return isLoading ? React__default.createElement("div", {
40053
- style: loadingStyle
40054
- }, React__default.createElement("div", {
40055
- className: "spinner-border text-secondary",
40056
- role: "status"
40057
- }, React__default.createElement("span", {
40058
- className: "sr-only"
40059
- }, "Loading..."))) : null;
40060
- };
40061
-
40062
- var firstCheckToken = function firstCheckToken() {
40063
- return Promise.resolve(_catch(function () {
40064
- var token = getAccessToken();
40065
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
40066
- return tokenStatus.data ? true : false;
40067
- }) : false;
40068
- }, function () {
40069
- return false;
40070
- }));
40071
- };
40072
-
40073
- var canAccess = function canAccess(userRoles, componentRoles) {
40074
- if (!Array.isArray(userRoles)) {
40075
- return false;
40076
- }
40077
-
40078
- if (Array.isArray(componentRoles)) {
40079
- var intersects = userRoles.filter(function (i) {
40080
- return componentRoles.includes(i);
40081
- });
40082
- return intersects.length > 0;
40083
- }
40084
-
40085
- return true;
40086
- };
40087
-
40088
- var ModelSelectRole = function ModelSelectRole(_ref) {
40089
- var _handleUserRole;
40090
-
40091
- var open = _ref.open,
40092
- onToggleModel = _ref.onToggleModel;
40093
- var dispatch = reactRedux.useDispatch();
40094
-
40095
- var _useTranslation = reactI18next.useTranslation(),
40096
- t = _useTranslation.t;
40097
-
40098
- var history = reactRouterDom.useHistory();
40099
- var pathname = window.location.pathname;
40100
- var user = reactRedux.useSelector(function (state) {
40101
- return state.common.user;
40102
- });
40103
- var roles = user === null || user === void 0 ? void 0 : user.roles;
40104
-
40105
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
40106
- dispatch(setLoading(true));
40107
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
40108
- dispatch(setUser(_extends({}, user, {
40109
- roles: roleSelect
40110
- })));
40111
- localStorage.setItem("ROLES", roleSelect.toString());
40112
- onToggleModel();
40113
-
40114
- if (roles.includes("Parent")) {
40115
- history.push("/parent");
40116
- } else if (roles.includes("Admin")) {
40117
- history.push("/admin/home");
40118
- } else {
40119
- pathname !== "/home" ? history.push("/home") : window.location.reload();
40120
- }
40121
- };
40122
-
40123
- return React__default.createElement(reactstrap.Modal, {
40124
- isOpen: open,
40125
- toggle: function toggle() {
40126
- return onToggleModel();
40127
- },
40128
- className: "" + styles["model-switch-roles"],
40129
- centered: true
40130
- }, React__default.createElement("p", {
40131
- className: "" + styles["title"]
40132
- }, 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) {
40133
- return React__default.createElement("p", {
40134
- key: r,
40135
- 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" : ""],
40136
- onClick: function onClick() {
40137
- return handleSelectUserRoles([r]);
40138
- }
40139
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
40140
- })));
40141
- };
40142
-
40143
- var TheLayout = function TheLayout(_ref) {
40144
- var routes = _ref.routes,
40145
- navigation = _ref.navigation;
40146
- var history = reactRouterDom.useHistory();
40147
- var dispatch = reactRedux.useDispatch();
40148
- var user = reactRedux.useSelector(function (state) {
40149
- return state.common.user;
40150
- });
40151
- var language = reactRedux.useSelector(function (state) {
40152
- return state.common.language;
40153
- });
40154
-
40155
- var _useState = React.useState(false),
40156
- openModelSelectRole = _useState[0],
40157
- setOpenModelSelectRole = _useState[1];
40158
-
40159
- var _useTranslation = reactI18next.useTranslation(),
40160
- t = _useTranslation.t;
40161
-
40162
- var location = reactRouterDom.useLocation();
40163
- var isNotification = location.pathname.includes("notifications");
40164
- var isDistrict = window.location.host.includes("-district");
40165
-
40166
- var handleToggleModel = function handleToggleModel() {
40167
- setOpenModelSelectRole(!openModelSelectRole);
40168
- };
40169
-
40170
- var authRoutes = React.useMemo(function () {
40171
- return routes.filter(function (route) {
40172
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
40173
- }).filter(function (route) {
40174
- return !!route.isDistrict === isDistrict;
40175
- });
40176
- }, [user, language]);
40177
- var authNavigations = React.useMemo(function () {
40178
- return navigation.map(function (item) {
40179
- var _item$_children, _item$_children2;
40180
-
40181
- return _extends({}, item, {
40182
- name: t(item.name),
40183
- _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) {
40184
- return _extends({}, x, {
40185
- name: t(x.name)
40186
- });
40187
- }) : undefined
40188
- });
40189
- }).filter(function (nav) {
40190
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
40191
- }).filter(function (nav) {
40192
- return !!nav.isDistrict === isDistrict;
40193
- });
40194
- }, [user, language]);
40195
-
40196
- var getInformationSetting = function getInformationSetting() {
40197
- try {
40198
- var _temp2 = _catch(function () {
40199
- return Promise.resolve(getSchoolSettings()).then(function (res) {
40200
- dispatch(setSandboxMode(res.data.isSandboxMode));
40201
- });
40202
- }, function (err) {
40203
- console.error(err);
40204
- });
40205
-
40206
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
40207
- } catch (e) {
40208
- return Promise.reject(e);
40209
- }
40210
- };
40211
-
40212
- React.useEffect(function () {
40213
- checkAuthentication();
40214
- }, []);
40215
- React.useEffect(function () {
40216
- getInformationSetting();
40217
- }, [location.pathname]);
40218
-
40219
- var checkAuthentication = function checkAuthentication() {
40220
- try {
40221
- var _temp4 = _catch(function () {
40222
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
40223
- tokenStatus ? loadInfo() : resetAuth();
40224
- });
40225
- }, function () {
40226
- resetAuth();
40227
- });
40228
-
40229
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
40230
- } catch (e) {
40231
- return Promise.reject(e);
40232
- }
40233
- };
40234
-
40235
- var loadInfo = function loadInfo() {
40236
- try {
40237
- var _temp6 = _catch(function () {
40238
- return Promise.resolve(getInfo()).then(function (info) {
40239
- var _info$data, _info$data$roles;
40240
-
40241
- 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"))) {
40242
- resetAuth();
40243
- }
40244
-
40245
- dispatch(setUser(info.data));
40246
- });
40247
- }, function () {
40248
- resetAuth();
40249
- });
40250
-
40251
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
40252
- } catch (e) {
40253
- return Promise.reject(e);
40254
- }
40255
- };
40256
-
40257
- var resetAuth = function resetAuth() {
40258
- localStorage.removeItem(ACCESS_TOKEN);
40259
- sessionStorage.removeItem(ACCESS_TOKEN);
40260
- localStorage.removeItem("ROLES");
40261
- history.push("/");
40262
- };
40263
-
40264
- if (!user) {
40265
- return React__default.createElement(Loading, null);
40266
- }
40267
-
40268
- return React__default.createElement("div", {
40269
- className: "c-app c-default-layout"
40270
- }, !isNotification && React__default.createElement(TheSidebar, {
40271
- navigation: authNavigations
40272
- }), React__default.createElement("div", {
40273
- className: "c-wrapper"
40274
- }, !isNotification && React__default.createElement(TheHeader, {
40275
- onToggleModel: handleToggleModel
40276
- }), React__default.createElement("div", {
40277
- className: "c-body bg-white"
40278
- }, React__default.createElement(TheContent$1, {
40279
- routes: authRoutes
40280
- }))), React__default.createElement(ModelSelectRole, {
40281
- open: openModelSelectRole,
40282
- onToggleModel: handleToggleModel
40283
- }));
40284
- };
40285
-
40286
39838
  var buttonTextStyle = {
40287
39839
  fontWeight: 500
40288
39840
  };
@@ -46095,6 +45647,34 @@ var UserDetail = function UserDetail() {
46095
45647
  });
46096
45648
  };
46097
45649
 
45650
+ var loadingStyle = {
45651
+ minWidth: "100vw",
45652
+ minHeight: "100vh",
45653
+ position: "fixed",
45654
+ top: 0,
45655
+ left: 0,
45656
+ zIndex: 999999999,
45657
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
45658
+ display: "flex",
45659
+ justifyContent: "center",
45660
+ alignItems: "center"
45661
+ };
45662
+
45663
+ var Loading = function Loading() {
45664
+ var isLoading = reactRedux.useSelector(function (state) {
45665
+ return state.common.isLoading;
45666
+ });
45667
+ localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
45668
+ return isLoading ? React__default.createElement("div", {
45669
+ style: loadingStyle
45670
+ }, React__default.createElement("div", {
45671
+ className: "spinner-border text-secondary",
45672
+ role: "status"
45673
+ }, React__default.createElement("span", {
45674
+ className: "sr-only"
45675
+ }, "Loading..."))) : null;
45676
+ };
45677
+
46098
45678
  var ScrollToTop = function ScrollToTop() {
46099
45679
  var _useLocation = reactRouterDom.useLocation(),
46100
45680
  pathname = _useLocation.pathname;
@@ -49114,6 +48694,32 @@ var store = toolkit.configureStore({
49114
48694
  }
49115
48695
  });
49116
48696
 
48697
+ var firstCheckToken = function firstCheckToken() {
48698
+ return Promise.resolve(_catch(function () {
48699
+ var token = getAccessToken();
48700
+ return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
48701
+ return tokenStatus.data ? true : false;
48702
+ }) : false;
48703
+ }, function () {
48704
+ return false;
48705
+ }));
48706
+ };
48707
+
48708
+ var canAccess = function canAccess(userRoles, componentRoles) {
48709
+ if (!Array.isArray(userRoles)) {
48710
+ return false;
48711
+ }
48712
+
48713
+ if (Array.isArray(componentRoles)) {
48714
+ var intersects = userRoles.filter(function (i) {
48715
+ return componentRoles.includes(i);
48716
+ });
48717
+ return intersects.length > 0;
48718
+ }
48719
+
48720
+ return true;
48721
+ };
48722
+
49117
48723
  var isInViewport = function isInViewport(el) {
49118
48724
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
49119
48725
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -49149,6 +48755,412 @@ var generateRandomString = (function () {
49149
48755
 
49150
48756
  var amplitudeClient = amplitude.getInstance();
49151
48757
 
48758
+ var apiGetLanguage = function apiGetLanguage() {
48759
+ return api.get(BASE_URL + "/api/language");
48760
+ };
48761
+
48762
+ var apiUpdateLanguage = function apiUpdateLanguage(lang) {
48763
+ return api.put(BASE_URL + "/api/language?lang=" + lang);
48764
+ };
48765
+
48766
+ var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
48767
+
48768
+ var useLanguages = function useLanguages() {
48769
+ var dispatch = reactRedux.useDispatch();
48770
+
48771
+ var _useTranslation = reactI18next.useTranslation(),
48772
+ i18n = _useTranslation.i18n;
48773
+
48774
+ var language = reactRedux.useSelector(function (state) {
48775
+ return state.common.language;
48776
+ });
48777
+ var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
48778
+
48779
+ var _useState = React.useState([]),
48780
+ languageList = _useState[0],
48781
+ setLanguageList = _useState[1];
48782
+
48783
+ var _useState2 = React.useState(false),
48784
+ dropdownOpen = _useState2[0],
48785
+ setDropdownOpen = _useState2[1];
48786
+
48787
+ var _useState3 = React.useState(defaultLanguage),
48788
+ currentLang = _useState3[0],
48789
+ setCurrentLang = _useState3[1];
48790
+
48791
+ var toggle = function toggle() {
48792
+ return setDropdownOpen(function (prevState) {
48793
+ return !prevState;
48794
+ });
48795
+ };
48796
+
48797
+ var changeLanguageApp = function changeLanguageApp(lang) {
48798
+ try {
48799
+ var _temp3 = function _temp3() {
48800
+ dispatch(setLoading(false));
48801
+ };
48802
+
48803
+ dispatch(setLoading(true));
48804
+
48805
+ var _temp4 = _catch(function () {
48806
+ return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
48807
+ i18n.changeLanguage(lang);
48808
+ setCurrentLang(lang);
48809
+ dispatch(setLanguage(lang));
48810
+ });
48811
+ }, function (err) {
48812
+ var _err$response, _err$response$data;
48813
+
48814
+ dispatch(setAlert({
48815
+ type: "danger",
48816
+ 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
48817
+ }));
48818
+ });
48819
+
48820
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
48821
+ } catch (e) {
48822
+ return Promise.reject(e);
48823
+ }
48824
+ };
48825
+
48826
+ var getListLanguage = function getListLanguage() {
48827
+ try {
48828
+ var _temp6 = _catch(function () {
48829
+ return Promise.resolve(apiGetLanguage()).then(function (res) {
48830
+ setLanguageList(res.data);
48831
+ });
48832
+ }, function (err) {
48833
+ var _err$response2, _err$response2$data;
48834
+
48835
+ dispatch(setAlert({
48836
+ type: "danger",
48837
+ 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
48838
+ }));
48839
+ });
48840
+
48841
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
48842
+ } catch (e) {
48843
+ return Promise.reject(e);
48844
+ }
48845
+ };
48846
+
48847
+ React.useEffect(function () {
48848
+ defaultLanguage != language && changeLanguageApp(defaultLanguage);
48849
+ getListLanguage();
48850
+ }, []);
48851
+ return {
48852
+ languageList: languageList,
48853
+ toggle: toggle,
48854
+ dropdownOpen: dropdownOpen,
48855
+ currentLang: currentLang,
48856
+ changeLanguageApp: changeLanguageApp,
48857
+ setCurrentLang: setCurrentLang
48858
+ };
48859
+ };
48860
+
48861
+ var TheLanguageDropdown = function TheLanguageDropdown() {
48862
+ var _useLanguages = useLanguages(),
48863
+ languageList = _useLanguages.languageList,
48864
+ toggle = _useLanguages.toggle,
48865
+ dropdownOpen = _useLanguages.dropdownOpen,
48866
+ currentLang = _useLanguages.currentLang,
48867
+ changeLanguageApp = _useLanguages.changeLanguageApp;
48868
+
48869
+ var currentLanguage = React.useMemo(function () {
48870
+ var current = languageList.find(function (i) {
48871
+ return i.code === currentLang;
48872
+ });
48873
+ if (!current) return null;
48874
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
48875
+ className: "mr-2 " + styles['dropdown-menu-flag'],
48876
+ src: "" + getStaticFileUrl(current.image)
48877
+ }), " ", current.name);
48878
+ }, [currentLang, languageList]);
48879
+ return React__default.createElement(reactstrap.Dropdown, {
48880
+ isOpen: dropdownOpen,
48881
+ toggle: toggle,
48882
+ className: "" + styles["dropdown-menu"]
48883
+ }, React__default.createElement(reactstrap.DropdownToggle, {
48884
+ className: styles["header-avatar"] + " d-flex align-items-center"
48885
+ }, React__default.createElement("span", {
48886
+ style: {
48887
+ color: "#000",
48888
+ textTransform: "capitalize",
48889
+ display: 'flex',
48890
+ alignItems: 'center'
48891
+ }
48892
+ }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
48893
+ className: "ml-2",
48894
+ style: {
48895
+ fontSize: '10px'
48896
+ }
48897
+ }))), React__default.createElement(reactstrap.DropdownMenu, {
48898
+ className: styles["dropdown-content-language"]
48899
+ }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
48900
+ return React__default.createElement(reactstrap.DropdownItem, {
48901
+ key: lang.code,
48902
+ className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
48903
+ onClick: function onClick() {
48904
+ return changeLanguageApp(lang.code);
48905
+ }
48906
+ }, React__default.createElement("div", {
48907
+ className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
48908
+ }, React__default.createElement("span", {
48909
+ className: "mr-2 d-flex hover-opacity"
48910
+ }, React__default.createElement("img", {
48911
+ style: {
48912
+ width: "30px",
48913
+ height: "25px",
48914
+ borderRadius: "5px"
48915
+ },
48916
+ src: getStaticFileUrl(lang.image)
48917
+ })), lang.name));
48918
+ })));
48919
+ };
48920
+
48921
+ var TheHeader = function TheHeader(_ref) {
48922
+ var onToggleModel = _ref.onToggleModel;
48923
+ var dispatch = reactRedux.useDispatch();
48924
+ var sidebarShow = reactRedux.useSelector(function (state) {
48925
+ return state.common.sidebarShow;
48926
+ });
48927
+
48928
+ var _useTranslation = reactI18next.useTranslation(),
48929
+ t = _useTranslation.t;
48930
+
48931
+ var toggleSidebarMobile = function toggleSidebarMobile() {
48932
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
48933
+ dispatch(setSidebar(val));
48934
+ };
48935
+
48936
+ var isDistrict = window.location.host.includes("-district");
48937
+ return React__default.createElement(react.CHeader, {
48938
+ withSubheader: true,
48939
+ className: "d-flex align-items-center justify-content-end"
48940
+ }, React__default.createElement(react.CToggler, {
48941
+ inHeader: true,
48942
+ className: "ml-md-3 d-lg-none",
48943
+ onClick: toggleSidebarMobile
48944
+ }), React__default.createElement(react.CHeaderBrand, {
48945
+ className: "mx-auto flex-grow-1 d-lg-none",
48946
+ to: "/"
48947
+ }, React__default.createElement("img", {
48948
+ src: getStaticFileUrl(Images.LOGO_HEADER),
48949
+ className: styles["header-logo"]
48950
+ })), React__default.createElement(react.CHeaderNav, {
48951
+ className: "pr-3"
48952
+ }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
48953
+ className: "mr-3",
48954
+ style: {
48955
+ color: '#000'
48956
+ },
48957
+ href: '/privacy-policy',
48958
+ target: "blank"
48959
+ }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
48960
+ onToggleModel: onToggleModel
48961
+ })));
48962
+ };
48963
+
48964
+ var ModelSelectRole = function ModelSelectRole(_ref) {
48965
+ var _handleUserRole;
48966
+
48967
+ var open = _ref.open,
48968
+ onToggleModel = _ref.onToggleModel;
48969
+ var dispatch = reactRedux.useDispatch();
48970
+
48971
+ var _useTranslation = reactI18next.useTranslation(),
48972
+ t = _useTranslation.t;
48973
+
48974
+ var history = reactRouterDom.useHistory();
48975
+ var pathname = window.location.pathname;
48976
+ var user = reactRedux.useSelector(function (state) {
48977
+ return state.common.user;
48978
+ });
48979
+ var roles = user === null || user === void 0 ? void 0 : user.roles;
48980
+
48981
+ var handleSelectUserRoles = function handleSelectUserRoles(roles) {
48982
+ dispatch(setLoading(true));
48983
+ var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
48984
+ dispatch(setUser(_extends({}, user, {
48985
+ roles: roleSelect
48986
+ })));
48987
+ localStorage.setItem("ROLES", roleSelect.toString());
48988
+ onToggleModel();
48989
+
48990
+ if (roles.includes("Parent")) {
48991
+ history.push("/parent");
48992
+ } else if (roles.includes("Admin")) {
48993
+ history.push("/admin/home");
48994
+ } else {
48995
+ pathname !== "/home" ? history.push("/home") : window.location.reload();
48996
+ }
48997
+ };
48998
+
48999
+ return React__default.createElement(reactstrap.Modal, {
49000
+ isOpen: open,
49001
+ toggle: function toggle() {
49002
+ return onToggleModel();
49003
+ },
49004
+ className: "" + styles["model-switch-roles"],
49005
+ centered: true
49006
+ }, React__default.createElement("p", {
49007
+ className: "" + styles["title"]
49008
+ }, 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) {
49009
+ return React__default.createElement("p", {
49010
+ key: r,
49011
+ 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" : ""],
49012
+ onClick: function onClick() {
49013
+ return handleSelectUserRoles([r]);
49014
+ }
49015
+ }, r == "SecondaryTeacher" ? "Support Teacher" : r);
49016
+ })));
49017
+ };
49018
+
49019
+ var TheLayout = function TheLayout(_ref) {
49020
+ var routes = _ref.routes,
49021
+ navigation = _ref.navigation;
49022
+ var history = reactRouterDom.useHistory();
49023
+ var dispatch = reactRedux.useDispatch();
49024
+ var user = reactRedux.useSelector(function (state) {
49025
+ return state.common.user;
49026
+ });
49027
+ var language = reactRedux.useSelector(function (state) {
49028
+ return state.common.language;
49029
+ });
49030
+
49031
+ var _useState = React.useState(false),
49032
+ openModelSelectRole = _useState[0],
49033
+ setOpenModelSelectRole = _useState[1];
49034
+
49035
+ var _useTranslation = reactI18next.useTranslation(),
49036
+ t = _useTranslation.t;
49037
+
49038
+ var location = reactRouterDom.useLocation();
49039
+ var isNotification = location.pathname.includes("notifications");
49040
+ var isDistrict = window.location.host.includes("-district");
49041
+
49042
+ var handleToggleModel = function handleToggleModel() {
49043
+ setOpenModelSelectRole(!openModelSelectRole);
49044
+ };
49045
+
49046
+ var authRoutes = React.useMemo(function () {
49047
+ return routes.filter(function (route) {
49048
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
49049
+ }).filter(function (route) {
49050
+ return !!route.isDistrict === isDistrict;
49051
+ });
49052
+ }, [user, language]);
49053
+ var authNavigations = React.useMemo(function () {
49054
+ return navigation.map(function (item) {
49055
+ var _item$_children, _item$_children2;
49056
+
49057
+ return _extends({}, item, {
49058
+ name: t(item.name),
49059
+ _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) {
49060
+ return _extends({}, x, {
49061
+ name: t(x.name)
49062
+ });
49063
+ }) : undefined
49064
+ });
49065
+ }).filter(function (nav) {
49066
+ return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
49067
+ }).filter(function (nav) {
49068
+ return !!nav.isDistrict === isDistrict;
49069
+ });
49070
+ }, [user, language]);
49071
+
49072
+ var getInformationSetting = function getInformationSetting() {
49073
+ try {
49074
+ var _temp2 = _catch(function () {
49075
+ return Promise.resolve(getSchoolSettings()).then(function (res) {
49076
+ dispatch(setSandboxMode(res.data.isSandboxMode));
49077
+ });
49078
+ }, function (err) {
49079
+ console.error(err);
49080
+ });
49081
+
49082
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
49083
+ } catch (e) {
49084
+ return Promise.reject(e);
49085
+ }
49086
+ };
49087
+
49088
+ React.useEffect(function () {
49089
+ checkAuthentication();
49090
+ }, []);
49091
+ React.useEffect(function () {
49092
+ getInformationSetting();
49093
+ }, [location.pathname]);
49094
+
49095
+ var checkAuthentication = function checkAuthentication() {
49096
+ try {
49097
+ var _temp4 = _catch(function () {
49098
+ return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
49099
+ tokenStatus ? loadInfo() : resetAuth();
49100
+ });
49101
+ }, function () {
49102
+ resetAuth();
49103
+ });
49104
+
49105
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
49106
+ } catch (e) {
49107
+ return Promise.reject(e);
49108
+ }
49109
+ };
49110
+
49111
+ var loadInfo = function loadInfo() {
49112
+ try {
49113
+ var _temp6 = _catch(function () {
49114
+ return Promise.resolve(getInfo()).then(function (info) {
49115
+ var _info$data, _info$data$roles;
49116
+
49117
+ 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"))) {
49118
+ resetAuth();
49119
+ }
49120
+
49121
+ dispatch(setUser(info.data));
49122
+ });
49123
+ }, function () {
49124
+ resetAuth();
49125
+ });
49126
+
49127
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
49128
+ } catch (e) {
49129
+ return Promise.reject(e);
49130
+ }
49131
+ };
49132
+
49133
+ var resetAuth = function resetAuth() {
49134
+ localStorage.removeItem(ACCESS_TOKEN);
49135
+ sessionStorage.removeItem(ACCESS_TOKEN);
49136
+ localStorage.removeItem("ROLES");
49137
+ history.push("/");
49138
+ };
49139
+
49140
+ if (!user) {
49141
+ return React__default.createElement(Loading, null);
49142
+ }
49143
+
49144
+ return React__default.createElement("div", {
49145
+ className: "c-app c-default-layout"
49146
+ }, !isNotification && React__default.createElement(TheSidebar, {
49147
+ navigation: authNavigations
49148
+ }), React__default.createElement("div", {
49149
+ className: "c-wrapper"
49150
+ }, !isNotification && React__default.createElement(TheHeader, {
49151
+ onToggleModel: handleToggleModel
49152
+ }), React__default.createElement("div", {
49153
+ className: "c-body bg-white"
49154
+ }, React__default.createElement(TheContent$1, {
49155
+ routes: authRoutes
49156
+ }))), React__default.createElement(ModelSelectRole, {
49157
+ open: openModelSelectRole,
49158
+ onToggleModel: handleToggleModel
49159
+ }));
49160
+ };
49161
+
49162
+ var amplitudeClient$1 = amplitude.getInstance();
49163
+
49152
49164
  Object.defineProperty(exports, 'I18nextProvider', {
49153
49165
  enumerable: true,
49154
49166
  get: function () {
@@ -49236,7 +49248,7 @@ exports.UserContainer = UserContainer;
49236
49248
  exports.UserDetail = UserDetail;
49237
49249
  exports.UserList = UserList;
49238
49250
  exports.addTab = addTab;
49239
- exports.amplitudeClient = amplitudeClient;
49251
+ exports.amplitudeClient = amplitudeClient$1;
49240
49252
  exports.answerQuestion = answerQuestion;
49241
49253
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
49242
49254
  exports.api = api;