Решил попробовать сделать свой компонент Tooltip и столкнулся со следующей проблемой - не могу продумать алгоритм позиционирования тултипа. На данный момент его можно позиционировать в 12 позициях (как в Material UI): top/right/bottom/left + для каждой стороны есть start/center/end.
Чтобы проверить нужно ли мне пересчитывать позицию я использую метод getBoundingClientRect, который проверяет выходит ли тултип за пределы окна. Можно, конечно, перебрать через if все возможные варианты, но вдруг здесь предложат идеи получше.
Например, если тултип достаточно широкий и привязан к кнопке в левой части шапки сайта (например, бургер-меню), то слева он будет немного вылезать за край окна, поэтому его нужно прижать слева (задать позицию bottom-start), чтобы он расширялся вправо:
Повторюсь - вопрос в том, как реализовать это с точки зрения алгоритма, а не как конкретно это сделать на реакт, как изменять состояние и все такое - это уже реализовано, важна логика, по которой тултип будет изменяться)