8f8140e3b0
This adds `StopPropagation` modules that will stop the propagation of the most common events from the selection and dropdown containers. These modules work from a list of 21 common events, most of which were stopped by default in past versions, and call `stopPropagation` on them when they are detected at the container level. These modules are only available in full builds of Select2. This closes https://github.com/select2/select2/issues/2033. This closes https://github.com/select2/select2/issues/2974.
34 lines
965 B
JavaScript
34 lines
965 B
JavaScript
module('Selection containers - Stoping event propagation');
|
|
|
|
var SingleSelection = require('select2/selection/single');
|
|
var StopPropagation = require('select2/selection/stopPropagation');
|
|
|
|
var $ = require('jquery');
|
|
var Options = require('select2/options');
|
|
var Utils = require('select2/utils');
|
|
|
|
var CutomSelection = Utils.Decorate(SingleSelection, StopPropagation);
|
|
|
|
var options = new Options();
|
|
|
|
test('click event does not propagate', function (assert) {
|
|
expect(1);
|
|
|
|
var $container = $('#qunit-fixture .event-container');
|
|
var container = new MockContainer();
|
|
|
|
var selection = new CutomSelection($('#qunit-fixture select'), options);
|
|
|
|
var $selection = selection.render();
|
|
selection.bind(container, $container);
|
|
|
|
$container.append($selection);
|
|
$container.on('click', function () {
|
|
assert.ok(false, 'The click event should have been stopped');
|
|
});
|
|
|
|
$selection.trigger('click');
|
|
|
|
assert.ok(true, 'Something went wrong if this failed');
|
|
});
|