|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- "use strict";
-
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
-
- exports.__esModule = true;
- exports.default = usePopperMarginModifiers;
-
- var _react = require("react");
-
- var _hasClass = _interopRequireDefault(require("dom-helpers/hasClass"));
-
- function getMargins(element) {
- var styles = getComputedStyle(element);
- var top = parseFloat(styles.marginTop) || 0;
- var right = parseFloat(styles.marginRight) || 0;
- var bottom = parseFloat(styles.marginBottom) || 0;
- var left = parseFloat(styles.marginLeft) || 0;
- return {
- top: top,
- right: right,
- bottom: bottom,
- left: left
- };
- }
-
- function usePopperMarginModifiers() {
- var overlayRef = (0, _react.useRef)(null);
- var margins = (0, _react.useRef)(null);
- return [(0, _react.useCallback)(function (overlay) {
- if (!overlay || !((0, _hasClass.default)(overlay, 'popover') || (0, _hasClass.default)(overlay, 'dropdown-menu'))) return;
- margins.current = getMargins(overlay);
- overlay.style.margin = 0;
- overlayRef.current = overlay;
- }, []), [(0, _react.useMemo)(function () {
- return {
- name: 'offset',
- options: {
- offset: function offset(_ref) {
- var placement = _ref.placement;
- if (!margins.current) return [0, 0];
- var _margins$current = margins.current,
- top = _margins$current.top,
- left = _margins$current.left,
- bottom = _margins$current.bottom,
- right = _margins$current.right;
-
- switch (placement.split('-')[0]) {
- case 'top':
- return [0, bottom];
-
- case 'left':
- return [0, right];
-
- case 'bottom':
- return [0, top];
-
- case 'right':
- return [0, left];
-
- default:
- return [0, 0];
- }
- }
- }
- };
- }, [margins])]];
- }
-
- module.exports = exports["default"];
|