forked from phcode-dev/phcode.dev
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap-dropdown.js
More file actions
1 lines (1 loc) · 2.14 KB
/
bootstrap-dropdown.js
File metadata and controls
1 lines (1 loc) · 2.14 KB
1
!function($){"use strict";var toggle="[data-toggle=dropdown]",Dropdown=function(element){var $el=$(element).on("click.dropdown.data-api",this.toggle);$("html").on("click.dropdown.data-api",function(){$el.parent().removeClass("open")})};function clearMenus(){$(toggle).each(function(){getParent($(this)).removeClass("open")})}function getParent($this){var selector=$this.attr("data-target"),$parent;return selector||(selector=(selector=$this.attr("href"))&&/#/.test(selector)&&selector.replace(/.*(?=#[^\s]*$)/,"")),($parent=selector&&$(selector))&&$parent.length||($parent=$this.parent()),$parent}Dropdown.prototype={constructor:Dropdown,toggle:function(e){var $this=$(this),$parent,isActive;if(!$this.is(".disabled, :disabled"))return isActive=($parent=getParent($this)).hasClass("open"),clearMenus(),isActive||$parent.toggleClass("open"),$this.focus(),!1},keydown:function(e){var $this,$items,$active,$parent,isActive,index;if(/(38|40|27)/.test(e.keyCode)&&($this=$(this),e.preventDefault(),e.stopPropagation(),!$this.is(".disabled, :disabled"))){if(!(isActive=($parent=getParent($this)).hasClass("open"))||isActive&&27==e.keyCode)return 27==e.which&&$parent.find(toggle).focus(),$this.click();($items=$("[role=menu] li:not(.divider):visible a",$parent)).length&&(index=$items.index($items.filter(":focus")),38==e.keyCode&&index>0&&index--,40==e.keyCode&&index<$items.length-1&&index++,~index||(index=0),$items.eq(index).focus())}}};var old=$.fn.dropdown;$.fn.dropdown=function(option){return this.each(function(){var $this=$(this),data=$this.data("dropdown");data||$this.data("dropdown",data=new Dropdown(this)),"string"==typeof option&&data[option].call($this)})},$.fn.dropdown.Constructor=Dropdown,$.fn.dropdown.noConflict=function(){return $.fn.dropdown=old,this},$(document).on("click.dropdown.data-api",function(e){2===e.button||"mac"===brackets.platform&&e.ctrlKey||clearMenus()}).on("click.dropdown.data-api",".dropdown form",function(e){e.stopPropagation()}).on("click.dropdown-menu",function(e){e.stopPropagation()}).on("click.dropdown.data-api",toggle,Dropdown.prototype.toggle).on("keydown.dropdown.data-api",toggle+", [role=menu]",Dropdown.prototype.keydown)}(window.jQuery);