Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
2cf0813
Show warning when TAP is not enabled in tenant in jit-admin add
Mar 15, 2026
b269798
feat(ooo): add calendar options UI for block calendar, decline invita…
kris6673 Mar 16, 2026
a69b618
feat: refactor assignment fields and custom data formatter
kris6673 Mar 19, 2026
0615839
feat: add Custom Subject field and enhance Notification Settings layo…
JohnDuprey Mar 20, 2026
4b5c6c7
fix: Remove 'scope' from Scheduler
kris6673 Mar 20, 2026
ef26c18
fix: Remove tenantInTitle prop from CippSchedulerDrawer
kris6673 Mar 20, 2026
2209de7
fix(CippApiResults): prevent alert from overflowing drawer on narrow …
kris6673 Mar 20, 2026
f75df34
fix(group-templates): allow resubmit on template edit page
Mar 21, 2026
52e2bbe
feat(security): add MDE onboarding status page
Mar 22, 2026
b5bd2ba
pr
Zacgoose Mar 22, 2026
8f51153
Revert "pr"
Zacgoose Mar 22, 2026
f3ebd8d
Merge pull request #5682 from kris6673/api-results-overflow
KelvinTegelaar Mar 22, 2026
4cb29ef
Merge branch 'dev' into fix/security-group-mailnickname-validation
KelvinTegelaar Mar 22, 2026
b7ecdf2
Merge pull request #5690 from luimen6/fix/security-group-mailnickname…
KelvinTegelaar Mar 22, 2026
7206603
Merge pull request #5691 from luimen6/feat/mde-onboarding-status
KelvinTegelaar Mar 22, 2026
39a54b5
Merge pull request #5680 from kris6673/fix-wrong-scope
KelvinTegelaar Mar 22, 2026
71dc451
Merge pull request #5672 from kris6673/issue5589
KelvinTegelaar Mar 22, 2026
acfd6c4
feat: DeployCheckChromeExtension to use CyberDrain branding and enhan…
JohnDuprey Mar 24, 2026
824d66f
feat: add detection script support to custom application
JohnDuprey Mar 24, 2026
3d0ecf6
Merge branch 'dev' into fix/jit-admin-tap-policy-check
JohnDuprey Mar 24, 2026
e4b4d77
chore: remove merge conflict markers
JohnDuprey Mar 24, 2026
acdf32c
Merge pull request #5616 from luimen6/fix/jit-admin-tap-policy-check
JohnDuprey Mar 24, 2026
4c69e42
Merge pull request #5623 from kris6673/OOO-for-alden
JohnDuprey Mar 24, 2026
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
2 changes: 1 addition & 1 deletion src/components/CippComponents/CippApiResults.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ export const CippApiResults = (props) => {

const hasVisibleResults = finalResults.some((r) => r.visible);
return (
<Stack spacing={2}>
<Stack spacing={2} sx={{ minWidth: 0 }}>
{/* Loading alert */}
{!errorsOnly && (
<Collapse in={fetchingVisible} unmountOnExit>
Expand Down
57 changes: 45 additions & 12 deletions src/components/CippComponents/CippApplicationDeployDrawer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -869,22 +869,55 @@ export const CippApplicationDeployDrawer = ({
rows={6}
/>
</Grid>
<Grid size={{ md: 6, xs: 12 }}>
<CippFormComponent
type="textField"
label="Detection Path (e.g., C:\Program Files\MyApp or %ProgramData%\MyApp)"
name="detectionPath"
formControl={formControl}
/>
</Grid>
<Grid size={{ md: 6, xs: 12 }}>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="textField"
label="Detection File/Folder Name (Optional, e.g., app.exe)"
name="detectionFile"
type="switch"
label="Use Detection Script instead of file/path detection"
name="useDetectionScript"
formControl={formControl}
/>
</Grid>
<CippFormCondition
formControl={formControl}
field="useDetectionScript"
compareType="is"
compareValue={true}
>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="textField"
label="Detection Script (PowerShell — exit 0 with STDOUT = detected)"
name="detectionScript"
formControl={formControl}
multiline
rows={6}
validators={{ required: "Detection script is required when using script detection" }}
/>
</Grid>
</CippFormCondition>
<CippFormCondition
formControl={formControl}
field="useDetectionScript"
compareType="is"
compareValue={false}
>
<Grid size={{ md: 6, xs: 12 }}>
<CippFormComponent
type="textField"
label="Detection Path (e.g., C:\Program Files\MyApp or %ProgramData%\MyApp)"
name="detectionPath"
formControl={formControl}
/>
</Grid>
<Grid size={{ md: 6, xs: 12 }}>
<CippFormComponent
type="textField"
label="Detection File/Folder Name (Optional, e.g., app.exe)"
name="detectionFile"
formControl={formControl}
/>
</Grid>
</CippFormCondition>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="switch"
Expand Down
59 changes: 58 additions & 1 deletion src/components/CippComponents/CippUserActions.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,9 @@ import {
import { getCippLicenseTranslation } from "../../utils/get-cipp-license-translation";
import { useSettings } from "../../hooks/use-settings.js";
import { usePermissions } from "../../hooks/use-permissions";
import { Tooltip, Box } from "@mui/material";
import { Tooltip, Box, Divider, Typography } from "@mui/material";
import CippFormComponent from "./CippFormComponent";
import { CippFormCondition } from "./CippFormCondition";
import { useWatch } from "react-hook-form";

// Separate component for Manage Licenses form to avoid hook issues
Expand Down Expand Up @@ -257,6 +258,62 @@ const OutOfOfficeForm = ({ formControl }) => {
multiline
rows={4}
/>

{!areDateFieldsDisabled && (
<>
<Divider sx={{ my: 1 }} />
<Typography variant="subtitle2">Calendar Options</Typography>

<CippFormComponent
type="switch"
name="CreateOOFEvent"
label="Block my calendar for this period"
formControl={formControl}
/>
<CippFormCondition
formControl={formControl}
field="CreateOOFEvent"
compareType="is"
compareValue={true}
>
<CippFormComponent
type="textField"
name="OOFEventSubject"
label="Calendar Event Subject"
formControl={formControl}
/>
</CippFormCondition>

<CippFormComponent
type="switch"
name="AutoDeclineFutureRequestsWhenOOF"
label="Automatically decline new invitations during this period"
formControl={formControl}
/>

<CippFormComponent
type="switch"
name="DeclineEventsForScheduledOOF"
label="Decline and cancel my meetings during this period"
formControl={formControl}
/>
<CippFormCondition
formControl={formControl}
field="DeclineEventsForScheduledOOF"
compareType="is"
compareValue={true}
>
<CippFormComponent
type="richText"
name="DeclineMeetingMessage"
label="Decline Message"
formControl={formControl}
multiline
rows={3}
/>
</CippFormCondition>
</>
)}
</>
);
};
Expand Down
72 changes: 72 additions & 0 deletions src/components/CippFormPages/CippExchangeSettingsForm.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
} from "@mui/material";
import { Check, Error, Sync } from "@mui/icons-material";
import CippFormComponent from "../CippComponents/CippFormComponent";
import { CippFormCondition } from "../CippComponents/CippFormCondition";
import { ApiGetCall, ApiPostCall } from "../../api/ApiCall";
import { useSettings } from "../../hooks/use-settings";
import { Grid } from "@mui/system";
Expand Down Expand Up @@ -81,6 +82,11 @@ const CippExchangeSettingsForm = (props) => {
"ExternalMessage",
"StartTime",
"EndTime",
"CreateOOFEvent",
"OOFEventSubject",
"AutoDeclineFutureRequestsWhenOOF",
"DeclineEventsForScheduledOOF",
"DeclineMeetingMessage",
];

// Reset the form
Expand Down Expand Up @@ -266,6 +272,72 @@ const CippExchangeSettingsForm = (props) => {
rows={4}
/>
</Grid>
{!areDateFieldsDisabled && (
<>
<Grid size={12}>
<Divider sx={{ my: 1 }} />
<Typography variant="subtitle2" sx={{ mt: 1 }}>
Calendar Options
</Typography>
</Grid>
<Grid size={12}>
<CippFormComponent
type="switch"
name="ooo.CreateOOFEvent"
label="Block my calendar for this period"
formControl={formControl}
/>
</Grid>
<CippFormCondition
formControl={formControl}
field="ooo.CreateOOFEvent"
compareType="is"
compareValue={true}
>
<Grid size={12}>
<CippFormComponent
type="textField"
name="ooo.OOFEventSubject"
label="Calendar Event Subject"
formControl={formControl}
/>
</Grid>
</CippFormCondition>
<Grid size={12}>
<CippFormComponent
type="switch"
name="ooo.AutoDeclineFutureRequestsWhenOOF"
label="Automatically decline new invitations during this period"
formControl={formControl}
/>
</Grid>
<Grid size={12}>
<CippFormComponent
type="switch"
name="ooo.DeclineEventsForScheduledOOF"
label="Decline and cancel my meetings during this period"
formControl={formControl}
/>
</Grid>
<CippFormCondition
formControl={formControl}
field="ooo.DeclineEventsForScheduledOOF"
compareType="is"
compareValue={true}
>
<Grid size={12}>
<CippFormComponent
type="richText"
name="ooo.DeclineMeetingMessage"
label="Decline Message"
formControl={formControl}
multiline
rows={3}
/>
</Grid>
</CippFormCondition>
</>
)}
<Grid size={12}>
<CippApiResults apiObject={postRequest} />
</Grid>
Expand Down
80 changes: 80 additions & 0 deletions src/components/CippWizard/CippWizardVacationActions.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,22 @@ export const CippWizardVacationActions = (props) => {
if (!currentExternal) {
formControl.setValue("oooExternalMessage", oooData.data.ExternalMessage || "");
}
// Pre-populate calendar options from existing config
if (oooData.data.CreateOOFEvent != null) {
formControl.setValue("oooCreateOOFEvent", !!oooData.data.CreateOOFEvent);
}
if (oooData.data.OOFEventSubject) {
formControl.setValue("oooOOFEventSubject", oooData.data.OOFEventSubject);
}
if (oooData.data.AutoDeclineFutureRequestsWhenOOF != null) {
formControl.setValue("oooAutoDeclineFutureRequests", !!oooData.data.AutoDeclineFutureRequestsWhenOOF);
}
if (oooData.data.DeclineEventsForScheduledOOF != null) {
formControl.setValue("oooDeclineEvents", !!oooData.data.DeclineEventsForScheduledOOF);
}
if (oooData.data.DeclineMeetingMessage) {
formControl.setValue("oooDeclineMeetingMessage", oooData.data.DeclineMeetingMessage);
}
}
}, [oooData.isSuccess, oooData.data]);

Expand Down Expand Up @@ -359,6 +375,70 @@ export const CippWizardVacationActions = (props) => {
/>
)}
</Grid>

{/* Calendar Options */}
<Grid size={{ xs: 12 }}>
<Divider sx={{ my: 1 }} />
<Typography variant="subtitle2" sx={{ mt: 1 }}>
Calendar Options
</Typography>
</Grid>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="switch"
name="oooCreateOOFEvent"
label="Block my calendar for this period"
formControl={formControl}
/>
</Grid>
<CippFormCondition
formControl={formControl}
field="oooCreateOOFEvent"
compareType="is"
compareValue={true}
>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="textField"
name="oooOOFEventSubject"
label="Calendar Event Subject"
formControl={formControl}
/>
</Grid>
</CippFormCondition>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="switch"
name="oooAutoDeclineFutureRequests"
label="Automatically decline new invitations during this period"
formControl={formControl}
/>
</Grid>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="switch"
name="oooDeclineEvents"
label="Decline and cancel my meetings during this period"
formControl={formControl}
/>
</Grid>
<CippFormCondition
formControl={formControl}
field="oooDeclineEvents"
compareType="is"
compareValue={true}
>
<Grid size={{ xs: 12 }}>
<CippFormComponent
type="richText"
name="oooDeclineMeetingMessage"
label="Decline Message"
formControl={formControl}
multiline
rows={3}
/>
</Grid>
</CippFormCondition>
</Grid>
</CippFormCondition>
</Stack>
Expand Down
Loading