diff --git a/.gitignore b/.gitignore index 7bf6eb1..372e20a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bower_components node_modules +dist diff --git a/README.md b/README.md index b49cfb4..3b054f5 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,19 @@ _Obs.: Required to auto-hide the keyboard interface in mobile devices or to use ``` +## Development use + +Clone or fork repository, then in parent project directory execute: +```sh +$ npm install +$ gulp default +``` + +Note: Gulp must be installed globally: +```sh +$ sudo npm install -g gulp +``` + ## Supported Configurations ### Directive global configurations diff --git a/bower.json b/bower.json index b851093..045c4ed 100644 --- a/bower.json +++ b/bower.json @@ -22,7 +22,8 @@ "src", "demo", "css", - "gulpfile.js" + "gulpfile.js", + "dist" ], "dependencies": {}, "devDependencies": { diff --git a/demo/index.html b/demo/index.html index 2d3af9f..dc62820 100644 --- a/demo/index.html +++ b/demo/index.html @@ -3,11 +3,11 @@ Angular Virtual Keyboard Demo - + - + - + @@ -67,6 +68,15 @@

Keyboard binded by directive attribute:

(Model value: {{t02}}) +

Read only field

+
+ + + read-only +
+ (Model value: {{t014}}) +
+

Custom configurations

diff --git a/gulpfile.js b/gulpfile.js index 2613bf8..583b4f1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -11,6 +11,23 @@ var path = { } } +var bower = require('gulp-bower'); + +gulp.task('bower', function() { + return bower(); +}); + +var server = require('gulp-server-livereload'); + +gulp.task('webserver', function() { + gulp.src('./dist') + .pipe(server({ + open: true, + livereload: true + } + )); +}); + gulp.task('jshint', function(done) { gulp.src(path.src.files) .pipe(plugins.jshint('.jshintrc')) @@ -48,16 +65,32 @@ gulp.task('build', function() { .pipe(gulp.dest('./release/')) .pipe(plugins.uglify()) .pipe(plugins.concat('angular-virtual-keyboard.min.js')) - .pipe(gulp.dest('./release/')); + .pipe(gulp.dest('./release/')) + .pipe(gulp.dest('./dist/scripts')); + + gulp.src('./demo/index.html') + .pipe(gulp.dest('./dist/')) + + gulp.src('./demo/vki.html') + .pipe(gulp.dest('./dist/')) + + gulp.src('./demo/*.png') + .pipe(gulp.dest('./dist/')) gulp.src('css/angular-virtual-keyboard.css') - .pipe(gulp.dest('./release/')); + .pipe(gulp.dest('./release/')) + .pipe(gulp.dest('./dist/css/')); + + gulp.src('bower_components/angular-useragent-parser/release/angular-useragent-parser.min.js') + .pipe(gulp.dest('./dist/bower_components/angular-useragent-parser/release/')) }); -gulp.task('default', ['jshint', 'build'], function() { +gulp.task('default', ['bower', 'jshint', 'build', 'webserver'], function() { gulp.watch(path.src.files, ['jshint', 'build']); }); + + gulp.task('changelog', function(done) { var pkg = require('./bower.json'); var changelog = require('conventional-changelog'); diff --git a/package.json b/package.json index e23725f..99a040d 100644 --- a/package.json +++ b/package.json @@ -22,13 +22,17 @@ }, "homepage": "https://github.com/the-darc/angular-virtual-keyboard", "devDependencies": { + "bower": "^1.7.7", "conventional-changelog": "0.0.16", "gulp": "^3.8.11", + "gulp-bower": "0.0.13", "gulp-concat": "^2.5.2", "gulp-footer": "^1.0.5", "gulp-header": "^1.2.2", "gulp-jshint": "^1.9.2", "gulp-load-plugins": "^0.8.0", + "gulp-serve": "^1.2.0", + "gulp-server-livereload": "^1.7.3", "gulp-uglify": "^1.1.0", "jshint-stylish": "^1.0.0" } diff --git a/release/angular-virtual-keyboard.js b/release/angular-virtual-keyboard.js index febefb7..eb95346 100644 --- a/release/angular-virtual-keyboard.js +++ b/release/angular-virtual-keyboard.js @@ -198,7 +198,7 @@ var VKI = function(customConfig, layout, deadKeys, keyInputCallback) { * */ self.attachVki = function(elem) { - if (elem.getAttribute("VKI_attached")) return false; + if (elem.getAttribute("VKI_attached") || elem.readOnly) return false; if (self.VKI_imageURI) { var keybut = document.createElement('img'); keybut.src = self.VKI_imageURI; @@ -786,6 +786,7 @@ var VKI = function(customConfig, layout, deadKeys, keyInputCallback) { * */ this.VKI_show = function(elem) { + if (elem.readOnly) return false; if (!this.VKI_target) { this.VKI_target = elem; if (this.VKI_langAdapt && this.VKI_target.lang) { diff --git a/release/angular-virtual-keyboard.min.js b/release/angular-virtual-keyboard.min.js index 865cc3e..65e173d 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:!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,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")||t.readOnly)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;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 diff --git a/src/vki-core.js b/src/vki-core.js index 73c2fc5..28c7640 100644 --- a/src/vki-core.js +++ b/src/vki-core.js @@ -188,7 +188,7 @@ var VKI = function(customConfig, layout, deadKeys, keyInputCallback) { * */ self.attachVki = function(elem) { - if (elem.getAttribute("VKI_attached")) return false; + if (elem.getAttribute("VKI_attached") || elem.readOnly) return false; if (self.VKI_imageURI) { var keybut = document.createElement('img'); keybut.src = self.VKI_imageURI; @@ -776,6 +776,7 @@ var VKI = function(customConfig, layout, deadKeys, keyInputCallback) { * */ this.VKI_show = function(elem) { + if (elem.readOnly) return false; if (!this.VKI_target) { this.VKI_target = elem; if (this.VKI_langAdapt && this.VKI_target.lang) {