mario-core 2.9.103-beta → 2.9.105-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.
@@ -20,11 +20,10 @@ import { CgMenuRight } from 'react-icons/cg';
20
20
  import { RiLogoutBoxRLine } from 'react-icons/ri';
21
21
  import Pusher from 'pusher-js/with-encryption';
22
22
  import { BsChevronDown } from 'react-icons/bs';
23
- import { FaPlus, FaTrashAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } from 'react-icons/fa';
23
+ import { FaPlus, FaTrashAlt, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload, FaUsersCog } from 'react-icons/fa';
24
24
  import { format } from 'date-fns';
25
25
  import { Editor } from '@tinymce/tinymce-react';
26
26
  import differenceInCalendarYears from 'date-fns/differenceInCalendarYears';
27
- import moment from 'moment';
28
27
  import DatePicker from 'react-datepicker';
29
28
  import toDate from 'date-fns/toDate';
30
29
  import { MdAttachFile } from 'react-icons/md';
@@ -32,6 +31,7 @@ import Creatable from 'react-select/creatable';
32
31
  import ReactNotification$1 from 'react-notifications-component';
33
32
  import 'react-notifications-component/dist/theme.css';
34
33
  import { AiOutlineEye } from 'react-icons/ai';
34
+ import moment from 'moment';
35
35
 
36
36
  var dashboard = "Dashboard";
37
37
  var user = "User";
