@yncoder/element-react
Version:
Element UI for React
275 lines (235 loc) • 8.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
var _defineProperty3 = _interopRequireDefault(_defineProperty2);
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 React = _interopRequireWildcard(_react);
var _libs = require('../../libs');
var _ajax = require('./ajax');
var _ajax2 = _interopRequireDefault(_ajax);
var _Cover = require('./Cover');
var _Cover2 = _interopRequireDefault(_Cover);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
(function () {
var enterModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.enterModule : undefined;
enterModule && enterModule(module);
})();
var __signature__ = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default.signature : function (a) {
return a;
};
var AjaxUpload = function (_Component) {
(0, _inherits3.default)(AjaxUpload, _Component);
function AjaxUpload(props) {
(0, _classCallCheck3.default)(this, AjaxUpload);
return (0, _possibleConstructorReturn3.default)(this, (AjaxUpload.__proto__ || Object.getPrototypeOf(AjaxUpload)).call(this, props));
}
(0, _createClass3.default)(AjaxUpload, [{
key: 'isImage',
value: function isImage(str) {
return str.indexOf('image') !== -1;
}
}, {
key: 'handleChange',
value: function handleChange(e) {
if (e.target instanceof HTMLInputElement) {
var files = e.target.files;
if (!files) {
return;
}
this.uploadFiles(files);
this.refs.input.value = null;
}
}
}, {
key: 'uploadFiles',
value: function uploadFiles(files) {
var _this2 = this;
var _props = this.props,
multiple = _props.multiple,
limit = _props.limit,
onExceed = _props.onExceed,
fileList = _props.fileList;
if (limit && fileList.length + files.length > limit) {
onExceed && onExceed(files, fileList);
return;
}
var postFiles = Array.prototype.slice.call(files);
if (postFiles.length === 0) {
return;
}
if (!multiple) {
postFiles = postFiles.slice(0, 1);
}
postFiles.forEach(function (file) {
_this2.props.onStart(file);
if (_this2.props.autoUpload) _this2.upload(file);
});
}
}, {
key: 'upload',
value: function upload(rawFile, file) {
var _this3 = this;
var beforeUpload = this.props.beforeUpload;
if (!beforeUpload) {
return this.post(rawFile);
}
var before = beforeUpload(rawFile);
if (before && before.then) {
before.then(function (processedFile) {
if (Object.prototype.toString.call(processedFile) === '[object File]') {
_this3.post(processedFile);
} else {
_this3.post(rawFile);
}
}, function () {
if (file && typeof _this3.props.onRemove === 'function') _this3.props.onRemove(file);
});
} else if (before !== false) {
this.post(rawFile);
} else {
if (file && typeof this.props.onRemove === 'function') this.props.onRemove(file);
}
}
}, {
key: 'post',
value: function post(file) {
var _props2 = this.props,
filename = _props2.name,
headers = _props2.headers,
withCredentials = _props2.withCredentials,
data = _props2.data,
action = _props2.action,
_onProgress = _props2.onProgress,
_onSuccess = _props2.onSuccess,
_onError = _props2.onError;
var _props$httpRequest = this.props.httpRequest,
httpRequest = _props$httpRequest === undefined ? _ajax2.default : _props$httpRequest;
var req = httpRequest({
headers: headers,
withCredentials: withCredentials,
file: file,
data: data,
filename: filename,
action: action,
onProgress: function onProgress(e) {
return _onProgress(e, file);
},
onSuccess: function onSuccess(res) {
return _onSuccess(res, file);
},
onError: function onError(err) {
return _onError(err, file);
}
});
if (req && req.then) {
req.then(_onSuccess, _onError);
}
}
}, {
key: 'handleClick',
value: function handleClick() {
if (!this.props.disabled) {
this.refs.input.click();
}
}
}, {
key: 'render',
value: function render() {
var _this4 = this;
var _props3 = this.props,
drag = _props3.drag,
multiple = _props3.multiple,
accept = _props3.accept,
listType = _props3.listType,
disabled = _props3.disabled;
return React.createElement(
'div',
{
className: this.classNames((0, _defineProperty3.default)({
'el-upload': true
}, 'el-upload--' + listType, true)),
onClick: function onClick() {
return _this4.handleClick();
}
},
drag ? React.createElement(
_Cover2.default,
{ disabled: disabled, onFile: function onFile(file) {
return _this4.uploadFiles(file);
} },
this.props.children
) : this.props.children,
React.createElement('input', {
className: 'el-upload__input',
type: 'file',
ref: 'input',
onChange: function onChange(e) {
return _this4.handleChange(e);
},
multiple: multiple,
accept: accept
})
);
}
}, {
key: '__reactstandin__regenerateByEval',
// @ts-ignore
value: function __reactstandin__regenerateByEval(key, code) {
// @ts-ignore
this[key] = eval(code);
}
}]);
return AjaxUpload;
}(_libs.Component);
AjaxUpload.defaultProps = {
name: 'file'
};
var _default = AjaxUpload;
exports.default = _default;
AjaxUpload.propTypes = {
drag: _libs.PropTypes.bool,
data: _libs.PropTypes.object,
action: _libs.PropTypes.string.isRequired,
name: _libs.PropTypes.string,
accept: _libs.PropTypes.string,
headers: _libs.PropTypes.object,
withCredentials: _libs.PropTypes.bool,
multiple: _libs.PropTypes.bool,
onStart: _libs.PropTypes.func,
onProgress: _libs.PropTypes.func,
onSuccess: _libs.PropTypes.func,
onError: _libs.PropTypes.func,
beforeUpload: _libs.PropTypes.func,
autoUpload: _libs.PropTypes.bool,
listType: _libs.PropTypes.string,
fileList: _libs.PropTypes.array,
disabled: _libs.PropTypes.bool,
limit: _libs.PropTypes.number,
onExceed: _libs.PropTypes.func,
httpRequest: _libs.PropTypes.func
};
;
(function () {
var reactHotLoader = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.default : undefined;
if (!reactHotLoader) {
return;
}
reactHotLoader.register(AjaxUpload, 'AjaxUpload', 'src/upload/AjaxUpload.jsx');
reactHotLoader.register(_default, 'default', 'src/upload/AjaxUpload.jsx');
})();
;
(function () {
var leaveModule = typeof reactHotLoaderGlobal !== 'undefined' ? reactHotLoaderGlobal.leaveModule : undefined;
leaveModule && leaveModule(module);
})();