Skip to content

Commit 0e9cad0

Browse files
committed
fix: #215
1 parent 30db869 commit 0e9cad0

File tree

6 files changed

+49
-29
lines changed

6 files changed

+49
-29
lines changed

src/components/btn.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
},
3030
setup (props) {
3131
const btn = ref(null)
32-
const uploader = inject('uploader')
32+
const uploader = inject('uploader').proxy.uploader
3333
const support = uploader.support
3434
onMounted(() => {
3535
nextTick(() => {

src/components/drop.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
export default {
1313
name: COMPONENT_NAME,
1414
setup () {
15-
const uploader = inject('uploader')
15+
const uploader = inject('uploader').proxy.uploader
1616
let drop = ref(null)
1717
let dropClass = ref('')
1818
const support = uploader.support

src/components/files.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</template>
1212

1313
<script>
14-
import { inject } from 'vue'
14+
import { inject, computed } from 'vue'
1515
import UploaderFile from './file.vue'
1616
1717
const COMPONENT_NAME = 'uploader-files'
@@ -22,10 +22,10 @@
2222
UploaderFile
2323
},
2424
setup () {
25-
const uploader = inject('uploader')
25+
const uploader = inject('uploader').proxy
2626
2727
return {
28-
files: uploader.files
28+
files: computed(() => uploader.files)
2929
}
3030
}
3131
}

src/components/list.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</template>
1212

1313
<script>
14-
import { inject } from 'vue'
14+
import { inject, computed } from 'vue'
1515
import UploaderFile from './file.vue'
1616
1717
const COMPONENT_NAME = 'uploader-list'
@@ -22,10 +22,10 @@
2222
UploaderFile
2323
},
2424
setup () {
25-
const uploader = inject('uploader')
25+
const uploader = inject('uploader').proxy
2626
2727
return {
28-
fileList: uploader.fileList
28+
fileList: computed(() => uploader.fileList)
2929
}
3030
}
3131
}

src/components/unsupport.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
export default {
1616
name: COMPONENT_NAME,
1717
setup () {
18-
const uploader = inject('uploader')
18+
const uploader = inject('uploader').proxy.uploader
1919
const support = uploader.support
2020
return {
2121
support

src/components/uploader.vue

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
</template>
1414

1515
<script>
16-
import { provide, ref, reactive, onUnmounted, getCurrentInstance } from 'vue'
16+
import { provide, ref, onUnmounted, getCurrentInstance } from 'vue'
1717
import Uploader from 'simple-uploader.js'
1818
import { kebabCase } from '../common/utils'
1919
import UploaderBtn from './btn.vue'
@@ -28,6 +28,24 @@
2828
const FILES_ADDED_EVENT = 'filesAdded'
2929
const UPLOAD_START_EVENT = 'uploadStart'
3030
31+
const ALL_EVENTS = [
32+
'change',
33+
'dragover',
34+
'dragenter',
35+
'dragleave',
36+
'file-success',
37+
'file-complete',
38+
'file-progress',
39+
'file-added',
40+
'files-added',
41+
'files-submitted',
42+
'file-removed',
43+
'file-retry',
44+
'file-error',
45+
'upload-start',
46+
'complete'
47+
]
48+
3149
export default {
3250
name: COMPONENT_NAME,
3351
props: {
@@ -56,8 +74,8 @@
5674
onFileAdded: Function,
5775
onFilesAdded: Function
5876
},
77+
emits: ALL_EVENTS,
5978
setup (props, { emit }) {
60-
const uploaderList = ref(null)
6179
const started = ref(false)
6280
const files = ref([])
6381
const fileList = ref([])
@@ -67,17 +85,18 @@
6785
started.value = true
6886
}
6987
const fileAdded = (file) => {
70-
const _file = reactive(file)
88+
const _file = file
7189
if (props.onFileAdded) {
7290
const ignored = props.onFileAdded(_file)
7391
if (ignored === false) {
7492
return false
7593
}
76-
}
77-
emit(kebabCase(FILE_ADDED_EVENT), _file)
78-
if (_file.ignored) {
79-
// is ignored, filter it
80-
return false
94+
} else {
95+
emit(kebabCase(FILE_ADDED_EVENT), _file)
96+
if (_file.ignored) {
97+
// is ignored, filter it
98+
return false
99+
}
81100
}
82101
}
83102
const filesAdded = (files, fileList) => {
@@ -86,20 +105,21 @@
86105
if (ignored === false) {
87106
return false
88107
}
89-
}
90-
emit(kebabCase(FILES_ADDED_EVENT), files, fileList)
91-
if (files.ignored || fileList.ignored) {
92-
// is ignored, filter it
93-
return false
108+
} else {
109+
emit(kebabCase(FILES_ADDED_EVENT), files, fileList)
110+
if (files.ignored || fileList.ignored) {
111+
// is ignored, filter it
112+
return false
113+
}
94114
}
95115
}
96116
const fileRemoved = () => {
97-
files.value = uploader.files
98-
fileList.value = uploader.fileList
117+
files.value = [...uploader.files]
118+
fileList.value = [...uploader.fileList]
99119
}
100120
const filesSubmitted = () => {
101-
files.value = uploader.files
102-
fileList.value = uploader.fileList
121+
files.value = [...uploader.files]
122+
fileList.value = [...uploader.fileList]
103123
if (props.autoStart) {
104124
uploader.upload()
105125
}
@@ -140,7 +160,8 @@
140160
uploader = null
141161
})
142162
143-
provide('uploader', reactive(uploader))
163+
provide('uploader', instance)
164+
144165
return {
145166
uploader,
146167
started,
@@ -151,8 +172,7 @@
151172
filesAdded,
152173
fileRemoved,
153174
filesSubmitted,
154-
allEvent,
155-
uploaderList
175+
allEvent
156176
}
157177
},
158178
components: {

0 commit comments

Comments
 (0)