mario-core 2.9.129-all → 2.9.130-all

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
@@ -6882,8 +6882,89 @@ var SkillList = function SkillList() {
6882
6882
  }))));
6883
6883
  };
6884
6884
 
6885
- var setUserList = toolkit.createAction("users/setUserList");
6886
- var setStudentList = toolkit.createAction("users/setStudentList");
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
+ };
6887
6968
 
6888
6969
  var USER_URL$1 = BASE_URL + "/api/user";
6889
6970
  var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
@@ -6916,38 +6997,58 @@ var switchAccountUser = function switchAccountUser(id) {
6916
6997
  return api.post(EDU_USER_URL + "/switch-user/" + id);
6917
6998
  };
6918
6999
 
6919
- var USER_URL$2 = "/admin/user";
6920
- var CREATE_USER_URL = "/admin/create-user";
6921
- var TITLE$7 = "User list";
6922
- var HOMEPAGE_TEACHER$1 = "/home";
6923
- var HOMEPAGE_STUDENT$1 = "/home";
6924
- var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
6925
- var HOMEPAGE_PARENT$1 = "/parent";
6926
- var HOMEPAGE_DISTRICT$1 = "/admin/schools";
6927
- var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
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";
6928
7012
 
6929
- var useUserList = function useUserList() {
7013
+ var useUserDetail = function useUserDetail(id) {
7014
+ var dispatch = reactRedux.useDispatch();
6930
7015
  var history = reactRouterDom.useHistory();
6931
- var query = new URLSearchParams(location.search);
6932
- var queryName = query.get("query");
6933
- var userList = reactRedux.useSelector(function (state) {
6934
- return state.users.userList;
6935
- });
6936
- var totalItems = reactRedux.useSelector(function (state) {
6937
- return state.users.totalItems;
6938
- });
6939
7016
 
6940
- var _useFilters = useFilters(),
6941
- filters = _useFilters.filters,
6942
- changeFilters = _useFilters.changeFilters;
7017
+ var _useState = React.useState(initValue$3),
7018
+ userDetail = _useState[0],
7019
+ setUserDetail = _useState[1];
6943
7020
 
6944
- var _useState = React.useState(!!queryName ? queryName : ""),
6945
- fullName = _useState[0],
6946
- setFullName = _useState[1];
7021
+ var _useState2 = React.useState(null),
7022
+ file = _useState2[0],
7023
+ setFile = _useState2[1];
6947
7024
 
6948
- var isDistrict = window.location.host.includes("-district");
6949
- var dispatch = reactRedux.useDispatch();
6950
- var getData = React.useCallback(function (fullName) {
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
+ };
7038
+
7039
+ var _useState4 = React.useState([]),
7040
+ currentRoles = _useState4[0],
7041
+ setCurrentRoles = _useState4[1];
7042
+
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 () {
6951
7052
  try {
6952
7053
  var _temp3 = function _temp3() {
6953
7054
  dispatch(setLoading(false));
@@ -6956,22 +7057,15 @@ var useUserList = function useUserList() {
6956
7057
  dispatch(setLoading(true));
6957
7058
 
6958
7059
  var _temp4 = _catch(function () {
6959
- return Promise.resolve(fullName ? get$5(_extends({}, filters, {
6960
- searchString: fullName
6961
- })) : get$5(filters)).then(function (res) {
6962
- var _res$data = res.data,
6963
- items = _res$data.items,
6964
- totalItems = _res$data.totalItems;
6965
-
6966
- for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
6967
- var user = _step.value;
6968
- user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
6969
- }
7060
+ return Promise.resolve(getById$3(id)).then(function (res) {
7061
+ var _res$data$roles, _res$data, _res$data2;
6970
7062
 
6971
- dispatch(setUserList({
6972
- userList: items,
6973
- totalItems: totalItems
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
6974
7066
  }));
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;
6975
7069
  });
6976
7070
  }, function (err) {
6977
7071
  var _err$response, _err$response$data;
@@ -6986,699 +7080,177 @@ var useUserList = function useUserList() {
6986
7080
  } catch (e) {
6987
7081
  return Promise.reject(e);
6988
7082
  }
6989
- }, [dispatch, filters]);
6990
- React.useEffect(function () {
6991
- document.title = TITLE$7;
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);
6992
7086
  }, []);
6993
- React.useEffect(function () {
6994
- if (!!fullName) {
6995
- getData(fullName);
6996
- setFullName(null);
6997
- } else {
6998
- getData();
6999
- }
7000
- }, [filters]);
7001
- var removeData = React.useCallback(function (id) {
7002
- dispatch(setLoading(true));
7003
-
7087
+ var confirmData = React.useCallback(function (data) {
7004
7088
  try {
7005
- dispatch(setModal({
7006
- isOpen: true,
7007
- type: "warning",
7008
- message: "Do you want to remove this user?",
7009
- onConfirm: function () {
7010
- try {
7011
- return Promise.resolve(remove$3(id)).then(function () {
7012
- dispatch(setAlert({
7013
- type: "success",
7014
- message: "Remove user successfully"
7015
- }));
7016
- changeFilters({
7017
- currentPage: 1
7089
+ var _temp9 = function _temp9() {
7090
+ dispatch(setLoading(false));
7091
+ };
7092
+
7093
+ dispatch(setLoading(true));
7094
+
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);
7018
7103
  });
7019
- });
7020
- } catch (e) {
7021
- return Promise.reject(e);
7022
- }
7023
- }
7024
- }));
7025
- } catch (err) {
7026
- var _err$response2, _err$response2$data;
7104
+ }
7027
7105
 
7028
- dispatch(setAlert({
7029
- type: "danger",
7030
- 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
7031
- }));
7032
- }
7106
+ if (!id) {
7107
+ alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7108
+ }
7033
7109
 
7034
- dispatch(setLoading(false));
7035
- }, [filters]);
7110
+ dispatch(setAlert({
7111
+ type: "success",
7112
+ message: (!!id ? "Update" : "Create") + " user successfully"
7113
+ }));
7114
+ });
7115
+ }
7036
7116
 
7037
- var redirectLoginUser = function redirectLoginUser(res) {
7038
- var _res$data2 = res.data,
7039
- token = _res$data2.token,
7040
- id = _res$data2.id,
7041
- firstName = _res$data2.firstName,
7042
- lastName = _res$data2.lastName,
7043
- roles = _res$data2.roles,
7044
- email = _res$data2.email,
7045
- profileImageFileName = _res$data2.profileImageFileName;
7046
- localStorage.setItem(ACCESS_TOKEN, token);
7047
- localStorage.removeItem(NOTIFICATION_ALERT_KEY);
7048
- dispatch(setUser({
7049
- id: id,
7050
- firstName: firstName,
7051
- lastName: lastName,
7052
- roles: roles,
7053
- email: email,
7054
- profileImageFileName: profileImageFileName
7055
- }));
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;
7056
7124
 
7057
- if (isDistrict) {
7058
- history.push(HOMEPAGE_DISTRICT$1);
7059
- } else if (roles.includes("Admin")) {
7060
- history.push(HOMEPAGE_ADMIN$1);
7061
- } else if (roles.includes("Teacher") || roles.includes("Assistant")) {
7062
- history.push(HOMEPAGE_TEACHER$1);
7063
- } else if (roles.includes("Student")) {
7064
- history.push(HOMEPAGE_STUDENT$1);
7065
- } else if (roles.includes("Parent")) {
7066
- history.push(HOMEPAGE_PARENT$1);
7067
- } else if (roles.includes("EduTeacher")) {
7068
- history.push(HOMEPAGE_EDU_TEACHER$1);
7069
- } else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
7070
- history.push(HOMEPAGE_TEACHER$1);
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
+ });
7140
+
7141
+ return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7142
+ } catch (e) {
7143
+ return Promise.reject(e);
7071
7144
  }
7145
+ }, [id, file]);
7146
+
7147
+ var handleDisableRoles = function handleDisableRoles(currentRoles) {
7148
+ return ["Student", "Parent", "EduTeacher"].includes(currentRoles);
7072
7149
  };