@@ -2769,17 +2769,21 @@ var useLogin = function useLogin() {
2769
2769
  googleClientId = _useState3[0],
2770
2770
  setGoogleClientId = _useState3[1];
2771
2771
 
2772
- var _useState4 = useState(),
2773
- infoUser = _useState4[0],
2774
- setInfoUser = _useState4[1];
2772
+ var _useState4 = useState(""),
2773
+ googleRecaptchaId = _useState4[0],
2774
+ setGoogleRecaptchaId = _useState4[1];
2775
+
2776
+ var _useState5 = useState(),
2777
+ infoUser = _useState5[0],
2778
+ setInfoUser = _useState5[1];
2775
2779
 
2776
2780
  var toggle = useCallback(function () {
2777
2781
  setOpenLogin(!openLogin);
2778
2782
  }, [openLogin]);
2779
2783
 
2780
- var _useState5 = useState(false),
2781
- isShowPassword = _useState5[0],
2782
- setIsShowPassword = _useState5[1];
2784
+ var _useState6 = useState(false),
2785
+ isShowPassword = _useState6[0],
2786
+ setIsShowPassword = _useState6[1];
2783
2787
 
2784
2788
  useEffect(function () {
2785
2789
  document.title = TITLE;
@@ -2883,7 +2887,8 @@ var useLogin = function useLogin() {
2883
2887
  try {
2884
2888
  var _temp6 = _catch(function () {
2885
2889
  return Promise.resolve(getGoogleClientId()).then(function (res) {
2886
- setGoogleClientId(res.data);
2890
+ setGoogleClientId(res.data.googleClientId);
2891
+ setGoogleRecaptchaId(res.data.googleCaptchaId);
2887
2892
  });
2888
2893
  }, function (err) {
2889
2894
  var _err$response2, _err$response2$data;
@@ -3018,7 +3023,8 @@ var useLogin = function useLogin() {
3018
3023
  setInfoUser: setInfoUser,
3019
3024
  submitLogin: submitLogin,
3020
3025
  setIsLoginGoogle: setIsLoginGoogle,
3021
- googleClientId: googleClientId
3026
+ googleClientId: googleClientId,
3027
+ googleRecaptchaId: googleRecaptchaId
3022
3028
  };
3023
3029
  };
3024
3030
 
@@ -3207,9 +3213,6 @@ var BlockLogin = function BlockLogin(_ref) {
3207
3213
  }
3208
3214
  }, [executeRecaptcha]);
3209
3215
  var handleVerify = useCallback(function () {}, []);
3210
- console.log({
3211
- googleClientId: googleClientId
3212
- });
3213
3216
 
3214
3217
  var onSuccessGoogle = function onSuccessGoogle(res) {
3215
3218
  if (!!(res !== null && res !== void 0 && res.accessToken)) {
@@ -3706,7 +3709,8 @@ var Login = function Login(props) {
3706
3709
 
3707
3710
  var _useLogin = useLogin(),
3708
3711
  defaultInfo = _useLogin.defaultInfo,
3709
- userLogin = _useLogin.userLogin;
3712
+ userLogin = _useLogin.userLogin,
3713
+ googleRecaptchaId = _useLogin.googleRecaptchaId;
3710
3714
 
3711
3715
  useEffect(function () {
3712
3716
  isLogin && (document.title = LOGIN_TITLE);
@@ -3722,9 +3726,9 @@ var Login = function Login(props) {
3722
3726
  md: 12,
3723
3727
  xs: 12,
3724
3728
  className: "d-flex justify-content-center h-100 align-items-center"
3725
- }, React.createElement(GoogleReCaptchaProvider, {
3729
+ }, !!googleRecaptchaId && React.createElement(GoogleReCaptchaProvider, {
3726
3730
  useRecaptchaNet: true,
3727
- reCaptchaKey: GOOGLE_RECAPTCHA_KEY,
3731
+ reCaptchaKey: googleRecaptchaId,
3728
3732
  scriptProps: {
3729
3733
  async: true,
3730
3734
  defer: true,
@@ -6714,8 +6718,89 @@ var SkillList = function SkillList() {
6714
6718
  }))));
6715
6719
  };
6716
6720
 
6717
- var setUserList = createAction("users/setUserList");
6718
- var setStudentList = createAction("users/setStudentList");
6721
+ var MAX_FILE_SIZE = 20097152;
6722
+
6723
+ var UploadFileButton = function UploadFileButton(_ref) {
6724
+ var fileName = _ref.fileName,
6725
+ maxWidth = _ref.maxWidth,
6726
+ maxHeight = _ref.maxHeight,
6727
+ setFile = _ref.setFile,
6728
+ canDelete = _ref.canDelete,
6729
+ onDelete = _ref.onDelete,
6730
+ isCheckFeedBack = _ref.isCheckFeedBack,
6731
+ onAddImage = _ref.onAddImage;
6732
+ var dispatch = useDispatch();
6733
+
6734
+ var _useState = useState(""),
6735
+ imagePreviewUrl = _useState[0],
6736
+ setImagePreviewUrl = _useState[1];
6737
+
6738
+ var imageStyle = {
6739
+ maxWidth: maxWidth || "100%",
6740
+ maxHeight: maxHeight || "100%"
6741
+ };
6742
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6743
+
6744
+ var handleImageChange = function handleImageChange(e) {
6745
+ e.preventDefault();
6746
+ var reader = new FileReader();
6747
+ var newFile = e.target.files[0];
6748
+
6749
+ if (newFile.size > MAX_FILE_SIZE) {
6750
+ dispatch(setAlert({
6751
+ type: "danger",
6752
+ message: "File can't be larger than 2MB"
6753
+ }));
6754
+ return;
6755
+ }
6756
+
6757
+ reader.onloadend = function () {
6758
+ setFile(newFile);
6759
+ setImagePreviewUrl(reader.result);
6760
+ };
6761
+
6762
+ if (newFile) {
6763
+ reader.readAsDataURL(newFile);
6764
+ }
6765
+
6766
+ !!onAddImage && onAddImage();
6767
+ };
6768
+
6769
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React.createElement("img", {
6770
+ style: imageStyle,
6771
+ src: imageSrc,
6772
+ alt: "image"
6773
+ }) : null;
6774
+ return React.createElement("div", {
6775
+ className: "mb-2"
6776
+ }, React.createElement(Form, {
6777
+ className: "mb-2"
6778
+ }, React.createElement(Input, {
6779
+ className: "d-none",
6780
+ type: "file",
6781
+ id: "uploadFile",
6782
+ onChange: handleImageChange,
6783
+ accept: "image/*"
6784
+ }), React.createElement("div", {
6785
+ className: "d-flex align-items-center"
6786
+ }, React.createElement(Label, {
6787
+ htmlFor: "uploadFile",
6788
+ role: "button",
6789
+ tabIndex: 0,
6790
+ className: styles["input-file-label"]
6791
+ }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
6792
+ className: "fa fa-paperclip mr-1",
6793
+ "aria-hidden": "true"
6794
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(Button, {
6795
+ size: "sm",
6796
+ color: "danger",
6797
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6798
+ onClick: function onClick() {
6799
+ setImagePreviewUrl(null);
6800
+ onDelete && onDelete();
6801
+ }
6802
+ }, React.createElement(FaTrashAlt, null)))), imagePreviewContainer);
6803
+ };
6719
6804
 
6720
6805
  var USER_URL$1 = BASE_URL + "/api/user";
6721
6806
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6748,38 +6833,54 @@ var switchAccountUser = function switchAccountUser(id) {
6748
6833
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6749
6834
  };
6750
6835
 
6751
- var USER_URL$2 = "/admin/user";
6752
- var CREATE_USER_URL = "/admin/create-user";
6753
- var TITLE$7 = "User list";
6754
- var HOMEPAGE_TEACHER$1 = "/home";
6755
- var HOMEPAGE_STUDENT$1 = "/home";
6756
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6757
- var HOMEPAGE_PARENT$1 = "/parent";
6758
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6759
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
6836
+ var initValue$3 = {
6837
+ id: "",
6838
+ firstName: "",
6839
+ lastName: "",
6840
+ email: "",
6841
+ dateOfBirth: "",
6842
+ roles: [],
6843
+ isActive: true,
6844
+ profileImageFileName: ""
6845
+ };
6846
+ var USER_LIST_URL = "/admin/user";
6847
+ var TITLE$7 = "User detail";
6760
6848
 
6761
- var useUserList = function useUserList() {
6849
+ var useUserDetail = function useUserDetail(id) {
6850
+ var dispatch = useDispatch();
6762
6851
  var history = useHistory();
6763
- var query = new URLSearchParams(location.search);
6764
- var queryName = query.get("query");
6765
- var userList = useSelector(function (state) {
6766
- return state.users.userList;
6767
- });
6768
- var totalItems = useSelector(function (state) {
6769
- return state.users.totalItems;
6770
- });
6771
6852
 
6772
- var _useFilters = useFilters(),
6773
- filters = _useFilters.filters,
6774
- changeFilters = _useFilters.changeFilters;
6853
+ var _useState = useState(initValue$3),
6854
+ userDetail = _useState[0],
6855
+ setUserDetail = _useState[1];
6775
6856
 
6776
- var _useState = useState(!!queryName ? queryName : ""),
6777
- fullName = _useState[0],
6778
- setFullName = _useState[1];
6857
+ var _useState2 = useState(null),
6858
+ file = _useState2[0],
6859
+ setFile = _useState2[1];
6779
6860
 
6780
- var isDistrict = window.location.host.includes("-district");
6781
- var dispatch = useDispatch();
6782
- var getData = useCallback(function (fullName) {
6861
+ var _useState3 = useState(false),
6862
+ edited = _useState3[0],
6863
+ setEdited = _useState3[1];
6864
+
6865
+ var setEditedTrue = function setEditedTrue() {
6866
+ try {
6867
+ localStorage.setItem(window.location.href, "true");
6868
+ setEdited(true);
6869
+ return Promise.resolve();
6870
+ } catch (e) {
6871
+ return Promise.reject(e);
6872
+ }
6873
+ };
6874
+
6875
+ useEffect(function () {
6876
+ document.title = TITLE$7;
6877
+ setEdited(false);
6878
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6879
+ }, []);
6880
+ useEffect(function () {
6881
+ !!id && getData();
6882
+ }, [id]);
6883
+ var getData = useCallback(function () {
6783
6884
  try {
6784
6885
  var _temp3 = function _temp3() {
6785
6886
  dispatch(setLoading(false));
@@ -6788,22 +6889,14 @@ var useUserList = function useUserList() {
6788
6889
  dispatch(setLoading(true));
6789
6890
 
6790
6891
  var _temp4 = _catch(function () {
6791
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6792
- searchString: fullName
6793
- })) : get$5(filters)).then(function (res) {
6794
- var _res$data = res.data,
6795
- items = _res$data.items,
6796
- totalItems = _res$data.totalItems;
6797
-
6798
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6799
- var user = _step.value;
6800
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6801
- }
6892
+ return Promise.resolve(getById$3(id)).then(function (res) {
6893
+ var _res$data;
6802
6894
 
6803
- dispatch(setUserList({
6804
- userList: items,
6805
- totalItems: totalItems
6895
+ setUserDetail(_extends({}, res.data, {
6896
+ dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6897
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6806
6898
  }));
6899
+ document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6807
6900
  });
6808
6901
  }, function (err) {
6809
6902
  var _err$response, _err$response$data;
@@ -6818,688 +6911,171 @@ var useUserList = function useUserList() {
6818
6911
  } catch (e) {
6819
6912
  return Promise.reject(e);
6820
6913
  }
6821
- }, [dispatch, filters]);
6822
- useEffect(function () {
6823
- document.title = TITLE$7;
6914
+ }, [id]);
6915
+ var backToList = useCallback(function (user) {
6916
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6824
6917
  }, []);
6825
- useEffect(function () {
6826
- if (!!fullName) {
6827
- getData(fullName);
6828
- setFullName(null);
6829
- } else {
6830
- getData();
6831
- }
6832
- }, [filters]);
6833
- var removeData = useCallback(function (id) {
6834
- dispatch(setLoading(true));
6835
-
6918
+ var confirmData = useCallback(function (data) {
6836
6919
  try {
6837
- dispatch(setModal({
6838
- isOpen: true,
6839
- type: "warning",
6840
- message: "Do you want to remove this user?",
6841
- onConfirm: function () {
6842
- try {
6843
- return Promise.resolve(remove$3(id)).then(function () {
6844
- dispatch(setAlert({
6845
- type: "success",
6846
- message: "Remove user successfully"
6847
- }));
6848
- changeFilters({
6849
- currentPage: 1
6920
+ var _temp9 = function _temp9() {
6921
+ dispatch(setLoading(false));
6922
+ };
6923
+
6924
+ dispatch(setLoading(true));
6925
+
6926
+ var _temp10 = _catch(function () {
6927
+ function _temp6() {
6928
+ var next = !!id ? update$5 : create$5;
6929
+ !id && delete data.id;
6930
+ return Promise.resolve(next(data)).then(function (result) {
6931
+ if (!!result) {
6932
+ getById$3(result.data.id).then(function (e) {
6933
+ backToList(e.data.fullName);
6850
6934
  });
6851
- });
6852
- } catch (e) {
6853
- return Promise.reject(e);
6854
- }
6855
- }
6856
- }));
6857
- } catch (err) {
6858
- var _err$response2, _err$response2$data;
6935
+ }
6859
6936
 
6860
- dispatch(setAlert({
6861
- type: "danger",
6862
- 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
6863
- }));
6864
- }
6937
+ if (!id) {
6938
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6939
+ }
6865
6940
 
6866
- dispatch(setLoading(false));
6867
- }, [filters]);
6941
+ dispatch(setAlert({
6942
+ type: "success",
6943
+ message: (!!id ? "Update" : "Create") + " user successfully"
6944
+ }));
6945
+ });
6946
+ }
6868
6947
 
6869
- var redirectLoginUser = function redirectLoginUser(res) {
6870
- var _res$data2 = res.data,
6871
- token = _res$data2.token,
6872
- id = _res$data2.id,
6873
- firstName = _res$data2.firstName,
6874
- lastName = _res$data2.lastName,
6875
- roles = _res$data2.roles,
6876
- email = _res$data2.email,
6877
- profileImageFileName = _res$data2.profileImageFileName;
6878
- localStorage.setItem(ACCESS_TOKEN, token);
6879
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
6880
- dispatch(setUser({
6881
- id: id,
6882
- firstName: firstName,
6883
- lastName: lastName,
6884
- roles: roles,
6885
- email: email,
6886
- profileImageFileName: profileImageFileName
6887
- }));
6948
+ var _temp5 = function () {
6949
+ if (!!file) {
6950
+ var formData = new FormData();
6951
+ var name = file.name;
6952
+ formData.append("file", file, name);
6953
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
6954
+ var _res$data2;
6888
6955
 
6889
- if (isDistrict) {
6890
- history.push(HOMEPAGE_DISTRICT$1);
6891
- } else if (roles.includes("Admin")) {
6892
- history.push(HOMEPAGE_ADMIN$1);
6893
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
6894
- history.push(HOMEPAGE_TEACHER$1);
6895
- } else if (roles.includes("Student")) {
6896
- history.push(HOMEPAGE_STUDENT$1);
6897
- } else if (roles.includes("Parent")) {
6898
- history.push(HOMEPAGE_PARENT$1);
6899
- } else if (roles.includes("EduTeacher")) {
6900
- history.push(HOMEPAGE_EDU_TEACHER$1);
6901
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
6902
- history.push(HOMEPAGE_TEACHER$1);
6903
- }
6904
- };
6956
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
6957
+ data.profileImageFileName = imageUrl;
6958
+ });
6959
+ }
6960
+ }();
6905
6961
 
6906
- var swicthUser = useCallback(function (id) {
6907
- try {
6908
- var _temp6 = _catch(function () {
6909
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
6910
- var data = res.data;
6911
- dispatch(setModal({
6912
- isOpen: true,
6913
- type: "warning",
6914
- message: "Do you want to impersonate this user?",
6915
- onConfirm: function () {
6916
- try {
6917
- var _temp9 = function _temp9() {
6918
- dispatch(setLoading(false));
6919
- };
6962
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
6963
+ }, function (err) {
6964
+ var _err$response2, _err$response2$data;
6920
6965
 
6921
- dispatch(setLoading(true));
6966
+ dispatch(setAlert({
6967
+ type: "danger",
6968
+ 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
6969
+ }));
6970
+ });
6922
6971
 
6923
- var _temp10 = _catch(function () {
6924
- var req = {
6925
- email: data.email,
6926
- password: "default",
6927
- accessToken: data.token
6928
- };
6929
- return Promise.resolve(logIn(req)).then(function (res) {
6930
- localStorage.clear();
6931
- redirectLoginUser(res);
6932
- });
6933
- }, function (err) {
6934
- var _err$response3, _err$response3$data;
6972
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6973
+ } catch (e) {
6974
+ return Promise.reject(e);
6975
+ }
6976
+ }, [id, file]);
6935
6977
 
6936
- setAlert({
6937
- type: "danger",
6938
- 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
6939
- });
6940
- });
6978
+ var confirmChangePassword = function confirmChangePassword(data) {
6979
+ try {
6980
+ var _temp13 = function _temp13() {
6981
+ dispatch(setLoading(false));
6982
+ };
6941
6983
 
6942
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6943
- } catch (e) {
6944
- return Promise.reject(e);
6945
- }
6946
- }
6984
+ dispatch(setLoading(true));
6985
+
6986
+ var _temp14 = _catch(function () {
6987
+ return Promise.resolve(changePassword(data)).then(function () {
6988
+ dispatch(setAlert({
6989
+ type: "success",
6990
+ message: "Change password successfully"
6947
6991
  }));
6948
6992
  });
6949
- }, function (err) {
6950
- var _err$response4, _err$response4$data;
6993
+ }, function (e) {
6994
+ var _e$response, _e$response$data;
6951
6995
 
6952
6996
  dispatch(setAlert({
6953
6997
  type: "danger",
6954
- 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
6998
+ 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
6955
6999
  }));
6956
7000
  });
6957
7001
 
6958
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7002
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
6959
7003
  } catch (e) {
6960
7004
  return Promise.reject(e);
6961
7005
  }
6962
- }, [filters]);
6963
-
6964
- var reDirectDetailPage = function reDirectDetailPage(id) {
6965
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
6966
- history.push(url);
6967
7006
  };
6968
7007
 
6969
- return {
6970
- userList: userList,
6971
- totalItems: totalItems,
6972
- filters: filters,
6973
- queryName: queryName,
6974
- getData: getData,
6975
- removeData: removeData,
6976
- changeFilters: changeFilters,
6977
- reDirectDetailPage: reDirectDetailPage,
6978
- swicthUser: swicthUser
6979
- };
6980
- };
7008
+ var forgotPasswordRequest = useCallback(function (data) {
7009
+ try {
7010
+ var _temp17 = function _temp17() {
7011
+ dispatch(setLoading(false));
7012
+ };
6981
7013
 
6982
- var SearchBox = function SearchBox(_ref) {
6983
- var initValue = _ref.initValue,
6984
- onSearch = _ref.onSearch,
6985
- placeholder = _ref.placeholder,
6986
- className = _ref.className,
6987
- style = _ref.style;
7014
+ dispatch(setLoading(true));
6988
7015
 
6989
- var _useState = useState(initValue),
6990
- searchString = _useState[0],
6991
- setSearchString = _useState[1];
7016
+ var _temp18 = _catch(function () {
7017
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7018
+ dispatch(setAlert({
7019
+ type: "success",
7020
+ message: "Send forgot password link successfully"
7021
+ }));
7022
+ });
7023
+ }, function (err) {
7024
+ var _err$response3, _err$response3$data;
6992
7025
 
6993
- useEffect(function () {
6994
- setSearchString(initValue);
6995
- }, [initValue]);
6996
- var onKeyUp = useCallback(function (e) {
6997
- e.key === "Enter" && onSearch(searchString);
6998
- }, [searchString, onSearch]);
6999
- return React.createElement(Input, {
7000
- placeholder: placeholder,
7001
- value: searchString,
7002
- onChange: function onChange(e) {
7003
- return setSearchString(e.target.value);
7004
- },
7005
- onKeyUp: onKeyUp,
7006
- className: className,
7007
- style: style
7008
- });
7009
- };
7026
+ dispatch(setAlert({
7027
+ type: "danger",
7028
+ 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"
7029
+ }));
7030
+ });
7010
7031
 
7011
- SearchBox.defaultProps = {
7012
- placeholder: "Type something to search",
7013
- className: "",
7014
- style: {}
7032
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7033
+ } catch (e) {
7034
+ return Promise.reject(e);
7035
+ }
7036
+ }, []);
7037
+ return {
7038
+ userDetail: userDetail,
7039
+ backToList: backToList,
7040
+ confirmData: confirmData,
7041
+ file: file,
7042
+ setFile: setFile,
7043
+ edited: edited,
7044
+ setEdited: setEdited,
7045
+ setEditedTrue: setEditedTrue,
7046
+ confirmChangePassword: confirmChangePassword,
7047
+ forgotPasswordRequest: forgotPasswordRequest
7048
+ };
7015
7049
  };
7016
- var SearchBox$1 = memo(SearchBox);
7017
7050
 
7018
- var searchInputStyle = {
7019
- height: 38
7020
- };
7051
+ var userSchema = object({
7052
+ firstName: string().required("First name is required"),
7053
+ lastName: string().required("Last name is required"),
7054
+ dateOfBirth: string().required("Date of birth is required"),
7055
+ email: string().email("Email is invalid").required("Email is required"),
7056
+ roles: array().of(string()).min(1, "Role is required")
7057
+ });
7021
7058
 
7022
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
7023
- var text = _ref.text,
7024
- initValue = _ref.initValue,
7025
- onClick = _ref.onClick,
7026
- onSearch = _ref.onSearch,
7027
- placeholder = _ref.placeholder;
7028
- return React.createElement("div", {
7029
- className: "d-flex align-items-center"
7030
- }, React.createElement("div", null, React.createElement(AddButton, {
7031
- text: text,
7032
- onClick: onClick
7033
- })), React.createElement("div", {
7034
- className: "flex-grow-1 ml-2"
7035
- }, React.createElement(SearchBox$1, {
7036
- initValue: initValue,
7037
- onSearch: onSearch,
7038
- placeholder: placeholder,
7039
- style: searchInputStyle
7040
- })));
7041
- };
7059
+ var changePasswordSchema = object({
7060
+ oldPassword: string().required("Current password is required"),
7061
+ newPassword: string().required("New password is required"),
7062
+ confirmedNewPassword: string().required("Confirm password is required")
7063
+ });
7042
7064
 
7043
- SearchBoxContainer.defaultProps = {
7044
- placeholder: "Type something to search"
7045
- };
7065
+ var CREATE_USER = "create_user";
7066
+ var EDIT_USER_HEADER = "edit_user";
7067
+ var CHANGE_PASSWORD$1 = "change_password";
7046
7068
 
7047
- var utcToLocalTime = (function (time, FORMAT) {
7048
- if (time === DATE_MIN_VALUE) return "";
7069
+ var UserDetail = function UserDetail() {
7070
+ var _useParams = useParams(),
7071
+ id = _useParams.id;
7049
7072
 
7050
- try {
7051
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7052
- } catch (_unused) {
7053
- return "";
7054
- }
7055
- });
7073
+ var user = useSelector(function (state) {
7074
+ return state.common.user;
7075
+ });
7056
7076
 
7057
- var header$2 = "User";
7058
-
7059
- var UserList = function UserList() {
7060
- var _useUserList = useUserList(),
7061
- queryName = _useUserList.queryName,
7062
- userList = _useUserList.userList,
7063
- totalItems = _useUserList.totalItems,
7064
- filters = _useUserList.filters,
7065
- removeData = _useUserList.removeData,
7066
- changeFilters = _useUserList.changeFilters,
7067
- reDirectDetailPage = _useUserList.reDirectDetailPage,
7068
- swicthUser = _useUserList.swicthUser;
7069
-
7070
- var _useTranslation = useTranslation(),
7071
- t = _useTranslation.t;
7072
-
7073
- return React.createElement("div", {
7074
- className: "fadeIn animated"
7075
- }, React.createElement("h5", {
7076
- className: "mb-2"
7077
- }, t("" + header$2)), React.createElement(Row, {
7078
- className: "my-2"
7079
- }, React.createElement(Col, {
7080
- md: 8
7081
- }, React.createElement(SearchBoxContainer, {
7082
- text: t("create_user"),
7083
- onClick: function onClick() {
7084
- return reDirectDetailPage();
7085
- },
7086
- initValue: !!queryName ? queryName : "",
7087
- onSearch: function onSearch(searchString) {
7088
- return changeFilters({
7089
- searchString: searchString
7090
- });
7091
- },
7092
- placeholder: t("type_something_to_search_by_user_name")
7093
- })), React.createElement(Col, {
7094
- md: 4,
7095
- className: "d-flex justify-content-end align-items-center"
7096
- }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
7097
- className: "mb-2"
7098
- }, React.createElement(Col, {
7099
- md: 12
7100
- }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
7101
- bordered: true,
7102
- hover: true,
7103
- striped: true,
7104
- responsive: true,
7105
- size: "sm"
7106
- }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
7107
- className: "align-top"
7108
- }, t("name")), React.createElement("th", {
7109
- className: "align-top"
7110
- }, t("email")), React.createElement("th", {
7111
- className: "align-top"
7112
- }, t("age")), React.createElement("th", {
7113
- className: "align-top"
7114
- }, t("role")), React.createElement("th", {
7115
- className: "align-top"
7116
- }, t("active_status")), React.createElement("th", {
7117
- className: "align-top"
7118
- }, t("created_time")), React.createElement("th", {
7119
- className: "text-center"
7120
- }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
7121
- return React.createElement("tr", {
7122
- key: record.id
7123
- }, React.createElement("td", {
7124
- className: "align-middle"
7125
- }, React.createElement(LinkEditButton, {
7126
- label: "" + record.fullName,
7127
- onClick: function onClick() {
7128
- return reDirectDetailPage(record.id);
7129
- }
7130
- })), React.createElement("td", {
7131
- className: "align-middle"
7132
- }, record.email), React.createElement("td", {
7133
- className: "align-middle"
7134
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
7135
- className: "align-middle"
7136
- }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
7137
- className: "align-middle"
7138
- }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
7139
- className: "align-middle"
7140
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
7141
- className: "text-center align-middle"
7142
- }, React.createElement(FaUsersCog, {
7143
- style: {
7144
- fontSize: "18px",
7145
- marginRight: "10px",
7146
- cursor: "pointer"
7147
- },
7148
- onClick: function onClick() {
7149
- return swicthUser(record.id);
7150
- }
7151
- }), React.createElement(DeleteButtonIcon, {
7152
- onClick: function onClick() {
7153
- return removeData(record.id);
7154
- }
7155
- })));
7156
- })))) : React.createElement(EmptyDataAlert, {
7157
- label: t("user")
7158
- })), React.createElement(Col, {
7159
- md: 12
7160
- }, React.createElement(CustomPagination, {
7161
- filters: filters,
7162
- totalRecordCount: totalItems,
7163
- changePageSize: function changePageSize(pageSize) {
7164
- return changeFilters({
7165
- pageSize: pageSize
7166
- });
7167
- },
7168
- changePage: function changePage(currentPage) {
7169
- return changeFilters({
7170
- currentPage: currentPage
7171
- });
7172
- }
7173
- }))));
7174
- };
7175
-
7176
- var MAX_FILE_SIZE = 20097152;
7177
-
7178
- var UploadFileButton = function UploadFileButton(_ref) {
7179
- var fileName = _ref.fileName,
7180
- maxWidth = _ref.maxWidth,
7181
- maxHeight = _ref.maxHeight,
7182
- setFile = _ref.setFile,
7183
- canDelete = _ref.canDelete,
7184
- onDelete = _ref.onDelete,
7185
- isCheckFeedBack = _ref.isCheckFeedBack,
7186
- onAddImage = _ref.onAddImage;
7187
- var dispatch = useDispatch();
7188
-
7189
- var _useState = useState(""),
7190
- imagePreviewUrl = _useState[0],
7191
- setImagePreviewUrl = _useState[1];
7192
-
7193
- var imageStyle = {
7194
- maxWidth: maxWidth || "100%",
7195
- maxHeight: maxHeight || "100%"
7196
- };
7197
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7198
-
7199
- var handleImageChange = function handleImageChange(e) {
7200
- e.preventDefault();
7201
- var reader = new FileReader();
7202
- var newFile = e.target.files[0];
7203
-
7204
- if (newFile.size > MAX_FILE_SIZE) {
7205
- dispatch(setAlert({
7206
- type: "danger",
7207
- message: "File can't be larger than 2MB"
7208
- }));
7209
- return;
7210
- }
7211
-
7212
- reader.onloadend = function () {
7213
- setFile(newFile);
7214
- setImagePreviewUrl(reader.result);
7215
- };
7216
-
7217
- if (newFile) {
7218
- reader.readAsDataURL(newFile);
7219
- }
7220
-
7221
- !!onAddImage && onAddImage();
7222
- };
7223
-
7224
- var imagePreviewContainer = imagePreviewUrl || fileName ? React.createElement("img", {
7225
- style: imageStyle,
7226
- src: imageSrc,
7227
- alt: "image"
7228
- }) : null;
7229
- return React.createElement("div", {
7230
- className: "mb-2"
7231
- }, React.createElement(Form, {
7232
- className: "mb-2"
7233
- }, React.createElement(Input, {
7234
- className: "d-none",
7235
- type: "file",
7236
- id: "uploadFile",
7237
- onChange: handleImageChange,
7238
- accept: "image/*"
7239
- }), React.createElement("div", {
7240
- className: "d-flex align-items-center"
7241
- }, React.createElement(Label, {
7242
- htmlFor: "uploadFile",
7243
- role: "button",
7244
- tabIndex: 0,
7245
- className: styles["input-file-label"]
7246
- }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
7247
- className: "fa fa-paperclip mr-1",
7248
- "aria-hidden": "true"
7249
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(Button, {
7250
- size: "sm",
7251
- color: "danger",
7252
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7253
- onClick: function onClick() {
7254
- setImagePreviewUrl(null);
7255
- onDelete && onDelete();
7256
- }
7257
- }, React.createElement(FaTrashAlt, null)))), imagePreviewContainer);
7258
- };
7259
-
7260
- var initValue$3 = {
7261
- id: "",
7262
- firstName: "",
7263
- lastName: "",
7264
- email: "",
7265
- dateOfBirth: "",
7266
- roles: [],
7267
- isActive: true,
7268
- profileImageFileName: ""
7269
- };
7270
- var USER_LIST_URL = "/admin/user";
7271
- var TITLE$8 = "User detail";
7272
-
7273
- var useUserDetail = function useUserDetail(id) {
7274
- var dispatch = useDispatch();
7275
- var history = useHistory();
7276
-
7277
- var _useState = useState(initValue$3),
7278
- userDetail = _useState[0],
7279
- setUserDetail = _useState[1];
7280
-
7281
- var _useState2 = useState(null),
7282
- file = _useState2[0],
7283
- setFile = _useState2[1];
7284
-
7285
- var _useState3 = useState(false),
7286
- edited = _useState3[0],
7287
- setEdited = _useState3[1];
7288
-
7289
- var setEditedTrue = function setEditedTrue() {
7290
- try {
7291
- localStorage.setItem(window.location.href, "true");
7292
- setEdited(true);
7293
- return Promise.resolve();
7294
- } catch (e) {
7295
- return Promise.reject(e);
7296
- }
7297
- };
7298
-
7299
- useEffect(function () {
7300
- document.title = TITLE$8;
7301
- setEdited(false);
7302
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7303
- }, []);
7304
- useEffect(function () {
7305
- !!id && getData();
7306
- }, [id]);
7307
- var getData = useCallback(function () {
7308
- try {
7309
- var _temp3 = function _temp3() {
7310
- dispatch(setLoading(false));
7311
- };
7312
-
7313
- dispatch(setLoading(true));
7314
-
7315
- var _temp4 = _catch(function () {
7316
- return Promise.resolve(getById$3(id)).then(function (res) {
7317
- var _res$data;
7318
-
7319
- setUserDetail(_extends({}, res.data, {
7320
- dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7321
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7322
- }));
7323
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
7324
- });
7325
- }, function (err) {
7326
- var _err$response, _err$response$data;
7327
-
7328
- dispatch(setAlert({
7329
- type: "danger",
7330
- 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
7331
- }));
7332
- });
7333
-
7334
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7335
- } catch (e) {
7336
- return Promise.reject(e);
7337
- }
7338
- }, [id]);
7339
- var backToList = useCallback(function (user) {
7340
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7341
- }, []);
7342
- var confirmData = useCallback(function (data) {
7343
- try {
7344
- var _temp9 = function _temp9() {
7345
- dispatch(setLoading(false));
7346
- };
7347
-
7348
- dispatch(setLoading(true));
7349
-
7350
- var _temp10 = _catch(function () {
7351
- function _temp6() {
7352
- var next = !!id ? update$5 : create$5;
7353
- !id && delete data.id;
7354
- return Promise.resolve(next(data)).then(function (result) {
7355
- if (!!result) {
7356
- getById$3(result.data.id).then(function (e) {
7357
- backToList(e.data.fullName);
7358
- });
7359
- }
7360
-
7361
- if (!id) {
7362
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7363
- }
7364
-
7365
- dispatch(setAlert({
7366
- type: "success",
7367
- message: (!!id ? "Update" : "Create") + " user successfully"
7368
- }));
7369
- });
7370
- }
7371
-
7372
- var _temp5 = function () {
7373
- if (!!file) {
7374
- var formData = new FormData();
7375
- var name = file.name;
7376
- formData.append("file", file, name);
7377
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7378
- var _res$data2;
7379
-
7380
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
7381
- data.profileImageFileName = imageUrl;
7382
- });
7383
- }
7384
- }();
7385
-
7386
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7387
- }, function (err) {
7388
- var _err$response2, _err$response2$data;
7389
-
7390
- dispatch(setAlert({
7391
- type: "danger",
7392
- 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
7393
- }));
7394
- });
7395
-
7396
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7397
- } catch (e) {
7398
- return Promise.reject(e);
7399
- }
7400
- }, [id, file]);
7401
-
7402
- var confirmChangePassword = function confirmChangePassword(data) {
7403
- try {
7404
- var _temp13 = function _temp13() {
7405
- dispatch(setLoading(false));
7406
- };
7407
-
7408
- dispatch(setLoading(true));
7409
-
7410
- var _temp14 = _catch(function () {
7411
- return Promise.resolve(changePassword(data)).then(function () {
7412
- dispatch(setAlert({
7413
- type: "success",
7414
- message: "Change password successfully"
7415
- }));
7416
- });
7417
- }, function (e) {
7418
- var _e$response, _e$response$data;
7419
-
7420
- dispatch(setAlert({
7421
- type: "danger",
7422
- 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
7423
- }));
7424
- });
7425
-
7426
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7427
- } catch (e) {
7428
- return Promise.reject(e);
7429
- }
7430
- };
7431
-
7432
- var forgotPasswordRequest = useCallback(function (data) {
7433
- try {
7434
- var _temp17 = function _temp17() {
7435
- dispatch(setLoading(false));
7436
- };
7437
-
7438
- dispatch(setLoading(true));
7439
-
7440
- var _temp18 = _catch(function () {
7441
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7442
- dispatch(setAlert({
7443
- type: "success",
7444
- message: "Send forgot password link successfully"
7445
- }));
7446
- });
7447
- }, function (err) {
7448
- var _err$response3, _err$response3$data;
7449
-
7450
- dispatch(setAlert({
7451
- type: "danger",
7452
- 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"
7453
- }));
7454
- });
7455
-
7456
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7457
- } catch (e) {
7458
- return Promise.reject(e);
7459
- }
7460
- }, []);
7461
- return {
7462
- userDetail: userDetail,
7463
- backToList: backToList,
7464
- confirmData: confirmData,
7465
- file: file,
7466
- setFile: setFile,
7467
- edited: edited,
7468
- setEdited: setEdited,
7469
- setEditedTrue: setEditedTrue,
7470
- confirmChangePassword: confirmChangePassword,
7471
- forgotPasswordRequest: forgotPasswordRequest
7472
- };
7473
- };
7474
-
7475
- var userSchema = object({
7476
- firstName: string().required("First name is required"),
7477
- lastName: string().required("Last name is required"),
7478
- dateOfBirth: string().required("Date of birth is required"),
7479
- email: string().email("Email is invalid").required("Email is required"),
7480
- roles: array().of(string()).min(1, "Role is required")
7481
- });
7482
-
7483
- var changePasswordSchema = object({
7484
- oldPassword: string().required("Current password is required"),
7485
- newPassword: string().required("New password is required"),
7486
- confirmedNewPassword: string().required("Confirm password is required")
7487
- });
7488
-
7489
- var CREATE_USER = "create_user";
7490
- var EDIT_USER_HEADER = "edit_user";
7491
- var CHANGE_PASSWORD$1 = "change_password";
7492
-
7493
- var UserDetail = function UserDetail() {
7494
- var _useParams = useParams(),
7495
- id = _useParams.id;
7496
-
7497
- var user = useSelector(function (state) {
7498
- return state.common.user;
7499
- });
7500
-
7501
- var _useTranslation = useTranslation(),
7502
- t = _useTranslation.t;
7077
+ var _useTranslation = useTranslation(),
7078
+ t = _useTranslation.t;
7503
7079
 
7504
7080
  var _useUserDetail = useUserDetail(id),
7505
7081
  userDetail = _useUserDetail.userDetail,
@@ -7961,6 +7537,42 @@ var CreatableSelector = function CreatableSelector(props) {
7961
7537
  });
7962
7538
  };
7963
7539
 
7540
+ var SearchBox = function SearchBox(_ref) {
7541
+ var initValue = _ref.initValue,
7542
+ onSearch = _ref.onSearch,
7543
+ placeholder = _ref.placeholder,
7544
+ className = _ref.className,
7545
+ style = _ref.style;
7546
+
7547
+ var _useState = useState(initValue),
7548
+ searchString = _useState[0],
7549
+ setSearchString = _useState[1];
7550
+
7551
+ useEffect(function () {
7552
+ setSearchString(initValue);
7553
+ }, [initValue]);
7554
+ var onKeyUp = useCallback(function (e) {
7555
+ e.key === "Enter" && onSearch(searchString);
7556
+ }, [searchString, onSearch]);
7557
+ return React.createElement(Input, {
7558
+ placeholder: placeholder,
7559
+ value: searchString,
7560
+ onChange: function onChange(e) {
7561
+ return setSearchString(e.target.value);
7562
+ },
7563
+ onKeyUp: onKeyUp,
7564
+ className: className,
7565
+ style: style
7566
+ });
7567
+ };
7568
+
7569
+ SearchBox.defaultProps = {
7570
+ placeholder: "Type something to search",
7571
+ className: "",
7572
+ style: {}
7573
+ };
7574
+ var SearchBox$1 = memo(SearchBox);
7575
+
7964
7576
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7965
7577
  var id = props.id;
7966
7578
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8316,13 +7928,23 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
8316
7928
 
8317
7929
  var NotificationStatusSelector$1 = memo(NotificationStatusSelector);
8318
7930
 
7931
+ var utcToLocalTime = (function (time, FORMAT) {
7932
+ if (time === DATE_MIN_VALUE) return "";
7933
+
7934
+ try {
7935
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7936
+ } catch (_unused) {
7937
+ return "";
7938
+ }
7939
+ });
7940
+
8319
7941
  var defaultFilters = {
8320
7942
  currentPage: 1,
8321
7943
  pageSize: 30,
8322
7944
  searchString: "",
8323
7945
  isRead: false
8324
7946
  };
8325
- var TITLE$9 = "Notification list";
7947
+ var TITLE$8 = "Notification list";
8326
7948
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8327
7949
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8328
7950
 
@@ -8447,7 +8069,7 @@ var useNotificationList = function useNotificationList() {
8447
8069
  }
8448
8070
  }, [filters]);
8449
8071
  useEffect(function () {
8450
- document.title = TITLE$9;
8072
+ document.title = TITLE$8;
8451
8073
  }, []);
8452
8074
  useEffect(function () {
8453
8075
  getData();
@@ -8532,7 +8154,7 @@ var useNotificationList = function useNotificationList() {
8532
8154
  };
8533
8155
  };
8534
8156
 
8535
- var header$3 = "Notification list";
8157
+ var header$2 = "Notification list";
8536
8158
  var ICON_SIZE = 20;
8537
8159
 
8538
8160
  var NotificationList = function NotificationList() {
@@ -8553,7 +8175,7 @@ var NotificationList = function NotificationList() {
8553
8175
  }
8554
8176
  }, React.createElement("h5", {
8555
8177
  className: "mb-2"
8556
- }, header$3), React.createElement(Row, {
8178
+ }, header$2), React.createElement(Row, {
8557
8179
  className: "my-2"
8558
8180
  }, React.createElement(Col, {
8559
8181
  md: 8
@@ -8653,6 +8275,35 @@ var NotificationList = function NotificationList() {
8653
8275
  }))));
8654
8276
  };
8655
8277
 
8278
+ var searchInputStyle = {
8279
+ height: 38
8280
+ };
8281
+
8282
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
8283
+ var text = _ref.text,
8284
+ initValue = _ref.initValue,
8285
+ onClick = _ref.onClick,
8286
+ onSearch = _ref.onSearch,
8287
+ placeholder = _ref.placeholder;
8288
+ return React.createElement("div", {
8289
+ className: "d-flex align-items-center"
8290
+ }, React.createElement("div", null, React.createElement(AddButton, {
8291
+ text: text,
8292
+ onClick: onClick
8293
+ })), React.createElement("div", {
8294
+ className: "flex-grow-1 ml-2"
8295
+ }, React.createElement(SearchBox$1, {
8296
+ initValue: initValue,
8297
+ onSearch: onSearch,
8298
+ placeholder: placeholder,
8299
+ style: searchInputStyle
8300
+ })));
8301
+ };
8302
+
8303
+ SearchBoxContainer.defaultProps = {
8304
+ placeholder: "Type something to search"
8305
+ };
8306
+
8656
8307
  var CustomTabs = function CustomTabs(props) {
8657
8308
  var history = useHistory();
8658
8309
  var location = useLocation();
@@ -9057,7 +8708,7 @@ var get$8 = function get(filter) {
9057
8708
  });
9058
8709
  };
9059
8710
 
9060
- var TITLE$a = "Gallery";
8711
+ var TITLE$9 = "Gallery";
9061
8712
  var defaultFilter = {
9062
8713
  searchString: ""
9063
8714
  };
@@ -9294,7 +8945,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9294
8945
  }
9295
8946
  }, [dispatch, filters]);
