mario-core 2.9.106-beta → 2.9.107-beta

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
@@ -26,6 +26,7 @@ var fa = require('react-icons/fa');
26
26
  var dateFns = require('date-fns');
27
27
  var tinymceReact = require('@tinymce/tinymce-react');
28
28
  var differenceInCalendarYears = _interopDefault(require('date-fns/differenceInCalendarYears'));
29
+ var moment = _interopDefault(require('moment'));
29
30
  var DatePicker = _interopDefault(require('react-datepicker'));
30
31
  var toDate = _interopDefault(require('date-fns/toDate'));
31
32
  var md = require('react-icons/md');
@@ -33,7 +34,6 @@ var Creatable = _interopDefault(require('react-select/creatable'));
33
34
  var ReactNotification$1 = _interopDefault(require('react-notifications-component'));
34
35
  require('react-notifications-component/dist/theme.css');
35
36
  var ai = require('react-icons/ai');
36
- var moment = _interopDefault(require('moment'));
37
37
 
38
38
  var dashboard = "Dashboard";
39
39
  var user = "User";
@@ -609,7 +609,6 @@ var current_secondary_teacher_name = "Current Secondary Teacher Name";
609
609
  var current_secondary_teacher_email = "Current Secondary Teacher Email";
610
610
  var remove_secondary_teacher = "Remove Secondary Teacher";
611
611
  var select_secondary_teacher_change = "Select Secondary Teacher Change";
612
- var filter_calendar = "Filter Calendar";
613
612
  var lang_us = {
614
613
  dashboard: dashboard,
615
614
  user: user,
@@ -1192,8 +1191,7 @@ var lang_us = {
1192
1191
  current_secondary_teacher_name: current_secondary_teacher_name,
1193
1192
  current_secondary_teacher_email: current_secondary_teacher_email,
1194
1193
  remove_secondary_teacher: remove_secondary_teacher,
1195
- select_secondary_teacher_change: select_secondary_teacher_change,
1196
- filter_calendar: filter_calendar
1194
+ select_secondary_teacher_change: select_secondary_teacher_change
1197
1195
  };
1198
1196
 
1199
1197
  var dashboard$1 = "Dashboard";
@@ -1772,7 +1770,6 @@ var current_secondary_teacher_name$1 = "Current Secondary Teacher Name";
1772
1770
  var current_secondary_teacher_email$1 = "Current Secondary Teacher Email";
1773
1771
  var remove_secondary_teacher$1 = "Remove Secondary Teacher";
1774
1772
  var select_secondary_teacher_change$1 = "Select Secondary Teacher Change";
1775
- var filter_calendar$1 = "Filter Calendar";
1776
1773
  var lang_uk = {
1777
1774
  dashboard: dashboard$1,
1778
1775
  user: user$1,
@@ -2355,8 +2352,7 @@ var lang_uk = {
2355
2352
  current_secondary_teacher_name: current_secondary_teacher_name$1,
2356
2353
  current_secondary_teacher_email: current_secondary_teacher_email$1,
2357
2354
  remove_secondary_teacher: remove_secondary_teacher$1,
2358
- select_secondary_teacher_change: select_secondary_teacher_change$1,
2359
- filter_calendar: filter_calendar$1
2355
+ select_secondary_teacher_change: select_secondary_teacher_change$1
2360
2356
  };
2361
2357
 
2362
2358
  var DEFAULT_LANGUAGE = localStorage.getItem("language") !== null ? localStorage.getItem("language") : "uk";
@@ -6776,89 +6772,8 @@ var SkillList = function SkillList() {
6776
6772
  }))));
6777
6773
  };
6778
6774
 
