mario-core 2.9.130-iep → 2.9.130-level

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -166,6 +166,7 @@ var edit_semester = "Edit semester";
166
166
  var create_semester = "Create semester";
167
167
  var update_school_break_month = "Update school break month";
168
168
  var total_of_semesters = "Total of semesters";
169
+ var total_of_academicyear = "Total of academic years";
169
170
  var semester = "semester";
170
171
  var breaking_month = "Breaking month";
171
172
  var change_breaking_month = "Change breaking month";
@@ -769,6 +770,7 @@ var lang_us = {
769
770
  create_semester: create_semester,
770
771
  update_school_break_month: update_school_break_month,
771
772
  total_of_semesters: total_of_semesters,
773
+ total_of_academicyear: total_of_academicyear,
772
774
  semester: semester,
773
775
  breaking_month: breaking_month,
774
776
  change_breaking_month: change_breaking_month,
@@ -1377,6 +1379,7 @@ var edit_semester$1 = "Edit semester";
1377
1379
  var create_semester$1 = "Create semester";
1378
1380
  var update_school_break_month$1 = "Update school break month";
1379
1381
  var total_of_semesters$1 = "Total of semesters";
1382
+ var total_of_academicyear$1 = "Total of academic years";
1380
1383
  var semester$1 = "semester";
1381
1384
  var breaking_month$1 = "Breaking month";
1382
1385
  var change_breaking_month$1 = "Change breaking month";
@@ -1980,6 +1983,7 @@ var lang_uk = {
1980
1983
  create_semester: create_semester$1,
1981
1984
  update_school_break_month: update_school_break_month$1,
1982
1985
  total_of_semesters: total_of_semesters$1,
1986
+ total_of_academicyear: total_of_academicyear$1,
1983
1987
  semester: semester$1,
1984
1988
  breaking_month: breaking_month$1,
1985
1989
  change_breaking_month: change_breaking_month$1,
@@ -4394,11 +4398,25 @@ var TheLanguageDropdown = function TheLanguageDropdown() {
4394
4398
  };
4395
4399
 
4396
4400
  var TheHeader = function TheHeader() {
4401
+ var dispatch = reactRedux.useDispatch();
4402
+ var sidebarShow = reactRedux.useSelector(function (state) {
4403
+ return state.common.sidebarShow;
4404
+ });
4405
+
4406
+ var toggleSidebarMobile = function toggleSidebarMobile() {
4407
+ var val = [false, "responsive"].includes(sidebarShow) ? true : "responsive";
4408
+ dispatch(setSidebar(val));
4409
+ };
4410
+
4397
4411
  var isDistrict = window.location.host.includes("-district");
4398
4412
  return React__default.createElement(react.CHeader, {
4399
4413
  withSubheader: true,
4400
4414
  className: "d-flex align-items-center justify-content-end"
4401
- }, React__default.createElement(react.CHeaderBrand, {
4415
+ }, React__default.createElement(react.CToggler, {
4416
+ inHeader: true,
4417
+ className: "ml-md-3 d-lg-none",
4418
+ onClick: toggleSidebarMobile
4419
+ }), React__default.createElement(react.CHeaderBrand, {
4402
4420
  className: "mx-auto flex-grow-1 d-lg-none",
4403
4421
  to: "/"
4404
4422
  }, React__default.createElement("img", {
@@ -6882,89 +6900,8 @@ var SkillList = function SkillList() {
6882
6900
  }))));
6883
6901
  };
6884
6902
 
6885
- var MAX_FILE_SIZE = 20097152;
6886
-
6887
- var UploadFileButton = function UploadFileButton(_ref) {
6888
- var fileName = _ref.fileName,
6889
- maxWidth = _ref.maxWidth,
6890
- maxHeight = _ref.maxHeight,
6891
- setFile = _ref.setFile,
6892
- canDelete = _ref.canDelete,
6893
- onDelete = _ref.onDelete,
6894
- isCheckFeedBack = _ref.isCheckFeedBack,
6895
- onAddImage = _ref.onAddImage;
6896
- var dispatch = reactRedux.useDispatch();
6897
-
6898
- var _useState = React.useState(""),
6899
- imagePreviewUrl = _useState[0],
6900
- setImagePreviewUrl = _useState[1];
6901
-
6902
- var imageStyle = {
6903
- maxWidth: maxWidth || "100%",
6904
- maxHeight: maxHeight || "100%"
6905
- };
6906
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
6907
-
6908
- var handleImageChange = function handleImageChange(e) {
6909
- e.preventDefault();
6910
- var reader = new FileReader();
6911
- var newFile = e.target.files[0];
6912
-
6913
- if (newFile.size > MAX_FILE_SIZE) {
6914
- dispatch(setAlert({
6915
- type: "danger",
6916
- message: "File can't be larger than 2MB"
6917
- }));
6918
- return;
6919
- }
6920
-
6921
- reader.onloadend = function () {
6922
- setFile(newFile);
6923
- setImagePreviewUrl(reader.result);
6924
- };
6925
-
6926
- if (newFile) {
6927
- reader.readAsDataURL(newFile);
6928
- }
6929
-
6930
- !!onAddImage && onAddImage();
6931
- };
6932
-
6933
- var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
6934
- style: imageStyle,
6935
- src: imageSrc,
6936
- alt: "image"
6937
- }) : null;
6938
- return React__default.createElement("div", {
6939
- className: "mb-2"
6940
- }, React__default.createElement(reactstrap.Form, {
6941
- className: "mb-2"
6942
- }, React__default.createElement(reactstrap.Input, {
6943
- className: "d-none",
6944
- type: "file",
6945
- id: "uploadFile",
6946
- onChange: handleImageChange,
6947
- accept: "image/*"
6948
- }), React__default.createElement("div", {
6949
- className: "d-flex align-items-center"
6950
- }, React__default.createElement(reactstrap.Label, {
6951
- htmlFor: "uploadFile",
6952
- role: "button",
6953
- tabIndex: 0,
6954
- className: styles["input-file-label"]
6955
- }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
6956
- className: "fa fa-paperclip mr-1",
6957
- "aria-hidden": "true"
6958
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
6959
- size: "sm",
6960
- color: "danger",
6961
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
6962
- onClick: function onClick() {
6963
- setImagePreviewUrl(null);
6964
- onDelete && onDelete();
6965
- }
6966
- }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
6967
- };
6903
+ var setUserList = toolkit.createAction("users/setUserList");
6904
+ var setStudentList = toolkit.createAction("users/setStudentList");
6968
6905
 
6969
6906
  var USER_URL$1 = BASE_URL + "/api/user";
6970
6907
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6997,58 +6934,38 @@ var switchAccountUser = function switchAccountUser(id) {
6997
6934
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6998
6935
  };
6999
6936
 
7000
- var initValue$3 = {
7001
- id: "",
7002
- firstName: "",
7003
- lastName: "",
7004
- email: "",
7005
- dateOfBirth: "",
7006
- roles: [],
7007
- isActive: true,
7008
- profileImageFileName: ""
7009
- };
7010
- var USER_LIST_URL = "/admin/user";
7011
- var TITLE$7 = "User detail";
6937
+ var USER_URL$2 = "/admin/user";
6938
+ var CREATE_USER_URL = "/admin/create-user";
6939
+ var TITLE$7 = "User list";
6940
+ var HOMEPAGE_TEACHER$1 = "/home";
6941
+ var HOMEPAGE_STUDENT$1 = "/home";
6942
+ var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6943
+ var HOMEPAGE_PARENT$1 = "/parent";
6944
+ var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6945
+ var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
7012
6946
 
7013
- var useUserDetail = function useUserDetail(id) {
7014
- var dispatch = reactRedux.useDispatch();
6947
+ var useUserList = function useUserList() {
7015
6948
  var history = reactRouterDom.useHistory();
6949
+ var query = new URLSearchParams(location.search);
6950
+ var queryName = query.get("query");
6951
+ var userList = reactRedux.useSelector(function (state) {
6952
+ return state.users.userList;
6953
+ });
6954
+ var totalItems = reactRedux.useSelector(function (state) {
6955
+ return state.users.totalItems;
6956
+ });
7016
6957
 
7017
- var _useState = React.useState(initValue$3),
7018
- userDetail = _useState[0],
7019
- setUserDetail = _useState[1];
7020
-
7021
- var _useState2 = React.useState(null),
7022
- file = _useState2[0],
7023
- setFile = _useState2[1];
7024
-
7025
- var _useState3 = React.useState(false),
7026
- edited = _useState3[0],
7027
- setEdited = _useState3[1];
7028
-
7029
- var setEditedTrue = function setEditedTrue() {
7030
- try {
7031
- localStorage.setItem(window.location.href, "true");
7032
- setEdited(true);
7033
- return Promise.resolve();
7034
- } catch (e) {
7035
- return Promise.reject(e);
7036
- }
7037
- };
6958
+ var _useFilters = useFilters(),
6959
+ filters = _useFilters.filters,
6960
+ changeFilters = _useFilters.changeFilters;
7038
6961
 
7039
- var _useState4 = React.useState([]),
7040
- currentRoles = _useState4[0],
7041
- setCurrentRoles = _useState4[1];
6962
+ var _useState = React.useState(!!queryName ? queryName : ""),
6963
+ fullName = _useState[0],
6964
+ setFullName = _useState[1];
7042
6965
 
7043
- React.useEffect(function () {
7044
- document.title = TITLE$7;
7045
- setEdited(false);
7046
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7047
- }, []);
7048
- React.useEffect(function () {
7049
- !!id && getData();
7050
- }, [id]);
7051
- var getData = React.useCallback(function () {
6966
+ var isDistrict = window.location.host.includes("-district");
6967
+ var dispatch = reactRedux.useDispatch();
6968
+ var getData = React.useCallback(function (fullName) {
7052
6969
  try {
7053
6970
  var _temp3 = function _temp3() {
7054
6971
  dispatch(setLoading(false));
@@ -7057,15 +6974,22 @@ var useUserDetail = function useUserDetail(id) {
7057
6974
  dispatch(setLoading(true));
7058
6975
 
7059
6976
  var _temp4 = _catch(function () {
7060
- return Promise.resolve(getById$3(id)).then(function (res) {
7061
- var _res$data$roles, _res$data, _res$data2;
6977
+ return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6978
+ searchString: fullName
6979
+ })) : get$5(filters)).then(function (res) {
6980
+ var _res$data = res.data,
6981
+ items = _res$data.items,
6982
+ totalItems = _res$data.totalItems;
7062
6983
 
7063
- setUserDetail(_extends({}, res.data, {
7064
- dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7065
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
6984
+ for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6985
+ var user = _step.value;
6986
+ user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6987
+ }
6988
+
6989
+ dispatch(setUserList({
6990
+ userList: items,
6991
+ totalItems: totalItems
7066
6992
  }));
7067
- setCurrentRoles((_res$data$roles = res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.roles) != null ? _res$data$roles : []);
7068
- document.title = (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.fullName;
7069
6993
  });
7070
6994
  }, function (err) {
7071
6995
  var _err$response, _err$response$data;
@@ -7080,207 +7004,729 @@ var useUserDetail = function useUserDetail(id) {
7080
7004
  } catch (e) {
7081
7005
  return Promise.reject(e);
7082
7006
  }
7083
- }, [id]);
7084
- var backToList = React.useCallback(function (user) {
7085
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7007
+ }, [dispatch, filters]);
7008
+ React.useEffect(function () {
7009
+ document.title = TITLE$7;
7086
7010
  }, []);
7087
- var confirmData = React.useCallback(function (data) {
7088
- try {
7089
- var _temp9 = function _temp9() {
7090
- dispatch(setLoading(false));
7091
- };
7092
-
7093
- dispatch(setLoading(true));
7011
+ React.useEffect(function () {
7012
+ if (!!fullName) {
7013
+ getData(fullName);
7014
+ setFullName(null);
7015
+ } else {
7016
+ getData();
7017
+ }
7018
+ }, [filters]);
7019
+ var removeData = React.useCallback(function (id) {
7020
+ dispatch(setLoading(true));
7094
7021
 
7095
- var _temp10 = _catch(function () {
7096
- function _temp6() {
7097
- var next = !!id ? update$5 : create$5;
7098
- !id && delete data.id;
7099
- return Promise.resolve(next(data)).then(function (result) {
7100
- if (!!result) {
7101
- getById$3(result.data.id).then(function (e) {
7102
- backToList(e.data.fullName);
7022
+ try {
7023
+ dispatch(setModal({
7024
+ isOpen: true,
7025
+ type: "warning",
7026
+ message: "Do you want to remove this user?",
7027
+ onConfirm: function () {
7028
+ try {
7029
+ return Promise.resolve(remove$3(id)).then(function () {
7030
+ dispatch(setAlert({
7031
+ type: "success",
7032
+ message: "Remove user successfully"
7033
+ }));
7034
+ changeFilters({
7035
+ currentPage: 1
7103
7036
  });
7104
- }
7037
+ });
7038
+ } catch (e) {
7039
+ return Promise.reject(e);
7040
+ }
7041
+ }
7042
+ }));
7043
+ } catch (err) {
7044
+ var _err$response2, _err$response2$data;
7105
7045
 
7106
- if (!id) {
7107
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7108
- }
7046
+ dispatch(setAlert({
7047
+ type: "danger",
7048
+ 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
7049
+ }));
7050
+ }
7109
7051
 
7110
- dispatch(setAlert({
7111
- type: "success",
7112
- message: (!!id ? "Update" : "Create") + " user successfully"
7113
- }));
7114
- });
7115
- }
7052
+ dispatch(setLoading(false));
7053
+ }, [filters]);
7116
7054
 
7117
- var _temp5 = function () {
7118
- if (!!file) {
7119
- var formData = new FormData();
7120
- var name = file.name;
7121
- formData.append("file", file, name);
7122
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7123
- var _res$data3;
7124
-
7125
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.key;
7126
- data.profileImageFileName = imageUrl;
7127
- });
7128
- }
7129
- }();
7130
-
7131
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7132
- }, function (err) {
7133
- var _err$response2, _err$response2$data;
7134
-
7135
- dispatch(setAlert({
7136
- type: "danger",
7137
- 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
7138
- }));
7139
- });
7055
+ var redirectLoginUser = function redirectLoginUser(res) {
7056
+ var _res$data2 = res.data,
7057
+ token = _res$data2.token,
7058
+ id = _res$data2.id,
7059
+ firstName = _res$data2.firstName,
7060
+ lastName = _res$data2.lastName,
7061
+ roles = _res$data2.roles,
7062
+ email = _res$data2.email,
7063
+ profileImageFileName = _res$data2.profileImageFileName;
7064
+ localStorage.setItem(ACCESS_TOKEN, token);
7065
+ localStorage.removeItem(NOTIFICATION_ALERT_KEY);
7066
+ dispatch(setUser({
7067
+ id: id,
7068
+ firstName: firstName,
7069
+ lastName: lastName,
7070
+ roles: roles,
7071
+ email: email,
7072
+ profileImageFileName: profileImageFileName
7073
+ }));
7140
7074
 
7141
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7142
- } catch (e) {
7143
- return Promise.reject(e);
7075
+ if (isDistrict) {
7076
+ history.push(HOMEPAGE_DISTRICT$1);
7077
+ } else if (roles.includes("Admin")) {
7078
+ history.push(HOMEPAGE_ADMIN$1);
7079
+ } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
7080
+ history.push(HOMEPAGE_TEACHER$1);
7081
+ } else if (roles.includes("Student")) {
7082
+ history.push(HOMEPAGE_STUDENT$1);
7083
+ } else if (roles.includes("Parent")) {
7084
+ history.push(HOMEPAGE_PARENT$1);
7085
+ } else if (roles.includes("EduTeacher")) {
7086
+ history.push(HOMEPAGE_EDU_TEACHER$1);
7087
+ } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
7088
+ history.push(HOMEPAGE_TEACHER$1);
7144
7089
  }
7145
- }, [id, file]);
7146
-
7147
- var handleDisableRoles = function handleDisableRoles(currentRoles) {
7148
- return ["Student", "Parent", "EduTeacher"].includes(currentRoles);
7149
7090
  };
7150
7091
 
7151
- var confirmChangePassword = function confirmChangePassword(data) {
7092
+ var swicthUser = React.useCallback(function (id) {
7152
7093
  try {
7153
- var _temp13 = function _temp13() {
7154
- dispatch(setLoading(false));
7155
- };
7156
-
7157
- dispatch(setLoading(true));
7158
-
7159
- var _temp14 = _catch(function () {
7160
- return Promise.resolve(changePassword(data)).then(function () {
7161
- dispatch(setAlert({
7162
- type: "success",
7163
- message: "Change password successfully"
7164
- }));
7165
- });
7166
- }, function (e) {
7167
- var _e$response, _e$response$data;
7168
-
7169
- dispatch(setAlert({
7170
- type: "danger",
7171
- 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
7172
- }));
7173
- });
7094
+ var _temp6 = _catch(function () {
7095
+ return Promise.resolve(switchAccountUser(id)).then(function (res) {
7096
+ var data = res.data;
7097
+ dispatch(setModal({
7098
+ isOpen: true,
7099
+ type: "warning",
7100
+ message: "Do you want to impersonate this user?",
7101
+ onConfirm: function () {
7102
+ try {
7103
+ var _temp9 = function _temp9() {
7104
+ dispatch(setLoading(false));
7105
+ };
7174
7106
 
7175
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7176
- } catch (e) {
7177
- return Promise.reject(e);
7178
- }
7179
- };
7107
+ dispatch(setLoading(true));
7180
7108
 
7181
- var forgotPasswordRequest = React.useCallback(function (data) {
7182
- try {
7183
- var _temp17 = function _temp17() {
7184
- dispatch(setLoading(false));
7185
- };
7109
+ var _temp10 = _catch(function () {
7110
+ var req = {
7111
+ email: data.email,
7112
+ password: "default",
7113
+ accessToken: data.token
7114
+ };
7115
+ return Promise.resolve(logIn(req)).then(function (res) {
7116
+ localStorage.clear();
7117
+ redirectLoginUser(res);
7118
+ });
7119
+ }, function (err) {
7120
+ var _err$response3, _err$response3$data;
7186
7121
 
7187
- dispatch(setLoading(true));
7122
+ setAlert({
7123
+ type: "danger",
7124
+ 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
7125
+ });
7126
+ });
7188
7127
 
7189
- var _temp18 = _catch(function () {
7190
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7191
- dispatch(setAlert({
7192
- type: "success",
7193
- message: "Send forgot password link successfully"
7128
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7129
+ } catch (e) {
7130
+ return Promise.reject(e);
7131
+ }
7132
+ }
7194
7133
  }));
7195
7134
  });
7196
7135
  }, function (err) {
7197
- var _err$response3, _err$response3$data;
7136
+ var _err$response4, _err$response4$data;
7198
7137
 
7199
7138
  dispatch(setAlert({
7200
7139
  type: "danger",
7201
- 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"
7140
+ 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
7202
7141
  }));
7203
7142
  });
7204
7143
 
7205
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7144
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7206
7145
  } catch (e) {
7207
7146
  return Promise.reject(e);
7208
7147
  }
7209
- }, []);
7148
+ }, [filters]);
7149
+
7150
+ var reDirectDetailPage = function reDirectDetailPage(id) {
7151
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7152
+ history.push(url);
7153
+ };
7154
+
7210
7155
  return {
7211
- userDetail: userDetail,
7212
- backToList: backToList,
7213
- confirmData: confirmData,
7214
- file: file,
7215
- setFile: setFile,
7216
- edited: edited,
7217
- setEdited: setEdited,
7218
- setEditedTrue: setEditedTrue,
7219
- confirmChangePassword: confirmChangePassword,
7220
- forgotPasswordRequest: forgotPasswordRequest,
7221
- currentRoles: currentRoles,
7222
- handleDisableRoles: handleDisableRoles
7156
+ userList: userList,
7157
+ totalItems: totalItems,
7158
+ filters: filters,
7159
+ queryName: queryName,
7160
+ getData: getData,
7161
+ removeData: removeData,
7162
+ changeFilters: changeFilters,
7163
+ reDirectDetailPage: reDirectDetailPage,
7164
+ swicthUser: swicthUser
7223
7165
  };
7224
7166
  };
7225
7167
 
7226
- var userSchema = yup.object({
7227
- firstName: yup.string().required("First name is required"),
7228
- lastName: yup.string().required("Last name is required"),
7229
- dateOfBirth: yup.string().required("Date of birth is required"),
7230
- email: yup.string().email("Email is invalid").required("Email is required"),
7231
- roles: yup.array().of(yup.string()).min(1, "Role is required")
7232
- });
7233
-
7234
- var changePasswordSchema = yup.object({
7235
- oldPassword: yup.string().required("Current password is required"),
7236
- newPassword: yup.string().required("New password is required"),
7237
- confirmedNewPassword: yup.string().required("Confirm password is required")
7238
- });
7239
-
7240
- var CREATE_USER = "create_user";
7241
- var EDIT_USER_HEADER = "edit_user";
7242
- var CHANGE_PASSWORD$1 = "change_password";
7168
+ var SearchBox = function SearchBox(_ref) {
7169
+ var initValue = _ref.initValue,
7170
+ onSearch = _ref.onSearch,
7171
+ placeholder = _ref.placeholder,
7172
+ className = _ref.className,
7173
+ style = _ref.style;
7243
7174
 
7244
- var UserDetail = function UserDetail() {
7245
- var _useParams = reactRouterDom.useParams(),
7246
- id = _useParams.id;
7175
+ var _useState = React.useState(initValue),
7176
+ searchString = _useState[0],
7177
+ setSearchString = _useState[1];
7247
7178
 
7248
- var user = reactRedux.useSelector(function (state) {
7249
- return state.common.user;
7179
+ React.useEffect(function () {
7180
+ setSearchString(initValue);
7181
+ }, [initValue]);
7182
+ var onKeyUp = React.useCallback(function (e) {
7183
+ e.key === "Enter" && onSearch(searchString);
7184
+ }, [searchString, onSearch]);
7185
+ return React__default.createElement(reactstrap.Input, {
7186
+ placeholder: placeholder,
7187
+ value: searchString,
7188
+ onChange: function onChange(e) {
7189
+ return setSearchString(e.target.value);
7190
+ },
7191
+ onKeyUp: onKeyUp,
7192
+ className: className,
7193
+ style: style
7250
7194
  });
7195
+ };
7251
7196
 
7252
- var _useTranslation = reactI18next.useTranslation(),
7253
- t = _useTranslation.t;
7254
-
7255
- var _useUserDetail = useUserDetail(id),
7256
- userDetail = _useUserDetail.userDetail,
7257
- backToList = _useUserDetail.backToList,
7258
- confirmData = _useUserDetail.confirmData,
7259
- file = _useUserDetail.file,
7260
- setFile = _useUserDetail.setFile,
7261
- edited = _useUserDetail.edited,
7262
- setEdited = _useUserDetail.setEdited,
7263
- setEditedTrue = _useUserDetail.setEditedTrue,
7264
- confirmChangePassword = _useUserDetail.confirmChangePassword,
7265
- forgotPasswordRequest = _useUserDetail.forgotPasswordRequest,
7266
- currentRoles = _useUserDetail.currentRoles,
7267
- handleDisableRoles = _useUserDetail.handleDisableRoles;
7268
-
7269
- var initialValueForm = {
7270
- oldPassword: "",
7271
- newPassword: "",
7272
- confirmedNewPassword: ""
7273
- };
7274
- var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7275
- var confirmText = !!id ? t("update") : t("create");
7197
+ SearchBox.defaultProps = {
7198
+ placeholder: "Type something to search",
7199
+ className: "",
7200
+ style: {}
7201
+ };
7202
+ var SearchBox$1 = React.memo(SearchBox);
7276
7203
 
7277
- var getFile = function getFile() {
7278
- var url = window.location.origin + "/api/ExportDataUser/" + id;
7279
- window.open(url);
7280
- };
7204
+ var searchInputStyle = {
7205
+ height: 38
7206
+ };
7281
7207
 
7282
- var onResetPw = function onResetPw(email) {
7283
- try {
7208
+ var SearchBoxContainer = function SearchBoxContainer(_ref) {
7209
+ var text = _ref.text,
7210
+ initValue = _ref.initValue,
7211
+ onClick = _ref.onClick,
7212
+ onSearch = _ref.onSearch,
7213
+ placeholder = _ref.placeholder;
7214
+ return React__default.createElement("div", {
7215
+ className: "d-flex align-items-center"
7216
+ }, React__default.createElement("div", null, React__default.createElement(AddButton, {
7217
+ text: text,
7218
+ onClick: onClick
7219
+ })), React__default.createElement("div", {
7220
+ className: "flex-grow-1 ml-2"
7221
+ }, React__default.createElement(SearchBox$1, {
7222
+ initValue: initValue,
7223
+ onSearch: onSearch,
7224
+ placeholder: placeholder,
7225
+ style: searchInputStyle
7226
+ })));
7227
+ };
7228
+
7229
+ SearchBoxContainer.defaultProps = {
7230
+ placeholder: "Type something to search"
7231
+ };
7232
+
7233
+ var utcToLocalTime = (function (time, FORMAT) {
7234
+ if (time === DATE_MIN_VALUE) return "";
7235
+
7236
+ try {
7237
+ return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7238
+ } catch (_unused) {
7239
+ return "";
7240
+ }
7241
+ });
7242
+
7243
+ var header$2 = "User";
7244
+
7245
+ var UserList = function UserList() {
7246
+ var _useUserList = useUserList(),
7247
+ queryName = _useUserList.queryName,
7248
+ userList = _useUserList.userList,
7249
+ totalItems = _useUserList.totalItems,
7250
+ filters = _useUserList.filters,
7251
+ removeData = _useUserList.removeData,
7252
+ changeFilters = _useUserList.changeFilters,
7253
+ reDirectDetailPage = _useUserList.reDirectDetailPage,
7254
+ swicthUser = _useUserList.swicthUser;
7255
+
7256
+ var _useTranslation = reactI18next.useTranslation(),
7257
+ t = _useTranslation.t;
7258
+
7259
+ return React__default.createElement("div", {
7260
+ className: "fadeIn animated"
7261
+ }, React__default.createElement("h5", {
7262
+ className: "mb-2"
7263
+ }, t("" + header$2)), React__default.createElement(reactstrap.Row, {
7264
+ className: "my-2"
7265
+ }, React__default.createElement(reactstrap.Col, {
7266
+ md: 8
7267
+ }, React__default.createElement(SearchBoxContainer, {
7268
+ text: t("create_user"),
7269
+ onClick: function onClick() {
7270
+ return reDirectDetailPage();
7271
+ },
7272
+ initValue: !!queryName ? queryName : "",
7273
+ onSearch: function onSearch(searchString) {
7274
+ return changeFilters({
7275
+ searchString: searchString
7276
+ });
7277
+ },
7278
+ placeholder: t("type_something_to_search_by_user_name")
7279
+ })), React__default.createElement(reactstrap.Col, {
7280
+ md: 4,
7281
+ className: "d-flex justify-content-end align-items-center"
7282
+ }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
7283
+ className: "mb-2"
7284
+ }, React__default.createElement(reactstrap.Col, {
7285
+ md: 12
7286
+ }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
7287
+ bordered: true,
7288
+ hover: true,
7289
+ striped: true,
7290
+ responsive: true,
7291
+ size: "sm"
7292
+ }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
7293
+ className: "align-top"
7294
+ }, t("name")), React__default.createElement("th", {
7295
+ className: "align-top"
7296
+ }, t("email")), React__default.createElement("th", {
7297
+ className: "align-top"
7298
+ }, t("age")), React__default.createElement("th", {
7299
+ className: "align-top"
7300
+ }, t("role")), React__default.createElement("th", {
7301
+ className: "align-top"
7302
+ }, t("active_status")), React__default.createElement("th", {
7303
+ className: "align-top"
7304
+ }, t("created_time")), React__default.createElement("th", {
7305
+ className: "text-center"
7306
+ }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
7307
+ return React__default.createElement("tr", {
7308
+ key: record.id
7309
+ }, React__default.createElement("td", {
7310
+ className: "align-middle"
7311
+ }, React__default.createElement(LinkEditButton, {
7312
+ label: "" + record.fullName,
7313
+ onClick: function onClick() {
7314
+ return reDirectDetailPage(record.id);
7315
+ }
7316
+ })), React__default.createElement("td", {
7317
+ className: "align-middle"
7318
+ }, record.email), React__default.createElement("td", {
7319
+ className: "align-middle"
7320
+ }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
7321
+ className: "align-middle"
7322
+ }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
7323
+ className: "align-middle"
7324
+ }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
7325
+ className: "align-middle"
7326
+ }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
7327
+ className: "text-center align-middle"
7328
+ }, React__default.createElement(fa.FaUsersCog, {
7329
+ style: {
7330
+ fontSize: "18px",
7331
+ marginRight: "10px",
7332
+ cursor: "pointer"
7333
+ },
7334
+ onClick: function onClick() {
7335
+ return swicthUser(record.id);
7336
+ }
7337
+ }), React__default.createElement(DeleteButtonIcon, {
7338
+ onClick: function onClick() {
7339
+ return removeData(record.id);
7340
+ }
7341
+ })));
7342
+ })))) : React__default.createElement(EmptyDataAlert, {
7343
+ label: t("user")
7344
+ })), React__default.createElement(reactstrap.Col, {
7345
+ md: 12
7346
+ }, React__default.createElement(CustomPagination, {
7347
+ filters: filters,
7348
+ totalRecordCount: totalItems,
7349
+ changePageSize: function changePageSize(pageSize) {
7350
+ return changeFilters({
7351
+ pageSize: pageSize
7352
+ });
7353
+ },
7354
+ changePage: function changePage(currentPage) {
7355
+ return changeFilters({
7356
+ currentPage: currentPage
7357
+ });
7358
+ }
7359
+ }))));
7360
+ };
7361
+
7362
+ var MAX_FILE_SIZE = 20097152;
7363
+
7364
+ var UploadFileButton = function UploadFileButton(_ref) {
7365
+ var fileName = _ref.fileName,
7366
+ maxWidth = _ref.maxWidth,
7367
+ maxHeight = _ref.maxHeight,
7368
+ setFile = _ref.setFile,
7369
+ canDelete = _ref.canDelete,
7370
+ onDelete = _ref.onDelete,
7371
+ isCheckFeedBack = _ref.isCheckFeedBack,
7372
+ onAddImage = _ref.onAddImage;
7373
+ var dispatch = reactRedux.useDispatch();
7374
+
7375
+ var _useState = React.useState(""),
7376
+ imagePreviewUrl = _useState[0],
7377
+ setImagePreviewUrl = _useState[1];
7378
+
7379
+ var imageStyle = {
7380
+ maxWidth: maxWidth || "100%",
7381
+ maxHeight: maxHeight || "100%"
7382
+ };
7383
+ var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7384
+
7385
+ var handleImageChange = function handleImageChange(e) {
7386
+ e.preventDefault();
7387
+ var reader = new FileReader();
7388
+ var newFile = e.target.files[0];
7389
+
7390
+ if (newFile.size > MAX_FILE_SIZE) {
7391
+ dispatch(setAlert({
7392
+ type: "danger",
7393
+ message: "File can't be larger than 2MB"
7394
+ }));
7395
+ return;
7396
+ }
7397
+
7398
+ reader.onloadend = function () {
7399
+ setFile(newFile);
7400
+ setImagePreviewUrl(reader.result);
7401
+ };
7402
+
7403
+ if (newFile) {
7404
+ reader.readAsDataURL(newFile);
7405
+ }
7406
+
7407
+ !!onAddImage && onAddImage();
7408
+ };
7409
+
7410
+ var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
7411
+ style: imageStyle,
7412
+ src: imageSrc,
7413
+ alt: "image"
7414
+ }) : null;
7415
+ return React__default.createElement("div", {
7416
+ className: "mb-2"
7417
+ }, React__default.createElement(reactstrap.Form, {
7418
+ className: "mb-2"
7419
+ }, React__default.createElement(reactstrap.Input, {
7420
+ className: "d-none",
7421
+ type: "file",
7422
+ id: "uploadFile",
7423
+ onChange: handleImageChange,
7424
+ accept: "image/*"
7425
+ }), React__default.createElement("div", {
7426
+ className: "d-flex align-items-center"
7427
+ }, React__default.createElement(reactstrap.Label, {
7428
+ htmlFor: "uploadFile",
7429
+ role: "button",
7430
+ tabIndex: 0,
7431
+ className: styles["input-file-label"]
7432
+ }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
7433
+ className: "fa fa-paperclip mr-1",
7434
+ "aria-hidden": "true"
7435
+ }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
7436
+ size: "sm",
7437
+ color: "danger",
7438
+ className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7439
+ onClick: function onClick() {
7440
+ setImagePreviewUrl(null);
7441
+ onDelete && onDelete();
7442
+ }
7443
+ }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
7444
+ };
7445
+
7446
+ var initValue$3 = {
7447
+ id: "",
7448
+ firstName: "",
7449
+ lastName: "",
7450
+ email: "",
7451
+ dateOfBirth: "",
7452
+ roles: [],
7453
+ isActive: true,
7454
+ profileImageFileName: ""
7455
+ };
7456
+ var USER_LIST_URL = "/admin/user";
7457
+ var TITLE$8 = "User detail";
7458
+
7459
+ var useUserDetail = function useUserDetail(id) {
7460
+ var dispatch = reactRedux.useDispatch();
7461
+ var history = reactRouterDom.useHistory();
7462
+
7463
+ var _useState = React.useState(initValue$3),
7464
+ userDetail = _useState[0],
7465
+ setUserDetail = _useState[1];
7466
+
7467
+ var _useState2 = React.useState(null),
7468
+ file = _useState2[0],
7469
+ setFile = _useState2[1];
7470
+
7471
+ var _useState3 = React.useState(false),
7472
+ edited = _useState3[0],
7473
+ setEdited = _useState3[1];
7474
+
7475
+ var setEditedTrue = function setEditedTrue() {
7476
+ try {
7477
+ localStorage.setItem(window.location.href, "true");
7478
+ setEdited(true);
7479
+ return Promise.resolve();
7480
+ } catch (e) {
7481
+ return Promise.reject(e);
7482
+ }
7483
+ };
7484
+
7485
+ var _useState4 = React.useState([]),
7486
+ currentRoles = _useState4[0],
7487
+ setCurrentRoles = _useState4[1];
7488
+
7489
+ React.useEffect(function () {
7490
+ document.title = TITLE$8;
7491
+ setEdited(false);
7492
+ if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7493
+ }, []);
7494
+ React.useEffect(function () {
7495
+ !!id && getData();
7496
+ }, [id]);
7497
+ var getData = React.useCallback(function () {
7498
+ try {
7499
+ var _temp3 = function _temp3() {
7500
+ dispatch(setLoading(false));
7501
+ };
7502
+
7503
+ dispatch(setLoading(true));
7504
+
7505
+ var _temp4 = _catch(function () {
7506
+ return Promise.resolve(getById$3(id)).then(function (res) {
7507
+ var _res$data$roles, _res$data, _res$data2;
7508
+
7509
+ setUserDetail(_extends({}, res.data, {
7510
+ dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7511
+ roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7512
+ }));
7513
+ setCurrentRoles((_res$data$roles = res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.roles) != null ? _res$data$roles : []);
7514
+ document.title = (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.fullName;
7515
+ });
7516
+ }, function (err) {
7517
+ var _err$response, _err$response$data;
7518
+
7519
+ dispatch(setAlert({
7520
+ type: "danger",
7521
+ 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
7522
+ }));
7523
+ });
7524
+
7525
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7526
+ } catch (e) {
7527
+ return Promise.reject(e);
7528
+ }
7529
+ }, [id]);
7530
+ var backToList = React.useCallback(function (user) {
7531
+ !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7532
+ }, []);
7533
+ var confirmData = React.useCallback(function (data) {
7534
+ try {
7535
+ var _temp9 = function _temp9() {
7536
+ dispatch(setLoading(false));
7537
+ };
7538
+
7539
+ dispatch(setLoading(true));
7540
+
7541
+ var _temp10 = _catch(function () {
7542
+ function _temp6() {
7543
+ var next = !!id ? update$5 : create$5;
7544
+ !id && delete data.id;
7545
+ return Promise.resolve(next(data)).then(function (result) {
7546
+ if (!!result) {
7547
+ getById$3(result.data.id).then(function (e) {
7548
+ backToList(e.data.fullName);
7549
+ });
7550
+ }
7551
+
7552
+ if (!id) {
7553
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7554
+ }
7555
+
7556
+ dispatch(setAlert({
7557
+ type: "success",
7558
+ message: (!!id ? "Update" : "Create") + " user successfully"
7559
+ }));
7560
+ });
7561
+ }
7562
+
7563
+ var _temp5 = function () {
7564
+ if (!!file) {
7565
+ var formData = new FormData();
7566
+ var name = file.name;
7567
+ formData.append("file", file, name);
7568
+ return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7569
+ var _res$data3;
7570
+
7571
+ var imageUrl = res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.key;
7572
+ data.profileImageFileName = imageUrl;
7573
+ });
7574
+ }
7575
+ }();
7576
+
7577
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7578
+ }, function (err) {
7579
+ var _err$response2, _err$response2$data;
7580
+
7581
+ dispatch(setAlert({
7582
+ type: "danger",
7583
+ 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
7584
+ }));
7585
+ });
7586
+
7587
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7588
+ } catch (e) {
7589
+ return Promise.reject(e);
7590
+ }
7591
+ }, [id, file]);
7592
+
7593
+ var handleDisableRoles = function handleDisableRoles(currentRoles) {
7594
+ return ["Student", "Parent", "EduTeacher"].includes(currentRoles);
7595
+ };
7596
+
7597
+ var confirmChangePassword = function confirmChangePassword(data) {
7598
+ try {
7599
+ var _temp13 = function _temp13() {
7600
+ dispatch(setLoading(false));
7601
+ };
7602
+
7603
+ dispatch(setLoading(true));
7604
+
7605
+ var _temp14 = _catch(function () {
7606
+ return Promise.resolve(changePassword(data)).then(function () {
7607
+ dispatch(setAlert({
7608
+ type: "success",
7609
+ message: "Change password successfully"
7610
+ }));
7611
+ });
7612
+ }, function (e) {
7613
+ var _e$response, _e$response$data;
7614
+
7615
+ dispatch(setAlert({
7616
+ type: "danger",
7617
+ 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
7618
+ }));
7619
+ });
7620
+
7621
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7622
+ } catch (e) {
7623
+ return Promise.reject(e);
7624
+ }
7625
+ };
7626
+
7627
+ var forgotPasswordRequest = React.useCallback(function (data) {
7628
+ try {
7629
+ var _temp17 = function _temp17() {
7630
+ dispatch(setLoading(false));
7631
+ };
7632
+
7633
+ dispatch(setLoading(true));
7634
+
7635
+ var _temp18 = _catch(function () {
7636
+ return Promise.resolve(forgotChangePassword(data)).then(function () {
7637
+ dispatch(setAlert({
7638
+ type: "success",
7639
+ message: "Send forgot password link successfully"
7640
+ }));
7641
+ });
7642
+ }, function (err) {
7643
+ var _err$response3, _err$response3$data;
7644
+
7645
+ dispatch(setAlert({
7646
+ type: "danger",
7647
+ 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"
7648
+ }));
7649
+ });
7650
+
7651
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7652
+ } catch (e) {
7653
+ return Promise.reject(e);
7654
+ }
7655
+ }, []);
7656
+ return {
7657
+ userDetail: userDetail,
7658
+ backToList: backToList,
7659
+ confirmData: confirmData,
7660
+ file: file,
7661
+ setFile: setFile,
7662
+ edited: edited,
7663
+ setEdited: setEdited,
7664
+ setEditedTrue: setEditedTrue,
7665
+ confirmChangePassword: confirmChangePassword,
7666
+ forgotPasswordRequest: forgotPasswordRequest,
7667
+ currentRoles: currentRoles,
7668
+ handleDisableRoles: handleDisableRoles
7669
+ };
7670
+ };
7671
+
7672
+ var userSchema = yup.object({
7673
+ firstName: yup.string().required("First name is required"),
7674
+ lastName: yup.string().required("Last name is required"),
7675
+ dateOfBirth: yup.string().required("Date of birth is required"),
7676
+ email: yup.string().email("Email is invalid").required("Email is required"),
7677
+ roles: yup.array().of(yup.string()).min(1, "Role is required")
7678
+ });
7679
+
7680
+ var changePasswordSchema = yup.object({
7681
+ oldPassword: yup.string().required("Current password is required"),
7682
+ newPassword: yup.string().required("New password is required"),
7683
+ confirmedNewPassword: yup.string().required("Confirm password is required")
7684
+ });
7685
+
7686
+ var CREATE_USER = "create_user";
7687
+ var EDIT_USER_HEADER = "edit_user";
7688
+ var CHANGE_PASSWORD$1 = "change_password";
7689
+
7690
+ var UserDetail = function UserDetail() {
7691
+ var _useParams = reactRouterDom.useParams(),
7692
+ id = _useParams.id;
7693
+
7694
+ var user = reactRedux.useSelector(function (state) {
7695
+ return state.common.user;
7696
+ });
7697
+
7698
+ var _useTranslation = reactI18next.useTranslation(),
7699
+ t = _useTranslation.t;
7700
+
7701
+ var _useUserDetail = useUserDetail(id),
7702
+ userDetail = _useUserDetail.userDetail,
7703
+ backToList = _useUserDetail.backToList,
7704
+ confirmData = _useUserDetail.confirmData,
7705
+ file = _useUserDetail.file,
7706
+ setFile = _useUserDetail.setFile,
7707
+ edited = _useUserDetail.edited,
7708
+ setEdited = _useUserDetail.setEdited,
7709
+ setEditedTrue = _useUserDetail.setEditedTrue,
7710
+ confirmChangePassword = _useUserDetail.confirmChangePassword,
7711
+ forgotPasswordRequest = _useUserDetail.forgotPasswordRequest,
7712
+ currentRoles = _useUserDetail.currentRoles,
7713
+ handleDisableRoles = _useUserDetail.handleDisableRoles;
7714
+
7715
+ var initialValueForm = {
7716
+ oldPassword: "",
7717
+ newPassword: "",
7718
+ confirmedNewPassword: ""
7719
+ };
7720
+ var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
7721
+ var confirmText = !!id ? t("update") : t("create");
7722
+
7723
+ var getFile = function getFile() {
7724
+ var url = window.location.origin + "/api/ExportDataUser/" + id;
7725
+ window.open(url);
7726
+ };
7727
+
7728
+ var onResetPw = function onResetPw(email) {
7729
+ try {
7284
7730
  var data = {
7285
7731
  email: email
7286
7732
  };
@@ -7682,16 +8128,6 @@ var CommonHeader = function CommonHeader(_ref) {
7682
8128
  }, header))));
7683
8129
  };
7684
8130
 
7685
- var utcToLocalTime = (function (time, FORMAT) {
7686
- if (time === DATE_MIN_VALUE) return "";
7687
-
7688
- try {
7689
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7690
- } catch (_unused) {
7691
- return "";
7692
- }
7693
- });
7694
-
7695
8131
  var NotificationLogoutModal = function NotificationLogoutModal() {
7696
8132
  var _useState = React.useState(false),
7697
8133
  isOpen = _useState[0],
@@ -7788,42 +8224,6 @@ var CreatableSelector = function CreatableSelector(props) {
7788
8224
  });
7789
8225
  };
7790
8226
 
7791
- var SearchBox = function SearchBox(_ref) {
7792
- var initValue = _ref.initValue,
7793
- onSearch = _ref.onSearch,
7794
- placeholder = _ref.placeholder,
7795
- className = _ref.className,
7796
- style = _ref.style;
7797
-
7798
- var _useState = React.useState(initValue),
7799
- searchString = _useState[0],
7800
- setSearchString = _useState[1];
7801
-
7802
- React.useEffect(function () {
7803
- setSearchString(initValue);
7804
- }, [initValue]);
7805
- var onKeyUp = React.useCallback(function (e) {
7806
- e.key === "Enter" && onSearch(searchString);
7807
- }, [searchString, onSearch]);
7808
- return React__default.createElement(reactstrap.Input, {
7809
- placeholder: placeholder,
7810
- value: searchString,
7811
- onChange: function onChange(e) {
7812
- return setSearchString(e.target.value);
7813
- },
7814
- onKeyUp: onKeyUp,
7815
- className: className,
7816
- style: style
7817
- });
7818
- };
7819
-
7820
- SearchBox.defaultProps = {
7821
- placeholder: "Type something to search",
7822
- className: "",
7823
- style: {}
7824
- };
7825
- var SearchBox$1 = React.memo(SearchBox);
7826
-
7827
8227
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
7828
8228
  var id = props.id;
7829
8229
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8185,7 +8585,7 @@ var defaultFilters = {
8185
8585
  searchString: "",
8186
8586
  isRead: false
8187
8587
  };
8188
- var TITLE$8 = "Notification list";
8588
+ var TITLE$9 = "Notification list";
8189
8589
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8190
8590
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8191
8591
 
@@ -8315,7 +8715,7 @@ var useNotificationList = function useNotificationList() {
8315
8715
  }
8316
8716
  }, [filters]);
8317
8717
  React.useEffect(function () {
8318
- document.title = TITLE$8;
8718
+ document.title = TITLE$9;
8319
8719
  }, []);
8320
8720
  React.useEffect(function () {
8321
8721
  getData();
@@ -8400,7 +8800,7 @@ var useNotificationList = function useNotificationList() {
8400
8800
  };
8401
8801
  };
8402
8802
 
8403
- var header$2 = "Notification list";
8803
+ var header$3 = "Notification list";
8404
8804
  var ICON_SIZE = 20;
8405
8805
 
8406
8806
  var NotificationList = function NotificationList() {
@@ -8421,7 +8821,7 @@ var NotificationList = function NotificationList() {
8421
8821
  }
8422
8822
  }, React__default.createElement("h5", {
8423
8823
  className: "mb-2"
8424
- }, header$2), React__default.createElement(reactstrap.Row, {
8824
+ }, header$3), React__default.createElement(reactstrap.Row, {
8425
8825
  className: "my-2"
8426
8826
  }, React__default.createElement(reactstrap.Col, {
8427
8827
  md: 8
@@ -8511,43 +8911,14 @@ var NotificationList = function NotificationList() {
8511
8911
  changePageSize: function changePageSize(pageSize) {
8512
8912
  return changeFilters({
8513
8913
  pageSize: pageSize
8514
- });
8515
- },
8516
- changePage: function changePage(currentPage) {
8517
- return changeFilters({
8518
- currentPage: currentPage
8519
- });
8520
- }
8521
- }))));
8522
- };
8523
-
8524
- var searchInputStyle = {
8525
- height: 38
8526
- };
8527
-
8528
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
8529
- var text = _ref.text,
8530
- initValue = _ref.initValue,
8531
- onClick = _ref.onClick,
8532
- onSearch = _ref.onSearch,
8533
- placeholder = _ref.placeholder;
8534
- return React__default.createElement("div", {
8535
- className: "d-flex align-items-center"
8536
- }, React__default.createElement("div", null, React__default.createElement(AddButton, {
8537
- text: text,
8538
- onClick: onClick
8539
- })), React__default.createElement("div", {
8540
- className: "flex-grow-1 ml-2"
8541
- }, React__default.createElement(SearchBox$1, {
8542
- initValue: initValue,
8543
- onSearch: onSearch,
8544
- placeholder: placeholder,
8545
- style: searchInputStyle
8546
- })));
8547
- };
8548
-
8549
- SearchBoxContainer.defaultProps = {
8550
- placeholder: "Type something to search"
8914
+ });
8915
+ },
8916
+ changePage: function changePage(currentPage) {
8917
+ return changeFilters({
8918
+ currentPage: currentPage
8919
+ });
8920
+ }
8921
+ }))));
8551
8922
  };
