diff --git a/projects/common/element-components/spell-correct.component.ts b/projects/common/element-components/spell-correct.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..8f5e2fe98e533567f0432efd441257da3a91f8b0 --- /dev/null +++ b/projects/common/element-components/spell-correct.component.ts @@ -0,0 +1,62 @@ +import { Component, ViewChild } from '@angular/core'; +import { MatInput } from '@angular/material/input'; +import { FormElementComponent } from '../form-element-component.directive'; +import { SpellCorrectElement } from '../models/spell-correct-element'; + +@Component({ + selector: 'app-spell-correct', + template: ` + <div fxFlex + fxLayout="column" + [style.width.%]="100" + appInputBackgroundColor [backgroundColor]="elementModel.backgroundColor" + [style.height.%]="100"> + <mat-form-field class="small-input"> + <input matInput type="text" + [style.text-align]="'center'" + autocomplete="off" + [formControl]="elementFormControl"> + </mat-form-field> + <button mat-button + [style.color]="elementModel.fontColor" + [style.font-family]="elementModel.font" + [style.font-size.px]="elementModel.fontSize" + [style.font-weight]="elementModel.bold ? 'bold' : ''" + [style.font-style]="elementModel.italic ? 'italic' : ''" + [style.width.%]="100" + [style.margin-top]="'-20px'" + [style.text-decoration-line]="strikethrough() ? 'line-through' : ''" + (click)="onClick($event)"> + {{elementModel.label}} + </button> + </div> + `, + styles: [ + '::ng-deep app-spell-correct .small-input div.mat-form-field-infix {border-top: none; padding: 0.75em 0 0.25em 0;}' + ] +}) +export class SpellCorrectComponent extends FormElementComponent { + elementModel!: SpellCorrectElement; + @ViewChild(MatInput) inputElement!: MatInput; + + strikethrough(): boolean { + if (this.inputElement) { + const value = this.inputElement.value; + if (value === null) return false; + if (value === undefined) return false; + return value.length > 0; + } + return false; + } + + onClick(event: MouseEvent) : void { + if (this.strikethrough()) { + this.elementFormControl.setValue(''); + } else { + this.elementFormControl.setValue(this.elementModel.label); + this.inputElement.focus(); + } + event.preventDefault(); + event.stopPropagation(); + } +} diff --git a/projects/common/models/spell-correct-element.ts b/projects/common/models/spell-correct-element.ts new file mode 100644 index 0000000000000000000000000000000000000000..a2861e6560f69c18734d08855757cbf08ef90c79 --- /dev/null +++ b/projects/common/models/spell-correct-element.ts @@ -0,0 +1,23 @@ +import {FontElement, SurfaceUIElement} from '../interfaces/UIElementInterfaces'; +import { InputElement, UIElement} from './uI-element'; +import {initFontElement, initSurfaceElement} from '../util/unit-interface-initializer'; + +export class SpellCorrectElement extends InputElement implements FontElement, SurfaceUIElement { + bold: boolean = false; + font: string = 'Roboto'; + fontColor: string = 'black'; + fontSize: number = 18; + italic: boolean = false; + lineHeight: number = 120; + underline: boolean = false; + backgroundColor: string = '#AAA0'; + + constructor(serializedElement: UIElement) { + super(serializedElement); + Object.assign(this, serializedElement); + Object.assign(this, initFontElement(serializedElement)); + Object.assign(this, initSurfaceElement(serializedElement)); + + this.backgroundColor = serializedElement.backgroundColor as string || '#d3d3d300'; + } +} diff --git a/projects/common/shared.module.ts b/projects/common/shared.module.ts index 30ea70b12b0e6c38491300876d25a95caf3a584e..f88e3e34e34b3b43638bb7bfef43bfd1078a7071 100644 --- a/projects/common/shared.module.ts +++ b/projects/common/shared.module.ts @@ -45,7 +45,7 @@ import { LikertRadioButtonGroupComponent } import { Magnifier } from './element-components/magnifier.component'; import { RadioGroupImagesComponent } from './element-components/compound-elements/radio-group-images.component'; import { DropListComponent } from './element-components/compound-elements/drop-list.component'; -import { SpellCorrectComponent } from "./element-components/spell-correct.component"; +import { SpellCorrectComponent } from './element-components/spell-correct.component'; @NgModule({ imports: [ diff --git a/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.html b/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.html index acbff5282b0883607820698dfbe8a2d15995fdfe..806121ec4384af379bf79ef82207c9d36d7656a6 100644 --- a/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.html +++ b/projects/editor/src/app/unit-view/page-view/properties-panel/element-properties.component.html @@ -18,12 +18,6 @@ (input)="updateModel('label', $any($event.target).value)"> </mat-form-field> - <mat-form-field *ngIf="combinedProperties.buttonLabel !== undefined" appearance="fill"> - <mat-label>{{'propertiesPanel.spellCorrectButtonLabel' | translate }}</mat-label> - <input matInput type="text" [value]="combinedProperties.buttonLabel" - (input)="updateModel('buttonLabel', $any($event.target).value)"> - </mat-form-field> - <ng-container *ngIf="combinedProperties.text"> {{'propertiesPanel.text' | translate }} <div class="text-text" [innerHTML]="$any(combinedProperties.text) | safeResourceHTML" diff --git a/projects/editor/src/assets/i18n/de.json b/projects/editor/src/assets/i18n/de.json index cba61038b7ad62c2fa779e2b96f80d0ada862344..5bcb43bbee1b96f935fce6c030a7588c9bf93409 100644 --- a/projects/editor/src/assets/i18n/de.json +++ b/projects/editor/src/assets/i18n/de.json @@ -115,8 +115,7 @@ "onlyOneItem": "Nur ein erlaubtes Element", "duplicateElement": "Element duplizieren", "deleteElement": "Element löschen", - "noElementSelected": "Kein Element ausgewählt", - "spellCorrectButtonLabel": "Wort zum Korrigieren" + "noElementSelected": "Kein Element ausgewählt" }, "player": { "autoStart": "Autostart",