6779
- var MAX_FILE_SIZE = 20097152;
6780
-
6781
- var UploadFileButton = function UploadFileButton(_ref) {
6782
- var fileName = _ref.fileName,
6783
- maxWidth = _ref.maxWidth,
6784
- maxHeight = _ref.maxHeight,
6785
- setFile = _ref.setFile,
6786
- canDelete = _ref.canDelete,
6787
- onDelete = _ref.onDelete,
6788
- isCheckFeedBack = _ref.isCheckFeedBack,
6789
- onAddImage = _ref.onAddImage;
6790
- var dispatch = reactRedux.useDispatch();
6791
-
6792
- var _useState = React.useState(""),
6793
- imagePreviewUrl = _useState[0],
6794
- setImagePreviewUrl = _useState[1];
6795
-
6796
- var imageStyle = {
6797
- maxWidth: maxWidth || "100%",
6798
- maxHeight: maxHeight || "100%"
6799
- };
6800
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6801
-
6802
- var handleImageChange = function handleImageChange(e) {
6803
- e.preventDefault();
6804
- var reader = new FileReader();
6805
- var newFile = e.target.files[0];
6806
-
6807
- if (newFile.size > MAX_FILE_SIZE) {
6808
- dispatch(setAlert({
6809
- type: "danger",
6810
- message: "File can't be larger than 2MB"
6811
- }));
6812
- return;
6813
- }
6814
-
6815
- reader.onloadend = function () {
6816
- setFile(newFile);
6817
- setImagePreviewUrl(reader.result);
6818
- };
6819
-
6820
- if (newFile) {
6821
- reader.readAsDataURL(newFile);
6822
- }
6823
-
6824
- !!onAddImage && onAddImage();
6825
- };
6826
-
6827
- var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6828
- style: imageStyle,
6829
- src: imageSrc,
6830
- alt: "image"
6831
- }) : null;
6832
- return React__default.createElement("div", {
6833
- className: "mb-2"
6834
- }, React__default.createElement(reactstrap.Form, {
6835
- className: "mb-2"
6836
- }, React__default.createElement(reactstrap.Input, {
6837
- className: "d-none",
6838
- type: "file",
6839
- id: "uploadFile",
6840
- onChange: handleImageChange,
6841
- accept: "image/*"
6842
- }), React__default.createElement("div", {
6843
- className: "d-flex align-items-center"
6844
- }, React__default.createElement(reactstrap.Label, {
6845
- htmlFor: "uploadFile",
6846
- role: "button",
6847
- tabIndex: 0,
6848
- className: styles["input-file-label"]
6849
- }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6850
- className: "fa fa-paperclip mr-1",
6851
- "aria-hidden": "true"
6852
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6853
- size: "sm",
6854
- color: "danger",
6855
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6856
- onClick: function onClick() {
6857
- setImagePreviewUrl(null);
6858
- onDelete && onDelete();
6859
- }
6860
- }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6861
- };
6775
+ var setUserList = toolkit.createAction("users/setUserList");
6776
+ var setStudentList = toolkit.createAction("users/setStudentList");
6862
6777
 
6863
6778
  var USER_URL$1 = BASE_URL + "/api/user";
6864
6779
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6891,54 +6806,38 @@ var switchAccountUser = function switchAccountUser(id) {
6891
6806
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6892
6807
  };
6893
6808
 
6894
- var initValue$3 = {
6895
- id: "",
6896
- firstName: "",
6897
- lastName: "",
6898
- email: "",
6899
- dateOfBirth: "",
6900
- roles: [],
6901
- isActive: true,
6902
- profileImageFileName: ""
6903
- };
6904
- var USER_LIST_URL = "/admin/user";
6905
- var TITLE$7 = "User detail";
6809
+ var USER_URL$2 = "/admin/user";
6810
+ var CREATE_USER_URL = "/admin/create-user";
6811
+ var TITLE$7 = "User list";
6812
+ var HOMEPAGE_TEACHER$1 = "/home";
6813
+ var HOMEPAGE_STUDENT$1 = "/home";
6814
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6815
+ var HOMEPAGE_PARENT$1 = "/parent";
6816
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6817
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
6906
6818
 
6907
- var useUserDetail = function useUserDetail(id) {
6908
- var dispatch = reactRedux.useDispatch();
6819
+ var useUserList = function useUserList() {
6909
6820
  var history = reactRouterDom.useHistory();
6821
+ var query = new URLSearchParams(location.search);
6822
+ var queryName = query.get("query");
6823
+ var userList = reactRedux.useSelector(function (state) {
6824
+ return state.users.userList;
6825
+ });
6826
+ var totalItems = reactRedux.useSelector(function (state) {
6827
+ return state.users.totalItems;
6828
+ });
6910
6829
 
6911
- var _useState = React.useState(initValue$3),
6912
- userDetail = _useState[0],
6913
- setUserDetail = _useState[1];
6914
-
6915
- var _useState2 = React.useState(null),
6916
- file = _useState2[0],
6917
- setFile = _useState2[1];
6918
-
6919
- var _useState3 = React.useState(false),
6920
- edited = _useState3[0],
6921
- setEdited = _useState3[1];
6830
+ var _useFilters = useFilters(),
6831
+ filters = _useFilters.filters,
6832
+ changeFilters = _useFilters.changeFilters;
6922
6833
 
6923
- var setEditedTrue = function setEditedTrue() {
6924
- try {
6925
- localStorage.setItem(window.location.href, "true");
6926
- setEdited(true);
6927
- return Promise.resolve();
6928
- } catch (e) {
6929
- return Promise.reject(e);
6930
- }
6931
- };
6834
+ var _useState = React.useState(!!queryName ? queryName : ""),
6835
+ fullName = _useState[0],
6836
+ setFullName = _useState[1];
6932
6837
 
6933
- React.useEffect(function () {
6934
- document.title = TITLE$7;
6935
- setEdited(false);
6936
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6937
- }, []);
6938
- React.useEffect(function () {
6939
- !!id && getData();
6940
- }, [id]);
6941
- var getData = React.useCallback(function () {
6838
+ var isDistrict = window.location.host.includes("-district");
6839
+ var dispatch = reactRedux.useDispatch();
6840
+ var getData = React.useCallback(function (fullName) {
6942
6841
  try {
6943
6842
  var _temp3 = function _temp3() {
6944
6843
  dispatch(setLoading(false));
@@ -6947,14 +6846,22 @@ var useUserDetail = function useUserDetail(id) {
6947
6846
  dispatch(setLoading(true));
6948
6847
 
6949
6848
  var _temp4 = _catch(function () {
6950
- return Promise.resolve(getById$3(id)).then(function (res) {
6951
- var _res$data;
6849
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6850
+ searchString: fullName
6851
+ })) : get$5(filters)).then(function (res) {
6852
+ var _res$data = res.data,
6853
+ items = _res$data.items,
6854
+ totalItems = _res$data.totalItems;
6952
6855
 
6953
- setUserDetail(_extends({}, res.data, {
6954
- dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6955
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6856
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6857
+ var user = _step.value;
6858
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6859
+ }
6860
+
6861
+ dispatch(setUserList({
6862
+ userList: items,
6863
+ totalItems: totalItems
6956
6864
  }));
6957
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6958
6865
  });
6959
6866
  }, function (err) {
6960
6867
  var _err$response, _err$response$data;
@@ -6969,196 +6876,713 @@ var useUserDetail = function useUserDetail(id) {
6969
6876
  } catch (e) {
6970
6877
  return Promise.reject(e);
6971
6878
  }
6972
- }, [id]);
6973
- var backToList = React.useCallback(function (user) {
6974
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6879
+ }, [dispatch, filters]);
6880
+ React.useEffect(function () {
6881
+ document.title = TITLE$7;
6975
6882
  }, []);
6976
- var confirmData = React.useCallback(function (data) {
6977
- try {
6978
- var _temp9 = function _temp9() {
6979
- dispatch(setLoading(false));
6980
- };
6981
-
6982
- dispatch(setLoading(true));
6883
+ React.useEffect(function () {
6884
+ if (!!fullName) {
6885
+ getData(fullName);
6886
+ setFullName(null);
6887
+ } else {
6888
+ getData();
6889
+ }
6890
+ }, [filters]);
6891
+ var removeData = React.useCallback(function (id) {
6892
+ dispatch(setLoading(true));
6983
6893
 
6984
- var _temp10 = _catch(function () {
6985
- function _temp6() {
6986
- var next = !!id ? update$5 : create$5;
6987
- !id && delete data.id;
6988
- return Promise.resolve(next(data)).then(function (result) {
6989
- if (!!result) {
6990
- getById$3(result.data.id).then(function (e) {
6991
- backToList(e.data.fullName);
6894
+ try {
6895
+ dispatch(setModal({
6896
+ isOpen: true,
6897
+ type: "warning",
6898
+ message: "Do you want to remove this user?",
6899
+ onConfirm: function () {
6900
+ try {
6901
+ return Promise.resolve(remove$3(id)).then(function () {
6902
+ dispatch(setAlert({
6903
+ type: "success",
6904
+ message: "Remove user successfully"
6905
+ }));
6906
+ changeFilters({
6907
+ currentPage: 1
6992
6908
  });
6993
- }
6994
-
6995
- if (!id) {
6996
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6997
- }
6998
-
6999
- dispatch(setAlert({
7000
- type: "success",
7001
- message: (!!id ? "Update" : "Create") + " user successfully"
7002
- }));
7003
- });
7004
- }
7005
-
7006
- var _temp5 = function () {
7007
- if (!!file) {
7008
- var formData = new FormData();
7009
- var name = file.name;
7010
- formData.append("file", file, name);
7011
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7012
- var _res$data2;
7013
-
7014
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7015
- data.profileImageFileName = imageUrl;
7016
6909
  });
6910
+ } catch (e) {
6911
+ return Promise.reject(e);
7017
6912
  }
7018
- }();
7019
-
7020
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7021
- }, function (err) {
7022
- var _err$response2, _err$response2$data;
6913
+ }
6914
+ }));
6915
+ } catch (err) {
6916
+ var _err$response2, _err$response2$data;
7023
6917
 
7024
- dispatch(setAlert({
7025
- type: "danger",
7026
- 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
7027
- }));
7028
- });
7029
-
7030
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7031
- } catch (e) {
7032
- return Promise.reject(e);
6918
+ dispatch(setAlert({
6919
+ type: "danger",
6920
+ 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
6921
+ }));
7033
6922
  }
7034
- }, [id, file]);
7035
-
7036
- var confirmChangePassword = function confirmChangePassword(data) {
7037
- try {
7038
- var _temp13 = function _temp13() {
7039
- dispatch(setLoading(false));
7040
- };
7041
-
7042
- dispatch(setLoading(true));
7043
6923
 
7044
- var _temp14 = _catch(function () {
7045
- return Promise.resolve(changePassword(data)).then(function () {
7046
- dispatch(setAlert({
7047
- type: "success",
7048
- message: "Change password successfully"
7049
- }));
7050
- });
7051
- }, function (e) {
7052
- var _e$response, _e$response$data;
6924
+ dispatch(setLoading(false));
6925
+ }, [filters]);
7053
6926
 
7054
- dispatch(setAlert({
7055
- type: "danger",
7056
- message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
7057
- }));
7058
- });
6927
+ var redirectLoginUser = function redirectLoginUser(res) {
6928
+ var _res$data2 = res.data,
6929
+ token = _res$data2.token,
6930
+ id = _res$data2.id,
6931
+ firstName = _res$data2.firstName,
6932
+ lastName = _res$data2.lastName,
6933
+ roles = _res$data2.roles,
6934
+ email = _res$data2.email,
6935
+ profileImageFileName = _res$data2.profileImageFileName;
6936
+ localStorage.setItem(ACCESS_TOKEN, token);
6937
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
6938
+ dispatch(setUser({
6939
+ id: id,
6940
+ firstName: firstName,
6941
+ lastName: lastName,
6942
+ roles: roles,
6943
+ email: email,
6944
+ profileImageFileName: profileImageFileName
6945
+ }));
7059
6946
 
7060
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7061
- } catch (e) {
7062
- return Promise.reject(e);
6947
+ if (isDistrict) {
6948
+ history.push(HOMEPAGE_DISTRICT$1);
6949
+ } else if (roles.includes("Admin")) {
6950
+ history.push(HOMEPAGE_ADMIN$1);
6951
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
6952
+ history.push(HOMEPAGE_TEACHER$1);
6953
+ } else if (roles.includes("Student")) {
6954
+ history.push(HOMEPAGE_STUDENT$1);
6955
+ } else if (roles.includes("Parent")) {
6956
+ history.push(HOMEPAGE_PARENT$1);
6957
+ } else if (roles.includes("EduTeacher")) {
6958
+ history.push(HOMEPAGE_EDU_TEACHER$1);
6959
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
6960
+ history.push(HOMEPAGE_TEACHER$1);
7063
6961
  }
7064
6962
  };
7065
6963
 
7066
- var forgotPasswordRequest = React.useCallback(function (data) {
6964
+ var swicthUser = React.useCallback(function (id) {
7067
6965
  try {
7068
- var _temp17 = function _temp17() {
7069
- dispatch(setLoading(false));
7070
- };
6966
+ var _temp6 = _catch(function () {
6967
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
6968
+ var data = res.data;
6969
+ dispatch(setModal({
6970
+ isOpen: true,
6971
+ type: "warning",
6972
+ message: "Do you want to impersonate this user?",
6973
+ onConfirm: function () {
6974
+ try {
6975
+ var _temp9 = function _temp9() {
6976
+ dispatch(setLoading(false));
6977
+ };
7071
6978
 
7072
- dispatch(setLoading(true));
6979
+ dispatch(setLoading(true));
7073
6980
 
7074
- var _temp18 = _catch(function () {
7075
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7076
- dispatch(setAlert({
7077
- type: "success",
7078
- message: "Send forgot password link successfully"
6981
+ var _temp10 = _catch(function () {
6982
+ var req = {
6983
+ email: data.email,
6984
+ password: "default",
6985
+ accessToken: data.token
6986
+ };
6987
+ return Promise.resolve(logIn(req)).then(function (res) {
6988
+ localStorage.clear();
6989
+ redirectLoginUser(res);
6990
+ });
6991
+ }, function (err) {
6992
+ var _err$response3, _err$response3$data;
6993
+
6994
+ setAlert({
6995
+ type: "danger",
6996
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
6997
+ });
6998
+ });
6999
+
7000
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7001
+ } catch (e) {
7002
+ return Promise.reject(e);
7003
+ }
7004
+ }
7079
7005
  }));
7080
7006
  });
7081
7007
  }, function (err) {
7082
- var _err$response3, _err$response3$data;
7008
+ var _err$response4, _err$response4$data;
7083
7009
 
7084
7010
  dispatch(setAlert({
7085
7011
  type: "danger",
7086
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Error occured"
7012
+ message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
7087
7013
  }));
7088
7014
  });
7089
7015
 
7090
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7016
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7091
7017
  } catch (e) {
7092
7018
  return Promise.reject(e);
7093
7019
  }
7094
- }, []);
7020
+ }, [filters]);
7021
+
7022
+ var reDirectDetailPage = function reDirectDetailPage(id) {
7023
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7024
+ history.push(url);
7025
+ };
7026
+
7095
7027
  return {
7096
- userDetail: userDetail,
7097
- backToList: backToList,
7098
- confirmData: confirmData,
7099
- file: file,
7100
- setFile: setFile,
7101
- edited: edited,
7102
- setEdited: setEdited,
7103
- setEditedTrue: setEditedTrue,
7104
- confirmChangePassword: confirmChangePassword,
7105
- forgotPasswordRequest: forgotPasswordRequest
7028
+ userList: userList,
7029
+ totalItems: totalItems,
7030
+ filters: filters,
7031
+ queryName: queryName,
7032
+ getData: getData,
7033
+ removeData: removeData,
7034
+ changeFilters: changeFilters,
7035
+ reDirectDetailPage: reDirectDetailPage,
7036
+ swicthUser: swicthUser
7106
7037
  };
7107
7038
  };
7108
7039
 
7109
- var userSchema = yup.object({
7110
- firstName: yup.string().required("First name is required"),
7111
- lastName: yup.string().required("Last name is required"),
7112
- dateOfBirth: yup.string().required("Date of birth is required"),
7113
- email: yup.string().email("Email is invalid").required("Email is required"),
7114
- roles: yup.array().of(yup.string()).min(1, "Role is required")
7115
- });
7116
-
7117
- var changePasswordSchema = yup.object({
7118
- oldPassword: yup.string().required("Current password is required"),
7119
- newPassword: yup.string().required("New password is required"),
7120
- confirmedNewPassword: yup.string().required("Confirm password is required")
7121
- });
7122
-
7123
- var CREATE_USER = "create_user";
7124
- var EDIT_USER_HEADER = "edit_user";
7125
- var CHANGE_PASSWORD$1 = "change_password";
7040
+ var SearchBox = function SearchBox(_ref) {
7041
+ var initValue = _ref.initValue,
7042
+ onSearch = _ref.onSearch,
7043
+ placeholder = _ref.placeholder,
7044
+ className = _ref.className,
7045
+ style = _ref.style;
7126
7046
 
7127
- var UserDetail = function UserDetail() {
7128
- var _useParams = reactRouterDom.useParams(),
7129
- id = _useParams.id;
7047
+ var _useState = React.useState(initValue),
7048
+ searchString = _useState[0],
7049
+ setSearchString = _useState[1];
7130
7050
 
7131
- var user = reactRedux.useSelector(function (state) {
7132
- return state.common.user;
7051
+ React.useEffect(function () {
7052
+ setSearchString(initValue);
7053
+ }, [initValue]);
7054
+ var onKeyUp = React.useCallback(function (e) {
7055
+ e.key === "Enter" && onSearch(searchString);
7056
+ }, [searchString, onSearch]);
7057
+ return React__default.createElement(reactstrap.Input, {
7058
+ placeholder: placeholder,
7059
+ value: searchString,
7060
+ onChange: function onChange(e) {
7061
+ return setSearchString(e.target.value);
7062
+ },
7063
+ onKeyUp: onKeyUp,
7064
+ className: className,
7065
+ style: style
7133
7066
  });
7067
+ };
7134
7068
 
7135
- var _useTranslation = reactI18next.useTranslation(),
7136
- t = _useTranslation.t;
7069
+ SearchBox.defaultProps = {
7070
+ placeholder: "Type something to search",
7071
+ className: "",
7072
+ style: {}
7073
+ };
7074
+ var SearchBox$1 = React.memo(SearchBox);
7137
7075
 
7138
- var _useUserDetail = useUserDetail(id),
7139
- userDetail = _useUserDetail.userDetail,
7140
- backToList = _useUserDetail.backToList,
7141
- confirmData = _useUserDetail.confirmData,
7142
- file = _useUserDetail.file,
7143
- setFile = _useUserDetail.setFile,
7144
- edited = _useUserDetail.edited,
7145
- setEdited = _useUserDetail.setEdited,
7146
- setEditedTrue = _useUserDetail.setEditedTrue,
7147
- confirmChangePassword = _useUserDetail.confirmChangePassword,
7148
- forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7076
+ var searchInputStyle = {
7077
+ height: 38
7078
+ };
7149
7079
 
7150
- var initialValueForm = {
7151
- oldPassword: "",
7152
- newPassword: "",
7153
- confirmedNewPassword: ""
7154
- };
7155
- var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7156
- var confirmText = !!id ? t("update") : t("create");
7080
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
7081
+ var text = _ref.text,
7082
+ initValue = _ref.initValue,
7083
+ onClick = _ref.onClick,
7084
+ onSearch = _ref.onSearch,
7085
+ placeholder = _ref.placeholder;
7086
+ return React__default.createElement("div", {
7087
+ className: "d-flex align-items-center"
7088
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
7089
+ text: text,
7090
+ onClick: onClick
7091
+ })), React__default.createElement("div", {
7092
+ className: "flex-grow-1 ml-2"
7093
+ }, React__default.createElement(SearchBox$1, {
7094
+ initValue: initValue,
7095
+ onSearch: onSearch,
7096
+ placeholder: placeholder,
7097
+ style: searchInputStyle
7098
+ })));
7099
+ };
7157
7100
 
7158
- var getFile = function getFile() {
7159
- var url = window.location.origin + "/api/ExportDataUser/" + id;
7160
- window.open(url);
7161
- };
7101
+ SearchBoxContainer.defaultProps = {
7102
+ placeholder: "Type something to search"
7103
+ };
7104
+
7105
+ var utcToLocalTime = (function (time, FORMAT) {
7106
+ if (time === DATE_MIN_VALUE) return "";
7107
+
7108
+ try {
7109
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7110
+ } catch (_unused) {
7111
+ return "";
7112
+ }
7113
+ });
7114
+
7115
+ var header$2 = "User";
7116
+
7117
+ var UserList = function UserList() {
7118
+ var _useUserList = useUserList(),
7119
+ queryName = _useUserList.queryName,
7120
+ userList = _useUserList.userList,
7121
+ totalItems = _useUserList.totalItems,
7122
+ filters = _useUserList.filters,
7123
+ removeData = _useUserList.removeData,
7124
+ changeFilters = _useUserList.changeFilters,
7125
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
7126
+ swicthUser = _useUserList.swicthUser;
7127
+
7128
+ var _useTranslation = reactI18next.useTranslation(),
7129
+ t = _useTranslation.t;
7130
+
7131
+ return React__default.createElement("div", {
7132
+ className: "fadeIn animated"
7133
+ }, React__default.createElement("h5", {
7134
+ className: "mb-2"
7135
+ }, t("" + header$2)), React__default.createElement(reactstrap.Row, {
7136
+ className: "my-2"
7137
+ }, React__default.createElement(reactstrap.Col, {
7138
+ md: 8
7139
+ }, React__default.createElement(SearchBoxContainer, {
7140
+ text: t("create_user"),
7141
+ onClick: function onClick() {
7142
+ return reDirectDetailPage();
7143
+ },
7144
+ initValue: !!queryName ? queryName : "",
7145
+ onSearch: function onSearch(searchString) {
7146
+ return changeFilters({
7147
+ searchString: searchString
7148
+ });
7149
+ },
7150
+ placeholder: t("type_something_to_search_by_user_name")
7151
+ })), React__default.createElement(reactstrap.Col, {
7152
+ md: 4,
7153
+ className: "d-flex justify-content-end align-items-center"
7154
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
7155
+ className: "mb-2"
7156
+ }, React__default.createElement(reactstrap.Col, {
7157
+ md: 12
7158
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
7159
+ bordered: true,
7160
+ hover: true,
7161
+ striped: true,
7162
+ responsive: true,
7163
+ size: "sm"
7164
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
7165
+ className: "align-top"
7166
+ }, t("name")), React__default.createElement("th", {
7167
+ className: "align-top"
7168
+ }, t("email")), React__default.createElement("th", {
7169
+ className: "align-top"
7170
+ }, t("age")), React__default.createElement("th", {
7171
+ className: "align-top"
7172
+ }, t("role")), React__default.createElement("th", {
7173
+ className: "align-top"
7174
+ }, t("active_status")), React__default.createElement("th", {
7175
+ className: "align-top"
7176
+ }, t("created_time")), React__default.createElement("th", {
7177
+ className: "text-center"
7178
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
7179
+ return React__default.createElement("tr", {
7180
+ key: record.id
7181
+ }, React__default.createElement("td", {
7182
+ className: "align-middle"
7183
+ }, React__default.createElement(LinkEditButton, {
7184
+ label: "" + record.fullName,
7185
+ onClick: function onClick() {
7186
+ return reDirectDetailPage(record.id);
7187
+ }
7188
+ })), React__default.createElement("td", {
7189
+ className: "align-middle"
7190
+ }, record.email), React__default.createElement("td", {
7191
+ className: "align-middle"
7192
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
7193
+ className: "align-middle"
7194
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
7195
+ className: "align-middle"
7196
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
7197
+ className: "align-middle"
7198
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
7199
+ className: "text-center align-middle"
7200
+ }, React__default.createElement(fa.FaUsersCog, {
7201
+ style: {
7202
+ fontSize: "18px",
7203
+ marginRight: "10px",
7204
+ cursor: "pointer"
7205
+ },
7206
+ onClick: function onClick() {
7207
+ return swicthUser(record.id);
7208
+ }
7209
+ }), React__default.createElement(DeleteButtonIcon, {
7210
+ onClick: function onClick() {
7211
+ return removeData(record.id);
7212
+ }
7213
+ })));
7214
+ })))) : React__default.createElement(EmptyDataAlert, {
7215
+ label: t("user")
7216
+ })), React__default.createElement(reactstrap.Col, {
7217
+ md: 12
7218
+ }, React__default.createElement(CustomPagination, {
7219
+ filters: filters,
7220
+ totalRecordCount: totalItems,
7221
+ changePageSize: function changePageSize(pageSize) {
7222
+ return changeFilters({
7223
+ pageSize: pageSize
7224
+ });
7225
+ },
7226
+ changePage: function changePage(currentPage) {
7227
+ return changeFilters({
7228
+ currentPage: currentPage
7229
+ });
7230
+ }
7231
+ }))));
7232
+ };
7233
+
7234
+ var MAX_FILE_SIZE = 20097152;
7235
+
7236
+ var UploadFileButton = function UploadFileButton(_ref) {
7237
+ var fileName = _ref.fileName,
7238
+ maxWidth = _ref.maxWidth,
7239
+ maxHeight = _ref.maxHeight,
7240
+ setFile = _ref.setFile,
7241
+ canDelete = _ref.canDelete,
7242
+ onDelete = _ref.onDelete,
7243
+ isCheckFeedBack = _ref.isCheckFeedBack,
7244
+ onAddImage = _ref.onAddImage;
7245
+ var dispatch = reactRedux.useDispatch();
7246
+
7247
+ var _useState = React.useState(""),
7248
+ imagePreviewUrl = _useState[0],
7249
+ setImagePreviewUrl = _useState[1];
7250
+
7251
+ var imageStyle = {
7252
+ maxWidth: maxWidth || "100%",
7253
+ maxHeight: maxHeight || "100%"
7254
+ };
7255
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7256
+
7257
+ var handleImageChange = function handleImageChange(e) {
7258
+ e.preventDefault();
7259
+ var reader = new FileReader();
7260
+ var newFile = e.target.files[0];
7261
+
7262
+ if (newFile.size > MAX_FILE_SIZE) {
7263
+ dispatch(setAlert({
7264
+ type: "danger",
7265
+ message: "File can't be larger than 2MB"
7266
+ }));
7267
+ return;
7268
+ }
7269
+
7270
+ reader.onloadend = function () {
7271
+ setFile(newFile);
7272
+ setImagePreviewUrl(reader.result);
7273
+ };
7274
+
7275
+ if (newFile) {
7276
+ reader.readAsDataURL(newFile);
7277
+ }
7278
+
7279
+ !!onAddImage && onAddImage();
7280
+ };
7281
+
7282
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
7283
+ style: imageStyle,
7284
+ src: imageSrc,
7285
+ alt: "image"
7286
+ }) : null;
7287
+ return React__default.createElement("div", {
7288
+ className: "mb-2"
7289
+ }, React__default.createElement(reactstrap.Form, {
7290
+ className: "mb-2"
7291
+ }, React__default.createElement(reactstrap.Input, {
7292
+ className: "d-none",
7293
+ type: "file",
7294
+ id: "uploadFile",
7295
+ onChange: handleImageChange,
7296
+ accept: "image/*"
7297
+ }), React__default.createElement("div", {
7298
+ className: "d-flex align-items-center"
7299
+ }, React__default.createElement(reactstrap.Label, {
7300
+ htmlFor: "uploadFile",
7301
+ role: "button",
7302
+ tabIndex: 0,
7303
+ className: styles["input-file-label"]
7304
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
7305
+ className: "fa fa-paperclip mr-1",
7306
+ "aria-hidden": "true"
7307
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
7308
+ size: "sm",
7309
+ color: "danger",
7310
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7311
+ onClick: function onClick() {
7312
+ setImagePreviewUrl(null);
7313
+ onDelete && onDelete();
7314
+ }
7315
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
7316
+ };
7317
+
7318
+ var initValue$3 = {
7319
+ id: "",
7320
+ firstName: "",
7321
+ lastName: "",
7322
+ email: "",
7323
+ dateOfBirth: "",
7324
+ roles: [],
7325
+ isActive: true,
7326
+ profileImageFileName: ""
7327
+ };
7328
+ var USER_LIST_URL = "/admin/user";
7329
+ var TITLE$8 = "User detail";
7330
+
7331
+ var useUserDetail = function useUserDetail(id) {
7332
+ var dispatch = reactRedux.useDispatch();
7333
+ var history = reactRouterDom.useHistory();
7334
+
7335
+ var _useState = React.useState(initValue$3),
7336
+ userDetail = _useState[0],
7337
+ setUserDetail = _useState[1];
7338
+
7339
+ var _useState2 = React.useState(null),
7340
+ file = _useState2[0],
7341
+ setFile = _useState2[1];
7342
+
7343
+ var _useState3 = React.useState(false),
7344
+ edited = _useState3[0],
7345
+ setEdited = _useState3[1];
7346
+
7347
+ var setEditedTrue = function setEditedTrue() {
7348
+ try {
7349
+ localStorage.setItem(window.location.href, "true");
7350
+ setEdited(true);
7351
+ return Promise.resolve();
7352
+ } catch (e) {
7353
+ return Promise.reject(e);
7354
+ }
7355
+ };
7356
+
7357
+ React.useEffect(function () {
7358
+ document.title = TITLE$8;
7359
+ setEdited(false);
7360
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7361
+ }, []);
7362
+ React.useEffect(function () {
7363
+ !!id && getData();
7364
+ }, [id]);
7365
+ var getData = React.useCallback(function () {
7366
+ try {
7367
+ var _temp3 = function _temp3() {
7368
+ dispatch(setLoading(false));
7369
+ };
7370
+
7371
+ dispatch(setLoading(true));
7372
+
7373
+ var _temp4 = _catch(function () {
7374
+ return Promise.resolve(getById$3(id)).then(function (res) {
7375
+ var _res$data;
7376
+
7377
+ setUserDetail(_extends({}, res.data, {
7378
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7379
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7380
+ }));
7381
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
7382
+ });
7383
+ }, function (err) {
7384
+ var _err$response, _err$response$data;
7385
+
7386
+ dispatch(setAlert({
7387
+ type: "danger",
7388
+ 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
7389
+ }));
7390
+ });
7391
+
7392
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7393
+ } catch (e) {
7394
+ return Promise.reject(e);
7395
+ }
7396
+ }, [id]);
7397
+ var backToList = React.useCallback(function (user) {
7398
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7399
+ }, []);
7400
+ var confirmData = React.useCallback(function (data) {
7401
+ try {
7402
+ var _temp9 = function _temp9() {
7403
+ dispatch(setLoading(false));
7404
+ };
7405
+
7406
+ dispatch(setLoading(true));
7407
+
7408
+ var _temp10 = _catch(function () {
7409
+ function _temp6() {
7410
+ var next = !!id ? update$5 : create$5;
7411
+ !id && delete data.id;
7412
+ return Promise.resolve(next(data)).then(function (result) {
7413
+ if (!!result) {
7414
+ getById$3(result.data.id).then(function (e) {
7415
+ backToList(e.data.fullName);
7416
+ });
7417
+ }
7418
+
7419
+ if (!id) {
7420
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7421
+ }
7422
+
7423
+ dispatch(setAlert({
7424
+ type: "success",
7425
+ message: (!!id ? "Update" : "Create") + " user successfully"
7426
+ }));
7427
+ });
7428
+ }
7429
+
7430
+ var _temp5 = function () {
7431
+ if (!!file) {
7432
+ var formData = new FormData();
7433
+ var name = file.name;
7434
+ formData.append("file", file, name);
7435
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7436
+ var _res$data2;
7437
+
7438
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7439
+ data.profileImageFileName = imageUrl;
7440
+ });
7441
+ }
7442
+ }();
7443
+
7444
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7445
+ }, function (err) {
7446
+ var _err$response2, _err$response2$data;
7447
+
7448
+ dispatch(setAlert({
7449
+ type: "danger",
7450
+ 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
7451
+ }));
7452
+ });
7453
+
7454
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7455
+ } catch (e) {
7456
+ return Promise.reject(e);
7457
+ }
7458
+ }, [id, file]);
7459
+
7460
+ var confirmChangePassword = function confirmChangePassword(data) {
7461
+ try {
7462
+ var _temp13 = function _temp13() {
7463
+ dispatch(setLoading(false));
7464
+ };
7465
+
7466
+ dispatch(setLoading(true));
7467
+
7468
+ var _temp14 = _catch(function () {
7469
+ return Promise.resolve(changePassword(data)).then(function () {
7470
+ dispatch(setAlert({
7471
+ type: "success",
7472
+ message: "Change password successfully"
7473
+ }));
7474
+ });
7475
+ }, function (e) {
7476
+ var _e$response, _e$response$data;
7477
+
7478
+ dispatch(setAlert({
7479
+ type: "danger",
7480
+ message: ((_e$response = e.response) === null || _e$response === void 0 ? void 0 : (_e$response$data = _e$response.data) === null || _e$response$data === void 0 ? void 0 : _e$response$data.title) || e.message
7481
+ }));
7482
+ });
7483
+
7484
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7485
+ } catch (e) {
7486
+ return Promise.reject(e);
7487
+ }
7488
+ };
7489
+
7490
+ var forgotPasswordRequest = React.useCallback(function (data) {
7491
+ try {
7492
+ var _temp17 = function _temp17() {
7493
+ dispatch(setLoading(false));
7494
+ };
7495
+
7496
+ dispatch(setLoading(true));
7497
+
7498
+ var _temp18 = _catch(function () {
7499
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7500
+ dispatch(setAlert({
7501
+ type: "success",
7502
+ message: "Send forgot password link successfully"
7503
+ }));
7504
+ });
7505
+ }, function (err) {
7506
+ var _err$response3, _err$response3$data;
7507
+
7508
+ dispatch(setAlert({
7509
+ type: "danger",
7510
+ message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message || "Error occured"
7511
+ }));
7512
+ });
7513
+
7514
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7515
+ } catch (e) {
7516
+ return Promise.reject(e);
7517
+ }
7518
+ }, []);
7519
+ return {
7520
+ userDetail: userDetail,
7521
+ backToList: backToList,
7522
+ confirmData: confirmData,
7523
+ file: file,
7524
+ setFile: setFile,
7525
+ edited: edited,
7526
+ setEdited: setEdited,
7527
+ setEditedTrue: setEditedTrue,
7528
+ confirmChangePassword: confirmChangePassword,
7529
+ forgotPasswordRequest: forgotPasswordRequest
7530
+ };
7531
+ };
7532
+
7533
+ var userSchema = yup.object({
7534
+ firstName: yup.string().required("First name is required"),
7535
+ lastName: yup.string().required("Last name is required"),
7536
+ dateOfBirth: yup.string().required("Date of birth is required"),
7537
+ email: yup.string().email("Email is invalid").required("Email is required"),
7538
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7539
+ });
7540
+
7541
+ var changePasswordSchema = yup.object({
7542
+ oldPassword: yup.string().required("Current password is required"),
7543
+ newPassword: yup.string().required("New password is required"),
7544
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7545
+ });
7546
+
7547
+ var CREATE_USER = "create_user";
7548
+ var EDIT_USER_HEADER = "edit_user";
7549
+ var CHANGE_PASSWORD$1 = "change_password";
7550
+
7551
+ var UserDetail = function UserDetail() {
7552
+ var _useParams = reactRouterDom.useParams(),
7553
+ id = _useParams.id;
7554
+
7555
+ var user = reactRedux.useSelector(function (state) {
7556
+ return state.common.user;
7557
+ });
7558
+
7559
+ var _useTranslation = reactI18next.useTranslation(),
7560
+ t = _useTranslation.t;
7561
+
7562
+ var _useUserDetail = useUserDetail(id),
7563
+ userDetail = _useUserDetail.userDetail,
7564
+ backToList = _useUserDetail.backToList,
7565
+ confirmData = _useUserDetail.confirmData,
7566
+ file = _useUserDetail.file,
7567
+ setFile = _useUserDetail.setFile,
7568
+ edited = _useUserDetail.edited,
7569
+ setEdited = _useUserDetail.setEdited,
7570
+ setEditedTrue = _useUserDetail.setEditedTrue,
7571
+ confirmChangePassword = _useUserDetail.confirmChangePassword,
7572
+ forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7573
+
7574
+ var initialValueForm = {
7575
+ oldPassword: "",
7576
+ newPassword: "",
7577
+ confirmedNewPassword: ""
7578
+ };
7579
+ var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7580
+ var confirmText = !!id ? t("update") : t("create");
7581
+
7582
+ var getFile = function getFile() {
7583
+ var url = window.location.origin + "/api/ExportDataUser/" + id;
7584
+ window.open(url);
7585
+ };
7162
7586
 
7163
7587
  var onResetPw = function onResetPw(email) {
7164
7588
  try {
@@ -7595,42 +8019,6 @@ var CreatableSelector = function CreatableSelector(props) {
7595
8019
  });
7596
8020
  };
7597
8021
 
7598
- var SearchBox = function SearchBox(_ref) {
7599
- var initValue = _ref.initValue,
7600
- onSearch = _ref.onSearch,
7601
- placeholder = _ref.placeholder,
7602
- className = _ref.className,
7603
- style = _ref.style;
7604
-
7605
- var _useState = React.useState(initValue),
7606
- searchString = _useState[0],
7607
- setSearchString = _useState[1];
7608
-
7609
- React.useEffect(function () {
7610
- setSearchString(initValue);
7611
- }, [initValue]);
7612
- var onKeyUp = React.useCallback(function (e) {
7613
- e.key === "Enter" && onSearch(searchString);
7614
- }, [searchString, onSearch]);
7615
- return React__default.createElement(reactstrap.Input, {
7616
- placeholder: placeholder,
7617
- value: searchString,
7618
- onChange: function onChange(e) {
7619
- return setSearchString(e.target.value);
7620
- },
7621
- onKeyUp: onKeyUp,
7622
- className: className,
7623
- style: style
7624
- });
7625
- };
7626
-
7627
- SearchBox.defaultProps = {
7628
- placeholder: "Type something to search",
7629
- className: "",
7630
- style: {}
7631
- };
7632
- var SearchBox$1 = React.memo(SearchBox);
7633
-
7634
8022
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7635
8023
  var id = props.id;
7636
8024
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -7986,23 +8374,13 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
7986
8374
 
7987
8375
  var NotificationStatusSelector$1 = React.memo(NotificationStatusSelector);
7988
8376
 
7989
- var utcToLocalTime = (function (time, FORMAT) {
7990
- if (time === DATE_MIN_VALUE) return "";
7991
-
7992
- try {
7993
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7994
- } catch (_unused) {
7995
- return "";
7996
- }
7997
- });
7998
-
7999
8377
  var defaultFilters = {
8000
8378
  currentPage: 1,
8001
8379
  pageSize: 30,
8002
8380
  searchString: "",
8003
8381
  isRead: false
8004
8382
  };
8005
- var TITLE$8 = "Notification list";
8383
+ var TITLE$9 = "Notification list";
8006
8384
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8007
8385
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8008
8386
 
@@ -8127,7 +8505,7 @@ var useNotificationList = function useNotificationList() {
8127
8505
  }
8128
8506
  }, [filters]);
8129
8507
  React.useEffect(function () {
8130
- document.title = TITLE$8;
8508
+ document.title = TITLE$9;
8131
8509
  }, []);
8132
8510
  React.useEffect(function () {
8133
8511
  getData();
@@ -8212,7 +8590,7 @@ var useNotificationList = function useNotificationList() {
8212
8590
  };
8213
8591
  };
8214
8592
 
8215
- var header$2 = "Notification list";
8593
+ var header$3 = "Notification list";
8216
8594
  var ICON_SIZE = 20;
8217
8595
 
8218
8596
  var NotificationList = function NotificationList() {
@@ -8233,7 +8611,7 @@ var NotificationList = function NotificationList() {
8233
8611
  }
8234
8612
  }, React__default.createElement("h5", {
8235
8613
  className: "mb-2"
8236
- }, header$2), React__default.createElement(reactstrap.Row, {
8614
+ }, header$3), React__default.createElement(reactstrap.Row, {
8237
8615
  className: "my-2"
8238
8616
  }, React__default.createElement(reactstrap.Col, {
8239
8617
  md: 8
@@ -8323,43 +8701,14 @@ var NotificationList = function NotificationList() {
8323
8701
  changePageSize: function changePageSize(pageSize) {
8324
8702
  return changeFilters({
8325
8703
  pageSize: pageSize
8326
- });
8327
- },
8328
- changePage: function changePage(currentPage) {
8329
- return changeFilters({
8330
- currentPage: currentPage
8331
- });
8332
- }
8333
- }))));
8334
- };
8335
-
8336
- var searchInputStyle = {
8337
- height: 38
8338
- };
8339
-
8340
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
8341
- var text = _ref.text,
8342
- initValue = _ref.initValue,
8343
- onClick = _ref.onClick,
8344
- onSearch = _ref.onSearch,
8345
- placeholder = _ref.placeholder;
8346
- return React__default.createElement("div", {
8347
- className: "d-flex align-items-center"
8348
- }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8349
- text: text,
8350
- onClick: onClick
8351
- })), React__default.createElement("div", {
8352
- className: "flex-grow-1 ml-2"
8353
- }, React__default.createElement(SearchBox$1, {
8354
- initValue: initValue,
8355
- onSearch: onSearch,
8356
- placeholder: placeholder,
8357
- style: searchInputStyle
8358
- })));
8359
- };
8360
-
8361
- SearchBoxContainer.defaultProps = {
8362
- placeholder: "Type something to search"
8704
+ });
8705
+ },
8706
+ changePage: function changePage(currentPage) {
8707
+ return changeFilters({
8708
+ currentPage: currentPage
8709
+ });
8710
+ }
8711
+ }))));
8363
8712
  };
8364
8713
 
8365
8714
  var CustomTabs = function CustomTabs(props) {
@@ -8766,7 +9115,7 @@ var get$8 = function get(filter) {
8766
9115
  });
8767
9116
  };
