UNPKG

zarm

Version:

基于 React 的移动端UI库

72 lines (67 loc) 3.13 kB
import _defineProperty from "@babel/runtime/helpers/defineProperty"; function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } import { createBEM } from '@zarm-design/bem'; import isFinite from 'lodash/isFinite'; import * as React from 'react'; import { ConfigContext } from '../config-provider'; import Transition from '../transition'; import { renderToContainer } from '../utils/dom'; var OpacityList = { normal: 0.55, light: 0.35, dark: 0.75 }; var Mask = /*#__PURE__*/React.forwardRef(function (props, ref) { var className = props.className, style = props.style, visible = props.visible, color = props.color, opacity = props.opacity, animationDuration = props.animationDuration, forceRender = props.forceRender, destroy = props.destroy, afterOpen = props.afterOpen, afterClose = props.afterClose, onClick = props.onClick, children = props.children, mountContainer = props.mountContainer; var _React$useContext = React.useContext(ConfigContext), prefixCls = _React$useContext.prefixCls, globalMountContainer = _React$useContext.mountContainer; var bem = createBEM('mask', { prefixCls: prefixCls }); var rgb = color === 'black' ? '0, 0, 0' : '255, 255, 255'; var backgroundOpacity = isFinite(opacity) ? opacity : OpacityList[opacity]; return /*#__PURE__*/React.createElement(Transition, { nodeRef: ref, visible: visible, tranisitionName: "".concat(prefixCls, "-fade"), duration: animationDuration, forceRender: forceRender, destroy: destroy, onEnter: function onEnter() { afterOpen === null || afterOpen === void 0 ? void 0 : afterOpen(); }, onLeaveEnd: function onLeaveEnd() { afterClose === null || afterClose === void 0 ? void 0 : afterClose(); } }, function (rest, setNodeRef) { return renderToContainer(mountContainer !== null && mountContainer !== void 0 ? mountContainer : globalMountContainer, /*#__PURE__*/React.createElement("div", { ref: setNodeRef, className: bem([className, rest.className]), style: _objectSpread(_objectSpread(_objectSpread({}, style), rest.style), {}, { backgroundColor: color === 'transparent' ? 'transparent' : "rgba(".concat(rgb, ", ").concat(backgroundOpacity, ")") }), onClick: onClick }, children)); }); }); Mask.displayName = 'Mask'; Mask.defaultProps = { visible: false, color: 'black', opacity: 'normal' }; export default Mask;