mario-core 2.9.101-beta → 2.9.103-beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,10 +20,11 @@ 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, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload, FaUsersCog } from 'react-icons/fa';
23
+ import { FaPlus, FaTrashAlt, FaUsersCog, FaRegEdit, FaArrowLeft, FaDownload, FaTrash, FaEdit, FaFolderPlus, FaFileUpload } 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';
27
28
  import DatePicker from 'react-datepicker';
28
29
  import toDate from 'date-fns/toDate';
29
30
  import { MdAttachFile } from 'react-icons/md';
@@ -31,7 +32,6 @@ import Creatable from 'react-select/creatable';
31
32
  import ReactNotification$1 from 'react-notifications-component';
32
33
  import 'react-notifications-component/dist/theme.css';
33
34
  import { AiOutlineEye } from 'react-icons/ai';
34
- import moment from 'moment';
35
35
 
36
36
  var dashboard = "Dashboard";
37
37
  var user = "User";
@@ -6714,89 +6714,8 @@ var SkillList = function SkillList() {
6714
6714
  }))));
6715
6715
  };
6716
6716
 
6717
- var MAX_FILE_SIZE = 20097152;
6718
-
6719
- var UploadFileButton = function UploadFileButton(_ref) {
6720
- var fileName = _ref.fileName,
6721
- maxWidth = _ref.maxWidth,
6722
- maxHeight = _ref.maxHeight,
6723
- setFile = _ref.setFile,
6724
- canDelete = _ref.canDelete,
6725
- onDelete = _ref.onDelete,
6726
- isCheckFeedBack = _ref.isCheckFeedBack,
6727
- onAddImage = _ref.onAddImage;
6728
- var dispatch = useDispatch();
6729
-
6730
- var _useState = useState(""),
6731
- imagePreviewUrl = _useState[0],
6732
- setImagePreviewUrl = _useState[1];
6733
-
6734
- var imageStyle = {
6735
- maxWidth: maxWidth || "100%",
6736
- maxHeight: maxHeight || "100%"
6737
- };
6738
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6739
-
6740
- var handleImageChange = function handleImageChange(e) {
6741
- e.preventDefault();
6742
- var reader = new FileReader();
6743
- var newFile = e.target.files[0];
6744
-
6745
- if (newFile.size > MAX_FILE_SIZE) {
6746
- dispatch(setAlert({
6747
- type: "danger",
6748
- message: "File can't be larger than 2MB"
6749
- }));
6750
- return;
6751
- }
6752
-
6753
- reader.onloadend = function () {
6754
- setFile(newFile);
6755
- setImagePreviewUrl(reader.result);
6756
- };
6757
-
6758
- if (newFile) {
6759
- reader.readAsDataURL(newFile);
6760
- }
6761
-
6762
- !!onAddImage && onAddImage();
6763
- };
6764
-
6765
- var imagePreviewContainer = imagePreviewUrl || fileName ? React.createElement("img", {
6766
- style: imageStyle,
6767
- src: imageSrc,
6768
- alt: "image"
6769
- }) : null;
6770
- return React.createElement("div", {
6771
- className: "mb-2"
6772
- }, React.createElement(Form, {
6773
- className: "mb-2"
6774
- }, React.createElement(Input, {
6775
- className: "d-none",
6776
- type: "file",
6777
- id: "uploadFile",
6778
- onChange: handleImageChange,
6779
- accept: "image/*"
6780
- }), React.createElement("div", {
6781
- className: "d-flex align-items-center"
6782
- }, React.createElement(Label, {
6783
- htmlFor: "uploadFile",
6784
- role: "button",
6785
- tabIndex: 0,
6786
- className: styles["input-file-label"]
6787
- }, isCheckFeedBack == true ? React.createElement(MdAttachFile, null) : React.createElement(React.Fragment, null, React.createElement("i", {
6788
- className: "fa fa-paperclip mr-1",
6789
- "aria-hidden": "true"
6790
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React.createElement(Button, {
6791
- size: "sm",
6792
- color: "danger",
6793
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6794
- onClick: function onClick() {
6795
- setImagePreviewUrl(null);
6796
- onDelete && onDelete();
6797
- }
6798
- }, React.createElement(FaTrashAlt, null)))), imagePreviewContainer);
6799
- };
6717
+ var setUserList = createAction("users/setUserList");
6718
+ var setStudentList = createAction("users/setStudentList");
6800
6719
 
6801
6720
  var USER_URL$1 = BASE_URL + "/api/user";
6802
6721
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6829,54 +6748,38 @@ var switchAccountUser = function switchAccountUser(id) {
6829
6748
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6830
6749
  };
6831
6750
 
6832
- var initValue$3 = {
6833
- id: "",
6834
- firstName: "",
6835
- lastName: "",
6836
- email: "",
6837
- dateOfBirth: "",
6838
- roles: [],
6839
- isActive: true,
6840
- profileImageFileName: ""
6841
- };
6842
- var USER_LIST_URL = "/admin/user";
6843
- var TITLE$7 = "User detail";
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";
6844
6760
 
6845
- var useUserDetail = function useUserDetail(id) {
6846
- var dispatch = useDispatch();
6761
+ var useUserList = function useUserList() {
6847
6762
  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
+ });
6848
6771
 
6849
- var _useState = useState(initValue$3),
6850
- userDetail = _useState[0],
6851
- setUserDetail = _useState[1];
6852
-
6853
- var _useState2 = useState(null),
6854
- file = _useState2[0],
6855
- setFile = _useState2[1];
6856
-
6857
- var _useState3 = useState(false),
6858
- edited = _useState3[0],
6859
- setEdited = _useState3[1];
6772
+ var _useFilters = useFilters(),
6773
+ filters = _useFilters.filters,
6774
+ changeFilters = _useFilters.changeFilters;
6860
6775
 
6861
- var setEditedTrue = function setEditedTrue() {
6862
- try {
6863
- localStorage.setItem(window.location.href, "true");
6864
- setEdited(true);
6865
- return Promise.resolve();
6866
- } catch (e) {
6867
- return Promise.reject(e);
6868
- }
6869
- };
6776
+ var _useState = useState(!!queryName ? queryName : ""),
6777
+ fullName = _useState[0],
6778
+ setFullName = _useState[1];
6870
6779
 
6871
- useEffect(function () {
6872
- document.title = TITLE$7;
6873
- setEdited(false);
6874
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
6875
- }, []);
6876
- useEffect(function () {
6877
- !!id && getData();
6878
- }, [id]);
6879
- var getData = useCallback(function () {
6780
+ var isDistrict = window.location.host.includes("-district");
6781
+ var dispatch = useDispatch();
6782
+ var getData = useCallback(function (fullName) {
6880
6783
  try {
6881
6784
  var _temp3 = function _temp3() {
6882
6785
  dispatch(setLoading(false));
@@ -6885,14 +6788,22 @@ var useUserDetail = function useUserDetail(id) {
6885
6788
  dispatch(setLoading(true));
6886
6789
 
6887
6790
  var _temp4 = _catch(function () {
6888
- return Promise.resolve(getById$3(id)).then(function (res) {
6889
- var _res$data;
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;
6890
6797
 
6891
- setUserDetail(_extends({}, res.data, {
6892
- dateOfBirth: format(new Date(res.data.dateOfBirth), DATE_FORMAT),
6893
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
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
+ }
6802
+
6803
+ dispatch(setUserList({
6804
+ userList: items,
6805
+ totalItems: totalItems
6894
6806
  }));
6895
- document.title = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.fullName;
6896
6807
  });
6897
6808
  }, function (err) {
6898
6809
  var _err$response, _err$response$data;
@@ -6907,196 +6818,713 @@ var useUserDetail = function useUserDetail(id) {
6907
6818
  } catch (e) {
6908
6819
  return Promise.reject(e);
6909
6820
  }
6910
- }, [id]);
6911
- var backToList = useCallback(function (user) {
6912
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
6821
+ }, [dispatch, filters]);
6822
+ useEffect(function () {
6823
+ document.title = TITLE$7;
6913
6824
  }, []);
6914
- var confirmData = useCallback(function (data) {
6915
- try {
6916
- var _temp9 = function _temp9() {
6917
- dispatch(setLoading(false));
6918
- };
6919
-
6920
- dispatch(setLoading(true));
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));
6921
6835
 
6922
- var _temp10 = _catch(function () {
6923
- function _temp6() {
6924
- var next = !!id ? update$5 : create$5;
6925
- !id && delete data.id;
6926
- return Promise.resolve(next(data)).then(function (result) {
6927
- if (!!result) {
6928
- getById$3(result.data.id).then(function (e) {
6929
- backToList(e.data.fullName);
6836
+ 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
6930
6850
  });
6931
- }
6932
-
6933
- if (!id) {
6934
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
6935
- }
6936
-
6937
- dispatch(setAlert({
6938
- type: "success",
6939
- message: (!!id ? "Update" : "Create") + " user successfully"
6940
- }));
6941
- });
6942
- }
6943
-
6944
- var _temp5 = function () {
6945
- if (!!file) {
6946
- var formData = new FormData();
6947
- var name = file.name;
6948
- formData.append("file", file, name);
6949
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
6950
- var _res$data2;
6951
-
6952
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.key;
6953
- data.profileImageFileName = imageUrl;
6954
6851
  });
6852
+ } catch (e) {
6853
+ return Promise.reject(e);
6955
6854
  }
6956
- }();
6957
-
6958
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
6959
- }, function (err) {
6960
- var _err$response2, _err$response2$data;
6855
+ }
6856
+ }));
6857
+ } catch (err) {
6858
+ var _err$response2, _err$response2$data;
6961
6859
 
6962
- dispatch(setAlert({
6963
- type: "danger",
6964
- 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
6965
- }));
6966
- });
6967
-
6968
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6969
- } catch (e) {
6970
- return Promise.reject(e);
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
+ }));
6971
6864
  }
6972
- }, [id, file]);
6973
-
6974
- var confirmChangePassword = function confirmChangePassword(data) {
6975
- try {
6976
- var _temp13 = function _temp13() {
6977
- dispatch(setLoading(false));
6978
- };
6979
-
6980
- dispatch(setLoading(true));
6981
6865
 
6982
- var _temp14 = _catch(function () {
6983
- return Promise.resolve(changePassword(data)).then(function () {
6984
- dispatch(setAlert({
6985
- type: "success",
6986
- message: "Change password successfully"
6987
- }));
6988
- });
6989
- }, function (e) {
6990
- var _e$response, _e$response$data;
6866
+ dispatch(setLoading(false));
6867
+ }, [filters]);
6991
6868
 
6992
- dispatch(setAlert({
6993
- type: "danger",
6994
- 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
6995
- }));
6996
- });
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
+ }));
6997
6888
 
