mirror of
https://github.com/Tzahi12345/YoutubeDL-Material.git
synced 2026-04-14 19:21:28 +03:00
Added context menu on right click of the unified file cards, with options to open a file in the player or do so in a new tab
This commit is contained in:
@@ -1,7 +1,19 @@
|
|||||||
<div (mouseover)="elevated=true" (mouseout)="elevated=false" style="position: relative; width: fit-content;">
|
<div (mouseover)="elevated=true" (mouseout)="elevated=false" (contextmenu)="onRightClick($event)" style="position: relative; width: fit-content;">
|
||||||
<div *ngIf="!loading" class="download-time"><mat-icon class="audio-video-icon">{{(file_obj.type === 'audio' || file_obj.isAudio) ? 'audiotrack' : 'movie'}}</mat-icon> {{file_obj.registered | date:'shortDate'}}</div>
|
<div *ngIf="!loading" class="download-time"><mat-icon class="audio-video-icon">{{(file_obj.type === 'audio' || file_obj.isAudio) ? 'audiotrack' : 'movie'}}</mat-icon> {{file_obj.registered | date:'shortDate'}}</div>
|
||||||
<div *ngIf="loading" class="download-time" style="width: 75%; margin-top: 5px;"><content-loader [primaryColor]="theme.ghost_primary" [secondaryColor]="theme.ghost_secondary" width="250" height="30"><svg:rect x="0" y="0" rx="3" ry="3" width="250" height="30" /></content-loader></div>
|
<div *ngIf="loading" class="download-time" style="width: 75%; margin-top: 5px;"><content-loader [primaryColor]="theme.ghost_primary" [secondaryColor]="theme.ghost_secondary" width="250" height="30"><svg:rect x="0" y="0" rx="3" ry="3" width="250" height="30" /></content-loader></div>
|
||||||
|
<!-- The context menu trigger must be kept above the "more info" menu -->
|
||||||
|
<div style="visibility: hidden; position: fixed"
|
||||||
|
[style.left]="contextMenuPosition.x"
|
||||||
|
[style.top]="contextMenuPosition.y"
|
||||||
|
[matMenuTriggerFor]="context_menu">
|
||||||
|
</div>
|
||||||
<button [disabled]="loading" [matMenuTriggerFor]="action_menu" class="menuButton" mat-icon-button><mat-icon>more_vert</mat-icon></button>
|
<button [disabled]="loading" [matMenuTriggerFor]="action_menu" class="menuButton" mat-icon-button><mat-icon>more_vert</mat-icon></button>
|
||||||
|
<mat-menu #context_menu>
|
||||||
|
<ng-container *ngIf="!loading">
|
||||||
|
<button (click)="navigateToFile($event)" mat-menu-item><mat-icon>open_in_browser</mat-icon><ng-container i18n="Open file button">Open file</ng-container></button>
|
||||||
|
<button (click)="navigateToFile({ctrlKey: true})" mat-menu-item><mat-icon>open_in_new</mat-icon><ng-container i18n="Open file in new tab">Open file in new tab</ng-container></button>
|
||||||
|
</ng-container>
|
||||||
|
</mat-menu>
|
||||||
<mat-menu #action_menu="matMenu">
|
<mat-menu #action_menu="matMenu">
|
||||||
<ng-container *ngIf="!is_playlist && !loading">
|
<ng-container *ngIf="!is_playlist && !loading">
|
||||||
<button (click)="openFileInfoDialog()" mat-menu-item><mat-icon>info</mat-icon><ng-container i18n="Video info button">Info</ng-container></button>
|
<button (click)="openFileInfoDialog()" mat-menu-item><mat-icon>info</mat-icon><ng-container i18n="Video info button">Info</ng-container></button>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
|
import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { VideoInfoDialogComponent } from 'app/dialogs/video-info-dialog/video-info-dialog.component';
|
import { VideoInfoDialogComponent } from 'app/dialogs/video-info-dialog/video-info-dialog.component';
|
||||||
import { DomSanitizer } from '@angular/platform-browser';
|
import { DomSanitizer } from '@angular/platform-browser';
|
||||||
|
import { MatMenuTrigger } from '@angular/material/menu';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-unified-file-card',
|
selector: 'app-unified-file-card',
|
||||||
@@ -33,6 +34,9 @@ export class UnifiedFileCardComponent implements OnInit {
|
|||||||
@Output() deleteFile = new EventEmitter<any>();
|
@Output() deleteFile = new EventEmitter<any>();
|
||||||
@Output() editPlaylist = new EventEmitter<any>();
|
@Output() editPlaylist = new EventEmitter<any>();
|
||||||
|
|
||||||
|
@ViewChild(MatMenuTrigger) contextMenu: MatMenuTrigger;
|
||||||
|
contextMenuPosition = { x: '0px', y: '0px' };
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Planned sizes:
|
Planned sizes:
|
||||||
small: 150x175
|
small: 150x175
|
||||||
@@ -87,6 +91,15 @@ export class UnifiedFileCardComponent implements OnInit {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onRightClick(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
this.contextMenuPosition.x = event.clientX + 'px';
|
||||||
|
this.contextMenuPosition.y = event.clientY + 'px';
|
||||||
|
this.contextMenu.menuData = { 'item': {id: 1, name: 'hi'} };
|
||||||
|
this.contextMenu.menu.focusFirstItem('mouse');
|
||||||
|
this.contextMenu.openMenu();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function fancyTimeFormat(time) {
|
function fancyTimeFormat(time) {
|
||||||
|
|||||||
Reference in New Issue
Block a user