Files
JiboSDK/lib/atom-react/components/jibo-combo-box-unidirectional.js
2026-03-22 03:21:45 +02:00

1 line
2.2 KiB
JavaScript

"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},t=e(require("react")),$=e(require("jquery")),i=t.createClass({displayName:"List",getInitialState:function(){return{hoveredElement:void 0}},onMouseOver:function(e){this.state.hoveredElement=e,this.setState(this.state)},onMouseOut:function(){this.state.hoveredElement=void 0,this.setState(this.state)},onClick:function(e){this.props.onSelect(e)},render:function(){var e=this,i=[];return this.props.data.forEach(function(n,s){var o="list-item";n===e.state.hoveredElement&&(o+=" selected");var l={},r=null;"string"==typeof n.label?(l={marginLeft:0},r=n.label):r=n.label(),i.push(t.createElement("li",{key:s,className:o,onMouseOver:e.onMouseOver.bind(e,n),onMouseOut:e.onMouseOut.bind(e,n),onClick:e.onClick.bind(e,n)},t.createElement("span",{style:l},r)))}),t.createElement("ul",{className:"list-group"},i)}});module.exports=t.createClass({displayName:"jibo-combo-box-unidirectional",getInitialState:function(){return{clickHandler:this.clickHandler.bind(this)}},render:function(){var e=null;if(this.props.current.display)if("function"==typeof this.props.current.display)e=this.props.current.display();else{var i=null;i=this.props.titleDisplay?this.props.titleDisplay:this.props.current.display,e="\xa0\xa0"+i,e=[t.createElement("i",{className:"fa fa-caret-down",style:{fontSize:20}}),e]}var n="combo-box btn";return this.props.hideButton&&(n="combo-box"),t.createElement("div",null,t.createElement("div",{ref:"button",className:n,onClick:this.onClick},e))},removeList:function(){$(document).off("click",this.state.clickHandler),this.node.remove(),this.node=null},onSelect:function(e){this.props.keepFocusAfterClick||this.removeList(),this.props.onSelected(e)},clickHandler:function(e){0===$(e.target).closest(this.node).length&&this.removeList()},onClick:function(e){if(e.preventDefault(),e.stopPropagation(),this.node)this.removeList();else{var n=t.findDOMNode(this.refs.button),s=n.getBoundingClientRect();this.node=$("<div />").addClass("combo-box-list").css({left:s.left+"px",top:s.bottom+"px"}).appendTo(document.body),$(document).on("click",this.state.clickHandler),t.render(t.createElement(i,{data:this.props.data,onSelect:this.onSelect}),this.node[0])}}});