vuecssuiant-designantdreactantantd-vueenterprisefrontendui-designvue-antdvue-antd-uivue3vuecomponent
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
522 lines
6.8 KiB
522 lines
6.8 KiB
/** |
|
* @ignore |
|
* some key-codes definition and utils from closure-library |
|
* @author yiminghe@gmail.com |
|
*/ |
|
|
|
const KeyCode = { |
|
/** |
|
* MAC_ENTER |
|
*/ |
|
MAC_ENTER: 3, |
|
/** |
|
* BACKSPACE |
|
*/ |
|
BACKSPACE: 8, |
|
/** |
|
* TAB |
|
*/ |
|
TAB: 9, |
|
/** |
|
* NUMLOCK on FF/Safari Mac |
|
*/ |
|
NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac |
|
/** |
|
* ENTER |
|
*/ |
|
ENTER: 13, |
|
/** |
|
* SHIFT |
|
*/ |
|
SHIFT: 16, |
|
/** |
|
* CTRL |
|
*/ |
|
CTRL: 17, |
|
/** |
|
* ALT |
|
*/ |
|
ALT: 18, |
|
/** |
|
* PAUSE |
|
*/ |
|
PAUSE: 19, |
|
/** |
|
* CAPS_LOCK |
|
*/ |
|
CAPS_LOCK: 20, |
|
/** |
|
* ESC |
|
*/ |
|
ESC: 27, |
|
/** |
|
* SPACE |
|
*/ |
|
SPACE: 32, |
|
/** |
|
* PAGE_UP |
|
*/ |
|
PAGE_UP: 33, // also NUM_NORTH_EAST |
|
/** |
|
* PAGE_DOWN |
|
*/ |
|
PAGE_DOWN: 34, // also NUM_SOUTH_EAST |
|
/** |
|
* END |
|
*/ |
|
END: 35, // also NUM_SOUTH_WEST |
|
/** |
|
* HOME |
|
*/ |
|
HOME: 36, // also NUM_NORTH_WEST |
|
/** |
|
* LEFT |
|
*/ |
|
LEFT: 37, // also NUM_WEST |
|
/** |
|
* UP |
|
*/ |
|
UP: 38, // also NUM_NORTH |
|
/** |
|
* RIGHT |
|
*/ |
|
RIGHT: 39, // also NUM_EAST |
|
/** |
|
* DOWN |
|
*/ |
|
DOWN: 40, // also NUM_SOUTH |
|
/** |
|
* PRINT_SCREEN |
|
*/ |
|
PRINT_SCREEN: 44, |
|
/** |
|
* INSERT |
|
*/ |
|
INSERT: 45, // also NUM_INSERT |
|
/** |
|
* DELETE |
|
*/ |
|
DELETE: 46, // also NUM_DELETE |
|
/** |
|
* ZERO |
|
*/ |
|
ZERO: 48, |
|
/** |
|
* ONE |
|
*/ |
|
ONE: 49, |
|
/** |
|
* TWO |
|
*/ |
|
TWO: 50, |
|
/** |
|
* THREE |
|
*/ |
|
THREE: 51, |
|
/** |
|
* FOUR |
|
*/ |
|
FOUR: 52, |
|
/** |
|
* FIVE |
|
*/ |
|
FIVE: 53, |
|
/** |
|
* SIX |
|
*/ |
|
SIX: 54, |
|
/** |
|
* SEVEN |
|
*/ |
|
SEVEN: 55, |
|
/** |
|
* EIGHT |
|
*/ |
|
EIGHT: 56, |
|
/** |
|
* NINE |
|
*/ |
|
NINE: 57, |
|
/** |
|
* QUESTION_MARK |
|
*/ |
|
QUESTION_MARK: 63, // needs localization |
|
/** |
|
* A |
|
*/ |
|
A: 65, |
|
/** |
|
* B |
|
*/ |
|
B: 66, |
|
/** |
|
* C |
|
*/ |
|
C: 67, |
|
/** |
|
* D |
|
*/ |
|
D: 68, |
|
/** |
|
* E |
|
*/ |
|
E: 69, |
|
/** |
|
* F |
|
*/ |
|
F: 70, |
|
/** |
|
* G |
|
*/ |
|
G: 71, |
|
/** |
|
* H |
|
*/ |
|
H: 72, |
|
/** |
|
* I |
|
*/ |
|
I: 73, |
|
/** |
|
* J |
|
*/ |
|
J: 74, |
|
/** |
|
* K |
|
*/ |
|
K: 75, |
|
/** |
|
* L |
|
*/ |
|
L: 76, |
|
/** |
|
* M |
|
*/ |
|
M: 77, |
|
/** |
|
* N |
|
*/ |
|
N: 78, |
|
/** |
|
* O |
|
*/ |
|
O: 79, |
|
/** |
|
* P |
|
*/ |
|
P: 80, |
|
/** |
|
* Q |
|
*/ |
|
Q: 81, |
|
/** |
|
* R |
|
*/ |
|
R: 82, |
|
/** |
|
* S |
|
*/ |
|
S: 83, |
|
/** |
|
* T |
|
*/ |
|
T: 84, |
|
/** |
|
* U |
|
*/ |
|
U: 85, |
|
/** |
|
* V |
|
*/ |
|
V: 86, |
|
/** |
|
* W |
|
*/ |
|
W: 87, |
|
/** |
|
* X |
|
*/ |
|
X: 88, |
|
/** |
|
* Y |
|
*/ |
|
Y: 89, |
|
/** |
|
* Z |
|
*/ |
|
Z: 90, |
|
/** |
|
* META |
|
*/ |
|
META: 91, // WIN_KEY_LEFT |
|
/** |
|
* WIN_KEY_RIGHT |
|
*/ |
|
WIN_KEY_RIGHT: 92, |
|
/** |
|
* CONTEXT_MENU |
|
*/ |
|
CONTEXT_MENU: 93, |
|
/** |
|
* NUM_ZERO |
|
*/ |
|
NUM_ZERO: 96, |
|
/** |
|
* NUM_ONE |
|
*/ |
|
NUM_ONE: 97, |
|
/** |
|
* NUM_TWO |
|
*/ |
|
NUM_TWO: 98, |
|
/** |
|
* NUM_THREE |
|
*/ |
|
NUM_THREE: 99, |
|
/** |
|
* NUM_FOUR |
|
*/ |
|
NUM_FOUR: 100, |
|
/** |
|
* NUM_FIVE |
|
*/ |
|
NUM_FIVE: 101, |
|
/** |
|
* NUM_SIX |
|
*/ |
|
NUM_SIX: 102, |
|
/** |
|
* NUM_SEVEN |
|
*/ |
|
NUM_SEVEN: 103, |
|
/** |
|
* NUM_EIGHT |
|
*/ |
|
NUM_EIGHT: 104, |
|
/** |
|
* NUM_NINE |
|
*/ |
|
NUM_NINE: 105, |
|
/** |
|
* NUM_MULTIPLY |
|
*/ |
|
NUM_MULTIPLY: 106, |
|
/** |
|
* NUM_PLUS |
|
*/ |
|
NUM_PLUS: 107, |
|
/** |
|
* NUM_MINUS |
|
*/ |
|
NUM_MINUS: 109, |
|
/** |
|
* NUM_PERIOD |
|
*/ |
|
NUM_PERIOD: 110, |
|
/** |
|
* NUM_DIVISION |
|
*/ |
|
NUM_DIVISION: 111, |
|
/** |
|
* F1 |
|
*/ |
|
F1: 112, |
|
/** |
|
* F2 |
|
*/ |
|
F2: 113, |
|
/** |
|
* F3 |
|
*/ |
|
F3: 114, |
|
/** |
|
* F4 |
|
*/ |
|
F4: 115, |
|
/** |
|
* F5 |
|
*/ |
|
F5: 116, |
|
/** |
|
* F6 |
|
*/ |
|
F6: 117, |
|
/** |
|
* F7 |
|
*/ |
|
F7: 118, |
|
/** |
|
* F8 |
|
*/ |
|
F8: 119, |
|
/** |
|
* F9 |
|
*/ |
|
F9: 120, |
|
/** |
|
* F10 |
|
*/ |
|
F10: 121, |
|
/** |
|
* F11 |
|
*/ |
|
F11: 122, |
|
/** |
|
* F12 |
|
*/ |
|
F12: 123, |
|
/** |
|
* NUMLOCK |
|
*/ |
|
NUMLOCK: 144, |
|
/** |
|
* SEMICOLON |
|
*/ |
|
SEMICOLON: 186, // needs localization |
|
/** |
|
* DASH |
|
*/ |
|
DASH: 189, // needs localization |
|
/** |
|
* EQUALS |
|
*/ |
|
EQUALS: 187, // needs localization |
|
/** |
|
* COMMA |
|
*/ |
|
COMMA: 188, // needs localization |
|
/** |
|
* PERIOD |
|
*/ |
|
PERIOD: 190, // needs localization |
|
/** |
|
* SLASH |
|
*/ |
|
SLASH: 191, // needs localization |
|
/** |
|
* APOSTROPHE |
|
*/ |
|
APOSTROPHE: 192, // needs localization |
|
/** |
|
* SINGLE_QUOTE |
|
*/ |
|
SINGLE_QUOTE: 222, // needs localization |
|
/** |
|
* OPEN_SQUARE_BRACKET |
|
*/ |
|
OPEN_SQUARE_BRACKET: 219, // needs localization |
|
/** |
|
* BACKSLASH |
|
*/ |
|
BACKSLASH: 220, // needs localization |
|
/** |
|
* CLOSE_SQUARE_BRACKET |
|
*/ |
|
CLOSE_SQUARE_BRACKET: 221, // needs localization |
|
/** |
|
* WIN_KEY |
|
*/ |
|
WIN_KEY: 224, |
|
/** |
|
* MAC_FF_META |
|
*/ |
|
MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91 |
|
/** |
|
* WIN_IME |
|
*/ |
|
WIN_IME: 229, |
|
|
|
// ======================== Function ======================== |
|
/** |
|
* whether text and modified key is entered at the same time. |
|
*/ |
|
isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e: KeyboardEvent) { |
|
const { keyCode } = e; |
|
if ( |
|
(e.altKey && !e.ctrlKey) || |
|
e.metaKey || |
|
// Function keys don't generate text |
|
(keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) |
|
) { |
|
return false; |
|
} |
|
|
|
// The following keys are quite harmless, even in combination with |
|
// CTRL, ALT or SHIFT. |
|
switch (keyCode) { |
|
case KeyCode.ALT: |
|
case KeyCode.CAPS_LOCK: |
|
case KeyCode.CONTEXT_MENU: |
|
case KeyCode.CTRL: |
|
case KeyCode.DOWN: |
|
case KeyCode.END: |
|
case KeyCode.ESC: |
|
case KeyCode.HOME: |
|
case KeyCode.INSERT: |
|
case KeyCode.LEFT: |
|
case KeyCode.MAC_FF_META: |
|
case KeyCode.META: |
|
case KeyCode.NUMLOCK: |
|
case KeyCode.NUM_CENTER: |
|
case KeyCode.PAGE_DOWN: |
|
case KeyCode.PAGE_UP: |
|
case KeyCode.PAUSE: |
|
case KeyCode.PRINT_SCREEN: |
|
case KeyCode.RIGHT: |
|
case KeyCode.SHIFT: |
|
case KeyCode.UP: |
|
case KeyCode.WIN_KEY: |
|
case KeyCode.WIN_KEY_RIGHT: |
|
return false; |
|
default: |
|
return true; |
|
} |
|
}, |
|
|
|
/** |
|
* whether character is entered. |
|
*/ |
|
isCharacterKey: function isCharacterKey(keyCode: number) { |
|
if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) { |
|
return true; |
|
} |
|
|
|
if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) { |
|
return true; |
|
} |
|
|
|
if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) { |
|
return true; |
|
} |
|
|
|
// Safari sends zero key code for non-latin characters. |
|
if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) { |
|
return true; |
|
} |
|
|
|
switch (keyCode) { |
|
case KeyCode.SPACE: |
|
case KeyCode.QUESTION_MARK: |
|
case KeyCode.NUM_PLUS: |
|
case KeyCode.NUM_MINUS: |
|
case KeyCode.NUM_PERIOD: |
|
case KeyCode.NUM_DIVISION: |
|
case KeyCode.SEMICOLON: |
|
case KeyCode.DASH: |
|
case KeyCode.EQUALS: |
|
case KeyCode.COMMA: |
|
case KeyCode.PERIOD: |
|
case KeyCode.SLASH: |
|
case KeyCode.APOSTROPHE: |
|
case KeyCode.SINGLE_QUOTE: |
|
case KeyCode.OPEN_SQUARE_BRACKET: |
|
case KeyCode.BACKSLASH: |
|
case KeyCode.CLOSE_SQUARE_BRACKET: |
|
return true; |
|
default: |
|
return false; |
|
} |
|
}, |
|
}; |
|
|
|
export default KeyCode;
|
|
|