7073
7150
 
7074
- var swicthUser = React.useCallback(function (id) {
7151
+ var confirmChangePassword = function confirmChangePassword(data) {
7075
7152
  try {
7076
- var _temp6 = _catch(function () {
7077
- return Promise.resolve(switchAccountUser(id)).then(function (res) {
7078
- var data = res.data;
7079
- dispatch(setModal({
7080
- isOpen: true,
7081
- type: "warning",
7082
- message: "Do you want to impersonate this user?",
7083
- onConfirm: function () {
7084
- try {
7085
- var _temp9 = function _temp9() {
7086
- dispatch(setLoading(false));
7087
- };
7088
-
7089
- dispatch(setLoading(true));
7090
-
7091
- var _temp10 = _catch(function () {
7092
- var req = {
7093
- email: data.email,
7094
- password: "default",
7095
- accessToken: data.token
7096
- };
7097
- return Promise.resolve(logIn(req)).then(function (res) {
7098
- localStorage.clear();
7099
- redirectLoginUser(res);
7100
- });
7101
- }, function (err) {
7102
- var _err$response3, _err$response3$data;
7153
+ var _temp13 = function _temp13() {
7154
+ dispatch(setLoading(false));
7155
+ };
7103
7156
 
7104
- setAlert({
7105
- type: "danger",
7106
- 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
7107
- });
7108
- });
7157
+ dispatch(setLoading(true));
7109
7158
 
7110
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7111
- } catch (e) {
7112
- return Promise.reject(e);
7113
- }
7114
- }
7159
+ var _temp14 = _catch(function () {
7160
+ return Promise.resolve(changePassword(data)).then(function () {
7161
+ dispatch(setAlert({
7162
+ type: "success",
7163
+ message: "Change password successfully"
7115
7164
  }));
7116
7165
  });
7117
- }, function (err) {
7118
- var _err$response4, _err$response4$data;
7166
+ }, function (e) {
7167
+ var _e$response, _e$response$data;
7119
7168
 
7120
7169
  dispatch(setAlert({
7121
7170
  type: "danger",
7122
- 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
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
7123
7172
  }));
7124
7173
  });
7125
7174
 
7126
- return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
7175
+ return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7127
7176
  } catch (e) {
7128
7177
  return Promise.reject(e);
7129
7178
  }
7130
- }, [filters]);
7131
-
7132
- var reDirectDetailPage = function reDirectDetailPage(id) {
7133
- var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
7134
- history.push(url);
7135
7179
  };
7136
7180
 
7137
- return {
7138
- userList: userList,
7139
- totalItems: totalItems,
7140
- filters: filters,
7141
- queryName: queryName,
7142
- getData: getData,
7143
- removeData: removeData,
7144
- changeFilters: changeFilters,
7145
- reDirectDetailPage: reDirectDetailPage,
7146
- swicthUser: swicthUser
7147
- };
7148
- };
7181
+ var forgotPasswordRequest = React.useCallback(function (data) {
7182
+ try {
7183
+ var _temp17 = function _temp17() {
7184
+ dispatch(setLoading(false));
7185
+ };
7149
7186
 
7150
- var SearchBox = function SearchBox(_ref) {
7151
- var initValue = _ref.initValue,
7152
- onSearch = _ref.onSearch,
7153
- placeholder = _ref.placeholder,
7154
- className = _ref.className,
7155
- style = _ref.style;
7187
+ dispatch(setLoading(true));
7156
7188
 
7157
- var _useState = React.useState(initValue),
7158
- searchString = _useState[0],
7159
- setSearchString = _useState[1];
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"
7194
+ }));
7195
+ });
7196
+ }, function (err) {
7197
+ var _err$response3, _err$response3$data;
7160
7198
 
7161
- React.useEffect(function () {
7162
- setSearchString(initValue);
7163
- }, [initValue]);
7164
- var onKeyUp = React.useCallback(function (e) {
7165
- e.key === "Enter" && onSearch(searchString);
7166
- }, [searchString, onSearch]);
7167
- return React__default.createElement(reactstrap.Input, {
7168
- placeholder: placeholder,
7169
- value: searchString,
7170
- onChange: function onChange(e) {
7171
- return setSearchString(e.target.value);
7172
- },
7173
- onKeyUp: onKeyUp,
7174
- className: className,
7175
- style: style
7176
- });
7177
- };
7199
+ dispatch(setAlert({
7200
+ 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"
7202
+ }));
7203
+ });
7178
7204
 
7179
- SearchBox.defaultProps = {
7180
- placeholder: "Type something to search",
7181
- className: "",
7182
- style: {}
7205
+ return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7206
+ } catch (e) {
7207
+ return Promise.reject(e);
7208
+ }
7209
+ }, []);
7210
+ 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
7223
+ };
7183
7224
  };
