mario-core 2.9.102-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";
@@ -2771,21 +2771,17 @@ var useLogin = function useLogin() {
2771
2771
  googleClientId = _useState3[0],
2772
2772
  setGoogleClientId = _useState3[1];
2773
2773
 
2774
- var _useState4 = React.useState(""),
2775
- googleRecaptchaId = _useState4[0],
2776
- setGoogleRecaptchaId = _useState4[1];
2777
-
2778
- var _useState5 = React.useState(),
2779
- infoUser = _useState5[0],
2780
- setInfoUser = _useState5[1];
2774
+ var _useState4 = React.useState(),
2775
+ infoUser = _useState4[0],
2776
+ setInfoUser = _useState4[1];
2781
2777
 
2782
2778
  var toggle = React.useCallback(function () {
2783
2779
  setOpenLogin(!openLogin);
2784
2780
  }, [openLogin]);
2785
2781
 
2786
- var _useState6 = React.useState(false),
2787
- isShowPassword = _useState6[0],
2788
- setIsShowPassword = _useState6[1];
2782
+ var _useState5 = React.useState(false),
2783
+ isShowPassword = _useState5[0],
2784
+ setIsShowPassword = _useState5[1];
2789
2785
 
2790
2786
  React.useEffect(function () {
2791
2787
  document.title = TITLE;
@@ -2889,8 +2885,7 @@ var useLogin = function useLogin() {
2889
2885
  try {
2890
2886
  var _temp6 = _catch(function () {
2891
2887
  return Promise.resolve(getGoogleClientId()).then(function (res) {
2892
- setGoogleClientId(res.data.googleClientId);
2893
- setGoogleRecaptchaId(res.data.googleCaptchaId);
2888
+ setGoogleClientId(res.data);
2894
2889
  });
2895
2890
  }, function (err) {
2896
2891
  var _err$response2, _err$response2$data;
@@ -3025,8 +3020,7 @@ var useLogin = function useLogin() {
3025
3020
  setInfoUser: setInfoUser,
3026
3021
  submitLogin: submitLogin,
3027
3022
  setIsLoginGoogle: setIsLoginGoogle,
3028
- googleClientId: googleClientId,
3029
- googleRecaptchaId: googleRecaptchaId
3023
+ googleClientId: googleClientId
3030
3024
  };
3031
3025
  };
3032
3026
 
@@ -3215,6 +3209,9 @@ var BlockLogin = function BlockLogin(_ref) {
3215
3209
  }
3216
3210
  }, [executeRecaptcha]);
3217
3211
  var handleVerify = React.useCallback(function () {}, []);
3212
+ console.log({
3213
+ googleClientId: googleClientId
3214
+ });
3218
3215
 
3219
3216
  var onSuccessGoogle = function onSuccessGoogle(res) {
3220
3217
  if (!!(res !== null && res !== void 0 && res.accessToken)) {
@@ -3711,8 +3708,7 @@ var Login = function Login(props) {
3711
3708
 
3712
3709
  var _useLogin = useLogin(),
3713
3710
  defaultInfo = _useLogin.defaultInfo,
3714
- userLogin = _useLogin.userLogin,
3715
- googleRecaptchaId = _useLogin.googleRecaptchaId;
3711
+ userLogin = _useLogin.userLogin;
3716
3712
 
3717
3713
  React.useEffect(function () {
3718
3714
  isLogin && (document.title = LOGIN_TITLE);
@@ -3728,9 +3724,9 @@ var Login = function Login(props) {
3728
3724
  md: 12,
3729
3725
  xs: 12,
3730
3726
  className: "d-flex justify-content-center h-100 align-items-center"
3731
- }, !!googleRecaptchaId && React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
3727
+ }, React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
3732
3728
  useRecaptchaNet: true,
3733
- reCaptchaKey: googleRecaptchaId,
3729
+ reCaptchaKey: GOOGLE_RECAPTCHA_KEY,
3734
3730
  scriptProps: {
3735
3731
  async: true,
3736
3732
  defer: true,
@@ -6720,89 +6716,8 @@ var SkillList = function SkillList() {
6720
6716
  }))));
6721
6717
  };
6722
6718
 
6723
- var MAX_FILE_SIZE = 20097152;
6724
-
6725
- var UploadFileButton = function UploadFileButton(_ref) {
6726
- var fileName = _ref.fileName,
6727
- maxWidth = _ref.maxWidth,
6728
- maxHeight = _ref.maxHeight,
6729
- setFile = _ref.setFile,
6730
- canDelete = _ref.canDelete,
6731
- onDelete = _ref.onDelete,
6732
- isCheckFeedBack = _ref.isCheckFeedBack,
6733
- onAddImage = _ref.onAddImage;
6734
- var dispatch = reactRedux.useDispatch();
6735
-
6736
- var _useState = React.useState(""),
6737
- imagePreviewUrl = _useState[0],
6738
- setImagePreviewUrl = _useState[1];
6739
-
6740
- var imageStyle = {
6741
- maxWidth: maxWidth || "100%",
6742
- maxHeight: maxHeight || "100%"
6743
- };
6744
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6745
-
6746
- var handleImageChange = function handleImageChange(e) {
6747
- e.preventDefault();
6748
- var reader = new FileReader();
6749
- var newFile = e.target.files[0];
6750
-
6751
- if (newFile.size > MAX_FILE_SIZE) {
6752
- dispatch(setAlert({
6753
- type: "danger",
6754
- message: "File can't be larger than 2MB"
6755
- }));
6756
- return;
6757
- }
6758
-
6759
- reader.onloadend = function () {
6760
- setFile(newFile);
6761
- setImagePreviewUrl(reader.result);
6762
- };
6763
-
6764
- if (newFile) {
6765
- reader.readAsDataURL(newFile);
6766
- }
6767
-
6768
- !!onAddImage && onAddImage();
6769
- };
6770
-
6771
- var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6772
- style: imageStyle,
6773
- src: imageSrc,
6774
- alt: "image"
6775
- }) : null;
6776
- return React__default.createElement("div", {
6777
- className: "mb-2"
6778
- }, React__default.createElement(reactstrap.Form, {
6779
- className: "mb-2"
6780
- }, React__default.createElement(reactstrap.Input, {
6781
- className: "d-none",
6782
- type: "file",
6783
- id: "uploadFile",
6784
- onChange: handleImageChange,
6785
- accept: "image/*"
6786
- }), React__default.createElement("div", {
6787
- className: "d-flex align-items-center"
6788
- }, React__default.createElement(reactstrap.Label, {
6789
- htmlFor: "uploadFile",
6790
- role: "button",
6791
- tabIndex: 0,
6792
- className: styles["input-file-label"]
6793
- }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6794
- className: "fa fa-paperclip mr-1",
6795
- "aria-hidden": "true"
6796
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6797
- size: "sm",
6798
- color: "danger",
6799
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6800
- onClick: function onClick() {
6801
- setImagePreviewUrl(null);
6802
- onDelete && onDelete();
6803
- }
6804
- }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6805
- };
6719
+ var setUserList = toolkit.createAction("users/setUserList");
6720
+ var setStudentList = toolkit.createAction("users/setStudentList");
6806
6721
 
6807
6722
  var USER_URL$1 = BASE_URL + "/api/user";
6808
6723
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6835,54 +6750,38 @@ var switchAccountUser = function switchAccountUser(id) {
6835
6750
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6836
6751
  };
6837
6752
 
6838
- var initValue$3 = {
6839
- id: "",
6840
- firstName: "",
6841
- lastName: "",
6842
- email: "",
6843
- dateOfBirth: "",
6844
- roles: [],
6845
- isActive: true,
6846
- profileImageFileName: ""
6847
- };
6848
- var USER_LIST_URL = "/admin/user";
6849
- 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";
6850
6762
 
6851
- var useUserDetail = function useUserDetail(id) {
6852
- var dispatch = reactRedux.useDispatch();
6763
+ var useUserList = function useUserList() {
6853
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
+ });
6854
6773
 
6855
- var _useState = React.useState(initValue$3),
6856
- userDetail = _useState[0],
6857
- setUserDetail = _useState[1];
6858
-
6859
- var _useState2 = React.useState(null),
6860
- file = _useState2[0],
6861
- setFile = _useState2[1];
6862
-
6863
- var _useState3 = React.useState(false),
6864
- edited = _useState3[0],
6865
- setEdited = _useState3[1];
6774
+ var _useFilters = useFilters(),
6775
+ filters = _useFilters.filters,
6776
+ changeFilters = _useFilters.changeFilters;
6866
6777
 
6867
- var setEditedTrue = function setEditedTrue() {
6868
- try {
6869
- localStorage.setItem(window.location.href, "true");
6870
- setEdited(true);
6871
- return Promise.resolve();
6872
- } catch (e) {
6873
- return Promise.reject(e);
6874
- }
6875
- };
6778
+ var _useState = React.useState(!!queryName ? queryName : ""),
6779
+ fullName = _useState[0],
6780
+ setFullName = _useState[1];
6876
6781
 
6877
- React.useEffect(function () {
6878
- document.title = TITLE$7;
6879
- setEdited(false);
6880
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6881
- }, []);
6882
- React.useEffect(function () {
6883
- !!id && getData();
6884
- }, [id]);
6885
- 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) {
6886
6785
  try {
6887
6786
  var _temp3 = function _temp3() {
6888
6787
  dispatch(setLoading(false));
@@ -6891,14 +6790,22 @@ var useUserDetail = function useUserDetail(id) {
6891
6790
  dispatch(setLoading(true));
6892
6791
 
6893
6792
  var _temp4 = _catch(function () {
6894
- return Promise.resolve(getById$3(id)).then(function (res) {
6895
- 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;
6896
6799
 
6897
- setUserDetail(_extends({}, res.data, {
6898
- dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6899
- 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
6900
6808
  }));
6901
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6902
6809
  });
6903
6810
  }, function (err) {
6904
6811
  var _err$response, _err$response$data;
@@ -6913,195 +6820,712 @@ var useUserDetail = function useUserDetail(id) {
6913
6820
  } catch (e) {
6914
6821
  return Promise.reject(e);
6915
6822
  }
6916
- }, [id]);
6917
- var backToList = React.useCallback(function (user) {
6918
- !!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;
6919
6826
  }, []);
6920
- var confirmData = React.useCallback(function (data) {
6921
- try {
6922
- var _temp9 = function _temp9() {
6923
- dispatch(setLoading(false));
6924
- };
6925
-
6926
- 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));
6927
6837
 
6928
- var _temp10 = _catch(function () {
6929
- function _temp6() {
6930
- var next = !!id ? update$5 : create$5;
6931
- !id && delete data.id;
6932
- return Promise.resolve(next(data)).then(function (result) {
6933
- if (!!result) {
6934
- getById$3(result.data.id).then(function (e) {
6935
- 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
6936
6852
  });
6937
- }
6938
-
6939
- if (!id) {
6940
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6941
- }
6942
-
6943
- dispatch(setAlert({
6944
- type: "success",
6945
- message: (!!id ? "Update" : "Create") + " user successfully"
6946
- }));
6947
- });
6948
- }
6949
-
6950
- var _temp5 = function () {
6951
- if (!!file) {
6952
- var formData = new FormData();
6953
- var name = file.name;
6954
- formData.append("file", file, name);
6955
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
6956
- var _res$data2;
6957
-
6958
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
6959
- data.profileImageFileName = imageUrl;
6960
6853
  });
6854
+ } catch (e) {
6855
+ return Promise.reject(e);
6961
6856
  }
6962
- }();
6857
+ }
6858
+ }));
6859
+ } catch (err) {
6860
+ var _err$response2, _err$response2$data;
6963
6861
 
6964
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
6965
- }, function (err) {
6966
- var _err$response2, _err$response2$data;
6967
-
6968
- dispatch(setAlert({
6969
- type: "danger",
6970
- 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
6971
- }));
6972
- });
6973
-
6974
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6975
- } catch (e) {
6976
- 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
+ }));
6977
6866
  }
