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