Компоненты
TagInput
Многозначный ввод: чипы вместо строки, разбор вставки из буфера.
Многозначный ввод: значения-чипы вместо строки через запятую. Метки, адреса, идентификаторы. Enter и запятая добавляют, Backspace в пустом поле убирает последний чип.
Пример
bugui
Вставьте a, b; c из буфера — разложится на отдельные метки, повторы отсеются.
<TagInput
value={tags}
onChange={setTags}
max={6}
onReject={(v, reason) => toast(reason === "duplicate" ? "уже есть" : "…")}
/>Пропсы
| Проп | Тип | По умолчанию | Описание |
|---|---|---|---|
value / onChange* | string[] / (tags) => void | — | Список значений. |
max | number | — | Предел количества. |
caseInsensitive | boolean | true | «Bug» и «bug» — одно значение. |
validate | (value) => boolean | — | Проверка: false отклоняет значение. |
separators | string[] | — | Разделители при разборе вставки. По умолчанию — запятая, ; и перенос строки. |
onReject | (value, reason) => void | — | Отклонённое значение: duplicate | invalid | limit. |
name | string | — | Скрытое поле — чтобы отправить теги обычной формой. |
value / onChange*string[] / (tags) => voidСписок значений.
maxnumberПредел количества.
caseInsensitivebooleanпо умолчанию: true
«Bug» и «bug» — одно значение.
validate(value) => booleanПроверка: false отклоняет значение.
separatorsstring[]Разделители при разборе вставки. По умолчанию — запятая, ; и перенос строки.
onReject(value, reason) => voidОтклонённое значение: duplicate | invalid | limit.
namestringСкрытое поле — чтобы отправить теги обычной формой.
Разбор отдельно
import {
addTags, // добавить с отсевом повторов, пустот и сверх лимита
splitTags, // разбить вставленную строку по разделителям
normalizeTag, // срезать пробелы и обрамляющие кавычки
} from "@toimetdev/pathlogs-core";