9296
8947
  useEffect(function () {
9297
- document.title = TITLE$a;
8948
+ document.title = TITLE$9;
9298
8949
  dispatch(setTargetMedia({
9299
8950
  targetMedia: undefined
9300
8951
  }));
@@ -9486,7 +9137,7 @@ var MediaDetail = function MediaDetail(_ref) {
9486
9137
 
9487
9138
  var MediaDetail$1 = React.memo(MediaDetail);
9488
9139
 
9489
- var header$4 = "Gallery";
9140
+ var header$3 = "Gallery";
9490
9141
 
9491
9142
  var GalleryList = function GalleryList(_ref) {
9492
9143
  var isLibrary = _ref.isLibrary;
@@ -9497,7 +9148,7 @@ var GalleryList = function GalleryList(_ref) {
9497
9148
  className: "fadeIn animated"
9498
9149
  }, !isLibrary && React.createElement("h5", {
9499
9150
  className: "mb-2"
9500
- }, header$4), React.createElement(Row, {
9151
+ }, header$3), React.createElement(Row, {
9501
9152
  className: "mb-2"
9502
9153
  }, React.createElement(Col, {
9503
9154
  md: 8
@@ -10123,6 +9774,9 @@ var commonReducer$8 = createReducer(initialState$e, function (builder) {
10123
9774
  });
10124
9775
  });
10125
9776
 
9777
+ var setUserList = createAction("users/setUserList");
9778
+ var setStudentList = createAction("users/setStudentList");
9779
+
10126
9780
  var initialState$f = {
10127
9781
  userList: [],
10128
9782
  totalItems: 0,
@@ -10642,193 +10296,545 @@ var dataPlayer = createReducer(initialState$v, function (builder) {
10642
10296
  return response.questionId === questionId;
10643
10297
  });
10644
10298
 
10645
- if (!existedResponse) {
10646
- questionResponseCloner.push({
10647
- questionId: questionId,
10648
- text: text
10649
- });
10650
- } else {
10651
- existedResponse.text = text;
10299
+ if (!existedResponse) {
10300
+ questionResponseCloner.push({
10301
+ questionId: questionId,
10302
+ text: text
10303
+ });
10304
+ } else {
10305
+ existedResponse.text = text;
10306
+ }
10307
+
10308
+ return _extends({}, state, {
10309
+ questionResponse: questionResponseCloner
10310
+ });
10311
+ }).addCase(reset, function (_state, _action) {
10312
+ return initialState$v;
10313
+ });
10314
+ });
10315
+
10316
+ var setCertificateList = createAction("certificates/setCertificateList");
10317
+
10318
+ var initialState$w = {
10319
+ certificateList: [],
10320
+ totalItems: 0
10321
+ };
10322
+ var commonReducer$f = createReducer(initialState$w, function (builder) {
10323
+ builder.addCase(setCertificateList, function (state, action) {
10324
+ state.certificateList = action.payload.certificateList;
10325
+ state.totalItems = action.payload.totalItems;
10326
+ }).addCase(reset, function (_state, _action) {
10327
+ return initialState$w;
10328
+ });
10329
+ });
10330
+
10331
+ var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10332
+
10333
+ var initialState$x = {
10334
+ improveMyClassList: []
10335
+ };
10336
+ var commonReducer$g = createReducer(initialState$x, function (builder) {
10337
+ builder.addCase(setImproveMyClass, function (state, action) {
10338
+ state.improveMyClassList = action.payload;
10339
+ }).addCase(reset, function (_state, _action) {
10340
+ return initialState$x;
10341
+ });
10342
+ });
10343
+
10344
+ var setFilterWidget = createAction("setFilterWidget");
10345
+
10346
+ var initialState$y = {
10347
+ filterWidget: "Year"
10348
+ };
10349
+ var widgetReducer = createReducer(initialState$y, function (builder) {
10350
+ builder.addCase(setFilterWidget, function (state, action) {
10351
+ state.filterWidget = action.payload.filterWidget;
10352
+ }).addCase(reset, function (_state, _action) {
10353
+ return initialState$y;
10354
+ });
10355
+ });
10356
+
10357
+ var setBandScoreList = createAction("bandScores/setBandScoreList");
10358
+
10359
+ var initialState$z = {
10360
+ bandScoreList: [],
10361
+ totalItems: 0
10362
+ };
10363
+ var commonReducer$h = createReducer(initialState$z, function (builder) {
10364
+ builder.addCase(setBandScoreList, function (state, action) {
10365
+ state.bandScoreList = action.payload.bandScoreList;
10366
+ state.totalItems = action.payload.totalItems;
10367
+ }).addCase(reset, function (_state, _action) {
10368
+ return initialState$z;
10369
+ });
10370
+ });
10371
+
10372
+ var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10373
+
10374
+ var initialState$A = {
10375
+ schoolBlankDayList: [],
10376
+ totalItems: 0
10377
+ };
10378
+ var commonReducer$i = createReducer(initialState$A, function (builder) {
10379
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10380
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10381
+ state.totalItems = action.payload.totalItems;
10382
+ }).addCase(reset, function (_state, _action) {
10383
+ return initialState$A;
10384
+ });
10385
+ });
10386
+
10387
+ var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10388
+
10389
+ var initialState$B = {
10390
+ studentIdSelectedByTeacher: 0
10391
+ };
10392
+ var navMobileReducer = createReducer(initialState$B, function (builder) {
10393
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10394
+ state.studentIdSelectedByTeacher = action.payload;
10395
+ }).addCase(reset, function (_state, _action) {
10396
+ return initialState$B;
10397
+ });
10398
+ });
10399
+
10400
+ var rootReducer = combineReducers({
10401
+ common: commonReducer,
10402
+ classes: classReducer,
10403
+ conferenceRubrics: conferenceRubricReducer,
10404
+ faqs: commonReducer$1,
10405
+ skills: commonReducer$2,
10406
+ emailTemplate: emailTemplateReducer,
10407
+ suggestionBank: suggestionBankReducer,
10408
+ learningStrategy: learningStrategyReducer,
10409
+ subjects: commonReducer$3,
10410
+ learningSupportCategories: commonReducer$4,
10411
+ questionBank: questionBankReducer,
10412
+ badges: commonReducer$5,
10413
+ semester: commonReducer$6,
10414
+ goalExamples: commonReducer$8,
10415
+ users: commonReducer$9,
10416
+ reflections: reflectionReducer,
10417
+ reflectionResults: reflectionReducer$1,
10418
+ feedbacks: commonReducer$a,
10419
+ assessments: commonReducer$b,
10420
+ questionByCategory: questionCategoryReducer,
10421
+ mailCategory: questionBankReducer$1,
10422
+ questionCate: questionCateReducer,
10423
+ notification: questionBankReducer$2,
10424
+ myStudent: commonReducer$c,
10425
+ assignments: commonReducer$7,
10426
+ assistants: assistantReducer,
10427
+ sesstionTemplates: sessionTemplateReducer,
10428
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10429
+ tutorialScreens: tutorialScreenReducer,
10430
+ customAlerts: commonReducer$d,
10431
+ gallery: commonReducer$e,
10432
+ dashboard: dashboardReducer,
10433
+ sessionPlayer: sessionPlayerReducer,
10434
+ dataPlayer: dataPlayer,
10435
+ certificate: commonReducer$f,
10436
+ improveMyClass: commonReducer$g,
10437
+ widget: widgetReducer,
10438
+ bandScores: commonReducer$h,
10439
+ schoolBlankDays: commonReducer$i,
10440
+ navMobileReducer: navMobileReducer
10441
+ });
10442
+
10443
+ var store = configureStore({
10444
+ reducer: rootReducer,
10445
+ middleware: function middleware(getDefaultMiddleware) {
10446
+ return getDefaultMiddleware({
10447
+ serializableCheck: false
10448
+ }).concat(logger);
10449
+ }
10450
+ });
10451
+
10452
+ var isInViewport = function isInViewport(el) {
10453
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10454
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10455
+ };
10456
+
10457
+ var debounce = function debounce(callback, wait) {
10458
+ var timeout = null;
10459
+ return function () {
10460
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10461
+ args[_key] = arguments[_key];
10652
10462
  }
10653
10463
 
10654
- return _extends({}, state, {
10655
- questionResponse: questionResponseCloner
10656
- });
10657
- }).addCase(reset, function (_state, _action) {
10658
- return initialState$v;
10659
- });
10660
- });
10464
+ var next = function next() {
10465
+ return callback.apply(void 0, args);
10466
+ };
10661
10467
 
