Skip to content

Commit 0c0e252

Browse files
committed
Autofocus search field in multiple select
In a single select, the search field is automatically focused when the select is opened. This also applied to multiple selects, but this was causing issues because the container was automatically focused when the dropdown was closed. This makes a change such that the search field is automatically focused when the dropdown is closed. This closes select2#2995.
1 parent 4dda5e7 commit 0c0e252

7 files changed

Lines changed: 29 additions & 4 deletions

File tree

dist/js/select2.amd.full.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,6 +1256,7 @@ define('select2/selection/search',[
12561256
self.$search.attr('tabindex', -1);
12571257

12581258
self.$search.val('');
1259+
self.$search.focus();
12591260
});
12601261

12611262
container.on('enable', function () {
@@ -1269,6 +1270,10 @@ define('select2/selection/search',[
12691270
this.$selection.on('keydown', '.select2-search--inline', function (evt) {
12701271
evt.stopPropagation();
12711272

1273+
if (!container.isOpen()) {
1274+
self.trigger('open');
1275+
}
1276+
12721277
self.trigger('keypress', evt);
12731278

12741279
self._keyUpPrevented = evt.isDefaultPrevented();

dist/js/select2.amd.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1256,6 +1256,7 @@ define('select2/selection/search',[
12561256
self.$search.attr('tabindex', -1);
12571257

12581258
self.$search.val('');
1259+
self.$search.focus();
12591260
});
12601261

12611262
container.on('enable', function () {
@@ -1269,6 +1270,10 @@ define('select2/selection/search',[
12691270
this.$selection.on('keydown', '.select2-search--inline', function (evt) {
12701271
evt.stopPropagation();
12711272

1273+
if (!container.isOpen()) {
1274+
self.trigger('open');
1275+
}
1276+
12721277
self.trigger('keypress', evt);
12731278

12741279
self._keyUpPrevented = evt.isDefaultPrevented();

dist/js/select2.full.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,6 +1694,7 @@ define('select2/selection/search',[
16941694
self.$search.attr('tabindex', -1);
16951695

16961696
self.$search.val('');
1697+
self.$search.focus();
16971698
});
16981699

16991700
container.on('enable', function () {
@@ -1707,6 +1708,10 @@ define('select2/selection/search',[
17071708
this.$selection.on('keydown', '.select2-search--inline', function (evt) {
17081709
evt.stopPropagation();
17091710

1711+
if (!container.isOpen()) {
1712+
self.trigger('open');
1713+
}
1714+
17101715
self.trigger('keypress', evt);
17111716

17121717
self._keyUpPrevented = evt.isDefaultPrevented();

dist/js/select2.full.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/select2.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1694,6 +1694,7 @@ define('select2/selection/search',[
16941694
self.$search.attr('tabindex', -1);
16951695

16961696
self.$search.val('');
1697+
self.$search.focus();
16971698
});
16981699

16991700
container.on('enable', function () {
@@ -1707,6 +1708,10 @@ define('select2/selection/search',[
17071708
this.$selection.on('keydown', '.select2-search--inline', function (evt) {
17081709
evt.stopPropagation();
17091710

1711+
if (!container.isOpen()) {
1712+
self.trigger('open');
1713+
}
1714+
17101715
self.trigger('keypress', evt);
17111716

17121717
self._keyUpPrevented = evt.isDefaultPrevented();

dist/js/select2.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/select2/selection/search.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ define([
3939
self.$search.attr('tabindex', -1);
4040

4141
self.$search.val('');
42+
self.$search.focus();
4243
});
4344

4445
container.on('enable', function () {
@@ -52,6 +53,10 @@ define([
5253
this.$selection.on('keydown', '.select2-search--inline', function (evt) {
5354
evt.stopPropagation();
5455

56+
if (!container.isOpen()) {
57+
self.trigger('open');
58+
}
59+
5560
self.trigger('keypress', evt);
5661

5762
self._keyUpPrevented = evt.isDefaultPrevented();

0 commit comments

Comments
 (0)