|
@@ -1,12 +1,3 @@
|
|
|
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * * The content below * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * Delete the template below * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * to get started with your project! * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
|
|
|
-
|
|
|
|
|
<style>
|
|
<style>
|
|
|
|
|
|
|
|
</style>
|
|
</style>
|
|
@@ -15,71 +6,7 @@
|
|
|
<ng-container *ngTemplateOutlet="toolbarItems"/>
|
|
<ng-container *ngTemplateOutlet="toolbarItems"/>
|
|
|
</mat-toolbar>
|
|
</mat-toolbar>
|
|
|
|
|
|
|
|
-<ng-template #toolbarItems>
|
|
|
|
|
- @for (item of [
|
|
|
|
|
- {id:'menu',icon:'menu',title:'menu',key:'menu'},
|
|
|
|
|
- {id:'home',icon:'home',link:'/',title:'Home',key:'home_page'},
|
|
|
|
|
- {id:'notifs',icon:'notifications',title:'Notifications',key:'notifs',menu:notifications},
|
|
|
|
|
- {id:'chat'},
|
|
|
|
|
- {id:'user',icon:'account_circle',menu:userMenu,title:'User & Settings',key:'#{user} & #{settings}'}
|
|
|
|
|
- ]; track $index) {
|
|
|
|
|
- @switch (true) {
|
|
|
|
|
- @case (item.link !== undefined) {
|
|
|
|
|
- <div id="{{item.id}}" class="toolbar-item" [routerLink]="item.link" replaceUrl="{{item.id==='home'?'true':'false'}}">
|
|
|
|
|
- <mat-icon>{{item.icon}}</mat-icon>
|
|
|
|
|
- <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- @case (item.id === 'menu') {
|
|
|
|
|
- <div id="{{item.id}}" class="toolbar-item" (click)="sidenav.toggle()">
|
|
|
|
|
- <mat-icon>{{item.icon}}</mat-icon>
|
|
|
|
|
- <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- @case (item.id === 'user') {
|
|
|
|
|
- <div id="{{item.id}}" class="toolbar-item" [matMenuTriggerFor]="item.menu">
|
|
|
|
|
- @if (loginService?.user?.pictures?.length > 0) {
|
|
|
|
|
- <img title="{{'profile_pic'|tr:'Profile Picture'}}" class="profile-pic" src="{{loginService?.user?.pictures[0]?.value}}">
|
|
|
|
|
- }
|
|
|
|
|
- @else {
|
|
|
|
|
- <mat-icon id="{{item.key}}-icon">{{item.icon}}</mat-icon>
|
|
|
|
|
- }
|
|
|
|
|
- <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- @case (item.menu !== undefined) {
|
|
|
|
|
- <div id="{{item.id}}" class="toolbar-item" [matMenuTriggerFor]="item.menu">
|
|
|
|
|
- <mat-icon id="{{item.key}}-icon">{{item.icon}}</mat-icon>
|
|
|
|
|
- <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
- @if (item.key === 'notifs' && notificationCount > 0) {
|
|
|
|
|
- <div class="count-aria">{{notificationCount}}</div>
|
|
|
|
|
- }
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- @case (item.id === 'chat') {
|
|
|
|
|
- <div id="{{item.id}}" class="toolbar-item" (click)="mobile.toggleChat()">
|
|
|
|
|
- <mat-icon>chat</mat-icon>
|
|
|
|
|
- <mat-label>{{('fis_ai_chat'|tr:'FIS A.I. Chat')}}</mat-label>
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- @default {
|
|
|
|
|
- <div id="{{item.id}}" class="toolbar-item">
|
|
|
|
|
- <mat-icon>{{item.icon}}</mat-icon>
|
|
|
|
|
- <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
- </div>
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-</ng-template>
|
|
|
|
|
-
|
|
|
|
|
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * * The content above * * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * is only a placeholder * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * and can be replaced. * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * End of Placeholder * * * * * * * * * * * * -->
|
|
|
|
|
-<!-- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -->
|
|
|
|
|
-<div [ngClass]="theme" class="container">
|
|
|
|
|
|
|
+<div class="container">
|
|
|
<div class="main">
|
|
<div class="main">
|
|
|
<mat-sidenav-container>
|
|
<mat-sidenav-container>
|
|
|
<mat-sidenav #sidenav [opened]="loginService?.user" [mode]="cs.isMobileClient? 'over': 'side'" class="sidenav">
|
|
<mat-sidenav #sidenav [opened]="loginService?.user" [mode]="cs.isMobileClient? 'over': 'side'" class="sidenav">
|
|
@@ -97,7 +24,7 @@
|
|
|
}
|
|
}
|
|
|
<ng-container *ngTemplateOutlet="routeMenu;context:{$implicit:'GENERAL',items:[
|
|
<ng-container *ngTemplateOutlet="routeMenu;context:{$implicit:'GENERAL',items:[
|
|
|
{path:'/company',icon:'business',title:{key:'company',default:'Company'}},
|
|
{path:'/company',icon:'business',title:{key:'company',default:'Company'}},
|
|
|
- {path:'/settings',icon:'settings',title:{key:'settings',default:'Settings'}}
|
|
|
|
|
|
|
+ {path:'/settings',icon:'settings',title:{key:'settings',default:'Settings'},menu:settings}
|
|
|
]}"/>
|
|
]}"/>
|
|
|
</mat-sidenav>
|
|
</mat-sidenav>
|
|
|
<mat-sidenav-content>
|
|
<mat-sidenav-content>
|
|
@@ -130,11 +57,12 @@
|
|
|
<mat-label class="route-menu-category">{{category.key?(category.key|tr:category.default):category}}</mat-label>
|
|
<mat-label class="route-menu-category">{{category.key?(category.key|tr:category.default):category}}</mat-label>
|
|
|
<div class="route-menu">
|
|
<div class="route-menu">
|
|
|
@for (item of items; track item) {
|
|
@for (item of items; track item) {
|
|
|
- <button mat-button [routerLink]="[item.path]"
|
|
|
|
|
|
|
+ <button mat-button [routerLink]="item.path"
|
|
|
(click)="cs.isMobileClient? sidenav.close():undefined"
|
|
(click)="cs.isMobileClient? sidenav.close():undefined"
|
|
|
[queryParams]="item.queryParams"
|
|
[queryParams]="item.queryParams"
|
|
|
matBadge="{{item.badge}}" replaceUrl="{{item.path==='/'?'true':'false'}}"
|
|
matBadge="{{item.badge}}" replaceUrl="{{item.path==='/'?'true':'false'}}"
|
|
|
[ngClass]="{'active':router.isActive(item.path,{paths:'exact',queryParams:'ignored'})}"
|
|
[ngClass]="{'active':router.isActive(item.path,{paths:'exact',queryParams:'ignored'})}"
|
|
|
|
|
+ [matMenuTriggerFor]="item.menu"
|
|
|
>
|
|
>
|
|
|
<mat-icon>{{item.icon}}</mat-icon>
|
|
<mat-icon>{{item.icon}}</mat-icon>
|
|
|
<span>{{item.title.key?(item.title.key|tr:item.title.default):item.title}}</span>
|
|
<span>{{item.title.key?(item.title.key|tr:item.title.default):item.title}}</span>
|
|
@@ -143,6 +71,73 @@
|
|
|
</div>
|
|
</div>
|
|
|
</ng-template>
|
|
</ng-template>
|
|
|
|
|
|
|
|
|
|
+<ng-template #toolbarItems>
|
|
|
|
|
+ <div mat-icon-button class="toolbar-item" style="border-radius: 50%;border:1px solid;"
|
|
|
|
|
+ [style.color]="colorScheme.color"
|
|
|
|
|
+ matTooltip="{{'select_color'|tr:'Select color'}}" (click)="colorPop.toggle($event)">
|
|
|
|
|
+ <span style="font-size: x-large;">●</span>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <div class="toolbar-item" mat-icon-button matTooltip="{{'select_theme'|tr:'Select theme'}}" [matMenuTriggerFor]="theme">
|
|
|
|
|
+ <mat-icon>{{themeMode}}</mat-icon>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ @for (item of [
|
|
|
|
|
+ {id:'home',icon:'home',path:'/',title:'Home',key:'home_page'},
|
|
|
|
|
+ {id:'notifs',icon:'notifications',title:'Notifications',key:'notifs',menu:notifications},
|
|
|
|
|
+ {id:'user',icon:'account_circle',menu:userMenu,title:'User & Settings',key:'#{user} & #{settings}'}
|
|
|
|
|
+ ]; track $index) {
|
|
|
|
|
+ @switch (true) {
|
|
|
|
|
+ @case (item.path !== undefined) {
|
|
|
|
|
+ <div id="{{item.id}}" class="toolbar-item" [routerLink]="item.path" replaceUrl="{{item.id==='home'?'true':'false'}}">
|
|
|
|
|
+ <mat-icon>{{item.icon}}</mat-icon>
|
|
|
|
|
+ <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ }
|
|
|
|
|
+ @case (item.id === 'user') {
|
|
|
|
|
+ <div id="{{item.id}}" class="toolbar-item" [matMenuTriggerFor]="item.menu">
|
|
|
|
|
+ @if (loginService?.user?.pictures?.length > 0) {
|
|
|
|
|
+ <img title="{{'profile_pic'|tr:'Profile Picture'}}" class="profile-pic" src="{{loginService?.user?.pictures[0]?.value}}">
|
|
|
|
|
+ }
|
|
|
|
|
+ @else {
|
|
|
|
|
+ <mat-icon id="{{item.key}}-icon">{{item.icon}}</mat-icon>
|
|
|
|
|
+ }
|
|
|
|
|
+ <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ }
|
|
|
|
|
+ @default {
|
|
|
|
|
+ <div id="{{item.id}}" class="toolbar-item">
|
|
|
|
|
+ <mat-icon>{{item.icon}}</mat-icon>
|
|
|
|
|
+ <mat-label>{{(item.key|tr:item.title)}}</mat-label>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+</ng-template>
|
|
|
|
|
+<p-popover #colorPop>
|
|
|
|
|
+ @for(item of [
|
|
|
|
|
+ {scheme:'crimson',color:'#7c0024'},
|
|
|
|
|
+ {scheme:'blue',color:'#00405d'}
|
|
|
|
|
+ ]; track item) {
|
|
|
|
|
+ <button mat-button (click)="changeColorScheme(item);colorPop.hide();">
|
|
|
|
|
+ <span class="color-circle" style="font-size: 40pt;border-radius:50%" [style.color]="item.color">●</span>
|
|
|
|
|
+ </button>
|
|
|
|
|
+ }
|
|
|
|
|
+</p-popover>
|
|
|
|
|
+
|
|
|
|
|
+<mat-menu #theme>
|
|
|
|
|
+ <button mat-menu-item (click)="cs.theming.changeTheme('system'); themeMode='computer'">
|
|
|
|
|
+ <mat-icon>computer</mat-icon>
|
|
|
|
|
+ {{'system_color'|tr:'System Color'}}
|
|
|
|
|
+ </button>
|
|
|
|
|
+ <button mat-menu-item (click)="cs.theming.changeTheme('light'); themeMode='light_mode'">
|
|
|
|
|
+ <mat-icon>light_mode</mat-icon>
|
|
|
|
|
+ {{'light_mode'|tr:'Light Mode'}}
|
|
|
|
|
+ </button>
|
|
|
|
|
+ <button mat-menu-item (click)="cs.theming.changeTheme('dark'); themeMode='dark_mode'">
|
|
|
|
|
+ <mat-icon>dark_mode</mat-icon>
|
|
|
|
|
+ {{'dark_mode'|tr:'Dark Mode'}}
|
|
|
|
|
+ </button>
|
|
|
|
|
+</mat-menu>
|
|
|
|
|
+
|
|
|
<!--menus-->
|
|
<!--menus-->
|
|
|
<mat-menu #userMenu="matMenu">
|
|
<mat-menu #userMenu="matMenu">
|
|
|
<button mat-menu-item [matMenuTriggerFor]="account" id="account-menu-button">
|
|
<button mat-menu-item [matMenuTriggerFor]="account" id="account-menu-button">
|
|
@@ -171,37 +166,9 @@
|
|
|
</mat-menu>
|
|
</mat-menu>
|
|
|
|
|
|
|
|
<mat-menu #settings="matMenu">
|
|
<mat-menu #settings="matMenu">
|
|
|
- <button mat-menu-item [matMenuTriggerFor]="themes">{{'theme'|tr:'Theme'}}</button>
|
|
|
|
|
<button mat-menu-item [matMenuTriggerFor]="language">{{'language'|tr:'Language'}}</button>
|
|
<button mat-menu-item [matMenuTriggerFor]="language">{{'language'|tr:'Language'}}</button>
|
|
|
</mat-menu>
|
|
</mat-menu>
|
|
|
|
|
|
|
|
-<mat-menu #themes="matMenu">
|
|
|
|
|
- <button mat-menu-item [matMenuTriggerFor]="lightThemes">{{'light'|tr:'Light'}}</button>
|
|
|
|
|
- <button mat-menu-item [matMenuTriggerFor]="darkThemes">{{'dark'|tr:'Dark'}}</button>
|
|
|
|
|
-</mat-menu>
|
|
|
|
|
-
|
|
|
|
|
-<mat-menu #lightThemes="matMenu">
|
|
|
|
|
- @for(theme of [
|
|
|
|
|
- {name:'theme',label:'main'|tr:'Blue',color:"#3F51B6"},
|
|
|
|
|
- {name:'theme-pink',label:'pink'|tr:'Pink',color:"#e91e63"}
|
|
|
|
|
- ]; track $index) {
|
|
|
|
|
- <button mat-menu-item (click)="cs.theming.changeTheme(theme.name)">
|
|
|
|
|
- <mat-icon style="color:{{theme.color}}">fiber_manual_record</mat-icon>
|
|
|
|
|
- {{theme.label}}</button>
|
|
|
|
|
- }
|
|
|
|
|
-</mat-menu>
|
|
|
|
|
-
|
|
|
|
|
-<mat-menu #darkThemes="matMenu">
|
|
|
|
|
- @for(theme of [
|
|
|
|
|
- {name:'dark-theme',label:'main'|tr:'Blue',color:"#3F51B6"},
|
|
|
|
|
- {name:'dark-theme-pink',label:'pink'|tr:'Pink',color:"#e91e63"}
|
|
|
|
|
- ]; track $index) {
|
|
|
|
|
- <button mat-menu-item (click)="cs.theming.changeTheme(theme.name)">
|
|
|
|
|
- <mat-icon style="color:{{theme.color}}">fiber_manual_record</mat-icon>
|
|
|
|
|
- {{theme.label}}</button>
|
|
|
|
|
- }
|
|
|
|
|
-</mat-menu>
|
|
|
|
|
-
|
|
|
|
|
<mat-menu #language="matMenu">
|
|
<mat-menu #language="matMenu">
|
|
|
@for(lang of [
|
|
@for(lang of [
|
|
|
{name:'en',label:'English',picture:'https://cdn.swopt.com/media/images/flags/GBR.png'},
|
|
{name:'en',label:'English',picture:'https://cdn.swopt.com/media/images/flags/GBR.png'},
|