7184
- var SearchBox$1 = React.memo(SearchBox);
7185
7225
 
7186
- var searchInputStyle = {
7187
- height: 38
7188
- };
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
+ });
7189
7233
 
7190
- var SearchBoxContainer = function SearchBoxContainer(_ref) {
7191
- var text = _ref.text,
7192
- initValue = _ref.initValue,
7193
- onClick = _ref.onClick,
7194
- onSearch = _ref.onSearch,
7195
- placeholder = _ref.placeholder;
7196
- return React__default.createElement("div", {
7197
- className: "d-flex align-items-center"
7198
- }, React__default.createElement("div", null, React__default.createElement(AddButton, {
7199
- text: text,
7200
- onClick: onClick
7201
- })), React__default.createElement("div", {
7202
- className: "flex-grow-1 ml-2"
7203
- }, React__default.createElement(SearchBox$1, {
7204
- initValue: initValue,
7205
- onSearch: onSearch,
7206
- placeholder: placeholder,
7207
- style: searchInputStyle
7208
- })));
7209
- };
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
+ });
7210
7239
 
7211
- SearchBoxContainer.defaultProps = {
7212
- placeholder: "Type something to search"
7213
- };
7240
+ var CREATE_USER = "create_user";
7241
+ var EDIT_USER_HEADER = "edit_user";
7242
+ var CHANGE_PASSWORD$1 = "change_password";
7214
7243
 