10662
- var setCertificateList = createAction("certificates/setCertificateList");
10468
+ clearTimeout(timeout);
10469
+ timeout = setTimeout(next, wait);
10470
+ };
10471
+ };
10663
10472
 
10664
- var initialState$w = {
10665
- certificateList: [],
10666
- totalItems: 0
10473
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
10474
+ var p = document.createElement("p");
10475
+ p.innerHTML = htmlString;
10476
+ var text = p.innerText;
10477
+ p.remove();
10478
+ return text;
10667
10479
  };
10668
- var commonReducer$f = createReducer(initialState$w, function (builder) {
10669
- builder.addCase(setCertificateList, function (state, action) {
10670
- state.certificateList = action.payload.certificateList;
10671
- state.totalItems = action.payload.totalItems;
10672
- }).addCase(reset, function (_state, _action) {
10673
- return initialState$w;
10674
- });
10480
+
10481
+ var generateRandomString = (function () {
10482
+ return (Math.random() + 1).toString(36).substring(7);
10675
10483
  });
10676
10484
 
10677
- var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10485
+ var amplitudeClient = amplitude.getInstance();
10678
10486
 
10679
- var initialState$x = {
10680
- improveMyClassList: []
10681
- };
10682
- var commonReducer$g = createReducer(initialState$x, function (builder) {
10683
- builder.addCase(setImproveMyClass, function (state, action) {
10684
- state.improveMyClassList = action.payload;
10685
- }).addCase(reset, function (_state, _action) {
10686
- return initialState$x;
10487
+ var USER_URL$2 = "/admin/user";
10488
+ var CREATE_USER_URL = "/admin/create-user";
10489
+ var TITLE$a = "User list";
10490
+ var HOMEPAGE_TEACHER$1 = "/home";
10491
+ var HOMEPAGE_STUDENT$1 = "/home";
10492
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10493
+ var HOMEPAGE_PARENT$1 = "/parent";
10494
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10495
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10496
+
10497
+ var useUserList = function useUserList() {
10498
+ var history = useHistory();
10499
+ var query = new URLSearchParams(location.search);
10500
+ var queryName = query.get("query");
10501
+ var userList = useSelector(function (state) {
10502
+ return state.users.userList;
10503
+ });
10504
+ var totalItems = useSelector(function (state) {
10505
+ return state.users.totalItems;
10687
10506
  });
10688
- });
10689
10507
 
10690
- var setFilterWidget = createAction("setFilterWidget");
10508
+ var _useFilters = useFilters(),
10509
+ filters = _useFilters.filters,
10510
+ changeFilters = _useFilters.changeFilters;
10691
10511
 
10692
- var initialState$y = {
10693
- filterWidget: "Year"
10694
- };
10695
- var widgetReducer = createReducer(initialState$y, function (builder) {
10696
- builder.addCase(setFilterWidget, function (state, action) {
10697
- state.filterWidget = action.payload.filterWidget;
10698
- }).addCase(reset, function (_state, _action) {
10699
- return initialState$y;
10700
- });
10701
- });
10512
+ var _useState = useState(!!queryName ? queryName : ""),
10513
+ fullName = _useState[0],
10514
+ setFullName = _useState[1];
10702
10515
 
10703
- var setBandScoreList = createAction("bandScores/setBandScoreList");
10516
+ var isDistrict = window.location.host.includes("-district");
10517
+ var dispatch = useDispatch();
10518
+ var getData = useCallback(function (fullName) {
10519
+ try {
10520
+ var _temp3 = function _temp3() {
10521
+ dispatch(setLoading(false));
10522
+ };
10704
10523
 
10705
- var initialState$z = {
10706
- bandScoreList: [],
10707
- totalItems: 0
10708
- };
10709
- var commonReducer$h = createReducer(initialState$z, function (builder) {
10710
- builder.addCase(setBandScoreList, function (state, action) {
10711
- state.bandScoreList = action.payload.bandScoreList;
10712
- state.totalItems = action.payload.totalItems;
10713
- }).addCase(reset, function (_state, _action) {
10714
- return initialState$z;
10715
- });
10716
- });
10524
+ dispatch(setLoading(true));
10717
10525
 
10718
- var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10526
+ var _temp4 = _catch(function () {
10527
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10528
+ searchString: fullName
10529
+ })) : get$5(filters)).then(function (res) {
10530
+ var _res$data = res.data,
10531
+ items = _res$data.items,
10532
+ totalItems = _res$data.totalItems;
10719
10533
 
10720
- var initialState$A = {
10721
- schoolBlankDayList: [],
10722
- totalItems: 0
10723
- };
10724
- var commonReducer$i = createReducer(initialState$A, function (builder) {
10725
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10726
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10727
- state.totalItems = action.payload.totalItems;
10728
- }).addCase(reset, function (_state, _action) {
10729
- return initialState$A;
10730
- });
10731
- });
10534
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10535
+ var user = _step.value;
10536
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10537
+ }
10538
+
10539
+ dispatch(setUserList({
10540
+ userList: items,
10541
+ totalItems: totalItems
10542
+ }));
10543
+ });
10544
+ }, function (err) {
10545
+ var _err$response, _err$response$data;
10546
+
10547
+ dispatch(setAlert({
10548
+ type: "danger",
10549
+ 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
10550
+ }));
10551
+ });
10552
+
10553
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10554
+ } catch (e) {
10555
+ return Promise.reject(e);
10556
+ }
10557
+ }, [dispatch, filters]);
10558
+ useEffect(function () {
10559
+ document.title = TITLE$a;
10560
+ }, []);
10561
+ useEffect(function () {
10562
+ if (!!fullName) {
10563
+ getData(fullName);
10564
+ setFullName(null);
10565
+ } else {
10566
+ getData();
10567
+ }
10568
+ }, [filters]);
10569
+ var removeData = useCallback(function (id) {
10570
+ dispatch(setLoading(true));
10571
+
10572
+ try {
10573
+ dispatch(setModal({
10574
+ isOpen: true,
10575
+ type: "warning",
10576
+ message: "Do you want to remove this user?",
10577
+ onConfirm: function () {
10578
+ try {
10579
+ return Promise.resolve(remove$3(id)).then(function () {
10580
+ dispatch(setAlert({
10581
+ type: "success",
10582
+ message: "Remove user successfully"
10583
+ }));
10584
+ changeFilters({
10585
+ currentPage: 1
10586
+ });
10587
+ });
10588
+ } catch (e) {
10589
+ return Promise.reject(e);
10590
+ }
10591
+ }
10592
+ }));
10593
+ } catch (err) {
10594
+ var _err$response2, _err$response2$data;
10595
+
10596
+ dispatch(setAlert({
10597
+ type: "danger",
10598
+ 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
10599
+ }));
10600
+ }
10601
+
10602
+ dispatch(setLoading(false));
10603
+ }, [filters]);
10604
+
10605
+ var redirectLoginUser = function redirectLoginUser(res) {
10606
+ var _res$data2 = res.data,
10607
+ token = _res$data2.token,
10608
+ id = _res$data2.id,
10609
+ firstName = _res$data2.firstName,
10610
+ lastName = _res$data2.lastName,
10611
+ roles = _res$data2.roles,
10612
+ email = _res$data2.email,
10613
+ profileImageFileName = _res$data2.profileImageFileName;
10614
+ localStorage.setItem(ACCESS_TOKEN, token);
10615
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10616
+ dispatch(setUser({
10617
+ id: id,
10618
+ firstName: firstName,
10619
+ lastName: lastName,
10620
+ roles: roles,
10621
+ email: email,
10622
+ profileImageFileName: profileImageFileName
10623
+ }));
10624
+
10625
+ if (isDistrict) {
10626
+ history.push(HOMEPAGE_DISTRICT$1);
10627
+ } else if (roles.includes("Admin")) {
10628
+ history.push(HOMEPAGE_ADMIN$1);
10629
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10630
+ history.push(HOMEPAGE_TEACHER$1);
10631
+ } else if (roles.includes("Student")) {
10632
+ history.push(HOMEPAGE_STUDENT$1);
10633
+ } else if (roles.includes("Parent")) {
10634
+ history.push(HOMEPAGE_PARENT$1);
10635
+ } else if (roles.includes("EduTeacher")) {
10636
+ history.push(HOMEPAGE_EDU_TEACHER$1);
10637
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10638
+ history.push(HOMEPAGE_TEACHER$1);
10639
+ }
10640
+ };
10641
+
10642
+ var swicthUser = useCallback(function (id) {
10643
+ try {
10644
+ var _temp6 = _catch(function () {
10645
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
10646
+ var data = res.data;
10647
+ dispatch(setModal({
10648
+ isOpen: true,
10649
+ type: "warning",
10650
+ message: "Do you want to impersonate this user?",
10651
+ onConfirm: function () {
10652
+ try {
10653
+ var _temp9 = function _temp9() {
10654
+ dispatch(setLoading(false));
10655
+ };
10732
10656
 
10733
- var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10657
+ dispatch(setLoading(true));
10734
10658
 
10735
- var initialState$B = {
10736
- studentIdSelectedByTeacher: 0
10737
- };
10738
- var navMobileReducer = createReducer(initialState$B, function (builder) {
10739
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10740
- state.studentIdSelectedByTeacher = action.payload;
10741
- }).addCase(reset, function (_state, _action) {
10742
- return initialState$B;
10743
- });
10744
- });
10659
+ var _temp10 = _catch(function () {
10660
+ var req = {
10661
+ email: data.email,
10662
+ password: "default",
10663
+ accessToken: data.token
10664
+ };
10665
+ return Promise.resolve(logIn(req)).then(function (res) {
10666
+ localStorage.clear();
10667
+ redirectLoginUser(res);
10668
+ });
10669
+ }, function (err) {
10670
+ var _err$response3, _err$response3$data;
10745
10671
 
10746
- var rootReducer = combineReducers({
10747
- common: commonReducer,
10748
- classes: classReducer,
10749
- conferenceRubrics: conferenceRubricReducer,
10750
- faqs: commonReducer$1,
10751
- skills: commonReducer$2,
10752
- emailTemplate: emailTemplateReducer,
10753
- suggestionBank: suggestionBankReducer,
10754
- learningStrategy: learningStrategyReducer,
10755
- subjects: commonReducer$3,
10756
- learningSupportCategories: commonReducer$4,
10757
- questionBank: questionBankReducer,
10758
- badges: commonReducer$5,
10759
- semester: commonReducer$6,
10760
- goalExamples: commonReducer$8,
10761
- users: commonReducer$9,
10762
- reflections: reflectionReducer,
10763
- reflectionResults: reflectionReducer$1,
10764
- feedbacks: commonReducer$a,
10765
- assessments: commonReducer$b,
10766
- questionByCategory: questionCategoryReducer,
10767
- mailCategory: questionBankReducer$1,
10768
- questionCate: questionCateReducer,
10769
- notification: questionBankReducer$2,
10770
- myStudent: commonReducer$c,
10771
- assignments: commonReducer$7,
10772
- assistants: assistantReducer,
10773
- sesstionTemplates: sessionTemplateReducer,
10774
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10775
- tutorialScreens: tutorialScreenReducer,
10776
- customAlerts: commonReducer$d,
10777
- gallery: commonReducer$e,
10778
- dashboard: dashboardReducer,
10779
- sessionPlayer: sessionPlayerReducer,
10780
- dataPlayer: dataPlayer,
10781
- certificate: commonReducer$f,
10782
- improveMyClass: commonReducer$g,
10783
- widget: widgetReducer,
10784
- bandScores: commonReducer$h,
10785
- schoolBlankDays: commonReducer$i,
10786
- navMobileReducer: navMobileReducer
10787
- });
10672
+ setAlert({
10673
+ type: "danger",
10674
+ 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
10675
+ });
10676
+ });
10788
10677
 
10789
- var store = configureStore({
10790
- reducer: rootReducer,
10791
- middleware: function middleware(getDefaultMiddleware) {
10792
- return getDefaultMiddleware({
10793
- serializableCheck: false
10794
- }).concat(logger);
10795
- }
10796
- });
10678
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10679
+ } catch (e) {
10680
+ return Promise.reject(e);
10681
+ }
10682
+ }
10683
+ }));
10684
+ });
10685
+ }, function (err) {
10686
+ var _err$response4, _err$response4$data;
10797
10687
 
10798
- var isInViewport = function isInViewport(el) {
10799
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10800
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10801
- };
10688
+ dispatch(setAlert({
10689
+ type: "danger",
10690
+ 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
10691
+ }));
10692
+ });
10802
10693
 
