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`}
/>
);
}