UNPKG

ron-react-autocomplete

Version:
6 lines 9.87 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],t):"object"==typeof exports?exports.ReactAutocomplete=t(require("react"),require("react-dom")):e.ReactAutocomplete=t(e.React,e.ReactDOM)}(this,function(e,t){return function(e){function t(r){if(o[r])return o[r].exports;var s=o[r]={exports:{},id:r,loaded:!1};return e[r].call(s.exports,s,s.exports,t),s.loaded=!0,s.exports}var o={};return t.m=e,t.c=o,t.p="",t(0)}([function(e,t,o){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function s(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 n(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)}function u(e,t,o){if(!e)return o(null,[]);t=new RegExp(t,"i");for(var r=[],s=0,n=e.length;s<n;s++)t.exec(e[s].title)&&r.push(e[s]);o(null,r)}var l=function(){function e(e,t){for(var o=0;o<t.length;o++){var r=t[o];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,o,r){return o&&e(t.prototype,o),r&&e(t,r),t}}(),i=o(5),a=o(7),c=o(8),p=o(1),f=function(e){function t(e){r(this,t);var o=s(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));h.call(o);var n=e.searchTerm?e.searchTerm:e.value?e.value.title:"";return o.state={results:[],showResults:!1,showResultsInProgress:!1,searchTerm:n,focusedValue:null},o}return n(t,e),l(t,[{key:"render",value:function(){var e=p(this.props.className,"react-autocomplete-Autocomplete",this.state.showResults?"react-autocomplete-Autocomplete--resultsShown":void 0),t={position:"relative",outline:"none"};return a.createElement("div",{tabIndex:"1",className:e,onFocus:this.onFocus,onBlur:this.onBlur,style:t},a.createElement("input",{ref:"search",className:"react-autocomplete-Autocomplete__search",style:{width:"100%"},onClick:this.showAllResults,onChange:this.onQueryChange,onFocus:this.onSearchInputFocus,onBlur:this.onQueryBlur,onKeyDown:this.onQueryKeyDown,value:this.state.searchTerm}),a.createElement(d,{className:"react-autocomplete-Autocomplete__results",onSelect:this.onValueChange,onFocus:this.onValueFocus,results:this.state.results,focusedValue:this.state.focusedValue,show:this.state.showResults,renderer:this.props.resultRenderer,label:this.props.label,resultIdentifier:this.props.resultIdentifier}))}},{key:"componentWillReceiveProps",value:function(e){var t=e.searchTerm?e.searchTerm:e.value?e.value.title:"";this.setState({searchTerm:t})}},{key:"componentWillMount",value:function(){this.blurTimer=null}}]),t}(a.Component);f.displayName="Autocomplete",f.propTypes={options:i.any,search:i.func,resultRenderer:i.oneOfType([i.element,i.func]),value:i.object,onChange:i.func,onError:i.func,onFocus:i.func},f.defaultProps={search:u};var h=function(){var e=this;this.getResultIdentifier=function(t){return void 0===e.props.resultIdentifier?t.id:t[e.props.resultIdentifier]},this.showResults=function(t){e.setState({showResultsInProgress:!0}),e.props.search(e.props.options,t.trim(),e.onSearchComplete)},this.showAllResults=function(){e.state.showResultsInProgress||e.state.showResults||e.showResults("")},this.onValueChange=function(t){var o={value:t,showResults:!1};t&&(o.searchTerm=t.title),e.setState(o),e.props.onChange&&e.props.onChange(t)},this.onSearchComplete=function(t,o){if(t){if(!e.props.onError)throw t;e.props.onError(t)}e.setState({showResultsInProgress:!1,showResults:!0,results:o})},this.onValueFocus=function(t){e.setState({focusedValue:t})},this.onQueryChange=function(t){var o=t.target.value;e.setState({searchTerm:o,focusedValue:null}),e.showResults(o)},this.onFocus=function(){e.blurTimer&&(clearTimeout(e.blurTimer),e.blurTimer=null),e.refs.search.focus()},this.onSearchInputFocus=function(){e.props.onFocus&&e.props.onFocus(),e.showAllResults()},this.onBlur=function(){e.blurTimer=setTimeout(function(){e.setState({showResults:!1})},100)},this.onQueryKeyDown=function(t){if("Enter"===t.key)t.preventDefault(),e.state.focusedValue&&e.onValueChange(e.state.focusedValue);else if("ArrowUp"===t.key&&e.state.showResults){t.preventDefault();var o=Math.max(e.focusedValueIndex()-1,0);e.setState({focusedValue:e.state.results[o]})}else if("ArrowDown"===t.key)if(t.preventDefault(),e.state.showResults){var r=Math.min(e.focusedValueIndex()+(e.state.showResults?1:0),e.state.results.length-1);e.setState({showResults:!0,focusedValue:e.state.results[r]})}else e.showAllResults()},this.focusedValueIndex=function(){if(!e.state.focusedValue)return-1;for(var t=0,o=e.state.results.length;t<o;t++)if(e.getResultIdentifier(e.state.results[t])===e.getResultIdentifier(e.state.focusedValue))return t;return-1}},d=function(e){function t(){var e,o,n,u;r(this,t);for(var l=arguments.length,i=Array(l),p=0;p<l;p++)i[p]=arguments[p];return o=n=s(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),n.getResultIdentifier=function(e){if(void 0===n.props.resultIdentifier){if(!e.id)throw Error("id property not found on result. You must specify a resultIdentifier and pass as props to autocomplete component");return e.id}return e[n.props.resultIdentifier]},n.renderResult=function(e){var t=n.props.focusedValue&&n.getResultIdentifier(n.props.focusedValue)===n.getResultIdentifier(e),o=n.props.renderer||m;return a.createElement(o,{ref:t?"focused":void 0,key:n.getResultIdentifier(e),result:e,focused:t,onMouseEnter:n.onMouseEnterResult,onClick:n.props.onSelect,label:n.props.label})},n.scrollToFocused=function(){var e=n.refs&&n.refs.focused;if(e){var t=c.findDOMNode(n),o=t.scrollTop,r=t.offsetHeight,s=c.findDOMNode(e),u=s.offsetTop,l=u+s.offsetHeight;u<o?(n.ignoreFocus=!0,t.scrollTop=u):l-o>r&&(n.ignoreFocus=!0,t.scrollTop=l-r)}},n.onMouseEnterResult=function(e,t){if(n.ignoreFocus)n.ignoreFocus=!1;else{var o=c.findDOMNode(n),r=o.scrollTop,s=o.offsetHeight,u=e.target,l=u.offsetTop,i=l+u.offsetHeight;i>r&&l<r+s&&n.props.onFocus(t)}},u=o,s(n,u)}return n(t,e),l(t,[{key:"render",value:function(){var e={display:this.props.show?"block":"none",position:"absolute",listStyleType:"none"},t=this.props.className;return a.createElement("ul",{style:e,className:t+" react-autocomplete-Results"},this.props.results.map(this.renderResult))}},{key:"componentDidUpdate",value:function(){this.scrollToFocused()}},{key:"componentDidMount",value:function(){this.scrollToFocused()}},{key:"componentWillMount",value:function(){this.ignoreFocus=!1}}]),t}(a.Component),m=function(e){function t(){var e,o,n,u;r(this,t);for(var l=arguments.length,i=Array(l),a=0;a<l;a++)i[a]=arguments[a];return o=n=s(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),n.getLabel=function(e){return"function"==typeof n.props.label?n.props.label(e):"string"==typeof n.props.label?e[n.props.label]:void 0},n.onClick=function(){n.props.onClick(n.props.result)},n.onMouseEnter=function(e){n.props.onMouseEnter&&n.props.onMouseEnter(e,n.props.result)},u=o,s(n,u)}return n(t,e),l(t,[{key:"render",value:function(){var e=p({"react-autocomplete-Result":!0,"react-autocomplete-Result--active":this.props.focused});return a.createElement("li",{style:{listStyleType:"none"},className:e,onClick:this.onClick,onMouseEnter:this.onMouseEnter},a.createElement("a",null,this.getLabel(this.props.result)))}},{key:"shouldComponentUpdate",value:function(e){return e.result.id!==this.props.result.id||e.focused!==this.props.focused}}]),t}(a.Component);m.defaultProps={label:function(e){return e.title}},e.exports=f},function(e,t,o){/*! Copyright (c) 2015 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ function r(){for(var e,t="",o=0;o<arguments.length;o++)if(e=arguments[o])if("string"==typeof e||"number"==typeof e)t+=" "+e;else if("[object Array]"===Object.prototype.toString.call(e))t+=" "+r.apply(null,e);else if("object"==typeof e)for(var s in e)e.hasOwnProperty(s)&&e[s]&&(t+=" "+s);return t.substr(1)}var s,n;"undefined"!=typeof e&&e.exports&&(e.exports=r),s=[],n=function(){return r}.apply(t,s),!(void 0!==n&&(e.exports=n))},function(e,t){"use strict";function o(e){return function(){return e}}var r=function(){};r.thatReturns=o,r.thatReturnsFalse=o(!1),r.thatReturnsTrue=o(!0),r.thatReturnsNull=o(null),r.thatReturnsThis=function(){return this},r.thatReturnsArgument=function(e){return e},e.exports=r},function(e,t,o){"use strict";function r(e,t,o,r,n,u,l,i){if(s(t),!e){var a;if(void 0===t)a=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[o,r,n,u,l,i],p=0;a=new Error(t.replace(/%s/g,function(){return c[p++]})),a.name="Invariant Violation"}throw a.framesToPop=1,a}}var s=function(e){};e.exports=r},function(e,t,o){"use strict";var r=o(2),s=o(3),n=o(6);e.exports=function(){function e(e,t,o,r,u,l){l!==n&&s(!1,"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types")}function t(){return e}e.isRequired=e;var o={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t};return o.checkPropTypes=r,o.PropTypes=o,o}},function(e,t,o){e.exports=o(4)()},function(e,t){"use strict";var o="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";e.exports=o},function(t,o){t.exports=e},function(e,o){e.exports=t}])});