main #13
					 7 changed files with 84 additions and 20 deletions
				
			
		feat(dashboard): add options menu and improve layout
				commit
				
					
					
						ba520eea10
					
				
			
		|  | @ -1,14 +1,15 @@ | |||
| <div class="mx-auto container"> | ||||
|   <app-navbar></app-navbar> | ||||
|   <div class="overflow-x-auto"> | ||||
|     <button | ||||
|       mat-flat-button | ||||
|       color="secondary" | ||||
|       class="my-3" | ||||
|       (click)="createLink()" | ||||
|     > | ||||
|       Create new Link | ||||
|     </button> | ||||
|   <div class=""> | ||||
|     <div class="flex flex-row"> | ||||
|       <button mat-flat-button color="secondary" class="my-3" (click)="createLink()"> | ||||
|         Create new Link | ||||
|       </button> | ||||
| 
 | ||||
|       <div class="ml-auto my-3"> | ||||
|         <app-options-menu></app-options-menu> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|     <mat-card appearance="outlined"> | ||||
|       <mat-card-content> | ||||
|  | @ -42,11 +43,7 @@ | |||
|           <ng-container matColumnDef="shortLink"> | ||||
|             <th mat-header-cell *matHeaderCellDef>Short link</th> | ||||
|             <td mat-cell *matCellDef="let element"> | ||||
|               <button | ||||
|                 mat-flat-button | ||||
|                 class="my-3" | ||||
|                 (click)="copyLink(element.id)" | ||||
|               > | ||||
|               <button mat-flat-button class="my-3" (click)="copyLink(element.id)"> | ||||
|                 Copy short link | ||||
|               </button> | ||||
|             </td> | ||||
|  | @ -55,11 +52,7 @@ | |||
|           <ng-container matColumnDef="actions"> | ||||
|             <th mat-header-cell *matHeaderCellDef>Actions</th> | ||||
|             <td mat-cell *matCellDef="let element"> | ||||
|               <button | ||||
|                 mat-flat-button | ||||
|                 color="warn" | ||||
|                 (click)="deleteLink(element)" | ||||
|               > | ||||
|               <button mat-flat-button color="warn" (click)="deleteLink(element)"> | ||||
|                 Delete | ||||
|               </button> | ||||
|             </td> | ||||
|  |  | |||
|  | @ -10,10 +10,12 @@ import { MatButtonModule } from '@angular/material/button'; | |||
| import { MatDialog, MatDialogModule } from '@angular/material/dialog'; | ||||
| import { ConfirmationModalComponent } from '../confirmation-modal/confirmation-modal.component'; | ||||
| import { MatSnackBar } from '@angular/material/snack-bar'; | ||||
| import { OptionsMenuComponent } from '../options-menu/options-menu.component'; | ||||
| import { LogoutService } from '../service/logout.service'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'app-dashboard', | ||||
|   imports: [NavbarComponent, MatTableModule, MatCardModule, MatButtonModule], | ||||
|   imports: [NavbarComponent, MatTableModule, MatCardModule, MatButtonModule, OptionsMenuComponent], | ||||
|   templateUrl: './dashboard.component.html', | ||||
|   styleUrl: './dashboard.component.css', | ||||
| }) | ||||
|  |  | |||
							
								
								
									
										0
									
								
								src/app/options-menu/options-menu.component.css
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								src/app/options-menu/options-menu.component.css
									
										
									
									
									
										Normal file
									
								
							
							
								
								
									
										9
									
								
								src/app/options-menu/options-menu.component.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/app/options-menu/options-menu.component.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| <button mat-icon-button [matMenuTriggerFor]="menu" aria-label="Example icon-button with a menu"> | ||||
|   <mat-icon>more_vert</mat-icon> | ||||
| </button> | ||||
| <mat-menu #menu="matMenu"> | ||||
|   <button (click)="logout()" mat-menu-item> | ||||
|     <mat-icon>logout</mat-icon> | ||||
|     <span>Logout</span> | ||||
|   </button> | ||||
| </mat-menu> | ||||
							
								
								
									
										23
									
								
								src/app/options-menu/options-menu.component.spec.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								src/app/options-menu/options-menu.component.spec.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| import { ComponentFixture, TestBed } from '@angular/core/testing'; | ||||
| 
 | ||||
| import { OptionsMenuComponent } from './options-menu.component'; | ||||
| 
 | ||||
| describe('OptionsMenuComponent', () => { | ||||
|   let component: OptionsMenuComponent; | ||||
|   let fixture: ComponentFixture<OptionsMenuComponent>; | ||||
| 
 | ||||
|   beforeEach(async () => { | ||||
|     await TestBed.configureTestingModule({ | ||||
|       imports: [OptionsMenuComponent] | ||||
|     }) | ||||
|     .compileComponents(); | ||||
| 
 | ||||
|     fixture = TestBed.createComponent(OptionsMenuComponent); | ||||
|     component = fixture.componentInstance; | ||||
|     fixture.detectChanges(); | ||||
|   }); | ||||
| 
 | ||||
|   it('should create', () => { | ||||
|     expect(component).toBeTruthy(); | ||||
|   }); | ||||
| }); | ||||
							
								
								
									
										19
									
								
								src/app/options-menu/options-menu.component.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								src/app/options-menu/options-menu.component.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| import { Component } from '@angular/core'; | ||||
| import {MatIconModule} from '@angular/material/icon'; | ||||
| import {MatMenuModule} from '@angular/material/menu'; | ||||
| import {MatButtonModule} from '@angular/material/button'; | ||||
| import { LogoutService } from '../service/logout.service'; | ||||
| 
 | ||||
| @Component({ | ||||
|   selector: 'app-options-menu', | ||||
|   imports: [MatIconModule, MatMenuModule, MatButtonModule], | ||||
|   templateUrl: './options-menu.component.html', | ||||
|   styleUrl: './options-menu.component.css' | ||||
| }) | ||||
| export class OptionsMenuComponent { | ||||
|   constructor(private logoutService: LogoutService) {} | ||||
| 
 | ||||
|   logout() { | ||||
|     this.logoutService.logout(); | ||||
|   } | ||||
| } | ||||
							
								
								
									
										18
									
								
								src/app/service/logout.service.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/app/service/logout.service.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| import { Injectable } from "@angular/core"; | ||||
| import PocketBase from 'pocketbase'; | ||||
| import { environment } from "../../environments/environment"; | ||||
| import { Router } from "@angular/router"; | ||||
| 
 | ||||
| @Injectable({ | ||||
|   providedIn: 'root', | ||||
| }) | ||||
| export class LogoutService { | ||||
|   private pb = new PocketBase(environment.POCKETBASE); | ||||
| 
 | ||||
|   constructor(private router: Router) { } | ||||
| 
 | ||||
|   logout() { | ||||
|     this.pb.authStore.clear(); | ||||
|     this.router.navigate(['']); | ||||
|   } | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue