Skip to content

Commit 43b97d6

Browse files
pawelczakpawelczak
authored andcommitted
Closes #112. Added parameter hideOnEmptyPhrase
1 parent da30a30 commit 43b97d6

10 files changed

+160
-41
lines changed

demo/example_theme_square.html

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,24 @@ <h1>EasyAutocomplete - css themes</h1>
2929

3030
getValue: "name",
3131

32+
minCharNumber: 0,
33+
3234
list: {
3335
match: {
3436
enabled: true
3537
},
3638
maxNumberOfElements: 8,
3739

38-
onClickEvent: function() {
39-
$("#square").change();
40-
}
40+
hideOnEmptyPhrase: true
4141
},
4242

4343

44-
4544
theme: "square"
4645

4746
};
4847

4948
$("#square").easyAutocomplete(options);
5049

51-
52-
$("#square").change(function() {
53-
console.log($(this).val());
54-
});
55-
5650
</script>
5751

5852
</body>

dist/easy-autocomplete.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* jQuery plugin for autocompletion
44
*
55
* @author Łukasz Pawełczak (http://github.com/pawelczak)
6-
* @version 1.1.6
6+
* @version 1.2.0
77
* Copyright MIT License: https://github.com/pawelczak/easy-autocomplete/blob/master/LICENSE.txt
88
*/
99

dist/easy-autocomplete.min.css

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/easy-autocomplete.themes.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* jQuery plugin for autocompletion
44
*
55
* @author Łukasz Pawełczak (http://github.com/pawelczak)
6-
* @version 1.1.6
6+
* @version 1.2.0
77
* Copyright MIT License: https://github.com/pawelczak/easy-autocomplete/blob/master/LICENSE.txt
88
*/
99

dist/easy-autocomplete.themes.min.css

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/jquery.easy-autocomplete.js

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
* jQuery plugin for autocompletion
44
*
55
* @author Łukasz Pawełczak (http://github.com/pawelczak)
6-
* @version 1.1.6
6+
* @version 1.2.0
77
* Copyright MIT License: https://github.com/pawelczak/easy-autocomplete/blob/master/LICENSE.txt
88
*/
99

@@ -36,7 +36,6 @@ var EasyAutocomplete = (function(scope){
3636

3737
matchResponseProperty: false,
3838

39-
4039
list: {
4140
sort: {
4241
enabled: false,
@@ -55,6 +54,8 @@ var EasyAutocomplete = (function(scope){
5554

5655
maxNumberOfElements: 6,
5756

57+
hideOnEmptyPhrase: true,
58+
5859
match: {
5960
enabled: false,
6061
caseSensitive: false,
@@ -1228,17 +1229,23 @@ var EasyAutocomplete = (function(scope) {
12281229
default:
12291230

12301231
if (event.keyCode > 40 || event.keyCode === 8) {
1231-
loadData();
1232+
1233+
var inputPhrase = $field.val();
1234+
1235+
if (!(config.get("list").hideOnEmptyPhrase === true && event.keyCode === 8 && inputPhrase === "")) {
1236+
loadData(inputPhrase);
1237+
} else {
1238+
hideContainer();
1239+
}
1240+
12321241
}
12331242

12341243

12351244
break;
12361245
}
12371246

12381247

1239-
function loadData() {
1240-
1241-
var inputPhrase = $field.val();
1248+
function loadData(inputPhrase) {
12421249

12431250

12441251
if (inputPhrase.length < config.get("minCharNumber")) {
@@ -1361,15 +1368,15 @@ var EasyAutocomplete = (function(scope) {
13611368
})
13621369
.keydown(function(event) {
13631370

1364-
if (event.keyCode === 13 && selectedElement > -1) {
1371+
if (event.keyCode === 13 && selectedElement > -1) {
13651372

1366-
$field.val(config.get("getValue")(elementsList[selectedElement]));
1367-
selectedElement = -1;
1368-
hideContainer();
1373+
$field.val(config.get("getValue")(elementsList[selectedElement]));
1374+
selectedElement = -1;
1375+
hideContainer();
13691376

1370-
event.preventDefault();
1371-
}
1372-
});
1377+
event.preventDefault();
1378+
}
1379+
});
13731380
}
13741381

13751382
function bindKeypress() {

dist/jquery.easy-autocomplete.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/configuration.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ var EasyAutocomplete = (function(scope){
2727

2828
matchResponseProperty: false,
2929

30-
3130
list: {
3231
sort: {
3332
enabled: false,
@@ -48,6 +47,8 @@ var EasyAutocomplete = (function(scope){
4847

4948
maxNumberOfElements: 6,
5049

50+
hideOnEmptyPhrase: true,
51+
5152
match: {
5253
enabled: false,
5354
caseSensitive: false,

src/core.js

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -436,17 +436,23 @@ var EasyAutocomplete = (function(scope) {
436436
default:
437437

438438
if (event.keyCode > 40 || event.keyCode === 8) {
439-
loadData();
439+
440+
var inputPhrase = $field.val();
441+
442+
if (!(config.get("list").hideOnEmptyPhrase === true && event.keyCode === 8 && inputPhrase === "")) {
443+
loadData(inputPhrase);
444+
} else {
445+
hideContainer();
446+
}
447+
440448
}
441449

442450

443451
break;
444452
}
445453

446454

447-
function loadData() {
448-
449-
var inputPhrase = $field.val();
455+
function loadData(inputPhrase) {
450456

451457

452458
if (inputPhrase.length < config.get("minCharNumber")) {
@@ -572,17 +578,17 @@ var EasyAutocomplete = (function(scope) {
572578
})
573579
.keydown(function(event) {
574580

575-
if (event.keyCode === 13 && selectedElement > -1) {
581+
if (event.keyCode === 13 && selectedElement > -1) {
576582

577-
//enter
583+
//enter
578584

579-
$field.val(config.get("getValue")(elementsList[selectedElement]));
580-
selectedElement = -1;
581-
hideContainer();
585+
$field.val(config.get("getValue")(elementsList[selectedElement]));
586+
selectedElement = -1;
587+
hideContainer();
582588

583-
event.preventDefault();
584-
}
585-
});
589+
event.preventDefault();
590+
}
591+
});
586592
}
587593

588594
function bindKeypress() {

test/core/build.js

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,3 +319,114 @@ QUnit.test("Minimal number of characters in input phrase - true", function( asse
319319

320320
});
321321

322+
323+
324+
QUnit.test("List, hideOnEmptyPhrase - false ", function( assert ) {
325+
expect(1);
326+
327+
//given
328+
var completerOne = new EasyAutocomplete.main($("#inputOne"), {url: "resources/colors_string.json",
329+
330+
list: {
331+
onLoadEvent: function() {
332+
assertList();
333+
},
334+
335+
hideOnEmptyPhrase: false
336+
}
337+
338+
});
339+
340+
341+
//execute
342+
343+
completerOne.init();
344+
345+
var e = $.Event('keyup');
346+
e.keyCode = 8; //backspace
347+
$("#inputOne").val("").trigger(e);
348+
349+
QUnit.stop();
350+
351+
//assert
352+
353+
function assertList() {
354+
var elements = $("#inputOne").next().find("ul li");
355+
356+
assert.equal(3, elements.length, "Response size");
357+
358+
QUnit.start();
359+
}
360+
});
361+
362+
QUnit.test("List, hideOnEmptyPhrase - true - empty input", function( assert ) {
363+
expect(1);
364+
365+
//given
366+
var completerOne = new EasyAutocomplete.main($("#inputOne"), {url: "resources/colors_string.json",
367+
368+
list: {
369+
370+
hideOnEmptyPhrase: true
371+
}
372+
373+
});
374+
375+
376+
//execute
377+
378+
completerOne.init();
379+
380+
var e = $.Event('keyup');
381+
e.keyCode = 8; //backspace
382+
$("#inputOne").val("").trigger(e);
383+
384+
385+
//assert
386+
var elements = $("#inputOne").next().find("ul li");
387+
388+
assert.equal(0, elements.length, "Response size");
389+
390+
391+
});
392+
393+
394+
QUnit.test("List, hideOnEmptyPhrase - true - not empty input", function( assert ) {
395+
expect(1);
396+
397+
//given
398+
var completerOne = new EasyAutocomplete.main($("#inputOne"), {url: "resources/colors_string.json",
399+
400+
list: {
401+
onLoadEvent: function() {
402+
assertList();
403+
},
404+
405+
hideOnEmptyPhrase: true
406+
}
407+
408+
});
409+
410+
411+
//execute
412+
413+
completerOne.init();
414+
415+
var e = $.Event('keyup');
416+
e.keyCode = 8; //backspace
417+
$("#inputOne").val("aaaa").trigger(e);
418+
419+
QUnit.stop();
420+
421+
//assert
422+
423+
function assertList() {
424+
var elements = $("#inputOne").next().find("ul li");
425+
426+
assert.equal(3, elements.length, "Response size");
427+
428+
QUnit.start();
429+
}
430+
431+
432+
});

0 commit comments

Comments
 (0)