quasar
Version:
Build high-performance VueJS user interfaces (SPA, PWA, SSR, Mobile and Desktop) in record time
38 lines (32 loc) • 811 B
JavaScript
import { computed } from 'vue'
export default function useFileDomProps(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 {
return {
files: void 0
}
}
}
return typeGuard === true
? computed(() => {
if (props.type !== 'file') return
return getFormDomProps()
})
: computed(getFormDomProps)
}