@xiriframework/xiri-ng 0.2.24 → 0.2.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -38,7 +38,7 @@ import { MatSort, MatSortHeader } from '@angular/material/sort';
|
|
|
38
38
|
import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';
|
|
39
39
|
import { MatDivider } from '@angular/material/divider';
|
|
40
40
|
import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
|
|
41
|
-
import { MatCard, MatCardHeader, MatCardAvatar,
|
|
41
|
+
import { MatCard, MatCardContent, MatCardHeader, MatCardAvatar, MatCardSubtitle, MatCardTitle, MatCardActions } from '@angular/material/card';
|
|
42
42
|
import { MatExpansionPanel, MatExpansionPanelHeader, MatExpansionPanelTitle, MatAccordion, MatExpansionPanelDescription } from '@angular/material/expansion';
|
|
43
43
|
import { MatListSubheaderCssMatStyler, MatNavList, MatListItem, MatListItemIcon, MatListItemTitle, MatListItemLine, MatListItemMeta } from '@angular/material/list';
|
|
44
44
|
import { MatStepper, MatStep } from '@angular/material/stepper';
|
|
@@ -4471,140 +4471,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
4471
4471
|
args: [{ selector: 'xiri-skeleton', changeDetection: ChangeDetectionStrategy.OnPush, host: { 'role': 'status', 'aria-label': 'Laden...', '[class.fill]': 'fill()' }, template: "@switch (type()) {\n\t@case ('text') {\n\t\t<div class=\"skeleton-text\">\n\t\t\t@for (_ of linesArray(); track $index) {\n\t\t\t\t<div class=\"skeleton-line\" [class.animate]=\"animate()\"\n\t\t\t\t [style.width]=\"$last ? '60%' : width()\"\n\t\t\t\t [style.height]=\"height()\"></div>\n\t\t\t}\n\t\t</div>\n\t}\n\t@case ('circle') {\n\t\t<div class=\"skeleton-circle\" [class.animate]=\"animate()\"\n\t\t [style.width]=\"width()\"\n\t\t [style.height]=\"width()\"></div>\n\t}\n\t@case ('rect') {\n\t\t<div class=\"skeleton-rect\" [class.animate]=\"animate()\"\n\t\t [style.width]=\"width()\"\n\t\t [style.height]=\"height()\"></div>\n\t}\n\t@case ('table-row') {\n\t\t<div class=\"skeleton-table\" [class.fill-height]=\"fill()\">\n\t\t\t@for (_ of linesArray(); track $index) {\n\t\t\t\t<div class=\"skeleton-table-row\">\n\t\t\t\t\t@for (_ of columnsArray(); track $index) {\n\t\t\t\t\t\t<div class=\"skeleton-table-cell\">\n\t\t\t\t\t\t\t<div class=\"skeleton-line\" [class.animate]=\"animate()\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t}\n}\n", styles: [":host{display:block}:host.fill{height:100%}.skeleton-line,.skeleton-circle,.skeleton-rect{background-color:var(--color-gray-200, #E9ECEF);border-radius:var(--xiri-radius-xs)}.skeleton-line.animate,.skeleton-circle.animate,.skeleton-rect.animate{background-image:linear-gradient(90deg,var(--color-gray-200, #E9ECEF) 0px,var(--color-gray-100, #F8F9FA) 40px,var(--color-gray-200, #E9ECEF) 80px);background-size:200px 100%;animation:shimmer 1.5s var(--xiri-easing-standard) infinite}.skeleton-text{display:flex;flex-direction:column;gap:8px}.skeleton-text .skeleton-line{height:1em}.skeleton-circle{border-radius:50%}.skeleton-rect{border-radius:var(--xiri-radius-md)}.skeleton-table{display:flex;flex-direction:column;gap:12px}.skeleton-table.fill-height{height:100%;overflow:hidden}.skeleton-table.fill-height .skeleton-table-row{flex:1;min-height:0}.skeleton-table-row{display:flex;gap:16px}.skeleton-table-cell{flex:1}.skeleton-table-cell .skeleton-line{height:1em;width:100%}@media(prefers-reduced-motion:reduce){.skeleton-line.animate,.skeleton-circle.animate,.skeleton-rect.animate{animation:none}}\n"] }]
|
|
4472
4472
|
}], propDecorators: { type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], columns: [{ type: i0.Input, args: [{ isSignal: true, alias: "columns", required: false }] }], animate: [{ type: i0.Input, args: [{ isSignal: true, alias: "animate", required: false }] }], fill: [{ type: i0.Input, args: [{ isSignal: true, alias: "fill", required: false }] }] } });
|
|
4473
4473
|
|
|
4474
|
-
class XiriCardComponent {
|
|
4475
|
-
constructor() {
|
|
4476
|
-
this.dataService = inject(XiriDataService);
|
|
4477
|
-
this.destroyRef = inject(DestroyRef);
|
|
4478
|
-
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
4479
|
-
this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
4480
|
-
this.errorMsg = signal('', ...(ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []));
|
|
4481
|
-
this.isCollapsed = signal(false, ...(ngDevMode ? [{ debugName: "isCollapsed" }] : /* istanbul ignore next */ []));
|
|
4482
|
-
this._data = signal(null, ...(ngDevMode ? [{ debugName: "_data" }] : /* istanbul ignore next */ []));
|
|
4483
|
-
this.cardData = computed(() => this._data() ?? this.settings().data, ...(ngDevMode ? [{ debugName: "cardData" }] : /* istanbul ignore next */ []));
|
|
4484
|
-
this.rawTable = computed(() => {
|
|
4485
|
-
const data = this.cardData();
|
|
4486
|
-
if (data == null)
|
|
4487
|
-
return null;
|
|
4488
|
-
let rt = {
|
|
4489
|
-
data: data,
|
|
4490
|
-
fields: this.settings().fields,
|
|
4491
|
-
dense: this.settings().dense,
|
|
4492
|
-
forceMinWidth: this.settings().forceMinWidth,
|
|
4493
|
-
};
|
|
4494
|
-
if (!this.settings().fields && data.length !== 0) {
|
|
4495
|
-
let fields = [];
|
|
4496
|
-
if (Array.isArray(data)) {
|
|
4497
|
-
fields.push({
|
|
4498
|
-
id: '0',
|
|
4499
|
-
name: '0',
|
|
4500
|
-
format: 'text',
|
|
4501
|
-
display: 'info',
|
|
4502
|
-
minWidth: '30px',
|
|
4503
|
-
});
|
|
4504
|
-
fields.push({
|
|
4505
|
-
id: '1',
|
|
4506
|
-
name: '1',
|
|
4507
|
-
format: 'html',
|
|
4508
|
-
display: 'right',
|
|
4509
|
-
minWidth: '30px',
|
|
4510
|
-
});
|
|
4511
|
-
}
|
|
4512
|
-
else {
|
|
4513
|
-
fields.push({
|
|
4514
|
-
id: 'f0',
|
|
4515
|
-
name: 'f0',
|
|
4516
|
-
format: 'text',
|
|
4517
|
-
display: 'info',
|
|
4518
|
-
minWidth: '30px',
|
|
4519
|
-
});
|
|
4520
|
-
fields.push({
|
|
4521
|
-
id: 'f1',
|
|
4522
|
-
name: 'f1',
|
|
4523
|
-
format: 'html',
|
|
4524
|
-
display: 'right',
|
|
4525
|
-
minWidth: '30px',
|
|
4526
|
-
});
|
|
4527
|
-
let transformedData = [];
|
|
4528
|
-
for (let key in data) {
|
|
4529
|
-
if (data.hasOwnProperty(key)) {
|
|
4530
|
-
transformedData.push({
|
|
4531
|
-
'f0': key,
|
|
4532
|
-
'f1': data[key],
|
|
4533
|
-
});
|
|
4534
|
-
}
|
|
4535
|
-
}
|
|
4536
|
-
rt.data = transformedData;
|
|
4537
|
-
}
|
|
4538
|
-
rt.fields = fields;
|
|
4539
|
-
}
|
|
4540
|
-
return rt;
|
|
4541
|
-
}, ...(ngDevMode ? [{ debugName: "rawTable" }] : /* istanbul ignore next */ []));
|
|
4542
|
-
effect(() => {
|
|
4543
|
-
const s = this.settings();
|
|
4544
|
-
if (s.collapsed !== undefined) {
|
|
4545
|
-
this.isCollapsed.set(s.collapsed);
|
|
4546
|
-
}
|
|
4547
|
-
});
|
|
4548
|
-
effect(() => {
|
|
4549
|
-
const url = this.settings().url;
|
|
4550
|
-
if (url) {
|
|
4551
|
-
this.loadData();
|
|
4552
|
-
}
|
|
4553
|
-
});
|
|
4554
|
-
}
|
|
4555
|
-
toggleCollapse() {
|
|
4556
|
-
this.isCollapsed.update(v => !v);
|
|
4557
|
-
}
|
|
4558
|
-
loadData() {
|
|
4559
|
-
this.loading.set(true);
|
|
4560
|
-
this.errorMsg.set('');
|
|
4561
|
-
this.dataService.post(this.settings().url, null)
|
|
4562
|
-
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
4563
|
-
.subscribe({
|
|
4564
|
-
next: (res) => {
|
|
4565
|
-
this._data.set(res.data ?? res);
|
|
4566
|
-
this.loading.set(false);
|
|
4567
|
-
},
|
|
4568
|
-
error: (err) => {
|
|
4569
|
-
this.errorMsg.set(err.error?.error || 'Fehler beim Laden');
|
|
4570
|
-
this.loading.set(false);
|
|
4571
|
-
}
|
|
4572
|
-
});
|
|
4573
|
-
}
|
|
4574
|
-
reload() {
|
|
4575
|
-
if (this.loading())
|
|
4576
|
-
return;
|
|
4577
|
-
this.loadData();
|
|
4578
|
-
}
|
|
4579
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4580
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriCardComponent, isStandalone: true, selector: "xiri-card", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header>\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title [class]=\"{hasHeaderSub: settings().headerSub}\">{{ settings().header }}</mat-card-title>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t\t@if (settings().buttonsTop) {\n\t\t\t<xiri-buttonline [settings]=\"settings().buttonsTop\"></xiri-buttonline>\n\t\t}\n\t\t@if (settings().collapsible) {\n\t\t\t<button mat-icon-button (click)=\"toggleCollapse()\" class=\"collapse-btn\" aria-label=\"Auf-/Zuklappen\">\n\t\t\t\t<mat-icon>{{ isCollapsed() ? 'expand_more' : 'expand_less' }}</mat-icon>\n\t\t\t</button>\n\t\t}\n\t\t@if (settings().reload && settings().url) {\n\t\t\t<button mat-icon-button (click)=\"reload()\" [disabled]=\"loading()\" class=\"reload-btn\" aria-label=\"Neu laden\">\n\t\t\t\t<mat-icon [class.spinning]=\"loading()\">autorenew</mat-icon>\n\t\t\t</button>\n\t\t}\n\t</mat-card-header>\n\t<div class=\"collapse-wrapper\" [class.collapsed]=\"isCollapsed()\">\n\t\t<div class=\"collapse-inner\">\n\t\t\t@if (loading() && !cardData()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<xiri-skeleton type=\"table-row\" [columns]=\"2\" [lines]=\"3\"></xiri-skeleton>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else if (errorMsg()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<div class=\"load-error\">{{ errorMsg() }}</div>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else {\n\t\t\t\t<mat-card-content class=\"hasTable\" [style.max-height]=\"settings().maxHeight || '50vh'\">\n\t\t\t\t\t@if (rawTable()) {\n\t\t\t\t\t\t<xiri-raw-table [settings]=\"rawTable()!\"></xiri-raw-table>\n\t\t\t\t\t}\n\t\t\t\t</mat-card-content>\n\t\t\t}\n\t\t\t@if (settings().buttonsBottom) {\n\t\t\t\t<mat-card-actions align=\"end\">\n\t\t\t\t\t<xiri-buttonline [settings]=\"settings().buttonsBottom\"></xiri-buttonline>\n\t\t\t\t</mat-card-actions>\n\t\t\t}\n\t\t</div>\n\t</div>\n</mat-card>\n", styles: [":host{animation:fadeIn var(--xiri-duration-fast) var(--xiri-easing-standard)}.collapse-wrapper{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--xiri-duration-normal) var(--xiri-easing-standard)}.collapse-wrapper.collapsed{grid-template-rows:0fr}.collapse-inner{overflow:hidden;min-height:0}.spinning{animation:spin 1s linear infinite}.card{overflow:hidden}.card mat-card-header{margin:0 0 2px;box-shadow:var(--xiri-shadow-xs);padding:4px 8px 4px 16px;align-items:center;min-height:32px}.card mat-card-header .header-image{margin-bottom:0;width:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);align-items:center;display:flex}.card mat-card-header .header-image mat-icon{font-size:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);width:var(--xiri-icon-size-lg);color:var(--primary)}.card mat-card-header mat-card-title.hasHeaderSub{padding-top:2px}.card mat-card-header mat-card-subtitle{padding-bottom:2px}.card mat-card-header xiri-buttonline{display:flex;justify-content:flex-end;flex:1}.card mat-card-header xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-header xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .collapse-btn{margin-left:auto;width:32px;height:32px;padding:4px}.card .collapse-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .reload-btn{width:32px;height:32px;padding:4px}.card .reload-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card mat-card-content{padding:0}.card mat-card-content.hasTable{overflow-x:auto}.card mat-card-content xiri-skeleton{padding:16px}.card mat-card-content .load-error{padding:16px;color:var(--error, #B3261E)}.card mat-card-actions{padding:4px 8px;min-height:32px;border-top:1px solid var(--outline-variant, rgba(0, 0, 0, .12))}.card mat-card-actions xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-actions xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}\n"], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: XiriButtonlineComponent, selector: "xiri-buttonline", inputs: ["settings", "disabled", "filterData"], outputs: ["result"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: XiriRawTableComponent, selector: "xiri-raw-table", inputs: ["settings"] }, { kind: "component", type: XiriSkeletonComponent, selector: "xiri-skeleton", inputs: ["type", "width", "height", "lines", "columns", "animate", "fill"] }, { kind: "directive", type: MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4581
|
-
}
|
|
4582
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCardComponent, decorators: [{
|
|
4583
|
-
type: Component,
|
|
4584
|
-
args: [{ selector: 'xiri-card', imports: [MatCard,
|
|
4585
|
-
MatCardHeader,
|
|
4586
|
-
MatCardAvatar,
|
|
4587
|
-
MatIcon,
|
|
4588
|
-
MatIconButton,
|
|
4589
|
-
MatCardTitle,
|
|
4590
|
-
MatCardSubtitle,
|
|
4591
|
-
XiriButtonlineComponent,
|
|
4592
|
-
MatCardContent,
|
|
4593
|
-
XiriRawTableComponent,
|
|
4594
|
-
XiriSkeletonComponent,
|
|
4595
|
-
MatCardActions], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header>\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title [class]=\"{hasHeaderSub: settings().headerSub}\">{{ settings().header }}</mat-card-title>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t\t@if (settings().buttonsTop) {\n\t\t\t<xiri-buttonline [settings]=\"settings().buttonsTop\"></xiri-buttonline>\n\t\t}\n\t\t@if (settings().collapsible) {\n\t\t\t<button mat-icon-button (click)=\"toggleCollapse()\" class=\"collapse-btn\" aria-label=\"Auf-/Zuklappen\">\n\t\t\t\t<mat-icon>{{ isCollapsed() ? 'expand_more' : 'expand_less' }}</mat-icon>\n\t\t\t</button>\n\t\t}\n\t\t@if (settings().reload && settings().url) {\n\t\t\t<button mat-icon-button (click)=\"reload()\" [disabled]=\"loading()\" class=\"reload-btn\" aria-label=\"Neu laden\">\n\t\t\t\t<mat-icon [class.spinning]=\"loading()\">autorenew</mat-icon>\n\t\t\t</button>\n\t\t}\n\t</mat-card-header>\n\t<div class=\"collapse-wrapper\" [class.collapsed]=\"isCollapsed()\">\n\t\t<div class=\"collapse-inner\">\n\t\t\t@if (loading() && !cardData()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<xiri-skeleton type=\"table-row\" [columns]=\"2\" [lines]=\"3\"></xiri-skeleton>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else if (errorMsg()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<div class=\"load-error\">{{ errorMsg() }}</div>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else {\n\t\t\t\t<mat-card-content class=\"hasTable\" [style.max-height]=\"settings().maxHeight || '50vh'\">\n\t\t\t\t\t@if (rawTable()) {\n\t\t\t\t\t\t<xiri-raw-table [settings]=\"rawTable()!\"></xiri-raw-table>\n\t\t\t\t\t}\n\t\t\t\t</mat-card-content>\n\t\t\t}\n\t\t\t@if (settings().buttonsBottom) {\n\t\t\t\t<mat-card-actions align=\"end\">\n\t\t\t\t\t<xiri-buttonline [settings]=\"settings().buttonsBottom\"></xiri-buttonline>\n\t\t\t\t</mat-card-actions>\n\t\t\t}\n\t\t</div>\n\t</div>\n</mat-card>\n", styles: [":host{animation:fadeIn var(--xiri-duration-fast) var(--xiri-easing-standard)}.collapse-wrapper{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--xiri-duration-normal) var(--xiri-easing-standard)}.collapse-wrapper.collapsed{grid-template-rows:0fr}.collapse-inner{overflow:hidden;min-height:0}.spinning{animation:spin 1s linear infinite}.card{overflow:hidden}.card mat-card-header{margin:0 0 2px;box-shadow:var(--xiri-shadow-xs);padding:4px 8px 4px 16px;align-items:center;min-height:32px}.card mat-card-header .header-image{margin-bottom:0;width:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);align-items:center;display:flex}.card mat-card-header .header-image mat-icon{font-size:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);width:var(--xiri-icon-size-lg);color:var(--primary)}.card mat-card-header mat-card-title.hasHeaderSub{padding-top:2px}.card mat-card-header mat-card-subtitle{padding-bottom:2px}.card mat-card-header xiri-buttonline{display:flex;justify-content:flex-end;flex:1}.card mat-card-header xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-header xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .collapse-btn{margin-left:auto;width:32px;height:32px;padding:4px}.card .collapse-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .reload-btn{width:32px;height:32px;padding:4px}.card .reload-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card mat-card-content{padding:0}.card mat-card-content.hasTable{overflow-x:auto}.card mat-card-content xiri-skeleton{padding:16px}.card mat-card-content .load-error{padding:16px;color:var(--error, #B3261E)}.card mat-card-actions{padding:4px 8px;min-height:32px;border-top:1px solid var(--outline-variant, rgba(0, 0, 0, .12))}.card mat-card-actions xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-actions xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}\n"] }]
|
|
4596
|
-
}], ctorParameters: () => [], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
4597
|
-
|
|
4598
4474
|
class XiriInfopointComponent {
|
|
4599
4475
|
constructor() {
|
|
4600
4476
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
4477
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
4601
4478
|
}
|
|
4602
4479
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriInfopointComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4603
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriInfopointComponent, isStandalone: true, selector: "xiri-infopoint", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"point\" [class.isLink]=\"settings().url\" [routerLink]=\"settings().url\" [queryParams]=\"settings().urlParams\">\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-content [class.dense]=\"settings().dense\">\n\t\t\t<div class=\"icon\" [class]=\"settings().iconColor\">\n\t\t\t\t@if (settings().iconSet) {\n\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t} @else {\n\t\t\t\t\t<mat-icon>{{ settings().icon }}</mat-icon>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"right\">\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<div class=\"text\">{{ settings().text }}</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"info\">{{ settings().info }}</div>\n\t\t\t</div>\n\t\t</mat-card-content>\n\t</mat-card>\n</div
|
|
4480
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriInfopointComponent, isStandalone: true, selector: "xiri-infopoint", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, ngImport: i0, template: "<div class=\"point\" [class.isLink]=\"settings().url\" [routerLink]=\"settings().url\" [queryParams]=\"settings().urlParams\">\n\t@if (compact()) {\n\t\t<div class=\"card xiri-infopoint-flat\" [class.dense]=\"settings().dense\">\n\t\t\t<div class=\"icon\" [class]=\"settings().iconColor\">\n\t\t\t\t@if (settings().iconSet) {\n\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t} @else {\n\t\t\t\t\t<mat-icon>{{ settings().icon }}</mat-icon>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"right\">\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<div class=\"text\">{{ settings().text }}</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"info\">{{ settings().info }}</div>\n\t\t\t</div>\n\t\t</div>\n\t} @else {\n\t\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t\t<mat-card-content [class.dense]=\"settings().dense\">\n\t\t\t\t<div class=\"icon\" [class]=\"settings().iconColor\">\n\t\t\t\t\t@if (settings().iconSet) {\n\t\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<mat-icon>{{ settings().icon }}</mat-icon>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"right\">\n\t\t\t\t\t@if (settings().text) {\n\t\t\t\t\t\t<div class=\"text\">{{ settings().text }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t<div class=\"info\">{{ settings().info }}</div>\n\t\t\t\t</div>\n\t\t\t</mat-card-content>\n\t\t</mat-card>\n\t}\n</div>\n", styles: [".point mat-card{background-color:var(--surface, #FFFFFF)}.point mat-card-content{display:flex;flex-direction:row;align-items:center;overflow:hidden}.point mat-card-content.dense{padding:6px 16px}:host(.compact) .point .xiri-infopoint-flat{display:flex;flex-direction:row;align-items:center;overflow:hidden;background:transparent;box-shadow:none;padding:var(--xiri-spacing-sm, 8px)}:host(.compact) .point .xiri-infopoint-flat.dense{padding:4px 8px}.point.isLink{cursor:pointer}.point.isLink mat-card{transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}.point.isLink:hover mat-card{background-color:var(--surface-variant, #DEE3EB)}.right{text-align:right;flex-grow:1;display:flex;flex-direction:column;justify-content:center;padding-left:7px}.right .text{color:var(--on-surface-variant, rgba(0, 0, 0, .54));font-size:var(--xiri-font-size-label)}.right .info{font-size:var(--xiri-font-size-display);font-weight:500}.icon{width:64px;min-width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center}.icon mat-icon{transform:scale(1.5)}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4604
4481
|
}
|
|
4605
4482
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriInfopointComponent, decorators: [{
|
|
4606
4483
|
type: Component,
|
|
4607
|
-
args: [{ selector: 'xiri-infopoint', imports: [RouterLink, MatCard, MatCardContent, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"point\" [class.isLink]=\"settings().url\" [routerLink]=\"settings().url\" [queryParams]=\"settings().urlParams\">\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-content [class.dense]=\"settings().dense\">\n\t\t\t<div class=\"icon\" [class]=\"settings().iconColor\">\n\t\t\t\t@if (settings().iconSet) {\n\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t} @else {\n\t\t\t\t\t<mat-icon>{{ settings().icon }}</mat-icon>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"right\">\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<div class=\"text\">{{ settings().text }}</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"info\">{{ settings().info }}</div>\n\t\t\t</div>\n\t\t</mat-card-content>\n\t</mat-card>\n</div
|
|
4484
|
+
args: [{ selector: 'xiri-infopoint', imports: [RouterLink, MatCard, MatCardContent, MatIcon], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.compact]': 'compact()' }, template: "<div class=\"point\" [class.isLink]=\"settings().url\" [routerLink]=\"settings().url\" [queryParams]=\"settings().urlParams\">\n\t@if (compact()) {\n\t\t<div class=\"card xiri-infopoint-flat\" [class.dense]=\"settings().dense\">\n\t\t\t<div class=\"icon\" [class]=\"settings().iconColor\">\n\t\t\t\t@if (settings().iconSet) {\n\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t} @else {\n\t\t\t\t\t<mat-icon>{{ settings().icon }}</mat-icon>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"right\">\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<div class=\"text\">{{ settings().text }}</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"info\">{{ settings().info }}</div>\n\t\t\t</div>\n\t\t</div>\n\t} @else {\n\t\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t\t<mat-card-content [class.dense]=\"settings().dense\">\n\t\t\t\t<div class=\"icon\" [class]=\"settings().iconColor\">\n\t\t\t\t\t@if (settings().iconSet) {\n\t\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t\t} @else {\n\t\t\t\t\t\t<mat-icon>{{ settings().icon }}</mat-icon>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t\t<div class=\"right\">\n\t\t\t\t\t@if (settings().text) {\n\t\t\t\t\t\t<div class=\"text\">{{ settings().text }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t<div class=\"info\">{{ settings().info }}</div>\n\t\t\t\t</div>\n\t\t\t</mat-card-content>\n\t\t</mat-card>\n\t}\n</div>\n", styles: [".point mat-card{background-color:var(--surface, #FFFFFF)}.point mat-card-content{display:flex;flex-direction:row;align-items:center;overflow:hidden}.point mat-card-content.dense{padding:6px 16px}:host(.compact) .point .xiri-infopoint-flat{display:flex;flex-direction:row;align-items:center;overflow:hidden;background:transparent;box-shadow:none;padding:var(--xiri-spacing-sm, 8px)}:host(.compact) .point .xiri-infopoint-flat.dense{padding:4px 8px}.point.isLink{cursor:pointer}.point.isLink mat-card{transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}.point.isLink:hover mat-card{background-color:var(--surface-variant, #DEE3EB)}.right{text-align:right;flex-grow:1;display:flex;flex-direction:column;justify-content:center;padding-left:7px}.right .text{color:var(--on-surface-variant, rgba(0, 0, 0, .54));font-size:var(--xiri-font-size-label)}.right .info{font-size:var(--xiri-font-size-display);font-weight:500}.icon{width:64px;min-width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center}.icon mat-icon{transform:scale(1.5)}\n"] }]
|
|
4608
4485
|
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
4609
4486
|
|
|
4610
4487
|
class XiriListComponent {
|
|
@@ -4841,6 +4718,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
4841
4718
|
class XiriLinksComponent {
|
|
4842
4719
|
constructor() {
|
|
4843
4720
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
4721
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
4844
4722
|
this.dialog = inject(MatDialog);
|
|
4845
4723
|
this.router = inject(Router);
|
|
4846
4724
|
}
|
|
@@ -4865,7 +4743,7 @@ class XiriLinksComponent {
|
|
|
4865
4743
|
return true;
|
|
4866
4744
|
}
|
|
4867
4745
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriLinksComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4868
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriLinksComponent, isStandalone: true, selector: "xiri-links", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header>\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t}\n\t</mat-card-header>\n\t<mat-card-content>\n\t\t<mat-nav-list>\n\t\t
|
|
4746
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriLinksComponent, isStandalone: true, selector: "xiri-links", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, ngImport: i0, template: "@if (compact()) {\n\t<div class=\"card xiri-links-flat\">\n\t\t@if (settings().header || settings().headerIcon) {\n\t\t\t<div class=\"xiri-links-header\">\n\t\t\t\t@if (settings().headerIcon) {\n\t\t\t\t\t<div class=\"header-image\">\n\t\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"header-text\">\n\t\t\t\t\t@if (settings().header) {\n\t\t\t\t\t\t<div class=\"header-title\">{{ settings().header }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t@if (settings().headerSub) {\n\t\t\t\t\t\t<div class=\"header-sub\">{{ settings().headerSub }}</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t\t<ng-container *ngTemplateOutlet=\"linkList\"></ng-container>\n\t</div>\n} @else {\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-header>\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (settings().headerSub) {\n\t\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t\t}\n\t\t\t@if (settings().header) {\n\t\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t\t}\n\t\t</mat-card-header>\n\t\t<mat-card-content>\n\t\t\t<ng-container *ngTemplateOutlet=\"linkList\"></ng-container>\n\t\t</mat-card-content>\n\t</mat-card>\n}\n\n<ng-template #linkList>\n\t<mat-nav-list>\n\t\t@for (item of settings().data; track item) {\n\t\t\t@if (!item.action || item.action == 'link') {\n\t\t\t\t<a mat-list-item [routerLink]=\"item.url\">\n\t\t\t\t\t<div matLine>{{ item.text }}</div>\n\t\t\t\t\t@if (item.icon) {\n\t\t\t\t\t\t<button mat-icon-button [attr.aria-label]=\"item.text\">\n\t\t\t\t\t\t\t<mat-icon>{{ item.icon }}</mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t}\n\t\t\t\t</a>\n\t\t\t} @else if (item.action == 'dialog') {\n\t\t\t\t<mat-list-item (click)=\"openDialog( item ) && $event.stopPropagation()\" (keydown.enter)=\"openDialog( item )\" (keydown.space)=\"openDialog( item ); $event.preventDefault()\">\n\t\t\t\t\t<div matLine>{{ item.text }}</div>\n\t\t\t\t\t@if (item.icon) {\n\t\t\t\t\t\t<button mat-icon-button [attr.aria-label]=\"item.text\">\n\t\t\t\t\t\t\t<mat-icon [class]=\"item.color || 'primary'\">{{ item.icon }}</mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t}\n\t\t\t\t</mat-list-item>\n\t\t\t}\n\t\t}\n\t</mat-nav-list>\n</ng-template>\n", styles: ["mat-card{margin-bottom:2rem}mat-card mat-card-content{margin:0 -1rem}mat-card mat-nav-list .mat-mdc-list-item{border-bottom:1px solid var(--outline-variant, #E7EBEE);text-decoration:underline}:host(.compact) .xiri-links-flat{background:transparent;box-shadow:none;padding:0;margin-bottom:0}:host(.compact) .xiri-links-header{display:flex;gap:var(--xiri-spacing-sm, 8px);align-items:center;margin-bottom:var(--xiri-spacing-sm, 8px)}:host(.compact) .xiri-links-header .header-title{font-size:var(--xiri-font-size-body);font-weight:500}:host(.compact) .xiri-links-header .header-sub{font-size:var(--xiri-font-size-label);color:var(--mat-sys-on-surface-variant, #555)}:host(.compact) mat-nav-list .mat-mdc-list-item{border-bottom:1px solid var(--outline-variant, #E7EBEE);text-decoration:underline}\n"], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: MatListItem, selector: "mat-list-item, a[mat-list-item], button[mat-list-item]", inputs: ["activated"], exportAs: ["matListItem"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: MatLine, selector: "[mat-line], [matLine]" }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4869
4747
|
}
|
|
4870
4748
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriLinksComponent, decorators: [{
|
|
4871
4749
|
type: Component,
|
|
@@ -4880,15 +4758,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
4880
4758
|
MatListItem,
|
|
4881
4759
|
RouterLink,
|
|
4882
4760
|
MatLine,
|
|
4883
|
-
MatIconButton
|
|
4761
|
+
MatIconButton,
|
|
4762
|
+
NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.compact]': 'compact()' }, template: "@if (compact()) {\n\t<div class=\"card xiri-links-flat\">\n\t\t@if (settings().header || settings().headerIcon) {\n\t\t\t<div class=\"xiri-links-header\">\n\t\t\t\t@if (settings().headerIcon) {\n\t\t\t\t\t<div class=\"header-image\">\n\t\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"header-text\">\n\t\t\t\t\t@if (settings().header) {\n\t\t\t\t\t\t<div class=\"header-title\">{{ settings().header }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t@if (settings().headerSub) {\n\t\t\t\t\t\t<div class=\"header-sub\">{{ settings().headerSub }}</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t\t<ng-container *ngTemplateOutlet=\"linkList\"></ng-container>\n\t</div>\n} @else {\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-header>\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (settings().headerSub) {\n\t\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t\t}\n\t\t\t@if (settings().header) {\n\t\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t\t}\n\t\t</mat-card-header>\n\t\t<mat-card-content>\n\t\t\t<ng-container *ngTemplateOutlet=\"linkList\"></ng-container>\n\t\t</mat-card-content>\n\t</mat-card>\n}\n\n<ng-template #linkList>\n\t<mat-nav-list>\n\t\t@for (item of settings().data; track item) {\n\t\t\t@if (!item.action || item.action == 'link') {\n\t\t\t\t<a mat-list-item [routerLink]=\"item.url\">\n\t\t\t\t\t<div matLine>{{ item.text }}</div>\n\t\t\t\t\t@if (item.icon) {\n\t\t\t\t\t\t<button mat-icon-button [attr.aria-label]=\"item.text\">\n\t\t\t\t\t\t\t<mat-icon>{{ item.icon }}</mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t}\n\t\t\t\t</a>\n\t\t\t} @else if (item.action == 'dialog') {\n\t\t\t\t<mat-list-item (click)=\"openDialog( item ) && $event.stopPropagation()\" (keydown.enter)=\"openDialog( item )\" (keydown.space)=\"openDialog( item ); $event.preventDefault()\">\n\t\t\t\t\t<div matLine>{{ item.text }}</div>\n\t\t\t\t\t@if (item.icon) {\n\t\t\t\t\t\t<button mat-icon-button [attr.aria-label]=\"item.text\">\n\t\t\t\t\t\t\t<mat-icon [class]=\"item.color || 'primary'\">{{ item.icon }}</mat-icon>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t}\n\t\t\t\t</mat-list-item>\n\t\t\t}\n\t\t}\n\t</mat-nav-list>\n</ng-template>\n", styles: ["mat-card{margin-bottom:2rem}mat-card mat-card-content{margin:0 -1rem}mat-card mat-nav-list .mat-mdc-list-item{border-bottom:1px solid var(--outline-variant, #E7EBEE);text-decoration:underline}:host(.compact) .xiri-links-flat{background:transparent;box-shadow:none;padding:0;margin-bottom:0}:host(.compact) .xiri-links-header{display:flex;gap:var(--xiri-spacing-sm, 8px);align-items:center;margin-bottom:var(--xiri-spacing-sm, 8px)}:host(.compact) .xiri-links-header .header-title{font-size:var(--xiri-font-size-body);font-weight:500}:host(.compact) .xiri-links-header .header-sub{font-size:var(--xiri-font-size-label);color:var(--mat-sys-on-surface-variant, #555)}:host(.compact) mat-nav-list .mat-mdc-list-item{border-bottom:1px solid var(--outline-variant, #E7EBEE);text-decoration:underline}\n"] }]
|
|
4884
4763
|
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
4885
4764
|
|
|
4886
4765
|
class XiriCardlinkComponent {
|
|
4887
4766
|
constructor() {
|
|
4888
4767
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
4768
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
4889
4769
|
}
|
|
4890
4770
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCardlinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4891
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriCardlinkComponent, isStandalone: true, selector: "xiri-cardlink", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<a [routerLink]=\"settings().link\">\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\" matRipple>\n\t\t<mat-card-header>\n\t\t\t@if (settings().icon) {\n\t\t\t\t<div mat-card-avatar>\n\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (settings().text) {\n\t\t\t\t<mat-card-title>{{ settings().text }}</mat-card-title>\n\t\t\t}\n\t\t\t@if (settings().sub) {\n\t\t\t\t<mat-card-subtitle>{{ settings().sub }}</mat-card-subtitle>\n\t\t\t}\n\t\t</mat-card-header>\n\t</mat-card>\n</a>\n", styles: [":host{margin-bottom:2rem}mat-card{transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}mat-card:hover{background-color:var(--surface-variant, #DEE3EB)}.mat-mdc-card-avatar{background-color:var(--primary, #2892D9);border-radius:50%;color:var(--on-primary, white);text-align:center;width:4rem;height:4rem}.mat-mdc-card-avatar mat-icon{font-size:2rem;line-height:4rem;width:2rem;height:4rem}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4771
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriCardlinkComponent, isStandalone: true, selector: "xiri-cardlink", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, ngImport: i0, template: "<a [routerLink]=\"settings().link\">\n\t@if (compact()) {\n\t\t<div class=\"card xiri-cardlink-flat\" matRipple>\n\t\t\t<mat-card-header>\n\t\t\t\t@if (settings().icon) {\n\t\t\t\t\t<div mat-card-avatar>\n\t\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<mat-card-title>{{ settings().text }}</mat-card-title>\n\t\t\t\t}\n\t\t\t\t@if (settings().sub) {\n\t\t\t\t\t<mat-card-subtitle>{{ settings().sub }}</mat-card-subtitle>\n\t\t\t\t}\n\t\t\t</mat-card-header>\n\t\t</div>\n\t} @else {\n\t\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\" matRipple>\n\t\t\t<mat-card-header>\n\t\t\t\t@if (settings().icon) {\n\t\t\t\t\t<div mat-card-avatar>\n\t\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<mat-card-title>{{ settings().text }}</mat-card-title>\n\t\t\t\t}\n\t\t\t\t@if (settings().sub) {\n\t\t\t\t\t<mat-card-subtitle>{{ settings().sub }}</mat-card-subtitle>\n\t\t\t\t}\n\t\t\t</mat-card-header>\n\t\t</mat-card>\n\t}\n</a>\n", styles: [":host{margin-bottom:2rem}mat-card{transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}mat-card:hover{background-color:var(--surface-variant, #DEE3EB)}:host(.compact){margin-bottom:0}:host(.compact) .xiri-cardlink-flat{background:transparent;box-shadow:none;padding:0;display:block;transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}:host(.compact) .xiri-cardlink-flat:hover{background-color:var(--surface-variant, #DEE3EB)}.mat-mdc-card-avatar{background-color:var(--primary, #2892D9);border-radius:50%;color:var(--on-primary, white);text-align:center;width:4rem;height:4rem}.mat-mdc-card-avatar mat-icon{font-size:2rem;line-height:4rem;width:2rem;height:4rem}\n"], dependencies: [{ kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4892
4772
|
}
|
|
4893
4773
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCardlinkComponent, decorators: [{
|
|
4894
4774
|
type: Component,
|
|
@@ -4899,7 +4779,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
4899
4779
|
MatCardAvatar,
|
|
4900
4780
|
MatIcon,
|
|
4901
4781
|
MatCardTitle,
|
|
4902
|
-
MatCardSubtitle], changeDetection: ChangeDetectionStrategy.OnPush, template: "<a [routerLink]=\"settings().link\">\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\" matRipple>\n\t\t<mat-card-header>\n\t\t\t@if (settings().icon) {\n\t\t\t\t<div mat-card-avatar>\n\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (settings().text) {\n\t\t\t\t<mat-card-title>{{ settings().text }}</mat-card-title>\n\t\t\t}\n\t\t\t@if (settings().sub) {\n\t\t\t\t<mat-card-subtitle>{{ settings().sub }}</mat-card-subtitle>\n\t\t\t}\n\t\t</mat-card-header>\n\t</mat-card>\n</a>\n", styles: [":host{margin-bottom:2rem}mat-card{transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}mat-card:hover{background-color:var(--surface-variant, #DEE3EB)}.mat-mdc-card-avatar{background-color:var(--primary, #2892D9);border-radius:50%;color:var(--on-primary, white);text-align:center;width:4rem;height:4rem}.mat-mdc-card-avatar mat-icon{font-size:2rem;line-height:4rem;width:2rem;height:4rem}\n"] }]
|
|
4782
|
+
MatCardSubtitle], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.compact]': 'compact()' }, template: "<a [routerLink]=\"settings().link\">\n\t@if (compact()) {\n\t\t<div class=\"card xiri-cardlink-flat\" matRipple>\n\t\t\t<mat-card-header>\n\t\t\t\t@if (settings().icon) {\n\t\t\t\t\t<div mat-card-avatar>\n\t\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<mat-card-title>{{ settings().text }}</mat-card-title>\n\t\t\t\t}\n\t\t\t\t@if (settings().sub) {\n\t\t\t\t\t<mat-card-subtitle>{{ settings().sub }}</mat-card-subtitle>\n\t\t\t\t}\n\t\t\t</mat-card-header>\n\t\t</div>\n\t} @else {\n\t\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\" matRipple>\n\t\t\t<mat-card-header>\n\t\t\t\t@if (settings().icon) {\n\t\t\t\t\t<div mat-card-avatar>\n\t\t\t\t\t\t<mat-icon [fontSet]=\"settings().iconSet\">{{ settings().icon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t@if (settings().text) {\n\t\t\t\t\t<mat-card-title>{{ settings().text }}</mat-card-title>\n\t\t\t\t}\n\t\t\t\t@if (settings().sub) {\n\t\t\t\t\t<mat-card-subtitle>{{ settings().sub }}</mat-card-subtitle>\n\t\t\t\t}\n\t\t\t</mat-card-header>\n\t\t</mat-card>\n\t}\n</a>\n", styles: [":host{margin-bottom:2rem}mat-card{transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}mat-card:hover{background-color:var(--surface-variant, #DEE3EB)}:host(.compact){margin-bottom:0}:host(.compact) .xiri-cardlink-flat{background:transparent;box-shadow:none;padding:0;display:block;transition:background-color var(--xiri-duration-fast, .15s) var(--xiri-easing-standard, cubic-bezier(.4, 0, .2, 1))}:host(.compact) .xiri-cardlink-flat:hover{background-color:var(--surface-variant, #DEE3EB)}.mat-mdc-card-avatar{background-color:var(--primary, #2892D9);border-radius:50%;color:var(--on-primary, white);text-align:center;width:4rem;height:4rem}.mat-mdc-card-avatar mat-icon{font-size:2rem;line-height:4rem;width:2rem;height:4rem}\n"] }]
|
|
4903
4783
|
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
4904
4784
|
|
|
4905
4785
|
class XiriTabsComponent {
|
|
@@ -5009,13 +4889,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
5009
4889
|
class XiriStatComponent {
|
|
5010
4890
|
constructor() {
|
|
5011
4891
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
4892
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5012
4893
|
}
|
|
5013
4894
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriStatComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5014
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriStatComponent, isStandalone: true, selector: "xiri-stat", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-card class=\"stat-card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-content>\n\t\t<div class=\"stat-content\">\n\t\t
|
|
4895
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriStatComponent, isStandalone: true, selector: "xiri-stat", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, ngImport: i0, template: "@if (compact()) {\n\t<div class=\"stat-flat\">\n\t\t<ng-container *ngTemplateOutlet=\"statBody\"></ng-container>\n\t</div>\n} @else {\n\t<mat-card class=\"stat-card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-content>\n\t\t\t<ng-container *ngTemplateOutlet=\"statBody\"></ng-container>\n\t\t</mat-card-content>\n\t</mat-card>\n}\n\n<ng-template #statBody>\n\t<div class=\"stat-content\">\n\t\t@if (settings().icon) {\n\t\t\t<div class=\"stat-icon\">\n\t\t\t\t<mat-icon [class]=\"settings().iconColor || 'primary'\">{{ settings().icon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"stat-data\">\n\t\t\t<div class=\"stat-value\" [class]=\"settings().color || ''\">\n\t\t\t\t@if (settings().prefix) {\n\t\t\t\t\t<span class=\"prefix\">{{ settings().prefix }}</span>\n\t\t\t\t}\n\t\t\t\t{{ settings().value }}\n\t\t\t\t@if (settings().suffix) {\n\t\t\t\t\t<span class=\"suffix\">{{ settings().suffix }}</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"stat-label\">{{ settings().label }}</div>\n\t\t</div>\n\t\t@if (settings().trend) {\n\t\t\t<div class=\"stat-trend\" [class]=\"settings().trend.direction\">\n\t\t\t\t<mat-icon>\n\t\t\t\t\t@switch (settings().trend.direction) {\n\t\t\t\t\t\t@case ('up') { trending_up }\n\t\t\t\t\t\t@case ('down') { trending_down }\n\t\t\t\t\t\t@default { trending_flat }\n\t\t\t\t\t}\n\t\t\t\t</mat-icon>\n\t\t\t\t<span>{{ settings().trend.value > 0 ? '+' : '' }}{{ settings().trend.value }}%</span>\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-template>\n", styles: [":host{display:block;animation:scaleIn var(--xiri-duration-normal) var(--xiri-easing-decelerate) both}:host-context(.xiri-stat-grid):nth-child(1){animation-delay:0ms}:host-context(.xiri-stat-grid):nth-child(2){animation-delay:50ms}:host-context(.xiri-stat-grid):nth-child(3){animation-delay:.1s}:host-context(.xiri-stat-grid):nth-child(4){animation-delay:.15s}:host-context(.xiri-stat-grid):nth-child(5){animation-delay:.2s}:host-context(.xiri-stat-grid):nth-child(6){animation-delay:.25s}:host-context(.xiri-stat-grid):nth-child(7){animation-delay:.3s}:host-context(.xiri-stat-grid):nth-child(8){animation-delay:.35s}:host-context(.xiri-stat-grid):nth-child(9){animation-delay:.4s}:host-context(.xiri-stat-grid):nth-child(10){animation-delay:.45s}:host-context(.xiri-stat-grid):nth-child(11){animation-delay:.5s}:host-context(.xiri-stat-grid):nth-child(12){animation-delay:.55s}.stat-card{padding:0}.stat-card mat-card-content{padding:var(--xiri-spacing-md) var(--xiri-spacing-md)}:host(.compact){animation:none}:host(.compact) .stat-flat{padding:var(--xiri-spacing-sm) var(--xiri-spacing-sm);background:transparent;box-shadow:none}:host(.compact) .stat-icon mat-icon{font-size:24px;width:24px;height:24px}:host(.compact) .stat-value{font-size:1.25rem;font-weight:600}:host(.compact) .stat-value .prefix,:host(.compact) .stat-value .suffix{font-size:var(--xiri-font-size-label)}:host(.compact) .stat-label{font-size:var(--xiri-font-size-label)}.stat-content{display:flex;align-items:center;gap:var(--xiri-spacing-md);min-width:0}.stat-icon{flex-shrink:0}.stat-icon mat-icon{font-size:36px;width:36px;height:36px;opacity:.8}.stat-data{flex:1;min-width:0}.stat-value{font-size:1.75rem;font-weight:600;line-height:1.2;color:var(--on-surface, #1B1B1F);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-value .prefix,.stat-value .suffix{font-size:var(--xiri-font-size-body);font-weight:400;opacity:.7}.stat-label{font-size:var(--xiri-font-size-label);color:var(--on-surface-variant, #44474F);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-trend{display:flex;align-items:center;flex-shrink:0;gap:2px;font-size:var(--xiri-font-size-label);font-weight:500;padding:var(--xiri-spacing-xs) var(--xiri-spacing-sm);border-radius:var(--xiri-radius-xs)}.stat-trend mat-icon{font-size:18px;width:18px;height:18px}.stat-trend.up{color:var(--color-success, #2ECC71);background-color:color-mix(in srgb,var(--color-success, #2ECC71) 10%,transparent)}.stat-trend.down{color:var(--error, #E74C3C);background-color:color-mix(in srgb,var(--error, #E74C3C) 10%,transparent)}.stat-trend.neutral{color:var(--on-surface-variant, #44474F);background-color:var(--surface-variant, #DEE3EB)}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5015
4896
|
}
|
|
5016
4897
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriStatComponent, decorators: [{
|
|
5017
4898
|
type: Component,
|
|
5018
|
-
args: [{ selector: 'xiri-stat', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon, MatCard, MatCardContent], template: "<mat-card class=\"stat-card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-content>\n\t\t<div class=\"stat-content\">\n\t\t
|
|
4899
|
+
args: [{ selector: 'xiri-stat', changeDetection: ChangeDetectionStrategy.OnPush, imports: [MatIcon, MatCard, MatCardContent, NgTemplateOutlet], host: { '[class.compact]': 'compact()' }, template: "@if (compact()) {\n\t<div class=\"stat-flat\">\n\t\t<ng-container *ngTemplateOutlet=\"statBody\"></ng-container>\n\t</div>\n} @else {\n\t<mat-card class=\"stat-card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-content>\n\t\t\t<ng-container *ngTemplateOutlet=\"statBody\"></ng-container>\n\t\t</mat-card-content>\n\t</mat-card>\n}\n\n<ng-template #statBody>\n\t<div class=\"stat-content\">\n\t\t@if (settings().icon) {\n\t\t\t<div class=\"stat-icon\">\n\t\t\t\t<mat-icon [class]=\"settings().iconColor || 'primary'\">{{ settings().icon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"stat-data\">\n\t\t\t<div class=\"stat-value\" [class]=\"settings().color || ''\">\n\t\t\t\t@if (settings().prefix) {\n\t\t\t\t\t<span class=\"prefix\">{{ settings().prefix }}</span>\n\t\t\t\t}\n\t\t\t\t{{ settings().value }}\n\t\t\t\t@if (settings().suffix) {\n\t\t\t\t\t<span class=\"suffix\">{{ settings().suffix }}</span>\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t<div class=\"stat-label\">{{ settings().label }}</div>\n\t\t</div>\n\t\t@if (settings().trend) {\n\t\t\t<div class=\"stat-trend\" [class]=\"settings().trend.direction\">\n\t\t\t\t<mat-icon>\n\t\t\t\t\t@switch (settings().trend.direction) {\n\t\t\t\t\t\t@case ('up') { trending_up }\n\t\t\t\t\t\t@case ('down') { trending_down }\n\t\t\t\t\t\t@default { trending_flat }\n\t\t\t\t\t}\n\t\t\t\t</mat-icon>\n\t\t\t\t<span>{{ settings().trend.value > 0 ? '+' : '' }}{{ settings().trend.value }}%</span>\n\t\t\t</div>\n\t\t}\n\t</div>\n</ng-template>\n", styles: [":host{display:block;animation:scaleIn var(--xiri-duration-normal) var(--xiri-easing-decelerate) both}:host-context(.xiri-stat-grid):nth-child(1){animation-delay:0ms}:host-context(.xiri-stat-grid):nth-child(2){animation-delay:50ms}:host-context(.xiri-stat-grid):nth-child(3){animation-delay:.1s}:host-context(.xiri-stat-grid):nth-child(4){animation-delay:.15s}:host-context(.xiri-stat-grid):nth-child(5){animation-delay:.2s}:host-context(.xiri-stat-grid):nth-child(6){animation-delay:.25s}:host-context(.xiri-stat-grid):nth-child(7){animation-delay:.3s}:host-context(.xiri-stat-grid):nth-child(8){animation-delay:.35s}:host-context(.xiri-stat-grid):nth-child(9){animation-delay:.4s}:host-context(.xiri-stat-grid):nth-child(10){animation-delay:.45s}:host-context(.xiri-stat-grid):nth-child(11){animation-delay:.5s}:host-context(.xiri-stat-grid):nth-child(12){animation-delay:.55s}.stat-card{padding:0}.stat-card mat-card-content{padding:var(--xiri-spacing-md) var(--xiri-spacing-md)}:host(.compact){animation:none}:host(.compact) .stat-flat{padding:var(--xiri-spacing-sm) var(--xiri-spacing-sm);background:transparent;box-shadow:none}:host(.compact) .stat-icon mat-icon{font-size:24px;width:24px;height:24px}:host(.compact) .stat-value{font-size:1.25rem;font-weight:600}:host(.compact) .stat-value .prefix,:host(.compact) .stat-value .suffix{font-size:var(--xiri-font-size-label)}:host(.compact) .stat-label{font-size:var(--xiri-font-size-label)}.stat-content{display:flex;align-items:center;gap:var(--xiri-spacing-md);min-width:0}.stat-icon{flex-shrink:0}.stat-icon mat-icon{font-size:36px;width:36px;height:36px;opacity:.8}.stat-data{flex:1;min-width:0}.stat-value{font-size:1.75rem;font-weight:600;line-height:1.2;color:var(--on-surface, #1B1B1F);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-value .prefix,.stat-value .suffix{font-size:var(--xiri-font-size-body);font-weight:400;opacity:.7}.stat-label{font-size:var(--xiri-font-size-label);color:var(--on-surface-variant, #44474F);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stat-trend{display:flex;align-items:center;flex-shrink:0;gap:2px;font-size:var(--xiri-font-size-label);font-weight:500;padding:var(--xiri-spacing-xs) var(--xiri-spacing-sm);border-radius:var(--xiri-radius-xs)}.stat-trend mat-icon{font-size:18px;width:18px;height:18px}.stat-trend.up{color:var(--color-success, #2ECC71);background-color:color-mix(in srgb,var(--color-success, #2ECC71) 10%,transparent)}.stat-trend.down{color:var(--error, #E74C3C);background-color:color-mix(in srgb,var(--error, #E74C3C) 10%,transparent)}.stat-trend.neutral{color:var(--on-surface-variant, #44474F);background-color:var(--surface-variant, #DEE3EB)}\n"] }]
|
|
5019
4900
|
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5020
4901
|
|
|
5021
4902
|
class XiriSectionComponent {
|
|
@@ -5059,11 +4940,11 @@ class XiriDynComponentComponent {
|
|
|
5059
4940
|
}, ...(ngDevMode ? [{ debugName: "dataInt" }] : /* istanbul ignore next */ []));
|
|
5060
4941
|
}
|
|
5061
4942
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriDynComponentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5062
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriDynComponentComponent, isStandalone: true, selector: "xiri-dyncomponent", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, filterData: { classPropertyName: "filterData", publicName: "filterData", isSignal: true, isRequired: false, transformFunction: null }, dyncomponent: { classPropertyName: "dyncomponent", publicName: "dyncomponent", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@for (obj of dataInt(); track obj.id) {\n\n\t@switch (obj.type) {\n\t\t@case ('card') {\n\t\t\t<div class=\"xcol xcol-md-6 xcol-xl-4\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-card [settings]=\"obj.data\"></xiri-card>\n\t\t\t</div>\n\t\t}\n\t\t@case ('buttonline') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-buttonline [settings]=\"obj.data\" [filterData]=\"filterData()\"></xiri-buttonline>\n\t\t\t</div>\n\t\t}\n\t\t@case ('table') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-table [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-table>\n\t\t\t</div>\n\t\t}\n\t\t@case ('cardlink') {\n\t\t\t<div class=\"xcol xcol-md-4 xcol-lg-3\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-cardlink [settings]=\"obj.data\"></xiri-cardlink>\n\t\t\t</div>\n\t\t}\n\t\t@case ('links') {\n\t\t\t<div class=\"xcol xcol-md-4 xcol-lg-3\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-links [settings]=\"obj.data\"></xiri-links>\n\t\t\t</div>\n\t\t}\n\t\t@case ('form') {\n\t\t\t<div class=\"xcol form\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<mat-card class=\"mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t\t\t\t@if (obj.data.header) {\n\t\t\t\t\t\t<mat-card-header>\n\t\t\t\t\t\t\t<mat-card-title>{{ obj.data.header }}</mat-card-title>\n\t\t\t\t\t\t</mat-card-header>\n\t\t\t\t\t}\n\t\t\t\t\t<mat-card-content>\n\t\t\t\t\t\t<xiri-form [settings]=\"obj.data\"></xiri-form>\n\t\t\t\t\t</mat-card-content>\n\t\t\t\t</mat-card>\n\t\t\t</div>\n\t\t}\n\t\t@case ('query') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-query [settings]=\"obj.data\" [dyncomponent]=\"selfdyncomponent\"></xiri-query>\n\t\t\t</div>\n\t\t}\n\t\t@case ('stepper') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-stepper [settings]=\"obj.data\"></xiri-stepper>\n\t\t\t</div>\n\t\t}\n\t\t@case ('header') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-header [settings]=\"obj.data\"></xiri-header>\n\t\t\t</div>\n\t\t}\n\t\t@case ('list') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-list [settings]=\"obj.data\"></xiri-list>\n\t\t\t</div>\n\t\t}\n\t\t@case ('spacer') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"spacer\" [class]=\"obj.display\"> </div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('container') {\n\t\t\t@if (obj.data) {\n\t\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t\t<xiri-dyncomponent [data]=\"obj.data\" [dyncomponent]=\"dyncomponent()\" class=\"row\"></xiri-dyncomponent>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t\t@case ('infopoint') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-infopoint [settings]=\"obj.data\"></xiri-infopoint>\n\t\t\t</div>\n\t\t}\n\t\t@case ('multiprogress') {\n\t\t\t<div class=\"xcol xcol-md-4\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-multiprogress [settings]=\"obj.data\"></xiri-multiprogress> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('imagetext') {\n\t\t\t<div class=\"xcol xcol-md-4\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-imagetext [settings]=\"obj.data\"></xiri-imagetext> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('tabs') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-tabs [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-tabs>\n\t\t\t</div>\n\t\t}\n\t\t@case ('expansion') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-expansion [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-expansion>\n\t\t\t</div>\n\t\t}\n\t\t@case ('infotext') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"infotext\">{{ obj.data.text }}</div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('html') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"html\" [innerHtml]=\"obj.data.html | safeHtml\"></div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('stat') {\n\t\t\t<div class=\"xcol xcol-md-6 xcol-xl-4\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-stat [settings]=\"obj.data\"></xiri-stat>\n\t\t\t</div>\n\t\t}\n\t\t@case ('empty-state') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-empty-state [settings]=\"obj.data\"></xiri-empty-state>\n\t\t\t</div>\n\t\t}\n\t\t@case ('timeline') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-timeline [settings]=\"obj.data\"></xiri-timeline> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('page-header') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-page-header [settings]=\"obj.data\"></xiri-page-header> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('section') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-section [settings]=\"obj.data\" [dyncomponent]=\"dyncomponent()\"></xiri-section>\n\t\t\t</div>\n\t\t}\n\t\t@case ('divider') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-divider [settings]=\"obj.data\"></xiri-divider> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('stat-grid') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-stat-grid [settings]=\"obj.data\"></xiri-stat-grid> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('toolbar') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-toolbar [settings]=\"obj.data\" [filterData]=\"filterData()\"></xiri-toolbar> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('description-list') {\n\t\t\t<div class=\"xcol\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-description-list [settings]=\"obj.data\"></xiri-description-list> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('barchart') {\n\t\t\t<div class=\"xcol xcol-md-6 xcol-xl-3\" [class]=\"obj.display\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-barchart [mode]=\"obj.mode\" [settings]=\"obj.data\"></xiri-barchart> }\n\t\t\t</div>\n\t\t}\n\t\t@default {\n\t\t\t<ng-container *ngTemplateOutlet=\"dyncomponent() || defaultComponentUnknown; context: { $implicit: obj, filterData: filterData() }\"></ng-container>\n\t\t}\n\t}\n}\n\n<ng-template #selfdyncomponent let-obj>\n\t<xiri-dyncomponent [data]=\"obj.data\" [filterData]=\"obj.filterData\" [dyncomponent]=\"dyncomponent()\" class=\"xrow\"></xiri-dyncomponent>\n</ng-template>\n<ng-template #defaultComponentUnknown let-obj>\n\t<div class=\"xcol\">unknown type: {{ obj.type }}</div>\n</ng-template>\n", styles: [".spacer.double{padding-top:1rem}.form mat-card-header{padding-bottom:1rem}\n"], dependencies: [{ kind: "component", type: XiriDynComponentComponent, selector: "xiri-dyncomponent", inputs: ["data", "filterData", "dyncomponent"] }, { kind: "component", type: XiriCardComponent, selector: "xiri-card", inputs: ["settings"] }, { kind: "component", type: XiriButtonlineComponent, selector: "xiri-buttonline", inputs: ["settings", "disabled", "filterData"], outputs: ["result"] }, { kind: "component", type: XiriTableComponent, selector: "xiri-table", inputs: ["dyncomponent", "settings", "filterData"], outputs: ["clickedRow"] }, { kind: "component", type: XiriCardlinkComponent, selector: "xiri-cardlink", inputs: ["settings"] }, { kind: "component", type: XiriLinksComponent, selector: "xiri-links", inputs: ["settings"] }, { kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: XiriFormComponent, selector: "xiri-form", inputs: ["settings"] }, { kind: "component", type: XiriQueryComponent, selector: "xiri-query", inputs: ["settings", "dyncomponent"], outputs: ["change"] }, { kind: "component", type: XiriStepperComponent, selector: "xiri-stepper", inputs: ["settings"] }, { kind: "component", type: XiriHeaderComponent, selector: "xiri-header", inputs: ["settings"] }, { kind: "component", type: XiriListComponent, selector: "xiri-list", inputs: ["settings"] }, { kind: "component", type: XiriInfopointComponent, selector: "xiri-infopoint", inputs: ["settings"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: XiriTabsComponent, selector: "xiri-tabs", inputs: ["settings", "filterData", "dyncomponent"] }, { kind: "component", type: XiriExpansionComponent, selector: "xiri-expansion", inputs: ["settings", "filterData", "dyncomponent"] }, { kind: "component", type: XiriStatComponent, selector: "xiri-stat", inputs: ["settings"] }, { kind: "component", type: XiriEmptyStateComponent, selector: "xiri-empty-state", inputs: ["settings"], outputs: ["buttonResult"] }, { kind: "component", type: XiriSectionComponent, selector: "xiri-section", inputs: ["settings", "dyncomponent"] }, { kind: "pipe", type: SafehtmlPipe, name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [Promise.resolve().then(function () { return multiprogress_component; }).then(m => m.XiriMultiprogressComponent)], () => [Promise.resolve().then(function () { return imagetext_component; }).then(m => m.XiriImagetextComponent)], () => [Promise.resolve().then(function () { return timeline_component; }).then(m => m.XiriTimelineComponent)], () => [Promise.resolve().then(function () { return pageHeader_component; }).then(m => m.XiriPageHeaderComponent)], () => [Promise.resolve().then(function () { return divider_component; }).then(m => m.XiriDividerComponent)], () => [Promise.resolve().then(function () { return statGrid_component; }).then(m => m.XiriStatGridComponent)], () => [Promise.resolve().then(function () { return toolbar_component; }).then(m => m.XiriToolbarComponent)], () => [Promise.resolve().then(function () { return descriptionList_component; }).then(m => m.XiriDescriptionListComponent)], () => [Promise.resolve().then(function () { return barchart_component; }).then(m => m.XiriBarChartComponent)]] }); }
|
|
4943
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriDynComponentComponent, isStandalone: true, selector: "xiri-dyncomponent", inputs: { data: { classPropertyName: "data", publicName: "data", isSignal: true, isRequired: true, transformFunction: null }, filterData: { classPropertyName: "filterData", publicName: "filterData", isSignal: true, isRequired: false, transformFunction: null }, dyncomponent: { classPropertyName: "dyncomponent", publicName: "dyncomponent", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@for (obj of dataInt(); track obj.id) {\n\n\t@switch (obj.type) {\n\t\t@case ('card') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-card [settings]=\"obj.data\"></xiri-card>\n\t\t\t</div>\n\t\t}\n\t\t@case ('buttonline') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-buttonline [settings]=\"obj.data\" [filterData]=\"filterData()\"></xiri-buttonline>\n\t\t\t</div>\n\t\t}\n\t\t@case ('table') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-table [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-table>\n\t\t\t</div>\n\t\t}\n\t\t@case ('cardlink') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4 xcol-lg-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-cardlink [settings]=\"obj.data\"></xiri-cardlink>\n\t\t\t</div>\n\t\t}\n\t\t@case ('links') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4 xcol-lg-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-links [settings]=\"obj.data\"></xiri-links>\n\t\t\t</div>\n\t\t}\n\t\t@case ('form') {\n\t\t\t<div [class]=\"obj.display || 'xcol form'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<mat-card class=\"mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t\t\t\t@if (obj.data.header) {\n\t\t\t\t\t\t<mat-card-header>\n\t\t\t\t\t\t\t<mat-card-title>{{ obj.data.header }}</mat-card-title>\n\t\t\t\t\t\t</mat-card-header>\n\t\t\t\t\t}\n\t\t\t\t\t<mat-card-content>\n\t\t\t\t\t\t<xiri-form [settings]=\"obj.data\"></xiri-form>\n\t\t\t\t\t</mat-card-content>\n\t\t\t\t</mat-card>\n\t\t\t</div>\n\t\t}\n\t\t@case ('query') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-query [settings]=\"obj.data\" [dyncomponent]=\"selfdyncomponent\"></xiri-query>\n\t\t\t</div>\n\t\t}\n\t\t@case ('stepper') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-stepper [settings]=\"obj.data\"></xiri-stepper>\n\t\t\t</div>\n\t\t}\n\t\t@case ('header') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-header [settings]=\"obj.data\"></xiri-header>\n\t\t\t</div>\n\t\t}\n\t\t@case ('list') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-list [settings]=\"obj.data\"></xiri-list>\n\t\t\t</div>\n\t\t}\n\t\t@case ('spacer') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"spacer\"> </div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('container') {\n\t\t\t@if (obj.data) {\n\t\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t\t<xiri-dyncomponent [data]=\"obj.data\" [dyncomponent]=\"dyncomponent()\" class=\"row\"></xiri-dyncomponent>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t\t@case ('infopoint') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-infopoint [settings]=\"obj.data\"></xiri-infopoint>\n\t\t\t</div>\n\t\t}\n\t\t@case ('multiprogress') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-multiprogress [settings]=\"obj.data\"></xiri-multiprogress> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('imagetext') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-imagetext [settings]=\"obj.data\"></xiri-imagetext> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('tabs') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-tabs [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-tabs>\n\t\t\t</div>\n\t\t}\n\t\t@case ('expansion') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-expansion [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-expansion>\n\t\t\t</div>\n\t\t}\n\t\t@case ('infotext') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"infotext\">{{ obj.data.text }}</div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('html') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"html\" [innerHtml]=\"obj.data.html | safeHtml\"></div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('stat') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-stat [settings]=\"obj.data\"></xiri-stat>\n\t\t\t</div>\n\t\t}\n\t\t@case ('empty-state') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-empty-state [settings]=\"obj.data\"></xiri-empty-state>\n\t\t\t</div>\n\t\t}\n\t\t@case ('timeline') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-timeline [settings]=\"obj.data\"></xiri-timeline> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('page-header') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-page-header [settings]=\"obj.data\"></xiri-page-header> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('section') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-section [settings]=\"obj.data\" [dyncomponent]=\"dyncomponent()\"></xiri-section>\n\t\t\t</div>\n\t\t}\n\t\t@case ('divider') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-divider [settings]=\"obj.data\"></xiri-divider> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('stat-grid') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-stat-grid [settings]=\"obj.data\"></xiri-stat-grid> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('toolbar') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-toolbar [settings]=\"obj.data\" [filterData]=\"filterData()\"></xiri-toolbar> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('description-list') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-description-list [settings]=\"obj.data\"></xiri-description-list> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('barchart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-barchart [mode]=\"obj.mode\" [settings]=\"obj.data\"></xiri-barchart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('linechart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-linechart [settings]=\"obj.data\"></xiri-linechart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('piechart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-piechart [settings]=\"obj.data\"></xiri-piechart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('gaugechart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-gaugechart [settings]=\"obj.data\"></xiri-gaugechart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('heatmap') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-heatmap [settings]=\"obj.data\"></xiri-heatmap> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('calendar') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-calendar [settings]=\"obj.data\"></xiri-calendar> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('tree') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-tree [settings]=\"obj.data\"></xiri-tree> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('sankey') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-sankey [settings]=\"obj.data\"></xiri-sankey> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('gantt') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-gantt [settings]=\"obj.data\"></xiri-gantt> }\n\t\t\t</div>\n\t\t}\n\t\t@default {\n\t\t\t<ng-container *ngTemplateOutlet=\"dyncomponent() || defaultComponentUnknown; context: { $implicit: obj, filterData: filterData() }\"></ng-container>\n\t\t}\n\t}\n}\n\n<ng-template #selfdyncomponent let-obj>\n\t<xiri-dyncomponent [data]=\"obj.data\" [filterData]=\"obj.filterData\" [dyncomponent]=\"dyncomponent()\" class=\"xrow\"></xiri-dyncomponent>\n</ng-template>\n<ng-template #defaultComponentUnknown let-obj>\n\t<div class=\"xcol\">unknown type: {{ obj.type }}</div>\n</ng-template>\n", styles: [".spacer.double{padding-top:1rem}.form mat-card-header{padding-bottom:1rem}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => XiriDynComponentComponent), selector: "xiri-dyncomponent", inputs: ["data", "filterData", "dyncomponent"] }, { kind: "component", type: i0.forwardRef(() => XiriCardComponent), selector: "xiri-card", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriButtonlineComponent), selector: "xiri-buttonline", inputs: ["settings", "disabled", "filterData"], outputs: ["result"] }, { kind: "component", type: i0.forwardRef(() => XiriTableComponent), selector: "xiri-table", inputs: ["dyncomponent", "settings", "filterData"], outputs: ["clickedRow"] }, { kind: "component", type: i0.forwardRef(() => XiriCardlinkComponent), selector: "xiri-cardlink", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriLinksComponent), selector: "xiri-links", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => MatCard), selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i0.forwardRef(() => MatCardHeader), selector: "mat-card-header" }, { kind: "directive", type: i0.forwardRef(() => MatCardTitle), selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i0.forwardRef(() => MatCardContent), selector: "mat-card-content" }, { kind: "component", type: i0.forwardRef(() => XiriFormComponent), selector: "xiri-form", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriQueryComponent), selector: "xiri-query", inputs: ["settings", "dyncomponent"], outputs: ["change"] }, { kind: "component", type: i0.forwardRef(() => XiriStepperComponent), selector: "xiri-stepper", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriHeaderComponent), selector: "xiri-header", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriListComponent), selector: "xiri-list", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriInfopointComponent), selector: "xiri-infopoint", inputs: ["settings"] }, { kind: "directive", type: i0.forwardRef(() => NgTemplateOutlet), selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i0.forwardRef(() => XiriTabsComponent), selector: "xiri-tabs", inputs: ["settings", "filterData", "dyncomponent"] }, { kind: "component", type: i0.forwardRef(() => XiriExpansionComponent), selector: "xiri-expansion", inputs: ["settings", "filterData", "dyncomponent"] }, { kind: "component", type: i0.forwardRef(() => XiriStatComponent), selector: "xiri-stat", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriEmptyStateComponent), selector: "xiri-empty-state", inputs: ["settings"], outputs: ["buttonResult"] }, { kind: "component", type: i0.forwardRef(() => XiriSectionComponent), selector: "xiri-section", inputs: ["settings", "dyncomponent"] }, { kind: "pipe", type: i0.forwardRef(() => SafehtmlPipe), name: "safeHtml" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, deferBlockDependencies: [() => [Promise.resolve().then(function () { return multiprogress_component; }).then(m => m.XiriMultiprogressComponent)], () => [Promise.resolve().then(function () { return imagetext_component; }).then(m => m.XiriImagetextComponent)], () => [Promise.resolve().then(function () { return timeline_component; }).then(m => m.XiriTimelineComponent)], () => [Promise.resolve().then(function () { return pageHeader_component; }).then(m => m.XiriPageHeaderComponent)], () => [Promise.resolve().then(function () { return divider_component; }).then(m => m.XiriDividerComponent)], () => [Promise.resolve().then(function () { return statGrid_component; }).then(m => m.XiriStatGridComponent)], () => [Promise.resolve().then(function () { return toolbar_component; }).then(m => m.XiriToolbarComponent)], () => [Promise.resolve().then(function () { return descriptionList_component; }).then(m => m.XiriDescriptionListComponent)], () => [Promise.resolve().then(function () { return barchart_component; }).then(m => m.XiriBarChartComponent)], () => [Promise.resolve().then(function () { return linechart_component; }).then(m => m.XiriLineChartComponent)], () => [Promise.resolve().then(function () { return piechart_component; }).then(m => m.XiriPieChartComponent)], () => [Promise.resolve().then(function () { return gaugechart_component; }).then(m => m.XiriGaugeChartComponent)], () => [Promise.resolve().then(function () { return heatmap_component; }).then(m => m.XiriHeatmapComponent)], () => [Promise.resolve().then(function () { return calendar_component; }).then(m => m.XiriCalendarComponent)], () => [Promise.resolve().then(function () { return tree_component; }).then(m => m.XiriTreeComponent)], () => [Promise.resolve().then(function () { return sankey_component; }).then(m => m.XiriSankeyComponent)], () => [Promise.resolve().then(function () { return gantt_component; }).then(m => m.XiriGanttComponent)]] }); }
|
|
5063
4944
|
}
|
|
5064
|
-
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.2", ngImport: i0, type: XiriDynComponentComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return multiprogress_component; }).then(m => m.XiriMultiprogressComponent), Promise.resolve().then(function () { return imagetext_component; }).then(m => m.XiriImagetextComponent), Promise.resolve().then(function () { return timeline_component; }).then(m => m.XiriTimelineComponent), Promise.resolve().then(function () { return pageHeader_component; }).then(m => m.XiriPageHeaderComponent), Promise.resolve().then(function () { return divider_component; }).then(m => m.XiriDividerComponent), Promise.resolve().then(function () { return statGrid_component; }).then(m => m.XiriStatGridComponent), Promise.resolve().then(function () { return toolbar_component; }).then(m => m.XiriToolbarComponent), Promise.resolve().then(function () { return descriptionList_component; }).then(m => m.XiriDescriptionListComponent), Promise.resolve().then(function () { return barchart_component; }).then(m => m.XiriBarChartComponent)], resolveMetadata: (XiriMultiprogressComponent, XiriImagetextComponent, XiriTimelineComponent, XiriPageHeaderComponent, XiriDividerComponent, XiriStatGridComponent, XiriToolbarComponent, XiriDescriptionListComponent, XiriBarChartComponent) => ({ decorators: [{
|
|
4945
|
+
i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.2", ngImport: i0, type: XiriDynComponentComponent, resolveDeferredDeps: () => [Promise.resolve().then(function () { return multiprogress_component; }).then(m => m.XiriMultiprogressComponent), Promise.resolve().then(function () { return imagetext_component; }).then(m => m.XiriImagetextComponent), Promise.resolve().then(function () { return timeline_component; }).then(m => m.XiriTimelineComponent), Promise.resolve().then(function () { return pageHeader_component; }).then(m => m.XiriPageHeaderComponent), Promise.resolve().then(function () { return divider_component; }).then(m => m.XiriDividerComponent), Promise.resolve().then(function () { return statGrid_component; }).then(m => m.XiriStatGridComponent), Promise.resolve().then(function () { return toolbar_component; }).then(m => m.XiriToolbarComponent), Promise.resolve().then(function () { return descriptionList_component; }).then(m => m.XiriDescriptionListComponent), Promise.resolve().then(function () { return barchart_component; }).then(m => m.XiriBarChartComponent), Promise.resolve().then(function () { return linechart_component; }).then(m => m.XiriLineChartComponent), Promise.resolve().then(function () { return piechart_component; }).then(m => m.XiriPieChartComponent), Promise.resolve().then(function () { return gaugechart_component; }).then(m => m.XiriGaugeChartComponent), Promise.resolve().then(function () { return heatmap_component; }).then(m => m.XiriHeatmapComponent), Promise.resolve().then(function () { return calendar_component; }).then(m => m.XiriCalendarComponent), Promise.resolve().then(function () { return tree_component; }).then(m => m.XiriTreeComponent), Promise.resolve().then(function () { return sankey_component; }).then(m => m.XiriSankeyComponent), Promise.resolve().then(function () { return gantt_component; }).then(m => m.XiriGanttComponent)], resolveMetadata: (XiriMultiprogressComponent, XiriImagetextComponent, XiriTimelineComponent, XiriPageHeaderComponent, XiriDividerComponent, XiriStatGridComponent, XiriToolbarComponent, XiriDescriptionListComponent, XiriBarChartComponent, XiriLineChartComponent, XiriPieChartComponent, XiriGaugeChartComponent, XiriHeatmapComponent, XiriCalendarComponent, XiriTreeComponent, XiriSankeyComponent, XiriGanttComponent) => ({ decorators: [{
|
|
5065
4946
|
type: Component,
|
|
5066
|
-
args: [{ selector: 'xiri-dyncomponent', changeDetection: ChangeDetectionStrategy.OnPush, imports: [XiriCardComponent,
|
|
4947
|
+
args: [{ selector: 'xiri-dyncomponent', changeDetection: ChangeDetectionStrategy.OnPush, imports: [forwardRef(() => XiriCardComponent),
|
|
5067
4948
|
XiriButtonlineComponent,
|
|
5068
4949
|
XiriTableComponent,
|
|
5069
4950
|
XiriCardlinkComponent,
|
|
@@ -5093,9 +4974,157 @@ i0.ɵɵngDeclareClassMetadataAsync({ minVersion: "18.0.0", version: "21.2.2", ng
|
|
|
5093
4974
|
XiriStatGridComponent,
|
|
5094
4975
|
XiriToolbarComponent,
|
|
5095
4976
|
XiriDescriptionListComponent,
|
|
5096
|
-
XiriBarChartComponent
|
|
4977
|
+
XiriBarChartComponent,
|
|
4978
|
+
XiriLineChartComponent,
|
|
4979
|
+
XiriPieChartComponent,
|
|
4980
|
+
XiriGaugeChartComponent,
|
|
4981
|
+
XiriHeatmapComponent,
|
|
4982
|
+
XiriCalendarComponent,
|
|
4983
|
+
XiriTreeComponent,
|
|
4984
|
+
XiriSankeyComponent,
|
|
4985
|
+
XiriGanttComponent], template: "@for (obj of dataInt(); track obj.id) {\n\n\t@switch (obj.type) {\n\t\t@case ('card') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-card [settings]=\"obj.data\"></xiri-card>\n\t\t\t</div>\n\t\t}\n\t\t@case ('buttonline') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-buttonline [settings]=\"obj.data\" [filterData]=\"filterData()\"></xiri-buttonline>\n\t\t\t</div>\n\t\t}\n\t\t@case ('table') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-table [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-table>\n\t\t\t</div>\n\t\t}\n\t\t@case ('cardlink') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4 xcol-lg-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-cardlink [settings]=\"obj.data\"></xiri-cardlink>\n\t\t\t</div>\n\t\t}\n\t\t@case ('links') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4 xcol-lg-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-links [settings]=\"obj.data\"></xiri-links>\n\t\t\t</div>\n\t\t}\n\t\t@case ('form') {\n\t\t\t<div [class]=\"obj.display || 'xcol form'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<mat-card class=\"mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t\t\t\t@if (obj.data.header) {\n\t\t\t\t\t\t<mat-card-header>\n\t\t\t\t\t\t\t<mat-card-title>{{ obj.data.header }}</mat-card-title>\n\t\t\t\t\t\t</mat-card-header>\n\t\t\t\t\t}\n\t\t\t\t\t<mat-card-content>\n\t\t\t\t\t\t<xiri-form [settings]=\"obj.data\"></xiri-form>\n\t\t\t\t\t</mat-card-content>\n\t\t\t\t</mat-card>\n\t\t\t</div>\n\t\t}\n\t\t@case ('query') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-query [settings]=\"obj.data\" [dyncomponent]=\"selfdyncomponent\"></xiri-query>\n\t\t\t</div>\n\t\t}\n\t\t@case ('stepper') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-stepper [settings]=\"obj.data\"></xiri-stepper>\n\t\t\t</div>\n\t\t}\n\t\t@case ('header') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-header [settings]=\"obj.data\"></xiri-header>\n\t\t\t</div>\n\t\t}\n\t\t@case ('list') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-list [settings]=\"obj.data\"></xiri-list>\n\t\t\t</div>\n\t\t}\n\t\t@case ('spacer') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"spacer\"> </div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('container') {\n\t\t\t@if (obj.data) {\n\t\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t\t<xiri-dyncomponent [data]=\"obj.data\" [dyncomponent]=\"dyncomponent()\" class=\"row\"></xiri-dyncomponent>\n\t\t\t\t</div>\n\t\t\t}\n\t\t}\n\t\t@case ('infopoint') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-infopoint [settings]=\"obj.data\"></xiri-infopoint>\n\t\t\t</div>\n\t\t}\n\t\t@case ('multiprogress') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-multiprogress [settings]=\"obj.data\"></xiri-multiprogress> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('imagetext') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-imagetext [settings]=\"obj.data\"></xiri-imagetext> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('tabs') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-tabs [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-tabs>\n\t\t\t</div>\n\t\t}\n\t\t@case ('expansion') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-expansion [settings]=\"obj.data\" [filterData]=\"filterData()\" [dyncomponent]=\"selfdyncomponent\"></xiri-expansion>\n\t\t\t</div>\n\t\t}\n\t\t@case ('infotext') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"infotext\">{{ obj.data.text }}</div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('html') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<div class=\"html\" [innerHtml]=\"obj.data.html | safeHtml\"></div>\n\t\t\t</div>\n\t\t}\n\t\t@case ('stat') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-4'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-stat [settings]=\"obj.data\"></xiri-stat>\n\t\t\t</div>\n\t\t}\n\t\t@case ('empty-state') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-empty-state [settings]=\"obj.data\"></xiri-empty-state>\n\t\t\t</div>\n\t\t}\n\t\t@case ('timeline') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-timeline [settings]=\"obj.data\"></xiri-timeline> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('page-header') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-page-header [settings]=\"obj.data\"></xiri-page-header> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('section') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t<xiri-section [settings]=\"obj.data\" [dyncomponent]=\"dyncomponent()\"></xiri-section>\n\t\t\t</div>\n\t\t}\n\t\t@case ('divider') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-divider [settings]=\"obj.data\"></xiri-divider> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('stat-grid') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-stat-grid [settings]=\"obj.data\"></xiri-stat-grid> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('toolbar') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-toolbar [settings]=\"obj.data\" [filterData]=\"filterData()\"></xiri-toolbar> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('description-list') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-description-list [settings]=\"obj.data\"></xiri-description-list> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('barchart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-barchart [mode]=\"obj.mode\" [settings]=\"obj.data\"></xiri-barchart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('linechart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-linechart [settings]=\"obj.data\"></xiri-linechart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('piechart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-piechart [settings]=\"obj.data\"></xiri-piechart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('gaugechart') {\n\t\t\t<div [class]=\"obj.display || 'xcol xcol-md-6 xcol-xl-3'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-gaugechart [settings]=\"obj.data\"></xiri-gaugechart> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('heatmap') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-heatmap [settings]=\"obj.data\"></xiri-heatmap> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('calendar') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-calendar [settings]=\"obj.data\"></xiri-calendar> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('tree') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-tree [settings]=\"obj.data\"></xiri-tree> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('sankey') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-sankey [settings]=\"obj.data\"></xiri-sankey> }\n\t\t\t</div>\n\t\t}\n\t\t@case ('gantt') {\n\t\t\t<div [class]=\"obj.display || 'xcol'\" [class.xcol-start]=\"obj.newRow\">\n\t\t\t\t@defer { <xiri-gantt [settings]=\"obj.data\"></xiri-gantt> }\n\t\t\t</div>\n\t\t}\n\t\t@default {\n\t\t\t<ng-container *ngTemplateOutlet=\"dyncomponent() || defaultComponentUnknown; context: { $implicit: obj, filterData: filterData() }\"></ng-container>\n\t\t}\n\t}\n}\n\n<ng-template #selfdyncomponent let-obj>\n\t<xiri-dyncomponent [data]=\"obj.data\" [filterData]=\"obj.filterData\" [dyncomponent]=\"dyncomponent()\" class=\"xrow\"></xiri-dyncomponent>\n</ng-template>\n<ng-template #defaultComponentUnknown let-obj>\n\t<div class=\"xcol\">unknown type: {{ obj.type }}</div>\n</ng-template>\n", styles: [".spacer.double{padding-top:1rem}.form mat-card-header{padding-bottom:1rem}\n"] }]
|
|
5097
4986
|
}], ctorParameters: null, propDecorators: { data: [{ type: i0.Input, args: [{ isSignal: true, alias: "data", required: true }] }], filterData: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterData", required: false }] }], dyncomponent: [{ type: i0.Input, args: [{ isSignal: true, alias: "dyncomponent", required: false }] }] } }) });
|
|
5098
4987
|
|
|
4988
|
+
class XiriCardComponent {
|
|
4989
|
+
constructor() {
|
|
4990
|
+
this.dataService = inject(XiriDataService);
|
|
4991
|
+
this.destroyRef = inject(DestroyRef);
|
|
4992
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
4993
|
+
this.loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
4994
|
+
this.errorMsg = signal('', ...(ngDevMode ? [{ debugName: "errorMsg" }] : /* istanbul ignore next */ []));
|
|
4995
|
+
this.isCollapsed = signal(false, ...(ngDevMode ? [{ debugName: "isCollapsed" }] : /* istanbul ignore next */ []));
|
|
4996
|
+
this._data = signal(null, ...(ngDevMode ? [{ debugName: "_data" }] : /* istanbul ignore next */ []));
|
|
4997
|
+
this.cardData = computed(() => this._data() ?? this.settings().data, ...(ngDevMode ? [{ debugName: "cardData" }] : /* istanbul ignore next */ []));
|
|
4998
|
+
this.hasComponents = computed(() => (this.settings().components?.length ?? 0) > 0, ...(ngDevMode ? [{ debugName: "hasComponents" }] : /* istanbul ignore next */ []));
|
|
4999
|
+
/** Resolves padding setting (token or free CSS value) into a CSS length string. */
|
|
5000
|
+
this.componentsPadding = computed(() => {
|
|
5001
|
+
const v = this.settings().padding;
|
|
5002
|
+
if (!v)
|
|
5003
|
+
return 'var(--xiri-spacing-md, 16px)';
|
|
5004
|
+
switch (v) {
|
|
5005
|
+
case 'xs': return 'var(--xiri-spacing-xs, 4px)';
|
|
5006
|
+
case 'sm': return 'var(--xiri-spacing-sm, 8px)';
|
|
5007
|
+
case 'md': return 'var(--xiri-spacing-md, 16px)';
|
|
5008
|
+
case 'lg': return 'var(--xiri-spacing-lg, 24px)';
|
|
5009
|
+
case 'xl': return 'var(--xiri-spacing-xl, 32px)';
|
|
5010
|
+
default: return v; // freier CSS-Wert
|
|
5011
|
+
}
|
|
5012
|
+
}, ...(ngDevMode ? [{ debugName: "componentsPadding" }] : /* istanbul ignore next */ []));
|
|
5013
|
+
this.rawTable = computed(() => {
|
|
5014
|
+
const data = this.cardData();
|
|
5015
|
+
if (data == null)
|
|
5016
|
+
return null;
|
|
5017
|
+
let rt = {
|
|
5018
|
+
data: data,
|
|
5019
|
+
fields: this.settings().fields,
|
|
5020
|
+
dense: this.settings().dense,
|
|
5021
|
+
forceMinWidth: this.settings().forceMinWidth,
|
|
5022
|
+
};
|
|
5023
|
+
if (!this.settings().fields && data.length !== 0) {
|
|
5024
|
+
let fields = [];
|
|
5025
|
+
if (Array.isArray(data)) {
|
|
5026
|
+
fields.push({
|
|
5027
|
+
id: '0',
|
|
5028
|
+
name: '0',
|
|
5029
|
+
format: 'text',
|
|
5030
|
+
display: 'info',
|
|
5031
|
+
minWidth: '30px',
|
|
5032
|
+
});
|
|
5033
|
+
fields.push({
|
|
5034
|
+
id: '1',
|
|
5035
|
+
name: '1',
|
|
5036
|
+
format: 'html',
|
|
5037
|
+
display: 'right',
|
|
5038
|
+
minWidth: '30px',
|
|
5039
|
+
});
|
|
5040
|
+
}
|
|
5041
|
+
else {
|
|
5042
|
+
fields.push({
|
|
5043
|
+
id: 'f0',
|
|
5044
|
+
name: 'f0',
|
|
5045
|
+
format: 'text',
|
|
5046
|
+
display: 'info',
|
|
5047
|
+
minWidth: '30px',
|
|
5048
|
+
});
|
|
5049
|
+
fields.push({
|
|
5050
|
+
id: 'f1',
|
|
5051
|
+
name: 'f1',
|
|
5052
|
+
format: 'html',
|
|
5053
|
+
display: 'right',
|
|
5054
|
+
minWidth: '30px',
|
|
5055
|
+
});
|
|
5056
|
+
let transformedData = [];
|
|
5057
|
+
for (let key in data) {
|
|
5058
|
+
if (data.hasOwnProperty(key)) {
|
|
5059
|
+
transformedData.push({
|
|
5060
|
+
'f0': key,
|
|
5061
|
+
'f1': data[key],
|
|
5062
|
+
});
|
|
5063
|
+
}
|
|
5064
|
+
}
|
|
5065
|
+
rt.data = transformedData;
|
|
5066
|
+
}
|
|
5067
|
+
rt.fields = fields;
|
|
5068
|
+
}
|
|
5069
|
+
return rt;
|
|
5070
|
+
}, ...(ngDevMode ? [{ debugName: "rawTable" }] : /* istanbul ignore next */ []));
|
|
5071
|
+
effect(() => {
|
|
5072
|
+
const s = this.settings();
|
|
5073
|
+
if (s.collapsed !== undefined) {
|
|
5074
|
+
this.isCollapsed.set(s.collapsed);
|
|
5075
|
+
}
|
|
5076
|
+
});
|
|
5077
|
+
effect(() => {
|
|
5078
|
+
const url = this.settings().url;
|
|
5079
|
+
if (url) {
|
|
5080
|
+
this.loadData();
|
|
5081
|
+
}
|
|
5082
|
+
});
|
|
5083
|
+
}
|
|
5084
|
+
toggleCollapse() {
|
|
5085
|
+
this.isCollapsed.update(v => !v);
|
|
5086
|
+
}
|
|
5087
|
+
loadData() {
|
|
5088
|
+
this.loading.set(true);
|
|
5089
|
+
this.errorMsg.set('');
|
|
5090
|
+
this.dataService.post(this.settings().url, null)
|
|
5091
|
+
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
5092
|
+
.subscribe({
|
|
5093
|
+
next: (res) => {
|
|
5094
|
+
this._data.set(res.data ?? res);
|
|
5095
|
+
this.loading.set(false);
|
|
5096
|
+
},
|
|
5097
|
+
error: (err) => {
|
|
5098
|
+
this.errorMsg.set(err.error?.error || 'Fehler beim Laden');
|
|
5099
|
+
this.loading.set(false);
|
|
5100
|
+
}
|
|
5101
|
+
});
|
|
5102
|
+
}
|
|
5103
|
+
reload() {
|
|
5104
|
+
if (this.loading())
|
|
5105
|
+
return;
|
|
5106
|
+
this.loadData();
|
|
5107
|
+
}
|
|
5108
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5109
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriCardComponent, isStandalone: true, selector: "xiri-card", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header>\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title [class]=\"{hasHeaderSub: settings().headerSub}\">{{ settings().header }}</mat-card-title>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t\t@if (settings().buttonsTop) {\n\t\t\t<xiri-buttonline [settings]=\"settings().buttonsTop\"></xiri-buttonline>\n\t\t}\n\t\t@if (settings().collapsible) {\n\t\t\t<button mat-icon-button (click)=\"toggleCollapse()\" class=\"collapse-btn\" aria-label=\"Auf-/Zuklappen\">\n\t\t\t\t<mat-icon>{{ isCollapsed() ? 'expand_more' : 'expand_less' }}</mat-icon>\n\t\t\t</button>\n\t\t}\n\t\t@if (settings().reload && settings().url) {\n\t\t\t<button mat-icon-button (click)=\"reload()\" [disabled]=\"loading()\" class=\"reload-btn\" aria-label=\"Neu laden\">\n\t\t\t\t<mat-icon [class.spinning]=\"loading()\">autorenew</mat-icon>\n\t\t\t</button>\n\t\t}\n\t</mat-card-header>\n\t<div class=\"collapse-wrapper\" [class.collapsed]=\"isCollapsed()\">\n\t\t<div class=\"collapse-inner\">\n\t\t\t@if (loading() && !cardData()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<xiri-skeleton type=\"table-row\" [columns]=\"2\" [lines]=\"3\"></xiri-skeleton>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else if (errorMsg()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<div class=\"load-error\">{{ errorMsg() }}</div>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else if (hasComponents()) {\n\t\t\t\t<mat-card-content class=\"hasComponents\" [style.--xiri-card-padding]=\"componentsPadding()\">\n\t\t\t\t\t<xiri-dyncomponent [data]=\"settings().components!\" class=\"xrow\"></xiri-dyncomponent>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else {\n\t\t\t\t<mat-card-content class=\"hasTable\" [style.max-height]=\"settings().maxHeight || '50vh'\">\n\t\t\t\t\t@if (rawTable()) {\n\t\t\t\t\t\t<xiri-raw-table [settings]=\"rawTable()!\"></xiri-raw-table>\n\t\t\t\t\t}\n\t\t\t\t</mat-card-content>\n\t\t\t}\n\t\t\t@if (settings().buttonsBottom) {\n\t\t\t\t<mat-card-actions align=\"end\">\n\t\t\t\t\t<xiri-buttonline [settings]=\"settings().buttonsBottom\"></xiri-buttonline>\n\t\t\t\t</mat-card-actions>\n\t\t\t}\n\t\t</div>\n\t</div>\n</mat-card>\n", styles: [":host{animation:fadeIn var(--xiri-duration-fast) var(--xiri-easing-standard)}.collapse-wrapper{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--xiri-duration-normal) var(--xiri-easing-standard)}.collapse-wrapper.collapsed{grid-template-rows:0fr}.collapse-inner{overflow:hidden;min-height:0}.spinning{animation:spin 1s linear infinite}.card{overflow:hidden}.card mat-card-header{margin:0 0 2px;box-shadow:var(--xiri-shadow-xs);padding:4px 8px 4px 16px;align-items:center;min-height:32px}.card mat-card-header .header-image{margin-bottom:0;width:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);align-items:center;display:flex}.card mat-card-header .header-image mat-icon{font-size:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);width:var(--xiri-icon-size-lg);color:var(--primary)}.card mat-card-header mat-card-title.hasHeaderSub{padding-top:2px}.card mat-card-header mat-card-subtitle{padding-bottom:2px}.card mat-card-header xiri-buttonline{display:flex;justify-content:flex-end;flex:1}.card mat-card-header xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-header xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .collapse-btn{margin-left:auto;width:32px;height:32px;padding:4px}.card .collapse-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .reload-btn{width:32px;height:32px;padding:4px}.card .reload-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card mat-card-content{padding:0}.card mat-card-content.hasTable{overflow-x:auto}.card mat-card-content.hasComponents{padding:var(--xiri-card-padding, var(--xiri-spacing-md, 16px))}@media(max-width:575.98px){.card mat-card-content.hasComponents{padding:8px}}.card mat-card-content xiri-skeleton{padding:16px}.card mat-card-content .load-error{padding:16px;color:var(--error, #B3261E)}.card mat-card-actions{padding:4px 8px;min-height:32px;border-top:1px solid var(--outline-variant, rgba(0, 0, 0, .12))}.card mat-card-actions xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-actions xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}\n"], dependencies: [{ kind: "component", type: i0.forwardRef(() => MatCard), selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: i0.forwardRef(() => MatCardHeader), selector: "mat-card-header" }, { kind: "directive", type: i0.forwardRef(() => MatCardAvatar), selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: i0.forwardRef(() => MatIcon), selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i0.forwardRef(() => MatIconButton), selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: i0.forwardRef(() => MatCardTitle), selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: i0.forwardRef(() => MatCardSubtitle), selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i0.forwardRef(() => XiriButtonlineComponent), selector: "xiri-buttonline", inputs: ["settings", "disabled", "filterData"], outputs: ["result"] }, { kind: "directive", type: i0.forwardRef(() => MatCardContent), selector: "mat-card-content" }, { kind: "component", type: i0.forwardRef(() => XiriRawTableComponent), selector: "xiri-raw-table", inputs: ["settings"] }, { kind: "component", type: i0.forwardRef(() => XiriSkeletonComponent), selector: "xiri-skeleton", inputs: ["type", "width", "height", "lines", "columns", "animate", "fill"] }, { kind: "directive", type: i0.forwardRef(() => MatCardActions), selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "component", type: i0.forwardRef(() => XiriDynComponentComponent), selector: "xiri-dyncomponent", inputs: ["data", "filterData", "dyncomponent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5110
|
+
}
|
|
5111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCardComponent, decorators: [{
|
|
5112
|
+
type: Component,
|
|
5113
|
+
args: [{ selector: 'xiri-card', imports: [MatCard,
|
|
5114
|
+
MatCardHeader,
|
|
5115
|
+
MatCardAvatar,
|
|
5116
|
+
MatIcon,
|
|
5117
|
+
MatIconButton,
|
|
5118
|
+
MatCardTitle,
|
|
5119
|
+
MatCardSubtitle,
|
|
5120
|
+
XiriButtonlineComponent,
|
|
5121
|
+
MatCardContent,
|
|
5122
|
+
XiriRawTableComponent,
|
|
5123
|
+
XiriSkeletonComponent,
|
|
5124
|
+
MatCardActions,
|
|
5125
|
+
forwardRef(() => XiriDynComponentComponent)], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header>\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title [class]=\"{hasHeaderSub: settings().headerSub}\">{{ settings().header }}</mat-card-title>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t\t@if (settings().buttonsTop) {\n\t\t\t<xiri-buttonline [settings]=\"settings().buttonsTop\"></xiri-buttonline>\n\t\t}\n\t\t@if (settings().collapsible) {\n\t\t\t<button mat-icon-button (click)=\"toggleCollapse()\" class=\"collapse-btn\" aria-label=\"Auf-/Zuklappen\">\n\t\t\t\t<mat-icon>{{ isCollapsed() ? 'expand_more' : 'expand_less' }}</mat-icon>\n\t\t\t</button>\n\t\t}\n\t\t@if (settings().reload && settings().url) {\n\t\t\t<button mat-icon-button (click)=\"reload()\" [disabled]=\"loading()\" class=\"reload-btn\" aria-label=\"Neu laden\">\n\t\t\t\t<mat-icon [class.spinning]=\"loading()\">autorenew</mat-icon>\n\t\t\t</button>\n\t\t}\n\t</mat-card-header>\n\t<div class=\"collapse-wrapper\" [class.collapsed]=\"isCollapsed()\">\n\t\t<div class=\"collapse-inner\">\n\t\t\t@if (loading() && !cardData()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<xiri-skeleton type=\"table-row\" [columns]=\"2\" [lines]=\"3\"></xiri-skeleton>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else if (errorMsg()) {\n\t\t\t\t<mat-card-content>\n\t\t\t\t\t<div class=\"load-error\">{{ errorMsg() }}</div>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else if (hasComponents()) {\n\t\t\t\t<mat-card-content class=\"hasComponents\" [style.--xiri-card-padding]=\"componentsPadding()\">\n\t\t\t\t\t<xiri-dyncomponent [data]=\"settings().components!\" class=\"xrow\"></xiri-dyncomponent>\n\t\t\t\t</mat-card-content>\n\t\t\t} @else {\n\t\t\t\t<mat-card-content class=\"hasTable\" [style.max-height]=\"settings().maxHeight || '50vh'\">\n\t\t\t\t\t@if (rawTable()) {\n\t\t\t\t\t\t<xiri-raw-table [settings]=\"rawTable()!\"></xiri-raw-table>\n\t\t\t\t\t}\n\t\t\t\t</mat-card-content>\n\t\t\t}\n\t\t\t@if (settings().buttonsBottom) {\n\t\t\t\t<mat-card-actions align=\"end\">\n\t\t\t\t\t<xiri-buttonline [settings]=\"settings().buttonsBottom\"></xiri-buttonline>\n\t\t\t\t</mat-card-actions>\n\t\t\t}\n\t\t</div>\n\t</div>\n</mat-card>\n", styles: [":host{animation:fadeIn var(--xiri-duration-fast) var(--xiri-easing-standard)}.collapse-wrapper{display:grid;grid-template-rows:1fr;transition:grid-template-rows var(--xiri-duration-normal) var(--xiri-easing-standard)}.collapse-wrapper.collapsed{grid-template-rows:0fr}.collapse-inner{overflow:hidden;min-height:0}.spinning{animation:spin 1s linear infinite}.card{overflow:hidden}.card mat-card-header{margin:0 0 2px;box-shadow:var(--xiri-shadow-xs);padding:4px 8px 4px 16px;align-items:center;min-height:32px}.card mat-card-header .header-image{margin-bottom:0;width:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);align-items:center;display:flex}.card mat-card-header .header-image mat-icon{font-size:var(--xiri-icon-size-lg);height:var(--xiri-icon-size-lg);width:var(--xiri-icon-size-lg);color:var(--primary)}.card mat-card-header mat-card-title.hasHeaderSub{padding-top:2px}.card mat-card-header mat-card-subtitle{padding-bottom:2px}.card mat-card-header xiri-buttonline{display:flex;justify-content:flex-end;flex:1}.card mat-card-header xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-header xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .collapse-btn{margin-left:auto;width:32px;height:32px;padding:4px}.card .collapse-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card .reload-btn{width:32px;height:32px;padding:4px}.card .reload-btn mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}.card mat-card-content{padding:0}.card mat-card-content.hasTable{overflow-x:auto}.card mat-card-content.hasComponents{padding:var(--xiri-card-padding, var(--xiri-spacing-md, 16px))}@media(max-width:575.98px){.card mat-card-content.hasComponents{padding:8px}}.card mat-card-content xiri-skeleton{padding:16px}.card mat-card-content .load-error{padding:16px;color:var(--error, #B3261E)}.card mat-card-actions{padding:4px 8px;min-height:32px;border-top:1px solid var(--outline-variant, rgba(0, 0, 0, .12))}.card mat-card-actions xiri-buttonline ::ng-deep button{width:32px;height:32px;padding:4px}.card mat-card-actions xiri-buttonline ::ng-deep button mat-icon{font-size:var(--xiri-icon-size-md);width:var(--xiri-icon-size-md);height:var(--xiri-icon-size-md)}\n"] }]
|
|
5126
|
+
}], ctorParameters: () => [], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5127
|
+
|
|
5099
5128
|
class XiriAlertComponent {
|
|
5100
5129
|
constructor() {
|
|
5101
5130
|
this.dialogRef = inject(MatDialogRef);
|
|
@@ -5155,13 +5184,14 @@ class XiriMultiprogressComponent {
|
|
|
5155
5184
|
constructor() {
|
|
5156
5185
|
this.isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : /* istanbul ignore next */ []));
|
|
5157
5186
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5187
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5158
5188
|
}
|
|
5159
5189
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriMultiprogressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5160
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriMultiprogressComponent, isStandalone: true, selector: "xiri-multiprogress", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<
|
|
5190
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriMultiprogressComponent, isStandalone: true, selector: "xiri-multiprogress", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, ngImport: i0, template: "@if (compact()) {\n\t<div class=\"card xiri-multiprogress-flat\">\n\t\t<div class=\"header align-items-center\">\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<span class=\"title\">{{ settings().header }}</span>\n\t\t\t@if (settings().show && settings().data.length > settings().show) {\n\t\t\t\t<span class=\"open\">\n\t\t\t\t\t<button mat-icon-button class=\"d-btn\" (click)=\"isOpen.set(!isOpen())\" [attr.aria-label]=\"isOpen() ? 'Weniger anzeigen' : 'Mehr anzeigen'\" [attr.aria-expanded]=\"isOpen()\">\n\t\t\t\t\t\t@if (isOpen()) { <mat-icon>expand_less</mat-icon> } @else { <mat-icon>expand_more</mat-icon> }\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"xiri-multiprogress-content\">\n\t\t\t@for (item of settings().data | slice:0:(isOpen() ? 999 : settings().show); track item) {\n\t\t\t\t<div class=\"item\">\n\t\t\t\t\t<div class=\"line\">\n\t\t\t\t\t\t<span class=\"text\">{{ item.text }}</span>\n\t\t\t\t\t\t<span class=\"value\">{{ item.value }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<mat-progress-bar mode=\"determinate\" [class]=\"item.color\" [value]=\"item.progress\" class=\"bar\"></mat-progress-bar>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n} @else {\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<div class=\"header align-items-center\">\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<span class=\"title\">{{ settings().header }}</span>\n\t\t\t@if (settings().show && settings().data.length > settings().show) {\n\t\t\t\t<span class=\"open\">\n\t\t\t\t\t<button mat-icon-button class=\"d-btn\" (click)=\"isOpen.set(!isOpen())\" [attr.aria-label]=\"isOpen() ? 'Weniger anzeigen' : 'Mehr anzeigen'\" [attr.aria-expanded]=\"isOpen()\">\n\t\t\t\t\t\t@if (isOpen()) { <mat-icon>expand_less</mat-icon> } @else { <mat-icon>expand_more</mat-icon> }\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t}\n\t\t</div>\n\t\t<mat-card-content>\n\t\t\t@for (item of settings().data | slice:0:(isOpen() ? 999 : settings().show); track item) {\n\t\t\t\t<div class=\"item\">\n\t\t\t\t\t<div class=\"line\">\n\t\t\t\t\t\t<span class=\"text\">{{ item.text }}</span>\n\t\t\t\t\t\t<span class=\"value\">{{ item.value }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<mat-progress-bar mode=\"determinate\" [class]=\"item.color\" [value]=\"item.progress\" class=\"bar\"></mat-progress-bar>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</mat-card-content>\n\t</mat-card>\n}\n", styles: ["mat-card.card{padding:20px}mat-card-content{padding:0}:host(.compact) .xiri-multiprogress-flat{background:transparent;box-shadow:none;padding:0}.header{margin-top:0;margin-bottom:12px;display:flex;justify-content:space-between}.header .title{font-size:var(--xiri-font-size-title);font-weight:500}.item .line{display:flex;justify-content:space-between;padding-bottom:.3rem}.item .line .text{font-weight:400;word-break:break-all}.item .line .value{font-size:var(--xiri-font-size-label);padding-left:1rem}.item .bar{transform:scaleY(1.5);transform-origin:bottom}.item+.item{padding-top:.8rem}\n"], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "pipe", type: SlicePipe, name: "slice" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5161
5191
|
}
|
|
5162
5192
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriMultiprogressComponent, decorators: [{
|
|
5163
5193
|
type: Component,
|
|
5164
|
-
args: [{ selector: 'xiri-multiprogress', imports: [MatCard, MatCardAvatar, MatIcon, MatIconButton, MatCardContent, MatProgressBar, SlicePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
5194
|
+
args: [{ selector: 'xiri-multiprogress', imports: [MatCard, MatCardAvatar, MatIcon, MatIconButton, MatCardContent, MatProgressBar, SlicePipe], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.compact]': 'compact()' }, template: "@if (compact()) {\n\t<div class=\"card xiri-multiprogress-flat\">\n\t\t<div class=\"header align-items-center\">\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<span class=\"title\">{{ settings().header }}</span>\n\t\t\t@if (settings().show && settings().data.length > settings().show) {\n\t\t\t\t<span class=\"open\">\n\t\t\t\t\t<button mat-icon-button class=\"d-btn\" (click)=\"isOpen.set(!isOpen())\" [attr.aria-label]=\"isOpen() ? 'Weniger anzeigen' : 'Mehr anzeigen'\" [attr.aria-expanded]=\"isOpen()\">\n\t\t\t\t\t\t@if (isOpen()) { <mat-icon>expand_less</mat-icon> } @else { <mat-icon>expand_more</mat-icon> }\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t}\n\t\t</div>\n\t\t<div class=\"xiri-multiprogress-content\">\n\t\t\t@for (item of settings().data | slice:0:(isOpen() ? 999 : settings().show); track item) {\n\t\t\t\t<div class=\"item\">\n\t\t\t\t\t<div class=\"line\">\n\t\t\t\t\t\t<span class=\"text\">{{ item.text }}</span>\n\t\t\t\t\t\t<span class=\"value\">{{ item.value }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<mat-progress-bar mode=\"determinate\" [class]=\"item.color\" [value]=\"item.progress\" class=\"bar\"></mat-progress-bar>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</div>\n\t</div>\n} @else {\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<div class=\"header align-items-center\">\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<span class=\"title\">{{ settings().header }}</span>\n\t\t\t@if (settings().show && settings().data.length > settings().show) {\n\t\t\t\t<span class=\"open\">\n\t\t\t\t\t<button mat-icon-button class=\"d-btn\" (click)=\"isOpen.set(!isOpen())\" [attr.aria-label]=\"isOpen() ? 'Weniger anzeigen' : 'Mehr anzeigen'\" [attr.aria-expanded]=\"isOpen()\">\n\t\t\t\t\t\t@if (isOpen()) { <mat-icon>expand_less</mat-icon> } @else { <mat-icon>expand_more</mat-icon> }\n\t\t\t\t\t</button>\n\t\t\t\t</span>\n\t\t\t}\n\t\t</div>\n\t\t<mat-card-content>\n\t\t\t@for (item of settings().data | slice:0:(isOpen() ? 999 : settings().show); track item) {\n\t\t\t\t<div class=\"item\">\n\t\t\t\t\t<div class=\"line\">\n\t\t\t\t\t\t<span class=\"text\">{{ item.text }}</span>\n\t\t\t\t\t\t<span class=\"value\">{{ item.value }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<mat-progress-bar mode=\"determinate\" [class]=\"item.color\" [value]=\"item.progress\" class=\"bar\"></mat-progress-bar>\n\t\t\t\t</div>\n\t\t\t}\n\t\t</mat-card-content>\n\t</mat-card>\n}\n", styles: ["mat-card.card{padding:20px}mat-card-content{padding:0}:host(.compact) .xiri-multiprogress-flat{background:transparent;box-shadow:none;padding:0}.header{margin-top:0;margin-bottom:12px;display:flex;justify-content:space-between}.header .title{font-size:var(--xiri-font-size-title);font-weight:500}.item .line{display:flex;justify-content:space-between;padding-bottom:.3rem}.item .line .text{font-weight:400;word-break:break-all}.item .line .value{font-size:var(--xiri-font-size-label);padding-left:1rem}.item .bar{transform:scaleY(1.5);transform-origin:bottom}.item+.item{padding-top:.8rem}\n"] }]
|
|
5165
5195
|
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5166
5196
|
|
|
5167
5197
|
var multiprogress_component = /*#__PURE__*/Object.freeze({
|
|
@@ -5173,9 +5203,10 @@ class XiriImagetextComponent {
|
|
|
5173
5203
|
constructor() {
|
|
5174
5204
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5175
5205
|
this.loading = signal(true, ...(ngDevMode ? [{ debugName: "loading" }] : /* istanbul ignore next */ []));
|
|
5206
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5176
5207
|
}
|
|
5177
5208
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriImagetextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5178
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriImagetextComponent, isStandalone: true, selector: "xiri-imagetext", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header class=\"align-items-center\">\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t</mat-card-header>\n\t<mat-card-content>\n\t\t<mat-spinner [hidden]=\"!loading()\" diameter=\"30\"></mat-spinner>\n\t\t<img [hidden]=\"loading()\" (load)=\"loading.set(false)\" [src]=\"settings().url\" [alt]=\"settings().info\" id=\"ximg\"/>\n\t</mat-card-content>\n</mat-card
|
|
5209
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriImagetextComponent, isStandalone: true, selector: "xiri-imagetext", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, ngImport: i0, template: "@if (compact()) {\n\t<div class=\"card xiri-imagetext-flat\">\n\t\t@if (settings().header || settings().headerIcon) {\n\t\t\t<div class=\"xiri-imagetext-header align-items-center\">\n\t\t\t\t@if (settings().headerIcon) {\n\t\t\t\t\t<div class=\"header-image\">\n\t\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"header-text\">\n\t\t\t\t\t@if (settings().header) {\n\t\t\t\t\t\t<div class=\"header-title\">{{ settings().header }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t@if (settings().headerSub) {\n\t\t\t\t\t\t<div class=\"header-sub\">{{ settings().headerSub }}</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"xiri-imagetext-content\">\n\t\t\t<mat-spinner [hidden]=\"!loading()\" diameter=\"30\"></mat-spinner>\n\t\t\t<img [hidden]=\"loading()\" (load)=\"loading.set(false)\" [src]=\"settings().url\" [alt]=\"settings().info\" id=\"ximg\"/>\n\t\t</div>\n\t</div>\n} @else {\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-header class=\"align-items-center\">\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (settings().header) {\n\t\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t\t}\n\t\t\t@if (settings().headerSub) {\n\t\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t\t}\n\t\t</mat-card-header>\n\t\t<mat-card-content>\n\t\t\t<mat-spinner [hidden]=\"!loading()\" diameter=\"30\"></mat-spinner>\n\t\t\t<img [hidden]=\"loading()\" (load)=\"loading.set(false)\" [src]=\"settings().url\" [alt]=\"settings().info\" id=\"ximg\"/>\n\t\t</mat-card-content>\n\t</mat-card>\n}\n", styles: [".card{margin-bottom:2rem;text-align:center}#ximg{max-width:100%}[hidden]{display:none!important}:host(.compact) .xiri-imagetext-flat{background:transparent;box-shadow:none;padding:0;margin-bottom:0}:host(.compact) .xiri-imagetext-header{display:flex;gap:var(--xiri-spacing-sm, 8px);margin-bottom:var(--xiri-spacing-sm, 8px)}:host(.compact) .header-title{font-size:var(--xiri-font-size-body);font-weight:500}:host(.compact) .header-sub{font-size:var(--xiri-font-size-label);color:var(--mat-sys-on-surface-variant, #555)}\n"], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "component", type: MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "directive", type: MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5179
5210
|
}
|
|
5180
5211
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriImagetextComponent, decorators: [{
|
|
5181
5212
|
type: Component,
|
|
@@ -5186,7 +5217,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
5186
5217
|
MatCardTitle,
|
|
5187
5218
|
MatCardSubtitle,
|
|
5188
5219
|
MatCardContent,
|
|
5189
|
-
MatProgressSpinner], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t<mat-card-header class=\"align-items-center\">\n\t\t@if (settings().headerIcon) {\n\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t</div>\n\t\t}\n\t\t@if (settings().header) {\n\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t}\n\t\t@if (settings().headerSub) {\n\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t}\n\t</mat-card-header>\n\t<mat-card-content>\n\t\t<mat-spinner [hidden]=\"!loading()\" diameter=\"30\"></mat-spinner>\n\t\t<img [hidden]=\"loading()\" (load)=\"loading.set(false)\" [src]=\"settings().url\" [alt]=\"settings().info\" id=\"ximg\"/>\n\t</mat-card-content>\n</mat-card
|
|
5220
|
+
MatProgressSpinner], changeDetection: ChangeDetectionStrategy.OnPush, host: { '[class.compact]': 'compact()' }, template: "@if (compact()) {\n\t<div class=\"card xiri-imagetext-flat\">\n\t\t@if (settings().header || settings().headerIcon) {\n\t\t\t<div class=\"xiri-imagetext-header align-items-center\">\n\t\t\t\t@if (settings().headerIcon) {\n\t\t\t\t\t<div class=\"header-image\">\n\t\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t\t</div>\n\t\t\t\t}\n\t\t\t\t<div class=\"header-text\">\n\t\t\t\t\t@if (settings().header) {\n\t\t\t\t\t\t<div class=\"header-title\">{{ settings().header }}</div>\n\t\t\t\t\t}\n\t\t\t\t\t@if (settings().headerSub) {\n\t\t\t\t\t\t<div class=\"header-sub\">{{ settings().headerSub }}</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t}\n\t\t<div class=\"xiri-imagetext-content\">\n\t\t\t<mat-spinner [hidden]=\"!loading()\" diameter=\"30\"></mat-spinner>\n\t\t\t<img [hidden]=\"loading()\" (load)=\"loading.set(false)\" [src]=\"settings().url\" [alt]=\"settings().info\" id=\"ximg\"/>\n\t\t</div>\n\t</div>\n} @else {\n\t<mat-card class=\"card mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-header class=\"align-items-center\">\n\t\t\t@if (settings().headerIcon) {\n\t\t\t\t<div mat-card-avatar class=\"header-image\">\n\t\t\t\t\t<mat-icon [class]=\"settings().headerIconColor || 'primary'\">{{ settings().headerIcon }}</mat-icon>\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t@if (settings().header) {\n\t\t\t\t<mat-card-title>{{ settings().header }}</mat-card-title>\n\t\t\t}\n\t\t\t@if (settings().headerSub) {\n\t\t\t\t<mat-card-subtitle>{{ settings().headerSub }}</mat-card-subtitle>\n\t\t\t}\n\t\t</mat-card-header>\n\t\t<mat-card-content>\n\t\t\t<mat-spinner [hidden]=\"!loading()\" diameter=\"30\"></mat-spinner>\n\t\t\t<img [hidden]=\"loading()\" (load)=\"loading.set(false)\" [src]=\"settings().url\" [alt]=\"settings().info\" id=\"ximg\"/>\n\t\t</mat-card-content>\n\t</mat-card>\n}\n", styles: [".card{margin-bottom:2rem;text-align:center}#ximg{max-width:100%}[hidden]{display:none!important}:host(.compact) .xiri-imagetext-flat{background:transparent;box-shadow:none;padding:0;margin-bottom:0}:host(.compact) .xiri-imagetext-header{display:flex;gap:var(--xiri-spacing-sm, 8px);margin-bottom:var(--xiri-spacing-sm, 8px)}:host(.compact) .header-title{font-size:var(--xiri-font-size-body);font-weight:500}:host(.compact) .header-sub{font-size:var(--xiri-font-size-label);color:var(--mat-sys-on-surface-variant, #555)}\n"] }]
|
|
5190
5221
|
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5191
5222
|
|
|
5192
5223
|
var imagetext_component = /*#__PURE__*/Object.freeze({
|
|
@@ -5299,38 +5330,29 @@ var timeline_component = /*#__PURE__*/Object.freeze({
|
|
|
5299
5330
|
XiriTimelineComponent: XiriTimelineComponent
|
|
5300
5331
|
});
|
|
5301
5332
|
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
|
|
5306
|
-
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
|
|
5313
|
-
|
|
5314
|
-
|
|
5315
|
-
|
|
5316
|
-
|
|
5317
|
-
gray: '#9e9e9e',
|
|
5318
|
-
lightgray: '#cfcfcf',
|
|
5319
|
-
darkgray: '#616161',
|
|
5320
|
-
white: '#ffffff',
|
|
5321
|
-
black: '#000000',
|
|
5322
|
-
inherit: 'currentColor'
|
|
5323
|
-
};
|
|
5324
|
-
function resolveColor(color, fallback = '#8b5cf6') {
|
|
5325
|
-
if (!color)
|
|
5326
|
-
return fallback;
|
|
5327
|
-
return COLOR_CSS_VAR[color] ?? fallback;
|
|
5328
|
-
}
|
|
5329
|
-
class XiriBarChartComponent {
|
|
5333
|
+
/**
|
|
5334
|
+
* `xiri-echarts-host` — shared echarts plumbing for all chart components.
|
|
5335
|
+
*
|
|
5336
|
+
* Handles lazy `import('echarts')`, init / setOption / dispose, ResizeObserver,
|
|
5337
|
+
* the optional mat-card surface (with header + compact mode), and a flat
|
|
5338
|
+
* variant when nested inside another card.
|
|
5339
|
+
*
|
|
5340
|
+
* Specialized chart components (`xiri-barchart`, `xiri-linechart`, …) build
|
|
5341
|
+
* a typed echarts option from their settings and feed it via the `option`
|
|
5342
|
+
* input. Each re-emit of `option` re-renders the chart with `setOption(option, true)`.
|
|
5343
|
+
*
|
|
5344
|
+
* Compact-Mode strips the outer mat-card so the chart sits flat inside an
|
|
5345
|
+
* outer xiri-card without card-in-card visuals.
|
|
5346
|
+
*/
|
|
5347
|
+
class XiriEchartsHostComponent {
|
|
5330
5348
|
constructor() {
|
|
5331
|
-
this.
|
|
5332
|
-
this.
|
|
5333
|
-
this.
|
|
5349
|
+
this.option = input.required(...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
5350
|
+
this.compact = input(false, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5351
|
+
this.title = input(undefined, ...(ngDevMode ? [{ debugName: "title" }] : /* istanbul ignore next */ []));
|
|
5352
|
+
this.headerIcon = input(undefined, ...(ngDevMode ? [{ debugName: "headerIcon" }] : /* istanbul ignore next */ []));
|
|
5353
|
+
this.headerIconColor = input(undefined, ...(ngDevMode ? [{ debugName: "headerIconColor" }] : /* istanbul ignore next */ []));
|
|
5354
|
+
this.chartHeight = input('200px', ...(ngDevMode ? [{ debugName: "chartHeight" }] : /* istanbul ignore next */ []));
|
|
5355
|
+
this.chartHostRef = viewChild.required('chartHost');
|
|
5334
5356
|
this.zone = inject(NgZone);
|
|
5335
5357
|
this.destroyRef = inject(DestroyRef);
|
|
5336
5358
|
this.chart = null;
|
|
@@ -5338,10 +5360,10 @@ class XiriBarChartComponent {
|
|
|
5338
5360
|
this.resizeObserver = null;
|
|
5339
5361
|
this.loadError = signal(null, ...(ngDevMode ? [{ debugName: "loadError" }] : /* istanbul ignore next */ []));
|
|
5340
5362
|
this.error = this.loadError.asReadonly();
|
|
5363
|
+
this.hasHeader = computed(() => !!(this.title() || this.headerIcon()), ...(ngDevMode ? [{ debugName: "hasHeader" }] : /* istanbul ignore next */ []));
|
|
5341
5364
|
effect(() => {
|
|
5342
|
-
//
|
|
5343
|
-
this.
|
|
5344
|
-
this.settings();
|
|
5365
|
+
// Re-render whenever the option changes.
|
|
5366
|
+
this.option();
|
|
5345
5367
|
if (this.chart) {
|
|
5346
5368
|
this.render();
|
|
5347
5369
|
}
|
|
@@ -5351,15 +5373,15 @@ class XiriBarChartComponent {
|
|
|
5351
5373
|
try {
|
|
5352
5374
|
this.echarts = await import('echarts');
|
|
5353
5375
|
}
|
|
5354
|
-
catch
|
|
5376
|
+
catch {
|
|
5355
5377
|
this.loadError.set('echarts is not installed. Add `npm install echarts` to your app.');
|
|
5356
5378
|
return;
|
|
5357
5379
|
}
|
|
5358
5380
|
this.zone.runOutsideAngular(() => {
|
|
5359
|
-
this.chart = this.echarts.init(this.
|
|
5381
|
+
this.chart = this.echarts.init(this.chartHostRef().nativeElement);
|
|
5360
5382
|
this.render();
|
|
5361
5383
|
this.resizeObserver = new ResizeObserver(() => this.chart?.resize());
|
|
5362
|
-
this.resizeObserver.observe(this.
|
|
5384
|
+
this.resizeObserver.observe(this.chartHostRef().nativeElement);
|
|
5363
5385
|
});
|
|
5364
5386
|
this.destroyRef.onDestroy(() => this.dispose());
|
|
5365
5387
|
}
|
|
@@ -5375,22 +5397,86 @@ class XiriBarChartComponent {
|
|
|
5375
5397
|
render() {
|
|
5376
5398
|
if (!this.chart)
|
|
5377
5399
|
return;
|
|
5378
|
-
const
|
|
5379
|
-
|
|
5380
|
-
|
|
5381
|
-
|
|
5382
|
-
|
|
5383
|
-
|
|
5384
|
-
|
|
5385
|
-
|
|
5386
|
-
|
|
5387
|
-
|
|
5388
|
-
|
|
5389
|
-
|
|
5390
|
-
|
|
5391
|
-
|
|
5400
|
+
const opt = this.option();
|
|
5401
|
+
if (!opt)
|
|
5402
|
+
return;
|
|
5403
|
+
this.chart.setOption(opt, true);
|
|
5404
|
+
}
|
|
5405
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriEchartsHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5406
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.2", type: XiriEchartsHostComponent, isStandalone: true, selector: "xiri-echarts-host", inputs: { option: { classPropertyName: "option", publicName: "option", isSignal: true, isRequired: true, transformFunction: null }, compact: { classPropertyName: "compact", publicName: "compact", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, headerIcon: { classPropertyName: "headerIcon", publicName: "headerIcon", isSignal: true, isRequired: false, transformFunction: null }, headerIconColor: { classPropertyName: "headerIconColor", publicName: "headerIconColor", isSignal: true, isRequired: false, transformFunction: null }, chartHeight: { classPropertyName: "chartHeight", publicName: "chartHeight", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.compact": "compact()" } }, viewQueries: [{ propertyName: "chartHostRef", first: true, predicate: ["chartHost"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (compact()) {\n\t<div class=\"xiri-echarts xiri-echarts-flat\">\n\t\t@if (hasHeader()) {\n\t\t\t<div class=\"xiri-echarts-header\">\n\t\t\t\t@if (headerIcon()) {\n\t\t\t\t\t<mat-icon [class]=\"headerIconColor() || 'primary'\">{{ headerIcon() }}</mat-icon>\n\t\t\t\t}\n\t\t\t\t@if (title()) {\n\t\t\t\t\t<div class=\"xiri-echarts-title\">{{ title() }}</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t\t<div #chartHost class=\"xiri-echarts-host\" [style.height]=\"chartHeight()\"></div>\n\t\t@if (error()) {\n\t\t\t<div class=\"xiri-echarts-error\">{{ error() }}</div>\n\t\t}\n\t</div>\n} @else {\n\t<mat-card class=\"xiri-echarts mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-content>\n\t\t\t@if (hasHeader()) {\n\t\t\t\t<div class=\"xiri-echarts-header\">\n\t\t\t\t\t@if (headerIcon()) {\n\t\t\t\t\t\t<mat-icon [class]=\"headerIconColor() || 'primary'\">{{ headerIcon() }}</mat-icon>\n\t\t\t\t\t}\n\t\t\t\t\t@if (title()) {\n\t\t\t\t\t\t<div class=\"xiri-echarts-title\">{{ title() }}</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div #chartHost class=\"xiri-echarts-host\" [style.height]=\"chartHeight()\"></div>\n\t\t\t@if (error()) {\n\t\t\t\t<div class=\"xiri-echarts-error\">{{ error() }}</div>\n\t\t\t}\n\t\t</mat-card-content>\n\t</mat-card>\n}\n", styles: [".xiri-echarts{height:100%}.xiri-echarts .xiri-echarts-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.xiri-echarts .xiri-echarts-header mat-icon{font-size:var(--xiri-icon-size-md, 24px);width:var(--xiri-icon-size-md, 24px);height:var(--xiri-icon-size-md, 24px)}.xiri-echarts .xiri-echarts-title{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant, #555)}.xiri-echarts .xiri-echarts-host{width:100%;min-height:160px}.xiri-echarts .xiri-echarts-error{font-size:12px;color:var(--mat-sys-error, #b00020);padding:8px 0}.xiri-echarts-flat{background:transparent;box-shadow:none;padding:0}\n"], dependencies: [{ kind: "component", type: MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: MatCardContent, selector: "mat-card-content" }, { kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
5407
|
+
}
|
|
5408
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriEchartsHostComponent, decorators: [{
|
|
5409
|
+
type: Component,
|
|
5410
|
+
args: [{ selector: 'xiri-echarts-host', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, imports: [MatCard, MatCardContent, MatIcon], host: { '[class.compact]': 'compact()' }, template: "@if (compact()) {\n\t<div class=\"xiri-echarts xiri-echarts-flat\">\n\t\t@if (hasHeader()) {\n\t\t\t<div class=\"xiri-echarts-header\">\n\t\t\t\t@if (headerIcon()) {\n\t\t\t\t\t<mat-icon [class]=\"headerIconColor() || 'primary'\">{{ headerIcon() }}</mat-icon>\n\t\t\t\t}\n\t\t\t\t@if (title()) {\n\t\t\t\t\t<div class=\"xiri-echarts-title\">{{ title() }}</div>\n\t\t\t\t}\n\t\t\t</div>\n\t\t}\n\t\t<div #chartHost class=\"xiri-echarts-host\" [style.height]=\"chartHeight()\"></div>\n\t\t@if (error()) {\n\t\t\t<div class=\"xiri-echarts-error\">{{ error() }}</div>\n\t\t}\n\t</div>\n} @else {\n\t<mat-card class=\"xiri-echarts mat-mdc-elevation-specific mat-elevation-z2\">\n\t\t<mat-card-content>\n\t\t\t@if (hasHeader()) {\n\t\t\t\t<div class=\"xiri-echarts-header\">\n\t\t\t\t\t@if (headerIcon()) {\n\t\t\t\t\t\t<mat-icon [class]=\"headerIconColor() || 'primary'\">{{ headerIcon() }}</mat-icon>\n\t\t\t\t\t}\n\t\t\t\t\t@if (title()) {\n\t\t\t\t\t\t<div class=\"xiri-echarts-title\">{{ title() }}</div>\n\t\t\t\t\t}\n\t\t\t\t</div>\n\t\t\t}\n\t\t\t<div #chartHost class=\"xiri-echarts-host\" [style.height]=\"chartHeight()\"></div>\n\t\t\t@if (error()) {\n\t\t\t\t<div class=\"xiri-echarts-error\">{{ error() }}</div>\n\t\t\t}\n\t\t</mat-card-content>\n\t</mat-card>\n}\n", styles: [".xiri-echarts{height:100%}.xiri-echarts .xiri-echarts-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.xiri-echarts .xiri-echarts-header mat-icon{font-size:var(--xiri-icon-size-md, 24px);width:var(--xiri-icon-size-md, 24px);height:var(--xiri-icon-size-md, 24px)}.xiri-echarts .xiri-echarts-title{font-size:14px;font-weight:500;color:var(--mat-sys-on-surface-variant, #555)}.xiri-echarts .xiri-echarts-host{width:100%;min-height:160px}.xiri-echarts .xiri-echarts-error{font-size:12px;color:var(--mat-sys-error, #b00020);padding:8px 0}.xiri-echarts-flat{background:transparent;box-shadow:none;padding:0}\n"] }]
|
|
5411
|
+
}], ctorParameters: () => [], propDecorators: { option: [{ type: i0.Input, args: [{ isSignal: true, alias: "option", required: true }] }], compact: [{ type: i0.Input, args: [{ isSignal: true, alias: "compact", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], headerIcon: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerIcon", required: false }] }], headerIconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "headerIconColor", required: false }] }], chartHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "chartHeight", required: false }] }], chartHostRef: [{ type: i0.ViewChild, args: ['chartHost', { isSignal: true }] }] } });
|
|
5412
|
+
|
|
5413
|
+
/**
|
|
5414
|
+
* Maps semantic XiriColor names to concrete CSS color values.
|
|
5415
|
+
*
|
|
5416
|
+
* Theme tokens use Material 3 system variables; extended tokens use
|
|
5417
|
+
* fixed brand colors that work both in light and dark themes.
|
|
5418
|
+
*/
|
|
5419
|
+
const COLOR_CSS_VAR = {
|
|
5420
|
+
primary: 'var(--mat-sys-primary)',
|
|
5421
|
+
secondary: 'var(--mat-sys-secondary)',
|
|
5422
|
+
tertiary: 'var(--mat-sys-tertiary)',
|
|
5423
|
+
accent: 'var(--mat-sys-tertiary)',
|
|
5424
|
+
warn: '#f5a623',
|
|
5425
|
+
error: 'var(--mat-sys-error)',
|
|
5426
|
+
success: '#2e7d32',
|
|
5427
|
+
emerald: '#10b981',
|
|
5428
|
+
red: '#e53935',
|
|
5429
|
+
yellow: '#fbc02d',
|
|
5430
|
+
green: '#43a047',
|
|
5431
|
+
blue: '#1e88e5',
|
|
5432
|
+
purple: '#8b5cf6',
|
|
5433
|
+
orange: '#fb8c00',
|
|
5434
|
+
gray: '#9e9e9e',
|
|
5435
|
+
lightgray: '#cfcfcf',
|
|
5436
|
+
darkgray: '#616161',
|
|
5437
|
+
white: '#ffffff',
|
|
5438
|
+
black: '#000000',
|
|
5439
|
+
inherit: 'currentColor'
|
|
5440
|
+
};
|
|
5441
|
+
/**
|
|
5442
|
+
* Resolves a XiriColor token (or a freeform CSS color) to a CSS-color string
|
|
5443
|
+
* usable in echarts options. Unknown tokens fall back to the given fallback.
|
|
5444
|
+
*/
|
|
5445
|
+
function resolveColor(color, fallback = '#8b5cf6') {
|
|
5446
|
+
if (!color)
|
|
5447
|
+
return fallback;
|
|
5448
|
+
return COLOR_CSS_VAR[color] ?? fallback;
|
|
5449
|
+
}
|
|
5450
|
+
|
|
5451
|
+
/** Escapes characters that would otherwise be interpreted as HTML in echarts tooltip strings. */
|
|
5452
|
+
function escapeHtml(s) {
|
|
5453
|
+
return String(s ?? '')
|
|
5454
|
+
.replace(/&/g, '&')
|
|
5455
|
+
.replace(/</g, '<')
|
|
5456
|
+
.replace(/>/g, '>')
|
|
5457
|
+
.replace(/"/g, '"');
|
|
5458
|
+
}
|
|
5459
|
+
|
|
5460
|
+
class XiriBarChartComponent {
|
|
5461
|
+
constructor() {
|
|
5462
|
+
this.mode = input('simple', ...(ngDevMode ? [{ debugName: "mode" }] : /* istanbul ignore next */ []));
|
|
5463
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5464
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5465
|
+
this.option = computed(() => {
|
|
5466
|
+
const m = this.mode();
|
|
5467
|
+
switch (m) {
|
|
5468
|
+
case 'stacked': return this.stackedOption();
|
|
5469
|
+
case 'heatmap': return this.heatmapOption();
|
|
5470
|
+
default: return this.simpleOption();
|
|
5471
|
+
}
|
|
5472
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
5392
5473
|
}
|
|
5393
5474
|
baseGrid() {
|
|
5475
|
+
// Compact mode: outer card already provides padding — shrink the
|
|
5476
|
+
// echarts grid so we don't get a "double margin".
|
|
5477
|
+
if (this.compact()) {
|
|
5478
|
+
return { left: 0, right: 0, top: 4, bottom: 0, containLabel: true };
|
|
5479
|
+
}
|
|
5394
5480
|
return { left: 32, right: 16, top: 24, bottom: 24, containLabel: true };
|
|
5395
5481
|
}
|
|
5396
5482
|
simpleOption() {
|
|
@@ -5435,7 +5521,7 @@ class XiriBarChartComponent {
|
|
|
5435
5521
|
const s = this.settings();
|
|
5436
5522
|
const bars = s.bars ?? [];
|
|
5437
5523
|
const segCount = Math.max(0, ...bars.map(b => b.segments?.length ?? 0));
|
|
5438
|
-
//
|
|
5524
|
+
// Derive a default series name per segment-position from the first bar that has it.
|
|
5439
5525
|
const seriesNames = [];
|
|
5440
5526
|
for (let i = 0; i < segCount; i++) {
|
|
5441
5527
|
const found = bars.find(b => b.segments?.[i]?.name)?.segments?.[i]?.name;
|
|
@@ -5540,25 +5626,725 @@ class XiriBarChartComponent {
|
|
|
5540
5626
|
};
|
|
5541
5627
|
}
|
|
5542
5628
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriBarChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5543
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
5629
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriBarChartComponent, isStandalone: true, selector: "xiri-barchart", inputs: { mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
5630
|
+
<xiri-echarts-host
|
|
5631
|
+
[option]="option()"
|
|
5632
|
+
[compact]="compact()"
|
|
5633
|
+
[title]="settings().title">
|
|
5634
|
+
</xiri-echarts-host>
|
|
5635
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5544
5636
|
}
|
|
5545
5637
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriBarChartComponent, decorators: [{
|
|
5546
5638
|
type: Component,
|
|
5547
|
-
args: [{
|
|
5548
|
-
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
|
|
5552
|
-
|
|
5553
|
-
|
|
5554
|
-
|
|
5555
|
-
|
|
5639
|
+
args: [{
|
|
5640
|
+
selector: 'xiri-barchart',
|
|
5641
|
+
template: `
|
|
5642
|
+
<xiri-echarts-host
|
|
5643
|
+
[option]="option()"
|
|
5644
|
+
[compact]="compact()"
|
|
5645
|
+
[title]="settings().title">
|
|
5646
|
+
</xiri-echarts-host>
|
|
5647
|
+
`,
|
|
5648
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5649
|
+
imports: [XiriEchartsHostComponent]
|
|
5650
|
+
}]
|
|
5651
|
+
}], propDecorators: { mode: [{ type: i0.Input, args: [{ isSignal: true, alias: "mode", required: false }] }], settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5556
5652
|
|
|
5557
5653
|
var barchart_component = /*#__PURE__*/Object.freeze({
|
|
5558
5654
|
__proto__: null,
|
|
5559
5655
|
XiriBarChartComponent: XiriBarChartComponent
|
|
5560
5656
|
});
|
|
5561
5657
|
|
|
5658
|
+
class XiriLineChartComponent {
|
|
5659
|
+
constructor() {
|
|
5660
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5661
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5662
|
+
this.option = computed(() => {
|
|
5663
|
+
const s = this.settings();
|
|
5664
|
+
const lines = s.lines ?? [];
|
|
5665
|
+
const labels = s.xLabels ?? [];
|
|
5666
|
+
const series = lines.map((line, i) => {
|
|
5667
|
+
const color = resolveColor(line.color, FALLBACK_COLORS$2[i % FALLBACK_COLORS$2.length]);
|
|
5668
|
+
return {
|
|
5669
|
+
type: 'line',
|
|
5670
|
+
name: line.name,
|
|
5671
|
+
smooth: !!s.smooth,
|
|
5672
|
+
symbol: 'circle',
|
|
5673
|
+
symbolSize: 6,
|
|
5674
|
+
lineStyle: {
|
|
5675
|
+
width: 2,
|
|
5676
|
+
type: line.dashed ? 'dashed' : 'solid',
|
|
5677
|
+
color,
|
|
5678
|
+
},
|
|
5679
|
+
itemStyle: { color },
|
|
5680
|
+
areaStyle: line.area ? { color, opacity: 0.15 } : undefined,
|
|
5681
|
+
data: line.values,
|
|
5682
|
+
};
|
|
5683
|
+
});
|
|
5684
|
+
return {
|
|
5685
|
+
grid: this.compact()
|
|
5686
|
+
? { left: 0, right: 0, top: 4, bottom: 0, containLabel: true }
|
|
5687
|
+
: { left: 32, right: 16, top: 24, bottom: 24, containLabel: true },
|
|
5688
|
+
tooltip: {
|
|
5689
|
+
trigger: 'axis',
|
|
5690
|
+
formatter: (params) => {
|
|
5691
|
+
const arr = Array.isArray(params) ? params : [params];
|
|
5692
|
+
if (!arr.length)
|
|
5693
|
+
return '';
|
|
5694
|
+
const header = escapeHtml(String(arr[0].axisValueLabel ?? arr[0].name ?? ''));
|
|
5695
|
+
let body = '';
|
|
5696
|
+
for (const p of arr) {
|
|
5697
|
+
body += `<br/>${p.marker}${escapeHtml(String(p.seriesName ?? ''))}: <b>${p.value}</b>`;
|
|
5698
|
+
}
|
|
5699
|
+
return `<b>${header}</b>${body}`;
|
|
5700
|
+
}
|
|
5701
|
+
},
|
|
5702
|
+
legend: lines.length > 1 ? { top: 0, right: 0, type: 'scroll' } : undefined,
|
|
5703
|
+
xAxis: {
|
|
5704
|
+
type: 'category',
|
|
5705
|
+
data: labels,
|
|
5706
|
+
boundaryGap: false,
|
|
5707
|
+
axisLine: { show: false },
|
|
5708
|
+
axisTick: { show: false }
|
|
5709
|
+
},
|
|
5710
|
+
yAxis: {
|
|
5711
|
+
type: 'value',
|
|
5712
|
+
min: s.yMin,
|
|
5713
|
+
max: s.yMax,
|
|
5714
|
+
splitLine: { lineStyle: { color: '#eee' } }
|
|
5715
|
+
},
|
|
5716
|
+
series,
|
|
5717
|
+
};
|
|
5718
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
5719
|
+
}
|
|
5720
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriLineChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5721
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriLineChartComponent, isStandalone: true, selector: "xiri-linechart", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
5722
|
+
<xiri-echarts-host
|
|
5723
|
+
[option]="option()"
|
|
5724
|
+
[compact]="compact()"
|
|
5725
|
+
[title]="settings().title">
|
|
5726
|
+
</xiri-echarts-host>
|
|
5727
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5728
|
+
}
|
|
5729
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriLineChartComponent, decorators: [{
|
|
5730
|
+
type: Component,
|
|
5731
|
+
args: [{
|
|
5732
|
+
selector: 'xiri-linechart',
|
|
5733
|
+
template: `
|
|
5734
|
+
<xiri-echarts-host
|
|
5735
|
+
[option]="option()"
|
|
5736
|
+
[compact]="compact()"
|
|
5737
|
+
[title]="settings().title">
|
|
5738
|
+
</xiri-echarts-host>
|
|
5739
|
+
`,
|
|
5740
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5741
|
+
imports: [XiriEchartsHostComponent]
|
|
5742
|
+
}]
|
|
5743
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5744
|
+
/** Fallback color rotation when a line has no explicit color. */
|
|
5745
|
+
const FALLBACK_COLORS$2 = ['#8b5cf6', '#10b981', '#1e88e5', '#fb8c00', '#e53935', '#fbc02d', '#43a047', '#616161'];
|
|
5746
|
+
|
|
5747
|
+
var linechart_component = /*#__PURE__*/Object.freeze({
|
|
5748
|
+
__proto__: null,
|
|
5749
|
+
XiriLineChartComponent: XiriLineChartComponent
|
|
5750
|
+
});
|
|
5751
|
+
|
|
5752
|
+
class XiriPieChartComponent {
|
|
5753
|
+
constructor() {
|
|
5754
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5755
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5756
|
+
this.option = computed(() => {
|
|
5757
|
+
const s = this.settings();
|
|
5758
|
+
const slices = s.slices ?? [];
|
|
5759
|
+
// nightingale: smaller inner radius even on full pie so the rose has a visible center
|
|
5760
|
+
const radius = s.donut
|
|
5761
|
+
? ['55%', '78%']
|
|
5762
|
+
: (s.nightingale ? ['20%', '78%'] : ['0', '78%']);
|
|
5763
|
+
const series = {
|
|
5764
|
+
type: 'pie',
|
|
5765
|
+
radius,
|
|
5766
|
+
center: ['50%', '45%'],
|
|
5767
|
+
avoidLabelOverlap: true,
|
|
5768
|
+
label: {
|
|
5769
|
+
show: !s.donut && !this.compact(),
|
|
5770
|
+
formatter: '{b}\n{d}%',
|
|
5771
|
+
},
|
|
5772
|
+
labelLine: { show: !s.donut && !this.compact() },
|
|
5773
|
+
data: slices.map((slice, i) => ({
|
|
5774
|
+
name: slice.name,
|
|
5775
|
+
value: slice.value,
|
|
5776
|
+
itemStyle: { color: resolveColor(slice.color, FALLBACK_COLORS$1[i % FALLBACK_COLORS$1.length]) }
|
|
5777
|
+
}))
|
|
5778
|
+
};
|
|
5779
|
+
if (s.nightingale) {
|
|
5780
|
+
series.roseType = s.nightingaleType ?? 'radius';
|
|
5781
|
+
}
|
|
5782
|
+
return {
|
|
5783
|
+
tooltip: {
|
|
5784
|
+
trigger: 'item',
|
|
5785
|
+
formatter: (p) => {
|
|
5786
|
+
const name = escapeHtml(String(p.name ?? ''));
|
|
5787
|
+
return `<b>${name}</b><br/>${p.marker}<b>${p.value}</b> (${p.percent}%)`;
|
|
5788
|
+
}
|
|
5789
|
+
},
|
|
5790
|
+
legend: { bottom: 0, type: 'scroll' },
|
|
5791
|
+
series: [series]
|
|
5792
|
+
};
|
|
5793
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
5794
|
+
}
|
|
5795
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriPieChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5796
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriPieChartComponent, isStandalone: true, selector: "xiri-piechart", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
5797
|
+
<xiri-echarts-host
|
|
5798
|
+
[option]="option()"
|
|
5799
|
+
[compact]="compact()"
|
|
5800
|
+
[title]="settings().title">
|
|
5801
|
+
</xiri-echarts-host>
|
|
5802
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5803
|
+
}
|
|
5804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriPieChartComponent, decorators: [{
|
|
5805
|
+
type: Component,
|
|
5806
|
+
args: [{
|
|
5807
|
+
selector: 'xiri-piechart',
|
|
5808
|
+
template: `
|
|
5809
|
+
<xiri-echarts-host
|
|
5810
|
+
[option]="option()"
|
|
5811
|
+
[compact]="compact()"
|
|
5812
|
+
[title]="settings().title">
|
|
5813
|
+
</xiri-echarts-host>
|
|
5814
|
+
`,
|
|
5815
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5816
|
+
imports: [XiriEchartsHostComponent]
|
|
5817
|
+
}]
|
|
5818
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5819
|
+
const FALLBACK_COLORS$1 = ['#8b5cf6', '#10b981', '#1e88e5', '#fb8c00', '#e53935', '#fbc02d', '#43a047', '#616161'];
|
|
5820
|
+
|
|
5821
|
+
var piechart_component = /*#__PURE__*/Object.freeze({
|
|
5822
|
+
__proto__: null,
|
|
5823
|
+
XiriPieChartComponent: XiriPieChartComponent
|
|
5824
|
+
});
|
|
5825
|
+
|
|
5826
|
+
class XiriGaugeChartComponent {
|
|
5827
|
+
constructor() {
|
|
5828
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5829
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5830
|
+
this.option = computed(() => {
|
|
5831
|
+
const s = this.settings();
|
|
5832
|
+
const min = s.min ?? 0;
|
|
5833
|
+
const max = s.max ?? 100;
|
|
5834
|
+
const color = resolveColor(s.color, '#8b5cf6');
|
|
5835
|
+
return {
|
|
5836
|
+
series: [{
|
|
5837
|
+
type: 'gauge',
|
|
5838
|
+
min,
|
|
5839
|
+
max,
|
|
5840
|
+
center: ['50%', '60%'],
|
|
5841
|
+
radius: this.compact() ? '90%' : '80%',
|
|
5842
|
+
progress: {
|
|
5843
|
+
show: true,
|
|
5844
|
+
width: 12,
|
|
5845
|
+
itemStyle: { color }
|
|
5846
|
+
},
|
|
5847
|
+
axisLine: {
|
|
5848
|
+
lineStyle: { width: 12, color: [[1, '#eee']] }
|
|
5849
|
+
},
|
|
5850
|
+
pointer: { show: false },
|
|
5851
|
+
axisTick: { show: !this.compact() },
|
|
5852
|
+
splitLine: { show: !this.compact() },
|
|
5853
|
+
axisLabel: { show: !this.compact(), distance: 18, fontSize: 11 },
|
|
5854
|
+
anchor: { show: false },
|
|
5855
|
+
title: { show: false },
|
|
5856
|
+
detail: {
|
|
5857
|
+
valueAnimation: true,
|
|
5858
|
+
offsetCenter: [0, '15%'],
|
|
5859
|
+
fontSize: this.compact() ? 18 : 24,
|
|
5860
|
+
fontWeight: 'bold',
|
|
5861
|
+
formatter: s.label ? `{value}\n{label|${s.label}}` : '{value}',
|
|
5862
|
+
rich: { label: { fontSize: 11, fontWeight: 'normal', color: '#888' } },
|
|
5863
|
+
color
|
|
5864
|
+
},
|
|
5865
|
+
data: [{ value: s.value }]
|
|
5866
|
+
}]
|
|
5867
|
+
};
|
|
5868
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
5869
|
+
}
|
|
5870
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriGaugeChartComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5871
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriGaugeChartComponent, isStandalone: true, selector: "xiri-gaugechart", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
5872
|
+
<xiri-echarts-host
|
|
5873
|
+
[option]="option()"
|
|
5874
|
+
[compact]="compact()"
|
|
5875
|
+
[title]="settings().title">
|
|
5876
|
+
</xiri-echarts-host>
|
|
5877
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5878
|
+
}
|
|
5879
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriGaugeChartComponent, decorators: [{
|
|
5880
|
+
type: Component,
|
|
5881
|
+
args: [{
|
|
5882
|
+
selector: 'xiri-gaugechart',
|
|
5883
|
+
template: `
|
|
5884
|
+
<xiri-echarts-host
|
|
5885
|
+
[option]="option()"
|
|
5886
|
+
[compact]="compact()"
|
|
5887
|
+
[title]="settings().title">
|
|
5888
|
+
</xiri-echarts-host>
|
|
5889
|
+
`,
|
|
5890
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5891
|
+
imports: [XiriEchartsHostComponent]
|
|
5892
|
+
}]
|
|
5893
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5894
|
+
|
|
5895
|
+
var gaugechart_component = /*#__PURE__*/Object.freeze({
|
|
5896
|
+
__proto__: null,
|
|
5897
|
+
XiriGaugeChartComponent: XiriGaugeChartComponent
|
|
5898
|
+
});
|
|
5899
|
+
|
|
5900
|
+
class XiriHeatmapComponent {
|
|
5901
|
+
constructor() {
|
|
5902
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5903
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5904
|
+
this.height = computed(() => {
|
|
5905
|
+
const rows = this.settings().yLabels.length || 1;
|
|
5906
|
+
const px = Math.max(200, rows * 32 + 40);
|
|
5907
|
+
return px + 'px';
|
|
5908
|
+
}, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
5909
|
+
this.option = computed(() => {
|
|
5910
|
+
const s = this.settings();
|
|
5911
|
+
const cells = s.cells ?? [];
|
|
5912
|
+
const values = cells.map(c => c.value);
|
|
5913
|
+
const min = s.min ?? Math.min(0, ...values);
|
|
5914
|
+
const max = s.max ?? Math.max(0, ...values);
|
|
5915
|
+
const [lowColor, highColor] = s.colorRange ?? ['#ede9fe', '#7c3aed'];
|
|
5916
|
+
return {
|
|
5917
|
+
grid: this.compact()
|
|
5918
|
+
? { left: 0, right: 0, top: 4, bottom: 0, containLabel: true }
|
|
5919
|
+
: { left: 32, right: 16, top: 24, bottom: 24, containLabel: true },
|
|
5920
|
+
tooltip: {
|
|
5921
|
+
position: 'top',
|
|
5922
|
+
formatter: (p) => {
|
|
5923
|
+
const x = s.xLabels[p.value[0]] ?? '';
|
|
5924
|
+
const y = s.yLabels[p.value[1]] ?? '';
|
|
5925
|
+
return `<b>${escapeHtml(y)}</b> / <b>${escapeHtml(x)}</b><br/>${p.marker}<b>${p.value[2]}</b>`;
|
|
5926
|
+
}
|
|
5927
|
+
},
|
|
5928
|
+
xAxis: {
|
|
5929
|
+
type: 'category',
|
|
5930
|
+
data: s.xLabels,
|
|
5931
|
+
splitArea: { show: true },
|
|
5932
|
+
axisLine: { show: false },
|
|
5933
|
+
axisTick: { show: false }
|
|
5934
|
+
},
|
|
5935
|
+
yAxis: {
|
|
5936
|
+
type: 'category',
|
|
5937
|
+
data: s.yLabels,
|
|
5938
|
+
splitArea: { show: true },
|
|
5939
|
+
axisLine: { show: false },
|
|
5940
|
+
axisTick: { show: false }
|
|
5941
|
+
},
|
|
5942
|
+
visualMap: {
|
|
5943
|
+
min,
|
|
5944
|
+
max,
|
|
5945
|
+
calculable: true,
|
|
5946
|
+
orient: 'horizontal',
|
|
5947
|
+
left: 'center',
|
|
5948
|
+
bottom: 0,
|
|
5949
|
+
inRange: { color: [lowColor, highColor] },
|
|
5950
|
+
show: !this.compact()
|
|
5951
|
+
},
|
|
5952
|
+
series: [{
|
|
5953
|
+
type: 'heatmap',
|
|
5954
|
+
data: cells.map(c => [c.x, c.y, c.value]),
|
|
5955
|
+
label: { show: !!s.showValues, formatter: (p) => String(p.value[2]) },
|
|
5956
|
+
emphasis: { itemStyle: { shadowBlur: 6, shadowColor: 'rgba(0, 0, 0, 0.3)' } }
|
|
5957
|
+
}]
|
|
5958
|
+
};
|
|
5959
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
5960
|
+
}
|
|
5961
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriHeatmapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5962
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriHeatmapComponent, isStandalone: true, selector: "xiri-heatmap", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
5963
|
+
<xiri-echarts-host
|
|
5964
|
+
[option]="option()"
|
|
5965
|
+
[compact]="compact()"
|
|
5966
|
+
[title]="settings().title"
|
|
5967
|
+
[chartHeight]="height()">
|
|
5968
|
+
</xiri-echarts-host>
|
|
5969
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5970
|
+
}
|
|
5971
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriHeatmapComponent, decorators: [{
|
|
5972
|
+
type: Component,
|
|
5973
|
+
args: [{
|
|
5974
|
+
selector: 'xiri-heatmap',
|
|
5975
|
+
template: `
|
|
5976
|
+
<xiri-echarts-host
|
|
5977
|
+
[option]="option()"
|
|
5978
|
+
[compact]="compact()"
|
|
5979
|
+
[title]="settings().title"
|
|
5980
|
+
[chartHeight]="height()">
|
|
5981
|
+
</xiri-echarts-host>
|
|
5982
|
+
`,
|
|
5983
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
5984
|
+
imports: [XiriEchartsHostComponent]
|
|
5985
|
+
}]
|
|
5986
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
5987
|
+
|
|
5988
|
+
var heatmap_component = /*#__PURE__*/Object.freeze({
|
|
5989
|
+
__proto__: null,
|
|
5990
|
+
XiriHeatmapComponent: XiriHeatmapComponent
|
|
5991
|
+
});
|
|
5992
|
+
|
|
5993
|
+
class XiriCalendarComponent {
|
|
5994
|
+
constructor() {
|
|
5995
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
5996
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
5997
|
+
this.cellSize = computed(() => this.settings().cellSize ?? (this.compact() ? 12 : 16), ...(ngDevMode ? [{ debugName: "cellSize" }] : /* istanbul ignore next */ []));
|
|
5998
|
+
this.height = computed(() => {
|
|
5999
|
+
// 7 weekday rows + label space
|
|
6000
|
+
const px = this.cellSize() * 7 + 60;
|
|
6001
|
+
return px + 'px';
|
|
6002
|
+
}, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
6003
|
+
this.option = computed(() => {
|
|
6004
|
+
const s = this.settings();
|
|
6005
|
+
const cells = s.cells ?? [];
|
|
6006
|
+
const values = cells.map(c => c.value);
|
|
6007
|
+
const min = s.min ?? Math.min(0, ...values);
|
|
6008
|
+
const max = s.max ?? Math.max(0, ...values);
|
|
6009
|
+
const [lowColor, highColor] = s.colorRange ?? ['#e6f4ea', '#2e7d32'];
|
|
6010
|
+
const sz = this.cellSize();
|
|
6011
|
+
return {
|
|
6012
|
+
tooltip: {
|
|
6013
|
+
formatter: (p) => {
|
|
6014
|
+
const date = String(p.value[0]);
|
|
6015
|
+
const v = p.value[1];
|
|
6016
|
+
return `<b>${escapeHtml(date)}</b><br/>${p.marker}<b>${v}</b>`;
|
|
6017
|
+
}
|
|
6018
|
+
},
|
|
6019
|
+
visualMap: {
|
|
6020
|
+
min,
|
|
6021
|
+
max,
|
|
6022
|
+
orient: 'horizontal',
|
|
6023
|
+
left: 'center',
|
|
6024
|
+
bottom: 0,
|
|
6025
|
+
show: !this.compact(),
|
|
6026
|
+
inRange: { color: [lowColor, highColor] }
|
|
6027
|
+
},
|
|
6028
|
+
calendar: {
|
|
6029
|
+
range: s.range,
|
|
6030
|
+
cellSize: [sz, sz],
|
|
6031
|
+
splitLine: { show: false },
|
|
6032
|
+
itemStyle: { borderColor: '#fff', borderWidth: 2 },
|
|
6033
|
+
yearLabel: { show: false },
|
|
6034
|
+
dayLabel: { fontSize: 10 },
|
|
6035
|
+
monthLabel: { fontSize: 11 },
|
|
6036
|
+
top: 24,
|
|
6037
|
+
left: 32,
|
|
6038
|
+
right: 16,
|
|
6039
|
+
},
|
|
6040
|
+
series: [{
|
|
6041
|
+
type: 'heatmap',
|
|
6042
|
+
coordinateSystem: 'calendar',
|
|
6043
|
+
data: cells.map(c => [c.date, c.value])
|
|
6044
|
+
}]
|
|
6045
|
+
};
|
|
6046
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
6047
|
+
}
|
|
6048
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6049
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriCalendarComponent, isStandalone: true, selector: "xiri-calendar", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
6050
|
+
<xiri-echarts-host
|
|
6051
|
+
[option]="option()"
|
|
6052
|
+
[compact]="compact()"
|
|
6053
|
+
[title]="settings().title"
|
|
6054
|
+
[chartHeight]="height()">
|
|
6055
|
+
</xiri-echarts-host>
|
|
6056
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6057
|
+
}
|
|
6058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriCalendarComponent, decorators: [{
|
|
6059
|
+
type: Component,
|
|
6060
|
+
args: [{
|
|
6061
|
+
selector: 'xiri-calendar',
|
|
6062
|
+
template: `
|
|
6063
|
+
<xiri-echarts-host
|
|
6064
|
+
[option]="option()"
|
|
6065
|
+
[compact]="compact()"
|
|
6066
|
+
[title]="settings().title"
|
|
6067
|
+
[chartHeight]="height()">
|
|
6068
|
+
</xiri-echarts-host>
|
|
6069
|
+
`,
|
|
6070
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6071
|
+
imports: [XiriEchartsHostComponent]
|
|
6072
|
+
}]
|
|
6073
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
6074
|
+
|
|
6075
|
+
var calendar_component = /*#__PURE__*/Object.freeze({
|
|
6076
|
+
__proto__: null,
|
|
6077
|
+
XiriCalendarComponent: XiriCalendarComponent
|
|
6078
|
+
});
|
|
6079
|
+
|
|
6080
|
+
class XiriTreeComponent {
|
|
6081
|
+
constructor() {
|
|
6082
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
6083
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
6084
|
+
this.height = computed(() => {
|
|
6085
|
+
// Estimate based on leaf count
|
|
6086
|
+
const leaves = countLeaves(this.settings().root);
|
|
6087
|
+
const px = Math.max(240, leaves * 24 + 80);
|
|
6088
|
+
return px + 'px';
|
|
6089
|
+
}, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
6090
|
+
this.option = computed(() => {
|
|
6091
|
+
const s = this.settings();
|
|
6092
|
+
const orient = s.orient ?? 'LR';
|
|
6093
|
+
const layout = s.layout ?? 'orthogonal';
|
|
6094
|
+
return {
|
|
6095
|
+
tooltip: {
|
|
6096
|
+
trigger: 'item',
|
|
6097
|
+
triggerOn: 'mousemove',
|
|
6098
|
+
formatter: (p) => {
|
|
6099
|
+
const v = p.data?.value;
|
|
6100
|
+
const head = `<b>${escapeText(p.name)}</b>`;
|
|
6101
|
+
return v != null ? `${head}<br/>${p.marker}<b>${v}</b>` : head;
|
|
6102
|
+
}
|
|
6103
|
+
},
|
|
6104
|
+
series: [{
|
|
6105
|
+
type: 'tree',
|
|
6106
|
+
data: [s.root],
|
|
6107
|
+
top: 16,
|
|
6108
|
+
bottom: 16,
|
|
6109
|
+
// Reserve enough space for leaf labels so they don't get truncated by echarts.
|
|
6110
|
+
left: layout === 'radial' ? '5%' : (orient === 'LR' ? 96 : (orient === 'RL' ? 16 : 16)),
|
|
6111
|
+
right: layout === 'radial' ? '5%' : (orient === 'RL' ? 96 : (orient === 'LR' ? 96 : 16)),
|
|
6112
|
+
layout,
|
|
6113
|
+
orient,
|
|
6114
|
+
symbol: 'emptyCircle',
|
|
6115
|
+
symbolSize: 7,
|
|
6116
|
+
initialTreeDepth: 3,
|
|
6117
|
+
label: {
|
|
6118
|
+
position: orient === 'TB' ? 'top' : 'left',
|
|
6119
|
+
align: orient === 'LR' ? 'right' : 'center',
|
|
6120
|
+
verticalAlign: 'middle',
|
|
6121
|
+
fontSize: 12,
|
|
6122
|
+
overflow: 'none'
|
|
6123
|
+
},
|
|
6124
|
+
leaves: {
|
|
6125
|
+
label: {
|
|
6126
|
+
position: orient === 'TB' ? 'bottom' : 'right',
|
|
6127
|
+
align: orient === 'LR' ? 'left' : 'center',
|
|
6128
|
+
overflow: 'none'
|
|
6129
|
+
}
|
|
6130
|
+
},
|
|
6131
|
+
expandAndCollapse: true,
|
|
6132
|
+
animationDuration: 250,
|
|
6133
|
+
animationDurationUpdate: 250
|
|
6134
|
+
}]
|
|
6135
|
+
};
|
|
6136
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
6137
|
+
}
|
|
6138
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriTreeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6139
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriTreeComponent, isStandalone: true, selector: "xiri-tree", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
6140
|
+
<xiri-echarts-host
|
|
6141
|
+
[option]="option()"
|
|
6142
|
+
[compact]="compact()"
|
|
6143
|
+
[title]="settings().title"
|
|
6144
|
+
[chartHeight]="height()">
|
|
6145
|
+
</xiri-echarts-host>
|
|
6146
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6147
|
+
}
|
|
6148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriTreeComponent, decorators: [{
|
|
6149
|
+
type: Component,
|
|
6150
|
+
args: [{
|
|
6151
|
+
selector: 'xiri-tree',
|
|
6152
|
+
template: `
|
|
6153
|
+
<xiri-echarts-host
|
|
6154
|
+
[option]="option()"
|
|
6155
|
+
[compact]="compact()"
|
|
6156
|
+
[title]="settings().title"
|
|
6157
|
+
[chartHeight]="height()">
|
|
6158
|
+
</xiri-echarts-host>
|
|
6159
|
+
`,
|
|
6160
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6161
|
+
imports: [XiriEchartsHostComponent]
|
|
6162
|
+
}]
|
|
6163
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
6164
|
+
function countLeaves(n) {
|
|
6165
|
+
if (!n.children?.length)
|
|
6166
|
+
return 1;
|
|
6167
|
+
return n.children.reduce((sum, c) => sum + countLeaves(c), 0);
|
|
6168
|
+
}
|
|
6169
|
+
function escapeText(s) {
|
|
6170
|
+
return String(s ?? '').replace(/</g, '<').replace(/>/g, '>');
|
|
6171
|
+
}
|
|
6172
|
+
|
|
6173
|
+
var tree_component = /*#__PURE__*/Object.freeze({
|
|
6174
|
+
__proto__: null,
|
|
6175
|
+
XiriTreeComponent: XiriTreeComponent
|
|
6176
|
+
});
|
|
6177
|
+
|
|
6178
|
+
class XiriSankeyComponent {
|
|
6179
|
+
constructor() {
|
|
6180
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
6181
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
6182
|
+
this.height = computed(() => {
|
|
6183
|
+
const n = this.settings().nodes.length || 1;
|
|
6184
|
+
const px = Math.max(280, n * 20 + 80);
|
|
6185
|
+
return px + 'px';
|
|
6186
|
+
}, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
6187
|
+
this.option = computed(() => {
|
|
6188
|
+
const s = this.settings();
|
|
6189
|
+
return {
|
|
6190
|
+
tooltip: { trigger: 'item', triggerOn: 'mousemove' },
|
|
6191
|
+
series: [{
|
|
6192
|
+
type: 'sankey',
|
|
6193
|
+
orient: s.orient ?? 'horizontal',
|
|
6194
|
+
top: 16,
|
|
6195
|
+
bottom: 16,
|
|
6196
|
+
left: 16,
|
|
6197
|
+
right: 80,
|
|
6198
|
+
emphasis: { focus: 'adjacency' },
|
|
6199
|
+
lineStyle: { color: 'gradient', curveness: 0.5 },
|
|
6200
|
+
label: { fontSize: 12 },
|
|
6201
|
+
data: s.nodes.map((n, i) => ({
|
|
6202
|
+
name: n.name,
|
|
6203
|
+
itemStyle: { color: resolveColor(n.color, FALLBACK_COLORS[i % FALLBACK_COLORS.length]) }
|
|
6204
|
+
})),
|
|
6205
|
+
links: s.links
|
|
6206
|
+
}]
|
|
6207
|
+
};
|
|
6208
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
6209
|
+
}
|
|
6210
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriSankeyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6211
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriSankeyComponent, isStandalone: true, selector: "xiri-sankey", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
6212
|
+
<xiri-echarts-host
|
|
6213
|
+
[option]="option()"
|
|
6214
|
+
[compact]="compact()"
|
|
6215
|
+
[title]="settings().title"
|
|
6216
|
+
[chartHeight]="height()">
|
|
6217
|
+
</xiri-echarts-host>
|
|
6218
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6219
|
+
}
|
|
6220
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriSankeyComponent, decorators: [{
|
|
6221
|
+
type: Component,
|
|
6222
|
+
args: [{
|
|
6223
|
+
selector: 'xiri-sankey',
|
|
6224
|
+
template: `
|
|
6225
|
+
<xiri-echarts-host
|
|
6226
|
+
[option]="option()"
|
|
6227
|
+
[compact]="compact()"
|
|
6228
|
+
[title]="settings().title"
|
|
6229
|
+
[chartHeight]="height()">
|
|
6230
|
+
</xiri-echarts-host>
|
|
6231
|
+
`,
|
|
6232
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6233
|
+
imports: [XiriEchartsHostComponent]
|
|
6234
|
+
}]
|
|
6235
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
6236
|
+
const FALLBACK_COLORS = ['#8b5cf6', '#10b981', '#1e88e5', '#fb8c00', '#e53935', '#fbc02d', '#43a047', '#616161'];
|
|
6237
|
+
|
|
6238
|
+
var sankey_component = /*#__PURE__*/Object.freeze({
|
|
6239
|
+
__proto__: null,
|
|
6240
|
+
XiriSankeyComponent: XiriSankeyComponent
|
|
6241
|
+
});
|
|
6242
|
+
|
|
6243
|
+
class XiriGanttComponent {
|
|
6244
|
+
constructor() {
|
|
6245
|
+
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
6246
|
+
this.compact = computed(() => !!this.settings().compact, ...(ngDevMode ? [{ debugName: "compact" }] : /* istanbul ignore next */ []));
|
|
6247
|
+
this.height = computed(() => {
|
|
6248
|
+
const rows = this.settings().rows.length || 1;
|
|
6249
|
+
const px = Math.max(220, rows * 36 + 80);
|
|
6250
|
+
return px + 'px';
|
|
6251
|
+
}, ...(ngDevMode ? [{ debugName: "height" }] : /* istanbul ignore next */ []));
|
|
6252
|
+
this.option = computed(() => {
|
|
6253
|
+
const s = this.settings();
|
|
6254
|
+
const rows = s.rows ?? [];
|
|
6255
|
+
// Each datum: [rowIndex, start, end, name, color]
|
|
6256
|
+
const data = (s.tasks ?? []).map(t => [
|
|
6257
|
+
t.row,
|
|
6258
|
+
t.start,
|
|
6259
|
+
t.end,
|
|
6260
|
+
t.name,
|
|
6261
|
+
resolveColor(t.color, '#8b5cf6')
|
|
6262
|
+
]);
|
|
6263
|
+
const renderItem = (_params, api) => {
|
|
6264
|
+
const rowIdx = api.value(0);
|
|
6265
|
+
const start = api.coord([api.value(1), rowIdx]);
|
|
6266
|
+
const end = api.coord([api.value(2), rowIdx]);
|
|
6267
|
+
const cellH = api.size([0, 1])[1];
|
|
6268
|
+
const height = Math.max(4, cellH * 0.6);
|
|
6269
|
+
return {
|
|
6270
|
+
type: 'rect',
|
|
6271
|
+
transition: ['shape'],
|
|
6272
|
+
shape: {
|
|
6273
|
+
x: start[0],
|
|
6274
|
+
y: start[1] - height / 2,
|
|
6275
|
+
width: Math.max(1, end[0] - start[0]),
|
|
6276
|
+
height,
|
|
6277
|
+
r: 4
|
|
6278
|
+
},
|
|
6279
|
+
style: { fill: api.value(4) }
|
|
6280
|
+
};
|
|
6281
|
+
};
|
|
6282
|
+
return {
|
|
6283
|
+
tooltip: {
|
|
6284
|
+
formatter: (p) => {
|
|
6285
|
+
const v = p.value;
|
|
6286
|
+
const fmt = (ms) => new Date(ms).toLocaleString();
|
|
6287
|
+
const row = rows[v[0]] ?? '';
|
|
6288
|
+
return `<b>${escapeHtml(v[3])}</b><br/>${escapeHtml(row)}<br/>${escapeHtml(fmt(v[1]))} → ${escapeHtml(fmt(v[2]))}`;
|
|
6289
|
+
}
|
|
6290
|
+
},
|
|
6291
|
+
grid: { left: 8, right: 16, top: 16, bottom: 24, containLabel: true },
|
|
6292
|
+
xAxis: {
|
|
6293
|
+
type: 'time',
|
|
6294
|
+
min: s.rangeStart,
|
|
6295
|
+
max: s.rangeEnd,
|
|
6296
|
+
splitLine: { lineStyle: { color: '#eee' } }
|
|
6297
|
+
},
|
|
6298
|
+
yAxis: {
|
|
6299
|
+
type: 'category',
|
|
6300
|
+
data: rows,
|
|
6301
|
+
inverse: true,
|
|
6302
|
+
splitLine: { show: false },
|
|
6303
|
+
axisLine: { show: false },
|
|
6304
|
+
axisTick: { show: false }
|
|
6305
|
+
},
|
|
6306
|
+
series: [{
|
|
6307
|
+
type: 'custom',
|
|
6308
|
+
encode: { x: [1, 2], y: 0 },
|
|
6309
|
+
clip: true,
|
|
6310
|
+
renderItem,
|
|
6311
|
+
data
|
|
6312
|
+
}]
|
|
6313
|
+
};
|
|
6314
|
+
}, ...(ngDevMode ? [{ debugName: "option" }] : /* istanbul ignore next */ []));
|
|
6315
|
+
}
|
|
6316
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriGanttComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6317
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.2", type: XiriGanttComponent, isStandalone: true, selector: "xiri-gantt", inputs: { settings: { classPropertyName: "settings", publicName: "settings", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
6318
|
+
<xiri-echarts-host
|
|
6319
|
+
[option]="option()"
|
|
6320
|
+
[compact]="compact()"
|
|
6321
|
+
[title]="settings().title"
|
|
6322
|
+
[chartHeight]="height()">
|
|
6323
|
+
</xiri-echarts-host>
|
|
6324
|
+
`, isInline: true, dependencies: [{ kind: "component", type: XiriEchartsHostComponent, selector: "xiri-echarts-host", inputs: ["option", "compact", "title", "headerIcon", "headerIconColor", "chartHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
6325
|
+
}
|
|
6326
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImport: i0, type: XiriGanttComponent, decorators: [{
|
|
6327
|
+
type: Component,
|
|
6328
|
+
args: [{
|
|
6329
|
+
selector: 'xiri-gantt',
|
|
6330
|
+
template: `
|
|
6331
|
+
<xiri-echarts-host
|
|
6332
|
+
[option]="option()"
|
|
6333
|
+
[compact]="compact()"
|
|
6334
|
+
[title]="settings().title"
|
|
6335
|
+
[chartHeight]="height()">
|
|
6336
|
+
</xiri-echarts-host>
|
|
6337
|
+
`,
|
|
6338
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
6339
|
+
imports: [XiriEchartsHostComponent]
|
|
6340
|
+
}]
|
|
6341
|
+
}], propDecorators: { settings: [{ type: i0.Input, args: [{ isSignal: true, alias: "settings", required: true }] }] } });
|
|
6342
|
+
|
|
6343
|
+
var gantt_component = /*#__PURE__*/Object.freeze({
|
|
6344
|
+
__proto__: null,
|
|
6345
|
+
XiriGanttComponent: XiriGanttComponent
|
|
6346
|
+
});
|
|
6347
|
+
|
|
5562
6348
|
class XiriPageHeaderComponent {
|
|
5563
6349
|
constructor() {
|
|
5564
6350
|
this.settings = input.required(...(ngDevMode ? [{ debugName: "settings" }] : /* istanbul ignore next */ []));
|
|
@@ -5843,5 +6629,5 @@ function provideXiriServices(config) {
|
|
|
5843
6629
|
* Generated bundle index. Do not edit.
|
|
5844
6630
|
*/
|
|
5845
6631
|
|
|
5846
|
-
export { DEFAULT_COMPARE, DEFAULT_PREDICATE, SafehtmlPipe, ThemeService, XiriAlertComponent, XiriBarChartComponent, XiriBreadcrumbComponent, XiriButtonComponent, XiriButtonlineComponent, XiriButtonstyleComponent, XiriCardComponent, XiriCardlinkComponent, XiriDataService, XiriDataServiceConfig, XiriDateService, XiriDescriptionListComponent, XiriDialogComponent, XiriDividerComponent, XiriDoneComponent, XiriDownloadService, XiriDynComponentComponent, XiriEmptyStateComponent, XiriErrorComponent, XiriExpansionComponent, XiriFormComponent, XiriFormFieldsComponent, XiriFormService, XiriHeaderComponent, XiriImagetextComponent, XiriInfopointComponent, XiriLinksComponent, XiriListComponent, XiriLocalStorageService, XiriMultiprogressComponent, XiriNumberService, XiriPageHeaderComponent, XiriQueryComponent, XiriRawTableComponent, XiriResponseHandlerService, XiriSearchComponent, XiriSectionComponent, XiriSelectDirective, XiriSessionStorageService, XiriSidenavComponent, XiriSkeletonComponent, XiriSnackbarService, XiriStatComponent, XiriStatGridComponent, XiriStepperComponent, XiriTableComponent, XiriTabsComponent, XiriTimelineComponent, XiriToolbarComponent, defaultXiriDataServiceConfig, provideXiriServices };
|
|
6632
|
+
export { COLOR_CSS_VAR, DEFAULT_COMPARE, DEFAULT_PREDICATE, SafehtmlPipe, ThemeService, XiriAlertComponent, XiriBarChartComponent, XiriBreadcrumbComponent, XiriButtonComponent, XiriButtonlineComponent, XiriButtonstyleComponent, XiriCalendarComponent, XiriCardComponent, XiriCardlinkComponent, XiriDataService, XiriDataServiceConfig, XiriDateService, XiriDescriptionListComponent, XiriDialogComponent, XiriDividerComponent, XiriDoneComponent, XiriDownloadService, XiriDynComponentComponent, XiriEchartsHostComponent, XiriEmptyStateComponent, XiriErrorComponent, XiriExpansionComponent, XiriFormComponent, XiriFormFieldsComponent, XiriFormService, XiriGanttComponent, XiriGaugeChartComponent, XiriHeaderComponent, XiriHeatmapComponent, XiriImagetextComponent, XiriInfopointComponent, XiriLineChartComponent, XiriLinksComponent, XiriListComponent, XiriLocalStorageService, XiriMultiprogressComponent, XiriNumberService, XiriPageHeaderComponent, XiriPieChartComponent, XiriQueryComponent, XiriRawTableComponent, XiriResponseHandlerService, XiriSankeyComponent, XiriSearchComponent, XiriSectionComponent, XiriSelectDirective, XiriSessionStorageService, XiriSidenavComponent, XiriSkeletonComponent, XiriSnackbarService, XiriStatComponent, XiriStatGridComponent, XiriStepperComponent, XiriTableComponent, XiriTabsComponent, XiriTimelineComponent, XiriToolbarComponent, XiriTreeComponent, defaultXiriDataServiceConfig, escapeHtml, provideXiriServices, resolveColor };
|
|
5847
6633
|
//# sourceMappingURL=xiriframework-xiri-ng.mjs.map
|