From 5dd8416cb9a25b58399e69365b18d5d0c46533d5 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Mon, 23 Jun 2025 12:40:24 +0000 Subject: [PATCH 1/4] fix: allow delesecting a preset without triggering a validation error --- .../CreateWorkspacePageView.stories.tsx | 36 +++++++++++++++++++ .../CreateWorkspacePageView.tsx | 2 +- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index deab54d531ec4..b09b2c03fedea 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -201,6 +201,42 @@ export const PresetReselected: Story = { }, }; +export const PresetNoneSelected: Story = { + args: { + ...PresetsButNoneSelected.args, + onSubmit: (request, owner) => { + // Assert that template_version_preset_id is not present in the request + console.assert( + !('template_version_preset_id' in request), + 'template_version_preset_id should not be present when "None" is selected' + ); + action('onSubmit')(request, owner); + }, + }, + play: async ({ canvasElement }) => { + const canvas = within(canvasElement); + + // First select a preset to set the field value + await userEvent.click(canvas.getByLabelText("Preset")); + await userEvent.click(canvas.getByText("Preset 1")); + + // Then select "None" to unset the field value + await userEvent.click(canvas.getByLabelText("Preset")); + await userEvent.click(canvas.getByText("None")); + + // Fill in required fields and submit to test the API call + await userEvent.type(canvas.getByLabelText("Workspace Name"), "test-workspace"); + await userEvent.click(canvas.getByText("Create workspace")); + }, + parameters: { + docs: { + description: { + story: "This story tests that when 'None' preset is selected, the template_version_preset_id field is not included in the form submission. The story first selects a preset to set the field value, then selects 'None' to unset it, and finally submits the form to verify the API call behavior.", + }, + }, + }, +}; + export const ExternalAuth: Story = { args: { externalAuth: [ diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 7a880e8df26b6..5021f63f5ff61 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -369,7 +369,7 @@ export const CreateWorkspacePageView: FC = ({ setSelectedPresetIndex(index); form.setFieldValue( "template_version_preset_id", - option?.value, + index === 0 ? undefined : option?.value, ); }} placeholder="Select a preset" From 896ab19e89490116a34c0db7ec545c3b441fd071 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Mon, 23 Jun 2025 12:48:36 +0000 Subject: [PATCH 2/4] make fmt --- .../CreateWorkspacePageView.stories.tsx | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx index b09b2c03fedea..9f7ff44a2da64 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.stories.tsx @@ -207,10 +207,10 @@ export const PresetNoneSelected: Story = { onSubmit: (request, owner) => { // Assert that template_version_preset_id is not present in the request console.assert( - !('template_version_preset_id' in request), - 'template_version_preset_id should not be present when "None" is selected' + !("template_version_preset_id" in request), + 'template_version_preset_id should not be present when "None" is selected', ); - action('onSubmit')(request, owner); + action("onSubmit")(request, owner); }, }, play: async ({ canvasElement }) => { @@ -225,13 +225,17 @@ export const PresetNoneSelected: Story = { await userEvent.click(canvas.getByText("None")); // Fill in required fields and submit to test the API call - await userEvent.type(canvas.getByLabelText("Workspace Name"), "test-workspace"); + await userEvent.type( + canvas.getByLabelText("Workspace Name"), + "test-workspace", + ); await userEvent.click(canvas.getByText("Create workspace")); }, parameters: { docs: { description: { - story: "This story tests that when 'None' preset is selected, the template_version_preset_id field is not included in the form submission. The story first selects a preset to set the field value, then selects 'None' to unset it, and finally submits the form to verify the API call behavior.", + story: + "This story tests that when 'None' preset is selected, the template_version_preset_id field is not included in the form submission. The story first selects a preset to set the field value, then selects 'None' to unset it, and finally submits the form to verify the API call behavior.", }, }, }, From 927e66e845338343c84bff5a2a40194b2b55e8fa Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Mon, 23 Jun 2025 15:13:49 +0000 Subject: [PATCH 3/4] fix: implement fix for dynamic parameters --- .../CreateWorkspacePageViewExperimental.tsx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx index 3522d24012445..127f922c816aa 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx @@ -563,6 +563,10 @@ export const CreateWorkspacePageViewExperimental: FC< return; } setSelectedPresetIndex(index); + form.setFieldValue( + "template_version_preset_id", + index === 0 ? undefined : option, + ); }} > From fa7411ccf01acedb856252f915aee3eeefe441a6 Mon Sep 17 00:00:00 2001 From: Sas Swart Date: Tue, 24 Jun 2025 08:42:55 +0200 Subject: [PATCH 4/4] Update site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx use option?.value instead of index to check whether we should send a preset ID when a workspace is created Co-authored-by: Susana Ferreira --- site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx index 5021f63f5ff61..c4a5a4e5bd023 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx @@ -369,7 +369,8 @@ export const CreateWorkspacePageView: FC = ({ setSelectedPresetIndex(index); form.setFieldValue( "template_version_preset_id", - index === 0 ? undefined : option?.value, + // Empty string is equivalent to using None + option?.value === "" ? undefined : option?.value, ); }} placeholder="Select a preset" pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy