import { useMemo } from 'react'; import { Modifier } from 'react-popper'; const sameWidth = { name: 'sameWidth', enabled: true, phase: 'beforeWrite', requires: ['computeStyles'], fn: ({ state }: { state: any }) => { // eslint-disable-next-line no-param-reassign state.styles.popper.width = `${state.rects.reference.width}px`; }, effect: ({ state }: { state: any }) => { // eslint-disable-next-line no-param-reassign state.elements.popper.style.width = `${state.elements.reference.offsetWidth}px`; }, }; export const usePopperModifiers = ( offsetX = 0, offsetY = 10, justify?: boolean, ): Modifier[] => useMemo( () => [ { name: 'offset', options: { offset: [offsetX, offsetY], }, }, { name: 'preventOverflow', options: { padding: 10, }, }, ...(justify ? [sameWidth] : []), ] as Modifier[], [offsetX, offsetY, justify], );