Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tooltip, Hint и другие Popup] Добавить возможность прерывать показ верхнего Popup при показе внутреннего IF-1024 #2525

Open
MozalovPavel opened this issue Aug 30, 2021 · 4 comments

Comments

@MozalovPavel
Copy link
Contributor

Предисловие.
Описанная ниже проблема относится к любым компонентам реализованным на основе Popup (например, Tooltip, Hint и др.), далее буду называть эти компоненты абстрактно Popup.

Описание проблемы.
Кейс: оборачиваем в Popup что-то, что содержит другой Popup.
image

Проблема: сейчас получается, что при наведении на самый глубокий элемент, обернутый в Popup, мы покажем все Popup-ы.
Пример из жизни:
image

Что хочется: хочется научиться говорить Popup-у, что он должен учитывать показ всех своих возможных вложенных Popup-ов общим механизмом и не показывать верхние Popup-ы при показе более глубоких.

Возможное решение:

  • добавить пропс в Popup компоненты, по которому можем включать обработку этого случая;
  • с помощью React Context хранить и понимать, что есть вложенные открытые Popup-ы и не позволять открывать верхние Popup-ы при открытых вложенных.
@MozalovPavel MozalovPavel added bug customization Issues related to library customization big task labels Aug 30, 2021
@MozalovPavel MozalovPavel added this to the 3.0.0 milestone Aug 30, 2021
@lossir
Copy link
Member

lossir commented Sep 3, 2021

Привет. Можешь подготовить пример в какой-нибудь песочнице?
Сейчас мне сложно представить, зачем нужна всплывашка внутри всплывашки. Стоит пригласить проектировщика @dzekh.
Вероятно, вопрос можно решить немного изменив вёрстку макета.

Но если это тултипы, то можно сделать что-то такое - codesandbox.io/s/popup-inside-popup

@lossir lossir added enhancement help wanted question and removed bug customization Issues related to library customization big task labels Sep 3, 2021
@lossir lossir removed this from the 3.0.0 milestone Sep 3, 2021
@MozalovPavel
Copy link
Contributor Author

Привет.

Вот пример в песочнице - https://codesandbox.io/s/popup-inside-popup-wkr6u?file=/src/App.tsx

Есть кейс в проекте, когда у нас в тултип вкладывается хинт точно также как и в примере в песочнице: есть абстрактный компонент, который внутри весь контент обернул в тултип, а в children принимает что угодно, в том числе иможет принять и хинт. В данном случае нам не подходит предложенное решение через ручное управление тултипами.

@lossir
Copy link
Member

lossir commented Sep 20, 2021

Думаю, законным выглядит случай, если среди Хинтов и Тултипов (открывающихся по ховеру) показывался бы только один из них. Но они должны быть в неком едином скоупе, и не влиять на Хинты и Тултипы в других скоупах.

О реализации можно будет подумать если согласуем поведение. Позову @zhzz для обсуждения.

@zhzz
Copy link
Member

zhzz commented Sep 23, 2021

Да, думаю это будет полезно. Еще один пример из будущего это валидация всего контрола и отдельно его составляющих, например, токенов в токен-инпуте, или файлов в файл-аплоадере.

@asukhar asukhar changed the title [Tooltip, Hint и другие Popup] Добавить возможность прерывать показ верхнего Popup при показе внутреннего [Tooltip, Hint и другие Popup] Добавить возможность прерывать показ верхнего Popup при показе внутреннего IF-1024 Feb 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

No branches or pull requests

3 participants