UNPKG

@aotearoan/neon

Version:

Neon is a lightweight design library of Vue 3 components with minimal dependencies.

3 lines (2 loc) 1.76 kB
"use strict";const o=require("vue"),p=require("../../../model/common/size/NeonSize.cjs.js"),m=require("../../../model/common/color/NeonFunctionalColor.cjs.js"),y=require("../../../model/common/state/NeonState.cjs.js"),S=require("../button/NeonButton.vue.cjs.js"),g=require("../input/NeonInput.vue.cjs.js"),N=require("../list/NeonList.vue.cjs.js"),v=require("../../../model/user-input/button/NeonButtonStyle.cjs.js"),q=o.defineComponent({name:"NeonFile",components:{NeonButton:S,NeonInput:g,NeonList:N},props:{disabled:{type:Boolean,default:!1},directUpload:{type:Boolean,default:!1},multiple:{type:Boolean,default:!1},accept:{type:String,default:null},id:{type:String,default:null},size:{type:String,default:p.NeonSize.Medium},state:{type:String,default:y.NeonState.Ready},color:{type:String,default:m.NeonFunctionalColor.Primary},buttonStyle:{type:String,default:v.NeonButtonStyle.Solid},circular:{type:Boolean,default:null},label:{type:String,default:null},icon:{type:String,default:null},title:{type:String,default:"Upload"}},emits:["update:modelValue"],setup(n,{emit:r}){const u=o.ref(null),t=o.ref([]),s=o.ref(""),c=o.computed(()=>t.value.map(e=>({key:e.name,label:e.name}))),a=()=>{r("update:modelValue",n.multiple?t.value:t.value[0]),n.directUpload&&(t.value=[])};return{fileInput:u,files:t,fileList:c,fileInputModel:s,remove:e=>{n.disabled||(t.value=t.value.filter(l=>l.name!==e),a())},clearAll:()=>{n.disabled||(t.value=[],a())},openFileDialog:()=>{var e,l;(l=(e=u.value)==null?void 0:e.neonInput)==null||l.click()},onInput:e=>{if(e!=null&&e.target){const l=e.target.files,i=l?Array.from(l).filter(d=>!t.value.find(f=>f.name===d.name)):[];t.value=n.multiple?[...t.value,...i]:i,a()}}}}});module.exports=q; //# sourceMappingURL=NeonFile.cjs.js.map