Merge "Remove KeyboardShortcutMixin from gr-button"
diff --git a/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts b/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts
index 6a7c05b..a25a3dc 100644
--- a/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts
+++ b/polygerrit-ui/app/elements/shared/gr-button/gr-button.ts
@@ -20,8 +20,12 @@
import {customElement, property, computed, observe} from '@polymer/decorators';
import {htmlTemplate} from './gr-button_html';
import {TooltipMixin} from '../../../mixins/gr-tooltip-mixin/gr-tooltip-mixin';
-import {KeyboardShortcutMixin} from '../../../mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin';
-import {PolymerEvent, getEventPath} from '../../../utils/dom-util';
+import {
+ PolymerEvent,
+ getEventPath,
+ getKeyboardEvent,
+ isModifierPressed,
+} from '../../../utils/dom-util';
import {appContext} from '../../../services/app-context';
import {ReportingService} from '../../../services/gr-reporting/gr-reporting';
import {CustomKeyboardEvent} from '../../../types/events';
@@ -33,9 +37,7 @@
}
@customElement('gr-button')
-export class GrButton extends KeyboardShortcutMixin(
- TooltipMixin(PolymerElement)
-) {
+export class GrButton extends TooltipMixin(PolymerElement) {
static get template() {
return htmlTemplate;
}
@@ -121,10 +123,10 @@
}
_handleKeydown(e: CustomKeyboardEvent) {
- if (this.modifierPressed(e)) {
+ if (isModifierPressed(e)) {
return;
}
- e = this.getKeyboardEvent(e);
+ e = getKeyboardEvent(e);
// Handle `enter`, `space`.
if (e.keyCode === 13 || e.keyCode === 32) {
e.preventDefault();
diff --git a/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts b/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
index 1bece26..494f0f04 100644
--- a/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
+++ b/polygerrit-ui/app/mixins/keyboard-shortcut-mixin/keyboard-shortcut-mixin.ts
@@ -103,6 +103,7 @@
import {property} from '@polymer/decorators';
import {PolymerElement} from '@polymer/polymer';
import {Constructor} from '../../utils/common-util';
+import {getKeyboardEvent, isModifierPressed} from '../../utils/dom-util';
import {
CustomKeyboardEvent,
ShortcutTriggeredEventDetail,
@@ -531,19 +532,6 @@
'Emoji dropdown'
);
-// Must be declared outside behavior implementation to be accessed inside
-// behavior functions.
-
-function getKeyboardEvent(e: CustomKeyboardEvent): CustomKeyboardEvent {
- const event = dom(e.detail ? e.detail.keyboardEvent : e);
- // TODO(TS): worth checking if this still holds or not, if no, remove this.
- // When e is a keyboardEvent, e.event is not null.
- if ('event' in event && (event as CustomKeyboardEvent).event) {
- return (event as CustomKeyboardEvent).event;
- }
- return event as CustomKeyboardEvent;
-}
-
/**
* Shortcut manager, holds all hosts, bindings and listeners.
*/
@@ -817,12 +805,7 @@
*/
const e = getKeyboardEvent(event);
return (
- e.altKey ||
- e.ctrlKey ||
- e.metaKey ||
- e.shiftKey ||
- !!this._inGoKeyMode() ||
- !!this.inVKeyMode()
+ isModifierPressed(e) || !!this._inGoKeyMode() || !!this.inVKeyMode()
);
}
diff --git a/polygerrit-ui/app/utils/dom-util.ts b/polygerrit-ui/app/utils/dom-util.ts
index 3affef7..c119bf8 100644
--- a/polygerrit-ui/app/utils/dom-util.ts
+++ b/polygerrit-ui/app/utils/dom-util.ts
@@ -15,8 +15,9 @@
* limitations under the License.
*/
-import {EventApi} from '@polymer/polymer/lib/legacy/polymer.dom';
+import {dom, EventApi} from '@polymer/polymer/lib/legacy/polymer.dom';
import {check} from './common-util';
+import {CustomKeyboardEvent} from '../types/events';
/**
* Event emitted from polymer elements.
@@ -292,3 +293,18 @@
el.classList.remove(className);
}
}
+
+export function isModifierPressed(event: CustomKeyboardEvent) {
+ const e = getKeyboardEvent(event);
+ return e.altKey || e.ctrlKey || e.metaKey || e.shiftKey;
+}
+
+export function getKeyboardEvent(e: CustomKeyboardEvent): CustomKeyboardEvent {
+ const event = dom(e.detail ? e.detail.keyboardEvent : e);
+ // TODO(TS): worth checking if this still holds or not, if no, remove this.
+ // When e is a keyboardEvent, e.event is not null.
+ if ('event' in event && (event as CustomKeyboardEvent).event) {
+ return (event as CustomKeyboardEvent).event;
+ }
+ return event as CustomKeyboardEvent;
+}