8768
9117
 
8769
- var TITLE$9 = "Gallery";
9118
+ var TITLE$a = "Gallery";
8770
9119
  var defaultFilter = {
8771
9120
  searchString: ""
8772
9121
  };
@@ -9003,7 +9352,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9003
9352
  }
9004
9353
  }, [dispatch, filters]);
9005
9354
  React.useEffect(function () {
9006
- document.title = TITLE$9;
9355
+ document.title = TITLE$a;
9007
9356
  dispatch(setTargetMedia({
9008
9357
  targetMedia: undefined
9009
9358
  }));
@@ -9195,7 +9544,7 @@ var MediaDetail = function MediaDetail(_ref) {
9195
9544
 
9196
9545
  var MediaDetail$1 = React__default.memo(MediaDetail);
9197
9546
 
9198
- var header$3 = "Gallery";
9547
+ var header$4 = "Gallery";
9199
9548
 
9200
9549
  var GalleryList = function GalleryList(_ref) {
9201
9550
  var isLibrary = _ref.isLibrary;
@@ -9206,7 +9555,7 @@ var GalleryList = function GalleryList(_ref) {
9206
9555
  className: "fadeIn animated"
9207
9556
  }, !isLibrary && React__default.createElement("h5", {
9208
9557
  className: "mb-2"
9209
- }, header$3), React__default.createElement(reactstrap.Row, {
9558
+ }, header$4), React__default.createElement(reactstrap.Row, {
9210
9559
  className: "mb-2"
9211
9560
  }, React__default.createElement(reactstrap.Col, {
9212
9561
  md: 8
@@ -9832,9 +10181,6 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
9832
10181
  });
9833
10182
  });
9834
10183
 
9835
- var setUserList = toolkit.createAction("users/setUserList");
9836
- var setStudentList = toolkit.createAction("users/setStudentList");
9837
-
9838
10184
  var initialState$f = {
9839
10185
  userList: [],
9840
10186
  totalItems: 0,
@@ -10308,591 +10654,239 @@ var sessionPlayerReducer = toolkit.createReducer(initialState$u, function (build
10308
10654
  questionId: questionId,
10309
10655
  text: text
10310
10656
  });
10311
- } else {
10312
- existedResponse.text = text;
10313
- }
10314
-
10315
- return _extends({}, state, {
10316
- results: state.results.map(function (result) {
10317
- return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10318
- })
10319
- });
10320
- }).addCase(setStartTime, function (state, action) {
10321
- var startTime = action.payload;
10322
- if (!startTime) return state;
10323
- state.startTime = startTime;
10324
- }).addCase(reset, function (_state, _action) {
10325
- return initialState$u;
10326
- });
10327
- });
10328
-
10329
- var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10330
- var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10331
-
10332
- var initialState$v = {
10333
- id: 0,
10334
- questions: [{
10335
- id: 0,
10336
- text: "",
10337
- type: "",
10338
- subQuestions: [],
10339
- answers: []
10340
- }],
10341
- questionResponse: []
10342
- };
10343
- var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10344
- builder.addCase(setDataPlayer, function (_state, action) {
10345
- return action.payload;
10346
- }).addCase(answerQuestionDataPlayer, function (state, action) {
10347
- var _action$payload = action.payload,
10348
- questionId = _action$payload.questionId,
10349
- text = _action$payload.text;
10350
- var questionResponse = state.questionResponse;
10351
- if (!questionResponse) return state;
10352
- var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10353
- var existedResponse = questionResponseCloner.find(function (response) {
10354
- return response.questionId === questionId;
10355
- });
10356
-
10357
- if (!existedResponse) {
10358
- questionResponseCloner.push({
10359
- questionId: questionId,
10360
- text: text
10361
- });
10362
- } else {
10363
- existedResponse.text = text;
10364
- }
10365
-
10366
- return _extends({}, state, {
10367
- questionResponse: questionResponseCloner
10368
- });
10369
- }).addCase(reset, function (_state, _action) {
10370
- return initialState$v;
10371
- });
10372
- });
10373
-
10374
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10375
-
10376
- var initialState$w = {
10377
- certificateList: [],
10378
- totalItems: 0
10379
- };
10380
- var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10381
- builder.addCase(setCertificateList, function (state, action) {
10382
- state.certificateList = action.payload.certificateList;
10383
- state.totalItems = action.payload.totalItems;
10384
- }).addCase(reset, function (_state, _action) {
10385
- return initialState$w;
10386
- });
10387
- });
10388
-
10389
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10390
-
10391
- var initialState$x = {
10392
- improveMyClassList: []
10393
- };
10394
- var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10395
- builder.addCase(setImproveMyClass, function (state, action) {
10396
- state.improveMyClassList = action.payload;
10397
- }).addCase(reset, function (_state, _action) {
10398
- return initialState$x;
10399
- });
10400
- });
10401
-
10402
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10403
-
10404
- var initialState$y = {
10405
- filterWidget: "Year"
10406
- };
10407
- var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10408
- builder.addCase(setFilterWidget, function (state, action) {
10409
- state.filterWidget = action.payload.filterWidget;
10410
- }).addCase(reset, function (_state, _action) {
10411
- return initialState$y;
10412
- });
10413
- });
10414
-
10415
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10416
-
10417
- var initialState$z = {
10418
- bandScoreList: [],
10419
- totalItems: 0
10420
- };
10421
- var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10422
- builder.addCase(setBandScoreList, function (state, action) {
10423
- state.bandScoreList = action.payload.bandScoreList;
10424
- state.totalItems = action.payload.totalItems;
10425
- }).addCase(reset, function (_state, _action) {
10426
- return initialState$z;
10427
- });
10428
- });
10429
-
10430
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10431
-
10432
- var initialState$A = {
10433
- schoolBlankDayList: [],
10434
- totalItems: 0
10435
- };
10436
- var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10437
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10438
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10439
- state.totalItems = action.payload.totalItems;
10440
- }).addCase(reset, function (_state, _action) {
10441
- return initialState$A;
10442
- });
10443
- });
10444
-
10445
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10446
-
10447
- var initialState$B = {
10448
- studentIdSelectedByTeacher: 0
10449
- };
10450
- var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10451
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10452
- state.studentIdSelectedByTeacher = action.payload;
10453
- }).addCase(reset, function (_state, _action) {
10454
- return initialState$B;
10455
- });
10456
- });
10457
-
10458
- var rootReducer = combineReducers({
10459
- common: commonReducer,
10460
- classes: classReducer,
10461
- conferenceRubrics: conferenceRubricReducer,
10462
- faqs: commonReducer$1,
10463
- skills: commonReducer$2,
10464
- emailTemplate: emailTemplateReducer,
10465
- suggestionBank: suggestionBankReducer,
10466
- learningStrategy: learningStrategyReducer,
10467
- subjects: commonReducer$3,
10468
- learningSupportCategories: commonReducer$4,
10469
- questionBank: questionBankReducer,
10470
- badges: commonReducer$5,
10471
- semester: commonReducer$6,
10472
- goalExamples: commonReducer$8,
10473
- users: commonReducer$9,
10474
- reflections: reflectionReducer,
10475
- reflectionResults: reflectionReducer$1,
10476
- feedbacks: commonReducer$a,
10477
- assessments: commonReducer$b,
10478
- questionByCategory: questionCategoryReducer,
10479
- mailCategory: questionBankReducer$1,
10480
- questionCate: questionCateReducer,
10481
- notification: questionBankReducer$2,
10482
- myStudent: commonReducer$c,
10483
- assignments: commonReducer$7,
10484
- assistants: assistantReducer,
10485
- sesstionTemplates: sessionTemplateReducer,
10486
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10487
- tutorialScreens: tutorialScreenReducer,
10488
- customAlerts: commonReducer$d,
10489
- gallery: commonReducer$e,
10490
- dashboard: dashboardReducer,
10491
- sessionPlayer: sessionPlayerReducer,
10492
- dataPlayer: dataPlayer,
10493
- certificate: commonReducer$f,
10494
- improveMyClass: commonReducer$g,
10495
- widget: widgetReducer,
10496
- bandScores: commonReducer$h,
10497
- schoolBlankDays: commonReducer$i,
10498
- navMobileReducer: navMobileReducer
10499
- });
10500
-
10501
- var store = toolkit.configureStore({
10502
- reducer: rootReducer,
10503
- middleware: function middleware(getDefaultMiddleware) {
10504
- return getDefaultMiddleware({
10505
- serializableCheck: false
10506
- }).concat(logger);
10507
- }
10508
- });
10509
-
10510
- var isInViewport = function isInViewport(el) {
10511
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10512
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10513
- };
10514
-
10515
- var debounce = function debounce(callback, wait) {
10516
- var timeout = null;
10517
- return function () {
10518
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10519
- args[_key] = arguments[_key];
10520
- }
10521
-
10522
- var next = function next() {
10523
- return callback.apply(void 0, args);
10524
- };
10525
-
10526
- clearTimeout(timeout);
10527
- timeout = setTimeout(next, wait);
10528
- };
10529
- };
10530
-
10531
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10532
- var p = document.createElement("p");
10533
- p.innerHTML = htmlString;
10534
- var text = p.innerText;
10535
- p.remove();
10536
- return text;
10537
- };
10538
-
10539
- var generateRandomString = (function () {
10540
- return (Math.random() + 1).toString(36).substring(7);
10541
- });
10542
-
10543
- var amplitudeClient = amplitude.getInstance();
10544
-
10545
- var USER_URL$2 = "/admin/user";
10546
- var CREATE_USER_URL = "/admin/create-user";
10547
- var TITLE$a = "User list";
10548
- var HOMEPAGE_TEACHER$1 = "/home";
10549
- var HOMEPAGE_STUDENT$1 = "/home";
10550
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10551
- var HOMEPAGE_PARENT$1 = "/parent";
10552
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10553
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10657
+ } else {
10658
+ existedResponse.text = text;
10659
+ }
10554
10660
 
