import { InputLabeled } from '@@/form-components/Input/InputLabeled'; import { Checkbox } from '@@/form-components/Checkbox'; import { Range, isRange } from './types'; export function RangeOrNumberField({ value, onChange, disabled, readOnly, id, label, }: { value: Range | number | undefined; onChange: (value: Range | number | undefined) => void; disabled?: boolean; readOnly?: boolean; id: string; label: string; }) { return (
{isRange(value) ? ( ) : ( onChange(getNumber(e.target.valueAsNumber))} /> )}
); } function RangeInput({ value, onChange, disabled, readOnly, id, label, }: { value: Range; onChange: (value: Range) => void; disabled?: boolean; readOnly?: boolean; id: string; label: string; }) { return (
handleChange({ start: getNumber(e.target.valueAsNumber) }) } disabled={disabled} readOnly={readOnly} id={id} type="number" /> handleChange({ end: getNumber(e.target.valueAsNumber) }) } disabled={disabled} readOnly={readOnly} id={id} type="number" />
); function handleChange(range: Partial) { onChange({ ...value, ...range }); } } function getNumber(value: number) { return Number.isNaN(value) ? 0 : value; } function RangeCheckbox({ value, onChange, }: { value: Range | number | undefined; onChange: (value: Range | number | undefined) => void; }) { const isValueRange = isRange(value); return ( { if (!isValueRange) { onChange({ start: value || 0, end: value || 0 }); } else { onChange(value.start); } }} /> ); }