[AAE-6057] Customize text color in the header (#7325)

* [AAE-6057] Customize text color in the header

* [AAE-6057] Updates documents

* [AAE-6057] Use css variables to update header colors

* Revert "[AAE-6057] Updates documents"

This reverts commit 1915535c01b77c58d9a6d87bb242e04715bcbc6f.

* [AAE-6057] Fix for css name change

* [AAE-6057] Removing has-mat-color

* [AAE-6057] Removing redundant tests
This commit is contained in:
Bartosz Sekuła
2021-10-29 08:49:05 +02:00
committed by GitHub
parent 08b9cd144f
commit b3140b626c
8 changed files with 57 additions and 7 deletions

View File

@@ -55,6 +55,7 @@
},
"APP_LAYOUT": {
"APP": "App",
"HEADER_TEXT_COLOR": "Header text color",
"APP_NAME": "ADF Demo Application",
"FILTERED_SEARCH": "Filter Header",
"HOME": "Home",

View File

@@ -4,9 +4,17 @@
<adf-sidenav-layout-header>
<ng-template let-toggleMenu="toggleMenu" let-isMenuMinimized="isMenuMinimized">
<adf-layout-header id="adf-header" [title]="title | translate" [redirectUrl]="redirectUrl" [logo]="logo"
[tooltip]="tooltip | translate" [showSidenavToggle]="showMenu" [expandedSidenav]="!isMenuMinimized()"
[color]="color" [position]="position" (clicked)=toggleMenu($event)>
<adf-layout-header
id="adf-header"
[title]="title | translate"
[redirectUrl]="redirectUrl"
[logo]="logo"
[tooltip]="tooltip | translate"
[showSidenavToggle]="showMenu"
[expandedSidenav]="!isMenuMinimized()"
[color]="color"
[position]="position"
(clicked)=toggleMenu($event)>
<div class="app-layout-menu-spacer"></div>

View File

@@ -121,12 +121,25 @@ export class AppLayoutComponent implements OnInit, OnDestroy {
this.headerService.color
.pipe(takeUntil(this.onDestroy$))
.subscribe(color => this.color = color);
.subscribe(color => {
if (['primary', 'accent', 'warn'].includes(color)) {
this.color = color;
} else {
this.color = undefined;
document.documentElement.style.setProperty('--adf-header-background-color', color);
}
});
this.headerService.title
.pipe(takeUntil(this.onDestroy$))
.subscribe(title => this.title = title);
this.headerService.headerTextColor
.pipe(takeUntil(this.onDestroy$))
.subscribe(headerTextColor => {
document.documentElement.style.setProperty('--adf-header-text-color', headerTextColor);
});
this.headerService.logo
.pipe(takeUntil(this.onDestroy$))
.subscribe(path => this.logo = path);

View File

@@ -26,6 +26,14 @@
<p>*press enter for submitting new title</p>
</div>
<div>
<label>Change header text color</label>
<input type="text" name="headerColor" (keyup.enter)="submitHeaderTextColor($any($event).target.value)"
placeholder="{{ 'APP_LAYOUT.HEADER_TEXT_COLOR' | translate}}">
<p>*press enter for submitting new color text</p>
<p>*hex color</p>
</div>
<div>
<label>Change logo</label>
<input type="text" placeholder="URL path" (keyup.enter)="submitLogo($any($event).target.value)">

View File

@@ -27,6 +27,11 @@ export class HeaderDataComponent {
checkbox = true;
position: 'start' | 'end' = 'start';
hideSidenavToggle = false;
colorsHashesTests = [
/#[a-z0-9]{3}/i,
/#[a-z0-9]{4}/i,
/#[a-z0-9]{6}/i
];
constructor(private headerService: HeaderDataService) {
}
@@ -45,6 +50,14 @@ export class HeaderDataComponent {
}
}
submitHeaderTextColor(color: string): void {
const isColorHashValid = this.colorsHashesTests.some(colorTest => colorTest.test(color));
if (isColorHashValid || !color) {
this.headerService.changeHeaderTextColor(color);
}
}
submitLogo(logoPath: string) {
if (logoPath) {
this.headerService.changeLogo(logoPath);

View File

@@ -28,6 +28,7 @@ export class HeaderDataService {
@Output() hideMenu = new EventEmitter<boolean>();
@Output() color = new EventEmitter<ThemePalette>();
@Output() headerTextColor = new EventEmitter<string>();
@Output() title = new EventEmitter<string>();
@Output() logo = new EventEmitter<string>();
@Output() redirectUrl = new EventEmitter<string | any[]>();
@@ -46,13 +47,16 @@ export class HeaderDataService {
changeTitle(title: string) {
this.title.emit(title);
}
changeLogo(logoPath: string) {
this.logo.emit(logoPath);
}
changeHeaderTextColor(color: string): void {
this.headerTextColor.emit(color);
}
changeRedirectUrl(redirectUrl: string | any[]) {
this.redirectUrl.emit(redirectUrl);
}