From 9a9844259d860250f7009fed249942be2f466633 Mon Sep 17 00:00:00 2001
From: jojohoch <joachim.hoch@iqb.hu-berlin.de>
Date: Thu, 17 Feb 2022 14:23:15 +0100
Subject: [PATCH] Fix height of elements with dynamic positioning and fixed
 size

- Use fixedSize always together with dynamicPositioning!
- Rename css class 'center-content' to 'fixed-size-element'
'fixed-size-element' ensures that the content does not overflow.
---
 docs/release-notes-editor.txt                 |  4 ++
 docs/release-notes-player.txt                 |  3 +-
 projects/common/assets/styles.css             |  4 +-
 .../ui-elements/audio/audio.component.ts      | 10 ++--
 .../ui-elements/button/button.component.ts    | 56 +++++++++----------
 .../checkbox/checkbox.component.ts            |  8 ++-
 .../ui-elements/cloze/cloze.component.ts      |  8 ++-
 .../drop-list/drop-list.component.ts          |  8 ++-
 .../dropdown/dropdown.component.ts            | 13 +++--
 .../ui-elements/frame/frame.component.ts      |  6 +-
 .../ui-elements/image/image.component.ts      |  9 ++-
 .../ui-elements/likert/likert.component.ts    |  8 ++-
 .../radio-group-images.component.ts           |  8 ++-
 .../radio/radio-button-group.component.ts     |  8 ++-
 .../ui-elements/slider/slider.component.ts    | 12 ++--
 .../spell-correct/spell-correct.component.ts  | 10 ++--
 .../text-area/text-area.component.ts          | 29 ++++++----
 .../text-field/text-field.component.ts        | 54 ++++++++++--------
 .../common/ui-elements/text/text.component.ts |  8 ++-
 .../ui-elements/video/video.component.ts      | 10 ++--
 20 files changed, 157 insertions(+), 119 deletions(-)

diff --git a/docs/release-notes-editor.txt b/docs/release-notes-editor.txt
index 7ecf9edd8..d91656937 100644
--- a/docs/release-notes-editor.txt
+++ b/docs/release-notes-editor.txt
@@ -1,5 +1,9 @@
 Editor
 ======
+1.26.0
+- Fix height of elements with dynamic positioning and fixed size
+- Fix dimensions of image elements with dynamic positioning and fixed size
+
 1.25.0
 - Remove border of slider rectangle in number line mode at position 0
 - Fix coloring of the slider rectangle in number line mode at position 0
diff --git a/docs/release-notes-player.txt b/docs/release-notes-player.txt
index 7df24784e..6132d2a40 100644
--- a/docs/release-notes-player.txt
+++ b/docs/release-notes-player.txt
@@ -1,7 +1,8 @@
 Player
 ======
 1.20.0
-- Fix dimensions of images with dynamicPositioning and fixedSize
+- Fix height of elements with dynamic positioning and fixed size
+- Fix dimensions of image elements with dynamic positioning and fixed size
 - Fix display of fixed size dynamic elements on iPad
 - Fix selecting and marking of text on iPad
 
diff --git a/projects/common/assets/styles.css b/projects/common/assets/styles.css
index 83b0c8ca4..90dcb03be 100644
--- a/projects/common/assets/styles.css
+++ b/projects/common/assets/styles.css
@@ -57,6 +57,6 @@ blockquote p {
   height: 100%;
 }
 
