Make Esc close popover
This commit is contained in:
committed by
József Farkas
parent
28159ec9c0
commit
0081e3e337
@@ -1,6 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
Component, ElementRef, EventEmitter, Input, OnChanges, Output, SimpleChanges, ViewChild, animate, keyframes,
|
Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewChild,
|
||||||
state, style, transition, trigger
|
animate, keyframes, state, style, transition, trigger
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
import { Store } from '@ngrx/store';
|
import { Store } from '@ngrx/store';
|
||||||
@@ -49,7 +49,7 @@ enum TabName {
|
|||||||
transition('opened => closed', [
|
transition('opened => closed', [
|
||||||
animate('200ms ease-out', keyframes([
|
animate('200ms ease-out', keyframes([
|
||||||
style({ transform: 'translateY(0)', visibility: 'visible', opacity: 1, offset: 0 }),
|
style({ transform: 'translateY(0)', visibility: 'visible', opacity: 1, offset: 0 }),
|
||||||
style({ transform: 'translateY(30px)', visibility: 'hidden', opacity: 0 , offset: 1 })
|
style({ transform: 'translateY(30px)', visibility: 'hidden', opacity: 0, offset: 1 })
|
||||||
]))
|
]))
|
||||||
]),
|
]),
|
||||||
transition('closed => opened', [
|
transition('closed => opened', [
|
||||||
@@ -143,6 +143,10 @@ export class PopoverComponent implements OnChanges {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@HostListener('keydown.escape') onEscape(): void {
|
||||||
|
this.cancel.emit();
|
||||||
|
}
|
||||||
|
|
||||||
selectTab(tab: TabName): void {
|
selectTab(tab: TabName): void {
|
||||||
this.activeTab = tab;
|
this.activeTab = tab;
|
||||||
}
|
}
|
||||||
@@ -156,7 +160,7 @@ export class PopoverComponent implements OnChanges {
|
|||||||
const popover: HTMLElement = this.popoverHost.nativeElement;
|
const popover: HTMLElement = this.popoverHost.nativeElement;
|
||||||
let newLeft: number = this.keyPosition.left + (this.keyPosition.width / 2);
|
let newLeft: number = this.keyPosition.left + (this.keyPosition.width / 2);
|
||||||
|
|
||||||
this.leftArrow = newLeft < offsetLeft;
|
this.leftArrow = newLeft < offsetLeft;
|
||||||
this.rightArrow = (newLeft + popover.offsetWidth) > offsetLeft + this.wrapPosition.width;
|
this.rightArrow = (newLeft + popover.offsetWidth) > offsetLeft + this.wrapPosition.width;
|
||||||
|
|
||||||
if (this.leftArrow) {
|
if (this.leftArrow) {
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ export class CaptureKeystrokeButtonComponent {
|
|||||||
|
|
||||||
if (this.record) {
|
if (this.record) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
this.first = false;
|
this.first = false;
|
||||||
|
|
||||||
if (this.captureService.hasMap(code)) {
|
if (this.captureService.hasMap(code)) {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
[keybindAnimationEnabled]="keybindAnimationEnabled"
|
[keybindAnimationEnabled]="keybindAnimationEnabled"
|
||||||
(keyClick)="onKeyClick($event.moduleId, $event.keyId, $event.keyTarget)"
|
(keyClick)="onKeyClick($event.moduleId, $event.keyId, $event.keyTarget)"
|
||||||
(keyHover)="onKeyHover($event.moduleId, $event.event, $event.over, $event.keyId)"></keyboard-slider>
|
(keyHover)="onKeyHover($event.moduleId, $event.event, $event.over, $event.keyId)"></keyboard-slider>
|
||||||
<popover [visible]="popoverShown" [keyPosition]="keyPosition" [wrapPosition]="wrapPosition" [defaultKeyAction]="popoverInitKeyAction"
|
<popover tabindex="0" [visible]="popoverShown" [keyPosition]="keyPosition" [wrapPosition]="wrapPosition" [defaultKeyAction]="popoverInitKeyAction"
|
||||||
[currentKeymap]="keymap" [currentLayer]="currentLayer" (cancel)="hidePopover()" (remap)="onRemap($event)"></popover>
|
[currentKeymap]="keymap" [currentLayer]="currentLayer" (cancel)="hidePopover()" (remap)="onRemap($event)"></popover>
|
||||||
<div class="tooltip bottom"
|
<div class="tooltip bottom"
|
||||||
[class.in]="tooltipData.show"
|
[class.in]="tooltipData.show"
|
||||||
|
|||||||
@@ -2,11 +2,13 @@ import {
|
|||||||
ChangeDetectionStrategy,
|
ChangeDetectionStrategy,
|
||||||
Component,
|
Component,
|
||||||
ElementRef,
|
ElementRef,
|
||||||
|
Renderer,
|
||||||
HostBinding,
|
HostBinding,
|
||||||
HostListener,
|
HostListener,
|
||||||
Input,
|
Input,
|
||||||
OnChanges,
|
OnChanges,
|
||||||
OnInit,
|
OnInit,
|
||||||
|
ViewChild,
|
||||||
SimpleChanges
|
SimpleChanges
|
||||||
} from '@angular/core';
|
} from '@angular/core';
|
||||||
|
|
||||||
@@ -31,6 +33,7 @@ import { camelCaseToSentence, capitalizeFirstLetter } from '../../../util';
|
|||||||
|
|
||||||
import { AppState } from '../../../store';
|
import { AppState } from '../../../store';
|
||||||
import { KeymapActions } from '../../../store/actions';
|
import { KeymapActions } from '../../../store/actions';
|
||||||
|
import { PopoverComponent } from '../../popover';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'svg-keyboard-wrap',
|
selector: 'svg-keyboard-wrap',
|
||||||
@@ -43,6 +46,8 @@ export class SvgKeyboardWrapComponent implements OnInit, OnChanges {
|
|||||||
@Input() popoverEnabled: boolean = true;
|
@Input() popoverEnabled: boolean = true;
|
||||||
@Input() tooltipEnabled: boolean = false;
|
@Input() tooltipEnabled: boolean = false;
|
||||||
|
|
||||||
|
@ViewChild(PopoverComponent, { read: ElementRef}) popover: ElementRef;
|
||||||
|
|
||||||
private popoverShown: boolean;
|
private popoverShown: boolean;
|
||||||
private keyEditConfig: { moduleId: number, keyId: number };
|
private keyEditConfig: { moduleId: number, keyId: number };
|
||||||
private popoverInitKeyAction: KeyAction;
|
private popoverInitKeyAction: KeyAction;
|
||||||
@@ -70,7 +75,12 @@ export class SvgKeyboardWrapComponent implements OnInit, OnChanges {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(private store: Store<AppState>, private mapper: MapperService, private element: ElementRef) {
|
constructor(
|
||||||
|
private store: Store<AppState>,
|
||||||
|
private mapper: MapperService,
|
||||||
|
private element: ElementRef,
|
||||||
|
private renderer: Renderer
|
||||||
|
) {
|
||||||
this.keyEditConfig = {
|
this.keyEditConfig = {
|
||||||
moduleId: undefined,
|
moduleId: undefined,
|
||||||
keyId: undefined
|
keyId: undefined
|
||||||
@@ -145,6 +155,7 @@ export class SvgKeyboardWrapComponent implements OnInit, OnChanges {
|
|||||||
this.keyPosition = this.keyElement.getBoundingClientRect();
|
this.keyPosition = this.keyElement.getBoundingClientRect();
|
||||||
this.popoverInitKeyAction = keyAction;
|
this.popoverInitKeyAction = keyAction;
|
||||||
this.popoverShown = true;
|
this.popoverShown = true;
|
||||||
|
this.renderer.invokeElementMethod(this.popover.nativeElement, 'focus');
|
||||||
}
|
}
|
||||||
|
|
||||||
showTooltip(keyAction: KeyAction, event: MouseEvent): void {
|
showTooltip(keyAction: KeyAction, event: MouseEvent): void {
|
||||||
|
|||||||
Reference in New Issue
Block a user