7215
- var utcToLocalTime = (function (time, FORMAT) {
7216
- if (time === DATE_MIN_VALUE) return "";
7244
+ var UserDetail = function UserDetail() {
7245
+ var _useParams = reactRouterDom.useParams(),
7246
+ id = _useParams.id;
7217
7247
 
7218
- try {
7219
- return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
7220
- } catch (_unused) {
7221
- return "";
7222
- }
7223
- });
7248
+ var user = reactRedux.useSelector(function (state) {
7249
+ return state.common.user;
7250
+ });
7224
7251
 
7225
- var header$2 = "User";
7226
-
7227
- var UserList = function UserList() {
7228
- var _useUserList = useUserList(),
7229
- queryName = _useUserList.queryName,
7230
- userList = _useUserList.userList,
7231
- totalItems = _useUserList.totalItems,
7232
- filters = _useUserList.filters,
7233
- removeData = _useUserList.removeData,
7234
- changeFilters = _useUserList.changeFilters,
7235
- reDirectDetailPage = _useUserList.reDirectDetailPage,
7236
- swicthUser = _useUserList.swicthUser;
7237
-
7238
- var _useTranslation = reactI18next.useTranslation(),
7239
- t = _useTranslation.t;
7240
-
7241
- return React__default.createElement("div", {
7242
- className: "fadeIn animated"
7243
- }, React__default.createElement("h5", {
7244
- className: "mb-2"
7245
- }, t("" + header$2)), React__default.createElement(reactstrap.Row, {
7246
- className: "my-2"
7247
- }, React__default.createElement(reactstrap.Col, {
7248
- md: 8
7249
- }, React__default.createElement(SearchBoxContainer, {
7250
- text: t("create_user"),
7251
- onClick: function onClick() {
7252
- return reDirectDetailPage();
7253
- },
7254
- initValue: !!queryName ? queryName : "",
7255
- onSearch: function onSearch(searchString) {
7256
- return changeFilters({
7257
- searchString: searchString
7258
- });
7259
- },
7260
- placeholder: t("type_something_to_search_by_user_name")
7261
- })), React__default.createElement(reactstrap.Col, {
7262
- md: 4,
7263
- className: "d-flex justify-content-end align-items-center"
7264
- }, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
7265
- className: "mb-2"
7266
- }, React__default.createElement(reactstrap.Col, {
7267
- md: 12
7268
- }, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
7269
- bordered: true,
7270
- hover: true,
7271
- striped: true,
7272
- responsive: true,
7273
- size: "sm"
7274
- }, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
7275
- className: "align-top"
7276
- }, t("name")), React__default.createElement("th", {
7277
- className: "align-top"
7278
- }, t("email")), React__default.createElement("th", {
7279
- className: "align-top"
7280
- }, t("age")), React__default.createElement("th", {
7281
- className: "align-top"
7282
- }, t("role")), React__default.createElement("th", {
7283
- className: "align-top"
7284
- }, t("active_status")), React__default.createElement("th", {
7285
- className: "align-top"
7286
- }, t("created_time")), React__default.createElement("th", {
7287
- className: "text-center"
7288
- }, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
7289
- return React__default.createElement("tr", {
7290
- key: record.id
7291
- }, React__default.createElement("td", {
7292
- className: "align-middle"
7293
- }, React__default.createElement(LinkEditButton, {
7294
- label: "" + record.fullName,
7295
- onClick: function onClick() {
7296
- return reDirectDetailPage(record.id);
7297
- }
7298
- })), React__default.createElement("td", {
7299
- className: "align-middle"
7300
- }, record.email), React__default.createElement("td", {
7301
- className: "align-middle"
7302
- }, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
7303
- className: "align-middle"
7304
- }, !!record.roles && record.roles.join(", ")), React__default.createElement("td", {
7305
- className: "align-middle"
7306
- }, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
7307
- className: "align-middle"
7308
- }, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
7309
- className: "text-center align-middle"
7310
- }, React__default.createElement(fa.FaUsersCog, {
7311
- style: {
7312
- fontSize: "18px",
7313
- marginRight: "10px",
7314
- cursor: "pointer"
7315
- },
7316
- onClick: function onClick() {
7317
- return swicthUser(record.id);
7318
- }
7319
- }), React__default.createElement(DeleteButtonIcon, {
7320
- onClick: function onClick() {
7321
- return removeData(record.id);
7322
- }
7323
- })));
7324
- })))) : React__default.createElement(EmptyDataAlert, {
7325
- label: t("user")
7326
- })), React__default.createElement(reactstrap.Col, {
7327
- md: 12
7328
- }, React__default.createElement(CustomPagination, {
7329
- filters: filters,
7330
- totalRecordCount: totalItems,
7331
- changePageSize: function changePageSize(pageSize) {
7332
- return changeFilters({
7333
- pageSize: pageSize
7334
- });
7335
- },
7336
- changePage: function changePage(currentPage) {
7337
- return changeFilters({
7338
- currentPage: currentPage
7339
- });
7340
- }
7341
- }))));
7342
- };
7343
-
7344
- var MAX_FILE_SIZE = 20097152;
7345
-
7346
- var UploadFileButton = function UploadFileButton(_ref) {
7347
- var fileName = _ref.fileName,
7348
- maxWidth = _ref.maxWidth,
7349
- maxHeight = _ref.maxHeight,
7350
- setFile = _ref.setFile,
7351
- canDelete = _ref.canDelete,
7352
- onDelete = _ref.onDelete,
7353
- isCheckFeedBack = _ref.isCheckFeedBack,
7354
- onAddImage = _ref.onAddImage;
7355
- var dispatch = reactRedux.useDispatch();
7356
-
7357
- var _useState = React.useState(""),
7358
- imagePreviewUrl = _useState[0],
7359
- setImagePreviewUrl = _useState[1];
7360
-
7361
- var imageStyle = {
7362
- maxWidth: maxWidth || "100%",
7363
- maxHeight: maxHeight || "100%"
7364
- };
7365
- var imageSrc = imagePreviewUrl || getFileUrl(fileName);
7366
-
7367
- var handleImageChange = function handleImageChange(e) {
7368
- e.preventDefault();
7369
- var reader = new FileReader();
7370
- var newFile = e.target.files[0];
7371
-
7372
- if (newFile.size > MAX_FILE_SIZE) {
7373
- dispatch(setAlert({
7374
- type: "danger",
7375
- message: "File can't be larger than 2MB"
7376
- }));
7377
- return;
7378
- }
7379
-
7380
- reader.onloadend = function () {
7381
- setFile(newFile);
7382
- setImagePreviewUrl(reader.result);
7383
- };
7384
-
7385
- if (newFile) {
7386
- reader.readAsDataURL(newFile);
7387
- }
7388
-
7389
- !!onAddImage && onAddImage();
7390
- };
7391
-
7392
- var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
7393
- style: imageStyle,
7394
- src: imageSrc,
7395
- alt: "image"
7396
- }) : null;
7397
- return React__default.createElement("div", {
7398
- className: "mb-2"
7399
- }, React__default.createElement(reactstrap.Form, {
7400
- className: "mb-2"
7401
- }, React__default.createElement(reactstrap.Input, {
7402
- className: "d-none",
7403
- type: "file",
7404
- id: "uploadFile",
7405
- onChange: handleImageChange,
7406
- accept: "image/*"
7407
- }), React__default.createElement("div", {
7408
- className: "d-flex align-items-center"
7409
- }, React__default.createElement(reactstrap.Label, {
7410
- htmlFor: "uploadFile",
7411
- role: "button",
7412
- tabIndex: 0,
7413
- className: styles["input-file-label"]
7414
- }, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
7415
- className: "fa fa-paperclip mr-1",
7416
- "aria-hidden": "true"
7417
- }), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
7418
- size: "sm",
7419
- color: "danger",
7420
- className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
7421
- onClick: function onClick() {
7422
- setImagePreviewUrl(null);
7423
- onDelete && onDelete();
7424
- }
7425
- }, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
7426
- };
7427
-
7428
- var initValue$3 = {
7429
- id: "",
7430
- firstName: "",
7431
- lastName: "",
7432
- email: "",
7433
- dateOfBirth: "",
7434
- roles: [],
7435
- isActive: true,
7436
- profileImageFileName: ""
7437
- };
7438
- var USER_LIST_URL = "/admin/user";
7439
- var TITLE$8 = "User detail";
7440
-
7441
- var useUserDetail = function useUserDetail(id) {
7442
- var dispatch = reactRedux.useDispatch();
7443
- var history = reactRouterDom.useHistory();
7444
-
7445
- var _useState = React.useState(initValue$3),
7446
- userDetail = _useState[0],
7447
- setUserDetail = _useState[1];
7448
-
7449
- var _useState2 = React.useState(null),
7450
- file = _useState2[0],
7451
- setFile = _useState2[1];
7452
-
7453
- var _useState3 = React.useState(false),
7454
- edited = _useState3[0],
7455
- setEdited = _useState3[1];
7456
-
7457
- var setEditedTrue = function setEditedTrue() {
7458
- try {
7459
- localStorage.setItem(window.location.href, "true");
7460
- setEdited(true);
7461
- return Promise.resolve();
7462
- } catch (e) {
7463
- return Promise.reject(e);
7464
- }
7465
- };
7466
-
7467
- var _useState4 = React.useState([]),
7468
- currentRoles = _useState4[0],
7469
- setCurrentRoles = _useState4[1];
7470
-
7471
- React.useEffect(function () {
7472
- document.title = TITLE$8;
7473
- setEdited(false);
7474
- if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
7475
- }, []);
7476
- React.useEffect(function () {
7477
- !!id && getData();
7478
- }, [id]);
7479
- var getData = React.useCallback(function () {
7480
- try {
7481
- var _temp3 = function _temp3() {
7482
- dispatch(setLoading(false));
7483
- };
7484
-
7485
- dispatch(setLoading(true));
7486
-
7487
- var _temp4 = _catch(function () {
7488
- return Promise.resolve(getById$3(id)).then(function (res) {
7489
- var _res$data$roles, _res$data, _res$data2;
7490
-
7491
- setUserDetail(_extends({}, res.data, {
7492
- dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
7493
- roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
7494
- }));
7495
- 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 : []);
7496
- document.title = (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.fullName;
7497
- });
7498
- }, function (err) {
7499
- var _err$response, _err$response$data;
7500
-
7501
- dispatch(setAlert({
7502
- type: "danger",
7503
- 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
7504
- }));
7505
- });
7506
-
7507
- return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp3) : _temp3(_temp4));
7508
- } catch (e) {
7509
- return Promise.reject(e);
7510
- }
7511
- }, [id]);
7512
- var backToList = React.useCallback(function (user) {
7513
- !!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
7514
- }, []);
7515
- var confirmData = React.useCallback(function (data) {
7516
- try {
7517
- var _temp9 = function _temp9() {
7518
- dispatch(setLoading(false));
7519
- };
7520
-
7521
- dispatch(setLoading(true));
7522
-
7523
- var _temp10 = _catch(function () {
7524
- function _temp6() {
7525
- var next = !!id ? update$5 : create$5;
7526
- !id && delete data.id;
7527
- return Promise.resolve(next(data)).then(function (result) {
7528
- if (!!result) {
7529
- getById$3(result.data.id).then(function (e) {
7530
- backToList(e.data.fullName);
7531
- });
7532
- }
7533
-
7534
- if (!id) {
7535
- alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
7536
- }
7537
-
7538
- dispatch(setAlert({
7539
- type: "success",
7540
- message: (!!id ? "Update" : "Create") + " user successfully"
7541
- }));
7542
- });
7543
- }
7544
-
7545
- var _temp5 = function () {
7546
- if (!!file) {
7547
- var formData = new FormData();
7548
- var name = file.name;
7549
- formData.append("file", file, name);
7550
- return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
7551
- var _res$data3;
7552
-
7553
- var imageUrl = res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.key;
7554
- data.profileImageFileName = imageUrl;
7555
- });
7556
- }
7557
- }();
7558
-
7559
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
7560
- }, function (err) {
7561
- var _err$response2, _err$response2$data;
7562
-
7563
- dispatch(setAlert({
7564
- type: "danger",
7565
- 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
7566
- }));
7567
- });
7568
-
7569
- return Promise.resolve(_temp10 && _temp10.then ? _temp10.then(_temp9) : _temp9(_temp10));
7570
- } catch (e) {
7571
- return Promise.reject(e);
7572
- }
7573
- }, [id, file]);
7574
-
7575
- var handleDisableRoles = function handleDisableRoles(currentRoles) {
7576
- return ["Student", "Parent", "EduTeacher"].includes(currentRoles);
7577
- };
7578
-
7579
- var confirmChangePassword = function confirmChangePassword(data) {
7580
- try {
7581
- var _temp13 = function _temp13() {
7582
- dispatch(setLoading(false));
7583
- };
7584
-
7585
- dispatch(setLoading(true));
7586
-
7587
- var _temp14 = _catch(function () {
7588
- return Promise.resolve(changePassword(data)).then(function () {
7589
- dispatch(setAlert({
7590
- type: "success",
7591
- message: "Change password successfully"
7592
- }));
7593
- });
7594
- }, function (e) {
7595
- var _e$response, _e$response$data;
7596
-
7597
- dispatch(setAlert({
7598
- type: "danger",
7599
- 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
7600
- }));
7601
- });
7602
-
7603
- return Promise.resolve(_temp14 && _temp14.then ? _temp14.then(_temp13) : _temp13(_temp14));
7604
- } catch (e) {
7605
- return Promise.reject(e);
7606
- }
7607
- };
7608
-
7609
- var forgotPasswordRequest = React.useCallback(function (data) {
7610
- try {
7611
- var _temp17 = function _temp17() {
7612
- dispatch(setLoading(false));
7613
- };
7614
-
7615
- dispatch(setLoading(true));
7616
-
7617
- var _temp18 = _catch(function () {
7618
- return Promise.resolve(forgotChangePassword(data)).then(function () {
7619
- dispatch(setAlert({
7620
- type: "success",
7621
- message: "Send forgot password link successfully"
7622
- }));
7623
- });
7624
- }, function (err) {
7625
- var _err$response3, _err$response3$data;
7626
-
7627
- dispatch(setAlert({
7628
- type: "danger",
7629
- 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"
7630
- }));
7631
- });
7632
-
7633
- return Promise.resolve(_temp18 && _temp18.then ? _temp18.then(_temp17) : _temp17(_temp18));
7634
- } catch (e) {
7635
- return Promise.reject(e);
7636
- }
7637
- }, []);
7638
- return {
7639
- userDetail: userDetail,
7640
- backToList: backToList,
7641
- confirmData: confirmData,
7642
- file: file,
7643
- setFile: setFile,
7644
- edited: edited,
7645
- setEdited: setEdited,
7646
- setEditedTrue: setEditedTrue,
7647
- confirmChangePassword: confirmChangePassword,
7648
- forgotPasswordRequest: forgotPasswordRequest,
7649
- currentRoles: currentRoles,
7650
- handleDisableRoles: handleDisableRoles
7651
- };
7652
- };
7653
-
7654
- var userSchema = yup.object({
7655
- firstName: yup.string().required("First name is required"),
7656
- lastName: yup.string().required("Last name is required"),
7657
- dateOfBirth: yup.string().required("Date of birth is required"),
7658
- email: yup.string().email("Email is invalid").required("Email is required"),
7659
- roles: yup.array().of(yup.string()).min(1, "Role is required")
7660
- });
7661
-
7662
- var changePasswordSchema = yup.object({
7663
- oldPassword: yup.string().required("Current password is required"),
7664
- newPassword: yup.string().required("New password is required"),
7665
- confirmedNewPassword: yup.string().required("Confirm password is required")
7666
- });
7667
-
7668
- var CREATE_USER = "create_user";
7669
- var EDIT_USER_HEADER = "edit_user";
7670
- var CHANGE_PASSWORD$1 = "change_password";
7671
-
7672
- var UserDetail = function UserDetail() {
7673
- var _useParams = reactRouterDom.useParams(),
7674
- id = _useParams.id;
7675
-
7676
- var user = reactRedux.useSelector(function (state) {
7677
- return state.common.user;
7678
- });
7679
-
7680
- var _useTranslation = reactI18next.useTranslation(),
7681
- t = _useTranslation.t;
7252
+ var _useTranslation = reactI18next.useTranslation(),
7253
+ t = _useTranslation.t;
7682
7254
 
7683
7255
  var _useUserDetail = useUserDetail(id),
7684
7256
  userDetail = _useUserDetail.userDetail,
@@ -8110,6 +7682,16 @@ var CommonHeader = function CommonHeader(_ref) {
8110
7682
  }, header))));
