From 8afdf0f7e1e5ab8ec5e1413925cfa1372bebeb6f Mon Sep 17 00:00:00 2001 From: Jeremy Ruppel Date: Mon, 6 Jul 2026 19:28:55 -0400 Subject: [PATCH] fix(site/src/pages/TemplateBuilder): use variable defaults as field values, not just placeholders (#27032) Variables with defaults showed the default as placeholder text in an empty field. If the user did not type anything, an empty value was sent instead of the default. Now the default pre-populates the field value so it is visible and editable. Fixes both `BaseTemplateParametersStep` and `ModuleSettingsStep` by falling back to `defaultPlaceholder(v.default)` instead of `""` when no user value exists. Fixes DEVEX-584 > [!NOTE] > This PR was authored by Coder Agents on behalf of @jeremyruppel. --- .../pages/TemplateBuilder/BaseTemplateParametersStep.tsx | 6 +++++- site/src/pages/TemplateBuilder/ModuleSettingsStep.tsx | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/site/src/pages/TemplateBuilder/BaseTemplateParametersStep.tsx b/site/src/pages/TemplateBuilder/BaseTemplateParametersStep.tsx index ba96f4ed4d..3b0e63f0e9 100644 --- a/site/src/pages/TemplateBuilder/BaseTemplateParametersStep.tsx +++ b/site/src/pages/TemplateBuilder/BaseTemplateParametersStep.tsx @@ -109,7 +109,11 @@ export const BaseTemplateParametersStep: FC< }; const fields: ConfigurationFieldDefinition[] = variables.map((v) => - variableToField(v, values[v.name] ?? "", handleChange), + variableToField( + v, + values[v.name] ?? defaultPlaceholder(v.default) ?? "", + handleChange, + ), ); return ( diff --git a/site/src/pages/TemplateBuilder/ModuleSettingsStep.tsx b/site/src/pages/TemplateBuilder/ModuleSettingsStep.tsx index c801ab684a..538b754ed9 100644 --- a/site/src/pages/TemplateBuilder/ModuleSettingsStep.tsx +++ b/site/src/pages/TemplateBuilder/ModuleSettingsStep.tsx @@ -135,8 +135,11 @@ export const ModuleSettingsStep: FC = ({ const vars = moduleVariables[mod.id] ?? {}; const toField = (v: TemplateBuilderModuleVariable) => - variableToField(mod.id, v, vars[v.name] ?? "", (name, val) => - handleChange(mod.id, name, val), + variableToField( + mod.id, + v, + vars[v.name] ?? defaultPlaceholder(v.default) ?? "", + (name, val) => handleChange(mod.id, name, val), ); const requiredVars = configurableVars.filter((v) => v.required);