import { TranslatedString } from "@gnu-taler/taler-util"; import { Fragment, VNode, h } from "preact"; import { UIFormProps } from "./FormProvider.js"; import { LabelWithTooltipMaybeRequired } from "./InputLine.js"; import { useField } from "./useField.js"; export interface ChoiceH { label: TranslatedString; value: V; } export function InputChoiceHorizontal( props: { choices: ChoiceH[]; } & UIFormProps, ): VNode { const { choices, name, label, tooltip, help, placeholder, required, before, after, converter, } = props; const { value, onChange, state, isDirty } = useField(name); if (state.hidden) { return ; } return (
{choices.map((choice, idx) => { const isFirst = idx === 0; const isLast = idx === choices.length - 1; let clazz = "relative inline-flex items-center px-3 py-2 text-sm font-semibold text-gray-900 ring-1 ring-inset ring-gray-300 focus:z-10"; if (choice.value === value) { clazz += " text-white bg-indigo-600 hover:bg-indigo-500 ring-2 ring-indigo-600 hover:ring-indigo-500"; } else { clazz += " hover:bg-gray-100 border-gray-300"; } if (isFirst) { clazz += " rounded-l-md"; } else { clazz += " -ml-px"; } if (isLast) { clazz += " rounded-r-md"; } return ( ); })}
{help && (

{help}

)}
); }