8111
7683
  };
8112
7684
 
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
+
8113
7695
  var NotificationLogoutModal = function NotificationLogoutModal() {
8114
7696
  var _useState = React.useState(false),
8115
7697
  isOpen = _useState[0],
@@ -8206,6 +7788,42 @@ var CreatableSelector = function CreatableSelector(props) {
8206
7788
  });
8207
7789
  };
8208
7790
 
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
+
8209
7827
  var QuestionTypeSelector = function QuestionTypeSelector(props) {
8210
7828
  var id = props.id;
8211
7829
  var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
@@ -8567,7 +8185,7 @@ var defaultFilters = {
8567
8185
  searchString: "",
8568
8186
  isRead: false
8569
8187
  };
8570
- var TITLE$9 = "Notification list";
8188
+ var TITLE$8 = "Notification list";
8571
8189
  var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
8572
8190
  var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
8573
8191
 
@@ -8697,7 +8315,7 @@ var useNotificationList = function useNotificationList() {
8697
8315
  }
8698
8316
  }, [filters]);
8699
8317
  React.useEffect(function () {
8700
- document.title = TITLE$9;
8318
+ document.title = TITLE$8;
8701
8319
  }, []);
8702
8320
  React.useEffect(function () {
8703
8321
  getData();
@@ -8782,7 +8400,7 @@ var useNotificationList = function useNotificationList() {
8782
8400
  };
8783
8401
  };
8784
8402
 
8785
- var header$3 = "Notification list";
8403
+ var header$2 = "Notification list";
8786
8404
  var ICON_SIZE = 20;
8787
8405
 
8788
8406
  var NotificationList = function NotificationList() {
@@ -8803,7 +8421,7 @@ var NotificationList = function NotificationList() {
8803
8421
  }
8804
8422
  }, React__default.createElement("h5", {
8805
8423
  className: "mb-2"
8806
- }, header$3), React__default.createElement(reactstrap.Row, {
8424
+ }, header$2), React__default.createElement(reactstrap.Row, {
8807
8425
  className: "my-2"
8808
8426
  }, React__default.createElement(reactstrap.Col, {
8809
8427
  md: 8
@@ -8903,6 +8521,35 @@ var NotificationList = function NotificationList() {
8903
8521
  }))));
