mario-core 2.9.101-beta → 2.9.103-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";
@@ -6716,89 +6716,8 @@ var SkillList = function SkillList() {
6716
6716
  }))));
6717
6717
  };
6718
6718
 
6719
- var MAX_FILE_SIZE = 20097152;
6720
-
6721
- var UploadFileButton = function UploadFileButton(_ref) {
6722
- var fileName = _ref.fileName,
6723
- maxWidth = _ref.maxWidth,
6724
- maxHeight = _ref.maxHeight,
6725
- setFile = _ref.setFile,
6726
- canDelete = _ref.canDelete,
6727
- onDelete = _ref.onDelete,
6728
- isCheckFeedBack = _ref.isCheckFeedBack,
6729
- onAddImage = _ref.onAddImage;
6730
- var dispatch = reactRedux.useDispatch();
6731
-
6732
- var _useState = React.useState(""),
6733
- imagePreviewUrl = _useState[0],
6734
- setImagePreviewUrl = _useState[1];
6735
-
6736
- var imageStyle = {
6737
- maxWidth: maxWidth || "100%",
6738
- maxHeight: maxHeight || "100%"
6739
- };
6740
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6741
-
6742
- var handleImageChange = function handleImageChange(e) {
6743
- e.preventDefault();
6744
- var reader = new FileReader();
6745
- var newFile = e.target.files[0];
6746
-
6747
- if (newFile.size > MAX_FILE_SIZE) {
6748
- dispatch(setAlert({
6749
- type: "danger",
6750
- message: "File can't be larger than 2MB"
6751
- }));
6752
- return;
6753
- }
6754
-
6755
- reader.onloadend = function () {
6756
- setFile(newFile);
6757
- setImagePreviewUrl(reader.result);
6758
- };
6759
-
6760
- if (newFile) {
6761
- reader.readAsDataURL(newFile);
6762
- }
6763
-
6764
- !!onAddImage && onAddImage();
6765
- };
6766
-
6767
- var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6768
- style: imageStyle,
6769
- src: imageSrc,
6770
- alt: "image"
6771
- }) : null;
6772
- return React__default.createElement("div", {
6773
- className: "mb-2"
6774
- }, React__default.createElement(reactstrap.Form, {
6775
- className: "mb-2"
6776
- }, React__default.createElement(reactstrap.Input, {
6777
- className: "d-none",
6778
- type: "file",
6779
- id: "uploadFile",
6780
- onChange: handleImageChange,
6781
- accept: "image/*"
6782
- }), React__default.createElement("div", {
6783
- className: "d-flex align-items-center"
6784
- }, React__default.createElement(reactstrap.Label, {
6785
- htmlFor: "uploadFile",
6786
- role: "button",
6787
- tabIndex: 0,
6788
- className: styles["input-file-label"]
6789
- }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6790
- className: "fa fa-paperclip mr-1",
6791
- "aria-hidden": "true"
6792
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6793
- size: "sm",
6794
- color: "danger",
6795
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6796
- onClick: function onClick() {
6797
- setImagePreviewUrl(null);
6798
- onDelete && onDelete();
6799
- }
6800
- }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6801
- };
6719
+ var setUserList = toolkit.createAction("users/setUserList");
6720
+ var setStudentList = toolkit.createAction("users/setStudentList");
6802
6721
 
6803
6722
  var USER_URL$1 = BASE_URL + "/api/user";
6804
6723
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6831,54 +6750,38 @@ var switchAccountUser = function switchAccountUser(id) {
6831
6750
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6832
6751
  };
6833
6752
 
6834
- var initValue$3 = {
6835
- id: "",
6836
- firstName: "",
6837
- lastName: "",
6838
- email: "",
6839
- dateOfBirth: "",
6840
- roles: [],
6841
- isActive: true,
6842
- profileImageFileName: ""
6843
- };
6844
- var USER_LIST_URL = "/admin/user";
6845
- var TITLE$7 = "User detail";
6753
+ var USER_URL$2 = "/admin/user";
6754
+ var CREATE_USER_URL = "/admin/create-user";
6755
+ var TITLE$7 = "User list";
6756
+ var HOMEPAGE_TEACHER$1 = "/home";
6757
+ var HOMEPAGE_STUDENT$1 = "/home";
6758
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6759
+ var HOMEPAGE_PARENT$1 = "/parent";
6760
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6761
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
6846
6762
 
6847
- var useUserDetail = function useUserDetail(id) {
6848
- var dispatch = reactRedux.useDispatch();
6763
+ var useUserList = function useUserList() {
6849
6764
  var history = reactRouterDom.useHistory();
6765
+ var query = new URLSearchParams(location.search);
6766
+ var queryName = query.get("query");
6767
+ var userList = reactRedux.useSelector(function (state) {
6768
+ return state.users.userList;
6769
+ });
6770
+ var totalItems = reactRedux.useSelector(function (state) {
6771
+ return state.users.totalItems;
6772
+ });
6850
6773
 
6851
- var _useState = React.useState(initValue$3),
6852
- userDetail = _useState[0],
6853
- setUserDetail = _useState[1];
6854
-
6855
- var _useState2 = React.useState(null),
6856
- file = _useState2[0],
6857
- setFile = _useState2[1];
6858
-
6859
- var _useState3 = React.useState(false),
6860
- edited = _useState3[0],
6861
- setEdited = _useState3[1];
6774
+ var _useFilters = useFilters(),
6775
+ filters = _useFilters.filters,
6776
+ changeFilters = _useFilters.changeFilters;
6862
6777
 
6863
- var setEditedTrue = function setEditedTrue() {
6864
- try {
6865
- localStorage.setItem(window.location.href, "true");
6866
- setEdited(true);
6867
- return Promise.resolve();
6868
- } catch (e) {
6869
- return Promise.reject(e);
6870
- }
6871
- };
6778
+ var _useState = React.useState(!!queryName ? queryName : ""),
6779
+ fullName = _useState[0],
6780
+ setFullName = _useState[1];
6872
6781
 
6873
- React.useEffect(function () {
6874
- document.title = TITLE$7;
6875
- setEdited(false);
6876
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6877
- }, []);
6878
- React.useEffect(function () {
6879
- !!id && getData();
6880
- }, [id]);
6881
- var getData = React.useCallback(function () {
6782
+ var isDistrict = window.location.host.includes("-district");
6783
+ var dispatch = reactRedux.useDispatch();
6784
+ var getData = React.useCallback(function (fullName) {
6882
6785
  try {
6883
6786
  var _temp3 = function _temp3() {
6884
6787
  dispatch(setLoading(false));
@@ -6887,14 +6790,22 @@ var useUserDetail = function useUserDetail(id) {
6887
6790
  dispatch(setLoading(true));
6888
6791
 
6889
6792
  var _temp4 = _catch(function () {
6890
- return Promise.resolve(getById$3(id)).then(function (res) {
6891
- var _res$data;
6793
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6794
+ searchString: fullName
6795
+ })) : get$5(filters)).then(function (res) {
6796
+ var _res$data = res.data,
6797
+ items = _res$data.items,
6798
+ totalItems = _res$data.totalItems;
6892
6799
 
6893
- setUserDetail(_extends({}, res.data, {
6894
- dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6895
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6800
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6801
+ var user = _step.value;
6802
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6803
+ }
6804
+
6805
+ dispatch(setUserList({
6806
+ userList: items,
6807
+ totalItems: totalItems
6896
6808
  }));
6897
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6898
6809
  });
6899
6810
  }, function (err) {
6900
6811
  var _err$response, _err$response$data;
@@ -6909,196 +6820,713 @@ var useUserDetail = function useUserDetail(id) {
6909
6820
  } catch (e) {
6910
6821
  return Promise.reject(e);
6911
6822
  }
6912
- }, [id]);
6913
- var backToList = React.useCallback(function (user) {
6914
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6823
+ }, [dispatch, filters]);
6824
+ React.useEffect(function () {
6825
+ document.title = TITLE$7;
6915
6826
  }, []);
6916
- var confirmData = React.useCallback(function (data) {
6917
- try {
6918
- var _temp9 = function _temp9() {
6919
- dispatch(setLoading(false));
6920
- };
6921
-
6922
- dispatch(setLoading(true));
6827
+ React.useEffect(function () {
6828
+ if (!!fullName) {
6829
+ getData(fullName);
6830
+ setFullName(null);
6831
+ } else {
6832
+ getData();
6833
+ }
6834
+ }, [filters]);
6835
+ var removeData = React.useCallback(function (id) {
6836
+ dispatch(setLoading(true));
6923
6837
 
6924
- var _temp10 = _catch(function () {
6925
- function _temp6() {
6926
- var next = !!id ? update$5 : create$5;
6927
- !id && delete data.id;
6928
- return Promise.resolve(next(data)).then(function (result) {
6929
- if (!!result) {
6930
- getById$3(result.data.id).then(function (e) {
6931
- backToList(e.data.fullName);
6838
+ try {
6839
+ dispatch(setModal({
6840
+ isOpen: true,
6841
+ type: "warning",
6842
+ message: "Do you want to remove this user?",
6843
+ onConfirm: function () {
6844
+ try {
6845
+ return Promise.resolve(remove$3(id)).then(function () {
6846
+ dispatch(setAlert({
6847
+ type: "success",
6848
+ message: "Remove user successfully"
6849
+ }));
6850
+ changeFilters({
6851
+ currentPage: 1
6932
6852
  });
6933
- }
6934
-
6935
- if (!id) {
6936
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6937
- }
6938
-
6939
- dispatch(setAlert({
6940
- type: "success",
6941
- message: (!!id ? "Update" : "Create") + " user successfully"
6942
- }));
6943
- });
6944
- }
6945
-
6946
- var _temp5 = function () {
6947
- if (!!file) {
6948
- var formData = new FormData();
6949
- var name = file.name;
6950
- formData.append("file", file, name);
6951
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
6952
- var _res$data2;
6953
-
6954
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
6955
- data.profileImageFileName = imageUrl;
6956
6853
  });
6854
+ } catch (e) {
6855
+ return Promise.reject(e);
6957
6856
  }
6958
- }();
6959
-
6960
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
6961
- }, function (err) {
6962
- var _err$response2, _err$response2$data;
6857
+ }
6858
+ }));
6859
+ } catch (err) {
6860
+ var _err$response2, _err$response2$data;
6963
6861
 
6964
- dispatch(setAlert({
6965
- type: "danger",
6966
- 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
6967
- }));
6968
- });
6969
-
6970
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6971
- } catch (e) {
6972
- return Promise.reject(e);
6862
+ dispatch(setAlert({
6863
+ type: "danger",
6864
+ 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
6865
+ }));
6973
6866
  }
6974
- }, [id, file]);
6975
-
6976
- var confirmChangePassword = function confirmChangePassword(data) {
6977
- try {
6978
- var _temp13 = function _temp13() {
6979
- dispatch(setLoading(false));
6980
- };
6981
-
6982
- dispatch(setLoading(true));
6983
6867
 
6984
- var _temp14 = _catch(function () {
6985
- return Promise.resolve(changePassword(data)).then(function () {
6986
- dispatch(setAlert({
6987
- type: "success",
6988
- message: "Change password successfully"
6989
- }));
6990
- });
6991
- }, function (e) {
6992
- var _e$response, _e$response$data;
6868
+ dispatch(setLoading(false));
6869
+ }, [filters]);
6993
6870
 
6994
- dispatch(setAlert({
6995
- type: "danger",
6996
- 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
6997
- }));
6998
- });
6871
+ var redirectLoginUser = function redirectLoginUser(res) {
6872
+ var _res$data2 = res.data,
6873
+ token = _res$data2.token,
6874
+ id = _res$data2.id,
6875
+ firstName = _res$data2.firstName,
6876
+ lastName = _res$data2.lastName,
6877
+ roles = _res$data2.roles,
6878
+ email = _res$data2.email,
6879
+ profileImageFileName = _res$data2.profileImageFileName;
6880
+ localStorage.setItem(ACCESS_TOKEN, token);
6881
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
6882
+ dispatch(setUser({
6883
+ id: id,
6884
+ firstName: firstName,
6885
+ lastName: lastName,
6886
+ roles: roles,
6887
+ email: email,
6888
+ profileImageFileName: profileImageFileName
6889
+ }));
6999
6890
 
7000
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7001
- } catch (e) {
7002
- return Promise.reject(e);
6891
+ if (isDistrict) {
6892
+ history.push(HOMEPAGE_DISTRICT$1);
6893
+ } else if (roles.includes("Admin")) {
6894
+ history.push(HOMEPAGE_ADMIN$1);
6895
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
6896
+ history.push(HOMEPAGE_TEACHER$1);
6897
+ } else if (roles.includes("Student")) {
6898
+ history.push(HOMEPAGE_STUDENT$1);
6899
+ } else if (roles.includes("Parent")) {
6900
+ history.push(HOMEPAGE_PARENT$1);
6901
+ } else if (roles.includes("EduTeacher")) {
6902
+ history.push(HOMEPAGE_EDU_TEACHER$1);
6903
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
6904
+ history.push(HOMEPAGE_TEACHER$1);
7003
6905
  }
7004
6906
  };
7005
6907
 
7006
- var forgotPasswordRequest = React.useCallback(function (data) {
6908
+ var swicthUser = React.useCallback(function (id) {
7007
6909
  try {
7008
- var _temp17 = function _temp17() {
7009
- dispatch(setLoading(false));
7010
- };
6910
+ var _temp6 = _catch(function () {
6911
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
6912
+ var data = res.data;
6913
+ dispatch(setModal({
6914
+ isOpen: true,
6915
+ type: "warning",
6916
+ message: "Do you want to impersonate this user?",
6917
+ onConfirm: function () {
6918
+ try {
6919
+ var _temp9 = function _temp9() {
6920
+ dispatch(setLoading(false));
6921
+ };
7011
6922
 
7012
- dispatch(setLoading(true));
6923
+ dispatch(setLoading(true));
7013
6924
 
7014
- var _temp18 = _catch(function () {
7015
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7016
- dispatch(setAlert({
7017
- type: "success",
7018
- message: "Send forgot password link successfully"
6925
+ var _temp10 = _catch(function () {
6926
+ var req = {
6927
+ email: data.email,
6928
+ password: "default",
6929
+ accessToken: data.token
6930
+ };
6931
+ return Promise.resolve(logIn(req)).then(function (res) {
6932
+ localStorage.clear();
6933
+ redirectLoginUser(res);
6934
+ });
6935
+ }, function (err) {
6936
+ var _err$response3, _err$response3$data;
6937
+
6938
+ setAlert({
6939
+ type: "danger",
6940
+ 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
6941
+ });
6942
+ });
6943
+
6944
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6945
+ } catch (e) {
6946
+ return Promise.reject(e);
6947
+ }
6948
+ }
7019
6949
  }));
7020
6950
  });
7021
6951
  }, function (err) {
7022
- var _err$response3, _err$response3$data;
6952
+ var _err$response4, _err$response4$data;
7023
6953
 
7024
6954
  dispatch(setAlert({
7025
6955
  type: "danger",
7026
- 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"
6956
+ 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
7027
6957
  }));
7028
6958
  });
7029
6959
 
7030
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
6960
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7031
6961
  } catch (e) {
7032
6962
  return Promise.reject(e);
7033
6963
  }
7034
- }, []);
6964
+ }, [filters]);
6965
+
6966
+ var reDirectDetailPage = function reDirectDetailPage(id) {
6967
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
6968
+ history.push(url);
6969
+ };
6970
+
7035
6971
  return {
7036
- userDetail: userDetail,
7037
- backToList: backToList,
7038
- confirmData: confirmData,
7039
- file: file,
7040
- setFile: setFile,
7041
- edited: edited,
7042
- setEdited: setEdited,
7043
- setEditedTrue: setEditedTrue,
7044
- confirmChangePassword: confirmChangePassword,
7045
- forgotPasswordRequest: forgotPasswordRequest
6972
+ userList: userList,
6973
+ totalItems: totalItems,
6974
+ filters: filters,
6975
+ queryName: queryName,
6976
+ getData: getData,
6977
+ removeData: removeData,
6978
+ changeFilters: changeFilters,
6979
+ reDirectDetailPage: reDirectDetailPage,
6980
+ swicthUser: swicthUser
7046
6981
  };
7047
6982
  };
7048
6983
 
7049
- var userSchema = yup.object({
7050
- firstName: yup.string().required("First name is required"),
7051
- lastName: yup.string().required("Last name is required"),
7052
- dateOfBirth: yup.string().required("Date of birth is required"),
7053
- email: yup.string().email("Email is invalid").required("Email is required"),
7054
- roles: yup.array().of(yup.string()).min(1, "Role is required")
7055
- });
7056
-
7057
- var changePasswordSchema = yup.object({
7058
- oldPassword: yup.string().required("Current password is required"),
7059
- newPassword: yup.string().required("New password is required"),
7060
- confirmedNewPassword: yup.string().required("Confirm password is required")
7061
- });
7062
-
7063
- var CREATE_USER = "create_user";
7064
- var EDIT_USER_HEADER = "edit_user";
7065
- var CHANGE_PASSWORD$1 = "change_password";
6984
+ var SearchBox = function SearchBox(_ref) {
6985
+ var initValue = _ref.initValue,
6986
+ onSearch = _ref.onSearch,
6987
+ placeholder = _ref.placeholder,
6988
+ className = _ref.className,
6989
+ style = _ref.style;
7066
6990
 
7067
- var UserDetail = function UserDetail() {
7068
- var _useParams = reactRouterDom.useParams(),
7069
- id = _useParams.id;
6991
+ var _useState = React.useState(initValue),
6992
+ searchString = _useState[0],
6993
+ setSearchString = _useState[1];
7070
6994
 
7071
- var user = reactRedux.useSelector(function (state) {
7072
- return state.common.user;
6995
+ React.useEffect(function () {
6996
+ setSearchString(initValue);
6997
+ }, [initValue]);
6998
+ var onKeyUp = React.useCallback(function (e) {
6999
+ e.key === "Enter" && onSearch(searchString);
7000
+ }, [searchString, onSearch]);
7001
+ return React__default.createElement(reactstrap.Input, {
7002
+ placeholder: placeholder,
7003
+ value: searchString,
7004
+ onChange: function onChange(e) {
7005
+ return setSearchString(e.target.value);
7006
+ },
7007
+ onKeyUp: onKeyUp,
7008
+ className: className,
7009
+ style: style
7073
7010
  });
7011
+ };
7074
7012
 
7075
- var _useTranslation = reactI18next.useTranslation(),
7076
- t = _useTranslation.t;
7013
+ SearchBox.defaultProps = {
7014
+ placeholder: "Type something to search",
7015
+ className: "",
7016
+ style: {}
7017
+ };
7018
+ var SearchBox$1 = React.memo(SearchBox);
7077
7019
 
7078
- var _useUserDetail = useUserDetail(id),
7079
- userDetail = _useUserDetail.userDetail,
7080
- backToList = _useUserDetail.backToList,
7081
- confirmData = _useUserDetail.confirmData,
7082
- file = _useUserDetail.file,
7083
- setFile = _useUserDetail.setFile,
7084
- edited = _useUserDetail.edited,
7085
- setEdited = _useUserDetail.setEdited,
7086
- setEditedTrue = _useUserDetail.setEditedTrue,
7087
- confirmChangePassword = _useUserDetail.confirmChangePassword,
7088
- forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7020
+ var searchInputStyle = {
7021
+ height: 38
7022
+ };
7089
7023
 
7090
- var initialValueForm = {
7091
- oldPassword: "",
7092
- newPassword: "",
7093
- confirmedNewPassword: ""
7094
- };
7095
- var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7096
- var confirmText = !!id ? t("update") : t("create");
7024
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
7025
+ var text = _ref.text,
7026
+ initValue = _ref.initValue,
7027
+ onClick = _ref.onClick,
7028
+ onSearch = _ref.onSearch,
7029
+ placeholder = _ref.placeholder;
7030
+ return React__default.createElement("div", {
7031
+ className: "d-flex align-items-center"
7032
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
7033
+ text: text,
7034
+ onClick: onClick
7035
+ })), React__default.createElement("div", {
7036
+ className: "flex-grow-1 ml-2"
7037
+ }, React__default.createElement(SearchBox$1, {
7038
+ initValue: initValue,
7039
+ onSearch: onSearch,
7040
+ placeholder: placeholder,
7041
+ style: searchInputStyle
7042
+ })));
7043
+ };
7097
7044
 
7098
- var getFile = function getFile() {
7099
- var url = window.location.origin + "/api/ExportDataUser/" + id;
7100
- window.open(url);
7101
- };
7045
+ SearchBoxContainer.defaultProps = {
7046
+ placeholder: "Type something to search"
7047
+ };
7048
+
7049
+ var utcToLocalTime = (function (time, FORMAT) {
7050
+ if (time === DATE_MIN_VALUE) return "";
7051
+
7052
+ try {
7053
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7054
+ } catch (_unused) {
7055
+ return "";
7056
+ }
7057
+ });
7058
+
7059
+ var header$2 = "User";
7060
+
7061
+ var UserList = function UserList() {
7062
+ var _useUserList = useUserList(),
7063
+ queryName = _useUserList.queryName,
7064
+ userList = _useUserList.userList,
7065
+ totalItems = _useUserList.totalItems,
7066
+ filters = _useUserList.filters,
7067
+ removeData = _useUserList.removeData,
7068
+ changeFilters = _useUserList.changeFilters,
7069
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
7070
+ swicthUser = _useUserList.swicthUser;
7071
+
7072
+ var _useTranslation = reactI18next.useTranslation(),
7073
+ t = _useTranslation.t;
7074
+
7075
+ return React__default.createElement("div", {
7076
+ className: "fadeIn animated"
7077
+ }, React__default.createElement("h5", {
7078
+ className: "mb-2"
7079
+ }, t("" + header$2)), React__default.createElement(reactstrap.Row, {
7080
+ className: "my-2"
7081
+ }, React__default.createElement(reactstrap.Col, {
7082
+ md: 8
7083
+ }, React__default.createElement(SearchBoxContainer, {
7084
+ text: t("create_user"),
7085
+ onClick: function onClick() {
7086
+ return reDirectDetailPage();
7087
+ },
7088
+ initValue: !!queryName ? queryName : "",
7089
+ onSearch: function onSearch(searchString) {
7090
+ return changeFilters({
7091
+ searchString: searchString
7092
+ });
7093
+ },
7094
+ placeholder: t("type_something_to_search_by_user_name")
7095
+ })), React__default.createElement(reactstrap.Col, {
7096
+ md: 4,
7097
+ className: "d-flex justify-content-end align-items-center"
7098
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
7099
+ className: "mb-2"
7100
+ }, React__default.createElement(reactstrap.Col, {
7101
+ md: 12
7102
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
7103
+ bordered: true,
7104
+ hover: true,
7105
+ striped: true,
7106
+ responsive: true,
7107
+ size: "sm"
7108
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
7109
+ className: "align-top"
7110
+ }, t("name")), React__default.createElement("th", {
7111
+ className: "align-top"
7112
+ }, t("email")), React__default.createElement("th", {
7113
+ className: "align-top"
7114
+ }, t("age")), React__default.createElement("th", {
7115
+ className: "align-top"
7116
+ }, t("role")), React__default.createElement("th", {
7117
+ className: "align-top"
7118
+ }, t("active_status")), React__default.createElement("th", {
7119
+ className: "align-top"
7120
+ }, t("created_time")), React__default.createElement("th", {
7121
+ className: "text-center"
7122
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
7123
+ return React__default.createElement("tr", {
7124
+ key: record.id
7125
+ }, React__default.createElement("td", {
7126
+ className: "align-middle"
7127
+ }, React__default.createElement(LinkEditButton, {
7128
+ label: "" + record.fullName,
7129
+ onClick: function onClick() {
7130
+ return reDirectDetailPage(record.id);
7131
+ }
7132
+ })), React__default.createElement("td", {
7133
+ className: "align-middle"
7134
+ }, record.email), React__default.createElement("td", {
7135
+ className: "align-middle"
7136
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
7137
+ className: "align-middle"
7138
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
7139
+ className: "align-middle"
7140
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
7141
+ className: "align-middle"
7142
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
7143
+ className: "text-center align-middle"
7144
+ }, React__default.createElement(fa.FaUsersCog, {
7145
+ style: {
7146
+ fontSize: "18px",
7147
+ marginRight: "10px",
7148
+ cursor: "pointer"
7149
+ },
7150
+ onClick: function onClick() {
7151
+ return swicthUser(record.id);
7152
+ }
7153
+ }), React__default.createElement(DeleteButtonIcon, {
7154
+ onClick: function onClick() {
7155
+ return removeData(record.id);
7156
+ }
7157
+ })));
7158
+ })))) : React__default.createElement(EmptyDataAlert, {
7159
+ label: t("user")
7160
+ })), React__default.createElement(reactstrap.Col, {
7161
+ md: 12
7162
+ }, React__default.createElement(CustomPagination, {
7163
+ filters: filters,
7164
+ totalRecordCount: totalItems,
7165
+ changePageSize: function changePageSize(pageSize) {
7166
+ return changeFilters({
7167
+ pageSize: pageSize
7168
+ });
7169
+ },
7170
+ changePage: function changePage(currentPage) {
7171
+ return changeFilters({
7172
+ currentPage: currentPage
7173
+ });
7174
+ }
7175
+ }))));
7176
+ };
7177
+
7178
+ var MAX_FILE_SIZE = 20097152;
7179
+
7180
+ var UploadFileButton = function UploadFileButton(_ref) {
7181
+ var fileName = _ref.fileName,
7182
+ maxWidth = _ref.maxWidth,
7183
+ maxHeight = _ref.maxHeight,
7184
+ setFile = _ref.setFile,
7185
+ canDelete = _ref.canDelete,
7186
+ onDelete = _ref.onDelete,
7187
+ isCheckFeedBack = _ref.isCheckFeedBack,
7188
+ onAddImage = _ref.onAddImage;
7189
+ var dispatch = reactRedux.useDispatch();
7190
+
7191
+ var _useState = React.useState(""),
7192
+ imagePreviewUrl = _useState[0],
7193
+ setImagePreviewUrl = _useState[1];
7194
+
7195
+ var imageStyle = {
7196
+ maxWidth: maxWidth || "100%",
7197
+ maxHeight: maxHeight || "100%"
7198
+ };
7199
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7200
+
7201
+ var handleImageChange = function handleImageChange(e) {
7202
+ e.preventDefault();
7203
+ var reader = new FileReader();
7204
+ var newFile = e.target.files[0];
7205
+
7206
+ if (newFile.size > MAX_FILE_SIZE) {
7207
+ dispatch(setAlert({
7208
+ type: "danger",
7209
+ message: "File can't be larger than 2MB"
7210
+ }));
7211
+ return;
7212
+ }
7213
+
7214
+ reader.onloadend = function () {
7215
+ setFile(newFile);
7216
+ setImagePreviewUrl(reader.result);
7217
+ };
7218
+
7219
+ if (newFile) {
7220
+ reader.readAsDataURL(newFile);
7221
+ }
7222
+
7223
+ !!onAddImage && onAddImage();
7224
+ };
7225
+
7226
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
7227
+ style: imageStyle,
7228
+ src: imageSrc,
7229
+ alt: "image"
7230
+ }) : null;
7231
+ return React__default.createElement("div", {
7232
+ className: "mb-2"
7233
+ }, React__default.createElement(reactstrap.Form, {
7234
+ className: "mb-2"
7235
+ }, React__default.createElement(reactstrap.Input, {
7236
+ className: "d-none",
7237
+ type: "file",
7238
+ id: "uploadFile",
7239
+ onChange: handleImageChange,
7240
+ accept: "image/*"
7241
+ }), React__default.createElement("div", {
7242
+ className: "d-flex align-items-center"
7243
+ }, React__default.createElement(reactstrap.Label, {
7244
+ htmlFor: "uploadFile",
7245
+ role: "button",
7246
+ tabIndex: 0,
7247
+ className: styles["input-file-label"]
7248
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
7249
+ className: "fa fa-paperclip mr-1",
7250
+ "aria-hidden": "true"
7251
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
7252
+ size: "sm",
7253
+ color: "danger",
7254
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7255
+ onClick: function onClick() {
7256
+ setImagePreviewUrl(null);
7257
+ onDelete && onDelete();
7258
+ }
7259
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
7260
+ };
7261
+
7262
+ var initValue$3 = {
7263
+ id: "",
7264
+ firstName: "",
7265
+ lastName: "",
7266
+ email: "",
7267
+ dateOfBirth: "",
7268
+ roles: [],
7269
+ isActive: true,
7270
+ profileImageFileName: ""
7271
+ };
7272
+ var USER_LIST_URL = "/admin/user";
7273
+ var TITLE$8 = "User detail";
7274
+
7275
+ var useUserDetail = function useUserDetail(id) {
7276
+ var dispatch = reactRedux.useDispatch();
7277
+ var history = reactRouterDom.useHistory();
7278
+
7279
+ var _useState = React.useState(initValue$3),
7280
+ userDetail = _useState[0],
7281
+ setUserDetail = _useState[1];
7282
+
7283
+ var _useState2 = React.useState(null),
7284
+ file = _useState2[0],
7285
+ setFile = _useState2[1];
7286
+
7287
+ var _useState3 = React.useState(false),
7288
+ edited = _useState3[0],
7289
+ setEdited = _useState3[1];
7290
+
7291
+ var setEditedTrue = function setEditedTrue() {
7292
+ try {
7293
+ localStorage.setItem(window.location.href, "true");
7294
+ setEdited(true);
7295
+ return Promise.resolve();
7296
+ } catch (e) {
7297
+ return Promise.reject(e);
7298
+ }
7299
+ };
7300
+
7301
+ React.useEffect(function () {
7302
+ document.title = TITLE$8;
7303
+ setEdited(false);
7304
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7305
+ }, []);
7306
+ React.useEffect(function () {
7307
+ !!id && getData();
7308
+ }, [id]);
7309
+ var getData = React.useCallback(function () {
7310
+ try {
7311
+ var _temp3 = function _temp3() {
7312
+ dispatch(setLoading(false));
7313
+ };
7314
+
7315
+ dispatch(setLoading(true));
7316
+
7317
+ var _temp4 = _catch(function () {
7318
+ return Promise.resolve(getById$3(id)).then(function (res) {
7319
+ var _res$data;
7320
+
7321
+ setUserDetail(_extends({}, res.data, {
7322
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7323
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7324
+ }));
7325
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
7326
+ });
7327
+ }, function (err) {
7328
+ var _err$response, _err$response$data;
7329
+
7330
+ dispatch(setAlert({
7331
+ type: "danger",
7332
+ 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
7333
+ }));
7334
+ });
7335
+
7336
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7337
+ } catch (e) {
7338
+ return Promise.reject(e);
7339
+ }
7340
+ }, [id]);
7341
+ var backToList = React.useCallback(function (user) {
7342
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7343
+ }, []);
7344
+ var confirmData = React.useCallback(function (data) {
7345
+ try {
7346
+ var _temp9 = function _temp9() {
7347
+ dispatch(setLoading(false));
7348
+ };
7349
+
7350
+ dispatch(setLoading(true));
7351
+
7352
+ var _temp10 = _catch(function () {
7353
+ function _temp6() {
7354
+ var next = !!id ? update$5 : create$5;
7355
+ !id && delete data.id;
7356
+ return Promise.resolve(next(data)).then(function (result) {
7357
+ if (!!result) {
7358
+ getById$3(result.data.id).then(function (e) {
7359
+ backToList(e.data.fullName);
7360
+ });
7361
+ }
7362
+
7363
+ if (!id) {
7364
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7365
+ }
7366
+
7367
+ dispatch(setAlert({
7368
+ type: "success",
7369
+ message: (!!id ? "Update" : "Create") + " user successfully"
7370
+ }));
7371
+ });
7372
+ }
7373
+
7374
+ var _temp5 = function () {
7375
+ if (!!file) {
7376
+ var formData = new FormData();
7377
+ var name = file.name;
7378
+ formData.append("file", file, name);
7379
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7380
+ var _res$data2;
7381
+
7382
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7383
+ data.profileImageFileName = imageUrl;
7384
+ });
7385
+ }
7386
+ }();
7387
+
7388
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7389
+ }, function (err) {
7390
+ var _err$response2, _err$response2$data;
7391
+
7392
+ dispatch(setAlert({
7393
+ type: "danger",
7394
+ 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
7395
+ }));
7396
+ });
7397
+
7398
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7399
+ } catch (e) {
7400
+ return Promise.reject(e);
7401
+ }
7402
+ }, [id, file]);
7403
+
7404
+ var confirmChangePassword = function confirmChangePassword(data) {
7405
+ try {
7406
+ var _temp13 = function _temp13() {
7407
+ dispatch(setLoading(false));
7408
+ };
7409
+
7410
+ dispatch(setLoading(true));
7411
+
7412
+ var _temp14 = _catch(function () {
7413
+ return Promise.resolve(changePassword(data)).then(function () {
7414
+ dispatch(setAlert({
7415
+ type: "success",
7416
+ message: "Change password successfully"
7417
+ }));
7418
+ });
7419
+ }, function (e) {
7420
+ var _e$response, _e$response$data;
7421
+
7422
+ dispatch(setAlert({
7423
+ type: "danger",
7424
+ 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
7425
+ }));
7426
+ });
7427
+
7428
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7429
+ } catch (e) {
7430
+ return Promise.reject(e);
7431
+ }
7432
+ };
7433
+
7434
+ var forgotPasswordRequest = React.useCallback(function (data) {
7435
+ try {
7436
+ var _temp17 = function _temp17() {
7437
+ dispatch(setLoading(false));
7438
+ };
7439
+
7440
+ dispatch(setLoading(true));
7441
+
7442
+ var _temp18 = _catch(function () {
7443
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7444
+ dispatch(setAlert({
7445
+ type: "success",
7446
+ message: "Send forgot password link successfully"
7447
+ }));
7448
+ });
7449
+ }, function (err) {
7450
+ var _err$response3, _err$response3$data;
7451
+
7452
+ dispatch(setAlert({
7453
+ type: "danger",
7454
+ 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"
7455
+ }));
7456
+ });
7457
+
7458
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7459
+ } catch (e) {
7460
+ return Promise.reject(e);
7461
+ }
7462
+ }, []);
7463
+ return {
7464
+ userDetail: userDetail,
7465
+ backToList: backToList,
7466
+ confirmData: confirmData,
7467
+ file: file,
7468
+ setFile: setFile,
7469
+ edited: edited,
7470
+ setEdited: setEdited,
7471
+ setEditedTrue: setEditedTrue,
7472
+ confirmChangePassword: confirmChangePassword,
7473
+ forgotPasswordRequest: forgotPasswordRequest
7474
+ };
7475
+ };
7476
+
7477
+ var userSchema = yup.object({
7478
+ firstName: yup.string().required("First name is required"),
7479
+ lastName: yup.string().required("Last name is required"),
7480
+ dateOfBirth: yup.string().required("Date of birth is required"),
7481
+ email: yup.string().email("Email is invalid").required("Email is required"),
7482
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7483
+ });
7484
+
7485
+ var changePasswordSchema = yup.object({
7486
+ oldPassword: yup.string().required("Current password is required"),
7487
+ newPassword: yup.string().required("New password is required"),
7488
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7489
+ });
7490
+
7491
+ var CREATE_USER = "create_user";
7492
+ var EDIT_USER_HEADER = "edit_user";
7493
+ var CHANGE_PASSWORD$1 = "change_password";
7494
+
7495
+ var UserDetail = function UserDetail() {
7496
+ var _useParams = reactRouterDom.useParams(),
7497
+ id = _useParams.id;
7498
+
7499
+ var user = reactRedux.useSelector(function (state) {
7500
+ return state.common.user;
7501
+ });
7502
+
7503
+ var _useTranslation = reactI18next.useTranslation(),
7504
+ t = _useTranslation.t;
7505
+
7506
+ var _useUserDetail = useUserDetail(id),
7507
+ userDetail = _useUserDetail.userDetail,
7508
+ backToList = _useUserDetail.backToList,
7509
+ confirmData = _useUserDetail.confirmData,
7510
+ file = _useUserDetail.file,
7511
+ setFile = _useUserDetail.setFile,
7512
+ edited = _useUserDetail.edited,
7513
+ setEdited = _useUserDetail.setEdited,
7514
+ setEditedTrue = _useUserDetail.setEditedTrue,
7515
+ confirmChangePassword = _useUserDetail.confirmChangePassword,
7516
+ forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7517
+
7518
+ var initialValueForm = {
7519
+ oldPassword: "",
7520
+ newPassword: "",
7521
+ confirmedNewPassword: ""
7522
+ };
7523
+ var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7524
+ var confirmText = !!id ? t("update") : t("create");
7525
+
7526
+ var getFile = function getFile() {
7527
+ var url = window.location.origin + "/api/ExportDataUser/" + id;
7528
+ window.open(url);
7529
+ };
7102
7530
 
7103
7531
  var onResetPw = function onResetPw(email) {
7104
7532
  try {
@@ -7535,42 +7963,6 @@ var CreatableSelector = function CreatableSelector(props) {
7535
7963
  });
7536
7964
  };
7537
7965
 
7538
- var SearchBox = function SearchBox(_ref) {
7539
- var initValue = _ref.initValue,
7540
- onSearch = _ref.onSearch,
7541
- placeholder = _ref.placeholder,
7542
- className = _ref.className,
7543
- style = _ref.style;
7544
-
7545
- var _useState = React.useState(initValue),
7546
- searchString = _useState[0],
7547
- setSearchString = _useState[1];
7548
-
7549
- React.useEffect(function () {
7550
- setSearchString(initValue);
7551
- }, [initValue]);
7552
- var onKeyUp = React.useCallback(function (e) {
7553
- e.key === "Enter" && onSearch(searchString);
7554
- }, [searchString, onSearch]);
7555
- return React__default.createElement(reactstrap.Input, {
7556
- placeholder: placeholder,
7557
- value: searchString,
7558
- onChange: function onChange(e) {
7559
- return setSearchString(e.target.value);
7560
- },
7561
- onKeyUp: onKeyUp,
7562
- className: className,
7563
- style: style
7564
- });
7565
- };
7566
-
7567
- SearchBox.defaultProps = {
7568
- placeholder: "Type something to search",
7569
- className: "",
7570
- style: {}
7571
- };
7572
- var SearchBox$1 = React.memo(SearchBox);
7573
-
7574
7966
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7575
7967
  var id = props.id;
7576
7968
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -7926,23 +8318,13 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
7926
8318
 
7927
8319
  var NotificationStatusSelector$1 = React.memo(NotificationStatusSelector);
7928
8320
 
7929
- var utcToLocalTime = (function (time, FORMAT) {
7930
- if (time === DATE_MIN_VALUE) return "";
7931
-
7932
- try {
7933
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7934
- } catch (_unused) {
7935
- return "";
7936
- }
7937
- });
7938
-
7939
8321
  var defaultFilters = {
7940
8322
  currentPage: 1,
7941
8323
  pageSize: 30,
7942
8324
  searchString: "",
7943
8325
  isRead: false
7944
8326
  };
7945
- var TITLE$8 = "Notification list";
8327
+ var TITLE$9 = "Notification list";
7946
8328
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
7947
8329
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
7948
8330
 
@@ -8067,7 +8449,7 @@ var useNotificationList = function useNotificationList() {
8067
8449
  }
8068
8450
  }, [filters]);
8069
8451
  React.useEffect(function () {
8070
- document.title = TITLE$8;
8452
+ document.title = TITLE$9;
8071
8453
  }, []);
8072
8454
  React.useEffect(function () {
8073
8455
  getData();
@@ -8152,7 +8534,7 @@ var useNotificationList = function useNotificationList() {
8152
8534
  };
8153
8535
  };
8154
8536
 
8155
- var header$2 = "Notification list";
8537
+ var header$3 = "Notification list";
8156
8538
  var ICON_SIZE = 20;
8157
8539
 
8158
8540
  var NotificationList = function NotificationList() {
@@ -8173,7 +8555,7 @@ var NotificationList = function NotificationList() {
8173
8555
  }
8174
8556
  }, React__default.createElement("h5", {
8175
8557
  className: "mb-2"
8176
- }, header$2), React__default.createElement(reactstrap.Row, {
8558
+ }, header$3), React__default.createElement(reactstrap.Row, {
8177
8559
  className: "my-2"
8178
8560
  }, React__default.createElement(reactstrap.Col, {
8179
8561
  md: 8
@@ -8263,43 +8645,14 @@ var NotificationList = function NotificationList() {
8263
8645
  changePageSize: function changePageSize(pageSize) {
8264
8646
  return changeFilters({
8265
8647
  pageSize: pageSize
8266
- });
8267
- },
8268
- changePage: function changePage(currentPage) {
8269
- return changeFilters({
8270
- currentPage: currentPage
8271
- });
8272
- }
8273
- }))));
8274
- };
8275
-
8276
- var searchInputStyle = {
8277
- height: 38
8278
- };
8279
-
8280
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
8281
- var text = _ref.text,
8282
- initValue = _ref.initValue,
8283
- onClick = _ref.onClick,
8284
- onSearch = _ref.onSearch,
8285
- placeholder = _ref.placeholder;
8286
- return React__default.createElement("div", {
8287
- className: "d-flex align-items-center"
8288
- }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8289
- text: text,
8290
- onClick: onClick
8291
- })), React__default.createElement("div", {
8292
- className: "flex-grow-1 ml-2"
8293
- }, React__default.createElement(SearchBox$1, {
8294
- initValue: initValue,
8295
- onSearch: onSearch,
8296
- placeholder: placeholder,
8297
- style: searchInputStyle
8298
- })));
8299
- };
8300
-
8301
- SearchBoxContainer.defaultProps = {
8302
- placeholder: "Type something to search"
8648
+ });
8649
+ },
8650
+ changePage: function changePage(currentPage) {
8651
+ return changeFilters({
8652
+ currentPage: currentPage
8653
+ });
8654
+ }
8655
+ }))));
8303
8656
  };
8304
8657
 
8305
8658
  var CustomTabs = function CustomTabs(props) {
@@ -8706,7 +9059,7 @@ var get$8 = function get(filter) {
8706
9059
  });
8707
9060
  };
