Skip to content

Commit f1a5839

Browse files
committed
Label preset parameters as such
1 parent 1894f3c commit f1a5839

File tree

3 files changed

+69
-18
lines changed

3 files changed

+69
-18
lines changed

site/src/components/RichParameterInput/RichParameterInput.stories.tsx

+38
Original file line numberDiff line numberDiff line change
@@ -374,3 +374,41 @@ export const SmallBasicWithDisplayName: Story = {
374374
size: "small",
375375
},
376376
};
377+
378+
export const WithPreset: Story = {
379+
args: {
380+
value: "preset-value",
381+
id: "project_name",
382+
parameter: createTemplateVersionParameter({
383+
name: "project_name",
384+
description: "Customize the name of a Google Cloud project that will be created!",
385+
}),
386+
isPreset: true,
387+
},
388+
};
389+
390+
export const WithPresetAndImmutable: Story = {
391+
args: {
392+
value: "preset-value",
393+
id: "project_name",
394+
parameter: createTemplateVersionParameter({
395+
name: "project_name",
396+
description: "Customize the name of a Google Cloud project that will be created!",
397+
mutable: false,
398+
}),
399+
isPreset: true,
400+
},
401+
};
402+
403+
export const WithPresetAndOptional: Story = {
404+
args: {
405+
value: "preset-value",
406+
id: "project_name",
407+
parameter: createTemplateVersionParameter({
408+
name: "project_name",
409+
description: "Customize the name of a Google Cloud project that will be created!",
410+
required: false,
411+
}),
412+
isPreset: true,
413+
},
414+
};

site/src/components/RichParameterInput/RichParameterInput.tsx

+13-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import type {
1919
AutofillSource,
2020
} from "utils/richParameters";
2121
import { MultiTextField } from "./MultiTextField";
22+
import SettingsIcon from "@mui/icons-material/Settings";
2223

2324
const isBoolean = (parameter: TemplateVersionParameter) => {
2425
return parameter.type === "bool";
@@ -122,9 +123,10 @@ const styles = {
122123

123124
export interface ParameterLabelProps {
124125
parameter: TemplateVersionParameter;
126+
isPreset?: boolean;
125127
}
126128

127-
const ParameterLabel: FC<ParameterLabelProps> = ({ parameter }) => {
129+
const ParameterLabel: FC<ParameterLabelProps> = ({ parameter, isPreset }) => {
128130
const hasDescription = parameter.description && parameter.description !== "";
129131
const displayName = parameter.display_name
130132
? parameter.display_name
@@ -146,6 +148,13 @@ const ParameterLabel: FC<ParameterLabelProps> = ({ parameter }) => {
146148
</Pill>
147149
</Tooltip>
148150
)}
151+
{isPreset && (
152+
<Tooltip title="This value was set by a preset">
153+
<Pill type="info" icon={<SettingsIcon />}>
154+
Preset
155+
</Pill>
156+
</Tooltip>
157+
)}
149158
</span>
150159
);
151160

@@ -187,6 +196,7 @@ export type RichParameterInputProps = Omit<
187196
parameterAutofill?: AutofillBuildParameter;
188197
onChange: (value: string) => void;
189198
size?: Size;
199+
isPreset?: boolean;
190200
};
191201

192202
const autofillDescription: Partial<Record<AutofillSource, ReactNode>> = {
@@ -198,6 +208,7 @@ export const RichParameterInput: FC<RichParameterInputProps> = ({
198208
parameter,
199209
parameterAutofill,
200210
onChange,
211+
isPreset,
201212
...fieldProps
202213
}) => {
203214
const autofillSource = parameterAutofill?.source;
@@ -211,7 +222,7 @@ export const RichParameterInput: FC<RichParameterInputProps> = ({
211222
className={size}
212223
data-testid={`parameter-field-${parameter.name}`}
213224
>
214-
<ParameterLabel parameter={parameter} />
225+
<ParameterLabel parameter={parameter} isPreset={isPreset} />
215226
<div css={{ display: "flex", flexDirection: "column" }}>
216227
<RichParameterField
217228
{...fieldProps}

site/src/pages/CreateWorkspacePage/CreateWorkspacePageView.tsx

+18-16
Original file line numberDiff line numberDiff line change
@@ -382,33 +382,35 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
382382
{parameters.map((parameter, index) => {
383383
const parameterField = `rich_parameter_values.${index}`;
384384
const parameterInputName = `${parameterField}.value`;
385+
const isPresetParameter = presetParameterNames.includes(parameter.name);
385386
const isDisabled =
386387
disabledParams?.includes(
387388
parameter.name.toLowerCase().replace(/ /g, "_"),
388389
) ||
389390
creatingWorkspace ||
390-
presetParameterNames.includes(parameter.name);
391+
isPresetParameter;
391392

392393
// Hide preset parameters if showPresetParameters is false
393-
// but keep their values in the form
394-
if (!showPresetParameters && presetParameterNames.includes(parameter.name)) {
394+
if (!showPresetParameters && isPresetParameter) {
395395
return null;
396396
}
397397

398398
return (
399-
<RichParameterInput
400-
{...getFieldHelpers(parameterInputName)}
401-
onChange={async (value) => {
402-
await form.setFieldValue(parameterField, {
403-
name: parameter.name,
404-
value,
405-
});
406-
}}
407-
key={parameter.name}
408-
parameter={parameter}
409-
parameterAutofill={autofillByName[parameter.name]}
410-
disabled={isDisabled}
411-
/>
399+
<div key={parameter.name}>
400+
<RichParameterInput
401+
{...getFieldHelpers(parameterInputName)}
402+
onChange={async (value) => {
403+
await form.setFieldValue(parameterField, {
404+
name: parameter.name,
405+
value,
406+
});
407+
}}
408+
parameter={parameter}
409+
parameterAutofill={autofillByName[parameter.name]}
410+
disabled={isDisabled}
411+
isPreset={isPresetParameter}
412+
/>
413+
</div>
412414
);
413415
})}
414416
</FormFields>

0 commit comments

Comments
 (0)