10803
- var debounce = function debounce(callback, wait) {
10804
- var timeout = null;
10805
- return function () {
10806
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10807
- args[_key] = arguments[_key];
10694
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10695
+ } catch (e) {
10696
+ return Promise.reject(e);
10808
10697
  }
10698
+ }, [filters]);
10809
10699
 
10810
- var next = function next() {
10811
- return callback.apply(void 0, args);
10812
- };
10700
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10701
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10702
+ history.push(url);
10703
+ };
10813
10704
 
10814
- clearTimeout(timeout);
10815
- timeout = setTimeout(next, wait);
10705
+ return {
10706
+ userList: userList,
10707
+ totalItems: totalItems,
10708
+ filters: filters,
10709
+ queryName: queryName,
10710
+ getData: getData,
10711
+ removeData: removeData,
10712
+ changeFilters: changeFilters,
10713
+ reDirectDetailPage: reDirectDetailPage,
10714
+ swicthUser: swicthUser
10816
10715
  };
10817
10716
  };
10818
10717
 
10819
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10820
- var p = document.createElement("p");
10821
- p.innerHTML = htmlString;
10822
- var text = p.innerText;
10823
- p.remove();
10824
- return text;
10825
- };
10718
+ var header$4 = "User";
10826
10719
 
10827
- var generateRandomString = (function () {
10828
- return (Math.random() + 1).toString(36).substring(7);
10829
- });
10720
+ var UserList = function UserList() {
10721
+ var _useUserList = useUserList(),
10722
+ queryName = _useUserList.queryName,
10723
+ userList = _useUserList.userList,
10724
+ totalItems = _useUserList.totalItems,
10725
+ filters = _useUserList.filters,
10726
+ removeData = _useUserList.removeData,
10727
+ changeFilters = _useUserList.changeFilters,
10728
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
10729
+ swicthUser = _useUserList.swicthUser;
10830
10730
 
10831
- var amplitudeClient = amplitude.getInstance();
10731
+ var _useTranslation = useTranslation(),
10732
+ t = _useTranslation.t;
10733
+
10734
+ return React.createElement("div", {
10735
+ className: "fadeIn animated"
10736
+ }, React.createElement("h5", {
10737
+ className: "mb-2"
10738
+ }, t("" + header$4)), React.createElement(Row, {
10739
+ className: "my-2"
10740
+ }, React.createElement(Col, {
10741
+ md: 8
10742
+ }, React.createElement(SearchBoxContainer, {
10743
+ text: t("create_user"),
10744
+ onClick: function onClick() {
10745
+ return reDirectDetailPage();
10746
+ },
10747
+ initValue: !!queryName ? queryName : "",
10748
+ onSearch: function onSearch(searchString) {
10749
+ return changeFilters({
10750
+ searchString: searchString
10751
+ });
10752
+ },
10753
+ placeholder: t("type_something_to_search_by_user_name")
10754
+ })), React.createElement(Col, {
10755
+ md: 4,
10756
+ className: "d-flex justify-content-end align-items-center"
10757
+ }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
10758
+ className: "mb-2"
10759
+ }, React.createElement(Col, {
10760
+ md: 12
10761
+ }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
10762
+ bordered: true,
10763
+ hover: true,
10764
+ striped: true,
10765
+ responsive: true,
10766
+ size: "sm"
10767
+ }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
10768
+ className: "align-top"
10769
+ }, t("name")), React.createElement("th", {
10770
+ className: "align-top"
10771
+ }, t("email")), React.createElement("th", {
10772
+ className: "align-top"
10773
+ }, t("age")), React.createElement("th", {
10774
+ className: "align-top"
10775
+ }, t("role")), React.createElement("th", {
10776
+ className: "align-top"
10777
+ }, t("active_status")), React.createElement("th", {
10778
+ className: "align-top"
10779
+ }, t("created_time")), React.createElement("th", {
10780
+ className: "text-center"
10781
+ }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
10782
+ return React.createElement("tr", {
10783
+ key: record.id
10784
+ }, React.createElement("td", {
10785
+ className: "align-middle"
10786
+ }, React.createElement(LinkEditButton, {
10787
+ label: "" + record.fullName,
10788
+ onClick: function onClick() {
10789
+ return reDirectDetailPage(record.id);
10790
+ }
10791
+ })), React.createElement("td", {
10792
+ className: "align-middle"
10793
+ }, record.email), React.createElement("td", {
10794
+ className: "align-middle"
10795
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
10796
+ className: "align-middle"
10797
+ }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
10798
+ className: "align-middle"
10799
+ }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
10800
+ className: "align-middle"
10801
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
10802
+ className: "text-center align-middle"
10803
+ }, React.createElement(FaUsersCog, {
10804
+ style: {
10805
+ fontSize: "18px",
10806
+ marginRight: "10px",
10807
+ cursor: "pointer"
10808
+ },
10809
+ onClick: function onClick() {
10810
+ return swicthUser(record.id);
10811
+ }
10812
+ }), React.createElement(DeleteButtonIcon, {
10813
+ onClick: function onClick() {
10814
+ return removeData(record.id);
10815
+ }
10816
+ })));
10817
+ })))) : React.createElement(EmptyDataAlert, {
10818
+ label: t("user")
10819
+ })), React.createElement(Col, {
10820
+ md: 12
10821
+ }, React.createElement(CustomPagination, {
10822
+ filters: filters,
10823
+ totalRecordCount: totalItems,
10824
+ changePageSize: function changePageSize(pageSize) {
10825
+ return changeFilters({
10826
+ pageSize: pageSize
10827
+ });
10828
+ },
10829
+ changePage: function changePage(currentPage) {
10830
+ return changeFilters({
10831
+ currentPage: currentPage
10832
+ });
10833
+ }
10834
+ }))));
10835
+ };
10836
+
10837
+ var amplitudeClient$1 = amplitude.getInstance();
10832
10838
 