-.center-content {
-  margin: auto
+.fixed-size-element {
+  overflow: auto;
 }
diff --git a/projects/common/ui-elements/audio/audio.component.ts b/projects/common/ui-elements/audio/audio.component.ts
index 353657bf4..6f3964ada 100644
--- a/projects/common/ui-elements/audio/audio.component.ts
+++ b/projects/common/ui-elements/audio/audio.component.ts
@@ -5,10 +5,12 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme
 @Component({
   selector: 'aspect-audio',
   template: `
-    <div [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
-                                      elementModel.positionProps.fixedSize">
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
+                                      elementModel.positionProps.fixedSize"
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'">
       <audio #player
              (playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)"
              (pause)="onMediaPlayStatusChanged.emit(null)"
diff --git a/projects/common/ui-elements/button/button.component.ts b/projects/common/ui-elements/button/button.component.ts
index da904596e..0c7694952 100644
--- a/projects/common/ui-elements/button/button.component.ts
+++ b/projects/common/ui-elements/button/button.component.ts
@@ -7,40 +7,38 @@ import { ButtonElement } from './button-element';
 @Component({
   selector: 'aspect-button',
   template: `
-    <button *ngIf="!elementModel.imageSrc" mat-button
-            type='button'
-            [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                       elementModel.positionProps.fixedSize"
-            [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-            [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-            [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.border-radius.px]="elementModel.borderRadius"
-            (click)="elementModel.action ? navigationRequested.emit(elementModel.action) : false">
-      {{elementModel.label}}
-    </button>
-    <input *ngIf="elementModel.imageSrc" type="image"
-           [src]="elementModel.imageSrc | safeResourceUrl"
-           [class.center-content]="elementModel.positionProps.dynamicPositioning &&
-                                      elementModel.positionProps.fixedSize"
-           [class.fixed-size-dynamic-image]="elementModel.positionProps.dynamicPositioning &&
-                                      elementModel.positionProps.fixedSize"
-           [class]="elementModel.positionProps.dynamicPositioning ? 'dynamic-image' : 'static-image'"
-           [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : null"
-           [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : null"
-           [alt]="'imageNotFound' | translate"
-           (click)="elementModel.action ? navigationRequested.emit(elementModel.action) : false">
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'">
+      <button *ngIf="!elementModel.imageSrc" mat-button
+              type='button'
+              class="fill-container"
+              [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.border-radius.px]="elementModel.borderRadius"
+              (click)="elementModel.action ? navigationRequested.emit(elementModel.action) : false">
+        {{elementModel.label}}
+      </button>
+      <input *ngIf="elementModel.imageSrc" type="image"
+             [src]="elementModel.imageSrc | safeResourceUrl"
+             [class]="elementModel.positionProps.dynamicPositioning &&
+              !elementModel.positionProps.fixedSize ? 'dynamic-image' : 'static-image'"
+             [alt]="'imageNotFound' | translate"
+             (click)="elementModel.action ? navigationRequested.emit(elementModel.action) : false">
+    </div>
   `,
   styles: [
     '.dynamic-image {width: 100%; height: fit-content;}',
     '.static-image {max-width: 100%; max-height: 100%; display: grid;}', // grid: to prevent scrollbars
-    '.fixed-size-dynamic-image {position: relative; object-fit: scale-down;}',
-    '.center-content {margin: auto !important;}' // overwrite: margin of mat-button
+    '.fill-container {width: 100%; height: 100%;}'
   ]
 })
 export class ButtonComponent extends ElementComponent {
diff --git a/projects/common/ui-elements/checkbox/checkbox.component.ts b/projects/common/ui-elements/checkbox/checkbox.component.ts
index 0c609cce6..567930d7c 100644
--- a/projects/common/ui-elements/checkbox/checkbox.component.ts
+++ b/projects/common/ui-elements/checkbox/checkbox.component.ts
@@ -7,10 +7,12 @@ import { CheckboxElement } from './checkbox-element';
   selector: 'aspect-checkbox',
   template: `
     <div class="mat-form-field"
-         [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+         [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'"
          [style.background-color]="elementModel.surfaceProps.backgroundColor">
       <mat-checkbox #checkbox class="example-margin"
                     [formControl]="elementFormControl"
diff --git a/projects/common/ui-elements/cloze/cloze.component.ts b/projects/common/ui-elements/cloze/cloze.component.ts
index 861e78d28..b15c9dd00 100644
--- a/projects/common/ui-elements/cloze/cloze.component.ts
+++ b/projects/common/ui-elements/cloze/cloze.component.ts
@@ -13,10 +13,12 @@ import { ElementComponent } from '../../directives/element-component.directive';
     <ng-container *ngIf="elementModel.document.content.length == 0">
       Kein Dokument vorhanden
     </ng-container>
-    <div [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                    elementModel.positionProps.fixedSize"
-         [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : 'auto'">
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : 'auto'">
       <ng-container *ngFor="let part of elementModel.document.content">
         <ul *ngIf="part.type === 'bulletList'"
             [style.font-size]="part.attrs.fontSize"
diff --git a/projects/common/ui-elements/drop-list/drop-list.component.ts b/projects/common/ui-elements/drop-list/drop-list.component.ts
index 065db3716..3475edfb6 100644
--- a/projects/common/ui-elements/drop-list/drop-list.component.ts
+++ b/projects/common/ui-elements/drop-list/drop-list.component.ts
@@ -14,10 +14,12 @@ import { DragNDropValueObject } from '../../models/uI-element';
       <!-- Border width is a workaround to enable/disable the Material cdk-drop-list-receiving-->
       <!-- class style.-->
       <div class="list"
-           [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-           [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-           [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+           [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
+           [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+             elementModel.width + 'px' : '100%'"
+           [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+             elementModel.height + 'px' : '100%'"
            [ngClass]="{ 'align-flex' : elementModel.orientation === 'flex' }"
            [class.dropList-highlight]="elementModel.highlightReceivingDropList"
            [style.outline-color]="elementModel.highlightReceivingDropListColor"
diff --git a/projects/common/ui-elements/dropdown/dropdown.component.ts b/projects/common/ui-elements/dropdown/dropdown.component.ts
index ec3b4e38b..6541f0cc4 100644
--- a/projects/common/ui-elements/dropdown/dropdown.component.ts
+++ b/projects/common/ui-elements/dropdown/dropdown.component.ts
@@ -5,12 +5,15 @@ import { DropdownElement } from './dropdown-element';
 @Component({
   selector: 'aspect-dropdown',
   template: `
-    <mat-form-field appearance="fill"
-                    [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-                    [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-                    [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <mat-form-field
+        appearance="fill"
+        [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
-                    aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor">
+        [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+                      elementModel.width + 'px' : '100%'"
+        [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+                      elementModel.height + 'px' : '100%'"
+        aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor">
       <mat-label [style.color]="elementModel.fontProps.fontColor"
                  [style.font-family]="elementModel.fontProps.font"
                  [style.font-size.px]="elementModel.fontProps.fontSize"
diff --git a/projects/common/ui-elements/frame/frame.component.ts b/projects/common/ui-elements/frame/frame.component.ts
index 2fc18b10b..075c1c582 100644
--- a/projects/common/ui-elements/frame/frame.component.ts
+++ b/projects/common/ui-elements/frame/frame.component.ts
@@ -5,12 +5,12 @@ import { ElementComponent } from '../../directives/element-component.directive';
 @Component({
   selector: 'aspect-frame',
   template: `
-    <div [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                    elementModel.positionProps.fixedSize"
-         [style.width]="elementModel.positionProps.fixedSize ?
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
               elementModel.width + 'px' :
               'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'"
-         [style.height]="elementModel.positionProps.fixedSize ?
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
               elementModel.height + 'px' :
               'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'"
          [style.border-style]="elementModel.borderStyle"
diff --git a/projects/common/ui-elements/image/image.component.ts b/projects/common/ui-elements/image/image.component.ts
index 7de353f1d..04e498c85 100644
--- a/projects/common/ui-elements/image/image.component.ts
+++ b/projects/common/ui-elements/image/image.component.ts
@@ -8,10 +8,10 @@ import { ValueChangeElement } from '../../models/uI-element';
 @Component({
   selector: 'aspect-image',
   template: `
-    <div [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
-                                    elementModel.positionProps.fixedSize"
+    <div [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'"
          class="image-container"
          (mouseover)="magnifierVisible = true"
          (mouseenter)="magnifierVisible = true"
@@ -33,7 +33,6 @@ import { ValueChangeElement } from '../../models/uI-element';
   styles: [
     '.image-container {position: relative}',
     '.max-size-image {max-width: 100%; max-height: 100%}',
-    '.center-content .max-size-image { object-fit: contain; width: 100%; height: 100%}',
     '.fit-image {width: 100%; height: 100%; object-fit: contain}'
   ]
 })
diff --git a/projects/common/ui-elements/likert/likert.component.ts b/projects/common/ui-elements/likert/likert.component.ts
index 06656d878..d122db116 100644
--- a/projects/common/ui-elements/likert/likert.component.ts
+++ b/projects/common/ui-elements/likert/likert.component.ts
@@ -13,10 +13,12 @@ import { ElementComponent } from '../../directives/element-component.directive';
     <div *ngIf="elementModel.rows.length === 0 && elementModel.columns.length === 0">
       Keine Zeilen oder Spalten vorhanden
     </div>
-    <div [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                  elementModel.positionProps.fixedSize"
-         [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'">
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'">
       <div class="mat-typography"
            [style.display]="'grid'"
            [style.grid-template-columns]="elementModel.firstColumnSizeRatio + 'fr ' +
diff --git a/projects/common/ui-elements/radio-with-images/radio-group-images.component.ts b/projects/common/ui-elements/radio-with-images/radio-group-images.component.ts
index e7da1b453..2e207b71f 100644
--- a/projects/common/ui-elements/radio-with-images/radio-group-images.component.ts
+++ b/projects/common/ui-elements/radio-with-images/radio-group-images.component.ts
@@ -5,10 +5,12 @@ import { FormElementComponent } from '../../directives/form-element-component.di
 @Component({
   selector: 'aspect-radio-group-images',
   template: `
-    <div [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'"
          [style.display]="'grid !important'"
          [style.grid-template-columns]="'1fr '.repeat(elementModel.columns.length)"
          [style.background-color]="elementModel.surfaceProps.backgroundColor"
diff --git a/projects/common/ui-elements/radio/radio-button-group.component.ts b/projects/common/ui-elements/radio/radio-button-group.component.ts
index 9ec65927e..c50854e4c 100644
--- a/projects/common/ui-elements/radio/radio-button-group.component.ts
+++ b/projects/common/ui-elements/radio/radio-button-group.component.ts
@@ -6,10 +6,12 @@ import { RadioButtonGroupElement } from './radio-button-group-element';
   selector: 'aspect-radio-button-group',
   template: `
     <div class="mat-form-field"
-         [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+         [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'"
          [style.background-color]="elementModel.surfaceProps.backgroundColor"
          [style.color]="elementModel.fontProps.fontColor"
          [style.font-family]="elementModel.fontProps.font"
diff --git a/projects/common/ui-elements/slider/slider.component.ts b/projects/common/ui-elements/slider/slider.component.ts
index 44cbded71..d0ecee6c1 100644
--- a/projects/common/ui-elements/slider/slider.component.ts
+++ b/projects/common/ui-elements/slider/slider.component.ts
@@ -8,11 +8,13 @@ import { FormElementComponent } from '../../directives/form-element-component.di
   selector: 'aspect-slider',
   template: `
     <div fxLayout="column"
-         [style.background-color]="elementModel.surfaceProps.backgroundColor"
-         [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
-                                    elementModel.positionProps.fixedSize">
+         [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
+                                    elementModel.positionProps.fixedSize"
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'"
+         [style.background-color]="elementModel.surfaceProps.backgroundColor">
       <div *ngIf="elementModel.label"
            [style.color]="elementModel.fontProps.fontColor"
            [style.font-family]="elementModel.fontProps.font"
diff --git a/projects/common/ui-elements/spell-correct/spell-correct.component.ts b/projects/common/ui-elements/spell-correct/spell-correct.component.ts
index 046635e17..1f2e946f4 100644
--- a/projects/common/ui-elements/spell-correct/spell-correct.component.ts
+++ b/projects/common/ui-elements/spell-correct/spell-correct.component.ts
@@ -6,10 +6,12 @@ import { SpellCorrectElement } from './spell-correct-element';
 @Component({
   selector: 'aspect-spell-correct',
   template: `
-    <div [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
-             elementModel.positionProps.fixedSize">
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
+             elementModel.positionProps.fixedSize"
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+          elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'">
       <div fxFlex
            fxLayout="column"
            aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
diff --git a/projects/common/ui-elements/text-area/text-area.component.ts b/projects/common/ui-elements/text-area/text-area.component.ts
index 30c1f17e5..86d7fb170 100644
--- a/projects/common/ui-elements/text-area/text-area.component.ts
+++ b/projects/common/ui-elements/text-area/text-area.component.ts
@@ -7,19 +7,24 @@ import { TextAreaElement } from './text-area-element';
 @Component({
   selector: 'aspect-text-area',
   template: `
-    <mat-form-field [ngClass]="{ 'no-label' : !elementModel.label}"
-                    [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-                    [style.min-height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-                    [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <mat-form-field
+        [ngClass]="{ 'no-label' : !elementModel.label}"
+        [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
-                    aspectInputBackgroundColor [backgroundColor]="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' : ''"
-                    [appearance]="$any(elementModel.appearance)">
+        [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+          elementModel.width + 'px' : '100%'"
+        [style.min-height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+          elementModel.height + 'px' : '100%'"
+        [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+          elementModel.height + 'px' : '100%'"
+        aspectInputBackgroundColor [backgroundColor]="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' : ''"
+        [appearance]="$any(elementModel.appearance)">
       <mat-label *ngIf="elementModel.label">{{elementModel.label}}</mat-label>
       <textarea matInput #input
                 autocomplete="off" rows="{{elementModel.rowCount}}"
diff --git a/projects/common/ui-elements/text-field/text-field.component.ts b/projects/common/ui-elements/text-field/text-field.component.ts
index 7b1f78045..d9a3aa149 100644
--- a/projects/common/ui-elements/text-field/text-field.component.ts
+++ b/projects/common/ui-elements/text-field/text-field.component.ts
@@ -8,19 +8,22 @@ import { TextFieldElement } from './text-field-element';
 @Component({
   selector: 'aspect-text-field',
   template: `
-    <mat-form-field *ngIf="elementModel.label !== ''"
-                    [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <mat-form-field
+        *ngIf="elementModel.label !== ''"
+        [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
-                    [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-                    [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-                    [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' : ''"
-                    aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
-                    [appearance]="$any(elementModel.appearance)">
+        [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+                      elementModel.width + 'px' : '100%'"
+        [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+                      elementModel.height + 'px' : '100%'"
+        [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' : ''"
+        aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
+        [appearance]="$any(elementModel.appearance)">
       <mat-label>{{elementModel.label}}</mat-label>
       <input matInput type="text" #input autocomplete="off"
              [formControl]="elementFormControl"
@@ -39,19 +42,22 @@ import { TextFieldElement } from './text-field-element';
         {{elementFormControl.errors | errorTransform: elementModel}}
       </mat-error>
     </mat-form-field>
-    <mat-form-field *ngIf="elementModel.label === ''" class="small-input"
-                    [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <mat-form-field
+        *ngIf="elementModel.label === ''" class="small-input"
+        [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                     elementModel.positionProps.fixedSize"
-                    [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-                    [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-                    [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' : ''"
-                    aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
-                    [appearance]="$any(elementModel.appearance)">
+        [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+                      elementModel.width + 'px' : '100%'"
+        [style.height]="elementModel.positionProps.dynamicPositioning &&  elementModel.positionProps.fixedSize ?
+                      elementModel.height + 'px' : '100%'"
+        [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' : ''"
+        aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
+        [appearance]="$any(elementModel.appearance)">
       <input matInput type="text" #input autocomplete="off"
              [formControl]="elementFormControl"
              [value]="$any(elementModel.value)"
diff --git a/projects/common/ui-elements/text/text.component.ts b/projects/common/ui-elements/text/text.component.ts
index 131dca7bf..fddc54dc8 100644
--- a/projects/common/ui-elements/text/text.component.ts
+++ b/projects/common/ui-elements/text/text.component.ts
@@ -8,10 +8,12 @@ import { ValueChangeElement } from '../../models/uI-element';
 @Component({
   selector: 'aspect-text',
   template: `
-    <div [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
                                    elementModel.positionProps.fixedSize"
-         [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : 'auto'">
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : 'auto'">
       <aspect-marking-bar
           *ngIf="elementModel.highlightableYellow ||
               elementModel.highlightableTurquoise ||
diff --git a/projects/common/ui-elements/video/video.component.ts b/projects/common/ui-elements/video/video.component.ts
index f6a9502fd..9f645f898 100644
--- a/projects/common/ui-elements/video/video.component.ts
+++ b/projects/common/ui-elements/video/video.component.ts
@@ -5,11 +5,13 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme
 @Component({
   selector: 'aspect-video',
   template: `
-    <div [style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
-         [style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : '100%'"
-         [class.center-content]="elementModel.positionProps.dynamicPositioning &&
+    <div [class]="elementModel.scale ? 'fit-video' : 'max-size-video'"
+         [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning &&
              elementModel.positionProps.fixedSize"
-         [class]="elementModel.scale ? 'fit-video' : 'max-size-video'">
+         [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.width + 'px' : '100%'"
+         [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
+           elementModel.height + 'px' : '100%'">
       <video #player
              (playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)"
              (pause)="onMediaPlayStatusChanged.emit(null)"
-- 
GitLab