8708
9061
 
8709
- var TITLE$9 = "Gallery";
9062
+ var TITLE$a = "Gallery";
8710
9063
  var defaultFilter = {
8711
9064
  searchString: ""
8712
9065
  };
@@ -8943,7 +9296,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
8943
9296
  }
8944
9297
  }, [dispatch, filters]);
8945
9298
  React.useEffect(function () {
8946
- document.title = TITLE$9;
9299
+ document.title = TITLE$a;
8947
9300
  dispatch(setTargetMedia({
8948
9301
  targetMedia: undefined
8949
9302
  }));
@@ -9135,7 +9488,7 @@ var MediaDetail = function MediaDetail(_ref) {
9135
9488
 
9136
9489
  var MediaDetail$1 = React__default.memo(MediaDetail);
9137
9490
 
9138
- var header$3 = "Gallery";
9491
+ var header$4 = "Gallery";
9139
9492
 
9140
9493
  var GalleryList = function GalleryList(_ref) {
9141
9494
  var isLibrary = _ref.isLibrary;
@@ -9146,7 +9499,7 @@ var GalleryList = function GalleryList(_ref) {
9146
9499
  className: "fadeIn animated"
9147
9500
  }, !isLibrary && React__default.createElement("h5", {
9148
9501
  className: "mb-2"
9149
- }, header$3), React__default.createElement(reactstrap.Row, {
9502
+ }, header$4), React__default.createElement(reactstrap.Row, {
9150
9503
  className: "mb-2"
9151
9504
  }, React__default.createElement(reactstrap.Col, {
9152
9505
  md: 8
@@ -9547,7 +9900,7 @@ var commonReducer = toolkit.createReducer(initialState, function (builder) {
9547
9900
  }).addCase(showFontSize, function (state, action) {
9548
9901
  state.defaultFontSize = action.payload;
9549
9902
  }).addCase(initAmplitude, function (state, action) {
9550
- var _action$payload, _action$payload2, _action$payload3, _action$payload4, _action$payload5, _action$payload6, _action$payload7, _action$payload8, _action$payload9, _action$payload10, _action$payload11, _action$payload12, _action$payload13, _action$payload14;
9903
+ var _action$payload, _action$payload2, _action$payload3, _action$payload4, _action$payload5, _action$payload6, _action$payload7, _action$payload8, _action$payload9, _action$payload10, _action$payload11, _action$payload12, _action$payload13, _action$payload13$rol, _action$payload14;
9551
9904
 
9552
9905
  var hostName = window.location.hostname;
9553
9906
  var eventProperties = {
@@ -9563,7 +9916,7 @@ var commonReducer = toolkit.createReducer(initialState, function (builder) {
9563
9916
  last_page: (_action$payload11 = action.payload) !== null && _action$payload11 !== void 0 && _action$payload11.last_page ? action.payload.last_page : "",
9564
9917
  event: action.payload.event,
9565
9918
  domain: !!hostName ? hostName : "",
9566
- roles: !!((_action$payload12 = action.payload) !== null && _action$payload12 !== void 0 && _action$payload12.roles) ? (_action$payload13 = action.payload) === null || _action$payload13 === void 0 ? void 0 : _action$payload13.roles.toString() : "",
9919
+ roles: !!((_action$payload12 = action.payload) !== null && _action$payload12 !== void 0 && _action$payload12.roles) ? (_action$payload13 = action.payload) === null || _action$payload13 === void 0 ? void 0 : (_action$payload13$rol = _action$payload13.roles) === null || _action$payload13$rol === void 0 ? void 0 : _action$payload13$rol.toString() : "",
9567
9920
  answer: !!((_action$payload14 = action.payload) !== null && _action$payload14 !== void 0 && _action$payload14.answer) ? action.payload.answer : ""
9568
9921
  };
9569
9922
  state.amplitude = eventProperties;
@@ -9772,9 +10125,6 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
9772
10125
  });
9773
10126
  });
9774
10127
 
9775
- var setUserList = toolkit.createAction("users/setUserList");
9776
- var setStudentList = toolkit.createAction("users/setStudentList");
9777
-
9778
10128
  var initialState$f = {
9779
10129
  userList: [],
9780
10130
  totalItems: 0,
@@ -10248,591 +10598,239 @@ var sessionPlayerReducer = toolkit.createReducer(initialState$u, function (build
10248
10598
  questionId: questionId,
10249
10599
  text: text
10250
10600
  });
10251
- } else {
10252
- existedResponse.text = text;
10253
- }
10254
-
10255
- return _extends({}, state, {
10256
- results: state.results.map(function (result) {
10257
- return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10258
- })
10259
- });
10260
- }).addCase(setStartTime, function (state, action) {
10261
- var startTime = action.payload;
10262
- if (!startTime) return state;
10263
- state.startTime = startTime;
10264
- }).addCase(reset, function (_state, _action) {
10265
- return initialState$u;
10266
- });
10267
- });
10268
-
10269
- var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10270
- var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10271
-
10272
- var initialState$v = {
10273
- id: 0,
10274
- questions: [{
10275
- id: 0,
10276
- text: "",
10277
- type: "",
10278
- subQuestions: [],
10279
- answers: []
10280
- }],
10281
- questionResponse: []
10282
- };
10283
- var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10284
- builder.addCase(setDataPlayer, function (_state, action) {
10285
- return action.payload;
10286
- }).addCase(answerQuestionDataPlayer, function (state, action) {
10287
- var _action$payload = action.payload,
10288
- questionId = _action$payload.questionId,
10289
- text = _action$payload.text;
10290
- var questionResponse = state.questionResponse;
10291
- if (!questionResponse) return state;
10292
- var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10293
- var existedResponse = questionResponseCloner.find(function (response) {
10294
- return response.questionId === questionId;
10295
- });
10296
-
10297
- if (!existedResponse) {
10298
- questionResponseCloner.push({
10299
- questionId: questionId,
10300
- text: text
10301
- });
10302
- } else {
10303
- existedResponse.text = text;
10304
- }
10305
-
10306
- return _extends({}, state, {
10307
- questionResponse: questionResponseCloner
10308
- });
10309
- }).addCase(reset, function (_state, _action) {
10310
- return initialState$v;
10311
- });
10312
- });
10313
-
10314
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10315
-
10316
- var initialState$w = {
10317
- certificateList: [],
10318
- totalItems: 0
10319
- };
10320
- var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10321
- builder.addCase(setCertificateList, function (state, action) {
10322
- state.certificateList = action.payload.certificateList;
10323
- state.totalItems = action.payload.totalItems;
10324
- }).addCase(reset, function (_state, _action) {
10325
- return initialState$w;
10326
- });
10327
- });
10328
-
10329
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10330
-
10331
- var initialState$x = {
10332
- improveMyClassList: []
10333
- };
10334
- var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10335
- builder.addCase(setImproveMyClass, function (state, action) {
10336
- state.improveMyClassList = action.payload;
10337
- }).addCase(reset, function (_state, _action) {
10338
- return initialState$x;
10339
- });
10340
- });
10341
-
10342
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10343
-
10344
- var initialState$y = {
10345
- filterWidget: "Year"
10346
- };
10347
- var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10348
- builder.addCase(setFilterWidget, function (state, action) {
10349
- state.filterWidget = action.payload.filterWidget;
10350
- }).addCase(reset, function (_state, _action) {
10351
- return initialState$y;
10352
- });
10353
- });
10354
-
10355
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10356
-
10357
- var initialState$z = {
10358
- bandScoreList: [],
10359
- totalItems: 0
10360
- };
10361
- var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10362
- builder.addCase(setBandScoreList, function (state, action) {
10363
- state.bandScoreList = action.payload.bandScoreList;
10364
- state.totalItems = action.payload.totalItems;
10365
- }).addCase(reset, function (_state, _action) {
10366
- return initialState$z;
10367
- });
10368
- });
10369
-
10370
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10371
-
10372
- var initialState$A = {
10373
- schoolBlankDayList: [],
10374
- totalItems: 0
10375
- };
10376
- var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10377
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10378
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10379
- state.totalItems = action.payload.totalItems;
10380
- }).addCase(reset, function (_state, _action) {
10381
- return initialState$A;
10382
- });
10383
- });
10384
-
10385
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10386
-
10387
- var initialState$B = {
10388
- studentIdSelectedByTeacher: 0
10389
- };
10390
- var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10391
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10392
- state.studentIdSelectedByTeacher = action.payload;
10393
- }).addCase(reset, function (_state, _action) {
10394
- return initialState$B;
10395
- });
10396
- });
10397
-
10398
- var rootReducer = combineReducers({
10399
- common: commonReducer,
10400
- classes: classReducer,
10401
- conferenceRubrics: conferenceRubricReducer,
10402
- faqs: commonReducer$1,
10403
- skills: commonReducer$2,
10404
- emailTemplate: emailTemplateReducer,
10405
- suggestionBank: suggestionBankReducer,
10406
- learningStrategy: learningStrategyReducer,
10407
- subjects: commonReducer$3,
10408
- learningSupportCategories: commonReducer$4,
10409
- questionBank: questionBankReducer,
10410
- badges: commonReducer$5,
10411
- semester: commonReducer$6,
10412
- goalExamples: commonReducer$8,
10413
- users: commonReducer$9,
10414
- reflections: reflectionReducer,
10415
- reflectionResults: reflectionReducer$1,
10416
- feedbacks: commonReducer$a,
10417
- assessments: commonReducer$b,
10418
- questionByCategory: questionCategoryReducer,
10419
- mailCategory: questionBankReducer$1,
10420
- questionCate: questionCateReducer,
10421
- notification: questionBankReducer$2,
10422
- myStudent: commonReducer$c,
10423
- assignments: commonReducer$7,
10424
- assistants: assistantReducer,
10425
- sesstionTemplates: sessionTemplateReducer,
10426
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10427
- tutorialScreens: tutorialScreenReducer,
10428
- customAlerts: commonReducer$d,
10429
- gallery: commonReducer$e,
10430
- dashboard: dashboardReducer,
10431
- sessionPlayer: sessionPlayerReducer,
10432
- dataPlayer: dataPlayer,
10433
- certificate: commonReducer$f,
10434
- improveMyClass: commonReducer$g,
10435
- widget: widgetReducer,
10436
- bandScores: commonReducer$h,
10437
- schoolBlankDays: commonReducer$i,
10438
- navMobileReducer: navMobileReducer
10439
- });
10440
-
10441
- var store = toolkit.configureStore({
10442
- reducer: rootReducer,
10443
- middleware: function middleware(getDefaultMiddleware) {
10444
- return getDefaultMiddleware({
10445
- serializableCheck: false
10446
- }).concat(logger);
10447
- }
10448
- });
10449
-
10450
- var isInViewport = function isInViewport(el) {
10451
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10452
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10453
- };
10454
-
10455
- var debounce = function debounce(callback, wait) {
10456
- var timeout = null;
10457
- return function () {
10458
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10459
- args[_key] = arguments[_key];
10460
- }
10461
-
10462
- var next = function next() {
10463
- return callback.apply(void 0, args);
10464
- };
10465
-
10466
- clearTimeout(timeout);
10467
- timeout = setTimeout(next, wait);
10468
- };
10469
- };
10470
-
10471
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10472
- var p = document.createElement("p");
10473
- p.innerHTML = htmlString;
10474
- var text = p.innerText;
10475
- p.remove();
10476
- return text;
10477
- };
10478
-
10479
- var generateRandomString = (function () {
10480
- return (Math.random() + 1).toString(36).substring(7);
10481
- });
10482
-
10483
- var amplitudeClient = amplitude.getInstance();
10484
-
10485
- var USER_URL$2 = "/admin/user";
10486
- var CREATE_USER_URL = "/admin/create-user";
10487
- var TITLE$a = "User list";
10488
- var HOMEPAGE_TEACHER$1 = "/home";
10489
- var HOMEPAGE_STUDENT$1 = "/home";
10490
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10491
- var HOMEPAGE_PARENT$1 = "/parent";
10492
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10493
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10601
+ } else {
10602
+ existedResponse.text = text;
10603
+ }
10494
10604
 