6978
- }, [id, file]);
6979
6867
 
6980
- var confirmChangePassword = function confirmChangePassword(data) {
6981
- try {
6982
- var _temp13 = function _temp13() {
6983
- dispatch(setLoading(false));
6984
- };
6985
-
6986
- dispatch(setLoading(true));
6987
-
6988
- var _temp14 = _catch(function () {
6989
- return Promise.resolve(changePassword(data)).then(function () {
6990
- dispatch(setAlert({
6991
- type: "success",
6992
- message: "Change password successfully"
6993
- }));
6994
- });
6995
- }, function (e) {
6996
- var _e$response, _e$response$data;
6868
+ dispatch(setLoading(false));
6869
+ }, [filters]);
6997
6870
 
6998
- dispatch(setAlert({
6999
- type: "danger",
7000
- 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
7001
- }));
7002
- });
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
+ }));
7003
6890
 
7004
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7005
- } catch (e) {
7006
- 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);
7007
6905
  }
7008
6906
  };
7009
6907
 
7010
- var forgotPasswordRequest = React.useCallback(function (data) {
6908
+ var swicthUser = React.useCallback(function (id) {
7011
6909
  try {
7012
- var _temp17 = function _temp17() {
7013
- dispatch(setLoading(false));
7014
- };
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
+ };
7015
6922
 
7016
- dispatch(setLoading(true));
6923
+ dispatch(setLoading(true));
7017
6924
 
7018
- var _temp18 = _catch(function () {
7019
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7020
- dispatch(setAlert({
7021
- type: "success",
7022
- 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
+ }
7023
6949
  }));
7024
6950
  });
7025
6951
  }, function (err) {
7026
- var _err$response3, _err$response3$data;
6952
+ var _err$response4, _err$response4$data;
7027
6953
 
7028
6954
  dispatch(setAlert({
7029
6955
  type: "danger",
7030
- 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
7031
6957
  }));
7032
6958
  });
7033
6959
 
7034
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
6960
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7035
6961
  } catch (e) {
7036
6962
  return Promise.reject(e);
7037
6963
  }
