@fluentui/react-positioning 9.0.0-nightly.f81b28ceb3.1 → 9.0.0-rc.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (117) hide show
  1. package/CHANGELOG.json +494 -10
  2. package/CHANGELOG.md +221 -71
  3. package/dist/index.d.ts +247 -0
  4. package/{lib → dist}/tsdoc-metadata.json +0 -0
  5. package/lib/createArrowStyles.js +87 -0
  6. package/lib/createArrowStyles.js.map +1 -0
  7. package/lib/createVirtualElementFromClick.js +19 -15
  8. package/lib/createVirtualElementFromClick.js.map +1 -1
  9. package/lib/index.js +4 -4
  10. package/lib/index.js.map +1 -1
  11. package/lib/isIntersectingModifier.js +26 -0
  12. package/lib/isIntersectingModifier.js.map +1 -0
  13. package/lib/types.js.map +1 -1
  14. package/lib/usePositioning.js +408 -0
  15. package/lib/usePositioning.js.map +1 -0
  16. package/lib/usePositioningMouseTarget.js +40 -0
  17. package/lib/usePositioningMouseTarget.js.map +1 -0
  18. package/lib/utils/fromPopperPlacement.js +40 -0
  19. package/lib/utils/fromPopperPlacement.js.map +1 -0
  20. package/lib/utils/getBoundary.js +15 -10
  21. package/lib/utils/getBoundary.js.map +1 -1
  22. package/lib/utils/getPopperOffset.js +44 -0
  23. package/lib/utils/getPopperOffset.js.map +1 -0
  24. package/lib/utils/getReactFiberFromNode.js +39 -35
  25. package/lib/utils/getReactFiberFromNode.js.map +1 -1
  26. package/lib/utils/getScrollParent.js +46 -32
  27. package/lib/utils/getScrollParent.js.map +1 -1
  28. package/lib/utils/index.js +1 -1
  29. package/lib/utils/index.js.map +1 -1
  30. package/lib/utils/mergeArrowOffset.js +31 -25
  31. package/lib/utils/mergeArrowOffset.js.map +1 -1
  32. package/lib/utils/parsePopperPlacement.js +14 -0
  33. package/lib/utils/parsePopperPlacement.js.map +1 -0
  34. package/lib/utils/positioningHelper.js +42 -34
  35. package/lib/utils/positioningHelper.js.map +1 -1
  36. package/lib/utils/resolvePositioningShorthand.js +58 -20
  37. package/lib/utils/resolvePositioningShorthand.js.map +1 -1
  38. package/lib/utils/useCallbackRef.js +35 -29
  39. package/lib/utils/useCallbackRef.js.map +1 -1
  40. package/lib-commonjs/createArrowStyles.js +100 -0
  41. package/lib-commonjs/createArrowStyles.js.map +1 -0
  42. package/lib-commonjs/createVirtualElementFromClick.js +25 -16
  43. package/lib-commonjs/createVirtualElementFromClick.js.map +1 -1
  44. package/lib-commonjs/index.js +62 -10
  45. package/lib-commonjs/index.js.map +1 -1
  46. package/lib-commonjs/isIntersectingModifier.js +34 -0
  47. package/lib-commonjs/isIntersectingModifier.js.map +1 -0
  48. package/lib-commonjs/types.js +4 -1
  49. package/lib-commonjs/types.js.map +1 -1
  50. package/lib-commonjs/usePositioning.js +424 -0
  51. package/lib-commonjs/usePositioning.js.map +1 -0
  52. package/lib-commonjs/usePositioningMouseTarget.js +51 -0
  53. package/lib-commonjs/usePositioningMouseTarget.js.map +1 -0
  54. package/lib-commonjs/utils/fromPopperPlacement.js +50 -0
  55. package/lib-commonjs/utils/fromPopperPlacement.js.map +1 -0
  56. package/lib-commonjs/utils/getBoundary.js +23 -12
  57. package/lib-commonjs/utils/getBoundary.js.map +1 -1
  58. package/lib-commonjs/utils/getPopperOffset.js +54 -0
  59. package/lib-commonjs/utils/getPopperOffset.js.map +1 -0
  60. package/lib-commonjs/utils/getReactFiberFromNode.js +44 -36
  61. package/lib-commonjs/utils/getReactFiberFromNode.js.map +1 -1
  62. package/lib-commonjs/utils/getScrollParent.js +53 -33
  63. package/lib-commonjs/utils/getScrollParent.js.map +1 -1
  64. package/lib-commonjs/utils/index.js +15 -3
  65. package/lib-commonjs/utils/index.js.map +1 -1
  66. package/lib-commonjs/utils/mergeArrowOffset.js +37 -26
  67. package/lib-commonjs/utils/mergeArrowOffset.js.map +1 -1
  68. package/lib-commonjs/utils/parsePopperPlacement.js +23 -0
  69. package/lib-commonjs/utils/parsePopperPlacement.js.map +1 -0
  70. package/lib-commonjs/utils/positioningHelper.js +50 -35
  71. package/lib-commonjs/utils/positioningHelper.js.map +1 -1
  72. package/lib-commonjs/utils/resolvePositioningShorthand.js +66 -23
  73. package/lib-commonjs/utils/resolvePositioningShorthand.js.map +1 -1
  74. package/lib-commonjs/utils/useCallbackRef.js +45 -32
  75. package/lib-commonjs/utils/useCallbackRef.js.map +1 -1
  76. package/package.json +17 -14
  77. package/dist/react-positioning.d.ts +0 -143
  78. package/lib/createVirtualElementFromClick.d.ts +0 -6
  79. package/lib/index.d.ts +0 -5
  80. package/lib/types.d.ts +0 -68
  81. package/lib/usePopper.d.ts +0 -35
  82. package/lib/usePopper.js +0 -357
  83. package/lib/usePopper.js.map +0 -1
  84. package/lib/usePopperMouseTarget.d.ts +0 -11
  85. package/lib/usePopperMouseTarget.js +0 -34
  86. package/lib/usePopperMouseTarget.js.map +0 -1
  87. package/lib/utils/getBasePlacement.d.ts +0 -8
  88. package/lib/utils/getBasePlacement.js +0 -10
  89. package/lib/utils/getBasePlacement.js.map +0 -1
  90. package/lib/utils/getBoundary.d.ts +0 -6
  91. package/lib/utils/getReactFiberFromNode.d.ts +0 -109
  92. package/lib/utils/getScrollParent.d.ts +0 -12
  93. package/lib/utils/index.d.ts +0 -8
  94. package/lib/utils/mergeArrowOffset.d.ts +0 -10
  95. package/lib/utils/positioningHelper.d.ts +0 -7
  96. package/lib/utils/resolvePositioningShorthand.d.ts +0 -2
  97. package/lib/utils/useCallbackRef.d.ts +0 -19
  98. package/lib-commonjs/createVirtualElementFromClick.d.ts +0 -6
  99. package/lib-commonjs/index.d.ts +0 -5
  100. package/lib-commonjs/types.d.ts +0 -68
  101. package/lib-commonjs/usePopper.d.ts +0 -35
  102. package/lib-commonjs/usePopper.js +0 -361
  103. package/lib-commonjs/usePopper.js.map +0 -1
  104. package/lib-commonjs/usePopperMouseTarget.d.ts +0 -11
  105. package/lib-commonjs/usePopperMouseTarget.js +0 -38
  106. package/lib-commonjs/usePopperMouseTarget.js.map +0 -1
  107. package/lib-commonjs/utils/getBasePlacement.d.ts +0 -8
  108. package/lib-commonjs/utils/getBasePlacement.js +0 -14
  109. package/lib-commonjs/utils/getBasePlacement.js.map +0 -1
  110. package/lib-commonjs/utils/getBoundary.d.ts +0 -6
  111. package/lib-commonjs/utils/getReactFiberFromNode.d.ts +0 -109
  112. package/lib-commonjs/utils/getScrollParent.d.ts +0 -12
  113. package/lib-commonjs/utils/index.d.ts +0 -8
  114. package/lib-commonjs/utils/mergeArrowOffset.d.ts +0 -10
  115. package/lib-commonjs/utils/positioningHelper.d.ts +0 -7
  116. package/lib-commonjs/utils/resolvePositioningShorthand.d.ts +0 -2
  117. package/lib-commonjs/utils/useCallbackRef.d.ts +0 -19