10495
- var useUserList = function useUserList() {
10496
- var history = reactRouterDom.useHistory();
10497
- var query = new URLSearchParams(location.search);
10498
- var queryName = query.get("query");
10499
- var userList = reactRedux.useSelector(function (state) {
10500
- return state.users.userList;
10501
- });
10502
- var totalItems = reactRedux.useSelector(function (state) {
10503
- return state.users.totalItems;
10605
+ return _extends({}, state, {
10606
+ results: state.results.map(function (result) {
10607
+ return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10608
+ })
10609
+ });
10610
+ }).addCase(setStartTime, function (state, action) {
10611
+ var startTime = action.payload;
10612
+ if (!startTime) return state;
10613
+ state.startTime = startTime;
10614
+ }).addCase(reset, function (_state, _action) {
10615
+ return initialState$u;
10504
10616
  });
10617
+ });
10505
10618
 
10506
- var _useFilters = useFilters(),
10507
- filters = _useFilters.filters,
10508
- changeFilters = _useFilters.changeFilters;
10509
-
10510
- var _useState = React.useState(!!queryName ? queryName : ""),
10511
- fullName = _useState[0],
10512
- setFullName = _useState[1];
10619
+ var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10620
+ var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10513
10621
 
10514
- var isDistrict = window.location.host.includes("-district");
10515
- var dispatch = reactRedux.useDispatch();
10516
- var getData = React.useCallback(function (fullName) {
10517
- try {
10518
- var _temp3 = function _temp3() {
10519
- dispatch(setLoading(false));
10520
- };
10622
+ var initialState$v = {
10623
+ id: 0,
10624
+ questions: [{
10625
+ id: 0,
10626
+ text: "",
10627
+ type: "",
10628
+ subQuestions: [],
10629
+ answers: []
10630
+ }],
10631
+ questionResponse: []
10632
+ };
10633
+ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10634
+ builder.addCase(setDataPlayer, function (_state, action) {
10635
+ return action.payload;
10636
+ }).addCase(answerQuestionDataPlayer, function (state, action) {
10637
+ var _action$payload = action.payload,
10638
+ questionId = _action$payload.questionId,
10639
+ text = _action$payload.text;
10640
+ var questionResponse = state.questionResponse;
10641
+ if (!questionResponse) return state;
10642
+ var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10643
+ var existedResponse = questionResponseCloner.find(function (response) {
10644
+ return response.questionId === questionId;
10645
+ });
10521
10646
 
10522
- dispatch(setLoading(true));
10647
+ if (!existedResponse) {
10648
+ questionResponseCloner.push({
10649
+ questionId: questionId,
10650
+ text: text
10651
+ });
10652
+ } else {
10653
+ existedResponse.text = text;
10654
+ }
10523
10655
 
10524
- var _temp4 = _catch(function () {
10525
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10526
- searchString: fullName
10527
- })) : get$5(filters)).then(function (res) {
10528
- var _res$data = res.data,
10529
- items = _res$data.items,
10530
- totalItems = _res$data.totalItems;
10656
+ return _extends({}, state, {
10657
+ questionResponse: questionResponseCloner
10658
+ });
10659
+ }).addCase(reset, function (_state, _action) {
10660
+ return initialState$v;
10661
+ });
10662
+ });
10531
10663
 
10532
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10533
- var user = _step.value;
10534
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10535
- }
10664
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10536
10665
 
