ll-package
Version:
2 lines (1 loc) • 2.87 kB
JavaScript
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("../../../../@babel/runtime/helpers/esm/objectSpread2.js"),i=require("vue"),d=require("../../_util/KeyCode.js"),C=require("./MultipleSelector.js"),M=require("./SingleSelector.js"),O=require("../utils/keyUtil.js"),q=require("../hooks/useLock.js"),E=require("../../_util/createRef.js"),o=require("../../_util/vue-types/index.js"),F=i.defineComponent({name:"Selector",inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:o.default.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:o.default.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:o.default.oneOfType([o.default.number,o.default.string]),disabled:{type:Boolean,default:void 0},placeholder:o.default.any,removeIcon:o.default.any,maxTagCount:o.default.oneOfType([o.default.number,o.default.string]),maxTagTextLength:Number,maxTagPlaceholder:o.default.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup(e,g){let{expose:m}=g;const u=E.default();let r=!1;const[S,p]=q.default(0),y=t=>{const{which:n}=t;(n===d.default.UP||n===d.default.DOWN)&&t.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(t),n===d.default.ENTER&&e.mode==="tags"&&!r&&!e.open&&e.onSearchSubmit(t.target.value),O.isValidateOpenKey(n)&&e.onToggleOpen(!0)},h=()=>{p(!0)};let a=null;const s=t=>{e.onSearch(t,!0,r)!==!1&&e.onToggleOpen(!0)},b=()=>{r=!0},I=t=>{r=!1,e.mode!=="combobox"&&s(t.target.value)},T=t=>{let{target:{value:n}}=t;if(e.tokenWithEnter&&a&&/[\r\n]/.test(a)){const l=a.replace(/[\r\n]+$/,"").replace(/\r\n/g," ").replace(/[\r\n]/g," ");n=n.replace(l,a)}a=null,s(n)},D=t=>{const{clipboardData:n}=t;a=n.getData("text")},w=t=>{let{target:n}=t;n!==u.current&&(document.body.style.msTouchAction!==void 0?setTimeout(()=>{u.current.focus()}):u.current.focus())},x=t=>{const n=S();t.target!==u.current&&!n&&t.preventDefault(),(e.mode!=="combobox"&&(!e.showSearch||!n)||!e.open)&&(e.open&&e.onSearch("",!0,!1),e.onToggleOpen())};return m({focus:()=>{u.current.focus()},blur:()=>{u.current.blur()}}),()=>{const{prefixCls:t,domRef:n,mode:l}=e,f={inputRef:u,onInputKeyDown:y,onInputMouseDown:h,onInputChange:T,onInputPaste:D,onInputCompositionStart:b,onInputCompositionEnd:I},v=l==="multiple"||l==="tags"?i.createVNode(C.default,c.default(c.default({},e),f),null):i.createVNode(M.default,c.default(c.default({},e),f),null);return i.createVNode("div",{ref:n,class:`${t}-selector`,onClick:w,onMousedown:x},[v])}}}),N=F;exports.default=N;