8904
8522
  };
8905
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"
8551
+ };
8552
+
8906
8553
  var CustomTabs = function CustomTabs(props) {
8907
8554
  var history = reactRouterDom.useHistory();
8908
8555
  var location = reactRouterDom.useLocation();
@@ -9307,7 +8954,7 @@ var get$8 = function get(filter) {
9307
8954
  });
9308
8955
  };
9309
8956
 
9310
- var TITLE$a = "Gallery";
8957
+ var TITLE$9 = "Gallery";
9311
8958
  var defaultFilter = {
9312
8959
  searchString: ""
9313
8960
  };
@@ -9544,7 +9191,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
9544
9191
  }
9545
9192
  }, [dispatch, filters]);
9546
9193
  React.useEffect(function () {
9547
- document.title = TITLE$a;
9194
+ document.title = TITLE$9;
9548
9195
  dispatch(setTargetMedia({
9549
9196
  targetMedia: undefined
9550
9197
  }));
@@ -9736,7 +9383,7 @@ var MediaDetail = function MediaDetail(_ref) {
9736
9383
 
9737
9384
  var MediaDetail$1 = React__default.memo(MediaDetail);
9738
9385
 
9739
- var header$4 = "Gallery";
9386
+ var header$3 = "Gallery";
9740
9387
 
9741
9388
  var GalleryList = function GalleryList(_ref) {
9742
9389
  var isLibrary = _ref.isLibrary;
@@ -9747,7 +9394,7 @@ var GalleryList = function GalleryList(_ref) {
9747
9394
  className: "fadeIn animated"
9748
9395
  }, !isLibrary && React__default.createElement("h5", {
9749
9396
  className: "mb-2"
9750
- }, header$4), React__default.createElement(reactstrap.Row, {
9397
+ }, header$3), React__default.createElement(reactstrap.Row, {
9751
9398
  className: "mb-2"
9752
9399
  }, React__default.createElement(reactstrap.Col, {
9753
9400
  md: 8
@@ -10337,6 +9984,9 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
10337
9984
  });
10338
9985
  });
10339
9986
 
9987
+ var setUserList = toolkit.createAction("users/setUserList");
9988
+ var setStudentList = toolkit.createAction("users/setStudentList");
9989
+
10340
9990
  var initialState$f = {
10341
9991
  userList: [],
10342
9992
  totalItems: 0,
@@ -10856,193 +10506,545 @@ var dataPlayer = toolkit.createReducer(initialState$v, function (builder) {
10856
10506
  return response.questionId === questionId;
10857
10507
  });
10858
10508
 
10859
- if (!existedResponse) {
10860
- questionResponseCloner.push({
10861
- questionId: questionId,
10862
- text: text
10863
- });
10864
- } else {
10865
- existedResponse.text = text;
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];
10866
10672
  }
10867
10673
 
10868
- return _extends({}, state, {
10869
- questionResponse: questionResponseCloner
10870
- });
10871
- }).addCase(reset, function (_state, _action) {
10872
- return initialState$v;
10873
- });
10874
- });
10674
+ var next = function next() {
10675
+ return callback.apply(void 0, args);
10676
+ };
10875
10677
 
