From 6b2cfb413794e240cf7ff0a5ca9771121f975aaf Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Fri, 15 Oct 2021 12:31:53 +0200
Subject: [PATCH] Add clearable property to textfields

This makes a small (suffix) button appear which clears all the input of
that field.
---
 projects/common/classes/textFieldElement.ts                 | 2 ++
 projects/common/element-components/text-field.component.ts  | 4 ++++
 .../page-view/properties/element-properties.component.html  | 6 ++++++
 3 files changed, 12 insertions(+)

diff --git a/projects/common/classes/textFieldElement.ts b/projects/common/classes/textFieldElement.ts
index 7181f15c5..989b3ec6d 100644
--- a/projects/common/classes/textFieldElement.ts
+++ b/projects/common/classes/textFieldElement.ts
@@ -14,6 +14,8 @@ export class TextFieldElement extends InputElement implements FontElement, Surfa
   inputAssistance: boolean = false;
   inputAssistancePreset: 'french' | 'numbers' | 'numbersAndOperators' | null = null;
 
+  clearable: boolean = false;
+
   fontColor: string = 'black';
   font: string = 'Roboto';
   fontSize: number = 18;
diff --git a/projects/common/element-components/text-field.component.ts b/projects/common/element-components/text-field.component.ts
index 452211b95..b6a2046b1 100644
--- a/projects/common/element-components/text-field.component.ts
+++ b/projects/common/element-components/text-field.component.ts
@@ -23,6 +23,10 @@ import { TextFieldElement } from '../classes/textFieldElement';
              autocomplete="off"
              [formControl]="elementFormControl"
              placeholder="{{elementModel.label}}">
+      <button *ngIf="elementModel.clearable" matSuffix mat-icon-button aria-label="Clear"
+              (click)="elementFormControl.setValue('')">
+        <mat-icon>close</mat-icon>
+      </button>
       <mat-error *ngIf="elementFormControl.errors">
         {{elementFormControl.errors | errorTransform: elementModel}}
       </mat-error>
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 70a36c4f5..5bfa5e3ad 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
@@ -206,6 +206,12 @@
                  (input)="updateModel('patternWarnMessage', $any($event.target).value)">
         </mat-form-field>
 
+        <mat-checkbox *ngIf="combinedProperties.clearable !== undefined"
+                      [checked]="$any(combinedProperties.clearable)"
+                      (change)="updateModel('clearable', $event.checked)">
+          Knopf zum Leeren anzeigen
+        </mat-checkbox>
+
         <mat-checkbox *ngIf="combinedProperties.inputAssistance !== undefined"
                       [checked]="$any(combinedProperties.inputAssistance)"
                       (change)="updateModel('inputAssistance', $event.checked)">
-- 
GitLab