UNPKG

react-simple-autocomplete

Version:

A simple, customizable wrapper to provide autocomplete functionality to inputs

1 lines 4.8 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react")):"function"==typeof define&&define.amd?define(["react"],t):"object"==typeof exports?exports.SimpleAutocomplete=t(require("react")):e.SimpleAutocomplete=t(e.React)}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={exports:{},id:r,loaded:!1};return e[r].call(o.exports,o,o.exports,t),o.loaded=!0,o.exports}var n={};return t.m=e,t.c=n,t.p="/static/",t(0)}([function(e,t,n){"use strict";e.exports=n(1)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function l(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();Object.defineProperty(t,"__esModule",{value:!0});var a=n(2),c=r(a),f=function(e){function t(){var e,n,r,o;u(this,t);for(var l=arguments.length,s=Array(l),a=0;l>a;a++)s[a]=arguments[a];return n=r=i(this,(e=Object.getPrototypeOf(t)).call.apply(e,[this].concat(s))),r.state={open:!1,highlighted:-1},r.open=function(){r.setState({open:!0})},r.close=function(){r.setState({open:!1})},r.handleMouseLeave=function(e){r.setState({highlighted:-1})},r.handleMouseEnter=function(e){return function(t){r.setState({highlighted:e})}},r.handleMouseDown=function(){r._blur=!1},r.handleSelectItem=function(e){return function(t){var n=r.props.onSelectItem,o=r.refs.input,u=n?n(e,t):o.value=e;if(u){var i=new Event("input",{bubbles:!0});o.dispatchEvent(i)}setTimeout(function(){o.focus(),r._blur=!0,r.close()})}},r.handleFocus=function(e){var t=r.props.onFocus;r.open(),t&&t(e)},r.handleBlur=function(e){var t=r.props.onBlur;r._blur&&(r.close(),t&&t(e))},r.handleKeyDown=function(e){var t=r.state.highlighted;switch(r.open(),e.key){case"ArrowDown":e.preventDefault();var n=Math.min(t+1,r.items.length-1);return void r.setState({highlighted:n});case"ArrowUp":e.preventDefault();var o=Math.max(t-1,-1);return void r.setState({highlighted:o});case"Enter":return e.preventDefault(),void(t>-1&&r.handleSelectItem(r.items[t])(e));case"Escape":return void r.close();default:return void setTimeout(function(){return r.forceUpdate()})}},o=n,i(r,o)}return l(t,e),s(t,[{key:"componentWillMount",value:function(){this._blur=!0}},{key:"render",value:function(){var e=this,t=this.props,n=t.children,r=(t.items,t.filter,t.sort,t.renderMenu),u=t.renderItem,i=o(t,["children","items","filter","sort","renderMenu","renderItem"]),l=this.items.map(function(t,n){var r=e.state.highlighted===n;return c["default"].cloneElement(u({item:t,index:n,highlighted:r}),{onMouseEnter:e.handleMouseEnter(n),onMouseDown:e.handleMouseDown,onClick:e.handleSelectItem(t),key:""+n+t.substr(0,3)})}),s=c["default"].cloneElement(r({items:l}),{onMouseLeave:this.handleMouseLeave});return c["default"].createElement("div",i,c["default"].cloneElement(n,{onKeyDown:this.handleKeyDown,onFocus:this.handleFocus,onBlur:this.handleBlur,ref:"input"}),this.state.open&&s)}},{key:"input",get:function(){return this.refs.input}},{key:"items",get:function(){var e=this.props,t=e.items,n=e.filter,r=e.sort,o=e.limit,u=this.refs.input||{},i=u.value,l=void 0===i?"":i;return t.filter(function(e){return n(e,l)}).sort(r).slice(0,o)}}]),t}(a.Component);f.propTypes={items:a.PropTypes.array,filter:a.PropTypes.func,sort:a.PropTypes.any,limit:a.PropTypes.number,renderMenu:a.PropTypes.func,renderItem:a.PropTypes.func,onSelectItem:a.PropTypes.func,onFocus:a.PropTypes.func,onBlur:a.PropTypes.func,children:a.PropTypes.element},f.defaultProps={items:[],filter:function(e,t){return e.toLowerCase().includes(t.toLowerCase())},sort:function(){},renderMenu:function(e){var t=e.items;return c["default"].createElement("ul",null,t)},renderItem:function(e){var t=e.item,n=e.highlighted;return n?c["default"].createElement("em",null,c["default"].createElement("li",null,t)):c["default"].createElement("li",null,t)},children:c["default"].createElement("input",{type:"text"})},t["default"]=f},function(t,n){t.exports=e}])});