6998
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
6999
- } catch (e) {
7000
- return Promise.reject(e);
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);
7001
6903
  }
7002
6904
  };
7003
6905
 
7004
- var forgotPasswordRequest = useCallback(function (data) {
6906
+ var swicthUser = useCallback(function (id) {
7005
6907
  try {
7006
- var _temp17 = function _temp17() {
7007
- dispatch(setLoading(false));
7008
- };
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
+ };
7009
6920
 
7010
- dispatch(setLoading(true));
6921
+ dispatch(setLoading(true));
7011
6922
 
7012
- var _temp18 = _catch(function () {
7013
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7014
- dispatch(setAlert({
7015
- type: "success",
7016
- message: "Send forgot password link successfully"
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;
6935
+
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
+ });
6941
+
6942
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
6943
+ } catch (e) {
6944
+ return Promise.reject(e);
6945
+ }
6946
+ }
7017
6947
  }));
7018
6948
  });
7019
6949
  }, function (err) {
7020
- var _err$response3, _err$response3$data;
6950
+ var _err$response4, _err$response4$data;
7021
6951
 
7022
6952
  dispatch(setAlert({
7023
6953
  type: "danger",
7024
- 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"
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
7025
6955
  }));
7026
6956
  });
7027
6957
 
7028
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
6958
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7029
6959
  } catch (e) {
7030
6960
  return Promise.reject(e);
7031
6961
  }
