mk-component
Version:
- 1、npm install mk-component --save
244 lines (194 loc) • 8.55 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
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);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _popover = require('../popover');
var _popover2 = _interopRequireDefault(_popover);
var _icon = require('../icon');
var _icon2 = _interopRequireDefault(_icon);
var _layout = require('../layout');
var _layout2 = _interopRequireDefault(_layout);
var _datagrid = require('../datagrid');
var _datagrid2 = _interopRequireDefault(_datagrid);
var _upload = require('../upload');
var _upload2 = _interopRequireDefault(_upload);
var _reactViewer = require('react-viewer');
var _reactViewer2 = _interopRequireDefault(_reactViewer);
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Column = _datagrid2.default.Column;
var Cell = _datagrid2.default.Cell;
var attachmentComponent = function (_Component) {
(0, _inherits3.default)(attachmentComponent, _Component);
function attachmentComponent() {
(0, _classCallCheck3.default)(this, attachmentComponent);
var _this = (0, _possibleConstructorReturn3.default)(this, (attachmentComponent.__proto__ || (0, _getPrototypeOf2.default)(attachmentComponent)).call(this));
_this.contentVisibleChange = function (visible) {
if (_this.state.isOpen) return;
_this.setState({ contentIsVisible: visible });
};
_this.download = function (index) {
return function () {
_this.props.onDownload && _this.props.onDownload(_this.props.data[index]);
};
};
_this.del = function (index) {
return function () {
_this.props.onDel && _this.props.onDel(_this.props.data[index]);
};
};
_this.getContent = function () {
var className = (0, _classnames2.default)((0, _defineProperty3.default)({
'mk-attachment-content': true
}, _this.props.contentClassName, !!_this.props.contentClassName));
var data = _this.props.data;
var columns = [_react2.default.createElement(Column, {
columnKey: 'link',
flexGrow: 1,
cell: function cell(ps) {
return _react2.default.createElement(
_popover2.default,
{
content: _this.getThumbnail(data[ps.rowIndex]),
arrowPointAtCenter: true,
placement: 'leftTop'
},
_react2.default.createElement(
Cell,
{ className: 'mk-attachment-content-link-cell' },
_react2.default.createElement(
'a',
{ onClick: function onClick(e) {
return _this.openViewer(ps.rowIndex, e);
} },
data[ps.rowIndex].alt
)
)
);
},
width: 100
}), _react2.default.createElement(Column, {
columnKey: 'option',
cell: function cell(ps) {
return _react2.default.createElement(
Cell,
null,
_react2.default.createElement(_icon2.default, { type: 'download', showStyle: 'showy', onClick: _this.download(ps.rowIndex), style: { marginRight: 8 } }),
_react2.default.createElement(_icon2.default, { type: 'delete', showStyle: 'softly', onClick: _this.del(ps.rowIndex) })
);
},
width: 70
})];
return _react2.default.createElement(
'div',
{ className: className },
_react2.default.createElement(_datagrid2.default, {
rowsCount: data ? data.length : 0,
rowHeight: 40,
columns: columns,
isFix: true,
height: 135,
width: 250
}),
_react2.default.createElement(
_layout2.default,
{ className: 'mk-attachment-content-footer' },
_react2.default.createElement(
_upload2.default,
(0, _extends3.default)({
showUploadList: false
}, _this.props.uploadProps),
_react2.default.createElement(
'a',
{ href: '#' },
'\u4E0A\u4F20',
_react2.default.createElement(_icon2.default, { type: 'upload' })
)
)
)
);
};
_this.getThumbnail = function (detail) {
return _react2.default.createElement(
'div',
{ style: { width: 200, height: 200 } },
_react2.default.createElement('img', { height: 200, width: 200, src: detail.src })
);
};
_this.openViewer = function (index, event) {
_this.setState({
isOpen: true,
activeIndex: index
});
};
_this.closeViewer = function () {
_this.setState({
isOpen: false
});
};
_this.state = {
isOpen: false,
activeIndex: 0,
contentIsVisible: false
};
return _this;
}
(0, _createClass3.default)(attachmentComponent, [{
key: 'render',
value: function render() {
var className = (0, _classnames2.default)((0, _defineProperty3.default)({
'mk-attachment': true
}, this.props.className, !!this.props.className));
return _react2.default.createElement(
_popover2.default,
{
overlayClassName: 'mk-attachment-popover',
content: this.getContent(),
placement: 'bottomRight',
onVisibleChange: this.contentVisibleChange,
visible: this.state.contentIsVisible,
title: '\u9644\u4EF6',
trigger: 'click'
},
_react2.default.createElement(
'a',
(0, _extends3.default)({}, this.props, { className: className }),
'\u9644\u4EF6'
),
this.renderViewer(this.props.data)
);
}
}, {
key: 'renderViewer',
value: function renderViewer(data) {
if (!data) return null;
return _react2.default.createElement(_reactViewer2.default, {
images: this.props.data,
visible: this.state.isOpen,
activeIndex: this.state.activeIndex,
container: null,
onClose: this.closeViewer
});
}
}]);
return attachmentComponent;
}(_react.Component);
exports.default = attachmentComponent;
module.exports = exports['default'];