Skip to content

Commit 6b3f8b2

Browse files
Merge pull request #4040 from Zacgoose/default-filter-shared-mailbox
Default filter for table, updated mailbox report
2 parents 1b0474d + bdd1fe1 commit 6b3f8b2

File tree

3 files changed

+44
-10
lines changed

3 files changed

+44
-10
lines changed

src/components/CippComponents/CippTablePage.jsx

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import Head from "next/head";
44
import { CippDataTable } from "../CippTable/CippDataTable";
55
import { useSettings } from "../../hooks/use-settings";
66
import { CippHead } from "./CippHead";
7+
import { useState } from "react";
78

89
export const CippTablePage = (props) => {
910
const {
@@ -23,10 +24,12 @@ export const CippTablePage = (props) => {
2324
queryKey,
2425
tableFilter,
2526
tenantInTitle = true,
27+
filters,
2628
sx = { flexGrow: 1, py: 4 },
2729
...other
2830
} = props;
2931
const tenant = useSettings().currentTenant;
32+
const [tableFilters] = useState(filters || []);
3033
return (
3134
<>
3235
<CippHead title={title} />
@@ -61,6 +64,13 @@ export const CippTablePage = (props) => {
6164
columns={columns}
6265
columnsFromApi={columnsFromApi}
6366
offCanvas={offCanvas}
67+
filters={tableFilters}
68+
initialState={{
69+
columnFilters: filters ? filters.map(filter => ({
70+
id: filter.id || filter.columnId,
71+
value: filter.value
72+
})) : []
73+
}}
6474
{...other}
6575
/>
6676
</Card>

src/components/CippTable/CippDataTable.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export const CippDataTable = (props) => {
6666
const [actionData, setActionData] = useState({ data: {}, action: {}, ready: false });
6767
const [graphFilterData, setGraphFilterData] = useState({});
6868
const [sorting, setSorting] = useState([]);
69+
const [columnFilters, setColumnFilters] = useState([]);
6970
const waitingBool = api?.url ? true : false;
7071

7172
const settings = useSettings();
@@ -78,6 +79,12 @@ export const CippDataTable = (props) => {
7879
...graphFilterData,
7980
});
8081

82+
useEffect(() => {
83+
if (filters && Array.isArray(filters) && filters.length > 0) {
84+
setColumnFilters(filters);
85+
}
86+
}, [filters]);
87+
8188
useEffect(() => {
8289
if (Array.isArray(data) && !api?.url) {
8390
if (!isEqual(data, usedData)) {
@@ -208,6 +215,7 @@ export const CippDataTable = (props) => {
208215
state: {
209216
columnVisibility,
210217
sorting,
218+
columnFilters,
211219
showSkeletons: getRequestData.isFetchingNextPage
212220
? false
213221
: getRequestData.isFetching
@@ -217,6 +225,7 @@ export const CippDataTable = (props) => {
217225
onSortingChange: (newSorting) => {
218226
setSorting(newSorting ?? []);
219227
},
228+
onColumnFiltersChange: setColumnFilters,
220229
renderEmptyRowsFallback: ({ table }) =>
221230
getRequestData.data?.pages?.[0].Metadata?.QueueMessage ? (
222231
<Box sx={{ py: 4 }}>
@@ -435,6 +444,21 @@ export const CippDataTable = (props) => {
435444
},
436445
});
437446

447+
useEffect(() => {
448+
if (filters && Array.isArray(filters) && filters.length > 0 && memoizedColumns.length > 0) {
449+
// Make sure the table and columns are ready
450+
setTimeout(() => {
451+
if (table && typeof table.setColumnFilters === 'function') {
452+
const formattedFilters = filters.map(filter => ({
453+
id: filter.id || filter.columnId,
454+
value: filter.value
455+
}));
456+
table.setColumnFilters(formattedFilters);
457+
}
458+
},);
459+
}
460+
}, [filters, memoizedColumns, table]);
461+
438462
useEffect(() => {
439463
if (onChange && table.getSelectedRowModel().rows) {
440464
onChange(table.getSelectedRowModel().rows.map((row) => row.original));

src/pages/email/reports/SharedMailboxEnabledAccount/index.js

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,6 @@ import { Layout as DashboardLayout } from "/src/layouts/index.js";
22
import { CippTablePage } from "/src/components/CippComponents/CippTablePage.jsx";
33
import { Block } from "@mui/icons-material";
44

5-
/*
6-
NOTE for Devs:
7-
- The original component used a Redux selector (`useSelector`) for tenant data,
8-
which is handled by `CippTablePage` in the refactored version, thus eliminating `useSelector`.
9-
- The `ModalService` with `confirm` handling was originally used to confirm blocking sign-in.
10-
The action here replaces it with a confirmation text as per current guidelines.
11-
- Original button and `FontAwesomeIcon` (faBan) are not used since action confirmation is handled by CippTablePage.
12-
*/
13-
145
const Page = () => {
156
return (
167
<CippTablePage
@@ -23,23 +14,32 @@ const Page = () => {
2314
icon: <Block />,
2415
url: "/api/ExecDisableUser",
2516
data: { ID: "id" },
26-
confirmText: "Are you sure you want to block the sign-in for this user?",
17+
confirmText: "Are you sure you want to block the sign-in for this mailbox?",
18+
condition: (row) => row.accountEnabled && !row.onPremisesSyncEnabled,
2719
},
2820
]}
2921
offCanvas={{
3022
extendedInfoFields: [
3123
"UserPrincipalName",
3224
"displayName",
3325
"accountEnabled",
26+
"assignedLicenses",
3427
"onPremisesSyncEnabled",
3528
],
3629
}}
3730
simpleColumns={[
3831
"UserPrincipalName",
3932
"displayName",
4033
"accountEnabled",
34+
"assignedLicenses",
4135
"onPremisesSyncEnabled",
4236
]}
37+
filters={[
38+
{
39+
id: "accountEnabled",
40+
value: "Yes"
41+
}
42+
]}
4343
/>
4444
);
4545
};

0 commit comments

Comments
 (0)