selection highlights
This commit is contained in:
parent
b0e78be1f6
commit
85d4da7def
|
@ -1,12 +1,12 @@
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<div class="inner-content">
|
<div class="inner-content">
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li [ngClass]="{active: selectedAll}">
|
||||||
<a href="#" appStopClick (click)="all()">
|
<a href="#" appStopClick (click)="all()">
|
||||||
<i class="fa fa-fw fa-spinner"></i> {{'allItems' | i18n}}
|
<i class="fa fa-fw fa-spinner"></i> {{'allItems' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li [ngClass]="{active: selectedFavorites}">
|
||||||
<a href="#" appStopClick (click)="favorites()">
|
<a href="#" appStopClick (click)="favorites()">
|
||||||
<i class="fa fa-fw fa-star"></i> {{'favorites' | i18n}}
|
<i class="fa fa-fw fa-star"></i> {{'favorites' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
|
@ -14,25 +14,25 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2><i class="fa fa-tag"></i> {{'types' | i18n}}</h2>
|
<h2><i class="fa fa-tag"></i> {{'types' | i18n}}</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li [ngClass]="{active: selectedType === cipherType.Login}">
|
||||||
<a href="#" appStopClick (click)="type(cipherType.Login)">
|
<a href="#" appStopClick (click)="type(cipherType.Login)">
|
||||||
<i class="fa fa-fw fa-globe"></i>
|
<i class="fa fa-fw fa-globe"></i>
|
||||||
{{'typeLogin' | i18n}}
|
{{'typeLogin' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li [ngClass]="{active: selectedType === cipherType.Card}">
|
||||||
<a href="#" appStopClick (click)="type(cipherType.Card)">
|
<a href="#" appStopClick (click)="type(cipherType.Card)">
|
||||||
<i class="fa fa-fw fa-credit-card"></i>
|
<i class="fa fa-fw fa-credit-card"></i>
|
||||||
{{'typeCard' | i18n}}
|
{{'typeCard' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li [ngClass]="{active: selectedType === cipherType.Identity}">
|
||||||
<a href="#" appStopClick (click)="type(cipherType.Identity)">
|
<a href="#" appStopClick (click)="type(cipherType.Identity)">
|
||||||
<i class="fa fa-fw fa-id-card-o"></i>
|
<i class="fa fa-fw fa-id-card-o"></i>
|
||||||
{{'typeIdentity' | i18n}}
|
{{'typeIdentity' | i18n}}
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li [ngClass]="{active: selectedType === cipherType.SecureNote}">
|
||||||
<a href="#" appStopClick (click)="type(cipherType.SecureNote)">
|
<a href="#" appStopClick (click)="type(cipherType.SecureNote)">
|
||||||
<i class="fa fa-fw fa-sticky-note-o"></i>
|
<i class="fa fa-fw fa-sticky-note-o"></i>
|
||||||
{{'typeSecureNote' | i18n}}
|
{{'typeSecureNote' | i18n}}
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
</ul>
|
</ul>
|
||||||
<h2><i class="fa fa-folder"></i> {{'folders' | i18n}}</h2>
|
<h2><i class="fa fa-folder"></i> {{'folders' | i18n}}</h2>
|
||||||
<ul class="fa-ul">
|
<ul class="fa-ul">
|
||||||
<li *ngFor="let f of folders">
|
<li *ngFor="let f of folders" [ngClass]="{active: selectedFolder && f.id === selectedFolderId}">
|
||||||
<a href="#" appStopClick (click)="folder(f)">
|
<a href="#" appStopClick (click)="folder(f)">
|
||||||
<i class="fa-li fa fa-caret-right"></i> {{f.name}}
|
<i class="fa-li fa fa-caret-right"></i> {{f.name}}
|
||||||
</a>
|
</a>
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
<div *ngIf="collections && collections.length">
|
<div *ngIf="collections && collections.length">
|
||||||
<h2><i class="fa fa-cubes"></i> {{'collections' | i18n}}</h2>
|
<h2><i class="fa fa-cubes"></i> {{'collections' | i18n}}</h2>
|
||||||
<ul class="fa-ul">
|
<ul class="fa-ul">
|
||||||
<li *ngFor="let c of collections">
|
<li *ngFor="let c of collections" [ngClass]="{active: c.id === selectedCollectionId}">
|
||||||
<a href="#" appStopClick (click)="collection(c)">
|
<a href="#" appStopClick (click)="collection(c)">
|
||||||
<i class="fa-li fa fa-caret-right"></i> {{c.name}}
|
<i class="fa-li fa fa-caret-right"></i> {{c.name}}
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -30,6 +30,12 @@ export class GroupingsComponent implements OnInit {
|
||||||
folders: any[];
|
folders: any[];
|
||||||
collections: any[];
|
collections: any[];
|
||||||
cipherType = CipherType;
|
cipherType = CipherType;
|
||||||
|
selectedAll: boolean = false;
|
||||||
|
selectedFavorites: boolean = false;
|
||||||
|
selectedType: CipherType = null;
|
||||||
|
selectedFolder: boolean = false;
|
||||||
|
selectedFolderId: string = null;
|
||||||
|
selectedCollectionId: string = null;
|
||||||
|
|
||||||
constructor(private collectionService: CollectionService, private folderService: FolderService) {
|
constructor(private collectionService: CollectionService, private folderService: FolderService) {
|
||||||
// ctor
|
// ctor
|
||||||
|
@ -41,22 +47,42 @@ export class GroupingsComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
all() {
|
all() {
|
||||||
|
this.clearSelections();
|
||||||
|
this.selectedAll = true;
|
||||||
this.onAllClicked.emit();
|
this.onAllClicked.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
favorites() {
|
favorites() {
|
||||||
|
this.clearSelections();
|
||||||
|
this.selectedFavorites = true;
|
||||||
this.onFavoritesClicked.emit();
|
this.onFavoritesClicked.emit();
|
||||||
}
|
}
|
||||||
|
|
||||||
type(type: CipherType) {
|
type(type: CipherType) {
|
||||||
|
this.clearSelections();
|
||||||
|
this.selectedType = type;
|
||||||
this.onCipherTypeClicked.emit(type);
|
this.onCipherTypeClicked.emit(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
folder(folder: FolderView) {
|
folder(folder: FolderView) {
|
||||||
|
this.clearSelections();
|
||||||
|
this.selectedFolder = true;
|
||||||
|
this.selectedFolderId = folder.id;
|
||||||
this.onFolderClicked.emit(folder);
|
this.onFolderClicked.emit(folder);
|
||||||
}
|
}
|
||||||
|
|
||||||
collection(collection: CollectionView) {
|
collection(collection: CollectionView) {
|
||||||
|
this.clearSelections();
|
||||||
|
this.selectedCollectionId = collection.id;
|
||||||
this.onCollectionClicked.emit(collection);
|
this.onCollectionClicked.emit(collection);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
clearSelections() {
|
||||||
|
this.selectedAll = false;
|
||||||
|
this.selectedFavorites = false;
|
||||||
|
this.selectedType = null;
|
||||||
|
this.selectedFolder = false;
|
||||||
|
this.selectedFolderId = null;
|
||||||
|
this.selectedCollectionId = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ import {
|
||||||
import { Location } from '@angular/common';
|
import { Location } from '@angular/common';
|
||||||
|
|
||||||
import { CiphersComponent } from './ciphers.component';
|
import { CiphersComponent } from './ciphers.component';
|
||||||
|
import { GroupingsComponent } from './groupings.component';
|
||||||
|
|
||||||
import { CipherType } from 'jslib/enums/cipherType';
|
import { CipherType } from 'jslib/enums/cipherType';
|
||||||
|
|
||||||
|
@ -27,6 +28,7 @@ import { FolderView } from 'jslib/models/view/folderView';
|
||||||
})
|
})
|
||||||
export class VaultComponent implements OnInit {
|
export class VaultComponent implements OnInit {
|
||||||
@ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;
|
@ViewChild(CiphersComponent) ciphersComponent: CiphersComponent;
|
||||||
|
@ViewChild(GroupingsComponent) groupingsComponent: GroupingsComponent;
|
||||||
|
|
||||||
action: string;
|
action: string;
|
||||||
cipherId: string = null;
|
cipherId: string = null;
|
||||||
|
@ -53,14 +55,21 @@ export class VaultComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params['favorites']) {
|
if (params['favorites']) {
|
||||||
|
this.groupingsComponent.selectedFavorites = true;
|
||||||
await this.filterFavorites();
|
await this.filterFavorites();
|
||||||
} else if (params['type']) {
|
} else if (params['type']) {
|
||||||
await this.filterCipherType(parseInt(params['type']));
|
const t = parseInt(params['type']);
|
||||||
|
this.groupingsComponent.selectedType = t;
|
||||||
|
await this.filterCipherType(t);
|
||||||
} else if (params['folderId']) {
|
} else if (params['folderId']) {
|
||||||
|
this.groupingsComponent.selectedFolder = true;
|
||||||
|
this.groupingsComponent.selectedFolderId = params['folderId'];
|
||||||
await this.filterFolder(params['folderId']);
|
await this.filterFolder(params['folderId']);
|
||||||
} else if (params['collectionId']) {
|
} else if (params['collectionId']) {
|
||||||
|
this.groupingsComponent.selectedCollectionId = params['collectionId'];
|
||||||
await this.filterCollection(params['collectionId']);
|
await this.filterCollection(params['collectionId']);
|
||||||
} else {
|
} else {
|
||||||
|
this.groupingsComponent.selectedAll = true;
|
||||||
await this.ciphersComponent.load();
|
await this.ciphersComponent.load();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -73,7 +82,7 @@ export class VaultComponent implements OnInit {
|
||||||
|
|
||||||
this.cipherId = cipher.id;
|
this.cipherId = cipher.id;
|
||||||
this.action = 'view';
|
this.action = 'view';
|
||||||
this.go({ action: this.action, cipherId: this.cipherId });
|
this.go();
|
||||||
}
|
}
|
||||||
|
|
||||||
editCipher(cipher: CipherView) {
|
editCipher(cipher: CipherView) {
|
||||||
|
@ -83,7 +92,7 @@ export class VaultComponent implements OnInit {
|
||||||
|
|
||||||
this.cipherId = cipher.id;
|
this.cipherId = cipher.id;
|
||||||
this.action = 'edit';
|
this.action = 'edit';
|
||||||
this.go({ action: this.action, cipherId: this.cipherId });
|
this.go();
|
||||||
}
|
}
|
||||||
|
|
||||||
addCipher() {
|
addCipher() {
|
||||||
|
@ -93,20 +102,20 @@ export class VaultComponent implements OnInit {
|
||||||
|
|
||||||
this.action = 'add';
|
this.action = 'add';
|
||||||
this.cipherId = null;
|
this.cipherId = null;
|
||||||
this.go({ action: this.action, cipherId: this.cipherId });
|
this.go();
|
||||||
}
|
}
|
||||||
|
|
||||||
savedCipher(cipher: CipherView) {
|
savedCipher(cipher: CipherView) {
|
||||||
this.cipherId = cipher.id;
|
this.cipherId = cipher.id;
|
||||||
this.action = 'view';
|
this.action = 'view';
|
||||||
this.go({ action: this.action, cipherId: this.cipherId });
|
this.go();
|
||||||
this.ciphersComponent.updateCipher(cipher);
|
this.ciphersComponent.updateCipher(cipher);
|
||||||
}
|
}
|
||||||
|
|
||||||
deletedCipher(cipher: CipherView) {
|
deletedCipher(cipher: CipherView) {
|
||||||
this.cipherId = null;
|
this.cipherId = null;
|
||||||
this.action = null;
|
this.action = null;
|
||||||
this.go({ action: this.action, cipherId: this.cipherId });
|
this.go();
|
||||||
this.ciphersComponent.removeCipher(cipher.id);
|
this.ciphersComponent.removeCipher(cipher.id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -117,7 +126,7 @@ export class VaultComponent implements OnInit {
|
||||||
cancelledAddEdit(cipher: CipherView) {
|
cancelledAddEdit(cipher: CipherView) {
|
||||||
this.cipherId = cipher.id;
|
this.cipherId = cipher.id;
|
||||||
this.action = this.cipherId != null ? 'view' : null;
|
this.action = this.cipherId != null ? 'view' : null;
|
||||||
this.go({ action: this.action, cipherId: this.cipherId });
|
this.go();
|
||||||
}
|
}
|
||||||
|
|
||||||
async clearGroupingFilters() {
|
async clearGroupingFilters() {
|
||||||
|
|
|
@ -128,6 +128,15 @@ textarea {
|
||||||
padding: 5px 0;
|
padding: 5px 0;
|
||||||
color: $text-color;
|
color: $text-color;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: darken($background-color-alt, 5%);
|
||||||
|
border-radius: $border-radius;
|
||||||
|
margin-left: -15px;
|
||||||
|
margin-right: -15px;
|
||||||
|
padding-left: 15px;
|
||||||
|
padding-right: 15px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue