react-overlays
Advanced tools
Comparing version 2.1.1 to 3.0.0
"use strict"; | ||
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | ||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | ||
@@ -21,3 +23,3 @@ | ||
var _usePopper = _interopRequireDefault(require("./usePopper")); | ||
var _usePopper = _interopRequireWildcard(require("./usePopper")); | ||
@@ -27,2 +29,4 @@ var _useRootClose = _interopRequireDefault(require("./useRootClose")); | ||
function useDropdownMenu(options) { | ||
var _modifiers$arrow; | ||
if (options === void 0) { | ||
@@ -64,15 +68,20 @@ options = {}; | ||
if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start'; | ||
var modifiers = (0, _usePopper.toModifierMap)(popperConfig.modifiers); | ||
var popper = (0, _usePopper["default"])(toggleElement, menuElement, { | ||
placement: placement, | ||
enabled: !!(shouldUsePopper && show), | ||
eventsEnabled: !!show, | ||
modifiers: (0, _extends2["default"])({ | ||
flip: { | ||
enabled: !!flip | ||
modifiers: (0, _extends2["default"])({}, modifiers, { | ||
eventListeners: { | ||
enabled: !!show | ||
}, | ||
arrow: (0, _extends2["default"])({}, popperConfig.modifiers && popperConfig.modifiers.arrow, { | ||
arrow: (0, _extends2["default"])({}, modifiers.arrow, { | ||
enabled: !!arrowElement, | ||
element: arrowElement | ||
}) | ||
}, popperConfig.modifiers) | ||
options: (0, _extends2["default"])({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, { | ||
element: arrowElement | ||
}) | ||
}), | ||
flip: (0, _extends2["default"])({ | ||
enabled: !!flip | ||
}, modifiers.flip) | ||
}) | ||
}); | ||
@@ -79,0 +88,0 @@ var menu = null; |
@@ -14,4 +14,2 @@ "use strict"; | ||
var _popper = _interopRequireDefault(require("popper.js")); | ||
var _propTypes = _interopRequireDefault(require("prop-types")); | ||
@@ -23,2 +21,4 @@ | ||
var _enums = require("@popperjs/core/lib/enums"); | ||
var _useCallbackRef3 = _interopRequireDefault(require("@restart/hooks/useCallbackRef")); | ||
@@ -28,3 +28,3 @@ | ||
var _usePopper2 = _interopRequireDefault(require("./usePopper")); | ||
var _usePopper2 = _interopRequireWildcard(require("./usePopper")); | ||
@@ -40,2 +40,4 @@ var _useRootClose = _interopRequireDefault(require("./useRootClose")); | ||
var Overlay = _react["default"].forwardRef(function (props, outerRef) { | ||
var _modifiers$preventOve, _modifiers$arrow; | ||
var flip = props.flip, | ||
@@ -64,19 +66,24 @@ placement = props.placement, | ||
var _popperConfig$modifie = popperConfig.modifiers, | ||
modifiers = _popperConfig$modifie === void 0 ? {} : _popperConfig$modifie; | ||
var modifiers = (0, _usePopper2.toModifierMap)(popperConfig.modifiers); | ||
var _usePopper = (0, _usePopper2["default"])(target, rootElement, (0, _extends2["default"])({}, popperConfig, { | ||
placement: placement || 'bottom', | ||
enableEvents: props.show, | ||
modifiers: (0, _extends2["default"])({}, modifiers, { | ||
preventOverflow: (0, _extends2["default"])({ | ||
padding: containerPadding || 5 | ||
}, modifiers.preventOverflow), | ||
eventListeners: { | ||
enabled: !!props.show | ||
}, | ||
preventOverflow: (0, _extends2["default"])({}, modifiers.preventOverflow, { | ||
options: (0, _extends2["default"])({ | ||
padding: containerPadding || 5 | ||
}, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) | ||
}), | ||
arrow: (0, _extends2["default"])({}, modifiers.arrow, { | ||
enabled: !!arrowElement, | ||
element: arrowElement | ||
options: (0, _extends2["default"])({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, { | ||
element: arrowElement | ||
}) | ||
}), | ||
flip: (0, _extends2["default"])({ | ||
enabled: !!flip | ||
}, modifiers.preventOverflow) | ||
}, modifiers.flip) | ||
}) | ||
@@ -155,3 +162,3 @@ })), | ||
/** Specify where the overlay element is positioned in relation to the target element */ | ||
placement: _propTypes["default"].oneOf(_popper["default"].placements), | ||
placement: _propTypes["default"].oneOf(_enums.placements), | ||
@@ -158,0 +165,0 @@ /** |
@@ -6,2 +6,4 @@ "use strict"; | ||
exports.__esModule = true; | ||
exports.toModifierMap = toModifierMap; | ||
exports.toModifierArray = toModifierArray; | ||
exports["default"] = usePopper; | ||
@@ -11,6 +13,25 @@ | ||
var _popper = _interopRequireDefault(require("popper.js")); | ||
var _react = require("react"); | ||
var _arrow = _interopRequireDefault(require("@popperjs/core/lib/modifiers/arrow")); | ||
var _computeStyles = _interopRequireDefault(require("@popperjs/core/lib/modifiers/computeStyles")); | ||
var _eventListeners = _interopRequireDefault(require("@popperjs/core/lib/modifiers/eventListeners")); | ||
var _flip = _interopRequireDefault(require("@popperjs/core/lib/modifiers/flip")); | ||
var _hide = _interopRequireDefault(require("@popperjs/core/lib/modifiers/hide")); | ||
var _popperOffsets = _interopRequireDefault(require("@popperjs/core/lib/modifiers/popperOffsets")); | ||
var _preventOverflow = _interopRequireDefault(require("@popperjs/core/lib/modifiers/preventOverflow")); | ||
var _popperBase = require("@popperjs/core/lib/popper-base"); | ||
var _useSafeState2 = _interopRequireDefault(require("@restart/hooks/useSafeState")); | ||
var createPopper = (0, _popperBase.popperGenerator)({ | ||
defaultModifiers: [_hide["default"], _popperOffsets["default"], _computeStyles["default"], _eventListeners["default"], _flip["default"], _preventOverflow["default"], _arrow["default"]] | ||
}); | ||
var initialPopperStyles = { | ||
@@ -24,2 +45,24 @@ position: 'absolute', | ||
var initialArrowStyles = {}; | ||
function toModifierMap(modifiers) { | ||
var result = {}; | ||
if (!Array.isArray(modifiers)) { | ||
return modifiers || result; | ||
} // eslint-disable-next-line no-unused-expressions | ||
modifiers == null ? void 0 : modifiers.forEach(function (m) { | ||
result[m.name] = m; | ||
}); | ||
return result; | ||
} | ||
function toModifierArray(map) { | ||
if (Array.isArray(map)) return map; | ||
return Object.keys(map || {}).map(function (k) { | ||
map[k].name = k; | ||
return map[k]; | ||
}); | ||
} | ||
/** | ||
@@ -38,2 +81,3 @@ * Position an element relative some reference element using Popper.js | ||
function usePopper(referenceElement, popperElement, _temp) { | ||
@@ -45,18 +89,16 @@ var _ref = _temp === void 0 ? {} : _temp, | ||
placement = _ref$placement === void 0 ? 'bottom' : _ref$placement, | ||
_ref$positionFixed = _ref.positionFixed, | ||
positionFixed = _ref$positionFixed === void 0 ? false : _ref$positionFixed, | ||
_ref$strategy = _ref.strategy, | ||
strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy, | ||
_ref$eventsEnabled = _ref.eventsEnabled, | ||
eventsEnabled = _ref$eventsEnabled === void 0 ? true : _ref$eventsEnabled, | ||
_ref$modifiers = _ref.modifiers, | ||
modifiers = _ref$modifiers === void 0 ? {} : _ref$modifiers; | ||
userModifiers = _ref.modifiers; | ||
var popperInstanceRef = (0, _react.useRef)(); | ||
var hasArrow = !!(modifiers.arrow && modifiers.arrow.element); | ||
var scheduleUpdate = (0, _react.useCallback)(function () { | ||
if (popperInstanceRef.current) { | ||
popperInstanceRef.current.scheduleUpdate(); | ||
popperInstanceRef.current.update(); | ||
} | ||
}, []); | ||
var _useState = (0, _react.useState)({ | ||
var _useSafeState = (0, _useSafeState2["default"])((0, _react.useState)({ | ||
placement: placement, | ||
@@ -67,5 +109,38 @@ scheduleUpdate: scheduleUpdate, | ||
arrowStyles: initialArrowStyles | ||
}), | ||
state = _useState[0], | ||
setState = _useState[1]; // A placement difference in state means popper determined a new placement | ||
})), | ||
state = _useSafeState[0], | ||
setState = _useSafeState[1]; | ||
var updateModifier = (0, _react.useMemo)(function () { | ||
return { | ||
name: 'updateStateModifier', | ||
enabled: true, | ||
phase: 'afterWrite', | ||
requires: ['computeStyles'], | ||
fn: function fn(data) { | ||
var _data$state$modifiers, _data$state$styles, _data$state$styles2; | ||
setState({ | ||
scheduleUpdate: scheduleUpdate, | ||
outOfBoundries: (_data$state$modifiers = data.state.modifiersData.hide) == null ? void 0 : _data$state$modifiers.isReferenceHidden, | ||
placement: data.state.placement, | ||
styles: (0, _extends2["default"])({}, (_data$state$styles = data.state.styles) == null ? void 0 : _data$state$styles.popper), | ||
arrowStyles: (0, _extends2["default"])({}, (_data$state$styles2 = data.state.styles) == null ? void 0 : _data$state$styles2.arrow), | ||
state: data.state | ||
}); | ||
} | ||
}; | ||
}, [scheduleUpdate, setState]); | ||
var modifiers = toModifierArray(userModifiers); | ||
var eventsModifier = modifiers.find(function (m) { | ||
return m.name === 'eventListeners'; | ||
}); | ||
if (!eventsModifier && eventsEnabled) { | ||
eventsModifier = { | ||
name: 'eventListeners', | ||
enabled: true | ||
}; | ||
modifiers = [].concat(modifiers, [eventsModifier]); | ||
} // A placement difference in state means popper determined a new placement | ||
// apart from the props value. By the time the popper element is rendered with | ||
@@ -79,10 +154,11 @@ // the new position Popper has already measured it, if the place change triggers | ||
}, [state.placement, scheduleUpdate]); | ||
/** Toggle Events */ | ||
(0, _react.useEffect)(function () { | ||
if (popperInstanceRef.current) { | ||
// eslint-disable-next-line no-unused-expressions | ||
eventsEnabled ? popperInstanceRef.current.enableEventListeners() : popperInstanceRef.current.disableEventListeners(); | ||
} | ||
}, [eventsEnabled]); | ||
if (!popperInstanceRef.current || !enabled) return; | ||
popperInstanceRef.current.setOptions({ | ||
placement: placement, | ||
strategy: strategy, | ||
modifiers: [].concat(modifiers, [updateModifier]) | ||
}); // intentionally NOT re-running on new modifiers | ||
// eslint-disable-next-line react-hooks/exhaustive-deps | ||
}, [strategy, placement, eventsModifier.enabled, updateModifier, enabled]); | ||
(0, _react.useEffect)(function () { | ||
@@ -93,29 +169,6 @@ if (!enabled || referenceElement == null || popperElement == null) { | ||
var arrow = modifiers.arrow && (0, _extends2["default"])({}, modifiers.arrow, { | ||
element: modifiers.arrow.element | ||
}); | ||
popperInstanceRef.current = new _popper["default"](referenceElement, popperElement, { | ||
popperInstanceRef.current = createPopper(referenceElement, popperElement, { | ||
placement: placement, | ||
positionFixed: positionFixed, | ||
modifiers: (0, _extends2["default"])({}, modifiers, { | ||
arrow: arrow, | ||
applyStyle: { | ||
enabled: false | ||
}, | ||
updateStateModifier: { | ||
enabled: true, | ||
order: 900, | ||
fn: function fn(data) { | ||
setState({ | ||
scheduleUpdate: scheduleUpdate, | ||
styles: (0, _extends2["default"])({ | ||
position: data.offsets.popper.position | ||
}, data.styles), | ||
arrowStyles: data.arrowStyles, | ||
outOfBoundaries: data.hide, | ||
placement: data.placement | ||
}); | ||
} | ||
} | ||
}) | ||
strategy: strategy, | ||
modifiers: [].concat(modifiers, [updateModifier]) | ||
}); | ||
@@ -126,9 +179,13 @@ return function () { | ||
popperInstanceRef.current = null; | ||
setState(function (s) { | ||
return (0, _extends2["default"])({}, s, { | ||
styles: initialPopperStyles, | ||
arrowStyles: initialArrowStyles | ||
}); | ||
}); | ||
} | ||
}; // intentionally NOT re-running on new modifiers | ||
}; // This is only run once to _create_ the popper | ||
// eslint-disable-next-line react-hooks/exhaustive-deps | ||
}, [enabled, placement, positionFixed, referenceElement, popperElement, hasArrow]); | ||
}, [enabled, referenceElement, popperElement]); | ||
return state; | ||
} | ||
module.exports = exports.default; | ||
} |
@@ -7,5 +7,7 @@ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; | ||
import DropdownContext from './DropdownContext'; | ||
import usePopper from './usePopper'; | ||
import usePopper, { toModifierMap } from './usePopper'; | ||
import useRootClose from './useRootClose'; | ||
export function useDropdownMenu(options) { | ||
var _modifiers$arrow; | ||
if (options === void 0) { | ||
@@ -47,15 +49,20 @@ options = {}; | ||
if (drop === 'up') placement = alignEnd ? 'top-end' : 'top-start';else if (drop === 'right') placement = alignEnd ? 'right-end' : 'right-start';else if (drop === 'left') placement = alignEnd ? 'left-end' : 'left-start'; | ||
var modifiers = toModifierMap(popperConfig.modifiers); | ||
var popper = usePopper(toggleElement, menuElement, { | ||
placement: placement, | ||
enabled: !!(shouldUsePopper && show), | ||
eventsEnabled: !!show, | ||
modifiers: _extends({ | ||
flip: { | ||
enabled: !!flip | ||
modifiers: _extends({}, modifiers, { | ||
eventListeners: { | ||
enabled: !!show | ||
}, | ||
arrow: _extends({}, popperConfig.modifiers && popperConfig.modifiers.arrow, { | ||
arrow: _extends({}, modifiers.arrow, { | ||
enabled: !!arrowElement, | ||
element: arrowElement | ||
}) | ||
}, popperConfig.modifiers) | ||
options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, { | ||
element: arrowElement | ||
}) | ||
}), | ||
flip: _extends({ | ||
enabled: !!flip | ||
}, modifiers.flip) | ||
}) | ||
}); | ||
@@ -62,0 +69,0 @@ var menu = null; |
import _extends from "@babel/runtime/helpers/esm/extends"; | ||
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose"; | ||
import PopperJS from 'popper.js'; | ||
import PropTypes from 'prop-types'; | ||
import React, { useState } from 'react'; | ||
import ReactDOM from 'react-dom'; | ||
import { placements } from '@popperjs/core/lib/enums'; | ||
import useCallbackRef from '@restart/hooks/useCallbackRef'; | ||
import useMergedRefs from '@restart/hooks/useMergedRefs'; | ||
import usePopper from './usePopper'; | ||
import usePopper, { toModifierMap } from './usePopper'; | ||
import useRootClose from './useRootClose'; | ||
@@ -18,2 +18,4 @@ import useWaitForDOMRef from './utils/useWaitForDOMRef'; | ||
var Overlay = React.forwardRef(function (props, outerRef) { | ||
var _modifiers$preventOve, _modifiers$arrow; | ||
var flip = props.flip, | ||
@@ -42,19 +44,24 @@ placement = props.placement, | ||
var _popperConfig$modifie = popperConfig.modifiers, | ||
modifiers = _popperConfig$modifie === void 0 ? {} : _popperConfig$modifie; | ||
var modifiers = toModifierMap(popperConfig.modifiers); | ||
var _usePopper = usePopper(target, rootElement, _extends({}, popperConfig, { | ||
placement: placement || 'bottom', | ||
enableEvents: props.show, | ||
modifiers: _extends({}, modifiers, { | ||
preventOverflow: _extends({ | ||
padding: containerPadding || 5 | ||
}, modifiers.preventOverflow), | ||
eventListeners: { | ||
enabled: !!props.show | ||
}, | ||
preventOverflow: _extends({}, modifiers.preventOverflow, { | ||
options: _extends({ | ||
padding: containerPadding || 5 | ||
}, (_modifiers$preventOve = modifiers.preventOverflow) == null ? void 0 : _modifiers$preventOve.options) | ||
}), | ||
arrow: _extends({}, modifiers.arrow, { | ||
enabled: !!arrowElement, | ||
element: arrowElement | ||
options: _extends({}, (_modifiers$arrow = modifiers.arrow) == null ? void 0 : _modifiers$arrow.options, { | ||
element: arrowElement | ||
}) | ||
}), | ||
flip: _extends({ | ||
enabled: !!flip | ||
}, modifiers.preventOverflow) | ||
}, modifiers.flip) | ||
}) | ||
@@ -132,3 +139,3 @@ })), | ||
/** Specify where the overlay element is positioned in relation to the target element */ | ||
placement: PropTypes.oneOf(PopperJS.placements), | ||
placement: PropTypes.oneOf(placements), | ||
@@ -135,0 +142,0 @@ /** |
import _extends from "@babel/runtime/helpers/esm/extends"; | ||
import PopperJS from 'popper.js'; | ||
import { useCallback, useEffect, useRef, useState } from 'react'; | ||
import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; | ||
import arrow from '@popperjs/core/lib/modifiers/arrow'; | ||
import computeStyles from '@popperjs/core/lib/modifiers/computeStyles'; | ||
import eventListeners from '@popperjs/core/lib/modifiers/eventListeners'; | ||
import flip from '@popperjs/core/lib/modifiers/flip'; | ||
import hide from '@popperjs/core/lib/modifiers/hide'; | ||
import popperOffsets from '@popperjs/core/lib/modifiers/popperOffsets'; | ||
import preventOverflow from '@popperjs/core/lib/modifiers/preventOverflow'; | ||
import { popperGenerator } from '@popperjs/core/lib/popper-base'; | ||
import useSafeState from '@restart/hooks/useSafeState'; | ||
var createPopper = popperGenerator({ | ||
defaultModifiers: [hide, popperOffsets, computeStyles, eventListeners, flip, preventOverflow, arrow] | ||
}); | ||
var initialPopperStyles = { | ||
@@ -12,2 +23,22 @@ position: 'absolute', | ||
var initialArrowStyles = {}; | ||
export function toModifierMap(modifiers) { | ||
var result = {}; | ||
if (!Array.isArray(modifiers)) { | ||
return modifiers || result; | ||
} // eslint-disable-next-line no-unused-expressions | ||
modifiers == null ? void 0 : modifiers.forEach(function (m) { | ||
result[m.name] = m; | ||
}); | ||
return result; | ||
} | ||
export function toModifierArray(map) { | ||
if (Array.isArray(map)) return map; | ||
return Object.keys(map || {}).map(function (k) { | ||
map[k].name = k; | ||
return map[k]; | ||
}); | ||
} | ||
/** | ||
@@ -32,18 +63,16 @@ * Position an element relative some reference element using Popper.js | ||
placement = _ref$placement === void 0 ? 'bottom' : _ref$placement, | ||
_ref$positionFixed = _ref.positionFixed, | ||
positionFixed = _ref$positionFixed === void 0 ? false : _ref$positionFixed, | ||
_ref$strategy = _ref.strategy, | ||
strategy = _ref$strategy === void 0 ? 'absolute' : _ref$strategy, | ||
_ref$eventsEnabled = _ref.eventsEnabled, | ||
eventsEnabled = _ref$eventsEnabled === void 0 ? true : _ref$eventsEnabled, | ||
_ref$modifiers = _ref.modifiers, | ||
modifiers = _ref$modifiers === void 0 ? {} : _ref$modifiers; | ||
userModifiers = _ref.modifiers; | ||
var popperInstanceRef = useRef(); | ||
var hasArrow = !!(modifiers.arrow && modifiers.arrow.element); | ||
var scheduleUpdate = useCallback(function () { | ||
if (popperInstanceRef.current) { | ||
popperInstanceRef.current.scheduleUpdate(); | ||
popperInstanceRef.current.update(); | ||
} | ||
}, []); | ||
var _useState = useState({ | ||
var _useSafeState = useSafeState(useState({ | ||
placement: placement, | ||
@@ -54,5 +83,38 @@ scheduleUpdate: scheduleUpdate, | ||
arrowStyles: initialArrowStyles | ||
}), | ||
state = _useState[0], | ||
setState = _useState[1]; // A placement difference in state means popper determined a new placement | ||
})), | ||
state = _useSafeState[0], | ||
setState = _useSafeState[1]; | ||
var updateModifier = useMemo(function () { | ||
return { | ||
name: 'updateStateModifier', | ||
enabled: true, | ||
phase: 'afterWrite', | ||
requires: ['computeStyles'], | ||
fn: function fn(data) { | ||
var _data$state$modifiers, _data$state$styles, _data$state$styles2; | ||
setState({ | ||
scheduleUpdate: scheduleUpdate, | ||
outOfBoundries: (_data$state$modifiers = data.state.modifiersData.hide) == null ? void 0 : _data$state$modifiers.isReferenceHidden, | ||
placement: data.state.placement, | ||
styles: _extends({}, (_data$state$styles = data.state.styles) == null ? void 0 : _data$state$styles.popper), | ||
arrowStyles: _extends({}, (_data$state$styles2 = data.state.styles) == null ? void 0 : _data$state$styles2.arrow), | ||
state: data.state | ||
}); | ||
} | ||
}; | ||
}, [scheduleUpdate, setState]); | ||
var modifiers = toModifierArray(userModifiers); | ||
var eventsModifier = modifiers.find(function (m) { | ||
return m.name === 'eventListeners'; | ||
}); | ||
if (!eventsModifier && eventsEnabled) { | ||
eventsModifier = { | ||
name: 'eventListeners', | ||
enabled: true | ||
}; | ||
modifiers = [].concat(modifiers, [eventsModifier]); | ||
} // A placement difference in state means popper determined a new placement | ||
// apart from the props value. By the time the popper element is rendered with | ||
@@ -66,10 +128,11 @@ // the new position Popper has already measured it, if the place change triggers | ||
}, [state.placement, scheduleUpdate]); | ||
/** Toggle Events */ | ||
useEffect(function () { | ||
if (popperInstanceRef.current) { | ||
// eslint-disable-next-line no-unused-expressions | ||
eventsEnabled ? popperInstanceRef.current.enableEventListeners() : popperInstanceRef.current.disableEventListeners(); | ||
} | ||
}, [eventsEnabled]); | ||
if (!popperInstanceRef.current || !enabled) return; | ||
popperInstanceRef.current.setOptions({ | ||
placement: placement, | ||
strategy: strategy, | ||
modifiers: [].concat(modifiers, [updateModifier]) | ||
}); // intentionally NOT re-running on new modifiers | ||
// eslint-disable-next-line react-hooks/exhaustive-deps | ||
}, [strategy, placement, eventsModifier.enabled, updateModifier, enabled]); | ||
useEffect(function () { | ||
@@ -80,30 +143,6 @@ if (!enabled || referenceElement == null || popperElement == null) { | ||
var arrow = modifiers.arrow && _extends({}, modifiers.arrow, { | ||
element: modifiers.arrow.element | ||
}); | ||
popperInstanceRef.current = new PopperJS(referenceElement, popperElement, { | ||
popperInstanceRef.current = createPopper(referenceElement, popperElement, { | ||
placement: placement, | ||
positionFixed: positionFixed, | ||
modifiers: _extends({}, modifiers, { | ||
arrow: arrow, | ||
applyStyle: { | ||
enabled: false | ||
}, | ||
updateStateModifier: { | ||
enabled: true, | ||
order: 900, | ||
fn: function fn(data) { | ||
setState({ | ||
scheduleUpdate: scheduleUpdate, | ||
styles: _extends({ | ||
position: data.offsets.popper.position | ||
}, data.styles), | ||
arrowStyles: data.arrowStyles, | ||
outOfBoundaries: data.hide, | ||
placement: data.placement | ||
}); | ||
} | ||
} | ||
}) | ||
strategy: strategy, | ||
modifiers: [].concat(modifiers, [updateModifier]) | ||
}); | ||
@@ -114,7 +153,13 @@ return function () { | ||
popperInstanceRef.current = null; | ||
setState(function (s) { | ||
return _extends({}, s, { | ||
styles: initialPopperStyles, | ||
arrowStyles: initialArrowStyles | ||
}); | ||
}); | ||
} | ||
}; // intentionally NOT re-running on new modifiers | ||
}; // This is only run once to _create_ the popper | ||
// eslint-disable-next-line react-hooks/exhaustive-deps | ||
}, [enabled, placement, positionFixed, referenceElement, popperElement, hasArrow]); | ||
}, [enabled, referenceElement, popperElement]); | ||
return state; | ||
} |
{ | ||
"name": "react-overlays", | ||
"version": "2.1.1", | ||
"version": "3.0.0", | ||
"description": "Utilities for creating robust overlay components", | ||
@@ -47,5 +47,5 @@ "author": { | ||
"@babel/runtime": "^7.4.5", | ||
"@popperjs/core": "^2.0.0", | ||
"@restart/hooks": "^0.3.12", | ||
"dom-helpers": "^5.1.0", | ||
"popper.js": "^1.15.0", | ||
"prop-types": "^15.7.2", | ||
@@ -64,3 +64,3 @@ "uncontrollable": "^7.0.0", | ||
"homepage": "https://github.com/react-bootstrap/react-overlays#readme", | ||
"_id": "react-overlays@2.1.0" | ||
"_id": "react-overlays@2.1.1" | ||
} |
127706
3222
+ Added@popperjs/core@^2.0.0
+ Added@popperjs/core@2.11.8(transitive)
- Removedpopper.js@^1.15.0
- Removedpopper.js@1.16.1(transitive)