Skip to content
Snippets Groups Projects
Commit 9a8afad0 authored by jojohoch's avatar jojohoch
Browse files

Refactor fixed size of dynamically positioned elements

Move required styles and classes to the overlays of player and editor
parent d4f9c61c
No related branches found
No related tags found
No related merge requests found
Showing
with 59 additions and 118 deletions
...@@ -57,6 +57,6 @@ blockquote p { ...@@ -57,6 +57,6 @@ blockquote p {
height: 100%; height: 100%;
} }
.fixed-size-element { .fixed-size-content {
overflow: auto; overflow: auto;
} }
...@@ -5,12 +5,8 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme ...@@ -5,12 +5,8 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme
@Component({ @Component({
selector: 'aspect-audio', selector: 'aspect-audio',
template: ` template: `
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'">
<audio #player <audio #player
(playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)" (playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)"
(pause)="onMediaPlayStatusChanged.emit(null)" (pause)="onMediaPlayStatusChanged.emit(null)"
......
...@@ -7,12 +7,8 @@ import { ButtonElement } from './button-element'; ...@@ -7,12 +7,8 @@ import { ButtonElement } from './button-element';
@Component({ @Component({
selector: 'aspect-button', selector: 'aspect-button',
template: ` template: `
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'">
<button *ngIf="!elementModel.imageSrc" mat-button <button *ngIf="!elementModel.imageSrc" mat-button
type='button' type='button'
class="fill-container" class="fill-container"
......
...@@ -7,12 +7,8 @@ import { CheckboxElement } from './checkbox-element'; ...@@ -7,12 +7,8 @@ import { CheckboxElement } from './checkbox-element';
selector: 'aspect-checkbox', selector: 'aspect-checkbox',
template: ` template: `
<div class="mat-form-field" <div class="mat-form-field"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[style.background-color]="elementModel.surfaceProps.backgroundColor"> [style.background-color]="elementModel.surfaceProps.backgroundColor">
<mat-checkbox #checkbox class="example-margin" <mat-checkbox #checkbox class="example-margin"
[formControl]="elementFormControl" [formControl]="elementFormControl"
......
...@@ -13,12 +13,8 @@ import { ElementComponent } from '../../directives/element-component.directive'; ...@@ -13,12 +13,8 @@ import { ElementComponent } from '../../directives/element-component.directive';
<ng-container *ngIf="elementModel.document.content.length == 0"> <ng-container *ngIf="elementModel.document.content.length == 0">
Kein Dokument vorhanden Kein Dokument vorhanden
</ng-container> </ng-container>
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height]="'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"> <ng-container *ngFor="let part of elementModel.document.content">
<ul *ngIf="part.type === 'bulletList'" <ul *ngIf="part.type === 'bulletList'"
[style.font-size]="part.attrs.fontSize" [style.font-size]="part.attrs.fontSize"
......
...@@ -14,12 +14,8 @@ import { DragNDropValueObject } from '../../models/uI-element'; ...@@ -14,12 +14,8 @@ import { DragNDropValueObject } from '../../models/uI-element';
<!-- Border width is a workaround to enable/disable the Material cdk-drop-list-receiving--> <!-- Border width is a workaround to enable/disable the Material cdk-drop-list-receiving-->
<!-- class style.--> <!-- class style.-->
<div class="list" <div class="list"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[ngClass]="{ 'align-flex' : elementModel.orientation === 'flex' }" [ngClass]="{ 'align-flex' : elementModel.orientation === 'flex' }"
[class.dropList-highlight]="elementModel.highlightReceivingDropList" [class.dropList-highlight]="elementModel.highlightReceivingDropList"
[style.outline-color]="elementModel.highlightReceivingDropListColor" [style.outline-color]="elementModel.highlightReceivingDropListColor"
......
...@@ -7,12 +7,8 @@ import { DropdownElement } from './dropdown-element'; ...@@ -7,12 +7,8 @@ import { DropdownElement } from './dropdown-element';
template: ` template: `
<mat-form-field <mat-form-field
appearance="fill" appearance="fill"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"> aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor">
<mat-label [style.color]="elementModel.fontProps.fontColor" <mat-label [style.color]="elementModel.fontProps.fontColor"
[style.font-family]="elementModel.fontProps.font" [style.font-family]="elementModel.fontProps.font"
......
...@@ -5,14 +5,8 @@ import { ElementComponent } from '../../directives/element-component.directive'; ...@@ -5,14 +5,8 @@ import { ElementComponent } from '../../directives/element-component.directive';
@Component({ @Component({
selector: 'aspect-frame', selector: 'aspect-frame',
template: ` template: `
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width]="'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'"
elementModel.positionProps.fixedSize" [style.height]="'calc(100% - ' + (elementModel.borderWidth * 2) + 'px)'"
[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)'"
[style.border-style]="elementModel.borderStyle" [style.border-style]="elementModel.borderStyle"
[style.border-width.px]="elementModel.borderWidth" [style.border-width.px]="elementModel.borderWidth"
[style.border-color]="elementModel.borderColor" [style.border-color]="elementModel.borderColor"
......
...@@ -8,10 +8,8 @@ import { ValueChangeElement } from '../../models/uI-element'; ...@@ -8,10 +8,8 @@ import { ValueChangeElement } from '../../models/uI-element';
@Component({ @Component({
selector: 'aspect-image', selector: 'aspect-image',
template: ` template: `
<div [style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ? <div [style.width.%]="100"
elementModel.width + 'px' : '100%'" [style.height.%]="100"
[style.height]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ?
elementModel.height + 'px' : '100%'"
class="image-container" class="image-container"
(mouseover)="magnifierVisible = true" (mouseover)="magnifierVisible = true"
(mouseenter)="magnifierVisible = true" (mouseenter)="magnifierVisible = true"
......
...@@ -13,12 +13,8 @@ import { ElementComponent } from '../../directives/element-component.directive'; ...@@ -13,12 +13,8 @@ import { ElementComponent } from '../../directives/element-component.directive';
<div *ngIf="elementModel.rows.length === 0 && elementModel.columns.length === 0"> <div *ngIf="elementModel.rows.length === 0 && elementModel.columns.length === 0">
Keine Zeilen oder Spalten vorhanden Keine Zeilen oder Spalten vorhanden
</div> </div>
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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" <div class="mat-typography"
[style.display]="'grid'" [style.display]="'grid'"
[style.grid-template-columns]="elementModel.firstColumnSizeRatio + 'fr ' + [style.grid-template-columns]="elementModel.firstColumnSizeRatio + 'fr ' +
......
...@@ -5,12 +5,8 @@ import { FormElementComponent } from '../../directives/form-element-component.di ...@@ -5,12 +5,8 @@ import { FormElementComponent } from '../../directives/form-element-component.di
@Component({ @Component({
selector: 'aspect-radio-group-images', selector: 'aspect-radio-group-images',
template: ` template: `
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[style.display]="'grid !important'" [style.display]="'grid !important'"
[style.grid-template-columns]="'1fr '.repeat(elementModel.columns.length)" [style.grid-template-columns]="'1fr '.repeat(elementModel.columns.length)"
[style.background-color]="elementModel.surfaceProps.backgroundColor" [style.background-color]="elementModel.surfaceProps.backgroundColor"
......
...@@ -6,12 +6,8 @@ import { RadioButtonGroupElement } from './radio-button-group-element'; ...@@ -6,12 +6,8 @@ import { RadioButtonGroupElement } from './radio-button-group-element';
selector: 'aspect-radio-button-group', selector: 'aspect-radio-button-group',
template: ` template: `
<div class="mat-form-field" <div class="mat-form-field"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[style.background-color]="elementModel.surfaceProps.backgroundColor" [style.background-color]="elementModel.surfaceProps.backgroundColor"
[style.color]="elementModel.fontProps.fontColor" [style.color]="elementModel.fontProps.fontColor"
[style.font-family]="elementModel.fontProps.font" [style.font-family]="elementModel.fontProps.font"
......
...@@ -8,12 +8,8 @@ import { FormElementComponent } from '../../directives/form-element-component.di ...@@ -8,12 +8,8 @@ import { FormElementComponent } from '../../directives/form-element-component.di
selector: 'aspect-slider', selector: 'aspect-slider',
template: ` template: `
<div fxLayout="column" <div fxLayout="column"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[style.background-color]="elementModel.surfaceProps.backgroundColor"> [style.background-color]="elementModel.surfaceProps.backgroundColor">
<div *ngIf="elementModel.label" <div *ngIf="elementModel.label"
[style.color]="elementModel.fontProps.fontColor" [style.color]="elementModel.fontProps.fontColor"
......
...@@ -6,12 +6,8 @@ import { SpellCorrectElement } from './spell-correct-element'; ...@@ -6,12 +6,8 @@ import { SpellCorrectElement } from './spell-correct-element';
@Component({ @Component({
selector: 'aspect-spell-correct', selector: 'aspect-spell-correct',
template: ` template: `
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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 fxFlex <div fxFlex
fxLayout="column" fxLayout="column"
aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor" aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
......
...@@ -9,14 +9,9 @@ import { TextAreaElement } from './text-area-element'; ...@@ -9,14 +9,9 @@ import { TextAreaElement } from './text-area-element';
template: ` template: `
<mat-form-field <mat-form-field
[ngClass]="{ 'no-label' : !elementModel.label}" [ngClass]="{ 'no-label' : !elementModel.label}"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="100"
[style.width]="elementModel.positionProps.dynamicPositioning && elementModel.positionProps.fixedSize ? [style.min-height.%]="100"
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" aspectInputBackgroundColor [backgroundColor]="elementModel.surfaceProps.backgroundColor"
[style.color]="elementModel.fontProps.fontColor" [style.color]="elementModel.fontProps.fontColor"
[style.font-family]="elementModel.fontProps.font" [style.font-family]="elementModel.fontProps.font"
......
...@@ -10,12 +10,8 @@ import { TextFieldElement } from './text-field-element'; ...@@ -10,12 +10,8 @@ import { TextFieldElement } from './text-field-element';
template: ` template: `
<mat-form-field <mat-form-field
*ngIf="elementModel.label !== ''" *ngIf="elementModel.label !== ''"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[style.color]="elementModel.fontProps.fontColor" [style.color]="elementModel.fontProps.fontColor"
[style.font-family]="elementModel.fontProps.font" [style.font-family]="elementModel.fontProps.font"
[style.font-size.px]="elementModel.fontProps.fontSize" [style.font-size.px]="elementModel.fontProps.fontSize"
...@@ -44,12 +40,8 @@ import { TextFieldElement } from './text-field-element'; ...@@ -44,12 +40,8 @@ import { TextFieldElement } from './text-field-element';
</mat-form-field> </mat-form-field>
<mat-form-field <mat-form-field
*ngIf="elementModel.label === ''" class="small-input" *ngIf="elementModel.label === ''" class="small-input"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'"
[style.color]="elementModel.fontProps.fontColor" [style.color]="elementModel.fontProps.fontColor"
[style.font-family]="elementModel.fontProps.font" [style.font-family]="elementModel.fontProps.font"
[style.font-size.px]="elementModel.fontProps.fontSize" [style.font-size.px]="elementModel.fontProps.fontSize"
...@@ -90,13 +82,13 @@ export class TextFieldComponent extends FormElementComponent { ...@@ -90,13 +82,13 @@ export class TextFieldComponent extends FormElementComponent {
validators.push(Validators.required); validators.push(Validators.required);
} }
if (this.elementModel.minLength) { if (this.elementModel.minLength) {
validators.push(Validators.minLength(<number>this.elementModel.minLength)); validators.push(Validators.minLength(<number> this.elementModel.minLength));
} }
if (this.elementModel.maxLength) { if (this.elementModel.maxLength) {
validators.push(Validators.maxLength(<number>this.elementModel.maxLength)); validators.push(Validators.maxLength(<number> this.elementModel.maxLength));
} }
if (this.elementModel.pattern) { if (this.elementModel.pattern) {
validators.push(Validators.pattern(<string>this.elementModel.pattern)); validators.push(Validators.pattern(<string> this.elementModel.pattern));
} }
return validators; return validators;
} }
......
...@@ -8,12 +8,8 @@ import { ValueChangeElement } from '../../models/uI-element'; ...@@ -8,12 +8,8 @@ import { ValueChangeElement } from '../../models/uI-element';
@Component({ @Component({
selector: 'aspect-text', selector: 'aspect-text',
template: ` template: `
<div [class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && <div [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="100">
[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 <aspect-marking-bar
*ngIf="elementModel.highlightableYellow || *ngIf="elementModel.highlightableYellow ||
elementModel.highlightableTurquoise || elementModel.highlightableTurquoise ||
......
...@@ -6,12 +6,8 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme ...@@ -6,12 +6,8 @@ import { MediaPlayerElementComponent } from '../../directives/media-player-eleme
selector: 'aspect-video', selector: 'aspect-video',
template: ` template: `
<div [class]="elementModel.scale ? 'fit-video' : 'max-size-video'" <div [class]="elementModel.scale ? 'fit-video' : 'max-size-video'"
[class.fixed-size-element]="elementModel.positionProps.dynamicPositioning && [style.width.%]="100"
elementModel.positionProps.fixedSize" [style.height.%]="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%'">
<video #player <video #player
(playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)" (playing)="onMediaPlayStatusChanged.emit(this.elementModel.id)"
(pause)="onMediaPlayStatusChanged.emit(null)" (pause)="onMediaPlayStatusChanged.emit(null)"
......
...@@ -34,7 +34,14 @@ import { UIElement } from '../../../../../../../../common/models/uI-element'; ...@@ -34,7 +34,14 @@ import { UIElement } from '../../../../../../../../common/models/uI-element';
<div *cdkDragPlaceholder></div> <div *cdkDragPlaceholder></div>
</div> </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>
<div class="resize-preview" <div class="resize-preview"
[style.position]="'relative'" [style.position]="'relative'"
......
<div [class]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ? <div [class]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ?
'fixed-size-content-wrapper' : 'element-container'" 'fixed-size-content-wrapper' : 'element-container'">
cdkOverlayOrigin #overlayOrigin="cdkOverlayOrigin"> <div [class]="elementModel.positionProps?.dynamicPositioning && elementModel.positionProps?.fixedSize ?
<ng-template #elementComponentContainer></ng-template> '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> </div>
<aspect-floating-keyboard <aspect-floating-keyboard
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment