awesomplete
Advanced tools
Comparing version 1.1.1 to 1.1.2
@@ -15,2 +15,4 @@ /** | ||
this.isOpened = false; | ||
this.input = $(input); | ||
@@ -28,3 +30,3 @@ this.input.setAttribute("autocomplete", "off"); | ||
filter: _.FILTER_CONTAINS, | ||
sort: _.SORT_BYLENGTH, | ||
sort: o.sort === false ? false : _.SORT_BYLENGTH, | ||
item: _.ITEM, | ||
@@ -58,44 +60,52 @@ replace: _.REPLACE | ||
$.bind(this.input, { | ||
"input": this.evaluate.bind(this), | ||
"blur": this.close.bind(this, { reason: "blur" }), | ||
"keydown": function(evt) { | ||
var c = evt.keyCode; | ||
this._events = { | ||
input: { | ||
"input": this.evaluate.bind(this), | ||
"blur": this.close.bind(this, { reason: "blur" }), | ||
"keydown": function(evt) { | ||
var c = evt.keyCode; | ||
// If the dropdown `ul` is in view, then act on keydown for the following keys: | ||
// Enter / Esc / Up / Down | ||
if(me.opened) { | ||
if (c === 13 && me.selected) { // Enter | ||
evt.preventDefault(); | ||
me.select(); | ||
// If the dropdown `ul` is in view, then act on keydown for the following keys: | ||
// Enter / Esc / Up / Down | ||
if(me.opened) { | ||
if (c === 13 && me.selected) { // Enter | ||
evt.preventDefault(); | ||
me.select(); | ||
} | ||
else if (c === 27) { // Esc | ||
me.close({ reason: "esc" }); | ||
} | ||
else if (c === 38 || c === 40) { // Down/Up arrow | ||
evt.preventDefault(); | ||
me[c === 38? "previous" : "next"](); | ||
} | ||
} | ||
else if (c === 27) { // Esc | ||
me.close({ reason: "esc" }); | ||
} | ||
else if (c === 38 || c === 40) { // Down/Up arrow | ||
evt.preventDefault(); | ||
me[c === 38? "previous" : "next"](); | ||
} | ||
} | ||
} | ||
}); | ||
}, | ||
form: { | ||
"submit": this.close.bind(this, { reason: "submit" }) | ||
}, | ||
ul: { | ||
"mousedown": function(evt) { | ||
var li = evt.target; | ||
$.bind(this.input.form, {"submit": this.close.bind(this, { reason: "submit" })}); | ||
if (li !== this) { | ||
$.bind(this.ul, {"mousedown": function(evt) { | ||
var li = evt.target; | ||
while (li && !/li/i.test(li.nodeName)) { | ||
li = li.parentNode; | ||
} | ||
if (li !== this) { | ||
while (li && !/li/i.test(li.nodeName)) { | ||
li = li.parentNode; | ||
if (li && evt.button === 0) { // Only select on left click | ||
evt.preventDefault(); | ||
me.select(li, evt.target); | ||
} | ||
} | ||
} | ||
if (li && evt.button === 0) { // Only select on left click | ||
evt.preventDefault(); | ||
me.select(li, evt.target); | ||
} | ||
} | ||
}}); | ||
}; | ||
$.bind(this.input, this._events.input); | ||
$.bind(this.input.form, this._events.form); | ||
$.bind(this.ul, this._events.ul); | ||
if (this.input.hasAttribute("list")) { | ||
@@ -149,3 +159,3 @@ this.list = "#" + this.input.getAttribute("list"); | ||
get opened() { | ||
return !this.ul.hasAttribute("hidden"); | ||
return this.isOpened; | ||
}, | ||
@@ -159,2 +169,3 @@ | ||
this.ul.setAttribute("hidden", ""); | ||
this.isOpened = false; | ||
this.index = -1; | ||
@@ -167,2 +178,3 @@ | ||
this.ul.removeAttribute("hidden"); | ||
this.isOpened = true; | ||
@@ -176,6 +188,28 @@ if (this.autoFirst && this.index === -1) { | ||
destroy: function() { | ||
//remove events from the input and its form | ||
$.unbind(this.input, this._events.input); | ||
$.unbind(this.input.form, this._events.form); | ||
//move the input out of the awesomplete container and remove the container and its children | ||
var parentNode = this.container.parentNode; | ||
parentNode.insertBefore(this.input, this.container); | ||
parentNode.removeChild(this.container); | ||
//remove autocomplete and aria-autocomplete attributes | ||
this.input.removeAttribute("autocomplete"); | ||
this.input.removeAttribute("aria-autocomplete"); | ||
//remove this awesomeplete instance from the global array of instances | ||
var indexOfAwesomplete = _.all.indexOf(this); | ||
if (indexOfAwesomplete !== -1) { | ||
_.all.splice(indexOfAwesomplete, 1); | ||
} | ||
}, | ||
next: function () { | ||
var count = this.ul.children.length; | ||
this.goto(this.index < count - 1? this.index + 1 : -1); | ||
this.goto(this.index < count - 1 ? this.index + 1 : (count ? 0 : -1) ); | ||
}, | ||
@@ -185,4 +219,5 @@ | ||
var count = this.ul.children.length; | ||
var pos = this.index - 1; | ||
this.goto(this.selected? this.index - 1 : count - 1); | ||
this.goto(this.selected && pos !== -1 ? pos : count - 1); | ||
}, | ||
@@ -204,2 +239,5 @@ | ||
// scroll to highlighted element in case parent's height is fixed | ||
this.ul.scrollTop = lis[i].offsetTop - this.ul.clientHeight + lis[i].clientHeight; | ||
$.fire(this.input, "awesomplete-highlight", { | ||
@@ -251,6 +289,10 @@ text: this.suggestions[this.index] | ||
return me.filter(item, value); | ||
}) | ||
.sort(this.sort) | ||
.slice(0, this.maxItems); | ||
}); | ||
if (this.sort !== false) { | ||
this.suggestions = this.suggestions.sort(this.sort); | ||
} | ||
this.suggestions = this.suggestions.slice(0, this.maxItems); | ||
this.suggestions.forEach(function(text) { | ||
@@ -293,3 +335,3 @@ me.ul.appendChild(me.item(text, value)); | ||
_.ITEM = function (text, input) { | ||
var html = input === '' ? text : text.replace(RegExp($.regExpEscape(input.trim()), "gi"), "<mark>$&</mark>"); | ||
var html = input.trim() === "" ? text : text.replace(RegExp($.regExpEscape(input.trim()), "gi"), "<mark>$&</mark>"); | ||
return $.create("li", { | ||
@@ -397,2 +439,14 @@ innerHTML: html, | ||
$.unbind = function(element, o) { | ||
if (element) { | ||
for (var event in o) { | ||
var callback = o[event]; | ||
event.split(/\s+/).forEach(function(event) { | ||
element.removeEventListener(event, callback); | ||
}); | ||
} | ||
} | ||
}; | ||
$.fire = function(target, type, properties) { | ||
@@ -399,0 +453,0 @@ var evt = document.createEvent("HTMLEvents"); |
// Awesomplete - Lea Verou - MIT license | ||
(function(){function h(a){a=Array.isArray(a)?{label:a[0],value:a[1]}:"object"===typeof a&&"label"in a&&"value"in a?a:{label:a,value:a};this.label=a.label||a.value;this.value=a.value}function n(a,b,d){for(var g in b){var f=b[g],c=a.input.getAttribute("data-"+g.toLowerCase());a[g]="number"===typeof f?parseInt(c):!1===f?null!==c:f instanceof Function?null:c;a[g]||0===a[g]||(a[g]=g in d?d[g]:f)}}function c(a,b){return"string"===typeof a?(b||document).querySelector(a):a||null}function k(a,b){return l.call((b|| | ||
document).querySelectorAll(a))}function m(){k("input.awesomplete").forEach(function(a){new e(a)})}var e=function(a,b){var d=this;this.input=c(a);this.input.setAttribute("autocomplete","off");this.input.setAttribute("aria-autocomplete","list");b=b||{};n(this,{minChars:2,maxItems:10,autoFirst:!1,data:e.DATA,filter:e.FILTER_CONTAINS,sort:e.SORT_BYLENGTH,item:e.ITEM,replace:e.REPLACE},b);this.index=-1;this.container=c.create("div",{className:"awesomplete",around:a});this.ul=c.create("ul",{hidden:"hidden", | ||
inside:this.container});this.status=c.create("span",{className:"visually-hidden",role:"status","aria-live":"assertive","aria-relevant":"additions",inside:this.container});c.bind(this.input,{input:this.evaluate.bind(this),blur:this.close.bind(this),keydown:function(a){var b=a.keyCode;if(d.opened)if(13===b&&d.selected)a.preventDefault(),d.select();else if(27===b)d.close();else if(38===b||40===b)a.preventDefault(),d[38===b?"previous":"next"]()}});c.bind(this.input.form,{submit:this.close.bind(this)}); | ||
c.bind(this.ul,{mousedown:function(a){var b=a.target;if(b!==this){for(;b&&!/li/i.test(b.nodeName);)b=b.parentNode;b&&0===a.button&&(a.preventDefault(),d.select(b,a.target))}}});this.input.hasAttribute("list")?(this.list="#"+this.input.getAttribute("list"),this.input.removeAttribute("list")):this.list=this.input.getAttribute("data-list")||b.list||[];e.all.push(this)};e.prototype={set list(a){if(Array.isArray(a))this._list=a;else if("string"===typeof a&&-1<a.indexOf(","))this._list=a.split(/\s*,\s*/); | ||
else if((a=c(a))&&a.children){var b=[];l.apply(a.children).forEach(function(a){if(!a.disabled){var c=a.textContent.trim(),f=a.value||c;a=a.label||c;""!==f&&b.push({label:a,value:f})}});this._list=b}document.activeElement===this.input&&this.evaluate()},get selected(){return-1<this.index},get opened(){return!this.ul.hasAttribute("hidden")},close:function(){this.ul.setAttribute("hidden","");this.index=-1;c.fire(this.input,"awesomplete-close")},open:function(){this.ul.removeAttribute("hidden");this.autoFirst&& | ||
-1===this.index&&this["goto"](0);c.fire(this.input,"awesomplete-open")},next:function(){this["goto"](this.index<this.ul.children.length-1?this.index+1:-1)},previous:function(){var a=this.ul.children.length;this["goto"](this.selected?this.index-1:a-1)},"goto":function(a){var b=this.ul.children;this.selected&&b[this.index].setAttribute("aria-selected","false");this.index=a;-1<a&&0<b.length&&(b[a].setAttribute("aria-selected","true"),this.status.textContent=b[a].textContent,c.fire(this.input,"awesomplete-highlight", | ||
{text:this.suggestions[this.index]}))},select:function(a,b){a?this.index=c.siblingIndex(a):a=this.ul.children[this.index];if(a){var d=this.suggestions[this.index];c.fire(this.input,"awesomplete-select",{text:d,origin:b||a})&&(this.replace(d),this.close(),c.fire(this.input,"awesomplete-selectcomplete",{text:d}))}},evaluate:function(){var a=this,b=this.input.value;b.length>=this.minChars&&0<this._list.length?(this.index=-1,this.ul.innerHTML="",this.suggestions=this._list.map(function(d){return new h(a.data(d, | ||
b))}).filter(function(d){return a.filter(d,b)}).sort(this.sort).slice(0,this.maxItems),this.suggestions.forEach(function(d){a.ul.appendChild(a.item(d,b))}),0===this.ul.children.length?this.close():this.open()):this.close()}};e.all=[];e.FILTER_CONTAINS=function(a,b){return RegExp(c.regExpEscape(b.trim()),"i").test(a)};e.FILTER_STARTSWITH=function(a,b){return RegExp("^"+c.regExpEscape(b.trim()),"i").test(a)};e.SORT_BYLENGTH=function(a,b){return a.length!==b.length?a.length-b.length:a<b?-1:1};e.ITEM= | ||
function(a,b){var d=""===b?a:a.replace(RegExp(c.regExpEscape(b.trim()),"gi"),"<mark>$&</mark>");return c.create("li",{innerHTML:d,"aria-selected":"false"})};e.REPLACE=function(a){this.input.value=a.value};e.DATA=function(a){return a};Object.defineProperty(h.prototype=Object.create(String.prototype),"length",{get:function(){return this.label.length}});h.prototype.toString=h.prototype.valueOf=function(){return""+this.label};var l=Array.prototype.slice;c.create=function(a,b){var d=document.createElement(a), | ||
g;for(g in b){var f=b[g];"inside"===g?c(f).appendChild(d):"around"===g?(f=c(f),f.parentNode.insertBefore(d,f),d.appendChild(f)):g in d?d[g]=f:d.setAttribute(g,f)}return d};c.bind=function(a,b){if(a)for(var d in b){var c=b[d];d.split(/\s+/).forEach(function(b){a.addEventListener(b,c)})}};c.fire=function(a,b,c){var e=document.createEvent("HTMLEvents");e.initEvent(b,!0,!0);for(var f in c)e[f]=c[f];return a.dispatchEvent(e)};c.regExpEscape=function(a){return a.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")}; | ||
c.siblingIndex=function(a){for(var b=0;a=a.previousElementSibling;b++);return b};"undefined"!==typeof Document&&("loading"!==document.readyState?m():document.addEventListener("DOMContentLoaded",m));e.$=c;e.$$=k;"undefined"!==typeof self&&(self.Awesomplete=e);"object"===typeof module&&module.exports&&(module.exports=e);return e})(); | ||
!function(){function t(t){var e=Array.isArray(t)?{label:t[0],value:t[1]}:"object"==typeof t&&"label"in t&&"value"in t?t:{label:t,value:t};this.label=e.label||e.value,this.value=e.value}function e(t,e,i){for(var n in e){var s=e[n],r=t.input.getAttribute("data-"+n.toLowerCase());"number"==typeof s?t[n]=parseInt(r):!1===s?t[n]=null!==r:s instanceof Function?t[n]=null:t[n]=r,t[n]||0===t[n]||(t[n]=n in i?i[n]:s)}}function i(t,e){return"string"==typeof t?(e||document).querySelector(t):t||null}function n(t,e){return o.call((e||document).querySelectorAll(t))}function s(){n("input.awesomplete").forEach(function(t){new r(t)})}var r=function(t,n){var s=this;this.isOpened=!1,this.input=i(t),this.input.setAttribute("autocomplete","off"),this.input.setAttribute("aria-autocomplete","list"),n=n||{},e(this,{minChars:2,maxItems:10,autoFirst:!1,data:r.DATA,filter:r.FILTER_CONTAINS,sort:!1!==n.sort&&r.SORT_BYLENGTH,item:r.ITEM,replace:r.REPLACE},n),this.index=-1,this.container=i.create("div",{className:"awesomplete",around:t}),this.ul=i.create("ul",{hidden:"hidden",inside:this.container}),this.status=i.create("span",{className:"visually-hidden",role:"status","aria-live":"assertive","aria-relevant":"additions",inside:this.container}),this._events={input:{input:this.evaluate.bind(this),blur:this.close.bind(this,{reason:"blur"}),keydown:function(t){var e=t.keyCode;s.opened&&(13===e&&s.selected?(t.preventDefault(),s.select()):27===e?s.close({reason:"esc"}):38!==e&&40!==e||(t.preventDefault(),s[38===e?"previous":"next"]()))}},form:{submit:this.close.bind(this,{reason:"submit"})},ul:{mousedown:function(t){var e=t.target;if(e!==this){for(;e&&!/li/i.test(e.nodeName);)e=e.parentNode;e&&0===t.button&&(t.preventDefault(),s.select(e,t.target))}}}},i.bind(this.input,this._events.input),i.bind(this.input.form,this._events.form),i.bind(this.ul,this._events.ul),this.input.hasAttribute("list")?(this.list="#"+this.input.getAttribute("list"),this.input.removeAttribute("list")):this.list=this.input.getAttribute("data-list")||n.list||[],r.all.push(this)};r.prototype={set list(t){if(Array.isArray(t))this._list=t;else if("string"==typeof t&&t.indexOf(",")>-1)this._list=t.split(/\s*,\s*/);else if((t=i(t))&&t.children){var e=[];o.apply(t.children).forEach(function(t){if(!t.disabled){var i=t.textContent.trim(),n=t.value||i,s=t.label||i;""!==n&&e.push({label:s,value:n})}}),this._list=e}document.activeElement===this.input&&this.evaluate()},get selected(){return this.index>-1},get opened(){return this.isOpened},close:function(t){this.opened&&(this.ul.setAttribute("hidden",""),this.isOpened=!1,this.index=-1,i.fire(this.input,"awesomplete-close",t||{}))},open:function(){this.ul.removeAttribute("hidden"),this.isOpened=!0,this.autoFirst&&-1===this.index&&this.goto(0),i.fire(this.input,"awesomplete-open")},destroy:function(){i.unbind(this.input,this._events.input),i.unbind(this.input.form,this._events.form);var t=this.container.parentNode;t.insertBefore(this.input,this.container),t.removeChild(this.container),this.input.removeAttribute("autocomplete"),this.input.removeAttribute("aria-autocomplete");var e=r.all.indexOf(this);-1!==e&&r.all.splice(e,1)},next:function(){var t=this.ul.children.length;this.goto(this.index<t-1?this.index+1:t?0:-1)},previous:function(){var t=this.ul.children.length,e=this.index-1;this.goto(this.selected&&-1!==e?e:t-1)},goto:function(t){var e=this.ul.children;this.selected&&e[this.index].setAttribute("aria-selected","false"),this.index=t,t>-1&&e.length>0&&(e[t].setAttribute("aria-selected","true"),this.status.textContent=e[t].textContent,this.ul.scrollTop=e[t].offsetTop-this.ul.clientHeight+e[t].clientHeight,i.fire(this.input,"awesomplete-highlight",{text:this.suggestions[this.index]}))},select:function(t,e){if(t?this.index=i.siblingIndex(t):t=this.ul.children[this.index],t){var n=this.suggestions[this.index];i.fire(this.input,"awesomplete-select",{text:n,origin:e||t})&&(this.replace(n),this.close({reason:"select"}),i.fire(this.input,"awesomplete-selectcomplete",{text:n}))}},evaluate:function(){var e=this,i=this.input.value;i.length>=this.minChars&&this._list.length>0?(this.index=-1,this.ul.innerHTML="",this.suggestions=this._list.map(function(n){return new t(e.data(n,i))}).filter(function(t){return e.filter(t,i)}),!1!==this.sort&&(this.suggestions=this.suggestions.sort(this.sort)),this.suggestions=this.suggestions.slice(0,this.maxItems),this.suggestions.forEach(function(t){e.ul.appendChild(e.item(t,i))}),0===this.ul.children.length?this.close({reason:"nomatches"}):this.open()):this.close({reason:"nomatches"})}},r.all=[],r.FILTER_CONTAINS=function(t,e){return RegExp(i.regExpEscape(e.trim()),"i").test(t)},r.FILTER_STARTSWITH=function(t,e){return RegExp("^"+i.regExpEscape(e.trim()),"i").test(t)},r.SORT_BYLENGTH=function(t,e){return t.length!==e.length?t.length-e.length:t<e?-1:1},r.ITEM=function(t,e){return i.create("li",{innerHTML:""===e.trim()?t:t.replace(RegExp(i.regExpEscape(e.trim()),"gi"),"<mark>$&</mark>"),"aria-selected":"false"})},r.REPLACE=function(t){this.input.value=t.value},r.DATA=function(t){return t},Object.defineProperty(t.prototype=Object.create(String.prototype),"length",{get:function(){return this.label.length}}),t.prototype.toString=t.prototype.valueOf=function(){return""+this.label};var o=Array.prototype.slice;i.create=function(t,e){var n=document.createElement(t);for(var s in e){var r=e[s];if("inside"===s)i(r).appendChild(n);else if("around"===s){var o=i(r);o.parentNode.insertBefore(n,o),n.appendChild(o)}else s in n?n[s]=r:n.setAttribute(s,r)}return n},i.bind=function(t,e){if(t)for(var i in e){var n=e[i];i.split(/\s+/).forEach(function(e){t.addEventListener(e,n)})}},i.unbind=function(t,e){if(t)for(var i in e){var n=e[i];i.split(/\s+/).forEach(function(e){t.removeEventListener(e,n)})}},i.fire=function(t,e,i){var n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0);for(var s in i)n[s]=i[s];return t.dispatchEvent(n)},i.regExpEscape=function(t){return t.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")},i.siblingIndex=function(t){for(var e=0;t=t.previousElementSibling;e++);return e},"undefined"!=typeof Document&&("loading"!==document.readyState?s():document.addEventListener("DOMContentLoaded",s)),r.$=i,r.$$=n,"undefined"!=typeof self&&(self.Awesomplete=r),"object"==typeof module&&module.exports&&(module.exports=r)}(); | ||
//# sourceMappingURL=awesomplete.min.js.map |
@@ -48,6 +48,13 @@ ##Contributing | ||
**Build minified version** | ||
**Build** | ||
Run the build with the following command: | ||
``` | ||
gulp | ||
``` | ||
The build will: | ||
1. Minify `awesomplete.js` and generate `awesomplete.min.js`. | ||
2. Merge `awesomplete.base.css` and `awesomplete.theme.css` and generate `awesomplete.css`. |
var gulp = require('gulp'); | ||
var closure = require('gulp-closure-compiler-service'); | ||
var uglify = require('gulp-uglify'); | ||
var rename = require('gulp-rename'); | ||
var header = require('gulp-header'); | ||
var concat = require('gulp-concat'); | ||
var sourcemaps = require('gulp-sourcemaps'); | ||
@@ -10,11 +12,21 @@ var banner = "// Awesomplete - Lea Verou - MIT license\n"; | ||
return gulp.src(['awesomplete.js']) | ||
.pipe(closure({ | ||
compilation_level: 'SIMPLE_OPTIMIZATIONS', | ||
language: 'ECMASCRIPT5' | ||
})) | ||
.pipe(sourcemaps.init()) | ||
.pipe(uglify()) | ||
.pipe(rename({ suffix: '.min' })) | ||
.pipe(header(banner)) | ||
.pipe(sourcemaps.write('.')) | ||
.pipe(gulp.dest('.')); | ||
}); | ||
gulp.task('default', ['minify']); | ||
gulp.task('concat', function() { | ||
return gulp.src(['awesomplete.base.css', 'awesomplete.theme.css']) | ||
.pipe(sourcemaps.init()) | ||
.pipe(concat('awesomplete.css')) | ||
.pipe(sourcemaps.write('.')) | ||
.pipe(gulp.dest('.')); | ||
}); | ||
gulp.task('default', ['minify', 'concat']); |
{ | ||
"name": "awesomplete", | ||
"version": "1.1.1", | ||
"version": "1.1.2", | ||
"description": "http://leaverou.github.io/awesomplete/", | ||
@@ -18,5 +18,7 @@ "main": "awesomplete.js", | ||
"gulp": "^3.9.0", | ||
"gulp-closure-compiler-service": "^0.5.0", | ||
"gulp-concat": "^2.6.0", | ||
"gulp-header": "^1.7.1", | ||
"gulp-rename": "^1.2.2", | ||
"gulp-sourcemaps": "^1.6.0", | ||
"gulp-uglify": "^2.0.0", | ||
"jasmine-core": "^2.4.1", | ||
@@ -23,0 +25,0 @@ "karma": "^0.13.19", |
@@ -49,6 +49,6 @@ describe("awesomplete.next", function () { | ||
it("selects no item after reaching the end", function () { | ||
it("selects the first item after reaching the end", function () { | ||
this.subject.goto(this.lastIndex); | ||
this.subject.next(); | ||
expect(this.subject.index).toBe(-1); | ||
expect(this.subject.index).toBe(0); | ||
}); | ||
@@ -55,0 +55,0 @@ }); |
@@ -49,6 +49,6 @@ describe("awesomplete.previous", function () { | ||
it("selects no item after reaching the start", function () { | ||
it("selects the last item after reaching the start", function () { | ||
this.subject.goto(0); | ||
this.subject.previous(); | ||
expect(this.subject.index).toBe(-1); | ||
expect(this.subject.index).toBe(this.lastIndex); | ||
}); | ||
@@ -55,0 +55,0 @@ }); |
@@ -9,3 +9,3 @@ describe("Awesomplete.$.bind", function () { | ||
describe("whith invalid element", function () { | ||
describe("with invalid element", function () { | ||
it("does nothing if element is undefined", function () { | ||
@@ -12,0 +12,0 @@ this.element = undefined; |
@@ -50,2 +50,10 @@ describe("Awesomplete.ITEM", function () { | ||
}); | ||
describe("with space input", function () { | ||
def("input", " "); | ||
it("does not mark anything", function () { | ||
expect(this.element.innerHTML).toBe("JavaScript"); | ||
}); | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
148975
59
2549
14