10555
- var useUserList = function useUserList() {
10556
- var history = reactRouterDom.useHistory();
10557
- var query = new URLSearchParams(location.search);
10558
- var queryName = query.get("query");
10559
- var userList = reactRedux.useSelector(function (state) {
10560
- return state.users.userList;
10561
- });
10562
- var totalItems = reactRedux.useSelector(function (state) {
10563
- return state.users.totalItems;
10661
+ return _extends({}, state, {
10662
+ results: state.results.map(function (result) {
10663
+ return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10664
+ })
10665
+ });
10666
+ }).addCase(setStartTime, function (state, action) {
10667
+ var startTime = action.payload;
10668
+ if (!startTime) return state;
10669
+ state.startTime = startTime;
10670
+ }).addCase(reset, function (_state, _action) {
10671
+ return initialState$u;
10564
10672
  });
10673
+ });
10565
10674
 
10566
- var _useFilters = useFilters(),
10567
- filters = _useFilters.filters,
10568
- changeFilters = _useFilters.changeFilters;
10569
-
10570
- var _useState = React.useState(!!queryName ? queryName : ""),
10571
- fullName = _useState[0],
10572
- setFullName = _useState[1];
10675
+ var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10676
+ var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10573
10677
 
10574
- var isDistrict = window.location.host.includes("-district");
10575
- var dispatch = reactRedux.useDispatch();
10576
- var getData = React.useCallback(function (fullName) {
10577
- try {
10578
- var _temp3 = function _temp3() {
10579
- dispatch(setLoading(false));
10580
- };
10678
+ var initialState$v = {
10679
+ id: 0,
10680
+ questions: [{
10681
+ id: 0,
10682
+ text: "",
10683
+ type: "",
10684
+ subQuestions: [],
10685
+ answers: []
10686
+ }],
10687
+ questionResponse: []
10688
+ };
10689
+ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10690
+ builder.addCase(setDataPlayer, function (_state, action) {
10691
+ return action.payload;
10692
+ }).addCase(answerQuestionDataPlayer, function (state, action) {
10693
+ var _action$payload = action.payload,
10694
+ questionId = _action$payload.questionId,
10695
+ text = _action$payload.text;
10696
+ var questionResponse = state.questionResponse;
10697
+ if (!questionResponse) return state;
10698
+ var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10699
+ var existedResponse = questionResponseCloner.find(function (response) {
10700
+ return response.questionId === questionId;
10701
+ });
10581
10702
 
10582
- dispatch(setLoading(true));
10703
+ if (!existedResponse) {
10704
+ questionResponseCloner.push({
10705
+ questionId: questionId,
10706
+ text: text
10707
+ });
10708
+ } else {
10709
+ existedResponse.text = text;
10710
+ }
10583
10711
 
10584
- var _temp4 = _catch(function () {
10585
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10586
- searchString: fullName
10587
- })) : get$5(filters)).then(function (res) {
10588
- var _res$data = res.data,
10589
- items = _res$data.items,
10590
- totalItems = _res$data.totalItems;
10712
+ return _extends({}, state, {
10713
+ questionResponse: questionResponseCloner
10714
+ });
10715
+ }).addCase(reset, function (_state, _action) {
10716
+ return initialState$v;
10717
+ });
10718
+ });
10591
10719
 
10592
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10593
- var user = _step.value;
10594
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10595
- }
10720
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10596
10721
 