8552
8923
 
8553
8924
  var CustomTabs = function CustomTabs(props) {
@@ -8954,7 +9325,7 @@ var get$8 = function get(filter) {
8954
9325
  });
8955
9326
  };
8956
9327
 
8957
- var TITLE$9 = "Gallery";
9328
+ var TITLE$a = "Gallery";
8958
9329
  var defaultFilter = {
8959
9330
  searchString: ""
8960
9331
  };
@@ -9191,7 +9562,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9191
9562
  }
9192
9563
  }, [dispatch, filters]);
9193
9564
  React.useEffect(function () {
9194
- document.title = TITLE$9;
9565
+ document.title = TITLE$a;
9195
9566
  dispatch(setTargetMedia({
9196
9567
  targetMedia: undefined
9197
9568
  }));
@@ -9383,7 +9754,7 @@ var MediaDetail = function MediaDetail(_ref) {
9383
9754
 
9384
9755
  var MediaDetail$1 = React__default.memo(MediaDetail);
9385
9756
 
9386
- var header$3 = "Gallery";
9757
+ var header$4 = "Gallery";
9387
9758
 
9388
9759
  var GalleryList = function GalleryList(_ref) {
9389
9760
  var isLibrary = _ref.isLibrary;
@@ -9394,7 +9765,7 @@ var GalleryList = function GalleryList(_ref) {
9394
9765
  className: "fadeIn animated"
9395
9766
  }, !isLibrary && React__default.createElement("h5", {
9396
9767
  className: "mb-2"
9397
- }, header$3), React__default.createElement(reactstrap.Row, {
9768
+ }, header$4), React__default.createElement(reactstrap.Row, {
9398
9769
  className: "mb-2"
9399
9770
  }, React__default.createElement(reactstrap.Col, {
9400
9771
  md: 8
@@ -9984,9 +10355,6 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
9984
10355
  });
9985
10356
  });
9986
10357
 
9987
- var setUserList = toolkit.createAction("users/setUserList");
9988
- var setStudentList = toolkit.createAction("users/setStudentList");
9989
-
9990
10358
  var initialState$f = {
9991
10359
  userList: [],
9992
10360
  totalItems: 0,
@@ -10460,591 +10828,239 @@ var sessionPlayerReducer = toolkit.createReducer(initialState$u, function (build
10460
10828
  questionId: questionId,
10461
10829
  text: text
10462
10830
  });
10463
- } else {
10464
- existedResponse.text = text;
10465
- }
10466
-
10467
- return _extends({}, state, {
10468
- results: state.results.map(function (result) {
10469
- return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10470
- })
10471
- });
10472
- }).addCase(setStartTime, function (state, action) {
10473
- var startTime = action.payload;
10474
- if (!startTime) return state;
10475
- state.startTime = startTime;
10476
- }).addCase(reset, function (_state, _action) {
10477
- return initialState$u;
10478
- });
10479
- });
10480
-
10481
- var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10482
- var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10483
-
10484
- var initialState$v = {
10485
- id: 0,
10486
- questions: [{
10487
- id: 0,
10488
- text: "",
10489
- type: "",
10490
- subQuestions: [],
10491
- answers: []
10492
- }],
10493
- questionResponse: []
10494
- };
10495
- var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10496
- builder.addCase(setDataPlayer, function (_state, action) {
10497
- return action.payload;
10498
- }).addCase(answerQuestionDataPlayer, function (state, action) {
10499
- var _action$payload = action.payload,
10500
- questionId = _action$payload.questionId,
10501
- text = _action$payload.text;
10502
- var questionResponse = state.questionResponse;
10503
- if (!questionResponse) return state;
10504
- var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10505
- var existedResponse = questionResponseCloner.find(function (response) {
10506
- return response.questionId === questionId;
10507
- });
10508
-
10509
- if (!existedResponse) {
10510
- questionResponseCloner.push({
10511
- questionId: questionId,
10512
- text: text
10513
- });
10514
- } else {
10515
- existedResponse.text = text;
10516
- }
10517
-
10518
- return _extends({}, state, {
10519
- questionResponse: questionResponseCloner
10520
- });
10521
- }).addCase(reset, function (_state, _action) {
10522
- return initialState$v;
10523
- });
10524
- });
10525
-
10526
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10527
-
10528
- var initialState$w = {
10529
- certificateList: [],
10530
- totalItems: 0
10531
- };
10532
- var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10533
- builder.addCase(setCertificateList, function (state, action) {
10534
- state.certificateList = action.payload.certificateList;
10535
- state.totalItems = action.payload.totalItems;
10536
- }).addCase(reset, function (_state, _action) {
10537
- return initialState$w;
10538
- });
10539
- });
10540
-
10541
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10542
-
10543
- var initialState$x = {
10544
- improveMyClassList: []
10545
- };
10546
- var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10547
- builder.addCase(setImproveMyClass, function (state, action) {
10548
- state.improveMyClassList = action.payload;
10549
- }).addCase(reset, function (_state, _action) {
10550
- return initialState$x;
10551
- });
10552
- });
10553
-
10554
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10555
-
10556
- var initialState$y = {
10557
- filterWidget: "Year"
10558
- };
10559
- var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10560
- builder.addCase(setFilterWidget, function (state, action) {
10561
- state.filterWidget = action.payload.filterWidget;
10562
- }).addCase(reset, function (_state, _action) {
10563
- return initialState$y;
10564
- });
10565
- });
10566
-
10567
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10568
-
10569
- var initialState$z = {
10570
- bandScoreList: [],
10571
- totalItems: 0
10572
- };
10573
- var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10574
- builder.addCase(setBandScoreList, function (state, action) {
10575
- state.bandScoreList = action.payload.bandScoreList;
10576
- state.totalItems = action.payload.totalItems;
10577
- }).addCase(reset, function (_state, _action) {
10578
- return initialState$z;
10579
- });
10580
- });
10581
-
10582
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10583
-
10584
- var initialState$A = {
10585
- schoolBlankDayList: [],
10586
- totalItems: 0
10587
- };
10588
- var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10589
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10590
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10591
- state.totalItems = action.payload.totalItems;
10592
- }).addCase(reset, function (_state, _action) {
10593
- return initialState$A;
10594
- });
10595
- });
10596
-
10597
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10598
-
10599
- var initialState$B = {
10600
- studentIdSelectedByTeacher: 0
10601
- };
10602
- var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10603
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10604
- state.studentIdSelectedByTeacher = action.payload;
10605
- }).addCase(reset, function (_state, _action) {
10606
- return initialState$B;
10607
- });
10608
- });
10609
-
10610
- var rootReducer = combineReducers({
10611
- common: commonReducer,
10612
- classes: classReducer,
10613
- conferenceRubrics: conferenceRubricReducer,
10614
- faqs: commonReducer$1,
10615
- skills: commonReducer$2,
10616
- emailTemplate: emailTemplateReducer,
10617
- suggestionBank: suggestionBankReducer,
10618
- learningStrategy: learningStrategyReducer,
10619
- subjects: commonReducer$3,
10620
- learningSupportCategories: commonReducer$4,
10621
- questionBank: questionBankReducer,
10622
- badges: commonReducer$5,
10623
- semester: commonReducer$6,
10624
- goalExamples: commonReducer$8,
10625
- users: commonReducer$9,
10626
- reflections: reflectionReducer,
10627
- reflectionResults: reflectionReducer$1,
10628
- feedbacks: commonReducer$a,
10629
- assessments: commonReducer$b,
10630
- questionByCategory: questionCategoryReducer,
10631
- mailCategory: questionBankReducer$1,
10632
- questionCate: questionCateReducer,
10633
- notification: questionBankReducer$2,
10634
- myStudent: commonReducer$c,
10635
- assignments: commonReducer$7,
10636
- assistants: assistantReducer,
10637
- sesstionTemplates: sessionTemplateReducer,
10638
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10639
- tutorialScreens: tutorialScreenReducer,
10640
- customAlerts: commonReducer$d,
10641
- gallery: commonReducer$e,
10642
- dashboard: dashboardReducer,
10643
- sessionPlayer: sessionPlayerReducer,
10644
- dataPlayer: dataPlayer,
10645
- certificate: commonReducer$f,
10646
- improveMyClass: commonReducer$g,
10647
- widget: widgetReducer,
10648
- bandScores: commonReducer$h,
10649
- schoolBlankDays: commonReducer$i,
10650
- navMobileReducer: navMobileReducer
10651
- });
10652
-
10653
- var store = toolkit.configureStore({
10654
- reducer: rootReducer,
10655
- middleware: function middleware(getDefaultMiddleware) {
10656
- return getDefaultMiddleware({
10657
- serializableCheck: false
10658
- }).concat(logger);
10659
- }
10660
- });
10661
-
10662
- var isInViewport = function isInViewport(el) {
10663
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
10664
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
10665
- };
10666
-
10667
- var debounce = function debounce(callback, wait) {
10668
- var timeout = null;
10669
- return function () {
10670
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
10671
- args[_key] = arguments[_key];
10672
- }
10673
-
10674
- var next = function next() {
10675
- return callback.apply(void 0, args);
10676
- };
10677
-
10678
- clearTimeout(timeout);
10679
- timeout = setTimeout(next, wait);
10680
- };
10681
- };
10682
-
10683
- var getTextFromHTML = function getTextFromHTML(htmlString) {
10684
- var p = document.createElement("p");
10685
- p.innerHTML = htmlString;
10686
- var text = p.innerText;
10687
- p.remove();
10688
- return text;
10689
- };
10690
-
10691
- var generateRandomString = (function () {
10692
- return (Math.random() + 1).toString(36).substring(7);
10693
- });
10694
-
10695
- var amplitudeClient = amplitude.getInstance();
10696
-
10697
- var USER_URL$2 = "/admin/user";
10698
- var CREATE_USER_URL = "/admin/create-user";
10699
- var TITLE$a = "User list";
10700
- var HOMEPAGE_TEACHER$1 = "/home";
10701
- var HOMEPAGE_STUDENT$1 = "/home";
10702
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
10703
- var HOMEPAGE_PARENT$1 = "/parent";
10704
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
10705
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
10831
+ } else {
10832
+ existedResponse.text = text;
10833
+ }
10706
10834
 