10537
- dispatch(setUserList({
10538
- userList: items,
10539
- totalItems: totalItems
10540
- }));
10541
- });
10542
- }, function (err) {
10543
- var _err$response, _err$response$data;
10666
+ var initialState$w = {
10667
+ certificateList: [],
10668
+ totalItems: 0
10669
+ };
10670
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10671
+ builder.addCase(setCertificateList, function (state, action) {
10672
+ state.certificateList = action.payload.certificateList;
10673
+ state.totalItems = action.payload.totalItems;
10674
+ }).addCase(reset, function (_state, _action) {
10675
+ return initialState$w;
10676
+ });
10677
+ });
10544
10678
 
10545
- dispatch(setAlert({
10546
- type: "danger",
10547
- 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
10548
- }));
10549
- });
10679
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10550
10680
 
10551
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10552
- } catch (e) {
10553
- return Promise.reject(e);
10554
- }
10555
- }, [dispatch, filters]);
10556
- React.useEffect(function () {
10557
- document.title = TITLE$a;
10558
- }, []);
10559
- React.useEffect(function () {
10560
- if (!!fullName) {
10561
- getData(fullName);
10562
- setFullName(null);
10563
- } else {
10564
- getData();
10565
- }
10566
- }, [filters]);
10567
- var removeData = React.useCallback(function (id) {
10568
- dispatch(setLoading(true));
10681
+ var initialState$x = {
10682
+ improveMyClassList: []
10683
+ };
10684
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10685
+ builder.addCase(setImproveMyClass, function (state, action) {
10686
+ state.improveMyClassList = action.payload;
10687
+ }).addCase(reset, function (_state, _action) {
10688
+ return initialState$x;
10689
+ });
10690
+ });
10569
10691
 
