From f97924eb369481721228278517ff1d31ed253cd6 Mon Sep 17 00:00:00 2001 From: Mateusz Kwasniewski Date: Thu, 27 Mar 2025 16:15:09 +0100 Subject: [PATCH] feat: enforce change request settings in create project dialog (#9637) --- .../ConfigButtons/ChangeRequestTable.tsx | 6 +++++- .../ConfigButtons/ChangeRequestTableConfigButton.tsx | 4 +++- .../NewCreateProjectForm/CreateProjectDialog.tsx | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTable.tsx b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTable.tsx index 7740c104f7..9775a3fc96 100644 --- a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTable.tsx +++ b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTable.tsx @@ -37,8 +37,9 @@ type TableProps = { environments: { name: string; type: string; - requiredApprovals: number; changeRequestEnabled: boolean; + requiredApprovals: number; + configurable: boolean; }[]; enableEnvironment: (name: string, requiredApprovals: number) => void; disableEnvironment: (name: string) => void; @@ -111,6 +112,7 @@ export const ChangeRequestTable = (props: TableProps) => { approvals, ); }} + disabled={!original.configurable} IconComponent={ KeyboardArrowDownOutlined } @@ -143,6 +145,7 @@ export const ChangeRequestTable = (props: TableProps) => { original.environment }`, }} + disabled={!original.configurable} onClick={onToggleEnvironment( original.environment, original.changeRequestEnabled, @@ -171,6 +174,7 @@ export const ChangeRequestTable = (props: TableProps) => { type: env.type, changeRequestEnabled: env.changeRequestEnabled, requiredApprovals: env.requiredApprovals ?? 1, + configurable: env.configurable, }; }), diff --git a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTableConfigButton.tsx b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTableConfigButton.tsx index 13b5f125e9..1b5b3def0f 100644 --- a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTableConfigButton.tsx +++ b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/ConfigButtons/ChangeRequestTableConfigButton.tsx @@ -26,6 +26,7 @@ type ChangeRequestTableConfigButtonProps = Pick< activeEnvironments: { name: string; type: string; + configurable: boolean; }[]; projectChangeRequestConfiguration: Record< string, @@ -56,9 +57,10 @@ export const ChangeRequestTableConfigButton: FC< const tableEnvs = useMemo( () => - activeEnvironments.map(({ name, type }) => ({ + activeEnvironments.map(({ name, type, configurable }) => ({ name, type, + configurable, ...(configured[name] ?? { changeRequestEnabled: false }), })), [configured, activeEnvironments], diff --git a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/CreateProjectDialog.tsx b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/CreateProjectDialog.tsx index c6e0254bc9..3f8557ba4a 100644 --- a/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/CreateProjectDialog.tsx +++ b/frontend/src/component/project/Project/CreateProject/NewCreateProjectForm/CreateProjectDialog.tsx @@ -234,6 +234,9 @@ export const CreateProjectDialog = ({ name, type, requiredApprovals, + configurable: globalChangeRequestConfigEnabled + ? !Number.isInteger(requiredApprovals) + : true, })); useEffect(() => {