7032
- }, []);
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
+ };
6968
+
7033
6969
  return {
7034
- userDetail: userDetail,
7035
- backToList: backToList,
7036
- confirmData: confirmData,
7037
- file: file,
7038
- setFile: setFile,
7039
- edited: edited,
7040
- setEdited: setEdited,
7041
- setEditedTrue: setEditedTrue,
7042
- confirmChangePassword: confirmChangePassword,
7043
- forgotPasswordRequest: forgotPasswordRequest
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
7044
6979
  };
7045
6980
  };
7046
6981
 
7047
- var userSchema = object({
7048
- firstName: string().required("First name is required"),
7049
- lastName: string().required("Last name is required"),
7050
- dateOfBirth: string().required("Date of birth is required"),
7051
- email: string().email("Email is invalid").required("Email is required"),
7052
- roles: array().of(string()).min(1, "Role is required")
7053
- });
7054
-
7055
- var changePasswordSchema = object({
7056
- oldPassword: string().required("Current password is required"),
7057
- newPassword: string().required("New password is required"),
7058
- confirmedNewPassword: string().required("Confirm password is required")
7059
- });
7060
-
7061
- var CREATE_USER = "create_user";
7062
- var EDIT_USER_HEADER = "edit_user";
7063
- var CHANGE_PASSWORD$1 = "change_password";
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;
7064
6988
 
7065
- var UserDetail = function UserDetail() {
7066
- var _useParams = useParams(),
7067
- id = _useParams.id;
6989
+ var _useState = useState(initValue),
6990
+ searchString = _useState[0],
6991
+ setSearchString = _useState[1];
7068
6992
 
7069
- var user = useSelector(function (state) {
7070
- return state.common.user;
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
7071
7008
  });
7009
+ };
7072
7010
 
7073
- var _useTranslation = useTranslation(),
7074
- t = _useTranslation.t;
7011
+ SearchBox.defaultProps = {
7012
+ placeholder: "Type something to search",
7013
+ className: "",
7014
+ style: {}
7015
+ };
7016
+ var SearchBox$1 = memo(SearchBox);
7075
7017
 
7076
- var _useUserDetail = useUserDetail(id),
7077
- userDetail = _useUserDetail.userDetail,
7078
- backToList = _useUserDetail.backToList,
7079
- confirmData = _useUserDetail.confirmData,
7080
- file = _useUserDetail.file,
7081
- setFile = _useUserDetail.setFile,
7082
- edited = _useUserDetail.edited,
7083
- setEdited = _useUserDetail.setEdited,
7084
- setEditedTrue = _useUserDetail.setEditedTrue,
7085
- confirmChangePassword = _useUserDetail.confirmChangePassword,
7086
- forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7018
+ var searchInputStyle = {
7019
+ height: 38
7020
+ };
7087
7021
 
7088
- var initialValueForm = {
7089
- oldPassword: "",
7090
- newPassword: "",
7091
- confirmedNewPassword: ""
7092
- };
7093
- var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7094
- var confirmText = !!id ? t("update") : t("create");
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
+ };
7095
7042
 
7096
- var getFile = function getFile() {
7097
- var url = window.location.origin + "/api/ExportDataUser/" + id;
7098
- window.open(url);
7099
- };
7043
+ SearchBoxContainer.defaultProps = {
7044
+ placeholder: "Type something to search"
7045
+ };
7046
+
7047
+ var utcToLocalTime = (function (time, FORMAT) {
7048
+ if (time === DATE_MIN_VALUE) return "";
7049
+
7050
+ try {
7051
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7052
+ } catch (_unused) {
7053
+ return "";
7054
+ }
7055
+ });
7056
+
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;
7503
+
7504
+ var _useUserDetail = useUserDetail(id),
7505
+ userDetail = _useUserDetail.userDetail,
7506
+ backToList = _useUserDetail.backToList,
7507
+ confirmData = _useUserDetail.confirmData,
7508
+ file = _useUserDetail.file,
7509
+ setFile = _useUserDetail.setFile,
7510
+ edited = _useUserDetail.edited,
7511
+ setEdited = _useUserDetail.setEdited,
7512
+ setEditedTrue = _useUserDetail.setEditedTrue,
7513
+ confirmChangePassword = _useUserDetail.confirmChangePassword,
7514
+ forgotPasswordRequest = _useUserDetail.forgotPasswordRequest;
7515
+
7516
+ var initialValueForm = {
7517
+ oldPassword: "",
7518
+ newPassword: "",
7519
+ confirmedNewPassword: ""
7520
+ };
7521
+ var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7522
+ var confirmText = !!id ? t("update") : t("create");
7523
+
7524
+ var getFile = function getFile() {
7525
+ var url = window.location.origin + "/api/ExportDataUser/" + id;
7526
+ window.open(url);
7527
+ };
7100
7528
 
7101
7529
  var onResetPw = function onResetPw(email) {
7102
7530
  try {
@@ -7533,42 +7961,6 @@ var CreatableSelector = function CreatableSelector(props) {
7533
7961
  });
7534
7962
  };
7535
7963
 
7536
- var SearchBox = function SearchBox(_ref) {
7537
- var initValue = _ref.initValue,
7538
- onSearch = _ref.onSearch,
7539
- placeholder = _ref.placeholder,
7540
- className = _ref.className,
7541
- style = _ref.style;
7542
-
7543
- var _useState = useState(initValue),
7544
- searchString = _useState[0],
7545
- setSearchString = _useState[1];
7546
-
7547
- useEffect(function () {
7548
- setSearchString(initValue);
7549
- }, [initValue]);
7550
- var onKeyUp = useCallback(function (e) {
7551
- e.key === "Enter" && onSearch(searchString);
7552
- }, [searchString, onSearch]);
7553
- return React.createElement(Input, {
7554
- placeholder: placeholder,
7555
- value: searchString,
7556
- onChange: function onChange(e) {
7557
- return setSearchString(e.target.value);
7558
- },
7559
- onKeyUp: onKeyUp,
7560
- className: className,
7561
- style: style
7562
- });
7563
- };
7564
-
7565
- SearchBox.defaultProps = {
7566
- placeholder: "Type something to search",
7567
- className: "",
7568
- style: {}
7569
- };
7570
- var SearchBox$1 = memo(SearchBox);
7571
-
7572
7964
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7573
7965
  var id = props.id;
