UNPKG

35.2 kBJavaScriptView Raw
1module.exports =
2/******/ (function(modules) { // webpackBootstrap
3/******/ // The module cache
4/******/ var installedModules = {};
5/******/
6/******/ // The require function
7/******/ function __webpack_require__(moduleId) {
8/******/
9/******/ // Check if module is in cache
10/******/ if(installedModules[moduleId]) {
11/******/ return installedModules[moduleId].exports;
12/******/ }
13/******/ // Create a new module (and put it into the cache)
14/******/ var module = installedModules[moduleId] = {
15/******/ i: moduleId,
16/******/ l: false,
17/******/ exports: {}
18/******/ };
19/******/
20/******/ // Execute the module function
21/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
22/******/
23/******/ // Flag the module as loaded
24/******/ module.l = true;
25/******/
26/******/ // Return the exports of the module
27/******/ return module.exports;
28/******/ }
29/******/
30/******/
31/******/ // expose the modules object (__webpack_modules__)
32/******/ __webpack_require__.m = modules;
33/******/
34/******/ // expose the module cache
35/******/ __webpack_require__.c = installedModules;
36/******/
37/******/ // define getter function for harmony exports
38/******/ __webpack_require__.d = function(exports, name, getter) {
39/******/ if(!__webpack_require__.o(exports, name)) {
40/******/ Object.defineProperty(exports, name, {
41/******/ configurable: false,
42/******/ enumerable: true,
43/******/ get: getter
44/******/ });
45/******/ }
46/******/ };
47/******/
48/******/ // getDefaultExport function for compatibility with non-harmony modules
49/******/ __webpack_require__.n = function(module) {
50/******/ var getter = module && module.__esModule ?
51/******/ function getDefault() { return module['default']; } :
52/******/ function getModuleExports() { return module; };
53/******/ __webpack_require__.d(getter, 'a', getter);
54/******/ return getter;
55/******/ };
56/******/
57/******/ // Object.prototype.hasOwnProperty.call
58/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
59/******/
60/******/ // __webpack_public_path__
61/******/ __webpack_require__.p = "/dist/";
62/******/
63/******/ // Load entry module and return exports
64/******/ return __webpack_require__(__webpack_require__.s = 287);
65/******/ })
66/************************************************************************/
67/******/ ({
68
69/***/ 0:
70/***/ (function(module, exports) {
71
72/* globals __VUE_SSR_CONTEXT__ */
73
74// IMPORTANT: Do NOT use ES2015 features in this file.
75// This module is a runtime utility for cleaner component module output and will
76// be included in the final webpack user bundle.
77
78module.exports = function normalizeComponent (
79 rawScriptExports,
80 compiledTemplate,
81 functionalTemplate,
82 injectStyles,
83 scopeId,
84 moduleIdentifier /* server only */
85) {
86 var esModule
87 var scriptExports = rawScriptExports = rawScriptExports || {}
88
89 // ES6 modules interop
90 var type = typeof rawScriptExports.default
91 if (type === 'object' || type === 'function') {
92 esModule = rawScriptExports
93 scriptExports = rawScriptExports.default
94 }
95
96 // Vue.extend constructor export interop
97 var options = typeof scriptExports === 'function'
98 ? scriptExports.options
99 : scriptExports
100
101 // render functions
102 if (compiledTemplate) {
103 options.render = compiledTemplate.render
104 options.staticRenderFns = compiledTemplate.staticRenderFns
105 options._compiled = true
106 }
107
108 // functional template
109 if (functionalTemplate) {
110 options.functional = true
111 }
112
113 // scopedId
114 if (scopeId) {
115 options._scopeId = scopeId
116 }
117
118 var hook
119 if (moduleIdentifier) { // server build
120 hook = function (context) {
121 // 2.3 injection
122 context =
123 context || // cached call
124 (this.$vnode && this.$vnode.ssrContext) || // stateful
125 (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
126 // 2.2 with runInNewContext: true
127 if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
128 context = __VUE_SSR_CONTEXT__
129 }
130 // inject component styles
131 if (injectStyles) {
132 injectStyles.call(this, context)
133 }
134 // register component module identifier for async chunk inferrence
135 if (context && context._registeredComponents) {
136 context._registeredComponents.add(moduleIdentifier)
137 }
138 }
139 // used by ssr in case component is cached and beforeCreate
140 // never gets called
141 options._ssrRegister = hook
142 } else if (injectStyles) {
143 hook = injectStyles
144 }
145
146 if (hook) {
147 var functional = options.functional
148 var existing = functional
149 ? options.render
150 : options.beforeCreate
151
152 if (!functional) {
153 // inject component registration as beforeCreate hook
154 options.beforeCreate = existing
155 ? [].concat(existing, hook)
156 : [hook]
157 } else {
158 // for template-only hot-reload because in that case the render fn doesn't
159 // go through the normalizer
160 options._injectStyles = hook
161 // register for functioal component in vue file
162 options.render = function renderWithStyleInjection (h, context) {
163 hook.call(context)
164 return existing(h, context)
165 }
166 }
167 }
168
169 return {
170 esModule: esModule,
171 exports: scriptExports,
172 options: options
173 }
174}
175
176
177/***/ }),
178
179/***/ 287:
180/***/ (function(module, exports, __webpack_require__) {
181
182"use strict";
183
184
185exports.__esModule = true;
186
187var _src = __webpack_require__(288);
188
189var _src2 = _interopRequireDefault(_src);
190
191function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
192
193/* istanbul ignore next */
194_src2.default.install = function (Vue) {
195 Vue.component(_src2.default.name, _src2.default);
196};
197
198exports.default = _src2.default;
199
200/***/ }),
201
202/***/ 288:
203/***/ (function(module, __webpack_exports__, __webpack_require__) {
204
205"use strict";
206Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
207/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__ = __webpack_require__(289);
208/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__);
209var normalizeComponent = __webpack_require__(0)
210/* script */
211
212/* template */
213var __vue_template__ = null
214/* template functional */
215 var __vue_template_functional__ = false
216/* styles */
217var __vue_styles__ = null
218/* scopeId */
219var __vue_scopeId__ = null
220/* moduleIdentifier (server only) */
221var __vue_module_identifier__ = null
222var Component = normalizeComponent(
223 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default.a,
224 __vue_template__,
225 __vue_template_functional__,
226 __vue_styles__,
227 __vue_scopeId__,
228 __vue_module_identifier__
229)
230
231/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
232
233
234/***/ }),
235
236/***/ 289:
237/***/ (function(module, exports, __webpack_require__) {
238
239"use strict";
240
241
242exports.__esModule = true;
243
244var _uploadList = __webpack_require__(290);
245
246var _uploadList2 = _interopRequireDefault(_uploadList);
247
248var _upload = __webpack_require__(293);
249
250var _upload2 = _interopRequireDefault(_upload);
251
252var _progress = __webpack_require__(52);
253
254var _progress2 = _interopRequireDefault(_progress);
255
256var _migrating = __webpack_require__(8);
257
258var _migrating2 = _interopRequireDefault(_migrating);
259
260function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
261
262function noop() {}
263
264exports.default = {
265 name: 'ElUpload',
266
267 mixins: [_migrating2.default],
268
269 components: {
270 ElProgress: _progress2.default,
271 UploadList: _uploadList2.default,
272 Upload: _upload2.default
273 },
274
275 provide: function provide() {
276 return {
277 uploader: this
278 };
279 },
280
281
282 inject: {
283 elForm: {
284 default: ''
285 }
286 },
287
288 props: {
289 action: {
290 type: String,
291 required: true
292 },
293 headers: {
294 type: Object,
295 default: function _default() {
296 return {};
297 }
298 },
299 data: Object,
300 multiple: Boolean,
301 name: {
302 type: String,
303 default: 'file'
304 },
305 drag: Boolean,
306 dragger: Boolean,
307 withCredentials: Boolean,
308 showFileList: {
309 type: Boolean,
310 default: true
311 },
312 accept: String,
313 type: {
314 type: String,
315 default: 'select'
316 },
317 beforeUpload: Function,
318 beforeRemove: Function,
319 onRemove: {
320 type: Function,
321 default: noop
322 },
323 onChange: {
324 type: Function,
325 default: noop
326 },
327 onPreview: {
328 type: Function
329 },
330 onSuccess: {
331 type: Function,
332 default: noop
333 },
334 onProgress: {
335 type: Function,
336 default: noop
337 },
338 onError: {
339 type: Function,
340 default: noop
341 },
342 fileList: {
343 type: Array,
344 default: function _default() {
345 return [];
346 }
347 },
348 autoUpload: {
349 type: Boolean,
350 default: true
351 },
352 listType: {
353 type: String,
354 default: 'text' // text,picture,picture-card
355 },
356 httpRequest: Function,
357 disabled: Boolean,
358 limit: Number,
359 onExceed: {
360 type: Function,
361 default: noop
362 }
363 },
364
365 data: function data() {
366 return {
367 uploadFiles: [],
368 dragOver: false,
369 draging: false,
370 tempIndex: 1
371 };
372 },
373
374
375 computed: {
376 uploadDisabled: function uploadDisabled() {
377 return this.disabled || (this.elForm || {}).disabled;
378 }
379 },
380
381 watch: {
382 fileList: {
383 immediate: true,
384 handler: function handler(fileList) {
385 var _this = this;
386
387 this.uploadFiles = fileList.map(function (item) {
388 item.uid = item.uid || Date.now() + _this.tempIndex++;
389 item.status = item.status || 'success';
390 return item;
391 });
392 }
393 }
394 },
395
396 methods: {
397 handleStart: function handleStart(rawFile) {
398 rawFile.uid = Date.now() + this.tempIndex++;
399 var file = {
400 status: 'ready',
401 name: rawFile.name,
402 size: rawFile.size,
403 percentage: 0,
404 uid: rawFile.uid,
405 raw: rawFile
406 };
407
408 if (this.listType === 'picture-card' || this.listType === 'picture') {
409 try {
410 file.url = URL.createObjectURL(rawFile);
411 } catch (err) {
412 console.error('[Element Error][Upload]', err);
413 return;
414 }
415 }
416
417 this.uploadFiles.push(file);
418 this.onChange(file, this.uploadFiles);
419 },
420 handleProgress: function handleProgress(ev, rawFile) {
421 var file = this.getFile(rawFile);
422 this.onProgress(ev, file, this.uploadFiles);
423 file.status = 'uploading';
424 file.percentage = ev.percent || 0;
425 },
426 handleSuccess: function handleSuccess(res, rawFile) {
427 var file = this.getFile(rawFile);
428
429 if (file) {
430 file.status = 'success';
431 file.response = res;
432
433 this.onSuccess(res, file, this.uploadFiles);
434 this.onChange(file, this.uploadFiles);
435 }
436 },
437 handleError: function handleError(err, rawFile) {
438 var file = this.getFile(rawFile);
439 var fileList = this.uploadFiles;
440
441 file.status = 'fail';
442
443 fileList.splice(fileList.indexOf(file), 1);
444
445 this.onError(err, file, this.uploadFiles);
446 this.onChange(file, this.uploadFiles);
447 },
448 handleRemove: function handleRemove(file, raw) {
449 var _this2 = this;
450
451 if (raw) {
452 file = this.getFile(raw);
453 }
454 var doRemove = function doRemove() {
455 _this2.abort(file);
456 var fileList = _this2.uploadFiles;
457 fileList.splice(fileList.indexOf(file), 1);
458 _this2.onRemove(file, fileList);
459 };
460
461 if (!this.beforeRemove) {
462 doRemove();
463 } else if (typeof this.beforeRemove === 'function') {
464 var before = this.beforeRemove(file, this.uploadFiles);
465 if (before && before.then) {
466 before.then(function () {
467 doRemove();
468 }, noop);
469 } else if (before !== false) {
470 doRemove();
471 }
472 }
473 },
474 getFile: function getFile(rawFile) {
475 var fileList = this.uploadFiles;
476 var target = void 0;
477 fileList.every(function (item) {
478 target = rawFile.uid === item.uid ? item : null;
479 return !target;
480 });
481 return target;
482 },
483 abort: function abort(file) {
484 this.$refs['upload-inner'].abort(file);
485 },
486 clearFiles: function clearFiles() {
487 this.uploadFiles = [];
488 },
489 submit: function submit() {
490 var _this3 = this;
491
492 this.uploadFiles.filter(function (file) {
493 return file.status === 'ready';
494 }).forEach(function (file) {
495 _this3.$refs['upload-inner'].upload(file.raw);
496 });
497 },
498 getMigratingConfig: function getMigratingConfig() {
499 return {
500 props: {
501 'default-file-list': 'default-file-list is renamed to file-list.',
502 'show-upload-list': 'show-upload-list is renamed to show-file-list.',
503 'thumbnail-mode': 'thumbnail-mode has been deprecated, you can implement the same effect according to this case: http://element.eleme.io/#/zh-CN/component/upload#yong-hu-tou-xiang-shang-chuan'
504 }
505 };
506 }
507 },
508
509 beforeDestroy: function beforeDestroy() {
510 this.uploadFiles.forEach(function (file) {
511 if (file.url && file.url.indexOf('blob:') === 0) {
512 URL.revokeObjectURL(file.url);
513 }
514 });
515 },
516 render: function render(h) {
517 var uploadList = void 0;
518
519 if (this.showFileList) {
520 uploadList = h(
521 _uploadList2.default,
522 {
523 attrs: {
524 disabled: this.uploadDisabled,
525 listType: this.listType,
526 files: this.uploadFiles,
527
528 handlePreview: this.onPreview },
529 on: {
530 'remove': this.handleRemove
531 }
532 },
533 []
534 );
535 }
536
537 var uploadData = {
538 props: {
539 type: this.type,
540 drag: this.drag,
541 action: this.action,
542 multiple: this.multiple,
543 'before-upload': this.beforeUpload,
544 'with-credentials': this.withCredentials,
545 headers: this.headers,
546 name: this.name,
547 data: this.data,
548 accept: this.accept,
549 fileList: this.uploadFiles,
550 autoUpload: this.autoUpload,
551 listType: this.listType,
552 disabled: this.uploadDisabled,
553 limit: this.limit,
554 'on-exceed': this.onExceed,
555 'on-start': this.handleStart,
556 'on-progress': this.handleProgress,
557 'on-success': this.handleSuccess,
558 'on-error': this.handleError,
559 'on-preview': this.onPreview,
560 'on-remove': this.handleRemove,
561 'http-request': this.httpRequest
562 },
563 ref: 'upload-inner'
564 };
565
566 var trigger = this.$slots.trigger || this.$slots.default;
567 var uploadComponent = h(
568 'upload',
569 uploadData,
570 [trigger]
571 );
572
573 return h(
574 'div',
575 null,
576 [this.listType === 'picture-card' ? uploadList : '', this.$slots.trigger ? [uploadComponent, this.$slots.default] : uploadComponent, this.$slots.tip, this.listType !== 'picture-card' ? uploadList : '']
577 );
578 }
579};
580
581/***/ }),
582
583/***/ 290:
584/***/ (function(module, __webpack_exports__, __webpack_require__) {
585
586"use strict";
587Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
588/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_list_vue__ = __webpack_require__(291);
589/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_list_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_list_vue__);
590/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1062ab12_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_upload_list_vue__ = __webpack_require__(292);
591var normalizeComponent = __webpack_require__(0)
592/* script */
593
594/* template */
595
596/* template functional */
597 var __vue_template_functional__ = false
598/* styles */
599var __vue_styles__ = null
600/* scopeId */
601var __vue_scopeId__ = null
602/* moduleIdentifier (server only) */
603var __vue_module_identifier__ = null
604var Component = normalizeComponent(
605 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_list_vue___default.a,
606 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_1062ab12_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_upload_list_vue__["a" /* default */],
607 __vue_template_functional__,
608 __vue_styles__,
609 __vue_scopeId__,
610 __vue_module_identifier__
611)
612
613/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
614
615
616/***/ }),
617
618/***/ 291:
619/***/ (function(module, exports, __webpack_require__) {
620
621"use strict";
622
623
624exports.__esModule = true;
625
626var _locale = __webpack_require__(5);
627
628var _locale2 = _interopRequireDefault(_locale);
629
630var _progress = __webpack_require__(52);
631
632var _progress2 = _interopRequireDefault(_progress);
633
634function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
635
636//
637//
638//
639//
640//
641//
642//
643//
644//
645//
646//
647//
648//
649//
650//
651//
652//
653//
654//
655//
656//
657//
658//
659//
660//
661//
662//
663//
664//
665//
666//
667//
668//
669//
670//
671//
672//
673//
674//
675//
676//
677//
678//
679//
680//
681//
682//
683//
684//
685//
686//
687//
688//
689//
690//
691//
692//
693//
694//
695//
696//
697//
698
699exports.default = {
700 mixins: [_locale2.default],
701
702 data: function data() {
703 return {
704 focusing: false
705 };
706 },
707
708 components: { ElProgress: _progress2.default },
709
710 props: {
711 files: {
712 type: Array,
713 default: function _default() {
714 return [];
715 }
716 },
717 disabled: {
718 type: Boolean,
719 default: false
720 },
721 handlePreview: Function,
722 listType: String
723 },
724 methods: {
725 parsePercentage: function parsePercentage(val) {
726 return parseInt(val, 10);
727 },
728 handleClick: function handleClick(file) {
729 this.handlePreview && this.handlePreview(file);
730 }
731 }
732};
733
734/***/ }),
735
736/***/ 292:
737/***/ (function(module, __webpack_exports__, __webpack_require__) {
738
739"use strict";
740var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition-group',{class:[
741 'el-upload-list',
742 'el-upload-list--' + _vm.listType,
743 { 'is-disabled': _vm.disabled }
744 ],attrs:{"tag":"ul","name":"el-list"}},_vm._l((_vm.files),function(file,index){return _c('li',{key:index,class:['el-upload-list__item', 'is-' + file.status, _vm.focusing ? 'focusing' : ''],attrs:{"tabindex":"0"},on:{"keydown":function($event){if(!('button' in $event)&&_vm._k($event.keyCode,"delete",[8,46],$event.key)){ return null; }!_vm.disabled && _vm.$emit('remove', file)},"focus":function($event){_vm.focusing = true},"blur":function($event){_vm.focusing = false},"click":function($event){_vm.focusing = false}}},[(file.status !== 'uploading' && ['picture-card', 'picture'].indexOf(_vm.listType) > -1)?_c('img',{staticClass:"el-upload-list__item-thumbnail",attrs:{"src":file.url,"alt":""}}):_vm._e(),_c('a',{staticClass:"el-upload-list__item-name",on:{"click":function($event){_vm.handleClick(file)}}},[_c('i',{staticClass:"el-icon-document"}),_vm._v(_vm._s(file.name)+"\n ")]),_c('label',{staticClass:"el-upload-list__item-status-label"},[_c('i',{class:{
745 'el-icon-upload-success': true,
746 'el-icon-circle-check': _vm.listType === 'text',
747 'el-icon-check': ['picture-card', 'picture'].indexOf(_vm.listType) > -1
748 }})]),(!_vm.disabled)?_c('i',{staticClass:"el-icon-close",on:{"click":function($event){_vm.$emit('remove', file)}}}):_vm._e(),(!_vm.disabled)?_c('i',{staticClass:"el-icon-close-tip"},[_vm._v(_vm._s(_vm.t('el.upload.deleteTip')))]):_vm._e(),(file.status === 'uploading')?_c('el-progress',{attrs:{"type":_vm.listType === 'picture-card' ? 'circle' : 'line',"stroke-width":_vm.listType === 'picture-card' ? 6 : 2,"percentage":_vm.parsePercentage(file.percentage)}}):_vm._e(),(_vm.listType === 'picture-card')?_c('span',{staticClass:"el-upload-list__item-actions"},[(_vm.handlePreview && _vm.listType === 'picture-card')?_c('span',{staticClass:"el-upload-list__item-preview",on:{"click":function($event){_vm.handlePreview(file)}}},[_c('i',{staticClass:"el-icon-zoom-in"})]):_vm._e(),(!_vm.disabled)?_c('span',{staticClass:"el-upload-list__item-delete",on:{"click":function($event){_vm.$emit('remove', file)}}},[_c('i',{staticClass:"el-icon-delete"})]):_vm._e()]):_vm._e()],1)}))}
749var staticRenderFns = []
750var esExports = { render: render, staticRenderFns: staticRenderFns }
751/* harmony default export */ __webpack_exports__["a"] = (esExports);
752
753/***/ }),
754
755/***/ 293:
756/***/ (function(module, __webpack_exports__, __webpack_require__) {
757
758"use strict";
759Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
760/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_vue__ = __webpack_require__(294);
761/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_vue__);
762var normalizeComponent = __webpack_require__(0)
763/* script */
764
765/* template */
766var __vue_template__ = null
767/* template functional */
768 var __vue_template_functional__ = false
769/* styles */
770var __vue_styles__ = null
771/* scopeId */
772var __vue_scopeId__ = null
773/* moduleIdentifier (server only) */
774var __vue_module_identifier__ = null
775var Component = normalizeComponent(
776 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_vue___default.a,
777 __vue_template__,
778 __vue_template_functional__,
779 __vue_styles__,
780 __vue_scopeId__,
781 __vue_module_identifier__
782)
783
784/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
785
786
787/***/ }),
788
789/***/ 294:
790/***/ (function(module, exports, __webpack_require__) {
791
792"use strict";
793
794
795exports.__esModule = true;
796
797var _babelHelperVueJsxMergeProps = __webpack_require__(45);
798
799var _babelHelperVueJsxMergeProps2 = _interopRequireDefault(_babelHelperVueJsxMergeProps);
800
801var _ajax = __webpack_require__(295);
802
803var _ajax2 = _interopRequireDefault(_ajax);
804
805var _uploadDragger = __webpack_require__(296);
806
807var _uploadDragger2 = _interopRequireDefault(_uploadDragger);
808
809function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
810
811exports.default = {
812 inject: ['uploader'],
813 components: {
814 UploadDragger: _uploadDragger2.default
815 },
816 props: {
817 type: String,
818 action: {
819 type: String,
820 required: true
821 },
822 name: {
823 type: String,
824 default: 'file'
825 },
826 data: Object,
827 headers: Object,
828 withCredentials: Boolean,
829 multiple: Boolean,
830 accept: String,
831 onStart: Function,
832 onProgress: Function,
833 onSuccess: Function,
834 onError: Function,
835 beforeUpload: Function,
836 drag: Boolean,
837 onPreview: {
838 type: Function,
839 default: function _default() {}
840 },
841 onRemove: {
842 type: Function,
843 default: function _default() {}
844 },
845 fileList: Array,
846 autoUpload: Boolean,
847 listType: String,
848 httpRequest: {
849 type: Function,
850 default: _ajax2.default
851 },
852 disabled: Boolean,
853 limit: Number,
854 onExceed: Function
855 },
856
857 data: function data() {
858 return {
859 mouseover: false,
860 reqs: {}
861 };
862 },
863
864
865 methods: {
866 isImage: function isImage(str) {
867 return str.indexOf('image') !== -1;
868 },
869 handleChange: function handleChange(ev) {
870 var files = ev.target.files;
871
872 if (!files) return;
873 this.uploadFiles(files);
874 },
875 uploadFiles: function uploadFiles(files) {
876 var _this = this;
877
878 if (this.limit && this.fileList.length + files.length > this.limit) {
879 this.onExceed && this.onExceed(files, this.fileList);
880 return;
881 }
882
883 var postFiles = Array.prototype.slice.call(files);
884 if (!this.multiple) {
885 postFiles = postFiles.slice(0, 1);
886 }
887
888 if (postFiles.length === 0) {
889 return;
890 }
891
892 postFiles.forEach(function (rawFile) {
893 _this.onStart(rawFile);
894 if (_this.autoUpload) _this.upload(rawFile);
895 });
896 },
897 upload: function upload(rawFile) {
898 var _this2 = this;
899
900 this.$refs.input.value = null;
901
902 if (!this.beforeUpload) {
903 return this.post(rawFile);
904 }
905
906 var before = this.beforeUpload(rawFile);
907 if (before && before.then) {
908 before.then(function (processedFile) {
909 var fileType = Object.prototype.toString.call(processedFile);
910
911 if (fileType === '[object File]' || fileType === '[object Blob]') {
912 if (fileType === '[object Blob]') {
913 processedFile = new File([processedFile], rawFile.name, {
914 type: rawFile.type
915 });
916 }
917 for (var p in rawFile) {
918 if (rawFile.hasOwnProperty(p)) {
919 processedFile[p] = rawFile[p];
920 }
921 }
922 _this2.post(processedFile);
923 } else {
924 _this2.post(rawFile);
925 }
926 }, function () {
927 _this2.onRemove(null, rawFile);
928 });
929 } else if (before !== false) {
930 this.post(rawFile);
931 } else {
932 this.onRemove(null, rawFile);
933 }
934 },
935 abort: function abort(file) {
936 var reqs = this.reqs;
937
938 if (file) {
939 var uid = file;
940 if (file.uid) uid = file.uid;
941 if (reqs[uid]) {
942 reqs[uid].abort();
943 }
944 } else {
945 Object.keys(reqs).forEach(function (uid) {
946 if (reqs[uid]) reqs[uid].abort();
947 delete reqs[uid];
948 });
949 }
950 },
951 post: function post(rawFile) {
952 var _this3 = this;
953
954 var uid = rawFile.uid;
955
956 var options = {
957 headers: this.headers,
958 withCredentials: this.withCredentials,
959 file: rawFile,
960 data: this.data,
961 filename: this.name,
962 action: this.action,
963 onProgress: function onProgress(e) {
964 _this3.onProgress(e, rawFile);
965 },
966 onSuccess: function onSuccess(res) {
967 _this3.onSuccess(res, rawFile);
968 delete _this3.reqs[uid];
969 },
970 onError: function onError(err) {
971 _this3.onError(err, rawFile);
972 delete _this3.reqs[uid];
973 }
974 };
975 var req = this.httpRequest(options);
976 this.reqs[uid] = req;
977 if (req && req.then) {
978 req.then(options.onSuccess, options.onError);
979 }
980 },
981 handleClick: function handleClick() {
982 if (!this.disabled) {
983 this.$refs.input.value = null;
984 this.$refs.input.click();
985 }
986 },
987 handleKeydown: function handleKeydown(e) {
988 if (e.target !== e.currentTarget) return;
989 if (e.keyCode === 13 || e.keyCode === 32) {
990 this.handleClick();
991 }
992 }
993 },
994
995 render: function render(h) {
996 var handleClick = this.handleClick,
997 drag = this.drag,
998 name = this.name,
999 handleChange = this.handleChange,
1000 multiple = this.multiple,
1001 accept = this.accept,
1002 listType = this.listType,
1003 uploadFiles = this.uploadFiles,
1004 disabled = this.disabled,
1005 handleKeydown = this.handleKeydown;
1006
1007 var data = {
1008 class: {
1009 'el-upload': true
1010 },
1011 on: {
1012 click: handleClick,
1013 keydown: handleKeydown
1014 }
1015 };
1016 data.class['el-upload--' + listType] = true;
1017 return h(
1018 'div',
1019 (0, _babelHelperVueJsxMergeProps2.default)([data, {
1020 attrs: { tabindex: '0' }
1021 }]),
1022 [drag ? h(
1023 'upload-dragger',
1024 {
1025 attrs: { disabled: disabled },
1026 on: {
1027 'file': uploadFiles
1028 }
1029 },
1030 [this.$slots.default]
1031 ) : this.$slots.default, h(
1032 'input',
1033 { 'class': 'el-upload__input', attrs: { type: 'file', name: name, multiple: multiple, accept: accept },
1034 ref: 'input', on: {
1035 'change': handleChange
1036 }
1037 },
1038 []
1039 )]
1040 );
1041 }
1042};
1043
1044/***/ }),
1045
1046/***/ 295:
1047/***/ (function(module, exports, __webpack_require__) {
1048
1049"use strict";
1050
1051
1052exports.__esModule = true;
1053exports.default = upload;
1054function getError(action, option, xhr) {
1055 var msg = void 0;
1056 if (xhr.response) {
1057 msg = '' + (xhr.response.error || xhr.response);
1058 } else if (xhr.responseText) {
1059 msg = '' + xhr.responseText;
1060 } else {
1061 msg = 'fail to post ' + action + ' ' + xhr.status;
1062 }
1063
1064 var err = new Error(msg);
1065 err.status = xhr.status;
1066 err.method = 'post';
1067 err.url = action;
1068 return err;
1069}
1070
1071function getBody(xhr) {
1072 var text = xhr.responseText || xhr.response;
1073 if (!text) {
1074 return text;
1075 }
1076
1077 try {
1078 return JSON.parse(text);
1079 } catch (e) {
1080 return text;
1081 }
1082}
1083
1084function upload(option) {
1085 if (typeof XMLHttpRequest === 'undefined') {
1086 return;
1087 }
1088
1089 var xhr = new XMLHttpRequest();
1090 var action = option.action;
1091
1092 if (xhr.upload) {
1093 xhr.upload.onprogress = function progress(e) {
1094 if (e.total > 0) {
1095 e.percent = e.loaded / e.total * 100;
1096 }
1097 option.onProgress(e);
1098 };
1099 }
1100
1101 var formData = new FormData();
1102
1103 if (option.data) {
1104 Object.keys(option.data).forEach(function (key) {
1105 formData.append(key, option.data[key]);
1106 });
1107 }
1108
1109 formData.append(option.filename, option.file, option.file.name);
1110
1111 xhr.onerror = function error(e) {
1112 option.onError(e);
1113 };
1114
1115 xhr.onload = function onload() {
1116 if (xhr.status < 200 || xhr.status >= 300) {
1117 return option.onError(getError(action, option, xhr));
1118 }
1119
1120 option.onSuccess(getBody(xhr));
1121 };
1122
1123 xhr.open('post', action, true);
1124
1125 if (option.withCredentials && 'withCredentials' in xhr) {
1126 xhr.withCredentials = true;
1127 }
1128
1129 var headers = option.headers || {};
1130
1131 for (var item in headers) {
1132 if (headers.hasOwnProperty(item) && headers[item] !== null) {
1133 xhr.setRequestHeader(item, headers[item]);
1134 }
1135 }
1136 xhr.send(formData);
1137 return xhr;
1138}
1139
1140/***/ }),
1141
1142/***/ 296:
1143/***/ (function(module, __webpack_exports__, __webpack_require__) {
1144
1145"use strict";
1146Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
1147/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_dragger_vue__ = __webpack_require__(297);
1148/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_dragger_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_dragger_vue__);
1149/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_9f5d7848_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_upload_dragger_vue__ = __webpack_require__(298);
1150var normalizeComponent = __webpack_require__(0)
1151/* script */
1152
1153/* template */
1154
1155/* template functional */
1156 var __vue_template_functional__ = false
1157/* styles */
1158var __vue_styles__ = null
1159/* scopeId */
1160var __vue_scopeId__ = null
1161/* moduleIdentifier (server only) */
1162var __vue_module_identifier__ = null
1163var Component = normalizeComponent(
1164 __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_upload_dragger_vue___default.a,
1165 __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_9f5d7848_hasScoped_false_preserveWhitespace_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_upload_dragger_vue__["a" /* default */],
1166 __vue_template_functional__,
1167 __vue_styles__,
1168 __vue_scopeId__,
1169 __vue_module_identifier__
1170)
1171
1172/* harmony default export */ __webpack_exports__["default"] = (Component.exports);
1173
1174
1175/***/ }),
1176
1177/***/ 297:
1178/***/ (function(module, exports, __webpack_require__) {
1179
1180"use strict";
1181
1182
1183exports.__esModule = true;
1184//
1185//
1186//
1187//
1188//
1189//
1190//
1191//
1192//
1193//
1194//
1195//
1196//
1197
1198exports.default = {
1199 name: 'ElUploadDrag',
1200 props: {
1201 disabled: Boolean
1202 },
1203 inject: {
1204 uploader: {
1205 default: ''
1206 }
1207 },
1208 data: function data() {
1209 return {
1210 dragover: false
1211 };
1212 },
1213
1214 methods: {
1215 onDragover: function onDragover() {
1216 if (!this.disabled) {
1217 this.dragover = true;
1218 }
1219 },
1220 onDrop: function onDrop(e) {
1221 if (this.disabled || !this.uploader) return;
1222 var accept = this.uploader.accept;
1223 this.dragover = false;
1224 if (!accept) {
1225 this.$emit('file', e.dataTransfer.files);
1226 return;
1227 }
1228 this.$emit('file', [].slice.call(e.dataTransfer.files).filter(function (file) {
1229 var type = file.type,
1230 name = file.name;
1231
1232 var extension = name.indexOf('.') > -1 ? '.' + name.split('.').pop() : '';
1233 var baseType = type.replace(/\/.*$/, '');
1234 return accept.split(',').map(function (type) {
1235 return type.trim();
1236 }).filter(function (type) {
1237 return type;
1238 }).some(function (acceptedType) {
1239 if (/\..+$/.test(acceptedType)) {
1240 return extension === acceptedType;
1241 }
1242 if (/\/\*$/.test(acceptedType)) {
1243 return baseType === acceptedType.replace(/\/\*$/, '');
1244 }
1245 if (/^[^\/]+\/[^\/]+$/.test(acceptedType)) {
1246 return type === acceptedType;
1247 }
1248 return false;
1249 });
1250 }));
1251 }
1252 }
1253};
1254
1255/***/ }),
1256
1257/***/ 298:
1258/***/ (function(module, __webpack_exports__, __webpack_require__) {
1259
1260"use strict";
1261var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"el-upload-dragger",class:{
1262 'is-dragover': _vm.dragover
1263 },on:{"drop":function($event){$event.preventDefault();_vm.onDrop($event)},"dragover":function($event){$event.preventDefault();_vm.onDragover($event)},"dragleave":function($event){$event.preventDefault();_vm.dragover = false}}},[_vm._t("default")],2)}
1264var staticRenderFns = []
1265var esExports = { render: render, staticRenderFns: staticRenderFns }
1266/* harmony default export */ __webpack_exports__["a"] = (esExports);
1267
1268/***/ }),
1269
1270/***/ 45:
1271/***/ (function(module, exports) {
1272
1273module.exports = require("babel-helper-vue-jsx-merge-props");
1274
1275/***/ }),
1276
1277/***/ 5:
1278/***/ (function(module, exports) {
1279
1280module.exports = require("element-ui/lib/mixins/locale");
1281
1282/***/ }),
1283
1284/***/ 52:
1285/***/ (function(module, exports) {
1286
1287module.exports = require("element-ui/lib/progress");
1288
1289/***/ }),
1290
1291/***/ 8:
1292/***/ (function(module, exports) {
1293
1294module.exports = require("element-ui/lib/mixins/migrating");
1295
1296/***/ })
1297
1298/******/ });
\No newline at end of file