10707
- var useUserList = function useUserList() {
10708
- var history = reactRouterDom.useHistory();
10709
- var query = new URLSearchParams(location.search);
10710
- var queryName = query.get("query");
10711
- var userList = reactRedux.useSelector(function (state) {
10712
- return state.users.userList;
10713
- });
10714
- var totalItems = reactRedux.useSelector(function (state) {
10715
- return state.users.totalItems;
10835
+ return _extends({}, state, {
10836
+ results: state.results.map(function (result) {
10837
+ return result.isTeacherResult === isTeacherResult ? resultCloner : result;
10838
+ })
10839
+ });
10840
+ }).addCase(setStartTime, function (state, action) {
10841
+ var startTime = action.payload;
10842
+ if (!startTime) return state;
10843
+ state.startTime = startTime;
10844
+ }).addCase(reset, function (_state, _action) {
10845
+ return initialState$u;
10716
10846
  });
10847
+ });
10717
10848
 
10718
- var _useFilters = useFilters(),
10719
- filters = _useFilters.filters,
10720
- changeFilters = _useFilters.changeFilters;
10721
-
10722
- var _useState = React.useState(!!queryName ? queryName : ""),
10723
- fullName = _useState[0],
10724
- setFullName = _useState[1];
10849
+ var setDataPlayer = toolkit.createAction("dataPlayer/setDataPlayer");
10850
+ var answerQuestionDataPlayer = toolkit.createAction("dataPlayer/answerQuestionDataPlayer");
10725
10851
 
