From 170a5596859c81e4dad88f74c0b22db012b1661c Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Thu, 1 May 2025 20:33:06 +0000 Subject: [PATCH 1/4] fix: get checkbox label from parameter styling prop --- .../modules/workspaces/DynamicParameter/DynamicParameter.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx index 9ec69158c4e84..a198eadb527bb 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx @@ -305,7 +305,7 @@ const ParameterField: FC = ({ disabled={disabled} /> ); From 22a66295cc2fa523088a54aa20f95f8a84e28d78 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Mon, 5 May 2025 21:09:57 +0000 Subject: [PATCH 2/4] chore: add interface for parameter styling --- .../DynamicParameter/DynamicParameter.tsx | 29 ++++++++----------- .../CreateWorkspacePageViewExperimental.tsx | 4 ++- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx index a198eadb527bb..4ea2468f622be 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx @@ -36,6 +36,12 @@ import { type FC, useEffect, useId, useState } from "react"; import type { AutofillBuildParameter } from "utils/richParameters"; import * as Yup from "yup"; +export interface ParameterStyling { + placeholder?: string; + label?: string; + disabled?: boolean; +} + export interface DynamicParameterProps { parameter: PreviewParameter; onChange: (value: string) => void; @@ -164,6 +170,7 @@ const ParameterField: FC = ({ id, }) => { const value = validValue(parameter.value); + const styling = parameter.styling as ParameterStyling; const [localValue, setLocalValue] = useState(value); useEffect(() => { @@ -181,10 +188,7 @@ const ParameterField: FC = ({ > @@ -245,10 +249,7 @@ const ParameterField: FC = ({ onChange(JSON.stringify(values)); }} hidePlaceholderWhenSelected - placeholder={ - (parameter.styling as { placeholder?: string })?.placeholder || - "Select option" - } + placeholder={styling?.placeholder || "Select option"} emptyIndicator={

No results found @@ -304,9 +305,7 @@ const ParameterField: FC = ({ }} disabled={disabled} /> - + ); @@ -343,9 +342,7 @@ const ParameterField: FC = ({ target.style.height = `${target.scrollHeight}px`; }} disabled={disabled} - placeholder={ - (parameter.styling as { placeholder?: string })?.placeholder - } + placeholder={styling?.placeholder} required={parameter.required} /> ); @@ -377,9 +374,7 @@ const ParameterField: FC = ({ }} disabled={disabled} required={parameter.required} - placeholder={ - (parameter.styling as { placeholder?: string })?.placeholder - } + placeholder={styling?.placeholder} {...inputProps} /> ); diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx index 58391cdad3d9f..2ecc29488f211 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx @@ -23,6 +23,7 @@ import { useDebouncedFunction } from "hooks/debounce"; import { ArrowLeft, CircleAlert, TriangleAlert } from "lucide-react"; import { DynamicParameter, + type ParameterStyling, getInitialParameterValues, useValidationSchemaForDynamicParameters, } from "modules/workspaces/DynamicParameter/DynamicParameter"; @@ -492,6 +493,7 @@ export const CreateWorkspacePageViewExperimental: FC<

{parameters.map((parameter, index) => { + const styling = parameter.styling as ParameterStyling; const parameterField = `rich_parameter_values.${index}`; const parameterInputName = `${parameterField}.value`; const isPresetParameter = presetParameterNames.includes( @@ -501,7 +503,7 @@ export const CreateWorkspacePageViewExperimental: FC< disabledParams?.includes( parameter.name.toLowerCase().replace(/ /g, "_"), ) || - (parameter.styling as { disabled?: boolean })?.disabled || + styling?.disabled || creatingWorkspace || isPresetParameter; From c690c7bd2d0cbf4eed9263cd473d5574ca4f4cbb Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Wed, 7 May 2025 21:14:23 +0000 Subject: [PATCH 3/4] chore: update to use parameter styling type --- site/src/api/typesGenerated.ts | 10 ++++++++-- .../DynamicParameter/DynamicParameter.tsx | 17 +++++------------ .../CreateWorkspacePageViewExperimental.tsx | 5 +---- 3 files changed, 14 insertions(+), 18 deletions(-) diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index d195432f019c4..82332b76e060f 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1796,8 +1796,7 @@ export interface PreviewParameterData { readonly type: PreviewParameterType; // this is likely an enum in an external package "github.com/coder/terraform-provider-coder/v2/provider.ParameterFormType" readonly form_type: string; - // empty interface{} type, falling back to unknown - readonly styling: unknown; + readonly styling: PreviewParameterStyling; readonly mutable: boolean; readonly default_value: NullHCLString; readonly icon: string; @@ -1816,6 +1815,13 @@ export interface PreviewParameterOption { readonly icon: string; } +// From types/parameter.go +export interface PreviewParameterStyling { + readonly placeholder?: string; + readonly disabled?: boolean; + readonly label?: string; +} + // From types/enum.go export type PreviewParameterType = string; diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx index 4ea2468f622be..5f8e875dbebcf 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx @@ -36,12 +36,6 @@ import { type FC, useEffect, useId, useState } from "react"; import type { AutofillBuildParameter } from "utils/richParameters"; import * as Yup from "yup"; -export interface ParameterStyling { - placeholder?: string; - label?: string; - disabled?: boolean; -} - export interface DynamicParameterProps { parameter: PreviewParameter; onChange: (value: string) => void; @@ -170,7 +164,6 @@ const ParameterField: FC = ({ id, }) => { const value = validValue(parameter.value); - const styling = parameter.styling as ParameterStyling; const [localValue, setLocalValue] = useState(value); useEffect(() => { @@ -188,7 +181,7 @@ const ParameterField: FC = ({ > @@ -249,7 +242,7 @@ const ParameterField: FC = ({ onChange(JSON.stringify(values)); }} hidePlaceholderWhenSelected - placeholder={styling?.placeholder || "Select option"} + placeholder={parameter.styling?.placeholder || "Select option"} emptyIndicator={

No results found @@ -305,7 +298,7 @@ const ParameterField: FC = ({ }} disabled={disabled} /> - +

); @@ -342,7 +335,7 @@ const ParameterField: FC = ({ target.style.height = `${target.scrollHeight}px`; }} disabled={disabled} - placeholder={styling?.placeholder} + placeholder={parameter.styling?.placeholder} required={parameter.required} /> ); @@ -374,7 +367,7 @@ const ParameterField: FC = ({ }} disabled={disabled} required={parameter.required} - placeholder={styling?.placeholder} + placeholder={parameter.styling?.placeholder} {...inputProps} /> ); diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx index 2ecc29488f211..0ba3ee9fb77f3 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx @@ -23,7 +23,6 @@ import { useDebouncedFunction } from "hooks/debounce"; import { ArrowLeft, CircleAlert, TriangleAlert } from "lucide-react"; import { DynamicParameter, - type ParameterStyling, getInitialParameterValues, useValidationSchemaForDynamicParameters, } from "modules/workspaces/DynamicParameter/DynamicParameter"; @@ -493,9 +492,7 @@ export const CreateWorkspacePageViewExperimental: FC<
{parameters.map((parameter, index) => { - const styling = parameter.styling as ParameterStyling; const parameterField = `rich_parameter_values.${index}`; - const parameterInputName = `${parameterField}.value`; const isPresetParameter = presetParameterNames.includes( parameter.name, ); @@ -503,7 +500,7 @@ export const CreateWorkspacePageViewExperimental: FC< disabledParams?.includes( parameter.name.toLowerCase().replace(/ /g, "_"), ) || - styling?.disabled || + parameter.styling?.disabled || creatingWorkspace || isPresetParameter; From 81e4f7795f8766104cbf594a1ef170da3dd56df5 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Wed, 7 May 2025 21:14:41 +0000 Subject: [PATCH 4/4] chore: update preview version --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index cffcd99d06db8..536bce2fe28b7 100644 --- a/go.mod +++ b/go.mod @@ -488,7 +488,7 @@ require ( require ( github.com/anthropics/anthropic-sdk-go v0.2.0-beta.3 - github.com/coder/preview v0.0.1 + github.com/coder/preview v0.0.2-0.20250506154333-6f500ca7b245 github.com/fsnotify/fsnotify v1.9.0 github.com/kylecarbs/aisdk-go v0.0.8 github.com/mark3labs/mcp-go v0.25.0 diff --git a/go.sum b/go.sum index 4c418e5fd2a02..a3fc878ef2653 100644 --- a/go.sum +++ b/go.sum @@ -907,8 +907,8 @@ github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048 h1:3jzYUlGH7ZELIH4XggX github.com/coder/pq v1.10.5-0.20240813183442-0c420cb5a048/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0 h1:3A0ES21Ke+FxEM8CXx9n47SZOKOpgSE1bbJzlE4qPVs= github.com/coder/pretty v0.0.0-20230908205945-e89ba86370e0/go.mod h1:5UuS2Ts+nTToAMeOjNlnHFkPahrtDkmpydBen/3wgZc= -github.com/coder/preview v0.0.1 h1:2X5McKdMOZJILTIDf7qRplXKupT+91qTJBN67XUh5cA= -github.com/coder/preview v0.0.1/go.mod h1:eInDmOdSDF8cxCvapIvYkGRzmzvcvGAFL1HYqcA4g+E= +github.com/coder/preview v0.0.2-0.20250506154333-6f500ca7b245 h1:RGoANNubwwPZF8puiYAk2qbzhVgipBMNu8WIrY1VIbI= +github.com/coder/preview v0.0.2-0.20250506154333-6f500ca7b245/go.mod h1:5VnO9yw7vq19hBgBqqBksE2BH53UTmNYH1QltkYLXJI= github.com/coder/quartz v0.1.2 h1:PVhc9sJimTdKd3VbygXtS4826EOCpB1fXoRlLnCrE+s= github.com/coder/quartz v0.1.2/go.mod h1:vsiCc+AHViMKH2CQpGIpFgdHIEQsxwm8yCscqKmzbRA= github.com/coder/retry v1.5.1 h1:iWu8YnD8YqHs3XwqrqsjoBTAVqT9ml6z9ViJ2wlMiqc=