Skip to content

Commit 8fea22d

Browse files
committed
feat: UI create workspace page with preset's icon and description
1 parent 0672bf5 commit 8fea22d

File tree

1 file changed

+14
-13
lines changed

1 file changed

+14
-13
lines changed

site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import * as Yup from "yup";
4545
import type { CreateWorkspaceMode } from "./CreateWorkspacePage";
4646
import { ExternalAuthButton } from "./ExternalAuthButton";
4747
import type { CreateWorkspacePermissions } from "./permissions";
48+
import {Combobox} from "../../components/Combobox/Combobox";
4849

4950
export const Language = {
5051
duplicationWarning:
@@ -153,16 +154,18 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
153154
);
154155

155156
const [presetOptions, setPresetOptions] = useState([
156-
{ label: "None", value: "" },
157+
{ displayName: "None", value: "", icon: "", description: "" },
157158
]);
158159
const [selectedPresetIndex, setSelectedPresetIndex] = useState(0);
159160
// Build options and keep default label/value in sync
160161
useEffect(() => {
161162
const options = [
162-
{ label: "None", value: "" },
163-
...presets.map((p) => ({
164-
label: p.Default ? `${p.Name} (Default)` : p.Name,
165-
value: p.ID,
163+
{ displayName: "None", value: "", icon: "", description: "" },
164+
...presets.map((preset) => ({
165+
displayName: preset.Default ? `${preset.Name} (Default)` : preset.Name,
166+
value: preset.ID,
167+
icon: preset.Icon,
168+
description: preset.Description,
166169
})),
167170
];
168171
setPresetOptions(options);
@@ -380,25 +383,23 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
380383
</Stack>
381384
<Stack direction="column" spacing={2}>
382385
<Stack direction="row" spacing={2}>
383-
<SelectFilter
384-
label="Preset"
386+
<Combobox
387+
value={presetOptions[selectedPresetIndex]?.displayName || ""}
385388
options={presetOptions}
386-
onSelect={(option) => {
389+
placeholder="Select a preset"
390+
onSelect={(value) => {
387391
const index = presetOptions.findIndex(
388-
(preset) => preset.value === option?.value,
392+
(preset) => preset.value === value,
389393
);
390394
if (index === -1) {
391395
return;
392396
}
393397
setSelectedPresetIndex(index);
394398
form.setFieldValue(
395399
"template_version_preset_id",
396-
// Empty string is equivalent to using None
397-
option?.value === "" ? undefined : option?.value,
400+
presetOptions[index].value === "" ? undefined : presetOptions[index].value,
398401
);
399402
}}
400-
placeholder="Select a preset"
401-
selectedOption={presetOptions[selectedPresetIndex]}
402403
/>
403404
</Stack>
404405
{/* Only show the preset parameter visibility toggle if preset parameters are actually being modified, otherwise it has no effect. */}

0 commit comments

Comments
 (0)