mirror of
https://github.com/muerwre/vault-frontend.git
synced 2025-04-24 12:26:40 +07:00
43 lines
1,020 B
TypeScript
43 lines
1,020 B
TypeScript
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<any>[] =>
|
|
useMemo(
|
|
() =>
|
|
[
|
|
{
|
|
name: 'offset',
|
|
options: {
|
|
offset: [offsetX, offsetY],
|
|
},
|
|
},
|
|
{
|
|
name: 'preventOverflow',
|
|
options: {
|
|
padding: 10,
|
|
},
|
|
},
|
|
...(justify ? [sameWidth] : []),
|
|
] as Modifier<any>[],
|
|
[offsetX, offsetY, justify],
|
|
);
|