UNPKG

linkmore-design

Version:

🌈 🚀lm组件库。🚀

132 lines (129 loc) 5.09 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _CloseOutlined = _interopRequireDefault(require("@ant-design/icons/CloseOutlined")); var _classnames = _interopRequireDefault(require("classnames")); var _rcDialog = _interopRequireDefault(require("rc-dialog")); var React = _interopRequireWildcard(require("react")); var _button = _interopRequireDefault(require("../button")); var _button2 = require("../button/button"); var _SizeContext = _interopRequireDefault(require("../config-provider/SizeContext")); var _configProvider = require("../config-provider"); var _context = require("../form/context"); var _LocaleReceiver = _interopRequireDefault(require("../locale-provider/LocaleReceiver")); var _motion = require("../_util/motion"); var _styleChecker = require("../_util/styleChecker"); var _iconFont = _interopRequireDefault(require("../icon-font")); var _warning = _interopRequireDefault(require("../_util/warning")); var _locale = require("./locale"); let mousePosition; // ref: https://github.com/ant-design/ant-design/issues/15795 const getClickPosition = e => { mousePosition = { x: e.pageX, y: e.pageY }; // 100ms 内发生过点击事件,则从点击位置动画展示 // 否则直接 zoom 展示 // 这样可以兼容非点击方式展开 setTimeout(() => { mousePosition = null; }, 100); }; // 只有点击事件支持从鼠标位置动画展开 if ((0, _styleChecker.canUseDocElement)()) { document.documentElement.addEventListener('click', getClickPosition, true); } const Modal = props => { const { getPopupContainer: getContextPopupContainer, getPrefixCls, direction } = React.useContext(_configProvider.ConfigContext); const defaultFooterSize = React.useContext(_SizeContext.default) || 'middle'; const handleCancel = e => { const { onCancel } = props; onCancel?.(e); }; const handleOk = e => { const { onOk } = props; onOk?.(e); }; (0, _warning.default)(!('visible' in props), 'Modal', `\`visible\` will be removed in next major version, please use \`open\` instead.`); const { prefixCls: customizePrefixCls, footer, visible, open = false, wrapClassName, centered, getContainer, closeIcon, focusTriggerAfterClose = true, width = 552, size = 'default', ...restProps } = props; const prefixCls = getPrefixCls('modal', customizePrefixCls); const rootPrefixCls = getPrefixCls(); const defaultFooter = /*#__PURE__*/React.createElement(_LocaleReceiver.default, { componentName: "Modal", defaultLocale: (0, _locale.getConfirmLocale)() }, contextLocale => { const { okText, okType = 'primary', cancelText, confirmLoading = false } = props; return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_button.default, (0, _extends2.default)({ onClick: handleCancel, size: defaultFooterSize }, props.cancelButtonProps), cancelText || contextLocale.cancelText), /*#__PURE__*/React.createElement(_button.default, (0, _extends2.default)({}, (0, _button2.convertLegacyProps)(okType), { loading: confirmLoading, onClick: handleOk, type: "primary", size: defaultFooterSize }, props.okButtonProps), okText ?? contextLocale.okText)); }); const closeIconToRender = /*#__PURE__*/React.createElement("span", { className: `${prefixCls}-close-x` }, closeIcon || /*#__PURE__*/React.createElement(_iconFont.default, { type: "lm-icon-a-tongyongaRX" }) || /*#__PURE__*/React.createElement(_CloseOutlined.default, { className: `${prefixCls}-close-icon` })); const wrapClassNameExtended = (0, _classnames.default)('lm_modal', wrapClassName, { [`${prefixCls}-centered`]: !!centered, [`${prefixCls}-wrap-rtl`]: direction === 'rtl' }); return /*#__PURE__*/React.createElement(_context.NoFormStyle, { status: true, override: true }, /*#__PURE__*/React.createElement(_rcDialog.default, (0, _extends2.default)({ width: size === 'small' ? 416 : width }, restProps, { getContainer: getContainer === undefined ? getContextPopupContainer : getContainer, prefixCls: prefixCls, wrapClassName: wrapClassNameExtended, footer: footer === undefined ? defaultFooter : footer, visible: open || visible, mousePosition: restProps.mousePosition ?? mousePosition, onClose: handleCancel, closeIcon: closeIconToRender, focusTriggerAfterClose: focusTriggerAfterClose, transitionName: (0, _motion.getTransitionName)(rootPrefixCls, 'zoom', props.transitionName), maskTransitionName: (0, _motion.getTransitionName)(rootPrefixCls, 'fade', props.maskTransitionName) }))); }; var _default = Modal; exports.default = _default;