packages/ui/src/lib/form/default-output/default-output.component.ts
Holds the templates to output item field values.
selector | ec-default-output |
templateUrl | ./default-output.component.html |
Properties |
field |
Type : Field
|
The field that should be displayed |
item |
Type : Item<any>
|
The item that is targeted by the input |
import { Component } from '@angular/core';
import { Field, Item } from '@ec.components/core';
/** Holds the templates to output item field values. */
@Component({
selector: 'ec-default-output',
templateUrl: './default-output.component.html',
})
export class DefaultOutputComponent {
/** The field that should be displayed */
field: Field;
/** The item that is targeted by the input */
item: Item<any>;
}
<div [ngSwitch]="field.getView('output')" *ngIf="item">
<ul class="ec-output-tags" *ngSwitchCase="'tags'">
<li *ngFor="let label of item?.display(field.property) | maxItems: field.maxItems || 10">
<span class="ec-output-tag tag">{{ label }}</span>
</li>
<li *ngIf="item?.display(field.property)?.length > (field.maxItems || 10)">
<span class="ec-output-tag tag">…</span>
</li>
</ul>
<div class="ec-output-strings" *ngSwitchCase="'strings'">
<span *ngFor="let label of item?.display(field.property) | maxItems: field.maxItems || 10">
{{ label }}
</span>
<span *ngIf="item?.display(field.property)?.length > (field.maxItems || 10)">
…
</span>
</div>
<div class="ec-output-tag" *ngSwitchCase="'tag'">
<div class="span" class="tag" *ngIf="item?.display(field.property)">{{ item?.display(field.property) }}</div>
</div>
<div *ngSwitchCase="'boolean'" class="ec-output-boolean" [class.is-true]="item?.resolve(field.property)">
<span>✔</span>
</div>
<div class="ec-output-mail" *ngSwitchCase="'email'">
<a [href]="'mailto:' + item?.display(field.property)">{{ item?.display(field.property) }}</a>
</div>
<div class="ec-output-url" *ngSwitchCase="'url'">
<a [href]="item?.display(field.property)">{{ item?.display(field.property) }}</a>
</div>
<div class="ec-output-color" *ngSwitchCase="'color'">
<span class="ec-output-color__sample" [style.backgroundColor]="item?.display(field.property)"></span>
<span class="ec-output-color__property">{{ item?.display(field.property) }}</span>
</div>
<div class="ec-output-asset" *ngSwitchCase="'image'" [class.is-true]="item?.resolve(field.property)">
<ec-icon name="image"></ec-icon>
</div>
<div class="ec-output-assets" *ngSwitchCase="'images'" [class.is-true]="item?.resolve(field.property)">
<ec-icon name="images"></ec-icon>
<strong>{{ item?.resolve(field.property)?.length }}</strong>
</div>
<div class="ec-output-avatar avatar" *ngSwitchCase="'avatar'">
<img *ngIf="item?.display(field.property)" [src]="item?.display(field.property)" />
</div>
<div class="ec-output-avatars" *ngSwitchCase="'avatars'">
<div class="ec-output-avatar avatar" *ngFor="let url of item?.display(field.property)">
<img [src]="url" />
</div>
</div>
<div class="ec-output-preview" *ngSwitchCase="'preview'">
<img [src]="item?.display(field.property)" *ngIf="item?.display(field.property)" />
</div>
<a *ngSwitchCase="'link'" (click)="item?.action(field.property, $event)" [ngClass]="field.class">
<span>{{ item?.display(field.property) }}</span>
<ec-icon *ngIf="field.icon" [name]="field.icon"></ec-icon>
</a>
<div *ngSwitchCase="'textarea'" class="ec-output-textarea">
<span class="tag tag_small">text</span>
</div>
<code *ngSwitchCase="'json'" class="ec-output-json">
<span class="tag">JSON</span>
</code>
<span *ngSwitchDefault [class]="'ec-output-' + field.getView('output')" [title]="item?.display(field.property)">
{{ item?.display(field.property) }}
</span>
</div>