10726
- var isDistrict = window.location.host.includes("-district");
10727
- var dispatch = reactRedux.useDispatch();
10728
- var getData = React.useCallback(function (fullName) {
10729
- try {
10730
- var _temp3 = function _temp3() {
10731
- dispatch(setLoading(false));
10732
- };
10852
+ var initialState$v = {
10853
+ id: 0,
10854
+ questions: [{
10855
+ id: 0,
10856
+ text: "",
10857
+ type: "",
10858
+ subQuestions: [],
10859
+ answers: []
10860
+ }],
10861
+ questionResponse: []
10862
+ };
10863
+ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10864
+ builder.addCase(setDataPlayer, function (_state, action) {
10865
+ return action.payload;
10866
+ }).addCase(answerQuestionDataPlayer, function (state, action) {
10867
+ var _action$payload = action.payload,
10868
+ questionId = _action$payload.questionId,
10869
+ text = _action$payload.text;
10870
+ var questionResponse = state.questionResponse;
10871
+ if (!questionResponse) return state;
10872
+ var questionResponseCloner = JSON.parse(JSON.stringify(questionResponse));
10873
+ var existedResponse = questionResponseCloner.find(function (response) {
10874
+ return response.questionId === questionId;
10875
+ });
10733
10876
 
10734
- dispatch(setLoading(true));
10877
+ if (!existedResponse) {
10878
+ questionResponseCloner.push({
10879
+ questionId: questionId,
10880
+ text: text
10881
+ });
10882
+ } else {
10883
+ existedResponse.text = text;
10884
+ }
10735
10885
 
10736
- var _temp4 = _catch(function () {
10737
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
10738
- searchString: fullName
10739
- })) : get$5(filters)).then(function (res) {
10740
- var _res$data = res.data,
10741
- items = _res$data.items,
10742
- totalItems = _res$data.totalItems;
10886
+ return _extends({}, state, {
10887
+ questionResponse: questionResponseCloner
10888
+ });
10889
+ }).addCase(reset, function (_state, _action) {
10890
+ return initialState$v;
10891
+ });
10892
+ });
10743
10893
 
10744
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
10745
- var user = _step.value;
10746
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
10747
- }
10894
+ var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10748
10895
 