10570
- try {
10571
- dispatch(setModal({
10572
- isOpen: true,
10573
- type: "warning",
10574
- message: "Do you want to remove this user?",
10575
- onConfirm: function () {
10576
- try {
10577
- return Promise.resolve(remove$3(id)).then(function () {
10578
- dispatch(setAlert({
10579
- type: "success",
10580
- message: "Remove user successfully"
10581
- }));
10582
- changeFilters({
10583
- currentPage: 1
10584
- });
10585
- });
10586
- } catch (e) {
10587
- return Promise.reject(e);
10588
- }
10589
- }
10590
- }));
10591
- } catch (err) {
10592
- var _err$response2, _err$response2$data;
10692
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10593
10693
 
10594
- dispatch(setAlert({
10595
- type: "danger",
10596
- 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
10597
- }));
10598
- }
10694
+ var initialState$y = {
10695
+ filterWidget: "Year"
10696
+ };
10697
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10698
+ builder.addCase(setFilterWidget, function (state, action) {
10699
+ state.filterWidget = action.payload.filterWidget;
10700
+ }).addCase(reset, function (_state, _action) {
10701
+ return initialState$y;
10702
+ });
10703
+ });
10599
10704
 
10600
- dispatch(setLoading(false));
10601
- }, [filters]);
10705
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10602
10706
 
