@griddo/ax 10.3.23 → 10.3.25
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 +2 -2
- package/src/__tests__/components/Gallery/GalleryFilters/Orientation/Orientation.test.tsx +5 -2
- package/src/__tests__/components/Gallery/GalleryFilters/SortBy/SortBy.test.tsx +5 -4
- package/src/__tests__/components/Gallery/GalleryFilters/Type/Type.test.tsx +5 -2
- package/src/__tests__/components/TableFilters/CategoryFilter/CategoryFilter.test.tsx +12 -11
- package/src/__tests__/components/TableFilters/DateFilter/DateFilter.test.tsx +17 -16
- package/src/__tests__/components/TableFilters/LiveFilter/LiveFilter.test.tsx +14 -13
- package/src/__tests__/components/TableFilters/NameFilter/NameFilter.test.tsx +21 -20
- package/src/__tests__/components/TableFilters/RoleFilter/RoleFilter.test.tsx +6 -5
- package/src/__tests__/components/TableFilters/SiteFilter/SiteFilter.test.tsx +8 -7
- package/src/__tests__/components/TableFilters/StatusFilter/StatusFilter.test.tsx +21 -20
- package/src/__tests__/components/TableFilters/TranslationsFilter/TranslationsFilter.test.tsx +24 -23
- package/src/__tests__/components/TableFilters/TypeFilter/TypeFilter.test.tsx +6 -5
- package/src/__tests__/components/TableFilters/UsersFilter/UsersFilter.test.tsx +17 -16
- package/src/api/sites.tsx +5 -9
- package/src/components/Button/index.tsx +3 -1
- package/src/components/Button/style.tsx +6 -0
- package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/TemplateManager/index.tsx +2 -2
- package/src/components/ConfigPanel/Form/ConnectedField/PageConnectedField/index.tsx +1 -1
- package/src/components/Fields/ArrayFieldGroup/ArrayFieldInline/index.tsx +3 -2
- package/src/components/Fields/ArrayFieldGroup/ArrayFieldItem/index.tsx +3 -1
- package/src/components/Fields/ArrayFieldGroup/index.tsx +5 -2
- package/src/components/Fields/CheckField/style.tsx +2 -2
- package/src/components/Fields/ColorPicker/index.tsx +4 -2
- package/src/components/Fields/ColorPicker/style.tsx +4 -0
- package/src/components/Fields/DateField/DatePickerInput/index.tsx +1 -1
- package/src/components/Fields/FileField/index.tsx +3 -1
- package/src/components/Fields/FileField/style.tsx +9 -4
- package/src/components/Fields/SliderField/index.tsx +4 -2
- package/src/components/Fields/SliderField/style.tsx +53 -4
- package/src/components/Fields/TimeField/style.tsx +6 -5
- package/src/components/FileGallery/index.tsx +26 -16
- package/src/components/FileGallery/style.tsx +12 -1
- package/src/components/FilterTagsBar/index.tsx +61 -0
- package/src/components/FilterTagsBar/style.tsx +30 -0
- package/src/components/FloatingMenu/index.tsx +5 -1
- package/src/components/Gallery/GalleryFilters/Orientation/index.tsx +14 -6
- package/src/components/Gallery/GalleryFilters/SortBy/index.tsx +24 -8
- package/src/components/Gallery/GalleryFilters/Type/index.tsx +22 -9
- package/src/components/Gallery/GalleryPanel/GalleryDragAndDrop/style.tsx +2 -1
- package/src/components/Gallery/hooks.tsx +37 -23
- package/src/components/Gallery/index.tsx +38 -20
- package/src/components/Gallery/style.tsx +15 -2
- package/src/components/MainWrapper/AppBar/index.tsx +3 -0
- package/src/components/MainWrapper/index.tsx +1 -0
- package/src/components/SearchTagsBar/index.tsx +43 -0
- package/src/components/SearchTagsBar/style.tsx +30 -0
- package/src/components/TableFilters/CategoryFilter/index.tsx +17 -10
- package/src/components/TableFilters/CheckGroupFilter/index.tsx +12 -9
- package/src/components/TableFilters/DateFilter/index.tsx +3 -2
- package/src/components/TableFilters/LastAccessFilter/index.tsx +4 -4
- package/src/components/TableFilters/LiveFilter/index.tsx +26 -22
- package/src/components/TableFilters/NameFilter/index.tsx +4 -3
- package/src/components/TableFilters/PermissionsFilter/index.tsx +4 -3
- package/src/components/TableFilters/RoleFilter/index.tsx +17 -7
- package/src/components/TableFilters/SiteFilter/index.tsx +23 -8
- package/src/components/TableFilters/StateFilter/index.tsx +15 -6
- package/src/components/TableFilters/StatusFilter/index.tsx +3 -2
- package/src/components/TableFilters/TranslationsFilter/index.tsx +19 -11
- package/src/components/TableFilters/TypeFilter/index.tsx +9 -5
- package/src/components/TableFilters/UsersFilter/index.tsx +4 -3
- package/src/components/Tag/index.tsx +5 -4
- package/src/components/index.tsx +4 -0
- package/src/containers/Navigation/Menu/actions.tsx +1 -13
- package/src/containers/Navigation/Menu/constants.tsx +0 -1
- package/src/containers/Navigation/Menu/interfaces.tsx +1 -7
- package/src/containers/Navigation/Menu/reducer.tsx +0 -4
- package/src/containers/Sites/actions.tsx +2 -1
- package/src/containers/Sites/interfaces.tsx +2 -2
- package/src/containers/Sites/reducer.tsx +2 -2
- package/src/containers/StructuredData/actions.tsx +2 -1
- package/src/forms/editor.tsx +1 -1
- package/src/modules/Categories/CategoriesList/CategoryItem/style.tsx +2 -0
- package/src/modules/Content/BulkHeader/TableHeader/index.tsx +26 -14
- package/src/modules/Content/BulkHeader/index.tsx +3 -3
- package/src/modules/Content/PageItem/index.tsx +21 -23
- package/src/modules/Content/PageItem/style.tsx +2 -0
- package/src/modules/Content/hooks.tsx +23 -13
- package/src/modules/Content/index.tsx +44 -11
- package/src/modules/Content/style.tsx +19 -1
- package/src/modules/FileDrive/Breadcrumb/style.tsx +1 -1
- package/src/modules/FileDrive/FileDragAndDrop/index.tsx +7 -6
- package/src/modules/FileDrive/FileDragAndDrop/style.tsx +2 -0
- package/src/modules/FileDrive/FileFilters/SortBy/index.tsx +24 -8
- package/src/modules/FileDrive/FileFilters/Type/index.tsx +26 -22
- package/src/modules/FileDrive/hooks.tsx +28 -13
- package/src/modules/FileDrive/index.tsx +31 -18
- package/src/modules/FileDrive/style.tsx +20 -1
- package/src/modules/Navigation/Defaults/Item/style.tsx +2 -0
- package/src/modules/Navigation/Menus/List/Nav/index.tsx +10 -12
- package/src/modules/Navigation/Menus/List/Table/SidePanel/index.tsx +0 -2
- package/src/modules/Navigation/Menus/List/index.tsx +8 -5
- package/src/modules/Redirects/BulkHeader/TableHeader/index.tsx +4 -2
- package/src/modules/Redirects/BulkHeader/index.tsx +3 -2
- package/src/modules/Redirects/hooks.tsx +23 -15
- package/src/modules/Redirects/index.tsx +61 -44
- package/src/modules/Redirects/style.tsx +10 -0
- package/src/modules/Settings/Integrations/BulkHeader/TableHeader/index.tsx +7 -11
- package/src/modules/Settings/Integrations/BulkHeader/index.tsx +4 -8
- package/src/modules/Settings/Integrations/hooks.tsx +23 -19
- package/src/modules/Settings/Integrations/index.tsx +22 -26
- package/src/modules/Settings/Integrations/style.tsx +7 -0
- package/src/modules/Sites/SitesList/GridView/GridHeaderFilter/index.tsx +8 -7
- package/src/modules/Sites/SitesList/ListView/BulkHeader/TableHeader/index.tsx +10 -5
- package/src/modules/Sites/SitesList/ListView/BulkHeader/index.tsx +4 -3
- package/src/modules/Sites/SitesList/hooks.tsx +26 -20
- package/src/modules/Sites/SitesList/index.tsx +53 -22
- package/src/modules/Sites/SitesList/style.tsx +16 -0
- package/src/modules/StructuredData/StructuredDataList/BulkHeader/TableHeader/index.tsx +3 -3
- package/src/modules/StructuredData/StructuredDataList/BulkHeader/index.tsx +3 -3
- package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/index.tsx +3 -3
- package/src/modules/StructuredData/StructuredDataList/GlobalPageItem/style.tsx +2 -0
- package/src/modules/StructuredData/StructuredDataList/StructuredDataItem/style.tsx +2 -0
- package/src/modules/StructuredData/StructuredDataList/hooks.tsx +25 -15
- package/src/modules/StructuredData/StructuredDataList/index.tsx +57 -14
- package/src/modules/StructuredData/StructuredDataList/style.tsx +10 -1
- package/src/modules/Users/Roles/BulkHeader/TableHeader/index.tsx +2 -2
- package/src/modules/Users/Roles/BulkHeader/index.tsx +2 -5
- package/src/modules/Users/Roles/hooks.tsx +24 -15
- package/src/modules/Users/Roles/index.tsx +7 -18
- package/src/modules/Users/UserList/BulkHeader/TableHeader/index.tsx +5 -18
- package/src/modules/Users/UserList/BulkHeader/index.tsx +15 -13
- package/src/modules/Users/UserList/hooks.tsx +27 -25
- package/src/modules/Users/UserList/index.tsx +69 -43
- package/src/modules/Users/UserList/style.tsx +10 -1
- package/src/types/index.tsx +19 -13
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { BulkSelectionOptions } from "@ax/components";
|
|
3
|
-
import { IRole } from "@ax/types";
|
|
3
|
+
import { IQueryValue, IRole } from "@ax/types";
|
|
4
4
|
import { usePermission } from "@ax/hooks";
|
|
5
5
|
import TableHeader from "./TableHeader";
|
|
6
6
|
|
|
@@ -23,13 +23,15 @@ const BulkHeader = (props: IProps): JSX.Element => {
|
|
|
23
23
|
|
|
24
24
|
const isAllowedToRemoveUsers = usePermission("usersRoles.removeUsers");
|
|
25
25
|
|
|
26
|
-
const bulkActions = isAllowedToRemoveUsers
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
26
|
+
const bulkActions = isAllowedToRemoveUsers
|
|
27
|
+
? [
|
|
28
|
+
{
|
|
29
|
+
icon: "delete",
|
|
30
|
+
text: isSiteView ? "Remove from this site" : "delete",
|
|
31
|
+
action: bulkDelete,
|
|
32
|
+
},
|
|
33
|
+
]
|
|
34
|
+
: [];
|
|
33
35
|
|
|
34
36
|
return showBulk ? (
|
|
35
37
|
<BulkSelectionOptions
|
|
@@ -56,16 +58,16 @@ const BulkHeader = (props: IProps): JSX.Element => {
|
|
|
56
58
|
interface IProps {
|
|
57
59
|
showBulk: boolean;
|
|
58
60
|
isSiteView?: boolean;
|
|
59
|
-
checkState:
|
|
61
|
+
checkState: Record<string, boolean>;
|
|
60
62
|
bulkDelete: () => void;
|
|
61
63
|
selectItems: () => void;
|
|
62
64
|
selectAllItems: () => void;
|
|
63
65
|
totalItems: number;
|
|
64
66
|
isScrolling: boolean;
|
|
65
|
-
sortItems: (orderPointer:
|
|
66
|
-
sortedListStatus:
|
|
67
|
-
filterValues:
|
|
68
|
-
filterItems: (filterPointer: string, filtersSelected:
|
|
67
|
+
sortItems: (orderPointer: IQueryValue[], isAscending: boolean) => void;
|
|
68
|
+
sortedListStatus: { isAscending: boolean; sortedByName: boolean; sortedByDateCreated: boolean };
|
|
69
|
+
filterValues: Record<string, IQueryValue[]>;
|
|
70
|
+
filterItems: (filterPointer: string, filtersSelected: IQueryValue[]) => void;
|
|
69
71
|
roles: IRole[];
|
|
70
72
|
}
|
|
71
73
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
|
-
import { IUsersQueryValues } from "@ax/types";
|
|
2
|
+
import { IQueryValue, IUsersQueryValues } from "@ax/types";
|
|
3
3
|
|
|
4
4
|
const useSortedListStatus = () => {
|
|
5
5
|
const sortedInitialState: { isAscending: boolean; sortedByName: boolean; sortedByDateCreated: boolean } = {
|
|
@@ -16,23 +16,30 @@ const useSortedListStatus = () => {
|
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
const useFilterQuery = ()
|
|
20
|
-
const initialQueryValues = {
|
|
21
|
-
order:
|
|
22
|
-
filterSites: "
|
|
23
|
-
filterRoles: "all",
|
|
19
|
+
const useFilterQuery = () => {
|
|
20
|
+
const initialQueryValues: Record<string, IQueryValue[]> = {
|
|
21
|
+
order: [],
|
|
22
|
+
filterSites: [{ value: "all", label: "All" }],
|
|
23
|
+
filterRoles: [{ value: "all", label: "All" }],
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
const [query, setQuery] = useState(initialQueryValues);
|
|
27
|
+
const [currentFilterQuery, setCurrentFilterQuery] = useState("");
|
|
27
28
|
|
|
28
29
|
const setFilterQuery = (filterValues: IUsersQueryValues) => {
|
|
29
30
|
const { order, filterSites, filterRoles } = filterValues;
|
|
30
|
-
|
|
31
|
-
const filterRolesValue = filterRoles === "all" ? "" : filterRoles;
|
|
32
31
|
let filterQuery = "";
|
|
33
32
|
|
|
34
|
-
const currentQuery = (pointer: string, values:
|
|
35
|
-
|
|
33
|
+
const currentQuery = (pointer: string, values: IQueryValue[]): string => {
|
|
34
|
+
const stringValues = Array.isArray(values) && values.length
|
|
35
|
+
? values.map((value) => (value.value !== "all" ? value.value : "")).join(",")
|
|
36
|
+
: "";
|
|
37
|
+
|
|
38
|
+
return !stringValues.length
|
|
39
|
+
? filterQuery
|
|
40
|
+
: filterQuery.length
|
|
41
|
+
? filterQuery.concat(`&${pointer}=${stringValues}`)
|
|
42
|
+
: `?${pointer}=${stringValues}`;
|
|
36
43
|
};
|
|
37
44
|
|
|
38
45
|
const isNotInitialValue = (pointer: keyof IUsersQueryValues) => {
|
|
@@ -41,40 +48,35 @@ const useFilterQuery = (): IUseFilterQuery => {
|
|
|
41
48
|
|
|
42
49
|
if (isNotInitialValue("order")) filterQuery = currentQuery("order", order);
|
|
43
50
|
if (isNotInitialValue("filterSites")) filterQuery = currentQuery("filterSites", filterSites);
|
|
44
|
-
if (isNotInitialValue("filterRoles")) filterQuery = currentQuery("filterRoles",
|
|
51
|
+
if (isNotInitialValue("filterRoles")) filterQuery = currentQuery("filterRoles", filterRoles);
|
|
45
52
|
|
|
46
|
-
|
|
53
|
+
setCurrentFilterQuery(filterQuery);
|
|
47
54
|
};
|
|
48
55
|
|
|
49
|
-
const setFiltersSelection = (pointer: string, filter:
|
|
56
|
+
const setFiltersSelection = (pointer: string, filter: IQueryValue[], isAscendent?: boolean) => {
|
|
50
57
|
const { order, filterSites, filterRoles } = query;
|
|
51
58
|
const orderMethod = isAscendent ? "asc" : "desc";
|
|
52
59
|
const filterValues = {
|
|
53
|
-
order: pointer === "order" ? `${filter}-${orderMethod}
|
|
60
|
+
order: pointer === "order" ? [{ value: `${filter[0].value}-${orderMethod}`, label: filter[0].label }] : order,
|
|
54
61
|
filterSites: pointer === "filterSites" ? filter : filterSites,
|
|
55
62
|
filterRoles: pointer === "filterRoles" ? filter : filterRoles,
|
|
56
63
|
};
|
|
57
64
|
|
|
58
65
|
setQuery(filterValues);
|
|
59
|
-
|
|
60
|
-
return filterValues;
|
|
66
|
+
setFilterQuery(filterValues);
|
|
61
67
|
};
|
|
62
68
|
|
|
63
|
-
const resetFilterQuery = () =>
|
|
69
|
+
const resetFilterQuery = () => {
|
|
70
|
+
setQuery(initialQueryValues);
|
|
71
|
+
setCurrentFilterQuery("");
|
|
72
|
+
}
|
|
64
73
|
|
|
65
74
|
return {
|
|
66
75
|
setFiltersSelection,
|
|
67
|
-
setFilterQuery,
|
|
68
76
|
resetFilterQuery,
|
|
69
77
|
filterValues: query,
|
|
78
|
+
filterQuery: currentFilterQuery,
|
|
70
79
|
};
|
|
71
80
|
};
|
|
72
81
|
|
|
73
|
-
interface IUseFilterQuery {
|
|
74
|
-
setFiltersSelection(pointer: string, filter: string, isAscendent?: boolean): IUsersQueryValues;
|
|
75
|
-
setFilterQuery(filterValues: IUsersQueryValues): string;
|
|
76
|
-
resetFilterQuery(): void;
|
|
77
|
-
filterValues: IUsersQueryValues;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
82
|
export { useSortedListStatus, useFilterQuery };
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
import React, { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { connect } from "react-redux";
|
|
3
3
|
|
|
4
|
-
import { IRootState, IUser, ISite, IGetRoles, IRole, IGetSitesParams } from "@ax/types";
|
|
4
|
+
import { IRootState, IUser, ISite, IGetRoles, IRole, IGetSitesParams, IQueryValue } from "@ax/types";
|
|
5
5
|
import { useBulkSelection, useModal, usePermission, useToast } from "@ax/hooks";
|
|
6
6
|
import { appActions } from "@ax/containers/App";
|
|
7
7
|
import { usersActions } from "@ax/containers/Users";
|
|
8
8
|
import { sitesActions } from "@ax/containers/Sites";
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import {
|
|
11
|
+
MainWrapper,
|
|
12
|
+
TableList,
|
|
13
|
+
ErrorToast,
|
|
14
|
+
EmptyState,
|
|
15
|
+
Modal,
|
|
16
|
+
Nav,
|
|
17
|
+
Toast,
|
|
18
|
+
SearchTagsBar,
|
|
19
|
+
FilterTagsBar,
|
|
20
|
+
} from "@ax/components";
|
|
11
21
|
|
|
12
22
|
import BulkHeader from "./BulkHeader";
|
|
13
23
|
import UserItem from "./UserItem";
|
|
@@ -40,11 +50,10 @@ const UserList = (props: IUserListProps): JSX.Element => {
|
|
|
40
50
|
const [page, setPage] = useState(1);
|
|
41
51
|
const [isScrolling, setIsScrolling] = useState(false);
|
|
42
52
|
const [searchQuery, setSearchQuery] = useState<string>("");
|
|
43
|
-
const [currentFilterQuery, setCurrentFilterQuery] = useState("");
|
|
44
53
|
const [usersDeleted, setUSersDeleted] = useState(1);
|
|
45
54
|
|
|
46
55
|
const { sortedListStatus, setSortedListStatus } = useSortedListStatus();
|
|
47
|
-
const { setFiltersSelection,
|
|
56
|
+
const { setFiltersSelection, resetFilterQuery, filterValues, filterQuery } = useFilterQuery();
|
|
48
57
|
const { isVisible, toggleToast, setIsVisible } = useToast();
|
|
49
58
|
|
|
50
59
|
const tableRef = useRef<HTMLDivElement>(null);
|
|
@@ -69,14 +78,14 @@ const UserList = (props: IUserListProps): JSX.Element => {
|
|
|
69
78
|
|
|
70
79
|
useEffect(() => {
|
|
71
80
|
const handleGetUsers = async () => {
|
|
72
|
-
const query = searchQuery ? (
|
|
81
|
+
const query = searchQuery ? (filterQuery ? `&query=${searchQuery}` : `?query=${searchQuery}`) : "";
|
|
73
82
|
const currentFilterQuerySite =
|
|
74
|
-
isSiteView &&
|
|
83
|
+
isSiteView && filterQuery ? `${filterQuery}&site=${currentSiteInfo.id}` : filterQuery;
|
|
75
84
|
await getUsers({ filterQuery: currentFilterQuerySite, query }, currentSiteInfo?.id);
|
|
76
85
|
};
|
|
77
86
|
handleGetUsers();
|
|
78
87
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
79
|
-
}, [
|
|
88
|
+
}, [filterQuery, searchQuery]);
|
|
80
89
|
|
|
81
90
|
useEffect(() => {
|
|
82
91
|
if (wrapperRef.current) {
|
|
@@ -88,7 +97,7 @@ const UserList = (props: IUserListProps): JSX.Element => {
|
|
|
88
97
|
useEffect(() => {
|
|
89
98
|
const handleRolesSites = async () => {
|
|
90
99
|
const siteId = isSiteView ? currentSiteInfo.id : "global";
|
|
91
|
-
await getRoles({ siteId });
|
|
100
|
+
await getRoles({ siteId }, undefined, false);
|
|
92
101
|
await getSites({ pagination: false, recentSitesNumber: 0 });
|
|
93
102
|
};
|
|
94
103
|
handleRolesSites();
|
|
@@ -139,20 +148,16 @@ const UserList = (props: IUserListProps): JSX.Element => {
|
|
|
139
148
|
}
|
|
140
149
|
: undefined;
|
|
141
150
|
|
|
142
|
-
const sortItems = async (orderPointer:
|
|
151
|
+
const sortItems = async (orderPointer: IQueryValue[], isAscending: boolean) => {
|
|
143
152
|
setPage(firstPage);
|
|
144
|
-
const sortedState = getSortedListStatus(orderPointer, isAscending);
|
|
153
|
+
const sortedState = getSortedListStatus(orderPointer[0].value.toString(), isAscending);
|
|
145
154
|
setSortedListStatus(sortedState);
|
|
146
|
-
|
|
147
|
-
const filterQuery = setFilterQuery(filtersSelection);
|
|
148
|
-
setCurrentFilterQuery(filterQuery);
|
|
155
|
+
setFiltersSelection("order", orderPointer, isAscending);
|
|
149
156
|
};
|
|
150
157
|
|
|
151
|
-
const filterItems = async (filterPointer: string, filtersSelected:
|
|
158
|
+
const filterItems = async (filterPointer: string, filtersSelected: IQueryValue[]) => {
|
|
152
159
|
setPage(firstPage);
|
|
153
|
-
|
|
154
|
-
const filterQuery = setFilterQuery(filtersSelection);
|
|
155
|
-
setCurrentFilterQuery(filterQuery);
|
|
160
|
+
setFiltersSelection(filterPointer, filtersSelected);
|
|
156
161
|
};
|
|
157
162
|
|
|
158
163
|
const handleClick = (id: number) => async () => {
|
|
@@ -194,8 +199,18 @@ const UserList = (props: IUserListProps): JSX.Element => {
|
|
|
194
199
|
const mainDeleteAction = { title: isSiteView ? "Remove from this site" : "Delete Users", onClick: bulkDelete };
|
|
195
200
|
const secondaryDeleteAction = { title: "Cancel", onClick: toggleModal };
|
|
196
201
|
|
|
202
|
+
const filterLabels = {
|
|
203
|
+
filterRoles: "Role",
|
|
204
|
+
filterSites: "Site",
|
|
205
|
+
};
|
|
206
|
+
|
|
197
207
|
return (
|
|
198
|
-
<MainWrapper
|
|
208
|
+
<MainWrapper
|
|
209
|
+
title="Users & Roles"
|
|
210
|
+
rightButton={rightButtonProps}
|
|
211
|
+
searchAction={setSearchQuery}
|
|
212
|
+
searchValue={searchQuery}
|
|
213
|
+
>
|
|
199
214
|
<S.UsersWrapper ref={wrapperRef} data-testid="users-wrapper">
|
|
200
215
|
<Nav current={currentNavItem} items={navItems} onClick={handleMenuClick} />
|
|
201
216
|
<S.TableListWrapper>
|
|
@@ -207,30 +222,41 @@ const UserList = (props: IUserListProps): JSX.Element => {
|
|
|
207
222
|
hasFixedHeader={true}
|
|
208
223
|
tableRef={tableRef}
|
|
209
224
|
>
|
|
210
|
-
|
|
211
|
-
<S.
|
|
212
|
-
<
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
225
|
+
<>
|
|
226
|
+
<S.SearchTags>
|
|
227
|
+
<SearchTagsBar query={searchQuery} setQuery={setSearchQuery} />
|
|
228
|
+
<FilterTagsBar
|
|
229
|
+
filters={filterValues}
|
|
230
|
+
setFilters={setFiltersSelection}
|
|
231
|
+
resetFilters={resetFilterQuery}
|
|
232
|
+
labels={filterLabels}
|
|
233
|
+
/>
|
|
234
|
+
</S.SearchTags>
|
|
235
|
+
{isEmpty ? (
|
|
236
|
+
<S.EmptyWrapper data-testid="empty-wrapper">
|
|
237
|
+
<EmptyState message="No users found" />
|
|
238
|
+
</S.EmptyWrapper>
|
|
239
|
+
) : (
|
|
240
|
+
pageUsers &&
|
|
241
|
+
pageUsers.map((user: any) => {
|
|
242
|
+
const isItemSelected = isSelected(user.id);
|
|
243
|
+
return (
|
|
244
|
+
<UserItem
|
|
245
|
+
siteId={currentSiteInfo?.id}
|
|
246
|
+
isSiteView={isSiteView}
|
|
247
|
+
key={user.id}
|
|
248
|
+
user={user}
|
|
249
|
+
sites={sites}
|
|
250
|
+
isSelected={isItemSelected}
|
|
251
|
+
onChange={addToBulkSelection}
|
|
252
|
+
onClick={handleClick(user.id)}
|
|
253
|
+
roles={roles}
|
|
254
|
+
toggleDeleteToast={handleToggleToast}
|
|
255
|
+
/>
|
|
256
|
+
);
|
|
257
|
+
})
|
|
258
|
+
)}
|
|
259
|
+
</>
|
|
234
260
|
</TableList>
|
|
235
261
|
</S.TableListWrapper>
|
|
236
262
|
</S.UsersWrapper>
|
|
@@ -285,7 +311,7 @@ interface IDispatchProps {
|
|
|
285
311
|
setHistoryPush(route: string): void;
|
|
286
312
|
deleteUser(id: number[]): Promise<boolean>;
|
|
287
313
|
removeUsersBulk(siteId: number, users: number[]): void;
|
|
288
|
-
getRoles(params: IGetRoles): Promise<void>;
|
|
314
|
+
getRoles(params: IGetRoles, token?: string, hasLoading?: boolean): Promise<void>;
|
|
289
315
|
getSites(params: IGetSitesParams): Promise<void>;
|
|
290
316
|
}
|
|
291
317
|
|
|
@@ -31,4 +31,13 @@ const ModalContent = styled.div`
|
|
|
31
31
|
}
|
|
32
32
|
`;
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
const SearchTags = styled.div`
|
|
35
|
+
& > div:nth-child(1) {
|
|
36
|
+
margin-bottom: ${(p) => p.theme.spacing.xs};
|
|
37
|
+
}
|
|
38
|
+
& > div:nth-child(2) {
|
|
39
|
+
margin-bottom: ${(p) => p.theme.spacing.xs};
|
|
40
|
+
}
|
|
41
|
+
`;
|
|
42
|
+
|
|
43
|
+
export { UsersWrapper, NotificationWrapper, TableListWrapper, EmptyWrapper, ModalContent, SearchTags };
|
package/src/types/index.tsx
CHANGED
|
@@ -359,6 +359,7 @@ export interface IMenu {
|
|
|
359
359
|
|
|
360
360
|
export interface IMenuItem {
|
|
361
361
|
id: number;
|
|
362
|
+
name: string;
|
|
362
363
|
editorID?: number;
|
|
363
364
|
label: string;
|
|
364
365
|
url: any;
|
|
@@ -665,28 +666,33 @@ export interface IStructuredDataSortedInitialState {
|
|
|
665
666
|
}
|
|
666
667
|
|
|
667
668
|
export interface IStructuredDataQueryValues {
|
|
668
|
-
types:
|
|
669
|
-
translated:
|
|
670
|
-
liveStatus:
|
|
671
|
-
order:
|
|
672
|
-
filterSites:
|
|
673
|
-
categories:
|
|
674
|
-
related:
|
|
669
|
+
types: IQueryValue[];
|
|
670
|
+
translated: IQueryValue[];
|
|
671
|
+
liveStatus: IQueryValue[];
|
|
672
|
+
order: IQueryValue[];
|
|
673
|
+
filterSites: IQueryValue[];
|
|
674
|
+
categories: IQueryValue[];
|
|
675
|
+
related: IQueryValue[];
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
export interface IQueryValue {
|
|
679
|
+
value: string | number;
|
|
680
|
+
label: string;
|
|
675
681
|
}
|
|
676
682
|
|
|
677
683
|
export interface IUsersQueryValues {
|
|
678
|
-
order:
|
|
679
|
-
filterSites:
|
|
680
|
-
filterRoles:
|
|
684
|
+
order: IQueryValue[];
|
|
685
|
+
filterSites: IQueryValue[];
|
|
686
|
+
filterRoles: IQueryValue[];
|
|
681
687
|
}
|
|
682
688
|
|
|
683
689
|
export interface IRolesQueryValues {
|
|
684
|
-
order:
|
|
690
|
+
order: IQueryValue[];
|
|
685
691
|
}
|
|
686
692
|
|
|
687
693
|
export interface ISitesQueryValues {
|
|
688
|
-
order:
|
|
689
|
-
liveStatus:
|
|
694
|
+
order: IQueryValue[];
|
|
695
|
+
liveStatus: IQueryValue[];
|
|
690
696
|
}
|
|
691
697
|
|
|
692
698
|
export interface IDataPackConfigImportCategory {
|