10749
- dispatch(setUserList({
10750
- userList: items,
10751
- totalItems: totalItems
10752
- }));
10753
- });
10754
- }, function (err) {
10755
- var _err$response, _err$response$data;
10896
+ var initialState$w = {
10897
+ certificateList: [],
10898
+ totalItems: 0
10899
+ };
10900
+ var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10901
+ builder.addCase(setCertificateList, function (state, action) {
10902
+ state.certificateList = action.payload.certificateList;
10903
+ state.totalItems = action.payload.totalItems;
10904
+ }).addCase(reset, function (_state, _action) {
10905
+ return initialState$w;
10906
+ });
10907
+ });
10756
10908
 
10757
- dispatch(setAlert({
10758
- type: "danger",
10759
- 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
10760
- }));
10761
- });
10909
+ var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10762
10910
 
10763
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
10764
- } catch (e) {
10765
- return Promise.reject(e);
10766
- }
10767
- }, [dispatch, filters]);
10768
- React.useEffect(function () {
10769
- document.title = TITLE$a;
10770
- }, []);
10771
- React.useEffect(function () {
10772
- if (!!fullName) {
10773
- getData(fullName);
10774
- setFullName(null);
10775
- } else {
10776
- getData();
10777
- }
10778
- }, [filters]);
10779
- var removeData = React.useCallback(function (id) {
10780
- dispatch(setLoading(true));
10911
+ var initialState$x = {
10912
+ improveMyClassList: []
10913
+ };
10914
+ var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10915
+ builder.addCase(setImproveMyClass, function (state, action) {
10916
+ state.improveMyClassList = action.payload;
10917
+ }).addCase(reset, function (_state, _action) {
10918
+ return initialState$x;
10919
+ });
10920
+ });
10781
10921
 
