Skip to content

Commit

Permalink
[AAE-6057] Customize text color in the header (#7325)
Browse files Browse the repository at this point in the history
* [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 1915535.

* [AAE-6057] Fix for css name change

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

* [AAE-6057] Removing redundant tests
  • Loading branch information
BSekula committed Oct 29, 2021
1 parent 08b9cd1 commit b3140b6
Show file tree
Hide file tree
Showing 8 changed files with 57 additions and 7 deletions.
1 change: 1 addition & 0 deletions demo-shell/resources/i18n/en.json
Expand Up @@ -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",
Expand Down
14 changes: 11 additions & 3 deletions demo-shell/src/app/components/app-layout/app-layout.component.html
Expand Up @@ -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>

Expand Down
15 changes: 14 additions & 1 deletion demo-shell/src/app/components/app-layout/app-layout.component.ts
Expand Up @@ -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);
Expand Down
Expand Up @@ -26,6 +26,14 @@ <h1>Header data</h1>
<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)">
Expand Down
13 changes: 13 additions & 0 deletions demo-shell/src/app/components/header-data/header-data.component.ts
Expand Up @@ -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) {
}
Expand All @@ -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);
Expand Down
Expand Up @@ -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[]>();
Expand All @@ -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);
}
Expand Down
5 changes: 3 additions & 2 deletions lib/core/layout/components/header/header.component.scss
@@ -1,6 +1,7 @@
adf-layout-header .mat-toolbar-single-row {

color: var(--theme-primary-color-default-contrast) !important;
adf-layout-header .mat-toolbar-single-row {
color: var(--adf-header-text-color) !important;
background-color: var(--adf-header-background-color);
position: relative;
padding: 0 24px;

Expand Down
2 changes: 2 additions & 0 deletions lib/core/styles/_index.scss
Expand Up @@ -48,6 +48,8 @@
--adf-card-view-label-color: mat-color($foreground, text, 0.4),
--adf-card-view-datetime-border-color: mat-color($foreground, text, 0.42),
--adf-upload-border-color: mat-color($foreground, text, 0.14),
--adf-header-background-color: mat-color($primary),
--adf-header-text-color: mat-color($primary, default-contrast),

--theme-hover-bg-color: mat-color($background, hover),
--theme-text-color: mat-color($foreground, text, 0.54),
Expand Down

0 comments on commit b3140b6

Please sign in to comment.