Реагировать Поппер. Как переместить элемент относительно родителя?
Я пытаюсь переместить Popper, который находится внутри родительского компонента. Как я могу это сделать?
Я пытался использовать свойство смещения в объекте модификаторов. например:
offset: {
offset: 20,
}
Но смещение только перемещает Поппера в одном направлении. Если размещение ={'top' || 'bottom'} => он перемещается вправо и влево, если размещение ={'вправо' || 'left'} => он перемещается сверху и снизу.
const Layer = ({
children,
align,
inner = true,
parent,
portal,
}) => (
<Manager>
<Popper
placement={align}
modifiers={{
inner: {
enabled: inner,
},
}}
referenceElement={parent}
>
{({ ref, style, placement }) => (
<div
ref={ref}
data-placement={placement}
style={style}
>
{console.log(style)}
{children}
</div>
)}
</Popper>
</Manager>
)
1 ответ
Только что разобрались с этим: разместить всплывающую подсказку MaterialUI "поверх" элемента привязки? (Реагировать)
PopperProps={{
popperOptions: {
modifiers: {
flip: { enabled: false },
offset: {
enabled: true,
offset: '20px 20px'
}
}
}
}}
Я решил это так. добавленной topOffset
а также leftOffset
реквизит для поппера ребенка и используется синтаксис распространения. Не думайте, что это самое чистое решение.
const Layer = ({
children,
align,
inner = true,
parent,
portal,
topOffset,
leftOffset,
}) => (
<Manager>
<Popper
placement={align}
modifiers={{
inner: {
enabled: inner,
},
}}
referenceElement={parent}
>
{({ ref, style, placement }) => (
<div
ref={ref}
data-placement={placement}
style={{
...style,
top: style.top + topOffset,
left: style.left + leftOffset,
}}
>
{console.log(style)}
{children}
</div>
)}
</Popper>
</Manager>
)