import React from "react"; import { Chip } from "./Chip"; // import "./chips.css"; export function ChipsInput(props: { value: string[]; onChange: (value: string[]) => void; placeholder?: string; label?: React.ReactNode; }) { const { value, onChange, placeholder = "Введите и нажмите Enter", label } = props; const [text, setText] = React.useState(""); const add = () => { const v = text.trim(); if (!v) return; if (value.includes(v)) { setText(""); return; } onChange([...value, v]); setText(""); }; return (
{label ?
{label}
: null}
{value.map((v) => ( onChange(value.filter((x) => x !== v))} /> ))} setText(e.target.value)} onKeyDown={(e) => { if (e.key === "Enter") { e.preventDefault(); add(); } if (e.key === "Backspace" && text.length === 0 && value.length > 0) { onChange(value.slice(0, -1)); } }} />
Подсказка: Enter — добавить, Backspace — удалить последний.
); }