Skip to content

Commit 56d5778

Browse files
committed
Finished off tests for tags
This also adds back the ability for tags to return `null` in order for no tag to be added to the results.
1 parent 76e4ea8 commit 56d5778

8 files changed

Lines changed: 87 additions & 22 deletions

File tree

dist/js/select2.amd.full.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2492,12 +2492,14 @@ define('select2/data/tags',[
24922492

24932493
var tag = self.createTag(params);
24942494

2495-
var $option = self.option(tag);
2496-
$option.attr('data-select2-tag', true);
2495+
if (tag != null) {
2496+
var $option = self.option(tag);
2497+
$option.attr('data-select2-tag', true);
24972498

2498-
self.$element.append($option);
2499+
self.$element.append($option);
24992500

2500-
self.insertTag(data, tag);
2501+
self.insertTag(data, tag);
2502+
}
25012503

25022504
callback(data);
25032505
}

dist/js/select2.amd.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2492,12 +2492,14 @@ define('select2/data/tags',[
24922492

24932493
var tag = self.createTag(params);
24942494

2495-
var $option = self.option(tag);
2496-
$option.attr('data-select2-tag', true);
2495+
if (tag != null) {
2496+
var $option = self.option(tag);
2497+
$option.attr('data-select2-tag', true);
24972498

2498-
self.$element.append($option);
2499+
self.$element.append($option);
24992500

2500-
self.insertTag(data, tag);
2501+
self.insertTag(data, tag);
2502+
}
25012503

25022504
callback(data);
25032505
}

dist/js/select2.full.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12027,12 +12027,14 @@ define('select2/data/tags',[
1202712027

1202812028
var tag = self.createTag(params);
1202912029

12030-
var $option = self.option(tag);
12031-
$option.attr('data-select2-tag', true);
12030+
if (tag != null) {
12031+
var $option = self.option(tag);
12032+
$option.attr('data-select2-tag', true);
1203212033

12033-
self.$element.append($option);
12034+
self.$element.append($option);
1203412035

12035-
self.insertTag(data, tag);
12036+
self.insertTag(data, tag);
12037+
}
1203612038

1203712039
callback(data);
1203812040
}

dist/js/select2.full.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/js/select2.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2920,12 +2920,14 @@ define('select2/data/tags',[
29202920

29212921
var tag = self.createTag(params);
29222922

2923-
var $option = self.option(tag);
2924-
$option.attr('data-select2-tag', true);
2923+
if (tag != null) {
2924+
var $option = self.option(tag);
2925+
$option.attr('data-select2-tag', true);
29252926

2926-
self.$element.append($option);
2927+
self.$element.append($option);
29272928

2928-
self.insertTag(data, tag);
2929+
self.insertTag(data, tag);
2930+
}
29292931

29302932
callback(data);
29312933
}

dist/js/select2.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/js/select2/data/tags.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,14 @@ define([
5555

5656
var tag = self.createTag(params);
5757

58-
var $option = self.option(tag);
59-
$option.attr('data-select2-tag', true);
58+
if (tag != null) {
59+
var $option = self.option(tag);
60+
$option.attr('data-select2-tag', true);
6061

61-
self.$element.append($option);
62+
self.$element.append($option);
6263

63-
self.insertTag(data, tag);
64+
self.insertTag(data, tag);
65+
}
6466

6567
callback(data);
6668
}

tests/data/tags-tests.js

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,58 @@ test('old tags are removed automatically', function (assert) {
130130
assert.equal($tag.text(), 'second');
131131
});
132132
});
133+
134+
test('insertTag controls the tag location', function (assert) {
135+
var data = new SelectTags($('#qunit-fixture .single'), options);
136+
137+
data.insertTag = function (data, tag) {
138+
data.push(tag);
139+
};
140+
141+
data.query({
142+
term: 'o'
143+
}, function (data) {
144+
assert.equal(data.length, 2);
145+
146+
var item = data[1];
147+
148+
assert.equal(item.id, 'o');
149+
assert.equal(item.text, 'o');
150+
});
151+
});
152+
153+
test('createTag controls the tag object', function (assert) {
154+
var data = new SelectTags($('#qunit-fixture .single'), options);
155+
156+
data.createTag = function (params) {
157+
return {
158+
id: 0,
159+
text: params.term
160+
};
161+
};
162+
163+
data.query({
164+
term: 'test'
165+
}, function (data) {
166+
assert.equal(data.length, 1);
167+
168+
var item = data[0];
169+
170+
assert.equal(item.id, 0);
171+
assert.equal(item.text, 'test');
172+
});
173+
});
174+
175+
test('createTag returns null for no tag', function (assert) {
176+
var data = new SelectTags($('#qunit-fixture .single'), options);
177+
178+
data.createTag = function (params) {
179+
return null;
180+
};
181+
182+
data.query({
183+
term: 'o'
184+
}, function (data) {
185+
assert.equal(data.length, 1);
186+
});
187+
});

0 commit comments

Comments
 (0)