7038
- }, []);
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
+
7039
6971
  return {
7040
- userDetail: userDetail,
7041
- backToList: backToList,
7042
- confirmData: confirmData,
7043
- file: file,
7044
- setFile: setFile,
7045
- edited: edited,
7046
- setEdited: setEdited,
7047
- setEditedTrue: setEditedTrue,
7048
- confirmChangePassword: confirmChangePassword,
7049
- 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
7050
6981
  };
7051
6982
  };
7052
6983
 
7053
- var userSchema = yup.object({
7054
- firstName: yup.string().required("First name is required"),
7055
- lastName: yup.string().required("Last name is required"),
7056
- dateOfBirth: yup.string().required("Date of birth is required"),
7057
- email: yup.string().email("Email is invalid").required("Email is required"),
7058
- roles: yup.array().of(yup.string()).min(1, "Role is required")
7059
- });
7060
-
7061
- var changePasswordSchema = yup.object({
7062
- oldPassword: yup.string().required("Current password is required"),
7063
- newPassword: yup.string().required("New password is required"),
7064
- confirmedNewPassword: yup.string().required("Confirm password is required")
7065
- });
7066
-
7067
- var CREATE_USER = "create_user";
7068
- var EDIT_USER_HEADER = "edit_user";
7069
- 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;
7070
6990
 
7071
- var UserDetail = function UserDetail() {
7072
- var _useParams = reactRouterDom.useParams(),
7073
- id = _useParams.id;
6991
+ var _useState = React.useState(initValue),
6992
+ searchString = _useState[0],
6993
+ setSearchString = _useState[1];
7074
6994
 
7075
- var user = reactRedux.useSelector(function (state) {
7076
- 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
7077
7010
  });
7011
+ };
7078
7012
 
7079
- var _useTranslation = reactI18next.useTranslation(),
7080
- t = _useTranslation.t;
7013
+ SearchBox.defaultProps = {
7014
+ placeholder: "Type something to search",
7015
+ className: "",
7016
+ style: {}
7017
+ };
7018
+ var SearchBox$1 = React.memo(SearchBox);
7081
7019
 
7082
- var _useUserDetail = useUserDetail(id),
7083
- userDetail = _useUserDetail.userDetail,
7084
- backToList = _useUserDetail.backToList,
7085
- confirmData = _useUserDetail.confirmData,
7086
- file = _useUserDetail.file,
7087
- setFile = _useUserDetail.setFile,
7088
- edited = _useUserDetail.edited,
7089
- setEdited = _useUserDetail.setEdited,
7090
- setEditedTrue = _useUserDetail.setEditedTrue,
7091
- confirmChangePassword = _useUserDetail.confirmChangePassword,
7092
- forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7020
+ var searchInputStyle = {
7021
+ height: 38
7022
+ };
7093
7023
 
7094
- var initialValueForm = {
7095
- oldPassword: "",
7096
- newPassword: "",
7097
- confirmedNewPassword: ""
7098
- };
7099
- var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7100
- 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
+ };
7101
7044
 
7102
- var getFile = function getFile() {
7103
- var url = window.location.origin + "/api/ExportDataUser/" + id;
7104
- window.open(url);
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);
7105
7529
  };
7106
7530
 
7107
7531
  var onResetPw = function onResetPw(email) {
@@ -7539,42 +7963,6 @@ var CreatableSelector = function CreatableSelector(props) {
7539
7963
  });