10833
- export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, Images, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserDetail, UserList, addTab, amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getFileUrl, getInfo, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };
10839
+ export { ACCESS_TOKEN, ANSWER_EDITOR_HEIGHT, AcademicClassSelector, AddButton, BASE_URL, CHAT_CHANNEL, CategorySelector, CommonAlert, CommonHeader, CommonModal$1 as CommonModal, CreatableSelector, CustomPagination, CustomSelector, CustomTabs as CustomTab, DATE_FORMAT, DATE_RESULT, DEFAULT_FILTER, Dashboard, DeleteButtonIcon, DetailActionButtons, EMOTIONS, EditButtonIcon, EmailTemplateDetail, EmailTemplateList, EmptyDataAlert, ErrorHandler, FULL_DATE_RESULT, FaqList, InputFile as FileInput, GOOGLE_RECAPTCHA_KEY, GalleryList, INIT_AMPLITUDE_KEY_PROD, INIT_AMPLITUDE_KEY_STAGE, Images, LICENSE_AGGRID, LinkEditButton, Loading, Login, MediaList, NOTIFICATION_ALERT_KEY, NOTIFICATION_CHANNEL, NotFound, NotificationList, NotificationModal, QUESTION_TYPES, QUESTION_TYPES_OPTIONS, QuestionCategorySelector, QuestionTypeSelector, QuitPrompt, ReactNotification, RequiredLabel$1 as RequiredLabel, SchoolList, ScrollToTop, SearchBox$1 as SearchBox, SearchBoxContainer, SkillList, StarRatingSelector, SuggestionCategorySelector, TAB_COLORS, TINY_MCE_API_KEY, TheContent$1 as TheContent, TheLayout, ToggleButton, UploadFileButton, UserDetail, UserList, addTab, amplitudeClient$1 as amplitudeClient, answerQuestion, answerQuestionDataPlayer, api, apiUpload, canAccess as canAccessRoute, changeNote, changeTags, clearTab, closeTab, debounce, editTab, editorConfig, firstCheckToken, generateRandomString, getFileUrl, getInfo, getTextFromHTML, i18n, initAmplitude, isInViewport, isLocalhost, reset, setAlert, setAssessmentList, setAssignmentList, setAssistantList, setBadgeList, setBandScoreList, setCertificateList, setClassList, setConferenceRubricList, setConversationOneToOne, setCurrentStudentId, setCurrentStudentName, setCurrentStudentUserId, setCustomAlertList, setDataPlayer, setEditItemQuesion, setEnableIEP, setEnableSurvey, setFeedbackList, setFilterWidget, setGoalExampleList, setImproveMyClass, setLanguage, setLearningSupportCategoryList, setLoading, setMailCategory, setModal, setMoveItemQuestion, setMyStudent, setQuestionByCategory, setQuestionCateList, setQuestionList, setReflectionList, setReflectionResultList, setResetQuestionList, setSchoolBlankDayList, setSelectQuestion, setSemesterList, setSessionPlayer, setSessionTemplateGeneralClassList, setSessionTemplateList, setStartTime, setStrategyList, setStudentIdSelectedByTeacher, setStudentList, setSubjectList, setSuggestionList, setTurnOffPassWhenChangeMode, setTutorialScreenList, setUser, setUserList, showFontSize, showMenuBar, store, systemCertificateUpload, systemStudentBadge, uploadFile, useFilters, useGalleryList, utcToLocalTime };
10834
10840
  //# sourceMappingURL=index.modern.js.map