fix: handle preset reselection properly and ensure None is always first

This commit is contained in:
Sas Swart
2025-03-14 06:29:32 +00:00
parent cf7d143e43
commit 7a70321af2
2 changed files with 35 additions and 22 deletions

View File

@ -159,6 +159,19 @@ export const PresetSelected: Story = {
},
};
export const PresetReselected: Story = {
args: PresetsButNoneSelected.args,
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
// Select Preset 1
await userEvent.click(canvas.getByLabelText("Preset"));
await userEvent.click(canvas.getByText("Preset 1"));
// Select Preset 1 again
await userEvent.click(canvas.getByLabelText("Preset"));
await userEvent.click(canvas.getByText("Preset 1"));
},
};
export const ExternalAuth: Story = {
args: {
externalAuth: [

View File

@ -179,31 +179,33 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
if (!selectedPreset || !selectedPreset.Parameters) {
setPresetParameterNames([]);
if (selectedPresetOption.value === "") {
parameters.forEach((_, index) => {
const parameterField = `rich_parameter_values.${index}`;
form.setFieldValue(parameterField, {
name: parameters[index].name,
value: "",
});
});
}
return;
}
setPresetParameterNames(selectedPreset.Parameters.map((p) => p.Name));
const newPresetParameterNames = selectedPreset.Parameters.map((p) => p.Name);
setPresetParameterNames(newPresetParameterNames);
for (const presetParameter of selectedPreset.Parameters) {
const parameterIndex = parameters.findIndex(
(p) => p.name === presetParameter.Name,
parameters.forEach((parameter, index) => {
const parameterField = `rich_parameter_values.${index}`;
const presetParameter = selectedPreset?.Parameters?.find(
(p) => p.Name === parameter.name,
);
if (parameterIndex === -1) continue;
const parameterField = `rich_parameter_values.${parameterIndex}`;
form.setFieldValue(parameterField, {
name: presetParameter.Name,
value: presetParameter.Value,
name: parameter.name,
value: presetParameter?.Value ?? "",
});
}
}, [
presetOptions,
selectedPresetIndex,
presets,
parameters,
form.setFieldValue,
]);
});
}, [selectedPresetIndex, presetOptions, parameters, form.setFieldValue, presets]);
return (
<Margins size="medium">
@ -286,10 +288,8 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
label="Preset"
options={presetOptions}
onSelect={(option) => {
setSelectedPresetIndex(
presetOptions.findIndex(
(preset) => preset.value === option?.value,
),
const newIndex = presetOptions.findIndex(
(preset) => preset.value === option?.value,
);
}}
placeholder="Select a preset"
@ -390,7 +390,7 @@ export const CreateWorkspacePageView: FC<CreateWorkspacePageViewProps> = ({
value,
});
}}
key={parameter.name}
key={`${parameter.name}-${selectedPresetIndex}`}
parameter={parameter}
parameterAutofill={autofillByName[parameter.name]}
disabled={isDisabled}