This behaviour, where the focus was happening on a small asynchronous delay, was added in commit 933189b92 late last year in a commit with no supporting tickets or commit message explaining what the change was trying to accomplish. This commit has effectly been reverted within this commit, since it caused a regression in how focus was being assigned that made it inconsistent with a standard `<select>`. A test was added for this which ensures that we won't see that regression again. Fixes #5532 Fixes #5185 Closes #5552
42 lines
949 B
JavaScript
42 lines
949 B
JavaScript
module('Selection containers - Managing focus');
|
|
|
|
var SingleSelection = require('select2/selection/single');
|
|
|
|
var $ = require('jquery');
|
|
var Options = require('select2/options');
|
|
|
|
var options = new Options({});
|
|
|
|
test('close sets the focus to the selection', function (assert) {
|
|
var $container = $('#qunit-fixture .event-container');
|
|
var container = new MockContainer();
|
|
var selection = new SingleSelection(
|
|
$('#qunit-fixture .single'),
|
|
options
|
|
);
|
|
|
|
var $selection = selection.render();
|
|
selection.bind(container, $container);
|
|
|
|
selection.update([{
|
|
id: 'test',
|
|
text: 'test'
|
|
}]);
|
|
|
|
$container.append($selection);
|
|
|
|
assert.notEqual(
|
|
document.activeElement,
|
|
$selection[0],
|
|
'The selection had focus originally'
|
|
);
|
|
|
|
container.trigger('close');
|
|
|
|
assert.equal(
|
|
document.activeElement,
|
|
$selection[0],
|
|
'After close, focus must be set to selection'
|
|
);
|
|
});
|