10782
- try {
10783
- dispatch(setModal({
10784
- isOpen: true,
10785
- type: "warning",
10786
- message: "Do you want to remove this user?",
10787
- onConfirm: function () {
10788
- try {
10789
- return Promise.resolve(remove$3(id)).then(function () {
10790
- dispatch(setAlert({
10791
- type: "success",
10792
- message: "Remove user successfully"
10793
- }));
10794
- changeFilters({
10795
- currentPage: 1
10796
- });
10797
- });
10798
- } catch (e) {
10799
- return Promise.reject(e);
10800
- }
10801
- }
10802
- }));
10803
- } catch (err) {
10804
- var _err$response2, _err$response2$data;
10922
+ var setFilterWidget = toolkit.createAction("setFilterWidget");
10805
10923
 
10806
- dispatch(setAlert({
10807
- type: "danger",
10808
- 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
10809
- }));
10810
- }
10924
+ var initialState$y = {
10925
+ filterWidget: "Year"
10926
+ };
10927
+ var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10928
+ builder.addCase(setFilterWidget, function (state, action) {
10929
+ state.filterWidget = action.payload.filterWidget;
10930
+ }).addCase(reset, function (_state, _action) {
10931
+ return initialState$y;
10932
+ });
10933
+ });
10811
10934
 
