@@ -211,15 +211,28 @@ var WFUIDropdown = function (_React$Component) {
211211 _this . onHide = _this . onHide . bind ( _this ) ;
212212 _this . onShowOther = _this . onShowOther . bind ( _this ) ; // When other dropdown menu is activated.
213213 _this . getMenu = _this . getMenu . bind ( _this ) ;
214+ _this . getMenuContainerElement = _this . getMenuContainerElement . bind ( _this ) ;
214215 return _this ;
215216 }
216217
217218 _createClass ( WFUIDropdown , [ {
219+ key : 'getMenuContainerElement' ,
220+ value : function getMenuContainerElement ( ) {
221+ // Create container for dropdown menu
222+ var el = document . getElementById ( 'wfui-dropdown-menu' ) ;
223+ if ( ! el ) {
224+ el = document . createElement ( 'div' ) ;
225+ el . setAttribute ( 'id' , 'wfui-dropdown-menu' ) ;
226+ document . body . appendChild ( el ) ;
227+ }
228+ return el ;
229+ }
230+ } , {
218231 key : 'onToggle' ,
219232 value : function onToggle ( e ) {
220233 var uid = this . state . uid ;
221234
222- var el = document . getElementById ( 'wfui-dropdown-menu' ) ;
235+ var el = this . getMenuContainerElement ( ) ;
223236 e . stopPropagation ( ) ;
224237 if ( el ) {
225238 if ( el . getAttribute ( 'data-uid' ) !== uid ) {
@@ -291,7 +304,7 @@ var WFUIDropdown = function (_React$Component) {
291304 window . dispatchEvent ( event ) ;
292305
293306 // Render Element
294- var el = document . getElementById ( 'wfui-dropdown-menu' ) ;
307+ var el = this . getMenuContainerElement ( ) ;
295308 if ( el ) {
296309 var buttonElement = e . target . tagName === 'SPAN' ? e . target . parentElement : e . target ;
297310 var viewportOffset = buttonElement . getBoundingClientRect ( ) ;
@@ -321,7 +334,7 @@ var WFUIDropdown = function (_React$Component) {
321334 } , {
322335 key : 'onHide' ,
323336 value : function onHide ( e ) {
324- var el = document . getElementById ( 'wfui-dropdown-menu' ) ;
337+ var el = this . getMenuContainerElement ( ) ;
325338 if ( el . getAttribute ( 'class' ) === 'menu-opened' ) {
326339 el . setAttribute ( 'class' , 'menu-closed' ) ;
327340 el . setAttribute ( 'data-uid' , '' ) ;
@@ -340,25 +353,17 @@ var WFUIDropdown = function (_React$Component) {
340353 } , {
341354 key : 'componentWillMount' ,
342355 value : function componentWillMount ( ) {
343- // Create container for dropdown menu
344- var el = document . getElementById ( 'wfui-dropdown-menu' ) ;
345- if ( ! el ) {
346- el = document . createElement ( 'div' ) ;
347- el . setAttribute ( 'id' , 'wfui-dropdown-menu' ) ;
348- document . body . appendChild ( el ) ;
349-
350- // Outside click
351- window . addEventListener ( 'click' , this . onHide ) ;
352- }
353-
356+ this . getMenuContainerElement ( ) ;
357+ // Outside click
358+ window . addEventListener ( 'click' , this . onHide ) ;
354359 // Set event listener
355360 window . addEventListener ( 'wfui-dropdown-menu-clicked' , this . onShowOther ) ;
356361 }
357362 } , {
358363 key : 'componentWillUnmount' ,
359364 value : function componentWillUnmount ( ) {
360365 // Remove
361- var el = document . getElementById ( 'wfui-dropdown-menu' ) ;
366+ var el = this . getMenuContainerElement ( ) ;
362367 if ( el ) {
363368 document . body . removeChild ( el ) ;
364369 // Remove event listener
0 commit comments