10603
- var redirectLoginUser = function redirectLoginUser(res) {
10604
- var _res$data2 = res.data,
10605
- token = _res$data2.token,
10606
- id = _res$data2.id,
10607
- firstName = _res$data2.firstName,
10608
- lastName = _res$data2.lastName,
10609
- roles = _res$data2.roles,
10610
- email = _res$data2.email,
10611
- profileImageFileName = _res$data2.profileImageFileName;
10612
- localStorage.setItem(ACCESS_TOKEN, token);
10613
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10614
- dispatch(setUser({
10615
- id: id,
10616
- firstName: firstName,
10617
- lastName: lastName,
10618
- roles: roles,
10619
- email: email,
10620
- profileImageFileName: profileImageFileName
10621
- }));
10707
+ var initialState$z = {
10708
+ bandScoreList: [],
10709
+ totalItems: 0
10710
+ };
10711
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10712
+ builder.addCase(setBandScoreList, function (state, action) {
10713
+ state.bandScoreList = action.payload.bandScoreList;
10714
+ state.totalItems = action.payload.totalItems;
10715
+ }).addCase(reset, function (_state, _action) {
10716
+ return initialState$z;
10717
+ });
10718
+ });
10622
10719
 
10623
- if (isDistrict) {
10624
- history.push(HOMEPAGE_DISTRICT$1);
10625
- } else if (roles.includes("Admin")) {
10626
- history.push(HOMEPAGE_ADMIN$1);
10627
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10628
- history.push(HOMEPAGE_TEACHER$1);
10629
- } else if (roles.includes("Student")) {
10630
- history.push(HOMEPAGE_STUDENT$1);
10631
- } else if (roles.includes("Parent")) {
10632
- history.push(HOMEPAGE_PARENT$1);
10633
- } else if (roles.includes("EduTeacher")) {
10634
- history.push(HOMEPAGE_EDU_TEACHER$1);
10635
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10636
- history.push(HOMEPAGE_TEACHER$1);
10637
- }
10638
- };
10720
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10639
10721
 