10597
- dispatch(setUserList({
10598
- userList: items,
10599
- totalItems: totalItems
10600
- }));
10601
- });
10602
- }, function (err) {
10603
- var _err$response, _err$response$data;
10722
+ var initialState$w = {
10723
+ certificateList: [],
10724
+ totalItems: 0
10725
+ };
10726
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10727
+ builder.addCase(setCertificateList, function (state, action) {
10728
+ state.certificateList = action.payload.certificateList;
10729
+ state.totalItems = action.payload.totalItems;
10730
+ }).addCase(reset, function (_state, _action) {
10731
+ return initialState$w;
10732
+ });
10733
+ });
10604
10734
 
10605
- dispatch(setAlert({
10606
- type: "danger",
10607
- 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
10608
- }));
10609
- });
10735
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10610
10736
 
10611
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10612
- } catch (e) {
10613
- return Promise.reject(e);
10614
- }
10615
- }, [dispatch, filters]);
10616
- React.useEffect(function () {
10617
- document.title = TITLE$a;
10618
- }, []);
10619
- React.useEffect(function () {
10620
- if (!!fullName) {
10621
- getData(fullName);
10622
- setFullName(null);
10623
- } else {
10624
- getData();
10625
- }
10626
- }, [filters]);
10627
- var removeData = React.useCallback(function (id) {
10628
- dispatch(setLoading(true));
10737
+ var initialState$x = {
10738
+ improveMyClassList: []
10739
+ };
10740
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10741
+ builder.addCase(setImproveMyClass, function (state, action) {
10742
+ state.improveMyClassList = action.payload;
10743
+ }).addCase(reset, function (_state, _action) {
10744
+ return initialState$x;
10745
+ });
10746
+ });
10629
10747
 