7540
7964
  };
7541
7965
 
7542
- var SearchBox = function SearchBox(_ref) {
7543
- var initValue = _ref.initValue,
7544
- onSearch = _ref.onSearch,
7545
- placeholder = _ref.placeholder,
7546
- className = _ref.className,
7547
- style = _ref.style;
7548
-
7549
- var _useState = React.useState(initValue),
7550
- searchString = _useState[0],
7551
- setSearchString = _useState[1];
7552
-
7553
- React.useEffect(function () {
7554
- setSearchString(initValue);
7555
- }, [initValue]);
7556
- var onKeyUp = React.useCallback(function (e) {
7557
- e.key === "Enter" && onSearch(searchString);
7558
- }, [searchString, onSearch]);
7559
- return React__default.createElement(reactstrap.Input, {
7560
- placeholder: placeholder,
7561
- value: searchString,
7562
- onChange: function onChange(e) {
7563
- return setSearchString(e.target.value);
7564
- },
7565
- onKeyUp: onKeyUp,
7566
- className: className,
7567
- style: style
7568
- });
7569
- };
7570
-
7571
- SearchBox.defaultProps = {
7572
- placeholder: "Type something to search",
7573
- className: "",
7574
- style: {}
7575
- };
7576
- var SearchBox$1 = React.memo(SearchBox);
7577
-
7578
7966
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7579
7967
  var id = props.id;
7580
7968
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -7930,23 +8318,13 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
7930
8318
 
7931
8319
  var NotificationStatusSelector$1 = React.memo(NotificationStatusSelector);
7932
8320
 
7933
- var utcToLocalTime = (function (time, FORMAT) {
7934
- if (time === DATE_MIN_VALUE) return "";
7935
-
7936
- try {
7937
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7938
- } catch (_unused) {
7939
- return "";
7940
- }
7941
- });
7942
-
7943
8321
  var defaultFilters = {
7944
8322
  currentPage: 1,
7945
8323
  pageSize: 30,
7946
8324
  searchString: "",
7947
8325
  isRead: false
7948
8326
  };
7949
- var TITLE$8 = "Notification list";
8327
+ var TITLE$9 = "Notification list";
7950
8328
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
7951
8329
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
7952
8330
 
@@ -8071,7 +8449,7 @@ var useNotificationList = function useNotificationList() {
8071
8449
  }
8072
8450
  }, [filters]);
8073
8451
  React.useEffect(function () {
8074
- document.title = TITLE$8;
8452
+ document.title = TITLE$9;
8075
8453
  }, []);
8076
8454
  React.useEffect(function () {
8077
8455
  getData();
@@ -8156,7 +8534,7 @@ var useNotificationList = function useNotificationList() {
8156
8534
  };
8157
8535
  };
8158
8536
 
8159
- var header$2 = "Notification list";
8537
+ var header$3 = "Notification list";
8160
8538
  var ICON_SIZE = 20;
8161
8539
 
8162
8540
  var NotificationList = function NotificationList() {
@@ -8177,7 +8555,7 @@ var NotificationList = function NotificationList() {
8177
8555
  }
8178
8556
  }, React__default.createElement("h5", {
8179
8557
  className: "mb-2"
8180
- }, header$2), React__default.createElement(reactstrap.Row, {
8558
+ }, header$3), React__default.createElement(reactstrap.Row, {
8181
8559
  className: "my-2"
8182
8560
  }, React__default.createElement(reactstrap.Col, {
8183
8561
  md: 8
@@ -8267,43 +8645,14 @@ var NotificationList = function NotificationList() {
8267
8645
  changePageSize: function changePageSize(pageSize) {
8268
8646
  return changeFilters({
8269
8647
  pageSize: pageSize
8270
- });
8271
- },
8272
- changePage: function changePage(currentPage) {
8273
- return changeFilters({
8274
- currentPage: currentPage
8275
- });
8276
- }
8277
- }))));
8278
- };
8279
-
8280
- var searchInputStyle = {
8281
- height: 38
8282
- };
8283
-
8284
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
8285
- var text = _ref.text,
8286
- initValue = _ref.initValue,
8287
- onClick = _ref.onClick,
8288
- onSearch = _ref.onSearch,
8289
- placeholder = _ref.placeholder;
8290
- return React__default.createElement("div", {
8291
- className: "d-flex align-items-center"
8292
- }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8293
- text: text,
8294
- onClick: onClick
8295
- })), React__default.createElement("div", {
8296
- className: "flex-grow-1 ml-2"
8297
- }, React__default.createElement(SearchBox$1, {
8298
- initValue: initValue,
8299
- onSearch: onSearch,
8300
- placeholder: placeholder,
8301
- style: searchInputStyle
8302
- })));
8303
- };
8304
-
8305
- SearchBoxContainer.defaultProps = {
8306
- placeholder: "Type something to search"
8648
+ });
8649
+ },
8650
+ changePage: function changePage(currentPage) {
8651
+ return changeFilters({
8652
+ currentPage: currentPage
8653
+ });
8654
+ }
8655
+ }))));
8307
8656
  };
8308
8657
 
8309
8658
  var CustomTabs = function CustomTabs(props) {
@@ -8710,7 +9059,7 @@ var get$8 = function get(filter) {
8710
9059
  });
8711
9060
  };
8712
9061
 
8713
- var TITLE$9 = "Gallery";
9062
+ var TITLE$a = "Gallery";
8714
9063
  var defaultFilter = {
8715
9064
  searchString: ""
8716
9065
  };
@@ -8947,7 +9296,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
8947
9296
  }
8948
9297
  }, [dispatch, filters]);
