Radix
Чтобы сделать универсальную модалку, необходимо реализовать:
- Обработку клика за пределами модального окна
- Закрытие по нажатию клавиши
Escape - Поддержку порталов
- Прием
childrenдля динамического содержимого - Стилизацию и кастомизацию: модалка должна поддерживать кастомизацию стилей
- Доступность (
a11y) - Управление фокусом: при открытии модального окна весь фокус должен быть внутри него.
- Блокировку прокрутки
Чтобы реализовать модальное окно, согласно этим требования придется потрудиться не один день. Но в принципе все это реально сделать.
Но возьмем например dropdown. На первый взгляд кажется, что там делать. Для того чтобы глубже
понять проблему реализации кастомных компонент посмотрите видео
So You Think You Can Build A Dropdown?
И это касается многих элементов (селекты, чекбоксы, аккордироны, popover и много других). Мы
можем их взять из MUI или других подобных библиотек, но есть определенные трудности:
- Размер библиотеки: Использование
Material-UIможет увеличить размер вашего приложения из-за включения большого количестваCSSиJavaScriptкода для компонентов и их стилей. - Ограниченная кастомизация: В некоторых случаях может быть сложно добиться определенного
внешнего вида или поведения компонентов
Material-UIбез изменения их внутреннего кода или использования обходных решений - Зависимость от дизайна Material Design: Если вы предпочитаете или ваш проект требует другого
стиля дизайна, использование
Material-UIможет ограничить вашу свободу выбора. - Глубокое понинимание нюансов работы в Material Design
...



