@griddo/ax 10.1.96 → 10.2.0
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/package.json +3 -2
- package/src/__mocks__/axios/Roles.ts +10 -0
- package/src/__mocks__/axios/UserList.ts +545 -0
- package/src/__mocks__/store/GenericStore.ts +25 -0
- package/src/__mocks__/store/Roles.ts +1050 -0
- package/src/__mocks__/store/SitesList.ts +7 -1
- package/src/__mocks__/store/UserList.ts +482 -0
- package/src/__mocks__/store/UsersCreate.ts +298 -0
- package/src/__tests__/components/Avatar/Avatar.test.tsx +49 -48
- package/src/__tests__/components/ConfigPanel/ConfigPanel.test.tsx +2 -0
- package/src/__tests__/components/ConfigPanel/Form/Form.test.tsx +2 -0
- package/src/__tests__/components/ConfigPanel/GlobalPageForm/GlobalPageForm.test.tsx +25 -0
- package/src/__tests__/components/Fields/Button/Button.test.tsx +2 -2
- package/src/__tests__/components/Fields/ImageField/ImageField.test.tsx +2 -0
- package/src/__tests__/components/Fields/IntegrationsField/IntegrationsField.test.tsx +44 -2
- package/src/__tests__/components/Fields/Tooltip/Tooltip.test.tsx +0 -1
- package/src/__tests__/components/Gallery/Gallery.test.tsx +4 -0
- package/src/__tests__/components/Gallery/GalleryPanel/DetailPanel/DetailPanel.test.tsx +14 -0
- package/src/__tests__/components/Gallery/GalleryPanel/GalleryPanel.test.tsx +2 -1
- package/src/__tests__/components/Lists/Lists.test.tsx +3 -3
- package/src/__tests__/components/Login/Login.test.tsx +1 -1
- package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +1 -1
- package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +1 -1
- package/src/__tests__/components/TableFilters/RoleFilter/RoleFilter.test.tsx +165 -0
- package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +2 -2
- package/src/__tests__/components/TableFilters/UsersFilter/UsersFilter.test.tsx +153 -0
- package/src/__tests__/components/Tabs/Tabs.test.tsx +1 -1
- package/src/__tests__/modules/Settings/Integrations/Integrations.test.tsx +6 -0
- package/src/__tests__/modules/Sites/Sites.test.tsx +2 -1
- package/src/__tests__/modules/Sites/SitesList/ListView/BulkHeader/BulkHeader.test.tsx +14 -5
- package/src/__tests__/modules/Sites/SitesList/SitesList.test.tsx +6 -4
- package/src/__tests__/modules/Users/Roles/BulkHeader/BulkHeader.test.tsx +158 -0
- package/src/__tests__/modules/Users/Roles/Roles.test.tsx +619 -0
- package/src/__tests__/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/RoleItem.test.tsx +107 -0
- package/src/__tests__/modules/Users/UserCreate/SiteItem/RolesModal/RolesModal.test.tsx +159 -0
- package/src/__tests__/modules/Users/UserCreate/SiteItem/SiteItem.test.tsx +175 -0
- package/src/__tests__/modules/Users/UserCreate/UserCreate.test.tsx +320 -0
- package/src/__tests__/modules/Users/UserList/UserItem/UserItem.test.tsx +417 -0
- package/src/__tests__/modules/Users/UserList/UserList.test.tsx +310 -0
- package/src/api/index.tsx +2 -0
- package/src/api/roles.tsx +77 -0
- package/src/api/users.tsx +22 -2
- package/src/components/ActionMenu/index.tsx +12 -6
- package/src/components/Avatar/index.tsx +5 -3
- package/src/components/Avatar/style.tsx +8 -9
- package/src/components/BulkSelectionOptions/index.tsx +19 -12
- package/src/components/BulkSelectionOptions/style.tsx +6 -11
- package/src/components/ConfigPanel/Form/index.tsx +24 -1
- package/src/components/ConfigPanel/GlobalPageForm/index.tsx +17 -4
- package/src/components/ElementsTooltip/index.tsx +1 -1
- package/src/components/Fields/IntegrationsField/index.tsx +5 -6
- package/src/components/Fields/RadioField/index.tsx +1 -1
- package/src/components/Fields/ReferenceField/AutoPanel/index.tsx +3 -3
- package/src/components/Fields/ReferenceField/ItemList/index.tsx +1 -1
- package/src/components/Fields/ReferenceField/ManualPanel/index.tsx +3 -3
- package/src/components/Fields/TagsField/index.tsx +4 -2
- package/src/components/Fields/TextField/index.tsx +3 -0
- package/src/components/Fields/UrlField/index.tsx +5 -5
- package/src/components/Gallery/GalleryPanel/DetailPanel/index.tsx +42 -15
- package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/index.tsx +1 -1
- package/src/components/Gallery/GalleryPanel/index.tsx +20 -5
- package/src/components/Gallery/index.tsx +12 -6
- package/src/components/Icon/index.tsx +9 -1
- package/src/components/MainWrapper/AppBar/atoms.tsx +2 -2
- package/src/components/MainWrapper/AppBar/index.tsx +12 -10
- package/src/components/MainWrapper/AppBar/style.tsx +2 -1
- package/src/components/Modal/style.tsx +2 -2
- package/src/components/Nav/index.tsx +12 -2
- package/src/components/PageFinder/index.tsx +2 -2
- package/src/components/SearchField/index.tsx +3 -8
- package/src/components/TableFilters/PermissionsFilter/index.tsx +50 -0
- package/src/{modules/Users/UserList/HeaderMenus/Name → components/TableFilters/PermissionsFilter}/style.tsx +6 -2
- package/src/components/TableFilters/RoleFilter/index.tsx +61 -0
- package/src/components/TableFilters/RoleFilter/style.tsx +28 -0
- package/src/components/TableFilters/UsersFilter/index.tsx +55 -0
- package/src/components/TableFilters/UsersFilter/style.tsx +31 -0
- package/src/components/TableFilters/index.tsx +6 -0
- package/src/components/TableList/TableItem/style.tsx +2 -2
- package/src/components/TableList/style.tsx +1 -1
- package/src/components/index.tsx +7 -1
- package/src/containers/App/actions.tsx +3 -3
- package/src/containers/PageEditor/actions.tsx +14 -20
- package/src/containers/Redirects/actions.tsx +1 -0
- package/src/containers/Sites/actions.tsx +22 -14
- package/src/containers/Sites/interfaces.tsx +3 -3
- package/src/containers/Sites/reducer.tsx +1 -1
- package/src/containers/StructuredData/actions.tsx +15 -3
- package/src/containers/Users/actions.tsx +160 -26
- package/src/containers/Users/constants.tsx +8 -10
- package/src/containers/Users/interfaces.tsx +25 -3
- package/src/containers/Users/reducer.tsx +24 -15
- package/src/guards/index.tsx +2 -1
- package/src/guards/restricted/index.tsx +21 -0
- package/src/hooks/index.tsx +3 -0
- package/src/hooks/users.tsx +38 -0
- package/src/modules/App/Routing/NavMenu/NavItem/index.tsx +10 -5
- package/src/modules/App/Routing/NavMenu/index.tsx +16 -7
- package/src/modules/App/Routing/PrivateRoute/index.tsx +13 -5
- package/src/modules/App/Routing/index.tsx +17 -6
- package/src/modules/Categories/CategoriesList/BulkHeader/TableHeader/style.tsx +1 -0
- package/src/modules/Categories/CategoriesList/BulkHeader/index.tsx +2 -10
- package/src/modules/Categories/CategoriesList/CategoryItem/index.tsx +27 -12
- package/src/modules/Categories/CategoriesList/CategoryItem/style.tsx +4 -2
- package/src/modules/Categories/CategoriesList/index.tsx +27 -8
- package/src/modules/Content/BulkHeader/index.tsx +7 -3
- package/src/modules/Content/PageImporter/index.tsx +1 -1
- package/src/modules/Content/PageItem/index.tsx +45 -31
- package/src/modules/Content/PageItem/style.tsx +2 -1
- package/src/modules/Content/index.tsx +22 -13
- package/src/modules/FramePreview/index.tsx +2 -2
- package/src/modules/GlobalEditor/index.tsx +68 -53
- package/src/modules/GlobalSettings/index.tsx +2 -0
- package/src/modules/Navigation/Defaults/BulkHeader/index.tsx +2 -10
- package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/DefaultsBrowser/index.tsx +9 -11
- package/src/modules/Navigation/Defaults/DefaultsEditor/Editor/index.tsx +5 -1
- package/src/modules/Navigation/Defaults/DefaultsEditor/index.tsx +10 -5
- package/src/modules/Navigation/Defaults/Item/index.tsx +41 -27
- package/src/modules/Navigation/Defaults/Item/style.tsx +2 -1
- package/src/modules/Navigation/Defaults/index.tsx +29 -10
- package/src/modules/Navigation/Menus/List/Table/Header/index.tsx +7 -5
- package/src/modules/Navigation/Menus/List/Table/Item/index.tsx +10 -10
- package/src/modules/Navigation/Menus/List/Table/Item/style.tsx +2 -1
- package/src/modules/Navigation/Menus/List/index.tsx +6 -2
- package/src/modules/Navigation/Menus/index.tsx +12 -7
- package/src/modules/PageEditor/Editor/index.tsx +5 -1
- package/src/modules/PageEditor/PageBrowser/index.tsx +9 -3
- package/src/modules/PageEditor/index.tsx +67 -57
- package/src/modules/Redirects/index.tsx +97 -98
- package/src/modules/Settings/ContentTypes/DataPacks/AddModal/index.tsx +5 -1
- package/src/modules/Settings/ContentTypes/DataPacks/Config/Form/TemplateConfig/TemplateEditor/Editor/TemplateBrowser/index.tsx +8 -9
- package/src/modules/Settings/ContentTypes/DataPacks/Config/Form/index.tsx +7 -3
- package/src/modules/Settings/ContentTypes/DataPacks/Config/index.tsx +5 -1
- package/src/modules/Settings/ContentTypes/DataPacks/Item/index.tsx +5 -1
- package/src/modules/Settings/Integrations/BulkHeader/index.tsx +2 -17
- package/src/modules/Settings/Integrations/IntegrationForm/index.tsx +6 -2
- package/src/modules/Settings/Integrations/IntegrationItem/index.tsx +18 -8
- package/src/modules/Settings/Integrations/IntegrationItem/style.tsx +6 -3
- package/src/modules/Settings/Integrations/index.tsx +32 -7
- package/src/modules/Settings/Languages/LanguagePanel/index.tsx +6 -2
- package/src/modules/Settings/Languages/Table/Header/index.tsx +4 -2
- package/src/modules/Settings/Languages/Table/Item/index.tsx +19 -43
- package/src/modules/Settings/Languages/Table/Item/style.tsx +11 -54
- package/src/modules/Settings/Languages/index.tsx +2 -2
- package/src/modules/Settings/SeoAnalyticsSettings/Analytics/index.tsx +2 -4
- package/src/modules/Settings/SeoAnalyticsSettings/index.tsx +4 -2
- package/src/modules/Settings/Social/index.tsx +1 -1
- package/src/modules/Settings/index.tsx +17 -11
- package/src/modules/Sites/SitesList/GridView/GridSiteItem/index.tsx +31 -18
- package/src/modules/Sites/SitesList/ListView/BulkHeader/index.tsx +21 -12
- package/src/modules/Sites/SitesList/ListView/ListSiteItem/index.tsx +31 -18
- package/src/modules/Sites/SitesList/RecentSiteItem/index.tsx +1 -1
- package/src/modules/Sites/SitesList/index.tsx +16 -24
- package/src/modules/Sites/index.tsx +7 -3
- package/src/modules/StructuredData/Form/index.tsx +1 -1
- package/src/modules/StructuredData/StructuredDataList/BulkHeader/index.tsx +8 -5
- package/src/modules/StructuredData/StructuredDataList/ContentFilters/index.tsx +8 -5
- package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/index.tsx +29 -15
- package/src/modules/StructuredData/StructuredDataList/StructuredDataItem/index.tsx +50 -19
- package/src/modules/StructuredData/StructuredDataList/index.tsx +9 -6
- package/src/modules/Users/Profile/index.tsx +16 -4
- package/src/modules/Users/Roles/BulkHeader/TableHeader/index.tsx +52 -0
- package/src/modules/Users/Roles/BulkHeader/TableHeader/style.tsx +43 -0
- package/src/modules/Users/Roles/BulkHeader/index.tsx +74 -0
- package/src/modules/Users/Roles/RoleItem/index.tsx +104 -0
- package/src/modules/Users/Roles/RoleItem/style.tsx +127 -0
- package/src/modules/Users/Roles/SideModal/index.tsx +81 -0
- package/src/modules/Users/Roles/SideModal/style.tsx +132 -0
- package/src/modules/Users/Roles/hooks.tsx +78 -0
- package/src/modules/Users/Roles/index.tsx +256 -0
- package/src/modules/Users/Roles/style.tsx +23 -0
- package/src/modules/Users/Roles/utils.tsx +12 -0
- package/src/modules/Users/UserCreate/OptionItem/index.tsx +45 -0
- package/src/modules/Users/UserCreate/OptionItem/style.tsx +48 -0
- package/src/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/index.tsx +48 -0
- package/src/modules/Users/UserCreate/SiteItem/RolesModal/RoleItem/style.tsx +42 -0
- package/src/modules/Users/UserCreate/SiteItem/RolesModal/index.tsx +140 -0
- package/src/modules/Users/UserCreate/SiteItem/RolesModal/style.tsx +94 -0
- package/src/modules/Users/UserCreate/SiteItem/index.tsx +103 -22
- package/src/modules/Users/UserCreate/SiteItem/style.tsx +49 -6
- package/src/modules/Users/UserCreate/index.tsx +278 -121
- package/src/modules/Users/UserCreate/style.tsx +71 -4
- package/src/modules/Users/UserEdit/index.tsx +71 -24
- package/src/modules/Users/UserForm/atoms.tsx +40 -8
- package/src/modules/Users/UserForm/index.tsx +335 -116
- package/src/modules/Users/UserForm/style.tsx +70 -6
- package/src/modules/Users/UserList/BulkHeader/TableHeader/index.tsx +61 -31
- package/src/modules/Users/UserList/BulkHeader/TableHeader/style.tsx +18 -4
- package/src/modules/Users/UserList/BulkHeader/index.tsx +10 -3
- package/src/modules/Users/UserList/UserItem/index.tsx +121 -38
- package/src/modules/Users/UserList/UserItem/style.tsx +32 -14
- package/src/modules/Users/UserList/hooks.tsx +13 -8
- package/src/modules/Users/UserList/index.tsx +67 -29
- package/src/modules/Users/UserList/utils.tsx +1 -1
- package/src/modules/Users/index.tsx +20 -3
- package/src/routes/index.tsx +9 -17
- package/src/routes/multisite.tsx +73 -8
- package/src/routes/site.tsx +96 -10
- package/src/types/index.tsx +42 -1
- package/tsconfig.paths.json +1 -0
- package/src/__tests__/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -61
- package/src/modules/Users/UserList/HeaderMenus/Name/index.tsx +0 -55
|
@@ -3,9 +3,9 @@ import { connect } from "react-redux";
|
|
|
3
3
|
|
|
4
4
|
import { appActions } from "@ax/containers/App";
|
|
5
5
|
import { usersActions } from "@ax/containers/Users";
|
|
6
|
-
import { Loading, MainWrapper, Modal } from "@ax/components";
|
|
7
|
-
import { IRootState, ISite, IUser } from "@ax/types";
|
|
8
|
-
import { useModal } from "@ax/hooks";
|
|
6
|
+
import { Loading, MainWrapper, Modal, Toast } from "@ax/components";
|
|
7
|
+
import { IRootState, ISite, ISiteRoles, IUser } from "@ax/types";
|
|
8
|
+
import { useModal, useToast } from "@ax/hooks";
|
|
9
9
|
import UserForm from "../UserForm";
|
|
10
10
|
|
|
11
11
|
import * as S from "./style";
|
|
@@ -14,13 +14,15 @@ const UserEdit = (props: IProps) => {
|
|
|
14
14
|
const { user, updateUser, isSaving, isLoading, deleteUser, currentUser, setHistoryPush, site, sites } = props;
|
|
15
15
|
|
|
16
16
|
const { timezone } = user;
|
|
17
|
-
const initForm = { ...user
|
|
17
|
+
const initForm = { ...user };
|
|
18
18
|
if (!timezone) initForm.timezone = "Europe/Madrid";
|
|
19
19
|
const isSiteView = !!site;
|
|
20
20
|
const sitesIds = sites.map((site: ISite) => site.id);
|
|
21
21
|
const usersRoute = isSiteView ? "/sites/users" : "users";
|
|
22
22
|
const [form, setForm] = useState<IUser>(initForm);
|
|
23
23
|
const { isOpen, toggleModal } = useModal();
|
|
24
|
+
const { isOpen: isOpenAdvise, toggleModal: toggleAdviseModal } = useModal(false);
|
|
25
|
+
const { isVisible, toggleToast, setIsVisible } = useToast();
|
|
24
26
|
|
|
25
27
|
useEffect(() => {
|
|
26
28
|
const { timezone } = user;
|
|
@@ -29,14 +31,20 @@ const UserEdit = (props: IProps) => {
|
|
|
29
31
|
setForm(initForm);
|
|
30
32
|
}, [user]);
|
|
31
33
|
|
|
32
|
-
const handleSave = () => {
|
|
33
|
-
|
|
34
|
+
const handleSave = async () => {
|
|
35
|
+
if(isOpenAdvise){
|
|
36
|
+
toggleAdviseModal();
|
|
37
|
+
}
|
|
38
|
+
const updated = form.id ? await updateUser(form.id, form, false) : false;
|
|
39
|
+
if (updated) {
|
|
40
|
+
toggleToast();
|
|
41
|
+
}
|
|
34
42
|
};
|
|
35
43
|
|
|
36
44
|
const rightButtonProps = {
|
|
37
45
|
label: isSaving ? "Saving" : "Update User",
|
|
38
46
|
disabled: isSaving,
|
|
39
|
-
action: handleSave,
|
|
47
|
+
action: form.roles.length === 0 && !form.isSuperAdmin ? toggleAdviseModal : handleSave,
|
|
40
48
|
};
|
|
41
49
|
|
|
42
50
|
const handleDelete = () => {
|
|
@@ -49,36 +57,61 @@ const UserEdit = (props: IProps) => {
|
|
|
49
57
|
});
|
|
50
58
|
};
|
|
51
59
|
|
|
52
|
-
const isSameUser = currentUser.id === user.id;
|
|
60
|
+
const isSameUser = currentUser && currentUser.id === user.id;
|
|
61
|
+
const isDeleteDisabled = isSiteView && user.isSuperAdmin;
|
|
53
62
|
|
|
54
|
-
const rightLineButtonProps = !isSameUser
|
|
63
|
+
const rightLineButtonProps = !isSameUser && !isDeleteDisabled
|
|
55
64
|
? {
|
|
56
65
|
label: isSiteView ? "Remove user from this site" : "Delete User",
|
|
57
66
|
action: toggleModal,
|
|
58
67
|
}
|
|
59
68
|
: undefined;
|
|
60
69
|
|
|
61
|
-
const getUpdatedSites = (
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
70
|
+
const getUpdatedSites = () => {
|
|
71
|
+
const hasAll = form.roles.find((siteRole: ISiteRoles) => siteRole.siteId === "all");
|
|
72
|
+
if (hasAll) {
|
|
73
|
+
const oldRoleSites = form.roles.filter((siteRole: ISiteRoles) => siteRole.siteId !== "all");
|
|
74
|
+
const roleSites = sitesIds
|
|
75
|
+
.filter((siteId: number) => siteId !== site?.id)
|
|
76
|
+
.map((siteId: number) => {
|
|
77
|
+
return { siteId, roles: hasAll.roles };
|
|
78
|
+
});
|
|
79
|
+
return [...oldRoleSites, ...roleSites];
|
|
80
|
+
} else {
|
|
81
|
+
return form.roles.filter((siteRole: ISiteRoles) => siteRole.siteId !== site?.id);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
65
84
|
|
|
66
|
-
const removeUserFromSite = () => {
|
|
67
|
-
|
|
68
|
-
const
|
|
85
|
+
const removeUserFromSite = async () => {
|
|
86
|
+
if (!user.id) return;
|
|
87
|
+
const updatedSites = getUpdatedSites();
|
|
88
|
+
const formWithUpdatedSites = { ...form, roles: updatedSites };
|
|
69
89
|
|
|
70
|
-
user.id
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
90
|
+
const updated = await updateUser(user.id, formWithUpdatedSites, true);
|
|
91
|
+
if (updated) {
|
|
92
|
+
setHistoryPush(usersRoute);
|
|
93
|
+
}
|
|
74
94
|
};
|
|
75
95
|
|
|
76
96
|
const mainDeleteAction = {
|
|
77
97
|
title: isSiteView ? "Remove user" : "Delete User",
|
|
78
98
|
onClick: isSiteView ? removeUserFromSite : handleDelete,
|
|
79
99
|
};
|
|
100
|
+
|
|
80
101
|
const secondaryDeleteAction = { title: "Cancel", onClick: toggleModal };
|
|
81
102
|
|
|
103
|
+
const toastProps = {
|
|
104
|
+
setIsVisible,
|
|
105
|
+
message: "User updated",
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const mainModalAction = {
|
|
109
|
+
title: "Edit User",
|
|
110
|
+
onClick: handleSave,
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
const secondaryModalAction = { title: "Cancel", onClick: toggleAdviseModal };
|
|
114
|
+
|
|
82
115
|
if (isLoading) return <Loading />;
|
|
83
116
|
|
|
84
117
|
return (
|
|
@@ -88,7 +121,7 @@ const UserEdit = (props: IProps) => {
|
|
|
88
121
|
backLink={true}
|
|
89
122
|
rightLineButton={isSiteView ? rightLineButtonProps : undefined}
|
|
90
123
|
>
|
|
91
|
-
<UserForm form={form} setForm={setForm} user={user} isSiteView={isSiteView} />
|
|
124
|
+
<UserForm form={form} setForm={setForm} user={user} isSiteView={isSiteView} site={site} />
|
|
92
125
|
<Modal
|
|
93
126
|
isOpen={isOpen}
|
|
94
127
|
hide={toggleModal}
|
|
@@ -115,6 +148,20 @@ const UserEdit = (props: IProps) => {
|
|
|
115
148
|
</S.ModalContent>
|
|
116
149
|
) : null}
|
|
117
150
|
</Modal>
|
|
151
|
+
<Modal
|
|
152
|
+
isOpen={isOpenAdvise}
|
|
153
|
+
hide={toggleAdviseModal}
|
|
154
|
+
title="Edit User?"
|
|
155
|
+
secondaryAction={secondaryModalAction}
|
|
156
|
+
mainAction={mainModalAction}
|
|
157
|
+
size="S"
|
|
158
|
+
>
|
|
159
|
+
<S.ModalContent>
|
|
160
|
+
Before editing an user, <strong>select the user's permissions and site access</strong>. If you proceed without selecting
|
|
161
|
+
any permissions, the user <strong>won't have access to anything or view any content</strong>.
|
|
162
|
+
</S.ModalContent>
|
|
163
|
+
</Modal>
|
|
164
|
+
{isVisible && <Toast {...toastProps} />}
|
|
118
165
|
</MainWrapper>
|
|
119
166
|
);
|
|
120
167
|
};
|
|
@@ -130,7 +177,7 @@ const mapStateToProps = (state: IRootState) => ({
|
|
|
130
177
|
|
|
131
178
|
interface IDispatchProps {
|
|
132
179
|
setHistoryPush(path: string): void;
|
|
133
|
-
updateUser(id: number, data: any, isProfile: boolean):
|
|
180
|
+
updateUser(id: number, data: any, isProfile: boolean): Promise<boolean>;
|
|
134
181
|
deleteUser(id: number): Promise<boolean>;
|
|
135
182
|
}
|
|
136
183
|
|
|
@@ -142,10 +189,10 @@ const mapDispatchToProps = {
|
|
|
142
189
|
|
|
143
190
|
interface IProfileProps {
|
|
144
191
|
user: IUser;
|
|
145
|
-
site: ISite;
|
|
192
|
+
site: ISite | null;
|
|
146
193
|
isSaving: boolean;
|
|
147
194
|
isLoading: boolean;
|
|
148
|
-
currentUser: IUser;
|
|
195
|
+
currentUser: IUser | null;
|
|
149
196
|
sites: ISite[];
|
|
150
197
|
}
|
|
151
198
|
|
|
@@ -3,14 +3,35 @@ import { connect } from "react-redux";
|
|
|
3
3
|
|
|
4
4
|
import { ErrorToast, FieldsBehavior, Modal } from "@ax/components";
|
|
5
5
|
import { usersActions } from "@ax/containers/Users";
|
|
6
|
-
import { IRootState } from "@ax/types";
|
|
6
|
+
import { IModal, IRootState } from "@ax/types";
|
|
7
7
|
|
|
8
8
|
import * as S from "./style";
|
|
9
9
|
|
|
10
|
-
const
|
|
10
|
+
const TypeChangeModal = (props: ITypeChangeProps): JSX.Element => {
|
|
11
|
+
const { isOpen, toggleModal, mainModalAction, secondaryModalAction, email, isSuperAdmin } = props;
|
|
12
|
+
|
|
13
|
+
const type = isSuperAdmin ? "member" : "Super admin";
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<Modal
|
|
17
|
+
isOpen={isOpen}
|
|
18
|
+
hide={toggleModal}
|
|
19
|
+
title="Change user type?"
|
|
20
|
+
secondaryAction={secondaryModalAction}
|
|
21
|
+
mainAction={mainModalAction}
|
|
22
|
+
size="S"
|
|
23
|
+
>
|
|
24
|
+
<S.ModalContent>
|
|
25
|
+
Are you sure you want to change {email} as a {type} user?
|
|
26
|
+
</S.ModalContent>
|
|
27
|
+
</Modal>
|
|
28
|
+
);
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
const PasswordForm = (props: IPasswordFormProps) => {
|
|
11
32
|
const { id, isOpen, toggleModal, isSaving, updatePassword } = props;
|
|
12
33
|
|
|
13
|
-
const initForm = { currentPassword: "", password: "", retypedPassword: "" };
|
|
34
|
+
const initForm: IState = { currentPassword: "", password: "", retypedPassword: "" };
|
|
14
35
|
const [form, setForm] = useState(initForm);
|
|
15
36
|
|
|
16
37
|
const handleCurrentPasswordChange = (value: string) => setForm({ ...form, currentPassword: value });
|
|
@@ -80,12 +101,17 @@ const PasswordForm = (props: IProps) => {
|
|
|
80
101
|
);
|
|
81
102
|
};
|
|
82
103
|
|
|
104
|
+
interface ITypeChangeProps extends IModal {
|
|
105
|
+
email: string;
|
|
106
|
+
isSuperAdmin: boolean;
|
|
107
|
+
}
|
|
108
|
+
|
|
83
109
|
const mapStateToProps = (state: IRootState) => ({
|
|
84
110
|
isSaving: state.app.isSaving,
|
|
85
111
|
});
|
|
86
112
|
|
|
87
113
|
interface IDispatchProps {
|
|
88
|
-
updatePassword(id:
|
|
114
|
+
updatePassword(id: number | null, data: IState): Promise<boolean>;
|
|
89
115
|
}
|
|
90
116
|
|
|
91
117
|
const mapDispatchToProps = {
|
|
@@ -93,14 +119,20 @@ const mapDispatchToProps = {
|
|
|
93
119
|
};
|
|
94
120
|
|
|
95
121
|
interface IPasswordProps {
|
|
96
|
-
id:
|
|
122
|
+
id: number | null;
|
|
97
123
|
isOpen: boolean;
|
|
98
|
-
toggleModal:
|
|
124
|
+
toggleModal: () => void;
|
|
99
125
|
isSaving: boolean;
|
|
100
126
|
}
|
|
101
127
|
|
|
102
|
-
|
|
128
|
+
interface IState {
|
|
129
|
+
currentPassword: string;
|
|
130
|
+
password: string;
|
|
131
|
+
retypedPassword: string;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
type IPasswordFormProps = IPasswordProps & IDispatchProps;
|
|
103
135
|
|
|
104
136
|
const PasswordModal = connect(mapStateToProps, mapDispatchToProps)(PasswordForm);
|
|
105
137
|
|
|
106
|
-
export { PasswordModal };
|
|
138
|
+
export { PasswordModal, TypeChangeModal };
|