10876
- var setCertificateList = toolkit.createAction("certificates/setCertificateList");
10678
+ clearTimeout(timeout);
10679
+ timeout = setTimeout(next, wait);
10680
+ };
10681
+ };
10877
10682
 
10878
- var initialState$w = {
10879
- certificateList: [],
10880
- totalItems: 0
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;
10881
10689
  };
10882
- var commonReducer$f = toolkit.createReducer(initialState$w, function (builder) {
10883
- builder.addCase(setCertificateList, function (state, action) {
10884
- state.certificateList = action.payload.certificateList;
10885
- state.totalItems = action.payload.totalItems;
10886
- }).addCase(reset, function (_state, _action) {
10887
- return initialState$w;
10888
- });
10690
+
10691
+ var generateRandomString = (function () {
10692
+ return (Math.random() + 1).toString(36).substring(7);
10889
10693
  });
10890
10694
 
10891
- var setImproveMyClass = toolkit.createAction("improveMyClass/setImproveMyClass");
10695
+ var amplitudeClient = amplitude.getInstance();
10892
10696
 
10893
- var initialState$x = {
10894
- improveMyClassList: []
10895
- };
10896
- var commonReducer$g = toolkit.createReducer(initialState$x, function (builder) {
10897
- builder.addCase(setImproveMyClass, function (state, action) {
10898
- state.improveMyClassList = action.payload;
10899
- }).addCase(reset, function (_state, _action) {
10900
- return initialState$x;
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";
10706
+
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;
10901
10716
  });
10902
- });
10903
10717
 
10904
- var setFilterWidget = toolkit.createAction("setFilterWidget");
10718
+ var _useFilters = useFilters(),
10719
+ filters = _useFilters.filters,
10720
+ changeFilters = _useFilters.changeFilters;
10905
10721
 
10906
- var initialState$y = {
10907
- filterWidget: "Year"
10908
- };
10909
- var widgetReducer = toolkit.createReducer(initialState$y, function (builder) {
10910
- builder.addCase(setFilterWidget, function (state, action) {
10911
- state.filterWidget = action.payload.filterWidget;
10912
- }).addCase(reset, function (_state, _action) {
10913
- return initialState$y;
10914
- });
10915
- });
10722
+ var _useState = React.useState(!!queryName ? queryName : ""),
10723
+ fullName = _useState[0],
10724
+ setFullName = _useState[1];
10916
10725
 
10917
- var setBandScoreList = toolkit.createAction("bandScores/setBandScoreList");
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
+ };
10918
10733
 
10919
- var initialState$z = {
10920
- bandScoreList: [],
10921
- totalItems: 0
10922
- };
10923
- var commonReducer$h = toolkit.createReducer(initialState$z, function (builder) {
10924
- builder.addCase(setBandScoreList, function (state, action) {
10925
- state.bandScoreList = action.payload.bandScoreList;
10926
- state.totalItems = action.payload.totalItems;
10927
- }).addCase(reset, function (_state, _action) {
10928
- return initialState$z;
10929
- });
10930
- });
10734
+ dispatch(setLoading(true));
10931
10735
 
10932
- var setSchoolBlankDayList = toolkit.createAction("schoolBlankDays/setSchoolBlankDayList");
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;
10933
10743
 
10934
- var initialState$A = {
10935
- schoolBlankDayList: [],
10936
- totalItems: 0
10937
- };
10938
- var commonReducer$i = toolkit.createReducer(initialState$A, function (builder) {
10939
- builder.addCase(setSchoolBlankDayList, function (state, action) {
10940
- state.schoolBlankDayList = action.payload.schoolBlankDayList;
10941
- state.totalItems = action.payload.totalItems;
10942
- }).addCase(reset, function (_state, _action) {
10943
- return initialState$A;
10944
- });
10945
- });
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
+ }
10748
+
10749
+ dispatch(setUserList({
10750
+ userList: items,
10751
+ totalItems: totalItems
10752
+ }));
10753
+ });
10754
+ }, function (err) {
10755
+ var _err$response, _err$response$data;
10756
+
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
+ });
10762
+
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));
10781
+
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;
10805
+
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
+ }
10811
+
10812
+ dispatch(setLoading(false));
10813
+ }, [filters]);
10814
+
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
+ }));
10834
+
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
+ };
10851
+
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
+ };
10946
10866
 
