Commit 0e762e24b980e63830048e46f138f23224cd117f
1 parent
762c0c2a
Exists in
master
and in
3 other branches
feat: 新增ImageViewer关闭方法
Showing
1 changed file
with
23 additions
and
7 deletions
Show diff stats
packages/index.js
| @@ -42,25 +42,41 @@ const install = function(Vue, opts = {}) { | @@ -42,25 +42,41 @@ const install = function(Vue, opts = {}) { | ||
| 42 | Vue.component(ElImageViewer.name, ElImageViewer); | 42 | Vue.component(ElImageViewer.name, ElImageViewer); |
| 43 | }; | 43 | }; |
| 44 | 44 | ||
| 45 | +let instance = null; | ||
| 46 | + | ||
| 47 | +const closeImageViewer = function(force) { | ||
| 48 | + if (instance) { | ||
| 49 | + if (force === true) { | ||
| 50 | + document.body.removeChild(instance.$el); | ||
| 51 | + } else { | ||
| 52 | + instance.$el.className = `${instance.$el.className} viewer-fade-leave-active viewer-fade-leave-to`; | ||
| 53 | + setTimeout(function() { | ||
| 54 | + document.body.removeChild(instance.$el); | ||
| 55 | + instance = null; | ||
| 56 | + }, 200); | ||
| 57 | + } | ||
| 58 | + } | ||
| 59 | +}; | ||
| 60 | + | ||
| 45 | const _ImageViewer = function({ index, src, list, ...other }) { | 61 | const _ImageViewer = function({ index, src, list, ...other }) { |
| 62 | + if (instance) { | ||
| 63 | + closeImageViewer(true); | ||
| 64 | + } | ||
| 46 | const ImageViewer = Vue.extend(ElImageViewer); | 65 | const ImageViewer = Vue.extend(ElImageViewer); |
| 47 | - const instance = new ImageViewer({ el: document.createElement('div') }); | 66 | + instance = new ImageViewer({ el: document.createElement('div') }); |
| 48 | Object.assign(instance, { | 67 | Object.assign(instance, { |
| 49 | index: src ? list.findIndex(url => url === src) : index || 0, | 68 | index: src ? list.findIndex(url => url === src) : index || 0, |
| 50 | urlList: list, | 69 | urlList: list, |
| 51 | ...other, | 70 | ...other, |
| 52 | - onClose() { | ||
| 53 | - instance.$el.className = `${instance.$el.className} viewer-fade-leave-active viewer-fade-leave-to`; | ||
| 54 | - setTimeout(function() { | ||
| 55 | - document.body.removeChild(instance.$el); | ||
| 56 | - }, 300); | ||
| 57 | - }, | 71 | + onClose: closeImageViewer, |
| 58 | }); | 72 | }); |
| 59 | document.body.appendChild(instance.$el); | 73 | document.body.appendChild(instance.$el); |
| 60 | }; | 74 | }; |
| 61 | 75 | ||
| 62 | export const ImageViewer = _ImageViewer; | 76 | export const ImageViewer = _ImageViewer; |
| 63 | 77 | ||
| 78 | +ImageViewer.close = closeImageViewer; | ||
| 79 | + | ||
| 64 | export default { | 80 | export default { |
| 65 | install, | 81 | install, |
| 66 | ...components, | 82 | ...components, |