10812
- dispatch(setLoading(false));
10813
- }, [filters]);
10935
+ var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
10814
10936
 
10815
- var redirectLoginUser = function redirectLoginUser(res) {
10816
- var _res$data2 = res.data,
10817
- token = _res$data2.token,
10818
- id = _res$data2.id,
10819
- firstName = _res$data2.firstName,
10820
- lastName = _res$data2.lastName,
10821
- roles = _res$data2.roles,
10822
- email = _res$data2.email,
10823
- profileImageFileName = _res$data2.profileImageFileName;
10824
- localStorage.setItem(ACCESS_TOKEN, token);
10825
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
10826
- dispatch(setUser({
10827
- id: id,
10828
- firstName: firstName,
10829
- lastName: lastName,
10830
- roles: roles,
10831
- email: email,
10832
- profileImageFileName: profileImageFileName
10833
- }));
10937
+ var initialState$z = {
10938
+ bandScoreList: [],
10939
+ totalItems: 0
10940
+ };
10941
+ var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10942
+ builder.addCase(setBandScoreList, function (state, action) {
10943
+ state.bandScoreList = action.payload.bandScoreList;
10944
+ state.totalItems = action.payload.totalItems;
10945
+ }).addCase(reset, function (_state, _action) {
10946
+ return initialState$z;
10947
+ });
10948
+ });
10834
10949
 
10835
- if (isDistrict) {
10836
- history.push(HOMEPAGE_DISTRICT$1);
10837
- } else if (roles.includes("Admin")) {
10838
- history.push(HOMEPAGE_ADMIN$1);
10839
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
10840
- history.push(HOMEPAGE_TEACHER$1);
10841
- } else if (roles.includes("Student")) {
10842
- history.push(HOMEPAGE_STUDENT$1);
10843
- } else if (roles.includes("Parent")) {
10844
- history.push(HOMEPAGE_PARENT$1);
10845
- } else if (roles.includes("EduTeacher")) {
10846
- history.push(HOMEPAGE_EDU_TEACHER$1);
10847
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
10848
- history.push(HOMEPAGE_TEACHER$1);
10849
- }
10850
- };
10950
+ var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
10851
10951
 
