27 lines
855 B
Text
27 lines
855 B
Text
|
// @flow
|
||
|
import type { ModifierArguments, Modifier } from '../types';
|
||
|
import computeOffsets from '../utils/computeOffsets';
|
||
|
|
||
|
function popperOffsets({ state, name }: ModifierArguments<{||}>) {
|
||
|
// Offsets are the actual position the popper needs to have to be
|
||
|
// properly positioned near its reference element
|
||
|
// This is the most basic placement, and will be adjusted by
|
||
|
// the modifiers in the next step
|
||
|
state.modifiersData[name] = computeOffsets({
|
||
|
reference: state.rects.reference,
|
||
|
element: state.rects.popper,
|
||
|
strategy: 'absolute',
|
||
|
placement: state.placement,
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// eslint-disable-next-line import/no-unused-modules
|
||
|
export type PopperOffsetsModifier = Modifier<'popperOffsets', {||}>;
|
||
|
export default ({
|
||
|
name: 'popperOffsets',
|
||
|
enabled: true,
|
||
|
phase: 'read',
|
||
|
fn: popperOffsets,
|
||
|
data: {},
|
||
|
}: PopperOffsetsModifier);
|