@yuuvis/client-shell 0.6.5
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.
- package/README.md +94 -0
- package/esm2022/index.mjs +6 -0
- package/esm2022/lib/actions/manage-flavors/manage-flavors.action.mjs +39 -0
- package/esm2022/lib/actions/manage-flavors/manage-flavors.component.mjs +69 -0
- package/esm2022/lib/client-shell.component.mjs +191 -0
- package/esm2022/lib/components/app-logo/app-logo.component.mjs +18 -0
- package/esm2022/lib/directives/inert.directive.mjs +26 -0
- package/esm2022/lib/lib.routes.mjs +15 -0
- package/esm2022/lib/pages/dashboard/dashboard.component.mjs +11 -0
- package/esm2022/lib/pages/notifications/notifications.component.mjs +82 -0
- package/esm2022/lib/pages/settings/settings.component.mjs +71 -0
- package/esm2022/lib/pages/web-share-target/web-share-target.component.mjs +18 -0
- package/esm2022/widget-dashboard/index.mjs +3 -0
- package/esm2022/widget-dashboard/lib/widget-dashboard.component.mjs +46 -0
- package/esm2022/widget-dashboard/lib/widget-dashboard.config.mjs +3 -0
- package/esm2022/widget-dashboard/lib/widget-dashboard.module.mjs +49 -0
- package/esm2022/widget-dashboard/yuuvis-client-shell-widget-dashboard.mjs +5 -0
- package/esm2022/yuuvis-client-shell.mjs +5 -0
- package/fesm2022/yuuvis-client-shell-widget-dashboard.mjs +98 -0
- package/fesm2022/yuuvis-client-shell-widget-dashboard.mjs.map +1 -0
- package/fesm2022/yuuvis-client-shell.mjs +496 -0
- package/fesm2022/yuuvis-client-shell.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/actions/manage-flavors/manage-flavors.action.d.ts +17 -0
- package/lib/actions/manage-flavors/manage-flavors.component.d.ts +17 -0
- package/lib/assets/i18n/de.json +30 -0
- package/lib/assets/i18n/en.json +30 -0
- package/lib/client-shell.component.d.ts +42 -0
- package/lib/components/app-logo/app-logo.component.d.ts +7 -0
- package/lib/directives/inert.directive.d.ts +8 -0
- package/lib/lib.routes.d.ts +2 -0
- package/lib/pages/dashboard/dashboard.component.d.ts +5 -0
- package/lib/pages/notifications/notifications.component.d.ts +29 -0
- package/lib/pages/settings/settings.component.d.ts +28 -0
- package/lib/pages/web-share-target/web-share-target.component.d.ts +6 -0
- package/package.json +40 -0
- package/widget-dashboard/README.md +19 -0
- package/widget-dashboard/index.d.ts +2 -0
- package/widget-dashboard/lib/widget-dashboard.component.d.ts +16 -0
- package/widget-dashboard/lib/widget-dashboard.config.d.ts +7 -0
- package/widget-dashboard/lib/widget-dashboard.module.d.ts +13 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { CdkTrapFocus } from '@angular/cdk/a11y';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { Component, ElementRef, HostListener, effect, inject } from '@angular/core';
|
|
4
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { Router } from '@angular/router';
|
|
6
|
+
import { LocaleDatePipe, TranslateModule, Utils } from '@yuuvis/client-core';
|
|
7
|
+
import { LightDismissDirective } from '@yuuvis/client-framework/common';
|
|
8
|
+
import { YUV_ICONS } from '@yuuvis/client-framework/icons';
|
|
9
|
+
import { ListComponent, ListItemDirective } from '@yuuvis/client-framework/list';
|
|
10
|
+
import { ShellNotificationsService } from '@yuuvis/client-shell-core';
|
|
11
|
+
import { ICONS, YvcIconModule } from '@yuuvis/components/icon';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/common";
|
|
14
|
+
import * as i2 from "@yuuvis/components/icon";
|
|
15
|
+
import * as i3 from "@yuuvis/client-core";
|
|
16
|
+
export class NotificationsPageComponent {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.router = inject(Router);
|
|
19
|
+
this.shellNotifications = inject(ShellNotificationsService);
|
|
20
|
+
this.elRef = inject(ElementRef);
|
|
21
|
+
this._focusedIndex = -1;
|
|
22
|
+
this._notificationIDs = [];
|
|
23
|
+
this.notifications = toSignal(this.shellNotifications.shellNotifications$);
|
|
24
|
+
this.notificationsIdEffect = effect(() => (this._notificationIDs = (this.notifications() || []).map((n) => n.id)));
|
|
25
|
+
this.icons = {
|
|
26
|
+
close: ICONS.clear,
|
|
27
|
+
trash: YUV_ICONS.trash,
|
|
28
|
+
note: YUV_ICONS.notification
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
onKeydown(event) {
|
|
32
|
+
switch (event.code) {
|
|
33
|
+
case 'Delete': {
|
|
34
|
+
if (this._focusedIndex >= 0)
|
|
35
|
+
this.remove(this._notificationIDs[this._focusedIndex]);
|
|
36
|
+
break;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
async itemSelected(idx) {
|
|
41
|
+
const n = this.shellNotifications.getNotificationById(this._notificationIDs[idx[0]]);
|
|
42
|
+
if (n?.targetRoute) {
|
|
43
|
+
await this.close();
|
|
44
|
+
this.router.navigateByUrl(n.targetRoute, { replaceUrl: true });
|
|
45
|
+
if (n.removeOnTargetRouteNavigated)
|
|
46
|
+
this.remove(n.id);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
itemFocused(index) {
|
|
50
|
+
this._focusedIndex = index;
|
|
51
|
+
}
|
|
52
|
+
remove(id) {
|
|
53
|
+
if (id)
|
|
54
|
+
this.shellNotifications.remove(id);
|
|
55
|
+
}
|
|
56
|
+
removeAll() {
|
|
57
|
+
this.shellNotifications.removeAll();
|
|
58
|
+
}
|
|
59
|
+
close() {
|
|
60
|
+
return this.router.navigate([{ outlets: { aside: null } }], {
|
|
61
|
+
replaceUrl: true
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
this.shellNotifications.markAllAsSeen();
|
|
66
|
+
setTimeout(() => {
|
|
67
|
+
const fc = Utils.getFocusableChildren(this.elRef.nativeElement);
|
|
68
|
+
if (fc.length)
|
|
69
|
+
fc[0].focus();
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
73
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: NotificationsPageComponent, isStandalone: true, selector: "yuv-notifications", host: { listeners: { "keydown": "onKeydown($event)" } }, ngImport: i0, template: "<div class=\"notifications\" (yuvLightDismiss)=\"close()\" cdkTrapFocus>\n <h2>{{ 'yuv.shell.notifications.title' | translate }}</h2>\n\n @if (notifications()?.length) {\n <yuv-list (itemSelect)=\"itemSelected($event)\" (itemFocus)=\"itemFocused($event)\">\n @for (n of notifications(); track n.id) {\n <div class=\"note {{ n.level }}\" [ngClass]=\"{ withRoute: n.targetRoute }\" yuvListItem>\n <div class=\"icon\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-icon></div>\n <div class=\"received\">{{ n.timestamp | localeDate }}</div>\n <div class=\"title\">{{ n.title }}</div>\n <div class=\"description\">{{ n.description }}</div>\n <div class=\"meta\"></div>\n\n <div class=\"actions\">\n <button (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.shell.notifications.empty' | translate }}</p>\n </div>\n }\n\n <button class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n", styles: [":host{height:100%;display:flex}:host .notifications{background-color:var(--panel-background-lightgrey);border-inline-end:1px solid var(--panel-divider-color);height:100%;overflow:hidden;box-sizing:border-box;padding:var(--app-pane-padding);display:grid;grid-template-rows:auto auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"title close\" \"actions actions\" \"list list\";gap:var(--app-pane-padding);max-width:30vw;min-width:300px;box-shadow:8px 0 8px #0000001a;animation:dialogAppear .2s ease-in-out}:host .notifications h2{color:var(--text-color-caption);grid-area:title;margin:0;padding:0;align-self:center;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .notifications .actions{grid-area:actions;display:flex;justify-content:end;--icon-size: 18px}:host .notifications .actions button{border-radius:.4em}:host .notifications .close{grid-area:close;--icon-size: 18px}:host .notifications yuv-list,:host .notifications .empty{grid-area:list}:host .notifications .empty{display:grid;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .notifications .note{--level-color: transparent;display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:auto 1fr auto;grid-template-areas:\"icon received actions\" \"icon title title\" \"icon description description\" \"icon meta meta\";row-gap:calc(var(--app-pane-padding) / 4);column-gap:calc(var(--app-pane-padding) / 2);align-items:center;padding:calc(var(--app-pane-padding) / 2);padding-inline-start:var(--app-pane-padding);margin-block-end:calc(var(--app-pane-padding) / 2);background-color:var(--panel-background);outline:1px solid var(--panel-divider-color);outline-offset:-1px;position:relative;cursor:default}:host .notifications .note.withRoute{cursor:pointer}:host .notifications .note:before{content:\"\";width:4px;position:absolute;left:2px;top:2px;bottom:2px;border-radius:2px;background-color:var(--level-color)}:host .notifications .note.alert{--level-color: var(--color-error)}:host .notifications .note.warning{--level-color: var(--color-warning)}:host .notifications .note.success{--level-color: var(--color-success)}:host .notifications .note:hover,:host .notifications .note[aria-current=true]{background-color:var(--item-focus-background-color)}:host .notifications .note:hover button,:host .notifications .note[aria-current=true] button{opacity:1}:host .notifications .note .icon{grid-area:icon;color:var(--text-color-caption)}:host .notifications .note .title{overflow:hidden;text-overflow:ellipsis;font-weight:700;grid-area:title;color:var(--text-color-body)}:host .notifications .note .description{grid-area:description;overflow:hidden;text-overflow:ellipsis}:host .notifications .note .meta{grid-area:meta}:host .notifications .note .received{grid-area:received;color:var(--text-color-caption)}:host .notifications .note button{grid-area:actions;padding:0;opacity:0}:host .notifications .note button yvc-icon{width:18px;height:18px}@keyframes dialogAppear{0%{opacity:0;transform:translate(calc(var(--app-pane-padding) * -1))}to{opacity:1;transform:translate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: LightDismissDirective, selector: "[yuvLightDismiss]", outputs: ["yuvLightDismiss"] }, { kind: "pipe", type: LocaleDatePipe, name: "localeDate" }, { kind: "ngmodule", type: YvcIconModule }, { kind: "component", type: i2.Icon, selector: "yvc-icon", inputs: ["label", "svg", "svgSrc"] }, { kind: "directive", type: CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { kind: "component", type: ListComponent, selector: "yuv-list", inputs: ["multiselect", "disableSelection"], outputs: ["itemSelect", "itemFocus"] }, { kind: "directive", type: ListItemDirective, selector: "[yuvListItem]", inputs: ["disabled", "active", "selected"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }] }); }
|
|
74
|
+
}
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: NotificationsPageComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'yuv-notifications', standalone: true, imports: [CommonModule, LightDismissDirective, LocaleDatePipe, YvcIconModule, CdkTrapFocus, ListComponent, ListItemDirective, TranslateModule], template: "<div class=\"notifications\" (yuvLightDismiss)=\"close()\" cdkTrapFocus>\n <h2>{{ 'yuv.shell.notifications.title' | translate }}</h2>\n\n @if (notifications()?.length) {\n <yuv-list (itemSelect)=\"itemSelected($event)\" (itemFocus)=\"itemFocused($event)\">\n @for (n of notifications(); track n.id) {\n <div class=\"note {{ n.level }}\" [ngClass]=\"{ withRoute: n.targetRoute }\" yuvListItem>\n <div class=\"icon\"><yvc-icon [svg]=\"n.icon || icons.note\"></yvc-icon></div>\n <div class=\"received\">{{ n.timestamp | localeDate }}</div>\n <div class=\"title\">{{ n.title }}</div>\n <div class=\"description\">{{ n.description }}</div>\n <div class=\"meta\"></div>\n\n <div class=\"actions\">\n <button (click)=\"remove(n.id)\">\n <yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n </div>\n }\n </yuv-list>\n\n <div class=\"actions\">\n <button [hidden]=\"!notifications()?.length\" class=\"icon secondary\" (click)=\"removeAll()\">\n {{ 'yuv.shell.notifications.button.remove.all' | translate }}<yvc-icon [svg]=\"icons.trash\"></yvc-icon>\n </button>\n </div>\n } @else {\n <div class=\"empty\">\n <p>{{ 'yuv.shell.notifications.empty' | translate }}</p>\n </div>\n }\n\n <button class=\"icon close\" (click)=\"close()\">\n <yvc-icon [svg]=\"icons.close\"></yvc-icon>\n </button>\n</div>\n", styles: [":host{height:100%;display:flex}:host .notifications{background-color:var(--panel-background-lightgrey);border-inline-end:1px solid var(--panel-divider-color);height:100%;overflow:hidden;box-sizing:border-box;padding:var(--app-pane-padding);display:grid;grid-template-rows:auto auto 1fr;grid-template-columns:1fr auto;grid-template-areas:\"title close\" \"actions actions\" \"list list\";gap:var(--app-pane-padding);max-width:30vw;min-width:300px;box-shadow:8px 0 8px #0000001a;animation:dialogAppear .2s ease-in-out}:host .notifications h2{color:var(--text-color-caption);grid-area:title;margin:0;padding:0;align-self:center;font-size:var(--font-title);font-weight:400;text-overflow:ellipsis;overflow:hidden}:host .notifications .actions{grid-area:actions;display:flex;justify-content:end;--icon-size: 18px}:host .notifications .actions button{border-radius:.4em}:host .notifications .close{grid-area:close;--icon-size: 18px}:host .notifications yuv-list,:host .notifications .empty{grid-area:list}:host .notifications .empty{display:grid;align-items:center;justify-content:center;color:var(--text-color-caption)}:host .notifications .note{--level-color: transparent;display:grid;grid-template-rows:auto auto auto auto;grid-template-columns:auto 1fr auto;grid-template-areas:\"icon received actions\" \"icon title title\" \"icon description description\" \"icon meta meta\";row-gap:calc(var(--app-pane-padding) / 4);column-gap:calc(var(--app-pane-padding) / 2);align-items:center;padding:calc(var(--app-pane-padding) / 2);padding-inline-start:var(--app-pane-padding);margin-block-end:calc(var(--app-pane-padding) / 2);background-color:var(--panel-background);outline:1px solid var(--panel-divider-color);outline-offset:-1px;position:relative;cursor:default}:host .notifications .note.withRoute{cursor:pointer}:host .notifications .note:before{content:\"\";width:4px;position:absolute;left:2px;top:2px;bottom:2px;border-radius:2px;background-color:var(--level-color)}:host .notifications .note.alert{--level-color: var(--color-error)}:host .notifications .note.warning{--level-color: var(--color-warning)}:host .notifications .note.success{--level-color: var(--color-success)}:host .notifications .note:hover,:host .notifications .note[aria-current=true]{background-color:var(--item-focus-background-color)}:host .notifications .note:hover button,:host .notifications .note[aria-current=true] button{opacity:1}:host .notifications .note .icon{grid-area:icon;color:var(--text-color-caption)}:host .notifications .note .title{overflow:hidden;text-overflow:ellipsis;font-weight:700;grid-area:title;color:var(--text-color-body)}:host .notifications .note .description{grid-area:description;overflow:hidden;text-overflow:ellipsis}:host .notifications .note .meta{grid-area:meta}:host .notifications .note .received{grid-area:received;color:var(--text-color-caption)}:host .notifications .note button{grid-area:actions;padding:0;opacity:0}:host .notifications .note button yvc-icon{width:18px;height:18px}@keyframes dialogAppear{0%{opacity:0;transform:translate(calc(var(--app-pane-padding) * -1))}to{opacity:1;transform:translate(0)}}\n"] }]
|
|
78
|
+
}], propDecorators: { onKeydown: [{
|
|
79
|
+
type: HostListener,
|
|
80
|
+
args: ['keydown', ['$event']]
|
|
81
|
+
}] } });
|
|
82
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvc3JjL2xpYi9wYWdlcy9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3NyYy9saWIvcGFnZXMvbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBUy9ELE1BQU0sT0FBTywwQkFBMEI7SUFQ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Q0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOytHQTFEVSwwQkFBMEI7bUdBQTFCLDBCQUEwQixzSUNuQnZDLHM4Q0FxQ0EsbW5HRHRCWSxZQUFZLDZIQUFFLHFCQUFxQix1RkFBRSxjQUFjLGtEQUFFLGFBQWEsK0hBQUUsWUFBWSw0SUFBRSxhQUFhLHdJQUFFLGlCQUFpQixxR0FBRSxlQUFlOzs0RkFJbEksMEJBQTBCO2tCQVB0QyxTQUFTOytCQUNFLG1CQUFtQixjQUNqQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsQ0FBQzs4QkFvQnpHLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrVHJhcEZvY3VzIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBPbkluaXQsIGVmZmVjdCwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBMb2NhbGVEYXRlUGlwZSwgVHJhbnNsYXRlTW9kdWxlLCBVdGlscyB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgTGlnaHREaXNtaXNzRGlyZWN0aXZlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtZnJhbWV3b3JrL2NvbW1vbic7XG5pbXBvcnQgeyBZVVZfSUNPTlMgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvaWNvbnMnO1xuaW1wb3J0IHsgTGlzdENvbXBvbmVudCwgTGlzdEl0ZW1EaXJlY3RpdmUgfSBmcm9tICdAeXV1dmlzL2NsaWVudC1mcmFtZXdvcmsvbGlzdCc7XG5pbXBvcnQgeyBTaGVsbE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtc2hlbGwtY29yZSc7XG5pbXBvcnQgeyBJQ09OUywgWXZjSWNvbk1vZHVsZSB9IGZyb20gJ0B5dXV2aXMvY29tcG9uZW50cy9pY29uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LW5vdGlmaWNhdGlvbnMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMaWdodERpc21pc3NEaXJlY3RpdmUsIExvY2FsZURhdGVQaXBlLCBZdmNJY29uTW9kdWxlLCBDZGtUcmFwRm9jdXMsIExpc3RDb21wb25lbnQsIExpc3RJdGVtRGlyZWN0aXZlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ub3RpZmljYXRpb25zLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBOb3RpZmljYXRpb25zUGFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcm91dGVyID0gaW5qZWN0KFJvdXRlcik7XG4gIHByaXZhdGUgc2hlbGxOb3RpZmljYXRpb25zID0gaW5qZWN0KFNoZWxsTm90aWZpY2F0aW9uc1NlcnZpY2UpO1xuICBwcml2YXRlIGVsUmVmID0gaW5qZWN0KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgX2ZvY3VzZWRJbmRleCA9IC0xO1xuICBwcml2YXRlIF9ub3RpZmljYXRpb25JRHM6IHN0cmluZ1tdID0gW107XG4gIG5vdGlmaWNhdGlvbnMgPSB0b1NpZ25hbCh0aGlzLnNoZWxsTm90aWZpY2F0aW9ucy5zaGVsbE5vdGlmaWNhdGlvbnMkKTtcbiAgbm90aWZpY2F0aW9uc0lkRWZmZWN0ID0gZWZmZWN0KCgpID0+ICh0aGlzLl9ub3RpZmljYXRpb25JRHMgPSAodGhpcy5ub3RpZmljYXRpb25zKCkgfHwgW10pLm1hcCgobikgPT4gbi5pZCkpKTtcblxuICBpY29ucyA9IHtcbiAgICBjbG9zZTogSUNPTlMuY2xlYXIsXG4gICAgdHJhc2g6IFlVVl9JQ09OUy50cmFzaCxcbiAgICBub3RlOiBZVVZfSUNPTlMubm90aWZpY2F0aW9uXG4gIH07XG5cbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgICAgY2FzZSAnRGVsZXRlJzoge1xuICAgICAgICBpZiAodGhpcy5fZm9jdXNlZEluZGV4ID49IDApIHRoaXMucmVtb3ZlKHRoaXMuX25vdGlmaWNhdGlvbklEc1t0aGlzLl9mb2N1c2VkSW5kZXhdKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXRlbVNlbGVjdGVkKGlkeDogbnVtYmVyW10pIHtcbiAgICBjb25zdCBuID0gdGhpcy5zaGVsbE5vdGlmaWNhdGlvbnMuZ2V0Tm90aWZpY2F0aW9uQnlJZCh0aGlzLl9ub3RpZmljYXRpb25JRHNbaWR4WzBdXSk7XG4gICAgaWYgKG4/LnRhcmdldFJvdXRlKSB7XG4gICAgICBhd2FpdCB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKG4udGFyZ2V0Um91dGUsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICAgIGlmIChuLnJlbW92ZU9uVGFyZ2V0Um91dGVOYXZpZ2F0ZWQpIHRoaXMucmVtb3ZlKG4uaWQpO1xuICAgIH1cbiAgfVxuXG4gIGl0ZW1Gb2N1c2VkKGluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLl9mb2N1c2VkSW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIHJlbW92ZShpZDogc3RyaW5nKSB7XG4gICAgaWYgKGlkKSB0aGlzLnNoZWxsTm90aWZpY2F0aW9ucy5yZW1vdmUoaWQpO1xuICB9XG5cbiAgcmVtb3ZlQWxsKCkge1xuICAgIHRoaXMuc2hlbGxOb3RpZmljYXRpb25zLnJlbW92ZUFsbCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgcmV0dXJuIHRoaXMucm91dGVyLm5hdmlnYXRlKFt7IG91dGxldHM6IHsgYXNpZGU6IG51bGwgfSB9XSwge1xuICAgICAgcmVwbGFjZVVybDogdHJ1ZVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zaGVsbE5vdGlmaWNhdGlvbnMubWFya0FsbEFzU2VlbigpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgZmM6IEhUTUxFbGVtZW50W10gPSBVdGlscy5nZXRGb2N1c2FibGVDaGlsZHJlbih0aGlzLmVsUmVmLm5hdGl2ZUVsZW1lbnQpIGFzIEhUTUxFbGVtZW50W107XG4gICAgICBpZiAoZmMubGVuZ3RoKSBmY1swXS5mb2N1cygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibm90aWZpY2F0aW9uc1wiICh5dXZMaWdodERpc21pc3MpPVwiY2xvc2UoKVwiIGNka1RyYXBGb2N1cz5cbiAgPGgyPnt7ICd5dXYuc2hlbGwubm90aWZpY2F0aW9ucy50aXRsZScgfCB0cmFuc2xhdGUgfX08L2gyPlxuXG4gIEBpZiAobm90aWZpY2F0aW9ucygpPy5sZW5ndGgpIHtcbiAgICA8eXV2LWxpc3QgKGl0ZW1TZWxlY3QpPVwiaXRlbVNlbGVjdGVkKCRldmVudClcIiAoaXRlbUZvY3VzKT1cIml0ZW1Gb2N1c2VkKCRldmVudClcIj5cbiAgICAgIEBmb3IgKG4gb2Ygbm90aWZpY2F0aW9ucygpOyB0cmFjayBuLmlkKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJub3RlIHt7IG4ubGV2ZWwgfX1cIiBbbmdDbGFzc109XCJ7IHdpdGhSb3V0ZTogbi50YXJnZXRSb3V0ZSB9XCIgeXV2TGlzdEl0ZW0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImljb25cIj48eXZjLWljb24gW3N2Z109XCJuLmljb24gfHwgaWNvbnMubm90ZVwiPjwveXZjLWljb24+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlY2VpdmVkXCI+e3sgbi50aW1lc3RhbXAgfCBsb2NhbGVEYXRlIH19PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+e3sgbi50aXRsZSB9fTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPnt7IG4uZGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWV0YVwiPjwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlbW92ZShuLmlkKVwiPlxuICAgICAgICAgICAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy50cmFzaFwiPjwveXZjLWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC95dXYtbGlzdD5cblxuICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgICA8YnV0dG9uIFtoaWRkZW5dPVwiIW5vdGlmaWNhdGlvbnMoKT8ubGVuZ3RoXCIgY2xhc3M9XCJpY29uIHNlY29uZGFyeVwiIChjbGljayk9XCJyZW1vdmVBbGwoKVwiPlxuICAgICAgICB7eyAneXV2LnNoZWxsLm5vdGlmaWNhdGlvbnMuYnV0dG9uLnJlbW92ZS5hbGwnIHwgdHJhbnNsYXRlIH19PHl2Yy1pY29uIFtzdmddPVwiaWNvbnMudHJhc2hcIj48L3l2Yy1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIDxkaXYgY2xhc3M9XCJlbXB0eVwiPlxuICAgICAgPHA+e3sgJ3l1di5zaGVsbC5ub3RpZmljYXRpb25zLmVtcHR5JyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgfVxuXG4gIDxidXR0b24gY2xhc3M9XCJpY29uIGNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICA8eXZjLWljb24gW3N2Z109XCJpY29ucy5jbG9zZVwiPjwveXZjLWljb24+XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Component, inject, signal } from '@angular/core';
|
|
2
|
+
import { toSignal } from '@angular/core/rxjs-interop';
|
|
3
|
+
import { ConfigService, TranslateModule, TranslateService, UserService } from '@yuuvis/client-core';
|
|
4
|
+
import { CommonModule, DOCUMENT } from '@angular/common';
|
|
5
|
+
import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { ShellService } from '@yuuvis/client-shell-core';
|
|
7
|
+
import { map } from 'rxjs';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@yuuvis/client-core";
|
|
11
|
+
export class SettingsPageComponent {
|
|
12
|
+
constructor() {
|
|
13
|
+
this.userService = inject(UserService);
|
|
14
|
+
this.config = inject(ConfigService);
|
|
15
|
+
this.translate = inject(TranslateService);
|
|
16
|
+
this.shell = inject(ShellService);
|
|
17
|
+
this.document = inject(DOCUMENT);
|
|
18
|
+
this.#fb = inject(FormBuilder);
|
|
19
|
+
this.clientLocales = signal([]);
|
|
20
|
+
this.clientVersion = signal(undefined);
|
|
21
|
+
this.user = toSignal(this.userService.user$);
|
|
22
|
+
this.appSettingForms$ = this.shell.appSettings$.pipe(map((settings) => settings.map((e) => {
|
|
23
|
+
const x = {};
|
|
24
|
+
const fcn = e.properties.map((p) => ({
|
|
25
|
+
label: this.translate.instant(p.label) || p.label,
|
|
26
|
+
name: p.name,
|
|
27
|
+
type: p.type
|
|
28
|
+
}));
|
|
29
|
+
e.properties.forEach((p) => {
|
|
30
|
+
x[p.name] = [p.value];
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
appID: e.appID,
|
|
34
|
+
label: e.label,
|
|
35
|
+
formControls: fcn,
|
|
36
|
+
form: this.#fb.group(x)
|
|
37
|
+
};
|
|
38
|
+
})));
|
|
39
|
+
}
|
|
40
|
+
#fb;
|
|
41
|
+
saveAppSettings(appID, form) {
|
|
42
|
+
this.userService
|
|
43
|
+
.saveUserSettings({
|
|
44
|
+
clientAppSettings: {
|
|
45
|
+
[appID]: form.value
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
.subscribe({
|
|
49
|
+
next: () => {
|
|
50
|
+
form.markAsPristine();
|
|
51
|
+
},
|
|
52
|
+
error: (err) => {
|
|
53
|
+
console.error('Error saving app settings', err);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
changeClientLocale(iso) {
|
|
58
|
+
this.userService.changeClientLocale(iso);
|
|
59
|
+
}
|
|
60
|
+
ngOnInit() {
|
|
61
|
+
this.clientVersion.set(this.document.body.getAttribute('data-version') ?? 'dev');
|
|
62
|
+
this.clientLocales.set(this.config.getClientLocales());
|
|
63
|
+
}
|
|
64
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingsPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
65
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: SettingsPageComponent, isStandalone: true, selector: "yuv-settings", ngImport: i0, template: "<header>\n <h1>{{ 'yuv.shell.settings.title' | translate }}</h1>\n <h4>{{ 'yuc.shell.settings.client.version' | translate }}: {{ clientVersion() }}</h4>\n</header>\n\n\n<main>@if (user()) {\n <section class=\"user\">\n <!-- <yuv-user-avatar class=\"background\" [user]=\"user()\"></yuv-user-avatar> -->\n <div class=\"user\">\n <div class=\"meta uname\">{{ user()!.username }}</div>\n <h2>{{ user()!.title }}</h2>\n <div class=\"meta uemail\">{{ user()!.email }}</div>\n <div class=\"meta utenant\">{{ 'yuv.shell.settings.tenant' | translate }}: {{ user()!.tenant }}</div>\n </div>\n </section>\n}\n <!-- language -->\n <section yuvOfflineDisabled>\n <div class=\"label\" translate>yuv.shell.settings.language</div>\n <div class=\"value buttons\">\n @for (locale of clientLocales(); track locale.iso) {\n <button class=\"toggle secondary\" (click)=\"changeClientLocale(locale.iso)\" [ngClass]=\"{ active: translate.currentLang === locale.iso }\">\n {{ locale.label }}\n </button>\n }\n </div>\n </section>\n\n <!-- app settings -->\n <!-- TODO: activate one feature is refined -->\n <!-- @for (c of appSettingForms$ | async; track $index) {\n <section>\n {{ c.label }}\n <form [formGroup]=\"c.form\" (ngSubmit)=\"saveAppSettings(c.appID, c.form)\">\n @for (n of c.formControls; track $index) {\n <label\n >{{ n.label }}\n\n @switch (n.type) {\n @case ('string') {\n <input type=\"text\" [formControlName]=\"n.name\" />\n }\n @case ('number') {\n <input type=\"number\" [formControlName]=\"n.name\" />\n }\n }\n </label>\n }\n <button [ngClass]=\"{ hideen: c.form.untouched }\" [disabled]=\"c.form.invalid\">Save</button>\n </form>\n </section>\n } -->\n</main>\n", styles: [":host{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"settings\";height:100%;overflow:hidden;overflow-y:auto}:host header{grid-area:header;padding:calc(var(--app-pane-padding) * 2)}:host header h1,:host header h4{margin:0}:host header h1{font-size:var(--font-display);font-weight:400}:host header h4{font-size:var(--font-cation);font-weight:400;font-style:italic;color:var(--text-color-caption)}:host main{grid-area:settings;padding:var(--app-pane-padding);overflow-y:auto}:host main section{display:flex;flex-flow:column;padding:var(--app-pane-padding)}:host main section .label{margin-block-end:1em}:host main section .value{display:flex;flex-flow:row wrap;gap:calc(var(--app-pane-padding) / 4)}:host main section.user h2{margin:0 0 1rem;font-weight:400}:host button.active{background-color:var(--color-accent);color:var(--color-accent-tone);pointer-events:none}:host button.color.clear{padding:2px 8px}:host button.color.accent.active{outline:2px solid #fff;outline-offset:-2px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "ngmodule", type: ReactiveFormsModule }] }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SettingsPageComponent, decorators: [{
|
|
68
|
+
type: Component,
|
|
69
|
+
args: [{ selector: 'yuv-settings', standalone: true, imports: [CommonModule, TranslateModule, ReactiveFormsModule], template: "<header>\n <h1>{{ 'yuv.shell.settings.title' | translate }}</h1>\n <h4>{{ 'yuc.shell.settings.client.version' | translate }}: {{ clientVersion() }}</h4>\n</header>\n\n\n<main>@if (user()) {\n <section class=\"user\">\n <!-- <yuv-user-avatar class=\"background\" [user]=\"user()\"></yuv-user-avatar> -->\n <div class=\"user\">\n <div class=\"meta uname\">{{ user()!.username }}</div>\n <h2>{{ user()!.title }}</h2>\n <div class=\"meta uemail\">{{ user()!.email }}</div>\n <div class=\"meta utenant\">{{ 'yuv.shell.settings.tenant' | translate }}: {{ user()!.tenant }}</div>\n </div>\n </section>\n}\n <!-- language -->\n <section yuvOfflineDisabled>\n <div class=\"label\" translate>yuv.shell.settings.language</div>\n <div class=\"value buttons\">\n @for (locale of clientLocales(); track locale.iso) {\n <button class=\"toggle secondary\" (click)=\"changeClientLocale(locale.iso)\" [ngClass]=\"{ active: translate.currentLang === locale.iso }\">\n {{ locale.label }}\n </button>\n }\n </div>\n </section>\n\n <!-- app settings -->\n <!-- TODO: activate one feature is refined -->\n <!-- @for (c of appSettingForms$ | async; track $index) {\n <section>\n {{ c.label }}\n <form [formGroup]=\"c.form\" (ngSubmit)=\"saveAppSettings(c.appID, c.form)\">\n @for (n of c.formControls; track $index) {\n <label\n >{{ n.label }}\n\n @switch (n.type) {\n @case ('string') {\n <input type=\"text\" [formControlName]=\"n.name\" />\n }\n @case ('number') {\n <input type=\"number\" [formControlName]=\"n.name\" />\n }\n }\n </label>\n }\n <button [ngClass]=\"{ hideen: c.form.untouched }\" [disabled]=\"c.form.invalid\">Save</button>\n </form>\n </section>\n } -->\n</main>\n", styles: [":host{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;grid-template-areas:\"header\" \"settings\";height:100%;overflow:hidden;overflow-y:auto}:host header{grid-area:header;padding:calc(var(--app-pane-padding) * 2)}:host header h1,:host header h4{margin:0}:host header h1{font-size:var(--font-display);font-weight:400}:host header h4{font-size:var(--font-cation);font-weight:400;font-style:italic;color:var(--text-color-caption)}:host main{grid-area:settings;padding:var(--app-pane-padding);overflow-y:auto}:host main section{display:flex;flex-flow:column;padding:var(--app-pane-padding)}:host main section .label{margin-block-end:1em}:host main section .value{display:flex;flex-flow:row wrap;gap:calc(var(--app-pane-padding) / 4)}:host main section.user h2{margin:0 0 1rem;font-weight:400}:host button.active{background-color:var(--color-accent);color:var(--color-accent-tone);pointer-events:none}:host button.color.clear{padding:2px 8px}:host button.color.accent.active{outline:2px solid #fff;outline-offset:-2px}\n"] }]
|
|
70
|
+
}] });
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3NyYy9saWIvcGFnZXMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3NyYy9saWIvcGFnZXMvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWtCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsV0FBVyxFQUErQixNQUFNLHFCQUFxQixDQUFDO0FBRWpJLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBYSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdFLE9BQU8sRUFBNkMsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEcsT0FBTyxFQUFFLEdBQUcsRUFBYyxNQUFNLE1BQU0sQ0FBQzs7OztBQVN2QyxNQUFNLE9BQU8scUJBQXFCO0lBUGxDO1FBUVUsZ0JBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbEMsV0FBTSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1QixhQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFD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IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBPbkluaXQsIFNpZ25hbCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UsIFRyYW5zbGF0ZU1vZHVsZSwgVHJhbnNsYXRlU2VydmljZSwgVXNlclNlcnZpY2UsIFl1dkNvbmZpZ0xhbmd1YWdlcywgWXV2VXNlciB9IGZyb20gJ0B5dXV2aXMvY2xpZW50LWNvcmUnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTaGVsbEFwcFNldHRpbmdQcm9wZXJ0eSwgU2hlbGxBcHBTZXR0aW5ncywgU2hlbGxTZXJ2aWNlIH0gZnJvbSAnQHl1dXZpcy9jbGllbnQtc2hlbGwtY29yZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LXNldHRpbmdzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NldHRpbmdzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2V0dGluZ3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZXR0aW5nc1BhZ2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHVzZXJTZXJ2aWNlID0gaW5qZWN0KFVzZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maWcgPSBpbmplY3QoQ29uZmlnU2VydmljZSk7XG4gIHB1YmxpYyB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG4gIHByaXZhdGUgc2hlbGwgPSBpbmplY3QoU2hlbGxTZXJ2aWNlKTtcbiAgcmVhZG9ubHkgZG9jdW1lbnQgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICNmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG5cbiAgY2xpZW50TG9jYWxlcyA9IHNpZ25hbDxZdXZDb25maWdMYW5ndWFnZXNbXT4oW10pO1xuICBjbGllbnRWZXJzaW9uID0gc2lnbmFsPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgdXNlcjogU2lnbmFsPFl1dlVzZXIgfCB1bmRlZmluZWQ+ID0gdG9TaWduYWwodGhpcy51c2VyU2VydmljZS51c2VyJCk7XG4gIGFwcFNldHRpbmdGb3JtcyQ6IE9ic2VydmFibGU8XG4gICAge1xuICAgICAgYXBwSUQ6IHN0cmluZztcbiAgICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgICBmb3JtQ29udHJvbHM6IFNoZWxsQXBwU2V0dGluZ1Byb3BlcnR5W107XG4gICAgICBmb3JtOiBGb3JtR3JvdXA7XG4gICAgfVtdXG4gID4gPSB0aGlzLnNoZWxsLmFwcFNldHRpbmdzJC5waXBlKFxuICAgIG1hcCgoc2V0dGluZ3M6IFNoZWxsQXBwU2V0dGluZ3NbXSkgPT5cbiAgICAgIHNldHRpbmdzLm1hcCgoZSkgPT4ge1xuICAgICAgICBjb25zdCB4OiBhbnkgPSB7fTtcbiAgICAgICAgY29uc3QgZmNuOiBTaGVsbEFwcFNldHRpbmdQcm9wZXJ0eVtdID0gZS5wcm9wZXJ0aWVzLm1hcCgocCkgPT4gKHtcbiAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGUuaW5zdGFudChwLmxhYmVsKSB8fCBwLmxhYmVsLFxuICAgICAgICAgIG5hbWU6IHAubmFtZSxcbiAgICAgICAgICB0eXBlOiBwLnR5cGVcbiAgICAgICAgfSkpO1xuICAgICAgICBlLnByb3BlcnRpZXMuZm9yRWFjaCgocCkgPT4ge1xuICAgICAgICAgIHhbcC5uYW1lXSA9IFtwLnZhbHVlXTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYXBwSUQ6IGUuYXBwSUQsXG4gICAgICAgICAgbGFiZWw6IGUubGFiZWwsXG4gICAgICAgICAgZm9ybUNvbnRyb2xzOiBmY24sXG4gICAgICAgICAgZm9ybTogdGhpcy4jZmIuZ3JvdXAoeClcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgKVxuICApO1xuXG4gIHNhdmVBcHBTZXR0aW5ncyhhcHBJRDogc3RyaW5nLCBmb3JtOiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlXG4gICAgICAuc2F2ZVVzZXJTZXR0aW5ncyh7XG4gICAgICAgIGNsaWVudEFwcFNldHRpbmdzOiB7XG4gICAgICAgICAgW2FwcElEXTogZm9ybS52YWx1ZVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICBmb3JtLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3Igc2F2aW5nIGFwcCBzZXR0aW5ncycsIGVycik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgY2hhbmdlQ2xpZW50TG9jYWxlKGlzbzogc3RyaW5nKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VDbGllbnRMb2NhbGUoaXNvKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuY2xpZW50VmVyc2lvbi5zZXQodGhpcy5kb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnZGF0YS12ZXJzaW9uJykgPz8gJ2RldicpO1xuICAgIHRoaXMuY2xpZW50TG9jYWxlcy5zZXQodGhpcy5jb25maWcuZ2V0Q2xpZW50TG9jYWxlcygpKTtcbiAgfVxufVxuIiwiPGhlYWRlcj5cbiAgPGgxPnt7ICd5dXYuc2hlbGwuc2V0dGluZ3MudGl0bGUnIHwgdHJhbnNsYXRlIH19PC9oMT5cbiAgPGg0Pnt7ICd5dWMuc2hlbGwuc2V0dGluZ3MuY2xpZW50LnZlcnNpb24nIHwgdHJhbnNsYXRlIH19OiB7eyBjbGllbnRWZXJzaW9uKCkgfX08L2g0PlxuPC9oZWFkZXI+XG5cblxuPG1haW4+QGlmICh1c2VyKCkpIHtcbiAgPHNlY3Rpb24gY2xhc3M9XCJ1c2VyXCI+XG4gICAgPCEtLSA8eXV2LXVzZXItYXZhdGFyIGNsYXNzPVwiYmFja2dyb3VuZFwiIFt1c2VyXT1cInVzZXIoKVwiPjwveXV2LXVzZXItYXZhdGFyPiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwidXNlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEgdW5hbWVcIj57eyB1c2VyKCkhLnVzZXJuYW1lIH19PC9kaXY+XG4gICAgICA8aDI+e3sgdXNlcigpIS50aXRsZSB9fTwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YSB1ZW1haWxcIj57eyB1c2VyKCkhLmVtYWlsIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YSB1dGVuYW50XCI+e3sgJ3l1di5zaGVsbC5zZXR0aW5ncy50ZW5hbnQnIHwgdHJhbnNsYXRlIH19OiB7eyB1c2VyKCkhLnRlbmFudCB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG59XG4gIDwhLS0gbGFuZ3VhZ2UgLS0+XG4gIDxzZWN0aW9uIHl1dk9mZmxpbmVEaXNhYmxlZD5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+eXV2LnNoZWxsLnNldHRpbmdzLmxhbmd1YWdlPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInZhbHVlIGJ1dHRvbnNcIj5cbiAgICAgIEBmb3IgKGxvY2FsZSBvZiBjbGllbnRMb2NhbGVzKCk7IHRyYWNrIGxvY2FsZS5pc28pIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBzZWNvbmRhcnlcIiAoY2xpY2spPVwiY2hhbmdlQ2xpZW50TG9jYWxlKGxvY2FsZS5pc28pXCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyA9PT0gbG9jYWxlLmlzbyB9XCI+XG4gICAgICAgICAge3sgbG9jYWxlLmxhYmVsIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICA8L3NlY3Rpb24+XG5cbiAgPCEtLSBhcHAgc2V0dGluZ3MgLS0+XG4gIDwhLS0gVE9ETzogYWN0aXZhdGUgb25lIGZlYXR1cmUgaXMgcmVmaW5lZCAtLT5cbiAgPCEtLSBAZm9yIChjIG9mIGFwcFNldHRpbmdGb3JtcyQgfCBhc3luYzsgdHJhY2sgJGluZGV4KSB7XG4gICAgPHNlY3Rpb24+XG4gICAgICB7eyBjLmxhYmVsIH19XG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImMuZm9ybVwiIChuZ1N1Ym1pdCk9XCJzYXZlQXBwU2V0dGluZ3MoYy5hcHBJRCwgYy5mb3JtKVwiPlxuICAgICAgICBAZm9yIChuIG9mIGMuZm9ybUNvbnRyb2xzOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgID57eyBuLmxhYmVsIH19XG5cbiAgICAgICAgICAgIEBzd2l0Y2ggKG4udHlwZSkge1xuICAgICAgICAgICAgICBAY2FzZSAoJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIm4ubmFtZVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgQGNhc2UgKCdudW1iZXInKSB7XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBbZm9ybUNvbnRyb2xOYW1lXT1cIm4ubmFtZVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICB9XG4gICAgICAgIDxidXR0b24gW25nQ2xhc3NdPVwieyBoaWRlZW46IGMuZm9ybS51bnRvdWNoZWQgfVwiIFtkaXNhYmxlZF09XCJjLmZvcm0uaW52YWxpZFwiPlNhdmU8L2J1dHRvbj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L3NlY3Rpb24+XG4gIH0gLS0+XG48L21haW4+XG4iXX0=
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class WebShareTargetPageComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
navigator.serviceWorker.onmessage = (e) => {
|
|
7
|
+
const file = e.data.file;
|
|
8
|
+
console.log(file);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WebShareTargetPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: WebShareTargetPageComponent, isStandalone: true, selector: "yuv-web-share-target", ngImport: i0, template: "<p>web-share-target works!</p>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WebShareTargetPageComponent, decorators: [{
|
|
15
|
+
type: Component,
|
|
16
|
+
args: [{ selector: 'yuv-web-share-target', standalone: true, imports: [CommonModule], template: "<p>web-share-target works!</p>\n" }]
|
|
17
|
+
}], ctorParameters: () => [] });
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLXNoYXJlLXRhcmdldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvc3JjL2xpYi9wYWdlcy93ZWItc2hhcmUtdGFyZ2V0L3dlYi1zaGFyZS10YXJnZXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3NyYy9saWIvcGFnZXMvd2ViLXNoYXJlLXRhcmdldC93ZWItc2hhcmUtdGFyZ2V0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOztBQVMvQyxNQUFNLE9BQU8sMkJBQTJCO0lBRXRDO1FBQ0UsU0FBUyxDQUFDLGFBQWEsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUV6QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXBCLENBQUMsQ0FBQTtJQUNILENBQUM7K0dBVFUsMkJBQTJCO21HQUEzQiwyQkFBMkIsZ0ZDVnhDLGtDQUNBLHlEREtZLFlBQVk7OzRGQUlYLDJCQUEyQjtrQkFQdkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd5dXYtd2ViLXNoYXJlLXRhcmdldCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vd2ViLXNoYXJlLXRhcmdldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi93ZWItc2hhcmUtdGFyZ2V0LmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBXZWJTaGFyZVRhcmdldFBhZ2VDb21wb25lbnQge1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLm9ubWVzc2FnZSA9IChlKSA9PiB7XG4gICAgICBjb25zdCBmaWxlID0gZS5kYXRhLmZpbGU7XG5cbiAgICAgIGNvbnNvbGUubG9nKGZpbGUpO1xuICAgICAgXG4gICAgfVxuICB9XG59XG4iLCI8cD53ZWItc2hhcmUtdGFyZ2V0IHdvcmtzITwvcD5cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './lib/widget-dashboard.component';
|
|
2
|
+
export * from './lib/widget-dashboard.module';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvd2lkZ2V0LWRhc2hib2FyZC9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLCtCQUErQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvd2lkZ2V0LWRhc2hib2FyZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvd2lkZ2V0LWRhc2hib2FyZC5tb2R1bGUnO1xuIl19
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { WIDGET_DASHBOARD_CONFIG } from './widget-dashboard.config';
|
|
3
|
+
import { WidgetGridUtils } from '@yuuvis/widget-grid';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@yuuvis/widget-grid";
|
|
6
|
+
export class WidgetDashboardPageComponent {
|
|
7
|
+
constructor(config) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.gridItemConfig = [];
|
|
10
|
+
this.editMode = false;
|
|
11
|
+
if (config) {
|
|
12
|
+
const cfg = localStorage.getItem(config.id);
|
|
13
|
+
if (cfg) {
|
|
14
|
+
if (config?.workspaces) {
|
|
15
|
+
this.workspaceConfig = JSON.parse(cfg);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
this.gridItemConfig = JSON.parse(cfg);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
onGridEvent(e) {
|
|
24
|
+
console.log(e);
|
|
25
|
+
}
|
|
26
|
+
onGridChange(e) {
|
|
27
|
+
this._saveConfig(e);
|
|
28
|
+
}
|
|
29
|
+
onWorkspacesConfigChange(e) {
|
|
30
|
+
this._saveConfig(e);
|
|
31
|
+
}
|
|
32
|
+
_saveConfig(e) {
|
|
33
|
+
if (this.config)
|
|
34
|
+
localStorage.setItem(this.config.id, WidgetGridUtils.gridConfigStringify(e));
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetDashboardPageComponent, deps: [{ token: WIDGET_DASHBOARD_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
37
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WidgetDashboardPageComponent, selector: "yuv-widget-dashboard", ngImport: i0, template: "@if (config?.workspaces) {\n <yuv-widget-grid-workspaces\n [buckets]=\"config?.buckets\"\n [workspaceConfig]=\"workspaceConfig\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (configChange)=\"onWorkspacesConfigChange($event)\"\n ></yuv-widget-grid-workspaces>\n} @else {\n <yuv-widget-grid\n [buckets]=\"config?.buckets\"\n [gridItemConfig]=\"gridItemConfig\"\n [editMode]=\"editMode\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (gridChange)=\"onGridChange($event)\"\n ></yuv-widget-grid>\n}\n", styles: [":host{--wd-grid-line-color: var(--panel-divider-color)}:host ::ng-deep gridster{background-color:transparent}:host ::ng-deep gridster .gridster-row,:host ::ng-deep gridster .gridster-column{border-color:var(--wd-grid-line-color)}\n"], dependencies: [{ kind: "component", type: i1.WidgetGridComponent, selector: "yuv-widget-grid", inputs: ["gridConfig", "editMode", "gridItemConfig", "buckets"], outputs: ["gridChange", "gridItemEvent", "widgetPickerOpen"] }, { kind: "component", type: i1.WidgetGridWorkspacesComponent, selector: "yuv-widget-grid-workspaces", inputs: ["options", "workspaceConfig", "preventAdd", "workspaceLabelMaxLength", "buckets"], outputs: ["configChange", "gridItemEvent", "editModeChange"] }] }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetDashboardPageComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{ selector: 'yuv-widget-dashboard', template: "@if (config?.workspaces) {\n <yuv-widget-grid-workspaces\n [buckets]=\"config?.buckets\"\n [workspaceConfig]=\"workspaceConfig\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (configChange)=\"onWorkspacesConfigChange($event)\"\n ></yuv-widget-grid-workspaces>\n} @else {\n <yuv-widget-grid\n [buckets]=\"config?.buckets\"\n [gridItemConfig]=\"gridItemConfig\"\n [editMode]=\"editMode\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (gridChange)=\"onGridChange($event)\"\n ></yuv-widget-grid>\n}\n", styles: [":host{--wd-grid-line-color: var(--panel-divider-color)}:host ::ng-deep gridster{background-color:transparent}:host ::ng-deep gridster .gridster-row,:host ::ng-deep gridster .gridster-column{border-color:var(--wd-grid-line-color)}\n"] }]
|
|
42
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
43
|
+
type: Inject,
|
|
44
|
+
args: [WIDGET_DASHBOARD_CONFIG]
|
|
45
|
+
}] }] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRhc2hib2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvd2lkZ2V0LWRhc2hib2FyZC9zcmMvbGliL3dpZGdldC1kYXNoYm9hcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3dpZGdldC1kYXNoYm9hcmQvc3JjL2xpYi93aWRnZXQtZGFzaGJvYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSx1QkFBdUIsRUFBeUIsTUFBTSwyQkFBMkIsQ0FBQztBQUMzRixPQUFPLEVBQXVDLGVBQWUsRUFBNkIsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBT3RILE1BQU0sT0FBTyw0QkFBNEI7SUFLdkMsWUFBb0QsTUFBeUM7UUFBekMsV0FBTSxHQUFOLE1BQU0sQ0FBbUM7UUFIN0YsbUJBQWMsR0FBMkIsRUFBRSxDQUFDO1FBQzVDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFHZixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDNUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsQ0FBQztvQkFDdkIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLENBQWdCO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUF5QjtRQUNwQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxDQUE0QjtRQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFTyxXQUFXLENBQUMsQ0FBcUQ7UUFDdkUsSUFBSSxJQUFJLENBQUMsTUFBTTtZQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsZUFBZSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQzsrR0FoQ1UsNEJBQTRCLGtCQUtuQix1QkFBdUI7bUdBTGhDLDRCQUE0Qiw0RENUekMsNmdCQWdCQTs7NEZEUGEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLHNCQUFzQjs7MEJBU25CLE1BQU07MkJBQUMsdUJBQXVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdJREdFVF9EQVNIQk9BUkRfQ09ORklHLCBXaWRnZXREYXNoYm9hcmRDb25maWcgfSBmcm9tICcuL3dpZGdldC1kYXNoYm9hcmQuY29uZmlnJztcbmltcG9ydCB7IEdyaWRJdGVtRXZlbnQsIFdpZGdldEdyaWRJdGVtQ29uZmlnLCBXaWRnZXRHcmlkVXRpbHMsIFdpZGdldEdyaWRXb3Jrc3BhY2VDb25maWcgfSBmcm9tICdAeXV1dmlzL3dpZGdldC1ncmlkJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAneXV2LXdpZGdldC1kYXNoYm9hcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vd2lkZ2V0LWRhc2hib2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dpZGdldC1kYXNoYm9hcmQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXREYXNoYm9hcmRQYWdlQ29tcG9uZW50IHtcbiAgd29ya3NwYWNlQ29uZmlnPzogV2lkZ2V0R3JpZFdvcmtzcGFjZUNvbmZpZztcbiAgZ3JpZEl0ZW1Db25maWc6IFdpZGdldEdyaWRJdGVtQ29uZmlnW10gPSBbXTtcbiAgZWRpdE1vZGUgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFdJREdFVF9EQVNIQk9BUkRfQ09ORklHKSBwdWJsaWMgY29uZmlnOiBXaWRnZXREYXNoYm9hcmRDb25maWcgfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICBjb25zdCBjZmcgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShjb25maWcuaWQpO1xuICAgICAgaWYgKGNmZykge1xuICAgICAgICBpZiAoY29uZmlnPy53b3Jrc3BhY2VzKSB7XG4gICAgICAgICAgdGhpcy53b3Jrc3BhY2VDb25maWcgPSBKU09OLnBhcnNlKGNmZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5ncmlkSXRlbUNvbmZpZyA9IEpTT04ucGFyc2UoY2ZnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uR3JpZEV2ZW50KGU6IEdyaWRJdGVtRXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgfVxuXG4gIG9uR3JpZENoYW5nZShlOiBXaWRnZXRHcmlkSXRlbUNvbmZpZ1tdKSB7XG4gICAgdGhpcy5fc2F2ZUNvbmZpZyhlKTtcbiAgfVxuXG4gIG9uV29ya3NwYWNlc0NvbmZpZ0NoYW5nZShlOiBXaWRnZXRHcmlkV29ya3NwYWNlQ29uZmlnKSB7XG4gICAgdGhpcy5fc2F2ZUNvbmZpZyhlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3NhdmVDb25maWcoZTogV2lkZ2V0R3JpZEl0ZW1Db25maWdbXSB8IFdpZGdldEdyaWRXb3Jrc3BhY2VDb25maWcpIHtcbiAgICBpZiAodGhpcy5jb25maWcpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuY29uZmlnLmlkLCBXaWRnZXRHcmlkVXRpbHMuZ3JpZENvbmZpZ1N0cmluZ2lmeShlKSk7XG4gIH1cbn1cbiIsIkBpZiAoY29uZmlnPy53b3Jrc3BhY2VzKSB7XG4gIDx5dXYtd2lkZ2V0LWdyaWQtd29ya3NwYWNlc1xuICAgIFtidWNrZXRzXT1cImNvbmZpZz8uYnVja2V0c1wiXG4gICAgW3dvcmtzcGFjZUNvbmZpZ109XCJ3b3Jrc3BhY2VDb25maWdcIlxuICAgIChncmlkSXRlbUV2ZW50KT1cIm9uR3JpZEV2ZW50KCRldmVudClcIlxuICAgIChjb25maWdDaGFuZ2UpPVwib25Xb3Jrc3BhY2VzQ29uZmlnQ2hhbmdlKCRldmVudClcIlxuICA+PC95dXYtd2lkZ2V0LWdyaWQtd29ya3NwYWNlcz5cbn0gQGVsc2Uge1xuICA8eXV2LXdpZGdldC1ncmlkXG4gICAgW2J1Y2tldHNdPVwiY29uZmlnPy5idWNrZXRzXCJcbiAgICBbZ3JpZEl0ZW1Db25maWddPVwiZ3JpZEl0ZW1Db25maWdcIlxuICAgIFtlZGl0TW9kZV09XCJlZGl0TW9kZVwiXG4gICAgKGdyaWRJdGVtRXZlbnQpPVwib25HcmlkRXZlbnQoJGV2ZW50KVwiXG4gICAgKGdyaWRDaGFuZ2UpPVwib25HcmlkQ2hhbmdlKCRldmVudClcIlxuICA+PC95dXYtd2lkZ2V0LWdyaWQ+XG59XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { InjectionToken } from "@angular/core";
|
|
2
|
+
export const WIDGET_DASHBOARD_CONFIG = new InjectionToken('WIDGET_DASHBOARD_CONFIG');
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRhc2hib2FyZC5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvd2lkZ2V0LWRhc2hib2FyZC9zcmMvbGliL3dpZGdldC1kYXNoYm9hcmQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0MsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IFdJREdFVF9EQVNIQk9BUkRfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuKCdXSURHRVRfREFTSEJPQVJEX0NPTkZJRycpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpZGdldERhc2hib2FyZENvbmZpZyB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBidWNrZXRzPzogc3RyaW5nW107XG4gICAgd29ya3NwYWNlcz86IGJvb2xlYW47XG59Il19
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { WidgetDashboardPageComponent } from './widget-dashboard.component';
|
|
4
|
+
import { RouterModule } from '@angular/router';
|
|
5
|
+
import { YuvWidgetGridModule } from '@yuuvis/widget-grid';
|
|
6
|
+
import { WIDGET_DASHBOARD_CONFIG } from './widget-dashboard.config';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/router";
|
|
9
|
+
export function ConfigFactory() {
|
|
10
|
+
return YuvWidgetDashboardModule.config;
|
|
11
|
+
}
|
|
12
|
+
export class YuvWidgetDashboardModule {
|
|
13
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
14
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, declarations: [WidgetDashboardPageComponent], imports: [CommonModule,
|
|
15
|
+
YuvWidgetGridModule, i1.RouterModule], exports: [WidgetDashboardPageComponent] }); }
|
|
16
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, providers: [
|
|
17
|
+
{
|
|
18
|
+
provide: WIDGET_DASHBOARD_CONFIG,
|
|
19
|
+
useFactory: ConfigFactory
|
|
20
|
+
}
|
|
21
|
+
], imports: [CommonModule,
|
|
22
|
+
YuvWidgetGridModule,
|
|
23
|
+
RouterModule.forChild([
|
|
24
|
+
{ path: '', component: WidgetDashboardPageComponent },
|
|
25
|
+
{ path: '**', redirectTo: '/' }
|
|
26
|
+
])] }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, decorators: [{
|
|
29
|
+
type: NgModule,
|
|
30
|
+
args: [{
|
|
31
|
+
imports: [
|
|
32
|
+
CommonModule,
|
|
33
|
+
YuvWidgetGridModule,
|
|
34
|
+
RouterModule.forChild([
|
|
35
|
+
{ path: '', component: WidgetDashboardPageComponent },
|
|
36
|
+
{ path: '**', redirectTo: '/' }
|
|
37
|
+
])
|
|
38
|
+
],
|
|
39
|
+
declarations: [WidgetDashboardPageComponent],
|
|
40
|
+
exports: [WidgetDashboardPageComponent],
|
|
41
|
+
providers: [
|
|
42
|
+
{
|
|
43
|
+
provide: WIDGET_DASHBOARD_CONFIG,
|
|
44
|
+
useFactory: ConfigFactory
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
}]
|
|
48
|
+
}] });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWRhc2hib2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3l1dXZpcy9jbGllbnQtc2hlbGwvd2lkZ2V0LWRhc2hib2FyZC9zcmMvbGliL3dpZGdldC1kYXNoYm9hcmQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsdUJBQXVCLEVBQXlCLE1BQU0sMkJBQTJCLENBQUM7OztBQUUzRixNQUFNLFVBQVUsYUFBYTtJQUMzQixPQUFPLHdCQUF3QixDQUFDLE1BQU0sQ0FBQztBQUN6QyxDQUFDO0FBb0JELE1BQU0sT0FBTyx3QkFBd0I7K0dBQXhCLHdCQUF3QjtnSEFBeEIsd0JBQXdCLGlCQVRwQiw0QkFBNEIsYUFQekMsWUFBWTtZQUNaLG1CQUFtQiw4QkFPWCw0QkFBNEI7Z0hBUTNCLHdCQUF3QixhQVB4QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSx1QkFBdUI7Z0JBQ2hDLFVBQVUsRUFBRSxhQUFhO2FBQzFCO1NBQ0YsWUFkQyxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLFlBQVksQ0FBQyxRQUFRLENBQUM7Z0JBQ3BCLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsNEJBQTRCLEVBQUU7Z0JBQ3JELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFO2FBQ2hDLENBQUM7OzRGQVdPLHdCQUF3QjtrQkFsQnBDLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osbUJBQW1CO3dCQUNuQixZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUNwQixFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLDRCQUE0QixFQUFFOzRCQUNyRCxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRTt5QkFDaEMsQ0FBQztxQkFDSDtvQkFDRCxZQUFZLEVBQUUsQ0FBQyw0QkFBNEIsQ0FBQztvQkFDNUMsT0FBTyxFQUFFLENBQUMsNEJBQTRCLENBQUM7b0JBQ3ZDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsdUJBQXVCOzRCQUNoQyxVQUFVLEVBQUUsYUFBYTt5QkFDMUI7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFdpZGdldERhc2hib2FyZFBhZ2VDb21wb25lbnQgfSBmcm9tICcuL3dpZGdldC1kYXNoYm9hcmQuY29tcG9uZW50JztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBZdXZXaWRnZXRHcmlkTW9kdWxlIH0gZnJvbSAnQHl1dXZpcy93aWRnZXQtZ3JpZCc7XG5pbXBvcnQgeyBXSURHRVRfREFTSEJPQVJEX0NPTkZJRywgV2lkZ2V0RGFzaGJvYXJkQ29uZmlnIH0gZnJvbSAnLi93aWRnZXQtZGFzaGJvYXJkLmNvbmZpZyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBDb25maWdGYWN0b3J5KCkge1xuICByZXR1cm4gWXV2V2lkZ2V0RGFzaGJvYXJkTW9kdWxlLmNvbmZpZztcbn1cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBZdXZXaWRnZXRHcmlkTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZS5mb3JDaGlsZChbXG4gICAgICB7IHBhdGg6ICcnLCBjb21wb25lbnQ6IFdpZGdldERhc2hib2FyZFBhZ2VDb21wb25lbnQgfSxcbiAgICAgIHsgcGF0aDogJyoqJywgcmVkaXJlY3RUbzogJy8nIH1cbiAgICBdKVxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtXaWRnZXREYXNoYm9hcmRQYWdlQ29tcG9uZW50XSxcbiAgZXhwb3J0czogW1dpZGdldERhc2hib2FyZFBhZ2VDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBXSURHRVRfREFTSEJPQVJEX0NPTkZJRyxcbiAgICAgIHVzZUZhY3Rvcnk6IENvbmZpZ0ZhY3RvcnlcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgWXV2V2lkZ2V0RGFzaGJvYXJkTW9kdWxlIHtcbiAgc3RhdGljIGNvbmZpZz86IFdpZGdldERhc2hib2FyZENvbmZpZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXV1dmlzLWNsaWVudC1zaGVsbC13aWRnZXQtZGFzaGJvYXJkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy95dXV2aXMvY2xpZW50LXNoZWxsL3dpZGdldC1kYXNoYm9hcmQvc3JjL3l1dXZpcy1jbGllbnQtc2hlbGwtd2lkZ2V0LWRhc2hib2FyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieXV1dmlzLWNsaWVudC1zaGVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMveXV1dmlzL2NsaWVudC1zaGVsbC9zcmMveXV1dmlzLWNsaWVudC1zaGVsbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ==
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { InjectionToken, Component, Inject, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@yuuvis/widget-grid';
|
|
4
|
+
import { WidgetGridUtils, YuvWidgetGridModule } from '@yuuvis/widget-grid';
|
|
5
|
+
import { CommonModule } from '@angular/common';
|
|
6
|
+
import * as i1$1 from '@angular/router';
|
|
7
|
+
import { RouterModule } from '@angular/router';
|
|
8
|
+
|
|
9
|
+
const WIDGET_DASHBOARD_CONFIG = new InjectionToken('WIDGET_DASHBOARD_CONFIG');
|
|
10
|
+
|
|
11
|
+
class WidgetDashboardPageComponent {
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.gridItemConfig = [];
|
|
15
|
+
this.editMode = false;
|
|
16
|
+
if (config) {
|
|
17
|
+
const cfg = localStorage.getItem(config.id);
|
|
18
|
+
if (cfg) {
|
|
19
|
+
if (config?.workspaces) {
|
|
20
|
+
this.workspaceConfig = JSON.parse(cfg);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
this.gridItemConfig = JSON.parse(cfg);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
onGridEvent(e) {
|
|
29
|
+
console.log(e);
|
|
30
|
+
}
|
|
31
|
+
onGridChange(e) {
|
|
32
|
+
this._saveConfig(e);
|
|
33
|
+
}
|
|
34
|
+
onWorkspacesConfigChange(e) {
|
|
35
|
+
this._saveConfig(e);
|
|
36
|
+
}
|
|
37
|
+
_saveConfig(e) {
|
|
38
|
+
if (this.config)
|
|
39
|
+
localStorage.setItem(this.config.id, WidgetGridUtils.gridConfigStringify(e));
|
|
40
|
+
}
|
|
41
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetDashboardPageComponent, deps: [{ token: WIDGET_DASHBOARD_CONFIG }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
42
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: WidgetDashboardPageComponent, selector: "yuv-widget-dashboard", ngImport: i0, template: "@if (config?.workspaces) {\n <yuv-widget-grid-workspaces\n [buckets]=\"config?.buckets\"\n [workspaceConfig]=\"workspaceConfig\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (configChange)=\"onWorkspacesConfigChange($event)\"\n ></yuv-widget-grid-workspaces>\n} @else {\n <yuv-widget-grid\n [buckets]=\"config?.buckets\"\n [gridItemConfig]=\"gridItemConfig\"\n [editMode]=\"editMode\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (gridChange)=\"onGridChange($event)\"\n ></yuv-widget-grid>\n}\n", styles: [":host{--wd-grid-line-color: var(--panel-divider-color)}:host ::ng-deep gridster{background-color:transparent}:host ::ng-deep gridster .gridster-row,:host ::ng-deep gridster .gridster-column{border-color:var(--wd-grid-line-color)}\n"], dependencies: [{ kind: "component", type: i1.WidgetGridComponent, selector: "yuv-widget-grid", inputs: ["gridConfig", "editMode", "gridItemConfig", "buckets"], outputs: ["gridChange", "gridItemEvent", "widgetPickerOpen"] }, { kind: "component", type: i1.WidgetGridWorkspacesComponent, selector: "yuv-widget-grid-workspaces", inputs: ["options", "workspaceConfig", "preventAdd", "workspaceLabelMaxLength", "buckets"], outputs: ["configChange", "gridItemEvent", "editModeChange"] }] }); }
|
|
43
|
+
}
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: WidgetDashboardPageComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{ selector: 'yuv-widget-dashboard', template: "@if (config?.workspaces) {\n <yuv-widget-grid-workspaces\n [buckets]=\"config?.buckets\"\n [workspaceConfig]=\"workspaceConfig\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (configChange)=\"onWorkspacesConfigChange($event)\"\n ></yuv-widget-grid-workspaces>\n} @else {\n <yuv-widget-grid\n [buckets]=\"config?.buckets\"\n [gridItemConfig]=\"gridItemConfig\"\n [editMode]=\"editMode\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (gridChange)=\"onGridChange($event)\"\n ></yuv-widget-grid>\n}\n", styles: [":host{--wd-grid-line-color: var(--panel-divider-color)}:host ::ng-deep gridster{background-color:transparent}:host ::ng-deep gridster .gridster-row,:host ::ng-deep gridster .gridster-column{border-color:var(--wd-grid-line-color)}\n"] }]
|
|
47
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
48
|
+
type: Inject,
|
|
49
|
+
args: [WIDGET_DASHBOARD_CONFIG]
|
|
50
|
+
}] }] });
|
|
51
|
+
|
|
52
|
+
function ConfigFactory() {
|
|
53
|
+
return YuvWidgetDashboardModule.config;
|
|
54
|
+
}
|
|
55
|
+
class YuvWidgetDashboardModule {
|
|
56
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
57
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, declarations: [WidgetDashboardPageComponent], imports: [CommonModule,
|
|
58
|
+
YuvWidgetGridModule, i1$1.RouterModule], exports: [WidgetDashboardPageComponent] }); }
|
|
59
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, providers: [
|
|
60
|
+
{
|
|
61
|
+
provide: WIDGET_DASHBOARD_CONFIG,
|
|
62
|
+
useFactory: ConfigFactory
|
|
63
|
+
}
|
|
64
|
+
], imports: [CommonModule,
|
|
65
|
+
YuvWidgetGridModule,
|
|
66
|
+
RouterModule.forChild([
|
|
67
|
+
{ path: '', component: WidgetDashboardPageComponent },
|
|
68
|
+
{ path: '**', redirectTo: '/' }
|
|
69
|
+
])] }); }
|
|
70
|
+
}
|
|
71
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: YuvWidgetDashboardModule, decorators: [{
|
|
72
|
+
type: NgModule,
|
|
73
|
+
args: [{
|
|
74
|
+
imports: [
|
|
75
|
+
CommonModule,
|
|
76
|
+
YuvWidgetGridModule,
|
|
77
|
+
RouterModule.forChild([
|
|
78
|
+
{ path: '', component: WidgetDashboardPageComponent },
|
|
79
|
+
{ path: '**', redirectTo: '/' }
|
|
80
|
+
])
|
|
81
|
+
],
|
|
82
|
+
declarations: [WidgetDashboardPageComponent],
|
|
83
|
+
exports: [WidgetDashboardPageComponent],
|
|
84
|
+
providers: [
|
|
85
|
+
{
|
|
86
|
+
provide: WIDGET_DASHBOARD_CONFIG,
|
|
87
|
+
useFactory: ConfigFactory
|
|
88
|
+
}
|
|
89
|
+
]
|
|
90
|
+
}]
|
|
91
|
+
}] });
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Generated bundle index. Do not edit.
|
|
95
|
+
*/
|
|
96
|
+
|
|
97
|
+
export { ConfigFactory, WidgetDashboardPageComponent, YuvWidgetDashboardModule };
|
|
98
|
+
//# sourceMappingURL=yuuvis-client-shell-widget-dashboard.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yuuvis-client-shell-widget-dashboard.mjs","sources":["../../../../../libs/yuuvis/client-shell/widget-dashboard/src/lib/widget-dashboard.config.ts","../../../../../libs/yuuvis/client-shell/widget-dashboard/src/lib/widget-dashboard.component.ts","../../../../../libs/yuuvis/client-shell/widget-dashboard/src/lib/widget-dashboard.component.html","../../../../../libs/yuuvis/client-shell/widget-dashboard/src/lib/widget-dashboard.module.ts","../../../../../libs/yuuvis/client-shell/widget-dashboard/src/yuuvis-client-shell-widget-dashboard.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\n\nexport const WIDGET_DASHBOARD_CONFIG = new InjectionToken('WIDGET_DASHBOARD_CONFIG');\n\nexport interface WidgetDashboardConfig {\n id: string;\n buckets?: string[];\n workspaces?: boolean;\n}","import { Component, Inject } from '@angular/core';\nimport { WIDGET_DASHBOARD_CONFIG, WidgetDashboardConfig } from './widget-dashboard.config';\nimport { GridItemEvent, WidgetGridItemConfig, WidgetGridUtils, WidgetGridWorkspaceConfig } from '@yuuvis/widget-grid';\n\n@Component({\n selector: 'yuv-widget-dashboard',\n templateUrl: './widget-dashboard.component.html',\n styleUrls: ['./widget-dashboard.component.scss']\n})\nexport class WidgetDashboardPageComponent {\n workspaceConfig?: WidgetGridWorkspaceConfig;\n gridItemConfig: WidgetGridItemConfig[] = [];\n editMode = false;\n\n constructor(@Inject(WIDGET_DASHBOARD_CONFIG) public config: WidgetDashboardConfig | undefined) {\n if (config) {\n const cfg = localStorage.getItem(config.id);\n if (cfg) {\n if (config?.workspaces) {\n this.workspaceConfig = JSON.parse(cfg);\n } else {\n this.gridItemConfig = JSON.parse(cfg);\n }\n }\n }\n }\n\n onGridEvent(e: GridItemEvent) {\n console.log(e);\n }\n\n onGridChange(e: WidgetGridItemConfig[]) {\n this._saveConfig(e);\n }\n\n onWorkspacesConfigChange(e: WidgetGridWorkspaceConfig) {\n this._saveConfig(e);\n }\n\n private _saveConfig(e: WidgetGridItemConfig[] | WidgetGridWorkspaceConfig) {\n if (this.config) localStorage.setItem(this.config.id, WidgetGridUtils.gridConfigStringify(e));\n }\n}\n","@if (config?.workspaces) {\n <yuv-widget-grid-workspaces\n [buckets]=\"config?.buckets\"\n [workspaceConfig]=\"workspaceConfig\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (configChange)=\"onWorkspacesConfigChange($event)\"\n ></yuv-widget-grid-workspaces>\n} @else {\n <yuv-widget-grid\n [buckets]=\"config?.buckets\"\n [gridItemConfig]=\"gridItemConfig\"\n [editMode]=\"editMode\"\n (gridItemEvent)=\"onGridEvent($event)\"\n (gridChange)=\"onGridChange($event)\"\n ></yuv-widget-grid>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { WidgetDashboardPageComponent } from './widget-dashboard.component';\nimport { RouterModule } from '@angular/router';\nimport { YuvWidgetGridModule } from '@yuuvis/widget-grid';\nimport { WIDGET_DASHBOARD_CONFIG, WidgetDashboardConfig } from './widget-dashboard.config';\n\nexport function ConfigFactory() {\n return YuvWidgetDashboardModule.config;\n}\n\n@NgModule({\n imports: [\n CommonModule,\n YuvWidgetGridModule,\n RouterModule.forChild([\n { path: '', component: WidgetDashboardPageComponent },\n { path: '**', redirectTo: '/' }\n ])\n ],\n declarations: [WidgetDashboardPageComponent],\n exports: [WidgetDashboardPageComponent],\n providers: [\n {\n provide: WIDGET_DASHBOARD_CONFIG,\n useFactory: ConfigFactory\n }\n ]\n})\nexport class YuvWidgetDashboardModule {\n static config?: WidgetDashboardConfig;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|