8949
9298
  React.useEffect(function () {
8950
- document.title = TITLE$9;
9299
+ document.title = TITLE$a;
8951
9300
  dispatch(setTargetMedia({
8952
9301
  targetMedia: undefined
8953
9302
  }));
@@ -9139,7 +9488,7 @@ var MediaDetail = function MediaDetail(_ref) {
9139
9488
 
9140
9489
  var MediaDetail$1 = React__default.memo(MediaDetail);
9141
9490
 
9142
- var header$3 = "Gallery";
9491
+ var header$4 = "Gallery";
9143
9492
 
9144
9493
  var GalleryList = function GalleryList(_ref) {
9145
9494
  var isLibrary = _ref.isLibrary;
@@ -9150,7 +9499,7 @@ var GalleryList = function GalleryList(_ref) {
9150
9499
  className: "fadeIn animated"
9151
9500
  }, !isLibrary && React__default.createElement("h5", {
9152
9501
  className: "mb-2"
9153
- }, header$3), React__default.createElement(reactstrap.Row, {
9502
+ }, header$4), React__default.createElement(reactstrap.Row, {
9154
9503
  className: "mb-2"
9155
9504
  }, React__default.createElement(reactstrap.Col, {
9156
9505
  md: 8
@@ -9551,7 +9900,7 @@ var commonReducer = toolkit.createReducer(initialState, function (builder) {
9551
9900
  }).addCase(showFontSize, function (state, action) {
9552
9901
  state.defaultFontSize = action.payload;
9553
9902
  }).addCase(initAmplitude, function (state, action) {
9554
- 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;
9555
9904
 
9556
9905
  var hostName = window.location.hostname;
9557
9906
  var eventProperties = {
@@ -9567,7 +9916,7 @@ var commonReducer = toolkit.createReducer(initialState, function (builder) {
9567
9916
  last_page: (_action$payload11 = action.payload) !== null && _action$payload11 !== void 0 && _action$payload11.last_page ? action.payload.last_page : "",
9568
9917
  event: action.payload.event,
9569
9918
  domain: !!hostName ? hostName : "",
9570
- 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() : "",
9571
9920
  answer: !!((_action$payload14 = action.payload) !== null && _action$payload14 !== void 0 && _action$payload14.answer) ? action.payload.answer : ""
9572
9921
  };
9573
9922
  state.amplitude = eventProperties;
@@ -9776,9 +10125,6 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
9776
10125
  });
9777
10126
  });
9778
10127
 
9779
- var setUserList = toolkit.createAction("users/setUserList");
9780
- var setStudentList = toolkit.createAction("users/setStudentList");
9781
-
9782
10128
  var initialState$f = {
9783
10129
  userList: [],
9784
10130
  totalItems: 0,
@@ -10252,591 +10598,239 @@ var sessionPlayerReducer = toolkit.createReducer(initialState$u, function (build
10252
10598
  questionId: questionId,
10253
10599
  text: text
10254
10600
  });
10255
- } else {
10256
- existedResponse.text = text;
10257
- }
10258
-
10259
- return _extends({}, state, {
10260
- results: state.results.map(function (result) {
10261
- return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10262
- })
10263
- });
10264
- }).addCase(setStartTime, function (state, action) {
10265
- var startTime = action.payload;
10266
- if (!startTime) return state;
10267
- state.startTime = startTime;
10268
- }).addCase(reset, function (_state, _action) {
10269
- return initialState$u;
10270
- });
10271
- });
10272
-
10273
- var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10274
- var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10275
-
10276
- var initialState$v = {
10277
- id: 0,
10278
- questions: [{
10279
- id: 0,
10280
- text: "",
10281
- type: "",
10282
- subQuestions: [],
10283
- answers: []
10284
- }],
10285
- questionResponse: []
10286
- };
10287
- var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10288
- builder.addCase(setDataPlayer, function (_state, action) {
10289
- return action.payload;
10290
- }).addCase(answerQuestionDataPlayer, function (state, action) {
10291
- var _action$payload = action.payload,
10292
- questionId = _action$payload.questionId,
10293
- text = _action$payload.text;
10294
- var questionResponse = state.questionResponse;
10295
- if (!questionResponse) return state;
10296
- var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10297
- var existedResponse = questionResponseCloner.find(function (response) {
10298
- return response.questionId === questionId;
10299
- });
10300
-
10301
- if (!existedResponse) {
10302
- questionResponseCloner.push({
10303
- questionId: questionId,
10304
- text: text
10305
- });
10306
- } else {
10307
- existedResponse.text = text;
10308
- }
10309
-
10310
- return _extends({}, state, {
10311
- questionResponse: questionResponseCloner
10312
- });
10313
- }).addCase(reset, function (_state, _action) {
10314
- return initialState$v;
10315
- });
10316
- });
10317
-
10318
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10319
-
10320
- var initialState$w = {
10321
- certificateList: [],
10322
- totalItems: 0
10323
- };
10324
- var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10325
- builder.addCase(setCertificateList, function (state, action) {
10326
- state.certificateList = action.payload.certificateList;
10327
- state.totalItems = action.payload.totalItems;
10328
- }).addCase(reset, function (_state, _action) {
10329
- return initialState$w;
10330
- });
10331
- });
10332
-
10333
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10334
-
10335
- var initialState$x = {
10336
- improveMyClassList: []
10337
- };
10338
- var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10339
- builder.addCase(setImproveMyClass, function (state, action) {
10340
- state.improveMyClassList = action.payload;
10341
- }).addCase(reset, function (_state, _action) {
10342
- return initialState$x;
10343
- });
10344
- });
10345
-
10346
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10347
-
10348
- var initialState$y = {
10349
- filterWidget: "Year"
10350
- };
10351
- var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10352
- builder.addCase(setFilterWidget, function (state, action) {
10353
- state.filterWidget = action.payload.filterWidget;
10354
- }).addCase(reset, function (_state, _action) {
10355
- return initialState$y;
10356
- });
10357
- });
10358
-
10359
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10360
-
10361
- var initialState$z = {
10362
- bandScoreList: [],
10363
- totalItems: 0
10364
- };
10365
- var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10366
- builder.addCase(setBandScoreList, function (state, action) {
10367
- state.bandScoreList = action.payload.bandScoreList;
10368
- state.totalItems = action.payload.totalItems;
10369
- }).addCase(reset, function (_state, _action) {
10370
- return initialState$z;
10371
- });
10372
- });
10373
-
10374
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10375
-
10376
- var initialState$A = {
10377
- schoolBlankDayList: [],
10378
- totalItems: 0
10379
- };
10380
- var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10381
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10382
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10383
- state.totalItems = action.payload.totalItems;
10384
- }).addCase(reset, function (_state, _action) {
10385
- return initialState$A;
10386
- });
10387
- });
10388
-
10389
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10390
-
10391
- var initialState$B = {
10392
- studentIdSelectedByTeacher: 0
10393
- };
10394
- var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10395
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10396
- state.studentIdSelectedByTeacher = action.payload;
10397
- }).addCase(reset, function (_state, _action) {
10398
- return initialState$B;
10399
- });
10400
- });
10401
-
10402
- var rootReducer = combineReducers({
10403
- common: commonReducer,
10404
- classes: classReducer,
10405
- conferenceRubrics: conferenceRubricReducer,
10406
- faqs: commonReducer$1,
10407
- skills: commonReducer$2,
10408
- emailTemplate: emailTemplateReducer,
10409
- suggestionBank: suggestionBankReducer,
10410
- learningStrategy: learningStrategyReducer,
10411
- subjects: commonReducer$3,
10412
- learningSupportCategories: commonReducer$4,
10413
- questionBank: questionBankReducer,
10414
- badges: commonReducer$5,
10415
- semester: commonReducer$6,
10416
- goalExamples: commonReducer$8,
10417
- users: commonReducer$9,
10418
- reflections: reflectionReducer,
10419
- reflectionResults: reflectionReducer$1,
10420
- feedbacks: commonReducer$a,
10421
- assessments: commonReducer$b,
10422
- questionByCategory: questionCategoryReducer,
10423
- mailCategory: questionBankReducer$1,
10424
- questionCate: questionCateReducer,
10425
- notification: questionBankReducer$2,
10426
- myStudent: commonReducer$c,
10427
- assignments: commonReducer$7,
10428
- assistants: assistantReducer,
10429
- sesstionTemplates: sessionTemplateReducer,
10430
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10431
- tutorialScreens: tutorialScreenReducer,
10432
- customAlerts: commonReducer$d,
10433
- gallery: commonReducer$e,
10434
- dashboard: dashboardReducer,
10435
- sessionPlayer: sessionPlayerReducer,
10436
- dataPlayer: dataPlayer,
10437
- certificate: commonReducer$f,
10438
- improveMyClass: commonReducer$g,
10439
- widget: widgetReducer,
10440
- bandScores: commonReducer$h,
10441
- schoolBlankDays: commonReducer$i,
10442
- navMobileReducer: navMobileReducer
10443
- });
10444
-
10445
- var store = toolkit.configureStore({
10446
- reducer: rootReducer,
10447
- middleware: function middleware(getDefaultMiddleware) {
10448
- return getDefaultMiddleware({
10449
- serializableCheck: false
10450
- }).concat(logger);
10451
- }
10452
- });
10453
-
10454
- var isInViewport = function isInViewport(el) {
10455
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10456
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10457
- };
10458
-
10459
- var debounce = function debounce(callback, wait) {
10460
- var timeout = null;
10461
- return function () {
10462
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10463
- args[_key] = arguments[_key];
10464
- }
10465
-
10466
- var next = function next() {
10467
- return callback.apply(void 0, args);
10468
- };
10469
-
10470
- clearTimeout(timeout);
10471
- timeout = setTimeout(next, wait);
10472
- };
10473
- };
10474
-
10475
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10476
- var p = document.createElement("p");
10477
- p.innerHTML = htmlString;
10478
- var text = p.innerText;
10479
- p.remove();
10480
- return text;
10481
- };
10482
-
10483
- var generateRandomString = (function () {
10484
- return (Math.random() + 1).toString(36).substring(7);
10485
- });
10486
-
10487
- var amplitudeClient = amplitude.getInstance();
10488
-
10489
- var USER_URL$2 = "/admin/user";
10490
- var CREATE_USER_URL = "/admin/create-user";
10491
- var TITLE$a = "User list";
10492
- var HOMEPAGE_TEACHER$1 = "/home";
10493
- var HOMEPAGE_STUDENT$1 = "/home";
10494
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10495
- var HOMEPAGE_PARENT$1 = "/parent";
10496
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10497
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10601
+ } else {
10602
+ existedResponse.text = text;
10603
+ }
10498
10604
 
