UNPKG

@forchange/aui

Version:

ai-boss 业务 ui 组件库

180 lines (149 loc) 5.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var React = _interopRequireWildcard(require("react")); var ReactDOM = _interopRequireWildcard(require("react-dom")); var _icon = _interopRequireDefault(require("antd/lib/icon")); require("antd/lib/icon/style/index.css"); var _classnames = _interopRequireDefault(require("classnames")); var _config = require("../style/config"); require("./style/index.css"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; if (obj != null) { var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } class PreviewImage extends React.Component { constructor(props) { super(props); _defineProperty(this, "escFunction", event => { if (event.keyCode === 27 && this.props.onCancel) { this.props.onCancel(event); } }); _defineProperty(this, "handleClose", e => { if (this.props.onCancel) { this.props.onCancel(e); } }); _defineProperty(this, "handleClick", currentSrc => { this.setState({ currentSrc }); }); _defineProperty(this, "handlePreNextPage", page => { const { list = [] } = this.props; const { currentSrc } = this.state; for (const i in list) { if (list[i] === currentSrc) { if (Number(i) === list.length - 1 && page === 1) { this.setState({ currentSrc: list[0] }); } else if (Number(i) === 0 && page === -1) { this.setState({ currentSrc: list[list.length - 1] }); } else { this.setState({ currentSrc: list[Number(i) + page] }); } } } }); this.state = { currentSrc: this.props.currentSrc ? this.props.currentSrc : this.props.list ? this.props.list.length !== 0 ? this.props.list[0] : '' : '' }; } // 是否支持键盘 esc 关闭 // currentSrc改变是触发 componentWillReceiveProps(nextProps) { if (nextProps.currentSrc !== this.props.currentSrc) { this.setState({ currentSrc: nextProps.currentSrc }); } } componentDidMount() { const { keyboard = true } = this.props; if (keyboard) { document.addEventListener('keydown', this.escFunction); } } // 清除操作 componentWillUnmount() { const { keyboard = true } = this.props; if (keyboard) { document.removeEventListener('keydown', this.escFunction); } } // 点击关右上角关闭按钮 render() { const { className, visible = false, closable = true, list = [], getContainer } = this.props; const prefixCls = (0, _config.getPrefixCls)('preview-image'); const previewImageCls = (0, _classnames.default)(prefixCls, className); const DOM = visible ? React.createElement("section", { className: previewImageCls }, closable && React.createElement("span", { className: `${prefixCls}-close-x`, onClick: this.handleClose }, React.createElement(_icon.default, { type: "close" })), React.createElement("span", { className: `${prefixCls}-pagenation ${prefixCls}-pagenation-left`, onClick: this.handlePreNextPage.bind(this, -1) }, React.createElement(_icon.default, { type: "left" })), React.createElement("span", { className: `${prefixCls}-pagenation ${prefixCls}-pagenation-right`, onClick: this.handlePreNextPage.bind(this, 1) }, React.createElement(_icon.default, { type: "right" })), React.createElement("div", { className: `${prefixCls}-content` }, React.createElement("img", { className: `${prefixCls}-content-image`, src: this.state.currentSrc })), React.createElement("footer", { className: `${prefixCls}-footer` }, React.createElement("div", { className: `${prefixCls}-footer-pagenation` }, list.map((item, index) => React.createElement("img", { key: index, src: item, alt: "\u56FE\u7247", onClick: this.handleClick.bind(this, item), className: (0, _classnames.default)(`${prefixCls}-footer-pagenation-item`, { 'aui-pagenation-item-active': item === this.state.currentSrc }) }))))) : null; return ReactDOM.createPortal(DOM, getContainer === undefined ? document.body : typeof getContainer === 'function' ? getContainer() ? getContainer() : document.body : getContainer); } } var _default = PreviewImage; exports.default = _default;