UNPKG

@openui5/sap.ui.core

Version:

OpenUI5 Core Library sap.ui.core

862 lines (792 loc) 28 kB
/*! * OpenUI5 * (c) Copyright 2009-2021 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ sap.ui.define(['sap/ui/events/KeyCodes', 'sap/ui/thirdparty/jquery'], function(KeyCodes, jQuery) { "use strict"; /** * @namespace * @since 1.58 * @alias module:sap/ui/events/PseudoEvents * @public */ var PseudoEvents = {}; /** * Convenience method to check an event for a certain combination of modifier keys * * @private */ function checkModifierKeys(oEvent, bCtrlKey, bAltKey, bShiftKey) { return oEvent.shiftKey == bShiftKey && oEvent.altKey == bAltKey && getCtrlKey(oEvent) == bCtrlKey; } /** * Convenience method to check an event for any modifier key * * @private */ function hasModifierKeys(oEvent) { return oEvent.shiftKey || oEvent.altKey || getCtrlKey(oEvent); } /** * Convenience method for handling of Ctrl key, meta key etc. * * @private */ function getCtrlKey(oEvent) { return !!(oEvent.metaKey || oEvent.ctrlKey); // double negation doesn't have effect on boolean but ensures null and undefined are equivalent to false. } /** * Enumeration of all so called "pseudo events", a useful classification * of standard browser events as implied by SAP product standards. * * Whenever a browser event is recognized as one or more pseudo events, then this * classification is attached to the original {@link jQuery.Event} object and thereby * delivered to any jQuery-style listeners registered for that browser event. * * Pure JavaScript listeners can evaluate the classification information using * the {@link module:sap/ui/events/jquery/EventExtension#isPseudoType} method. * * Instead of using the procedure as described above, the SAPUI5 controls and elements * should simply implement an <code>on<i>pseudo-event</i>(oEvent)</code> method. It will * be invoked only when that specific pseudo event has been recognized. This simplifies event * dispatching even further. * * @enum {object} * @public */ PseudoEvents.events = { // IMPORTANT: update the public documentation when extending this list /* Pseudo keyboard events */ /** * Pseudo event for keyboard arrow down without modifiers (Ctrl, Alt or Shift) * @public */ sapdown: { sName: "sapdown", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowDown" || oEvent.key === "Down") : oEvent.keyCode == KeyCodes.ARROW_DOWN) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard arrow down with modifiers (Ctrl, Alt or Shift) * @public */ sapdownmodifiers: { sName: "sapdownmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowDown" || oEvent.key === "Down") : oEvent.keyCode == KeyCodes.ARROW_DOWN) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'show' event (F4, Alt + down-Arrow) * @public */ sapshow: { sName: "sapshow", aTypes: ["keydown"], fnCheck: function(oEvent) { if (oEvent.key) { return (oEvent.key === "F4" && !hasModifierKeys(oEvent)) || ((oEvent.key === "ArrowDown" || oEvent.key === "Down") && checkModifierKeys(oEvent, /*Ctrl*/ false, /*Alt*/ true, /*Shift*/ false)); } return (oEvent.keyCode == KeyCodes.F4 && !hasModifierKeys(oEvent)) || (oEvent.keyCode == KeyCodes.ARROW_DOWN && checkModifierKeys(oEvent, /*Ctrl*/ false, /*Alt*/ true, /*Shift*/ false)); } }, /** * Pseudo event for keyboard arrow up without modifiers (Ctrl, Alt or Shift) * @public */ sapup: { sName: "sapup", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowUp" || oEvent.key === "Up") : oEvent.keyCode == KeyCodes.ARROW_UP) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard arrow up with modifiers (Ctrl, Alt or Shift) * @public */ sapupmodifiers: { sName: "sapupmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowUp" || oEvent.key === "Up") : oEvent.keyCode == KeyCodes.ARROW_UP) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'hide' event (Alt + up-Arrow) * @public */ saphide: { sName: "saphide", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowUp" || oEvent.key === "Up") : oEvent.keyCode == KeyCodes.ARROW_UP) && checkModifierKeys(oEvent, /*Ctrl*/ false, /*Alt*/ true, /*Shift*/ false); } }, /** * Pseudo event for keyboard arrow left without modifiers (Ctrl, Alt or Shift) * @public */ sapleft: { sName: "sapleft", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowLeft" || oEvent.key === "Left") : oEvent.keyCode == KeyCodes.ARROW_LEFT) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard arrow left with modifiers (Ctrl, Alt or Shift) * @public */ sapleftmodifiers: { sName: "sapleftmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowLeft" || oEvent.key === "Left") : oEvent.keyCode == KeyCodes.ARROW_LEFT) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard arrow right without modifiers (Ctrl, Alt or Shift) * @public */ sapright: { sName: "sapright", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowRight" || oEvent.key === "Right") : oEvent.keyCode == KeyCodes.ARROW_RIGHT) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard arrow right with modifiers (Ctrl, Alt or Shift) * @public */ saprightmodifiers: { sName: "saprightmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "ArrowRight" || oEvent.key === "Right") : oEvent.keyCode == KeyCodes.ARROW_RIGHT) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard Home/Pos1 with modifiers (Ctrl, Alt or Shift) * @public */ saphome: { sName: "saphome", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Home" : oEvent.keyCode == KeyCodes.HOME) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard Home/Pos1 without modifiers (Ctrl, Alt or Shift) * @public */ saphomemodifiers: { sName: "saphomemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Home" : oEvent.keyCode == KeyCodes.HOME) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo top event * @public */ saptop: { sName: "saptop", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Home" : oEvent.keyCode == KeyCodes.HOME) && checkModifierKeys(oEvent, /*Ctrl*/ true, /*Alt*/ false, /*Shift*/ false); } }, /** * Pseudo event for keyboard End without modifiers (Ctrl, Alt or Shift) * @public */ sapend: { sName: "sapend", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "End" : oEvent.keyCode == KeyCodes.END) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard End with modifiers (Ctrl, Alt or Shift) * @public */ sapendmodifiers: { sName: "sapendmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "End" : oEvent.keyCode == KeyCodes.END) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo bottom event * @public */ sapbottom: { sName: "sapbottom", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "End" : oEvent.keyCode == KeyCodes.END) && checkModifierKeys(oEvent, /*Ctrl*/ true, /*Alt*/ false, /*Shift*/ false); } }, /** * Pseudo event for keyboard page up without modifiers (Ctrl, Alt or Shift) * @public */ sappageup: { sName: "sappageup", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "PageUp" : oEvent.keyCode == KeyCodes.PAGE_UP) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard page up with modifiers (Ctrl, Alt or Shift) * @public */ sappageupmodifiers: { sName: "sappageupmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "PageUp" : oEvent.keyCode == KeyCodes.PAGE_UP) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard page down without modifiers (Ctrl, Alt or Shift) * @public */ sappagedown: { sName: "sappagedown", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "PageDown" : oEvent.keyCode == KeyCodes.PAGE_DOWN) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard page down with modifiers (Ctrl, Alt or Shift) * @public */ sappagedownmodifiers: { sName: "sappagedownmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "PageDown" : oEvent.keyCode == KeyCodes.PAGE_DOWN) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'select' event... space, enter, ... without modifiers (Ctrl, Alt or Shift) * @public */ sapselect: { sName: "sapselect", aTypes: ["keydown"], fnCheck: function(oEvent) { if (oEvent.key) { // "Spacebar" is IE only return (oEvent.key === "Enter" || oEvent.key === "Spacebar" || oEvent.key === " ") && !hasModifierKeys(oEvent); } return (oEvent.keyCode == KeyCodes.ENTER || oEvent.keyCode == KeyCodes.SPACE) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'select' event... space, enter, ... with modifiers (Ctrl, Alt or Shift) * @public */ sapselectmodifiers: { sName: "sapselectmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { if (oEvent.key) { // "Spacebar" is IE only return (oEvent.key === "Enter" || oEvent.key === "Spacebar" || oEvent.key === " ") && hasModifierKeys(oEvent); } return (oEvent.keyCode == KeyCodes.ENTER || oEvent.keyCode == KeyCodes.SPACE) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard space without modifiers (Ctrl, Alt or Shift) * @public */ sapspace: { sName: "sapspace", aTypes: ["keydown"], fnCheck: function(oEvent) { // "Spacebar" is IE only return (oEvent.key ? (oEvent.key === "Spacebar" || oEvent.key === " ") : oEvent.keyCode == KeyCodes.SPACE) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard space with modifiers (Ctrl, Alt or Shift) * @public */ sapspacemodifiers: { sName: "sapspacemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { // "Spacebar" is IE only return (oEvent.key ? (oEvent.key === "Spacebar" || oEvent.key === " ") : oEvent.keyCode == KeyCodes.SPACE) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard enter without modifiers (Ctrl, Alt or Shift) * @public */ sapenter: { sName: "sapenter", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Enter" : oEvent.keyCode == KeyCodes.ENTER) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard enter with modifiers (Ctrl, Alt or Shift) * @public */ sapentermodifiers: { sName: "sapentermodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Enter" : oEvent.keyCode == KeyCodes.ENTER) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard backspace without modifiers (Ctrl, Alt or Shift) * @public */ sapbackspace: { sName: "sapbackspace", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Backspace" : oEvent.keyCode == KeyCodes.BACKSPACE) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard backspace with modifiers (Ctrl, Alt or Shift) * @public */ sapbackspacemodifiers: { sName: "sapbackspacemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Backspace" : oEvent.keyCode == KeyCodes.BACKSPACE) && hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard delete without modifiers (Ctrl, Alt or Shift) * @public */ sapdelete: { sName: "sapdelete", aTypes: ["keydown"], fnCheck: function(oEvent) { // "Del" is IE only return (oEvent.key ? oEvent.key === "Delete" || oEvent.key === "Del" : oEvent.keyCode == KeyCodes.DELETE) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard delete with modifiers (Ctrl, Alt or Shift) * @public */ sapdeletemodifiers: { sName: "sapdeletemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { // "Del" is IE only return (oEvent.key ? oEvent.key === "Delete" || oEvent.key === "Del" : oEvent.keyCode == KeyCodes.DELETE) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo expand event (keyboard numpad +) without modifiers (Ctrl, Alt or Shift) * @public */ sapexpand: { sName: "sapexpand", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "+" || oEvent.key === "Add") && oEvent.location === "NUMPAD" : oEvent.keyCode == KeyCodes.NUMPAD_PLUS) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo expand event (keyboard numpad +) with modifiers (Ctrl, Alt or Shift) * @public */ sapexpandmodifiers: { sName: "sapexpandmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "+" || oEvent.key === "Add") && oEvent.location === "NUMPAD" : oEvent.keyCode == KeyCodes.NUMPAD_PLUS) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo collapse event (keyboard numpad -) without modifiers (Ctrl, Alt or Shift) * @public */ sapcollapse: { sName: "sapcollapse", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "-" || oEvent.key === "Subtract") && oEvent.location === "NUMPAD" : oEvent.keyCode == KeyCodes.NUMPAD_MINUS) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo collapse event (keyboard numpad -) with modifiers (Ctrl, Alt or Shift) * @public */ sapcollapsemodifiers: { sName: "sapcollapsemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "-" || oEvent.key === "Subtract") && oEvent.location === "NUMPAD" : oEvent.keyCode == KeyCodes.NUMPAD_MINUS) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo collapse event (keyboard numpad *) * @public */ sapcollapseall: { sName: "sapcollapseall", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === "*" || oEvent.key === "Multiply") && oEvent.location === "NUMPAD" : oEvent.keyCode == KeyCodes.NUMPAD_ASTERISK) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard escape * @public */ sapescape: { sName: "sapescape", aTypes: ["keydown"], fnCheck: function(oEvent) { // "Esc" is IE only return (oEvent.key ? oEvent.key === "Escape" || oEvent.key === "Esc" : oEvent.keyCode == KeyCodes.ESCAPE) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard tab (TAB + no modifier) * @public */ saptabnext: { sName: "saptabnext", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Tab" : oEvent.keyCode == KeyCodes.TAB) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for keyboard tab (TAB + shift modifier) * @public */ saptabprevious: { sName: "saptabprevious", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "Tab" : oEvent.keyCode == KeyCodes.TAB) && checkModifierKeys(oEvent, /*Ctrl*/ false, /*Alt*/ false, /*Shift*/ true); } }, /** * Pseudo event for pseudo skip forward (F6 + no modifier) * @public */ sapskipforward: { sName: "sapskipforward", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "F6" : oEvent.keyCode == KeyCodes.F6) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo skip back (F6 + shift modifier) * @public */ sapskipback: { sName: "sapskipback", aTypes: ["keydown"], fnCheck: function(oEvent) { return (oEvent.key ? oEvent.key === "F6" : oEvent.keyCode == KeyCodes.F6) && checkModifierKeys(oEvent, /*Ctrl*/ false, /*Alt*/ false, /*Shift*/ true); } }, //// contextmenu Shift-F10 hack //{sName: "sapcontextmenu", aTypes: ["keydown"], fnCheck: function(oEvent) { // return oEvent.key === "F10" && checkModifierKeys(oEvent, /*Ctrl*/false, /*Alt*/false, /*Shift*/true); //}}, /** * Pseudo event for pseudo 'decrease' event without modifiers (Ctrl, Alt or Shift) * @public */ sapdecrease: { sName: "sapdecrease", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && !hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && !hasModifierKeys(oEvent); } } var iPreviousKey = bRtl ? KeyCodes.ARROW_RIGHT : KeyCodes.ARROW_LEFT; return (oEvent.keyCode == iPreviousKey || oEvent.keyCode == KeyCodes.ARROW_DOWN) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pressing the '-' (minus) sign. * @public */ sapminus: { sName: "sapminus", aTypes: ["keypress"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === '-' || oEvent.key === 'Subtract') : String.fromCharCode(oEvent.which) == '-'); } }, /** * Pseudo event for pseudo 'decrease' event with modifiers (Ctrl, Alt or Shift) * @public */ sapdecreasemodifiers: { sName: "sapdecreasemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && hasModifierKeys(oEvent); } } var iPreviousKey = bRtl ? KeyCodes.ARROW_RIGHT : KeyCodes.ARROW_LEFT; return (oEvent.keyCode == iPreviousKey || oEvent.keyCode == KeyCodes.ARROW_DOWN) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'increase' event without modifiers (Ctrl, Alt or Shift) * @public */ sapincrease: { sName: "sapincrease", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); var iNextKey; if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && !hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && !hasModifierKeys(oEvent); } } iNextKey = bRtl ? KeyCodes.ARROW_LEFT : KeyCodes.ARROW_RIGHT; return (oEvent.keyCode == iNextKey || oEvent.keyCode == KeyCodes.ARROW_UP) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pressing the '+' (plus) sign. * @public */ sapplus: { sName: "sapplus", aTypes: ["keypress"], fnCheck: function(oEvent) { return (oEvent.key ? (oEvent.key === '+' || oEvent.key === 'Add') : String.fromCharCode(oEvent.which) == '+'); } }, /** * Pseudo event for pseudo 'increase' event with modifiers (Ctrl, Alt or Shift) * @public */ sapincreasemodifiers: { sName: "sapincreasemodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && hasModifierKeys(oEvent); } } var iNextKey = bRtl ? KeyCodes.ARROW_LEFT : KeyCodes.ARROW_RIGHT; return (oEvent.keyCode == iNextKey || oEvent.keyCode == KeyCodes.ARROW_UP) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'previous' event without modifiers (Ctrl, Alt or Shift) * @public */ sapprevious: { sName: "sapprevious", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && !hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && !hasModifierKeys(oEvent); } } var iPreviousKey = bRtl ? KeyCodes.ARROW_RIGHT : KeyCodes.ARROW_LEFT; return (oEvent.keyCode == iPreviousKey || oEvent.keyCode == KeyCodes.ARROW_UP) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'previous' event with modifiers (Ctrl, Alt or Shift) * @public */ sappreviousmodifiers: { sName: "sappreviousmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowUp" || oEvent.key === "Up") && hasModifierKeys(oEvent); } } var iPreviousKey = bRtl ? KeyCodes.ARROW_RIGHT : KeyCodes.ARROW_LEFT; return (oEvent.keyCode == iPreviousKey || oEvent.keyCode == KeyCodes.ARROW_UP) && hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'next' event without modifiers (Ctrl, Alt or Shift) * @public */ sapnext: { sName: "sapnext", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && !hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && !hasModifierKeys(oEvent); } } var iNextKey = bRtl ? KeyCodes.ARROW_LEFT : KeyCodes.ARROW_RIGHT; return (oEvent.keyCode == iNextKey || oEvent.keyCode == KeyCodes.ARROW_DOWN) && !hasModifierKeys(oEvent); } }, /** * Pseudo event for pseudo 'next' event with modifiers (Ctrl, Alt or Shift) * @public */ sapnextmodifiers: { sName: "sapnextmodifiers", aTypes: ["keydown"], fnCheck: function(oEvent) { var bRtl = sap.ui.getCore().getConfiguration().getRTL(); if (oEvent.key) { if (bRtl) { return (oEvent.key === "ArrowLeft" || oEvent.key === "Left" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && hasModifierKeys(oEvent); } else { return (oEvent.key === "ArrowRight" || oEvent.key === "Right" || oEvent.key === "ArrowDown" || oEvent.key === "Down") && hasModifierKeys(oEvent); } } var iNextKey = bRtl ? KeyCodes.ARROW_LEFT : KeyCodes.ARROW_RIGHT; return (oEvent.keyCode == iNextKey || oEvent.keyCode == KeyCodes.ARROW_DOWN) && hasModifierKeys(oEvent); } }, //// pseudo hotkey event //{sName: "saphotkey", aTypes: ["keydown"], fnCheck: function(oEvent) { // return false; //}}, /* TODO: hotkeys: all other events could be hotkeys if(UCF_KeyboardHelper.bIsValidHotkey(iKey, bCtrl, bAlt, bShift)) { if (iKey == KeyCodes.F1 && bNoModifiers) { //special handling for FF - in IE the help is handeled by onHelp if (UCF_System.sDevice == "ff1") { this.fireSapEvent(this.E_SAP_EVENTS.hotkey, oEvent); } } else if (bCtrlOnly && iKey == KeyCodes.C && document.selection) { //handle ctrl+c centrally if text is selected to allow to copy it instead of firing the hotkey var oTextRange = document.selection.createRange(); if (!oTextRange || oTextRange.text.length <= 0) { this.fireSapEvent(this.E_SAP_EVENTS.hotkey, oEvent); } } else { this.fireSapEvent(this.E_SAP_EVENTS.hotkey, oEvent); } } */ /* * Other pseudo events * @public */ /** * Pseudo event indicating delayed double click (e.g. for inline edit) * @public */ sapdelayeddoubleclick: { sName: "sapdelayeddoubleclick", aTypes: ["click"], fnCheck: function(oEvent) { var element = jQuery(oEvent.target); var currentTimestamp = oEvent.timeStamp; var data = element.data("sapdelayeddoubleclick_lastClickTimestamp"); var lastTimestamp = data || 0; element.data("sapdelayeddoubleclick_lastClickTimestamp", currentTimestamp); var diff = currentTimestamp - lastTimestamp; return (diff >= 300 && diff <= 1300); } } }; /** * Ordered array of the {@link module:sap/ui/events/PseudoEvents.events}. * * Order is significant as some check methods rely on the fact that they are tested before other methods. * The array is processed during event analysis (when classifying browser events as pseudo events). * @public */ PseudoEvents.order = ["sapdown", "sapdownmodifiers", "sapshow", "sapup", "sapupmodifiers", "saphide", "sapleft", "sapleftmodifiers", "sapright", "saprightmodifiers", "saphome", "saphomemodifiers", "saptop", "sapend", "sapendmodifiers", "sapbottom", "sappageup", "sappageupmodifiers", "sappagedown", "sappagedownmodifiers", "sapselect", "sapselectmodifiers", "sapspace", "sapspacemodifiers", "sapenter", "sapentermodifiers", "sapexpand", "sapbackspace", "sapbackspacemodifiers", "sapdelete", "sapdeletemodifiers", "sapexpandmodifiers", "sapcollapse", "sapcollapsemodifiers", "sapcollapseall", "sapescape", "saptabnext", "saptabprevious", "sapskipforward", "sapskipback", "sapprevious", "sappreviousmodifiers", "sapnext", "sapnextmodifiers", "sapdecrease", "sapminus", "sapdecreasemodifiers", "sapincrease", "sapplus", "sapincreasemodifiers", "sapdelayeddoubleclick"]; /** * Function for initialization of an Array containing all basic event types of the available pseudo events. * @private * @ui5-restricted sap.ui.core */ PseudoEvents.getBasicTypes = function() { var mEvents = PseudoEvents.events, aResult = []; for (var sName in mEvents) { if (mEvents[sName].aTypes) { for (var j = 0, js = mEvents[sName].aTypes.length; j < js; j++) { var sType = mEvents[sName].aTypes[j]; if (aResult.indexOf(sType) == -1) { aResult.push(sType); } } } } this.getBasicTypes = function() { return aResult.slice(); }; return aResult; }; /** * Array containing all basic event types of the available pseudo events. * @private * @ui5-restricted sap.ui.core */ PseudoEvents.addEvent = function(oEvent) { PseudoEvents.events[oEvent.sName] = oEvent; PseudoEvents.order.push(oEvent.sName); }; return PseudoEvents; });