Skip to content

Commit cbc2d2f

Browse files
committed
Trigger events when the dropdown opens and closes
1 parent 315b1b3 commit cbc2d2f

5 files changed

Lines changed: 95 additions & 10 deletions

File tree

dist/js/select2.amd.full.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ define('select2/core',[
673673
this.data = new this.options.dataAdapter($element, this.options);
674674

675675
var $container = this.render();
676+
this.$container = $container;
676677

677678
$container.insertAfter(this.$element);
678679

@@ -716,18 +717,26 @@ define('select2/core',[
716717
});
717718

718719
this.selection.on("toggle", function () {
719-
$container.toggleClass("open");
720+
self.toggleDropdown();
720721
});
721722

722723
this.results.on("selected", function (params) {
723724
self.trigger("select", params);
724725

725-
$container.removeClass("open");
726+
self.trigger("close");
726727
});
727728

728729
this.results.on("unselected", function (params) {
729730
self.trigger("unselect", params);
730731

732+
self.trigger("close");
733+
});
734+
735+
this.on("open", function () {
736+
$container.addClass("open");
737+
});
738+
739+
this.on("close", function () {
731740
$container.removeClass("open");
732741
});
733742

@@ -750,6 +759,14 @@ define('select2/core',[
750759

751760
Utils.Extend(Select2, Utils.Observable);
752761

762+
Select2.prototype.toggleDropdown = function () {
763+
if (this.$container.hasClass("open")) {
764+
this.trigger("close");
765+
} else {
766+
this.trigger("open");
767+
}
768+
}
769+
753770
Select2.prototype.render = function () {
754771
var $container = $(
755772
'<span class="select2 select2-container select2-theme-default">' +

dist/js/select2.amd.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ define('select2/core',[
673673
this.data = new this.options.dataAdapter($element, this.options);
674674

675675
var $container = this.render();
676+
this.$container = $container;
676677

677678
$container.insertAfter(this.$element);
678679

@@ -716,18 +717,26 @@ define('select2/core',[
716717
});
717718

718719
this.selection.on("toggle", function () {
719-
$container.toggleClass("open");
720+
self.toggleDropdown();
720721
});
721722

722723
this.results.on("selected", function (params) {
723724
self.trigger("select", params);
724725

725-
$container.removeClass("open");
726+
self.trigger("close");
726727
});
727728

728729
this.results.on("unselected", function (params) {
729730
self.trigger("unselect", params);
730731

732+
self.trigger("close");
733+
});
734+
735+
this.on("open", function () {
736+
$container.addClass("open");
737+
});
738+
739+
this.on("close", function () {
731740
$container.removeClass("open");
732741
});
733742

@@ -750,6 +759,14 @@ define('select2/core',[
750759

751760
Utils.Extend(Select2, Utils.Observable);
752761

762+
Select2.prototype.toggleDropdown = function () {
763+
if (this.$container.hasClass("open")) {
764+
this.trigger("close");
765+
} else {
766+
this.trigger("open");
767+
}
768+
}
769+
753770
Select2.prototype.render = function () {
754771
var $container = $(
755772
'<span class="select2 select2-container select2-theme-default">' +

dist/js/select2.full.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10210,6 +10210,7 @@ define('select2/core',[
1021010210
this.data = new this.options.dataAdapter($element, this.options);
1021110211

1021210212
var $container = this.render();
10213+
this.$container = $container;
1021310214

1021410215
$container.insertAfter(this.$element);
1021510216

@@ -10253,18 +10254,26 @@ define('select2/core',[
1025310254
});
1025410255

1025510256
this.selection.on("toggle", function () {
10256-
$container.toggleClass("open");
10257+
self.toggleDropdown();
1025710258
});
1025810259

1025910260
this.results.on("selected", function (params) {
1026010261
self.trigger("select", params);
1026110262

10262-
$container.removeClass("open");
10263+
self.trigger("close");
1026310264
});
1026410265

1026510266
this.results.on("unselected", function (params) {
1026610267
self.trigger("unselect", params);
1026710268

10269+
self.trigger("close");
10270+
});
10271+
10272+
this.on("open", function () {
10273+
$container.addClass("open");
10274+
});
10275+
10276+
this.on("close", function () {
1026810277
$container.removeClass("open");
1026910278
});
1027010279

@@ -10287,6 +10296,14 @@ define('select2/core',[
1028710296

1028810297
Utils.Extend(Select2, Utils.Observable);
1028910298

10299+
Select2.prototype.toggleDropdown = function () {
10300+
if (this.$container.hasClass("open")) {
10301+
this.trigger("close");
10302+
} else {
10303+
this.trigger("open");
10304+
}
10305+
}
10306+
1029010307
Select2.prototype.render = function () {
1029110308
var $container = $(
1029210309
'<span class="select2 select2-container select2-theme-default">' +

dist/js/select2.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,7 @@ define('select2/core',[
11011101
this.data = new this.options.dataAdapter($element, this.options);
11021102

11031103
var $container = this.render();
1104+
this.$container = $container;
11041105

11051106
$container.insertAfter(this.$element);
11061107

@@ -1144,18 +1145,26 @@ define('select2/core',[
11441145
});
11451146

11461147
this.selection.on("toggle", function () {
1147-
$container.toggleClass("open");
1148+
self.toggleDropdown();
11481149
});
11491150

11501151
this.results.on("selected", function (params) {
11511152
self.trigger("select", params);
11521153

1153-
$container.removeClass("open");
1154+
self.trigger("close");
11541155
});
11551156

11561157
this.results.on("unselected", function (params) {
11571158
self.trigger("unselect", params);
11581159

1160+
self.trigger("close");
1161+
});
1162+
1163+
this.on("open", function () {
1164+
$container.addClass("open");
1165+
});
1166+
1167+
this.on("close", function () {
11591168
$container.removeClass("open");
11601169
});
11611170

@@ -1178,6 +1187,14 @@ define('select2/core',[
11781187

11791188
Utils.Extend(Select2, Utils.Observable);
11801189

1190+
Select2.prototype.toggleDropdown = function () {
1191+
if (this.$container.hasClass("open")) {
1192+
this.trigger("close");
1193+
} else {
1194+
this.trigger("open");
1195+
}
1196+
}
1197+
11811198
Select2.prototype.render = function () {
11821199
var $container = $(
11831200
'<span class="select2 select2-container select2-theme-default">' +

src/js/select2/core.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ define([
1919
this.data = new this.options.dataAdapter($element, this.options);
2020

2121
var $container = this.render();
22+
this.$container = $container;
2223

2324
$container.insertAfter(this.$element);
2425

@@ -62,18 +63,26 @@ define([
6263
});
6364

6465
this.selection.on("toggle", function () {
65-
$container.toggleClass("open");
66+
self.toggleDropdown();
6667
});
6768

6869
this.results.on("selected", function (params) {
6970
self.trigger("select", params);
7071

71-
$container.removeClass("open");
72+
self.trigger("close");
7273
});
7374

7475
this.results.on("unselected", function (params) {
7576
self.trigger("unselect", params);
7677

78+
self.trigger("close");
79+
});
80+
81+
this.on("open", function () {
82+
$container.addClass("open");
83+
});
84+
85+
this.on("close", function () {
7786
$container.removeClass("open");
7887
});
7988

@@ -96,6 +105,14 @@ define([
96105

97106
Utils.Extend(Select2, Utils.Observable);
98107

108+
Select2.prototype.toggleDropdown = function () {
109+
if (this.$container.hasClass("open")) {
110+
this.trigger("close");
111+
} else {
112+
this.trigger("open");
113+
}
114+
}
115+
99116
Select2.prototype.render = function () {
100117
var $container = $(
101118
'<span class="select2 select2-container select2-theme-default">' +

0 commit comments

Comments
 (0)