10630
- try {
10631
- dispatch(setModal({
10632
- isOpen: true,
10633
- type: "warning",
10634
- message: "Do you want to remove this user?",
10635
- onConfirm: function () {
10636
- try {
10637
- return Promise.resolve(remove$3(id)).then(function () {
10638
- dispatch(setAlert({
10639
- type: "success",
10640
- message: "Remove user successfully"
10641
- }));
10642
- changeFilters({
10643
- currentPage: 1
10644
- });
10645
- });
10646
- } catch (e) {
10647
- return Promise.reject(e);
10648
- }
10649
- }
10650
- }));
10651
- } catch (err) {
10652
- var _err$response2, _err$response2$data;
10748
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10653
10749
 
10654
- dispatch(setAlert({
10655
- type: "danger",
10656
- 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
10657
- }));
10658
- }
10750
+ var initialState$y = {
10751
+ filterWidget: "Year"
10752
+ };
10753
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10754
+ builder.addCase(setFilterWidget, function (state, action) {
10755
+ state.filterWidget = action.payload.filterWidget;
10756
+ }).addCase(reset, function (_state, _action) {
10757
+ return initialState$y;
10758
+ });
10759
+ });
10659
10760
 
10660
- dispatch(setLoading(false));
10661
- }, [filters]);
10761
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10662
10762
 