10499
- var useUserList = function useUserList() {
10500
- var history = reactRouterDom.useHistory();
10501
- var query = new URLSearchParams(location.search);
10502
- var queryName = query.get("query");
10503
- var userList = reactRedux.useSelector(function (state) {
10504
- return state.users.userList;
10505
- });
10506
- var totalItems = reactRedux.useSelector(function (state) {
10507
- 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;
10508
10616
  });
10617
+ });
10509
10618
 
10510
- var _useFilters = useFilters(),
10511
- filters = _useFilters.filters,
10512
- changeFilters = _useFilters.changeFilters;
10513
-
10514
- var _useState = React.useState(!!queryName ? queryName : ""),
10515
- fullName = _useState[0],
10516
- setFullName = _useState[1];
10619
+ var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10620
+ var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10517
10621
 
10518
- var isDistrict = window.location.host.includes("-district");
10519
- var dispatch = reactRedux.useDispatch();
10520
- var getData = React.useCallback(function (fullName) {
10521
- try {
10522
- var _temp3 = function _temp3() {
10523
- dispatch(setLoading(false));
10524
- };
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
+ });
10525
10646
 
10526
- dispatch(setLoading(true));
10647
+ if (!existedResponse) {
10648
+ questionResponseCloner.push({
10649
+ questionId: questionId,
10650
+ text: text
10651
+ });
10652
+ } else {
10653
+ existedResponse.text = text;
10654
+ }
10527
10655
 
10528
- var _temp4 = _catch(function () {
10529
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10530
- searchString: fullName
10531
- })) : get$5(filters)).then(function (res) {
10532
- var _res$data = res.data,
10533
- items = _res$data.items,
10534
- totalItems = _res$data.totalItems;
10656
+ return _extends({}, state, {
10657
+ questionResponse: questionResponseCloner
10658
+ });
10659
+ }).addCase(reset, function (_state, _action) {
10660
+ return initialState$v;
10661
+ });
10662
+ });
10535
10663
 