7574
7966
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -7924,23 +8316,13 @@ var NotificationStatusSelector = function NotificationStatusSelector(_ref) {
7924
8316
 
7925
8317
  var NotificationStatusSelector$1 = memo(NotificationStatusSelector);
7926
8318
 
7927
- var utcToLocalTime = (function (time, FORMAT) {
7928
- if (time === DATE_MIN_VALUE) return "";
7929
-
7930
- try {
7931
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7932
- } catch (_unused) {
7933
- return "";
7934
- }
7935
- });
7936
-
7937
8319
  var defaultFilters = {
7938
8320
  currentPage: 1,
7939
8321
  pageSize: 30,
7940
8322
  searchString: "",
7941
8323
  isRead: false
7942
8324
  };
7943
- var TITLE$8 = "Notification list";
8325
+ var TITLE$9 = "Notification list";
7944
8326
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
7945
8327
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
7946
8328
 
@@ -8065,7 +8447,7 @@ var useNotificationList = function useNotificationList() {
8065
8447
  }
8066
8448
  }, [filters]);
8067
8449
  useEffect(function () {
8068
- document.title = TITLE$8;
8450
+ document.title = TITLE$9;
8069
8451
  }, []);
8070
8452
  useEffect(function () {
8071
8453
  getData();
@@ -8150,7 +8532,7 @@ var useNotificationList = function useNotificationList() {
8150
8532
  };
8151
8533
  };
8152
8534
 
8153
- var header$2 = "Notification list";
8535
+ var header$3 = "Notification list";
8154
8536
  var ICON_SIZE = 20;
8155
8537
 
8156
8538
  var NotificationList = function NotificationList() {
@@ -8171,7 +8553,7 @@ var NotificationList = function NotificationList() {
8171
8553
  }
8172
8554
  }, React.createElement("h5", {
8173
8555
  className: "mb-2"
8174
- }, header$2), React.createElement(Row, {
8556
+ }, header$3), React.createElement(Row, {
8175
8557
  className: "my-2"
8176
8558
  }, React.createElement(Col, {
8177
8559
  md: 8
@@ -8261,43 +8643,14 @@ var NotificationList = function NotificationList() {
8261
8643
  changePageSize: function changePageSize(pageSize) {
8262
8644
  return changeFilters({
8263
8645
  pageSize: pageSize
8264
- });
8265
- },
8266
- changePage: function changePage(currentPage) {
8267
- return changeFilters({
8268
- currentPage: currentPage
8269
- });
8270
- }
8271
- }))));
8272
- };
8273
-
8274
- var searchInputStyle = {
8275
- height: 38
8276
- };
8277
-
8278
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
8279
- var text = _ref.text,
8280
- initValue = _ref.initValue,
8281
- onClick = _ref.onClick,
8282
- onSearch = _ref.onSearch,
8283
- placeholder = _ref.placeholder;
8284
- return React.createElement("div", {
8285
- className: "d-flex align-items-center"
8286
- }, React.createElement("div", null, React.createElement(AddButton, {
8287
- text: text,
8288
- onClick: onClick
8289
- })), React.createElement("div", {
8290
- className: "flex-grow-1 ml-2"
8291
- }, React.createElement(SearchBox$1, {
8292
- initValue: initValue,
8293
- onSearch: onSearch,
8294
- placeholder: placeholder,
8295
- style: searchInputStyle
8296
- })));
8297
- };
8298
-
8299
- SearchBoxContainer.defaultProps = {
8300
- placeholder: "Type something to search"
8646
+ });
8647
+ },
8648
+ changePage: function changePage(currentPage) {
8649
+ return changeFilters({
8650
+ currentPage: currentPage
8651
+ });
8652
+ }
8653
+ }))));
8301
8654
  };
8302
8655
 
8303
8656
  var CustomTabs = function CustomTabs(props) {
@@ -8704,7 +9057,7 @@ var get$8 = function get(filter) {
8704
9057
  });
8705
9058
  };
8706
9059
 
8707
- var TITLE$9 = "Gallery";
9060
+ var TITLE$a = "Gallery";
8708
9061
  var defaultFilter = {
8709
9062
  searchString: ""
8710
9063
  };
@@ -8941,7 +9294,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
8941
9294
  }
8942
9295
  }, [dispatch, filters]);
