diff --git a/Tools/Start-CippDevEmulatorsWithKitty.ps1 b/Tools/Start-CippDevEmulatorsWithKitty.ps1 index 39666bdcb05c..7013c054f375 100644 --- a/Tools/Start-CippDevEmulatorsWithKitty.ps1 +++ b/Tools/Start-CippDevEmulatorsWithKitty.ps1 @@ -15,7 +15,7 @@ if ($Process -eq 'y') { kitty @new-window --new-tab --tab-title `"Azurite`" --cwd $Path -- azurite ; kitty @new-window --new-tab --tab-title `"FunctionApp`" --cwd (Join-Path $Path `"CIPP-API`") -- func start; kitty @new-window --new-tab --tab-title `"CIPP Frontend`" --cwd (Join-Path $Path `"CIPP`") -- yarn run dev ; - kitty @new-window --new-tab --tab-title `"SWA`" --cwd (Join-Path $Path `"CIPP`") -- npm run start-swa; + kitty @new-window --new-tab --tab-title `"SWA`" --cwd (Join-Path $Path `"CIPP`") -- yarn run start-swa; kitty @new-window --new-tab --tab-title `"CIPP-API-Processor`" --cwd (Join-Path $Path `"CIPP-API-Processor`") -- func start --port 7072" } else { @@ -23,5 +23,5 @@ if ($Process -eq 'y') { kitty @new-window --new-tab --tab-title `"Azurite`" --cwd $Path -- azurite ; kitty @new-window --new-tab --tab-title `"FunctionApp`" --cwd (Join-Path $Path `"CIPP-API`") -- func start; kitty @new-window --new-tab --tab-title `"CIPP Frontend`" --cwd (Join-Path $Path `"CIPP`") -- yarn run dev ; - kitty @new-window --new-tab --tab-title `"SWA`" --cwd (Join-Path $Path `"CIPP`") -- npm run start-swa" + kitty @new-window --new-tab --tab-title `"SWA`" --cwd (Join-Path $Path `"CIPP`") -- yarn run start-swa" } diff --git a/deployment/AzureDeploymentTemplate.json b/deployment/AzureDeploymentTemplate.json index 91ce52c678a7..54cacf9f1064 100644 --- a/deployment/AzureDeploymentTemplate.json +++ b/deployment/AzureDeploymentTemplate.json @@ -241,6 +241,19 @@ "functionAppResourceId": "[resourceId('Microsoft.Web/sites/', variables('funcAppName'))]", "functionAppRegion": "[resourceGroup().location]" } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2022-04-01", + "name": "[guid(resourceGroup().id, variables('funcAppName'), 'Contributor')]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]" + ], + "properties": { + "roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('funcAppName')),'2019-08-01', 'full').identity.principalId]", + "scope": "[resourceGroup().id]" + } } ], "outputs": {} diff --git a/deployment/AzureDeploymentTemplate_regionoptions.json b/deployment/AzureDeploymentTemplate_regionoptions.json index 7e23726404c2..71e0cef97aca 100644 --- a/deployment/AzureDeploymentTemplate_regionoptions.json +++ b/deployment/AzureDeploymentTemplate_regionoptions.json @@ -241,6 +241,19 @@ "functionAppResourceId": "[resourceId('Microsoft.Web/sites/', variables('funcAppName'))]", "functionAppRegion": "[resourceGroup().location]" } + }, + { + "type": "Microsoft.Authorization/roleAssignments", + "apiVersion": "2022-04-01", + "name": "[guid(resourceGroup().id, variables('funcAppName'), 'Contributor')]", + "dependsOn": [ + "[resourceId('Microsoft.Web/sites', variables('funcAppName'))]" + ], + "properties": { + "roleDefinitionId": "[concat(subscription().id, '/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c')]", + "principalId": "[reference(resourceId('Microsoft.Web/sites', variables('funcAppName')),'2019-08-01', 'full').identity.principalId]", + "scope": "[resourceGroup().id]" + } } ], "outputs": {} diff --git a/public/version.json b/public/version.json index 9e50dd4377c9..bd8b4fcf0a2d 100644 --- a/public/version.json +++ b/public/version.json @@ -1,3 +1,3 @@ { - "version": "7.2.1" + "version": "7.2.2" } diff --git a/src/components/CippCards/CippPropertyListCard.jsx b/src/components/CippCards/CippPropertyListCard.jsx index 136d77e61635..f6bd1a78b7a3 100644 --- a/src/components/CippCards/CippPropertyListCard.jsx +++ b/src/components/CippCards/CippPropertyListCard.jsx @@ -152,22 +152,18 @@ export const CippPropertyListCard = (props) => { key={`${item.label}-${index}-ActionList-OffCanvas`} icon={{item.icon}} label={item.label} - onClick={ - item.link - ? () => window.open(item.link, "_blank") - : () => { - setActionData({ - data: data, - action: item, - ready: true, - }); - if (item?.noConfirm) { - item.customFunction(item, data, {}); - } else { - createDialog.handleOpen(); - } - } - } + onClick={() => { + setActionData({ + data: data, + action: item, + ready: true, + }); + if (item?.noConfirm) { + item.customFunction(item, data, {}); + } else { + createDialog.handleOpen(); + } + }} disabled={handleActionDisabled(data, item)} /> ))} diff --git a/src/components/CippComponents/CippAutocomplete.jsx b/src/components/CippComponents/CippAutocomplete.jsx index b87f571b4d38..94b71886d005 100644 --- a/src/components/CippComponents/CippAutocomplete.jsx +++ b/src/components/CippComponents/CippAutocomplete.jsx @@ -27,7 +27,6 @@ const MemoTextField = React.memo(function MemoTextField({ {...otherParams} label={label} placeholder={placeholder} - variant="outlined" {...otherProps} slotProps={{ inputLabel: { @@ -275,7 +274,13 @@ export const CippAutoComplete = (props) => { sx={sx} renderInput={(params) => ( - + {api?.url && api?.showRefresh && ( ) : ( - {drilldownData.slice(0, 4).map((data, index) => ( + {drilldownData?.map((data, index) => ( 4, and add spacing between the top and bottom items + paddingTop: index === 0 ? 0 : 2, + borderTop: index >= 4 && type !== "intune" ? "1px solid lightgrey" : "none", + borderRight: index < drilldownData.length - 1 ? "1px solid lightgrey" : "none", overflowWrap: "anywhere", whiteSpace: "pre-line", paddingRight: 2, diff --git a/src/components/CippTable/CIPPTableToptoolbar.js b/src/components/CippTable/CIPPTableToptoolbar.js index fd15416b9082..7a135e9335d5 100644 --- a/src/components/CippTable/CIPPTableToptoolbar.js +++ b/src/components/CippTable/CIPPTableToptoolbar.js @@ -64,6 +64,10 @@ export const CIPPTableToptoolbar = ({ const pageName = router.pathname.split("/").slice(1).join("/"); const currentTenant = useSettings()?.currentTenant; + useEffect(() => { + //if usedData changes, deselect all rows + table.toggleAllRowsSelected(false); + }, [usedData]); //if the currentTenant Switches, remove Graph filters useEffect(() => { if (currentTenant) { diff --git a/src/components/CippTable/CippDataTable.js b/src/components/CippTable/CippDataTable.js index a81830221b58..3a040dd4c1eb 100644 --- a/src/components/CippTable/CippDataTable.js +++ b/src/components/CippTable/CippDataTable.js @@ -274,7 +274,7 @@ export const CippDataTable = (props) => { refreshFunction={refreshFunction} setColumnVisibility={setColumnVisibility} filters={filters} - queryKeys={queryKey} + queryKeys={queryKey ? queryKey : title} graphFilterData={graphFilterData} setGraphFilterData={setGraphFilterData} setConfiguredSimpleColumns={setConfiguredSimpleColumns} diff --git a/src/components/CippWizard/CIPPDeploymentStep.js b/src/components/CippWizard/CIPPDeploymentStep.js index 90a0840fc16e..3ba090c1a75e 100644 --- a/src/components/CippWizard/CIPPDeploymentStep.js +++ b/src/components/CippWizard/CIPPDeploymentStep.js @@ -16,7 +16,7 @@ import { CippWizardStepButtons } from "./CippWizardStepButtons"; import { ApiGetCall } from "../../api/ApiCall"; import CippButtonCard from "../CippCards/CippButtonCard"; import { CippCopyToClipBoard } from "../CippComponents/CippCopyToClipboard"; -import { CheckCircle, Sync } from "@mui/icons-material"; +import { CheckCircle, OpenInNew, Sync } from "@mui/icons-material"; import CippPermissionCheck from "../CippSettings/CippPermissionCheck"; import { useQueryClient } from "@tanstack/react-query"; import { CippApiResults } from "../CippComponents/CippApiResults"; @@ -265,12 +265,15 @@ export const CippDeploymentStep = (props) => { } onClick={() => openPopup(appId?.data?.refreshUrl)} color="primary" + startIcon={ + + } > Refresh Graph Token