siegel
Version:
Web application development ecosystem
1 lines • 2.69 kB
JavaScript
import e,{useState as t}from"react";import r from"../_internals/resolve_tag_attributes.js";import n from"../../../common/is/exists/index.js";import s from"../_internals/apply_classname.js";import l from"../_internals/label.js";import o from"../_internals/handle_keyboard_selection.js";import a from"../_internals/component.js";import i from"../_internals/ref_apply.js";import m,{getDefaultState as p}from"../Input/index.js";import _ from"./helpers/get_search_options_elements.js";import c from"./styles.sass";let d,u="-ui-dropdown_search",f=()=>({searchString:d,arrowSelectIndex:d}),g=a(u,{theme:{root:d,_with_suggestions:d,_disabled:d,_focused:d,_error:d,reset:d,input_wrapper:d,label_wrapper:d,label_text:d,options:d,option:d,option__selected:d,option__disabled:d},listDisabledOptions:!0,minInputLength:3},a=>{let u,g,h,{onChange:b,onSearch:w,onBlur:j,onFocus:v,onKeyDown:x,onRootBlur:D,minInputLength:y,theme:E,className:N,showOnFocus:S,inputStore:I,selected:k,errorMsg:P,searchOptions:T,rootTagAttributes:A,disabled:C,store:F,label:B,resetIcon:K,children:L,inputTheme:M,resetIconKeepChildren:O,autofocus:V,placeholder:$,inputTagAttributes:q,mask:z,debounceMs:G,inputMemoDeps:H,inputRootTagAttributes:J,inputClassName:Q,regexp:R}=a,U=F||t(f()),[W,X]=U,{searchString:Y,arrowSelectIndex:Z}=W,ee=(e,t)=>{let{value:r}=e;r!=k&&(X(f()),b(r,t))};function et(e){X(f()),b(d,e)}let er=I||t(p()),{isFocused:en}=er[0];en&&(S||(Y?Y.length:0)>=y)?{selectedOption:g,optionsElement:u,selectedOptionIndex:h}=_(a,W,ee):k&&(g=T.find(({value:e})=>e==k));let es={onKeyDown:x,className:s(N,[[E._with_suggestions,u],[E._focused,en],[E._error,n(P)],[E._disabled,C]]),onBlur(e){D?.(e),e.defaultPrevented||e.relatedTarget===e.currentTarget||(""==Y?b(d,e):X(f()))}};en&&(es.onKeyDown=e=>{x?.(e),e.defaultPrevented||o({selectStore:U,keyCode:e.key,options:T,selectedOptionIndex:h},{onDelete(){et(e)},onEnter(){ee(T[Z],e)}})}),i(es,a),es=r(es,A);let el={children:L,disabled:C,mask:z,regexp:R,placeholder:$,errorMsg:P,debounceMs:G,autofocus:V,onBlur:j,onFocus:v,theme:M,inputAttributes:q,rootTagAttributes:J,memoDeps:H,store:er,className:c.input,onChange(e,t){w?.(e,t),t.defaultPrevented||(W.searchString=e,X({...W}))},value:n(Y)?Y:g?g.inputValue:""};if(Q&&(el.className+=` ${Q}`),K&&k){let t=e.createElement("div",{className:E.reset,children:K,onMouseDown:et});el.children=O?e.createElement(e.Fragment,null,t,L):t}let eo=e.createElement(m,{...el});return e.createElement("div",{...es},B?l(e.createElement("div",{className:E.input_wrapper},eo,u),{className:E.label_wrapper},{className:E.label_text,children:B}):e.createElement(e.Fragment,null,eo,u))});export default g;export{u as componentID,f as getDefaultState};