mario-core 2.9.324-release → 2.9.326-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
@@ -20177,7 +20177,7 @@ var handleUserRole = function handleUserRole(userRoles) {
20177
20177
 
20178
20178
  return userRoles;
20179
20179
  };
20180
- var MARIO_SUCCESS_BASE_URL = "https://mariosuccess.com";
20180
+ var MARIO_SUCCESS_BASE_URL = "https://www.mariosuccess.com";
20181
20181
  var LANGUAGES = [{
20182
20182
  code: "en-US",
20183
20183
  fullName: "English (United States)",
@@ -39768,6 +39768,212 @@ var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
39768
39768
  })), t("log_out")))));
39769
39769
  };
39770
39770
 
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
+
39771
39977
  var TITLE$3 = "Not found";
39772
39978
 
39773
39979
  var NotFound = function NotFound() {
@@ -39825,25 +40031,277 @@ var TheContent = function TheContent(_ref) {
39825
40031
 
39826
40032
  var TheContent$1 = React__default.memo(TheContent);
39827
40033
 
39828
- var buttonTextStyle = {
39829
- fontWeight: 500
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"
39830
40045
  };
39831
- var buttonStyle = {
39832
- height: 38
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;
39833
40060
  };
39834
40061
 
39835
- var AddButton = function AddButton(_ref) {
39836
- var text = _ref.text,
39837
- onClick = _ref.onClick;
39838
- return React__default.createElement(reactstrap.Button, {
39839
- onClick: onClick,
39840
- color: 'success',
39841
- style: buttonStyle,
39842
- className: 'd-flex align-items-center'
39843
- }, React__default.createElement(fa.FaPlus, null), React__default.createElement("span", {
39844
- className: 'ml-2',
39845
- style: buttonTextStyle
39846
- }, text));
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
+ var buttonTextStyle = {
40287
+ fontWeight: 500
40288
+ };
40289
+ var buttonStyle = {
40290
+ height: 38
40291
+ };
40292
+
40293
+ var AddButton = function AddButton(_ref) {
40294
+ var text = _ref.text,
40295
+ onClick = _ref.onClick;
40296
+ return React__default.createElement(reactstrap.Button, {
40297
+ onClick: onClick,
40298
+ color: 'success',
40299
+ style: buttonStyle,
40300
+ className: 'd-flex align-items-center'
40301
+ }, React__default.createElement(fa.FaPlus, null), React__default.createElement("span", {
40302
+ className: 'ml-2',
40303
+ style: buttonTextStyle
40304
+ }, text));
39847
40305
  };
39848
40306
 
39849
40307
  var DeleteButtonIcon = function DeleteButtonIcon(_ref) {
@@ -44170,7 +44628,8 @@ var useAssignStudent = function useAssignStudent(teacherSelected, assistantSelec
44170
44628
 
44171
44629
  assignStudents([studentRequest]);
44172
44630
  }, [JSON.stringify(teacherSelected), JSON.stringify(assistantSelected), JSON.stringify(counselorSelected), JSON.stringify(secondaryTeacherSelected)]);
44173
- var handleAssignStaffToStudents = React.useCallback(function (listUserIds) {
44631
+
44632
+ var handleAssignStaffToStudents = function handleAssignStaffToStudents(listUserIds, isTeacherExit) {
44174
44633
  if (listUserIds.length === 0) {
44175
44634
  dispatch(setAlert({
44176
44635
  type: "danger",
@@ -44179,7 +44638,7 @@ var useAssignStudent = function useAssignStudent(teacherSelected, assistantSelec
44179
44638
  return;
44180
44639
  }
44181
44640
 
44182
- if (staffBulkAssign.teacher.length === 0) {
44641
+ if (staffBulkAssign.teacher.length === 0 && !isTeacherExit) {
44183
44642
  dispatch(setAlert({
44184
44643
  type: "danger",
44185
44644
  message: "Please select teacher before assign!"
@@ -44207,7 +44666,7 @@ var useAssignStudent = function useAssignStudent(teacherSelected, assistantSelec
44207
44666
  });
44208
44667
  handleToggleModel();
44209
44668
  assignStudents([].concat(users));
44210
- }, [JSON.stringify(staffBulkAssign)]);
44669
+ };
44211
44670
 
44212
44671
  var handleInactiveStudents = function handleInactiveStudents(listStudentIds, callback) {
44213
44672
  try {
@@ -44319,6 +44778,11 @@ var AssignStudentList = function AssignStudentList() {
44319
44778
  handleInactiveStudents = _useAssignStudent.handleInactiveStudents,
44320
44779
  handleChangeTeacherBulk = _useAssignStudent.handleChangeTeacherBulk;
44321
44780
 
44781
+ var isExitTeachers = React.useMemo(function () {
44782
+ return userList.filter(function (item) {
44783
+ return isCheck.includes(item.id) && item.teachers.length > 0;
44784
+ }).length > 0;
44785
+ }, [JSON.stringify(isCheck)]);
44322
44786
  var AssignStudentColumns = [{
44323
44787
  name: "",
44324
44788
  isCenter: true,
@@ -44409,7 +44873,7 @@ var AssignStudentList = function AssignStudentList() {
44409
44873
  toggle: function toggle() {
44410
44874
  return handleToggleModel();
44411
44875
  }
44412
- }, React__default.createElement(reactstrap.ModalHeader, null, t("assign_bulk_student")), React__default.createElement(reactstrap.ModalBody, null, React__default.createElement(CustomSelector, {
44876
+ }, React__default.createElement(reactstrap.ModalHeader, null, t("assign_bulk_student")), React__default.createElement(reactstrap.ModalBody, null, !isExitTeachers && React__default.createElement(CustomSelector, {
44413
44877
  isMulti: true,
44414
44878
  value: staffBulkAssign.teacher.map(function (e) {
44415
44879
  return {
@@ -44481,7 +44945,7 @@ var AssignStudentList = function AssignStudentList() {
44481
44945
  }, t("cancel")), React__default.createElement(reactstrap.Button, {
44482
44946
  color: "primary",
44483
44947
  onClick: function onClick() {
44484
- return handleAssignStaffToStudents(isCheck);
44948
+ return handleAssignStaffToStudents(isCheck, isExitTeachers);
44485
44949
  }
44486
44950
  }, t("assign")))), React__default.createElement(reactstrap.Modal, {
44487
44951
  centered: true,
@@ -45631,42 +46095,14 @@ var UserDetail = function UserDetail() {
45631
46095
  });
45632
46096
  };
45633
46097
 
45634
- var loadingStyle = {
45635
- minWidth: "100vw",
45636
- minHeight: "100vh",
45637
- position: "fixed",
45638
- top: 0,
45639
- left: 0,
45640
- zIndex: 999999999,
45641
- backgroundColor: "rgba(0, 0, 0, 0.4)",
45642
- display: "flex",
45643
- justifyContent: "center",
45644
- alignItems: "center"
45645
- };
45646
-
45647
- var Loading = function Loading() {
45648
- var isLoading = reactRedux.useSelector(function (state) {
45649
- return state.common.isLoading;
45650
- });
45651
- localStorage.setItem("LAST_TIME_REQUETST", moment().utc().format("YYYY-MM-DD HH:mm:ss"));
45652
- return isLoading ? React__default.createElement("div", {
45653
- style: loadingStyle
45654
- }, React__default.createElement("div", {
45655
- className: "spinner-border text-secondary",
45656
- role: "status"
45657
- }, React__default.createElement("span", {
45658
- className: "sr-only"
45659
- }, "Loading..."))) : null;
45660
- };
45661
-
45662
- var ScrollToTop = function ScrollToTop() {
45663
- var _useLocation = reactRouterDom.useLocation(),
45664
- pathname = _useLocation.pathname;
45665
-
45666
- React.useEffect(function () {
45667
- window.scrollTo(0, 0);
45668
- }, [pathname]);
45669
- return null;
46098
+ var ScrollToTop = function ScrollToTop() {
46099
+ var _useLocation = reactRouterDom.useLocation(),
46100
+ pathname = _useLocation.pathname;
46101
+
46102
+ React.useEffect(function () {
46103
+ window.scrollTo(0, 0);
46104
+ }, [pathname]);
46105
+ return null;
45670
46106
  };
45671
46107
 
45672
46108
  var modalInfo = function modalInfo(type) {
@@ -48678,32 +49114,6 @@ var store = toolkit.configureStore({
48678
49114
  }
48679
49115
  });
48680
49116
 
48681
- var firstCheckToken = function firstCheckToken() {
48682
- return Promise.resolve(_catch(function () {
48683
- var token = getAccessToken();
48684
- return token ? Promise.resolve(checkToken(token)).then(function (tokenStatus) {
48685
- return tokenStatus.data ? true : false;
48686
- }) : false;
48687
- }, function () {
48688
- return false;
48689
- }));
48690
- };
48691
-
48692
- var canAccess = function canAccess(userRoles, componentRoles) {
48693
- if (!Array.isArray(userRoles)) {
48694
- return false;
48695
- }
48696
-
48697
- if (Array.isArray(componentRoles)) {
48698
- var intersects = userRoles.filter(function (i) {
48699
- return componentRoles.includes(i);
48700
- });
48701
- return intersects.length > 0;
48702
- }
48703
-
48704
- return true;
48705
- };
48706
-
48707
49117
  var isInViewport = function isInViewport(el) {
48708
49118
  var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
48709
49119
  return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
@@ -48739,412 +49149,6 @@ var generateRandomString = (function () {
48739
49149
 
48740
49150
  var amplitudeClient = amplitude.getInstance();
48741
49151
 
48742
- var apiGetLanguage = function apiGetLanguage() {
48743
- return api.get(BASE_URL + "/api/language");
48744
- };
48745
-
48746
- var apiUpdateLanguage = function apiUpdateLanguage(lang) {
48747
- return api.put(BASE_URL + "/api/language?lang=" + lang);
48748
- };
48749
-
48750
- var LANGUAGE_SYSTEM = "LANGUAGE_SYSTEM";
48751
-
48752
- var useLanguages = function useLanguages() {
48753
- var dispatch = reactRedux.useDispatch();
48754
-
48755
- var _useTranslation = reactI18next.useTranslation(),
48756
- i18n = _useTranslation.i18n;
48757
-
48758
- var language = reactRedux.useSelector(function (state) {
48759
- return state.common.language;
48760
- });
48761
- var defaultLanguage = getCookieValue(LANGUAGE_SYSTEM) != null ? getCookieValue(LANGUAGE_SYSTEM) : DEFAULT_LANGUAGE_CODE;
48762
-
48763
- var _useState = React.useState([]),
48764
- languageList = _useState[0],
48765
- setLanguageList = _useState[1];
48766
-
48767
- var _useState2 = React.useState(false),
48768
- dropdownOpen = _useState2[0],
48769
- setDropdownOpen = _useState2[1];
48770
-
48771
- var _useState3 = React.useState(defaultLanguage),
48772
- currentLang = _useState3[0],
48773
- setCurrentLang = _useState3[1];
48774
-
48775
- var toggle = function toggle() {
48776
- return setDropdownOpen(function (prevState) {
48777
- return !prevState;
48778
- });
48779
- };
48780
-
48781
- var changeLanguageApp = function changeLanguageApp(lang) {
48782
- try {
48783
- var _temp3 = function _temp3() {
48784
- dispatch(setLoading(false));
48785
- };
48786
-
48787
- dispatch(setLoading(true));
48788
-
48789
- var _temp4 = _catch(function () {
48790
- return Promise.resolve(apiUpdateLanguage(lang)).then(function () {
48791
- i18n.changeLanguage(lang);
48792
- setCurrentLang(lang);
48793
- dispatch(setLanguage(lang));
48794
- });
48795
- }, function (err) {
48796
- var _err$response, _err$response$data;
48797
-
48798
- dispatch(setAlert({
48799
- type: "danger",
48800
- 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
48801
- }));
48802
- });
48803
-
48804
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
48805
- } catch (e) {
48806
- return Promise.reject(e);
48807
- }
48808
- };
48809
-
48810
- var getListLanguage = function getListLanguage() {
48811
- try {
48812
- var _temp6 = _catch(function () {
48813
- return Promise.resolve(apiGetLanguage()).then(function (res) {
48814
- setLanguageList(res.data);
48815
- });
48816
- }, function (err) {
48817
- var _err$response2, _err$response2$data;
48818
-
48819
- dispatch(setAlert({
48820
- type: "danger",
48821
- 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
48822
- }));
48823
- });
48824
-
48825
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
48826
- } catch (e) {
48827
- return Promise.reject(e);
48828
- }
48829
- };
48830
-
48831
- React.useEffect(function () {
48832
- defaultLanguage != language && changeLanguageApp(defaultLanguage);
48833
- getListLanguage();
48834
- }, []);
48835
- return {
48836
- languageList: languageList,
48837
- toggle: toggle,
48838
- dropdownOpen: dropdownOpen,
48839
- currentLang: currentLang,
48840
- changeLanguageApp: changeLanguageApp,
48841
- setCurrentLang: setCurrentLang
48842
- };
48843
- };
48844
-
48845
- var TheLanguageDropdown = function TheLanguageDropdown() {
48846
- var _useLanguages = useLanguages(),
48847
- languageList = _useLanguages.languageList,
48848
- toggle = _useLanguages.toggle,
48849
- dropdownOpen = _useLanguages.dropdownOpen,
48850
- currentLang = _useLanguages.currentLang,
48851
- changeLanguageApp = _useLanguages.changeLanguageApp;
48852
-
48853
- var currentLanguage = React.useMemo(function () {
48854
- var current = languageList.find(function (i) {
48855
- return i.code === currentLang;
48856
- });
48857
- if (!current) return null;
48858
- return React__default.createElement(React__default.Fragment, null, React__default.createElement("img", {
48859
- className: "mr-2 " + styles['dropdown-menu-flag'],
48860
- src: "" + getStaticFileUrl(current.image)
48861
- }), " ", current.name);
48862
- }, [currentLang, languageList]);
48863
- return React__default.createElement(reactstrap.Dropdown, {
48864
- isOpen: dropdownOpen,
48865
- toggle: toggle,
48866
- className: "" + styles["dropdown-menu"]
48867
- }, React__default.createElement(reactstrap.DropdownToggle, {
48868
- className: styles["header-avatar"] + " d-flex align-items-center"
48869
- }, React__default.createElement("span", {
48870
- style: {
48871
- color: "#000",
48872
- textTransform: "capitalize",
48873
- display: 'flex',
48874
- alignItems: 'center'
48875
- }
48876
- }, currentLanguage, React__default.createElement(bs.BsChevronDown, {
48877
- className: "ml-2",
48878
- style: {
48879
- fontSize: '10px'
48880
- }
48881
- }))), React__default.createElement(reactstrap.DropdownMenu, {
48882
- className: styles["dropdown-content-language"]
48883
- }, !!languageList && languageList.length > 0 && languageList.map(function (lang, index) {
48884
- return React__default.createElement(reactstrap.DropdownItem, {
48885
- key: lang.code,
48886
- className: styles["dropdown-change"] + " px-0 py-0 " + (index === languageList.length - 1 ? "pb-2" : "pt-2"),
48887
- onClick: function onClick() {
48888
- return changeLanguageApp(lang.code);
48889
- }
48890
- }, React__default.createElement("div", {
48891
- className: styles["dropdown-item-language"] + " " + styles["item-logout"] + " " + (currentLang == lang.code ? styles['dropdown-item-language-active'] : "") + " d-flex align-items-center w-100"
48892
- }, React__default.createElement("span", {
48893
- className: "mr-2 d-flex hover-opacity"
48894
- }, React__default.createElement("img", {
48895
- style: {
48896
- width: "30px",
48897
- height: "25px",
48898
- borderRadius: "5px"
48899
- },
48900
- src: getStaticFileUrl(lang.image)
48901
- })), lang.name));
48902
- })));
48903
- };
48904
-
48905
- var TheHeader = function TheHeader(_ref) {
48906
- var onToggleModel = _ref.onToggleModel;
48907
- var dispatch = reactRedux.useDispatch();
48908
- var sidebarShow = reactRedux.useSelector(function (state) {
48909
- return state.common.sidebarShow;
48910
- });
48911
-
48912
- var _useTranslation = reactI18next.useTranslation(),
48913
- t = _useTranslation.t;
48914
-
48915
- var toggleSidebarMobile = function toggleSidebarMobile() {
48916
- var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
48917
- dispatch(setSidebar(val));
48918
- };
48919
-
48920
- var isDistrict = window.location.host.includes("-district");
48921
- return React__default.createElement(react.CHeader, {
48922
- withSubheader: true,
48923
- className: "d-flex align-items-center justify-content-end"
48924
- }, React__default.createElement(react.CToggler, {
48925
- inHeader: true,
48926
- className: "ml-md-3 d-lg-none",
48927
- onClick: toggleSidebarMobile
48928
- }), React__default.createElement(react.CHeaderBrand, {
48929
- className: "mx-auto flex-grow-1 d-lg-none",
48930
- to: "/"
48931
- }, React__default.createElement("img", {
48932
- src: getStaticFileUrl(Images.LOGO_HEADER),
48933
- className: styles["header-logo"]
48934
- })), React__default.createElement(react.CHeaderNav, {
48935
- className: "pr-3"
48936
- }, React__default.createElement(TheLanguageDropdown, null), React__default.createElement("a", {
48937
- className: "mr-3",
48938
- style: {
48939
- color: '#000'
48940
- },
48941
- href: '/privacy-policy',
48942
- target: "blank"
48943
- }, t("privacy_policy")), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
48944
- onToggleModel: onToggleModel
48945
- })));
48946
- };
48947
-
48948
- var ModelSelectRole = function ModelSelectRole(_ref) {
48949
- var _handleUserRole;
48950
-
48951
- var open = _ref.open,
48952
- onToggleModel = _ref.onToggleModel;
48953
- var dispatch = reactRedux.useDispatch();
48954
-
48955
- var _useTranslation = reactI18next.useTranslation(),
48956
- t = _useTranslation.t;
48957
-
48958
- var history = reactRouterDom.useHistory();
48959
- var pathname = window.location.pathname;
48960
- var user = reactRedux.useSelector(function (state) {
48961
- return state.common.user;
48962
- });
48963
- var roles = user === null || user === void 0 ? void 0 : user.roles;
48964
-
48965
- var handleSelectUserRoles = function handleSelectUserRoles(roles) {
48966
- dispatch(setLoading(true));
48967
- var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
48968
- dispatch(setUser(_extends({}, user, {
48969
- roles: roleSelect
48970
- })));
48971
- localStorage.setItem("ROLES", roleSelect.toString());
48972
- onToggleModel();
48973
-
48974
- if (roles.includes("Parent")) {
48975
- history.push("/parent");
48976
- } else if (roles.includes("Admin")) {
48977
- history.push("/admin/home");
48978
- } else {
48979
- pathname !== "/home" ? history.push("/home") : window.location.reload();
48980
- }
48981
- };
48982
-
48983
- return React__default.createElement(reactstrap.Modal, {
48984
- isOpen: open,
48985
- toggle: function toggle() {
48986
- return onToggleModel();
48987
- },
48988
- className: "" + styles["model-switch-roles"],
48989
- centered: true
48990
- }, React__default.createElement("p", {
48991
- className: "" + styles["title"]
48992
- }, 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) {
48993
- return React__default.createElement("p", {
48994
- key: r,
48995
- 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" : ""],
48996
- onClick: function onClick() {
48997
- return handleSelectUserRoles([r]);
48998
- }
48999
- }, r == "SecondaryTeacher" ? "Support Teacher" : r);
49000
- })));
49001
- };
49002
-
49003
- var TheLayout = function TheLayout(_ref) {
49004
- var routes = _ref.routes,
49005
- navigation = _ref.navigation;
49006
- var history = reactRouterDom.useHistory();
49007
- var dispatch = reactRedux.useDispatch();
49008
- var user = reactRedux.useSelector(function (state) {
49009
- return state.common.user;
49010
- });
49011
- var language = reactRedux.useSelector(function (state) {
49012
- return state.common.language;
49013
- });
49014
-
49015
- var _useState = React.useState(false),
49016
- openModelSelectRole = _useState[0],
49017
- setOpenModelSelectRole = _useState[1];
49018
-
49019
- var _useTranslation = reactI18next.useTranslation(),
49020
- t = _useTranslation.t;
49021
-
49022
- var location = reactRouterDom.useLocation();
49023
- var isNotification = location.pathname.includes("notifications");
49024
- var isDistrict = window.location.host.includes("-district");
49025
-
49026
- var handleToggleModel = function handleToggleModel() {
49027
- setOpenModelSelectRole(!openModelSelectRole);
49028
- };
49029
-
49030
- var authRoutes = React.useMemo(function () {
49031
- return routes.filter(function (route) {
49032
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
49033
- }).filter(function (route) {
49034
- return !!route.isDistrict === isDistrict;
49035
- });
49036
- }, [user, language]);
49037
- var authNavigations = React.useMemo(function () {
49038
- return navigation.map(function (item) {
49039
- var _item$_children, _item$_children2;
49040
-
49041
- return _extends({}, item, {
49042
- name: t(item.name),
49043
- _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) {
49044
- return _extends({}, x, {
49045
- name: t(x.name)
49046
- });
49047
- }) : undefined
49048
- });
49049
- }).filter(function (nav) {
49050
- return canAccess(user === null || user === void 0 ? void 0 : user.roles, nav.roles);
49051
- }).filter(function (nav) {
49052
- return !!nav.isDistrict === isDistrict;
49053
- });
49054
- }, [user, language]);
49055
-
49056
- var getInformationSetting = function getInformationSetting() {
49057
- try {
49058
- var _temp2 = _catch(function () {
49059
- return Promise.resolve(getSchoolSettings()).then(function (res) {
49060
- dispatch(setSandboxMode(res.data.isSandboxMode));
49061
- });
49062
- }, function (err) {
49063
- console.error(err);
49064
- });
49065
-
49066
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
49067
- } catch (e) {
49068
- return Promise.reject(e);
49069
- }
49070
- };
49071
-
49072
- React.useEffect(function () {
49073
- checkAuthentication();
49074
- }, []);
49075
- React.useEffect(function () {
49076
- getInformationSetting();
49077
- }, [location.pathname]);
49078
-
49079
- var checkAuthentication = function checkAuthentication() {
49080
- try {
49081
- var _temp4 = _catch(function () {
49082
- return Promise.resolve(firstCheckToken()).then(function (tokenStatus) {
49083
- tokenStatus ? loadInfo() : resetAuth();
49084
- });
49085
- }, function () {
49086
- resetAuth();
49087
- });
49088
-
49089
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
49090
- } catch (e) {
49091
- return Promise.reject(e);
49092
- }
49093
- };
49094
-
49095
- var loadInfo = function loadInfo() {
49096
- try {
49097
- var _temp6 = _catch(function () {
49098
- return Promise.resolve(getInfo()).then(function (info) {
49099
- var _info$data, _info$data$roles;
49100
-
49101
- 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"))) {
49102
- resetAuth();
49103
- }
49104
-
49105
- dispatch(setUser(info.data));
49106
- });
49107
- }, function () {
49108
- resetAuth();
49109
- });
49110
-
49111
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
49112
- } catch (e) {
49113
- return Promise.reject(e);
49114
- }
49115
- };
49116
-
49117
- var resetAuth = function resetAuth() {
49118
- localStorage.removeItem(ACCESS_TOKEN);
49119
- sessionStorage.removeItem(ACCESS_TOKEN);
49120
- localStorage.removeItem("ROLES");
49121
- history.push("/");
49122
- };
49123
-
49124
- if (!user) {
49125
- return React__default.createElement(Loading, null);
49126
- }
49127
-
49128
- return React__default.createElement("div", {
49129
- className: "c-app c-default-layout"
49130
- }, !isNotification && React__default.createElement(TheSidebar, {
49131
- navigation: authNavigations
49132
- }), React__default.createElement("div", {
49133
- className: "c-wrapper"
49134
- }, !isNotification && React__default.createElement(TheHeader, {
49135
- onToggleModel: handleToggleModel
49136
- }), React__default.createElement("div", {
49137
- className: "c-body bg-white"
49138
- }, React__default.createElement(TheContent$1, {
49139
- routes: authRoutes
49140
- }))), React__default.createElement(ModelSelectRole, {
49141
- open: openModelSelectRole,
49142
- onToggleModel: handleToggleModel
49143
- }));
49144
- };
49145
-
49146
- var amplitudeClient$1 = amplitude.getInstance();
49147
-
49148
49152
  Object.defineProperty(exports, 'I18nextProvider', {
49149
49153
  enumerable: true,
49150
49154
  get: function () {
@@ -49232,7 +49236,7 @@ exports.UserContainer = UserContainer;
49232
49236
  exports.UserDetail = UserDetail;
49233
49237
  exports.UserList = UserList;
49234
49238
  exports.addTab = addTab;
49235
- exports.amplitudeClient = amplitudeClient$1;
49239
+ exports.amplitudeClient = amplitudeClient;
49236
49240
  exports.answerQuestion = answerQuestion;
49237
49241
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
49238
49242
  exports.api = api;