8943
9296
  useEffect(function () {
8944
- document.title = TITLE$9;
9297
+ document.title = TITLE$a;
8945
9298
  dispatch(setTargetMedia({
8946
9299
  targetMedia: undefined
8947
9300
  }));
@@ -9133,7 +9486,7 @@ var MediaDetail = function MediaDetail(_ref) {
9133
9486
 
9134
9487
  var MediaDetail$1 = React.memo(MediaDetail);
9135
9488
 
9136
- var header$3 = "Gallery";
9489
+ var header$4 = "Gallery";
9137
9490
 
9138
9491
  var GalleryList = function GalleryList(_ref) {
9139
9492
  var isLibrary = _ref.isLibrary;
@@ -9144,7 +9497,7 @@ var GalleryList = function GalleryList(_ref) {
9144
9497
  className: "fadeIn animated"
9145
9498
  }, !isLibrary && React.createElement("h5", {
9146
9499
  className: "mb-2"
9147
- }, header$3), React.createElement(Row, {
9500
+ }, header$4), React.createElement(Row, {
9148
9501
  className: "mb-2"
9149
9502
  }, React.createElement(Col, {
9150
9503
  md: 8
@@ -9545,7 +9898,7 @@ var commonReducer = createReducer(initialState, function (builder) {
9545
9898
  }).addCase(showFontSize, function (state, action) {
9546
9899
  state.defaultFontSize = action.payload;
9547
9900
  }).addCase(initAmplitude, function (state, action) {
9548
- 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;
9901
+ 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;
9549
9902
 
9550
9903
  var hostName = window.location.hostname;
9551
9904
  var eventProperties = {
@@ -9561,7 +9914,7 @@ var commonReducer = createReducer(initialState, function (builder) {
9561
9914
  last_page: (_action$payload11 = action.payload) !== null && _action$payload11 !== void 0 && _action$payload11.last_page ? action.payload.last_page : "",
9562
9915
  event: action.payload.event,
9563
9916
  domain: !!hostName ? hostName : "",
9564
- 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() : "",
9917
+ 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() : "",
9565
9918
  answer: !!((_action$payload14 = action.payload) !== null && _action$payload14 !== void 0 && _action$payload14.answer) ? action.payload.answer : ""
9566
9919
  };
9567
9920
  state.amplitude = eventProperties;
@@ -9770,9 +10123,6 @@ var commonReducer$8 = createReducer(initialState$e, function (builder) {
9770
10123
  });
9771
10124
  });
9772
10125
 
9773
- var setUserList = createAction("users/setUserList");
9774
- var setStudentList = createAction("users/setStudentList");
9775
-
9776
10126
  var initialState$f = {
9777
10127
  userList: [],
9778
10128
  totalItems: 0,
@@ -10246,591 +10596,239 @@ var sessionPlayerReducer = createReducer(initialState$u, function (builder) {
10246
10596
  questionId: questionId,
10247
10597
  text: text
10248
10598
  });
10249
- } else {
10250
- existedResponse.text = text;
10251
- }
10252
-
10253
- return _extends({}, state, {
10254
- results: state.results.map(function (result) {
10255
- return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10256
- })
10257
- });
10258
- }).addCase(setStartTime, function (state, action) {
10259
- var startTime = action.payload;
10260
- if (!startTime) return state;
10261
- state.startTime = startTime;
10262
- }).addCase(reset, function (_state, _action) {
10263
- return initialState$u;
10264
- });
10265
- });
10266
-
10267
- var setDataPlayer = createAction("dataPlayer/setDataPlayer");
10268
- var answerQuestionDataPlayer = createAction("dataPlayer/answerQuestionDataPlayer");
10269
-
10270
- var initialState$v = {
10271
- id: 0,
10272
- questions: [{
10273
- id: 0,
10274
- text: "",
10275
- type: "",
10276
- subQuestions: [],
10277
- answers: []
10278
- }],
10279
- questionResponse: []
10280
- };
10281
- var dataPlayer = createReducer(initialState$v, function (builder) {
10282
- builder.addCase(setDataPlayer, function (_state, action) {
10283
- return action.payload;
10284
- }).addCase(answerQuestionDataPlayer, function (state, action) {
10285
- var _action$payload = action.payload,
10286
- questionId = _action$payload.questionId,
10287
- text = _action$payload.text;
10288
- var questionResponse = state.questionResponse;
10289
- if (!questionResponse) return state;
10290
- var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10291
- var existedResponse = questionResponseCloner.find(function (response) {
10292
- return response.questionId === questionId;
10293
- });
10294
-
10295
- if (!existedResponse) {
10296
- questionResponseCloner.push({
10297
- questionId: questionId,
10298
- text: text
10299
- });
10300
- } else {
10301
- existedResponse.text = text;
10302
- }
10303
-
10304
- return _extends({}, state, {
10305
- questionResponse: questionResponseCloner
10306
- });
10307
- }).addCase(reset, function (_state, _action) {
10308
- return initialState$v;
10309
- });
10310
- });
10311
-
10312
- var setCertificateList = createAction("certificates/setCertificateList");
10313
-
10314
- var initialState$w = {
10315
- certificateList: [],
10316
- totalItems: 0
10317
- };
10318
- var commonReducer$f = createReducer(initialState$w, function (builder) {
10319
- builder.addCase(setCertificateList, function (state, action) {
10320
- state.certificateList = action.payload.certificateList;
10321
- state.totalItems = action.payload.totalItems;
10322
- }).addCase(reset, function (_state, _action) {
10323
- return initialState$w;
10324
- });
10325
- });
10326
-
10327
- var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10328
-
10329
- var initialState$x = {
10330
- improveMyClassList: []
10331
- };
10332
- var commonReducer$g = createReducer(initialState$x, function (builder) {
10333
- builder.addCase(setImproveMyClass, function (state, action) {
10334
- state.improveMyClassList = action.payload;
10335
- }).addCase(reset, function (_state, _action) {
10336
- return initialState$x;
10337
- });
10338
- });
10339
-
10340
- var setFilterWidget = createAction("setFilterWidget");
10341
-
10342
- var initialState$y = {
10343
- filterWidget: "Year"
10344
- };
10345
- var widgetReducer = createReducer(initialState$y, function (builder) {
10346
- builder.addCase(setFilterWidget, function (state, action) {
10347
- state.filterWidget = action.payload.filterWidget;
10348
- }).addCase(reset, function (_state, _action) {
10349
- return initialState$y;
10350
- });
10351
- });
10352
-
10353
- var setBandScoreList = createAction("bandScores/setBandScoreList");
10354
-
10355
- var initialState$z = {
10356
- bandScoreList: [],
10357
- totalItems: 0
10358
- };
10359
- var commonReducer$h = createReducer(initialState$z, function (builder) {
10360
- builder.addCase(setBandScoreList, function (state, action) {
10361
- state.bandScoreList = action.payload.bandScoreList;
10362
- state.totalItems = action.payload.totalItems;
10363
- }).addCase(reset, function (_state, _action) {
10364
- return initialState$z;
10365
- });
10366
- });
10367
-
10368
- var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10369
-
10370
- var initialState$A = {
10371
- schoolBlankDayList: [],
10372
- totalItems: 0
10373
- };
10374
- var commonReducer$i = createReducer(initialState$A, function (builder) {
10375
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10376
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10377
- state.totalItems = action.payload.totalItems;
10378
- }).addCase(reset, function (_state, _action) {
10379
- return initialState$A;
10380
- });
10381
- });
10382
-
10383
- var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10384
-
10385
- var initialState$B = {
10386
- studentIdSelectedByTeacher: 0
10387
- };
10388
- var navMobileReducer = createReducer(initialState$B, function (builder) {
10389
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10390
- state.studentIdSelectedByTeacher = action.payload;
10391
- }).addCase(reset, function (_state, _action) {
10392
- return initialState$B;
10393
- });
10394
- });
10395
-
10396
- var rootReducer = combineReducers({
10397
- common: commonReducer,
10398
- classes: classReducer,
10399
- conferenceRubrics: conferenceRubricReducer,
10400
- faqs: commonReducer$1,
10401
- skills: commonReducer$2,
10402
- emailTemplate: emailTemplateReducer,
10403
- suggestionBank: suggestionBankReducer,
10404
- learningStrategy: learningStrategyReducer,
10405
- subjects: commonReducer$3,
10406
- learningSupportCategories: commonReducer$4,
10407
- questionBank: questionBankReducer,
10408
- badges: commonReducer$5,
10409
- semester: commonReducer$6,
10410
- goalExamples: commonReducer$8,
10411
- users: commonReducer$9,
10412
- reflections: reflectionReducer,
10413
- reflectionResults: reflectionReducer$1,
10414
- feedbacks: commonReducer$a,
10415
- assessments: commonReducer$b,
10416
- questionByCategory: questionCategoryReducer,
10417
- mailCategory: questionBankReducer$1,
10418
- questionCate: questionCateReducer,
10419
- notification: questionBankReducer$2,
10420
- myStudent: commonReducer$c,
10421
- assignments: commonReducer$7,
10422
- assistants: assistantReducer,
10423
- sesstionTemplates: sessionTemplateReducer,
10424
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10425
- tutorialScreens: tutorialScreenReducer,
10426
- customAlerts: commonReducer$d,
10427
- gallery: commonReducer$e,
10428
- dashboard: dashboardReducer,
10429
- sessionPlayer: sessionPlayerReducer,
10430
- dataPlayer: dataPlayer,
10431
- certificate: commonReducer$f,
10432
- improveMyClass: commonReducer$g,
10433
- widget: widgetReducer,
10434
- bandScores: commonReducer$h,
10435
- schoolBlankDays: commonReducer$i,
10436
- navMobileReducer: navMobileReducer
10437
- });
10438
-
10439
- var store = configureStore({
10440
- reducer: rootReducer,
10441
- middleware: function middleware(getDefaultMiddleware) {
10442
- return getDefaultMiddleware({
10443
- serializableCheck: false
10444
- }).concat(logger);
10445
- }
10446
- });
10447
-
10448
- var isInViewport = function isInViewport(el) {
10449
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10450
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10451
- };
10452
-
10453
- var debounce = function debounce(callback, wait) {
10454
- var timeout = null;
10455
- return function () {
10456
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10457
- args[_key] = arguments[_key];
10458
- }
10459
-
10460
- var next = function next() {
10461
- return callback.apply(void 0, args);
10462
- };
10463
-
10464
- clearTimeout(timeout);
10465
- timeout = setTimeout(next, wait);
10466
- };
10467
- };
10468
-
10469
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10470
- var p = document.createElement("p");
10471
- p.innerHTML = htmlString;
10472
- var text = p.innerText;
10473
- p.remove();
10474
- return text;
10475
- };
10476
-
10477
- var generateRandomString = (function () {
10478
- return (Math.random() + 1).toString(36).substring(7);
10479
- });
10480
-
10481
- var amplitudeClient = amplitude.getInstance();
10482
-
10483
- var USER_URL$2 = "/admin/user";
10484
- var CREATE_USER_URL = "/admin/create-user";
10485
- var TITLE$a = "User list";
10486
- var HOMEPAGE_TEACHER$1 = "/home";
10487
- var HOMEPAGE_STUDENT$1 = "/home";
10488
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10489
- var HOMEPAGE_PARENT$1 = "/parent";
10490
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10491
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10599
+ } else {
10600
+ existedResponse.text = text;
10601
+ }
10492
10602
 