10663
- var redirectLoginUser = function redirectLoginUser(res) {
10664
- var _res$data2 = res.data,
10665
- token = _res$data2.token,
10666
- id = _res$data2.id,
10667
- firstName = _res$data2.firstName,
10668
- lastName = _res$data2.lastName,
10669
- roles = _res$data2.roles,
10670
- email = _res$data2.email,
10671
- profileImageFileName = _res$data2.profileImageFileName;
10672
- localStorage.setItem(ACCESS_TOKEN, token);
10673
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10674
- dispatch(setUser({
10675
- id: id,
10676
- firstName: firstName,
10677
- lastName: lastName,
10678
- roles: roles,
10679
- email: email,
10680
- profileImageFileName: profileImageFileName
10681
- }));
10763
+ var initialState$z = {
10764
+ bandScoreList: [],
10765
+ totalItems: 0
10766
+ };
10767
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10768
+ builder.addCase(setBandScoreList, function (state, action) {
10769
+ state.bandScoreList = action.payload.bandScoreList;
10770
+ state.totalItems = action.payload.totalItems;
10771
+ }).addCase(reset, function (_state, _action) {
10772
+ return initialState$z;
10773
+ });
10774
+ });
10682
10775
 
10683
- if (isDistrict) {
10684
- history.push(HOMEPAGE_DISTRICT$1);
10685
- } else if (roles.includes("Admin")) {
10686
- history.push(HOMEPAGE_ADMIN$1);
10687
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10688
- history.push(HOMEPAGE_TEACHER$1);
10689
- } else if (roles.includes("Student")) {
10690
- history.push(HOMEPAGE_STUDENT$1);
10691
- } else if (roles.includes("Parent")) {
10692
- history.push(HOMEPAGE_PARENT$1);
10693
- } else if (roles.includes("EduTeacher")) {
10694
- history.push(HOMEPAGE_EDU_TEACHER$1);
10695
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10696
- history.push(HOMEPAGE_TEACHER$1);
10697
- }
10698
- };
10776
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10699
10777
 
