UNPKG

@wikimedia/codex

Version:

Codex Design System for Wikimedia

2 lines (1 loc) 2.82 kB
"use strict";const t=require("vue"),b=require("./Icon.js"),m=require("./CdxButton.cjs"),f=require("./CdxTextInput.cjs"),h=require("./useModelWrapper.cjs"),S=require("./useSplitAttributes.cjs"),y=require("./useFieldData.cjs"),B=require("./useI18nWithOverride.js"),i=require("./constants.js"),C=require("./_plugin-vue_export-helper.js"),I=i.makeStringTypeValidator(i.ValidationStatusTypes),V=t.defineComponent({name:"CdxSearchInput",components:{CdxButton:m,CdxTextInput:f},inheritAttrs:!1,props:{modelValue:{type:[String,Number],default:""},useButton:{type:Boolean,default:!1},hideIcon:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},buttonLabel:{type:String,default:""},disabled:{type:Boolean,default:!1},status:{type:String,default:"default",validator:I}},emits:["update:modelValue","submit-click","input","change","focus","blur"],setup(e,{emit:n,attrs:l}){const s=h(t.toRef(e,"modelValue"),n),{computedDisabled:r}=y(t.toRef(e,"disabled")),d=t.computed(()=>({"cdx-search-input--has-end-button":!!e.buttonLabel||e.useButton})),{rootClasses:a,rootStyle:u,otherAttrs:o}=S(l,d),c=B.useI18nWithOverride(t.toRef(e,"buttonLabel"),"cdx-search-input-search-button-label","Search"),p=t.computed(()=>e.useButton||e.buttonLabel.length>0);return{wrappedModel:s,computedDisabled:r,rootClasses:a,rootStyle:u,otherAttrs:o,handleSubmit:()=>{n("submit-click",s.value)},searchIcon:b.Z7,translatedSearchButtonLabel:c,useButtonOrLabel:p}},methods:{focus(){this.$refs.textInput.focus()}}}),g={class:"cdx-search-input__input-wrapper"};function v(e,n,l,s,r,d){const a=t.resolveComponent("cdx-text-input"),u=t.resolveComponent("cdx-button");return t.openBlock(),t.createElementBlock("div",{class:t.normalizeClass(["cdx-search-input",e.rootClasses]),style:t.normalizeStyle(e.rootStyle)},[t.createElementVNode("div",g,[t.createVNode(a,t.mergeProps({ref:"textInput",modelValue:e.wrappedModel,"onUpdate:modelValue":n[0]||(n[0]=o=>e.wrappedModel=o),class:"cdx-search-input__text-input","input-type":"search","start-icon":e.hideIcon?void 0:e.searchIcon,clearable:e.clearable,disabled:e.computedDisabled,status:e.status},e.otherAttrs,{onKeydown:t.withKeys(e.handleSubmit,["enter"]),onInput:n[1]||(n[1]=o=>e.$emit("input",o)),onChange:n[2]||(n[2]=o=>e.$emit("change",o)),onFocus:n[3]||(n[3]=o=>e.$emit("focus",o)),onBlur:n[4]||(n[4]=o=>e.$emit("blur",o))}),null,16,["modelValue","start-icon","clearable","disabled","status","onKeydown"]),t.renderSlot(e.$slots,"default")]),e.useButtonOrLabel?(t.openBlock(),t.createBlock(u,{key:0,class:"cdx-search-input__end-button",disabled:e.computedDisabled,onClick:e.handleSubmit},{default:t.withCtx(()=>[t.createTextVNode(t.toDisplayString(e.translatedSearchButtonLabel),1)]),_:1},8,["disabled","onClick"])):t.createCommentVNode("v-if",!0)],6)}const k=C._export_sfc(V,[["render",v]]);module.exports=k;