10493
- var useUserList = function useUserList() {
10494
- var history = useHistory();
10495
- var query = new URLSearchParams(location.search);
10496
- var queryName = query.get("query");
10497
- var userList = useSelector(function (state) {
10498
- return state.users.userList;
10499
- });
10500
- var totalItems = useSelector(function (state) {
10501
- return state.users.totalItems;
10603
+ return _extends({}, state, {
10604
+ results: state.results.map(function (result) {
10605
+ return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10606
+ })
10607
+ });
10608
+ }).addCase(setStartTime, function (state, action) {
10609
+ var startTime = action.payload;
10610
+ if (!startTime) return state;
10611
+ state.startTime = startTime;
10612
+ }).addCase(reset, function (_state, _action) {
10613
+ return initialState$u;
10502
10614
  });
10615
+ });
10503
10616
 
10504
- var _useFilters = useFilters(),
10505
- filters = _useFilters.filters,
10506
- changeFilters = _useFilters.changeFilters;
10507
-
10508
- var _useState = useState(!!queryName ? queryName : ""),
10509
- fullName = _useState[0],
10510
- setFullName = _useState[1];
10617
+ var setDataPlayer = createAction("dataPlayer/setDataPlayer");
10618
+ var answerQuestionDataPlayer = createAction("dataPlayer/answerQuestionDataPlayer");
10511
10619
 
10512
- var isDistrict = window.location.host.includes("-district");
10513
- var dispatch = useDispatch();
10514
- var getData = useCallback(function (fullName) {
10515
- try {
10516
- var _temp3 = function _temp3() {
10517
- dispatch(setLoading(false));
10518
- };
10620
+ var initialState$v = {
10621
+ id: 0,
10622
+ questions: [{
10623
+ id: 0,
10624
+ text: "",
10625
+ type: "",
10626
+ subQuestions: [],
10627
+ answers: []
10628
+ }],
10629
+ questionResponse: []
10630
+ };
10631
+ var dataPlayer = createReducer(initialState$v, function (builder) {
10632
+ builder.addCase(setDataPlayer, function (_state, action) {
10633
+ return action.payload;
10634
+ }).addCase(answerQuestionDataPlayer, function (state, action) {
10635
+ var _action$payload = action.payload,
10636
+ questionId = _action$payload.questionId,
10637
+ text = _action$payload.text;
10638
+ var questionResponse = state.questionResponse;
10639
+ if (!questionResponse) return state;
10640
+ var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10641
+ var existedResponse = questionResponseCloner.find(function (response) {
10642
+ return response.questionId === questionId;
10643
+ });
10519
10644
 
10520
- dispatch(setLoading(true));
10645
+ if (!existedResponse) {
10646
+ questionResponseCloner.push({
10647
+ questionId: questionId,
10648
+ text: text
10649
+ });
10650
+ } else {
10651
+ existedResponse.text = text;
10652
+ }
10521
10653
 
10522
- var _temp4 = _catch(function () {
10523
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10524
- searchString: fullName
10525
- })) : get$5(filters)).then(function (res) {
10526
- var _res$data = res.data,
10527
- items = _res$data.items,
10528
- totalItems = _res$data.totalItems;
10654
+ return _extends({}, state, {
10655
+ questionResponse: questionResponseCloner
10656
+ });
10657
+ }).addCase(reset, function (_state, _action) {
10658
+ return initialState$v;
10659
+ });
10660
+ });
10529
10661
 
10530
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10531
- var user = _step.value;
10532
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10533
- }
10662
+ var setCertificateList = createAction("certificates/setCertificateList");
10534
10663
 
10535
- dispatch(setUserList({
10536
- userList: items,
10537
- totalItems: totalItems
10538
- }));
10539
- });
10540
- }, function (err) {
10541
- var _err$response, _err$response$data;
10664
+ var initialState$w = {
10665
+ certificateList: [],
10666
+ totalItems: 0
10667
+ };
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
+ });
10675
+ });
10542
10676
 
