From 2d34b8d73049ae45af6c7d17391970ae8f33c643 Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Wed, 22 Sep 2021 11:57:46 +0200
Subject: [PATCH] Add appearance property to input elements

---
 .../element-components/text-area.component.ts    |  3 ++-
 .../element-components/text-field.component.ts   |  3 ++-
 projects/common/unit.ts                          |  2 ++
 projects/editor/src/app/UnitFactory.ts           |  2 ++
 .../properties/element-properties.component.html | 16 ++++++++++++++++
 5 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/projects/common/element-components/text-area.component.ts b/projects/common/element-components/text-area.component.ts
index 63c2bdb37..216ce06b1 100644
--- a/projects/common/element-components/text-area.component.ts
+++ b/projects/common/element-components/text-area.component.ts
@@ -13,7 +13,8 @@ import { FormElementComponent } from '../form-element-component.directive';
                     [style.font-size.px]="elementModel.fontSize"
                     [style.font-weight]="elementModel.bold ? 'bold' : ''"
                     [style.font-style]="elementModel.italic ? 'italic' : ''"
-                    [style.text-decoration]="elementModel.underline ? 'underline' : ''">
+                    [style.text-decoration]="elementModel.underline ? 'underline' : ''"
+                    [appearance]="$any(elementModel.appearance)">
     <textarea matInput [formControl]="elementFormControl" #input
               (focus)="onFocus.emit(input)"
               (blur)="onBlur.emit(input)"
diff --git a/projects/common/element-components/text-field.component.ts b/projects/common/element-components/text-field.component.ts
index 6bebb6959..29a3c3aed 100644
--- a/projects/common/element-components/text-field.component.ts
+++ b/projects/common/element-components/text-field.component.ts
@@ -13,7 +13,8 @@ import { FormElementComponent } from '../form-element-component.directive';
                     [style.font-size.px]="elementModel.fontSize"
                     [style.font-weight]="elementModel.bold ? 'bold' : ''"
                     [style.font-style]="elementModel.italic ? 'italic' : ''"
-                    [style.text-decoration]="elementModel.underline ? 'underline' : ''">
+                    [style.text-decoration]="elementModel.underline ? 'underline' : ''"
+                    [appearance]="$any(elementModel.appearance)">
       <input matInput type="text" [pattern]="elementModel.pattern" #input
              (focus)="onFocus.emit(input)"
              (blur)="onBlur.emit(input)"
diff --git a/projects/common/unit.ts b/projects/common/unit.ts
index 5dc73598c..4938384d6 100644
--- a/projects/common/unit.ts
+++ b/projects/common/unit.ts
@@ -82,6 +82,7 @@ export interface ButtonElement extends TextUIElement, SurfaceUIElement {
 
 export interface TextFieldElement extends InputUIElement, TextUIElement, SurfaceUIElement {
   value: string;
+  appearance: 'standard' | 'legacy' | 'fill' | 'outline';
   minLength: number | undefined;
   minLengthWarnMessage: string;
   maxLength: number | undefined;
@@ -92,6 +93,7 @@ export interface TextFieldElement extends InputUIElement, TextUIElement, Surface
 
 export interface TextAreaElement extends InputUIElement, TextUIElement, SurfaceUIElement {
   value: string;
+  appearance: 'standard' | 'legacy' | 'fill' | 'outline';
   resizeEnabled: boolean;
 }
 
diff --git a/projects/editor/src/app/UnitFactory.ts b/projects/editor/src/app/UnitFactory.ts
index 2f8e043ed..cdc6c329d 100644
--- a/projects/editor/src/app/UnitFactory.ts
+++ b/projects/editor/src/app/UnitFactory.ts
@@ -112,6 +112,7 @@ export function createButtonElement(): ButtonElement {
 
 export function createTextfieldElement(): TextFieldElement {
   return <TextFieldElement>{
+    appearance: 'outline',
     minLength: undefined,
     minLengthWarnMessage: 'Eingabe zu kurz',
     maxLength: undefined,
@@ -129,6 +130,7 @@ export function createTextfieldElement(): TextFieldElement {
 export function createTextareaElement(): TextAreaElement {
   return <TextAreaElement>{
     resizeEnabled: false,
+    appearance: 'outline',
     ...createUnitUIElement('text-area'),
     ...createInputUIElement('Beispiel Beschriftung', ''),
     ...createTextUIElement(),
diff --git a/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.html b/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.html
index d57872262..45c7581a2 100644
--- a/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.html
+++ b/projects/editor/src/app/components/unit-view/page-view/properties/element-properties.component.html
@@ -23,6 +23,22 @@
              (click)="unitService.showDefaultEditDialog(selectedElements[0])">
         </div>
 
+
+        <mat-form-field *ngIf="combinedProperties.hasOwnProperty('appearance')" appearance="fill">
+          <mat-label>Aussehen</mat-label>
+          <mat-select [value]="combinedProperties.appearance"
+                      (selectionChange)="updateModel('appearance', $event.value)">
+            <mat-option *ngFor="let option of [{displayValue: 'standard', value: 'standard'},
+                                               {displayValue: 'legacy', value: 'legacy'},
+                                               {displayValue: 'fill', value: 'fill'},
+                                               {displayValue: 'outline', value: 'outline'}]"
+                        [value]="option.value">
+              {{option.displayValue}}
+            </mat-option>
+          </mat-select>
+        </mat-form-field>
+
+
         <mat-checkbox *ngIf="combinedProperties.hasOwnProperty('highlightable')"
                       [checked]="$any(combinedProperties.highlightable)"
                       (change)="updateModel('highlightable', $event.checked)">
-- 
GitLab