From 0b8056f04c95b63f265e684ab7ec8312c5dc2d76 Mon Sep 17 00:00:00 2001 From: rhenck <richard.henck@iqb.hu-berlin.de> Date: Thu, 9 Dec 2021 16:42:44 +0100 Subject: [PATCH] Add coloring options to taoggle-button Now correctly sets the chosen background color and additionally sets another (configurable) color to the selected value. --- .../toggle-button/toggle-button.component.ts | 25 +++++++++++-------- .../toggle-button/toggle-button.ts | 4 +++ .../element-style-properties.component.ts | 12 +++++++++ projects/editor/src/assets/i18n/de.json | 3 ++- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/projects/common/ui-elements/toggle-button/toggle-button.component.ts b/projects/common/ui-elements/toggle-button/toggle-button.component.ts index 3c7424e34..08b8307e6 100644 --- a/projects/common/ui-elements/toggle-button/toggle-button.component.ts +++ b/projects/common/ui-elements/toggle-button/toggle-button.component.ts @@ -7,20 +7,23 @@ import { FormElementComponent } from '../../directives/form-element-component.di template: ` <div class="mat-form-field"> <mat-button-toggle-group [formControl]="elementFormControl" - [style.height.px]="elementModel.height" - [style.background-color]="elementModel.surfaceProps.backgroundColor" - [style.color]="elementModel.fontProps.fontColor" - [style.font-family]="elementModel.fontProps.font" - [style.font-size.px]="elementModel.fontProps.fontSize" - [style.font-weight]="elementModel.fontProps.bold ? 'bold' : ''" - [style.font-style]="elementModel.fontProps.italic ? 'italic' : ''" - [style.text-decoration]="elementModel.fontProps.underline ? 'underline' : ''" - [style.line-height.%]="elementModel.fontProps.lineHeight"> + [style.height.px]="elementModel.height"> <mat-button-toggle *ngFor="let option of elementModel.options; let i = index" [value]="i" [ngClass]="{ 'strike' : elementModel.strikeOtherOptions && elementFormControl.value !== null && - elementFormControl.value !== i }"> + elementFormControl.value !== i }" + [style.color]="elementModel.fontProps.fontColor" + [style.font-size.px]="elementModel.fontProps.fontSize" + [style.font-weight]="elementModel.fontProps.bold ? 'bold' : ''" + [style.font-style]="elementModel.fontProps.italic ? 'italic' : ''" + [style.text-decoration]="elementModel.fontProps.underline ? 'underline' : ''" + [style.font-family]="elementModel.fontProps.font" + [style.background-color]="elementFormControl.value !== null && + elementFormControl.value === i ? + elementModel.selectionColor : + elementModel.surfaceProps.backgroundColor" + [style.line-height.%]="elementModel.fontProps.lineHeight"> {{option}} </mat-button-toggle> </mat-button-toggle-group> @@ -30,7 +33,7 @@ import { FormElementComponent } from '../../directives/form-element-component.di 'mat-button-toggle-group {min-width: 70px; min-height: 20px}', ':host ::ng-deep .mat-button-toggle-button {height: 100%}', ':host ::ng-deep .mat-button-toggle-label-content {height: 100%; line-height: unset}', - ':host ::ng-deep .strike .mat-button-toggle-label-content {text-decoration: line-through}', + ':host ::ng-deep .strike .mat-button-toggle-label-content {text-decoration: line-through}' ] }) export class ToggleButtonComponent extends FormElementComponent { diff --git a/projects/common/ui-elements/toggle-button/toggle-button.ts b/projects/common/ui-elements/toggle-button/toggle-button.ts index 506f51eef..e950a0cdd 100644 --- a/projects/common/ui-elements/toggle-button/toggle-button.ts +++ b/projects/common/ui-elements/toggle-button/toggle-button.ts @@ -10,6 +10,7 @@ import { initFontElement, initSurfaceElement } from '../../util/unit-interface-i export class ToggleButtonElement extends InputElement implements FontElement, SurfaceElement { options: string[] = ['abc', 'def']; strikeOtherOptions: boolean = false; + selectionColor: string = 'lightgreen'; fontProps: FontProperties; surfaceProps: SurfaceProperties; @@ -21,5 +22,8 @@ export class ToggleButtonElement extends InputElement implements FontElement, Su this.surfaceProps = initSurfaceElement(serializedElement); this.height = serializedElement.height as number || 25; + this.surfaceProps.backgroundColor = + serializedElement.surfaceProps?.backgroundColor as string || + 'transparent'; } } diff --git a/projects/editor/src/app/components/unit-view/page-view/properties-panel/element-style-properties.component.ts b/projects/editor/src/app/components/unit-view/page-view/properties-panel/element-style-properties.component.ts index 8198d016f..f9f0b50f4 100644 --- a/projects/editor/src/app/components/unit-view/page-view/properties-panel/element-style-properties.component.ts +++ b/projects/editor/src/app/components/unit-view/page-view/properties-panel/element-style-properties.component.ts @@ -7,6 +7,18 @@ import { UIElement } from '../../../../../../../common/models/uI-element'; selector: 'app-element-style-properties', template: ` <div fxLayout="column"> + <mat-form-field *ngIf="combinedProperties.selectionColor !== undefined" + appearance="fill" class="mdInput textsingleline"> + <mat-label>{{'propertiesPanel.selectionColor' | translate }}</mat-label> + <input matInput type="color" [value]="combinedProperties.selectionColor" + (input)="updateModel.emit({ property: 'selectionColor', value: $any($event.target).value })"> + </mat-form-field> + <mat-form-field *ngIf="combinedProperties.selectionColor !== undefined" appearance="fill"> + <mat-label>{{'propertiesPanel.selectionColor' | translate }}</mat-label> + <input matInput type="text" [value]="combinedProperties.selectionColor" + (input)="updateModel.emit({ property: 'selectionColor', value: $any($event.target).value })"> + </mat-form-field> + <mat-form-field *ngIf="combinedProperties.borderRadius !== undefined" appearance="fill"> <mat-label>{{'propertiesPanel.borderRadius' | translate }}</mat-label> <input matInput type="number" [value]="combinedProperties.borderRadius" diff --git a/projects/editor/src/assets/i18n/de.json b/projects/editor/src/assets/i18n/de.json index 56b73ee5a..80336f40b 100644 --- a/projects/editor/src/assets/i18n/de.json +++ b/projects/editor/src/assets/i18n/de.json @@ -131,7 +131,8 @@ "spellCorrectButtonLabel": "Wort zum Korrigieren", "borderColor": "Randfarbe", "borderWidth": "Randstärke", - "borderStyle": "Linienstil" + "borderStyle": "Linienstil", + "selectionColor": "Auswahlfarbe" }, "player": { "autoStart": "Autostart", -- GitLab