10700
- var swicthUser = React.useCallback(function (id) {
10701
- try {
10702
- var _temp6 = _catch(function () {
10703
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
10704
- var data = res.data;
10705
- dispatch(setModal({
10706
- isOpen: true,
10707
- type: "warning",
10708
- message: "Do you want to impersonate this user?",
10709
- onConfirm: function () {
10710
- try {
10711
- var _temp9 = function _temp9() {
10712
- dispatch(setLoading(false));
10713
- };
10778
+ var initialState$A = {
10779
+ schoolBlankDayList: [],
10780
+ totalItems: 0
10781
+ };
10782
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10783
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10784
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10785
+ state.totalItems = action.payload.totalItems;
10786
+ }).addCase(reset, function (_state, _action) {
10787
+ return initialState$A;
10788
+ });
10789
+ });
10714
10790
 
10715
- dispatch(setLoading(true));
10791
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10716
10792
 
10717
- var _temp10 = _catch(function () {
10718
- var req = {
10719
- email: data.email,
10720
- password: "default",
10721
- accessToken: data.token
10722
- };
10723
- return Promise.resolve(logIn(req)).then(function (res) {
10724
- localStorage.clear();
10725
- redirectLoginUser(res);
10726
- });
10727
- }, function (err) {
10728
- var _err$response3, _err$response3$data;
10793
+ var initialState$B = {
10794
+ studentIdSelectedByTeacher: 0
10795
+ };
10796
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10797
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10798
+ state.studentIdSelectedByTeacher = action.payload;
10799
+ }).addCase(reset, function (_state, _action) {
10800
+ return initialState$B;
10801
+ });
10802
+ });
10729
10803
 
10730
- setAlert({
10731
- type: "danger",
10732
- message: ((_err$response3 = err.response) === null || _err$response3 === void 0 ? void 0 : (_err$response3$data = _err$response3.data) === null || _err$response3$data === void 0 ? void 0 : _err$response3$data.title) || err.message
10733
- });
10734
- });
10804
+ var rootReducer = combineReducers({
10805
+ common: commonReducer,
10806
+ classes: classReducer,
10807
+ conferenceRubrics: conferenceRubricReducer,
10808
+ faqs: commonReducer$1,
10809
+ skills: commonReducer$2,
10810
+ emailTemplate: emailTemplateReducer,
10811
+ suggestionBank: suggestionBankReducer,
10812
+ learningStrategy: learningStrategyReducer,
10813
+ subjects: commonReducer$3,
10814
+ learningSupportCategories: commonReducer$4,
10815
+ questionBank: questionBankReducer,
10816
+ badges: commonReducer$5,
10817
+ semester: commonReducer$6,
10818
+ goalExamples: commonReducer$8,
10819
+ users: commonReducer$9,
10820
+ reflections: reflectionReducer,
10821
+ reflectionResults: reflectionReducer$1,
10822
+ feedbacks: commonReducer$a,
10823
+ assessments: commonReducer$b,
10824
+ questionByCategory: questionCategoryReducer,
10825
+ mailCategory: questionBankReducer$1,
10826
+ questionCate: questionCateReducer,
10827
+ notification: questionBankReducer$2,
10828
+ myStudent: commonReducer$c,
10829
+ assignments: commonReducer$7,
10830
+ assistants: assistantReducer,
10831
+ sesstionTemplates: sessionTemplateReducer,
10832
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10833
+ tutorialScreens: tutorialScreenReducer,
10834
+ customAlerts: commonReducer$d,
10835
+ gallery: commonReducer$e,
10836
+ dashboard: dashboardReducer,
10837
+ sessionPlayer: sessionPlayerReducer,
10838
+ dataPlayer: dataPlayer,
10839
+ certificate: commonReducer$f,
10840
+ improveMyClass: commonReducer$g,
10841
+ widget: widgetReducer,
10842
+ bandScores: commonReducer$h,
10843
+ schoolBlankDays: commonReducer$i,
10844
+ navMobileReducer: navMobileReducer
10845
+ });
10735
10846
 
10736
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10737
- } catch (e) {
10738
- return Promise.reject(e);
10739
- }
10740
- }
10741
- }));
10742
- });
10743
- }, function (err) {
10744
- var _err$response4, _err$response4$data;
10847
+ var store = toolkit.configureStore({
10848
+ reducer: rootReducer,
10849
+ middleware: function middleware(getDefaultMiddleware) {
10850
+ return getDefaultMiddleware({
10851
+ serializableCheck: false
10852
+ }).concat(logger);
10853
+ }
10854
+ });
10745
10855
 
10746
- dispatch(setAlert({
10747
- type: "danger",
10748
- message: ((_err$response4 = err.response) === null || _err$response4 === void 0 ? void 0 : (_err$response4$data = _err$response4.data) === null || _err$response4$data === void 0 ? void 0 : _err$response4$data.title) || err.message
10749
- }));
10750
- });
10856
+ var isInViewport = function isInViewport(el) {
10857
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10858
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10859
+ };
10751
10860
 
10752
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10753
- } catch (e) {
10754
- return Promise.reject(e);
10861
+ var debounce = function debounce(callback, wait) {
10862
+ var timeout = null;
10863
+ return function () {
10864
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10865
+ args[_key] = arguments[_key];
10755
10866
  }
10756
- }, [filters]);
10757
10867
 
10758
- var reDirectDetailPage = function reDirectDetailPage(id) {
10759
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10760
- history.push(url);
10761
- };
10868
+ var next = function next() {
10869
+ return callback.apply(void 0, args);
10870
+ };
10762
10871
 
10763
- return {
10764
- userList: userList,
10765
- totalItems: totalItems,
10766
- filters: filters,
10767
- queryName: queryName,
10768
- getData: getData,
10769
- removeData: removeData,
10770
- changeFilters: changeFilters,
10771
- reDirectDetailPage: reDirectDetailPage,
10772
- swicthUser: swicthUser
10872
+ clearTimeout(timeout);
10873
+ timeout = setTimeout(next, wait);
10773
10874
  };
10774
10875
  };
10775
10876
 
10776
- var header$4 = "User";
10777
-
10778
- var UserList = function UserList() {
10779
- var _useUserList = useUserList(),
10780
- queryName = _useUserList.queryName,
10781
- userList = _useUserList.userList,
10782
- totalItems = _useUserList.totalItems,
10783
- filters = _useUserList.filters,
10784
- removeData = _useUserList.removeData,
10785
- changeFilters = _useUserList.changeFilters,
10786
- reDirectDetailPage = _useUserList.reDirectDetailPage,
10787
- swicthUser = _useUserList.swicthUser;
10788
-
10789
- var _useTranslation = reactI18next.useTranslation(),
10790
- t = _useTranslation.t;
10791
-
10792
- return React__default.createElement("div", {
10793
- className: "fadeIn animated"
10794
- }, React__default.createElement("h5", {
10795
- className: "mb-2"
10796
- }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10797
- className: "my-2"
10798
- }, React__default.createElement(reactstrap.Col, {
10799
- md: 8
10800
- }, React__default.createElement(SearchBoxContainer, {
10801
- text: t("create_user"),
10802
- onClick: function onClick() {
10803
- return reDirectDetailPage();
10804
- },
10805
- initValue: !!queryName ? queryName : "",
10806
- onSearch: function onSearch(searchString) {
10807
- return changeFilters({
10808
- searchString: searchString
10809
- });
10810
- },
10811
- placeholder: t("type_something_to_search_by_user_name")
10812
- })), React__default.createElement(reactstrap.Col, {
10813
- md: 4,
10814
- className: "d-flex justify-content-end align-items-center"
10815
- }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10816
- className: "mb-2"
10817
- }, React__default.createElement(reactstrap.Col, {
10818
- md: 12
10819
- }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10820
- bordered: true,
10821
- hover: true,
10822
- striped: true,
10823
- responsive: true,
10824
- size: "sm"
10825
- }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10826
- className: "align-top"
10827
- }, t("name")), React__default.createElement("th", {
10828
- className: "align-top"
10829
- }, t("email")), React__default.createElement("th", {
10830
- className: "align-top"
10831
- }, t("age")), React__default.createElement("th", {
10832
- className: "align-top"
10833
- }, t("role")), React__default.createElement("th", {
10834
- className: "align-top"
10835
- }, t("active_status")), React__default.createElement("th", {
10836
- className: "align-top"
10837
- }, t("created_time")), React__default.createElement("th", {
10838
- className: "text-center"
10839
- }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10840
- return React__default.createElement("tr", {
10841
- key: record.id
10842
- }, React__default.createElement("td", {
10843
- className: "align-middle"
10844
- }, React__default.createElement(LinkEditButton, {
10845
- label: "" + record.fullName,
10846
- onClick: function onClick() {
10847
- return reDirectDetailPage(record.id);
10848
- }
10849
- })), React__default.createElement("td", {
10850
- className: "align-middle"
10851
- }, record.email), React__default.createElement("td", {
10852
- className: "align-middle"
10853
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10854
- className: "align-middle"
10855
- }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10856
- className: "align-middle"
10857
- }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10858
- className: "align-middle"
10859
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10860
- className: "text-center align-middle"
10861
- }, React__default.createElement(fa.FaUsersCog, {
10862
- style: {
10863
- fontSize: "18px",
10864
- marginRight: "10px",
10865
- cursor: "pointer"
10866
- },
10867
- onClick: function onClick() {
10868
- return swicthUser(record.id);
10869
- }
10870
- }), React__default.createElement(DeleteButtonIcon, {
10871
- onClick: function onClick() {
10872
- return removeData(record.id);
10873
- }
10874
- })));
10875
- })))) : React__default.createElement(EmptyDataAlert, {
10876
- label: t("user")
10877
- })), React__default.createElement(reactstrap.Col, {
10878
- md: 12
10879
- }, React__default.createElement(CustomPagination, {
10880
- filters: filters,
10881
- totalRecordCount: totalItems,
10882
- changePageSize: function changePageSize(pageSize) {
10883
- return changeFilters({
10884
- pageSize: pageSize
10885
- });
10886
- },
10887
- changePage: function changePage(currentPage) {
10888
- return changeFilters({
10889
- currentPage: currentPage
10890
- });
10891
- }
10892
- }))));
10877
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10878
+ var p = document.createElement("p");
10879
+ p.innerHTML = htmlString;
10880
+ var text = p.innerText;
10881
+ p.remove();
10882
+ return text;
10893
10883
  };
10894
10884
 
10895
- var amplitudeClient$1 = amplitude.getInstance();
10885
+ var generateRandomString = (function () {
10886
+ return (Math.random() + 1).toString(36).substring(7);
10887
+ });
10888
+
10889
+ var amplitudeClient = amplitude.getInstance();
10896
10890
 
10897
10891
  Object.defineProperty(exports, 'I18nextProvider', {
10898
10892
  enumerable: true,
@@ -10973,7 +10967,7 @@ exports.UploadFileButton = UploadFileButton;
10973
10967
  exports.UserDetail = UserDetail;
10974
10968
  exports.UserList = UserList;
10975
10969
  exports.addTab = addTab;
10976
- exports.amplitudeClient = amplitudeClient$1;
10970
+ exports.amplitudeClient = amplitudeClient;
10977
10971
  exports.answerQuestion = answerQuestion;
10978
10972
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10979
10973
  exports.api = api;