import * as React from 'react';
import { NumberInput, TextInput, Tooltip } from '../../presentation';
export interface INumberListConstraints {
min: number;
max: number;
}
export interface INumberListProps {
constraints?: INumberListConstraints;
label: string;
model: number[] | string;
onChange: (model: number[] | string) => void;
}
interface INumberListToggleProps {
isNumber: boolean;
toggle: (mode: boolean) => void;
}
const NumberListToggle = ({ isNumber, toggle }: INumberListToggleProps) => (
);
export const NumberList = ({ constraints, label, model, onChange }: INumberListProps) => {
const [isNumList, setIsNumList] = React.useState(typeof model !== 'string');
const [numListModel, setNumListModel] = React.useState(isNumList ? (model as number[]) : []);
const spelModel = isNumList ? '' : (model as string);
const updateModel = (list: number[]) => {
setNumListModel(list);
const sortedList = list.filter((n) => n !== null).sort((a, b) => a - b);
onChange(sortedList);
};
const addNumber = () => {
const newNumList = [...numListModel, null];
updateModel(newNumList);
};
const removeNumber = (index: number) => {
const newNumListModel = numListModel.filter((_, i) => i !== index);
updateModel(newNumListModel);
};
const updateNumber = (num: string, index: number) => {
const newNumList = [...numListModel];
newNumList[index] = Number.parseInt(num, 10);
updateModel(newNumList);
};
const toggleMode = (isNum: boolean) => {
const newModel = isNum ? ([] as number[]) : '${}';
setIsNumList(isNum);
onChange(newModel);
};
return (
{!isNumList && (
onChange(e.target.value)}
/>
)}
{isNumList && (
{(numListModel || []).map((num, i) => (
updateNumber(e.target.value, i)}
/>
{i === 0 && }
{i > 0 && (
)}
))}
)}
);
};