UNPKG

shineout

Version:

Shein 前端组件库

168 lines (133 loc) 6.09 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _Spin = _interopRequireDefault(require("../Spin")); var _component = require("../component"); var _styles = require("./styles"); var _Button = _interopRequireDefault(require("../Button")); var _Upload = _interopRequireDefault(require("./Upload")); var _config = require("../config"); var SPIN = function SPIN(color) { return _react.default.createElement("span", { className: (0, _styles.uploadClass)('bg-spin') }, _react.default.createElement(_Spin.default, { size: 10, name: "ring", color: color })); }; var handleKeyDown = function handleKeyDown(e) { if (e.keyCode === 13) e.target.click(); }; var DefaultProps = { type: 'primary', size: 'default', outline: false }; var Progress = /*#__PURE__*/ function (_PureComponent) { (0, _inheritsLoose2.default)(Progress, _PureComponent); function Progress(props) { var _this; _this = _PureComponent.call(this, props) || this; (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleStart", void 0); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), "handleOver", void 0); _this.state = { progress: -1 }; _this.handleError = _this.handleError.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleSuccess = _this.handleSuccess.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleProgress = _this.handleProgress.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); _this.handleStart = _this.handleChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), 0); _this.handleOver = _this.handleChange.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)), -1); _this.handleUpload = _this.handleUpload.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this))); return _this; } var _proto = Progress.prototype; _proto.handleChange = function handleChange(p) { this.setState({ progress: p }); }; _proto.handleProgress = function handleProgress(file) { this.handleChange(file.process); }; _proto.handleError = function handleError(xhr, file) { var onError = this.props.onError; var msg; if (onError) msg = onError(xhr, file); this.handleOver(); return msg; }; _proto.handleSuccess = function handleSuccess(value) { var onSuccess = this.props.onSuccess; var result = value; if (onSuccess) { for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } // @ts-ignore result = onSuccess.apply(void 0, [value].concat(args)); } this.handleOver(); return result; }; _proto.handleUpload = function handleUpload(e) { var uploading = this.state.progress >= 0; if (uploading) e.stopPropagation(); }; _proto.renderLoadingView = function renderLoadingView(color) { var _this$props = this.props, placeholder = _this$props.placeholder, loading = _this$props.loading; return (0, _react.isValidElement)(loading) ? _react.default.createElement("span", null, loading) : _react.default.createElement("span", null, SPIN(color), typeof loading === 'string' ? loading : placeholder); }; _proto.render = function render() { var _style; var _this$props2 = this.props, placeholder = _this$props2.placeholder, type = _this$props2.type, size = _this$props2.size, outline = _this$props2.outline, others = (0, _objectWithoutPropertiesLoose2.default)(_this$props2, ["placeholder", "type", "size", "outline"]); var uploading = this.state.progress >= 0; var style = (_style = {}, _style[(0, _config.isRTL)() ? 'left' : 'right'] = uploading ? 100 - this.state.progress + "%" : '100%', _style); return _react.default.createElement(_Upload.default, (0, _extends2.default)({}, others, { limit: undefined, onProgress: this.handleProgress, onStart: this.handleStart, showUploadList: false, onError: this.handleError, onSuccess: this.handleSuccess }), _react.default.createElement(_Button.default, { tabIndex: others.disabled ? -1 : 0, disabled: others.disabled, className: (0, _styles.uploadClass)('button', uploading && 'uploading'), type: type, size: size, outline: outline, onClick: this.handleUpload, onKeyDown: handleKeyDown }, uploading && [_react.default.createElement("div", { key: "cover", className: (0, _styles.uploadClass)('cover') }), _react.default.createElement("div", { key: "bg", style: style, className: (0, _styles.uploadClass)('bg') }, this.renderLoadingView('#fff'))], _react.default.createElement("span", null, uploading ? this.renderLoadingView() : placeholder))); }; return Progress; }(_component.PureComponent); (0, _defineProperty2.default)(Progress, "defaultProps", DefaultProps); var _default = Progress; exports.default = _default;