10543
- dispatch(setAlert({
10544
- type: "danger",
10545
- 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
10546
- }));
10547
- });
10677
+ var setImproveMyClass = createAction("improveMyClass/setImproveMyClass");
10548
10678
 
10549
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10550
- } catch (e) {
10551
- return Promise.reject(e);
10552
- }
10553
- }, [dispatch, filters]);
10554
- useEffect(function () {
10555
- document.title = TITLE$a;
10556
- }, []);
10557
- useEffect(function () {
10558
- if (!!fullName) {
10559
- getData(fullName);
10560
- setFullName(null);
10561
- } else {
10562
- getData();
10563
- }
10564
- }, [filters]);
10565
- var removeData = useCallback(function (id) {
10566
- dispatch(setLoading(true));
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;
10687
+ });
10688
+ });
10567
10689
 
10568
- try {
10569
- dispatch(setModal({
10570
- isOpen: true,
10571
- type: "warning",
10572
- message: "Do you want to remove this user?",
10573
- onConfirm: function () {
10574
- try {
10575
- return Promise.resolve(remove$3(id)).then(function () {
10576
- dispatch(setAlert({
10577
- type: "success",
10578
- message: "Remove user successfully"
10579
- }));
10580
- changeFilters({
10581
- currentPage: 1
10582
- });
10583
- });
10584
- } catch (e) {
10585
- return Promise.reject(e);
10586
- }
10587
- }
10588
- }));
10589
- } catch (err) {
10590
- var _err$response2, _err$response2$data;
10690
+ var setFilterWidget = createAction("setFilterWidget");
10591
10691
 
10592
- dispatch(setAlert({
10593
- type: "danger",
10594
- 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
10595
- }));
10596
- }
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
+ });
10597
10702
 
10598
- dispatch(setLoading(false));
10599
- }, [filters]);
10703
+ var setBandScoreList = createAction("bandScores/setBandScoreList");
10600
10704
 
10601
- var redirectLoginUser = function redirectLoginUser(res) {
10602
- var _res$data2 = res.data,
10603
- token = _res$data2.token,
10604
- id = _res$data2.id,
10605
- firstName = _res$data2.firstName,
10606
- lastName = _res$data2.lastName,
10607
- roles = _res$data2.roles,
10608
- email = _res$data2.email,
10609
- profileImageFileName = _res$data2.profileImageFileName;
10610
- localStorage.setItem(ACCESS_TOKEN, token);
10611
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10612
- dispatch(setUser({
10613
- id: id,
10614
- firstName: firstName,
10615
- lastName: lastName,
10616
- roles: roles,
10617
- email: email,
10618
- profileImageFileName: profileImageFileName
10619
- }));
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
+ });
10620
10717
 
10621
- if (isDistrict) {
10622
- history.push(HOMEPAGE_DISTRICT$1);
10623
- } else if (roles.includes("Admin")) {
10624
- history.push(HOMEPAGE_ADMIN$1);
10625
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10626
- history.push(HOMEPAGE_TEACHER$1);
10627
- } else if (roles.includes("Student")) {
10628
- history.push(HOMEPAGE_STUDENT$1);
10629
- } else if (roles.includes("Parent")) {
10630
- history.push(HOMEPAGE_PARENT$1);
10631
- } else if (roles.includes("EduTeacher")) {
10632
- history.push(HOMEPAGE_EDU_TEACHER$1);
10633
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10634
- history.push(HOMEPAGE_TEACHER$1);
10635
- }
10636
- };
10718
+ var setSchoolBlankDayList = createAction("schoolBlankDays/setSchoolBlankDayList");
10637
10719
 
10638
- var swicthUser = useCallback(function (id) {
10639
- try {
10640
- var _temp6 = _catch(function () {
10641
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
10642
- var data = res.data;
10643
- dispatch(setModal({
10644
- isOpen: true,
10645
- type: "warning",
10646
- message: "Do you want to impersonate this user?",
10647
- onConfirm: function () {
10648
- try {
10649
- var _temp9 = function _temp9() {
10650
- dispatch(setLoading(false));
10651
- };
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
+ });
10652
10732
 
10653
- dispatch(setLoading(true));
10733
+ var setStudentIdSelectedByTeacher = createAction("navMobile/setStudentIdSelectedByTeacher");
10654
10734
 
10655
- var _temp10 = _catch(function () {
10656
- var req = {
10657
- email: data.email,
10658
- password: "default",
10659
- accessToken: data.token
10660
- };
10661
- return Promise.resolve(logIn(req)).then(function (res) {
10662
- localStorage.clear();
10663
- redirectLoginUser(res);
10664
- });
10665
- }, function (err) {
10666
- var _err$response3, _err$response3$data;
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
+ });
10667
10745
 
10668
- setAlert({
10669
- type: "danger",
10670
- 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
10671
- });
10672
- });
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
+ });
10673
10788
 
10674
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10675
- } catch (e) {
10676
- return Promise.reject(e);
10677
- }
10678
- }
10679
- }));
10680
- });
10681
- }, function (err) {
10682
- var _err$response4, _err$response4$data;
10789
+ var store = configureStore({
10790
+ reducer: rootReducer,
10791
+ middleware: function middleware(getDefaultMiddleware) {
10792
+ return getDefaultMiddleware({
10793
+ serializableCheck: false
10794
+ }).concat(logger);
10795
+ }
10796
+ });
10683
10797
 
10684
- dispatch(setAlert({
10685
- type: "danger",
10686
- 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
10687
- }));
10688
- });
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
+ };
10689
10802
 
