first commit
This commit is contained in:
187
frontend/node_modules/@rc-component/trigger/es/Popup/index.js
generated
vendored
Normal file
187
frontend/node_modules/@rc-component/trigger/es/Popup/index.js
generated
vendored
Normal file
@@ -0,0 +1,187 @@
|
||||
import _extends from "@babel/runtime/helpers/esm/extends";
|
||||
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
||||
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
||||
import classNames from 'classnames';
|
||||
import CSSMotion from 'rc-motion';
|
||||
import ResizeObserver from 'rc-resize-observer';
|
||||
import useLayoutEffect from "rc-util/es/hooks/useLayoutEffect";
|
||||
import { composeRef } from "rc-util/es/ref";
|
||||
import * as React from 'react';
|
||||
import Arrow from "./Arrow";
|
||||
import Mask from "./Mask";
|
||||
import PopupContent from "./PopupContent";
|
||||
var Popup = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
||||
var popup = props.popup,
|
||||
className = props.className,
|
||||
prefixCls = props.prefixCls,
|
||||
style = props.style,
|
||||
target = props.target,
|
||||
_onVisibleChanged = props.onVisibleChanged,
|
||||
open = props.open,
|
||||
keepDom = props.keepDom,
|
||||
fresh = props.fresh,
|
||||
onClick = props.onClick,
|
||||
mask = props.mask,
|
||||
arrow = props.arrow,
|
||||
arrowPos = props.arrowPos,
|
||||
align = props.align,
|
||||
motion = props.motion,
|
||||
maskMotion = props.maskMotion,
|
||||
forceRender = props.forceRender,
|
||||
getPopupContainer = props.getPopupContainer,
|
||||
autoDestroy = props.autoDestroy,
|
||||
Portal = props.portal,
|
||||
zIndex = props.zIndex,
|
||||
onMouseEnter = props.onMouseEnter,
|
||||
onMouseLeave = props.onMouseLeave,
|
||||
onPointerEnter = props.onPointerEnter,
|
||||
onPointerDownCapture = props.onPointerDownCapture,
|
||||
ready = props.ready,
|
||||
offsetX = props.offsetX,
|
||||
offsetY = props.offsetY,
|
||||
offsetR = props.offsetR,
|
||||
offsetB = props.offsetB,
|
||||
onAlign = props.onAlign,
|
||||
onPrepare = props.onPrepare,
|
||||
stretch = props.stretch,
|
||||
targetWidth = props.targetWidth,
|
||||
targetHeight = props.targetHeight;
|
||||
var childNode = typeof popup === 'function' ? popup() : popup;
|
||||
|
||||
// We can not remove holder only when motion finished.
|
||||
var isNodeVisible = open || keepDom;
|
||||
|
||||
// ======================= Container ========================
|
||||
var getPopupContainerNeedParams = (getPopupContainer === null || getPopupContainer === void 0 ? void 0 : getPopupContainer.length) > 0;
|
||||
var _React$useState = React.useState(!getPopupContainer || !getPopupContainerNeedParams),
|
||||
_React$useState2 = _slicedToArray(_React$useState, 2),
|
||||
show = _React$useState2[0],
|
||||
setShow = _React$useState2[1];
|
||||
|
||||
// Delay to show since `getPopupContainer` need target element
|
||||
useLayoutEffect(function () {
|
||||
if (!show && getPopupContainerNeedParams && target) {
|
||||
setShow(true);
|
||||
}
|
||||
}, [show, getPopupContainerNeedParams, target]);
|
||||
|
||||
// ========================= Render =========================
|
||||
if (!show) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// >>>>> Offset
|
||||
var AUTO = 'auto';
|
||||
var offsetStyle = {
|
||||
left: '-1000vw',
|
||||
top: '-1000vh',
|
||||
right: AUTO,
|
||||
bottom: AUTO
|
||||
};
|
||||
|
||||
// Set align style
|
||||
if (ready || !open) {
|
||||
var _experimental;
|
||||
var points = align.points;
|
||||
var dynamicInset = align.dynamicInset || ((_experimental = align._experimental) === null || _experimental === void 0 ? void 0 : _experimental.dynamicInset);
|
||||
var alignRight = dynamicInset && points[0][1] === 'r';
|
||||
var alignBottom = dynamicInset && points[0][0] === 'b';
|
||||
if (alignRight) {
|
||||
offsetStyle.right = offsetR;
|
||||
offsetStyle.left = AUTO;
|
||||
} else {
|
||||
offsetStyle.left = offsetX;
|
||||
offsetStyle.right = AUTO;
|
||||
}
|
||||
if (alignBottom) {
|
||||
offsetStyle.bottom = offsetB;
|
||||
offsetStyle.top = AUTO;
|
||||
} else {
|
||||
offsetStyle.top = offsetY;
|
||||
offsetStyle.bottom = AUTO;
|
||||
}
|
||||
}
|
||||
|
||||
// >>>>> Misc
|
||||
var miscStyle = {};
|
||||
if (stretch) {
|
||||
if (stretch.includes('height') && targetHeight) {
|
||||
miscStyle.height = targetHeight;
|
||||
} else if (stretch.includes('minHeight') && targetHeight) {
|
||||
miscStyle.minHeight = targetHeight;
|
||||
}
|
||||
if (stretch.includes('width') && targetWidth) {
|
||||
miscStyle.width = targetWidth;
|
||||
} else if (stretch.includes('minWidth') && targetWidth) {
|
||||
miscStyle.minWidth = targetWidth;
|
||||
}
|
||||
}
|
||||
if (!open) {
|
||||
miscStyle.pointerEvents = 'none';
|
||||
}
|
||||
return /*#__PURE__*/React.createElement(Portal, {
|
||||
open: forceRender || isNodeVisible,
|
||||
getContainer: getPopupContainer && function () {
|
||||
return getPopupContainer(target);
|
||||
},
|
||||
autoDestroy: autoDestroy
|
||||
}, /*#__PURE__*/React.createElement(Mask, {
|
||||
prefixCls: prefixCls,
|
||||
open: open,
|
||||
zIndex: zIndex,
|
||||
mask: mask,
|
||||
motion: maskMotion
|
||||
}), /*#__PURE__*/React.createElement(ResizeObserver, {
|
||||
onResize: onAlign,
|
||||
disabled: !open
|
||||
}, function (resizeObserverRef) {
|
||||
return /*#__PURE__*/React.createElement(CSSMotion, _extends({
|
||||
motionAppear: true,
|
||||
motionEnter: true,
|
||||
motionLeave: true,
|
||||
removeOnLeave: false,
|
||||
forceRender: forceRender,
|
||||
leavedClassName: "".concat(prefixCls, "-hidden")
|
||||
}, motion, {
|
||||
onAppearPrepare: onPrepare,
|
||||
onEnterPrepare: onPrepare,
|
||||
visible: open,
|
||||
onVisibleChanged: function onVisibleChanged(nextVisible) {
|
||||
var _motion$onVisibleChan;
|
||||
motion === null || motion === void 0 || (_motion$onVisibleChan = motion.onVisibleChanged) === null || _motion$onVisibleChan === void 0 || _motion$onVisibleChan.call(motion, nextVisible);
|
||||
_onVisibleChanged(nextVisible);
|
||||
}
|
||||
}), function (_ref, motionRef) {
|
||||
var motionClassName = _ref.className,
|
||||
motionStyle = _ref.style;
|
||||
var cls = classNames(prefixCls, motionClassName, className);
|
||||
return /*#__PURE__*/React.createElement("div", {
|
||||
ref: composeRef(resizeObserverRef, ref, motionRef),
|
||||
className: cls,
|
||||
style: _objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
||||
'--arrow-x': "".concat(arrowPos.x || 0, "px"),
|
||||
'--arrow-y': "".concat(arrowPos.y || 0, "px")
|
||||
}, offsetStyle), miscStyle), motionStyle), {}, {
|
||||
boxSizing: 'border-box',
|
||||
zIndex: zIndex
|
||||
}, style),
|
||||
onMouseEnter: onMouseEnter,
|
||||
onMouseLeave: onMouseLeave,
|
||||
onPointerEnter: onPointerEnter,
|
||||
onClick: onClick,
|
||||
onPointerDownCapture: onPointerDownCapture
|
||||
}, arrow && /*#__PURE__*/React.createElement(Arrow, {
|
||||
prefixCls: prefixCls,
|
||||
arrow: arrow,
|
||||
arrowPos: arrowPos,
|
||||
align: align
|
||||
}), /*#__PURE__*/React.createElement(PopupContent, {
|
||||
cache: !open && !fresh
|
||||
}, childNode));
|
||||
});
|
||||
}));
|
||||
});
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
Popup.displayName = 'Popup';
|
||||
}
|
||||
export default Popup;
|
||||
Reference in New Issue
Block a user