mario-core 2.9.106-beta → 2.9.107-beta

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