10536
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10537
- var user = _step.value;
10538
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10539
- }
10664
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10540
10665
 
10541
- dispatch(setUserList({
10542
- userList: items,
10543
- totalItems: totalItems
10544
- }));
10545
- });
10546
- }, function (err) {
10547
- 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
+ });
10548
10678
 
10549
- dispatch(setAlert({
10550
- type: "danger",
10551
- 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
10552
- }));
10553
- });
10679
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10554
10680
 
10555
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10556
- } catch (e) {
10557
- return Promise.reject(e);
10558
- }
10559
- }, [dispatch, filters]);
10560
- React.useEffect(function () {
10561
- document.title = TITLE$a;
10562
- }, []);
10563
- React.useEffect(function () {
10564
- if (!!fullName) {
10565
- getData(fullName);
10566
- setFullName(null);
10567
- } else {
10568
- getData();
10569
- }
10570
- }, [filters]);
10571
- var removeData = React.useCallback(function (id) {
10572
- 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
+ });
10573
10691
 
10574
- try {
10575
- dispatch(setModal({
10576
- isOpen: true,
10577
- type: "warning",
10578
- message: "Do you want to remove this user?",
10579
- onConfirm: function () {
10580
- try {
10581
- return Promise.resolve(remove$3(id)).then(function () {
10582
- dispatch(setAlert({
10583
- type: "success",
10584
- message: "Remove user successfully"
10585
- }));
10586
- changeFilters({
10587
- currentPage: 1
10588
- });
10589
- });
10590
- } catch (e) {
10591
- return Promise.reject(e);
10592
- }
10593
- }
10594
- }));
10595
- } catch (err) {
10596
- var _err$response2, _err$response2$data;
10692
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10597
10693
 
10598
- dispatch(setAlert({
10599
- type: "danger",
10600
- 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
10601
- }));
10602
- }
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
+ });
10603
10704
 
10604
- dispatch(setLoading(false));
10605
- }, [filters]);
10705
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10606
10706
 
10607
- var redirectLoginUser = function redirectLoginUser(res) {
10608
- var _res$data2 = res.data,
10609
- token = _res$data2.token,
10610
- id = _res$data2.id,
10611
- firstName = _res$data2.firstName,
10612
- lastName = _res$data2.lastName,
10613
- roles = _res$data2.roles,
10614
- email = _res$data2.email,
10615
- profileImageFileName = _res$data2.profileImageFileName;
10616
- localStorage.setItem(ACCESS_TOKEN, token);
10617
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10618
- dispatch(setUser({
10619
- id: id,
10620
- firstName: firstName,
10621
- lastName: lastName,
10622
- roles: roles,
10623
- email: email,
10624
- profileImageFileName: profileImageFileName
10625
- }));
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
+ });
10626
10719
 
10627
- if (isDistrict) {
10628
- history.push(HOMEPAGE_DISTRICT$1);
10629
- } else if (roles.includes("Admin")) {
10630
- history.push(HOMEPAGE_ADMIN$1);
10631
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10632
- history.push(HOMEPAGE_TEACHER$1);
10633
- } else if (roles.includes("Student")) {
10634
- history.push(HOMEPAGE_STUDENT$1);
10635
- } else if (roles.includes("Parent")) {
10636
- history.push(HOMEPAGE_PARENT$1);
10637
- } else if (roles.includes("EduTeacher")) {
10638
- history.push(HOMEPAGE_EDU_TEACHER$1);
10639
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10640
- history.push(HOMEPAGE_TEACHER$1);
10641
- }
10642
- };
10720
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10643
10721
 
10644
- var swicthUser = React.useCallback(function (id) {
10645
- try {
10646
- var _temp6 = _catch(function () {
10647
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
10648
- var data = res.data;
10649
- dispatch(setModal({
10650
- isOpen: true,
10651
- type: "warning",
10652
- message: "Do you want to impersonate this user?",
10653
- onConfirm: function () {
10654
- try {
10655
- var _temp9 = function _temp9() {
10656
- dispatch(setLoading(false));
10657
- };
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
+ });
10658
10734
 
10659
- dispatch(setLoading(true));
10735
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10660
10736
 
10661
- var _temp10 = _catch(function () {
10662
- var req = {
10663
- email: data.email,
10664
- password: "default",
10665
- accessToken: data.token
10666
- };
10667
- return Promise.resolve(logIn(req)).then(function (res) {
10668
- localStorage.clear();
10669
- redirectLoginUser(res);
10670
- });
10671
- }, function (err) {
10672
- 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
+ });
10673
10747
 
10674
- setAlert({
10675
- type: "danger",
10676
- 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
10677
- });
10678
- });
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
+ });
10679
10790
 
10680
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10681
- } catch (e) {
10682
- return Promise.reject(e);
10683
- }
10684
- }
10685
- }));
10686
- });
10687
- }, function (err) {
10688
- 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
+ });
10689
10799
 
10690
- dispatch(setAlert({
10691
- type: "danger",
10692
- 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
10693
- }));
10694
- });
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
+ };
10695
10804
 
