zview-plus
Version:
基于 Vue3 的 UI 组件库
3 lines (2 loc) • 2.35 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),d=require("./input.js"),h=["type","value","onInput"],g=["onClick"],v=["value","maxlength","onInput"],B={class:"z-textarea-maxlength"},k={name:"ZInput"},z=e.defineComponent({...k,props:d.InputProps,emits:["change","blur","focus"],setup(i,{expose:p,emit:o}){const l=i,n=e.ref(l.modelValue),f=e.computed(()=>({[`z-input-${l.size}`]:l.size})),r=e.ref(null),a=e.computed(()=>n.value?String(n.value).length:0);e.watch(()=>l.modelValue,t=>{n.value=t??""});const u=t=>{n.value=t.target.value,o("change",n.value)},m=()=>{n.value="",o("change",n.value)},s=t=>{o("blur",t,t.target.value)},c=t=>{o("focus",t,t.target.value)};return p({inputGetFocus:()=>{var t;(t=r.value)==null||t.focus()},inputGetBlur:()=>{var t;(t=r.value)==null||t.blur()}}),(t,b)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["z-from-input",{"z-input-icon-before":t.iconBefore&&t.iconBefore!=="","z-input-icon-after":t.iconAfter&&t.iconAfter!==""||t.clearable}])},[t.type!=="textarea"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("input",e.mergeProps({class:"z-input"},t.$attrs,{type:t.type,value:n.value,class:e.unref(f),ref_key:"input",ref:r,onInput:e.withModifiers(u,["stop"]),onBlur:s,onFocus:c}),null,16,h),t.iconAfter&&t.iconAfter!==""?(e.openBlock(),e.createElementBlock("i",{key:0,class:e.normalizeClass(["z-after",`z-icon-${t.iconAfter}`])},null,2)):e.createCommentVNode("",!0),t.iconBefore&&t.iconBefore!==""?(e.openBlock(),e.createElementBlock("i",{key:1,class:e.normalizeClass(["z-before",`z-icon-${t.iconBefore}`])},null,2)):e.createCommentVNode("",!0),e.createVNode(e.Transition,{name:"fade"},{default:e.withCtx(()=>[t.clearable&&e.unref(a)>0?(e.openBlock(),e.createElementBlock("span",{key:0,class:"z-icon-h",onClick:e.withModifiers(m,["stop"])},null,8,g)):e.createCommentVNode("",!0)]),_:1})],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("textarea",e.mergeProps({class:"z-textarea"},t.$attrs,{value:n.value,maxlength:t.maxlength,ref_key:"input",ref:r,onInput:e.withModifiers(u,["stop"]),onBlur:s,onFocus:c}),`
`,16,v),e.createElementVNode("span",B,e.toDisplayString(e.unref(a))+"/"+e.toDisplayString(t.maxlength),1)],64))],2))}});exports.default=z;