MCPcopy
hub / github.com/Robdel12/DropKick / open

Method open

src/dropkick.js:379–409  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

377 // is that needed? What problem was that solving?
378 // to make sure this runs in the next animation tick?
379 open() {
380 let dropHeight, above, below, direction, dkTop, dkBottom;
381 let dk = this.data.elem;
382 let dkOptsList = dk.lastChild;
383 // Using MDNs suggestion for crossbrowser scrollY:
384 // https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY
385 let supportPageOffset = window.pageXOffset !== undefined;
386 let isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");
387 let scrollY = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
388
389 dkTop = _.offset( dk ).top - scrollY;
390 dkBottom = window.innerHeight - ( dkTop + dk.offsetHeight );
391
392 if ( this.isOpen || this.multiple ) { return false; }
393
394 dkOptsList.style.display = "block";
395 dropHeight = dkOptsList.offsetHeight;
396 dkOptsList.style.display = "";
397
398 above = dkTop > dropHeight;
399 below = dkBottom > dropHeight;
400 direction = above && !below ? "-up" : "-down";
401
402 this.isOpen = true;
403 _.addClass( dk, "dk-select-open" + direction );
404 dkOptsList.setAttribute( "aria-expanded", "true" );
405 this._scrollTo( this.options.length - 1 );
406 this._scrollTo( this.selectedIndex );
407
408 this.data.settings.open.call( this );
409 }
410
411 /**
412 * Disables or enables an option; if only a boolean is passed (or nothing),

Callers 3

_keyHandlerMethod · 0.95
dropkick-test.jsFile · 0.80

Calls 1

_scrollToMethod · 0.95

Tested by

no test coverage detected