Feature/add indicator for active filters (#3398)
* Add indicator for active filters * Update changelog
This commit is contained in:
parent
72e75208df
commit
782d131b0d
@ -7,6 +7,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
|
|
||||||
## Unreleased
|
## Unreleased
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Added an indicator for active filters (experimental)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
- Disabled the button to delete all activities on the portfolio activities page if there are active filters
|
- Disabled the button to delete all activities on the portfolio activities page if there are active filters
|
||||||
|
@ -116,7 +116,12 @@
|
|||||||
#assistantTrigger="matMenuTrigger"
|
#assistantTrigger="matMenuTrigger"
|
||||||
class="h-100 no-min-width px-2"
|
class="h-100 no-min-width px-2"
|
||||||
mat-button
|
mat-button
|
||||||
|
matBadge="✓"
|
||||||
|
matBadgeSize="small"
|
||||||
[mat-menu-trigger-for]="assistantMenu"
|
[mat-menu-trigger-for]="assistantMenu"
|
||||||
|
[matBadgeHidden]="
|
||||||
|
!hasFilters || !user?.settings?.isExperimentalFeatures
|
||||||
|
"
|
||||||
[matMenuTriggerRestoreFocus]="false"
|
[matMenuTriggerRestoreFocus]="false"
|
||||||
(menuOpened)="onOpenAssistant()"
|
(menuOpened)="onOpenAssistant()"
|
||||||
>
|
>
|
||||||
|
@ -28,6 +28,17 @@
|
|||||||
text-underline-offset: 0.25rem;
|
text-underline-offset: 0.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.mat-badge {
|
||||||
|
::ng-deep {
|
||||||
|
.mat-badge-content {
|
||||||
|
--mat-badge-small-size-container-overlap-offset: -0.9rem;
|
||||||
|
--mat-badge-small-size-text-size: 0;
|
||||||
|
|
||||||
|
transform: scale(0.45);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ion-icon {
|
ion-icon {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
|
|
||||||
|
@ -65,6 +65,7 @@ export class HeaderComponent implements OnChanges {
|
|||||||
@ViewChild('assistant') assistantElement: GfAssistantComponent;
|
@ViewChild('assistant') assistantElement: GfAssistantComponent;
|
||||||
@ViewChild('assistantTrigger') assistentMenuTriggerElement: MatMenuTrigger;
|
@ViewChild('assistantTrigger') assistentMenuTriggerElement: MatMenuTrigger;
|
||||||
|
|
||||||
|
public hasFilters: boolean;
|
||||||
public hasPermissionForSocialLogin: boolean;
|
public hasPermissionForSocialLogin: boolean;
|
||||||
public hasPermissionForSubscription: boolean;
|
public hasPermissionForSubscription: boolean;
|
||||||
public hasPermissionToAccessAdminControl: boolean;
|
public hasPermissionToAccessAdminControl: boolean;
|
||||||
@ -106,6 +107,8 @@ export class HeaderComponent implements OnChanges {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public ngOnChanges() {
|
public ngOnChanges() {
|
||||||
|
this.hasFilters = this.userService.hasFilters();
|
||||||
|
|
||||||
this.hasPermissionForSocialLogin = hasPermission(
|
this.hasPermissionForSocialLogin = hasPermission(
|
||||||
this.info?.globalPermissions,
|
this.info?.globalPermissions,
|
||||||
permissions.enableSocialLogin
|
permissions.enableSocialLogin
|
||||||
|
@ -5,6 +5,7 @@ import { GfPremiumIndicatorComponent } from '@ghostfolio/ui/premium-indicator';
|
|||||||
|
|
||||||
import { CommonModule } from '@angular/common';
|
import { CommonModule } from '@angular/common';
|
||||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||||
|
import { MatBadgeModule } from '@angular/material/badge';
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
import { MatMenuModule } from '@angular/material/menu';
|
import { MatMenuModule } from '@angular/material/menu';
|
||||||
import { MatToolbarModule } from '@angular/material/toolbar';
|
import { MatToolbarModule } from '@angular/material/toolbar';
|
||||||
@ -21,6 +22,7 @@ import { HeaderComponent } from './header.component';
|
|||||||
GfLogoComponent,
|
GfLogoComponent,
|
||||||
GfPremiumIndicatorComponent,
|
GfPremiumIndicatorComponent,
|
||||||
LoginWithAccessTokenDialogModule,
|
LoginWithAccessTokenDialogModule,
|
||||||
|
MatBadgeModule,
|
||||||
MatButtonModule,
|
MatButtonModule,
|
||||||
MatMenuModule,
|
MatMenuModule,
|
||||||
MatToolbarModule,
|
MatToolbarModule,
|
||||||
|
@ -51,21 +51,21 @@ export class UserService extends ObservableStore<UserStoreState> {
|
|||||||
const filters: Filter[] = [];
|
const filters: Filter[] = [];
|
||||||
const user = this.getState().user;
|
const user = this.getState().user;
|
||||||
|
|
||||||
if (user.settings['filters.accounts']) {
|
if (user?.settings['filters.accounts']) {
|
||||||
filters.push({
|
filters.push({
|
||||||
id: user.settings['filters.accounts'][0],
|
id: user.settings['filters.accounts'][0],
|
||||||
type: 'ACCOUNT'
|
type: 'ACCOUNT'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user.settings['filters.assetClasses']) {
|
if (user?.settings['filters.assetClasses']) {
|
||||||
filters.push({
|
filters.push({
|
||||||
id: user.settings['filters.assetClasses'][0],
|
id: user.settings['filters.assetClasses'][0],
|
||||||
type: 'ASSET_CLASS'
|
type: 'ASSET_CLASS'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user.settings['filters.tags']) {
|
if (user?.settings['filters.tags']) {
|
||||||
filters.push({
|
filters.push({
|
||||||
id: user.settings['filters.tags'][0],
|
id: user.settings['filters.tags'][0],
|
||||||
type: 'TAG'
|
type: 'TAG'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user