10690
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10691
- } catch (e) {
10692
- return Promise.reject(e);
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];
10693
10808
  }
10694
- }, [filters]);
10695
10809
 
10696
- var reDirectDetailPage = function reDirectDetailPage(id) {
10697
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10698
- history.push(url);
10699
- };
10810
+ var next = function next() {
10811
+ return callback.apply(void 0, args);
10812
+ };
10700
10813
 
10701
- return {
10702
- userList: userList,
10703
- totalItems: totalItems,
10704
- filters: filters,
10705
- queryName: queryName,
10706
- getData: getData,
10707
- removeData: removeData,
10708
- changeFilters: changeFilters,
10709
- reDirectDetailPage: reDirectDetailPage,
10710
- swicthUser: swicthUser
10814
+ clearTimeout(timeout);
10815
+ timeout = setTimeout(next, wait);
10711
10816
  };
10712
10817
  };
10713
10818
 
10714
- var header$4 = "User";
10715
-
10716
- var UserList = function UserList() {
10717
- var _useUserList = useUserList(),
10718
- queryName = _useUserList.queryName,
10719
- userList = _useUserList.userList,
10720
- totalItems = _useUserList.totalItems,
10721
- filters = _useUserList.filters,
10722
- removeData = _useUserList.removeData,
10723
- changeFilters = _useUserList.changeFilters,
10724
- reDirectDetailPage = _useUserList.reDirectDetailPage,
10725
- swicthUser = _useUserList.swicthUser;
10726
-
10727
- var _useTranslation = useTranslation(),
10728
- t = _useTranslation.t;
10729
-
10730
- return React.createElement("div", {
10731
- className: "fadeIn animated"
10732
- }, React.createElement("h5", {
10733
- className: "mb-2"
10734
- }, t("" + header$4)), React.createElement(Row, {
10735
- className: "my-2"
10736
- }, React.createElement(Col, {
10737
- md: 8
10738
- }, React.createElement(SearchBoxContainer, {
10739
- text: t("create_user"),
10740
- onClick: function onClick() {
10741
- return reDirectDetailPage();
10742
- },
10743
- initValue: !!queryName ? queryName : "",
10744
- onSearch: function onSearch(searchString) {
10745
- return changeFilters({
10746
- searchString: searchString
10747
- });
10748
- },
10749
- placeholder: t("type_something_to_search_by_user_name")
10750
- })), React.createElement(Col, {
10751
- md: 4,
10752
- className: "d-flex justify-content-end align-items-center"
10753
- }, t("total_of_users"), " : ", totalItems)), React.createElement(Row, {
10754
- className: "mb-2"
10755
- }, React.createElement(Col, {
10756
- md: 12
10757
- }, userList && userList.length > 0 ? React.createElement("div", null, React.createElement(Table, {
10758
- bordered: true,
10759
- hover: true,
10760
- striped: true,
10761
- responsive: true,
10762
- size: "sm"
10763
- }, React.createElement("thead", null, React.createElement("tr", null, React.createElement("th", {
10764
- className: "align-top"
10765
- }, t("name")), React.createElement("th", {
10766
- className: "align-top"
10767
- }, t("email")), React.createElement("th", {
10768
- className: "align-top"
10769
- }, t("age")), React.createElement("th", {
10770
- className: "align-top"
10771
- }, t("role")), React.createElement("th", {
10772
- className: "align-top"
10773
- }, t("active_status")), React.createElement("th", {
10774
- className: "align-top"
10775
- }, t("created_time")), React.createElement("th", {
10776
- className: "text-center"
10777
- }, t("action")))), React.createElement("tbody", null, userList.map(function (record) {
10778
- return React.createElement("tr", {
10779
- key: record.id
10780
- }, React.createElement("td", {
10781
- className: "align-middle"
10782
- }, React.createElement(LinkEditButton, {
10783
- label: "" + record.fullName,
10784
- onClick: function onClick() {
10785
- return reDirectDetailPage(record.id);
10786
- }
10787
- })), React.createElement("td", {
10788
- className: "align-middle"
10789
- }, record.email), React.createElement("td", {
10790
- className: "align-middle"
10791
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React.createElement("td", {
10792
- className: "align-middle"
10793
- }, !!record.roles && record.roles.join(", ")), React.createElement("td", {
10794
- className: "align-middle"
10795
- }, record.isActive ? t("active") : t("inactive")), React.createElement("td", {
10796
- className: "align-middle"
10797
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React.createElement("td", {
10798
- className: "text-center align-middle"
10799
- }, React.createElement(FaUsersCog, {
10800
- style: {
10801
- fontSize: "18px",
10802
- marginRight: "10px",
10803
- cursor: "pointer"
10804
- },
10805
- onClick: function onClick() {
10806
- return swicthUser(record.id);
10807
- }
10808
- }), React.createElement(DeleteButtonIcon, {
10809
- onClick: function onClick() {
10810
- return removeData(record.id);
10811
- }
10812
- })));
10813
- })))) : React.createElement(EmptyDataAlert, {
10814
- label: t("user")
10815
- })), React.createElement(Col, {
10816
- md: 12
10817
- }, React.createElement(CustomPagination, {
10818
- filters: filters,
10819
- totalRecordCount: totalItems,
10820
- changePageSize: function changePageSize(pageSize) {
10821
- return changeFilters({
10822
- pageSize: pageSize
10823
- });
10824
- },
10825
- changePage: function changePage(currentPage) {
10826
- return changeFilters({
10827
- currentPage: currentPage
10828
- });
10829
- }
10830
- }))));
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;
10831
10825
  };
10832
10826
 
10833
- var amplitudeClient$1 = amplitude.getInstance();
10827
+ var generateRandomString = (function () {
10828
+ return (Math.random() + 1).toString(36).substring(7);
10829
+ });
10830
+
10831
+ var amplitudeClient = amplitude.getInstance();
10834
10832
 
10835
- 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 };
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 };
10836
10834
  //# sourceMappingURL=index.modern.js.map