Socket
Socket
Sign inDemoInstall

react-overlays

Package Overview
Dependencies
21
Maintainers
2
Versions
85
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.1.1 to 3.0.0

27

cjs/DropdownMenu.js
"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"
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc