@fluentui/react-positioning 9.0.0-nightly.d730088d7f.0 → 9.0.0-rc.10
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.json +457 -12
- package/CHANGELOG.md +209 -72
- package/dist/index.d.ts +247 -0
- package/{lib → dist}/tsdoc-metadata.json +0 -0
- package/lib/createArrowStyles.js +87 -0
- package/lib/createArrowStyles.js.map +1 -0
- package/lib/createVirtualElementFromClick.js +19 -15
- package/lib/createVirtualElementFromClick.js.map +1 -1
- package/lib/index.js +4 -4
- package/lib/index.js.map +1 -1
- package/lib/isIntersectingModifier.js +26 -0
- package/lib/isIntersectingModifier.js.map +1 -0
- package/lib/types.js.map +1 -1
- package/lib/usePositioning.js +408 -0
- package/lib/usePositioning.js.map +1 -0
- package/lib/usePositioningMouseTarget.js +40 -0
- package/lib/usePositioningMouseTarget.js.map +1 -0
- package/lib/utils/fromPopperPlacement.js +40 -0
- package/lib/utils/fromPopperPlacement.js.map +1 -0
- package/lib/utils/getBoundary.js +15 -10
- package/lib/utils/getBoundary.js.map +1 -1
- package/lib/utils/getPopperOffset.js +44 -0
- package/lib/utils/getPopperOffset.js.map +1 -0
- package/lib/utils/getReactFiberFromNode.js +39 -35
- package/lib/utils/getReactFiberFromNode.js.map +1 -1
- package/lib/utils/getScrollParent.js +46 -32
- package/lib/utils/getScrollParent.js.map +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/mergeArrowOffset.js +31 -25
- package/lib/utils/mergeArrowOffset.js.map +1 -1
- package/lib/utils/parsePopperPlacement.js +14 -0
- package/lib/utils/parsePopperPlacement.js.map +1 -0
- package/lib/utils/positioningHelper.js +42 -34
- package/lib/utils/positioningHelper.js.map +1 -1
- package/lib/utils/resolvePositioningShorthand.js +58 -20
- package/lib/utils/resolvePositioningShorthand.js.map +1 -1
- package/lib/utils/useCallbackRef.js +35 -29
- package/lib/utils/useCallbackRef.js.map +1 -1
- package/lib-commonjs/createArrowStyles.js +100 -0
- package/lib-commonjs/createArrowStyles.js.map +1 -0
- package/lib-commonjs/createVirtualElementFromClick.js +25 -16
- package/lib-commonjs/createVirtualElementFromClick.js.map +1 -1
- package/lib-commonjs/index.js +62 -10
- package/lib-commonjs/index.js.map +1 -1
- package/lib-commonjs/isIntersectingModifier.js +34 -0
- package/lib-commonjs/isIntersectingModifier.js.map +1 -0
- package/lib-commonjs/types.js +4 -1
- package/lib-commonjs/types.js.map +1 -1
- package/lib-commonjs/usePositioning.js +424 -0
- package/lib-commonjs/usePositioning.js.map +1 -0
- package/lib-commonjs/usePositioningMouseTarget.js +51 -0
- package/lib-commonjs/usePositioningMouseTarget.js.map +1 -0
- package/lib-commonjs/utils/fromPopperPlacement.js +50 -0
- package/lib-commonjs/utils/fromPopperPlacement.js.map +1 -0
- package/lib-commonjs/utils/getBoundary.js +23 -12
- package/lib-commonjs/utils/getBoundary.js.map +1 -1
- package/lib-commonjs/utils/getPopperOffset.js +54 -0
- package/lib-commonjs/utils/getPopperOffset.js.map +1 -0
- package/lib-commonjs/utils/getReactFiberFromNode.js +44 -36
- package/lib-commonjs/utils/getReactFiberFromNode.js.map +1 -1
- package/lib-commonjs/utils/getScrollParent.js +53 -33
- package/lib-commonjs/utils/getScrollParent.js.map +1 -1
- package/lib-commonjs/utils/index.js +15 -3
- package/lib-commonjs/utils/index.js.map +1 -1
- package/lib-commonjs/utils/mergeArrowOffset.js +37 -26
- package/lib-commonjs/utils/mergeArrowOffset.js.map +1 -1
- package/lib-commonjs/utils/parsePopperPlacement.js +23 -0
- package/lib-commonjs/utils/parsePopperPlacement.js.map +1 -0
- package/lib-commonjs/utils/positioningHelper.js +50 -35
- package/lib-commonjs/utils/positioningHelper.js.map +1 -1
- package/lib-commonjs/utils/resolvePositioningShorthand.js +66 -23
- package/lib-commonjs/utils/resolvePositioningShorthand.js.map +1 -1
- package/lib-commonjs/utils/useCallbackRef.js +45 -32
- package/lib-commonjs/utils/useCallbackRef.js.map +1 -1
- package/package.json +17 -14
- package/dist/react-positioning.d.ts +0 -143
- package/lib/createVirtualElementFromClick.d.ts +0 -6
- package/lib/index.d.ts +0 -5
- package/lib/types.d.ts +0 -68
- package/lib/usePopper.d.ts +0 -35
- package/lib/usePopper.js +0 -357
- package/lib/usePopper.js.map +0 -1
- package/lib/usePopperMouseTarget.d.ts +0 -11
- package/lib/usePopperMouseTarget.js +0 -34
- package/lib/usePopperMouseTarget.js.map +0 -1
- package/lib/utils/getBasePlacement.d.ts +0 -8
- package/lib/utils/getBasePlacement.js +0 -10
- package/lib/utils/getBasePlacement.js.map +0 -1
- package/lib/utils/getBoundary.d.ts +0 -6
- package/lib/utils/getReactFiberFromNode.d.ts +0 -109
- package/lib/utils/getScrollParent.d.ts +0 -12
- package/lib/utils/index.d.ts +0 -8
- package/lib/utils/mergeArrowOffset.d.ts +0 -10
- package/lib/utils/positioningHelper.d.ts +0 -7
- package/lib/utils/resolvePositioningShorthand.d.ts +0 -2
- package/lib/utils/useCallbackRef.d.ts +0 -19
- package/lib-commonjs/createVirtualElementFromClick.d.ts +0 -6
- package/lib-commonjs/index.d.ts +0 -5
- package/lib-commonjs/types.d.ts +0 -68
- package/lib-commonjs/usePopper.d.ts +0 -35
- package/lib-commonjs/usePopper.js +0 -361
- package/lib-commonjs/usePopper.js.map +0 -1
- package/lib-commonjs/usePopperMouseTarget.d.ts +0 -11
- package/lib-commonjs/usePopperMouseTarget.js +0 -38
- package/lib-commonjs/usePopperMouseTarget.js.map +0 -1
- package/lib-commonjs/utils/getBasePlacement.d.ts +0 -8
- package/lib-commonjs/utils/getBasePlacement.js +0 -14
- package/lib-commonjs/utils/getBasePlacement.js.map +0 -1
- package/lib-commonjs/utils/getBoundary.d.ts +0 -6
- package/lib-commonjs/utils/getReactFiberFromNode.d.ts +0 -109
- package/lib-commonjs/utils/getScrollParent.d.ts +0 -12
- package/lib-commonjs/utils/index.d.ts +0 -8
- package/lib-commonjs/utils/mergeArrowOffset.d.ts +0 -10
- package/lib-commonjs/utils/positioningHelper.d.ts +0 -7
- package/lib-commonjs/utils/resolvePositioningShorthand.d.ts +0 -2
- package/lib-commonjs/utils/useCallbackRef.d.ts +0 -19
package/lib-commonjs/types.d.ts
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
import * as PopperJs from '@popperjs/core';
|
2
|
-
import * as React from 'react';
|
3
|
-
export declare type OffsetFunctionParam = {
|
4
|
-
popper: PopperJs.Rect;
|
5
|
-
reference: PopperJs.Rect;
|
6
|
-
placement: PopperJs.Placement;
|
7
|
-
};
|
8
|
-
export declare type OffsetFunction = (param: OffsetFunctionParam) => [number | null | undefined, number | null | undefined];
|
9
|
-
export declare type Offset = OffsetFunction | [number | null | undefined, number | null | undefined];
|
10
|
-
export declare type Position = 'above' | 'below' | 'before' | 'after';
|
11
|
-
export declare type Alignment = 'top' | 'bottom' | 'start' | 'end' | 'center';
|
12
|
-
export declare type AutoSize = 'height' | 'height-always' | 'width' | 'width-always' | 'always' | boolean;
|
13
|
-
export declare type Boundary = PopperJs.Boundary | 'scrollParent' | 'window';
|
14
|
-
export declare type PopperRefHandle = {
|
15
|
-
updatePosition: () => void;
|
16
|
-
};
|
17
|
-
export declare type PopperVirtualElement = PopperJs.VirtualElement;
|
18
|
-
export interface PositioningProps {
|
19
|
-
/** Alignment for the component. Only has an effect if used with the @see position option */
|
20
|
-
align?: Alignment;
|
21
|
-
/** The element which will define the boundaries of the popper position for the flip behavior. */
|
22
|
-
flipBoundary?: Boundary;
|
23
|
-
/** The element which will define the boundaries of the popper position for the overflow behavior. */
|
24
|
-
overflowBoundary?: Boundary;
|
25
|
-
/** An imperative handle to Popper methods. */
|
26
|
-
popperRef?: React.Ref<PopperRefHandle>;
|
27
|
-
/**
|
28
|
-
* Position for the component. Position has higher priority than align. If position is vertical ('above' | 'below')
|
29
|
-
* and align is also vertical ('top' | 'bottom') or if both position and align are horizontal ('before' | 'after'
|
30
|
-
* and 'start' | 'end' respectively),
|
31
|
-
* then provided value for 'align' will be ignored and 'center' will be used instead.
|
32
|
-
*/
|
33
|
-
position?: Position;
|
34
|
-
/**
|
35
|
-
* Lets you displace a popper element from its reference element.
|
36
|
-
* This can be useful if you need to apply some margin between them or if you need to fine tune the
|
37
|
-
* position according to some custom logic.
|
38
|
-
*/
|
39
|
-
offset?: Offset;
|
40
|
-
/**
|
41
|
-
* Defines padding between the corner of the popup element and the arrow.
|
42
|
-
* Use to prevent the arrow from overlapping a rounded corner, for example.
|
43
|
-
*/
|
44
|
-
arrowPadding?: number;
|
45
|
-
/**
|
46
|
-
* Applies max-height and max-width on popper to fit it within the available space in viewport.
|
47
|
-
* true enables this for both width and height when overflow happens.
|
48
|
-
* 'always' applies `max-height`/`max-width` regardless of overflow.
|
49
|
-
* 'height' applies `max-height` when overflow happens, and 'width' for `max-width`
|
50
|
-
* `height-always` applies `max-height` regardless of overflow, and 'width-always' for always applying `max-width`
|
51
|
-
*/
|
52
|
-
autoSize?: AutoSize;
|
53
|
-
/**
|
54
|
-
* Manual override for popper target. Useful for scenarios where a component accepts user prop to override target
|
55
|
-
*/
|
56
|
-
target?: HTMLElement | PopperVirtualElement | null;
|
57
|
-
/**
|
58
|
-
* Modifies position and alignment to cover the target
|
59
|
-
*/
|
60
|
-
coverTarget?: boolean;
|
61
|
-
/**
|
62
|
-
* Disables automatic repositioning of the component; it will always be placed according to the values of `align` and
|
63
|
-
* `position` props, regardless of the size of the component, the reference element or the viewport.
|
64
|
-
*/
|
65
|
-
pinned?: boolean;
|
66
|
-
}
|
67
|
-
export declare type PositioningShorthandValue = 'above' | 'above-start' | 'above-end' | 'below' | 'below-start' | 'below-end' | 'before' | 'before-top' | 'before-bottom' | 'after' | 'after-top' | 'after-bottom';
|
68
|
-
export declare type PositioningShorthand = PositioningProps | PositioningShorthandValue;
|
@@ -1,35 +0,0 @@
|
|
1
|
-
import * as PopperJs from '@popperjs/core';
|
2
|
-
import * as React from 'react';
|
3
|
-
import type { PositioningProps } from './types';
|
4
|
-
interface PopperOptions extends PositioningProps {
|
5
|
-
/**
|
6
|
-
* If false, delays Popper's creation.
|
7
|
-
* @default true
|
8
|
-
*/
|
9
|
-
enabled?: boolean;
|
10
|
-
onStateUpdate?: (state: Partial<PopperJs.State>) => void;
|
11
|
-
/**
|
12
|
-
* Enables the Popper box to position itself in 'fixed' mode (default value is position: 'absolute')
|
13
|
-
* @default false
|
14
|
-
*/
|
15
|
-
positionFixed?: boolean;
|
16
|
-
/**
|
17
|
-
* When the reference element or the viewport is outside viewport allows a popper element to be fully in viewport.
|
18
|
-
* "all" enables this behavior for all axis.
|
19
|
-
*/
|
20
|
-
unstable_disableTether?: boolean | 'all';
|
21
|
-
}
|
22
|
-
/**
|
23
|
-
* Exposes Popper positioning API via React hook. Contains few important differences between an official "react-popper"
|
24
|
-
* package:
|
25
|
-
* - style attributes are applied directly on DOM to avoid re-renders
|
26
|
-
* - refs changes and resolution is handled properly without re-renders
|
27
|
-
* - contains a specific to React fix related to initial positioning when containers have components with managed focus
|
28
|
-
* to avoid focus jumps
|
29
|
-
*/
|
30
|
-
export declare function usePopper(options?: PopperOptions): {
|
31
|
-
targetRef: React.MutableRefObject<any>;
|
32
|
-
containerRef: React.MutableRefObject<any>;
|
33
|
-
arrowRef: React.MutableRefObject<any>;
|
34
|
-
};
|
35
|
-
export {};
|
@@ -1,361 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.usePopper = void 0;
|
4
|
-
var react_utilities_1 = require("@fluentui/react-utilities");
|
5
|
-
var react_shared_contexts_1 = require("@fluentui/react-shared-contexts");
|
6
|
-
var index_1 = require("./utils/index");
|
7
|
-
var PopperJs = require("@popperjs/core");
|
8
|
-
var React = require("react");
|
9
|
-
//
|
10
|
-
// Dev utils to detect if nodes have "autoFocus" props.
|
11
|
-
//
|
12
|
-
/**
|
13
|
-
* Detects if a passed HTML node has "autoFocus" prop on a React's fiber. Is needed as React handles autofocus behavior
|
14
|
-
* in React DOM and will not pass "autoFocus" to an actual HTML.
|
15
|
-
*/
|
16
|
-
function hasAutofocusProp(node) {
|
17
|
-
var _a;
|
18
|
-
// https://github.com/facebook/react/blob/848bb2426e44606e0a55dfe44c7b3ece33772485/packages/react-dom/src/client/ReactDOMHostConfig.js#L157-L166
|
19
|
-
var isAutoFocusableElement = node.nodeName === 'BUTTON' ||
|
20
|
-
node.nodeName === 'INPUT' ||
|
21
|
-
node.nodeName === 'SELECT' ||
|
22
|
-
node.nodeName === 'TEXTAREA';
|
23
|
-
if (isAutoFocusableElement) {
|
24
|
-
return !!((_a = index_1.getReactFiberFromNode(node)) === null || _a === void 0 ? void 0 : _a.pendingProps.autoFocus);
|
25
|
-
}
|
26
|
-
return false;
|
27
|
-
}
|
28
|
-
function hasAutofocusFilter(node) {
|
29
|
-
return hasAutofocusProp(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
30
|
-
}
|
31
|
-
/**
|
32
|
-
* Provides a callback to resolve Popper options, it's stable and should be used as a dependency to trigger updates
|
33
|
-
* of Popper options.
|
34
|
-
*
|
35
|
-
* A callback is used there intentionally as some of Popper.js modifiers require DOM nodes (targer, container, arrow)
|
36
|
-
* that can't be resolved properly during an initial rendering.
|
37
|
-
*/
|
38
|
-
function usePopperOptions(options, popperOriginalPositionRef) {
|
39
|
-
var arrowPadding = options.arrowPadding, autoSize = options.autoSize, coverTarget = options.coverTarget, flipBoundary = options.flipBoundary, offset = options.offset, onStateUpdate = options.onStateUpdate, overflowBoundary = options.overflowBoundary,
|
40
|
-
// eslint-disable-next-line @typescript-eslint/naming-convention
|
41
|
-
unstable_disableTether = options.unstable_disableTether, pinned = options.pinned;
|
42
|
-
var isRtl = react_shared_contexts_1.useFluent().dir === 'rtl';
|
43
|
-
var placement = index_1.getPlacement(options.align, options.position, isRtl);
|
44
|
-
var strategy = options.positionFixed ? 'fixed' : 'absolute';
|
45
|
-
var handleStateUpdate = react_utilities_1.useEventCallback(function (_a) {
|
46
|
-
var state = _a.state;
|
47
|
-
if (onStateUpdate) {
|
48
|
-
onStateUpdate(state);
|
49
|
-
}
|
50
|
-
});
|
51
|
-
var offsetModifier = React.useMemo(function () {
|
52
|
-
return offset
|
53
|
-
? {
|
54
|
-
name: 'offset',
|
55
|
-
options: { offset: isRtl ? index_1.applyRtlToOffset(offset) : offset },
|
56
|
-
}
|
57
|
-
: null;
|
58
|
-
}, [offset, isRtl]);
|
59
|
-
return React.useCallback(function (target, container, arrow) {
|
60
|
-
var _a;
|
61
|
-
var scrollParentElement = index_1.getScrollParent(container);
|
62
|
-
var hasScrollableElement = scrollParentElement
|
63
|
-
? scrollParentElement !== ((_a = scrollParentElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.body)
|
64
|
-
: false;
|
65
|
-
var modifiers = [
|
66
|
-
/**
|
67
|
-
* We are setting the position to `fixed` in the first effect to prevent scroll jumps in case of the content
|
68
|
-
* with managed focus. Modifier sets the position to `fixed` before all other modifier effects. Another part of
|
69
|
-
* a patch modifies ".forceUpdate()" directly after a Popper will be created.
|
70
|
-
*/
|
71
|
-
{
|
72
|
-
name: 'positionStyleFix',
|
73
|
-
enabled: true,
|
74
|
-
phase: 'afterWrite',
|
75
|
-
effect: function (_a) {
|
76
|
-
var state = _a.state, instance = _a.instance;
|
77
|
-
// ".isFirstRun" is a part of our patch, on a first evaluation it will "undefined"
|
78
|
-
// should be disabled for subsequent runs as it breaks positioning for them
|
79
|
-
if (instance.isFirstRun !== false) {
|
80
|
-
popperOriginalPositionRef.current = state.elements.popper.style.position;
|
81
|
-
state.elements.popper.style.position = 'fixed';
|
82
|
-
}
|
83
|
-
return function () { return undefined; };
|
84
|
-
},
|
85
|
-
requires: [],
|
86
|
-
},
|
87
|
-
{ name: 'flip', options: { flipVariations: true } },
|
88
|
-
/**
|
89
|
-
* pinned disables the flip modifier by setting flip.enabled to false; this
|
90
|
-
* disables automatic repositioning of the popper box; it will always be placed according to
|
91
|
-
* the values of `align` and `position` props, regardless of the size of the component, the
|
92
|
-
* reference element or the viewport.
|
93
|
-
*/
|
94
|
-
pinned && { name: 'flip', enabled: false },
|
95
|
-
/**
|
96
|
-
* When the popper box is placed in the context of a scrollable element, we need to set
|
97
|
-
* preventOverflow.escapeWithReference to true and flip.boundariesElement to 'scrollParent'
|
98
|
-
* (default is 'viewport') so that the popper box will stick with the targetRef when we
|
99
|
-
* scroll targetRef out of the viewport.
|
100
|
-
*/
|
101
|
-
hasScrollableElement && { name: 'flip', options: { boundary: 'clippingParents' } },
|
102
|
-
hasScrollableElement && { name: 'preventOverflow', options: { boundary: 'clippingParents' } },
|
103
|
-
offsetModifier,
|
104
|
-
/**
|
105
|
-
* This modifier is necessary to retain behaviour from popper v1 where untethered poppers are allowed by
|
106
|
-
* default. i.e. popper is still rendered fully in the viewport even if anchor element is no longer in the
|
107
|
-
* viewport.
|
108
|
-
*/
|
109
|
-
unstable_disableTether && {
|
110
|
-
name: 'preventOverflow',
|
111
|
-
options: { altAxis: unstable_disableTether === 'all', tether: false },
|
112
|
-
},
|
113
|
-
flipBoundary && {
|
114
|
-
name: 'flip',
|
115
|
-
options: {
|
116
|
-
altBoundary: true,
|
117
|
-
boundary: index_1.getBoundary(container, flipBoundary),
|
118
|
-
},
|
119
|
-
},
|
120
|
-
overflowBoundary && {
|
121
|
-
name: 'preventOverflow',
|
122
|
-
options: {
|
123
|
-
altBoundary: true,
|
124
|
-
boundary: index_1.getBoundary(container, overflowBoundary),
|
125
|
-
},
|
126
|
-
},
|
127
|
-
{
|
128
|
-
name: 'onUpdate',
|
129
|
-
enabled: true,
|
130
|
-
phase: 'afterWrite',
|
131
|
-
fn: handleStateUpdate,
|
132
|
-
},
|
133
|
-
{
|
134
|
-
// Similar code as popper-maxsize-modifier: https://github.com/atomiks/popper.js/blob/master/src/modifiers/maxSize.js
|
135
|
-
// popper-maxsize-modifier only calculates the max sizes.
|
136
|
-
// This modifier can apply max sizes always, or apply the max sizes only when overflow is detected
|
137
|
-
name: 'applyMaxSize',
|
138
|
-
enabled: !!autoSize,
|
139
|
-
phase: 'beforeWrite',
|
140
|
-
requiresIfExists: ['offset', 'preventOverflow', 'flip'],
|
141
|
-
options: {
|
142
|
-
altBoundary: true,
|
143
|
-
boundary: index_1.getBoundary(container, overflowBoundary),
|
144
|
-
},
|
145
|
-
fn: function (_a) {
|
146
|
-
var state = _a.state, modifierOptions = _a.options;
|
147
|
-
var overflow = PopperJs.detectOverflow(state, modifierOptions);
|
148
|
-
var _b = state.modifiersData.preventOverflow || { x: 0, y: 0 }, x = _b.x, y = _b.y;
|
149
|
-
var _c = state.rects.popper, width = _c.width, height = _c.height;
|
150
|
-
var basePlacement = index_1.getBasePlacement(state.placement);
|
151
|
-
var widthProp = basePlacement === 'left' ? 'left' : 'right';
|
152
|
-
var heightProp = basePlacement === 'top' ? 'top' : 'bottom';
|
153
|
-
var applyMaxWidth = autoSize === 'always' ||
|
154
|
-
autoSize === 'width-always' ||
|
155
|
-
(overflow[widthProp] > 0 && (autoSize === true || autoSize === 'width'));
|
156
|
-
var applyMaxHeight = autoSize === 'always' ||
|
157
|
-
autoSize === 'height-always' ||
|
158
|
-
(overflow[heightProp] > 0 && (autoSize === true || autoSize === 'height'));
|
159
|
-
if (applyMaxWidth) {
|
160
|
-
state.styles.popper.maxWidth = width - overflow[widthProp] - x + "px";
|
161
|
-
}
|
162
|
-
if (applyMaxHeight) {
|
163
|
-
state.styles.popper.maxHeight = height - overflow[heightProp] - y + "px";
|
164
|
-
}
|
165
|
-
},
|
166
|
-
},
|
167
|
-
/**
|
168
|
-
* This modifier is necessary in order to render the pointer. Refs are resolved in effects, so it can't be
|
169
|
-
* placed under computed modifiers. Deep merge is not required as this modifier has only these properties.
|
170
|
-
*/
|
171
|
-
{
|
172
|
-
name: 'arrow',
|
173
|
-
enabled: !!arrow,
|
174
|
-
options: { element: arrow, padding: arrowPadding },
|
175
|
-
},
|
176
|
-
/**
|
177
|
-
* Modifies popper offsets to cover the reference rect, but still keep edge alignment
|
178
|
-
*/
|
179
|
-
{
|
180
|
-
name: 'coverTarget',
|
181
|
-
enabled: !!coverTarget,
|
182
|
-
phase: 'main',
|
183
|
-
requiresIfExists: ['offset', 'preventOverflow', 'flip'],
|
184
|
-
fn: function (_a) {
|
185
|
-
var state = _a.state;
|
186
|
-
var basePlacement = index_1.getBasePlacement(state.placement);
|
187
|
-
switch (basePlacement) {
|
188
|
-
case 'bottom':
|
189
|
-
state.modifiersData.popperOffsets.y -= state.rects.reference.height;
|
190
|
-
break;
|
191
|
-
case 'top':
|
192
|
-
state.modifiersData.popperOffsets.y += state.rects.reference.height;
|
193
|
-
break;
|
194
|
-
case 'left':
|
195
|
-
state.modifiersData.popperOffsets.x += state.rects.reference.width;
|
196
|
-
break;
|
197
|
-
case 'right':
|
198
|
-
state.modifiersData.popperOffsets.x -= state.rects.reference.width;
|
199
|
-
break;
|
200
|
-
}
|
201
|
-
},
|
202
|
-
},
|
203
|
-
].filter(Boolean); // filter boolean conditional spreading values
|
204
|
-
var popperOptions = {
|
205
|
-
modifiers: modifiers,
|
206
|
-
placement: placement,
|
207
|
-
strategy: strategy,
|
208
|
-
onFirstUpdate: function (state) { return handleStateUpdate({ state: state }); },
|
209
|
-
};
|
210
|
-
return popperOptions;
|
211
|
-
}, [
|
212
|
-
arrowPadding,
|
213
|
-
autoSize,
|
214
|
-
coverTarget,
|
215
|
-
flipBoundary,
|
216
|
-
offsetModifier,
|
217
|
-
overflowBoundary,
|
218
|
-
placement,
|
219
|
-
strategy,
|
220
|
-
unstable_disableTether,
|
221
|
-
pinned,
|
222
|
-
// These can be skipped from deps as they will not ever change
|
223
|
-
handleStateUpdate,
|
224
|
-
popperOriginalPositionRef,
|
225
|
-
]);
|
226
|
-
}
|
227
|
-
/**
|
228
|
-
* Exposes Popper positioning API via React hook. Contains few important differences between an official "react-popper"
|
229
|
-
* package:
|
230
|
-
* - style attributes are applied directly on DOM to avoid re-renders
|
231
|
-
* - refs changes and resolution is handled properly without re-renders
|
232
|
-
* - contains a specific to React fix related to initial positioning when containers have components with managed focus
|
233
|
-
* to avoid focus jumps
|
234
|
-
*/
|
235
|
-
function usePopper(options) {
|
236
|
-
if (options === void 0) { options = {}; }
|
237
|
-
var _a = options.enabled, enabled = _a === void 0 ? true : _a;
|
238
|
-
var isFirstMount = react_utilities_1.useFirstMount();
|
239
|
-
var popperOriginalPositionRef = React.useRef('absolute');
|
240
|
-
var resolvePopperOptions = usePopperOptions(options, popperOriginalPositionRef);
|
241
|
-
var popperInstanceRef = React.useRef(null);
|
242
|
-
var handlePopperUpdate = react_utilities_1.useEventCallback(function () {
|
243
|
-
var _a;
|
244
|
-
(_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();
|
245
|
-
popperInstanceRef.current = null;
|
246
|
-
var _b = options.target, target = _b === void 0 ? targetRef.current : _b;
|
247
|
-
var popperInstance = null;
|
248
|
-
if (react_utilities_1.canUseDOM() && enabled) {
|
249
|
-
if (target && containerRef.current) {
|
250
|
-
popperInstance = PopperJs.createPopper(target, containerRef.current, resolvePopperOptions(target, containerRef.current, arrowRef.current));
|
251
|
-
}
|
252
|
-
}
|
253
|
-
if (popperInstance) {
|
254
|
-
/**
|
255
|
-
* The patch updates `.forceUpdate()` Popper function which restores the original position before the first
|
256
|
-
* forceUpdate() call. See also "positionStyleFix" modifier in usePopperOptions().
|
257
|
-
*/
|
258
|
-
var originalForceUpdate_1 = popperInstance.forceUpdate;
|
259
|
-
popperInstance.isFirstRun = true;
|
260
|
-
popperInstance.forceUpdate = function () {
|
261
|
-
if (popperInstance === null || popperInstance === void 0 ? void 0 : popperInstance.isFirstRun) {
|
262
|
-
popperInstance.state.elements.popper.style.position = popperOriginalPositionRef.current;
|
263
|
-
popperInstance.isFirstRun = false;
|
264
|
-
}
|
265
|
-
originalForceUpdate_1();
|
266
|
-
};
|
267
|
-
}
|
268
|
-
popperInstanceRef.current = popperInstance;
|
269
|
-
});
|
270
|
-
// Refs are managed by useCallbackRef() to handle ref updates scenarios.
|
271
|
-
//
|
272
|
-
// The first scenario are updates for a targetRef, we can handle it properly only via callback refs, but it causes
|
273
|
-
// re-renders (we would like to avoid them).
|
274
|
-
//
|
275
|
-
// The second problem is related to refs resolution on React's layer: refs are resolved in the same order as effects
|
276
|
-
// that causes an issue when you have a container inside a target, for example: a menu in ChatMessage.
|
277
|
-
//
|
278
|
-
// function ChatMessage(props) {
|
279
|
-
// <div className="message" ref={targetRef}> // 3) ref will be resolved only now, but it's too late already
|
280
|
-
// <Popper target={targetRef}> // 2) create a popper instance
|
281
|
-
// <div className="menu" /> // 1) capture ref from this element
|
282
|
-
// </Popper>
|
283
|
-
// </div>
|
284
|
-
// }
|
285
|
-
//
|
286
|
-
// Check a demo on CodeSandbox: https://codesandbox.io/s/popper-refs-emy60.
|
287
|
-
//
|
288
|
-
// This again can be solved with callback refs. It's not a huge issue as with hooks we are moving popper's creation
|
289
|
-
// to ChatMessage itself, however, without `useCallback()` refs it's still a Pandora box.
|
290
|
-
var targetRef = index_1.useCallbackRef(null, handlePopperUpdate, true);
|
291
|
-
var containerRef = index_1.useCallbackRef(null, handlePopperUpdate, true);
|
292
|
-
var arrowRef = index_1.useCallbackRef(null, handlePopperUpdate, true);
|
293
|
-
React.useImperativeHandle(options.popperRef, function () { return ({
|
294
|
-
updatePosition: function () {
|
295
|
-
var _a;
|
296
|
-
(_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.update();
|
297
|
-
},
|
298
|
-
}); }, []);
|
299
|
-
react_utilities_1.useIsomorphicLayoutEffect(function () {
|
300
|
-
handlePopperUpdate();
|
301
|
-
return function () {
|
302
|
-
var _a;
|
303
|
-
(_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();
|
304
|
-
popperInstanceRef.current = null;
|
305
|
-
};
|
306
|
-
}, [handlePopperUpdate, options.enabled, options.target]);
|
307
|
-
react_utilities_1.useIsomorphicLayoutEffect(function () {
|
308
|
-
var _a;
|
309
|
-
if (!isFirstMount) {
|
310
|
-
(_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setOptions(resolvePopperOptions(options.target || targetRef.current, containerRef.current, arrowRef.current));
|
311
|
-
}
|
312
|
-
},
|
313
|
-
// Missing deps:
|
314
|
-
// options.target - The useIsomorphicLayoutEffect before this will create a new popper instance if target changes
|
315
|
-
// isFirstMount - Should never change after mount
|
316
|
-
// arrowRef, containerRef, targetRef - Stable between renders
|
317
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
318
|
-
[resolvePopperOptions]);
|
319
|
-
if (process.env.NODE_ENV !== 'production') {
|
320
|
-
// This checked should run only in development mode
|
321
|
-
// eslint-disable-next-line react-hooks/rules-of-hooks
|
322
|
-
React.useEffect(function () {
|
323
|
-
var _a;
|
324
|
-
if (containerRef.current) {
|
325
|
-
var contentNode = containerRef.current;
|
326
|
-
var treeWalker = (_a = contentNode.ownerDocument) === null || _a === void 0 ? void 0 : _a.createTreeWalker(contentNode, NodeFilter.SHOW_ELEMENT, {
|
327
|
-
acceptNode: hasAutofocusFilter,
|
328
|
-
});
|
329
|
-
while (treeWalker === null || treeWalker === void 0 ? void 0 : treeWalker.nextNode()) {
|
330
|
-
var node = treeWalker.currentNode;
|
331
|
-
// eslint-disable-next-line no-console
|
332
|
-
console.warn('<Popper>:', node);
|
333
|
-
// eslint-disable-next-line no-console
|
334
|
-
console.warn([
|
335
|
-
'<Popper>: ^ this node contains "autoFocus" prop on a React element. This can break the initial',
|
336
|
-
'positioning of an element and cause a window jump effect. This issue occurs because React polyfills',
|
337
|
-
'"autoFocus" behavior to solve inconsistencies between different browsers:',
|
338
|
-
'https://github.com/facebook/react/issues/11851#issuecomment-351787078',
|
339
|
-
'\n',
|
340
|
-
'However, ".focus()" in this case occurs before any other React effects will be executed',
|
341
|
-
'(React.useEffect(), componentDidMount(), etc.) and we can not prevent this behavior. If you really',
|
342
|
-
'want to use "autoFocus" please add "position: fixed" to styles of the element that is wrapped by',
|
343
|
-
'"Popper".',
|
344
|
-
"In general, it's not recommended to use \"autoFocus\" as it may break accessibility aspects:",
|
345
|
-
'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md',
|
346
|
-
'\n',
|
347
|
-
'We suggest to use the "trapFocus" prop on Fluent components or a catch "ref" and then use',
|
348
|
-
'"ref.current.focus" in React.useEffect():',
|
349
|
-
'https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element',
|
350
|
-
].join(' '));
|
351
|
-
}
|
352
|
-
}
|
353
|
-
// We run this check once, no need to add deps here
|
354
|
-
// TODO: Should be rework to handle options.enabled and contentRef updates
|
355
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
356
|
-
}, []);
|
357
|
-
}
|
358
|
-
return { targetRef: targetRef, containerRef: containerRef, arrowRef: arrowRef };
|
359
|
-
}
|
360
|
-
exports.usePopper = usePopper;
|
361
|
-
//# sourceMappingURL=usePopper.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"usePopper.js","sourceRoot":"","sources":["../src/usePopper.ts"],"names":[],"mappings":"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"}
|
@@ -1,11 +0,0 @@
|
|
1
|
-
import * as React from 'react';
|
2
|
-
import * as PopperJs from '@popperjs/core';
|
3
|
-
/**
|
4
|
-
* A state hook that manages a popper virtual element from mouseevents.
|
5
|
-
* Useful for scenarios where a component needs to be positioned by mouse click (e.g. contextmenu)
|
6
|
-
* React synthetic events are not persisted by this hook
|
7
|
-
*
|
8
|
-
* @param initialState - initializes a user provided state similare to useState
|
9
|
-
* @returns state and dispatcher for a Popper virtual element that uses native/synthetic mouse events
|
10
|
-
*/
|
11
|
-
export declare const usePopperMouseTarget: (initialState?: PopperJs.VirtualElement | (() => PopperJs.VirtualElement) | undefined) => readonly [PopperJs.VirtualElement | undefined, (event: React.MouseEvent | MouseEvent | undefined | null) => void];
|
@@ -1,38 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.usePopperMouseTarget = void 0;
|
4
|
-
var React = require("react");
|
5
|
-
var createVirtualElementFromClick_1 = require("./createVirtualElementFromClick");
|
6
|
-
/**
|
7
|
-
* A state hook that manages a popper virtual element from mouseevents.
|
8
|
-
* Useful for scenarios where a component needs to be positioned by mouse click (e.g. contextmenu)
|
9
|
-
* React synthetic events are not persisted by this hook
|
10
|
-
*
|
11
|
-
* @param initialState - initializes a user provided state similare to useState
|
12
|
-
* @returns state and dispatcher for a Popper virtual element that uses native/synthetic mouse events
|
13
|
-
*/
|
14
|
-
var usePopperMouseTarget = function (initialState) {
|
15
|
-
var _a = React.useState(initialState), virtualElement = _a[0], setVirtualElement = _a[1];
|
16
|
-
var setVirtualMouseTarget = function (event) {
|
17
|
-
if (event === undefined || event === null) {
|
18
|
-
setVirtualElement(undefined);
|
19
|
-
return;
|
20
|
-
}
|
21
|
-
var mouseevent;
|
22
|
-
if (!(event instanceof MouseEvent)) {
|
23
|
-
mouseevent = event.nativeEvent;
|
24
|
-
}
|
25
|
-
else {
|
26
|
-
mouseevent = event;
|
27
|
-
}
|
28
|
-
if (!(mouseevent instanceof MouseEvent) && process.env.NODE_ENV !== 'production') {
|
29
|
-
// eslint-disable-next-line no-console
|
30
|
-
console.error('usePopperMouseTarget should only be used with MouseEvent');
|
31
|
-
}
|
32
|
-
var contextTarget = createVirtualElementFromClick_1.createVirtualElementFromClick(mouseevent);
|
33
|
-
setVirtualElement(contextTarget);
|
34
|
-
};
|
35
|
-
return [virtualElement, setVirtualMouseTarget];
|
36
|
-
};
|
37
|
-
exports.usePopperMouseTarget = usePopperMouseTarget;
|
38
|
-
//# sourceMappingURL=usePopperMouseTarget.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"usePopperMouseTarget.js","sourceRoot":"","sources":["../src/usePopperMouseTarget.ts"],"names":[],"mappings":";;;AAAA,6BAA+B;AAC/B,iFAAgF;AAGhF;;;;;;;GAOG;AACI,IAAM,oBAAoB,GAAG,UAAC,YAAwE;IACrG,IAAA,KAAsC,KAAK,CAAC,QAAQ,CAAsC,YAAY,CAAC,EAAtG,cAAc,QAAA,EAAE,iBAAiB,QAAqE,CAAC;IAE9G,IAAM,qBAAqB,GAAG,UAAC,KAAuD;QACpF,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;YACzC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO;SACR;QAED,IAAI,UAAsB,CAAC;QAC3B,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC,EAAE;YAClC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;SAChC;aAAM;YACL,UAAU,GAAG,KAAK,CAAC;SACpB;QAED,IAAI,CAAC,CAAC,UAAU,YAAY,UAAU,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,EAAE;YAChF,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC3E;QAED,IAAM,aAAa,GAAG,6DAA6B,CAAC,UAAU,CAAC,CAAC;QAChE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAU,CAAC;AAC1D,CAAC,CAAC;AA1BW,QAAA,oBAAoB,wBA0B/B"}
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import * as PopperJs from '@popperjs/core';
|
2
|
-
/**
|
3
|
-
* Returns the base placement value
|
4
|
-
* @param placement - the popper placement (i.e. bottom-start)
|
5
|
-
*
|
6
|
-
* @returns bottom-start -> bottom
|
7
|
-
*/
|
8
|
-
export declare function getBasePlacement(placement: PopperJs.Placement): PopperJs.BasePlacement;
|
@@ -1,14 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getBasePlacement = void 0;
|
4
|
-
/**
|
5
|
-
* Returns the base placement value
|
6
|
-
* @param placement - the popper placement (i.e. bottom-start)
|
7
|
-
*
|
8
|
-
* @returns bottom-start -> bottom
|
9
|
-
*/
|
10
|
-
function getBasePlacement(placement) {
|
11
|
-
return placement.split('-')[0];
|
12
|
-
}
|
13
|
-
exports.getBasePlacement = getBasePlacement;
|
14
|
-
//# sourceMappingURL=getBasePlacement.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"getBasePlacement.js","sourceRoot":"","sources":["../../src/utils/getBasePlacement.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,SAA6B;IAC5D,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAA2B,CAAC;AAC3D,CAAC;AAFD,4CAEC"}
|
@@ -1,6 +0,0 @@
|
|
1
|
-
import * as PopperJs from '@popperjs/core';
|
2
|
-
import type { Boundary } from '../types';
|
3
|
-
/**
|
4
|
-
* Allows to mimic a behavior from V1 of Popper and accept `window` and `scrollParent` as strings.
|
5
|
-
*/
|
6
|
-
export declare function getBoundary(element: HTMLElement | null, boundary?: Boundary): PopperJs.Boundary | undefined;
|