119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
/*! jQuery UI Virtual Keyboard Extender v1.0.1 *//*
|
|
* for Keyboard v1.18+ only (7/7/2015)
|
|
*
|
|
* By Rob Garrison (aka Mottie)
|
|
* Licensed under the MIT License
|
|
*
|
|
*/
|
|
/*jshint browser:true, jquery:true, unused:false */
|
|
/*global require:false, define:false, module:false */
|
|
;(function(factory) {
|
|
if (typeof define === 'function' && define.amd) {
|
|
define(['jquery'], factory);
|
|
} else if (typeof module === 'object' && typeof module.exports === 'object') {
|
|
module.exports = factory(require('jquery'));
|
|
} else {
|
|
factory(jQuery);
|
|
}
|
|
}(function($) {
|
|
'use strict';
|
|
|
|
var $keyboard = $.keyboard;
|
|
|
|
$.extend( $keyboard.css, {
|
|
extender : 'ui-keyboard-extender'
|
|
});
|
|
|
|
$.extend( $keyboard.layouts, {
|
|
'numpad' : {
|
|
'normal' : [
|
|
'{clear} / * -',
|
|
'7 8 9 +',
|
|
'4 5 6 %',
|
|
'1 2 3 =',
|
|
'0 {dec} {left} {right}'
|
|
]
|
|
}
|
|
});
|
|
|
|
// add {extender} keyaction
|
|
$.extend( $keyboard.keyaction, {
|
|
extender: function( base, el ) {
|
|
base.extender_toggle();
|
|
return false;
|
|
}
|
|
});
|
|
|
|
$.fn.addExtender = function(options) {
|
|
//Set the default values, use comma to separate the settings, example:
|
|
var defaults = {
|
|
layout : 'numpad',
|
|
showing : false,
|
|
reposition : true
|
|
};
|
|
return this.each( function() {
|
|
// make sure a keyboard is attached
|
|
var o, base = $( this ).data( 'keyboard' );
|
|
if (!base) { return; }
|
|
|
|
// variables
|
|
o = base.extender_options = $.extend( {}, defaults, options );
|
|
$.extend( true, $keyboard.language.en, {
|
|
display : {
|
|
'extender' : ' '
|
|
}
|
|
});
|
|
base.extender_namespace = base.namespace + 'extender';
|
|
base.extensionNamespace.push( base.extender_namespace );
|
|
|
|
base.extender_setup = function() {
|
|
var $kb,
|
|
layout = o.layout;
|
|
if ( typeof $keyboard.builtLayouts[ layout ] === 'undefined' ) {
|
|
base.buildKeyboard( layout );
|
|
}
|
|
$kb = $keyboard.builtLayouts[ layout ].$keyboard.find( '.' + $keyboard.css.keySet + '-normal' ).clone();
|
|
$kb
|
|
.removeClass()
|
|
.removeAttr('name')
|
|
.addClass( $keyboard.css.extender )
|
|
.toggle( o.showing )
|
|
.children('button')
|
|
.removeAttr('data-pos');
|
|
base.$keyboard.append( $kb );
|
|
base.extender_toggle( base.extender_options.showing );
|
|
base.bindKeys();
|
|
};
|
|
|
|
base.extender_toggle = function(set) {
|
|
base.extender_options.showing = typeof set === 'undefined' ? !base.extender_options.showing : set;
|
|
base.$keyboard
|
|
.find( 'div.' + $keyboard.css.extender )
|
|
.toggle( base.extender_options.showing )
|
|
.end()
|
|
.find( '.' + $keyboard.css.keySet )
|
|
.css('float', base.extender_options.showing ? 'left' : 'none')
|
|
.end()
|
|
.find( 'button.' + $keyboard.css.extender )
|
|
.toggleClass( base.options.css.buttonActive, base.extender_options.showing );
|
|
// force keyboard reposition
|
|
if (base.extender_options.reposition) {
|
|
$(window).trigger('resize');
|
|
}
|
|
};
|
|
|
|
// visible event is fired before this extension is initialized, so check!
|
|
if (base.options.alwaysOpen && base.isVisible()) {
|
|
base.extender_setup();
|
|
}
|
|
// setup extender
|
|
base.$el
|
|
.unbind( $keyboard.events.kbBeforeVisible + base.extender_namespace )
|
|
.bind( $keyboard.events.kbBeforeVisible + base.extender_namespace, function() {
|
|
base.extender_setup();
|
|
});
|
|
|
|
});
|
|
};
|
|
|
|
}));
|