From 4eb7b469e24554c9560d642b58bb2a8fe26a594f Mon Sep 17 00:00:00 2001
From: rhenck <richard.henck@iqb.hu-berlin.de>
Date: Fri, 29 Oct 2021 17:44:22 +0200
Subject: [PATCH] Add 'strikeOtherOptions' to radio button groups

This makes it so that other options appear with strikethrough when one
is selected.
---
 .../element-components/radio-button-group.component.ts      | 4 +++-
 projects/common/models/radio-button-group-element.ts        | 1 +
 .../properties-panel/element-properties.component.html      | 6 ++++++
 3 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/projects/common/element-components/radio-button-group.component.ts b/projects/common/element-components/radio-button-group.component.ts
index 0e524fb65..dea56cedc 100644
--- a/projects/common/element-components/radio-button-group.component.ts
+++ b/projects/common/element-components/radio-button-group.component.ts
@@ -25,6 +25,7 @@ import { RadioButtonGroupElement } from '../models/radio-button-group-element';
                        [fxLayout]="elementModel.alignment"
                        [formControl]="elementFormControl">
         <mat-radio-button *ngFor="let option of elementModel.options; let i = index"
+                          [ngClass]="{ 'strike' : elementModel.strikeOtherOptions && elementModel.value !== i }"
                           [value]="i"
                           [style.pointer-events]="elementModel.readOnly ? 'none' : 'unset'"
                           [style.line-height.%]="elementModel.lineHeight">
@@ -43,7 +44,8 @@ import { RadioButtonGroupElement } from '../models/radio-button-group-element';
     '::ng-deep app-radio-button-group mat-radio-button {margin-bottom: 6px}',
     '::ng-deep app-radio-button-group mat-radio-button {margin-right: 15px}',
     '.white-space-break {white-space: normal}',
-    '.error-message { position: absolute; margin-top: 25px; font-size: 75% }'
+    '.error-message { position: absolute; margin-top: 25px; font-size: 75% }',
+    '::ng-deep app-radio-button-group .strike .mat-radio-label {text-decoration: line-through}'
   ]
 })
 export class RadioButtonGroupComponent extends FormElementComponent {
diff --git a/projects/common/models/radio-button-group-element.ts b/projects/common/models/radio-button-group-element.ts
index 864503cba..7f8588a26 100644
--- a/projects/common/models/radio-button-group-element.ts
+++ b/projects/common/models/radio-button-group-element.ts
@@ -5,6 +5,7 @@ import { initFontElement, initSurfaceElement } from '../util/unit-interface-init
 export class RadioButtonGroupElement extends InputElement implements FontElement, SurfaceUIElement {
   options: string[] = [];
   alignment: 'row' | 'column' = 'column';
+  strikeOtherOptions: boolean = false;
 
   fontColor: string = 'black';
   font: string = 'Roboto';
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 3b15bc6d6..013bf006f 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
@@ -48,6 +48,12 @@
           Unterstreichung erlauben
         </mat-checkbox>
 
+        <mat-checkbox *ngIf="combinedProperties.strikeOtherOptions !== undefined"
+                      [checked]="$any(combinedProperties.strikeOtherOptions)"
+                      (change)="updateModel('strikeOtherOptions', $event.checked)">
+          Andere Optionen durchstreichen
+        </mat-checkbox>
+
         <mat-checkbox *ngIf="combinedProperties.allowUnset !== undefined"
                       [checked]="$any(combinedProperties.allowUnset)"
                       (change)="updateModel('allowUnset', $event.checked)">
-- 
GitLab