10696
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10697
- } catch (e) {
10698
- 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];
10699
10810
  }
10700
- }, [filters]);
10701
10811
 
10702
- var reDirectDetailPage = function reDirectDetailPage(id) {
10703
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10704
- history.push(url);
10705
- };
10812
+ var next = function next() {
10813
+ return callback.apply(void 0, args);
10814
+ };
10706
10815
 
10707
- return {
10708
- userList: userList,
10709
- totalItems: totalItems,
10710
- filters: filters,
10711
- queryName: queryName,
10712
- getData: getData,
10713
- removeData: removeData,
10714
- changeFilters: changeFilters,
10715
- reDirectDetailPage: reDirectDetailPage,
10716
- swicthUser: swicthUser
10816
+ clearTimeout(timeout);
10817
+ timeout = setTimeout(next, wait);
10717
10818
  };
10718
10819
  };
10719
10820
 
10720
- var header$4 = "User";
10721
-
10722
- var UserList = function UserList() {
10723
- var _useUserList = useUserList(),
10724
- queryName = _useUserList.queryName,
10725
- userList = _useUserList.userList,
10726
- totalItems = _useUserList.totalItems,
10727
- filters = _useUserList.filters,
10728
- removeData = _useUserList.removeData,
10729
- changeFilters = _useUserList.changeFilters,
10730
- reDirectDetailPage = _useUserList.reDirectDetailPage,
10731
- swicthUser = _useUserList.swicthUser;
10732
-
10733
- var _useTranslation = reactI18next.useTranslation(),
10734
- t = _useTranslation.t;
10735
-
10736
- return React__default.createElement("div", {
10737
- className: "fadeIn animated"
10738
- }, React__default.createElement("h5", {
10739
- className: "mb-2"
10740
- }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10741
- className: "my-2"
10742
- }, React__default.createElement(reactstrap.Col, {
10743
- md: 8
10744
- }, React__default.createElement(SearchBoxContainer, {
10745
- text: t("create_user"),
10746
- onClick: function onClick() {
10747
- return reDirectDetailPage();
10748
- },
10749
- initValue: !!queryName ? queryName : "",
10750
- onSearch: function onSearch(searchString) {
10751
- return changeFilters({
10752
- searchString: searchString
10753
- });
10754
- },
10755
- placeholder: t("type_something_to_search_by_user_name")
10756
- })), React__default.createElement(reactstrap.Col, {
10757
- md: 4,
10758
- className: "d-flex justify-content-end align-items-center"
10759
- }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10760
- className: "mb-2"
10761
- }, React__default.createElement(reactstrap.Col, {
10762
- md: 12
10763
- }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10764
- bordered: true,
10765
- hover: true,
10766
- striped: true,
10767
- responsive: true,
10768
- size: "sm"
10769
- }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10770
- className: "align-top"
10771
- }, t("name")), React__default.createElement("th", {
10772
- className: "align-top"
10773
- }, t("email")), React__default.createElement("th", {
10774
- className: "align-top"
10775
- }, t("age")), React__default.createElement("th", {
10776
- className: "align-top"
10777
- }, t("role")), React__default.createElement("th", {
10778
- className: "align-top"
10779
- }, t("active_status")), React__default.createElement("th", {
10780
- className: "align-top"
10781
- }, t("created_time")), React__default.createElement("th", {
10782
- className: "text-center"
10783
- }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10784
- return React__default.createElement("tr", {
10785
- key: record.id
10786
- }, React__default.createElement("td", {
10787
- className: "align-middle"
10788
- }, React__default.createElement(LinkEditButton, {
10789
- label: "" + record.fullName,
10790
- onClick: function onClick() {
10791
- return reDirectDetailPage(record.id);
10792
- }
10793
- })), React__default.createElement("td", {
10794
- className: "align-middle"
10795
- }, record.email), React__default.createElement("td", {
10796
- className: "align-middle"
10797
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
10798
- className: "align-middle"
10799
- }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
10800
- className: "align-middle"
10801
- }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
10802
- className: "align-middle"
10803
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
10804
- className: "text-center align-middle"
10805
- }, React__default.createElement(fa.FaUsersCog, {
10806
- style: {
10807
- fontSize: "18px",
10808
- marginRight: "10px",
10809
- cursor: "pointer"
10810
- },
10811
- onClick: function onClick() {
10812
- return swicthUser(record.id);
10813
- }
10814
- }), React__default.createElement(DeleteButtonIcon, {
10815
- onClick: function onClick() {
10816
- return removeData(record.id);
10817
- }
10818
- })));
10819
- })))) : React__default.createElement(EmptyDataAlert, {
10820
- label: t("user")
10821
- })), React__default.createElement(reactstrap.Col, {
10822
- md: 12
10823
- }, React__default.createElement(CustomPagination, {
10824
- filters: filters,
10825
- totalRecordCount: totalItems,
10826
- changePageSize: function changePageSize(pageSize) {
10827
- return changeFilters({
10828
- pageSize: pageSize
10829
- });
10830
- },
10831
- changePage: function changePage(currentPage) {
10832
- return changeFilters({
10833
- currentPage: currentPage
10834
- });
10835
- }
10836
- }))));
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;
10837
10827
  };
10838
10828
 
10839
- 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();
10840
10834
 
10841
10835
  Object.defineProperty(exports, 'I18nextProvider', {
10842
10836
  enumerable: true,
@@ -10917,7 +10911,7 @@ exports.UploadFileButton = UploadFileButton;
10917
10911
  exports.UserDetail = UserDetail;
10918
10912
  exports.UserList = UserList;
10919
10913
  exports.addTab = addTab;
10920
- exports.amplitudeClient = amplitudeClient$1;
10914
+ exports.amplitudeClient = amplitudeClient;
10921
10915
  exports.answerQuestion = answerQuestion;
10922
10916
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
10923
10917
  exports.api = api;