mario-core 2.9.145-up → 2.9.147-level
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Alerts/ReactNotification.d.ts +2 -2
- package/dist/components/Image/UploadImage.d.ts +2 -2
- package/dist/components/Modals/ModelSelectRole.d.ts +7 -0
- package/dist/components/Modals/NotificationLogoutModal.d.ts +2 -2
- package/dist/components/Modals/NotificationModal.d.ts +2 -2
- package/dist/components/Others/QuitPrompt.d.ts +2 -2
- package/dist/components/Pagination/CustomPagination.d.ts +2 -2
- package/dist/components/Selectors/AcademicClassSelector.d.ts +2 -2
- package/dist/components/Selectors/CategorySelector.d.ts +2 -2
- package/dist/components/Selectors/CreatableSelector.d.ts +2 -2
- package/dist/components/Selectors/CustomSelector.d.ts +2 -2
- package/dist/components/Selectors/MailCategorySelectors.d.ts +2 -2
- package/dist/components/Selectors/QuestionCategorySelector.d.ts +2 -2
- package/dist/components/Selectors/QuestionTypeSelector.d.ts +2 -2
- package/dist/components/Selectors/StarRatingSelector.d.ts +2 -2
- package/dist/components/Selectors/SuggestionCategorySelector.d.ts +2 -2
- package/dist/components/Tabs/CustomTab.d.ts +2 -2
- package/dist/containers/Login/constant/type.d.ts +5 -0
- package/dist/containers/Login/views/Dashboard.d.ts +2 -2
- package/dist/containers/Login/views/Login.d.ts +2 -2
- package/dist/containers/Login/views/ModelSelectRole.d.ts +4 -0
- package/dist/containers/Login/views/block/BlockForgetPassword.d.ts +2 -2
- package/dist/containers/Login/views/block/BlockResetPassword.d.ts +2 -2
- package/dist/containers/Login/views/block/BlockTwoFactorLogin.d.ts +2 -2
- package/dist/containers/Login/views/block/QuoteContent.d.ts +2 -2
- package/dist/containers/Notifications/views/NotificationList.d.ts +2 -2
- package/dist/containers/Skill/components/SkillSelector.d.ts +2 -2
- package/dist/containers/User/views/UserDetail.d.ts +2 -2
- package/dist/containers/User/views/UserList.d.ts +2 -2
- package/dist/index.css +31 -4
- package/dist/index.js +805 -781
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +806 -782
- package/dist/index.modern.js.map +1 -1
- package/dist/layouts/TheContent.d.ts +1 -1
- package/dist/layouts/TheFooter.d.ts +1 -1
- package/dist/layouts/TheHeader.d.ts +5 -2
- package/dist/layouts/TheHeaderDropdown.d.ts +5 -2
- package/dist/layouts/TheLanguageDropdown.d.ts +2 -2
- package/dist/layouts/TheLayout.d.ts +2 -2
- package/dist/layouts/TheSidebar.d.ts +2 -2
- package/dist/redux/assessments/reducer.d.ts +2 -2
- package/dist/redux/assignment/reducer.d.ts +1 -1
- package/dist/redux/assistants/reducer.d.ts +1 -1
- package/dist/redux/badges/reducer.d.ts +1 -1
- package/dist/redux/bandScores/reducer.d.ts +1 -1
- package/dist/redux/certificate/reducer.d.ts +1 -1
- package/dist/redux/classes/reducer.d.ts +1 -1
- package/dist/redux/commons/reducer.d.ts +1 -1
- package/dist/redux/conferenceRubrics/reducer.d.ts +1 -1
- package/dist/redux/customAlert/reducer.d.ts +1 -1
- package/dist/redux/dashboard/reducer.d.ts +1 -1
- package/dist/redux/dataPlayer/reducer.d.ts +1 -1
- package/dist/redux/emailTemplates/reducer.d.ts +1 -1
- package/dist/redux/faqs/reducer.d.ts +1 -1
- package/dist/redux/feedback/reducer.d.ts +1 -1
- package/dist/redux/gallery/reducer.d.ts +1 -1
- package/dist/redux/goalExamples/reducer.d.ts +1 -1
- package/dist/redux/improveMyClass/reducer.d.ts +1 -1
- package/dist/redux/learningStrategies/reducer.d.ts +1 -1
- package/dist/redux/learningSupportCategories/reducer.d.ts +1 -1
- package/dist/redux/mailCategories/reducer.d.ts +1 -1
- package/dist/redux/navMobile/reducer.d.ts +1 -1
- package/dist/redux/notifications/reducer.d.ts +1 -1
- package/dist/redux/questionBanks/reducer.d.ts +1 -1
- package/dist/redux/questionByCategory/reducer.d.ts +1 -1
- package/dist/redux/questionCategory/reducer.d.ts +1 -1
- package/dist/redux/reflectionForms/reducer.d.ts +1 -1
- package/dist/redux/reflectionResults/reducer.d.ts +1 -1
- package/dist/redux/schoolBlankDays/reducer.d.ts +1 -1
- package/dist/redux/semester/reducer.d.ts +1 -1
- package/dist/redux/sessionPlayers/reducer.d.ts +1 -1
- package/dist/redux/sessionTemplateGeneralClasses/reducer.d.ts +1 -1
- package/dist/redux/sessionTemplates/reducer.d.ts +1 -1
- package/dist/redux/skills/reducer.d.ts +1 -1
- package/dist/redux/subjects/reducer.d.ts +1 -1
- package/dist/redux/suggestionBanks/reducer.d.ts +1 -1
- package/dist/redux/teacher/myStudent/reducer.d.ts +1 -1
- package/dist/redux/tutorialScreen/reducer.d.ts +2 -2
- package/dist/redux/users/reducer.d.ts +1 -1
- package/dist/redux/widget/reducer.d.ts +1 -1
- package/dist/utils/amplitude.d.ts +1 -0
- package/dist/utils/constants.d.ts +1 -0
- package/package.json +101 -101
package/dist/index.js
CHANGED
|
@@ -34,6 +34,7 @@ var Creatable = _interopDefault(require('react-select/creatable'));
|
|
|
34
34
|
var ReactNotification$1 = _interopDefault(require('react-notifications-component'));
|
|
35
35
|
require('react-notifications-component/dist/theme.css');
|
|
36
36
|
var ai = require('react-icons/ai');
|
|
37
|
+
require('symbol-observable');
|
|
37
38
|
|
|
38
39
|
var dashboard = "Dashboard";
|
|
39
40
|
var user = "User";
|
|
@@ -2763,7 +2764,7 @@ function _catch(body, recover) {
|
|
|
2763
2764
|
return result;
|
|
2764
2765
|
}
|
|
2765
2766
|
|
|
2766
|
-
var styles = {"btn-login-google":"_2HqmH","notification-count":"_2sew7","text-introduction":"_3OgWF","btn-trans-border":"_r9cAh","contact":"_NszFe","learn-more":"_MDjzH","title-quote":"_1Swkw","descriptions-quote":"_gi8vj","box-login":"_38Lo1","block-verification":"_1OzGy","block-login":"_wWIyO","title-login":"_3nuns","title-forgot-password":"_21qb6","btn-close":"_NhW9l","btn-login":"_3IL10","digital-privacy-icon":"_141p1","return-to-login":"_Ce3Kg","recover-account":"_2t6d9","link-to-login":"_3bDsd","remember":"_11FZt","term-and-conditions":"_3LXoI","descriptions-forgot-pass":"_PMcjT","content-icon":"_2rZY6","descriptions-icon":"_3SOdX","title-icon":"_y9lM2","nav-home":"_1TT1q","box-introduction":"_32V6L","icon":"_20YJX","form-user-name":"_39BJD","checkbox-remember":"_2K9b2","block-reset-password":"_23Sua","block-forgot-pass":"_3CWP6","page-not-login":"_3Wmco","content-quote":"_13Rk0","home-page":"_o6HKW","red-background":"_jOY7o","imageAnimation":"_wnn2_","login":"_F-hjL","login-content":"_149oA","logo-home":"_24U3W","img-box":"_2v-L_","img-login":"_3ncTL","img-login-rectangle":"_2kOvJ","c-main":"_39l0X","container-fluid":"_1BMwK","input-file-label":"_1XNpH","delete-avatar-button":"_1z5h9","header-logo":"_Gewcf","box-sidebar":"_2vcmv","sidebar-logo":"_1hXpy","sidebar-nav-links":"_3vb3s","c-active":"_36jSM","sidebar-nav-links-hover":"_DNrus","box-sidebar-header":"_3NEZj","box-logout":"_1wUDG","sidebar-btn-minimized":"_1S7Px","sidebar-logout":"_2P85D","nav-mobile":"_1qjbW","filter-media-file":"_1I62C","div":"_3cLcM","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","logout":"_1_9tV","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","hide-in-mobile":"_1INnO","hamburger-menu":"_2yRc8","box-content-home-page":"_ABUIP","collapse-box":"_WX97m","hide-in-desktop":"_2LIqK","control-input":"_2Zz97","custom-control":"_3-yp5"};
|
|
2767
|
+
var styles = {"btn-login-google":"_2HqmH","notification-count":"_2sew7","text-introduction":"_3OgWF","btn-trans-border":"_r9cAh","contact":"_NszFe","learn-more":"_MDjzH","title-quote":"_1Swkw","descriptions-quote":"_gi8vj","box-login":"_38Lo1","block-verification":"_1OzGy","block-login":"_wWIyO","title-login":"_3nuns","title-forgot-password":"_21qb6","btn-close":"_NhW9l","btn-login":"_3IL10","digital-privacy-icon":"_141p1","return-to-login":"_Ce3Kg","recover-account":"_2t6d9","link-to-login":"_3bDsd","remember":"_11FZt","term-and-conditions":"_3LXoI","descriptions-forgot-pass":"_PMcjT","content-icon":"_2rZY6","descriptions-icon":"_3SOdX","title-icon":"_y9lM2","nav-home":"_1TT1q","box-introduction":"_32V6L","icon":"_20YJX","form-user-name":"_39BJD","checkbox-remember":"_2K9b2","block-reset-password":"_23Sua","block-forgot-pass":"_3CWP6","page-not-login":"_3Wmco","content-quote":"_13Rk0","home-page":"_o6HKW","red-background":"_jOY7o","imageAnimation":"_wnn2_","login":"_F-hjL","login-content":"_149oA","logo-home":"_24U3W","img-box":"_2v-L_","img-login":"_3ncTL","img-login-rectangle":"_2kOvJ","c-main":"_39l0X","container-fluid":"_1BMwK","input-file-label":"_1XNpH","delete-avatar-button":"_1z5h9","header-logo":"_Gewcf","box-sidebar":"_2vcmv","sidebar-logo":"_1hXpy","sidebar-nav-links":"_3vb3s","c-active":"_36jSM","sidebar-nav-links-hover":"_DNrus","box-sidebar-header":"_3NEZj","box-logout":"_1wUDG","sidebar-btn-minimized":"_1S7Px","sidebar-logout":"_2P85D","nav-mobile":"_1qjbW","filter-media-file":"_1I62C","div":"_3cLcM","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","logout":"_1_9tV","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","hide-in-mobile":"_1INnO","hamburger-menu":"_2yRc8","box-content-home-page":"_ABUIP","collapse-box":"_WX97m","hide-in-desktop":"_2LIqK","control-input":"_2Zz97","custom-control":"_3-yp5","item-select-role":"_1KcY7","item-role-active":"_dOVso","model-switch-roles":"_3ZqxI","title":"_g-p72"};
|
|
2767
2768
|
|
|
2768
2769
|
var style = {
|
|
2769
2770
|
fontSize: "0.85rem"
|
|
@@ -2999,6 +3000,16 @@ var ROLES = {
|
|
|
2999
3000
|
SECONDARY_TEACHER: "SecondaryTeacher"
|
|
3000
3001
|
};
|
|
3001
3002
|
var NOTIFICATION_ALERT_KEY = "NOTIFICATION_ALERT_KEY";
|
|
3003
|
+
var handleUserRole = function handleUserRole(userRoles) {
|
|
3004
|
+
if (userRoles !== null && userRoles !== void 0 && userRoles.includes("Teacher") && userRoles !== null && userRoles !== void 0 && userRoles.includes("Assistant")) {
|
|
3005
|
+
var roles = userRoles.filter(function (r) {
|
|
3006
|
+
return r !== "Teacher" && r !== "Assistant";
|
|
3007
|
+
});
|
|
3008
|
+
roles.push("Teacher/Assistant");
|
|
3009
|
+
return roles;
|
|
3010
|
+
}
|
|
3011
|
+
return userRoles;
|
|
3012
|
+
};
|
|
3002
3013
|
|
|
3003
3014
|
var getAccessToken = (function () {
|
|
3004
3015
|
try {
|
|
@@ -3619,7 +3630,7 @@ var BlockLogin = function BlockLogin(_ref) {
|
|
|
3619
3630
|
}, React__default.createElement("div", {
|
|
3620
3631
|
className: "" + styles["block-form"]
|
|
3621
3632
|
}, React__default.createElement("img", {
|
|
3622
|
-
src: "/images/
|
|
3633
|
+
src: "/images/horizontal-logo-blue.svg",
|
|
3623
3634
|
className: "" + styles["img-login-rectangle"]
|
|
3624
3635
|
}), React__default.createElement("p", {
|
|
3625
3636
|
className: "" + styles["title-login"]
|
|
@@ -4139,7 +4150,7 @@ var Dashboard = function Dashboard() {
|
|
|
4139
4150
|
href: "/",
|
|
4140
4151
|
className: "" + styles["logo-home"]
|
|
4141
4152
|
}, React__default.createElement("img", {
|
|
4142
|
-
src: "/images/logo-
|
|
4153
|
+
src: "/images/horizontal-logo-white.svg",
|
|
4143
4154
|
alt: "mario"
|
|
4144
4155
|
})), React__default.createElement(gi.GiHamburgerMenu, {
|
|
4145
4156
|
onClick: toggle,
|
|
@@ -4372,21 +4383,23 @@ var DEFAULT_USER_AVATAR = "/avatars/default-avatar.png";
|
|
|
4372
4383
|
var ADMIN_ROLE = "Admin";
|
|
4373
4384
|
var TEACHER_ROLE = "Teacher";
|
|
4374
4385
|
var USER_DETAIL_URL = "/admin/user";
|
|
4375
|
-
var TheHeaderDropdown = function TheHeaderDropdown() {
|
|
4386
|
+
var TheHeaderDropdown = function TheHeaderDropdown(_ref) {
|
|
4387
|
+
var _handleUserRole;
|
|
4388
|
+
var onToggleModel = _ref.onToggleModel;
|
|
4376
4389
|
var user = reactRedux.useSelector(function (state) {
|
|
4377
4390
|
return state.common.user;
|
|
4378
4391
|
});
|
|
4379
4392
|
var dispatch = reactRedux.useDispatch();
|
|
4393
|
+
var location = reactRouterDom.useLocation();
|
|
4380
4394
|
var history = reactRouterDom.useHistory();
|
|
4395
|
+
var params = new URLSearchParams(location.search);
|
|
4396
|
+
var isReadOnly = params.get("isReadOnly");
|
|
4381
4397
|
var email = user.email,
|
|
4382
4398
|
profileImageFileName = user.profileImageFileName,
|
|
4383
4399
|
roles = user.roles,
|
|
4384
4400
|
id = user.id;
|
|
4385
4401
|
var isAdmin = roles.includes(ADMIN_ROLE);
|
|
4386
4402
|
var isTeacher = roles.includes(TEACHER_ROLE);
|
|
4387
|
-
var goToTeacherPanel = React.useCallback(function () {
|
|
4388
|
-
isTeacher && history.push("/home");
|
|
4389
|
-
}, [isTeacher, history]);
|
|
4390
4403
|
var signOut = React.useCallback(function () {
|
|
4391
4404
|
localStorage.removeItem(ACCESS_TOKEN);
|
|
4392
4405
|
dispatch(reset());
|
|
@@ -4424,20 +4437,20 @@ var TheHeaderDropdown = function TheHeaderDropdown() {
|
|
|
4424
4437
|
className: styles["content-text"]
|
|
4425
4438
|
}, React__default.createElement("h5", null, user.firstName + " " + user.lastName), React__default.createElement("span", {
|
|
4426
4439
|
className: "block"
|
|
4427
|
-
}, email), !isDistrict && React__default.createElement(reactstrap.NavLink, null, isTeacher && React__default.createElement(reactRouterDom.Link, {
|
|
4428
|
-
to: "/my-profile"
|
|
4429
|
-
}, "Edit profile"),
|
|
4430
|
-
|
|
4431
|
-
|
|
4432
|
-
|
|
4440
|
+
}, email), !isDistrict && React__default.createElement(reactstrap.NavLink, null, (isAdmin || isTeacher) && React__default.createElement(reactRouterDom.Link, {
|
|
4441
|
+
to: "" + (isAdmin ? USER_DETAIL_URL + "/" + id : "/my-profile")
|
|
4442
|
+
}, "Edit profile")))), ((_handleUserRole = handleUserRole((user === null || user === void 0 ? void 0 : user.roles) || [])) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.length) > 1 && !isReadOnly && React__default.createElement(reactstrap.DropdownItem, {
|
|
4443
|
+
onClick: function onClick() {
|
|
4444
|
+
onToggleModel === null || onToggleModel === void 0 ? void 0 : onToggleModel();
|
|
4445
|
+
},
|
|
4433
4446
|
className: styles["dropdown-change"] + " px-0"
|
|
4434
4447
|
}, React__default.createElement("div", {
|
|
4435
|
-
className: styles["item-address"] + " d-flex align-items-center w-100"
|
|
4448
|
+
className: styles["item-address"] + " d-flex align-items-center w-100 text-uppercase mb-2"
|
|
4436
4449
|
}, React__default.createElement("span", {
|
|
4437
4450
|
className: "mr-2"
|
|
4438
4451
|
}, React__default.createElement("i", {
|
|
4439
4452
|
className: "fas fa-cogs h6 mb-0"
|
|
4440
|
-
})), "
|
|
4453
|
+
})), "Role change")), React__default.createElement(reactstrap.DropdownItem, {
|
|
4441
4454
|
onClick: signOut,
|
|
4442
4455
|
className: styles["dropdown-change"] + " px-0"
|
|
4443
4456
|
}, React__default.createElement("div", {
|
|
@@ -4518,7 +4531,8 @@ var TheLanguageDropdown = function TheLanguageDropdown() {
|
|
|
4518
4531
|
})), "United States"))));
|
|
4519
4532
|
};
|
|
4520
4533
|
|
|
4521
|
-
var TheHeader = function TheHeader() {
|
|
4534
|
+
var TheHeader = function TheHeader(_ref) {
|
|
4535
|
+
var onToggleModel = _ref.onToggleModel;
|
|
4522
4536
|
var dispatch = reactRedux.useDispatch();
|
|
4523
4537
|
var sidebarShow = reactRedux.useSelector(function (state) {
|
|
4524
4538
|
return state.common.sidebarShow;
|
|
@@ -4550,7 +4564,9 @@ var TheHeader = function TheHeader() {
|
|
|
4550
4564
|
},
|
|
4551
4565
|
href: '/privacy-policy',
|
|
4552
4566
|
target: "blank"
|
|
4553
|
-
}, "Privacy Policy"), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown,
|
|
4567
|
+
}, "Privacy Policy"), !isDistrict && React__default.createElement(NotificationButton, null), React__default.createElement(TheHeaderDropdown, {
|
|
4568
|
+
onToggleModel: onToggleModel
|
|
4569
|
+
})));
|
|
4554
4570
|
};
|
|
4555
4571
|
|
|
4556
4572
|
var TITLE$2 = "Not found";
|
|
@@ -4657,6 +4673,54 @@ var canAccess = function canAccess(userRoles, componentRoles) {
|
|
|
4657
4673
|
return true;
|
|
4658
4674
|
};
|
|
4659
4675
|
|
|
4676
|
+
var ModelSelectRole = function ModelSelectRole(_ref) {
|
|
4677
|
+
var _handleUserRole;
|
|
4678
|
+
var open = _ref.open,
|
|
4679
|
+
onToggleModel = _ref.onToggleModel;
|
|
4680
|
+
var dispatch = reactRedux.useDispatch();
|
|
4681
|
+
var history = reactRouterDom.useHistory();
|
|
4682
|
+
var pathname = window.location.pathname;
|
|
4683
|
+
var user = reactRedux.useSelector(function (state) {
|
|
4684
|
+
return state.common.user;
|
|
4685
|
+
});
|
|
4686
|
+
var roles = user === null || user === void 0 ? void 0 : user.roles;
|
|
4687
|
+
var handleSelectUserRoles = function handleSelectUserRoles(roles) {
|
|
4688
|
+
if (roles.includes("Admin")) {
|
|
4689
|
+
dispatch(setLoading(true));
|
|
4690
|
+
return history.push("/admin/dashboard");
|
|
4691
|
+
}
|
|
4692
|
+
var roleSelect = roles.includes("Teacher/Assistant") ? ["Teacher", "Assistant"] : roles;
|
|
4693
|
+
dispatch(setUser(_extends({}, user, {
|
|
4694
|
+
roles: roleSelect
|
|
4695
|
+
})));
|
|
4696
|
+
localStorage.setItem("ROLES", roleSelect.toString());
|
|
4697
|
+
onToggleModel();
|
|
4698
|
+
if (roles.includes("Parent")) {
|
|
4699
|
+
history.push("/parent");
|
|
4700
|
+
} else {
|
|
4701
|
+
pathname !== "/home" ? history.push("/home") : window.location.reload();
|
|
4702
|
+
}
|
|
4703
|
+
};
|
|
4704
|
+
return React__default.createElement(reactstrap.Modal, {
|
|
4705
|
+
isOpen: open,
|
|
4706
|
+
toggle: function toggle() {
|
|
4707
|
+
return onToggleModel();
|
|
4708
|
+
},
|
|
4709
|
+
className: "" + styles["model-switch-roles"],
|
|
4710
|
+
centered: true
|
|
4711
|
+
}, React__default.createElement("p", {
|
|
4712
|
+
className: "" + styles["title"]
|
|
4713
|
+
}, "Continue as:"), React__default.createElement("div", null, (_handleUserRole = handleUserRole(user === null || user === void 0 ? void 0 : user.roles)) === null || _handleUserRole === void 0 ? void 0 : _handleUserRole.map(function (r) {
|
|
4714
|
+
return React__default.createElement("p", {
|
|
4715
|
+
key: r,
|
|
4716
|
+
className: styles["item-select-role"] + " " + styles[roles.includes("Teacher") && roles.includes("Assistant") && r === "Teacher/Assistant" && !roles.includes("Admin") || roles.includes("Admin") && r === "Admin" || roles.includes(r) && !roles.includes("Admin") ? "item-role-active" : ""],
|
|
4717
|
+
onClick: function onClick() {
|
|
4718
|
+
return handleSelectUserRoles([r]);
|
|
4719
|
+
}
|
|
4720
|
+
}, r == "SecondaryTeacher" ? "Support Teacher" : r);
|
|
4721
|
+
})));
|
|
4722
|
+
};
|
|
4723
|
+
|
|
4660
4724
|
var TheLayout = function TheLayout(_ref) {
|
|
4661
4725
|
var routes = _ref.routes,
|
|
4662
4726
|
navigation = _ref.navigation;
|
|
@@ -4668,11 +4732,17 @@ var TheLayout = function TheLayout(_ref) {
|
|
|
4668
4732
|
var language = reactRedux.useSelector(function (state) {
|
|
4669
4733
|
return state.common.language;
|
|
4670
4734
|
});
|
|
4735
|
+
var _useState = React.useState(false),
|
|
4736
|
+
openModelSelectRole = _useState[0],
|
|
4737
|
+
setOpenModelSelectRole = _useState[1];
|
|
4671
4738
|
var _useTranslation = reactI18next.useTranslation(),
|
|
4672
4739
|
t = _useTranslation.t;
|
|
4673
4740
|
var location = reactRouterDom.useLocation();
|
|
4674
4741
|
var isNotification = location.pathname.includes("notifications");
|
|
4675
4742
|
var isDistrict = window.location.host.includes("-district");
|
|
4743
|
+
var handleToggleModel = function handleToggleModel() {
|
|
4744
|
+
setOpenModelSelectRole(!openModelSelectRole);
|
|
4745
|
+
};
|
|
4676
4746
|
var authRoutes = React.useMemo(function () {
|
|
4677
4747
|
return routes.filter(function (route) {
|
|
4678
4748
|
return canAccess(user === null || user === void 0 ? void 0 : user.roles, route.roles);
|
|
@@ -4738,11 +4808,16 @@ var TheLayout = function TheLayout(_ref) {
|
|
|
4738
4808
|
navigation: authNavigations
|
|
4739
4809
|
}), React__default.createElement("div", {
|
|
4740
4810
|
className: "c-wrapper"
|
|
4741
|
-
}, !isNotification && React__default.createElement(TheHeader,
|
|
4811
|
+
}, !isNotification && React__default.createElement(TheHeader, {
|
|
4812
|
+
onToggleModel: handleToggleModel
|
|
4813
|
+
}), React__default.createElement("div", {
|
|
4742
4814
|
className: "c-body bg-white"
|
|
4743
4815
|
}, React__default.createElement(TheContent$1, {
|
|
4744
4816
|
routes: authRoutes
|
|
4745
|
-
})))
|
|
4817
|
+
}))), React__default.createElement(ModelSelectRole, {
|
|
4818
|
+
open: openModelSelectRole,
|
|
4819
|
+
onToggleModel: handleToggleModel
|
|
4820
|
+
}));
|
|
4746
4821
|
};
|
|
4747
4822
|
|
|
4748
4823
|
var buttonTextStyle = {
|
|
@@ -6826,8 +6901,80 @@ var SkillList = function SkillList() {
|
|
|
6826
6901
|
}))));
|
|
6827
6902
|
};
|
|
6828
6903
|
|
|
6829
|
-
var
|
|
6830
|
-
var
|
|
6904
|
+
var MAX_FILE_SIZE = 20097152;
|
|
6905
|
+
var UploadFileButton = function UploadFileButton(_ref) {
|
|
6906
|
+
var fileName = _ref.fileName,
|
|
6907
|
+
maxWidth = _ref.maxWidth,
|
|
6908
|
+
maxHeight = _ref.maxHeight,
|
|
6909
|
+
setFile = _ref.setFile,
|
|
6910
|
+
canDelete = _ref.canDelete,
|
|
6911
|
+
onDelete = _ref.onDelete,
|
|
6912
|
+
isCheckFeedBack = _ref.isCheckFeedBack,
|
|
6913
|
+
onAddImage = _ref.onAddImage;
|
|
6914
|
+
var dispatch = reactRedux.useDispatch();
|
|
6915
|
+
var _useState = React.useState(""),
|
|
6916
|
+
imagePreviewUrl = _useState[0],
|
|
6917
|
+
setImagePreviewUrl = _useState[1];
|
|
6918
|
+
var imageStyle = {
|
|
6919
|
+
maxWidth: maxWidth || "100%",
|
|
6920
|
+
maxHeight: maxHeight || "100%"
|
|
6921
|
+
};
|
|
6922
|
+
var imageSrc = imagePreviewUrl || getFileUrl(fileName);
|
|
6923
|
+
var handleImageChange = function handleImageChange(e) {
|
|
6924
|
+
e.preventDefault();
|
|
6925
|
+
var reader = new FileReader();
|
|
6926
|
+
var newFile = e.target.files[0];
|
|
6927
|
+
if (newFile.size > MAX_FILE_SIZE) {
|
|
6928
|
+
dispatch(setAlert({
|
|
6929
|
+
type: "danger",
|
|
6930
|
+
message: "File can't be larger than 2MB"
|
|
6931
|
+
}));
|
|
6932
|
+
return;
|
|
6933
|
+
}
|
|
6934
|
+
reader.onloadend = function () {
|
|
6935
|
+
setFile(newFile);
|
|
6936
|
+
setImagePreviewUrl(reader.result);
|
|
6937
|
+
};
|
|
6938
|
+
if (newFile) {
|
|
6939
|
+
reader.readAsDataURL(newFile);
|
|
6940
|
+
}
|
|
6941
|
+
!!onAddImage && onAddImage();
|
|
6942
|
+
};
|
|
6943
|
+
var imagePreviewContainer = imagePreviewUrl || fileName ? React__default.createElement("img", {
|
|
6944
|
+
style: imageStyle,
|
|
6945
|
+
src: imageSrc,
|
|
6946
|
+
alt: "image"
|
|
6947
|
+
}) : null;
|
|
6948
|
+
return React__default.createElement("div", {
|
|
6949
|
+
className: "mb-2"
|
|
6950
|
+
}, React__default.createElement(reactstrap.Form, {
|
|
6951
|
+
className: "mb-2"
|
|
6952
|
+
}, React__default.createElement(reactstrap.Input, {
|
|
6953
|
+
className: "d-none",
|
|
6954
|
+
type: "file",
|
|
6955
|
+
id: "uploadFile",
|
|
6956
|
+
onChange: handleImageChange,
|
|
6957
|
+
accept: "image/*"
|
|
6958
|
+
}), React__default.createElement("div", {
|
|
6959
|
+
className: "d-flex align-items-center"
|
|
6960
|
+
}, React__default.createElement(reactstrap.Label, {
|
|
6961
|
+
htmlFor: "uploadFile",
|
|
6962
|
+
role: "button",
|
|
6963
|
+
tabIndex: 0,
|
|
6964
|
+
className: styles["input-file-label"]
|
|
6965
|
+
}, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
|
|
6966
|
+
className: "fa fa-paperclip mr-1",
|
|
6967
|
+
"aria-hidden": "true"
|
|
6968
|
+
}), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
|
|
6969
|
+
size: "sm",
|
|
6970
|
+
color: "danger",
|
|
6971
|
+
className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
|
|
6972
|
+
onClick: function onClick() {
|
|
6973
|
+
setImagePreviewUrl(null);
|
|
6974
|
+
onDelete && onDelete();
|
|
6975
|
+
}
|
|
6976
|
+
}, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
|
|
6977
|
+
};
|
|
6831
6978
|
|
|
6832
6979
|
var USER_URL$1 = BASE_URL + "/api/user";
|
|
6833
6980
|
var CHANGE_PASSWORD = BASE_URL + "/api/Account/changePassword";
|
|
@@ -6860,54 +7007,65 @@ var switchAccountUser = function switchAccountUser(id) {
|
|
|
6860
7007
|
return api.post(EDU_USER_URL + "/switch-user/" + id);
|
|
6861
7008
|
};
|
|
6862
7009
|
|
|
6863
|
-
var
|
|
6864
|
-
|
|
6865
|
-
|
|
6866
|
-
|
|
6867
|
-
|
|
6868
|
-
|
|
6869
|
-
|
|
6870
|
-
|
|
6871
|
-
|
|
6872
|
-
|
|
6873
|
-
|
|
6874
|
-
|
|
6875
|
-
|
|
6876
|
-
var userList = reactRedux.useSelector(function (state) {
|
|
6877
|
-
return state.users.userList;
|
|
6878
|
-
});
|
|
6879
|
-
var totalItems = reactRedux.useSelector(function (state) {
|
|
6880
|
-
return state.users.totalItems;
|
|
6881
|
-
});
|
|
6882
|
-
var _useFilters = useFilters(),
|
|
6883
|
-
filters = _useFilters.filters,
|
|
6884
|
-
changeFilters = _useFilters.changeFilters;
|
|
6885
|
-
var _useState = React.useState(!!queryName ? queryName : ""),
|
|
6886
|
-
fullName = _useState[0],
|
|
6887
|
-
setFullName = _useState[1];
|
|
6888
|
-
var isDistrict = window.location.host.includes("-district");
|
|
7010
|
+
var initValue$3 = {
|
|
7011
|
+
id: "",
|
|
7012
|
+
firstName: "",
|
|
7013
|
+
lastName: "",
|
|
7014
|
+
email: "",
|
|
7015
|
+
dateOfBirth: "",
|
|
7016
|
+
roles: [],
|
|
7017
|
+
isActive: true,
|
|
7018
|
+
profileImageFileName: ""
|
|
7019
|
+
};
|
|
7020
|
+
var USER_LIST_URL = "/admin/user";
|
|
7021
|
+
var TITLE$7 = "User detail";
|
|
7022
|
+
var useUserDetail = function useUserDetail(id) {
|
|
6889
7023
|
var dispatch = reactRedux.useDispatch();
|
|
6890
|
-
var
|
|
7024
|
+
var history = reactRouterDom.useHistory();
|
|
7025
|
+
var _useState = React.useState(initValue$3),
|
|
7026
|
+
userDetail = _useState[0],
|
|
7027
|
+
setUserDetail = _useState[1];
|
|
7028
|
+
var _useState2 = React.useState(null),
|
|
7029
|
+
file = _useState2[0],
|
|
7030
|
+
setFile = _useState2[1];
|
|
7031
|
+
var _useState3 = React.useState(false),
|
|
7032
|
+
edited = _useState3[0],
|
|
7033
|
+
setEdited = _useState3[1];
|
|
7034
|
+
var setEditedTrue = function setEditedTrue() {
|
|
7035
|
+
try {
|
|
7036
|
+
localStorage.setItem(window.location.href, "true");
|
|
7037
|
+
setEdited(true);
|
|
7038
|
+
return Promise.resolve();
|
|
7039
|
+
} catch (e) {
|
|
7040
|
+
return Promise.reject(e);
|
|
7041
|
+
}
|
|
7042
|
+
};
|
|
7043
|
+
var _useState4 = React.useState([]),
|
|
7044
|
+
currentRoles = _useState4[0],
|
|
7045
|
+
setCurrentRoles = _useState4[1];
|
|
7046
|
+
React.useEffect(function () {
|
|
7047
|
+
document.title = TITLE$7;
|
|
7048
|
+
setEdited(false);
|
|
7049
|
+
if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
|
|
7050
|
+
}, []);
|
|
7051
|
+
React.useEffect(function () {
|
|
7052
|
+
!!id && getData();
|
|
7053
|
+
}, [id]);
|
|
7054
|
+
var getData = React.useCallback(function () {
|
|
6891
7055
|
try {
|
|
6892
7056
|
var _temp2 = function _temp2() {
|
|
6893
7057
|
dispatch(setLoading(false));
|
|
6894
7058
|
};
|
|
6895
7059
|
dispatch(setLoading(true));
|
|
6896
7060
|
var _temp = _catch(function () {
|
|
6897
|
-
return Promise.resolve(
|
|
6898
|
-
|
|
6899
|
-
|
|
6900
|
-
|
|
6901
|
-
|
|
6902
|
-
totalItems = _res$data.totalItems;
|
|
6903
|
-
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
6904
|
-
var user = _step.value;
|
|
6905
|
-
user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
|
|
6906
|
-
}
|
|
6907
|
-
dispatch(setUserList({
|
|
6908
|
-
userList: items,
|
|
6909
|
-
totalItems: totalItems
|
|
7061
|
+
return Promise.resolve(getById$3(id)).then(function (res) {
|
|
7062
|
+
var _res$data$roles, _res$data, _res$data2;
|
|
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
|
|
6910
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;
|
|
6911
7069
|
});
|
|
6912
7070
|
}, function (err) {
|
|
6913
7071
|
var _err$response, _err$response$data;
|
|
@@ -6920,664 +7078,184 @@ var useUserList = function useUserList() {
|
|
|
6920
7078
|
} catch (e) {
|
|
6921
7079
|
return Promise.reject(e);
|
|
6922
7080
|
}
|
|
6923
|
-
}, [
|
|
6924
|
-
React.
|
|
6925
|
-
|
|
7081
|
+
}, [id]);
|
|
7082
|
+
var backToList = React.useCallback(function (user) {
|
|
7083
|
+
!!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
|
|
6926
7084
|
}, []);
|
|
6927
|
-
React.
|
|
6928
|
-
if (!!fullName) {
|
|
6929
|
-
getData(fullName);
|
|
6930
|
-
setFullName(null);
|
|
6931
|
-
} else {
|
|
6932
|
-
getData();
|
|
6933
|
-
}
|
|
6934
|
-
}, [filters]);
|
|
6935
|
-
var removeData = React.useCallback(function (id) {
|
|
6936
|
-
dispatch(setLoading(true));
|
|
7085
|
+
var confirmData = React.useCallback(function (data) {
|
|
6937
7086
|
try {
|
|
6938
|
-
|
|
6939
|
-
|
|
6940
|
-
|
|
6941
|
-
|
|
6942
|
-
|
|
6943
|
-
|
|
6944
|
-
|
|
6945
|
-
|
|
6946
|
-
|
|
6947
|
-
|
|
6948
|
-
|
|
6949
|
-
|
|
6950
|
-
currentPage: 1
|
|
7087
|
+
var _temp6 = function _temp6() {
|
|
7088
|
+
dispatch(setLoading(false));
|
|
7089
|
+
};
|
|
7090
|
+
dispatch(setLoading(true));
|
|
7091
|
+
var _temp5 = _catch(function () {
|
|
7092
|
+
function _temp4() {
|
|
7093
|
+
var next = !!id ? update$5 : create$5;
|
|
7094
|
+
!id && delete data.id;
|
|
7095
|
+
return Promise.resolve(next(data)).then(function (result) {
|
|
7096
|
+
if (!!result) {
|
|
7097
|
+
getById$3(result.data.id).then(function (e) {
|
|
7098
|
+
backToList(e.data.fullName);
|
|
6951
7099
|
});
|
|
6952
|
-
}
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
|
|
7100
|
+
}
|
|
7101
|
+
if (!id) {
|
|
7102
|
+
alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
|
|
7103
|
+
}
|
|
7104
|
+
dispatch(setAlert({
|
|
7105
|
+
type: "success",
|
|
7106
|
+
message: (!!id ? "Update" : "Create") + " user successfully"
|
|
7107
|
+
}));
|
|
7108
|
+
});
|
|
6956
7109
|
}
|
|
6957
|
-
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
6963
|
-
|
|
7110
|
+
var _temp3 = function () {
|
|
7111
|
+
if (!!file) {
|
|
7112
|
+
var formData = new FormData();
|
|
7113
|
+
var name = file.name;
|
|
7114
|
+
formData.append("file", file, name);
|
|
7115
|
+
return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
|
|
7116
|
+
var _res$data3;
|
|
7117
|
+
var imageUrl = res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.key;
|
|
7118
|
+
data.profileImageFileName = imageUrl;
|
|
7119
|
+
});
|
|
7120
|
+
}
|
|
7121
|
+
}();
|
|
7122
|
+
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
|
|
7123
|
+
}, function (err) {
|
|
7124
|
+
var _err$response2, _err$response2$data;
|
|
7125
|
+
dispatch(setAlert({
|
|
7126
|
+
type: "danger",
|
|
7127
|
+
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
|
|
7128
|
+
}));
|
|
7129
|
+
});
|
|
7130
|
+
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
|
|
7131
|
+
} catch (e) {
|
|
7132
|
+
return Promise.reject(e);
|
|
6964
7133
|
}
|
|
6965
|
-
|
|
6966
|
-
|
|
6967
|
-
|
|
6968
|
-
|
|
6969
|
-
|
|
6970
|
-
|
|
6971
|
-
|
|
6972
|
-
|
|
6973
|
-
|
|
6974
|
-
|
|
6975
|
-
|
|
6976
|
-
|
|
6977
|
-
|
|
6978
|
-
|
|
6979
|
-
|
|
6980
|
-
|
|
6981
|
-
|
|
6982
|
-
|
|
6983
|
-
|
|
6984
|
-
|
|
6985
|
-
|
|
6986
|
-
|
|
6987
|
-
|
|
6988
|
-
|
|
6989
|
-
|
|
6990
|
-
}
|
|
6991
|
-
|
|
6992
|
-
} else if (roles.includes("Student")) {
|
|
6993
|
-
history.push(HOMEPAGE_STUDENT$1);
|
|
6994
|
-
} else if (roles.includes("Parent")) {
|
|
6995
|
-
history.push(HOMEPAGE_PARENT$1);
|
|
6996
|
-
} else if (roles.includes("EduTeacher")) {
|
|
6997
|
-
history.push(HOMEPAGE_EDU_TEACHER$1);
|
|
6998
|
-
} else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
|
|
6999
|
-
history.push(HOMEPAGE_TEACHER$1);
|
|
7134
|
+
}, [id, file]);
|
|
7135
|
+
var handleDisableRoles = function handleDisableRoles(currentRoles) {
|
|
7136
|
+
return ["Student", "Parent", "EduTeacher"].includes(currentRoles);
|
|
7137
|
+
};
|
|
7138
|
+
var confirmChangePassword = function confirmChangePassword(data) {
|
|
7139
|
+
try {
|
|
7140
|
+
var _temp8 = function _temp8() {
|
|
7141
|
+
dispatch(setLoading(false));
|
|
7142
|
+
};
|
|
7143
|
+
dispatch(setLoading(true));
|
|
7144
|
+
var _temp7 = _catch(function () {
|
|
7145
|
+
return Promise.resolve(changePassword(data)).then(function () {
|
|
7146
|
+
dispatch(setAlert({
|
|
7147
|
+
type: "success",
|
|
7148
|
+
message: "Change password successfully"
|
|
7149
|
+
}));
|
|
7150
|
+
});
|
|
7151
|
+
}, function (e) {
|
|
7152
|
+
var _e$response, _e$response$data;
|
|
7153
|
+
dispatch(setAlert({
|
|
7154
|
+
type: "danger",
|
|
7155
|
+
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
|
|
7156
|
+
}));
|
|
7157
|
+
});
|
|
7158
|
+
return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7));
|
|
7159
|
+
} catch (e) {
|
|
7160
|
+
return Promise.reject(e);
|
|
7000
7161
|
}
|
|
7001
7162
|
};
|
|
7002
|
-
var
|
|
7163
|
+
var forgotPasswordRequest = React.useCallback(function (data) {
|
|
7003
7164
|
try {
|
|
7004
|
-
var
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
|
|
7009
|
-
|
|
7010
|
-
|
|
7011
|
-
|
|
7012
|
-
|
|
7013
|
-
var _temp5 = function _temp5() {
|
|
7014
|
-
dispatch(setLoading(false));
|
|
7015
|
-
};
|
|
7016
|
-
dispatch(setLoading(true));
|
|
7017
|
-
var _temp4 = _catch(function () {
|
|
7018
|
-
var req = {
|
|
7019
|
-
email: data.email,
|
|
7020
|
-
password: "default",
|
|
7021
|
-
accessToken: data.token
|
|
7022
|
-
};
|
|
7023
|
-
return Promise.resolve(logIn(req)).then(function (res) {
|
|
7024
|
-
localStorage.clear();
|
|
7025
|
-
redirectLoginUser(res);
|
|
7026
|
-
});
|
|
7027
|
-
}, function (err) {
|
|
7028
|
-
var _err$response3, _err$response3$data;
|
|
7029
|
-
setAlert({
|
|
7030
|
-
type: "danger",
|
|
7031
|
-
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
|
|
7032
|
-
});
|
|
7033
|
-
});
|
|
7034
|
-
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
|
|
7035
|
-
} catch (e) {
|
|
7036
|
-
return Promise.reject(e);
|
|
7037
|
-
}
|
|
7038
|
-
}
|
|
7165
|
+
var _temp10 = function _temp10() {
|
|
7166
|
+
dispatch(setLoading(false));
|
|
7167
|
+
};
|
|
7168
|
+
dispatch(setLoading(true));
|
|
7169
|
+
var _temp9 = _catch(function () {
|
|
7170
|
+
return Promise.resolve(forgotChangePassword(data)).then(function () {
|
|
7171
|
+
dispatch(setAlert({
|
|
7172
|
+
type: "success",
|
|
7173
|
+
message: "Send forgot password link successfully"
|
|
7039
7174
|
}));
|
|
7040
7175
|
});
|
|
7041
7176
|
}, function (err) {
|
|
7042
|
-
var _err$
|
|
7177
|
+
var _err$response3, _err$response3$data;
|
|
7043
7178
|
dispatch(setAlert({
|
|
7044
7179
|
type: "danger",
|
|
7045
|
-
message: ((_err$
|
|
7180
|
+
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"
|
|
7046
7181
|
}));
|
|
7047
7182
|
});
|
|
7048
|
-
return Promise.resolve(
|
|
7183
|
+
return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(_temp10) : _temp10(_temp9));
|
|
7049
7184
|
} catch (e) {
|
|
7050
7185
|
return Promise.reject(e);
|
|
7051
7186
|
}
|
|
7052
|
-
}, [
|
|
7053
|
-
var reDirectDetailPage = function reDirectDetailPage(id) {
|
|
7054
|
-
var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
|
|
7055
|
-
history.push(url);
|
|
7056
|
-
};
|
|
7187
|
+
}, []);
|
|
7057
7188
|
return {
|
|
7058
|
-
|
|
7059
|
-
|
|
7060
|
-
|
|
7061
|
-
|
|
7062
|
-
|
|
7063
|
-
|
|
7064
|
-
|
|
7065
|
-
|
|
7066
|
-
|
|
7189
|
+
userDetail: userDetail,
|
|
7190
|
+
backToList: backToList,
|
|
7191
|
+
confirmData: confirmData,
|
|
7192
|
+
file: file,
|
|
7193
|
+
setFile: setFile,
|
|
7194
|
+
edited: edited,
|
|
7195
|
+
setEdited: setEdited,
|
|
7196
|
+
setEditedTrue: setEditedTrue,
|
|
7197
|
+
confirmChangePassword: confirmChangePassword,
|
|
7198
|
+
forgotPasswordRequest: forgotPasswordRequest,
|
|
7199
|
+
currentRoles: currentRoles,
|
|
7200
|
+
handleDisableRoles: handleDisableRoles
|
|
7067
7201
|
};
|
|
7068
7202
|
};
|
|
7069
7203
|
|
|
7070
|
-
var
|
|
7071
|
-
|
|
7072
|
-
|
|
7073
|
-
|
|
7074
|
-
|
|
7075
|
-
|
|
7076
|
-
|
|
7077
|
-
searchString = _useState[0],
|
|
7078
|
-
setSearchString = _useState[1];
|
|
7079
|
-
React.useEffect(function () {
|
|
7080
|
-
setSearchString(initValue);
|
|
7081
|
-
}, [initValue]);
|
|
7082
|
-
var onKeyUp = React.useCallback(function (e) {
|
|
7083
|
-
e.key === "Enter" && onSearch(searchString);
|
|
7084
|
-
}, [searchString, onSearch]);
|
|
7085
|
-
return React__default.createElement(reactstrap.Input, {
|
|
7086
|
-
placeholder: placeholder,
|
|
7087
|
-
value: searchString,
|
|
7088
|
-
onChange: function onChange(e) {
|
|
7089
|
-
return setSearchString(e.target.value);
|
|
7090
|
-
},
|
|
7091
|
-
onKeyUp: onKeyUp,
|
|
7092
|
-
className: className,
|
|
7093
|
-
style: style
|
|
7094
|
-
});
|
|
7095
|
-
};
|
|
7096
|
-
SearchBox.defaultProps = {
|
|
7097
|
-
placeholder: "Type something to search",
|
|
7098
|
-
className: "",
|
|
7099
|
-
style: {}
|
|
7100
|
-
};
|
|
7101
|
-
var SearchBox$1 = React.memo(SearchBox);
|
|
7102
|
-
|
|
7103
|
-
var searchInputStyle = {
|
|
7104
|
-
height: 38
|
|
7105
|
-
};
|
|
7106
|
-
var SearchBoxContainer = function SearchBoxContainer(_ref) {
|
|
7107
|
-
var text = _ref.text,
|
|
7108
|
-
initValue = _ref.initValue,
|
|
7109
|
-
onClick = _ref.onClick,
|
|
7110
|
-
onSearch = _ref.onSearch,
|
|
7111
|
-
placeholder = _ref.placeholder;
|
|
7112
|
-
return React__default.createElement("div", {
|
|
7113
|
-
className: "d-flex align-items-center"
|
|
7114
|
-
}, React__default.createElement("div", null, React__default.createElement(AddButton, {
|
|
7115
|
-
text: text,
|
|
7116
|
-
onClick: onClick
|
|
7117
|
-
})), React__default.createElement("div", {
|
|
7118
|
-
className: "flex-grow-1 ml-2"
|
|
7119
|
-
}, React__default.createElement(SearchBox$1, {
|
|
7120
|
-
initValue: initValue,
|
|
7121
|
-
onSearch: onSearch,
|
|
7122
|
-
placeholder: placeholder,
|
|
7123
|
-
style: searchInputStyle
|
|
7124
|
-
})));
|
|
7125
|
-
};
|
|
7126
|
-
SearchBoxContainer.defaultProps = {
|
|
7127
|
-
placeholder: "Type something to search"
|
|
7128
|
-
};
|
|
7204
|
+
var userSchema = yup.object({
|
|
7205
|
+
firstName: yup.string().required("First name is required"),
|
|
7206
|
+
lastName: yup.string().required("Last name is required"),
|
|
7207
|
+
dateOfBirth: yup.string().required("Date of birth is required"),
|
|
7208
|
+
email: yup.string().email("Email is invalid").required("Email is required"),
|
|
7209
|
+
roles: yup.array().of(yup.string()).min(1, "Role is required")
|
|
7210
|
+
});
|
|
7129
7211
|
|
|
7130
|
-
var
|
|
7131
|
-
|
|
7132
|
-
|
|
7133
|
-
|
|
7134
|
-
} catch (_unused) {
|
|
7135
|
-
return "";
|
|
7136
|
-
}
|
|
7212
|
+
var changePasswordSchema = yup.object({
|
|
7213
|
+
oldPassword: yup.string().required("Current password is required"),
|
|
7214
|
+
newPassword: yup.string().required("New password is required"),
|
|
7215
|
+
confirmedNewPassword: yup.string().required("Confirm password is required")
|
|
7137
7216
|
});
|
|
7138
7217
|
|
|
7139
|
-
var
|
|
7140
|
-
var
|
|
7141
|
-
|
|
7142
|
-
|
|
7143
|
-
|
|
7144
|
-
|
|
7145
|
-
|
|
7146
|
-
|
|
7147
|
-
|
|
7148
|
-
|
|
7149
|
-
|
|
7150
|
-
var
|
|
7151
|
-
|
|
7152
|
-
|
|
7153
|
-
|
|
7154
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
7161
|
-
|
|
7162
|
-
|
|
7163
|
-
|
|
7164
|
-
|
|
7165
|
-
|
|
7166
|
-
|
|
7167
|
-
return changeFilters({
|
|
7168
|
-
searchString: searchString
|
|
7169
|
-
});
|
|
7170
|
-
},
|
|
7171
|
-
placeholder: t("type_something_to_search_by_user_name")
|
|
7172
|
-
})), React__default.createElement(reactstrap.Col, {
|
|
7173
|
-
md: 4,
|
|
7174
|
-
className: "d-flex justify-content-end align-items-center"
|
|
7175
|
-
}, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
|
|
7176
|
-
className: "mb-2"
|
|
7177
|
-
}, React__default.createElement(reactstrap.Col, {
|
|
7178
|
-
md: 12
|
|
7179
|
-
}, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
|
|
7180
|
-
bordered: true,
|
|
7181
|
-
hover: true,
|
|
7182
|
-
striped: true,
|
|
7183
|
-
responsive: true,
|
|
7184
|
-
size: "sm"
|
|
7185
|
-
}, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
|
|
7186
|
-
className: "align-top"
|
|
7187
|
-
}, t("name")), React__default.createElement("th", {
|
|
7188
|
-
className: "align-top"
|
|
7189
|
-
}, t("email")), React__default.createElement("th", {
|
|
7190
|
-
className: "align-top"
|
|
7191
|
-
}, t("age")), React__default.createElement("th", {
|
|
7192
|
-
className: "align-top"
|
|
7193
|
-
}, t("role")), React__default.createElement("th", {
|
|
7194
|
-
className: "align-top"
|
|
7195
|
-
}, t("active_status")), React__default.createElement("th", {
|
|
7196
|
-
className: "align-top"
|
|
7197
|
-
}, t("created_time")), React__default.createElement("th", {
|
|
7198
|
-
className: "text-center"
|
|
7199
|
-
}, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
|
|
7200
|
-
return React__default.createElement("tr", {
|
|
7201
|
-
key: record.id
|
|
7202
|
-
}, React__default.createElement("td", {
|
|
7203
|
-
className: "align-middle"
|
|
7204
|
-
}, React__default.createElement(LinkEditButton, {
|
|
7205
|
-
label: "" + record.fullName,
|
|
7206
|
-
onClick: function onClick() {
|
|
7207
|
-
return reDirectDetailPage(record.id);
|
|
7208
|
-
}
|
|
7209
|
-
})), React__default.createElement("td", {
|
|
7210
|
-
className: "align-middle"
|
|
7211
|
-
}, record.email), React__default.createElement("td", {
|
|
7212
|
-
className: "align-middle"
|
|
7213
|
-
}, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
|
|
7214
|
-
className: "align-middle"
|
|
7215
|
-
}, !!record.roles && record.roles.map(function (role) {
|
|
7216
|
-
return role === "SecondaryTeacher" ? "SupportTeacher" : role;
|
|
7217
|
-
}).join(", ")), React__default.createElement("td", {
|
|
7218
|
-
className: "align-middle"
|
|
7219
|
-
}, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
|
|
7220
|
-
className: "align-middle"
|
|
7221
|
-
}, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
|
|
7222
|
-
className: "text-center align-middle"
|
|
7223
|
-
}, React__default.createElement(fa.FaUsersCog, {
|
|
7224
|
-
style: {
|
|
7225
|
-
fontSize: "18px",
|
|
7226
|
-
marginRight: "10px",
|
|
7227
|
-
cursor: "pointer"
|
|
7228
|
-
},
|
|
7229
|
-
onClick: function onClick() {
|
|
7230
|
-
return swicthUser(record.id);
|
|
7231
|
-
}
|
|
7232
|
-
}), React__default.createElement(DeleteButtonIcon, {
|
|
7233
|
-
onClick: function onClick() {
|
|
7234
|
-
return removeData(record.id);
|
|
7235
|
-
}
|
|
7236
|
-
})));
|
|
7237
|
-
})))) : React__default.createElement(EmptyDataAlert, {
|
|
7238
|
-
label: t("user")
|
|
7239
|
-
})), React__default.createElement(reactstrap.Col, {
|
|
7240
|
-
md: 12
|
|
7241
|
-
}, React__default.createElement(CustomPagination, {
|
|
7242
|
-
filters: filters,
|
|
7243
|
-
totalRecordCount: totalItems,
|
|
7244
|
-
changePageSize: function changePageSize(pageSize) {
|
|
7245
|
-
return changeFilters({
|
|
7246
|
-
pageSize: pageSize
|
|
7247
|
-
});
|
|
7248
|
-
},
|
|
7249
|
-
changePage: function changePage(currentPage) {
|
|
7250
|
-
return changeFilters({
|
|
7251
|
-
currentPage: currentPage
|
|
7252
|
-
});
|
|
7253
|
-
}
|
|
7254
|
-
}))));
|
|
7255
|
-
};
|
|
7256
|
-
|
|
7257
|
-
var MAX_FILE_SIZE = 20097152;
|
|
7258
|
-
var UploadFileButton = function UploadFileButton(_ref) {
|
|
7259
|
-
var fileName = _ref.fileName,
|
|
7260
|
-
maxWidth = _ref.maxWidth,
|
|
7261
|
-
maxHeight = _ref.maxHeight,
|
|
7262
|
-
setFile = _ref.setFile,
|
|
7263
|
-
canDelete = _ref.canDelete,
|
|
7264
|
-
onDelete = _ref.onDelete,
|
|
7265
|
-
isCheckFeedBack = _ref.isCheckFeedBack,
|
|
7266
|
-
onAddImage = _ref.onAddImage;
|
|
7267
|
-
var dispatch = reactRedux.useDispatch();
|
|
7268
|
-
var _useState = React.useState(""),
|
|
7269
|
-
imagePreviewUrl = _useState[0],
|
|
7270
|
-
setImagePreviewUrl = _useState[1];
|
|
7271
|
-
var imageStyle = {
|
|
7272
|
-
maxWidth: maxWidth || "100%",
|
|
7273
|
-
maxHeight: maxHeight || "100%"
|
|
7218
|
+
var CREATE_USER = "create_user";
|
|
7219
|
+
var EDIT_USER_HEADER = "edit_user";
|
|
7220
|
+
var CHANGE_PASSWORD$1 = "change_password";
|
|
7221
|
+
var UserDetail = function UserDetail() {
|
|
7222
|
+
var _useParams = reactRouterDom.useParams(),
|
|
7223
|
+
id = _useParams.id;
|
|
7224
|
+
var user = reactRedux.useSelector(function (state) {
|
|
7225
|
+
return state.common.user;
|
|
7226
|
+
});
|
|
7227
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
7228
|
+
t = _useTranslation.t;
|
|
7229
|
+
var _useUserDetail = useUserDetail(id),
|
|
7230
|
+
userDetail = _useUserDetail.userDetail,
|
|
7231
|
+
backToList = _useUserDetail.backToList,
|
|
7232
|
+
confirmData = _useUserDetail.confirmData,
|
|
7233
|
+
file = _useUserDetail.file,
|
|
7234
|
+
setFile = _useUserDetail.setFile,
|
|
7235
|
+
edited = _useUserDetail.edited,
|
|
7236
|
+
setEdited = _useUserDetail.setEdited,
|
|
7237
|
+
setEditedTrue = _useUserDetail.setEditedTrue,
|
|
7238
|
+
confirmChangePassword = _useUserDetail.confirmChangePassword,
|
|
7239
|
+
forgotPasswordRequest = _useUserDetail.forgotPasswordRequest,
|
|
7240
|
+
currentRoles = _useUserDetail.currentRoles,
|
|
7241
|
+
handleDisableRoles = _useUserDetail.handleDisableRoles;
|
|
7242
|
+
var initialValueForm = {
|
|
7243
|
+
oldPassword: "",
|
|
7244
|
+
newPassword: "",
|
|
7245
|
+
confirmedNewPassword: ""
|
|
7274
7246
|
};
|
|
7275
|
-
var
|
|
7276
|
-
var
|
|
7277
|
-
|
|
7278
|
-
var
|
|
7279
|
-
|
|
7280
|
-
if (newFile.size > MAX_FILE_SIZE) {
|
|
7281
|
-
dispatch(setAlert({
|
|
7282
|
-
type: "danger",
|
|
7283
|
-
message: "File can't be larger than 2MB"
|
|
7284
|
-
}));
|
|
7285
|
-
return;
|
|
7286
|
-
}
|
|
7287
|
-
reader.onloadend = function () {
|
|
7288
|
-
setFile(newFile);
|
|
7289
|
-
setImagePreviewUrl(reader.result);
|
|
7290
|
-
};
|
|
7291
|
-
if (newFile) {
|
|
7292
|
-
reader.readAsDataURL(newFile);
|
|
7293
|
-
}
|
|
7294
|
-
!!onAddImage && onAddImage();
|
|
7247
|
+
var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
|
|
7248
|
+
var confirmText = !!id ? t("update") : t("create");
|
|
7249
|
+
var getFile = function getFile() {
|
|
7250
|
+
var url = window.location.origin + "/api/ExportDataUser/" + id;
|
|
7251
|
+
window.open(url);
|
|
7295
7252
|
};
|
|
7296
|
-
var
|
|
7297
|
-
style: imageStyle,
|
|
7298
|
-
src: imageSrc,
|
|
7299
|
-
alt: "image"
|
|
7300
|
-
}) : null;
|
|
7301
|
-
return React__default.createElement("div", {
|
|
7302
|
-
className: "mb-2"
|
|
7303
|
-
}, React__default.createElement(reactstrap.Form, {
|
|
7304
|
-
className: "mb-2"
|
|
7305
|
-
}, React__default.createElement(reactstrap.Input, {
|
|
7306
|
-
className: "d-none",
|
|
7307
|
-
type: "file",
|
|
7308
|
-
id: "uploadFile",
|
|
7309
|
-
onChange: handleImageChange,
|
|
7310
|
-
accept: "image/*"
|
|
7311
|
-
}), React__default.createElement("div", {
|
|
7312
|
-
className: "d-flex align-items-center"
|
|
7313
|
-
}, React__default.createElement(reactstrap.Label, {
|
|
7314
|
-
htmlFor: "uploadFile",
|
|
7315
|
-
role: "button",
|
|
7316
|
-
tabIndex: 0,
|
|
7317
|
-
className: styles["input-file-label"]
|
|
7318
|
-
}, isCheckFeedBack == true ? React__default.createElement(md.MdAttachFile, null) : React__default.createElement(React__default.Fragment, null, React__default.createElement("i", {
|
|
7319
|
-
className: "fa fa-paperclip mr-1",
|
|
7320
|
-
"aria-hidden": "true"
|
|
7321
|
-
}), imagePreviewUrl || fileName ? "Change file" : "Choose file")), canDelete && imagePreviewContainer && React__default.createElement(reactstrap.Button, {
|
|
7322
|
-
size: "sm",
|
|
7323
|
-
color: "danger",
|
|
7324
|
-
className: styles["delete-avatar-button"] + " ml-2 d-flex align-items-center justify-content-center",
|
|
7325
|
-
onClick: function onClick() {
|
|
7326
|
-
setImagePreviewUrl(null);
|
|
7327
|
-
onDelete && onDelete();
|
|
7328
|
-
}
|
|
7329
|
-
}, React__default.createElement(fa.FaTrashAlt, null)))), imagePreviewContainer);
|
|
7330
|
-
};
|
|
7331
|
-
|
|
7332
|
-
var initValue$3 = {
|
|
7333
|
-
id: "",
|
|
7334
|
-
firstName: "",
|
|
7335
|
-
lastName: "",
|
|
7336
|
-
email: "",
|
|
7337
|
-
dateOfBirth: "",
|
|
7338
|
-
roles: [],
|
|
7339
|
-
isActive: true,
|
|
7340
|
-
profileImageFileName: ""
|
|
7341
|
-
};
|
|
7342
|
-
var USER_LIST_URL = "/admin/user";
|
|
7343
|
-
var TITLE$8 = "User detail";
|
|
7344
|
-
var useUserDetail = function useUserDetail(id) {
|
|
7345
|
-
var dispatch = reactRedux.useDispatch();
|
|
7346
|
-
var history = reactRouterDom.useHistory();
|
|
7347
|
-
var _useState = React.useState(initValue$3),
|
|
7348
|
-
userDetail = _useState[0],
|
|
7349
|
-
setUserDetail = _useState[1];
|
|
7350
|
-
var _useState2 = React.useState(null),
|
|
7351
|
-
file = _useState2[0],
|
|
7352
|
-
setFile = _useState2[1];
|
|
7353
|
-
var _useState3 = React.useState(false),
|
|
7354
|
-
edited = _useState3[0],
|
|
7355
|
-
setEdited = _useState3[1];
|
|
7356
|
-
var setEditedTrue = function setEditedTrue() {
|
|
7253
|
+
var onResetPw = function onResetPw(email) {
|
|
7357
7254
|
try {
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
return Promise.reject(e);
|
|
7363
|
-
}
|
|
7364
|
-
};
|
|
7365
|
-
var _useState4 = React.useState([]),
|
|
7366
|
-
currentRoles = _useState4[0],
|
|
7367
|
-
setCurrentRoles = _useState4[1];
|
|
7368
|
-
React.useEffect(function () {
|
|
7369
|
-
document.title = TITLE$8;
|
|
7370
|
-
setEdited(false);
|
|
7371
|
-
if (!!localStorage.getItem(window.location.href)) localStorage.removeItem(window.location.href);
|
|
7372
|
-
}, []);
|
|
7373
|
-
React.useEffect(function () {
|
|
7374
|
-
!!id && getData();
|
|
7375
|
-
}, [id]);
|
|
7376
|
-
var getData = React.useCallback(function () {
|
|
7377
|
-
try {
|
|
7378
|
-
var _temp2 = function _temp2() {
|
|
7379
|
-
dispatch(setLoading(false));
|
|
7380
|
-
};
|
|
7381
|
-
dispatch(setLoading(true));
|
|
7382
|
-
var _temp = _catch(function () {
|
|
7383
|
-
return Promise.resolve(getById$3(id)).then(function (res) {
|
|
7384
|
-
var _res$data$roles, _res$data, _res$data2;
|
|
7385
|
-
setUserDetail(_extends({}, res.data, {
|
|
7386
|
-
dateOfBirth: dateFns.format(new Date(res.data.dateOfBirth), DATE_FORMAT),
|
|
7387
|
-
roles: res.data.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : res.data.roles
|
|
7388
|
-
}));
|
|
7389
|
-
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 : []);
|
|
7390
|
-
document.title = (_res$data2 = res.data) === null || _res$data2 === void 0 ? void 0 : _res$data2.fullName;
|
|
7391
|
-
});
|
|
7392
|
-
}, function (err) {
|
|
7393
|
-
var _err$response, _err$response$data;
|
|
7394
|
-
dispatch(setAlert({
|
|
7395
|
-
type: "danger",
|
|
7396
|
-
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
|
|
7397
|
-
}));
|
|
7398
|
-
});
|
|
7399
|
-
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
|
7400
|
-
} catch (e) {
|
|
7401
|
-
return Promise.reject(e);
|
|
7402
|
-
}
|
|
7403
|
-
}, [id]);
|
|
7404
|
-
var backToList = React.useCallback(function (user) {
|
|
7405
|
-
!!user && typeof user === "string" ? history.push(USER_LIST_URL + ("?query=" + user)) : history.push(USER_LIST_URL);
|
|
7406
|
-
}, []);
|
|
7407
|
-
var confirmData = React.useCallback(function (data) {
|
|
7408
|
-
try {
|
|
7409
|
-
var _temp6 = function _temp6() {
|
|
7410
|
-
dispatch(setLoading(false));
|
|
7411
|
-
};
|
|
7412
|
-
dispatch(setLoading(true));
|
|
7413
|
-
var _temp5 = _catch(function () {
|
|
7414
|
-
function _temp4() {
|
|
7415
|
-
var next = !!id ? update$5 : create$5;
|
|
7416
|
-
!id && delete data.id;
|
|
7417
|
-
return Promise.resolve(next(data)).then(function (result) {
|
|
7418
|
-
if (!!result) {
|
|
7419
|
-
getById$3(result.data.id).then(function (e) {
|
|
7420
|
-
backToList(e.data.fullName);
|
|
7421
|
-
});
|
|
7422
|
-
}
|
|
7423
|
-
if (!id) {
|
|
7424
|
-
alert("Password of " + result.data.email + " is " + ("\"" + result.data.password + "\""));
|
|
7425
|
-
}
|
|
7426
|
-
dispatch(setAlert({
|
|
7427
|
-
type: "success",
|
|
7428
|
-
message: (!!id ? "Update" : "Create") + " user successfully"
|
|
7429
|
-
}));
|
|
7430
|
-
});
|
|
7431
|
-
}
|
|
7432
|
-
var _temp3 = function () {
|
|
7433
|
-
if (!!file) {
|
|
7434
|
-
var formData = new FormData();
|
|
7435
|
-
var name = file.name;
|
|
7436
|
-
formData.append("file", file, name);
|
|
7437
|
-
return Promise.resolve(systemProfileUpload(formData)).then(function (res) {
|
|
7438
|
-
var _res$data3;
|
|
7439
|
-
var imageUrl = res === null || res === void 0 ? void 0 : (_res$data3 = res.data) === null || _res$data3 === void 0 ? void 0 : _res$data3.key;
|
|
7440
|
-
data.profileImageFileName = imageUrl;
|
|
7441
|
-
});
|
|
7442
|
-
}
|
|
7443
|
-
}();
|
|
7444
|
-
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
|
|
7445
|
-
}, function (err) {
|
|
7446
|
-
var _err$response2, _err$response2$data;
|
|
7447
|
-
dispatch(setAlert({
|
|
7448
|
-
type: "danger",
|
|
7449
|
-
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
|
|
7450
|
-
}));
|
|
7451
|
-
});
|
|
7452
|
-
return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
|
|
7453
|
-
} catch (e) {
|
|
7454
|
-
return Promise.reject(e);
|
|
7455
|
-
}
|
|
7456
|
-
}, [id, file]);
|
|
7457
|
-
var handleDisableRoles = function handleDisableRoles(currentRoles) {
|
|
7458
|
-
return ["Student", "Parent", "EduTeacher"].includes(currentRoles);
|
|
7459
|
-
};
|
|
7460
|
-
var confirmChangePassword = function confirmChangePassword(data) {
|
|
7461
|
-
try {
|
|
7462
|
-
var _temp8 = function _temp8() {
|
|
7463
|
-
dispatch(setLoading(false));
|
|
7464
|
-
};
|
|
7465
|
-
dispatch(setLoading(true));
|
|
7466
|
-
var _temp7 = _catch(function () {
|
|
7467
|
-
return Promise.resolve(changePassword(data)).then(function () {
|
|
7468
|
-
dispatch(setAlert({
|
|
7469
|
-
type: "success",
|
|
7470
|
-
message: "Change password successfully"
|
|
7471
|
-
}));
|
|
7472
|
-
});
|
|
7473
|
-
}, function (e) {
|
|
7474
|
-
var _e$response, _e$response$data;
|
|
7475
|
-
dispatch(setAlert({
|
|
7476
|
-
type: "danger",
|
|
7477
|
-
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
|
|
7478
|
-
}));
|
|
7479
|
-
});
|
|
7480
|
-
return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7));
|
|
7481
|
-
} catch (e) {
|
|
7482
|
-
return Promise.reject(e);
|
|
7483
|
-
}
|
|
7484
|
-
};
|
|
7485
|
-
var forgotPasswordRequest = React.useCallback(function (data) {
|
|
7486
|
-
try {
|
|
7487
|
-
var _temp10 = function _temp10() {
|
|
7488
|
-
dispatch(setLoading(false));
|
|
7489
|
-
};
|
|
7490
|
-
dispatch(setLoading(true));
|
|
7491
|
-
var _temp9 = _catch(function () {
|
|
7492
|
-
return Promise.resolve(forgotChangePassword(data)).then(function () {
|
|
7493
|
-
dispatch(setAlert({
|
|
7494
|
-
type: "success",
|
|
7495
|
-
message: "Send forgot password link successfully"
|
|
7496
|
-
}));
|
|
7497
|
-
});
|
|
7498
|
-
}, function (err) {
|
|
7499
|
-
var _err$response3, _err$response3$data;
|
|
7500
|
-
dispatch(setAlert({
|
|
7501
|
-
type: "danger",
|
|
7502
|
-
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"
|
|
7503
|
-
}));
|
|
7504
|
-
});
|
|
7505
|
-
return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(_temp10) : _temp10(_temp9));
|
|
7506
|
-
} catch (e) {
|
|
7507
|
-
return Promise.reject(e);
|
|
7508
|
-
}
|
|
7509
|
-
}, []);
|
|
7510
|
-
return {
|
|
7511
|
-
userDetail: userDetail,
|
|
7512
|
-
backToList: backToList,
|
|
7513
|
-
confirmData: confirmData,
|
|
7514
|
-
file: file,
|
|
7515
|
-
setFile: setFile,
|
|
7516
|
-
edited: edited,
|
|
7517
|
-
setEdited: setEdited,
|
|
7518
|
-
setEditedTrue: setEditedTrue,
|
|
7519
|
-
confirmChangePassword: confirmChangePassword,
|
|
7520
|
-
forgotPasswordRequest: forgotPasswordRequest,
|
|
7521
|
-
currentRoles: currentRoles,
|
|
7522
|
-
handleDisableRoles: handleDisableRoles
|
|
7523
|
-
};
|
|
7524
|
-
};
|
|
7525
|
-
|
|
7526
|
-
var userSchema = yup.object({
|
|
7527
|
-
firstName: yup.string().required("First name is required"),
|
|
7528
|
-
lastName: yup.string().required("Last name is required"),
|
|
7529
|
-
dateOfBirth: yup.string().required("Date of birth is required"),
|
|
7530
|
-
email: yup.string().email("Email is invalid").required("Email is required"),
|
|
7531
|
-
roles: yup.array().of(yup.string()).min(1, "Role is required")
|
|
7532
|
-
});
|
|
7533
|
-
|
|
7534
|
-
var changePasswordSchema = yup.object({
|
|
7535
|
-
oldPassword: yup.string().required("Current password is required"),
|
|
7536
|
-
newPassword: yup.string().required("New password is required"),
|
|
7537
|
-
confirmedNewPassword: yup.string().required("Confirm password is required")
|
|
7538
|
-
});
|
|
7539
|
-
|
|
7540
|
-
var CREATE_USER = "create_user";
|
|
7541
|
-
var EDIT_USER_HEADER = "edit_user";
|
|
7542
|
-
var CHANGE_PASSWORD$1 = "change_password";
|
|
7543
|
-
var UserDetail = function UserDetail() {
|
|
7544
|
-
var _useParams = reactRouterDom.useParams(),
|
|
7545
|
-
id = _useParams.id;
|
|
7546
|
-
var user = reactRedux.useSelector(function (state) {
|
|
7547
|
-
return state.common.user;
|
|
7548
|
-
});
|
|
7549
|
-
var _useTranslation = reactI18next.useTranslation(),
|
|
7550
|
-
t = _useTranslation.t;
|
|
7551
|
-
var _useUserDetail = useUserDetail(id),
|
|
7552
|
-
userDetail = _useUserDetail.userDetail,
|
|
7553
|
-
backToList = _useUserDetail.backToList,
|
|
7554
|
-
confirmData = _useUserDetail.confirmData,
|
|
7555
|
-
file = _useUserDetail.file,
|
|
7556
|
-
setFile = _useUserDetail.setFile,
|
|
7557
|
-
edited = _useUserDetail.edited,
|
|
7558
|
-
setEdited = _useUserDetail.setEdited,
|
|
7559
|
-
setEditedTrue = _useUserDetail.setEditedTrue,
|
|
7560
|
-
confirmChangePassword = _useUserDetail.confirmChangePassword,
|
|
7561
|
-
forgotPasswordRequest = _useUserDetail.forgotPasswordRequest,
|
|
7562
|
-
currentRoles = _useUserDetail.currentRoles,
|
|
7563
|
-
handleDisableRoles = _useUserDetail.handleDisableRoles;
|
|
7564
|
-
var initialValueForm = {
|
|
7565
|
-
oldPassword: "",
|
|
7566
|
-
newPassword: "",
|
|
7567
|
-
confirmedNewPassword: ""
|
|
7568
|
-
};
|
|
7569
|
-
var header = !!id ? t("" + EDIT_USER_HEADER) : t("" + CREATE_USER);
|
|
7570
|
-
var confirmText = !!id ? t("update") : t("create");
|
|
7571
|
-
var getFile = function getFile() {
|
|
7572
|
-
var url = window.location.origin + "/api/ExportDataUser/" + id;
|
|
7573
|
-
window.open(url);
|
|
7574
|
-
};
|
|
7575
|
-
var onResetPw = function onResetPw(email) {
|
|
7576
|
-
try {
|
|
7577
|
-
var data = {
|
|
7578
|
-
email: email
|
|
7579
|
-
};
|
|
7580
|
-
forgotPasswordRequest(data);
|
|
7255
|
+
var data = {
|
|
7256
|
+
email: email
|
|
7257
|
+
};
|
|
7258
|
+
forgotPasswordRequest(data);
|
|
7581
7259
|
return Promise.resolve();
|
|
7582
7260
|
} catch (e) {
|
|
7583
7261
|
return Promise.reject(e);
|
|
@@ -7963,6 +7641,15 @@ var CommonHeader = function CommonHeader(_ref) {
|
|
|
7963
7641
|
}, header))));
|
|
7964
7642
|
};
|
|
7965
7643
|
|
|
7644
|
+
var utcToLocalTime = (function (time, FORMAT) {
|
|
7645
|
+
if (time === DATE_MIN_VALUE) return "";
|
|
7646
|
+
try {
|
|
7647
|
+
return moment.utc(time).local().format(FORMAT || "yyyy-MM-DD");
|
|
7648
|
+
} catch (_unused) {
|
|
7649
|
+
return "";
|
|
7650
|
+
}
|
|
7651
|
+
});
|
|
7652
|
+
|
|
7966
7653
|
var NotificationLogoutModal = function NotificationLogoutModal() {
|
|
7967
7654
|
var _useState = React.useState(false),
|
|
7968
7655
|
isOpen = _useState[0],
|
|
@@ -8050,6 +7737,39 @@ var CreatableSelector = function CreatableSelector(props) {
|
|
|
8050
7737
|
});
|
|
8051
7738
|
};
|
|
8052
7739
|
|
|
7740
|
+
var SearchBox = function SearchBox(_ref) {
|
|
7741
|
+
var initValue = _ref.initValue,
|
|
7742
|
+
onSearch = _ref.onSearch,
|
|
7743
|
+
placeholder = _ref.placeholder,
|
|
7744
|
+
className = _ref.className,
|
|
7745
|
+
style = _ref.style;
|
|
7746
|
+
var _useState = React.useState(initValue),
|
|
7747
|
+
searchString = _useState[0],
|
|
7748
|
+
setSearchString = _useState[1];
|
|
7749
|
+
React.useEffect(function () {
|
|
7750
|
+
setSearchString(initValue);
|
|
7751
|
+
}, [initValue]);
|
|
7752
|
+
var onKeyUp = React.useCallback(function (e) {
|
|
7753
|
+
e.key === "Enter" && onSearch(searchString);
|
|
7754
|
+
}, [searchString, onSearch]);
|
|
7755
|
+
return React__default.createElement(reactstrap.Input, {
|
|
7756
|
+
placeholder: placeholder,
|
|
7757
|
+
value: searchString,
|
|
7758
|
+
onChange: function onChange(e) {
|
|
7759
|
+
return setSearchString(e.target.value);
|
|
7760
|
+
},
|
|
7761
|
+
onKeyUp: onKeyUp,
|
|
7762
|
+
className: className,
|
|
7763
|
+
style: style
|
|
7764
|
+
});
|
|
7765
|
+
};
|
|
7766
|
+
SearchBox.defaultProps = {
|
|
7767
|
+
placeholder: "Type something to search",
|
|
7768
|
+
className: "",
|
|
7769
|
+
style: {}
|
|
7770
|
+
};
|
|
7771
|
+
var SearchBox$1 = React.memo(SearchBox);
|
|
7772
|
+
|
|
8053
7773
|
var QuestionTypeSelector = function QuestionTypeSelector(props) {
|
|
8054
7774
|
var id = props.id;
|
|
8055
7775
|
var initValue = !!id ? QUESTION_TYPES_OPTIONS.find(function (option) {
|
|
@@ -8381,7 +8101,7 @@ var defaultFilters = {
|
|
|
8381
8101
|
searchString: "",
|
|
8382
8102
|
isRead: false
|
|
8383
8103
|
};
|
|
8384
|
-
var TITLE$
|
|
8104
|
+
var TITLE$8 = "Notification list";
|
|
8385
8105
|
var NOTIFICATION_CHANNEL$1 = "NOTIFICATION_CHANNEL";
|
|
8386
8106
|
var NEW_NOTIFICATION$1 = "NEW_NOTIFICATION";
|
|
8387
8107
|
var useNotificationList = function useNotificationList() {
|
|
@@ -8496,7 +8216,7 @@ var useNotificationList = function useNotificationList() {
|
|
|
8496
8216
|
}
|
|
8497
8217
|
}, [filters]);
|
|
8498
8218
|
React.useEffect(function () {
|
|
8499
|
-
document.title = TITLE$
|
|
8219
|
+
document.title = TITLE$8;
|
|
8500
8220
|
}, []);
|
|
8501
8221
|
React.useEffect(function () {
|
|
8502
8222
|
getData();
|
|
@@ -8578,7 +8298,7 @@ var useNotificationList = function useNotificationList() {
|
|
|
8578
8298
|
};
|
|
8579
8299
|
};
|
|
8580
8300
|
|
|
8581
|
-
var header$
|
|
8301
|
+
var header$2 = "Notification list";
|
|
8582
8302
|
var ICON_SIZE = 20;
|
|
8583
8303
|
var NotificationList = function NotificationList() {
|
|
8584
8304
|
var _useNotificationList = useNotificationList(),
|
|
@@ -8597,7 +8317,7 @@ var NotificationList = function NotificationList() {
|
|
|
8597
8317
|
}
|
|
8598
8318
|
}, React__default.createElement("h5", {
|
|
8599
8319
|
className: "mb-2"
|
|
8600
|
-
}, header$
|
|
8320
|
+
}, header$2), React__default.createElement(reactstrap.Row, {
|
|
8601
8321
|
className: "my-2"
|
|
8602
8322
|
}, React__default.createElement(reactstrap.Col, {
|
|
8603
8323
|
md: 8
|
|
@@ -8697,12 +8417,39 @@ var NotificationList = function NotificationList() {
|
|
|
8697
8417
|
}))));
|
|
8698
8418
|
};
|
|
8699
8419
|
|
|
8700
|
-
var
|
|
8701
|
-
|
|
8702
|
-
|
|
8703
|
-
|
|
8704
|
-
var
|
|
8705
|
-
|
|
8420
|
+
var searchInputStyle = {
|
|
8421
|
+
height: 38
|
|
8422
|
+
};
|
|
8423
|
+
var SearchBoxContainer = function SearchBoxContainer(_ref) {
|
|
8424
|
+
var text = _ref.text,
|
|
8425
|
+
initValue = _ref.initValue,
|
|
8426
|
+
onClick = _ref.onClick,
|
|
8427
|
+
onSearch = _ref.onSearch,
|
|
8428
|
+
placeholder = _ref.placeholder;
|
|
8429
|
+
return React__default.createElement("div", {
|
|
8430
|
+
className: "d-flex align-items-center"
|
|
8431
|
+
}, React__default.createElement("div", null, React__default.createElement(AddButton, {
|
|
8432
|
+
text: text,
|
|
8433
|
+
onClick: onClick
|
|
8434
|
+
})), React__default.createElement("div", {
|
|
8435
|
+
className: "flex-grow-1 ml-2"
|
|
8436
|
+
}, React__default.createElement(SearchBox$1, {
|
|
8437
|
+
initValue: initValue,
|
|
8438
|
+
onSearch: onSearch,
|
|
8439
|
+
placeholder: placeholder,
|
|
8440
|
+
style: searchInputStyle
|
|
8441
|
+
})));
|
|
8442
|
+
};
|
|
8443
|
+
SearchBoxContainer.defaultProps = {
|
|
8444
|
+
placeholder: "Type something to search"
|
|
8445
|
+
};
|
|
8446
|
+
|
|
8447
|
+
var CustomTabs = function CustomTabs(props) {
|
|
8448
|
+
var history = reactRouterDom.useHistory();
|
|
8449
|
+
var location = reactRouterDom.useLocation();
|
|
8450
|
+
var pathname = location.pathname;
|
|
8451
|
+
var tabs = props.tabs,
|
|
8452
|
+
title = props.title;
|
|
8706
8453
|
var toggle = function toggle(path) {
|
|
8707
8454
|
history.push(path);
|
|
8708
8455
|
};
|
|
@@ -9068,7 +8815,7 @@ var get$8 = function get(filter) {
|
|
|
9068
8815
|
});
|
|
9069
8816
|
};
|
|
9070
8817
|
|
|
9071
|
-
var TITLE$
|
|
8818
|
+
var TITLE$9 = "Gallery";
|
|
9072
8819
|
var defaultFilter = {
|
|
9073
8820
|
searchString: ""
|
|
9074
8821
|
};
|
|
@@ -9277,7 +9024,7 @@ var useGalleryList = function useGalleryList(isLibrary) {
|
|
|
9277
9024
|
}
|
|
9278
9025
|
}, [dispatch, filters]);
|
|
9279
9026
|
React.useEffect(function () {
|
|
9280
|
-
document.title = TITLE$
|
|
9027
|
+
document.title = TITLE$9;
|
|
9281
9028
|
dispatch(setTargetMedia({
|
|
9282
9029
|
targetMedia: undefined
|
|
9283
9030
|
}));
|
|
@@ -9457,7 +9204,7 @@ var MediaDetail = function MediaDetail(_ref) {
|
|
|
9457
9204
|
};
|
|
9458
9205
|
var MediaDetail$1 = React__default.memo(MediaDetail);
|
|
9459
9206
|
|
|
9460
|
-
var header$
|
|
9207
|
+
var header$3 = "Gallery";
|
|
9461
9208
|
var GalleryList = function GalleryList(_ref) {
|
|
9462
9209
|
var isLibrary = _ref.isLibrary;
|
|
9463
9210
|
var targetMedia = reactRedux.useSelector(function (state) {
|
|
@@ -9467,7 +9214,7 @@ var GalleryList = function GalleryList(_ref) {
|
|
|
9467
9214
|
className: "fadeIn animated"
|
|
9468
9215
|
}, !isLibrary && React__default.createElement("h5", {
|
|
9469
9216
|
className: "mb-2"
|
|
9470
|
-
}, header$
|
|
9217
|
+
}, header$3), React__default.createElement(reactstrap.Row, {
|
|
9471
9218
|
className: "mb-2"
|
|
9472
9219
|
}, React__default.createElement(reactstrap.Col, {
|
|
9473
9220
|
md: 8
|
|
@@ -9545,17 +9292,6 @@ var reduxLogger = createCommonjsModule(function (module, exports) {
|
|
|
9545
9292
|
|
|
9546
9293
|
var logger = unwrapExports(reduxLogger);
|
|
9547
9294
|
|
|
9548
|
-
/**
|
|
9549
|
-
* Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js
|
|
9550
|
-
*
|
|
9551
|
-
* Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes
|
|
9552
|
-
* during build.
|
|
9553
|
-
* @param {number} code
|
|
9554
|
-
*/
|
|
9555
|
-
function formatProdErrorMessage(code) {
|
|
9556
|
-
return "Minified Redux error #" + code + "; visit https://redux.js.org/Errors?code=" + code + " for the full message or " + 'use the non-minified dev environment for full errors. ';
|
|
9557
|
-
}
|
|
9558
|
-
|
|
9559
9295
|
/**
|
|
9560
9296
|
* These are private action types reserved by Redux.
|
|
9561
9297
|
* For any unknown actions, you must return the current state.
|
|
@@ -9589,65 +9325,6 @@ function isPlainObject(obj) {
|
|
|
9589
9325
|
return Object.getPrototypeOf(obj) === proto;
|
|
9590
9326
|
}
|
|
9591
9327
|
|
|
9592
|
-
// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of
|
|
9593
|
-
function miniKindOf(val) {
|
|
9594
|
-
if (val === void 0) return 'undefined';
|
|
9595
|
-
if (val === null) return 'null';
|
|
9596
|
-
var type = typeof val;
|
|
9597
|
-
|
|
9598
|
-
switch (type) {
|
|
9599
|
-
case 'boolean':
|
|
9600
|
-
case 'string':
|
|
9601
|
-
case 'number':
|
|
9602
|
-
case 'symbol':
|
|
9603
|
-
case 'function':
|
|
9604
|
-
{
|
|
9605
|
-
return type;
|
|
9606
|
-
}
|
|
9607
|
-
}
|
|
9608
|
-
|
|
9609
|
-
if (Array.isArray(val)) return 'array';
|
|
9610
|
-
if (isDate(val)) return 'date';
|
|
9611
|
-
if (isError(val)) return 'error';
|
|
9612
|
-
var constructorName = ctorName(val);
|
|
9613
|
-
|
|
9614
|
-
switch (constructorName) {
|
|
9615
|
-
case 'Symbol':
|
|
9616
|
-
case 'Promise':
|
|
9617
|
-
case 'WeakMap':
|
|
9618
|
-
case 'WeakSet':
|
|
9619
|
-
case 'Map':
|
|
9620
|
-
case 'Set':
|
|
9621
|
-
return constructorName;
|
|
9622
|
-
} // other
|
|
9623
|
-
|
|
9624
|
-
|
|
9625
|
-
return type.slice(8, -1).toLowerCase().replace(/\s/g, '');
|
|
9626
|
-
}
|
|
9627
|
-
|
|
9628
|
-
function ctorName(val) {
|
|
9629
|
-
return typeof val.constructor === 'function' ? val.constructor.name : null;
|
|
9630
|
-
}
|
|
9631
|
-
|
|
9632
|
-
function isError(val) {
|
|
9633
|
-
return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';
|
|
9634
|
-
}
|
|
9635
|
-
|
|
9636
|
-
function isDate(val) {
|
|
9637
|
-
if (val instanceof Date) return true;
|
|
9638
|
-
return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';
|
|
9639
|
-
}
|
|
9640
|
-
|
|
9641
|
-
function kindOf(val) {
|
|
9642
|
-
var typeOfVal = typeof val;
|
|
9643
|
-
|
|
9644
|
-
if (process.env.NODE_ENV !== 'production') {
|
|
9645
|
-
typeOfVal = miniKindOf(val);
|
|
9646
|
-
}
|
|
9647
|
-
|
|
9648
|
-
return typeOfVal;
|
|
9649
|
-
}
|
|
9650
|
-
|
|
9651
9328
|
/**
|
|
9652
9329
|
* Prints a warning in the console if it exists.
|
|
9653
9330
|
*
|
|
@@ -9671,6 +9348,12 @@ function warning(message) {
|
|
|
9671
9348
|
|
|
9672
9349
|
}
|
|
9673
9350
|
|
|
9351
|
+
function getUndefinedStateErrorMessage(key, action) {
|
|
9352
|
+
var actionType = action && action.type;
|
|
9353
|
+
var actionDescription = actionType && "action \"" + String(actionType) + "\"" || 'an action';
|
|
9354
|
+
return "Given " + actionDescription + ", reducer \"" + key + "\" returned undefined. " + "To ignore an action, you must explicitly return the previous state. " + "If you want this reducer to hold no value, you can return null instead of undefined.";
|
|
9355
|
+
}
|
|
9356
|
+
|
|
9674
9357
|
function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
|
|
9675
9358
|
var reducerKeys = Object.keys(reducers);
|
|
9676
9359
|
var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
|
|
@@ -9680,7 +9363,7 @@ function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, une
|
|
|
9680
9363
|
}
|
|
9681
9364
|
|
|
9682
9365
|
if (!isPlainObject(inputState)) {
|
|
9683
|
-
return "The " + argumentName + " has unexpected type of \"" +
|
|
9366
|
+
return "The " + argumentName + " has unexpected type of \"" + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + "\". Expected argument to be an object with the following " + ("keys: \"" + reducerKeys.join('", "') + "\"");
|
|
9684
9367
|
}
|
|
9685
9368
|
|
|
9686
9369
|
var unexpectedKeys = Object.keys(inputState).filter(function (key) {
|
|
@@ -9704,13 +9387,13 @@ function assertReducerShape(reducers) {
|
|
|
9704
9387
|
});
|
|
9705
9388
|
|
|
9706
9389
|
if (typeof initialState === 'undefined') {
|
|
9707
|
-
throw new Error(
|
|
9390
|
+
throw new Error("Reducer \"" + key + "\" returned undefined during initialization. " + "If the state passed to the reducer is undefined, you must " + "explicitly return the initial state. The initial state may " + "not be undefined. If you don't want to set a value for this reducer, " + "you can use null instead of undefined.");
|
|
9708
9391
|
}
|
|
9709
9392
|
|
|
9710
9393
|
if (typeof reducer(undefined, {
|
|
9711
9394
|
type: ActionTypes.PROBE_UNKNOWN_ACTION()
|
|
9712
9395
|
}) === 'undefined') {
|
|
9713
|
-
throw new Error(
|
|
9396
|
+
throw new Error("Reducer \"" + key + "\" returned undefined when probed with a random type. " + ("Don't try to handle " + ActionTypes.INIT + " or other actions in \"redux/*\" ") + "namespace. They are considered private. Instead, you must return the " + "current state for any unknown actions, unless it is undefined, " + "in which case you must return the initial state, regardless of the " + "action type. The initial state may not be undefined, but can be null.");
|
|
9714
9397
|
}
|
|
9715
9398
|
});
|
|
9716
9399
|
}
|
|
@@ -9794,8 +9477,8 @@ function combineReducers(reducers) {
|
|
|
9794
9477
|
var nextStateForKey = reducer(previousStateForKey, action);
|
|
9795
9478
|
|
|
9796
9479
|
if (typeof nextStateForKey === 'undefined') {
|
|
9797
|
-
var
|
|
9798
|
-
throw new Error(
|
|
9480
|
+
var errorMessage = getUndefinedStateErrorMessage(_key, action);
|
|
9481
|
+
throw new Error(errorMessage);
|
|
9799
9482
|
}
|
|
9800
9483
|
|
|
9801
9484
|
nextState[_key] = nextStateForKey;
|
|
@@ -9807,6 +9490,17 @@ function combineReducers(reducers) {
|
|
|
9807
9490
|
};
|
|
9808
9491
|
}
|
|
9809
9492
|
|
|
9493
|
+
/*
|
|
9494
|
+
* This is a dummy function to check if the function name has been altered by minification.
|
|
9495
|
+
* If the function has been minified and NODE_ENV !== 'production', warn the user.
|
|
9496
|
+
*/
|
|
9497
|
+
|
|
9498
|
+
function isCrushed() {}
|
|
9499
|
+
|
|
9500
|
+
if (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {
|
|
9501
|
+
warning('You are currently using minified code outside of NODE_ENV === "production". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');
|
|
9502
|
+
}
|
|
9503
|
+
|
|
9810
9504
|
var _localStorage$getItem;
|
|
9811
9505
|
var initialState = {
|
|
9812
9506
|
sidebarShow: "responsive",
|
|
@@ -10105,6 +9799,9 @@ var commonReducer$8 = toolkit.createReducer(initialState$e, function (builder) {
|
|
|
10105
9799
|
});
|
|
10106
9800
|
});
|
|
10107
9801
|
|
|
9802
|
+
var setUserList = toolkit.createAction("users/setUserList");
|
|
9803
|
+
var setStudentList = toolkit.createAction("users/setStudentList");
|
|
9804
|
+
|
|
10108
9805
|
var initialState$f = {
|
|
10109
9806
|
userList: [],
|
|
10110
9807
|
totalItems: 0,
|
|
@@ -10790,6 +10487,333 @@ var generateRandomString = (function () {
|
|
|
10790
10487
|
|
|
10791
10488
|
var amplitudeClient = amplitude.getInstance();
|
|
10792
10489
|
|
|
10490
|
+
var USER_URL$2 = "/admin/user";
|
|
10491
|
+
var CREATE_USER_URL = "/admin/create-user";
|
|
10492
|
+
var TITLE$a = "User list";
|
|
10493
|
+
var HOMEPAGE_TEACHER$1 = "/home";
|
|
10494
|
+
var HOMEPAGE_STUDENT$1 = "/home";
|
|
10495
|
+
var HOMEPAGE_ADMIN$1 = "/admin/dashboard";
|
|
10496
|
+
var HOMEPAGE_PARENT$1 = "/parent";
|
|
10497
|
+
var HOMEPAGE_DISTRICT$1 = "/admin/schools";
|
|
10498
|
+
var HOMEPAGE_EDU_TEACHER$1 = "/list-student";
|
|
10499
|
+
var useUserList = function useUserList() {
|
|
10500
|
+
var history = reactRouterDom.useHistory();
|
|
10501
|
+
var query = new URLSearchParams(location.search);
|
|
10502
|
+
var queryName = query.get("query");
|
|
10503
|
+
var userList = reactRedux.useSelector(function (state) {
|
|
10504
|
+
return state.users.userList;
|
|
10505
|
+
});
|
|
10506
|
+
var totalItems = reactRedux.useSelector(function (state) {
|
|
10507
|
+
return state.users.totalItems;
|
|
10508
|
+
});
|
|
10509
|
+
var _useFilters = useFilters(),
|
|
10510
|
+
filters = _useFilters.filters,
|
|
10511
|
+
changeFilters = _useFilters.changeFilters;
|
|
10512
|
+
var _useState = React.useState(!!queryName ? queryName : ""),
|
|
10513
|
+
fullName = _useState[0],
|
|
10514
|
+
setFullName = _useState[1];
|
|
10515
|
+
var isDistrict = window.location.host.includes("-district");
|
|
10516
|
+
var dispatch = reactRedux.useDispatch();
|
|
10517
|
+
var getData = React.useCallback(function (fullName) {
|
|
10518
|
+
try {
|
|
10519
|
+
var _temp2 = function _temp2() {
|
|
10520
|
+
dispatch(setLoading(false));
|
|
10521
|
+
};
|
|
10522
|
+
dispatch(setLoading(true));
|
|
10523
|
+
var _temp = _catch(function () {
|
|
10524
|
+
return Promise.resolve(fullName ? get$5(_extends({}, filters, {
|
|
10525
|
+
searchString: fullName
|
|
10526
|
+
})) : get$5(filters)).then(function (res) {
|
|
10527
|
+
var _res$data = res.data,
|
|
10528
|
+
items = _res$data.items,
|
|
10529
|
+
totalItems = _res$data.totalItems;
|
|
10530
|
+
for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
|
|
10531
|
+
var user = _step.value;
|
|
10532
|
+
user.roles = user.roles.includes("EduTeacher") ? [ROLES.EDUTEACHER] : user.roles;
|
|
10533
|
+
}
|
|
10534
|
+
dispatch(setUserList({
|
|
10535
|
+
userList: items,
|
|
10536
|
+
totalItems: totalItems
|
|
10537
|
+
}));
|
|
10538
|
+
});
|
|
10539
|
+
}, function (err) {
|
|
10540
|
+
var _err$response, _err$response$data;
|
|
10541
|
+
dispatch(setAlert({
|
|
10542
|
+
type: "danger",
|
|
10543
|
+
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
|
|
10544
|
+
}));
|
|
10545
|
+
});
|
|
10546
|
+
return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
|
|
10547
|
+
} catch (e) {
|
|
10548
|
+
return Promise.reject(e);
|
|
10549
|
+
}
|
|
10550
|
+
}, [dispatch, filters]);
|
|
10551
|
+
React.useEffect(function () {
|
|
10552
|
+
document.title = TITLE$a;
|
|
10553
|
+
}, []);
|
|
10554
|
+
React.useEffect(function () {
|
|
10555
|
+
if (!!fullName) {
|
|
10556
|
+
getData(fullName);
|
|
10557
|
+
setFullName(null);
|
|
10558
|
+
} else {
|
|
10559
|
+
getData();
|
|
10560
|
+
}
|
|
10561
|
+
}, [filters]);
|
|
10562
|
+
var removeData = React.useCallback(function (id) {
|
|
10563
|
+
dispatch(setLoading(true));
|
|
10564
|
+
try {
|
|
10565
|
+
dispatch(setModal({
|
|
10566
|
+
isOpen: true,
|
|
10567
|
+
type: "warning",
|
|
10568
|
+
message: "Do you want to remove this user?",
|
|
10569
|
+
onConfirm: function () {
|
|
10570
|
+
try {
|
|
10571
|
+
return Promise.resolve(remove$3(id)).then(function () {
|
|
10572
|
+
dispatch(setAlert({
|
|
10573
|
+
type: "success",
|
|
10574
|
+
message: "Remove user successfully"
|
|
10575
|
+
}));
|
|
10576
|
+
changeFilters({
|
|
10577
|
+
currentPage: 1
|
|
10578
|
+
});
|
|
10579
|
+
});
|
|
10580
|
+
} catch (e) {
|
|
10581
|
+
return Promise.reject(e);
|
|
10582
|
+
}
|
|
10583
|
+
}
|
|
10584
|
+
}));
|
|
10585
|
+
} catch (err) {
|
|
10586
|
+
var _err$response2, _err$response2$data;
|
|
10587
|
+
dispatch(setAlert({
|
|
10588
|
+
type: "danger",
|
|
10589
|
+
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
|
|
10590
|
+
}));
|
|
10591
|
+
}
|
|
10592
|
+
dispatch(setLoading(false));
|
|
10593
|
+
}, [filters]);
|
|
10594
|
+
var redirectLoginUser = function redirectLoginUser(res) {
|
|
10595
|
+
var _res$data2 = res.data,
|
|
10596
|
+
token = _res$data2.token,
|
|
10597
|
+
id = _res$data2.id,
|
|
10598
|
+
firstName = _res$data2.firstName,
|
|
10599
|
+
lastName = _res$data2.lastName,
|
|
10600
|
+
roles = _res$data2.roles,
|
|
10601
|
+
email = _res$data2.email,
|
|
10602
|
+
profileImageFileName = _res$data2.profileImageFileName;
|
|
10603
|
+
localStorage.setItem(ACCESS_TOKEN, token);
|
|
10604
|
+
localStorage.removeItem(NOTIFICATION_ALERT_KEY);
|
|
10605
|
+
dispatch(setUser({
|
|
10606
|
+
id: id,
|
|
10607
|
+
firstName: firstName,
|
|
10608
|
+
lastName: lastName,
|
|
10609
|
+
roles: roles,
|
|
10610
|
+
email: email,
|
|
10611
|
+
profileImageFileName: profileImageFileName
|
|
10612
|
+
}));
|
|
10613
|
+
if (isDistrict) {
|
|
10614
|
+
history.push(HOMEPAGE_DISTRICT$1);
|
|
10615
|
+
} else if (roles.includes("Admin")) {
|
|
10616
|
+
history.push(HOMEPAGE_ADMIN$1);
|
|
10617
|
+
} else if (roles.includes("Teacher") || roles.includes("Assistant")) {
|
|
10618
|
+
history.push(HOMEPAGE_TEACHER$1);
|
|
10619
|
+
} else if (roles.includes("Student")) {
|
|
10620
|
+
history.push(HOMEPAGE_STUDENT$1);
|
|
10621
|
+
} else if (roles.includes("Parent")) {
|
|
10622
|
+
history.push(HOMEPAGE_PARENT$1);
|
|
10623
|
+
} else if (roles.includes("EduTeacher")) {
|
|
10624
|
+
history.push(HOMEPAGE_EDU_TEACHER$1);
|
|
10625
|
+
} else if (roles.includes("Counselor") || roles.includes("SecondaryTeacher")) {
|
|
10626
|
+
history.push(HOMEPAGE_TEACHER$1);
|
|
10627
|
+
}
|
|
10628
|
+
};
|
|
10629
|
+
var swicthUser = React.useCallback(function (id) {
|
|
10630
|
+
try {
|
|
10631
|
+
var _temp3 = _catch(function () {
|
|
10632
|
+
return Promise.resolve(switchAccountUser(id)).then(function (res) {
|
|
10633
|
+
var data = res.data;
|
|
10634
|
+
dispatch(setModal({
|
|
10635
|
+
isOpen: true,
|
|
10636
|
+
type: "warning",
|
|
10637
|
+
message: "Do you want to impersonate this user?",
|
|
10638
|
+
onConfirm: function () {
|
|
10639
|
+
try {
|
|
10640
|
+
var _temp5 = function _temp5() {
|
|
10641
|
+
dispatch(setLoading(false));
|
|
10642
|
+
};
|
|
10643
|
+
dispatch(setLoading(true));
|
|
10644
|
+
var _temp4 = _catch(function () {
|
|
10645
|
+
var req = {
|
|
10646
|
+
email: data.email,
|
|
10647
|
+
password: "default",
|
|
10648
|
+
accessToken: data.token
|
|
10649
|
+
};
|
|
10650
|
+
return Promise.resolve(logIn(req)).then(function (res) {
|
|
10651
|
+
localStorage.clear();
|
|
10652
|
+
redirectLoginUser(res);
|
|
10653
|
+
});
|
|
10654
|
+
}, function (err) {
|
|
10655
|
+
var _err$response3, _err$response3$data;
|
|
10656
|
+
setAlert({
|
|
10657
|
+
type: "danger",
|
|
10658
|
+
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
|
|
10659
|
+
});
|
|
10660
|
+
});
|
|
10661
|
+
return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
|
|
10662
|
+
} catch (e) {
|
|
10663
|
+
return Promise.reject(e);
|
|
10664
|
+
}
|
|
10665
|
+
}
|
|
10666
|
+
}));
|
|
10667
|
+
});
|
|
10668
|
+
}, function (err) {
|
|
10669
|
+
var _err$response4, _err$response4$data;
|
|
10670
|
+
dispatch(setAlert({
|
|
10671
|
+
type: "danger",
|
|
10672
|
+
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
|
|
10673
|
+
}));
|
|
10674
|
+
});
|
|
10675
|
+
return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
|
|
10676
|
+
} catch (e) {
|
|
10677
|
+
return Promise.reject(e);
|
|
10678
|
+
}
|
|
10679
|
+
}, [filters]);
|
|
10680
|
+
var reDirectDetailPage = function reDirectDetailPage(id) {
|
|
10681
|
+
var url = !!id ? USER_URL$2 + "/" + id : CREATE_USER_URL;
|
|
10682
|
+
history.push(url);
|
|
10683
|
+
};
|
|
10684
|
+
return {
|
|
10685
|
+
userList: userList,
|
|
10686
|
+
totalItems: totalItems,
|
|
10687
|
+
filters: filters,
|
|
10688
|
+
queryName: queryName,
|
|
10689
|
+
getData: getData,
|
|
10690
|
+
removeData: removeData,
|
|
10691
|
+
changeFilters: changeFilters,
|
|
10692
|
+
reDirectDetailPage: reDirectDetailPage,
|
|
10693
|
+
swicthUser: swicthUser
|
|
10694
|
+
};
|
|
10695
|
+
};
|
|
10696
|
+
|
|
10697
|
+
var header$4 = "User";
|
|
10698
|
+
var UserList = function UserList() {
|
|
10699
|
+
var _useUserList = useUserList(),
|
|
10700
|
+
queryName = _useUserList.queryName,
|
|
10701
|
+
userList = _useUserList.userList,
|
|
10702
|
+
totalItems = _useUserList.totalItems,
|
|
10703
|
+
filters = _useUserList.filters,
|
|
10704
|
+
removeData = _useUserList.removeData,
|
|
10705
|
+
changeFilters = _useUserList.changeFilters,
|
|
10706
|
+
reDirectDetailPage = _useUserList.reDirectDetailPage,
|
|
10707
|
+
swicthUser = _useUserList.swicthUser;
|
|
10708
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
10709
|
+
t = _useTranslation.t;
|
|
10710
|
+
return React__default.createElement("div", {
|
|
10711
|
+
className: "fadeIn animated"
|
|
10712
|
+
}, React__default.createElement("h5", {
|
|
10713
|
+
className: "mb-2"
|
|
10714
|
+
}, t("" + header$4)), React__default.createElement(reactstrap.Row, {
|
|
10715
|
+
className: "my-2"
|
|
10716
|
+
}, React__default.createElement(reactstrap.Col, {
|
|
10717
|
+
md: 8
|
|
10718
|
+
}, React__default.createElement(SearchBoxContainer, {
|
|
10719
|
+
text: t("create_user"),
|
|
10720
|
+
onClick: function onClick() {
|
|
10721
|
+
return reDirectDetailPage();
|
|
10722
|
+
},
|
|
10723
|
+
initValue: !!queryName ? queryName : "",
|
|
10724
|
+
onSearch: function onSearch(searchString) {
|
|
10725
|
+
return changeFilters({
|
|
10726
|
+
searchString: searchString
|
|
10727
|
+
});
|
|
10728
|
+
},
|
|
10729
|
+
placeholder: t("type_something_to_search_by_user_name")
|
|
10730
|
+
})), React__default.createElement(reactstrap.Col, {
|
|
10731
|
+
md: 4,
|
|
10732
|
+
className: "d-flex justify-content-end align-items-center"
|
|
10733
|
+
}, t("total_of_users"), " : ", totalItems)), React__default.createElement(reactstrap.Row, {
|
|
10734
|
+
className: "mb-2"
|
|
10735
|
+
}, React__default.createElement(reactstrap.Col, {
|
|
10736
|
+
md: 12
|
|
10737
|
+
}, userList && userList.length > 0 ? React__default.createElement("div", null, React__default.createElement(reactstrap.Table, {
|
|
10738
|
+
bordered: true,
|
|
10739
|
+
hover: true,
|
|
10740
|
+
striped: true,
|
|
10741
|
+
responsive: true,
|
|
10742
|
+
size: "sm"
|
|
10743
|
+
}, React__default.createElement("thead", null, React__default.createElement("tr", null, React__default.createElement("th", {
|
|
10744
|
+
className: "align-top"
|
|
10745
|
+
}, t("name")), React__default.createElement("th", {
|
|
10746
|
+
className: "align-top"
|
|
10747
|
+
}, t("email")), React__default.createElement("th", {
|
|
10748
|
+
className: "align-top"
|
|
10749
|
+
}, t("age")), React__default.createElement("th", {
|
|
10750
|
+
className: "align-top"
|
|
10751
|
+
}, t("role")), React__default.createElement("th", {
|
|
10752
|
+
className: "align-top"
|
|
10753
|
+
}, t("active_status")), React__default.createElement("th", {
|
|
10754
|
+
className: "align-top"
|
|
10755
|
+
}, t("created_time")), React__default.createElement("th", {
|
|
10756
|
+
className: "text-center"
|
|
10757
|
+
}, t("action")))), React__default.createElement("tbody", null, userList.map(function (record) {
|
|
10758
|
+
return React__default.createElement("tr", {
|
|
10759
|
+
key: record.id
|
|
10760
|
+
}, React__default.createElement("td", {
|
|
10761
|
+
className: "align-middle"
|
|
10762
|
+
}, React__default.createElement(LinkEditButton, {
|
|
10763
|
+
label: "" + record.fullName,
|
|
10764
|
+
onClick: function onClick() {
|
|
10765
|
+
return reDirectDetailPage(record.id);
|
|
10766
|
+
}
|
|
10767
|
+
})), React__default.createElement("td", {
|
|
10768
|
+
className: "align-middle"
|
|
10769
|
+
}, record.email), React__default.createElement("td", {
|
|
10770
|
+
className: "align-middle"
|
|
10771
|
+
}, differenceInCalendarYears(new Date(), new Date(record.dateOfBirth))), React__default.createElement("td", {
|
|
10772
|
+
className: "align-middle"
|
|
10773
|
+
}, !!record.roles && record.roles.map(function (role) {
|
|
10774
|
+
return role === "SecondaryTeacher" ? "SupportTeacher" : role;
|
|
10775
|
+
}).join(", ")), React__default.createElement("td", {
|
|
10776
|
+
className: "align-middle"
|
|
10777
|
+
}, record.isActive ? t("active") : t("inactive")), React__default.createElement("td", {
|
|
10778
|
+
className: "align-middle"
|
|
10779
|
+
}, utcToLocalTime(record === null || record === void 0 ? void 0 : record.createTime, "yyyy-MM-DD HH:mm")), React__default.createElement("td", {
|
|
10780
|
+
className: "text-center align-middle"
|
|
10781
|
+
}, React__default.createElement(fa.FaUsersCog, {
|
|
10782
|
+
style: {
|
|
10783
|
+
fontSize: "18px",
|
|
10784
|
+
marginRight: "10px",
|
|
10785
|
+
cursor: "pointer"
|
|
10786
|
+
},
|
|
10787
|
+
onClick: function onClick() {
|
|
10788
|
+
return swicthUser(record.id);
|
|
10789
|
+
}
|
|
10790
|
+
}), React__default.createElement(DeleteButtonIcon, {
|
|
10791
|
+
onClick: function onClick() {
|
|
10792
|
+
return removeData(record.id);
|
|
10793
|
+
}
|
|
10794
|
+
})));
|
|
10795
|
+
})))) : React__default.createElement(EmptyDataAlert, {
|
|
10796
|
+
label: t("user")
|
|
10797
|
+
})), React__default.createElement(reactstrap.Col, {
|
|
10798
|
+
md: 12
|
|
10799
|
+
}, React__default.createElement(CustomPagination, {
|
|
10800
|
+
filters: filters,
|
|
10801
|
+
totalRecordCount: totalItems,
|
|
10802
|
+
changePageSize: function changePageSize(pageSize) {
|
|
10803
|
+
return changeFilters({
|
|
10804
|
+
pageSize: pageSize
|
|
10805
|
+
});
|
|
10806
|
+
},
|
|
10807
|
+
changePage: function changePage(currentPage) {
|
|
10808
|
+
return changeFilters({
|
|
10809
|
+
currentPage: currentPage
|
|
10810
|
+
});
|
|
10811
|
+
}
|
|
10812
|
+
}))));
|
|
10813
|
+
};
|
|
10814
|
+
|
|
10815
|
+
var amplitudeClient$1 = amplitude.getInstance();
|
|
10816
|
+
|
|
10793
10817
|
Object.defineProperty(exports, 'I18nextProvider', {
|
|
10794
10818
|
enumerable: true,
|
|
10795
10819
|
get: function () {
|
|
@@ -10870,7 +10894,7 @@ exports.UploadFileButton = UploadFileButton;
|
|
|
10870
10894
|
exports.UserDetail = UserDetail;
|
|
10871
10895
|
exports.UserList = UserList;
|
|
10872
10896
|
exports.addTab = addTab;
|
|
10873
|
-
exports.amplitudeClient = amplitudeClient;
|
|
10897
|
+
exports.amplitudeClient = amplitudeClient$1;
|
|
10874
10898
|
exports.answerQuestion = answerQuestion;
|
|
10875
10899
|
exports.answerQuestionDataPlayer = answerQuestionDataPlayer;
|
|
10876
10900
|
exports.api = api;
|