Switch to a diffrent keyboard and timepicker
these should hopefully work better on mobile browsers
This commit is contained in:
parent
b6dfba391c
commit
0eada46ece
27 changed files with 8074 additions and 3643 deletions
147
web_app/js/external/jquery.keyboard.extension-autocomplete.js
vendored
Normal file
147
web_app/js/external/jquery.keyboard.extension-autocomplete.js
vendored
Normal file
|
@ -0,0 +1,147 @@
|
|||
/*! jQuery UI Virtual Keyboard Autocomplete v1.9.2 *//*
|
||||
* for Keyboard v1.18+ only (8/17/2015)
|
||||
*
|
||||
* By Rob Garrison (aka Mottie & Fudgey)
|
||||
* Licensed under the MIT License
|
||||
*
|
||||
* Use this extension with the Virtual Keyboard to get
|
||||
* the jQuery UI Autocomplete widget to work seamlessly
|
||||
*
|
||||
* Requires:
|
||||
* jQuery
|
||||
* jQuery UI & css
|
||||
* Keyboard plugin : https://github.com/Mottie/Keyboard
|
||||
*
|
||||
* Setup:
|
||||
* $('.ui-keyboard-input')
|
||||
* .keyboard(options)
|
||||
* .autocomplete(options)
|
||||
* .addAutoComplete();
|
||||
*
|
||||
* // or if targeting a specific keyboard
|
||||
* $('#keyboard1')
|
||||
* .keyboard(options) // keyboard plugin
|
||||
* .autocomplete(options) // jQuery UI autocomplete
|
||||
* .addAutoComplete(); // this keyboard extension
|
||||
*
|
||||
*/
|
||||
/*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';
|
||||
$.fn.addAutocomplete = function(options){
|
||||
var defaults = {
|
||||
position : {
|
||||
of : null,
|
||||
my : 'right top',
|
||||
at : 'left top',
|
||||
collision: 'flip'
|
||||
}
|
||||
};
|
||||
|
||||
return this.each(function(){
|
||||
// make sure a keyboard is attached
|
||||
var o, base = $(this).data('keyboard');
|
||||
if (!base) { return; }
|
||||
|
||||
base.autocomplete_namespace = base.namespace + 'Autocomplete';
|
||||
base.extensionNamespace.push( base.autocomplete_namespace );
|
||||
|
||||
// Setup
|
||||
base.autocomplete_init = function(){
|
||||
|
||||
// variables
|
||||
o = base.autocomplete_options = $.extend( true, {}, defaults, options );
|
||||
|
||||
// visible event is fired before this extension is initialized, so check!
|
||||
if (base.options.alwaysOpen && base.isVisible()) {
|
||||
base.autocomplete_setup();
|
||||
}
|
||||
|
||||
base.$el
|
||||
.unbind(base.autocomplete_namespace)
|
||||
.bind($.keyboard.events.kbVisible + base.autocomplete_namespace,function(){
|
||||
base.autocomplete_setup();
|
||||
})
|
||||
.bind($.keyboard.events.kbChange + base.autocomplete_namespace,function(){
|
||||
if (base.hasAutocomplete && base.isVisible()) {
|
||||
base.$el
|
||||
.val(base.$preview.val())
|
||||
.trigger('keydown.autocomplete');
|
||||
}
|
||||
})
|
||||
.bind($.keyboard.events.kbHidden + base.autocomplete_namespace, function(){
|
||||
base.$el.autocomplete('close');
|
||||
})
|
||||
.bind('autocompleteopen' + base.autocomplete_namespace, function() {
|
||||
if (base.hasAutocomplete){
|
||||
// default to $keyboard if no position.of defined
|
||||
var position = $.extend( {}, o.position );
|
||||
// refresh base.$keyboard (it gets destroyed after use); fixes #382
|
||||
position.of = position.of || base.$keyboard;
|
||||
// reposition autocomplete window next to the keyboard
|
||||
base.$autocomplete.menu.element.position( position );
|
||||
}
|
||||
})
|
||||
.bind('autocompleteselect' + base.autocomplete_namespace, function(e, ui){
|
||||
var v = ui.item && ui.item.value || '';
|
||||
if (base.hasAutocomplete && v !== ''){
|
||||
base.$preview
|
||||
.val( v )
|
||||
.focus();
|
||||
// see issue #95 - thanks banku!
|
||||
base.last.start = v.length;
|
||||
base.last.end = v.length;
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
// set up after keyboard is visible
|
||||
base.autocomplete_setup = function(){
|
||||
// look for autocomplete
|
||||
base.$autocomplete = base.$el.data('autocomplete') || base.$el.data('uiAutocomplete') || base.$el.data('ui-autocomplete');
|
||||
base.hasAutocomplete = (typeof(base.$autocomplete) === 'undefined') ? false : (base.$autocomplete.options.disabled) ? false : true;
|
||||
// only bind to keydown once
|
||||
if (base.hasAutocomplete) {
|
||||
base.$preview.bind('keydown' + base.autocomplete_namespace, function(e){
|
||||
// send keys to the autocomplete widget (arrow, pageup/down, etc)
|
||||
base.$el.val( base.$preview.val() ).triggerHandler(e);
|
||||
});
|
||||
base.$allKeys.bind('mouseup mousedown mouseleave touchstart touchend touchcancel '.split(' ').join(base.autocomplete_namespace + ' '),function(event){
|
||||
clearTimeout( base.$autocomplete.searching );
|
||||
var evt = event;
|
||||
base.$autocomplete.searching = setTimeout(function() {
|
||||
// only search if the value has changed
|
||||
if ( base.$autocomplete.term !== base.$autocomplete.element.val() ) {
|
||||
base.$autocomplete.selectedItem = null;
|
||||
base.$autocomplete.search( null, evt );
|
||||
}
|
||||
}, base.$autocomplete.options.delay );
|
||||
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
base.origEscClose = base.escClose;
|
||||
|
||||
// replace original function with this one
|
||||
base.escClose = function(e){
|
||||
// prevent selecting an item in autocomplete from closing keyboard
|
||||
if ( base.hasAutocomplete && (e.target.id === 'ui-active-menuitem' || $(e.target).closest('ul').hasClass('ui-autocomplete')) ) { return; }
|
||||
base.origEscClose(e);
|
||||
};
|
||||
|
||||
base.autocomplete_init();
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
}));
|
Loading…
Add table
Add a link
Reference in a new issue