Code owners
Assign users and groups as approvers for specific file changes. Learn more.
cloze.component.ts 10.89 KiB
import {
Component, EventEmitter, Input, Output, QueryList, ViewChildren
} from '@angular/core';
import { ClozeElement } from './cloze-element';
import { CompoundElementComponent } from '../../directives/compound-element.directive';
import { ClozeDocumentParagraph, ClozeDocumentPart, InputElement } from '../../models/uI-element';
import { FormElementComponent } from '../../directives/form-element-component.directive';
import { CompoundChildOverlayComponent } from '../../directives/cloze-child-overlay/compound-child-overlay.component';
import { ElementComponent } from '../../directives/element-component.directive';
import { LikertRadioButtonGroupComponent } from '../likert/likert-radio-button-group.component';
@Component({
selector: 'app-cloze',
template: `
<ng-container *ngIf="elementModel.document.content.length == 0">
Kein Dokument vorhanden
</ng-container>
<div [class.center-content]="elementModel.positionProps.dynamicPositioning &&
elementModel.positionProps.fixedSize"
[style.width]="elementModel.positionProps.fixedSize ? elementModel.width + 'px' : '100%'"
[style.height]="elementModel.positionProps.fixedSize ? elementModel.height + 'px' : 'auto'">
<ng-container *ngFor="let part of elementModel.document.content">
<ul *ngIf="part.type === 'bulletList'">
<li *ngFor="let listItem of part.content">
<ng-container *ngFor="let listItemPart of $any(listItem).content"
[ngTemplateOutlet]="paragraphs"
[ngTemplateOutletContext]="{ $implicit: listItemPart }"></ng-container>
</li>
</ul>
<ol *ngIf="part.type === 'orderedList'">
<li *ngFor="let listItem of part.content">
<ng-container *ngFor="let listItemPart of $any(listItem).content"
[ngTemplateOutlet]="paragraphs"
[ngTemplateOutletContext]="{ $implicit: listItemPart }"></ng-container>
</li>
</ol>
<blockquote *ngIf="part.type === 'blockquote'">
<ng-container *ngFor="let blockquotePart of $any(part).content"
[ngTemplateOutlet]="paragraphs"
[ngTemplateOutletContext]="{ $implicit: blockquotePart }"></ng-container>
</blockquote>
<ng-container *ngIf="part.type !== 'bulletList'"
[ngTemplateOutlet]="paragraphs"
[ngTemplateOutletContext]="{ $implicit: part }"></ng-container>
</ng-container>
</div>
<ng-template #paragraphs let-part>
<p *ngIf="part.type === 'paragraph'"
[style.line-height.%]="elementModel.fontProps.lineHeight"
[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.margin-bottom]="part.attrs.margin + 'px'"
[style.margin-left]="part.attrs.hangingIndent ? '' :
($any(part.attrs.indentSize) * $any(part.attrs.indent)) + 'px'"
[style.text-align]="part.attrs.textAlign"
[style.text-indent]="part.attrs.hangingIndent ?
($any(part.attrs.indentSize) * $any(part.attrs.indent)) + 'px' :
''">
<ng-container [ngTemplateOutlet]="paragraphChildren"
[ngTemplateOutletContext]="{ $implicit: part }"></ng-container>
</p>
<h1 *ngIf="part.type === 'heading' && part.attrs.level === 1"
[style.display]="'inline'"
[style.line-height.%]="elementModel.fontProps.lineHeight"
[style.color]="elementModel.fontProps.fontColor"