@blueprintjs/select
Advanced tools
Comparing version 2.0.0-rc.2 to 2.0.0-rc.3
@@ -1,1 +0,1 @@ | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("React"),require("classNames")):"function"==typeof define&&define.amd?define(["React","classNames"],t):"object"==typeof exports?exports.Select=t(require("React"),require("classNames")):(e.Blueprint=e.Blueprint||{},e.Blueprint.Select=t(e.React,e.classNames))}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(t,n){t.exports=e},function(e,t){e.exports=Blueprint.Core},function(e,n){e.exports=t},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="pt-multi-select",o=r+"-popover",i="pt-omnibar",s=i+"-overlay",p="pt-select",a=p+"-popover",u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};function l(e,t){function n(){this.constructor=e}u(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++){t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e};function v(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n}var d=n(2),f=n(0),m=n(1),y=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refHandlers={itemsParent:function(e){return t.itemsParentRef=e}},t.handleItemSelect=function(e,n){m.Utils.safeInvoke(t.props.onActiveItemChange,e),m.Utils.safeInvoke(t.props.onItemSelect,e,n)},t.handleKeyDown=function(e){switch(e.keyCode){case m.Keys.ARROW_UP:e.preventDefault(),t.moveActiveIndex(-1);break;case m.Keys.ARROW_DOWN:e.preventDefault(),t.moveActiveIndex(1)}m.Utils.safeInvoke(t.props.onKeyDown,e)},t.handleKeyUp=function(e){var n=t.props,r=n.activeItem,o=n.onItemSelect,i=n.onKeyUp;e.keyCode===m.Keys.ENTER&&(e.preventDefault(),m.Utils.safeInvoke(o,r,e)),m.Utils.safeInvoke(i,e)},t.renderItem=function(e,n){var r=t.props,o=r.activeItem,i=r.itemListPredicate,s=r.itemPredicate,p=void 0===s?function(){return!0}:s,a=r.query,u=m.Utils.isFunction(i)?t.state.filteredItems.indexOf(e)>=0:p(a,e,n),l={active:o===e,disabled:!1,matchesPredicate:u};return t.props.itemRenderer(e,{handleClick:function(n){return t.handleItemSelect(e,n)},index:n,modifiers:l})},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=e.items,n=e.renderer,r=e.query;return n({handleItemSelect:this.handleItemSelect,handleKeyDown:this.handleKeyDown,handleKeyUp:this.handleKeyUp,items:t,itemsParentRef:this.refHandlers.itemsParent,query:r,renderItem:this.renderItem})},t.prototype.componentWillMount=function(){this.setState({filteredItems:I(this.props)})},t.prototype.componentWillReceiveProps=function(e){e.items===this.props.items&&e.itemListPredicate===this.props.itemListPredicate&&e.itemPredicate===this.props.itemPredicate&&e.query===this.props.query||(this.shouldCheckActiveItemInViewport=!0,this.setState({filteredItems:I(e)}))},t.prototype.componentDidUpdate=function(){var e=this;this.shouldCheckActiveItemInViewport&&(requestAnimationFrame(function(){return e.scrollActiveItemIntoView()}),this.shouldCheckActiveItemInViewport=!1),this.getActiveIndex()<0&&(0!==this.state.filteredItems.length||void 0!==this.props.activeItem)&&m.Utils.safeInvoke(this.props.onActiveItemChange,this.state.filteredItems[0])},t.prototype.scrollActiveItemIntoView=function(){var e=this.getActiveElement();if(null!=this.itemsParentRef&&null!=e){var t=e.offsetTop,n=e.offsetHeight,r=this.itemsParentRef,o=r.offsetTop,i=r.scrollTop,s=r.clientHeight,p=this.getItemsParentPadding(),a=p.paddingTop,u=t+n+p.paddingBottom-o,l=t-a-o;u>=i+s?this.itemsParentRef.scrollTop=u+n-s:l<=i&&(this.itemsParentRef.scrollTop=l-n)}},t.prototype.getActiveElement=function(){if(null!=this.itemsParentRef)return this.itemsParentRef.children.item(this.getActiveIndex())},t.prototype.getActiveIndex=function(){return this.state.filteredItems.indexOf(this.props.activeItem)},t.prototype.getItemsParentPadding=function(){var e=getComputedStyle(this.itemsParentRef),t=e.paddingTop;return{paddingBottom:h(e.paddingBottom),paddingTop:h(t)}},t.prototype.moveActiveIndex=function(e){this.shouldCheckActiveItemInViewport=!0;var t=this.state.filteredItems,n=Math.max(t.length-1,0),r=m.Utils.clamp(this.getActiveIndex()+e,0,n);m.Utils.safeInvoke(this.props.onActiveItemChange,t[r])},t.displayName="Blueprint2.QueryList",t}(f.Component);function h(e){return parseInt(e.slice(0,-2),10)}function I(e){var t=e.items,n=e.itemPredicate,r=e.itemListPredicate,o=e.query;return m.Utils.isFunction(r)?r(o,t):m.Utils.isFunction(n)?t.filter(function(e,t){return n(o,e,t)}):t}var P=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={query:""},t.TypedQueryList=y.ofType(),t.refHandlers={queryList:function(e){return t.queryList=e}},t.renderQueryList=function(e){var n=t.props,r=n.inputProps,o=void 0===r?{}:r,p=n.isOpen,a=n.overlayProps,u=void 0===a?{}:a,l=e.handleKeyDown,v=e.handleKeyUp,y=p&&!t.isQueryEmpty()?{onKeyDown:l,onKeyUp:v}:{};return f.createElement(m.Overlay,c({hasBackdrop:!0},u,{isOpen:p,className:d(u.className,s),onClose:t.handleOverlayClose}),f.createElement("div",c({className:d(e.className,i)},y),f.createElement(m.InputGroup,c({autoFocus:!0,className:m.Classes.LARGE,leftIcon:"search",placeholder:"Search...",value:e.query},o,{onChange:t.handleQueryChange})),t.maybeRenderMenu(e)))},t.isQueryEmpty=function(){return 0===t.state.query.length},t.handleActiveItemChange=function(e){return t.setState({activeItem:e})},t.handleItemSelect=function(e,n){t.isQueryEmpty()||m.Utils.safeInvoke(t.props.onItemSelect,e,n)},t.handleQueryChange=function(e){var n=t.props.inputProps,r=void 0===n?{}:n;t.setState({query:e.currentTarget.value}),m.Utils.safeInvoke(r.onChange,e)},t.handleOverlayClose=function(e){m.Utils.safeInvoke(t.props.onClose,e)},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.initialContent,e.isOpen,e.inputProps,e.noResults,e.overlayProps,v(e,["initialContent","isOpen","inputProps","noResults","overlayProps"]));return f.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.componentWillReceiveProps=function(e){var t=e.isOpen,n=!this.props.isOpen&&t&&this.props.resetOnSelect;this.setState({activeItem:n?this.props.items[0]:this.state.activeItem,query:n?"":this.state.query})},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=t.map(n).filter(function(e){return null!=e});return r.length>0?r:this.props.noResults},t.prototype.maybeRenderMenu=function(e){var t,n=this.props.initialContent;if(this.isQueryEmpty()?null!=n&&(t=n):t=this.renderItems(e),null!=t)return f.createElement(m.Menu,{ulRef:e.itemsParentRef},t)},t.displayName="Blueprint2.Omnibar",t}(f.PureComponent),O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isOpen:!1,query:""},t.TypedQueryList=y.ofType(),t.refHandlers={input:function(e){return t.input=e},queryList:function(e){return t.queryList=e}},t.renderQueryList=function(e){var n=t.props,i=n.tagInputProps,s=void 0===i?{}:i,p=n.popoverProps,a=void 0===p?{}:p,u=n.selectedItems,l=void 0===u?[]:u,v=e.handleKeyDown,y=e.handleKeyUp,h=e.query,I=c({placeholder:"Search..."},s.inputProps,{onChange:t.handleQueryChange,value:h});return f.createElement(m.Popover,c({autoFocus:!1,canEscapeKeyClose:!0,enforceFocus:!1,isOpen:t.state.isOpen,position:m.Position.BOTTOM_LEFT},a,{className:d(e.className,a.className),onInteraction:t.handlePopoverInteraction,popoverClassName:d(o,a.popoverClassName),popoverDidOpen:t.handlePopoverDidOpen,popoverWillOpen:t.handlePopoverWillOpen}),f.createElement("div",{onKeyDown:t.getTargetKeyDownHandler(v),onKeyUp:t.state.isOpen?y:void 0},f.createElement(m.TagInput,c({},s,{inputProps:I,inputRef:t.refHandlers.input,className:d(r,s.className),values:l.map(t.props.tagRenderer)}))),f.createElement("div",{onKeyDown:t.getTargetKeyDownHandler(v),onKeyUp:y},f.createElement(m.Menu,{ulRef:e.itemsParentRef},t.renderItems(e))))},t.isQueryEmpty=function(){return 0===t.state.query.length},t.handleQueryChange=function(e){var n=t.props,r=n.tagInputProps,o=void 0===r?{}:r,i=n.openOnKeyDown,s=e.currentTarget.value;t.setState({query:s,isOpen:!t.isQueryEmpty()||!i}),null!=o.inputProps&&m.Utils.safeInvoke(o.inputProps.onChange,e)},t.handleItemSelect=function(e,n){t.input.focus(),null!=t.state.activeItem&&(t.props.resetOnSelect&&!t.isQueryEmpty()&&t.setState({activeItem:t.props.items[0],query:""}),m.Utils.safeInvoke(t.props.onItemSelect,e,n))},t.handlePopoverInteraction=function(e){return requestAnimationFrame(function(){var n=t.props,r=n.popoverProps,o=void 0===r?{}:r,i=n.resetOnSelect;null!=t.input&&t.input!==document.activeElement?t.setState({activeItem:i?t.props.items[0]:t.state.activeItem,isOpen:!1,query:i?"":t.state.query}):t.props.openOnKeyDown||t.setState({isOpen:!0}),m.Utils.safeInvoke(o.onInteraction,e)})},t.handlePopoverWillOpen=function(){var e=t.props,n=e.popoverProps,r=void 0===n?{}:n;e.resetOnSelect&&t.setState({activeItem:t.props.items[0]}),m.Utils.safeInvoke(r.popoverWillOpen)},t.handlePopoverDidOpen=function(){var e=t.props.popoverProps,n=void 0===e?{}:e;null!=t.queryList&&t.queryList.scrollActiveItemIntoView(),m.Utils.safeInvoke(n.popoverDidOpen)},t.handleActiveItemChange=function(e){t.setState({activeItem:e})},t.getTargetKeyDownHandler=function(e){return function(n){var r=n.which,o=t.props.resetOnSelect;r===m.Keys.ESCAPE||r===m.Keys.TAB?t.setState({activeItem:o?t.props.items[0]:t.state.activeItem,isOpen:!1,query:o?"":t.state.query}):r!==m.Keys.BACKSPACE&&r!==m.Keys.ARROW_LEFT&&r!==m.Keys.ARROW_RIGHT&&t.setState({isOpen:!0}),t.state.isOpen&&m.Utils.safeInvoke(e,n)}},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.initialContent,e.noResults,e.openOnKeyDown,e.popoverProps,e.resetOnSelect,e.tagInputProps,v(e,["initialContent","noResults","openOnKeyDown","popoverProps","resetOnSelect","tagInputProps"]));return f.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=this.props,o=r.initialContent,i=r.noResults;if(null!=o&&this.isQueryEmpty())return o;var s=t.map(n).filter(function(e){return null!=e});return s.length>0?s:i},t.displayName="Blueprint2.MultiSelect",t}(f.PureComponent),g=function(e){function t(t,n){var r=e.call(this,t,n)||this;r.state={isOpen:!1,query:""},r.TypedQueryList=y.ofType(),r.refHandlers={input:function(e){r.input=e;var t=r.props.inputProps,n=void 0===t?{}:t;m.Utils.safeInvoke(n.inputRef,e)},queryList:function(e){return r.list=e}},r.renderQueryList=function(e){var t=r.props,n=t.filterable,o=void 0===n||n,i=t.disabled,s=void 0!==i&&i,p=t.inputProps,u=void 0===p?{}:p,l=t.popoverProps,v=void 0===l?{}:l,y=f.createElement(m.InputGroup,c({autoFocus:!0,leftIcon:"search",placeholder:"Filter...",rightElement:r.maybeRenderInputClearButton(),value:e.query},u,{inputRef:r.refHandlers.input,onChange:r.handleQueryChange})),h=e.handleKeyDown,I=e.handleKeyUp;return f.createElement(m.Popover,c({autoFocus:!1,enforceFocus:!1,isOpen:r.state.isOpen,disabled:s,position:m.Position.BOTTOM_LEFT},v,{className:d(e.className,v.className),onInteraction:r.handlePopoverInteraction,popoverClassName:d(a,v.popoverClassName),popoverWillOpen:r.handlePopoverWillOpen,popoverDidOpen:r.handlePopoverDidOpen,popoverWillClose:r.handlePopoverWillClose}),f.createElement("div",{onKeyDown:r.state.isOpen?h:r.handleTargetKeyDown,onKeyUp:r.state.isOpen?I:void 0},r.props.children),f.createElement("div",{onKeyDown:h,onKeyUp:I},o?y:void 0,f.createElement(m.Menu,{ulRef:e.itemsParentRef},r.renderItems(e))))},r.isQueryEmpty=function(){return 0===r.state.query.length},r.handleActiveItemChange=function(e){return r.setState({activeItem:e})},r.handleTargetKeyDown=function(e){e.which!==m.Keys.ARROW_UP&&e.which!==m.Keys.ARROW_DOWN||r.setState({isOpen:!0})},r.handleItemSelect=function(e,t){r.setState({isOpen:!1}),r.props.resetOnSelect&&r.resetQuery(),m.Utils.safeInvoke(r.props.onItemSelect,e,t)},r.handlePopoverInteraction=function(e){r.setState({isOpen:e});var t=r.props.popoverProps,n=void 0===t?{}:t;m.Utils.safeInvoke(n.onInteraction,e)},r.handlePopoverWillOpen=function(){var e=r.props,t=e.popoverProps,n=void 0===t?{}:t,o=e.resetOnClose;r.previousFocusedElement=document.activeElement,o&&r.resetQuery(),m.Utils.safeInvoke(n.popoverWillOpen)},r.handlePopoverDidOpen=function(){null!=r.list&&r.list.scrollActiveItemIntoView(),requestAnimationFrame(function(){var e=r.props.inputProps;!1!==(void 0===e?{}:e).autoFocus&&null!=r.input&&r.input.focus()});var e=r.props.popoverProps,t=void 0===e?{}:e;m.Utils.safeInvoke(t.popoverDidOpen)},r.handlePopoverWillClose=function(){requestAnimationFrame(function(){void 0!==r.previousFocusedElement&&(r.previousFocusedElement.focus(),r.previousFocusedElement=void 0)});var e=r.props.popoverProps,t=void 0===e?{}:e;m.Utils.safeInvoke(t.popoverWillClose)},r.handleQueryChange=function(e){var t=r.props,n=t.inputProps,o=void 0===n?{}:n,i=t.onQueryChange,s=e.currentTarget.value;r.setState({query:s}),m.Utils.safeInvoke(o.onChange,e),m.Utils.safeInvoke(i,s)},r.resetQuery=function(){var e=r.props,t=e.items,n=e.onQueryChange;r.setState({activeItem:t[0],query:""}),m.Utils.safeInvoke(n,"")};var o=t&&t.inputProps&&void 0!==t.inputProps.value?t.inputProps.value:"";return r.state={isOpen:!1,query:o},r}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.filterable,e.initialContent,e.inputProps,e.noResults,e.popoverProps,v(e,["filterable","initialContent","inputProps","noResults","popoverProps"]));return f.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.componentWillReceiveProps=function(e){var t=e.inputProps,n=void 0===t?{}:t;void 0!==n.value&&this.state.query!==n.value&&this.setState({query:n.value})},t.prototype.componentDidUpdate=function(e,t){this.state.isOpen&&!t.isOpen&&null!=this.list&&this.list.scrollActiveItemIntoView()},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=this.props,o=r.initialContent,i=r.noResults;if(null!=o&&this.isQueryEmpty())return o;var s=t.map(n).filter(function(e){return null!=e});return s.length>0?s:i},t.prototype.maybeRenderInputClearButton=function(){return this.isQueryEmpty()?void 0:f.createElement(m.Button,{className:m.Classes.MINIMAL,icon:"cross",onClick:this.resetQuery})},t.displayName="Blueprint2.Select",t}(f.PureComponent),S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isOpen:!1,isTyping:!1,query:""},t.DEFAULT_PROPS={closeOnSelect:!0,inputProps:{},openOnKeyDown:!1,popoverProps:{}},t.TypedQueryList=y.ofType(),t.refHandlers={input:function(e){return t.input=e},queryList:function(e){return t.queryList=e}},t.renderQueryList=function(e){var n=t.props,r=n.inputValueRenderer,o=n.inputProps,i=void 0===o?t.DEFAULT_PROPS.inputProps:o,s=n.popoverProps,p=void 0===s?t.DEFAULT_PROPS.popoverProps:s,u=t.state,l=u.isTyping,v=u.selectedItem,y=u.query,h=e.handleKeyDown,I=e.handleKeyUp,P=l?y:v?r(v):"";return f.createElement(m.Popover,c({autoFocus:!1,enforceFocus:!1,isOpen:t.state.isOpen,position:m.Position.BOTTOM_LEFT},p,{className:d(e.className,p.className),onInteraction:t.handlePopoverInteraction,popoverClassName:d(a,p.popoverClassName),popoverDidOpen:t.handlePopoverDidOpen,popoverWillClose:t.handlePopoverWillClose}),f.createElement(m.InputGroup,c({placeholder:"Search...",value:P},i,{inputRef:t.refHandlers.input,onChange:t.handleQueryChange,onFocus:t.handleInputFocus,onKeyDown:t.getTargetKeyDownHandler(h),onKeyUp:t.getTargetKeyUpHandler(I)})),f.createElement("div",{onKeyDown:h,onKeyUp:I},f.createElement(m.Menu,{ulRef:e.itemsParentRef},t.renderItems(e))))},t.selectText=function(){null!=t.input&&requestAnimationFrame(function(){return t.input.setSelectionRange(0,t.input.value.length)})},t.handleInputFocus=function(e){var n=t.props,r=n.openOnKeyDown,o=void 0===r?t.DEFAULT_PROPS.openOnKeyDown:r,i=n.inputProps,s=void 0===i?t.DEFAULT_PROPS.inputProps:i;t.selectText(),o||t.setState({isOpen:!0}),m.Utils.safeInvoke(s.onFocus,e)},t.handleActiveItemChange=function(e){return t.setState({activeItem:e})},t.handleItemSelect=function(e,n){var r,o=t.props.closeOnSelect;(void 0===o?t.DEFAULT_PROPS.closeOnSelect:o)?(t.input.blur(),r=!1):(t.input.focus(),t.selectText(),r=!0),t.setState({isOpen:r,isTyping:!1,query:"",selectedItem:e}),m.Utils.safeInvoke(t.props.onItemSelect,e,n)},t.handlePopoverInteraction=function(e){return requestAnimationFrame(function(){var n=t.props.popoverProps,r=void 0===n?{}:n;null!=t.input&&t.input!==document.activeElement&&t.setState({isOpen:!1}),m.Utils.safeInvoke(r.onInteraction,e)})},t.handlePopoverDidOpen=function(){var e=t.props.popoverProps,n=void 0===e?{}:e;null!=t.queryList&&t.queryList.scrollActiveItemIntoView(),m.Utils.safeInvoke(n.popoverDidOpen)},t.handlePopoverWillClose=function(){var e=t.props.popoverProps,n=void 0===e?{}:e,r=t.state.selectedItem;t.setState({activeItem:r||t.props.items[0],query:""}),m.Utils.safeInvoke(n.popoverDidOpen)},t.handleQueryChange=function(e){var n=t.props.inputProps,r=void 0===n?t.DEFAULT_PROPS.inputProps:n;t.setState({isTyping:!0,query:e.currentTarget.value}),m.Utils.safeInvoke(r.onChange,e)},t.getTargetKeyDownHandler=function(e){return function(n){var r=n.which,o=t.state,i=o.isTyping,s=o.selectedItem,p=t.props,a=p.inputProps,u=void 0===a?t.DEFAULT_PROPS.inputProps:a,l=p.openOnKeyDown,c=void 0===l?t.DEFAULT_PROPS.openOnKeyDown:l;r===m.Keys.ESCAPE||r===m.Keys.TAB?(t.input.blur(),t.setState({isOpen:!1,selectedItem:i?void 0:s})):c&&r!==m.Keys.BACKSPACE&&r!==m.Keys.ARROW_LEFT&&r!==m.Keys.ARROW_RIGHT&&t.setState({isOpen:!0}),t.state.isOpen&&m.Utils.safeInvoke(e,n),m.Utils.safeInvoke(u.onKeyDown,n)}},t.getTargetKeyUpHandler=function(e){return function(n){var r=t.props.inputProps,o=void 0===r?t.DEFAULT_PROPS.inputProps:r;t.state.isOpen&&m.Utils.safeInvoke(e,n),m.Utils.safeInvoke(o.onKeyUp,n)}},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.inputProps,e.noResults,e.popoverProps,v(e,["inputProps","noResults","popoverProps"]));return f.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.componentDidUpdate=function(e,t){this.state.isOpen&&!t.isOpen&&null!=this.queryList&&this.queryList.scrollActiveItemIntoView()},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=t.map(n).filter(function(e){return null!=e});return r.length>0?r:this.props.noResults},t.displayName="Blueprint2.Suggest",t}(f.PureComponent);n.d(t,"MULTISELECT",function(){return r}),n.d(t,"MULTISELECT_POPOVER",function(){return o}),n.d(t,"OMNIBAR",function(){return i}),n.d(t,"OMNIBAR_OVERLAY",function(){return s}),n.d(t,"SELECT",function(){return p}),n.d(t,"SELECT_POPOVER",function(){return a}),n.d(t,"Omnibar",function(){return P}),n.d(t,"QueryList",function(){return y}),n.d(t,"MultiSelect",function(){return O}),n.d(t,"Select",function(){return g}),n.d(t,"Suggest",function(){return S})}])}); | ||
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("React"),require("classNames")):"function"==typeof define&&define.amd?define(["React","classNames"],t):"object"==typeof exports?exports.Select=t(require("React"),require("classNames")):(e.Blueprint=e.Blueprint||{},e.Blueprint.Select=t(e.React,e.classNames))}("undefined"!=typeof self?self:this,function(e,t){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(t,n){t.exports=e},function(e,t){e.exports=Blueprint.Core},function(e,n){e.exports=t},function(e,t,n){e.exports=n(4)},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="pt-multi-select",o=r+"-popover",i="pt-omnibar",s=i+"-overlay",p="pt-select",a=p+"-popover",u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};function l(e,t){function n(){this.constructor=e}u(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var c=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++){t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e};function v(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(e);o<r.length;o++)t.indexOf(r[o])<0&&(n[r[o]]=e[r[o]])}return n}var d=n(2),f=n.n(d),m=n(0),y=n(1),h=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.refHandlers={itemsParent:function(e){return t.itemsParentRef=e}},t.shouldCheckActiveItemInViewport=!1,t.handleItemSelect=function(e,n){y.Utils.safeInvoke(t.props.onActiveItemChange,e),y.Utils.safeInvoke(t.props.onItemSelect,e,n)},t.handleKeyDown=function(e){switch(e.keyCode){case y.Keys.ARROW_UP:e.preventDefault(),t.moveActiveIndex(-1);break;case y.Keys.ARROW_DOWN:e.preventDefault(),t.moveActiveIndex(1)}y.Utils.safeInvoke(t.props.onKeyDown,e)},t.handleKeyUp=function(e){var n=t.props,r=n.activeItem,o=n.onItemSelect,i=n.onKeyUp;e.keyCode===y.Keys.ENTER&&null!=r&&(e.preventDefault(),y.Utils.safeInvoke(o,r,e)),y.Utils.safeInvoke(i,e)},t.renderItem=function(e,n){var r=t.props,o=r.activeItem,i=r.itemListPredicate,s=r.itemPredicate,p=void 0===s?function(){return!0}:s,a=r.query,u=y.Utils.isFunction(i)?t.state.filteredItems.indexOf(e)>=0:p(a,e,n),l={active:o===e,disabled:!1,matchesPredicate:u};return t.props.itemRenderer(e,{handleClick:function(n){return t.handleItemSelect(e,n)},index:n,modifiers:l})},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=e.className,n=e.items,r=e.renderer,o=e.query;return r({className:t,handleItemSelect:this.handleItemSelect,handleKeyDown:this.handleKeyDown,handleKeyUp:this.handleKeyUp,items:n,itemsParentRef:this.refHandlers.itemsParent,query:o,renderItem:this.renderItem})},t.prototype.componentWillMount=function(){this.setState({filteredItems:P(this.props)})},t.prototype.componentWillReceiveProps=function(e){e.items===this.props.items&&e.itemListPredicate===this.props.itemListPredicate&&e.itemPredicate===this.props.itemPredicate&&e.query===this.props.query||(this.shouldCheckActiveItemInViewport=!0,this.setState({filteredItems:P(e)}))},t.prototype.componentDidUpdate=function(){var e=this;this.shouldCheckActiveItemInViewport&&(requestAnimationFrame(function(){return e.scrollActiveItemIntoView()}),this.shouldCheckActiveItemInViewport=!1),this.getActiveIndex()<0&&(0!==this.state.filteredItems.length||void 0!==this.props.activeItem)&&y.Utils.safeInvoke(this.props.onActiveItemChange,this.state.filteredItems[0])},t.prototype.scrollActiveItemIntoView=function(){var e=this.getActiveElement();if(null!=this.itemsParentRef&&null!=e){var t=e.offsetTop,n=e.offsetHeight,r=this.itemsParentRef,o=r.offsetTop,i=r.scrollTop,s=r.clientHeight,p=this.getItemsParentPadding(),a=p.paddingTop,u=t+n+p.paddingBottom-o,l=t-a-o;u>=i+s?this.itemsParentRef.scrollTop=u+n-s:l<=i&&(this.itemsParentRef.scrollTop=l-n)}},t.prototype.getActiveElement=function(){if(null!=this.itemsParentRef)return this.itemsParentRef.children.item(this.getActiveIndex())},t.prototype.getActiveIndex=function(){var e=this.props.activeItem;return null==e?-1:this.state.filteredItems.indexOf(e)},t.prototype.getItemsParentPadding=function(){var e=getComputedStyle(this.itemsParentRef),t=e.paddingTop;return{paddingBottom:I(e.paddingBottom),paddingTop:I(t)}},t.prototype.moveActiveIndex=function(e){this.shouldCheckActiveItemInViewport=!0;var t=this.state.filteredItems,n=Math.max(t.length-1,0),r=y.Utils.clamp(this.getActiveIndex()+e,0,n);y.Utils.safeInvoke(this.props.onActiveItemChange,t[r])},t.displayName="Blueprint2.QueryList",t}(m.Component);function I(e){return null==e?0:parseInt(e.slice(0,-2),10)}function P(e){var t=e.items,n=e.itemPredicate,r=e.itemListPredicate,o=e.query;return y.Utils.isFunction(r)?r(o,t):y.Utils.isFunction(n)?t.filter(function(e,t){return n(o,e,t)}):t}var O=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={query:""},t.TypedQueryList=h.ofType(),t.refHandlers={queryList:function(e){return t.queryList=e}},t.renderQueryList=function(e){var n=t.props,r=n.inputProps,o=void 0===r?{}:r,p=n.isOpen,a=n.overlayProps,u=void 0===a?{}:a,l=e.handleKeyDown,v=e.handleKeyUp,d=p&&!t.isQueryEmpty()?{onKeyDown:l,onKeyUp:v}:{};return m.createElement(y.Overlay,c({hasBackdrop:!0},u,{isOpen:p,className:f()(u.className,s),onClose:t.handleOverlayClose}),m.createElement("div",c({className:f()(e.className,i)},d),m.createElement(y.InputGroup,c({autoFocus:!0,className:y.Classes.LARGE,leftIcon:"search",placeholder:"Search...",value:e.query},o,{onChange:t.handleQueryChange})),t.maybeRenderMenu(e)))},t.isQueryEmpty=function(){return 0===t.state.query.length},t.handleActiveItemChange=function(e){return t.setState({activeItem:e})},t.handleItemSelect=function(e,n){t.isQueryEmpty()||y.Utils.safeInvoke(t.props.onItemSelect,e,n)},t.handleQueryChange=function(e){var n=t.props.inputProps,r=void 0===n?{}:n;t.setState({query:e.currentTarget.value}),y.Utils.safeInvoke(r.onChange,e)},t.handleOverlayClose=function(e){y.Utils.safeInvoke(t.props.onClose,e)},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.initialContent,e.isOpen,e.inputProps,e.noResults,e.overlayProps,v(e,["initialContent","isOpen","inputProps","noResults","overlayProps"]));return m.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.componentWillReceiveProps=function(e){var t=e.isOpen,n=!this.props.isOpen&&t&&this.props.resetOnSelect;this.setState({activeItem:n?this.props.items[0]:this.state.activeItem,query:n?"":this.state.query})},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=t.map(n).filter(function(e){return null!=e});return r.length>0?r:this.props.noResults},t.prototype.maybeRenderMenu=function(e){var t,n=this.props.initialContent;if(this.isQueryEmpty()?null!=n&&(t=n):t=this.renderItems(e),null!=t)return m.createElement(y.Menu,{ulRef:e.itemsParentRef},t)},t.displayName="Blueprint2.Omnibar",t}(m.PureComponent),g=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isOpen:!1,query:""},t.TypedQueryList=h.ofType(),t.refHandlers={input:function(e){t.input=e;var n=t.props.tagInputProps,r=void 0===n?{}:n;y.Utils.safeInvoke(r.inputRef,e)},queryList:function(e){return t.queryList=e}},t.renderQueryList=function(e){var n=t.props,i=n.tagInputProps,s=void 0===i?{}:i,p=n.popoverProps,a=void 0===p?{}:p,u=n.selectedItems,l=void 0===u?[]:u,v=e.handleKeyDown,d=e.handleKeyUp,h=e.query,I=c({placeholder:"Search..."},s.inputProps,{onChange:t.handleQueryChange,value:h});return m.createElement(y.Popover,c({autoFocus:!1,canEscapeKeyClose:!0,enforceFocus:!1,isOpen:t.state.isOpen,position:y.Position.BOTTOM_LEFT},a,{className:f()(e.className,a.className),onInteraction:t.handlePopoverInteraction,popoverClassName:f()(o,a.popoverClassName),popoverDidOpen:t.handlePopoverDidOpen,popoverWillOpen:t.handlePopoverWillOpen}),m.createElement("div",{onKeyDown:t.getTargetKeyDownHandler(v),onKeyUp:t.state.isOpen?d:void 0},m.createElement(y.TagInput,c({},s,{inputProps:I,inputRef:t.refHandlers.input,className:f()(r,s.className),values:l.map(t.props.tagRenderer)}))),m.createElement("div",{onKeyDown:t.getTargetKeyDownHandler(v),onKeyUp:d},m.createElement(y.Menu,{ulRef:e.itemsParentRef},t.renderItems(e))))},t.isQueryEmpty=function(){return 0===t.state.query.length},t.handleQueryChange=function(e){var n=t.props,r=n.tagInputProps,o=void 0===r?{}:r,i=n.openOnKeyDown,s=e.currentTarget.value;t.setState({query:s,isOpen:!t.isQueryEmpty()||!i}),null!=o.inputProps&&y.Utils.safeInvoke(o.inputProps.onChange,e)},t.handleItemSelect=function(e,n){null!=t.input&&t.input.focus(),null!=t.state.activeItem&&(t.props.resetOnSelect&&!t.isQueryEmpty()&&t.setState({activeItem:t.props.items[0],query:""}),y.Utils.safeInvoke(t.props.onItemSelect,e,n))},t.handlePopoverInteraction=function(e){return requestAnimationFrame(function(){var n=t.props,r=n.popoverProps,o=void 0===r?{}:r,i=n.resetOnSelect;null!=t.input&&t.input!==document.activeElement?t.setState({activeItem:i?t.props.items[0]:t.state.activeItem,isOpen:!1,query:i?"":t.state.query}):t.props.openOnKeyDown||t.setState({isOpen:!0}),y.Utils.safeInvoke(o.onInteraction,e)})},t.handlePopoverWillOpen=function(){var e=t.props,n=e.popoverProps,r=void 0===n?{}:n;e.resetOnSelect&&t.setState({activeItem:t.props.items[0]}),y.Utils.safeInvoke(r.popoverWillOpen)},t.handlePopoverDidOpen=function(){var e=t.props.popoverProps,n=void 0===e?{}:e;null!=t.queryList&&t.queryList.scrollActiveItemIntoView(),y.Utils.safeInvoke(n.popoverDidOpen)},t.handleActiveItemChange=function(e){return t.setState({activeItem:e})},t.getTargetKeyDownHandler=function(e){return function(n){var r=n.which,o=t.props.resetOnSelect;r===y.Keys.ESCAPE||r===y.Keys.TAB?(null!=t.input&&t.input.blur(),t.setState({activeItem:o?t.props.items[0]:t.state.activeItem,isOpen:!1,query:o?"":t.state.query})):r!==y.Keys.BACKSPACE&&r!==y.Keys.ARROW_LEFT&&r!==y.Keys.ARROW_RIGHT&&t.setState({isOpen:!0}),t.state.isOpen&&y.Utils.safeInvoke(e,n)}},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.initialContent,e.noResults,e.openOnKeyDown,e.popoverProps,e.resetOnSelect,e.tagInputProps,v(e,["initialContent","noResults","openOnKeyDown","popoverProps","resetOnSelect","tagInputProps"]));return m.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=this.props,o=r.initialContent,i=r.noResults;if(null!=o&&this.isQueryEmpty())return o;var s=t.map(n).filter(function(e){return null!=e});return s.length>0?s:i},t.displayName="Blueprint2.MultiSelect",t}(m.PureComponent),C=function(e){function t(t,n){var r=e.call(this,t,n)||this;r.TypedQueryList=h.ofType(),r.refHandlers={input:function(e){r.input=e;var t=r.props.inputProps,n=void 0===t?{}:t;y.Utils.safeInvoke(n.inputRef,e)},queryList:function(e){return r.list=e}},r.renderQueryList=function(e){var t=r.props,n=t.filterable,o=void 0===n||n,i=t.disabled,s=void 0!==i&&i,p=t.inputProps,u=void 0===p?{}:p,l=t.popoverProps,v=void 0===l?{}:l,d=m.createElement(y.InputGroup,c({autoFocus:!0,leftIcon:"search",placeholder:"Filter...",rightElement:r.maybeRenderInputClearButton(),value:e.query},u,{inputRef:r.refHandlers.input,onChange:r.handleQueryChange})),h=e.handleKeyDown,I=e.handleKeyUp;return m.createElement(y.Popover,c({autoFocus:!1,enforceFocus:!1,isOpen:r.state.isOpen,disabled:s,position:y.Position.BOTTOM_LEFT},v,{className:f()(e.className,v.className),onInteraction:r.handlePopoverInteraction,popoverClassName:f()(a,v.popoverClassName),popoverWillOpen:r.handlePopoverWillOpen,popoverDidOpen:r.handlePopoverDidOpen,popoverWillClose:r.handlePopoverWillClose}),m.createElement("div",{onKeyDown:r.state.isOpen?h:r.handleTargetKeyDown,onKeyUp:r.state.isOpen?I:void 0},r.props.children),m.createElement("div",{onKeyDown:h,onKeyUp:I},o?d:void 0,m.createElement(y.Menu,{ulRef:e.itemsParentRef},r.renderItems(e))))},r.isQueryEmpty=function(){return 0===r.state.query.length},r.handleActiveItemChange=function(e){return r.setState({activeItem:e})},r.handleTargetKeyDown=function(e){e.which!==y.Keys.ARROW_UP&&e.which!==y.Keys.ARROW_DOWN||r.setState({isOpen:!0})},r.handleItemSelect=function(e,t){r.setState({isOpen:!1}),r.props.resetOnSelect&&r.resetQuery(),y.Utils.safeInvoke(r.props.onItemSelect,e,t)},r.handlePopoverInteraction=function(e){r.setState({isOpen:e});var t=r.props.popoverProps,n=void 0===t?{}:t;y.Utils.safeInvoke(n.onInteraction,e)},r.handlePopoverWillOpen=function(){var e=r.props,t=e.popoverProps,n=void 0===t?{}:t,o=e.resetOnClose;r.previousFocusedElement=document.activeElement,o&&r.resetQuery(),y.Utils.safeInvoke(n.popoverWillOpen)},r.handlePopoverDidOpen=function(){null!=r.list&&r.list.scrollActiveItemIntoView(),requestAnimationFrame(function(){var e=r.props.inputProps;!1!==(void 0===e?{}:e).autoFocus&&null!=r.input&&r.input.focus()});var e=r.props.popoverProps,t=void 0===e?{}:e;y.Utils.safeInvoke(t.popoverDidOpen)},r.handlePopoverWillClose=function(){requestAnimationFrame(function(){void 0!==r.previousFocusedElement&&(r.previousFocusedElement.focus(),r.previousFocusedElement=void 0)});var e=r.props.popoverProps,t=void 0===e?{}:e;y.Utils.safeInvoke(t.popoverWillClose)},r.handleQueryChange=function(e){var t=r.props,n=t.inputProps,o=void 0===n?{}:n,i=t.onQueryChange,s=e.currentTarget.value;r.setState({query:s}),y.Utils.safeInvoke(o.onChange,e),y.Utils.safeInvoke(i,s)},r.resetQuery=function(){var e=r.props,t=e.items,n=e.onQueryChange;r.setState({activeItem:t[0],query:""}),y.Utils.safeInvoke(n,"")};var o=t.inputProps,i=void 0===o?{}:o,s=null==i.value?"":i.value.toString();return r.state={isOpen:!1,query:s},r}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.filterable,e.initialContent,e.inputProps,e.noResults,e.popoverProps,v(e,["filterable","initialContent","inputProps","noResults","popoverProps"]));return m.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.componentWillReceiveProps=function(e){var t=e.inputProps,n=void 0===t?{}:t;void 0!==n.value&&this.state.query!==n.value&&this.setState({query:n.value.toString()})},t.prototype.componentDidUpdate=function(e,t){this.state.isOpen&&!t.isOpen&&null!=this.list&&this.list.scrollActiveItemIntoView()},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=this.props,o=r.initialContent,i=r.noResults;if(null!=o&&this.isQueryEmpty())return o;var s=t.map(n).filter(function(e){return null!=e});return s.length>0?s:i},t.prototype.maybeRenderInputClearButton=function(){return this.isQueryEmpty()?void 0:m.createElement(y.Button,{className:y.Classes.MINIMAL,icon:"cross",onClick:this.resetQuery})},t.displayName="Blueprint2.Select",t}(m.PureComponent),S=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.state={isOpen:!1,isTyping:!1,query:""},t.TypedQueryList=h.ofType(),t.refHandlers={input:function(e){t.input=e;var n=t.props.inputProps,r=void 0===n?{}:n;y.Utils.safeInvoke(r.inputRef,e)},queryList:function(e){return t.queryList=e}},t.renderQueryList=function(e){var n=t.props,r=n.inputValueRenderer,o=n.inputProps,i=void 0===o?{}:o,s=n.popoverProps,p=void 0===s?{}:s,u=t.state,l=u.isTyping,v=u.selectedItem,d=u.query,h=e.handleKeyDown,I=e.handleKeyUp,P=l?d:v?r(v):"";return m.createElement(y.Popover,c({autoFocus:!1,enforceFocus:!1,isOpen:t.state.isOpen,position:y.Position.BOTTOM_LEFT},p,{className:f()(e.className,p.className),onInteraction:t.handlePopoverInteraction,popoverClassName:f()(a,p.popoverClassName),popoverDidOpen:t.handlePopoverDidOpen,popoverWillClose:t.handlePopoverWillClose}),m.createElement(y.InputGroup,c({placeholder:"Search...",value:P},i,{inputRef:t.refHandlers.input,onChange:t.handleQueryChange,onFocus:t.handleInputFocus,onKeyDown:t.getTargetKeyDownHandler(h),onKeyUp:t.getTargetKeyUpHandler(I)})),m.createElement("div",{onKeyDown:h,onKeyUp:I},m.createElement(y.Menu,{ulRef:e.itemsParentRef},t.renderItems(e))))},t.selectText=function(){requestAnimationFrame(function(){null!=t.input&&t.input.setSelectionRange(0,t.input.value.length)})},t.handleInputFocus=function(e){var n=t.props,r=n.openOnKeyDown,o=n.inputProps,i=void 0===o?{}:o;t.selectText(),r||t.setState({isOpen:!0}),y.Utils.safeInvoke(i.onFocus,e)},t.handleActiveItemChange=function(e){return t.setState({activeItem:e})},t.handleItemSelect=function(e,n){var r;t.props.closeOnSelect?(null!=t.input&&t.input.blur(),r=!1):(null!=t.input&&t.input.focus(),t.selectText(),r=!0),t.setState({isOpen:r,isTyping:!1,query:"",selectedItem:e}),y.Utils.safeInvoke(t.props.onItemSelect,e,n)},t.handlePopoverInteraction=function(e){return requestAnimationFrame(function(){var n=t.props.popoverProps,r=void 0===n?{}:n;null!=t.input&&t.input!==document.activeElement&&t.setState({isOpen:!1}),y.Utils.safeInvoke(r.onInteraction,e)})},t.handlePopoverDidOpen=function(){var e=t.props.popoverProps,n=void 0===e?{}:e;null!=t.queryList&&t.queryList.scrollActiveItemIntoView(),y.Utils.safeInvoke(n.popoverDidOpen)},t.handlePopoverWillClose=function(){var e=t.props.popoverProps,n=void 0===e?{}:e,r=t.state.selectedItem;t.setState({activeItem:r||t.props.items[0],query:""}),y.Utils.safeInvoke(n.popoverDidOpen)},t.handleQueryChange=function(e){var n=t.props.inputProps,r=void 0===n?{}:n;t.setState({isTyping:!0,query:e.currentTarget.value}),y.Utils.safeInvoke(r.onChange,e)},t.getTargetKeyDownHandler=function(e){return function(n){var r=n.which,o=t.state,i=o.isTyping,s=o.selectedItem,p=t.props,a=p.inputProps,u=void 0===a?{}:a,l=p.openOnKeyDown;r===y.Keys.ESCAPE||r===y.Keys.TAB?(null!=t.input&&t.input.blur(),t.setState({isOpen:!1,selectedItem:i?void 0:s})):l&&r!==y.Keys.BACKSPACE&&r!==y.Keys.ARROW_LEFT&&r!==y.Keys.ARROW_RIGHT&&t.setState({isOpen:!0}),t.state.isOpen&&y.Utils.safeInvoke(e,n),y.Utils.safeInvoke(u.onKeyDown,n)}},t.getTargetKeyUpHandler=function(e){return function(n){var r=t.props.inputProps,o=void 0===r?{}:r;t.state.isOpen&&y.Utils.safeInvoke(e,n),y.Utils.safeInvoke(o.onKeyUp,n)}},t}return l(t,e),t.ofType=function(){return t},t.prototype.render=function(){var e=this.props,t=(e.inputProps,e.noResults,e.popoverProps,v(e,["inputProps","noResults","popoverProps"]));return m.createElement(this.TypedQueryList,c({},t,{activeItem:this.state.activeItem,onActiveItemChange:this.handleActiveItemChange,onItemSelect:this.handleItemSelect,query:this.state.query,ref:this.refHandlers.queryList,renderer:this.renderQueryList}))},t.prototype.componentDidUpdate=function(e,t){this.state.isOpen&&!t.isOpen&&null!=this.queryList&&this.queryList.scrollActiveItemIntoView()},t.prototype.renderItems=function(e){var t=e.items,n=e.renderItem,r=t.map(n).filter(function(e){return null!=e});return r.length>0?r:this.props.noResults},t.displayName="Blueprint2.Suggest",t.defaultProps={closeOnSelect:!0,openOnKeyDown:!1},t}(m.PureComponent);n.d(t,"MULTISELECT",function(){return r}),n.d(t,"MULTISELECT_POPOVER",function(){return o}),n.d(t,"OMNIBAR",function(){return i}),n.d(t,"OMNIBAR_OVERLAY",function(){return s}),n.d(t,"SELECT",function(){return p}),n.d(t,"SELECT_POPOVER",function(){return a}),n.d(t,"Omnibar",function(){return O}),n.d(t,"QueryList",function(){return h}),n.d(t,"MultiSelect",function(){return g}),n.d(t,"Select",function(){return C}),n.d(t,"Suggest",function(){return S})}])}); |
@@ -16,2 +16,2 @@ /** | ||
*/ | ||
export declare type ItemPredicate<T> = (query: string, item: T, index: number) => boolean; | ||
export declare type ItemPredicate<T> = (query: string, item: T, index?: number) => boolean; |
@@ -43,10 +43,10 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
query?: string; | ||
query: string; | ||
} | ||
export declare class Omnibar<T> extends React.PureComponent<IOmnibarProps<T>, IOmnibarState<T>> { | ||
static displayName: string; | ||
static ofType<T>(): new () => Omnibar<T>; | ||
static ofType<T>(): new (props: IOmnibarProps<T>) => Omnibar<T>; | ||
state: IOmnibarState<T>; | ||
private TypedQueryList; | ||
private queryList; | ||
private queryList?; | ||
private refHandlers; | ||
@@ -53,0 +53,0 @@ render(): JSX.Element; |
@@ -9,6 +9,6 @@ "use strict"; | ||
var tslib_1 = require("tslib"); | ||
var classNames = require("classnames"); | ||
var React = require("react"); | ||
var classnames_1 = tslib_1.__importDefault(require("classnames")); | ||
var React = tslib_1.__importStar(require("react")); | ||
var core_1 = require("@blueprintjs/core"); | ||
var Classes = require("../../common/classes"); | ||
var Classes = tslib_1.__importStar(require("../../common/classes")); | ||
var queryList_1 = require("../query-list/queryList"); | ||
@@ -30,4 +30,4 @@ var Omnibar = /** @class */ (function (_super) { | ||
var handlers = isOpen && !_this.isQueryEmpty() ? { onKeyDown: handleKeyDown, onKeyUp: handleKeyUp } : {}; | ||
return (React.createElement(core_1.Overlay, tslib_1.__assign({ hasBackdrop: true }, overlayProps, { isOpen: isOpen, className: classNames(overlayProps.className, Classes.OMNIBAR_OVERLAY), onClose: _this.handleOverlayClose }), | ||
React.createElement("div", tslib_1.__assign({ className: classNames(listProps.className, Classes.OMNIBAR) }, handlers), | ||
return (React.createElement(core_1.Overlay, tslib_1.__assign({ hasBackdrop: true }, overlayProps, { isOpen: isOpen, className: classnames_1.default(overlayProps.className, Classes.OMNIBAR_OVERLAY), onClose: _this.handleOverlayClose }), | ||
React.createElement("div", tslib_1.__assign({ className: classnames_1.default(listProps.className, Classes.OMNIBAR) }, handlers), | ||
React.createElement(core_1.InputGroup, tslib_1.__assign({ autoFocus: true, className: core_1.Classes.LARGE, leftIcon: "search", placeholder: "Search...", value: listProps.query }, inputProps, { onChange: _this.handleQueryChange })), | ||
@@ -34,0 +34,0 @@ _this.maybeRenderMenu(listProps)))); |
@@ -80,3 +80,3 @@ /// <reference types="react" /> | ||
*/ | ||
handleItemSelect: (item: T | undefined, event?: React.SyntheticEvent<HTMLElement>) => void; | ||
handleItemSelect: (item: T, event?: React.SyntheticEvent<HTMLElement>) => void; | ||
/** | ||
@@ -97,3 +97,3 @@ * Keyboard handler for up/down arrow keys to shift the active item. | ||
*/ | ||
renderItem: (item: T, index?: number) => JSX.Element; | ||
renderItem: (item: T, index?: number) => JSX.Element | null; | ||
/** | ||
@@ -108,3 +108,3 @@ * Array of all (unfiltered) items in the list. | ||
*/ | ||
itemsParentRef: (ref: HTMLElement) => void; | ||
itemsParentRef: (ref: HTMLElement | null) => void; | ||
/** | ||
@@ -117,3 +117,3 @@ * Controlled query string. Attach an `onChange` handler to the relevant | ||
export interface IQueryListState<T> { | ||
filteredItems?: T[]; | ||
filteredItems: T[]; | ||
} | ||
@@ -123,3 +123,3 @@ export declare class QueryList<T> extends React.Component<IQueryListProps<T>, IQueryListState<T>> { | ||
static ofType<T>(): new (props: IQueryListProps<T>) => QueryList<T>; | ||
private itemsParentRef; | ||
private itemsParentRef?; | ||
private refHandlers; | ||
@@ -126,0 +126,0 @@ /** |
@@ -9,3 +9,3 @@ "use strict"; | ||
var tslib_1 = require("tslib"); | ||
var React = require("react"); | ||
var React = tslib_1.__importStar(require("react")); | ||
var core_1 = require("@blueprintjs/core"); | ||
@@ -19,2 +19,7 @@ var QueryList = /** @class */ (function (_super) { | ||
}; | ||
/** | ||
* flag indicating that we should check whether selected item is in viewport after rendering, | ||
* typically because of keyboard change. | ||
*/ | ||
_this.shouldCheckActiveItemInViewport = false; | ||
_this.handleItemSelect = function (item, event) { | ||
@@ -44,3 +49,3 @@ core_1.Utils.safeInvoke(_this.props.onActiveItemChange, item); | ||
// and the popvoer would re-open out of our control :(. | ||
if (event.keyCode === core_1.Keys.ENTER) { | ||
if (event.keyCode === core_1.Keys.ENTER && activeItem != null) { | ||
event.preventDefault(); | ||
@@ -73,4 +78,5 @@ core_1.Utils.safeInvoke(onItemSelect, activeItem, event); | ||
QueryList.prototype.render = function () { | ||
var _a = this.props, items = _a.items, renderer = _a.renderer, query = _a.query; | ||
var _a = this.props, className = _a.className, items = _a.items, renderer = _a.renderer, query = _a.query; | ||
return renderer({ | ||
className: className, | ||
handleItemSelect: this.handleItemSelect, | ||
@@ -140,6 +146,8 @@ handleKeyDown: this.handleKeyDown, | ||
QueryList.prototype.getActiveIndex = function () { | ||
var activeItem = this.props.activeItem; | ||
// NOTE: this operation is O(n) so it should be avoided in render(). safe for events though. | ||
return this.state.filteredItems.indexOf(this.props.activeItem); | ||
return activeItem == null ? -1 : this.state.filteredItems.indexOf(activeItem); | ||
}; | ||
QueryList.prototype.getItemsParentPadding = function () { | ||
// assert ref exists because it was checked before calling | ||
var _a = getComputedStyle(this.itemsParentRef), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom; | ||
@@ -165,3 +173,3 @@ return { | ||
function pxToNumber(value) { | ||
return parseInt(value.slice(0, -2), 10); | ||
return value == null ? 0 : parseInt(value.slice(0, -2), 10); | ||
} | ||
@@ -168,0 +176,0 @@ function getFilteredItems(_a) { |
@@ -35,12 +35,12 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
isOpen?: boolean; | ||
query?: string; | ||
isOpen: boolean; | ||
query: string; | ||
} | ||
export declare class MultiSelect<T> extends React.PureComponent<IMultiSelectProps<T>, IMultiSelectState<T>> { | ||
static displayName: string; | ||
static ofType<T>(): new () => MultiSelect<T>; | ||
static ofType<T>(): new (props: IMultiSelectProps<T>) => MultiSelect<T>; | ||
state: IMultiSelectState<T>; | ||
private TypedQueryList; | ||
private input; | ||
private queryList; | ||
private input?; | ||
private queryList?; | ||
private refHandlers; | ||
@@ -47,0 +47,0 @@ render(): JSX.Element; |
@@ -8,6 +8,6 @@ "use strict"; | ||
var tslib_1 = require("tslib"); | ||
var classNames = require("classnames"); | ||
var React = require("react"); | ||
var classnames_1 = tslib_1.__importDefault(require("classnames")); | ||
var React = tslib_1.__importStar(require("react")); | ||
var core_1 = require("@blueprintjs/core"); | ||
var Classes = require("../../common/classes"); | ||
var Classes = tslib_1.__importStar(require("../../common/classes")); | ||
var queryList_1 = require("../query-list/queryList"); | ||
@@ -24,3 +24,7 @@ var MultiSelect = /** @class */ (function (_super) { | ||
_this.refHandlers = { | ||
input: function (ref) { return (_this.input = ref); }, | ||
input: function (ref) { | ||
_this.input = ref; | ||
var _a = _this.props.tagInputProps, tagInputProps = _a === void 0 ? {} : _a; | ||
core_1.Utils.safeInvoke(tagInputProps.inputRef, ref); | ||
}, | ||
queryList: function (ref) { return (_this.queryList = ref); }, | ||
@@ -34,5 +38,5 @@ }; | ||
onChange: _this.handleQueryChange, value: query }); | ||
return (React.createElement(core_1.Popover, tslib_1.__assign({ autoFocus: false, canEscapeKeyClose: true, enforceFocus: false, isOpen: _this.state.isOpen, position: core_1.Position.BOTTOM_LEFT }, popoverProps, { className: classNames(listProps.className, popoverProps.className), onInteraction: _this.handlePopoverInteraction, popoverClassName: classNames(Classes.MULTISELECT_POPOVER, popoverProps.popoverClassName), popoverDidOpen: _this.handlePopoverDidOpen, popoverWillOpen: _this.handlePopoverWillOpen }), | ||
return (React.createElement(core_1.Popover, tslib_1.__assign({ autoFocus: false, canEscapeKeyClose: true, enforceFocus: false, isOpen: _this.state.isOpen, position: core_1.Position.BOTTOM_LEFT }, popoverProps, { className: classnames_1.default(listProps.className, popoverProps.className), onInteraction: _this.handlePopoverInteraction, popoverClassName: classnames_1.default(Classes.MULTISELECT_POPOVER, popoverProps.popoverClassName), popoverDidOpen: _this.handlePopoverDidOpen, popoverWillOpen: _this.handlePopoverWillOpen }), | ||
React.createElement("div", { onKeyDown: _this.getTargetKeyDownHandler(handleKeyDown), onKeyUp: _this.state.isOpen ? handleKeyUp : undefined }, | ||
React.createElement(core_1.TagInput, tslib_1.__assign({}, tagInputProps, { inputProps: defaultInputProps, inputRef: _this.refHandlers.input, className: classNames(Classes.MULTISELECT, tagInputProps.className), values: selectedItems.map(_this.props.tagRenderer) }))), | ||
React.createElement(core_1.TagInput, tslib_1.__assign({}, tagInputProps, { inputProps: defaultInputProps, inputRef: _this.refHandlers.input, className: classnames_1.default(Classes.MULTISELECT, tagInputProps.className), values: selectedItems.map(_this.props.tagRenderer) }))), | ||
React.createElement("div", { onKeyDown: _this.getTargetKeyDownHandler(handleKeyDown), onKeyUp: handleKeyUp }, | ||
@@ -42,12 +46,14 @@ React.createElement(core_1.Menu, { ulRef: listProps.itemsParentRef }, _this.renderItems(listProps))))); | ||
_this.isQueryEmpty = function () { return _this.state.query.length === 0; }; | ||
_this.handleQueryChange = function (e) { | ||
_this.handleQueryChange = function (evt) { | ||
var _a = _this.props, _b = _a.tagInputProps, tagInputProps = _b === void 0 ? {} : _b, openOnKeyDown = _a.openOnKeyDown; | ||
var query = e.currentTarget.value; | ||
var query = evt.currentTarget.value; | ||
_this.setState({ query: query, isOpen: !_this.isQueryEmpty() || !openOnKeyDown }); | ||
if (tagInputProps.inputProps != null) { | ||
core_1.Utils.safeInvoke(tagInputProps.inputProps.onChange, e); | ||
core_1.Utils.safeInvoke(tagInputProps.inputProps.onChange, evt); | ||
} | ||
}; | ||
_this.handleItemSelect = function (item, e) { | ||
_this.input.focus(); | ||
_this.handleItemSelect = function (item, evt) { | ||
if (_this.input != null) { | ||
_this.input.focus(); | ||
} | ||
// make sure the query is valid by checking if activeItem is defined | ||
@@ -61,3 +67,3 @@ if (_this.state.activeItem != null) { | ||
} | ||
core_1.Utils.safeInvoke(_this.props.onItemSelect, item, e); | ||
core_1.Utils.safeInvoke(_this.props.onItemSelect, item, evt); | ||
} | ||
@@ -99,5 +105,3 @@ }; | ||
}; | ||
_this.handleActiveItemChange = function (activeItem) { | ||
_this.setState({ activeItem: activeItem }); | ||
}; | ||
_this.handleActiveItemChange = function (activeItem) { return _this.setState({ activeItem: activeItem }); }; | ||
_this.getTargetKeyDownHandler = function (handleQueryListKeyDown) { | ||
@@ -108,2 +112,7 @@ return function (e) { | ||
if (which === core_1.Keys.ESCAPE || which === core_1.Keys.TAB) { | ||
// By default the escape key will not trigger a blur on the | ||
// input element. It must be done explicitly. | ||
if (_this.input != null) { | ||
_this.input.blur(); | ||
} | ||
_this.setState({ | ||
@@ -110,0 +119,0 @@ activeItem: resetOnSelect ? _this.props.items[0] : _this.state.activeItem, |
@@ -53,15 +53,14 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
isOpen?: boolean; | ||
query?: string; | ||
isOpen: boolean; | ||
query: string; | ||
} | ||
export declare class Select<T> extends React.PureComponent<ISelectProps<T>, ISelectState<T>> { | ||
static displayName: string; | ||
static ofType<T>(): new () => Select<T>; | ||
state: ISelectState<T>; | ||
private input; | ||
static ofType<T>(): new (props: ISelectProps<T>) => Select<T>; | ||
private TypedQueryList; | ||
private list; | ||
private input?; | ||
private list?; | ||
private previousFocusedElement; | ||
private refHandlers; | ||
private previousFocusedElement; | ||
constructor(props?: ISelectProps<T>, context?: any); | ||
constructor(props: ISelectProps<T>, context?: any); | ||
render(): JSX.Element; | ||
@@ -68,0 +67,0 @@ componentWillReceiveProps(nextProps: ISelectProps<T>): void; |
@@ -9,6 +9,6 @@ "use strict"; | ||
var tslib_1 = require("tslib"); | ||
var classNames = require("classnames"); | ||
var React = require("react"); | ||
var classnames_1 = tslib_1.__importDefault(require("classnames")); | ||
var React = tslib_1.__importStar(require("react")); | ||
var core_1 = require("@blueprintjs/core"); | ||
var Classes = require("../../common/classes"); | ||
var Classes = tslib_1.__importStar(require("../../common/classes")); | ||
var queryList_1 = require("../query-list/queryList"); | ||
@@ -19,3 +19,2 @@ var Select = /** @class */ (function (_super) { | ||
var _this = _super.call(this, props, context) || this; | ||
_this.state = { isOpen: false, query: "" }; | ||
_this.TypedQueryList = queryList_1.QueryList.ofType(); | ||
@@ -35,3 +34,3 @@ _this.refHandlers = { | ||
var handleKeyDown = listProps.handleKeyDown, handleKeyUp = listProps.handleKeyUp; | ||
return (React.createElement(core_1.Popover, tslib_1.__assign({ autoFocus: false, enforceFocus: false, isOpen: _this.state.isOpen, disabled: disabled, position: core_1.Position.BOTTOM_LEFT }, popoverProps, { className: classNames(listProps.className, popoverProps.className), onInteraction: _this.handlePopoverInteraction, popoverClassName: classNames(Classes.SELECT_POPOVER, popoverProps.popoverClassName), popoverWillOpen: _this.handlePopoverWillOpen, popoverDidOpen: _this.handlePopoverDidOpen, popoverWillClose: _this.handlePopoverWillClose }), | ||
return (React.createElement(core_1.Popover, tslib_1.__assign({ autoFocus: false, enforceFocus: false, isOpen: _this.state.isOpen, disabled: disabled, position: core_1.Position.BOTTOM_LEFT }, popoverProps, { className: classnames_1.default(listProps.className, popoverProps.className), onInteraction: _this.handlePopoverInteraction, popoverClassName: classnames_1.default(Classes.SELECT_POPOVER, popoverProps.popoverClassName), popoverWillOpen: _this.handlePopoverWillOpen, popoverDidOpen: _this.handlePopoverDidOpen, popoverWillClose: _this.handlePopoverWillClose }), | ||
React.createElement("div", { onKeyDown: _this.state.isOpen ? handleKeyDown : _this.handleTargetKeyDown, onKeyUp: _this.state.isOpen ? handleKeyUp : undefined }, _this.props.children), | ||
@@ -111,3 +110,4 @@ React.createElement("div", { onKeyDown: handleKeyDown, onKeyUp: handleKeyUp }, | ||
}; | ||
var query = props && props.inputProps && props.inputProps.value !== undefined ? props.inputProps.value : ""; | ||
var _a = props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
var query = inputProps.value == null ? "" : inputProps.value.toString(); | ||
_this.state = { isOpen: false, query: query }; | ||
@@ -127,3 +127,3 @@ return _this; | ||
if (nextInputProps.value !== undefined && this.state.query !== nextInputProps.value) { | ||
this.setState({ query: nextInputProps.value }); | ||
this.setState({ query: nextInputProps.value.toString() }); | ||
} | ||
@@ -130,0 +130,0 @@ }; |
@@ -31,5 +31,5 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
isOpen?: boolean; | ||
isTyping?: boolean; | ||
query?: string; | ||
isOpen: boolean; | ||
isTyping: boolean; | ||
query: string; | ||
selectedItem?: T; | ||
@@ -39,8 +39,11 @@ } | ||
static displayName: string; | ||
static ofType<T>(): new () => Suggest<T>; | ||
static defaultProps: { | ||
closeOnSelect: boolean; | ||
openOnKeyDown: boolean; | ||
}; | ||
static ofType<T>(): new (props: ISuggestProps<T>) => Suggest<T>; | ||
state: ISuggestState<T>; | ||
private DEFAULT_PROPS; | ||
private input; | ||
private TypedQueryList; | ||
private queryList; | ||
private input?; | ||
private queryList?; | ||
private refHandlers; | ||
@@ -47,0 +50,0 @@ render(): JSX.Element; |
@@ -9,6 +9,6 @@ "use strict"; | ||
var tslib_1 = require("tslib"); | ||
var classNames = require("classnames"); | ||
var React = require("react"); | ||
var classnames_1 = tslib_1.__importDefault(require("classnames")); | ||
var React = tslib_1.__importStar(require("react")); | ||
var core_1 = require("@blueprintjs/core"); | ||
var Classes = require("../../common/classes"); | ||
var Classes = tslib_1.__importStar(require("../../common/classes")); | ||
var queryList_1 = require("../query-list/queryList"); | ||
@@ -24,24 +24,17 @@ var Suggest = /** @class */ (function (_super) { | ||
}; | ||
// not using defaultProps, because they're hard to type with generics (can't | ||
// use <T> on static members). but we still want to keep default values in | ||
// one, necessarily non-`static` place. note that Partial is necessary to | ||
// avoid having to define all required props, and all of these values must | ||
// be referenced manually in code. | ||
_this.DEFAULT_PROPS = { | ||
closeOnSelect: true, | ||
inputProps: {}, | ||
openOnKeyDown: false, | ||
popoverProps: {}, | ||
}; | ||
_this.TypedQueryList = queryList_1.QueryList.ofType(); | ||
_this.refHandlers = { | ||
input: function (ref) { return (_this.input = ref); }, | ||
input: function (ref) { | ||
_this.input = ref; | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
core_1.Utils.safeInvoke(inputProps.inputRef, ref); | ||
}, | ||
queryList: function (ref) { return (_this.queryList = ref); }, | ||
}; | ||
_this.renderQueryList = function (listProps) { | ||
var _a = _this.props, inputValueRenderer = _a.inputValueRenderer, _b = _a.inputProps, inputProps = _b === void 0 ? _this.DEFAULT_PROPS.inputProps : _b, _c = _a.popoverProps, popoverProps = _c === void 0 ? _this.DEFAULT_PROPS.popoverProps : _c; | ||
var _a = _this.props, inputValueRenderer = _a.inputValueRenderer, _b = _a.inputProps, inputProps = _b === void 0 ? {} : _b, _c = _a.popoverProps, popoverProps = _c === void 0 ? {} : _c; | ||
var _d = _this.state, isTyping = _d.isTyping, selectedItem = _d.selectedItem, query = _d.query; | ||
var handleKeyDown = listProps.handleKeyDown, handleKeyUp = listProps.handleKeyUp; | ||
var inputValue = isTyping ? query : selectedItem ? inputValueRenderer(selectedItem) : ""; | ||
return (React.createElement(core_1.Popover, tslib_1.__assign({ autoFocus: false, enforceFocus: false, isOpen: _this.state.isOpen, position: core_1.Position.BOTTOM_LEFT }, popoverProps, { className: classNames(listProps.className, popoverProps.className), onInteraction: _this.handlePopoverInteraction, popoverClassName: classNames(Classes.SELECT_POPOVER, popoverProps.popoverClassName), popoverDidOpen: _this.handlePopoverDidOpen, popoverWillClose: _this.handlePopoverWillClose }), | ||
return (React.createElement(core_1.Popover, tslib_1.__assign({ autoFocus: false, enforceFocus: false, isOpen: _this.state.isOpen, position: core_1.Position.BOTTOM_LEFT }, popoverProps, { className: classnames_1.default(listProps.className, popoverProps.className), onInteraction: _this.handlePopoverInteraction, popoverClassName: classnames_1.default(Classes.SELECT_POPOVER, popoverProps.popoverClassName), popoverDidOpen: _this.handlePopoverDidOpen, popoverWillClose: _this.handlePopoverWillClose }), | ||
React.createElement(core_1.InputGroup, tslib_1.__assign({ placeholder: "Search...", value: inputValue }, inputProps, { inputRef: _this.refHandlers.input, onChange: _this.handleQueryChange, onFocus: _this.handleInputFocus, onKeyDown: _this.getTargetKeyDownHandler(handleKeyDown), onKeyUp: _this.getTargetKeyUpHandler(handleKeyUp) })), | ||
@@ -52,9 +45,11 @@ React.createElement("div", { onKeyDown: handleKeyDown, onKeyUp: handleKeyUp }, | ||
_this.selectText = function () { | ||
if (_this.input != null) { | ||
// wait until the input is properly focused to select the text inside of it | ||
requestAnimationFrame(function () { return _this.input.setSelectionRange(0, _this.input.value.length); }); | ||
} | ||
// wait until the input is properly focused to select the text inside of it | ||
requestAnimationFrame(function () { | ||
if (_this.input != null) { | ||
_this.input.setSelectionRange(0, _this.input.value.length); | ||
} | ||
}); | ||
}; | ||
_this.handleInputFocus = function (event) { | ||
var _a = _this.props, _b = _a.openOnKeyDown, openOnKeyDown = _b === void 0 ? _this.DEFAULT_PROPS.openOnKeyDown : _b, _c = _a.inputProps, inputProps = _c === void 0 ? _this.DEFAULT_PROPS.inputProps : _c; | ||
var _a = _this.props, openOnKeyDown = _a.openOnKeyDown, _b = _a.inputProps, inputProps = _b === void 0 ? {} : _b; | ||
_this.selectText(); | ||
@@ -68,6 +63,7 @@ if (!openOnKeyDown) { | ||
_this.handleItemSelect = function (item, event) { | ||
var _a = _this.props.closeOnSelect, closeOnSelect = _a === void 0 ? _this.DEFAULT_PROPS.closeOnSelect : _a; | ||
var nextOpenState; | ||
if (!closeOnSelect) { | ||
_this.input.focus(); | ||
if (!_this.props.closeOnSelect) { | ||
if (_this.input != null) { | ||
_this.input.focus(); | ||
} | ||
_this.selectText(); | ||
@@ -77,3 +73,5 @@ nextOpenState = true; | ||
else { | ||
_this.input.blur(); | ||
if (_this.input != null) { | ||
_this.input.blur(); | ||
} | ||
nextOpenState = false; | ||
@@ -119,3 +117,3 @@ } | ||
_this.handleQueryChange = function (event) { | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? _this.DEFAULT_PROPS.inputProps : _a; | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
_this.setState({ | ||
@@ -128,8 +126,10 @@ isTyping: true, | ||
_this.getTargetKeyDownHandler = function (handleQueryListKeyDown) { | ||
return function (e) { | ||
var which = e.which; | ||
return function (evt) { | ||
var which = evt.which; | ||
var _a = _this.state, isTyping = _a.isTyping, selectedItem = _a.selectedItem; | ||
var _b = _this.props, _c = _b.inputProps, inputProps = _c === void 0 ? _this.DEFAULT_PROPS.inputProps : _c, _d = _b.openOnKeyDown, openOnKeyDown = _d === void 0 ? _this.DEFAULT_PROPS.openOnKeyDown : _d; | ||
var _b = _this.props, _c = _b.inputProps, inputProps = _c === void 0 ? {} : _c, openOnKeyDown = _b.openOnKeyDown; | ||
if (which === core_1.Keys.ESCAPE || which === core_1.Keys.TAB) { | ||
_this.input.blur(); | ||
if (_this.input != null) { | ||
_this.input.blur(); | ||
} | ||
_this.setState({ | ||
@@ -147,14 +147,14 @@ isOpen: false, | ||
if (_this.state.isOpen) { | ||
core_1.Utils.safeInvoke(handleQueryListKeyDown, e); | ||
core_1.Utils.safeInvoke(handleQueryListKeyDown, evt); | ||
} | ||
core_1.Utils.safeInvoke(inputProps.onKeyDown, e); | ||
core_1.Utils.safeInvoke(inputProps.onKeyDown, evt); | ||
}; | ||
}; | ||
_this.getTargetKeyUpHandler = function (handleQueryListKeyUp) { | ||
return function (e) { | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? _this.DEFAULT_PROPS.inputProps : _a; | ||
return function (evt) { | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
if (_this.state.isOpen) { | ||
core_1.Utils.safeInvoke(handleQueryListKeyUp, e); | ||
core_1.Utils.safeInvoke(handleQueryListKeyUp, evt); | ||
} | ||
core_1.Utils.safeInvoke(inputProps.onKeyUp, e); | ||
core_1.Utils.safeInvoke(inputProps.onKeyUp, evt); | ||
}; | ||
@@ -183,4 +183,9 @@ }; | ||
Suggest.displayName = "Blueprint2.Suggest"; | ||
// Note: can't use <T> in static members, so this remains dynamically typed. | ||
Suggest.defaultProps = { | ||
closeOnSelect: true, | ||
openOnKeyDown: false, | ||
}; | ||
return Suggest; | ||
}(React.PureComponent)); | ||
exports.Suggest = Suggest; |
@@ -16,2 +16,2 @@ /** | ||
*/ | ||
export declare type ItemPredicate<T> = (query: string, item: T, index: number) => boolean; | ||
export declare type ItemPredicate<T> = (query: string, item: T, index?: number) => boolean; |
@@ -43,10 +43,10 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
query?: string; | ||
query: string; | ||
} | ||
export declare class Omnibar<T> extends React.PureComponent<IOmnibarProps<T>, IOmnibarState<T>> { | ||
static displayName: string; | ||
static ofType<T>(): new () => Omnibar<T>; | ||
static ofType<T>(): new (props: IOmnibarProps<T>) => Omnibar<T>; | ||
state: IOmnibarState<T>; | ||
private TypedQueryList; | ||
private queryList; | ||
private queryList?; | ||
private refHandlers; | ||
@@ -53,0 +53,0 @@ render(): JSX.Element; |
@@ -7,3 +7,3 @@ /* | ||
import * as tslib_1 from "tslib"; | ||
import * as classNames from "classnames"; | ||
import classNames from "classnames"; | ||
import * as React from "react"; | ||
@@ -10,0 +10,0 @@ import { Classes as CoreClasses, InputGroup, Menu, Overlay, Utils, } from "@blueprintjs/core"; |
@@ -80,3 +80,3 @@ /// <reference types="react" /> | ||
*/ | ||
handleItemSelect: (item: T | undefined, event?: React.SyntheticEvent<HTMLElement>) => void; | ||
handleItemSelect: (item: T, event?: React.SyntheticEvent<HTMLElement>) => void; | ||
/** | ||
@@ -97,3 +97,3 @@ * Keyboard handler for up/down arrow keys to shift the active item. | ||
*/ | ||
renderItem: (item: T, index?: number) => JSX.Element; | ||
renderItem: (item: T, index?: number) => JSX.Element | null; | ||
/** | ||
@@ -108,3 +108,3 @@ * Array of all (unfiltered) items in the list. | ||
*/ | ||
itemsParentRef: (ref: HTMLElement) => void; | ||
itemsParentRef: (ref: HTMLElement | null) => void; | ||
/** | ||
@@ -117,3 +117,3 @@ * Controlled query string. Attach an `onChange` handler to the relevant | ||
export interface IQueryListState<T> { | ||
filteredItems?: T[]; | ||
filteredItems: T[]; | ||
} | ||
@@ -123,3 +123,3 @@ export declare class QueryList<T> extends React.Component<IQueryListProps<T>, IQueryListState<T>> { | ||
static ofType<T>(): new (props: IQueryListProps<T>) => QueryList<T>; | ||
private itemsParentRef; | ||
private itemsParentRef?; | ||
private refHandlers; | ||
@@ -126,0 +126,0 @@ /** |
@@ -16,2 +16,7 @@ /* | ||
}; | ||
/** | ||
* flag indicating that we should check whether selected item is in viewport after rendering, | ||
* typically because of keyboard change. | ||
*/ | ||
_this.shouldCheckActiveItemInViewport = false; | ||
_this.handleItemSelect = function (item, event) { | ||
@@ -41,3 +46,3 @@ Utils.safeInvoke(_this.props.onActiveItemChange, item); | ||
// and the popvoer would re-open out of our control :(. | ||
if (event.keyCode === Keys.ENTER) { | ||
if (event.keyCode === Keys.ENTER && activeItem != null) { | ||
event.preventDefault(); | ||
@@ -70,4 +75,5 @@ Utils.safeInvoke(onItemSelect, activeItem, event); | ||
QueryList.prototype.render = function () { | ||
var _a = this.props, items = _a.items, renderer = _a.renderer, query = _a.query; | ||
var _a = this.props, className = _a.className, items = _a.items, renderer = _a.renderer, query = _a.query; | ||
return renderer({ | ||
className: className, | ||
handleItemSelect: this.handleItemSelect, | ||
@@ -137,6 +143,8 @@ handleKeyDown: this.handleKeyDown, | ||
QueryList.prototype.getActiveIndex = function () { | ||
var activeItem = this.props.activeItem; | ||
// NOTE: this operation is O(n) so it should be avoided in render(). safe for events though. | ||
return this.state.filteredItems.indexOf(this.props.activeItem); | ||
return activeItem == null ? -1 : this.state.filteredItems.indexOf(activeItem); | ||
}; | ||
QueryList.prototype.getItemsParentPadding = function () { | ||
// assert ref exists because it was checked before calling | ||
var _a = getComputedStyle(this.itemsParentRef), paddingTop = _a.paddingTop, paddingBottom = _a.paddingBottom; | ||
@@ -162,3 +170,3 @@ return { | ||
function pxToNumber(value) { | ||
return parseInt(value.slice(0, -2), 10); | ||
return value == null ? 0 : parseInt(value.slice(0, -2), 10); | ||
} | ||
@@ -165,0 +173,0 @@ function getFilteredItems(_a) { |
@@ -35,12 +35,12 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
isOpen?: boolean; | ||
query?: string; | ||
isOpen: boolean; | ||
query: string; | ||
} | ||
export declare class MultiSelect<T> extends React.PureComponent<IMultiSelectProps<T>, IMultiSelectState<T>> { | ||
static displayName: string; | ||
static ofType<T>(): new () => MultiSelect<T>; | ||
static ofType<T>(): new (props: IMultiSelectProps<T>) => MultiSelect<T>; | ||
state: IMultiSelectState<T>; | ||
private TypedQueryList; | ||
private input; | ||
private queryList; | ||
private input?; | ||
private queryList?; | ||
private refHandlers; | ||
@@ -47,0 +47,0 @@ render(): JSX.Element; |
@@ -6,3 +6,3 @@ /** | ||
import * as tslib_1 from "tslib"; | ||
import * as classNames from "classnames"; | ||
import classNames from "classnames"; | ||
import * as React from "react"; | ||
@@ -22,3 +22,7 @@ import { Keys, Menu, Popover, Position, TagInput, Utils, } from "@blueprintjs/core"; | ||
_this.refHandlers = { | ||
input: function (ref) { return (_this.input = ref); }, | ||
input: function (ref) { | ||
_this.input = ref; | ||
var _a = _this.props.tagInputProps, tagInputProps = _a === void 0 ? {} : _a; | ||
Utils.safeInvoke(tagInputProps.inputRef, ref); | ||
}, | ||
queryList: function (ref) { return (_this.queryList = ref); }, | ||
@@ -39,12 +43,14 @@ }; | ||
_this.isQueryEmpty = function () { return _this.state.query.length === 0; }; | ||
_this.handleQueryChange = function (e) { | ||
_this.handleQueryChange = function (evt) { | ||
var _a = _this.props, _b = _a.tagInputProps, tagInputProps = _b === void 0 ? {} : _b, openOnKeyDown = _a.openOnKeyDown; | ||
var query = e.currentTarget.value; | ||
var query = evt.currentTarget.value; | ||
_this.setState({ query: query, isOpen: !_this.isQueryEmpty() || !openOnKeyDown }); | ||
if (tagInputProps.inputProps != null) { | ||
Utils.safeInvoke(tagInputProps.inputProps.onChange, e); | ||
Utils.safeInvoke(tagInputProps.inputProps.onChange, evt); | ||
} | ||
}; | ||
_this.handleItemSelect = function (item, e) { | ||
_this.input.focus(); | ||
_this.handleItemSelect = function (item, evt) { | ||
if (_this.input != null) { | ||
_this.input.focus(); | ||
} | ||
// make sure the query is valid by checking if activeItem is defined | ||
@@ -58,3 +64,3 @@ if (_this.state.activeItem != null) { | ||
} | ||
Utils.safeInvoke(_this.props.onItemSelect, item, e); | ||
Utils.safeInvoke(_this.props.onItemSelect, item, evt); | ||
} | ||
@@ -96,5 +102,3 @@ }; | ||
}; | ||
_this.handleActiveItemChange = function (activeItem) { | ||
_this.setState({ activeItem: activeItem }); | ||
}; | ||
_this.handleActiveItemChange = function (activeItem) { return _this.setState({ activeItem: activeItem }); }; | ||
_this.getTargetKeyDownHandler = function (handleQueryListKeyDown) { | ||
@@ -105,2 +109,7 @@ return function (e) { | ||
if (which === Keys.ESCAPE || which === Keys.TAB) { | ||
// By default the escape key will not trigger a blur on the | ||
// input element. It must be done explicitly. | ||
if (_this.input != null) { | ||
_this.input.blur(); | ||
} | ||
_this.setState({ | ||
@@ -107,0 +116,0 @@ activeItem: resetOnSelect ? _this.props.items[0] : _this.state.activeItem, |
@@ -53,15 +53,14 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
isOpen?: boolean; | ||
query?: string; | ||
isOpen: boolean; | ||
query: string; | ||
} | ||
export declare class Select<T> extends React.PureComponent<ISelectProps<T>, ISelectState<T>> { | ||
static displayName: string; | ||
static ofType<T>(): new () => Select<T>; | ||
state: ISelectState<T>; | ||
private input; | ||
static ofType<T>(): new (props: ISelectProps<T>) => Select<T>; | ||
private TypedQueryList; | ||
private list; | ||
private input?; | ||
private list?; | ||
private previousFocusedElement; | ||
private refHandlers; | ||
private previousFocusedElement; | ||
constructor(props?: ISelectProps<T>, context?: any); | ||
constructor(props: ISelectProps<T>, context?: any); | ||
render(): JSX.Element; | ||
@@ -68,0 +67,0 @@ componentWillReceiveProps(nextProps: ISelectProps<T>): void; |
@@ -7,3 +7,3 @@ /* | ||
import * as tslib_1 from "tslib"; | ||
import * as classNames from "classnames"; | ||
import classNames from "classnames"; | ||
import * as React from "react"; | ||
@@ -17,3 +17,2 @@ import { Button, Classes as CoreClasses, InputGroup, Keys, Menu, Popover, Position, Utils, } from "@blueprintjs/core"; | ||
var _this = _super.call(this, props, context) || this; | ||
_this.state = { isOpen: false, query: "" }; | ||
_this.TypedQueryList = QueryList.ofType(); | ||
@@ -108,3 +107,4 @@ _this.refHandlers = { | ||
}; | ||
var query = props && props.inputProps && props.inputProps.value !== undefined ? props.inputProps.value : ""; | ||
var _a = props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
var query = inputProps.value == null ? "" : inputProps.value.toString(); | ||
_this.state = { isOpen: false, query: query }; | ||
@@ -124,3 +124,3 @@ return _this; | ||
if (nextInputProps.value !== undefined && this.state.query !== nextInputProps.value) { | ||
this.setState({ query: nextInputProps.value }); | ||
this.setState({ query: nextInputProps.value.toString() }); | ||
} | ||
@@ -127,0 +127,0 @@ }; |
@@ -31,5 +31,5 @@ /// <reference types="react" /> | ||
activeItem?: T; | ||
isOpen?: boolean; | ||
isTyping?: boolean; | ||
query?: string; | ||
isOpen: boolean; | ||
isTyping: boolean; | ||
query: string; | ||
selectedItem?: T; | ||
@@ -39,8 +39,11 @@ } | ||
static displayName: string; | ||
static ofType<T>(): new () => Suggest<T>; | ||
static defaultProps: { | ||
closeOnSelect: boolean; | ||
openOnKeyDown: boolean; | ||
}; | ||
static ofType<T>(): new (props: ISuggestProps<T>) => Suggest<T>; | ||
state: ISuggestState<T>; | ||
private DEFAULT_PROPS; | ||
private input; | ||
private TypedQueryList; | ||
private queryList; | ||
private input?; | ||
private queryList?; | ||
private refHandlers; | ||
@@ -47,0 +50,0 @@ render(): JSX.Element; |
@@ -7,3 +7,3 @@ /* | ||
import * as tslib_1 from "tslib"; | ||
import * as classNames from "classnames"; | ||
import classNames from "classnames"; | ||
import * as React from "react"; | ||
@@ -22,20 +22,13 @@ import { InputGroup, Keys, Menu, Popover, Position, Utils, } from "@blueprintjs/core"; | ||
}; | ||
// not using defaultProps, because they're hard to type with generics (can't | ||
// use <T> on static members). but we still want to keep default values in | ||
// one, necessarily non-`static` place. note that Partial is necessary to | ||
// avoid having to define all required props, and all of these values must | ||
// be referenced manually in code. | ||
_this.DEFAULT_PROPS = { | ||
closeOnSelect: true, | ||
inputProps: {}, | ||
openOnKeyDown: false, | ||
popoverProps: {}, | ||
}; | ||
_this.TypedQueryList = QueryList.ofType(); | ||
_this.refHandlers = { | ||
input: function (ref) { return (_this.input = ref); }, | ||
input: function (ref) { | ||
_this.input = ref; | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
Utils.safeInvoke(inputProps.inputRef, ref); | ||
}, | ||
queryList: function (ref) { return (_this.queryList = ref); }, | ||
}; | ||
_this.renderQueryList = function (listProps) { | ||
var _a = _this.props, inputValueRenderer = _a.inputValueRenderer, _b = _a.inputProps, inputProps = _b === void 0 ? _this.DEFAULT_PROPS.inputProps : _b, _c = _a.popoverProps, popoverProps = _c === void 0 ? _this.DEFAULT_PROPS.popoverProps : _c; | ||
var _a = _this.props, inputValueRenderer = _a.inputValueRenderer, _b = _a.inputProps, inputProps = _b === void 0 ? {} : _b, _c = _a.popoverProps, popoverProps = _c === void 0 ? {} : _c; | ||
var _d = _this.state, isTyping = _d.isTyping, selectedItem = _d.selectedItem, query = _d.query; | ||
@@ -50,9 +43,11 @@ var handleKeyDown = listProps.handleKeyDown, handleKeyUp = listProps.handleKeyUp; | ||
_this.selectText = function () { | ||
if (_this.input != null) { | ||
// wait until the input is properly focused to select the text inside of it | ||
requestAnimationFrame(function () { return _this.input.setSelectionRange(0, _this.input.value.length); }); | ||
} | ||
// wait until the input is properly focused to select the text inside of it | ||
requestAnimationFrame(function () { | ||
if (_this.input != null) { | ||
_this.input.setSelectionRange(0, _this.input.value.length); | ||
} | ||
}); | ||
}; | ||
_this.handleInputFocus = function (event) { | ||
var _a = _this.props, _b = _a.openOnKeyDown, openOnKeyDown = _b === void 0 ? _this.DEFAULT_PROPS.openOnKeyDown : _b, _c = _a.inputProps, inputProps = _c === void 0 ? _this.DEFAULT_PROPS.inputProps : _c; | ||
var _a = _this.props, openOnKeyDown = _a.openOnKeyDown, _b = _a.inputProps, inputProps = _b === void 0 ? {} : _b; | ||
_this.selectText(); | ||
@@ -66,6 +61,7 @@ if (!openOnKeyDown) { | ||
_this.handleItemSelect = function (item, event) { | ||
var _a = _this.props.closeOnSelect, closeOnSelect = _a === void 0 ? _this.DEFAULT_PROPS.closeOnSelect : _a; | ||
var nextOpenState; | ||
if (!closeOnSelect) { | ||
_this.input.focus(); | ||
if (!_this.props.closeOnSelect) { | ||
if (_this.input != null) { | ||
_this.input.focus(); | ||
} | ||
_this.selectText(); | ||
@@ -75,3 +71,5 @@ nextOpenState = true; | ||
else { | ||
_this.input.blur(); | ||
if (_this.input != null) { | ||
_this.input.blur(); | ||
} | ||
nextOpenState = false; | ||
@@ -117,3 +115,3 @@ } | ||
_this.handleQueryChange = function (event) { | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? _this.DEFAULT_PROPS.inputProps : _a; | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
_this.setState({ | ||
@@ -126,8 +124,10 @@ isTyping: true, | ||
_this.getTargetKeyDownHandler = function (handleQueryListKeyDown) { | ||
return function (e) { | ||
var which = e.which; | ||
return function (evt) { | ||
var which = evt.which; | ||
var _a = _this.state, isTyping = _a.isTyping, selectedItem = _a.selectedItem; | ||
var _b = _this.props, _c = _b.inputProps, inputProps = _c === void 0 ? _this.DEFAULT_PROPS.inputProps : _c, _d = _b.openOnKeyDown, openOnKeyDown = _d === void 0 ? _this.DEFAULT_PROPS.openOnKeyDown : _d; | ||
var _b = _this.props, _c = _b.inputProps, inputProps = _c === void 0 ? {} : _c, openOnKeyDown = _b.openOnKeyDown; | ||
if (which === Keys.ESCAPE || which === Keys.TAB) { | ||
_this.input.blur(); | ||
if (_this.input != null) { | ||
_this.input.blur(); | ||
} | ||
_this.setState({ | ||
@@ -145,14 +145,14 @@ isOpen: false, | ||
if (_this.state.isOpen) { | ||
Utils.safeInvoke(handleQueryListKeyDown, e); | ||
Utils.safeInvoke(handleQueryListKeyDown, evt); | ||
} | ||
Utils.safeInvoke(inputProps.onKeyDown, e); | ||
Utils.safeInvoke(inputProps.onKeyDown, evt); | ||
}; | ||
}; | ||
_this.getTargetKeyUpHandler = function (handleQueryListKeyUp) { | ||
return function (e) { | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? _this.DEFAULT_PROPS.inputProps : _a; | ||
return function (evt) { | ||
var _a = _this.props.inputProps, inputProps = _a === void 0 ? {} : _a; | ||
if (_this.state.isOpen) { | ||
Utils.safeInvoke(handleQueryListKeyUp, e); | ||
Utils.safeInvoke(handleQueryListKeyUp, evt); | ||
} | ||
Utils.safeInvoke(inputProps.onKeyUp, e); | ||
Utils.safeInvoke(inputProps.onKeyUp, evt); | ||
}; | ||
@@ -181,4 +181,9 @@ }; | ||
Suggest.displayName = "Blueprint2.Suggest"; | ||
// Note: can't use <T> in static members, so this remains dynamically typed. | ||
Suggest.defaultProps = { | ||
closeOnSelect: true, | ||
openOnKeyDown: false, | ||
}; | ||
return Suggest; | ||
}(React.PureComponent)); | ||
export { Suggest }; |
{ | ||
"name": "@blueprintjs/select", | ||
"version": "2.0.0-rc.2", | ||
"version": "2.0.0-rc.3", | ||
"description": "Components related to selecting items from a list", | ||
@@ -12,3 +12,3 @@ "main": "lib/cjs/index.js", | ||
"scripts": { | ||
"compile": "npm-run-all -p 'compile:*'", | ||
"compile": "npm-run-all -p \"compile:*\"", | ||
"compile:esm": "tsc -p ./src", | ||
@@ -18,9 +18,9 @@ "compile:cjs": "tsc -p ./src/tsconfig.cjs.json", | ||
"clean": "rm -rf dist/* && rm -rf lib/*", | ||
"dev": "npm-run-all -p 'compile:esm -- --watch' 'compile:css -- --watch'", | ||
"dist": "npm-run-all -s 'dist:*'", | ||
"dist:bundle": "NODE_ENV=production webpack", | ||
"dev": "npm-run-all -p \"compile:esm -- --watch\" \"compile:css -- --watch\"", | ||
"dist": "npm-run-all -s \"dist:*\"", | ||
"dist:bundle": "cross-env NODE_ENV=production webpack", | ||
"dist:verify": "assert-package-layout", | ||
"lint": "npm-run-all -p lint:stylelint lint:tslint", | ||
"lint:stylelint": "stylelint -s scss 'src/**/*.scss'", | ||
"lint:tslint": "tslint '{src,test}/**/*.{ts,tsx}' -c ../tslint-config -t codeFrame", | ||
"lint:stylelint": "stylelint -s scss \"src/**/*.scss\"", | ||
"lint:tslint": "tslint \"{src,test}/**/*.{ts,tsx}\" -c ../tslint-config -t codeFrame", | ||
"lint-fix": "yarn lint:tslint --fix", | ||
@@ -35,5 +35,5 @@ "test": "npm-run-all -s compile:cjs test:pre -p test:karma test:iso", | ||
"dependencies": { | ||
"@blueprintjs/core": "^2.0.0-rc.2", | ||
"@blueprintjs/core": "^2.0.0-rc.3", | ||
"classnames": "^2.2", | ||
"tslib": "^1.5.0" | ||
"tslib": "^1.9.0" | ||
}, | ||
@@ -52,3 +52,3 @@ "devDependencies": { | ||
"tslint": "^5.9.0", | ||
"typescript": "~2.6.2", | ||
"typescript": "~2.7.2", | ||
"webpack": "^3.10.0" | ||
@@ -55,0 +55,0 @@ }, |
@@ -23,2 +23,2 @@ /* | ||
*/ | ||
export type ItemPredicate<T> = (query: string, item: T, index: number) => boolean; | ||
export type ItemPredicate<T> = (query: string, item: T, index?: number) => boolean; |
@@ -6,3 +6,3 @@ @# MultiSelect | ||
<div class="pt-callout pt-intent-primary pt-icon-info-sign"> | ||
<h4>Generic components and custom filtering</h4> | ||
<h4 class="pt-callout-title">Generic components and custom filtering</h4> | ||
For more information on controlled usage, generic components and custom filtering, visit the documentation for [`Select<T>`](#select/select-component). | ||
@@ -9,0 +9,0 @@ </div> |
@@ -6,3 +6,3 @@ @# Select | ||
<div class="pt-callout pt-intent-primary pt-icon-info-sign"> | ||
<h4>Disabling a Select</h4> | ||
<h4 class="pt-callout-title">Disabling a Select</h4> | ||
<p>Disabling the component requires setting the `disabled` prop to `true` | ||
@@ -9,0 +9,0 @@ and separately disabling the component's children as appropriate (because `Select` accepts arbitrary children).</p> |
@@ -19,3 +19,3 @@ --- | ||
Make sure to review the [general usage docs for JS components](#blueprint.usage). | ||
Make sure to review the [getting started docs for installation info](#blueprint/getting-started). | ||
@@ -22,0 +22,0 @@ ```sh |
{ | ||
"extends": "../../../config/tsconfig.base", | ||
"compilerOptions": { | ||
"outDir": "../lib/esm" | ||
"outDir": "../lib/esm", | ||
"strict": true | ||
} | ||
} |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
288695
5289
Updatedtslib@^1.9.0