import { AutomationTestingProps } from '@/types'; 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, 'data-cy': dataCy, }: { value: Range | number | undefined; onChange: (value: Range | number | undefined) => void; disabled?: boolean; readOnly?: boolean; id: string; label: string; } & AutomationTestingProps) { return (
{isRange(value) ? ( ) : ( onChange(getNumber(e.target.valueAsNumber))} data-cy={dataCy} /> )}
); } function RangeInput({ value, onChange, disabled, readOnly, id, label, 'data-cy': dataCy, }: { value: Range; onChange: (value: Range) => void; disabled?: boolean; readOnly?: boolean; id: string; label: string; } & AutomationTestingProps) { return (
handleChange({ start: getNumber(e.target.valueAsNumber) }) } disabled={disabled} readOnly={readOnly} id={id} type="number" data-cy={`${dataCy}-start`} /> handleChange({ end: getNumber(e.target.valueAsNumber) }) } disabled={disabled} readOnly={readOnly} id={id} type="number" data-cy={`${dataCy}-end`} />
); function handleChange(range: Partial) { onChange({ ...value, ...range }); } } function getNumber(value: number) { return Number.isNaN(value) ? 0 : value; } function RangeCheckbox({ value, onChange, 'data-cy': dataCy, }: { value: Range | number | undefined; onChange: (value: Range | number | undefined) => void; } & AutomationTestingProps) { const isValueRange = isRange(value); return ( { if (!isValueRange) { onChange({ start: value || 0, end: value || 0 }); } else { onChange(value.start); } }} data-cy={`${dataCy}-range-checkbox`} /> ); }