UNPKG

jc-biz-components

Version:

jc component library based on Antd

183 lines (146 loc) 5.81 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _upload = require('antd/lib/upload'); var _upload2 = _interopRequireDefault(_upload); var _icon = require('antd/lib/icon'); var _icon2 = _interopRequireDefault(_icon); var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck'); var _classCallCheck3 = _interopRequireDefault(_classCallCheck2); var _createClass2 = require('babel-runtime/helpers/createClass'); var _createClass3 = _interopRequireDefault(_createClass2); var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn'); var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2); var _inherits2 = require('babel-runtime/helpers/inherits'); var _inherits3 = _interopRequireDefault(_inherits2); require('antd/lib/upload/style'); require('antd/lib/icon/style'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _reactDom = require('react-dom'); var _reactDom2 = _interopRequireDefault(_reactDom); var _utils = require('../jc-upload/utils'); var _modal = require('../jc-modal'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var SortableUpload = function (_Component) { (0, _inherits3['default'])(SortableUpload, _Component); function SortableUpload() { var _ref; var _temp, _this, _ret; (0, _classCallCheck3['default'])(this, SortableUpload); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = (0, _possibleConstructorReturn3['default'])(this, (_ref = SortableUpload.__proto__ || Object.getPrototypeOf(SortableUpload)).call.apply(_ref, [this].concat(args))), _this), _this.state = { mouseInAction: false }, _this.onChange = function (info) { _this.fileList = info.fileList; var onChange = _this.props.onChange; if (onChange && info.file && info.file.originFileObj || !info.file) { onChange(info); } }, _temp), (0, _possibleConstructorReturn3['default'])(_this, _ret); } (0, _createClass3['default'])(SortableUpload, [{ key: 'handleOrderChange', value: function handleOrderChange(i, index) { if (this.fileList) { var modifyFileList = (0, _utils.changeIndex)(this.fileList[i], this.fileList, index); this.Upload.onChange({ fileList: modifyFileList }); } } }, { key: 'componentDidUpdate', value: function componentDidUpdate() { var _this2 = this; if (this.props.needOrder) { (_reactDom2['default'].findDOMNode(this).querySelectorAll('.ant-upload-list-item') || []).forEach(function (element, i) { var node = element.querySelector('.' + _this2.props.prefixCls + '-order'); if (!node) { var newDiv = document.createElement('span'); newDiv.className = _this2.props.prefixCls + '-order'; element.appendChild(newDiv); node = newDiv; } _reactDom2['default'].render(_react2['default'].createElement( 'span', { onMouseOver: function onMouseOver() { _this2.setState({ mouseInAction: true }); }, onMouseOut: function onMouseOut() { _this2.setState({ mouseInAction: false }); } }, _react2['default'].createElement(_icon2['default'], { style: { paddingRight: 8 }, type: 'left', onClick: _this2.handleOrderChange.bind(_this2, i, 0) }), _react2['default'].createElement(_icon2['default'], { style: { paddingLeft: 8 }, type: 'right', onClick: _this2.handleOrderChange.bind(_this2, i, 1) }) ), node); }); } } }, { key: 'render', value: function render() { var _this3 = this; var uploadButton = _react2['default'].createElement( 'div', null, _react2['default'].createElement(_icon2['default'], { type: 'plus' }), _react2['default'].createElement( 'div', { className: 'ant-upload-text' }, '\u56FE\u7247\u4E0A\u4F20' ) ); return _react2['default'].createElement( _upload2['default'], (0, _extends3['default'])({ ref: function ref(Upload) { _this3.Upload = _upload2['default']; }, className: this.props.prefixCls + ' ' + (this.state.mouseInAction ? this.props.prefixCls + '-hover' : ''), onPreview: function onPreview(file) { var html = _react2['default'].createElement('img', { alt: 'preview', style: { width: '100%' }, src: file.url }); (0, _modal.showModalWrapper)(html); } }, this.props, { prefixCls: undefined, onChange: this.onChange.bind(this) }), (this.fileList || []).length >= this.props.max ? null : this.props.children || uploadButton ); } }]); return SortableUpload; }(_react.Component); SortableUpload.propTypes = { needOrder: _propTypes2['default'].bool, max: _propTypes2['default'].number }; SortableUpload.defaultProps = { needOrder: false, max: 999999, prefixCls: 'jc-sortable-upload', beforeUpload: _utils.beforeUpload }; exports['default'] = SortableUpload; module.exports = exports['default'];