-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbootstrap-ddselect.min.js
More file actions
7 lines (7 loc) · 2.63 KB
/
Copy pathbootstrap-ddselect.min.js
File metadata and controls
7 lines (7 loc) · 2.63 KB
1
2
3
4
5
6
7
/**
* bootstrap-ddselect.js
* v1.0.1
*
* By Martin Eriksson
*/
(function(b){var a=(function(){function c(e,d){var f=this;this.$select=b(e);this.$btnGroup=b(c.template);if(d.parentClass){this.$btnGroup.addClass(d.parentClass)}if(d.buttonClass){this.$btnGroup.find(".btn").addClass(d.buttonClass)}if(d.sizeClass){this.$btnGroup.find(".btn").addClass(d.sizeClass)}if(d.dropup){this.$btnGroup.addClass("dropup")}this.$select.hide().after(this.$btnGroup);this.$btnGroup.find(".btn").on("click",function(g){g.preventDefault()});this.$select.on("change",function(g){f.$btnGroup.find(".btn").first().text(b(this).find(":selected").text())});this.refresh()}c.prototype.update=function(){var d=this.$select.find(":selected");this.$btnGroup.find(".btn .text").text(d.text());this.$btnGroup.find(".btn").toggleClass("disabled",this.$select.is(":disabled"))};c.prototype.refeshOptions=function(){var e=this;this.$btnGroup.find(".dropdown-menu").empty();function d(j,i){var g=b('<a href="" />').attr("data-value",j.attr("value")).text(j.text()),h=b("<li />").append(g);if(j.is(":disabled")){h.addClass("disabled");g.attr("tabindex","-1").attr("href","#")}else{g.on("click",function(k){k.preventDefault();b(this).parents(".btn-group").prev("select").val(b(this).attr("data-value"));e.refresh()})}i.append(h)}function f(g,i){var h=b('<li class="dropdown-submenu"><a tabindex="-1" href="#">'+g.attr("label")+'</a><ul class="dropdown-menu"></ul></li>');g.children("option").each(function(){d(b(this),h.children(".dropdown-menu"))});i.append(h)}this.$select.children().each(function(){var g=b(this);if(g.is("optgroup")){f(g,e.$btnGroup.children(".dropdown-menu"))}else{if(g.is("option")){d(g,e.$btnGroup.children(".dropdown-menu"))}}})};c.prototype.refresh=function(){this.update();this.refeshOptions()};c.prototype.getApi=function(){var d=this;return{refresh:function(){d.refresh()},show:function(){d.$btnGroup.show()},hide:function(){d.$btnGroup.hide()}}};c.template='<div class="btn-group"><button class="btn" data-toggle="dropdown"><span class="text" /></button><button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret" /></button><ul class="dropdown-menu" /></div>';return c})();b.fn.ddselect=function(){var c={},e="",d="ddselect";if(typeof arguments[0]==="string"){action=arguments[0]}else{c=arguments[0]}c=b.extend({},b.fn.ddselect.defaultOptions,c);return this.each(function(){var f=b(this).data(d),g=null;if(f){g=f.getApi();e="refresh"}if(e){if(g[e]){g[e]()}else{b.error("Method "+e+" does not exist on jQuery.dropdownselect")}}else{b(this).data(d,new a(this,c))}})};b.fn.ddselect.defaultOptions={dropup:false,parentClass:"ddselect",buttonClass:"",sizeClass:""}})(jQuery);