From c8e256404142f47d175e1d06068c912210562f31 Mon Sep 17 00:00:00 2001 From: Artem Dzhereleiko Date: Tue, 18 Mar 2025 07:51:08 +0200 Subject: [PATCH] UI: Refactoring widget header action button --- .../action/widget-action-dialog.component.ts | 33 ++++++++++---- .../widget/widget-container.component.html | 26 +++++------ .../components/widget/widget.component.ts | 45 +++++++++++++++++-- .../home/models/widget-component.models.ts | 2 +- ui-ngx/src/app/shared/models/widget.models.ts | 2 +- 5 files changed, 78 insertions(+), 30 deletions(-) diff --git a/ui-ngx/src/app/modules/home/components/widget/action/widget-action-dialog.component.ts b/ui-ngx/src/app/modules/home/components/widget/action/widget-action-dialog.component.ts index 5dd2276591..b77b5c860f 100644 --- a/ui-ngx/src/app/modules/home/components/widget/action/widget-action-dialog.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/action/widget-action-dialog.component.ts @@ -127,19 +127,23 @@ export class WidgetActionDialogComponent extends DialogComponent { @@ -151,6 +155,17 @@ export class WidgetActionDialogComponent extends DialogComponent - {{ action.icon }} + {{ action.icon }} } @case (widgetHeaderActionButtonType.basic) { @@ -123,46 +122,41 @@ (click)="action.onAction($event)" matTooltip="{{ action.displayName }}" matTooltipPosition="above"> - {{ action.icon }} - {{ action.displayName }} + {{ action.icon }} + {{ action.displayName }} } @case (widgetHeaderActionButtonType.raised) { } @case (widgetHeaderActionButtonType.stroked) { } @case (widgetHeaderActionButtonType.flat) { } @default { @@ -172,7 +166,7 @@ (click)="action.onAction($event)" matTooltip="{{ action.displayName }}" matTooltipPosition="above"> - {{ action.icon }} + {{ action.icon }} } } diff --git a/ui-ngx/src/app/modules/home/components/widget/widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/widget.component.ts index 404992e186..f8fa032c8c 100644 --- a/ui-ngx/src/app/modules/home/components/widget/widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/widget.component.ts @@ -44,6 +44,7 @@ import { widgetActionSources, WidgetActionType, WidgetComparisonSettings, + WidgetHeaderActionButtonType, WidgetMobileActionDescriptor, WidgetMobileActionType, WidgetResource, @@ -301,10 +302,13 @@ export class WidgetComponent extends PageComponent implements OnInit, OnChanges, buttonType: descriptor.buttonType, showIcon: descriptor.showIcon, icon: descriptor.icon, - buttonColor: descriptor.buttonColor, - buttonFillColor: descriptor.buttonFillColor, - buttonBorderColor: descriptor.buttonBorderColor, - customButtonStyle: descriptor.customButtonStyle, + customButtonStyle: this.headerButtonStyle( + descriptor.buttonType, + descriptor.customButtonStyle, + descriptor.buttonColor, + descriptor.buttonFillColor, + descriptor.buttonBorderColor + ), descriptor, useShowWidgetHeaderActionFunction, showWidgetHeaderActionFunction, @@ -359,6 +363,39 @@ export class WidgetComponent extends PageComponent implements OnInit, OnChanges, } } + headerButtonStyle(buttonType: WidgetHeaderActionButtonType = WidgetHeaderActionButtonType.icon, + customButtonStyle:{[key: string]: string}, + buttonColor: string = 'rgba(0,0,0,0.87)', + backgroundColor: string, + borderColor: string) { + const buttonStyle = {}; + switch (buttonType) { + case WidgetHeaderActionButtonType.basic: + buttonStyle['--mdc-text-button-label-text-color'] = buttonColor; + break; + case WidgetHeaderActionButtonType.raised: + buttonStyle['--mdc-protected-button-label-text-color'] = buttonColor; + buttonStyle['--mdc-protected-button-container-color'] = backgroundColor; + break; + case WidgetHeaderActionButtonType.stroked: + buttonStyle['--mdc-outlined-button-label-text-color'] = buttonColor; + buttonStyle['--mdc-outlined-button-outline-color'] = borderColor; + break; + case WidgetHeaderActionButtonType.flat: + buttonStyle['--mdc-filled-button-label-text-color'] = buttonColor; + buttonStyle['--mdc-filled-button-container-color'] = backgroundColor; + break; + case WidgetHeaderActionButtonType.miniFab: + buttonStyle['--mat-fab-small-foreground-color'] = buttonColor; + buttonStyle['--mdc-fab-small-container-color'] = backgroundColor; + break; + default: + buttonStyle['--mat-icon-color'] = buttonColor; + break; + } + return {...buttonStyle, ...customButtonStyle}; + } + ngOnChanges(changes: SimpleChanges): void { for (const propName of Object.keys(changes)) { const change = changes[propName]; diff --git a/ui-ngx/src/app/modules/home/models/widget-component.models.ts b/ui-ngx/src/app/modules/home/models/widget-component.models.ts index 8a8724c116..11adb2f806 100644 --- a/ui-ngx/src/app/modules/home/models/widget-component.models.ts +++ b/ui-ngx/src/app/modules/home/models/widget-component.models.ts @@ -132,7 +132,7 @@ export interface WidgetHeaderAction extends IWidgetAction { buttonColor?: string; buttonFillColor?: string; buttonBorderColor?: string; - customButtonStyle?: string; + customButtonStyle?: {[key: string]: string}; useShowWidgetHeaderActionFunction: boolean; showWidgetHeaderActionFunction: CompiledTbFunction; } diff --git a/ui-ngx/src/app/shared/models/widget.models.ts b/ui-ngx/src/app/shared/models/widget.models.ts index 44e5ec9c1e..2300ae2341 100644 --- a/ui-ngx/src/app/shared/models/widget.models.ts +++ b/ui-ngx/src/app/shared/models/widget.models.ts @@ -780,7 +780,7 @@ export interface WidgetActionDescriptor extends WidgetAction { buttonColor?: string; buttonFillColor?: string; buttonBorderColor?: string; - customButtonStyle?: string; + customButtonStyle?: {[key: string]: string}; displayName?: string; useShowWidgetActionFunction?: boolean; showWidgetActionFunction?: TbFunction;