Ответ
Да, были. Например, создавал кастомный селект с возможностью множественного выбора и поиском внутри. Нативный `
Ответ 18+ 🔞
А, ну ты про это, про кастомные контролы! Да, блядь, были дела, были. Это ж классика, как в рот меня чих-пых! Нативный селект — он как мартышлюшка глупая: выглядит по-разному в каждом браузере, а функционал у него — ну, хуй с горы, проще говоря. Хочешь поиск внутри? Хочешь выбрать несколько пунктов? А нативный тебе: «Не, браток, я так не умею, я только один и без поиска».
Вот и приходится городить свой велосипед, блядь. Из дивов, инпутов и списков. Получается этакая хитрая жопа, но зато работает как надо.
Смотри, вот примерно так это выглядело в коде, ёпта:
```
function CustomSelect({ options }) {
const [isOpen, setIsOpen] = useState(false);
const [selected, setSelected] = useState([]);
return (
);
}
```
А ещё, помню, делал загрузчик файлов с перетаскиванием. Ну, этот drag-n-drop, блядь. Тоже овердохуища логики: ловить события, превьюшки картинок показывать, проверять, не суёт ли пользователь тебе в рот берунчик какой-нибудь исполняемый файл вместо картинки. В общем, волнение ебать, пока всё оттестишь. Но зато когда работает — красота, пользователь доволен, а я — сам от себя охуел, что всё получилось.
setIsOpen(!isOpen)}>
{selected.join(', ') || 'Select...'}
{isOpen && (
-
{options.map(option => (
- setSelected([...selected, option.label])} > {option.label} ))}