Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
52 commits
Select commit Hold shift + click to select a range
17a8def
Add Mailbox Recipient Limits standard to standards.json
Jr7468 May 28, 2025
afa06ac
Add Deploy Mail Contact standard to standards.json
Jr7468 May 28, 2025
e046e9c
Added a section to remove proxy addresses and set primary addresses
Jr7468 May 29, 2025
777570c
add "TERRL" to custom words in cspell configuration
kris6673 May 29, 2025
7980de1
Feat: add TERRL alert for monitoring Tenant
kris6673 May 29, 2025
ec9a56e
anti foot shooting measures
kris6673 May 29, 2025
1f586db
Merge branch 'KelvinTegelaar:dev' into dev
Jr7468 May 29, 2025
d1d0ff9
Merge branch 'dev' into dev
Jr7468 May 30, 2025
840e4ea
Merge pull request #4158 from Jr7468/dev
KelvinTegelaar May 30, 2025
6037b4e
Merge branch 'dev' into issue4166
kris6673 May 30, 2025
9ccb3c9
Add CippDocsLookup component to display documentation links for error…
Jr7468 May 30, 2025
10a1189
Add CippDocsLookup component to display documentation links for error…
Jr7468 May 30, 2025
241ea1b
Merge branch 'DocLookup' of https://github.com/Jr7468/CIPP into DocLo…
Jr7468 May 30, 2025
6e874fd
Tweaks
Jr7468 May 30, 2025
c9a4560
Merge pull request #4170 from kris6673/issue4166
KelvinTegelaar May 31, 2025
d1d62c9
fix auth check for dev
JohnDuprey May 31, 2025
3d98f97
Enhance CippExchangeSettingsForm and user exchange page with mailbox …
Jr7468 Jun 1, 2025
ccd7a00
Corrected issues raised.
Jr7468 Jun 1, 2025
a66d5b9
make entire banner clickable
JohnDuprey Jun 1, 2025
7cdbe78
make the rest of the banners clickable
JohnDuprey Jun 1, 2025
56e3211
fix invalid hook call issue with setting user aliases
JohnDuprey Jun 1, 2025
e6cdf76
Update exchange.jsx
JohnDuprey Jun 1, 2025
8ec9bba
Update exchange.jsx
JohnDuprey Jun 1, 2025
adb849b
Update PrivateRoute.js
JohnDuprey Jun 3, 2025
a17b6f4
allow resubmit on timers
JohnDuprey Jun 3, 2025
10e7982
add save/cancel buttons to standards
JohnDuprey Jun 3, 2025
c513df5
always show chips and differentiate between action/info
JohnDuprey Jun 3, 2025
2808a60
fix save button layout
JohnDuprey Jun 3, 2025
e689f96
cleanup imports
JohnDuprey Jun 3, 2025
fbfa43c
fix deep linking issue
JohnDuprey Jun 3, 2025
3f76e98
add missing key prop
JohnDuprey Jun 3, 2025
366a5b2
switch to v2 page
JohnDuprey Jun 3, 2025
688ab5b
add teams guest access standard
JohnDuprey Jun 3, 2025
c72ee07
standards go brrr
JohnDuprey Jun 3, 2025
d8eb517
feat(exchange): Enhance Exchange settings management
Jr7468 Jun 4, 2025
734990d
Modified the alias management dialog to allow for multiple aliases to…
Jr7468 Jun 4, 2025
c65c652
Merge pull request #4187 from Jr7468/MailPermissions
JohnDuprey Jun 4, 2025
8a36a44
Merge pull request #4183 from Jr7468/DocLookup
JohnDuprey Jun 4, 2025
a8386e9
Update template.jsx
JohnDuprey Jun 4, 2025
844cf6d
add children functionality to CippApiDialog
JohnDuprey Jun 5, 2025
f714eae
remove extra docs iconbutton
JohnDuprey Jun 5, 2025
2d6c608
extend CippApiDialog
JohnDuprey Jun 5, 2025
c6cf28c
user exchange settings page
JohnDuprey Jun 5, 2025
a05b65e
fix bulk actions for mailbox/calendar permissions
JohnDuprey Jun 5, 2025
8eacfcb
restore bulk calendar removal functionality
JohnDuprey Jun 5, 2025
69ba2de
Update exchange.jsx
JohnDuprey Jun 5, 2025
1b14940
align buttons
JohnDuprey Jun 5, 2025
f285dec
Out of Office - Set date fields to disabled when Auto Reply State is …
Jr7468 Jun 5, 2025
c18ceea
Merge pull request #4211 from Jr7468/OutOfOffice
JohnDuprey Jun 5, 2025
c8b0b06
add tenantfilter to compare
JohnDuprey Jun 5, 2025
a91c84a
up version
JohnDuprey Jun 5, 2025
db63240
Merge pull request #4217 from KelvinTegelaar/dev
JohnDuprey Jun 5, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions cspell.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"Rewst",
"Sherweb",
"Syncro",
"TERRL",
"Yubikey"
],
"ignoreWords": [
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@
"react-redux": "9.2.0",
"react-syntax-highlighter": "^15.6.1",
"react-time-ago": "^7.3.3",
"react-virtuoso": "^4.12.8",
"react-window": "^1.8.10",
"redux": "5.0.1",
"redux-devtools-extension": "2.13.9",
Expand Down
4 changes: 2 additions & 2 deletions public/version.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
"version": "8.0.1"
}
"version": "8.0.2"
}
24 changes: 21 additions & 3 deletions src/components/CippCards/CippBannerListCard.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ export const CippBannerListCard = (props) => {
</Box>
</Stack>
<Stack alignItems="center" direction="row" spacing={2}>
<Skeleton variant="circular" width={24} height={24} />
<Skeleton variant="text" width={60} />
<Skeleton variant="circular" width={24} height={24} />
</Stack>
</Stack>
</Card>
Expand Down Expand Up @@ -74,7 +74,16 @@ export const CippBannerListCard = (props) => {
direction="row"
flexWrap="wrap"
justifyContent="space-between"
sx={{ p: 3 }}
sx={{
p: 3,
...(isCollapsible && {
cursor: "pointer",
"&:hover": {
bgcolor: "action.hover",
},
}),
}}
onClick={isCollapsible ? () => handleExpand(item.id) : undefined}
>
{/* Left Side: cardLabelBox */}
<Stack direction="row" spacing={2} alignItems="center">
Expand Down Expand Up @@ -127,8 +136,16 @@ export const CippBannerListCard = (props) => {
<Typography variant="body2">{item.statusText}</Typography>
</Stack>
)}
{item?.cardLabelBoxActions && (
<Box onClick={(e) => e.stopPropagation()}>{item.cardLabelBoxActions}</Box>
)}
{isCollapsible && (
<IconButton onClick={() => handleExpand(item.id)}>
<IconButton
onClick={(e) => {
e.stopPropagation();
handleExpand(item.id);
}}
>
<SvgIcon
fontSize="small"
sx={{
Expand Down Expand Up @@ -190,6 +207,7 @@ CippBannerListCard.propTypes = {
actionButton: PropTypes.element,
isFetching: PropTypes.bool,
children: PropTypes.node,
cardLabelBoxActions: PropTypes.element,
})
).isRequired,
isCollapsible: PropTypes.bool,
Expand Down
128 changes: 128 additions & 0 deletions src/components/CippComponents/CippAliasDialog.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
import { useState, useEffect } from "react";
import { Typography, Box, Button, TextField, Chip, Stack } from "@mui/material";
import { Add } from "@mui/icons-material";
import { useWatch } from "react-hook-form";

const CippAliasDialog = ({ formHook }) => {
const [newAlias, setNewAlias] = useState("");

// Initialize the form field if it doesn't exist
useEffect(() => {
// Set default empty array if AddedAliases doesn't exist in the form
if (!formHook.getValues("AddedAliases")) {
formHook.setValue("AddedAliases", []);
}
}, [formHook]);

// Use useWatch to subscribe to form field changes
const aliasList = useWatch({
control: formHook.control,
name: "AddedAliases",
defaultValue: [],
});

const isPending = formHook.formState.isSubmitting;

const handleAddAlias = () => {
if (newAlias.trim()) {
const currentAliases = formHook.getValues("AddedAliases") || [];
const newList = [...currentAliases, newAlias.trim()];
formHook.setValue("AddedAliases", newList, { shouldValidate: true });
setNewAlias("");
}
};

const handleDeleteAlias = (aliasToDelete) => {
const currentAliases = formHook.getValues("AddedAliases") || [];
const updatedList = currentAliases.filter((alias) => alias !== aliasToDelete);
formHook.setValue("AddedAliases", updatedList, { shouldValidate: true });
};

const handleKeyPress = (event) => {
if (event.key === "Enter") {
event.preventDefault();
handleAddAlias();
}
};

return (
<>
<Stack spacing={3} sx={{ mt: 1 }}>
<Typography variant="body2" color="text.secondary">
Add proxy addresses (aliases) for this user. Enter each alias and click Add or press
Enter.
</Typography>
<Box sx={{ display: "flex", gap: 1 }}>
<TextField
fullWidth
value={newAlias}
onChange={(e) => setNewAlias(e.target.value)}
onKeyPress={handleKeyPress}
placeholder="Enter an alias"
variant="outlined"
disabled={isPending}
size="small"
sx={{
"& .MuiOutlinedInput-root": {
fontFamily: "monospace",
"& .MuiOutlinedInput-input": {
px: 2,
},
},
}}
/>
<Button
onClick={handleAddAlias}
variant="contained"
disabled={!newAlias.trim() || isPending}
startIcon={<Add />}
size="small"
>
Add
</Button>
</Box>
<Box
sx={{
display: "flex",
flexWrap: "wrap",
gap: 1,
minHeight: "40px",
p: 1,
border: "1px dashed",
borderColor: "divider",
borderRadius: 1,
alignItems: "center",
justifyContent: "center",
}}
>
{aliasList.length === 0 ? (
<Typography
variant="body2"
color="text.secondary"
sx={{
px: 2,
py: 1,
textAlign: "center",
width: "100%",
}}
>
No aliases added yet
</Typography>
) : (
aliasList.map((alias) => (
<Chip
key={alias}
label={alias}
onDelete={() => handleDeleteAlias(alias)}
color="primary"
variant="outlined"
/>
))
)}
</Box>
</Stack>
</>
);
};

export default CippAliasDialog;
Loading