mirror of
https://github.com/coder/coder.git
synced 2025-07-15 22:20:27 +00:00
feat(site): disable rich parameters when using open in coder (#10114)
* feat(site): disable rich parameters when using open in coder
* updated docs
* chore(site): increase refetch interval for deployment health
* Revert "chore(site): increase refetch interval for deployment health"
This reverts commit 8e642be3fb
.
This commit is contained in:
7
docs/templates/open-in-coder.md
vendored
7
docs/templates/open-in-coder.md
vendored
@ -106,6 +106,13 @@ approach for "Open in Coder" flows.
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
1. Optional: disable specific parameter fields by including their names as
|
||||||
|
specified in your template in the `disable_params` search params list
|
||||||
|
|
||||||
|
```md
|
||||||
|
[](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?disable_params=first_parameter,second_parameter)
|
||||||
|
```
|
||||||
|
|
||||||
## Example: Kubernetes
|
## Example: Kubernetes
|
||||||
|
|
||||||
For a full example of the Open in Coder flow in Kubernetes, check out
|
For a full example of the Open in Coder flow in Kubernetes, check out
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import { test } from "@playwright/test";
|
import { test, expect } from "@playwright/test";
|
||||||
import {
|
import {
|
||||||
createTemplate,
|
createTemplate,
|
||||||
createWorkspace,
|
createWorkspace,
|
||||||
@ -119,3 +119,25 @@ test("create workspace and overwrite default parameters", async ({ page }) => {
|
|||||||
);
|
);
|
||||||
await verifyParameters(page, workspaceName, richParameters, buildParameters);
|
await verifyParameters(page, workspaceName, richParameters, buildParameters);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test("create workspace with disable_param search params", async ({ page }) => {
|
||||||
|
const richParameters: RichParameter[] = [
|
||||||
|
firstParameter, // mutable
|
||||||
|
secondParameter, //immutable
|
||||||
|
];
|
||||||
|
|
||||||
|
const templateName = await createTemplate(
|
||||||
|
page,
|
||||||
|
echoResponsesWithParameters(richParameters),
|
||||||
|
);
|
||||||
|
|
||||||
|
await page.goto(
|
||||||
|
`/templates/${templateName}/workspace?disable_params=first_parameter,second_parameter`,
|
||||||
|
{
|
||||||
|
waitUntil: "domcontentloaded",
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
await expect(page.getByLabel(/First parameter/i)).toBeDisabled();
|
||||||
|
await expect(page.getByLabel(/Second parameter/i)).toBeDisabled();
|
||||||
|
});
|
||||||
|
@ -31,6 +31,7 @@ import { ExternalAuth } from "./ExternalAuth";
|
|||||||
import { ErrorAlert } from "components/Alert/ErrorAlert";
|
import { ErrorAlert } from "components/Alert/ErrorAlert";
|
||||||
import { Stack } from "components/Stack/Stack";
|
import { Stack } from "components/Stack/Stack";
|
||||||
import { type ExternalAuthPollingState } from "./CreateWorkspacePage";
|
import { type ExternalAuthPollingState } from "./CreateWorkspacePage";
|
||||||
|
import { useSearchParams } from "react-router-dom";
|
||||||
|
|
||||||
export interface CreateWorkspacePageViewProps {
|
export interface CreateWorkspacePageViewProps {
|
||||||
error: unknown;
|
error: unknown;
|
||||||
@ -72,6 +73,9 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
|
|||||||
const [owner, setOwner] = useState(defaultOwner);
|
const [owner, setOwner] = useState(defaultOwner);
|
||||||
const { verifyExternalAuth, externalAuthErrors } =
|
const { verifyExternalAuth, externalAuthErrors } =
|
||||||
useExternalAuthVerification(externalAuth);
|
useExternalAuthVerification(externalAuth);
|
||||||
|
const [searchParams] = useSearchParams();
|
||||||
|
const disabledParamsList = searchParams?.get("disable_params")?.split(",");
|
||||||
|
|
||||||
const form: FormikContextType<TypesGen.CreateWorkspaceRequest> =
|
const form: FormikContextType<TypesGen.CreateWorkspaceRequest> =
|
||||||
useFormik<TypesGen.CreateWorkspaceRequest>({
|
useFormik<TypesGen.CreateWorkspaceRequest>({
|
||||||
initialValues: {
|
initialValues: {
|
||||||
@ -198,7 +202,10 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
|
|||||||
value: value,
|
value: value,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
disabled: form.isSubmitting,
|
disabled:
|
||||||
|
disabledParamsList?.includes(
|
||||||
|
parameter.name.toLowerCase().replace(/ /g, "_"),
|
||||||
|
) || form.isSubmitting,
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
@ -216,7 +223,10 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
|
|||||||
value: value,
|
value: value,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
disabled: form.isSubmitting,
|
disabled:
|
||||||
|
disabledParamsList?.includes(
|
||||||
|
parameter.name.toLowerCase().replace(/ /g, "_"),
|
||||||
|
) || form.isSubmitting,
|
||||||
};
|
};
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
Reference in New Issue
Block a user