= [
...params.options.map((option) => ({ ...option, description: option.detail })),
...(params.custom ? [{ value: customValue, label: params.custom.label }] : []),
];
return html`
${renderPicker({
id: params.id,
label: params.label,
value: params.value,
options,
disabled: params.disabled,
title: params.title,
placement: params.placement,
className: `model-picker__select ${params.className ?? ""}`,
onOpen: params.onOpen,
renderLeading: (option) =>
option.provider
? renderProviderBrandIcon(option.provider, { className: "model-picker__provider-icon" })
: nothing,
onChange: params.onChange,
onChangeTarget: (value, select) => {
const wrapper = select.closest(".model-picker");
const input = wrapper?.querySelector(".model-picker__custom");
if (value === customValue && input) {
input.hidden = false;
queueMicrotask(() => input.focus());
return;
}
if (input) {
input.hidden = true;
}
params.onChange(value);
},
})}
${params.custom
? html` {
if (params.custom?.commit !== "change") {
params.onChange((event.currentTarget as HTMLInputElement).value);
}
}}
@change=${(event: Event) => {
if (params.custom?.commit === "change") {
params.onChange((event.currentTarget as HTMLInputElement).value);
}
}}
/>`
: nothing}
`;
}