dtd
Version:
根据数梦工场视觉规范打造的组件库,感谢react-components和ant design
1 lines • 7.11 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _defineProperty2=require("babel-runtime/helpers/defineProperty"),_defineProperty3=_interopRequireDefault(_defineProperty2),_extends2=require("babel-runtime/helpers/extends"),_extends3=_interopRequireDefault(_extends2),_classCallCheck2=require("babel-runtime/helpers/classCallCheck"),_classCallCheck3=_interopRequireDefault(_classCallCheck2),_createClass2=require("babel-runtime/helpers/createClass"),_createClass3=_interopRequireDefault(_createClass2),_possibleConstructorReturn2=require("babel-runtime/helpers/possibleConstructorReturn"),_possibleConstructorReturn3=_interopRequireDefault(_possibleConstructorReturn2),_inherits2=require("babel-runtime/helpers/inherits"),_inherits3=_interopRequireDefault(_inherits2),_react=require("react"),React=_interopRequireWildcard(_react),_rcUpload=require("rc-upload"),_rcUpload2=_interopRequireDefault(_rcUpload),_classnames=require("classnames"),_classnames2=_interopRequireDefault(_classnames),_lodash=require("lodash.uniqby"),_lodash2=_interopRequireDefault(_lodash),_LocaleReceiver=require("../locale-provider/LocaleReceiver"),_LocaleReceiver2=_interopRequireDefault(_LocaleReceiver),_default=require("../locale-provider/default"),_default2=_interopRequireDefault(_default),_UploadList=require("./UploadList"),_UploadList2=_interopRequireDefault(_UploadList),_utils=require("./utils"),_modal=require("../modal"),_modal2=_interopRequireDefault(_modal),_button=require("../button"),_button2=_interopRequireDefault(_button);function _interopRequireWildcard(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t}function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var Upload=function(e){function t(e){(0,_classCallCheck3.default)(this,t);var o=(0,_possibleConstructorReturn3.default)(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return o.onStart=function(e){var t=void 0,r=o.state.fileList.concat();(t=(0,_utils.fileToObject)(e)).status="uploading",r.push(t),o.onChange({file:t,fileList:r}),window.FormData||o.autoUpdateProgress(0,t)},o.onSuccess=function(e,t){o.clearProgressTimer();try{"string"==typeof e&&(e=JSON.parse(e))}catch(e){}var r=o.state.fileList,a=(0,_utils.getFileItem)(t,r);a&&(a.status="done",a.response=e,o.onChange({file:(0,_extends3.default)({},a),fileList:r}))},o.onProgress=function(e,t){var r=o.state.fileList,a=(0,_utils.getFileItem)(t,r);a&&(a.percent=e.percent,o.onChange({event:e,file:(0,_extends3.default)({},a),fileList:o.state.fileList}))},o.onError=function(e,t,r){o.clearProgressTimer();var a=o.state.fileList,l=(0,_utils.getFileItem)(r,a);l&&(l.error=e,l.response=t,l.status="error",o.onChange({file:(0,_extends3.default)({},l),fileList:a}),o.setState({visible:!0}))},o.handleManualRemove=function(e){o.upload.abort(e),e.status="removed",o.handleRemove(e)},o.onChange=function(e){"fileList"in o.props||o.setState({fileList:e.fileList});var t=o.props.onChange;t&&t(e)},o.onFileDrop=function(e){o.setState({dragState:e.type})},o.beforeUpload=function(e,t){if(!o.props.beforeUpload)return!0;var r=o.props.beforeUpload(e,t);return!1===r?(o.onChange({file:e,fileList:(0,_lodash2.default)(t.concat(o.state.fileList),function(e){return e.uid})}),!1):!r||!r.then||r},o.saveUpload=function(e){o.upload=e},o.renderUploadList=function(e){var t=o.props,r=t.showUploadList,a=t.listType,l=t.onPreview,s=r.showRemoveIcon,i=r.showPreviewIcon;return React.createElement(_UploadList2.default,{listType:a,items:o.state.fileList,onPreview:l,onRemove:o.handleManualRemove,showRemoveIcon:s,showPreviewIcon:i,locale:(0,_extends3.default)({},e,o.props.locale)})},o.handleOk=function(){o.setState({visible:!1})},o.handleCancel=function(){o.setState({visible:!1})},o.state={fileList:e.fileList||e.defaultFileList||[],dragState:"drop",visible:!1},o}return(0,_inherits3.default)(t,e),(0,_createClass3.default)(t,[{key:"componentWillUnmount",value:function(){this.clearProgressTimer()}},{key:"autoUpdateProgress",value:function(e,t){var r=this,a=(0,_utils.genPercentAdd)(),l=0;this.clearProgressTimer(),this.progressTimer=setInterval(function(){l=a(l),r.onProgress({percent:l},t)},200)}},{key:"handleRemove",value:function(r){var a=this,e=this.props.onRemove;Promise.resolve("function"==typeof e?e(r):e).then(function(e){if(!1!==e){var t=(0,_utils.removeFileItem)(r,a.state.fileList);t&&a.onChange({file:r,fileList:t})}})}},{key:"componentWillReceiveProps",value:function(e){"fileList"in e&&this.setState({fileList:e.fileList||[]})}},{key:"clearProgressTimer",value:function(){clearInterval(this.progressTimer)}},{key:"render",value:function(){var e,t=this.props,r=t.prefixCls,a=void 0===r?"":r,l=t.className,s=t.showUploadList,i=t.listType,o=t.type,n=t.disabled,u=t.children,c=t.message,d=(0,_extends3.default)({onStart:this.onStart,onError:this.onError,onProgress:this.onProgress,onSuccess:this.onSuccess},this.props,{beforeUpload:this.beforeUpload});delete d.className;var p=s?React.createElement(_LocaleReceiver2.default,{componentName:"Upload",defaultLocale:_default2.default.Upload},this.renderUploadList):null;if("drag"===o){var f,_=(0,_classnames2.default)(a,(f={},(0,_defineProperty3.default)(f,a+"-drag",!0),(0,_defineProperty3.default)(f,a+"-drag-uploading",this.state.fileList.some(function(e){return"uploading"===e.status})),(0,_defineProperty3.default)(f,a+"-drag-hover","dragover"===this.state.dragState),(0,_defineProperty3.default)(f,a+"-disabled",n),f));return React.createElement("span",{className:l},React.createElement("div",{className:_,onDrop:this.onFileDrop,onDragOver:this.onFileDrop,onDragLeave:this.onFileDrop},React.createElement(_rcUpload2.default,(0,_extends3.default)({},d,{ref:this.saveUpload,className:a+"-btn"}),React.createElement("div",{className:a+"-drag-container"},u))),p)}var h=(0,_classnames2.default)(a,(e={},(0,_defineProperty3.default)(e,a+"-select",!0),(0,_defineProperty3.default)(e,a+"-select-"+i,!0),(0,_defineProperty3.default)(e,a+"-disabled",n),e)),m=React.createElement("div",{className:h,style:{display:u?"":"none"}},React.createElement(_rcUpload2.default,(0,_extends3.default)({},d,{ref:this.saveUpload}))),v=[React.createElement(_button2.default,{key:"back",onClick:this.handleCancel},"取消"),React.createElement(_button2.default,{key:"submit",type:"primary",onClick:this.handleOk},"重新上传")],R="picture"===i||"picture-card"===i?"图片":"文件",b=React.createElement(_modal2.default,{title:"上传提示",visible:this.state.visible,onOk:this.handleOk,onCancel:this.handleCancel,footer:v},React.createElement("div",null,R,"上传失败")),g=c?React.createElement("div",{className:a+"-message"},c):null;return"picture-card"===i?React.createElement("span",{className:l},p,m,g,b):React.createElement("span",{className:l},m,g,p,b)}}]),t}(React.Component);(exports.default=Upload).defaultProps={prefixCls:"dt-upload",type:"select",multiple:!1,action:"",data:{},accept:"",beforeUpload:_utils.T,showUploadList:!0,listType:"text",className:"",disabled:!1,supportServerRender:!0},module.exports=exports.default;