AdmiralDS / react-ui

Сторибук компонентов React на основе дизайн системы Адмирал 2.1
https://AdmiralDS.github.io/react-ui/
MIT License
40 stars 13 forks source link

feature: добавить в DropdownContainer prop rootRef для использования в Portal #1458

Closed GiaCarangi1986 closed 1 month ago

GiaCarangi1986 commented 1 month ago

сейчас переменная rootRef достается через DropdownContext (const { rootRef } = React.useContext(DropdownContext);) нужна возможность передавать ее через DropdownContainer для избежания отрисовки в document.body, чтобы этот контейнер не вываливался за нужную область

kateviditory commented 1 month ago

Добрый день! Сейчас библиотека поддерживает следующую реализацию. Все наши компоненты, в которых используются дропдауны, обязательно должны быть обернуты в компонент DropdownProvider (пример можно найти в readme). И именно для DropdownProvider следует централизовано задавать rootRef, который в последствии будет использоваться во всех компонентах с дропдаунами.

То есть в вашем случае нужно именно в DropdownProvider задать rootRef отличный от document.body

GiaCarangi1986 commented 1 month ago

добрый день! поняла, спасибо большое но осталась еще одна проблема: на демо дропконтейнер на залезает на боковую панель и шапку Скриншот 29-08-2024 155120 разобравшись, думаю дело в iframe, который не позволяет вылезти за область

GiaCarangi1986 commented 1 month ago

а есть ли способ добиться такого же эффекта, не используя iframe и не задавая другим блокам z-index выше 97? Не нашла встроенного способа добраться до z-index: 97 и изменить его Скриншот 29-08-2024 155633

GiaCarangi1986 commented 1 month ago

@kateviditory и еще вопрос по теме DropdownProvider: в readme прочитала, что их рекомендуется подключать в корне проекта. Можно ли в разных местах проекта оборачивать дропконтейнеры в разные DropdownProvider со своими rootRef, актуальными для данной части проекта?

kateviditory commented 1 month ago

1) В сторибуке все компоненты выводятся внутри iframe, и выходить за пределы этого iframe не могут. Тут вы правы.

2) Изменить z-index компонента можно 2мя способами:

3) Желательно не использовать несколько DropdownProvider. DropdownProvider - это компонент, который отслеживает все открытые внутри него дропдауны и контролирует, чтобы нельзя было одновременно открыть несколько дропдаунов + контролирует работу вложенных друг в друга дропдаунов. Если вдруг окажется, что у вас в приложении на экране одновременно отображаются дропдауны с разными DropdownProvider, то не исключены коллизии и ошибки.

GiaCarangi1986 commented 1 month ago

спасибо большое!