summaryrefslogtreecommitdiff
path: root/packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx')
-rw-r--r--packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx14
1 files changed, 6 insertions, 8 deletions
diff --git a/packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx b/packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx
index a4ed1ba1c..9af446e6c 100644
--- a/packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx
+++ b/packages/exchange-backoffice-ui/src/handlers/InputSelectOne.tsx
@@ -4,15 +4,13 @@ import { LabelWithTooltipMaybeRequired, UIFormProps } from "./InputLine.js";
import { useField } from "./useField.js";
import { useState } from "preact/hooks";
-export function InputSelectOne(
+export function InputSelectOne<T extends object, K extends keyof T>(
props: {
choices: Choice[];
- } & UIFormProps<Array<string>>,
+ } & UIFormProps<T, K>,
): VNode {
const { name, label, choices, placeholder, tooltip, required } = props;
- const { value, onChange } = useField<{ [s: string]: string | undefined }>(
- name,
- );
+ const { value, onChange } = useField<T, K>(name);
const [filter, setFilter] = useState<string | undefined>(undefined);
const regex = new RegExp(`.*${filter}.*`, "i");
@@ -35,11 +33,11 @@ export function InputSelectOne(
/>
{value ? (
<span class="inline-flex items-center gap-x-0.5 rounded-md bg-gray-100 p-1 mr-2 font-medium text-gray-600">
- {choiceMap[value]}
+ {choiceMap[value as string]}
<button
type="button"
onClick={() => {
- onChange(undefined);
+ onChange(undefined!);
}}
class="group relative h-5 w-5 rounded-sm hover:bg-gray-500/20"
>
@@ -103,7 +101,7 @@ export function InputSelectOne(
role="option"
onClick={() => {
setFilter(undefined);
- onChange(v.value);
+ onChange(v.value as T[K]);
}}
// tabindex="-1"