From 9a8afad08009d9ea5982eb3db89ea9e258734ad9 Mon Sep 17 00:00:00 2001 From: jojohoch <joachim.hoch@iqb.hu-berlin.de> Date: Thu, 17 Feb 2022 16:53:26 +0100 Subject: [PATCH] Refactor fixed size of dynamically positioned elements Move required styles and classes to the overlays of player and editor --- projects/common/assets/styles.css | 2 +- .../ui-elements/audio/audio.component.ts | 8 ++----- .../ui-elements/button/button.component.ts | 8 ++----- .../checkbox/checkbox.component.ts | 8 ++----- .../ui-elements/cloze/cloze.component.ts | 8 ++----- .../drop-list/drop-list.component.ts | 8 ++----- .../dropdown/dropdown.component.ts | 8 ++----- .../ui-elements/frame/frame.component.ts | 10 ++------- .../ui-elements/image/image.component.ts | 6 ++--- .../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 | 8 ++----- .../spell-correct/spell-correct.component.ts | 8 ++----- .../text-area/text-area.component.ts | 11 +++------- .../text-field/text-field.component.ts | 22 ++++++------------- .../common/ui-elements/text/text.component.ts | 8 ++----- .../ui-elements/video/video.component.ts | 8 ++----- .../dynamic-canvas-overlay.component.ts | 9 +++++++- .../element-container.component.html | 13 ++++++++--- 20 files changed, 59 insertions(+), 118 deletions(-) diff --git a/projects/common/assets/styles.css b/projects/common/assets/styles.css index 90dcb03be..1ceddfc57 100644 --- a/projects/common/assets/styles.css +++ b/projects/common/assets/styles.css @@ -57,6 +57,6 @@ blockquote p { height: 100%; } -.fixed-size-element { +.fixed-size-content { overflow: auto; } diff --git a/projects/common/ui-elements/audio/audio.component.ts b/projects/common/ui-elements/audio/audio.component.ts index 6f3964ada..67133d57a 100644 --- a/projects/common/ui-elements/audio/audio.component.ts +++ b/projects/common/ui-elements/audio/audio.component.ts @@ -5,12 +5,8 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme @Component({ selector: 'aspect-audio', template: ` - <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 [style.width.%]="100" + [style.height.%]="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 0c7694952..386c381a4 100644 --- a/projects/common/ui-elements/button/button.component.ts +++ b/projects/common/ui-elements/button/button.component.ts @@ -7,12 +7,8 @@ import { ButtonElement } from './button-element'; @Component({ selector: 'aspect-button', template: ` - <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 [style.width.%]="100" + [style.height.%]="100"> <button *ngIf="!elementModel.imageSrc" mat-button type='button' class="fill-container" diff --git a/projects/common/ui-elements/checkbox/checkbox.component.ts b/projects/common/ui-elements/checkbox/checkbox.component.ts index 567930d7c..f38c7e613 100644 --- a/projects/common/ui-elements/checkbox/checkbox.component.ts +++ b/projects/common/ui-elements/checkbox/checkbox.component.ts @@ -7,12 +7,8 @@ import { CheckboxElement } from './checkbox-element'; selector: 'aspect-checkbox', template: ` <div class="mat-form-field" - [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.width.%]="100" + [style.height.%]="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 b15c9dd00..1143aa761 100644 --- a/projects/common/ui-elements/cloze/cloze.component.ts +++ b/projects/common/ui-elements/cloze/cloze.component.ts @@ -13,12 +13,8 @@ import { ElementComponent } from '../../directives/element-component.directive'; <ng-container *ngIf="elementModel.document.content.length == 0"> Kein Dokument vorhanden </ng-container> - <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' : 'auto'"> + <div [style.width.%]="100" + [style.height]="'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 3475edfb6..47f15c205 100644 --- a/projects/common/ui-elements/drop-list/drop-list.component.ts +++ b/projects/common/ui-elements/drop-list/drop-list.component.ts @@ -14,12 +14,8 @@ 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" - [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.width.%]="100" + [style.height.%]="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 6541f0cc4..534ae21ca 100644 --- a/projects/common/ui-elements/dropdown/dropdown.component.ts +++ b/projects/common/ui-elements/dropdown/dropdown.component.ts @@ -7,12 +7,8 @@ import { DropdownElement } from './dropdown-element'; template: ` <mat-form-field appearance="fill" - [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.width.%]="100" + [style.height.%]="100" aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"> <mat-label [style.color]="elementModel.fontProps.fontColor" [style.font-family]="elementModel.fontProps.font" diff --git a/projects/common/ui-elements/frame/frame.component.ts b/projects/common/ui-elements/frame/frame.component.ts index 075c1c582..1b2504777 100644 --- a/projects/common/ui-elements/frame/frame.component.ts +++ b/projects/common/ui-elements/frame/frame.component.ts @@ -5,14 +5,8 @@ import { ElementComponent } from '../../directives/element-component.directive'; @Component({ selector: 'aspect-frame', template: ` - <div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && - elementModel.positionProps.fixedSize" - [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ? - elementModel.width + 'px' : - 'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'" - [style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ? - elementModel.height + 'px' : - 'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'" + <div [style.width]="'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'" + [style.height]="'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'" [style.border-style]="elementModel.borderStyle" [style.border-width.px]="elementModel.borderWidth" [style.border-color]="elementModel.borderColor" diff --git a/projects/common/ui-elements/image/image.component.ts b/projects/common/ui-elements/image/image.component.ts index 04e498c85..b985d80cd 100644 --- a/projects/common/ui-elements/image/image.component.ts +++ b/projects/common/ui-elements/image/image.component.ts @@ -8,10 +8,8 @@ import { ValueChangeElement } from '../../models/uI-element'; @Component({ selector: 'aspect-image', template: ` - <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%'" + <div [style.width.%]="100" + [style.height.%]="100" class="image-container" (mouseover)="magnifierVisible = true" (mouseenter)="magnifierVisible = true" diff --git a/projects/common/ui-elements/likert/likert.component.ts b/projects/common/ui-elements/likert/likert.component.ts index d122db116..cc1f13842 100644 --- a/projects/common/ui-elements/likert/likert.component.ts +++ b/projects/common/ui-elements/likert/likert.component.ts @@ -13,12 +13,8 @@ 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.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 [style.width.%]="100" + [style.height.%]="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 2e207b71f..fea408707 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,12 +5,8 @@ import { FormElementComponent } from '../../directives/form-element-component.di @Component({ selector: 'aspect-radio-group-images', template: ` - <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 [style.width.%]="100" + [style.height.%]="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 c50854e4c..e80f1f197 100644 --- a/projects/common/ui-elements/radio/radio-button-group.component.ts +++ b/projects/common/ui-elements/radio/radio-button-group.component.ts @@ -6,12 +6,8 @@ import { RadioButtonGroupElement } from './radio-button-group-element'; selector: 'aspect-radio-button-group', template: ` <div class="mat-form-field" - [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.width.%]="100" + [style.height.%]="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 d0ecee6c1..f7a4f0673 100644 --- a/projects/common/ui-elements/slider/slider.component.ts +++ b/projects/common/ui-elements/slider/slider.component.ts @@ -8,12 +8,8 @@ import { FormElementComponent } from '../../directives/form-element-component.di selector: 'aspect-slider', template: ` <div fxLayout="column" - [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.width.%]="100" + [style.height.%]="100" [style.background-color]="elementModel.surfaceProps.backgroundColor"> <div *ngIf="elementModel.label" [style.color]="elementModel.fontProps.fontColor" 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 1f2e946f4..13b46a8f3 100644 --- a/projects/common/ui-elements/spell-correct/spell-correct.component.ts +++ b/projects/common/ui-elements/spell-correct/spell-correct.component.ts @@ -6,12 +6,8 @@ import { SpellCorrectElement } from './spell-correct-element'; @Component({ selector: 'aspect-spell-correct', template: ` - <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 [style.width.%]="100" + [style.height.%]="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 86d7fb170..6f9b45102 100644 --- a/projects/common/ui-elements/text-area/text-area.component.ts +++ b/projects/common/ui-elements/text-area/text-area.component.ts @@ -9,14 +9,9 @@ import { TextAreaElement } from './text-area-element'; template: ` <mat-form-field [ngClass]="{ 'no-label' : !elementModel.label}" - [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && - elementModel.positionProps.fixedSize" - [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%'" + [style.width.%]="100" + [style.height.%]="100" + [style.min-height.%]="100" aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor" [style.color]="elementModel.fontProps.fontColor" [style.font-family]="elementModel.fontProps.font" 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 d9a3aa149..b0cfc41ea 100644 --- a/projects/common/ui-elements/text-field/text-field.component.ts +++ b/projects/common/ui-elements/text-field/text-field.component.ts @@ -10,12 +10,8 @@ import { TextFieldElement } from './text-field-element'; template: ` <mat-form-field *ngIf="elementModel.label !== ''" - [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.width.%]="100" + [style.height.%]="100" [style.color]="elementModel.fontProps.fontColor" [style.font-family]="elementModel.fontProps.font" [style.font-size.px]="elementModel.fontProps.fontSize" @@ -44,12 +40,8 @@ import { TextFieldElement } from './text-field-element'; </mat-form-field> <mat-form-field *ngIf="elementModel.label === ''" class="small-input" - [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.width.%]="100" + [style.height.%]="100" [style.color]="elementModel.fontProps.fontColor" [style.font-family]="elementModel.fontProps.font" [style.font-size.px]="elementModel.fontProps.fontSize" @@ -90,13 +82,13 @@ export class TextFieldComponent extends FormElementComponent { validators.push(Validators.required); } if (this.elementModel.minLength) { - validators.push(Validators.minLength(<number>this.elementModel.minLength)); + validators.push(Validators.minLength(<number> this.elementModel.minLength)); } if (this.elementModel.maxLength) { - validators.push(Validators.maxLength(<number>this.elementModel.maxLength)); + validators.push(Validators.maxLength(<number> this.elementModel.maxLength)); } if (this.elementModel.pattern) { - validators.push(Validators.pattern(<string>this.elementModel.pattern)); + validators.push(Validators.pattern(<string> this.elementModel.pattern)); } return validators; } diff --git a/projects/common/ui-elements/text/text.component.ts b/projects/common/ui-elements/text/text.component.ts index fddc54dc8..519a904ec 100644 --- a/projects/common/ui-elements/text/text.component.ts +++ b/projects/common/ui-elements/text/text.component.ts @@ -8,12 +8,8 @@ import { ValueChangeElement } from '../../models/uI-element'; @Component({ selector: 'aspect-text', template: ` - <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' : 'auto'"> + <div [style.width.%]="100" + [style.height.%]="100"> <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 9f645f898..ec6b67f4b 100644 --- a/projects/common/ui-elements/video/video.component.ts +++ b/projects/common/ui-elements/video/video.component.ts @@ -6,12 +6,8 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme selector: 'aspect-video', template: ` <div [class]="elementModel.scale ? 'fit-video' : 'max-size-video'" - [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.width.%]="100" + [style.height.%]="100"> <video #player (playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)" (pause)="onMediaPlayStatusChanged.emit(null)" diff --git a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts index 8c16596df..748ac2e34 100644 --- a/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts +++ b/projects/editor/src/app/components/unit-view/page-view/canvas/overlays/dynamic-canvas-overlay.component.ts @@ -34,7 +34,14 @@ import { UIElement } from '../../../../../../../../common/models/uI-element'; <div *cdkDragPlaceholder></div> </div> </div> - <ng-template #elementContainer></ng-template> + <div [class.fixed-size-content]="element.positionProps?.dynamicPositioning && + element.positionProps?.fixedSize" + [style.width]="element.positionProps?.dynamicPositioning && element.positionProps?.fixedSize ? + element.width + 'px' : '100%'" + [style.height]="element.positionProps?.dynamicPositioning && element.positionProps?.fixedSize ? + element.height + 'px' : '100%'"> + <ng-template #elementContainer></ng-template> + </div> </div> <div class="resize-preview" [style.position]="'relative'" diff --git a/projects/player/src/app/components/element-container/element-container.component.html b/projects/player/src/app/components/element-container/element-container.component.html index 699c998e1..b6032f71d 100644 --- a/projects/player/src/app/components/element-container/element-container.component.html +++ b/projects/player/src/app/components/element-container/element-container.component.html @@ -1,7 +1,14 @@ <div [class]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ? - 'fixed-size-content-wrapper' : 'element-container'" - cdkOverlayOrigin #overlayOrigin="cdkOverlayOrigin"> - <ng-template #elementComponentContainer></ng-template> + 'fixed-size-content-wrapper' : 'element-container'"> + <div [class]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ? + 'fixed-size-content' : 'element-container'" + [style.width]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ? + elementModel.width + 'px' : '100%'" + [style.height]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ? + elementModel.height + 'px' : '100%'" + cdkOverlayOrigin #overlayOrigin="cdkOverlayOrigin"> + <ng-template #elementComponentContainer></ng-template> + </div> </div> <aspect-floating-keyboard -- GitLab