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