diff --git a/bower.json b/bower.json index b851093..fe73fe9 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-virtual-keyboard", - "version": "0.4.3", + "version": "0.4.4", "homepage": "https://github.com/the-darc/angular-virtual-keyboard", "author": "the-darc ", "description": "An AngularJs Virtual Keyboard Interface based on GreyWyvern VKI", diff --git a/package.json b/package.json index e23725f..5cb12e8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-virtual-keyboard", - "version": "0.4.3", + "version": "0.4.4", "description": "An AngularJs Virtual Keyboard Interface based on GreyWyvern VKI", "main": "index.js", "scripts": { diff --git a/release/angular-virtual-keyboard.js b/release/angular-virtual-keyboard.js index febefb7..93642f9 100644 --- a/release/angular-virtual-keyboard.js +++ b/release/angular-virtual-keyboard.js @@ -324,7 +324,7 @@ var VKI = function(customConfig, layout, deadKeys, keyInputCallback) { ol.style.display = "block"; var li = ol.getElementsByTagName('li'); for (var x = 0, scr = 0; x < li.length; x++) { - if (VKI_kt == li[x].firstChild.nodeValue) { + if (self.VKI_kt == li[x].firstChild.nodeValue) { li[x].className = "selected"; scr = li[x].offsetTop - li[x].offsetHeight * 2; } else li[x].className = ""; diff --git a/release/angular-virtual-keyboard.min.js b/release/angular-virtual-keyboard.min.js index 865cc3e..9e01b9a 100644 --- a/release/angular-virtual-keyboard.min.js +++ b/release/angular-virtual-keyboard.min.js @@ -1 +1 @@ -!function(e){var t=function(t,i,s,a){function n(e){var t=!1;try{t=!isNaN(e.selectionStart)&&!isNaN(e.selectionEnd)}catch(i){}return t}function r(e){"TD"==e.nodeName&&(e.click||(e.click=function(){var e=this.ownerDocument.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,this.ownerDocument.defaultView,1,0,0,0,0,!1,!1,!1,!1,0,null),this.dispatchEvent(e)}),e.VKI_clickless=0,l(e,"dblclick",function(){return!1},!1)),l(e,"mouseover",function(){if("TD"==this.nodeName&&V.VKI_clickless){var e=this;clearTimeout(this.VKI_clickless),this.VKI_clickless=setTimeout(function(){e.click()},V.VKI_clickless)}V.VKI_isIE&&(this.className+=" hover")},!1),l(e,"mouseout",function(){"TD"==this.nodeName&&clearTimeout(this.VKI_clickless),V.VKI_isIE&&(this.className=this.className.replace(/ ?(hover|pressed) ?/g,""))},!1),l(e,"mousedown",function(){"TD"==this.nodeName&&clearTimeout(this.VKI_clickless),V.VKI_isIE&&(this.className+=" pressed")},!1),l(e,"mouseup",function(){"TD"==this.nodeName&&clearTimeout(this.VKI_clickless),V.VKI_isIE&&(this.className=this.className.replace(/ ?pressed ?/g,""))},!1)}function o(){var e=!1,t=" ";if("small"!=this.firstChild.nodeName.toLowerCase()){if(" "==(t=this.firstChild.nodeValue))return!1}else t=this.firstChild.getAttribute("char");return V.VKI_deadkeysOn.checked&&V.VKI_dead&&(V.VKI_dead!=t?" "!=t?V.VKI_deadkey[V.VKI_dead][t]&&(V.VKI_insert(V.VKI_deadkey[V.VKI_dead][t]),e=!0):(V.VKI_insert(V.VKI_dead),e=!0):e=!0),V.VKI_dead=!1,e||(V.VKI_deadkeysOn.checked&&V.VKI_deadkey[t]?(V.VKI_dead=t,this.className+=" dead",V.VKI_shift&&V.VKI_modify("Shift"),V.VKI_altgr&&V.VKI_modify("AltGr")):V.VKI_insert(t)),V.VKI_modify(""),!1}function l(e,t,i,s){e.addEventListener?e.addEventListener(t,function(t){i.call(e,t)},s):e.attachEvent&&e.attachEvent("on"+t,function(){i.call(e)})}function d(e){for(var t=curtop=0,i=e;(i=i.parentNode)&&i!=document.body;)t-=i.scrollLeft||0,curtop-=i.scrollTop||0;do t+=e.offsetLeft,curtop+=e.offsetTop;while(e=e.offsetParent);return[t,curtop]}function c(){return V.innerHeight?[V.innerWidth,V.innerHeight]:document.documentElement&&document.documentElement.clientHeight?[document.documentElement.clientWidth,document.documentElement.clientHeight]:document.body?[document.body.clientWidth,document.body.clientHeight]:[0,0]}function h(){var e=document.getElementsByTagName("html")[0];return e.scrollTop&&document.documentElement.scrollTop?[e.scrollLeft,e.scrollTop]:e.scrollTop||document.documentElement.scrollTop?[e.scrollLeft+document.documentElement.scrollLeft,e.scrollTop+document.documentElement.scrollTop]:document.body.scrollTop?[document.body.scrollLeft,document.body.scrollTop]:[0,0]}function I(e,t){if(e.currentStyle)var i=e.currentStyle[t];else if(window.getComputedStyle)var i=window.getComputedStyle(e,null)[t];return i}var V=this,K=t||{};if(V.keyInputCallback=a||function(){},this.VKI_version="1.49",this.VKI_showVersion=void 0!==K.showVersion?K.showVersion:!1,this.VKI_target=!1,this.VKI_shift=this.VKI_shiftlock=!1,this.VKI_altgr=this.VKI_altgrlock=!1,this.VKI_dead=!1,this.VKI_deadBox=!0,this.VKI_deadkeysOn=void 0!==K.deadkeysOn?K.deadkeysOn:!0,this.VKI_numberPad=void 0!==K.numberPad?K.numberPad:!1,this.VKI_numberPadOn=!1,this.VKI_kts=this.VKI_kt=K.kt||"US International",this.VKI_langAdapt=!K.kt,this.VKI_size=K.size>=1&&K.size<=5?K.size:3,this.VKI_sizeAdj=K.sizeAdj===!1?!1:!0,this.VKI_clearPasswords=!1,this.VKI_imageURI=void 0!==K.imageURI?K.imageURI:"",this.VKI_clickless=0,this.VKI_activeTab=0,this.VKI_keyCenter=K.keyCenter||3,this.VKI_forcePosition=K.forcePosition||!1,this.VKI_relative=K.relative===!1?!1:!0,this.VKI_customClass=K.customClass||!1,this.VKI_isIE=!1,this.VKI_isIE6=!1,this.VKI_isIElt8=!1,this.VKI_isWebKit=RegExp("KHTML").test(navigator.userAgent),this.VKI_isOpera=RegExp("Opera").test(navigator.userAgent),this.VKI_isMoz=!this.VKI_isWebKit&&"Gecko"==navigator.product,this.VKI_enterSubmit=K.enterSubmit||!1,this.VKI_showKbSelect=K.showKbSelect||!1,this.VKI_i18n=K.i18n,this.VKI_layout=i,this.VKI_deadkey=s,this.VKI_symbol={" ":"NB\nSP","​":"ZW\nSP","‌":"ZW\nNJ","‍":"ZW\nJ"},this.VKI_numpad=[[["$"],["£"],["€"],["¥"]],[["7"],["8"],["9"],["/"]],[["4"],["5"],["6"],["*"]],[["1"],["2"],["3"],["-"]],[["0"],["."],["="],["+"]]],V.attachVki=function(t){if(t.getAttribute("VKI_attached"))return!1;if(V.VKI_imageURI){var i=document.createElement("img");i.src=V.VKI_imageURI,i.alt=V.VKI_i18n["01"],i.className="keyboardInputInitiator",i.title=V.VKI_i18n["01"],i.elem=t,i.onclick=function(e){e=e||event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,V.VKI_show(this.elem)},t.parentNode.insertBefore(i,"rtl"==t.dir?t:t.nextSibling)}else t.onfocus=function(){V.VKI_target!=this&&(V.VKI_target&&V.VKI_close(!1),V.VKI_show(this))},t.onclick=function(){V.VKI_target||V.VKI_show(this)};t.setAttribute("VKI_attached","true"),V.VKI_isIE&&(t.onclick=t.onselect=t.onkeyup=function(e){"keyup"==(e||event).type&&this.readOnly||(this.range=document.selection.createRange())}),l(t,"click",function(e){return V.VKI_target==this&&(e=e||event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0),!1},!1),V.VKI_isMoz&&t.addEventListener("blur",function(){this.setAttribute("_scrollTop",this.scrollTop)},!1),l(document.documentElement,"click",function(){V.VKI_close(!1)},!1),e.element(t).bind("VKI_close",function(){V.VKI_close(!1)})},this.VKI_keyboard=document.createElement("table"),this.VKI_keyboard.className="keyboardInputMaster",this.VKI_relative&&(V.VKI_keyboard.className+=" relativeKeyboard"),this.VKI_customClass&&(V.VKI_keyboard.className+=" "+this.VKI_customClass),this.VKI_keyboard.dir="ltr",this.VKI_keyboard.cellSpacing="0",this.VKI_keyboard.reflow=function(){this.style.width="50px";this.offsetWidth;this.style.width=""},l(this.VKI_keyboard,"click",function(e){return e=e||event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,!1},!1),!this.VKI_layout[this.VKI_kt])return alert('No keyboard named "'+this.VKI_kt+'"');this.VKI_langCode={};var _=document.createElement("thead"),u=document.createElement("tr"),m=document.createElement("th");if(m.colSpan="2",V.VKI_showKbSelect){var f=document.createElement("div");f.title=this.VKI_i18n["02"],l(f,"click",function(){var e=this.getElementsByTagName("ol")[0];if(e.style.display)e.style.display="";else{e.style.display="block";for(var t=e.getElementsByTagName("li"),i=0,s=0;i1&&m.appendChild(f),this.VKI_langCode.index=[];for(prop in this.VKI_langCode)"index"!=prop&&"string"==typeof this.VKI_langCode[prop]&&this.VKI_langCode.index.push(prop);this.VKI_langCode.index.sort(),this.VKI_langCode.index.reverse()}if(this.VKI_numberPad){var k=document.createElement("span");k.appendChild(document.createTextNode("#")),k.title=this.VKI_i18n["00"],l(k,"click",function(){z.style.display=z.style.display?"":"none",V.VKI_position(!0),V.VKI_target.focus()},!1),r(k),m.appendChild(k)}if(this.VKI_kbsize=function(){V.VKI_size=Math.min(5,Math.max(1,V.VKI_size)),V.VKI_keyboard.className=V.VKI_keyboard.className.replace(/ ?keyboardInputSize\d ?/,""),2!=V.VKI_size&&(V.VKI_keyboard.className+=" keyboardInputSize"+V.VKI_size),V.VKI_position(!0),V.VKI_isOpera&&V.VKI_keyboard.reflow()},this.VKI_sizeAdj){var b=document.createElement("small");b.title=this.VKI_i18n[10],l(b,"click",function(){--V.VKI_size,V.VKI_kbsize(),V.VKI_target.focus()},!1),r(b),b.appendChild(document.createTextNode(this.VKI_isIElt8?"↓":"⇓")),m.appendChild(b);var v=document.createElement("big");v.title=this.VKI_i18n[11],l(v,"click",function(){++V.VKI_size,V.VKI_kbsize(),V.VKI_target.focus()},!1),r(v),v.appendChild(document.createTextNode(this.VKI_isIElt8?"↑":"⇑")),m.appendChild(v)}var k=document.createElement("span");k.appendChild(document.createTextNode(this.VKI_i18n["07"])),k.title=this.VKI_i18n["08"],l(k,"click",function(){return V.VKI_target.value="",V.VKI_target.focus(),V.keyInputCallback(),!1},!1),r(k),m.appendChild(k);var C=document.createElement("strong");C.appendChild(document.createTextNode("X")),C.title=this.VKI_i18n["06"],l(C,"click",function(){V.VKI_close(!0)},!1),r(C),m.appendChild(C),u.appendChild(m),_.appendChild(u),this.VKI_keyboard.appendChild(_);var E=document.createElement("tbody"),u=document.createElement("tr"),N=document.createElement("td");N.className="keyboardsArea";var T=document.createElement("table"),x=document.createElement("tr"),w=document.createElement("td");w.className="keyboardInputTextPad";var A=document.createElement("div");if(this.VKI_deadBox){var S=document.createElement("label"),O=document.createElement("input");O.type="checkbox",O.title=this.VKI_i18n["03"]+": "+(this.VKI_deadkeysOn?this.VKI_i18n["04"]:this.VKI_i18n["05"]),O.defaultChecked=this.VKI_deadkeysOn,l(O,"click",function(){return this.title=V.VKI_i18n["03"]+": "+(this.checked?V.VKI_i18n["04"]:V.VKI_i18n["05"]),V.VKI_modify(""),!0},!1),S.appendChild(O),O.checked=this.VKI_deadkeysOn,A.appendChild(S),this.VKI_deadkeysOn=O}else this.VKI_deadkeysOn.checked=this.VKI_deadkeysOn;if(this.VKI_showVersion){var P=document.createElement("var");P.title=this.VKI_i18n["09"]+" "+this.VKI_version,P.appendChild(document.createTextNode("v"+this.VKI_version)),A.appendChild(P)}w.appendChild(A);var z=document.createElement("td");z.className="keyboardInputNumpad",this.VKI_numberPadOn||(z.style.display="none");var B=document.createElement("table");B.cellSpacing="0";for(var L=document.createElement("tbody"),p=0;p=0;i--)e.removeChild(t[i]);for(var s,i=0,a=!1;s=this.VKI_layout[this.VKI_kt].keys[i++];){var d=document.createElement("table");d.cellSpacing="0",s.length<=this.VKI_keyCenter&&(d.className="keyboardInputCenter");for(var c,h=document.createElement("tbody"),I=document.createElement("tr"),K=0;c=s[K++];){var _=document.createElement("td");if(this.VKI_symbol[c[0]]){var u=this.VKI_symbol[c[0]].split("\n"),m=document.createElement("small");m.setAttribute("char",c[0]);for(var f=0;fthis.VKI_keyCenter&&K==s.length&&g.push("last"),(" "==c[0]||" "==c[1])&&g.push("space"),_.className=g.join(" "),c[1]){case"Caps":case"Shift":case"Alt":case"AltGr":case"AltLk":l(_,"click",function(e){return function(){return V.VKI_modify(e),!1}}(c[1]),!1);break;case"Tab":l(_,"click",function(){if(V.VKI_activeTab)if(V.VKI_target.form){var e=V.VKI_target,t=e.form.elements;V.VKI_close(!1);for(var i=0,s=!1,a=-1;if;f++)this.VKI_deadkey[c[f]=c[f]||""]&&(a=!0)}h.appendChild(I),d.appendChild(h),e.appendChild(d)}this.VKI_deadBox&&(this.VKI_deadkeysOn.style.display=a?"inline":"none"),this.VKI_isIE6&&(this.VKI_iframe.style.width=this.VKI_keyboard.offsetWidth+"px",this.VKI_iframe.style.height=this.VKI_keyboard.offsetHeight+"px")},this.VKI_buildKeys(),l(this.VKI_keyboard,"selectstart",function(){return!1},!1),this.VKI_keyboard.unselectable="on",this.VKI_isOpera&&l(this.VKI_keyboard,"mousedown",function(){return!1},!1),this.VKI_modify=function(e){switch(e){case"Alt":case"AltGr":this.VKI_altgr=!this.VKI_altgr;break;case"AltLk":this.VKI_altgr=0,this.VKI_altgrlock=!this.VKI_altgrlock;break;case"Caps":this.VKI_shift=0,this.VKI_shiftlock=!this.VKI_shiftlock;break;case"Shift":this.VKI_shift=!this.VKI_shift}var t=0;!this.VKI_shift!=!this.VKI_shiftlock&&(t+=1),!this.VKI_altgr!=!this.VKI_altgrlock&&(t+=2);for(var i=this.VKI_keyboard.tBodies[0].getElementsByTagName("div")[0].getElementsByTagName("table"),s=0;sthis.VKI_keyCenter&&r.push("last"),(" "==o[0]||" "==o[1])&&r.push("space"),a[n].className=r.join(" ")}},this.VKI_insert=function(e){if(this.VKI_target.focus(),e&&e.length>1&&e.trim&&(e=e.trim()),this.VKI_target.maxLength&&(this.VKI_target.maxlength=this.VKI_target.maxLength),"undefined"==typeof this.VKI_target.maxlength||this.VKI_target.maxlength<0||this.VKI_target.value.length0&&"bottom"!==V.VKI_forcePosition?(a=!0,n=-V.VKI_keyboard.offsetHeight-3):t[1]-s[1]<0&&(a=!0)),a||e===!0){for(var r=d(V.VKI_target),o=V.VKI_target;(o=o.parentNode)&&o!=document.body;)if(o.scrollHeight>o.offsetHeight||o.scrollWidth>o.offsetWidth){o.getAttribute("VKI_scrollListener")||(o.setAttribute("VKI_scrollListener",!0),l(o,"scroll",function(){V.VKI_position(!0)},!1));var I=d(o),K=r[1]-I[1],_=r[0]-I[0],u=K+V.VKI_target.offsetHeight,m=_+V.VKI_target.offsetWidth,f=o.offsetHeight-K-V.VKI_target.offsetHeight,g=o.offsetWidth-_-V.VKI_target.offsetWidth;V.VKI_keyboard.style.display=0>u||0>m||0>f||0>g?"none":"",V.VKI_isIE6&&(V.VKI_iframe.style.display=0>u||0>m||0>f||0>g?"none":"")}V.VKI_keyboard.style.top=r[1]-("fixed"!=V.VKI_target.keyboardPosition||V.VKI_isIE||V.VKI_isMoz?0:s[1])+n+"px",V.VKI_keyboard.style.left=Math.max(10,Math.min(i[0]-V.VKI_keyboard.offsetWidth-25,r[0]))+"px",V.VKI_isIE6&&(V.VKI_iframe.style.width=V.VKI_keyboard.offsetWidth+"px",V.VKI_iframe.style.height=V.VKI_keyboard.offsetHeight+"px",V.VKI_iframe.style.top=V.VKI_keyboard.style.top,V.VKI_iframe.style.left=V.VKI_keyboard.style.left)}e===!0&&V.VKI_position()}},this.VKI_close=function(e){if(this.VKI_target){try{this.VKI_keyboard.parentNode.removeChild(this.VKI_keyboard),this.VKI_isIE6&&this.VKI_iframe.parentNode.removeChild(this.VKI_iframe)}catch(t){}this.VKI_showKbSelect&&(this.VKI_kt!=this.VKI_kts&&(f.firstChild.nodeValue=this.VKI_kt=this.VKI_kts,this.VKI_buildKeys()),f.getElementsByTagName("ol")[0].style.display=""),e&&this.VKI_target.focus(),this.VKI_isIE?setTimeout(function(){V.VKI_target=!1},0):this.VKI_target=!1}},l(window,"resize",this.VKI_position,!1),l(window,"scroll",this.VKI_position,!1),this.VKI_kbsize(),V};e.module("angular-virtual-keyboard",[]).constant("VKI_CONFIG",{layout:{"US International":{name:"US International",keys:[[["`","~"],["1","!","¡","¹"],["2","@","²"],["3","#","³"],["4","$","¤","£"],["5","%","€"],["6","^","¼"],["7","&","½"],["8","*","¾"],["9","(","‘"],["0",")","’"],["-","_","¥"],["=","+","×","÷"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","ä","Ä"],["w","W","å","Å"],["e","E","é","É"],["r","R","®"],["t","T","þ","Þ"],["y","Y","ü","Ü"],["u","U","ú","Ú"],["i","I","í","Í"],["o","O","ó","Ó"],["p","P","ö","Ö"],["[","{","«"],["]","}","»"],["\\","|","¬","¦"]],[["Caps","Caps"],["a","A","á","Á"],["s","S","ß","§"],["d","D","ð","Ð"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L","ø","Ø"],[";",":","¶","°"],["'",'"',"´","¨"],["Enter","Enter"]],[["Shift","Shift"],["z","Z","æ","Æ"],["x","X"],["c","C","©","¢"],["v","V"],["b","B"],["n","N","ñ","Ñ"],["m","M","µ"],[",","<","ç","Ç"],[".",">"],["/","?","¿"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["en"]}},deadkey:{"~":{a:"ã",l:"ł",n:"ñ",o:"õ",A:"Ã",L:"Ł",N:"Ñ",O:"Õ"},"^":{a:"â",e:"ê",i:"î",o:"ô",u:"û",w:"ŵ",y:"ŷ",A:"Â",E:"Ê",I:"Î",O:"Ô",U:"Û",W:"Ŵ",Y:"Ŷ"},"`":{a:"à",e:"è",i:"ì",o:"ò",u:"ù","ü":"ǜ",A:"À",E:"È",I:"Ì",O:"Ò",U:"Ù","Ü":"Ǜ"},"'":{a:"á",e:"é",i:"í",o:"ó",u:"ú",y:"ý","α":"ά","ε":"έ","η":"ή","ι":"ί","ο":"ό","υ":"ύ","ω":"ώ","ü":"ǘ",A:"Á",E:"É",I:"Í",O:"Ó",U:"Ú",Y:"Ý","Α":"Ά","Ε":"Έ","Η":"Ή","Ι":"Ί","Ο":"Ό","Υ":"Ύ","Ω":"Ώ","Ü":"Ǘ"},"´":{a:"á",e:"é",i:"í",o:"ó",u:"ú",y:"ý","α":"ά","ε":"έ","η":"ή","ι":"ί","ο":"ό","υ":"ύ","ω":"ώ","ü":"ǘ",A:"Á",E:"É",I:"Í",O:"Ó",U:"Ú",Y:"Ý","Α":"Ά","Ε":"Έ","Η":"Ή","Ι":"Ί","Ο":"Ό","Υ":"Ύ","Ω":"Ώ","Ü":"Ǘ"},"¨":{a:"ä",e:"ë",i:"ï",o:"ö",u:"ü",y:"ÿ","ι":"ϊ","υ":"ϋ","ū":"ǖ","ú":"ǘ","ǔ":"ǚ","ù":"ǜ",A:"Ä",E:"Ë",I:"Ï",O:"Ö",U:"Ü",Y:"Ÿ","Ι":"Ϊ","Υ":"Ϋ","Ū":"Ǖ","Ú":"Ǘ","Ǔ":"Ǚ","Ù":"Ǜ","か":"が","き":"ぎ","く":"ぐ","け":"げ","こ":"ご","た":"だ","ち":"ぢ","つ":"づ","て":"で","と":"ど","さ":"ざ","し":"じ","す":"ず","せ":"ぜ","そ":"ぞ","は":"ば","ひ":"び","ふ":"ぶ","へ":"べ","ほ":"ぼ","カ":"ガ","キ":"ギ","ク":"グ","ケ":"ゲ","コ":"ゴ","タ":"ダ","チ":"ヂ","ツ":"ヅ","テ":"デ","ト":"ド","サ":"ザ","シ":"ジ","ス":"ズ","セ":"ゼ","ソ":"ゾ","ハ":"バ","ヒ":"ビ","フ":"ブ","ヘ":"ベ","ホ":"ボ"}},kt:"US International",i18n:{"00":"Display Number Pad","01":"Display virtual keyboard interface","02":"Select keyboard layout","03":"Dead keys","04":"On","05":"Off","06":"Close the keyboard","07":"Clear","08":"Clear this input","09":"Version",10:"Decrease keyboard size",11:"Increase keyboard size"},relative:!0,sizeAdj:!0,customClass:!1}).service("ngVirtualKeyboardService",["VKI_CONFIG",function(e){return{attach:function(i,s,a){s=s||{},s.i18n=s.i18n||e.i18n,s.kt=s.kt||e.kt,s.relative=s.relative===!1?!1:e.relative,s.keyCenter=s.keyCenter||e.keyCenter,s.sizeAdj=s.sizeAdj===!1?!1:e.sizeAdj,s.customClass=s.customClass||e.customClass;var n=new t(s,e.layout,e.deadkey,a);n.attachVki(i)}}}]).directive("ngVirtualKeyboard",["ngVirtualKeyboardService","$timeout","$injector",function(e,t,i){return{restrict:"A",require:"?ngModel",scope:{config:"=ngVirtualKeyboard"},link:function(s,a,n,r){if(r){if(i.has("UAParser")){var o=i.get("UAParser"),l=(new o).getResult(),d="mobile"===l.device.type||"tablet"===l.device.type;if(d=d||l.os&&"Android"===l.os.name,d=d||l.os&&"iOS"===l.os.name,d=d||l.os&&"Windows Phone"===l.os.name,d=d||l.os&&"Windows Mobile"===l.os.name,d&&s.config.showInMobile!==!0)return}e.attach(a[0],s.config,function(){t(function(){r.$setViewValue(a[0].value)})})}}}}])}(angular); \ No newline at end of file +!function(e){var t=function(t,i,s,a){function n(e){var t=!1;try{t=!isNaN(e.selectionStart)&&!isNaN(e.selectionEnd)}catch(i){}return t}function r(e){"TD"==e.nodeName&&(e.click||(e.click=function(){var e=this.ownerDocument.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,this.ownerDocument.defaultView,1,0,0,0,0,!1,!1,!1,!1,0,null),this.dispatchEvent(e)}),e.VKI_clickless=0,l(e,"dblclick",function(){return!1},!1)),l(e,"mouseover",function(){if("TD"==this.nodeName&&V.VKI_clickless){var e=this;clearTimeout(this.VKI_clickless),this.VKI_clickless=setTimeout(function(){e.click()},V.VKI_clickless)}V.VKI_isIE&&(this.className+=" hover")},!1),l(e,"mouseout",function(){"TD"==this.nodeName&&clearTimeout(this.VKI_clickless),V.VKI_isIE&&(this.className=this.className.replace(/ ?(hover|pressed) ?/g,""))},!1),l(e,"mousedown",function(){"TD"==this.nodeName&&clearTimeout(this.VKI_clickless),V.VKI_isIE&&(this.className+=" pressed")},!1),l(e,"mouseup",function(){"TD"==this.nodeName&&clearTimeout(this.VKI_clickless),V.VKI_isIE&&(this.className=this.className.replace(/ ?pressed ?/g,""))},!1)}function o(){var e=!1,t=" ";if("small"!=this.firstChild.nodeName.toLowerCase()){if(" "==(t=this.firstChild.nodeValue))return!1}else t=this.firstChild.getAttribute("char");return V.VKI_deadkeysOn.checked&&V.VKI_dead&&(V.VKI_dead!=t?" "!=t?V.VKI_deadkey[V.VKI_dead][t]&&(V.VKI_insert(V.VKI_deadkey[V.VKI_dead][t]),e=!0):(V.VKI_insert(V.VKI_dead),e=!0):e=!0),V.VKI_dead=!1,e||(V.VKI_deadkeysOn.checked&&V.VKI_deadkey[t]?(V.VKI_dead=t,this.className+=" dead",V.VKI_shift&&V.VKI_modify("Shift"),V.VKI_altgr&&V.VKI_modify("AltGr")):V.VKI_insert(t)),V.VKI_modify(""),!1}function l(e,t,i,s){e.addEventListener?e.addEventListener(t,function(t){i.call(e,t)},s):e.attachEvent&&e.attachEvent("on"+t,function(){i.call(e)})}function d(e){for(var t=curtop=0,i=e;(i=i.parentNode)&&i!=document.body;)t-=i.scrollLeft||0,curtop-=i.scrollTop||0;do t+=e.offsetLeft,curtop+=e.offsetTop;while(e=e.offsetParent);return[t,curtop]}function c(){return V.innerHeight?[V.innerWidth,V.innerHeight]:document.documentElement&&document.documentElement.clientHeight?[document.documentElement.clientWidth,document.documentElement.clientHeight]:document.body?[document.body.clientWidth,document.body.clientHeight]:[0,0]}function h(){var e=document.getElementsByTagName("html")[0];return e.scrollTop&&document.documentElement.scrollTop?[e.scrollLeft,e.scrollTop]:e.scrollTop||document.documentElement.scrollTop?[e.scrollLeft+document.documentElement.scrollLeft,e.scrollTop+document.documentElement.scrollTop]:document.body.scrollTop?[document.body.scrollLeft,document.body.scrollTop]:[0,0]}function I(e,t){if(e.currentStyle)var i=e.currentStyle[t];else if(window.getComputedStyle)var i=window.getComputedStyle(e,null)[t];return i}var V=this,K=t||{};if(V.keyInputCallback=a||function(){},this.VKI_version="1.49",this.VKI_showVersion=void 0!==K.showVersion&&K.showVersion,this.VKI_target=!1,this.VKI_shift=this.VKI_shiftlock=!1,this.VKI_altgr=this.VKI_altgrlock=!1,this.VKI_dead=!1,this.VKI_deadBox=!0,this.VKI_deadkeysOn=void 0===K.deadkeysOn||K.deadkeysOn,this.VKI_numberPad=void 0!==K.numberPad&&K.numberPad,this.VKI_numberPadOn=!1,this.VKI_kts=this.VKI_kt=K.kt||"US International",this.VKI_langAdapt=!K.kt,this.VKI_size=K.size>=1&&K.size<=5?K.size:3,this.VKI_sizeAdj=K.sizeAdj!==!1,this.VKI_clearPasswords=!1,this.VKI_imageURI=void 0!==K.imageURI?K.imageURI:"",this.VKI_clickless=0,this.VKI_activeTab=0,this.VKI_keyCenter=K.keyCenter||3,this.VKI_forcePosition=K.forcePosition||!1,this.VKI_relative=K.relative!==!1,this.VKI_customClass=K.customClass||!1,this.VKI_isIE=!1,this.VKI_isIE6=!1,this.VKI_isIElt8=!1,this.VKI_isWebKit=RegExp("KHTML").test(navigator.userAgent),this.VKI_isOpera=RegExp("Opera").test(navigator.userAgent),this.VKI_isMoz=!this.VKI_isWebKit&&"Gecko"==navigator.product,this.VKI_enterSubmit=K.enterSubmit||!1,this.VKI_showKbSelect=K.showKbSelect||!1,this.VKI_i18n=K.i18n,this.VKI_layout=i,this.VKI_deadkey=s,this.VKI_symbol={" ":"NB\nSP","​":"ZW\nSP","‌":"ZW\nNJ","‍":"ZW\nJ"},this.VKI_numpad=[[["$"],["£"],["€"],["¥"]],[["7"],["8"],["9"],["/"]],[["4"],["5"],["6"],["*"]],[["1"],["2"],["3"],["-"]],[["0"],["."],["="],["+"]]],V.attachVki=function(t){if(t.getAttribute("VKI_attached"))return!1;if(V.VKI_imageURI){var i=document.createElement("img");i.src=V.VKI_imageURI,i.alt=V.VKI_i18n["01"],i.className="keyboardInputInitiator",i.title=V.VKI_i18n["01"],i.elem=t,i.onclick=function(e){e=e||event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,V.VKI_show(this.elem)},t.parentNode.insertBefore(i,"rtl"==t.dir?t:t.nextSibling)}else t.onfocus=function(){V.VKI_target!=this&&(V.VKI_target&&V.VKI_close(!1),V.VKI_show(this))},t.onclick=function(){V.VKI_target||V.VKI_show(this)};t.setAttribute("VKI_attached","true"),V.VKI_isIE&&(t.onclick=t.onselect=t.onkeyup=function(e){"keyup"==(e||event).type&&this.readOnly||(this.range=document.selection.createRange())}),l(t,"click",function(e){return V.VKI_target==this&&(e=e||event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0),!1},!1),V.VKI_isMoz&&t.addEventListener("blur",function(){this.setAttribute("_scrollTop",this.scrollTop)},!1),l(document.documentElement,"click",function(e){V.VKI_close(!1)},!1),e.element(t).bind("VKI_close",function(){V.VKI_close(!1)})},this.VKI_keyboard=document.createElement("table"),this.VKI_keyboard.className="keyboardInputMaster",this.VKI_relative&&(V.VKI_keyboard.className+=" relativeKeyboard"),this.VKI_customClass&&(V.VKI_keyboard.className+=" "+this.VKI_customClass),this.VKI_keyboard.dir="ltr",this.VKI_keyboard.cellSpacing="0",this.VKI_keyboard.reflow=function(){this.style.width="50px";this.offsetWidth;this.style.width=""},l(this.VKI_keyboard,"click",function(e){return e=e||event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0,!1},!1),!this.VKI_layout[this.VKI_kt])return alert('No keyboard named "'+this.VKI_kt+'"');this.VKI_langCode={};var _=document.createElement("thead"),u=document.createElement("tr"),m=document.createElement("th");if(m.colSpan="2",V.VKI_showKbSelect){var f=document.createElement("div");f.title=this.VKI_i18n["02"],l(f,"click",function(){var e=this.getElementsByTagName("ol")[0];if(e.style.display)e.style.display="";else{e.style.display="block";for(var t=e.getElementsByTagName("li"),i=0,s=0;i1&&m.appendChild(f),this.VKI_langCode.index=[];for(prop in this.VKI_langCode)"index"!=prop&&"string"==typeof this.VKI_langCode[prop]&&this.VKI_langCode.index.push(prop);this.VKI_langCode.index.sort(),this.VKI_langCode.index.reverse()}if(this.VKI_numberPad){var k=document.createElement("span");k.appendChild(document.createTextNode("#")),k.title=this.VKI_i18n["00"],l(k,"click",function(){z.style.display=z.style.display?"":"none",V.VKI_position(!0),V.VKI_target.focus()},!1),r(k),m.appendChild(k)}if(this.VKI_kbsize=function(e){V.VKI_size=Math.min(5,Math.max(1,V.VKI_size)),V.VKI_keyboard.className=V.VKI_keyboard.className.replace(/ ?keyboardInputSize\d ?/,""),2!=V.VKI_size&&(V.VKI_keyboard.className+=" keyboardInputSize"+V.VKI_size),V.VKI_position(!0),V.VKI_isOpera&&V.VKI_keyboard.reflow()},this.VKI_sizeAdj){var b=document.createElement("small");b.title=this.VKI_i18n[10],l(b,"click",function(){--V.VKI_size,V.VKI_kbsize(),V.VKI_target.focus()},!1),r(b),b.appendChild(document.createTextNode(this.VKI_isIElt8?"↓":"⇓")),m.appendChild(b);var v=document.createElement("big");v.title=this.VKI_i18n[11],l(v,"click",function(){++V.VKI_size,V.VKI_kbsize(),V.VKI_target.focus()},!1),r(v),v.appendChild(document.createTextNode(this.VKI_isIElt8?"↑":"⇑")),m.appendChild(v)}var k=document.createElement("span");k.appendChild(document.createTextNode(this.VKI_i18n["07"])),k.title=this.VKI_i18n["08"],l(k,"click",function(){return V.VKI_target.value="",V.VKI_target.focus(),V.keyInputCallback(),!1},!1),r(k),m.appendChild(k);var C=document.createElement("strong");C.appendChild(document.createTextNode("X")),C.title=this.VKI_i18n["06"],l(C,"click",function(){V.VKI_close(!0)},!1),r(C),m.appendChild(C),u.appendChild(m),_.appendChild(u),this.VKI_keyboard.appendChild(_);var E=document.createElement("tbody"),u=document.createElement("tr"),N=document.createElement("td");N.className="keyboardsArea";var T=document.createElement("table"),x=document.createElement("tr"),w=document.createElement("td");w.className="keyboardInputTextPad";var A=document.createElement("div");if(this.VKI_deadBox){var S=document.createElement("label"),O=document.createElement("input");O.type="checkbox",O.title=this.VKI_i18n["03"]+": "+(this.VKI_deadkeysOn?this.VKI_i18n["04"]:this.VKI_i18n["05"]),O.defaultChecked=this.VKI_deadkeysOn,l(O,"click",function(){return this.title=V.VKI_i18n["03"]+": "+(this.checked?V.VKI_i18n["04"]:V.VKI_i18n["05"]),V.VKI_modify(""),!0},!1),S.appendChild(O),O.checked=this.VKI_deadkeysOn,A.appendChild(S),this.VKI_deadkeysOn=O}else this.VKI_deadkeysOn.checked=this.VKI_deadkeysOn;if(this.VKI_showVersion){var P=document.createElement("var");P.title=this.VKI_i18n["09"]+" "+this.VKI_version,P.appendChild(document.createTextNode("v"+this.VKI_version)),A.appendChild(P)}w.appendChild(A);var z=document.createElement("td");z.className="keyboardInputNumpad",this.VKI_numberPadOn||(z.style.display="none");var B=document.createElement("table");B.cellSpacing="0";for(var L=document.createElement("tbody"),p=0;p=0;i--)e.removeChild(t[i]);for(var s,i=0,a=!1;s=this.VKI_layout[this.VKI_kt].keys[i++];){var d=document.createElement("table");d.cellSpacing="0",s.length<=this.VKI_keyCenter&&(d.className="keyboardInputCenter");for(var c,h=document.createElement("tbody"),I=document.createElement("tr"),K=0;c=s[K++];){var _=document.createElement("td");if(this.VKI_symbol[c[0]]){var u=this.VKI_symbol[c[0]].split("\n"),m=document.createElement("small");m.setAttribute("char",c[0]);for(var f=0;fthis.VKI_keyCenter&&K==s.length&&g.push("last")," "!=c[0]&&" "!=c[1]||g.push("space"),_.className=g.join(" "),c[1]){case"Caps":case"Shift":case"Alt":case"AltGr":case"AltLk":l(_,"click",function(e){return function(){return V.VKI_modify(e),!1}}(c[1]),!1);break;case"Tab":l(_,"click",function(){if(V.VKI_activeTab)if(V.VKI_target.form){var e=V.VKI_target,t=e.form.elements;V.VKI_close(!1);for(var i=0,s=!1,a=-1;ithis.VKI_keyCenter&&r.push("last")," "!=o[0]&&" "!=o[1]||r.push("space"),a[n].className=r.join(" ")}},this.VKI_insert=function(e){if(this.VKI_target.focus(),e&&e.length>1&&e.trim&&(e=e.trim()),this.VKI_target.maxLength&&(this.VKI_target.maxlength=this.VKI_target.maxLength),"undefined"==typeof this.VKI_target.maxlength||this.VKI_target.maxlength<0||this.VKI_target.value.length0&&"bottom"!==V.VKI_forcePosition?(a=!0,n=-V.VKI_keyboard.offsetHeight-3):t[1]-s[1]<0&&(a=!0)),a||e===!0){for(var r=d(V.VKI_target),o=V.VKI_target;(o=o.parentNode)&&o!=document.body;)if(o.scrollHeight>o.offsetHeight||o.scrollWidth>o.offsetWidth){o.getAttribute("VKI_scrollListener")||(o.setAttribute("VKI_scrollListener",!0),l(o,"scroll",function(){V.VKI_position(!0)},!1));var I=d(o),K=r[1]-I[1],_=r[0]-I[0],u=K+V.VKI_target.offsetHeight,m=_+V.VKI_target.offsetWidth,f=o.offsetHeight-K-V.VKI_target.offsetHeight,g=o.offsetWidth-_-V.VKI_target.offsetWidth;V.VKI_keyboard.style.display=u<0||m<0||f<0||g<0?"none":"",V.VKI_isIE6&&(V.VKI_iframe.style.display=u<0||m<0||f<0||g<0?"none":"")}V.VKI_keyboard.style.top=r[1]-("fixed"!=V.VKI_target.keyboardPosition||V.VKI_isIE||V.VKI_isMoz?0:s[1])+n+"px",V.VKI_keyboard.style.left=Math.max(10,Math.min(i[0]-V.VKI_keyboard.offsetWidth-25,r[0]))+"px",V.VKI_isIE6&&(V.VKI_iframe.style.width=V.VKI_keyboard.offsetWidth+"px",V.VKI_iframe.style.height=V.VKI_keyboard.offsetHeight+"px",V.VKI_iframe.style.top=V.VKI_keyboard.style.top,V.VKI_iframe.style.left=V.VKI_keyboard.style.left)}e===!0&&V.VKI_position()}},this.VKI_close=function(e){if(this.VKI_target){try{this.VKI_keyboard.parentNode.removeChild(this.VKI_keyboard),this.VKI_isIE6&&this.VKI_iframe.parentNode.removeChild(this.VKI_iframe)}catch(t){}this.VKI_showKbSelect&&(this.VKI_kt!=this.VKI_kts&&(f.firstChild.nodeValue=this.VKI_kt=this.VKI_kts,this.VKI_buildKeys()),f.getElementsByTagName("ol")[0].style.display=""),e&&this.VKI_target.focus(),this.VKI_isIE?setTimeout(function(){V.VKI_target=!1},0):this.VKI_target=!1}},l(window,"resize",this.VKI_position,!1),l(window,"scroll",this.VKI_position,!1),this.VKI_kbsize(),V};e.module("angular-virtual-keyboard",[]).constant("VKI_CONFIG",{layout:{"US International":{name:"US International",keys:[[["`","~"],["1","!","¡","¹"],["2","@","²"],["3","#","³"],["4","$","¤","£"],["5","%","€"],["6","^","¼"],["7","&","½"],["8","*","¾"],["9","(","‘"],["0",")","’"],["-","_","¥"],["=","+","×","÷"],["Bksp","Bksp"]],[["Tab","Tab"],["q","Q","ä","Ä"],["w","W","å","Å"],["e","E","é","É"],["r","R","®"],["t","T","þ","Þ"],["y","Y","ü","Ü"],["u","U","ú","Ú"],["i","I","í","Í"],["o","O","ó","Ó"],["p","P","ö","Ö"],["[","{","«"],["]","}","»"],["\\","|","¬","¦"]],[["Caps","Caps"],["a","A","á","Á"],["s","S","ß","§"],["d","D","ð","Ð"],["f","F"],["g","G"],["h","H"],["j","J"],["k","K"],["l","L","ø","Ø"],[";",":","¶","°"],["'",'"',"´","¨"],["Enter","Enter"]],[["Shift","Shift"],["z","Z","æ","Æ"],["x","X"],["c","C","©","¢"],["v","V"],["b","B"],["n","N","ñ","Ñ"],["m","M","µ"],[",","<","ç","Ç"],[".",">"],["/","?","¿"],["Shift","Shift"]],[[" "," "," "," "],["Alt","Alt"]]],lang:["en"]}},deadkey:{"~":{a:"ã",l:"ł",n:"ñ",o:"õ",A:"Ã",L:"Ł",N:"Ñ",O:"Õ"},"^":{a:"â",e:"ê",i:"î",o:"ô",u:"û",w:"ŵ",y:"ŷ",A:"Â",E:"Ê",I:"Î",O:"Ô",U:"Û",W:"Ŵ",Y:"Ŷ"},"`":{a:"à",e:"è",i:"ì",o:"ò",u:"ù","ü":"ǜ",A:"À",E:"È",I:"Ì",O:"Ò",U:"Ù","Ü":"Ǜ"},"'":{a:"á",e:"é",i:"í",o:"ó",u:"ú",y:"ý","α":"ά","ε":"έ","η":"ή","ι":"ί","ο":"ό","υ":"ύ","ω":"ώ","ü":"ǘ",A:"Á",E:"É",I:"Í",O:"Ó",U:"Ú",Y:"Ý","Α":"Ά","Ε":"Έ","Η":"Ή","Ι":"Ί","Ο":"Ό","Υ":"Ύ","Ω":"Ώ","Ü":"Ǘ"},"´":{a:"á",e:"é",i:"í",o:"ó",u:"ú",y:"ý","α":"ά","ε":"έ","η":"ή","ι":"ί","ο":"ό","υ":"ύ","ω":"ώ","ü":"ǘ",A:"Á",E:"É",I:"Í",O:"Ó",U:"Ú",Y:"Ý","Α":"Ά","Ε":"Έ","Η":"Ή","Ι":"Ί","Ο":"Ό","Υ":"Ύ","Ω":"Ώ","Ü":"Ǘ"},"¨":{a:"ä",e:"ë",i:"ï",o:"ö",u:"ü",y:"ÿ","ι":"ϊ","υ":"ϋ","ū":"ǖ","ú":"ǘ","ǔ":"ǚ","ù":"ǜ",A:"Ä",E:"Ë",I:"Ï",O:"Ö",U:"Ü",Y:"Ÿ","Ι":"Ϊ","Υ":"Ϋ","Ū":"Ǖ","Ú":"Ǘ","Ǔ":"Ǚ","Ù":"Ǜ","か":"が","き":"ぎ","く":"ぐ","け":"げ","こ":"ご","た":"だ","ち":"ぢ","つ":"づ","て":"で","と":"ど","さ":"ざ","し":"じ","す":"ず","せ":"ぜ","そ":"ぞ","は":"ば","ひ":"び","ふ":"ぶ","へ":"べ","ほ":"ぼ","カ":"ガ","キ":"ギ","ク":"グ","ケ":"ゲ","コ":"ゴ","タ":"ダ","チ":"ヂ","ツ":"ヅ","テ":"デ","ト":"ド","サ":"ザ","シ":"ジ","ス":"ズ","セ":"ゼ","ソ":"ゾ","ハ":"バ","ヒ":"ビ","フ":"ブ","ヘ":"ベ","ホ":"ボ"}},kt:"US International",i18n:{"00":"Display Number Pad","01":"Display virtual keyboard interface","02":"Select keyboard layout","03":"Dead keys","04":"On","05":"Off","06":"Close the keyboard","07":"Clear","08":"Clear this input","09":"Version",10:"Decrease keyboard size",11:"Increase keyboard size"},relative:!0,sizeAdj:!0,customClass:!1}).service("ngVirtualKeyboardService",["VKI_CONFIG",function(e){return{attach:function(i,s,a){s=s||{},s.i18n=s.i18n||e.i18n,s.kt=s.kt||e.kt,s.relative=s.relative!==!1&&e.relative,s.keyCenter=s.keyCenter||e.keyCenter,s.sizeAdj=s.sizeAdj!==!1&&e.sizeAdj,s.customClass=s.customClass||e.customClass;var n=new t(s,e.layout,e.deadkey,a);n.attachVki(i)}}}]).directive("ngVirtualKeyboard",["ngVirtualKeyboardService","$timeout","$injector",function(e,t,i){return{restrict:"A",require:"?ngModel",scope:{config:"=ngVirtualKeyboard"},link:function(s,a,n,r){if(r){if(i.has("UAParser")){var o=i.get("UAParser"),l=(new o).getResult(),d="mobile"===l.device.type||"tablet"===l.device.type;if(d=d||l.os&&"Android"===l.os.name,d=d||l.os&&"iOS"===l.os.name,d=d||l.os&&"Windows Phone"===l.os.name,d=d||l.os&&"Windows Mobile"===l.os.name,d&&s.config.showInMobile!==!0)return}e.attach(a[0],s.config,function(){t(function(){r.$setViewValue(a[0].value)})})}}}}])}(angular); \ No newline at end of file diff --git a/src/vki-core.js b/src/vki-core.js index 73c2fc5..404ae63 100644 --- a/src/vki-core.js +++ b/src/vki-core.js @@ -314,7 +314,7 @@ var VKI = function(customConfig, layout, deadKeys, keyInputCallback) { ol.style.display = "block"; var li = ol.getElementsByTagName('li'); for (var x = 0, scr = 0; x < li.length; x++) { - if (VKI_kt == li[x].firstChild.nodeValue) { + if (self.VKI_kt == li[x].firstChild.nodeValue) { li[x].className = "selected"; scr = li[x].offsetTop - li[x].offsetHeight * 2; } else li[x].className = "";