10640
- var swicthUser = React.useCallback(function (id) {
10641
- try {
10642
- var _temp6 = _catch(function () {
10643
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
10644
- var data = res.data;
10645
- dispatch(setModal({
10646
- isOpen: true,
10647
- type: "warning",
10648
- message: "Do you want to impersonate this user?",
10649
- onConfirm: function () {
10650
- try {
10651
- var _temp9 = function _temp9() {
10652
- dispatch(setLoading(false));
10653
- };
10722
+ var initialState$A = {
10723
+ schoolBlankDayList: [],
10724
+ totalItems: 0
10725
+ };
10726
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10727
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10728
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10729
+ state.totalItems = action.payload.totalItems;
10730
+ }).addCase(reset, function (_state, _action) {
10731
+ return initialState$A;
10732
+ });
10733
+ });
10654
10734
 
10655
- dispatch(setLoading(true));
10735
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10656
10736
 
10657
- var _temp10 = _catch(function () {
10658
- var req = {
10659
- email: data.email,
10660
- password: "default",
10661
- accessToken: data.token
10662
- };
10663
- return Promise.resolve(logIn(req)).then(function (res) {
10664
- localStorage.clear();
10665
- redirectLoginUser(res);
10666
- });
10667
- }, function (err) {
10668
- var _err$response3, _err$response3$data;
10737
+ var initialState$B = {
10738
+ studentIdSelectedByTeacher: 0
10739
+ };
10740
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10741
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10742
+ state.studentIdSelectedByTeacher = action.payload;
10743
+ }).addCase(reset, function (_state, _action) {
10744
+ return initialState$B;
10745
+ });
10746
+ });
10669
10747
 
10670
- setAlert({
10671
- type: "danger",
10672
- 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
10673
- });
10674
- });
10748
+ var rootReducer = combineReducers({
10749
+ common: commonReducer,
10750
+ classes: classReducer,
10751
+ conferenceRubrics: conferenceRubricReducer,
10752
+ faqs: commonReducer$1,
10753
+ skills: commonReducer$2,
10754
+ emailTemplate: emailTemplateReducer,
10755
+ suggestionBank: suggestionBankReducer,
10756
+ learningStrategy: learningStrategyReducer,
10757
+ subjects: commonReducer$3,
10758
+ learningSupportCategories: commonReducer$4,
10759
+ questionBank: questionBankReducer,
10760
+ badges: commonReducer$5,
10761
+ semester: commonReducer$6,
10762
+ goalExamples: commonReducer$8,
10763
+ users: commonReducer$9,
10764
+ reflections: reflectionReducer,
10765
+ reflectionResults: reflectionReducer$1,
10766
+ feedbacks: commonReducer$a,
10767
+ assessments: commonReducer$b,
10768
+ questionByCategory: questionCategoryReducer,
10769
+ mailCategory: questionBankReducer$1,
10770
+ questionCate: questionCateReducer,
10771
+ notification: questionBankReducer$2,
10772
+ myStudent: commonReducer$c,
10773
+ assignments: commonReducer$7,
10774
+ assistants: assistantReducer,
10775
+ sesstionTemplates: sessionTemplateReducer,
10776
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10777
+ tutorialScreens: tutorialScreenReducer,
10778
+ customAlerts: commonReducer$d,
10779
+ gallery: commonReducer$e,
10780
+ dashboard: dashboardReducer,
10781
+ sessionPlayer: sessionPlayerReducer,
10782
+ dataPlayer: dataPlayer,
10783
+ certificate: commonReducer$f,
10784
+ improveMyClass: commonReducer$g,
10785
+ widget: widgetReducer,
10786
+ bandScores: commonReducer$h,
10787
+ schoolBlankDays: commonReducer$i,
10788
+ navMobileReducer: navMobileReducer
10789
+ });
10675
10790
 
10676
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10677
- } catch (e) {
10678
- return Promise.reject(e);
10679
- }
10680
- }
10681
- }));
10682
- });
10683
- }, function (err) {
10684
- var _err$response4, _err$response4$data;
10791
+ var store = toolkit.configureStore({
10792
+ reducer: rootReducer,
10793
+ middleware: function middleware(getDefaultMiddleware) {
10794
+ return getDefaultMiddleware({
10795
+ serializableCheck: false
10796
+ }).concat(logger);
10797
+ }
10798
+ });
10685
10799
 
10686
- dispatch(setAlert({
10687
- type: "danger",
10688
- 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
10689
- }));
10690
- });
10800
+ var isInViewport = function isInViewport(el) {
10801
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10802
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10803
+ };
10691
10804
 