package/lib/usePopper.js DELETED
@@ -1,357 +0,0 @@
1
- import { useEventCallback, useIsomorphicLayoutEffect, useFirstMount, canUseDOM } from '@fluentui/react-utilities';
2
- import { useFluent } from '@fluentui/react-shared-contexts';
3
- import { getScrollParent, applyRtlToOffset, getPlacement, getReactFiberFromNode, getBoundary, useCallbackRef, getBasePlacement, } from './utils/index';
4
- import * as PopperJs from '@popperjs/core';
5
- import * as React from 'react';
6
- //
7
- // Dev utils to detect if nodes have "autoFocus" props.
8
- //
9
- /**
10
- * Detects if a passed HTML node has "autoFocus" prop on a React's fiber. Is needed as React handles autofocus behavior
11
- * in React DOM and will not pass "autoFocus" to an actual HTML.
12
- */
13
- function hasAutofocusProp(node) {
14
- var _a;
15
- // https://github.com/facebook/react/blob/848bb2426e44606e0a55dfe44c7b3ece33772485/packages/react-dom/src/client/ReactDOMHostConfig.js#L157-L166
16
- var isAutoFocusableElement = node.nodeName === 'BUTTON' ||
17
- node.nodeName === 'INPUT' ||
18
- node.nodeName === 'SELECT' ||
19
- node.nodeName === 'TEXTAREA';
20
- if (isAutoFocusableElement) {
21
- return !!((_a = getReactFiberFromNode(node)) === null || _a === void 0 ? void 0 : _a.pendingProps.autoFocus);
22
- }
23
- return false;
24
- }
25
- function hasAutofocusFilter(node) {
26
- return hasAutofocusProp(node) ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
27
- }
28
- /**
29
- * Provides a callback to resolve Popper options, it's stable and should be used as a dependency to trigger updates
30
- * of Popper options.
31
- *
32
- * A callback is used there intentionally as some of Popper.js modifiers require DOM nodes (targer, container, arrow)
33
- * that can't be resolved properly during an initial rendering.
34
- */
35
- function usePopperOptions(options, popperOriginalPositionRef) {
36
- var arrowPadding = options.arrowPadding, autoSize = options.autoSize, coverTarget = options.coverTarget, flipBoundary = options.flipBoundary, offset = options.offset, onStateUpdate = options.onStateUpdate, overflowBoundary = options.overflowBoundary,
37
- // eslint-disable-next-line @typescript-eslint/naming-convention
38
- unstable_disableTether = options.unstable_disableTether, pinned = options.pinned;
39
- var isRtl = useFluent().dir === 'rtl';
40
- var placement = getPlacement(options.align, options.position, isRtl);
41
- var strategy = options.positionFixed ? 'fixed' : 'absolute';
42
- var handleStateUpdate = useEventCallback(function (_a) {
43
- var state = _a.state;
44
- if (onStateUpdate) {
45
- onStateUpdate(state);
46
- }
47
- });
48
- var offsetModifier = React.useMemo(function () {
49
- return offset
50
- ? {
51
- name: 'offset',
52
- options: { offset: isRtl ? applyRtlToOffset(offset) : offset },
53
- }
54
- : null;
55
- }, [offset, isRtl]);
56
- return React.useCallback(function (target, container, arrow) {
57
- var _a;
58
- var scrollParentElement = getScrollParent(container);
59
- var hasScrollableElement = scrollParentElement
60
- ? scrollParentElement !== ((_a = scrollParentElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.body)
61
- : false;
62
- var modifiers = [
63
- /**
64
- * We are setting the position to `fixed` in the first effect to prevent scroll jumps in case of the content
65
- * with managed focus. Modifier sets the position to `fixed` before all other modifier effects. Another part of
66
- * a patch modifies ".forceUpdate()" directly after a Popper will be created.
67
- */
68
- {
69
- name: 'positionStyleFix',
70
- enabled: true,
71
- phase: 'afterWrite',
72
- effect: function (_a) {
73
- var state = _a.state, instance = _a.instance;
74
- // ".isFirstRun" is a part of our patch, on a first evaluation it will "undefined"
75
- // should be disabled for subsequent runs as it breaks positioning for them
76
- if (instance.isFirstRun !== false) {
77
- popperOriginalPositionRef.current = state.elements.popper.style.position;
78
- state.elements.popper.style.position = 'fixed';
79
- }
80
- return function () { return undefined; };
81
- },
82
- requires: [],
83
- },
84
- { name: 'flip', options: { flipVariations: true } },
85
- /**
86
- * pinned disables the flip modifier by setting flip.enabled to false; this
87
- * disables automatic repositioning of the popper box; it will always be placed according to
88
- * the values of `align` and `position` props, regardless of the size of the component, the
89
- * reference element or the viewport.
90
- */
91
- pinned && { name: 'flip', enabled: false },
92
- /**
93
- * When the popper box is placed in the context of a scrollable element, we need to set
94
- * preventOverflow.escapeWithReference to true and flip.boundariesElement to 'scrollParent'
95
- * (default is 'viewport') so that the popper box will stick with the targetRef when we
96
- * scroll targetRef out of the viewport.
97
- */
98
- hasScrollableElement && { name: 'flip', options: { boundary: 'clippingParents' } },
99
- hasScrollableElement && { name: 'preventOverflow', options: { boundary: 'clippingParents' } },
100
- offsetModifier,
101
- /**
102
- * This modifier is necessary to retain behaviour from popper v1 where untethered poppers are allowed by
103
- * default. i.e. popper is still rendered fully in the viewport even if anchor element is no longer in the
104
- * viewport.
105
- */
106
- unstable_disableTether && {
107
- name: 'preventOverflow',
108
- options: { altAxis: unstable_disableTether === 'all', tether: false },
109
- },
110
- flipBoundary && {
111
- name: 'flip',
112
- options: {
113
- altBoundary: true,
114
- boundary: getBoundary(container, flipBoundary),
115
- },
116
- },
117
- overflowBoundary && {
118
- name: 'preventOverflow',
119
- options: {
120
- altBoundary: true,
121
- boundary: getBoundary(container, overflowBoundary),
122
- },
123
- },
124
- {
125
- name: 'onUpdate',
126
- enabled: true,
127
- phase: 'afterWrite',
128
- fn: handleStateUpdate,
129
- },
130
- {
131
- // Similar code as popper-maxsize-modifier: https://github.com/atomiks/popper.js/blob/master/src/modifiers/maxSize.js
132
- // popper-maxsize-modifier only calculates the max sizes.
133
- // This modifier can apply max sizes always, or apply the max sizes only when overflow is detected
134
- name: 'applyMaxSize',
135
- enabled: !!autoSize,
136
- phase: 'beforeWrite',
137
- requiresIfExists: ['offset', 'preventOverflow', 'flip'],
138
- options: {
139
- altBoundary: true,
140
- boundary: getBoundary(container, overflowBoundary),
141
- },
142
- fn: function (_a) {
143
- var state = _a.state, modifierOptions = _a.options;
144
- var overflow = PopperJs.detectOverflow(state, modifierOptions);
145
- var _b = state.modifiersData.preventOverflow || { x: 0, y: 0 }, x = _b.x, y = _b.y;
146
- var _c = state.rects.popper, width = _c.width, height = _c.height;
147
- var basePlacement = getBasePlacement(state.placement);
148
- var widthProp = basePlacement === 'left' ? 'left' : 'right';
149
- var heightProp = basePlacement === 'top' ? 'top' : 'bottom';
150
- var applyMaxWidth = autoSize === 'always' ||
151
- autoSize === 'width-always' ||
152
- (overflow[widthProp] > 0 && (autoSize === true || autoSize === 'width'));
153
- var applyMaxHeight = autoSize === 'always' ||
154
- autoSize === 'height-always' ||
155
- (overflow[heightProp] > 0 && (autoSize === true || autoSize === 'height'));
156
- if (applyMaxWidth) {
157
- state.styles.popper.maxWidth = width - overflow[widthProp] - x + "px";
158
- }
159
- if (applyMaxHeight) {
160
- state.styles.popper.maxHeight = height - overflow[heightProp] - y + "px";
161
- }
162
- },
163
- },
164
- /**
165
- * This modifier is necessary in order to render the pointer. Refs are resolved in effects, so it can't be
166
- * placed under computed modifiers. Deep merge is not required as this modifier has only these properties.
167
- */
168
- {
169
- name: 'arrow',
170
- enabled: !!arrow,
171
- options: { element: arrow, padding: arrowPadding },
172
- },
173
- /**
174
- * Modifies popper offsets to cover the reference rect, but still keep edge alignment
175
- */
176
- {
177
- name: 'coverTarget',
178
- enabled: !!coverTarget,
179
- phase: 'main',
180
- requiresIfExists: ['offset', 'preventOverflow', 'flip'],
181
- fn: function (_a) {
182
- var state = _a.state;
183
- var basePlacement = getBasePlacement(state.placement);
184
- switch (basePlacement) {
185
- case 'bottom':
186
- state.modifiersData.popperOffsets.y -= state.rects.reference.height;
187
- break;
188
- case 'top':
189
- state.modifiersData.popperOffsets.y += state.rects.reference.height;
190
- break;
191
- case 'left':
192
- state.modifiersData.popperOffsets.x += state.rects.reference.width;
193
- break;
194
- case 'right':
195
- state.modifiersData.popperOffsets.x -= state.rects.reference.width;
196
- break;
197
- }
198
- },
199
- },
200
- ].filter(Boolean); // filter boolean conditional spreading values
201
- var popperOptions = {
202
- modifiers: modifiers,
203
- placement: placement,
204
- strategy: strategy,
205
- onFirstUpdate: function (state) { return handleStateUpdate({ state: state }); },
206
- };
207
- return popperOptions;
208
- }, [
209
- arrowPadding,
210
- autoSize,
211
- coverTarget,
212
- flipBoundary,
213
- offsetModifier,
214
- overflowBoundary,
215
- placement,
216
- strategy,
217
- unstable_disableTether,
218
- pinned,
219
- // These can be skipped from deps as they will not ever change
220
- handleStateUpdate,
221
- popperOriginalPositionRef,
222
- ]);
223
- }
224
- /**
225
- * Exposes Popper positioning API via React hook. Contains few important differences between an official "react-popper"
226
- * package:
227
- * - style attributes are applied directly on DOM to avoid re-renders
228
- * - refs changes and resolution is handled properly without re-renders
229
- * - contains a specific to React fix related to initial positioning when containers have components with managed focus
230
- * to avoid focus jumps
231
- */
232
- export function usePopper(options) {
233
- if (options === void 0) { options = {}; }
234
- var _a = options.enabled, enabled = _a === void 0 ? true : _a;
235
- var isFirstMount = useFirstMount();
236
- var popperOriginalPositionRef = React.useRef('absolute');
237
- var resolvePopperOptions = usePopperOptions(options, popperOriginalPositionRef);
238
- var popperInstanceRef = React.useRef(null);
239
- var handlePopperUpdate = useEventCallback(function () {
240
- var _a;
241
- (_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();
242
- popperInstanceRef.current = null;
243
- var _b = options.target, target = _b === void 0 ? targetRef.current : _b;
244
- var popperInstance = null;
245
- if (canUseDOM() && enabled) {
246
- if (target && containerRef.current) {
247
- popperInstance = PopperJs.createPopper(target, containerRef.current, resolvePopperOptions(target, containerRef.current, arrowRef.current));
248
- }
249
- }
250
- if (popperInstance) {
251
- /**
252
- * The patch updates `.forceUpdate()` Popper function which restores the original position before the first
253
- * forceUpdate() call. See also "positionStyleFix" modifier in usePopperOptions().
254
- */
255
- var originalForceUpdate_1 = popperInstance.forceUpdate;
256
- popperInstance.isFirstRun = true;
257
- popperInstance.forceUpdate = function () {
258
- if (popperInstance === null || popperInstance === void 0 ? void 0 : popperInstance.isFirstRun) {
259
- popperInstance.state.elements.popper.style.position = popperOriginalPositionRef.current;
260
- popperInstance.isFirstRun = false;
261
- }
262
- originalForceUpdate_1();
263
- };
264
- }
265
- popperInstanceRef.current = popperInstance;
266
- });
267
- // Refs are managed by useCallbackRef() to handle ref updates scenarios.
268
- //
269
- // The first scenario are updates for a targetRef, we can handle it properly only via callback refs, but it causes
270
- // re-renders (we would like to avoid them).
271
- //
272
- // The second problem is related to refs resolution on React's layer: refs are resolved in the same order as effects
273
- // that causes an issue when you have a container inside a target, for example: a menu in ChatMessage.
274
- //
275
- // function ChatMessage(props) {
276
- // <div className="message" ref={targetRef}> // 3) ref will be resolved only now, but it's too late already
277
- // <Popper target={targetRef}> // 2) create a popper instance
278
- // <div className="menu" /> // 1) capture ref from this element
279
- // </Popper>
280
- // </div>
281
- // }
282
- //
283
- // Check a demo on CodeSandbox: https://codesandbox.io/s/popper-refs-emy60.
284
- //
285
- // This again can be solved with callback refs. It's not a huge issue as with hooks we are moving popper's creation
286
- // to ChatMessage itself, however, without `useCallback()` refs it's still a Pandora box.
287
- var targetRef = useCallbackRef(null, handlePopperUpdate, true);
288
- var containerRef = useCallbackRef(null, handlePopperUpdate, true);
289
- var arrowRef = useCallbackRef(null, handlePopperUpdate, true);
290
- React.useImperativeHandle(options.popperRef, function () { return ({
291
- updatePosition: function () {
292
- var _a;
293
- (_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.update();
294
- },
295
- }); }, []);
296
- useIsomorphicLayoutEffect(function () {
297
- handlePopperUpdate();
298
- return function () {
299
- var _a;
300
- (_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.destroy();
301
- popperInstanceRef.current = null;
302
- };
303
- }, [handlePopperUpdate, options.enabled, options.target]);
304
- useIsomorphicLayoutEffect(function () {
305
- var _a;
306
- if (!isFirstMount) {
307
- (_a = popperInstanceRef.current) === null || _a === void 0 ? void 0 : _a.setOptions(resolvePopperOptions(options.target || targetRef.current, containerRef.current, arrowRef.current));
308
- }
309
- },
310
- // Missing deps:
311
- // options.target - The useIsomorphicLayoutEffect before this will create a new popper instance if target changes
312
- // isFirstMount - Should never change after mount
313
- // arrowRef, containerRef, targetRef - Stable between renders
314
- // eslint-disable-next-line react-hooks/exhaustive-deps
315
- [resolvePopperOptions]);
316
- if (process.env.NODE_ENV !== 'production') {
317
- // This checked should run only in development mode
318
- // eslint-disable-next-line react-hooks/rules-of-hooks
319
- React.useEffect(function () {
320
- var _a;
321
- if (containerRef.current) {
322
- var contentNode = containerRef.current;
323
- var treeWalker = (_a = contentNode.ownerDocument) === null || _a === void 0 ? void 0 : _a.createTreeWalker(contentNode, NodeFilter.SHOW_ELEMENT, {
324
- acceptNode: hasAutofocusFilter,
325
- });
326
- while (treeWalker === null || treeWalker === void 0 ? void 0 : treeWalker.nextNode()) {
327
- var node = treeWalker.currentNode;
328
- // eslint-disable-next-line no-console
329
- console.warn('<Popper>:', node);
330
- // eslint-disable-next-line no-console
331
- console.warn([
332
- '<Popper>: ^ this node contains "autoFocus" prop on a React element. This can break the initial',
333
- 'positioning of an element and cause a window jump effect. This issue occurs because React polyfills',
334
- '"autoFocus" behavior to solve inconsistencies between different browsers:',
335
- 'https://github.com/facebook/react/issues/11851#issuecomment-351787078',
336
- '\n',
337
- 'However, ".focus()" in this case occurs before any other React effects will be executed',
338
- '(React.useEffect(), componentDidMount(), etc.) and we can not prevent this behavior. If you really',
339
- 'want to use "autoFocus" please add "position: fixed" to styles of the element that is wrapped by',
340
- '"Popper".',
341
- "In general, it's not recommended to use \"autoFocus\" as it may break accessibility aspects:",
342
- 'https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/master/docs/rules/no-autofocus.md',
343
- '\n',
344
- 'We suggest to use the "trapFocus" prop on Fluent components or a catch "ref" and then use',
345
- '"ref.current.focus" in React.useEffect():',
346
- 'https://reactjs.org/docs/refs-and-the-dom.html#adding-a-ref-to-a-dom-element',
347
- ].join(' '));
348
- }
349
- }
350
- // We run this check once, no need to add deps here
351
- // TODO: Should be rework to handle options.enabled and contentRef updates
352
- // eslint-disable-next-line react-hooks/exhaustive-deps
353
- }, []);
354
- }
355
- return { targetRef: targetRef, containerRef: containerRef, arrowRef: arrowRef };
356
- }
357
- //# 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,34 +0,0 @@
1
- import * as React from 'react';
2
- import { createVirtualElementFromClick } from './createVirtualElementFromClick';
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 var usePopperMouseTarget = function (initialState) {
12
- var _a = React.useState(initialState), virtualElement = _a[0], setVirtualElement = _a[1];
13
- var setVirtualMouseTarget = function (event) {
14
- if (event === undefined || event === null) {
15
- setVirtualElement(undefined);
16
- return;
17
- }
18
- var mouseevent;
19
- if (!(event instanceof MouseEvent)) {
20
- mouseevent = event.nativeEvent;
21
- }
22
- else {
23
- mouseevent = event;
24
- }
25
- if (!(mouseevent instanceof MouseEvent) && process.env.NODE_ENV !== 'production') {
26
- // eslint-disable-next-line no-console
27
- console.error('usePopperMouseTarget should only be used with MouseEvent');
28
- }
29
- var contextTarget = createVirtualElementFromClick(mouseevent);
30
- setVirtualElement(contextTarget);
31
- };
32
- return [virtualElement, setVirtualMouseTarget];
33
- };
34
- //# sourceMappingURL=usePopperMouseTarget.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePopperMouseTarget.js","sourceRoot":"","sources":["../src/usePopperMouseTarget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAGhF;;;;;;;GAOG;AACH,MAAM,CAAC,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,6BAA6B,CAAC,UAAU,CAAC,CAAC;QAChE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO,CAAC,cAAc,EAAE,qBAAqB,CAAU,CAAC;AAC1D,CAAC,CAAC"}
@@ -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,10 +0,0 @@
1
- /**
2
- * Returns the base placement value
3
- * @param placement - the popper placement (i.e. bottom-start)
4
- *
5
- * @returns bottom-start -> bottom
6
- */
7
- export function getBasePlacement(placement) {
8
- return placement.split('-')[0];
9
- }
10
- //# sourceMappingURL=getBasePlacement.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getBasePlacement.js","sourceRoot":"","sources":["../../src/utils/getBasePlacement.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA6B;IAC5D,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAA2B,CAAC;AAC3D,CAAC"}
@@ -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;
@@ -1,109 +0,0 @@
1
- /// <reference types="custom-global" />
2
- import * as React from 'react';
3
- declare type ReactEventResponder<E, C> = {
4
- $$typeof: Symbol | number;
5
- displayName: string;
6
- targetEventTypes: null | string[];
7
- rootEventTypes: null | string[];
8
- getInitialState: null | ((props: Object) => Object);
9
- onEvent: null | ((event: E, context: C, props: Object, state: Object) => void);
10
- onRootEvent: null | ((event: E, context: C, props: Object, state: Object) => void);
11
- onMount: null | ((context: C, props: Object, state: Object) => void);
12
- onUnmount: null | ((context: C, props: Object, state: Object) => void);
13
- };
14
- declare type ReactEventResponderInstance<E, C> = {
15
- fiber: Object;
16
- props: Object;
17
- responder: ReactEventResponder<E, C>;
18
- rootEventTypes: null | Set<string>;
19
- state: Object;
20
- };
21
- export declare type HookType = 'useState' | 'useReducer' | 'useContext' | 'useRef' | 'useEffect' | 'useLayoutEffect' | 'useCallback' | 'useMemo' | 'useImperativeHandle' | 'useDebugValue' | 'useResponder';
22
- declare type ReactProviderType<T> = {
23
- $$typeof: Symbol | number;
24
- _context: ReactContext<T>;
25
- };
26
- declare type ReactContext<T> = {
27
- $$typeof: Symbol | number;
28
- Consumer: ReactContext<T>;
29
- Provider: ReactProviderType<T>;
30
- _calculateChangedBits: ((a: T, b: T) => number) | null;
31
- _currentValue: T;
32
- _currentValue2: T;
33
- _threadCount: number;
34
- _currentRenderer?: Object | null;
35
- _currentRenderer2?: Object | null;
36
- };
37
- declare type ContextDependency<T> = {
38
- context: ReactContext<T>;
39
- observedBits: number;
40
- next: ContextDependency<any> | null;
41
- };
42
- declare enum WorkTag {
43
- FunctionComponent = 0,
44
- ClassComponent = 1,
45
- IndeterminateComponent = 2,
46
- HostRoot = 3,
47
- HostPortal = 4,
48
- HostComponent = 5,
49
- HostText = 6,
50
- Fragment = 7,
51
- Mode = 8,
52
- ContextConsumer = 9,
53
- ContextProvider = 10,
54
- ForwardRef = 11,
55
- Profiler = 12,
56
- SuspenseComponent = 13,
57
- MemoComponent = 14,
58
- SimpleMemoComponent = 15,
59
- LazyComponent = 16,
60
- IncompleteClassComponent = 17,
61
- DehydratedFragment = 18,
62
- SuspenseListComponent = 19,
63
- FundamentalComponent = 20,
64
- ScopeComponent = 21
65
- }
66
- declare type Source = {
67
- fileName: string;
68
- lineNumber: number;
69
- };
70
- declare type ExpirationTime = number;
71
- declare type Dependencies = {
72
- expirationTime: ExpirationTime;
73
- firstContext: ContextDependency<any> | null;
74
- responders: Map<ReactEventResponder<any, any>, ReactEventResponderInstance<any, any>> | null;
75
- };
76
- export declare type Fiber = {
77
- tag: WorkTag;
78
- key: null | string;
79
- elementType: any;
80
- type: any;
81
- stateNode: any;
82
- return: Fiber | null;
83
- child: Fiber | null;
84
- sibling: Fiber | null;
85
- index: number;
86
- ref: React.Ref<any>;
87
- pendingProps: any;
88
- memoizedProps: any;
89
- memoizedState: any;
90
- dependencies: Dependencies | null;
91
- nextEffect: Fiber | null;
92
- firstEffect: Fiber | null;
93
- lastEffect: Fiber | null;
94
- expirationTime: ExpirationTime;
95
- childExpirationTime: ExpirationTime;
96
- alternate: Fiber | null;
97
- actualDuration?: number;
98
- actualStartTime?: number;
99
- selfBaseDuration?: number;
100
- treeBaseDuration?: number;
101
- _debugID?: number;
102
- _debugSource?: Source | null;
103
- _debugOwner?: Fiber | null;
104
- _debugIsCurrentlyTiming?: boolean;
105
- _debugNeedsRemount?: boolean;
106
- _debugHookTypes?: HookType[] | null;
107
- };
108
- export declare function getReactFiberFromNode(elm: Node | undefined): Fiber | null;
109
- export {};
@@ -1,12 +0,0 @@
1
- /**
2
- * Returns the parent node or the host of the node argument.
3
- * @param node - DOM node.
4
- * @returns - parent DOM node.
5
- */
6
- export declare const getParentNode: (node: HTMLElement) => HTMLElement;
7
- /**
8
- * Returns the first scrollable parent of the given element.
9
- * @param node - DOM node.
10
- * @returns - the first scrollable parent.
11
- */
12
- export declare const getScrollParent: (node: Document | HTMLElement | null) => HTMLElement;
@@ -1,8 +0,0 @@
1
- export * from './getBasePlacement';
2
- export * from './getBoundary';
3
- export * from './getReactFiberFromNode';
4
- export * from './getScrollParent';
5
- export * from './mergeArrowOffset';
6
- export * from './positioningHelper';
7
- export * from './resolvePositioningShorthand';
8
- export * from './useCallbackRef';
@@ -1,10 +0,0 @@
1
- import type { Offset } from '../types';
2
- /**
3
- * Generally when adding an arrow to popper, it's necessary to offset the position of the popper by the
4
- * height of the arrow. A simple utility to merge a provided offset with an arrow height to return the final offset
5
- *
6
- * @param userOffset - The offset provided by the user
7
- * @param arrowHeight - The height of the arrow in px
8
- * @returns User offset augmented with arrow height
9
- */
10
- export declare function mergeArrowOffset(userOffset: Offset | undefined | null, arrowHeight: number): Offset;
@@ -1,7 +0,0 @@
1
- import * as PopperJs from '@popperjs/core';
2
- import type { Offset } from '../types';
3
- /**
4
- * @see positioninHelper.test.ts for expected placement values
5
- */
6
- export declare const getPlacement: (align?: "top" | "bottom" | "start" | "end" | "center" | undefined, position?: "above" | "below" | "before" | "after" | undefined, rtl?: boolean | undefined) => PopperJs.Placement;
7
- export declare const applyRtlToOffset: (offset: Offset | undefined) => Offset | undefined;
@@ -1,2 +0,0 @@
1
- import type { PositioningShorthand, PositioningProps } from '../types';
2
- export declare function resolvePositioningShorthand(shorthand: PositioningShorthand | undefined | null): Readonly<PositioningProps>;
@@ -1,19 +0,0 @@
1
- import * as React from 'react';
2
- /**
3
- * Creates a MutableRef with ref change callback. Is useful as React.useRef() doesn't notify you when its content
4
- * changes and mutating the .current property doesn't cause a re-render. An opt-out will be use a callback ref via
5
- * React.useState(), but it will cause re-renders always.
6
- *
7
- * https://reactjs.org/docs/hooks-reference.html#useref
8
- * https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref
9
- *
10
- * @param initialValue - initial ref value
11
- * @param callback - a callback to run when value changes
12
- * @param skipInitialResolve - a flag to skip an initial ref report
13
- *
14
- * @example
15
- * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);
16
- * ref.current = 1;
17
- * // prints 0 -> 1
18
- */
19
- export declare function useCallbackRef<T>(initialValue: T | null, callback: (newValue: T | null, lastValue: T | null) => void, skipInitialResolve?: boolean): React.MutableRefObject<T | null>;
@@ -1,6 +0,0 @@
1
- import type { PopperVirtualElement } from './types';
2
- /**
3
- * Creates a virtual element based on the position of a click event
4
- * Can be used as a target for popper in scenarios such as context menus
5
- */
6
- export declare function createVirtualElementFromClick(nativeEvent: MouseEvent): PopperVirtualElement;
@@ -1,5 +0,0 @@
1
- export * from './usePopper';
2
- export * from './createVirtualElementFromClick';
3
- export * from './usePopperMouseTarget';
4
- export { resolvePositioningShorthand, mergeArrowOffset } from './utils/index';
5
- export * from './types';