test-nut-ui
Version:
<p align="center"> <img alt="logo" src="https://img11.360buyimg.com/imagetools/jfs/t1/211965/25/7152/22022/61b16785E433119bb/aa41d7a9f7e823f3.png" width="150" style="margin-bottom: 10px;"> </p>
184 lines (183 loc) • 8.05 kB
JavaScript
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
enumerableOnly && (symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
})), keys.push.apply(keys, symbols);
}
return keys;
}
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = null != arguments[i] ? arguments[i] : {};
i % 2 ? ownKeys(Object(source), true).forEach(function(key) {
_defineProperty(target, key, source[key]);
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
import React__default, { useState, useEffect } from "react";
import { createPortal } from "react-dom";
import { CSSTransition } from "react-transition-group";
import classNames from "classnames";
import { k as kr } from "./index.js";
import { d as defaultOverlayProps } from "./overlay2.js";
import Overlay from "./Overlay.js";
import { C as ComponentDefaults } from "./typings.js";
var defaultProps = _objectSpread(_objectSpread({}, ComponentDefaults), {}, {
position: "center",
transition: "",
overlayStyle: {},
overlayClassName: "",
closeable: false,
closeIconPosition: "top-right",
closeIcon: "close",
destroyOnClose: false,
portal: null,
overlay: true,
round: false,
onOpen: function onOpen() {
},
onClose: function onClose() {
},
onOverlayClick: function onOverlayClick(e) {
return true;
},
onCloseIconClick: function onCloseIconClick(e) {
return true;
}
}, defaultOverlayProps);
var _zIndex = 1e3;
var Popup = function Popup2(props) {
var _classNames, _classNames2;
var children = props.children, visible = props.visible, overlay = props.overlay, closeOnOverlayClick = props.closeOnOverlayClick, overlayStyle = props.overlayStyle, overlayClassName = props.overlayClassName, zIndex = props.zIndex, lockScroll = props.lockScroll, duration = props.duration, closeable = props.closeable, closeIconPosition = props.closeIconPosition, closeIcon = props.closeIcon, left = props.left, title = props.title, style = props.style, transition = props.transition, round = props.round, position = props.position, className = props.className, destroyOnClose = props.destroyOnClose, portal = props.portal, onOpen2 = props.onOpen, onClose2 = props.onClose, onOverlayClick2 = props.onOverlayClick, onCloseIconClick2 = props.onCloseIconClick, afterShow = props.afterShow, afterClose = props.afterClose, onClick = props.onClick;
var _useState = useState(zIndex || _zIndex), _useState2 = _slicedToArray(_useState, 2), index = _useState2[0], setIndex = _useState2[1];
var _useState3 = useState(visible), _useState4 = _slicedToArray(_useState3, 2), innerVisible = _useState4[0], setInnerVisible = _useState4[1];
var _useState5 = useState(true), _useState6 = _slicedToArray(_useState5, 2), showChildren = _useState6[0], setShowChildren = _useState6[1];
var _useState7 = useState(""), _useState8 = _slicedToArray(_useState7, 2), transitionName = _useState8[0], setTransitionName = _useState8[1];
var classPrefix = "nut-popup";
var baseStyle = {
zIndex: index,
animationDuration: "".concat(duration, "s")
};
var overlayStyles = _objectSpread(_objectSpread({}, overlayStyle), baseStyle);
var popStyles = _objectSpread(_objectSpread({}, style), baseStyle);
var popClassName = classNames((_classNames = {
round
}, _defineProperty(_classNames, "".concat(classPrefix), true), _defineProperty(_classNames, "".concat(classPrefix, "-").concat(position), true), _defineProperty(_classNames, "".concat(className || ""), true), _classNames));
var closeClasses = classNames((_classNames2 = {}, _defineProperty(_classNames2, "".concat(classPrefix, "__close-icon"), true), _defineProperty(_classNames2, "".concat(classPrefix, "__close-icon--").concat(closeIconPosition), true), _classNames2));
var open = function open2() {
if (!innerVisible) {
setInnerVisible(true);
setIndex(++_zIndex);
}
if (destroyOnClose) {
setShowChildren(true);
}
onOpen2 && onOpen2();
};
var close = function close2() {
if (innerVisible) {
setInnerVisible(false);
if (destroyOnClose) {
setTimeout(function() {
setShowChildren(false);
}, Number(duration) * 1e3);
}
onClose2 && onClose2();
}
};
var onHandleClickOverlay = function onHandleClickOverlay2(e) {
e.stopPropagation();
if (closeOnOverlayClick) {
var closed = onOverlayClick2 && onOverlayClick2(e);
closed && close();
}
};
var onHandleClick = function onHandleClick2(e) {
onClick && onClick(e);
};
var onHandleClickCloseIcon = function onHandleClickCloseIcon2(e) {
var closed = onCloseIconClick2 && onCloseIconClick2(e);
closed && close();
};
var onHandleOpened = function onHandleOpened2(e) {
afterShow && afterShow();
};
var onHandleClosed = function onHandleClosed2(e) {
afterClose && afterClose();
};
var resolveContainer = function resolveContainer2(getContainer) {
var container = typeof getContainer === "function" ? getContainer() : getContainer;
return container || document.body;
};
var renderToContainer = function renderToContainer2(getContainer, node) {
if (getContainer) {
var container = resolveContainer(getContainer);
return createPortal(node, container);
}
return node;
};
var renderIcon = function renderIcon2() {
if (closeable) {
return React__default.createElement("div", {
className: closeClasses,
onClick: onHandleClickCloseIcon
}, React__default.isValidElement(closeIcon) ? closeIcon : React__default.createElement(kr, {
size: 16
}));
}
return null;
};
var renderTitle = function renderTitle2() {
return React__default.createElement(React__default.Fragment, null, position === "bottom" && React__default.createElement(React__default.Fragment, null, left && React__default.createElement("div", {
className: "".concat(classPrefix, "-left-icon")
}, left), title && React__default.createElement("div", {
className: "".concat(classPrefix, "-title")
}, title)));
};
var renderPop = function renderPop2() {
return React__default.createElement(CSSTransition, {
classNames: transitionName,
unmountOnExit: true,
timeout: 300,
"in": innerVisible,
onEntered: onHandleOpened,
onExited: onHandleClosed
}, React__default.createElement("div", {
style: popStyles,
className: popClassName,
onClick: onHandleClick
}, renderTitle(), renderIcon(), showChildren ? children : ""));
};
var renderNode = function renderNode2() {
return React__default.createElement(React__default.Fragment, null, overlay ? React__default.createElement(React__default.Fragment, null, React__default.createElement(Overlay, {
style: overlayStyles,
className: overlayClassName,
visible: innerVisible,
closeOnOverlayClick,
zIndex,
lockScroll,
duration,
onClick: onHandleClickOverlay
}), renderPop()) : React__default.createElement(React__default.Fragment, null, renderPop()));
};
useEffect(function() {
visible && open();
!visible && close();
}, [visible]);
useEffect(function() {
setTransitionName(transition || "".concat(classPrefix, "-slide-").concat(position));
}, [position, transition]);
return React__default.createElement(React__default.Fragment, null, renderToContainer(portal, renderNode()));
};
Popup.defaultProps = defaultProps;
Popup.displayName = "NutPopup";
export {
Popup as P
};