Last active
January 28, 2018 11:17
-
-
Save superlloyd/c1ea010a63dade8f3d14948296ac8646 to your computer and use it in GitHub Desktop.
A simple, acceptably good looking, multi-select VueJS (2.0) component, with example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<head> | |
<title>hello custom multi select</title> | |
<script src="http://cdnjs.cloudflare.com/ajax/libs/vue/2.0.5/vue.js"></script> | |
<!-- START of SELECT3 --> | |
<style> | |
.select3-container { | |
position: relative; | |
display: inline-block; | |
} | |
.select3-container .select3-input-box { | |
border: 1px solid #ccc; | |
background: white; | |
padding: 0; | |
margin: 0 1px 1px 0; | |
display: block; | |
} | |
.select3-container .select3-input-text { | |
border: 0; | |
padding: 0; | |
margin: 4px; | |
/* removed chrome focused border */ | |
outline-style:none; | |
box-shadow:none; | |
border-color:transparent; | |
} | |
.select3-container .select3-container2 { | |
position: relative; | |
display: block; | |
min-width: 8em; | |
} | |
.select3-container .select3-popup { | |
position: absolute; | |
display: inline-block; | |
border: 1px solid #aaa; | |
background: white; | |
width: 100%; | |
top: 0; | |
z-index:1; | |
max-height: 12em; | |
overflow: auto; | |
} | |
.select3-container .select3-item { | |
display: block; | |
margin: 2px; | |
padding: 2px; | |
} | |
.select3-container .select3-item:hover { | |
cursor: pointer; | |
} | |
.select3-container .select3-selected-item { | |
display: inline-block; | |
margin: 1px 0 0 1px; | |
padding: 1px; | |
border: 1px solid #ccc; | |
background: #eee; | |
border-radius: 4px; | |
} | |
.select3-container .select3-selected-item:after { | |
content: "\d7"; | |
color: #888; | |
} | |
.select3-container .select3-selected-item:hover { | |
cursor: pointer; | |
} | |
.select3-container .select3-match-higlight { | |
background: #afb; | |
font-weight: bold; | |
} | |
</style> | |
<script type="text/x-template" id="VueTemplate-MultiSelect3"> | |
<div class="select3-container" | |
v-bind:style="style" | |
v-on:mousedown="onMouseDown" | |
v-on:click="onMouseDown" | |
> | |
<div class="select3-input-box" ref="inputBox"> | |
<div v-for="item in selection" | |
class="select3-selected-item" | |
v-on:click="deselect(item)" | |
> | |
{{ getGetter(item) }} | |
</div> | |
<input type="text" ref="filter" v-model="filter" | |
class="select3-input-text" | |
v-bind:style="textInputStyle" | |
v-on:focus="isFocus = true" | |
v-on:blur="onBlur" | |
v-on:keydown="onKeyDown" | |
/> | |
</div> | |
<div class="select3-container2"> | |
<div class="select3-popup" | |
v-show="isOpen" | |
v-bind:style="popupStyle" | |
ref="popup" | |
> | |
<div v-for="item in filtered" | |
v-bind:style="itemStyle(item)" | |
ref="popupItems" | |
class="select3-item" | |
v-on:click="select(item)" | |
v-on:mouseenter="higlightedItem = item" | |
v-html="getHtml(item)" | |
> | |
</div> | |
<!-- | |
IDEA: use dynamic component here: https://vuejs.org/v2/guide/components.html#Dynamic-Components | |
for custom display. | |
Not used since getting the string value is important | |
--> | |
</div> | |
</div> | |
<div> | |
</script> | |
<script> | |
function scrollToVisible(item) { | |
if (!item) | |
return; | |
var popup = item.offsetParent; | |
if (!popup) | |
return; | |
if (item.offsetTop < popup.scrollTop) { | |
popup.scrollTop = item.offsetTop; | |
} | |
else if ((item.offsetTop + item.offsetHeight) > (popup.scrollTop + popup.clientHeight)) { | |
popup.scrollTop = item.offsetTop + item.offsetHeight - popup.clientHeight; | |
} | |
} | |
Array.prototype.contains = function (x) { | |
var index = this.indexOf(x); | |
return index > -1; | |
} | |
Vue.component('select3', { | |
template: '#VueTemplate-MultiSelect3', | |
props: { | |
value: { type: Array }, | |
width: { type: String }, | |
items: { | |
type: Array, | |
default: [], | |
}, | |
getText: { | |
type: [String, Function], | |
required: true, | |
}, | |
style: {}, | |
}, | |
data: function() { | |
return { | |
isFocus: false, | |
selection: this.value, | |
filter: '', | |
higlightedItem: null, | |
}; | |
}, | |
computed: { | |
popupStyle: function() { | |
var result = { }; | |
if (this.filtered.length == 0) | |
result.height = '1.5em'; | |
return result; | |
}, | |
textInputStyle: function() { | |
var result = { }; | |
var filter = this.filter; | |
result.width = ((filter.length + 1) * 8) + 'px'; | |
return result; | |
}, | |
getGetter: function() { | |
var p = this.getText; | |
if (typeof p === "string" || p instanceof String) return function(x) { return x[p] || ''; }; | |
//else if (p instanceof Function) | |
return function(x) { return p(x) || ''; }; | |
}, | |
filtered: function() { | |
var items = this.items || []; | |
var filter = (this.filter || '').trim().toLowerCase(); | |
var getter = this.getGetter; | |
var match = function(x) { | |
if (filter === '') | |
return true; | |
var s = getter(x).toLowerCase(); | |
return s.indexOf(filter) > -1; | |
}; | |
// PERFORMANCE REMARK: Do NOT use .push() to fill/update filtered array | |
var result = []; | |
result.length = items.length; | |
var len = 0; | |
for (var i = 0; i < items.length; i++) { | |
var it = items[i]; | |
if (match(it)) { | |
result[len++] = it; | |
} | |
} | |
result.length = len; | |
result.sort(function(a, b) { | |
var va = getter(a); | |
var vb = getter(b); | |
return va.localeCompare(vb); | |
}); | |
// lastly update highlight | |
if (result.length > 0) { | |
if (!this.higlightedItem || result.indexOf(this.higlightedItem) == -1) | |
this.higlightedItem = result[0]; | |
} | |
else { | |
this.higlightedItem = null; | |
} | |
return result; | |
}, | |
isOpen: function() { | |
return this.isFocus; | |
}, | |
}, | |
methods: { | |
onMouseDown: function(e) { | |
if (e.srcElement == this.$refs.inputBox) | |
this.$refs.filter.focus(); | |
e.preventDefault(); | |
}, | |
onBlur: function() { | |
this.isFocus = false; | |
this.filter = ''; | |
this.higlightedItem = null; | |
}, | |
itemStyle: function(x) { | |
var result = { }; | |
if (this.selection && this.selection.indexOf(x) > -1) { | |
result.cursor = 'default'; | |
if (x == this.higlightedItem) { | |
result.color = 'white'; | |
result.background = '#ddd'; | |
} | |
else { | |
result.color = '#c0c0c0'; | |
} | |
} | |
else { | |
if (x == this.higlightedItem) { | |
result.background = '#c0e0ff'; | |
} | |
} | |
return result; | |
}, | |
makeVisible: function() { | |
if (!this.higlightedItem || !this.filtered || !this.$refs.popupItems) | |
return; | |
var index = this.filtered.indexOf(this.higlightedItem); | |
if (index > -1) { | |
var item = this.$refs.popupItems[index]; | |
scrollToVisible(item); | |
} | |
}, | |
getHtml: function(x) { | |
var text = this.getGetter(x); | |
var filter = (this.filter || '').trim().toLowerCase(); | |
if (filter === '') | |
return text; | |
var index = text.toLowerCase().indexOf(filter); | |
if (index < 0) | |
return text; | |
return text.substr(0, index) | |
+ "<span class='select3-match-higlight'>" | |
+ text.substr(index, filter.length) | |
+ "</span>" | |
+ text.substr(index + filter.length) | |
; | |
}, | |
onKeyDown: function (e) { | |
var items = this.filtered || []; | |
if (!items || items.length == 0) | |
return; | |
var me = this; | |
function navigate(inc) { | |
var current = me.higlightedItem; | |
var index = items.indexOf(current); | |
var newindex = index + inc; | |
if (newindex < 0) | |
newindex = 0; | |
if (newindex >= items.length) | |
newindex = items.length - 1; | |
if (newindex == index) | |
return; | |
me.higlightedItem = items[newindex]; | |
me.makeVisible(); | |
}; | |
var code = (typeof e.which == "number") ? e.which : e.keyCode; | |
var char = String.fromCharCode(code); | |
switch (code) { | |
case 40: // arrow down | |
navigate(1); | |
break; | |
case 34: // page down | |
navigate(6); | |
break; | |
case 38: // arrow up | |
navigate(-1); | |
break; | |
case 33: // page up | |
navigate(-6); | |
break; | |
case 27: // ESC | |
this.$refs.filter.blur(); | |
break; | |
case 8: // backspace | |
if (this.filter) | |
return; | |
if (!this.selection || this.selection.length == 0) | |
return; | |
this.selection.splice(this.selection.length - 1, 1); | |
break; | |
default: | |
switch (char) { | |
case '\r': | |
case '\n': | |
if (this.select(this.higlightedItem)) { | |
this.$refs.filter.select(); | |
} | |
break; | |
default: | |
return; | |
} | |
break; | |
} | |
e.preventDefault(); | |
}, | |
deselect: function(x) { | |
if (!this.selection) | |
return; | |
var index = this.selection.indexOf(x); | |
if (index > -1) | |
this.selection.splice(index, 1); | |
}, | |
select: function(x) { | |
if (!x) | |
return false; | |
if (!this.selection) { | |
this.selection = []; | |
this.$emit('input', this.selection); | |
} | |
if (!this.selection.contains(x)) { | |
this.selection.push(x); | |
return true; | |
} | |
else { | |
return false; | |
} | |
}, | |
}, | |
watch: { | |
value: function (value) { | |
if (value && !(value instanceof Array)) { | |
value = null; | |
this.$emit('input', value); | |
} | |
this.selection = value; | |
}, | |
filtered: function(value) { | |
var me = this; | |
setTimeout(function() { me.makeVisible(); }); | |
}, | |
higlightedItem: function(value) { | |
this.makeVisible(); | |
} | |
} | |
}); | |
</script> | |
<!-- END of SELECT3 --> | |
</head> | |
<!-- test code below --> | |
<body> | |
<div id="el"> | |
My multi select: | |
<select3 ref="myMultiselect" v-bind:items="Trucks" get-text="Name" v-model="Selection" style="width:15em"> | |
</select3> | |
Aloha? | |
<br/> | |
<p></p> | |
Selected Values: | |
<span v-for="(it, index) in Selection"> | |
{{ index > 0 ? ', ' : '' }}<b>[{{it.ID}}]</b><i>{{it.Name}}</i> | |
</span> | |
</div> | |
<script> | |
var vm = new Vue({ | |
el: '#el', | |
data: { | |
Selection: null, | |
Trucks: | |
[ | |
{ ID:1, Name: '105' }, | |
{ ID:2, Name: '462' }, | |
{ ID:3, Name: '463' }, | |
{ ID:4, Name: '464' }, | |
{ ID:5, Name: '465' }, | |
{ ID:6, Name: '466' }, | |
{ ID:7, Name: '467' }, | |
{ ID:8, Name: '468' }, | |
{ ID:9, Name: '469' }, | |
{ ID:10, Name: '481' }, | |
{ ID:11, Name: '482' }, | |
{ ID:12, Name: '483' }, | |
{ ID:13, Name: '484' }, | |
{ ID:14, Name: '485' }, | |
{ ID:15, Name: '486' }, | |
{ ID:16, Name: '487' }, | |
{ ID:17, Name: '488' }, | |
{ ID:18, Name: '489' }, | |
{ ID:19, Name: '470' }, | |
{ ID:20, Name: '471A' }, | |
{ ID:21, Name: '472' }, | |
{ ID:22, Name: '473' }, | |
{ ID:23, Name: '475' }, | |
{ ID:24, Name: '476' }, | |
{ ID:25, Name: '477' }, | |
{ ID:26, Name: '478A' }, | |
{ ID:27, Name: '479' }, | |
{ ID:28, Name: '480' }, | |
{ ID:29, Name: '490' }, | |
{ ID:30, Name: '491' }, | |
{ ID:31, Name: '492' }, | |
{ ID:32, Name: '493' }, | |
{ ID:33, Name: '494' }, | |
{ ID:34, Name: '496' }, | |
{ ID:35, Name: '499' }, | |
{ ID:36, Name: '505' }, | |
{ ID:37, Name: '511' }, | |
{ ID:38, Name: '512' }, | |
{ ID:39, Name: '515' }, | |
{ ID:40, Name: '517' }, | |
{ ID:41, Name: '520' }, | |
{ ID:42, Name: '523' }, | |
{ ID:43, Name: '526' }, | |
{ ID:44, Name: '530EXCL' }, | |
{ ID:45, Name: '531' }, | |
{ ID:46, Name: '541' }, | |
{ ID:47, Name: '563' }, | |
{ ID:48, Name: '564' }, | |
{ ID:49, Name: '566' }, | |
{ ID:50, Name: '568' }, | |
{ ID:51, Name: '569' }, | |
{ ID:52, Name: '570' }, | |
{ ID:53, Name: '571' }, | |
{ ID:54, Name: '573' }, | |
{ ID:55, Name: '574' }, | |
{ ID:56, Name: '575A' }, | |
{ ID:57, Name: '576A' }, | |
{ ID:58, Name: '577' }, | |
{ ID:59, Name: '578' }, | |
{ ID:60, Name: 'AAA' }, | |
{ ID:61, Name: '102' }, | |
{ ID:62, Name: '103' }, | |
{ ID:63, Name: '104' }, | |
{ ID:64, Name: '106' }, | |
{ ID:65, Name: '100D' }, | |
{ ID:66, Name: '102D' }, | |
{ ID:67, Name: '103D' }, | |
{ ID:68, Name: '104D' }, | |
{ ID:69, Name: '106D' }, | |
{ ID:70, Name: 'AF075_BB' }, | |
{ ID:71, Name: 'AF076_BB' }, | |
{ ID:72, Name: 'LK981' }, | |
{ ID:73, Name: 'LK970' }, | |
{ ID:74, Name: 'LK774' }, | |
{ ID:75, Name: 'LK603' }, | |
{ ID:76, Name: 'LK367' }, | |
{ ID:77, Name: 'LK462' }, | |
{ ID:78, Name: 'LK09E' }, | |
{ ID:79, Name: 'LK011' }, | |
{ ID:80, Name: 'LK05E' }, | |
{ ID:81, Name: 'LKR98' }, | |
{ ID:82, Name: 'LK01E' }, | |
{ ID:83, Name: 'LK03E' }, | |
{ ID:84, Name: 'LK094' }, | |
{ ID:85, Name: 'LK243' }, | |
{ ID:86, Name: 'LK02T' }, | |
{ ID:87, Name: 'LK162' }, | |
{ ID:88, Name: 'LK208' }, | |
{ ID:89, Name: 'LL118_BB' }, | |
{ ID:90, Name: 'LL118T' }, | |
{ ID:91, Name: 'JKBULK' }, | |
{ ID:92, Name: 'PATELS' }, | |
{ ID:93, Name: 'SUDAN' }, | |
{ ID:94, Name: 'JK683_BB' }, | |
{ ID:95, Name: 'JK079_BB' }, | |
{ ID:96, Name: 'JK441_BB' }, | |
{ ID:97, Name: 'JK426_BB' }, | |
{ ID:98, Name: 'JK705_BB' }, | |
{ ID:99, Name: 'JK982_BB' }, | |
{ ID:100, Name: 'G207' }, | |
{ ID:101, Name: 'G207D' }, | |
{ ID:102, Name: 'RH077' }, | |
{ ID:103, Name: 'RH077D' }, | |
{ ID:104, Name: 'MD572' }, | |
{ ID:105, Name: 'MD220' }, | |
{ ID:106, Name: 'MD435' }, | |
{ ID:107, Name: 'MD667' }, | |
{ ID:108, Name: 'MD221' }, | |
{ ID:109, Name: 'CTH04' }, | |
{ ID:110, Name: 'KL023' }, | |
{ ID:111, Name: 'KL023D' }, | |
{ ID:112, Name: 'KL037' }, | |
{ ID:113, Name: 'KL037D' }, | |
{ ID:114, Name: 'KL064' }, | |
{ ID:115, Name: 'KL064D' }, | |
{ ID:116, Name: 'KL083' }, | |
{ ID:117, Name: 'KL083D' }, | |
{ ID:118, Name: 'KL116' }, | |
{ ID:119, Name: 'KL116D' }, | |
{ ID:120, Name: 'KL236' }, | |
{ ID:121, Name: 'KL236D' }, | |
{ ID:122, Name: 'KL264' }, | |
{ ID:123, Name: 'KL264D' }, | |
{ ID:124, Name: 'KL426' }, | |
{ ID:125, Name: 'KL426D' }, | |
{ ID:126, Name: 'KL452' }, | |
{ ID:127, Name: 'KL452D' }, | |
{ ID:128, Name: 'KL506' }, | |
{ ID:129, Name: 'KL506D' }, | |
{ ID:130, Name: 'KL524' }, | |
{ ID:131, Name: 'KL524D' }, | |
{ ID:132, Name: 'KL575' }, | |
{ ID:133, Name: 'KL575D' }, | |
{ ID:134, Name: 'KL583' }, | |
{ ID:135, Name: 'KL583D' }, | |
{ ID:136, Name: 'KL707' }, | |
{ ID:137, Name: 'KL707D' }, | |
{ ID:138, Name: 'KL708' }, | |
{ ID:139, Name: 'KL708D' }, | |
{ ID:140, Name: 'KL717' }, | |
{ ID:141, Name: 'KL717D' }, | |
{ ID:142, Name: 'KL829' }, | |
{ ID:143, Name: 'KL829D' }, | |
{ ID:144, Name: 'KL830' }, | |
{ ID:145, Name: 'KL830D' }, | |
{ ID:146, Name: 'KL843' }, | |
{ ID:147, Name: 'KL843D' }, | |
{ ID:148, Name: 'KL867' }, | |
{ ID:149, Name: 'KL867D' }, | |
{ ID:150, Name: 'KL985' }, | |
{ ID:151, Name: 'KL985D' }, | |
{ ID:152, Name: 'KL996' }, | |
{ ID:153, Name: 'KL996D' }, | |
{ ID:154, Name: 'TL779' }, | |
{ ID:155, Name: 'TL779D' }, | |
{ ID:156, Name: 'AJ260' }, | |
{ ID:157, Name: 'AJ260D' }, | |
{ ID:158, Name: 'AJ268' }, | |
{ ID:159, Name: 'AJ268D' }, | |
{ ID:160, Name: 'TRFRCE' }, | |
{ ID:161, Name: 'MH291D' }, | |
{ ID:162, Name: '463Z' }, | |
{ ID:163, Name: '000' }, | |
{ ID:164, Name: '530' }, | |
{ ID:165, Name: '565' }, | |
{ ID:166, Name: '012' }, | |
{ ID:167, Name: '010' }, | |
{ ID:168, Name: '017' }, | |
{ ID:169, Name: '016' }, | |
{ ID:170, Name: '005' }, | |
{ ID:171, Name: '006' }, | |
{ ID:172, Name: '526A' }, | |
{ ID:173, Name: 'AJ320D' }, | |
{ ID:174, Name: 'AJ55D' }, | |
{ ID:175, Name: 'AJ737D' }, | |
{ ID:176, Name: 'AJ404D' }, | |
{ ID:177, Name: 'MD356' }, | |
{ ID:178, Name: 'GJK104' }, | |
{ ID:179, Name: '107' }, | |
{ ID:180, Name: '492Z' }, | |
{ ID:181, Name: '000' }, | |
{ ID:182, Name: '999A' }, | |
{ ID:183, Name: '999' }, | |
{ ID:184, Name: '491A' }, | |
{ ID:185, Name: '003' }, | |
{ ID:186, Name: '004' }, | |
{ ID:187, Name: '007' }, | |
{ ID:188, Name: '011' }, | |
{ ID:189, Name: '018' }, | |
{ ID:190, Name: 'SAWTELLS' }, | |
{ ID:191, Name: '100R&W' }, | |
{ ID:192, Name: '102R&W' }, | |
{ ID:193, Name: '103R&W' }, | |
{ ID:194, Name: '104R&W' }, | |
{ ID:195, Name: '106R&W' }, | |
{ ID:196, Name: 'AF075R&W' }, | |
{ ID:197, Name: 'AF076R&W' }, | |
{ ID:198, Name: 'RH077R&W' }, | |
{ ID:199, Name: 'AF072_BB' }, | |
{ ID:200, Name: 'AF072D' }, | |
{ ID:201, Name: 'AF072R&W' }, | |
{ ID:202, Name: 'CW01' }, | |
{ ID:203, Name: '010' }, | |
{ ID:204, Name: 'CW14' }, | |
{ ID:205, Name: 'CW30' }, | |
{ ID:206, Name: '102BKM' }, | |
{ ID:207, Name: '101BKM' }, | |
{ ID:208, Name: '081BKM' }, | |
{ ID:209, Name: '082BKM' }, | |
{ ID:210, Name: '108' }, | |
{ ID:211, Name: '108D' }, | |
{ ID:212, Name: '103BKM' }, | |
{ ID:213, Name: '108R&W' }, | |
{ ID:214, Name: 'JK079R&W' }, | |
{ ID:215, Name: 'CW05' }, | |
{ ID:216, Name: '520A' }, | |
{ ID:217, Name: '520B' }, | |
{ ID:218, Name: '033' }, | |
{ ID:219, Name: '109' }, | |
{ ID:220, Name: '109D' }, | |
{ ID:221, Name: '110' }, | |
{ ID:222, Name: '110D' }, | |
{ ID:223, Name: '009' }, | |
{ ID:224, Name: '031' }, | |
{ ID:225, Name: '500A' }, | |
{ ID:226, Name: '262' }, | |
{ ID:227, Name: 'LAH788' }, | |
{ ID:228, Name: '460' }, | |
{ ID:229, Name: '461' }, | |
{ ID:230, Name: '012' }, | |
{ ID:231, Name: '053PL' }, | |
{ ID:232, Name: '091PL' }, | |
{ ID:233, Name: 'KL614' }, | |
{ ID:234, Name: 'KL614D' }, | |
{ ID:235, Name: 'KL357' }, | |
{ ID:236, Name: 'KL357D' }, | |
{ ID:237, Name: 'PR01_BB' }, | |
{ ID:238, Name: '213_BB' }, | |
{ ID:239, Name: 'BH255' }, | |
{ ID:240, Name: '579' }, | |
{ ID:241, Name: 'BH255T' }, | |
{ ID:242, Name: '459' }, | |
{ ID:243, Name: 'KL819' }, | |
{ ID:244, Name: 'KL819D' }, | |
{ ID:245, Name: 'KRAUSED' }, | |
{ ID:246, Name: 'HC1' }, | |
{ ID:247, Name: 'HC2' }, | |
{ ID:248, Name: '580' }, | |
{ ID:249, Name: '581' }, | |
{ ID:250, Name: 'MH290D' }, | |
{ ID:251, Name: 'ROB001' }, | |
{ ID:252, Name: 'KL747' }, | |
{ ID:253, Name: 'KL162' }, | |
{ ID:254, Name: 'KL903' }, | |
{ ID:255, Name: 'KL213' }, | |
{ ID:256, Name: 'KL337' }, | |
{ ID:257, Name: 'KL745D' }, | |
{ ID:258, Name: 'BLOCK MISC' }, | |
{ ID:259, Name: 'HF795' }, | |
{ ID:260, Name: 'HF831' }, | |
{ ID:261, Name: 'HF494' }, | |
{ ID:262, Name: '458' }, | |
{ ID:263, Name: 'KL745' }, | |
{ ID:264, Name: '109R&W' }, | |
{ ID:265, Name: 'KL577D' }, | |
{ ID:266, Name: 'KL577' }, | |
{ ID:267, Name: 'CH094' }, | |
{ ID:268, Name: 'CH243' }, | |
{ ID:269, Name: 'CH970' }, | |
{ ID:270, Name: 'CH911' }, | |
{ ID:271, Name: 'CH309' }, | |
{ ID:272, Name: 'RBAJI' }, | |
{ ID:273, Name: 'RBBE5' }, | |
{ ID:274, Name: 'RBZFY' }, | |
{ ID:275, Name: 'RBAR4' }, | |
{ ID:276, Name: 'RBYUX' }, | |
{ ID:277, Name: 'RBAY6' }, | |
{ ID:278, Name: 'RBCAT' }, | |
{ ID:279, Name: 'RBBB4' }, | |
{ ID:280, Name: 'RBAG1' }, | |
{ ID:281, Name: 'RBXGA' }, | |
{ ID:282, Name: 'JB586T' }, | |
{ ID:283, Name: 'BNF011' }, | |
{ ID:284, Name: 'BC001' }, | |
{ ID:285, Name: 'BCBE5' }, | |
{ ID:286, Name: 'BCBB2' }, | |
{ ID:287, Name: 'BCAY6' }, | |
{ ID:288, Name: 'BCAT0' }, | |
{ ID:289, Name: 'BCAP5' }, | |
{ ID:290, Name: 'BCAE3' }, | |
{ ID:291, Name: 'BCAZ6' }, | |
{ ID:292, Name: 'BCBK3' }, | |
{ ID:293, Name: 'CH451' }, | |
{ ID:294, Name: 'RAC1' }, | |
{ ID:295, Name: '001' }, | |
{ ID:296, Name: 'HB776' }, | |
{ ID:297, Name: 'CH550D' }, | |
{ ID:298, Name: 'HC3' }, | |
{ ID:299, Name: '588' }, | |
{ ID:300, Name: '582' }, | |
{ ID:301, Name: '583' }, | |
{ ID:302, Name: '314' }, | |
{ ID:303, Name: '321' }, | |
{ ID:304, Name: '334' }, | |
{ ID:305, Name: 'HT288' }, | |
{ ID:306, Name: 'HT999' }, | |
{ ID:307, Name: 'HT831' }, | |
{ ID:308, Name: 'BR052' }, | |
{ ID:309, Name: 'BR145' }, | |
{ ID:310, Name: 'BR166' }, | |
{ ID:311, Name: 'BR239' }, | |
{ ID:312, Name: 'BR544' }, | |
{ ID:313, Name: 'BR545' }, | |
{ ID:314, Name: 'BR555' }, | |
{ ID:315, Name: 'BR571' }, | |
{ ID:316, Name: 'BR572' }, | |
{ ID:317, Name: 'BR823' }, | |
{ ID:318, Name: 'BR901' }, | |
{ ID:319, Name: 'BR914' }, | |
{ ID:320, Name: 'KL179D' }, | |
{ ID:321, Name: 'KL179' }, | |
{ ID:322, Name: 'CS882D' }, | |
{ ID:323, Name: 'CS882' }, | |
{ ID:324, Name: 'CS896D' }, | |
{ ID:325, Name: 'CS896' }, | |
{ ID:326, Name: 'CS937D' }, | |
{ ID:327, Name: 'CS937' }, | |
{ ID:328, Name: 'MM134' }, | |
{ ID:329, Name: 'MM905' }, | |
{ ID:330, Name: 'MM284' }, | |
{ ID:331, Name: 'MM348' }, | |
{ ID:332, Name: 'MM793' }, | |
{ ID:333, Name: 'MM639' }, | |
{ ID:334, Name: 'MM076' }, | |
{ ID:335, Name: 'MM027' }, | |
{ ID:336, Name: 'MM987' }, | |
{ ID:337, Name: 'MM135' }, | |
{ ID:338, Name: 'MM291' }, | |
{ ID:339, Name: 'MM063' }, | |
{ ID:340, Name: 'MM064D' }, | |
{ ID:341, Name: 'MM635' }, | |
{ ID:342, Name: 'MM105' }, | |
{ ID:343, Name: 'MM135' }, | |
{ ID:344, Name: 'MM291' }, | |
{ ID:345, Name: 'MM063' }, | |
{ ID:346, Name: 'MM105' }, | |
{ ID:347, Name: 'MM240' }, | |
{ ID:348, Name: 'MM005' }, | |
{ ID:349, Name: 'MM606' }, | |
{ ID:350, Name: 'MM409' }, | |
{ ID:351, Name: 'MM638' }, | |
{ ID:352, Name: 'MM637' }, | |
{ ID:353, Name: 'MM926' }, | |
{ ID:354, Name: 'MM992' }, | |
{ ID:355, Name: 'MM819' }, | |
{ ID:356, Name: 'MM487' }, | |
{ ID:357, Name: 'MM986' }, | |
{ ID:358, Name: 'MM865' }, | |
{ ID:359, Name: 'MM011D' }, | |
{ ID:360, Name: 'MM776' }, | |
{ ID:361, Name: 'SW153' }, | |
{ ID:362, Name: 'SW586' }, | |
{ ID:363, Name: 'SW464' }, | |
{ ID:364, Name: 'SW006' }, | |
{ ID:365, Name: 'MH01' }, | |
{ ID:366, Name: 'MH03D' }, | |
{ ID:367, Name: 'MH09D' }, | |
{ ID:368, Name: 'MH05D' }, | |
{ ID:369, Name: 'MH11D' }, | |
{ ID:370, Name: '536' }, | |
{ ID:371, Name: 'FL904' }, | |
{ ID:372, Name: 'FL990' }, | |
{ ID:373, Name: 'HE428T' }, | |
{ ID:374, Name: '537' }, | |
{ ID:375, Name: 'HE428R&W' }, | |
{ ID:376, Name: 'CH774' }, | |
{ ID:377, Name: 'CH285' }, | |
{ ID:378, Name: 'ACH741' }, | |
{ ID:379, Name: 'ACH51' }, | |
{ ID:380, Name: 'ACH120' }, | |
{ ID:381, Name: 'ACH737' }, | |
{ ID:382, Name: 'ACH969' }, | |
{ ID:383, Name: 'SP4229' }, | |
{ ID:384, Name: 'SP4710' }, | |
{ ID:385, Name: 'SP4713' }, | |
{ ID:386, Name: 'SP4145' }, | |
{ ID:387, Name: 'SP4490' }, | |
{ ID:388, Name: 'SP4731' }, | |
{ ID:389, Name: 'SP4345' }, | |
{ ID:390, Name: 'SP4581' }, | |
{ ID:391, Name: 'SP4998' }, | |
{ ID:392, Name: 'CO741' }, | |
{ ID:393, Name: 'HT494' }, | |
{ ID:394, Name: 'MH291' }, | |
{ ID:395, Name: 'HE428' }, | |
{ ID:396, Name: 'SP4487' }, | |
{ ID:397, Name: '350' }, | |
{ ID:398, Name: '340' }, | |
{ ID:399, Name: 'JNB906' }, | |
{ ID:400, Name: 'CH603' }, | |
{ ID:401, Name: 'HE3910' }, | |
{ ID:402, Name: 'HE3910T' }, | |
{ ID:403, Name: 'HE151' }, | |
{ ID:404, Name: 'HE151T' }, | |
{ ID:405, Name: 'HE 151R&W' }, | |
{ ID:406, Name: 'MH13D' }, | |
{ ID:407, Name: '538' }, | |
{ ID:408, Name: '584' }, | |
{ ID:409, Name: '585' }, | |
{ ID:410, Name: '586' }, | |
{ ID:411, Name: '535' }, | |
{ ID:412, Name: '539' }, | |
{ ID:413, Name: 'JB586' }, | |
{ ID:414, Name: 'HT477' }, | |
{ ID:415, Name: 'FL937' }, | |
{ ID:416, Name: 'KL452 R' }, | |
{ ID:417, Name: 'OSS73' }, | |
{ ID:418, Name: 'OSS55' }, | |
{ ID:419, Name: '397PL' }, | |
{ ID:420, Name: '111PL' }, | |
{ ID:421, Name: '958PL' }, | |
{ ID:422, Name: '249ZS' }, | |
{ ID:423, Name: '218ZS' }, | |
{ ID:424, Name: 'FL909' }, | |
{ ID:425, Name: 'FL403' }, | |
{ ID:426, Name: 'FL607' }, | |
{ ID:427, Name: 'FL209' }, | |
{ ID:428, Name: 'FL999' }, | |
{ ID:429, Name: 'CS707D' }, | |
{ ID:430, Name: 'KL416' }, | |
{ ID:431, Name: 'KL416D' }, | |
{ ID:432, Name: 'KL875D' }, | |
{ ID:433, Name: 'MH17D' }, | |
{ ID:434, Name: 'FL940' }, | |
{ ID:435, Name: 'MH19D' }, | |
{ ID:436, Name: 'MD965' }, | |
{ ID:437, Name: 'FL901' }, | |
{ ID:438, Name: 'FL950' }, | |
{ ID:439, Name: 'KL875' }, | |
{ ID:440, Name: 'FL109' }, | |
{ ID:441, Name: '910ZS' }, | |
{ ID:442, Name: 'JB586 R&W' }, | |
{ ID:443, Name: 'EC200' }, | |
{ ID:444, Name: 'BR695' }, | |
{ ID:445, Name: 'CM029' }, | |
{ ID:446, Name: 'CM599' }, | |
{ ID:447, Name: 'BR470' }, | |
{ ID:448, Name: '587' }, | |
{ ID:449, Name: 'BR696' }, | |
{ ID:450, Name: 'SW877_BB' }, | |
{ ID:451, Name: 'BR469' }, | |
{ ID:452, Name: 'MH15D' }, | |
{ ID:453, Name: 'KL863' }, | |
{ ID:454, Name: 'BR471' }, | |
{ ID:455, Name: 'BR460' }, | |
{ ID:456, Name: 'BR468' }, | |
{ ID:457, Name: 'BR699' }, | |
{ ID:458, Name: 'LT475' }, | |
{ ID:459, Name: 'LT887' }, | |
{ ID:460, Name: 'LT617' }, | |
{ ID:461, Name: 'IWS01' }, | |
{ ID:462, Name: 'IWS02' }, | |
{ ID:463, Name: 'IWS03' }, | |
{ ID:464, Name: 'IWS04' }, | |
{ ID:465, Name: 'IWS06' }, | |
{ ID:466, Name: 'AG677' }, | |
{ ID:467, Name: 'AG109' }, | |
{ ID:468, Name: 'AG856' }, | |
{ ID:469, Name: 'AG956' }, | |
{ ID:470, Name: 'AG702' }, | |
{ ID:471, Name: 'AG168' }, | |
{ ID:472, Name: 'AG668' }, | |
{ ID:473, Name: 'TC309' }, | |
{ ID:474, Name: 'QT421' }, | |
{ ID:475, Name: 'QT705' }, | |
{ ID:476, Name: 'KL588D' }, | |
{ ID:477, Name: 'KL558' }, | |
{ ID:478, Name: '106_BB' }, | |
{ ID:479, Name: 'AF072D_S' }, | |
{ ID:480, Name: 'AF075_S' }, | |
{ ID:481, Name: '100D_S' }, | |
{ ID:482, Name: '103_BB' }, | |
{ ID:483, Name: '104D_S' }, | |
{ ID:484, Name: '106D_S' }, | |
{ ID:485, Name: '108_BB' }, | |
{ ID:486, Name: '109D_S' }, | |
{ ID:487, Name: '110D_S' }, | |
{ ID:488, Name: 'JK079_S' }, | |
{ ID:489, Name: 'JK426_S' }, | |
{ ID:490, Name: 'KL023_BB' }, | |
{ ID:491, Name: 'KL064D_S' }, | |
{ ID:492, Name: 'KL577D_S' }, | |
{ ID:493, Name: 'KL843D_S' }, | |
{ ID:494, Name: 'AJ260_S' }, | |
{ ID:495, Name: 'AJ260D_S' }, | |
{ ID:496, Name: 'JB586T_S' }, | |
{ ID:497, Name: 'HT288_S' }, | |
{ ID:498, Name: 'HT477_S' }, | |
{ ID:499, Name: 'HT831_S' }, | |
{ ID:500, Name: 'MH09_S' }, | |
{ ID:501, Name: 'HE151_S' }, | |
{ ID:502, Name: 'HE428T_S' }, | |
{ ID:503, Name: 'SW877_S' }, | |
{ ID:504, Name: 'QT886' }, | |
{ ID:505, Name: 'QT810' }, | |
{ ID:506, Name: '532' }, | |
{ ID:507, Name: 'DN333D' }, | |
{ ID:508, Name: 'SEBY33' }, | |
{ ID:509, Name: 'SEBY33D' }, | |
{ ID:510, Name: 'SEBY38' }, | |
{ ID:511, Name: 'SEBY38D' }, | |
{ ID:512, Name: 'SECB88' }, | |
{ ID:513, Name: 'SECB88D' }, | |
{ ID:514, Name: 'SEBY33_S' }, | |
{ ID:515, Name: 'SEBY38_S' }, | |
{ ID:516, Name: 'SECB88_S' }, | |
{ ID:517, Name: '533' }, | |
{ ID:518, Name: 'GN000' }, | |
{ ID:519, Name: 'NL000' }, | |
{ ID:520, Name: 'DN333' }, | |
{ ID:521, Name: 'BG000' }, | |
{ ID:522, Name: 'MG000' }, | |
{ ID:523, Name: 'TG280_BB' }, | |
{ ID:524, Name: 'TG280_S' }, | |
{ ID:525, Name: '534' }, | |
{ ID:526, Name: 'TG280D_S' }, | |
{ ID:527, Name: 'GN000B' }, | |
{ ID:528, Name: 'KRAUSE_S' }, | |
{ ID:529, Name: '724NW' }, | |
{ ID:530, Name: '540' }, | |
{ ID:531, Name: 'W000_S' }, | |
{ ID:532, Name: 'W000' }, | |
{ ID:533, Name: '589' }, | |
{ ID:534, Name: '590' }, | |
{ ID:535, Name: '457' }, | |
{ ID:536, Name: 'W466D_S' }, | |
{ ID:537, Name: 'W466D' }, | |
{ ID:538, Name: 'W388D_S' }, | |
{ ID:539, Name: 'W388D' }, | |
{ ID:540, Name: 'W237D_S' }, | |
{ ID:541, Name: 'W237D' }, | |
{ ID:542, Name: 'W414D_S' }, | |
{ ID:543, Name: 'W414D' }, | |
{ ID:544, Name: 'W216D_S' }, | |
{ ID:545, Name: 'W216D' }, | |
{ ID:546, Name: 'W034D_S' }, | |
{ ID:547, Name: 'W034D' }, | |
{ ID:548, Name: 'W391_S' }, | |
{ ID:549, Name: 'W391_BB' }, | |
{ ID:550, Name: 'W775D_S' }, | |
{ ID:551, Name: 'W775_BB' }, | |
{ ID:552, Name: 'W512D_S' }, | |
{ ID:553, Name: 'W512D' }, | |
{ ID:554, Name: 'W288D_S' }, | |
{ ID:555, Name: 'W288D' }, | |
{ ID:556, Name: 'W288_S' }, | |
{ ID:557, Name: 'W288_BB' }, | |
{ ID:558, Name: 'W688D_S' }, | |
{ ID:559, Name: 'W688_S' }, | |
{ ID:560, Name: 'W688_BB' }, | |
{ ID:561, Name: 'W688D' }, | |
{ ID:562, Name: 'W689D' }, | |
{ ID:563, Name: 'W689D_S' }, | |
{ ID:564, Name: 'W109D_S' }, | |
{ ID:565, Name: 'W109D' }, | |
{ ID:566, Name: 'W162_BB' }, | |
{ ID:567, Name: 'W162_S' }, | |
{ ID:568, Name: 'W775_S' }, | |
{ ID:569, Name: 'W775D' }, | |
{ ID:570, Name: 'W595D' }, | |
{ ID:571, Name: 'W595D_S' }, | |
{ ID:572, Name: 'W508_S' }, | |
{ ID:573, Name: 'W508_BB' }, | |
{ ID:574, Name: 'W373_S' }, | |
{ ID:575, Name: 'W373_BB' }, | |
{ ID:576, Name: 'W414_BB' }, | |
{ ID:577, Name: 'W414_S' }, | |
{ ID:578, Name: 'W903_S' }, | |
{ ID:579, Name: 'W903_BB' }, | |
{ ID:580, Name: 'W604_S' }, | |
{ ID:581, Name: 'W604_BB' }, | |
{ ID:582, Name: 'W039_S' }, | |
{ ID:583, Name: 'W039_BB' }, | |
{ ID:584, Name: 'W474_S' }, | |
{ ID:585, Name: 'W474_BB' }, | |
{ ID:586, Name: 'WJBH_S' }, | |
{ ID:587, Name: 'WJBH_BB' }, | |
{ ID:588, Name: 'W805_S' }, | |
{ ID:589, Name: 'W805_BB' }, | |
{ ID:590, Name: 'W213_S' }, | |
{ ID:591, Name: 'W283_S' }, | |
{ ID:592, Name: 'W283_BB' }, | |
{ ID:593, Name: 'W582_S' }, | |
{ ID:594, Name: 'W582_BB' }, | |
{ ID:595, Name: 'W449_S' }, | |
{ ID:596, Name: 'W449_BB' }, | |
{ ID:597, Name: '591' }, | |
{ ID:598, Name: 'W819_S' }, | |
{ ID:599, Name: 'W819_BB' }, | |
{ ID:600, Name: 'W118_S' }, | |
{ ID:601, Name: 'W118_BB' }, | |
{ ID:602, Name: 'TC309D_S' }, | |
{ ID:603, Name: 'KL162_BB' }, | |
{ ID:604, Name: '456' }, | |
{ ID:605, Name: 'RE000' }, | |
{ ID:606, Name: 'RE000D' }, | |
{ ID:607, Name: 'KL588' }, | |
{ ID:608, Name: 'KL558D' }, | |
{ ID:609, Name: 'WBH000' }, | |
{ ID:610, Name: 'TC696' }, | |
{ ID:611, Name: 'SQ970D' }, | |
{ ID:612, Name: 'SQ970' }, | |
{ ID:613, Name: 'TT478_BB' }, | |
{ ID:614, Name: 'TT478D' }, | |
{ ID:615, Name: '592' }, | |
{ ID:616, Name: '593' }, | |
{ ID:617, Name: '576' }, | |
{ ID:618, Name: 'TE449' }, | |
{ ID:619, Name: 'TE273' }, | |
{ ID:620, Name: 'TE743' }, | |
{ ID:621, Name: 'TE744' }, | |
{ ID:622, Name: 'TE450' }, | |
{ ID:623, Name: 'LS599' }, | |
{ ID:624, Name: 'LS447' }, | |
{ ID:625, Name: 'LS394' }, | |
{ ID:626, Name: 'LS632' }, | |
{ ID:627, Name: 'LS075' }, | |
{ ID:628, Name: 'LS563' }, | |
{ ID:629, Name: 'LS162' }, | |
{ ID:630, Name: 'BS132_BB' }, | |
{ ID:631, Name: 'BS789' }, | |
{ ID:632, Name: 'TC496' }, | |
{ ID:633, Name: 'RT591' }, | |
{ ID:634, Name: 'RT591D' }, | |
{ ID:635, Name: 'RT015' }, | |
{ ID:636, Name: 'RT015D' }, | |
{ ID:637, Name: 'RT847' }, | |
{ ID:638, Name: 'RT847D' }, | |
{ ID:639, Name: 'W512_BB' }, | |
{ ID:640, Name: '111D' }, | |
{ ID:641, Name: 'RT132_BB' }, | |
{ ID:642, Name: 'RT132D' }, | |
{ ID:643, Name: 'BJ767' }, | |
{ ID:644, Name: 'BJ767T' }, | |
{ ID:645, Name: 'MG001' }, | |
{ ID:646, Name: 'KL413' }, | |
{ ID:647, Name: 'KL413D' }, | |
{ ID:648, Name: 'LS912_BB' }, | |
{ ID:649, Name: 'LS766_BB' }, | |
{ ID:650, Name: '471' }, | |
{ ID:651, Name: 'TB000' }, | |
{ ID:652, Name: 'TB001' }, | |
{ ID:653, Name: 'TB275' }, | |
{ ID:654, Name: 'VT029' }, | |
{ ID:655, Name: 'VT700' }, | |
{ ID:656, Name: '478' }, | |
{ ID:657, Name: '453' }, | |
{ ID:658, Name: '454' }, | |
{ ID:659, Name: '455' }, | |
{ ID:660, Name: 'KL982_BB' }, | |
{ ID:661, Name: 'HE428_BB' }, | |
{ ID:662, Name: 'KL213_BB' }, | |
{ ID:663, Name: 'KL583_BB' }, | |
{ ID:664, Name: 'KL708_BB' }, | |
{ ID:665, Name: 'KL819_BB' }, | |
{ ID:666, Name: 'KL829_BB' }, | |
{ ID:667, Name: 'KL830_BB' }, | |
{ ID:668, Name: 'KL843_BB' }, | |
{ ID:669, Name: 'KL903_BB' }, | |
{ ID:670, Name: 'EB000' }, | |
{ ID:671, Name: '594' }, | |
{ ID:672, Name: 'KL985_BB' }, | |
{ ID:673, Name: '535A' }, | |
{ ID:674, Name: 'KL855D' }, | |
{ ID:675, Name: 'KL875_BB' }, | |
{ ID:676, Name: 'KL855_BB' }, | |
{ ID:677, Name: 'FL919' }, | |
{ ID:678, Name: 'KL736D' }, | |
{ ID:679, Name: 'KL736_BB' }, | |
{ ID:680, Name: 'KL736' }, | |
{ ID:681, Name: '100_BB' }, | |
{ ID:682, Name: '100' }, | |
{ ID:683, Name: 'JH031' }, | |
{ ID:684, Name: 'TH000' }, | |
{ ID:685, Name: 'DE000' }, | |
{ ID:686, Name: 'DS768' }, | |
{ ID:687, Name: 'DS481' }, | |
{ ID:688, Name: 'DS738' }, | |
{ ID:689, Name: 'DS725' }, | |
{ ID:690, Name: 'DS621' }, | |
{ ID:691, Name: 'DS905' }, | |
{ ID:692, Name: 'DS326' }, | |
{ ID:693, Name: 'DS616' }, | |
{ ID:694, Name: 'JK940_BB' }, | |
{ ID:695, Name: 'JK868_BB' }, | |
{ ID:696, Name: 'JK802_BB' }, | |
{ ID:697, Name: 'VT029_BB' }, | |
{ ID:698, Name: 'VT700_BB' }, | |
{ ID:699, Name: 'D738_BB' }, | |
{ ID:700, Name: 'HT706' }, | |
{ ID:701, Name: 'AG922' }, | |
{ ID:702, Name: 'WA151T' }, | |
{ ID:703, Name: 'WA151' }, | |
{ ID:704, Name: 'RG384D' }, | |
{ ID:705, Name: 'RG384_BB' }, | |
{ ID:706, Name: 'JK443_BB' }, | |
{ ID:707, Name: 'JK372_BB' }, | |
{ ID:708, Name: '615ZS' }, | |
{ ID:709, Name: '489ZS' }, | |
{ ID:710, Name: 'TC891' }, | |
{ ID:711, Name: 'MH11' }, | |
{ ID:712, Name: '500' }, | |
{ ID:713, Name: 'JK636_BB' }, | |
{ ID:714, Name: 'KL470' }, | |
{ ID:715, Name: 'KL470D' }, | |
{ ID:716, Name: '111_BB' }, | |
{ ID:717, Name: 'KL452_BB' }, | |
{ ID:718, Name: 'KL416_BB' }, | |
{ ID:719, Name: 'KRAUSE' }, | |
{ ID:720, Name: 'KL064_BB' }, | |
{ ID:721, Name: 'MH13' }, | |
{ ID:722, Name: 'HT040' }, | |
{ ID:723, Name: 'MH09' }, | |
{ ID:724, Name: 'MH19' }, | |
{ ID:725, Name: '112' }, | |
{ ID:726, Name: '113' }, | |
{ ID:727, Name: 'KL855' }, | |
{ ID:728, Name: 'CH550' }, | |
{ ID:729, Name: 'KL470_BB' }, | |
{ ID:730, Name: 'KL506_BB' }, | |
{ ID:731, Name: 'DH948D' }, | |
{ ID:732, Name: 'DH870D' }, | |
{ ID:733, Name: 'ST120D' }, | |
{ ID:734, Name: 'BG385D' }, | |
{ ID:735, Name: 'BG752D' }, | |
{ ID:736, Name: '595' }, | |
{ ID:737, Name: 'MT882_BB' }, | |
{ ID:738, Name: 'C733D' }, | |
{ ID:739, Name: 'C068D' }, | |
{ ID:740, Name: 'C390D' }, | |
{ ID:741, Name: 'C895D' }, | |
{ ID:742, Name: '575' }, | |
{ ID:743, Name: 'AJ404' } | |
] | |
} | |
}) | |
vm.$refs.myMultiselect.select({ ID: -1, Name: "Ahahaha" }); | |
</script> | |
</body> | |
</html> |
Hi ! Thank you so much for this example but I'm trying to use it with my database ( with axios), I have different applications related to different countries but sometimes 2 apps have the same country. And I would like, when I search for 1 country to show theme both. Do you know how can I do that?
If you can help me thank you so much !
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
On line 225 I would changed
for
or it doesn't work on Firefox (52)
https://developer.mozilla.org/fr/docs/Web/API/Event/srcElement
https://developer.mozilla.org/fr/docs/Web/API/Event/target