diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx index c478acd50ee14..b0298630776d2 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx @@ -5,16 +5,10 @@ import { ErrorAlert } from "components/Alert/ErrorAlert"; import { Avatar } from "components/Avatar/Avatar"; import { Badge } from "components/Badge/Badge"; import { Button } from "components/Button/Button"; +import { Combobox } from "components/Combobox/Combobox"; import { Input } from "components/Input/Input"; import { Label } from "components/Label/Label"; import { Link } from "components/Link/Link"; -import { - Select, - SelectContent, - SelectItem, - SelectTrigger, - SelectValue, -} from "components/Select/Select"; import { Spinner } from "components/Spinner/Spinner"; import { Switch } from "components/Switch/Switch"; import { @@ -186,30 +180,31 @@ export const CreateWorkspacePageViewExperimental: FC< }, [form.submitCount, form.errors]); const [presetOptions, setPresetOptions] = useState([ - { label: "None", value: "None" }, + { displayName: "None", value: "undefined", icon: "", description: "" }, ]); + const [selectedPresetIndex, setSelectedPresetIndex] = useState(0); + // Build options and keep default label/value in sync useEffect(() => { - setPresetOptions([ - { label: "None", value: "None" }, + const options = [ + { displayName: "None", value: "undefined", icon: "", description: "" }, ...presets.map((preset) => ({ - label: preset.Default ? `${preset.Name} (Default)` : preset.Name, + displayName: preset.Default ? `${preset.Name} (Default)` : preset.Name, value: preset.ID, + icon: preset.Icon, + description: preset.Description, })), - ]); - }, [presets]); - - const [selectedPresetIndex, setSelectedPresetIndex] = useState(0); - - // Set default preset when presets are loaded - useEffect(() => { - const defaultPreset = presets.find((preset) => preset.Default); + ]; + setPresetOptions(options); + const defaultPreset = presets.find((p) => p.Default); if (defaultPreset) { - // +1 because "None" is at index 0 - const defaultIndex = - presets.findIndex((preset) => preset.ID === defaultPreset.ID) + 1; - setSelectedPresetIndex(defaultIndex); + const idx = presets.indexOf(defaultPreset) + 1; // +1 for "None" + setSelectedPresetIndex(idx); + form.setFieldValue("template_version_preset_id", defaultPreset.ID); + } else { + setSelectedPresetIndex(0); // Explicitly set to "None" + form.setFieldValue("template_version_preset_id", undefined); } - }, [presets]); + }, [presets, form.setFieldValue]); const [presetParameterNames, setPresetParameterNames] = useState( [], @@ -572,11 +567,15 @@ export const CreateWorkspacePageViewExperimental: FC<
- + />
{/* Only show the preset parameter visibility toggle if preset parameters are actually being modified, otherwise it is ineffectual */} {presetParameterNames.length > 0 && (