quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
45 lines (38 loc) • 849 B
JavaScript
import { computed } from 'vue'
export default function (props, typeGuard) {
function getFormDomProps () {
const model = props.modelValue
try {
const dt = 'DataTransfer' in window
? new DataTransfer()
: ('ClipboardEvent' in window
? new ClipboardEvent('').clipboardData
: void 0
)
if (Object(model) === model) {
('length' in model
? Array.from(model)
: [ model ]
).forEach(file => {
dt.items.add(file)
})
}
return {
files: dt.files
}
}
catch (e) {
return {
files: void 0
}
}
}
return typeGuard === true
? computed(() => {
if (props.type !== 'file') {
return
}
return getFormDomProps()
})
: computed(getFormDomProps)
}