- Replaced color picker form control with a more robust version.
This commit is contained in:
parent
6fe068e42d
commit
6e0470771e
1193 changed files with 342 additions and 223 deletions
131
www/extras/extjs/source/util/KeyNav.js
vendored
Normal file
131
www/extras/extjs/source/util/KeyNav.js
vendored
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* Ext JS Library 1.0.1
|
||||
* Copyright(c) 2006-2007, Ext JS, LLC.
|
||||
* licensing@extjs.com
|
||||
*
|
||||
* http://www.extjs.com/license
|
||||
*/
|
||||
|
||||
/**
|
||||
* @class Ext.KeyNav
|
||||
* Provides a convenient wrapper for normalized keyboard navigation. KeyNav allows you to bind
|
||||
* navigation keys to function calls that will get called when the keys are pressed.
|
||||
* <br />Usage:
|
||||
<pre><code>
|
||||
var nav = new Ext.KeyNav("my-element", {
|
||||
"left" : function(e){
|
||||
this.moveLeft(e.ctrlKey);
|
||||
},
|
||||
"right" : function(e){
|
||||
this.moveRight(e.ctrlKey);
|
||||
},
|
||||
"enter" : function(e){
|
||||
this.save();
|
||||
},
|
||||
scope : this
|
||||
});
|
||||
</code></pre>
|
||||
* @constructor
|
||||
* @param {String/HTMLElement/Ext.Element} el The element to bind to
|
||||
* @param {Object} config The config
|
||||
*/
|
||||
Ext.KeyNav = function(el, config){
|
||||
this.el = Ext.get(el);
|
||||
Ext.apply(this, config);
|
||||
if(!this.disabled){
|
||||
this.disabled = true;
|
||||
this.enable();
|
||||
}
|
||||
};
|
||||
|
||||
Ext.KeyNav.prototype = {
|
||||
disabled : false,
|
||||
defaultEventAction: "stopEvent",
|
||||
|
||||
prepareEvent : function(e){
|
||||
var k = e.getKey();
|
||||
var h = this.keyToHandler[k];
|
||||
//if(h && this[h]){
|
||||
// e.stopPropagation();
|
||||
//}
|
||||
if(Ext.isSafari && h && k >= 37 && k <= 40){
|
||||
e.stopEvent();
|
||||
}
|
||||
},
|
||||
|
||||
relay : function(e){
|
||||
var k = e.getKey();
|
||||
var h = this.keyToHandler[k];
|
||||
if(h && this[h]){
|
||||
if(this.doRelay(e, this[h], h) !== true){
|
||||
e[this.defaultEventAction]();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
doRelay : function(e, h, hname){
|
||||
return h.call(this.scope || this, e);
|
||||
},
|
||||
|
||||
// possible handlers
|
||||
enter : false,
|
||||
left : false,
|
||||
right : false,
|
||||
up : false,
|
||||
down : false,
|
||||
tab : false,
|
||||
esc : false,
|
||||
pageUp : false,
|
||||
pageDown : false,
|
||||
del : false,
|
||||
home : false,
|
||||
end : false,
|
||||
|
||||
// quick lookup hash
|
||||
keyToHandler : {
|
||||
37 : "left",
|
||||
39 : "right",
|
||||
38 : "up",
|
||||
40 : "down",
|
||||
33 : "pageUp",
|
||||
34 : "pageDown",
|
||||
46 : "del",
|
||||
36 : "home",
|
||||
35 : "end",
|
||||
13 : "enter",
|
||||
27 : "esc",
|
||||
9 : "tab"
|
||||
},
|
||||
|
||||
/**
|
||||
* Enable this KeyNav
|
||||
*/
|
||||
enable: function(){
|
||||
if(this.disabled){
|
||||
// ie won't do special keys on keypress, no one else will repeat keys with keydown
|
||||
// the EventObject will normalize Safari automatically
|
||||
if(Ext.isIE){
|
||||
this.el.on("keydown", this.relay, this);
|
||||
}else{
|
||||
this.el.on("keydown", this.prepareEvent, this);
|
||||
this.el.on("keypress", this.relay, this);
|
||||
}
|
||||
this.disabled = false;
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Disable this KeyNav
|
||||
*/
|
||||
disable: function(){
|
||||
if(!this.disabled){
|
||||
if(Ext.isIE){
|
||||
this.el.un("keydown", this.relay);
|
||||
}else{
|
||||
this.el.un("keydown", this.prepareEvent);
|
||||
this.el.un("keypress", this.relay);
|
||||
}
|
||||
this.disabled = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue