Skip to content

Commit

Permalink
Merge pull request #5622 from select2/GH-5373
Browse files Browse the repository at this point in the history
Support passing in a selector for `dropdownParent` option
  • Loading branch information
kevin-brown committed Aug 28, 2019
2 parents 9e4f842 + 01e68f4 commit d0c5aca
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/js/select2/dropdown/attachBody.js
Expand Up @@ -3,7 +3,7 @@ define([
'../utils'
], function ($, Utils) {
function AttachBody (decorated, $element, options) {
this.$dropdownParent = options.get('dropdownParent') || $(document.body);
this.$dropdownParent = $(options.get('dropdownParent') || document.body);

decorated.call(this, $element, options);
}
Expand Down
83 changes: 83 additions & 0 deletions tests/dropdown/dropdownParent-tests.js
@@ -0,0 +1,83 @@
module('Dropdown - attachBody - dropdownParent option');

test('can be a selector string', function (assert) {
assert.expect(1);

var $ = require('jquery');

var $select = $('<select></select>');
var $parent = $('<div id="parent"></div>');

$('#qunit-fixture').append($parent);

var Utils = require('select2/utils');
var Options = require('select2/options');

var Dropdown = require('select2/dropdown');
var AttachBody = require('select2/dropdown/attachBody');

var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);

var dropdown = new DropdownAdapter($select, new Options({
dropdownParent: '#parent'
}));

assert.equal(
dropdown.$dropdownParent[0],
$parent[0],
'Should be parsed using the selector as a jQuery object'
);
});

test('can be a jQuery object', function (assert) {
assert.expect(1);

var $ = require('jquery');

var $select = $('<select></select>');
var $parent = $('<div id="parent"></div>');

$('#qunit-fixture').append($parent);

var Utils = require('select2/utils');
var Options = require('select2/options');

var Dropdown = require('select2/dropdown');
var AttachBody = require('select2/dropdown/attachBody');

var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);

var dropdown = new DropdownAdapter($select, new Options({
dropdownParent: $parent
}));

assert.equal(
dropdown.$dropdownParent[0],
$parent[0],
'Should just take the passed in jQuery object'
);
});

test('defaults to the document body', function (assert) {
assert.expect(1);

var $ = require('jquery');

var $select = $('<select></select>');

var Utils = require('select2/utils');
var Options = require('select2/options');

var Dropdown = require('select2/dropdown');
var AttachBody = require('select2/dropdown/attachBody');

var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);

var dropdown = new DropdownAdapter($select, new Options({}));

assert.equal(
dropdown.$dropdownParent[0],
document.body,
'Should default to wrapping document.body'
);
});
1 change: 1 addition & 0 deletions tests/unit-jq1.html
Expand Up @@ -70,6 +70,7 @@
<script src="data/minimumInputLength-tests.js" type="text/javascript"></script>

<script src="dropdown/dropdownCss-tests.js" type="text/javascript"></script>
<script src="dropdown/dropdownParent-tests.js" type="text/javascript"></script>
<script src="dropdown/positioning-tests.js" type="text/javascript"></script>
<script src="dropdown/search-a11y-tests.js" type="text/javascript"></script>
<script src="dropdown/selectOnClose-tests.js" type="text/javascript"></script>
Expand Down
1 change: 1 addition & 0 deletions tests/unit-jq2.html
Expand Up @@ -70,6 +70,7 @@
<script src="data/minimumInputLength-tests.js" type="text/javascript"></script>

<script src="dropdown/dropdownCss-tests.js" type="text/javascript"></script>
<script src="dropdown/dropdownParent-tests.js" type="text/javascript"></script>
<script src="dropdown/positioning-tests.js" type="text/javascript"></script>
<script src="dropdown/search-a11y-tests.js" type="text/javascript"></script>
<script src="dropdown/selectOnClose-tests.js" type="text/javascript"></script>
Expand Down
1 change: 1 addition & 0 deletions tests/unit-jq3.html
Expand Up @@ -70,6 +70,7 @@
<script src="data/minimumInputLength-tests.js" type="text/javascript"></script>

<script src="dropdown/dropdownCss-tests.js" type="text/javascript"></script>
<script src="dropdown/dropdownParent-tests.js" type="text/javascript"></script>
<script src="dropdown/positioning-tests.js" type="text/javascript"></script>
<script src="dropdown/search-a11y-tests.js" type="text/javascript"></script>
<script src="dropdown/selectOnClose-tests.js" type="text/javascript"></script>
Expand Down

0 comments on commit d0c5aca

Please sign in to comment.