UNPKG

react-responsive-combo-box

Version:
3 lines (2 loc) 3.38 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):(e=e||self).reactResponsiveComboBox=t(e.react)}(this,function(e){var t="default"in e?e.default:e;function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o=arguments[t];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(e[n]=o[n])}return e}).apply(this,arguments)}var n={isFocus:!1,focusIndex:-1},s=function(e,t){switch(t.type){case"setFocusIndex":return o({},e,{focusIndex:t.focusIndex});case"toggleFocus":return o({},e,{isFocus:t.isFocus});default:return e}};return function(u){var c,r,l=u.options,i=u.onChange,f=u.defaultValue,a=u.placeholder,p=u.onSelect,d=u.onOptionsChange,g=u.renderOptions,h=u.style,y=u.className,v=u.focusColor,x=u.enableAutocomplete,F=u.optionsListMaxHeight||200,m={top:"100%",marginTop:"5px"},I=e.useState(l),T=I[0],b=I[1],H=e.useState(f||""),C=H[0],k=H[1],w=e.useReducer(s,n),E=w[0],N=w[1],O=E.isFocus,R=E.focusIndex,_=e.useState(!1),L=_[0],M=_[1],P=e.useRef(null),S=e.useRef(null),j=P.current,B=window.innerHeight-(null==j||null===(c=j.offsetParent)||void 0===c?void 0:c.offsetTop);(null==j||null===(r=j.offsetParent)||void 0===r?void 0:r.offsetTop)>B&&(m={bottom:"100%",marginBottom:"5px"}),e.useEffect(function(){N({type:"setFocusIndex",focusIndex:f?T.indexOf(f):-1})},[]);var A=function(){var e;void 0===e&&(e=R),-1!==e&&(k(T[e]),d&&d(T[e])),N({type:"toggleFocus",isFocus:!1}),l.forEach(function(e,t){e===T[R]&&N({type:"setFocusIndex",focusIndex:t})}),b(l),p&&p(T[R])};return t.createElement("div",{className:"_2VoJe",style:h},t.createElement("input",{onFocus:function(){return N({type:"toggleFocus",isFocus:!0})},onChange:function(e){i&&i(e),k(e.target.value),x&&function(e){if(0===e.length)b(l);else{var t=l.filter(function(t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())});b(t)}}(e.target.value)},placeholder:a||"",onKeyDown:function(e){var t=P.current,o=S.current,n=R;switch(e.keyCode){case 40:O?R>=T.length-1?(n=0,t.scrollTop=0):(n=R+1,o&&t&&o.offsetTop+o.offsetHeight>=t.clientHeight+t.scrollTop-o.offsetHeight&&(t.scrollTop+=o.offsetHeight)):(N({type:"toggleFocus",isFocus:!0}),o&&t&&(t.scrollTop=o.offsetTop-o.offsetHeight)),N({type:"setFocusIndex",focusIndex:n}),d&&d(T[n]),P.current=t;break;case 38:O?R<=0?(n=T.length-1,t&&(t.scrollTop=t.scrollHeight)):(n=R-1,o&&t&&o.offsetTop-o.offsetHeight<=t.scrollTop&&(t.scrollTop-=o.offsetHeight)):(N({type:"toggleFocus",isFocus:!0}),o&&t&&(t.scrollTop=o.offsetTop-o.offsetHeight)),N({type:"setFocusIndex",focusIndex:n}),d&&d(T[n]),P.current=t;break;case 13:R>-1&&R<T.length&&A();break;case 27:e.target.blur(),N({type:"toggleFocus",isFocus:!1})}},value:C,className:"_3Y2X-",onBlur:function(){L||N({type:"toggleFocus",isFocus:!1})}}),t.createElement("div",{className:"_1Cyz1",style:o({opacity:O?1:0,visibility:O?"visible":"hidden"},m),ref:P,onMouseEnter:function(){return M(!0)},onMouseLeave:function(){return M(!1)}},t.createElement("div",{className:"_1sPNA",style:{maxHeight:O?F:0}},T.map(function(e,o){return t.createElement("div",{className:y?"_3aknR "+y:"_3aknR",key:e,ref:o===R?S:null,style:{backgroundColor:o===R?v||"rgba(155,155,155,0.15)":"white"},onClick:A,onMouseEnter:function(){return N({type:"setFocusIndex",focusIndex:o})}},g?g(e):e)}))))}}); //# sourceMappingURL=index.umd.js.map