From cbc2d2f3ec09948b1a929a70cfff36a3253ac044 Mon Sep 17 00:00:00 2001 From: Kevin Brown Date: Sat, 30 Aug 2014 20:42:46 -0400 Subject: [PATCH] Trigger events when the dropdown opens and closes --- dist/js/select2.amd.full.js | 21 +++++++++++++++++++-- dist/js/select2.amd.js | 21 +++++++++++++++++++-- dist/js/select2.full.js | 21 +++++++++++++++++++-- dist/js/select2.js | 21 +++++++++++++++++++-- src/js/select2/core.js | 21 +++++++++++++++++++-- 5 files changed, 95 insertions(+), 10 deletions(-) diff --git a/dist/js/select2.amd.full.js b/dist/js/select2.amd.full.js index 14cfebb7..dbdfa183 100644 --- a/dist/js/select2.amd.full.js +++ b/dist/js/select2.amd.full.js @@ -673,6 +673,7 @@ define('select2/core',[ this.data = new this.options.dataAdapter($element, this.options); var $container = this.render(); + this.$container = $container; $container.insertAfter(this.$element); @@ -716,18 +717,26 @@ define('select2/core',[ }); this.selection.on("toggle", function () { - $container.toggleClass("open"); + self.toggleDropdown(); }); this.results.on("selected", function (params) { self.trigger("select", params); - $container.removeClass("open"); + self.trigger("close"); }); this.results.on("unselected", function (params) { self.trigger("unselect", params); + self.trigger("close"); + }); + + this.on("open", function () { + $container.addClass("open"); + }); + + this.on("close", function () { $container.removeClass("open"); }); @@ -750,6 +759,14 @@ define('select2/core',[ Utils.Extend(Select2, Utils.Observable); + Select2.prototype.toggleDropdown = function () { + if (this.$container.hasClass("open")) { + this.trigger("close"); + } else { + this.trigger("open"); + } + } + Select2.prototype.render = function () { var $container = $( '' + diff --git a/dist/js/select2.amd.js b/dist/js/select2.amd.js index 14cfebb7..dbdfa183 100644 --- a/dist/js/select2.amd.js +++ b/dist/js/select2.amd.js @@ -673,6 +673,7 @@ define('select2/core',[ this.data = new this.options.dataAdapter($element, this.options); var $container = this.render(); + this.$container = $container; $container.insertAfter(this.$element); @@ -716,18 +717,26 @@ define('select2/core',[ }); this.selection.on("toggle", function () { - $container.toggleClass("open"); + self.toggleDropdown(); }); this.results.on("selected", function (params) { self.trigger("select", params); - $container.removeClass("open"); + self.trigger("close"); }); this.results.on("unselected", function (params) { self.trigger("unselect", params); + self.trigger("close"); + }); + + this.on("open", function () { + $container.addClass("open"); + }); + + this.on("close", function () { $container.removeClass("open"); }); @@ -750,6 +759,14 @@ define('select2/core',[ Utils.Extend(Select2, Utils.Observable); + Select2.prototype.toggleDropdown = function () { + if (this.$container.hasClass("open")) { + this.trigger("close"); + } else { + this.trigger("open"); + } + } + Select2.prototype.render = function () { var $container = $( '' + diff --git a/dist/js/select2.full.js b/dist/js/select2.full.js index 50aaf97b..519a581b 100644 --- a/dist/js/select2.full.js +++ b/dist/js/select2.full.js @@ -10210,6 +10210,7 @@ define('select2/core',[ this.data = new this.options.dataAdapter($element, this.options); var $container = this.render(); + this.$container = $container; $container.insertAfter(this.$element); @@ -10253,18 +10254,26 @@ define('select2/core',[ }); this.selection.on("toggle", function () { - $container.toggleClass("open"); + self.toggleDropdown(); }); this.results.on("selected", function (params) { self.trigger("select", params); - $container.removeClass("open"); + self.trigger("close"); }); this.results.on("unselected", function (params) { self.trigger("unselect", params); + self.trigger("close"); + }); + + this.on("open", function () { + $container.addClass("open"); + }); + + this.on("close", function () { $container.removeClass("open"); }); @@ -10287,6 +10296,14 @@ define('select2/core',[ Utils.Extend(Select2, Utils.Observable); + Select2.prototype.toggleDropdown = function () { + if (this.$container.hasClass("open")) { + this.trigger("close"); + } else { + this.trigger("open"); + } + } + Select2.prototype.render = function () { var $container = $( '' + diff --git a/dist/js/select2.js b/dist/js/select2.js index 334e6b68..7056d83f 100644 --- a/dist/js/select2.js +++ b/dist/js/select2.js @@ -1101,6 +1101,7 @@ define('select2/core',[ this.data = new this.options.dataAdapter($element, this.options); var $container = this.render(); + this.$container = $container; $container.insertAfter(this.$element); @@ -1144,18 +1145,26 @@ define('select2/core',[ }); this.selection.on("toggle", function () { - $container.toggleClass("open"); + self.toggleDropdown(); }); this.results.on("selected", function (params) { self.trigger("select", params); - $container.removeClass("open"); + self.trigger("close"); }); this.results.on("unselected", function (params) { self.trigger("unselect", params); + self.trigger("close"); + }); + + this.on("open", function () { + $container.addClass("open"); + }); + + this.on("close", function () { $container.removeClass("open"); }); @@ -1178,6 +1187,14 @@ define('select2/core',[ Utils.Extend(Select2, Utils.Observable); + Select2.prototype.toggleDropdown = function () { + if (this.$container.hasClass("open")) { + this.trigger("close"); + } else { + this.trigger("open"); + } + } + Select2.prototype.render = function () { var $container = $( '' + diff --git a/src/js/select2/core.js b/src/js/select2/core.js index 8d0081c4..e389db07 100644 --- a/src/js/select2/core.js +++ b/src/js/select2/core.js @@ -19,6 +19,7 @@ define([ this.data = new this.options.dataAdapter($element, this.options); var $container = this.render(); + this.$container = $container; $container.insertAfter(this.$element); @@ -62,18 +63,26 @@ define([ }); this.selection.on("toggle", function () { - $container.toggleClass("open"); + self.toggleDropdown(); }); this.results.on("selected", function (params) { self.trigger("select", params); - $container.removeClass("open"); + self.trigger("close"); }); this.results.on("unselected", function (params) { self.trigger("unselect", params); + self.trigger("close"); + }); + + this.on("open", function () { + $container.addClass("open"); + }); + + this.on("close", function () { $container.removeClass("open"); }); @@ -96,6 +105,14 @@ define([ Utils.Extend(Select2, Utils.Observable); + Select2.prototype.toggleDropdown = function () { + if (this.$container.hasClass("open")) { + this.trigger("close"); + } else { + this.trigger("open"); + } + } + Select2.prototype.render = function () { var $container = $( '' +