Резюме
Я хочу сместить по горизонтали ng-bootstrap
всплывающие окна, которые находятся за пределами экрана.
Stackblitz:
https://stackblitz.com/edit/angular-xt18mj
Фон
Я использую ng-bootstrap
(виджеты Bootstrap 4 для угловых). Мое приложение содержит панель инструментов, которая содержит несколько кнопок. Каждая кнопка представляет собой поповер: нажмите на нее, и под кнопкой отобразится соответствующий контент, как показано ниже.
Снимок экрана: https://i.imgur.com/hW8JhMW.png
Выпуск
Однако левое всплывающее окно находится за пределами экрана. В raw Bootstrap 4 Popper.js заметил бы это и отобразил всплывающее окно справа. Об этой ошибке сообщалось здесь .
Но я не хочу этого поведения, потому что я хочу, чтобы поповер оставался под панелью инструментов.
Я хочу найти способ сместить поповер вправо, удерживая стрелку под кнопкой, вот так:
https://i.imgur.com/u0HqiPS.png
Я обновил CSS всплывающего окна (ngb-popover-window
) следующим образом:
element.style {
top: 54px;
// left: -80px;
left: 0px !important;
}
Это корректно выравнивает поповер с его родителем (который расположен на relative
).
Снимок экрана: https://i.imgur.com/O2WcDrz.png
Тем не менее:
- Стрелка не находится под кнопкой 1 (она остается на 50% ширины)
- Я хочу применить эту операцию, только если всплывающее окно находится за пределами экрана (в реальном приложении это зависит от левого поля панели инструментов, ширина которого составляет 2,5%, поэтому не фиксированное значение px)
- Popper.js динамически стирает значение
left: 0px !important;
, даже если добавлено !important
, и устанавливает его обратно в вычисленное значение.