10692
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10693
- } catch (e) {
10694
- return Promise.reject(e);
10805
+ var debounce = function debounce(callback, wait) {
10806
+ var timeout = null;
10807
+ return function () {
10808
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10809
+ args[_key] = arguments[_key];
10695
10810
  }
10696
- }, [filters]);
10697
10811
 
10698
- var reDirectDetailPage = function reDirectDetailPage(id) {
10699
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10700
- history.push(url);
10701
- };
10812
+ var next = function next() {
10813
+ return callback.apply(void 0, args);
10814
+ };
10702
10815
 
10703
- return {
10704
- userList: userList,
10705
- totalItems: totalItems,
10706
- filters: filters,
10707
- queryName: queryName,
10708
- getData: getData,
10709
- removeData: removeData,
10710
- changeFilters: changeFilters,
10711
- reDirectDetailPage: reDirectDetailPage,
10712
- swicthUser: swicthUser
10816
+ clearTimeout(timeout);
10817
+ timeout = setTimeout(next, wait);
10713
10818
  };
10714
10819
  };
10715
10820
 
10716
- var header$4 = "User";
10717
-
10718
- var UserList = function UserList() {
10719
- var _useUserList = useUserList(),
10720
- queryName = _useUserList.queryName,
10721
- userList = _useUserList.userList,
10722
- totalItems = _useUserList.totalItems,
10723
- filters = _useUserList.filters,
10724
- removeData = _useUserList.removeData,
10725
- changeFilters = _useUserList.changeFilters,
10726
- reDirectDetailPage = _useUserList.reDirectDetailPage,
10727
- swicthUser = _useUserList.swicthUser;
10728
-
10729
- var _useTranslation = reactI18next.useTranslation(),
10730
- t = _useTranslation.t;
10731
-
10732
- return React__default.createElement("div", {
10733
- className: "fadeIn animated"
10734
- }, React__default.createElement("h5", {
10735
- className: "mb-2"
10736
- }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10737
- className: "my-2"
10738
- }, React__default.createElement(reactstrap.Col, {
10739
- md: 8
10740
- }, React__default.createElement(SearchBoxContainer, {
10741
- text: t("create_user"),
10742
- onClick: function onClick() {
10743
- return reDirectDetailPage();
10744
- },
10745
- initValue: !!queryName ? queryName : "",
10746
- onSearch: function onSearch(searchString) {
10747
- return changeFilters({
10748
- searchString: searchString
10749
- });
10750
- },
10751
- placeholder: t("type_something_to_search_by_user_name")
10752
- })), React__default.createElement(reactstrap.Col, {
10753
- md: 4,
10754
- className: "d-flex justify-content-end align-items-center"
10755
- }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10756
- className: "mb-2"
10757
- }, React__default.createElement(reactstrap.Col, {
10758
- md: 12
10759
- }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10760
- bordered: true,
10761
- hover: true,
10762
- striped: true,
10763
- responsive: true,
10764
- size: "sm"
10765
- }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10766
- className: "align-top"
10767
- }, t("name")), React__default.createElement("th", {
10768
- className: "align-top"
10769
- }, t("email")), React__default.createElement("th", {
10770
- className: "align-top"
10771
- }, t("age")), React__default.createElement("th", {
10772
- className: "align-top"
10773
- }, t("role")), React__default.createElement("th", {
10774
- className: "align-top"
10775
- }, t("active_status")), React__default.createElement("th", {
10776
- className: "align-top"
10777
- }, t("created_time")), React__default.createElement("th", {
10778
- className: "text-center"
10779
- }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10780
- return React__default.createElement("tr", {
10781
- key: record.id
10782
- }, React__default.createElement("td", {
10783
- className: "align-middle"
10784
- }, React__default.createElement(LinkEditButton, {
10785
- label: "" + record.fullName,
10786
- onClick: function onClick() {
10787
- return reDirectDetailPage(record.id);
10788
- }
10789
- })), React__default.createElement("td", {
10790
- className: "align-middle"
10791
- }, record.email), React__default.createElement("td", {
10792
- className: "align-middle"
10793
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10794
- className: "align-middle"
10795
- }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10796
- className: "align-middle"
10797
- }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10798
- className: "align-middle"
10799
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10800
- className: "text-center align-middle"
10801
- }, React__default.createElement(fa.FaUsersCog, {
10802
- style: {
10803
- fontSize: "18px",
10804
- marginRight: "10px",
10805
- cursor: "pointer"
10806
- },
10807
- onClick: function onClick() {
10808
- return swicthUser(record.id);
10809
- }
10810
- }), React__default.createElement(DeleteButtonIcon, {
10811
- onClick: function onClick() {
10812
- return removeData(record.id);
10813
- }
10814
- })));
10815
- })))) : React__default.createElement(EmptyDataAlert, {
10816
- label: t("user")
10817
- })), React__default.createElement(reactstrap.Col, {
10818
- md: 12
10819
- }, React__default.createElement(CustomPagination, {
10820
- filters: filters,
10821
- totalRecordCount: totalItems,
10822
- changePageSize: function changePageSize(pageSize) {
10823
- return changeFilters({
10824
- pageSize: pageSize
10825
- });
10826
- },
10827
- changePage: function changePage(currentPage) {
10828
- return changeFilters({
10829
- currentPage: currentPage
10830
- });
10831
- }
10832
- }))));
10821
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10822
+ var p = document.createElement("p");
10823
+ p.innerHTML = htmlString;
10824
+ var text = p.innerText;
10825
+ p.remove();
10826
+ return text;
10833
10827
  };
10834
10828
 
10835
- var amplitudeClient$1 = amplitude.getInstance();
10829
+ var generateRandomString = (function () {
10830
+ return (Math.random() + 1).toString(36).substring(7);
10831
+ });
10832
+
10833
+ var amplitudeClient = amplitude.getInstance();
10836
10834
 
10837
10835
  Object.defineProperty(exports, 'I18nextProvider', {
10838
10836
  enumerable: true,
@@ -10913,7 +10911,7 @@ exports.UploadFileButton = UploadFileButton;
10913
10911
  exports.UserDetail = UserDetail;
10914
10912
  exports.UserList = UserList;
10915
10913
  exports.addTab = addTab;
10916
- exports.amplitudeClient = amplitudeClient$1;
10914
+ exports.amplitudeClient = amplitudeClient;
10917
10915
  exports.answerQuestion = answerQuestion;
10918
10916
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10919
10917
  exports.api = api;