10947
- var setStudentIdSelectedByTeacher = toolkit.createAction("navMobile/setStudentIdSelectedByTeacher");
10867
+ dispatch(setLoading(true));
10948
10868
 
10949
- var initialState$B = {
10950
- studentIdSelectedByTeacher: 0
10951
- };
10952
- var navMobileReducer = toolkit.createReducer(initialState$B, function (builder) {
10953
- builder.addCase(setStudentIdSelectedByTeacher, function (state, action) {
10954
- state.studentIdSelectedByTeacher = action.payload;
10955
- }).addCase(reset, function (_state, _action) {
10956
- return initialState$B;
10957
- });
10958
- });
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;
10959
10881
 
10960
- var rootReducer = combineReducers({
10961
- common: commonReducer,
10962
- classes: classReducer,
10963
- conferenceRubrics: conferenceRubricReducer,
10964
- faqs: commonReducer$1,
10965
- skills: commonReducer$2,
10966
- emailTemplate: emailTemplateReducer,
10967
- suggestionBank: suggestionBankReducer,
10968
- learningStrategy: learningStrategyReducer,
10969
- subjects: commonReducer$3,
10970
- learningSupportCategories: commonReducer$4,
10971
- questionBank: questionBankReducer,
10972
- badges: commonReducer$5,
10973
- semester: commonReducer$6,
10974
- goalExamples: commonReducer$8,
10975
- users: commonReducer$9,
10976
- reflections: reflectionReducer,
10977
- reflectionResults: reflectionReducer$1,
10978
- feedbacks: commonReducer$a,
10979
- assessments: commonReducer$b,
10980
- questionByCategory: questionCategoryReducer,
10981
- mailCategory: questionBankReducer$1,
10982
- questionCate: questionCateReducer,
10983
- notification: questionBankReducer$2,
10984
- myStudent: commonReducer$c,
10985
- assignments: commonReducer$7,
10986
- assistants: assistantReducer,
10987
- sesstionTemplates: sessionTemplateReducer,
10988
- sessionTemplateGeneralClasses: sessionTemplateGeneralClassReducer,
10989
- tutorialScreens: tutorialScreenReducer,
10990
- customAlerts: commonReducer$d,
10991
- gallery: commonReducer$e,
10992
- dashboard: dashboardReducer,
10993
- sessionPlayer: sessionPlayerReducer,
10994
- dataPlayer: dataPlayer,
10995
- certificate: commonReducer$f,
10996
- improveMyClass: commonReducer$g,
10997
- widget: widgetReducer,
10998
- bandScores: commonReducer$h,
10999
- schoolBlankDays: commonReducer$i,
11000
- navMobileReducer: navMobileReducer
11001
- });
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
+ });
11002
10887
 
11003
- var store = toolkit.configureStore({
11004
- reducer: rootReducer,
11005
- middleware: function middleware(getDefaultMiddleware) {
11006
- return getDefaultMiddleware({
11007
- serializableCheck: false
11008
- }).concat(logger);
11009
- }
11010
- });
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;
11011
10897
 
11012
- var isInViewport = function isInViewport(el) {
11013
- var rect = el === null || el === void 0 ? void 0 : el.getBoundingClientRect();
11014
- return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);
11015
- };
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
+ });
11016
10903
 
11017
- var debounce = function debounce(callback, wait) {
11018
- var timeout = null;
11019
- return function () {
11020
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11021
- args[_key] = arguments[_key];
10904
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(function () {}) : void 0);
10905
+ } catch (e) {
10906
+ return Promise.reject(e);
11022
10907
  }
10908
+ }, [filters]);
11023
10909
 
11024
- var next = function next() {
11025
- return callback.apply(void 0, args);
11026
- };
10910
+ var reDirectDetailPage = function reDirectDetailPage(id) {
10911
+ var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
10912
+ history.push(url);
10913
+ };
11027
10914
 
11028
- clearTimeout(timeout);
11029
- timeout = setTimeout(next, wait);
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
11030
10925
  };
11031
10926
  };
11032
10927
 
11033
- var getTextFromHTML = function getTextFromHTML(htmlString) {
11034
- var p = document.createElement("p");
11035
- p.innerHTML = htmlString;
11036
- var text = p.innerText;
11037
- p.remove();
11038
- return text;
11039
- };
10928
+ var header$4 = "User";
11040
10929
 
11041
- var generateRandomString = (function () {
11042
- return (Math.random() + 1).toString(36).substring(7);
11043
- });
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;
11044
10940
 
11045
- var amplitudeClient = amplitude.getInstance();
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
+ }))));
11045
+ };
11046
+
11047
+ var amplitudeClient$1 = amplitude.getInstance();
11046
11048
 
11047
11049
  Object.defineProperty(exports, 'I18nextProvider', {
11048
11050
  enumerable: true,
@@ -11124,7 +11126,7 @@ exports.UploadFileButton = UploadFileButton;
11124
11126
  exports.UserDetail = UserDetail;
11125
11127
  exports.UserList = UserList;
11126
11128
  exports.addTab = addTab;
11127
- exports.amplitudeClient = amplitudeClient;
11129
+ exports.amplitudeClient = amplitudeClient$1;
11128
11130
  exports.answerQuestion = answerQuestion;
11129
11131
  exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
11130
11132
  exports.api = api;