From 1efeab69bb87295496516d91da1ca137d32261f6 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Fri, 1 Jan 2021 19:21:22 +0100 Subject: [PATCH] Adding a long press action on episodes --- src/app/app.module.ts | 4 +- .../episodes-list.component.html | 7 +-- .../episodes-list.component.scss | 1 + src/app/misc/long-press.directive.ts | 43 ++++++++++++++++++ static/favicon.ico | Bin 101607 -> 15406 bytes 5 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 src/app/misc/long-press.directive.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 91cfadd0..06b200a5 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -47,6 +47,7 @@ import { InfiniteScrollModule } from "ngx-infinite-scroll"; import { ShowGridComponent } from "./components/show-grid/show-grid.component"; import { MatBadgeModule } from "@angular/material/badge"; import { StartupService } from "./services/startup.service"; +import { LongPressDirective } from './misc/long-press.directive'; @NgModule({ @@ -69,7 +70,8 @@ import { StartupService } from "./services/startup.service"; FormatTimePipe, BufferToWidthPipe, VolumeToButtonPipe, - SupportedButtonPipe + SupportedButtonPipe, + LongPressDirective ], imports: [ BrowserModule, diff --git a/src/app/components/episodes-list/episodes-list.component.html b/src/app/components/episodes-list/episodes-list.component.html index 29438440..e9ca755b 100644 --- a/src/app/components/episodes-list/episodes-list.component.html +++ b/src/app/components/episodes-list/episodes-list.component.html @@ -1,12 +1,13 @@
+ [horizontal]="true" [scrollWindow]="false" + appLongPress (longPressed)="this.openMenu()"> - diff --git a/src/app/components/episodes-list/episodes-list.component.scss b/src/app/components/episodes-list/episodes-list.component.scss index 8fdf88a0..6e0c36bb 100644 --- a/src/app/components/episodes-list/episodes-list.component.scss +++ b/src/app/components/episodes-list/episodes-list.component.scss @@ -152,6 +152,7 @@ .moreBtn { display: block; + -webkit-touch-callout: none; } > div diff --git a/src/app/misc/long-press.directive.ts b/src/app/misc/long-press.directive.ts new file mode 100644 index 00000000..ae715406 --- /dev/null +++ b/src/app/misc/long-press.directive.ts @@ -0,0 +1,43 @@ +import { Directive, Output, EventEmitter, HostListener, HostBinding } from "@angular/core"; + +@Directive({ + selector: `[appLongPress]` +}) +export class LongPressDirective +{ + @Output() longPressed = new EventEmitter(); + timer: NodeJS.Timeout = null; + + @HostBinding('class.longpress') + get longPress(): boolean + { + return this.timer !== null; + } + + @HostListener("touchstart", ["$event"]) + @HostListener("mousedown", ["$event"]) + start(): void + { + this.timer = setTimeout(() => { + this.longPressed.emit(); + }, 500); + } + + @HostListener("touchend", ["$event"]) + @HostListener("mouseup", ["$event"]) + end(): void + { + clearTimeout(this.timer); + this.timer = null; + } + + @HostListener("contextmenu", ["$event"]) + context(event): void + { + event.preventDefault(); + } + + @HostBinding("style.-webkit-touch-callout") + defaultLongTouchEvent: string = "none"; + +} diff --git a/static/favicon.ico b/static/favicon.ico index 41783f57dad4c98768006dc3a051a818dacacd8c..61e160247cb9651a48c86119ecae4e3a7d0558cc 100644 GIT binary patch literal 15406 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 D&GxeA literal 101607 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