10852
- var swicthUser = React.useCallback(function (id) {
10853
- try {
10854
- var _temp6 = _catch(function () {
10855
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
10856
- var data = res.data;
10857
- dispatch(setModal({
10858
- isOpen: true,
10859
- type: "warning",
10860
- message: "Do you want to impersonate this user?",
10861
- onConfirm: function () {
10862
- try {
10863
- var _temp9 = function _temp9() {
10864
- dispatch(setLoading(false));
10865
- };
10952
+ var initialState$A = {
10953
+ schoolBlankDayList: [],
10954
+ totalItems: 0
10955
+ };
10956
+ var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10957
+ builder.addCase(setSchoolBlankDayList, function (state, action) {
10958
+ state.schoolBlankDayList = action.payload.schoolBlankDayList;
10959
+ state.totalItems = action.payload.totalItems;
10960
+ }).addCase(reset, function (_state, _action) {
10961
+ return initialState$A;
10962
+ });
10963
+ });
10866
10964
 
10867
- dispatch(setLoading(true));
10965
+ var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10868
10966
 
10869
- var _temp10 = _catch(function () {
10870
- var req = {
10871
- email: data.email,
10872
- password: "default",
10873
- accessToken: data.token
10874
- };
10875
- return Promise.resolve(logIn(req)).then(function (res) {
10876
- localStorage.clear();
10877
- redirectLoginUser(res);
10878
- });
10879
- }, function (err) {
10880
- var _err$response3, _err$response3$data;
10967
+ var initialState$B = {
10968
+ studentIdSelectedByTeacher: 0
10969
+ };
10970
+ var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10971
+ builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10972
+ state.studentIdSelectedByTeacher = action.payload;
10973
+ }).addCase(reset, function (_state, _action) {
10974
+ return initialState$B;
10975
+ });
10976
+ });
10881
10977
 
10882
- setAlert({
10883
- type: "danger",
10884
- 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
10885
- });
10886
- });
10978
+ var rootReducer = combineReducers({
10979
+ common: commonReducer,
10980
+ classes: classReducer,
10981
+ conferenceRubrics: conferenceRubricReducer,
10982
+ faqs: commonReducer$1,
10983
+ skills: commonReducer$2,
10984
+ emailTemplate: emailTemplateReducer,
10985
+ suggestionBank: suggestionBankReducer,
10986
+ learningStrategy: learningStrategyReducer,
10987
+ subjects: commonReducer$3,
10988
+ learningSupportCategories: commonReducer$4,
10989
+ questionBank: questionBankReducer,
10990
+ badges: commonReducer$5,
10991
+ semester: commonReducer$6,
10992
+ goalExamples: commonReducer$8,
10993
+ users: commonReducer$9,
10994
+ reflections: reflectionReducer,
10995
+ reflectionResults: reflectionReducer$1,
10996
+ feedbacks: commonReducer$a,
10997
+ assessments: commonReducer$b,
10998
+ questionByCategory: questionCategoryReducer,
10999
+ mailCategory: questionBankReducer$1,
11000
+ questionCate: questionCateReducer,
11001
+ notification: questionBankReducer$2,
11002
+ myStudent: commonReducer$c,
11003
+ assignments: commonReducer$7,
11004
+ assistants: assistantReducer,
11005
+ sesstionTemplates: sessionTemplateReducer,
11006
+ sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
11007
+ tutorialScreens: tutorialScreenReducer,
11008
+ customAlerts: commonReducer$d,
11009
+ gallery: commonReducer$e,
11010
+ dashboard: dashboardReducer,
11011
+ sessionPlayer: sessionPlayerReducer,
11012
+ dataPlayer: dataPlayer,
11013
+ certificate: commonReducer$f,
11014
+ improveMyClass: commonReducer$g,
11015
+ widget: widgetReducer,
11016
+ bandScores: commonReducer$h,
11017
+ schoolBlankDays: commonReducer$i,
11018
+ navMobileReducer: navMobileReducer
11019
+ });
10887
11020
 
10888
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
10889
- } catch (e) {
10890
- return Promise.reject(e);
10891
- }
10892
- }
10893
- }));
10894
- });
10895
- }, function (err) {
10896
- var _err$response4, _err$response4$data;
11021
+ var store = toolkit.configureStore({
11022
+ reducer: rootReducer,
11023
+ middleware: function middleware(getDefaultMiddleware) {
11024
+ return getDefaultMiddleware({
11025
+ serializableCheck: false
11026
+ }).concat(logger);
11027
+ }
11028
+ });
10897
11029
 
10898
- dispatch(setAlert({
10899
- type: "danger",
10900
- 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
10901
- }));
10902
- });
11030
+ var isInViewport = function isInViewport(el) {
11031
+ var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
11032
+ return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
11033
+ };
10903
11034
 
10904
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10905
- } catch (e) {
10906
- return Promise.reject(e);
11035
+ var debounce = function debounce(callback, wait) {
11036
+ var timeout = null;
11037
+ return function () {
11038
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11039
+ args[_key] = arguments[_key];
10907
11040
  }
10908
- }, [filters]);
10909
11041
 
10910
- var reDirectDetailPage = function reDirectDetailPage(id) {
10911
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10912
- history.push(url);
10913
- };
11042
+ var next = function next() {
11043
+ return callback.apply(void 0, args);
11044
+ };
10914
11045
 
10915
- return {
10916
- userList: userList,
10917
- totalItems: totalItems,
10918
- filters: filters,
10919
- queryName: queryName,
10920
- getData: getData,
10921
- removeData: removeData,
10922
- changeFilters: changeFilters,
10923
- reDirectDetailPage: reDirectDetailPage,
10924
- swicthUser: swicthUser
11046
+ clearTimeout(timeout);
11047
+ timeout = setTimeout(next, wait);
10925
11048
  };
10926
11049
  };
10927
11050
 
10928
- var header$4 = "User";
10929
-
10930
- var UserList = function UserList() {
10931
- var _useUserList = useUserList(),
10932
- queryName = _useUserList.queryName,
10933
- userList = _useUserList.userList,
10934
- totalItems = _useUserList.totalItems,
10935
- filters = _useUserList.filters,
10936
- removeData = _useUserList.removeData,
10937
- changeFilters = _useUserList.changeFilters,
10938
- reDirectDetailPage = _useUserList.reDirectDetailPage,
10939
- swicthUser = _useUserList.swicthUser;
10940
-
10941
- var _useTranslation = reactI18next.useTranslation(),
10942
- t = _useTranslation.t;
10943
-
10944
- return React__default.createElement("div", {
10945
- className: "fadeIn animated"
10946
- }, React__default.createElement("h5", {
10947
- className: "mb-2"
10948
- }, t("" + header$4)), React__default.createElement(reactstrap.Row, {
10949
- className: "my-2"
10950
- }, React__default.createElement(reactstrap.Col, {
10951
- md: 8
10952
- }, React__default.createElement(SearchBoxContainer, {
10953
- text: t("create_user"),
10954
- onClick: function onClick() {
10955
- return reDirectDetailPage();
10956
- },
10957
- initValue: !!queryName ? queryName : "",
10958
- onSearch: function onSearch(searchString) {
10959
- return changeFilters({
10960
- searchString: searchString
10961
- });
10962
- },
10963
- placeholder: t("type_something_to_search_by_user_name")
10964
- })), React__default.createElement(reactstrap.Col, {
10965
- md: 4,
10966
- className: "d-flex justify-content-end align-items-center"
10967
- }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
10968
- className: "mb-2"
10969
- }, React__default.createElement(reactstrap.Col, {
10970
- md: 12
10971
- }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
10972
- bordered: true,
10973
- hover: true,
10974
- striped: true,
10975
- responsive: true,
10976
- size: "sm"
10977
- }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
10978
- className: "align-top"
10979
- }, t("name")), React__default.createElement("th", {
10980
- className: "align-top"
10981
- }, t("email")), React__default.createElement("th", {
10982
- className: "align-top"
10983
- }, t("age")), React__default.createElement("th", {
10984
- className: "align-top"
10985
- }, t("role")), React__default.createElement("th", {
10986
- className: "align-top"
10987
- }, t("active_status")), React__default.createElement("th", {
10988
- className: "align-top"
10989
- }, t("created_time")), React__default.createElement("th", {
10990
- className: "text-center"
10991
- }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
10992
- return React__default.createElement("tr", {
10993
- key: record.id
10994
- }, React__default.createElement("td", {
10995
- className: "align-middle"
10996
- }, React__default.createElement(LinkEditButton, {
10997
- label: "" + record.fullName,
10998
- onClick: function onClick() {
10999
- return reDirectDetailPage(record.id);
11000
- }
11001
- })), React__default.createElement("td", {
11002
- className: "align-middle"
11003
- }, record.email), React__default.createElement("td", {
11004
- className: "align-middle"
11005
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
11006
- className: "align-middle"
11007
- }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
11008
- className: "align-middle"
11009
- }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
11010
- className: "align-middle"
11011
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
11012
- className: "text-center align-middle"
11013
- }, React__default.createElement(fa.FaUsersCog, {
11014
- style: {
11015
- fontSize: "18px",
11016
- marginRight: "10px",
11017
- cursor: "pointer"
11018
- },
11019
- onClick: function onClick() {
11020
- return swicthUser(record.id);
11021
- }
11022
- }), React__default.createElement(DeleteButtonIcon, {
11023
- onClick: function onClick() {
11024
- return removeData(record.id);
11025
- }
11026
- })));
11027
- })))) : React__default.createElement(EmptyDataAlert, {
11028
- label: t("user")
11029
- })), React__default.createElement(reactstrap.Col, {
11030
- md: 12
11031
- }, React__default.createElement(CustomPagination, {
11032
- filters: filters,
11033
- totalRecordCount: totalItems,
11034
- changePageSize: function changePageSize(pageSize) {
11035
- return changeFilters({
11036
- pageSize: pageSize
11037
- });
11038
- },
11039
- changePage: function changePage(currentPage) {
11040
- return changeFilters({
11041
- currentPage: currentPage
11042
- });
11043
- }
11044
- }))));
11051
+ var getTextFromHTML = function getTextFromHTML(htmlString) {
11052
+ var p = document.createElement("p");
11053
+ p.innerHTML = htmlString;
11054
+ var text = p.innerText;
11055
+ p.remove();
11056
+ return text;
11045
11057
  };
11046
11058
 
11047
- var amplitudeClient$1 = amplitude.getInstance();
11059
+ var generateRandomString = (function () {
11060
+ return (Math.random() + 1).toString(36).substring(7);
11061
+ });
11062
+
11063
+ var amplitudeClient = amplitude.getInstance();
11048
11064
 
11049
11065
  Object.defineProperty(exports, 'I18nextProvider', {
11050
11066
  enumerable: true,
@@ -11126,7 +11142,7 @@ exports.UploadFileButton = UploadFileButton;
11126
11142
  exports.UserDetail = UserDetail;
11127
11143
  exports.UserList = UserList;
11128
11144
  exports.addTab = addTab;
11129
- exports.amplitudeClient = amplitudeClient$1;
11145
+ exports.amplitudeClient = amplitudeClient;
11130
11146
  exports.answerQuestion = answerQuestion;
11131
11147
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
11132
11148
  exports.api = api;