ngssm-shell 15.3.13 → 16.0.0
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/esm2022/lib/components/shell/shell.component.mjs +90 -0
- package/esm2022/lib/components/shell-notification/shell-notification.component.mjs +57 -0
- package/esm2022/lib/components/shell-notification-popup/shell-notification-popup.component.mjs +30 -0
- package/esm2022/lib/components/shell-notifications/shell-notifications.component.mjs +66 -0
- package/esm2022/lib/components/side-nav/side-nav.component.mjs +38 -0
- package/esm2022/lib/components/wrapper/wrapper.component.mjs +36 -0
- package/esm2022/lib/effects/notification-showing.effect.mjs +32 -0
- package/esm2022/lib/reducers/navigation-bar.reducer.mjs +55 -0
- package/esm2022/lib/reducers/shell-notifications.reducer.mjs +57 -0
- package/esm2022/lib/state/shell.state.mjs +26 -0
- package/{fesm2020 → fesm2022}/ngssm-shell.mjs +33 -33
- package/{fesm2020 → fesm2022}/ngssm-shell.mjs.map +1 -1
- package/lib/components/shell/shell.component.d.ts +1 -1
- package/lib/components/shell-notification/shell-notification.component.d.ts +1 -1
- package/lib/components/side-nav/side-nav.component.d.ts +1 -1
- package/lib/components/wrapper/wrapper.component.d.ts +1 -1
- package/package.json +8 -14
- package/esm2020/lib/components/shell/shell.component.mjs +0 -89
- package/esm2020/lib/components/shell-notification/shell-notification.component.mjs +0 -56
- package/esm2020/lib/components/shell-notification-popup/shell-notification-popup.component.mjs +0 -29
- package/esm2020/lib/components/shell-notifications/shell-notifications.component.mjs +0 -65
- package/esm2020/lib/components/side-nav/side-nav.component.mjs +0 -37
- package/esm2020/lib/components/wrapper/wrapper.component.mjs +0 -35
- package/esm2020/lib/effects/notification-showing.effect.mjs +0 -31
- package/esm2020/lib/reducers/navigation-bar.reducer.mjs +0 -54
- package/esm2020/lib/reducers/shell-notifications.reducer.mjs +0 -56
- package/esm2020/lib/state/shell.state.mjs +0 -26
- package/fesm2015/ngssm-shell.mjs +0 -467
- package/fesm2015/ngssm-shell.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/actions/display-notification-details.action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/actions/display-notification.action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/actions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/actions/lock-navigation-bar.action.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/actions/shell-action-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/lock-status.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/shell-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/shell-notification-type.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/shell-notification.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/sidenav-config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/sidenav-item.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/model/sidenav-section.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/provide-ngssm-shell.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/state/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/state/shell-notifications.mjs +0 -0
- /package/{esm2020 → esm2022}/ngssm-shell.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
5
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
8
|
+
import { MatBadgeModule } from '@angular/material/badge';
|
|
9
|
+
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
10
|
+
import { NgSsmComponent } from 'ngssm-store';
|
|
11
|
+
import { LockStatus } from '../../model';
|
|
12
|
+
import { selectShellState } from '../../state';
|
|
13
|
+
import { ShellActionType } from '../../actions';
|
|
14
|
+
import { SideNavComponent } from '../side-nav/side-nav.component';
|
|
15
|
+
import { ShellNotificationsComponent } from '../shell-notifications/shell-notifications.component';
|
|
16
|
+
import { WrapperComponent } from '../wrapper/wrapper.component';
|
|
17
|
+
import * as i0 from "@angular/core";
|
|
18
|
+
import * as i1 from "ngssm-store";
|
|
19
|
+
import * as i2 from "@angular/common";
|
|
20
|
+
import * as i3 from "@angular/router";
|
|
21
|
+
import * as i4 from "@angular/material/sidenav";
|
|
22
|
+
import * as i5 from "@angular/material/toolbar";
|
|
23
|
+
import * as i6 from "@angular/material/icon";
|
|
24
|
+
import * as i7 from "@angular/material/button";
|
|
25
|
+
import * as i8 from "@angular/material/badge";
|
|
26
|
+
class ShellComponent extends NgSsmComponent {
|
|
27
|
+
constructor(store) {
|
|
28
|
+
super(store);
|
|
29
|
+
this._shellConfig$ = new BehaviorSubject(undefined);
|
|
30
|
+
this._navigationBarOpen$ = new BehaviorSubject(true);
|
|
31
|
+
this.class = 'ngssm-shell';
|
|
32
|
+
combineLatest([
|
|
33
|
+
this.watch((s) => selectShellState(s).navigationBarOpen),
|
|
34
|
+
this.watch((s) => selectShellState(s).navigationBarLockStatus)
|
|
35
|
+
]).subscribe((values) => {
|
|
36
|
+
let isOpen = false;
|
|
37
|
+
switch (values[1]) {
|
|
38
|
+
case LockStatus.lockedClosed:
|
|
39
|
+
isOpen = false;
|
|
40
|
+
break;
|
|
41
|
+
case LockStatus.lockedOpen:
|
|
42
|
+
isOpen = true;
|
|
43
|
+
break;
|
|
44
|
+
default:
|
|
45
|
+
isOpen = values[0];
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
this._navigationBarOpen$.next(isOpen);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
set shellConfig(value) {
|
|
52
|
+
this._shellConfig$.next(value);
|
|
53
|
+
}
|
|
54
|
+
get navigationBarOpen$() {
|
|
55
|
+
return this._navigationBarOpen$.asObservable();
|
|
56
|
+
}
|
|
57
|
+
get shellConfig$() {
|
|
58
|
+
return this._shellConfig$.asObservable();
|
|
59
|
+
}
|
|
60
|
+
get notificationsCount$() {
|
|
61
|
+
return this.watch((s) => selectShellState(s).shellNotifications.notifications.length);
|
|
62
|
+
}
|
|
63
|
+
toggleNavigationBarState() {
|
|
64
|
+
this.dispatchActionType(ShellActionType.toggleNavigationBarState);
|
|
65
|
+
}
|
|
66
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
67
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ShellComponent, isStandalone: true, selector: "ngssm-shell", inputs: { shellConfig: "shellConfig" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"ngssm-shell-container\" *ngIf=\"(shellConfig$ | async) as config; else noShellConfig\">\n <mat-sidenav-container>\n <mat-sidenav-content>\n <mat-toolbar class=\"ngssm-shell-header\">\n <button mat-icon-button (click)=\"toggleNavigationBarState()\">\n <mat-icon class=\"fa-solid fa-bars\"></mat-icon>\n </button>\n <img [src]=\"config.logo\" *ngIf=\"config.logo\" class=\"ngssm-shell-header-logo\" />\n <span class=\"ngssm-shell-header-title\" *ngIf=\"config.applicationTitle\">\n {{config.applicationTitle}}\n </span>\n <ng-content></ng-content>\n </mat-toolbar>\n\n <mat-sidenav-container>\n <mat-sidenav mode=\"side\" [opened]=\"(navigationBarOpen$ | async)===true\"\n class=\"ngssm-shell-navigation-bar\">\n <ngssm-side-nav [config]=\"config.sidenavConfig\"></ngssm-side-nav>\n </mat-sidenav>\n <mat-sidenav-content class=\"ngssm-shell-content\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n </mat-sidenav-content>\n\n <mat-sidenav mode=\"over\" opened=\"false\" #rightSidebar position=\"end\" class=\"ngssm-shell-messages-bar\">\n <ngssm-shell-notifications class=\"ngssm-shell-notifications\"></ngssm-shell-notifications>\n </mat-sidenav>\n </mat-sidenav-container>\n <mat-toolbar class=\"ngssm-shell-footer\" *ngIf=\"config.displayFooter === true\">\n <ngssm-wrapper *ngFor=\"let component of config.footerComponents\" [item]=\"component\"></ngssm-wrapper>\n <span class=\"ngssm-fxFlex\"></span>\n <button mat-icon-button (click)=\"rightSidebar.toggle()\" *ngIf=\"config.displayFooterNotificationsButton\">\n <mat-icon class=\"fa-regular fa-message\" [matBadge]=\"notificationsCount$ | async\"\n *ngIf=\"(notificationsCount$ | async) ?? 0 > 0\">\n </mat-icon>\n <mat-icon class=\"fa-regular fa-message\" *ngIf=\"(notificationsCount$ | async) === 0\">\n </mat-icon>\n </button>\n </mat-toolbar>\n</div>\n\n<ng-template #noShellConfig>\n <div class=\"ngssm-shell-no-config\">\n Please, provide a config for the shell.\n </div>\n</ng-template>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i3.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "ngmodule", type: MatSidenavModule }, { kind: "component", type: i4.MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: i4.MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: i4.MatSidenavContent, selector: "mat-sidenav-content" }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i5.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatBadgeModule }, { kind: "directive", type: i8.MatBadge, selector: "[matBadge]", inputs: ["matBadgeDisabled", "matBadgeColor", "matBadgeOverlap", "matBadgePosition", "matBadge", "matBadgeDescription", "matBadgeSize", "matBadgeHidden"] }, { kind: "component", type: SideNavComponent, selector: "ngssm-side-nav", inputs: ["config"] }, { kind: "component", type: ShellNotificationsComponent, selector: "ngssm-shell-notifications" }, { kind: "component", type: WrapperComponent, selector: "ngssm-wrapper", inputs: ["item"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
68
|
+
}
|
|
69
|
+
export { ShellComponent };
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellComponent, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: 'ngssm-shell', standalone: true, imports: [
|
|
73
|
+
CommonModule,
|
|
74
|
+
RouterModule,
|
|
75
|
+
MatSidenavModule,
|
|
76
|
+
MatToolbarModule,
|
|
77
|
+
MatIconModule,
|
|
78
|
+
MatButtonModule,
|
|
79
|
+
MatBadgeModule,
|
|
80
|
+
SideNavComponent,
|
|
81
|
+
ShellNotificationsComponent,
|
|
82
|
+
WrapperComponent
|
|
83
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ngssm-shell-container\" *ngIf=\"(shellConfig$ | async) as config; else noShellConfig\">\n <mat-sidenav-container>\n <mat-sidenav-content>\n <mat-toolbar class=\"ngssm-shell-header\">\n <button mat-icon-button (click)=\"toggleNavigationBarState()\">\n <mat-icon class=\"fa-solid fa-bars\"></mat-icon>\n </button>\n <img [src]=\"config.logo\" *ngIf=\"config.logo\" class=\"ngssm-shell-header-logo\" />\n <span class=\"ngssm-shell-header-title\" *ngIf=\"config.applicationTitle\">\n {{config.applicationTitle}}\n </span>\n <ng-content></ng-content>\n </mat-toolbar>\n\n <mat-sidenav-container>\n <mat-sidenav mode=\"side\" [opened]=\"(navigationBarOpen$ | async)===true\"\n class=\"ngssm-shell-navigation-bar\">\n <ngssm-side-nav [config]=\"config.sidenavConfig\"></ngssm-side-nav>\n </mat-sidenav>\n <mat-sidenav-content class=\"ngssm-shell-content\">\n <router-outlet></router-outlet>\n </mat-sidenav-content>\n </mat-sidenav-container>\n </mat-sidenav-content>\n\n <mat-sidenav mode=\"over\" opened=\"false\" #rightSidebar position=\"end\" class=\"ngssm-shell-messages-bar\">\n <ngssm-shell-notifications class=\"ngssm-shell-notifications\"></ngssm-shell-notifications>\n </mat-sidenav>\n </mat-sidenav-container>\n <mat-toolbar class=\"ngssm-shell-footer\" *ngIf=\"config.displayFooter === true\">\n <ngssm-wrapper *ngFor=\"let component of config.footerComponents\" [item]=\"component\"></ngssm-wrapper>\n <span class=\"ngssm-fxFlex\"></span>\n <button mat-icon-button (click)=\"rightSidebar.toggle()\" *ngIf=\"config.displayFooterNotificationsButton\">\n <mat-icon class=\"fa-regular fa-message\" [matBadge]=\"notificationsCount$ | async\"\n *ngIf=\"(notificationsCount$ | async) ?? 0 > 0\">\n </mat-icon>\n <mat-icon class=\"fa-regular fa-message\" *ngIf=\"(notificationsCount$ | async) === 0\">\n </mat-icon>\n </button>\n </mat-toolbar>\n</div>\n\n<ng-template #noShellConfig>\n <div class=\"ngssm-shell-no-config\">\n Please, provide a config for the shell.\n </div>\n</ng-template>" }]
|
|
84
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { class: [{
|
|
85
|
+
type: HostBinding,
|
|
86
|
+
args: ['class']
|
|
87
|
+
}], shellConfig: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}] } });
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tc2hlbGwvc3JjL2xpYi9jb21wb25lbnRzL3NoZWxsL3NoZWxsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC9zaGVsbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUVsRSxPQUFPLEVBQUUsY0FBYyxFQUFTLE1BQU0sYUFBYSxDQUFDO0FBRXBELE9BQU8sRUFBRSxVQUFVLEVBQWUsTUFBTSxhQUFhLENBQUM7QUFDdEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZ0NBQWdDLENB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OlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcbmltcG9ydCB7IE1hdFRvb2xiYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sYmFyJztcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ1NzbUNvbXBvbmVudCwgU3RvcmUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IExvY2tTdGF0dXMsIFNoZWxsQ29uZmlnIH0gZnJvbSAnLi4vLi4vbW9kZWwnO1xuaW1wb3J0IHsgc2VsZWN0U2hlbGxTdGF0ZSB9IGZyb20gJy4uLy4uL3N0YXRlJztcbmltcG9ydCB7IFNoZWxsQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xuaW1wb3J0IHsgU2lkZU5hdkNvbXBvbmVudCB9IGZyb20gJy4uL3NpZGUtbmF2L3NpZGUtbmF2LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTaGVsbE5vdGlmaWNhdGlvbnNDb21wb25lbnQgfSBmcm9tICcuLi9zaGVsbC1ub3RpZmljYXRpb25zL3NoZWxsLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IFdyYXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi93cmFwcGVyL3dyYXBwZXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tc2hlbGwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFJvdXRlck1vZHVsZSxcbiAgICBNYXRTaWRlbmF2TW9kdWxlLFxuICAgIE1hdFRvb2xiYXJNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgU2lkZU5hdkNvbXBvbmVudCxcbiAgICBTaGVsbE5vdGlmaWNhdGlvbnNDb21wb25lbnQsXG4gICAgV3JhcHBlckNvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTaGVsbENvbXBvbmVudCBleHRlbmRzIE5nU3NtQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hlbGxDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTaGVsbENvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF2aWdhdGlvbkJhck9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnbmdzc20tc2hlbGwnO1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBTdG9yZSkge1xuICAgIHN1cGVyKHN0b3JlKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy53YXRjaCgocykgPT4gc2VsZWN0U2hlbGxTdGF0ZShzKS5uYXZpZ2F0aW9uQmFyT3BlbiksXG4gICAgICB0aGlzLndhdGNoKChzKSA9PiBzZWxlY3RTaGVsbFN0YXRlKHMpLm5hdmlnYXRpb25CYXJMb2NrU3RhdHVzKVxuICAgIF0pLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XG4gICAgICBsZXQgaXNPcGVuID0gZmFsc2U7XG5cbiAgICAgIHN3aXRjaCAodmFsdWVzWzFdKSB7XG4gICAgICAgIGNhc2UgTG9ja1N0YXR1cy5sb2NrZWRDbG9zZWQ6XG4gICAgICAgICAgaXNPcGVuID0gZmFsc2U7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSBMb2NrU3RhdHVzLmxvY2tlZE9wZW46XG4gICAgICAgICAgaXNPcGVuID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGlzT3BlbiA9IHZhbHVlc1swXTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbmF2aWdhdGlvbkJhck9wZW4kLm5leHQoaXNPcGVuKTtcbiAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgc2hlbGxDb25maWcodmFsdWU6IFNoZWxsQ29uZmlnKSB7XG4gICAgdGhpcy5fc2hlbGxDb25maWckLm5leHQodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldCBuYXZpZ2F0aW9uQmFyT3BlbiQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX25hdmlnYXRpb25CYXJPcGVuJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlbGxDb25maWckKCk6IE9ic2VydmFibGU8U2hlbGxDb25maWcgfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc2hlbGxDb25maWckLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBub3RpZmljYXRpb25zQ291bnQkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMud2F0Y2goKHMpID0+IHNlbGVjdFNoZWxsU3RhdGUocykuc2hlbGxOb3RpZmljYXRpb25zLm5vdGlmaWNhdGlvbnMubGVuZ3RoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVOYXZpZ2F0aW9uQmFyU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwYXRjaEFjdGlvblR5cGUoU2hlbGxBY3Rpb25UeXBlLnRvZ2dsZU5hdmlnYXRpb25CYXJTdGF0ZSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuZ3NzbS1zaGVsbC1jb250YWluZXJcIiAqbmdJZj1cIihzaGVsbENvbmZpZyQgfCBhc3luYykgYXMgY29uZmlnOyBlbHNlIG5vU2hlbGxDb25maWdcIj5cbiAgICA8bWF0LXNpZGVuYXYtY29udGFpbmVyPlxuICAgICAgICA8bWF0LXNpZGVuYXYtY29udGVudD5cbiAgICAgICAgICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cIm5nc3NtLXNoZWxsLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJ0b2dnbGVOYXZpZ2F0aW9uQmFyU3RhdGUoKVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmYS1zb2xpZCBmYS1iYXJzXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29uZmlnLmxvZ29cIiAqbmdJZj1cImNvbmZpZy5sb2dvXCIgY2xhc3M9XCJuZ3NzbS1zaGVsbC1oZWFkZXItbG9nb1wiIC8+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3NzbS1zaGVsbC1oZWFkZXItdGl0bGVcIiAqbmdJZj1cImNvbmZpZy5hcHBsaWNhdGlvblRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7Y29uZmlnLmFwcGxpY2F0aW9uVGl0bGV9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L21hdC10b29sYmFyPlxuXG4gICAgICAgICAgICA8bWF0LXNpZGVuYXYtY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxtYXQtc2lkZW5hdiBtb2RlPVwic2lkZVwiIFtvcGVuZWRdPVwiKG5hdmlnYXRpb25CYXJPcGVuJCB8IGFzeW5jKT09PXRydWVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm5nc3NtLXNoZWxsLW5hdmlnYXRpb24tYmFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZ3NzbS1zaWRlLW5hdiBbY29uZmlnXT1cImNvbmZpZy5zaWRlbmF2Q29uZmlnXCI+PC9uZ3NzbS1zaWRlLW5hdj5cbiAgICAgICAgICAgICAgICA8L21hdC1zaWRlbmF2PlxuICAgICAgICAgICAgICAgIDxtYXQtc2lkZW5hdi1jb250ZW50IGNsYXNzPVwibmdzc20tc2hlbGwtY29udGVudFwiPlxuICAgICAgICAgICAgICAgICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgICAgICAgICAgICAgPC9tYXQtc2lkZW5hdi1jb250ZW50PlxuICAgICAgICAgICAgPC9tYXQtc2lkZW5hdi1jb250YWluZXI+XG4gICAgICAgIDwvbWF0LXNpZGVuYXYtY29udGVudD5cblxuICAgICAgICA8bWF0LXNpZGVuYXYgbW9kZT1cIm92ZXJcIiBvcGVuZWQ9XCJmYWxzZVwiICNyaWdodFNpZGViYXIgcG9zaXRpb249XCJlbmRcIiBjbGFzcz1cIm5nc3NtLXNoZWxsLW1lc3NhZ2VzLWJhclwiPlxuICAgICAgICAgICAgPG5nc3NtLXNoZWxsLW5vdGlmaWNhdGlvbnMgY2xhc3M9XCJuZ3NzbS1zaGVsbC1ub3RpZmljYXRpb25zXCI+PC9uZ3NzbS1zaGVsbC1ub3RpZmljYXRpb25zPlxuICAgICAgICA8L21hdC1zaWRlbmF2PlxuICAgIDwvbWF0LXNpZGVuYXYtY29udGFpbmVyPlxuICAgIDxtYXQtdG9vbGJhciBjbGFzcz1cIm5nc3NtLXNoZWxsLWZvb3RlclwiICpuZ0lmPVwiY29uZmlnLmRpc3BsYXlGb290ZXIgPT09IHRydWVcIj5cbiAgICAgICAgPG5nc3NtLXdyYXBwZXIgKm5nRm9yPVwibGV0IGNvbXBvbmVudCBvZiBjb25maWcuZm9vdGVyQ29tcG9uZW50c1wiIFtpdGVtXT1cImNvbXBvbmVudFwiPjwvbmdzc20td3JhcHBlcj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJuZ3NzbS1meEZsZXhcIj48L3NwYW4+XG4gICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyaWdodFNpZGViYXIudG9nZ2xlKClcIiAqbmdJZj1cImNvbmZpZy5kaXNwbGF5Rm9vdGVyTm90aWZpY2F0aW9uc0J1dHRvblwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZmEtcmVndWxhciBmYS1tZXNzYWdlXCIgW21hdEJhZGdlXT1cIm5vdGlmaWNhdGlvbnNDb3VudCQgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIobm90aWZpY2F0aW9uc0NvdW50JCB8IGFzeW5jKSA/PyAwID4gMFwiPlxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZhLXJlZ3VsYXIgZmEtbWVzc2FnZVwiICpuZ0lmPVwiKG5vdGlmaWNhdGlvbnNDb3VudCQgfCBhc3luYykgPT09IDBcIj5cbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvbWF0LXRvb2xiYXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNub1NoZWxsQ29uZmlnPlxuICAgIDxkaXYgY2xhc3M9XCJuZ3NzbS1zaGVsbC1uby1jb25maWdcIj5cbiAgICAgICAgUGxlYXNlLCBwcm92aWRlIGEgY29uZmlnIGZvciB0aGUgc2hlbGwuXG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
2
|
+
import { MatCardModule } from '@angular/material/card';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
6
|
+
import { BehaviorSubject, combineLatest, takeUntil } from 'rxjs';
|
|
7
|
+
import { NgSsmComponent } from 'ngssm-store';
|
|
8
|
+
import { ShellNotificationType } from '../../model';
|
|
9
|
+
import { selectShellState } from '../../state';
|
|
10
|
+
import { DisplayNotificationDetailsAction } from '../../actions';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "ngssm-store";
|
|
13
|
+
import * as i2 from "@angular/common";
|
|
14
|
+
import * as i3 from "@angular/material/card";
|
|
15
|
+
import * as i4 from "@angular/material/icon";
|
|
16
|
+
import * as i5 from "@angular/material/button";
|
|
17
|
+
class ShellNotificationComponent extends NgSsmComponent {
|
|
18
|
+
constructor(store) {
|
|
19
|
+
super(store);
|
|
20
|
+
this._displayDetailsButton$ = new BehaviorSubject(false);
|
|
21
|
+
this._shellNotification$ = new BehaviorSubject(undefined);
|
|
22
|
+
this._shellNotificationIndex$ = new BehaviorSubject(null);
|
|
23
|
+
this.shellNotificationType = ShellNotificationType;
|
|
24
|
+
combineLatest([this._shellNotificationIndex$, this.watch((s) => selectShellState(s).shellNotifications.notifications)])
|
|
25
|
+
.pipe(takeUntil(this.unsubscribeAll$))
|
|
26
|
+
.subscribe((values) => {
|
|
27
|
+
this._shellNotification$.next((values[1] ?? [])[values[0] ?? -1]);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
set displayDetailsButton(value) {
|
|
31
|
+
this._displayDetailsButton$.next(value);
|
|
32
|
+
}
|
|
33
|
+
set shellNotificationIndex(value) {
|
|
34
|
+
this._shellNotificationIndex$.next(value);
|
|
35
|
+
}
|
|
36
|
+
get shellNotification$() {
|
|
37
|
+
return this._shellNotification$.asObservable();
|
|
38
|
+
}
|
|
39
|
+
get displayDetailsButton$() {
|
|
40
|
+
return this._displayDetailsButton$.asObservable();
|
|
41
|
+
}
|
|
42
|
+
displayDetails() {
|
|
43
|
+
this.dispatchAction(new DisplayNotificationDetailsAction(this._shellNotificationIndex$.value ?? -1));
|
|
44
|
+
}
|
|
45
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellNotificationComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ShellNotificationComponent, isStandalone: true, selector: "ngssm-shell-notification", inputs: { displayDetailsButton: "displayDetailsButton", shellNotificationIndex: "shellNotificationIndex" }, usesInheritance: true, ngImport: i0, template: "<mat-card\n appearance=\"outlined\" *ngIf=\"(shellNotification$ | async) as shellNotification; else noNotification\"\n class=\"ngssm-shell-notification-card\">\n <mat-card-header\n [ngClass]=\"{'ngssm-shell-notification-success' : shellNotification.type === shellNotificationType.success, 'ngssm-shell-notification-error':shellNotification.type === shellNotificationType.error}\">\n <mat-icon mat-card-avatar class=\"fa-solid fa-check ngssm-shell-avatar-notification \"\n *ngIf=\"shellNotification.type === shellNotificationType.success\">\n </mat-icon>\n <mat-icon mat-card-avatar class=\"fa-solid fa-triangle-exclamation ngssm-shell-avatar-notification \"\n *ngIf=\"shellNotification.type === shellNotificationType.error\">\n </mat-icon>\n <mat-card-title>{{shellNotification.title}}</mat-card-title>\n <mat-card-subtitle>{{shellNotification.timestamp | date:'shortTime'}}</mat-card-subtitle>\n </mat-card-header>\n <div class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button *ngIf=\"(displayDetailsButton$ | async) === true && shellNotification.details\"\n (click)=\"displayDetails()\">\n Display details\n </button>\n </div>\n</mat-card>\n\n<ng-template #noNotification>\n No notification to display...\n</ng-template>", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.DatePipe, name: "date" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardAvatar, selector: "[mat-card-avatar], [matCardAvatar]" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
|
+
}
|
|
48
|
+
export { ShellNotificationComponent };
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellNotificationComponent, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{ selector: 'ngssm-shell-notification', standalone: true, imports: [CommonModule, MatCardModule, MatIconModule, MatButtonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card\n appearance=\"outlined\" *ngIf=\"(shellNotification$ | async) as shellNotification; else noNotification\"\n class=\"ngssm-shell-notification-card\">\n <mat-card-header\n [ngClass]=\"{'ngssm-shell-notification-success' : shellNotification.type === shellNotificationType.success, 'ngssm-shell-notification-error':shellNotification.type === shellNotificationType.error}\">\n <mat-icon mat-card-avatar class=\"fa-solid fa-check ngssm-shell-avatar-notification \"\n *ngIf=\"shellNotification.type === shellNotificationType.success\">\n </mat-icon>\n <mat-icon mat-card-avatar class=\"fa-solid fa-triangle-exclamation ngssm-shell-avatar-notification \"\n *ngIf=\"shellNotification.type === shellNotificationType.error\">\n </mat-icon>\n <mat-card-title>{{shellNotification.title}}</mat-card-title>\n <mat-card-subtitle>{{shellNotification.timestamp | date:'shortTime'}}</mat-card-subtitle>\n </mat-card-header>\n <div class=\"flex-row-center\">\n <span class=\"fxFlex\"></span>\n <button mat-button *ngIf=\"(displayDetailsButton$ | async) === true && shellNotification.details\"\n (click)=\"displayDetails()\">\n Display details\n </button>\n </div>\n</mat-card>\n\n<ng-template #noNotification>\n No notification to display...\n</ng-template>", styles: [":host{display:flex;flex-direction:column}\n"] }]
|
|
52
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { displayDetailsButton: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], shellNotificationIndex: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC1ub3RpZmljYXRpb24vc2hlbGwtbm90aWZpY2F0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC1ub3RpZmljYXRpb24vc2hlbGwtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBYyxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFN0UsT0FBTyxFQUFFLGNBQWMsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUVwRCxPQUFPLEVBQXFCLHFCQUFxQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFFakUsTUFRYSwwQkFBMkIsU0FBUSxjQUFjO0lBTzVELFlBQVksS0FBWTtRQUN0QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFQRSwyQkFBc0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUM3RCx3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBZ0MsU0FBUyxDQUFDLENBQUM7UUFDcEYsNkJBQXdCLEdBQUcsSUFBSSxlQUFlLENBQWdCLElBQUksQ0FBQyxDQUFDO1FBRXJFLDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO1FBSzVELGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2FBQ3BILElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ3JDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwRSxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxJQUFvQixvQkFBb0IsQ0FBQyxLQUFjO1FBQ3JELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQW9CLHNCQUFzQixDQUFDLEtBQW9CO1FBQzdELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELElBQVcsa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFXLHFCQUFxQjtRQUM5QixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0lBRU0sY0FBYztRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksZ0NBQWdDLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQzs4R0FuQ1UsMEJBQTBCO2tHQUExQiwwQkFBMEIsdU5DckJ2QywyMkNBeUJjLG9HRFRGLFlBQVksd1VBQUUsYUFBYSwyaEJBQUUsYUFBYSxtTEFBRSxlQUFlOztTQUsxRCwwQkFBMEI7MkZBQTFCLDBCQUEwQjtrQkFSdEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FDeEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsZUFBZSxDQUFDLG1CQUdyRCx1QkFBdUIsQ0FBQyxNQUFNOzRGQW1CM0Isb0JBQW9CO3NCQUF2QyxLQUFLO2dCQUljLHNCQUFzQjtzQkFBekMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nU3NtQ29tcG9uZW50LCBTdG9yZSB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuaW1wb3J0IHsgU2hlbGxOb3RpZmljYXRpb24sIFNoZWxsTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IHNlbGVjdFNoZWxsU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZSc7XG5pbXBvcnQgeyBEaXNwbGF5Tm90aWZpY2F0aW9uRGV0YWlsc0FjdGlvbiB9IGZyb20gJy4uLy4uL2FjdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1zaGVsbC1ub3RpZmljYXRpb24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRDYXJkTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2hlbGwtbm90aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsTm90aWZpY2F0aW9uQ29tcG9uZW50IGV4dGVuZHMgTmdTc21Db21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kaXNwbGF5RGV0YWlsc0J1dHRvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hlbGxOb3RpZmljYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTaGVsbE5vdGlmaWNhdGlvbiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2hlbGxOb3RpZmljYXRpb25JbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlciB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaGVsbE5vdGlmaWNhdGlvblR5cGUgPSBTaGVsbE5vdGlmaWNhdGlvblR5cGU7XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fc2hlbGxOb3RpZmljYXRpb25JbmRleCQsIHRoaXMud2F0Y2goKHMpID0+IHNlbGVjdFNoZWxsU3RhdGUocykuc2hlbGxOb3RpZmljYXRpb25zLm5vdGlmaWNhdGlvbnMpXSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLnVuc3Vic2NyaWJlQWxsJCkpXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcbiAgICAgICAgdGhpcy5fc2hlbGxOb3RpZmljYXRpb24kLm5leHQoKHZhbHVlc1sxXSA/PyBbXSlbdmFsdWVzWzBdID8/IC0xXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZGlzcGxheURldGFpbHNCdXR0b24odmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNwbGF5RGV0YWlsc0J1dHRvbiQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKSBwdWJsaWMgc2V0IHNoZWxsTm90aWZpY2F0aW9uSW5kZXgodmFsdWU6IG51bWJlciB8IG51bGwpIHtcbiAgICB0aGlzLl9zaGVsbE5vdGlmaWNhdGlvbkluZGV4JC5uZXh0KHZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hlbGxOb3RpZmljYXRpb24kKCk6IE9ic2VydmFibGU8U2hlbGxOb3RpZmljYXRpb24gfCB1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5fc2hlbGxOb3RpZmljYXRpb24kLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5RGV0YWlsc0J1dHRvbiQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlEZXRhaWxzQnV0dG9uJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkaXNwbGF5RGV0YWlscygpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BhdGNoQWN0aW9uKG5ldyBEaXNwbGF5Tm90aWZpY2F0aW9uRGV0YWlsc0FjdGlvbih0aGlzLl9zaGVsbE5vdGlmaWNhdGlvbkluZGV4JC52YWx1ZSA/PyAtMSkpO1xuICB9XG59XG4iLCI8bWF0LWNhcmRcbiAgICBhcHBlYXJhbmNlPVwib3V0bGluZWRcIiAqbmdJZj1cIihzaGVsbE5vdGlmaWNhdGlvbiQgfCBhc3luYykgYXMgc2hlbGxOb3RpZmljYXRpb247IGVsc2Ugbm9Ob3RpZmljYXRpb25cIlxuICAgIGNsYXNzPVwibmdzc20tc2hlbGwtbm90aWZpY2F0aW9uLWNhcmRcIj5cbiAgICA8bWF0LWNhcmQtaGVhZGVyXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnbmdzc20tc2hlbGwtbm90aWZpY2F0aW9uLXN1Y2Nlc3MnIDogc2hlbGxOb3RpZmljYXRpb24udHlwZSA9PT0gc2hlbGxOb3RpZmljYXRpb25UeXBlLnN1Y2Nlc3MsICduZ3NzbS1zaGVsbC1ub3RpZmljYXRpb24tZXJyb3InOnNoZWxsTm90aWZpY2F0aW9uLnR5cGUgPT09IHNoZWxsTm90aWZpY2F0aW9uVHlwZS5lcnJvcn1cIj5cbiAgICAgICAgPG1hdC1pY29uIG1hdC1jYXJkLWF2YXRhciBjbGFzcz1cImZhLXNvbGlkIGZhLWNoZWNrICBuZ3NzbS1zaGVsbC1hdmF0YXItbm90aWZpY2F0aW9uIFwiXG4gICAgICAgICAgICAqbmdJZj1cInNoZWxsTm90aWZpY2F0aW9uLnR5cGUgPT09IHNoZWxsTm90aWZpY2F0aW9uVHlwZS5zdWNjZXNzXCI+XG4gICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgIDxtYXQtaWNvbiBtYXQtY2FyZC1hdmF0YXIgY2xhc3M9XCJmYS1zb2xpZCBmYS10cmlhbmdsZS1leGNsYW1hdGlvbiAgbmdzc20tc2hlbGwtYXZhdGFyLW5vdGlmaWNhdGlvbiBcIlxuICAgICAgICAgICAgKm5nSWY9XCJzaGVsbE5vdGlmaWNhdGlvbi50eXBlID09PSBzaGVsbE5vdGlmaWNhdGlvblR5cGUuZXJyb3JcIj5cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlPnt7c2hlbGxOb3RpZmljYXRpb24udGl0bGV9fTwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT57e3NoZWxsTm90aWZpY2F0aW9uLnRpbWVzdGFtcCB8IGRhdGU6J3Nob3J0VGltZSd9fTwvbWF0LWNhcmQtc3VidGl0bGU+XG4gICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtcm93LWNlbnRlclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImZ4RmxleFwiPjwvc3Bhbj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uICpuZ0lmPVwiKGRpc3BsYXlEZXRhaWxzQnV0dG9uJCB8IGFzeW5jKSA9PT0gdHJ1ZSAmJiBzaGVsbE5vdGlmaWNhdGlvbi5kZXRhaWxzXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkaXNwbGF5RGV0YWlscygpXCI+XG4gICAgICAgICAgICBEaXNwbGF5IGRldGFpbHNcbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L21hdC1jYXJkPlxuXG48bmctdGVtcGxhdGUgI25vTm90aWZpY2F0aW9uPlxuICAgIE5vIG5vdGlmaWNhdGlvbiB0byBkaXNwbGF5Li4uXG48L25nLXRlbXBsYXRlPiJdfQ==
|
package/esm2022/lib/components/shell-notification-popup/shell-notification-popup.component.mjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { NgSsmComponent } from 'ngssm-store';
|
|
5
|
+
import { selectShellState } from '../../state';
|
|
6
|
+
import { ShellNotificationComponent } from '../shell-notification/shell-notification.component';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "ngssm-store";
|
|
9
|
+
import * as i2 from "@angular/common";
|
|
10
|
+
class ShellNotificationPopupComponent extends NgSsmComponent {
|
|
11
|
+
constructor(store) {
|
|
12
|
+
super(store);
|
|
13
|
+
this._shellNotificationIndex$ = new BehaviorSubject(-1);
|
|
14
|
+
this.watch((s) => selectShellState(s).shellNotifications.notifications).subscribe((notifications) => {
|
|
15
|
+
const items = notifications ?? [];
|
|
16
|
+
this._shellNotificationIndex$.next(items.length - 1);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
get shellNotificationIndex$() {
|
|
20
|
+
return this._shellNotificationIndex$.asObservable();
|
|
21
|
+
}
|
|
22
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellNotificationPopupComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ShellNotificationPopupComponent, isStandalone: true, selector: "ngssm-shell-notification-popup", usesInheritance: true, ngImport: i0, template: "<ngssm-shell-notification [shellNotificationIndex]=\"shellNotificationIndex$ | async\"></ngssm-shell-notification>", styles: [":host{display:flex;flex-direction:column}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: ShellNotificationComponent, selector: "ngssm-shell-notification", inputs: ["displayDetailsButton", "shellNotificationIndex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
|
+
}
|
|
25
|
+
export { ShellNotificationPopupComponent };
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellNotificationPopupComponent, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{ selector: 'ngssm-shell-notification-popup', standalone: true, imports: [CommonModule, ShellNotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ngssm-shell-notification [shellNotificationIndex]=\"shellNotificationIndex$ | async\"></ngssm-shell-notification>", styles: [":host{display:flex;flex-direction:column}\n"] }]
|
|
29
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtbm90aWZpY2F0aW9uLXBvcHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC1ub3RpZmljYXRpb24tcG9wdXAvc2hlbGwtbm90aWZpY2F0aW9uLXBvcHVwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC1ub3RpZmljYXRpb24tcG9wdXAvc2hlbGwtbm90aWZpY2F0aW9uLXBvcHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLGNBQWMsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUVwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7QUFFaEcsTUFRYSwrQkFBZ0MsU0FBUSxjQUFjO0lBR2pFLFlBQVksS0FBWTtRQUN0QixLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFIRSw2QkFBd0IsR0FBRyxJQUFJLGVBQWUsQ0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBSzFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFO1lBQ2xHLE1BQU0sS0FBSyxHQUFHLGFBQWEsSUFBSSxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQVcsdUJBQXVCO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RELENBQUM7OEdBZFUsK0JBQStCO2tHQUEvQiwrQkFBK0IsaUhDakI1QyxvSEFBZ0gsb0dEWXBHLFlBQVksb0ZBQUUsMEJBQTBCOztTQUt2QywrQkFBK0I7MkZBQS9CLCtCQUErQjtrQkFSM0MsU0FBUzsrQkFDRSxnQ0FBZ0MsY0FDOUIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLDBCQUEwQixDQUFDLG1CQUdsQyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ1NzbUNvbXBvbmVudCwgU3RvcmUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IHNlbGVjdFNoZWxsU3RhdGUgfSBmcm9tICcuLi8uLi9zdGF0ZSc7XG5pbXBvcnQgeyBTaGVsbE5vdGlmaWNhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NoZWxsLW5vdGlmaWNhdGlvbi9zaGVsbC1ub3RpZmljYXRpb24uY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20tc2hlbGwtbm90aWZpY2F0aW9uLXBvcHVwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU2hlbGxOb3RpZmljYXRpb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwtbm90aWZpY2F0aW9uLXBvcHVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2hlbGwtbm90aWZpY2F0aW9uLXBvcHVwLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNoZWxsTm90aWZpY2F0aW9uUG9wdXBDb21wb25lbnQgZXh0ZW5kcyBOZ1NzbUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NoZWxsTm90aWZpY2F0aW9uSW5kZXgkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KC0xKTtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUpIHtcbiAgICBzdXBlcihzdG9yZSk7XG5cbiAgICB0aGlzLndhdGNoKChzKSA9PiBzZWxlY3RTaGVsbFN0YXRlKHMpLnNoZWxsTm90aWZpY2F0aW9ucy5ub3RpZmljYXRpb25zKS5zdWJzY3JpYmUoKG5vdGlmaWNhdGlvbnMpID0+IHtcbiAgICAgIGNvbnN0IGl0ZW1zID0gbm90aWZpY2F0aW9ucyA/PyBbXTtcbiAgICAgIHRoaXMuX3NoZWxsTm90aWZpY2F0aW9uSW5kZXgkLm5leHQoaXRlbXMubGVuZ3RoIC0gMSk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNoZWxsTm90aWZpY2F0aW9uSW5kZXgkKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgcmV0dXJuIHRoaXMuX3NoZWxsTm90aWZpY2F0aW9uSW5kZXgkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iLCI8bmdzc20tc2hlbGwtbm90aWZpY2F0aW9uIFtzaGVsbE5vdGlmaWNhdGlvbkluZGV4XT1cInNoZWxsTm90aWZpY2F0aW9uSW5kZXgkIHwgYXN5bmNcIj48L25nc3NtLXNoZWxsLW5vdGlmaWNhdGlvbj4iXX0=
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatCardModule } from '@angular/material/card';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
6
|
+
import { BehaviorSubject, combineLatest } from 'rxjs';
|
|
7
|
+
import { NgSsmComponent } from 'ngssm-store';
|
|
8
|
+
import { NgssmAceEditorComponent, NgssmAceEditorMode } from 'ngssm-ace-editor';
|
|
9
|
+
import { selectShellState } from '../../state';
|
|
10
|
+
import { ShellNotificationType } from '../../model';
|
|
11
|
+
import { DisplayNotificationDetailsAction, ShellActionType } from '../../actions';
|
|
12
|
+
import { ShellNotificationComponent } from '../shell-notification/shell-notification.component';
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
import * as i1 from "ngssm-store";
|
|
15
|
+
import * as i2 from "@angular/common";
|
|
16
|
+
import * as i3 from "@angular/material/card";
|
|
17
|
+
import * as i4 from "@angular/material/button";
|
|
18
|
+
import * as i5 from "@angular/material/icon";
|
|
19
|
+
class ShellNotificationsComponent extends NgSsmComponent {
|
|
20
|
+
constructor(store) {
|
|
21
|
+
super(store);
|
|
22
|
+
this._notificationSelected$ = new BehaviorSubject(false);
|
|
23
|
+
this._notifications$ = new BehaviorSubject([]);
|
|
24
|
+
this._details$ = new BehaviorSubject('');
|
|
25
|
+
this.shellNotificationType = ShellNotificationType;
|
|
26
|
+
this.ngssmAceEditorMode = NgssmAceEditorMode;
|
|
27
|
+
this.watch((s) => selectShellState(s).shellNotifications.notifications).subscribe((values) => this._notifications$.next(values ?? []));
|
|
28
|
+
combineLatest([
|
|
29
|
+
this.watch((s) => selectShellState(s).shellNotifications.notifications),
|
|
30
|
+
this.watch((s) => selectShellState(s).shellNotifications.selectedNotificaitonIndex)
|
|
31
|
+
]).subscribe((values) => {
|
|
32
|
+
const id = values[1] ?? -1;
|
|
33
|
+
this._notificationSelected$.next(id !== -1);
|
|
34
|
+
const details = (values[0] ?? [])[id]?.details;
|
|
35
|
+
if (details) {
|
|
36
|
+
this._details$.next(JSON.stringify(details, null, 2));
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this._details$.next('');
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
get notificationSelected$() {
|
|
44
|
+
return this._notificationSelected$.asObservable();
|
|
45
|
+
}
|
|
46
|
+
get notifications$() {
|
|
47
|
+
return this._notifications$.asObservable();
|
|
48
|
+
}
|
|
49
|
+
get details$() {
|
|
50
|
+
return this._details$.asObservable();
|
|
51
|
+
}
|
|
52
|
+
closeDetailsPanel() {
|
|
53
|
+
this.dispatchAction(new DisplayNotificationDetailsAction(undefined));
|
|
54
|
+
}
|
|
55
|
+
clearAll() {
|
|
56
|
+
this.dispatchActionType(ShellActionType.clearAllNotifications);
|
|
57
|
+
}
|
|
58
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellNotificationsComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: ShellNotificationsComponent, isStandalone: true, selector: "ngssm-shell-notifications", usesInheritance: true, ngImport: i0, template: "<mat-card appearance=\"outlined\" class=\"flex-column-stretch fxFlex\"\n *ngIf=\"(notificationSelected$ | async) === false; else notificationDetails\">\n <mat-card-header>\n <mat-card-title class=\"flex-row-center\">\n Notifications\n <span class=\"fxFlex\"></span>\n <button mat-stroked-button color=\"primary\" [disabled]=\"(notifications$ | async)?.length === 0\"\n (click)=\"clearAll()\">\n Clear all\n </button>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content class=\"notifications-container flex-column-stretch fxFlex\">\n <ngssm-shell-notification *ngFor=\"let notification of notifications$ | async;let index=index\"\n [shellNotificationIndex]=\"index\" [displayDetailsButton]=\"true\">\n </ngssm-shell-notification>\n </mat-card-content>\n</mat-card>\n\n<ng-template #notificationDetails>\n <mat-card appearance=\"outlined\" class=\"flex-column-stretch fxFlex\">\n <mat-card-header>\n <mat-card-title class=\"flex-row-center\">\n Notification details\n <span class=\"fxFlex\"></span>\n <button mat-icon-button (click)=\"closeDetailsPanel()\">\n <mat-icon class=\"fa-solid fa-rectangle-xmark\"></mat-icon>\n </button>\n </mat-card-title>\n </mat-card-header>\n\n <ngssm-ace-editor class=\"fxFlex\" [readonly]=\"true\" [content]=\"(details$ | async) ?? ''\"\n [editorMode]=\"ngssmAceEditorMode.json\">\n </ngssm-ace-editor>\n </mat-card>\n</ng-template>", styles: [":host{display:flex;flex-direction:column;padding:8px;min-width:400px;max-width:400px}:host .notifications-container{overflow:auto}:host ngssm-shell-notification{margin:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i3.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i3.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i3.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i3.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: NgssmAceEditorComponent, selector: "ngssm-ace-editor", inputs: ["content", "readonly", "editorMode"], outputs: ["contentChanged", "isValidChanged", "editorReady"] }, { kind: "component", type: ShellNotificationComponent, selector: "ngssm-shell-notification", inputs: ["displayDetailsButton", "shellNotificationIndex"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
60
|
+
}
|
|
61
|
+
export { ShellNotificationsComponent };
|
|
62
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ShellNotificationsComponent, decorators: [{
|
|
63
|
+
type: Component,
|
|
64
|
+
args: [{ selector: 'ngssm-shell-notifications', standalone: true, imports: [CommonModule, MatCardModule, MatButtonModule, MatIconModule, NgssmAceEditorComponent, ShellNotificationComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-card appearance=\"outlined\" class=\"flex-column-stretch fxFlex\"\n *ngIf=\"(notificationSelected$ | async) === false; else notificationDetails\">\n <mat-card-header>\n <mat-card-title class=\"flex-row-center\">\n Notifications\n <span class=\"fxFlex\"></span>\n <button mat-stroked-button color=\"primary\" [disabled]=\"(notifications$ | async)?.length === 0\"\n (click)=\"clearAll()\">\n Clear all\n </button>\n </mat-card-title>\n </mat-card-header>\n\n <mat-card-content class=\"notifications-container flex-column-stretch fxFlex\">\n <ngssm-shell-notification *ngFor=\"let notification of notifications$ | async;let index=index\"\n [shellNotificationIndex]=\"index\" [displayDetailsButton]=\"true\">\n </ngssm-shell-notification>\n </mat-card-content>\n</mat-card>\n\n<ng-template #notificationDetails>\n <mat-card appearance=\"outlined\" class=\"flex-column-stretch fxFlex\">\n <mat-card-header>\n <mat-card-title class=\"flex-row-center\">\n Notification details\n <span class=\"fxFlex\"></span>\n <button mat-icon-button (click)=\"closeDetailsPanel()\">\n <mat-icon class=\"fa-solid fa-rectangle-xmark\"></mat-icon>\n </button>\n </mat-card-title>\n </mat-card-header>\n\n <ngssm-ace-editor class=\"fxFlex\" [readonly]=\"true\" [content]=\"(details$ | async) ?? ''\"\n [editorMode]=\"ngssmAceEditorMode.json\">\n </ngssm-ace-editor>\n </mat-card>\n</ng-template>", styles: [":host{display:flex;flex-direction:column;padding:8px;min-width:400px;max-width:400px}:host .notifications-container{overflow:auto}:host ngssm-shell-notification{margin:4px}\n"] }]
|
|
65
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; } });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGwtbm90aWZpY2F0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1zaGVsbC9zcmMvbGliL2NvbXBvbmVudHMvc2hlbGwtbm90aWZpY2F0aW9ucy9zaGVsbC1ub3RpZmljYXRpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaGVsbC1ub3RpZmljYXRpb25zL3NoZWxsLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbEUsT0FBTyxFQUFFLGNBQWMsRUFBUyxNQUFNLGFBQWEsQ0FBQztBQUNwRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDL0MsT0FBTyxFQUFxQixxQkFBcUIsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsZUFBZSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOzs7Ozs7O0FB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QixDQUFDLG1CQUcxRyx1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgTmdTc21Db21wb25lbnQsIFN0b3JlIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuaW1wb3J0IHsgTmdzc21BY2VFZGl0b3JDb21wb25lbnQsIE5nc3NtQWNlRWRpdG9yTW9kZSB9IGZyb20gJ25nc3NtLWFjZS1lZGl0b3InO1xuXG5pbXBvcnQgeyBzZWxlY3RTaGVsbFN0YXRlIH0gZnJvbSAnLi4vLi4vc3RhdGUnO1xuaW1wb3J0IHsgU2hlbGxOb3RpZmljYXRpb24sIFNoZWxsTm90aWZpY2F0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVsJztcbmltcG9ydCB7IERpc3BsYXlOb3RpZmljYXRpb25EZXRhaWxzQWN0aW9uLCBTaGVsbEFjdGlvblR5cGUgfSBmcm9tICcuLi8uLi9hY3Rpb25zJztcbmltcG9ydCB7IFNoZWxsTm90aWZpY2F0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vc2hlbGwtbm90aWZpY2F0aW9uL3NoZWxsLW5vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZ3NzbS1zaGVsbC1ub3RpZmljYXRpb25zJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0Q2FyZE1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBNYXRJY29uTW9kdWxlLCBOZ3NzbUFjZUVkaXRvckNvbXBvbmVudCwgU2hlbGxOb3RpZmljYXRpb25Db21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vc2hlbGwtbm90aWZpY2F0aW9ucy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NoZWxsLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2hlbGxOb3RpZmljYXRpb25zQ29tcG9uZW50IGV4dGVuZHMgTmdTc21Db21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9ub3RpZmljYXRpb25TZWxlY3RlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbm90aWZpY2F0aW9ucyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNoZWxsTm90aWZpY2F0aW9uW10+KFtdKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGV0YWlscyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaGVsbE5vdGlmaWNhdGlvblR5cGUgPSBTaGVsbE5vdGlmaWNhdGlvblR5cGU7XG4gIHB1YmxpYyByZWFkb25seSBuZ3NzbUFjZUVkaXRvck1vZGUgPSBOZ3NzbUFjZUVkaXRvck1vZGU7XG5cbiAgY29uc3RydWN0b3Ioc3RvcmU6IFN0b3JlKSB7XG4gICAgc3VwZXIoc3RvcmUpO1xuXG4gICAgdGhpcy53YXRjaCgocykgPT4gc2VsZWN0U2hlbGxTdGF0ZShzKS5zaGVsbE5vdGlmaWNhdGlvbnMubm90aWZpY2F0aW9ucykuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHRoaXMuX25vdGlmaWNhdGlvbnMkLm5leHQodmFsdWVzID8/IFtdKSk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMud2F0Y2goKHMpID0+IHNlbGVjdFNoZWxsU3RhdGUocykuc2hlbGxOb3RpZmljYXRpb25zLm5vdGlmaWNhdGlvbnMpLFxuICAgICAgdGhpcy53YXRjaCgocykgPT4gc2VsZWN0U2hlbGxTdGF0ZShzKS5zaGVsbE5vdGlmaWNhdGlvbnMuc2VsZWN0ZWROb3RpZmljYWl0b25JbmRleClcbiAgICBdKS5zdWJzY3JpYmUoKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgaWQgPSB2YWx1ZXNbMV0gPz8gLTE7XG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25TZWxlY3RlZCQubmV4dChpZCAhPT0gLTEpO1xuICAgICAgY29uc3QgZGV0YWlscyA9ICh2YWx1ZXNbMF0gPz8gW10pW2lkXT8uZGV0YWlscztcbiAgICAgIGlmIChkZXRhaWxzKSB7XG4gICAgICAgIHRoaXMuX2RldGFpbHMkLm5leHQoSlNPTi5zdHJpbmdpZnkoZGV0YWlscywgbnVsbCwgMikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fZGV0YWlscyQubmV4dCgnJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5vdGlmaWNhdGlvblNlbGVjdGVkJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9uU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBub3RpZmljYXRpb25zJCgpOiBPYnNlcnZhYmxlPFNoZWxsTm90aWZpY2F0aW9uW10+IHtcbiAgICByZXR1cm4gdGhpcy5fbm90aWZpY2F0aW9ucyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRldGFpbHMkKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2RldGFpbHMkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlRGV0YWlsc1BhbmVsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb24obmV3IERpc3BsYXlOb3RpZmljYXRpb25EZXRhaWxzQWN0aW9uKHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyQWxsKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzcGF0Y2hBY3Rpb25UeXBlKFNoZWxsQWN0aW9uVHlwZS5jbGVhckFsbE5vdGlmaWNhdGlvbnMpO1xuICB9XG59XG4iLCI8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJmbGV4LWNvbHVtbi1zdHJldGNoIGZ4RmxleFwiXG4gICAgKm5nSWY9XCIobm90aWZpY2F0aW9uU2VsZWN0ZWQkIHwgYXN5bmMpID09PSBmYWxzZTsgZWxzZSBub3RpZmljYXRpb25EZXRhaWxzXCI+XG4gICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwiZmxleC1yb3ctY2VudGVyXCI+XG4gICAgICAgICAgICBOb3RpZmljYXRpb25zXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ4RmxleFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCIobm90aWZpY2F0aW9ucyQgfCBhc3luYyk/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyQWxsKClcIj5cbiAgICAgICAgICAgICAgICBDbGVhciBhbGxcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L21hdC1jYXJkLXRpdGxlPlxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuXG4gICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJub3RpZmljYXRpb25zLWNvbnRhaW5lciBmbGV4LWNvbHVtbi1zdHJldGNoIGZ4RmxleFwiPlxuICAgICAgICA8bmdzc20tc2hlbGwtbm90aWZpY2F0aW9uICpuZ0Zvcj1cImxldCBub3RpZmljYXRpb24gb2Ygbm90aWZpY2F0aW9ucyQgfCBhc3luYztsZXQgaW5kZXg9aW5kZXhcIlxuICAgICAgICAgICAgW3NoZWxsTm90aWZpY2F0aW9uSW5kZXhdPVwiaW5kZXhcIiBbZGlzcGxheURldGFpbHNCdXR0b25dPVwidHJ1ZVwiPlxuICAgICAgICA8L25nc3NtLXNoZWxsLW5vdGlmaWNhdGlvbj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG48L21hdC1jYXJkPlxuXG48bmctdGVtcGxhdGUgI25vdGlmaWNhdGlvbkRldGFpbHM+XG4gICAgPG1hdC1jYXJkIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiIGNsYXNzPVwiZmxleC1jb2x1bW4tc3RyZXRjaCBmeEZsZXhcIj5cbiAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cImZsZXgtcm93LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBkZXRhaWxzXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmeEZsZXhcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlRGV0YWlsc1BhbmVsKClcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZmEtc29saWQgZmEtcmVjdGFuZ2xlLXhtYXJrXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuXG4gICAgICAgIDxuZ3NzbS1hY2UtZWRpdG9yIGNsYXNzPVwiZnhGbGV4XCIgW3JlYWRvbmx5XT1cInRydWVcIiBbY29udGVudF09XCIoZGV0YWlscyQgfCBhc3luYykgPz8gJydcIlxuICAgICAgICAgICAgW2VkaXRvck1vZGVdPVwibmdzc21BY2VFZGl0b3JNb2RlLmpzb25cIj5cbiAgICAgICAgPC9uZ3NzbS1hY2UtZWRpdG9yPlxuICAgIDwvbWF0LWNhcmQ+XG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input, HostBinding } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
5
|
+
import { BehaviorSubject } from 'rxjs';
|
|
6
|
+
import { NgSsmComponent } from 'ngssm-store';
|
|
7
|
+
import { WrapperComponent } from '../wrapper/wrapper.component';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "ngssm-store";
|
|
10
|
+
import * as i2 from "@angular/common";
|
|
11
|
+
import * as i3 from "@angular/material/divider";
|
|
12
|
+
import * as i4 from "@angular/router";
|
|
13
|
+
class SideNavComponent extends NgSsmComponent {
|
|
14
|
+
constructor(store) {
|
|
15
|
+
super(store);
|
|
16
|
+
this._sidenavConfig$ = new BehaviorSubject(undefined);
|
|
17
|
+
this.class = 'ngssm-sidenav';
|
|
18
|
+
}
|
|
19
|
+
set config(value) {
|
|
20
|
+
this._sidenavConfig$.next(value);
|
|
21
|
+
}
|
|
22
|
+
get sidenavConfig$() {
|
|
23
|
+
return this._sidenavConfig$.asObservable();
|
|
24
|
+
}
|
|
25
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SideNavComponent, deps: [{ token: i1.Store }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: SideNavComponent, isStandalone: true, selector: "ngssm-side-nav", inputs: { config: "config" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<div class=\"ngssm-sidenav-main-container\" *ngIf=\"(sidenavConfig$ | async) as config\">\n <div class=\"ngssm-sidenav-title\" *ngIf=\"config.title\">{{config.title}}</div>\n <mat-divider *ngIf=\"config.title\"></mat-divider>\n <ng-container *ngFor=\"let section of config.sections;let last = last;\" class=\"ngssm-sidenav-section-container\">\n <div class=\"ngssm-sidenav-section-item-container\">\n <div *ngIf=\"!section.route\" class=\"ngssm-sidenav-section-item\">\n <span *ngIf=\"section.icon\" [innerHTML]=\"section.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{section.label}}\n <ngssm-wrapper *ngIf=\"section.component\" [item]=\"section.component\"></ngssm-wrapper>\n </div>\n\n <a [routerLink]=\"section.route\" routerLinkActive=\"ngssm-sidenav-active-link\"\n [routerLinkActiveOptions]=\"{exact:section.linkActiveOnlyIfExact === true}\" *ngIf=\"section.route\"\n class=\"ngssm-sidenav-section-item\">\n <div>\n <span *ngIf=\"section.icon\" [innerHTML]=\"section.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{section.label}}\n <ngssm-wrapper *ngIf=\"section.component\" [item]=\"section.component\"></ngssm-wrapper>\n </div>\n </a>\n </div>\n <div *ngFor=\"let item of section.items\" class=\"ngssm-sidenav-item-container\">\n <div *ngIf=\"!item.route\" class=\"ngssm-sidenav-section-item\">\n <span *ngIf=\"item.icon\" [innerHTML]=\"item.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{item.label}}\n <ngssm-wrapper *ngIf=\"item.component\" [item]=\"item.component\"></ngssm-wrapper>\n </div>\n\n <a [routerLink]=\"item.route\" routerLinkActive=\"ngssm-sidenav-active-link\"\n [routerLinkActiveOptions]=\"{exact:item.linkActiveOnlyIfExact === true}\" *ngIf=\"item.route\"\n class=\"ngssm-sidenav-section-item\">\n <div>\n <span *ngIf=\"item.icon\" [innerHTML]=\"item.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{item.label}}\n <ngssm-wrapper *ngIf=\"item.component\" [item]=\"item.component\"></ngssm-wrapper>\n </div>\n </a>\n </div>\n\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </ng-container>\n</div>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: MatDividerModule }, { kind: "component", type: i3.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "component", type: WrapperComponent, selector: "ngssm-wrapper", inputs: ["item"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
27
|
+
}
|
|
28
|
+
export { SideNavComponent };
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: SideNavComponent, decorators: [{
|
|
30
|
+
type: Component,
|
|
31
|
+
args: [{ selector: 'ngssm-side-nav', standalone: true, imports: [CommonModule, MatDividerModule, RouterModule, WrapperComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"ngssm-sidenav-main-container\" *ngIf=\"(sidenavConfig$ | async) as config\">\n <div class=\"ngssm-sidenav-title\" *ngIf=\"config.title\">{{config.title}}</div>\n <mat-divider *ngIf=\"config.title\"></mat-divider>\n <ng-container *ngFor=\"let section of config.sections;let last = last;\" class=\"ngssm-sidenav-section-container\">\n <div class=\"ngssm-sidenav-section-item-container\">\n <div *ngIf=\"!section.route\" class=\"ngssm-sidenav-section-item\">\n <span *ngIf=\"section.icon\" [innerHTML]=\"section.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{section.label}}\n <ngssm-wrapper *ngIf=\"section.component\" [item]=\"section.component\"></ngssm-wrapper>\n </div>\n\n <a [routerLink]=\"section.route\" routerLinkActive=\"ngssm-sidenav-active-link\"\n [routerLinkActiveOptions]=\"{exact:section.linkActiveOnlyIfExact === true}\" *ngIf=\"section.route\"\n class=\"ngssm-sidenav-section-item\">\n <div>\n <span *ngIf=\"section.icon\" [innerHTML]=\"section.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{section.label}}\n <ngssm-wrapper *ngIf=\"section.component\" [item]=\"section.component\"></ngssm-wrapper>\n </div>\n </a>\n </div>\n <div *ngFor=\"let item of section.items\" class=\"ngssm-sidenav-item-container\">\n <div *ngIf=\"!item.route\" class=\"ngssm-sidenav-section-item\">\n <span *ngIf=\"item.icon\" [innerHTML]=\"item.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{item.label}}\n <ngssm-wrapper *ngIf=\"item.component\" [item]=\"item.component\"></ngssm-wrapper>\n </div>\n\n <a [routerLink]=\"item.route\" routerLinkActive=\"ngssm-sidenav-active-link\"\n [routerLinkActiveOptions]=\"{exact:item.linkActiveOnlyIfExact === true}\" *ngIf=\"item.route\"\n class=\"ngssm-sidenav-section-item\">\n <div>\n <span *ngIf=\"item.icon\" [innerHTML]=\"item.icon\" class=\"ngssm-sidenav-item-icon\"></span>\n {{item.label}}\n <ngssm-wrapper *ngIf=\"item.component\" [item]=\"item.component\"></ngssm-wrapper>\n </div>\n </a>\n </div>\n\n <mat-divider *ngIf=\"!last\"></mat-divider>\n </ng-container>\n</div>" }]
|
|
32
|
+
}], ctorParameters: function () { return [{ type: i1.Store }]; }, propDecorators: { class: [{
|
|
33
|
+
type: HostBinding,
|
|
34
|
+
args: ['class']
|
|
35
|
+
}], config: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tc2hlbGwvc3JjL2xpYi9jb21wb25lbnRzL3NpZGUtbmF2L3NpZGUtbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy9zaWRlLW5hdi9zaWRlLW5hdi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxhQUFhLENBQUM7QUFHcEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQUVoRSxNQU9hLGdCQUFpQixTQUFRLGNBQWM7SUFLbEQsWUFBWSxLQUFZO1FBQ3RCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUxFLG9CQUFlLEdBQUcsSUFBSSxlQUFlLENBQTRCLFNBQVMsQ0FBQyxDQUFDO1FBRXZFLFVBQUssR0FBRyxlQUFlLENBQUM7SUFJOUMsQ0FBQztJQUVELElBQW9CLE1BQU0sQ0FBQyxLQUFnQztRQUN6RCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QyxDQUFDOzhHQWZVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLGdMQ2xCN0IsMjhFQXlDTSwyQ0QzQk0sWUFBWSxvVEFBRSxnQkFBZ0Isa0lBQUUsWUFBWSx5ZUFBRSxnQkFBZ0I7O1NBSTdELGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsbUJBRXhELHVCQUF1QixDQUFDLE1BQU07NEZBS3pCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFNQSxNQUFNO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBOZ1NzbUNvbXBvbmVudCwgU3RvcmUgfSBmcm9tICduZ3NzbS1zdG9yZSc7XG5cbmltcG9ydCB7IFNpZGVuYXZDb25maWcgfSBmcm9tICcuLi8uLi9tb2RlbCc7XG5pbXBvcnQgeyBXcmFwcGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vd3JhcHBlci93cmFwcGVyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nc3NtLXNpZGUtbmF2JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0RGl2aWRlck1vZHVsZSwgUm91dGVyTW9kdWxlLCBXcmFwcGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL3NpZGUtbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkNvbXBvbmVudCBleHRlbmRzIE5nU3NtQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2lkZW5hdkNvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNpZGVuYXZDb25maWcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ25nc3NtLXNpZGVuYXYnO1xuXG4gIGNvbnN0cnVjdG9yKHN0b3JlOiBTdG9yZSkge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgY29uZmlnKHZhbHVlOiBTaWRlbmF2Q29uZmlnIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fc2lkZW5hdkNvbmZpZyQubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNpZGVuYXZDb25maWckKCk6IE9ic2VydmFibGU8U2lkZW5hdkNvbmZpZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9zaWRlbmF2Q29uZmlnJC5hc09ic2VydmFibGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIm5nc3NtLXNpZGVuYXYtbWFpbi1jb250YWluZXJcIiAqbmdJZj1cIihzaWRlbmF2Q29uZmlnJCB8IGFzeW5jKSBhcyBjb25maWdcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmdzc20tc2lkZW5hdi10aXRsZVwiICpuZ0lmPVwiY29uZmlnLnRpdGxlXCI+e3tjb25maWcudGl0bGV9fTwvZGl2PlxuICAgIDxtYXQtZGl2aWRlciAqbmdJZj1cImNvbmZpZy50aXRsZVwiPjwvbWF0LWRpdmlkZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBjb25maWcuc2VjdGlvbnM7bGV0IGxhc3QgPSBsYXN0O1wiIGNsYXNzPVwibmdzc20tc2lkZW5hdi1zZWN0aW9uLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibmdzc20tc2lkZW5hdi1zZWN0aW9uLWl0ZW0tY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlY3Rpb24ucm91dGVcIiBjbGFzcz1cIm5nc3NtLXNpZGVuYXYtc2VjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWN0aW9uLmljb25cIiBbaW5uZXJIVE1MXT1cInNlY3Rpb24uaWNvblwiIGNsYXNzPVwibmdzc20tc2lkZW5hdi1pdGVtLWljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAge3tzZWN0aW9uLmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8bmdzc20td3JhcHBlciAqbmdJZj1cInNlY3Rpb24uY29tcG9uZW50XCIgW2l0ZW1dPVwic2VjdGlvbi5jb21wb25lbnRcIj48L25nc3NtLXdyYXBwZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGEgW3JvdXRlckxpbmtdPVwic2VjdGlvbi5yb3V0ZVwiIHJvdXRlckxpbmtBY3RpdmU9XCJuZ3NzbS1zaWRlbmF2LWFjdGl2ZS1saW5rXCJcbiAgICAgICAgICAgICAgICBbcm91dGVyTGlua0FjdGl2ZU9wdGlvbnNdPVwie2V4YWN0OnNlY3Rpb24ubGlua0FjdGl2ZU9ubHlJZkV4YWN0ID09PSB0cnVlfVwiICpuZ0lmPVwic2VjdGlvbi5yb3V0ZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuZ3NzbS1zaWRlbmF2LXNlY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VjdGlvbi5pY29uXCIgW2lubmVySFRNTF09XCJzZWN0aW9uLmljb25cIiBjbGFzcz1cIm5nc3NtLXNpZGVuYXYtaXRlbS1pY29uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7e3NlY3Rpb24ubGFiZWx9fVxuICAgICAgICAgICAgICAgICAgICA8bmdzc20td3JhcHBlciAqbmdJZj1cInNlY3Rpb24uY29tcG9uZW50XCIgW2l0ZW1dPVwic2VjdGlvbi5jb21wb25lbnRcIj48L25nc3NtLXdyYXBwZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlY3Rpb24uaXRlbXNcIiBjbGFzcz1cIm5nc3NtLXNpZGVuYXYtaXRlbS1jb250YWluZXJcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhaXRlbS5yb3V0ZVwiIGNsYXNzPVwibmdzc20tc2lkZW5hdi1zZWN0aW9uLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uaWNvblwiIFtpbm5lckhUTUxdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJuZ3NzbS1zaWRlbmF2LWl0ZW0taWNvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICB7e2l0ZW0ubGFiZWx9fVxuICAgICAgICAgICAgICAgIDxuZ3NzbS13cmFwcGVyICpuZ0lmPVwiaXRlbS5jb21wb25lbnRcIiBbaXRlbV09XCJpdGVtLmNvbXBvbmVudFwiPjwvbmdzc20td3JhcHBlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8YSBbcm91dGVyTGlua109XCJpdGVtLnJvdXRlXCIgcm91dGVyTGlua0FjdGl2ZT1cIm5nc3NtLXNpZGVuYXYtYWN0aXZlLWxpbmtcIlxuICAgICAgICAgICAgICAgIFtyb3V0ZXJMaW5rQWN0aXZlT3B0aW9uc109XCJ7ZXhhY3Q6aXRlbS5saW5rQWN0aXZlT25seUlmRXhhY3QgPT09IHRydWV9XCIgKm5nSWY9XCJpdGVtLnJvdXRlXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm5nc3NtLXNpZGVuYXYtc2VjdGlvbi1pdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpdGVtLmljb25cIiBbaW5uZXJIVE1MXT1cIml0ZW0uaWNvblwiIGNsYXNzPVwibmdzc20tc2lkZW5hdi1pdGVtLWljb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7aXRlbS5sYWJlbH19XG4gICAgICAgICAgICAgICAgICAgIDxuZ3NzbS13cmFwcGVyICpuZ0lmPVwiaXRlbS5jb21wb25lbnRcIiBbaXRlbV09XCJpdGVtLmNvbXBvbmVudFwiPjwvbmdzc20td3JhcHBlcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG1hdC1kaXZpZGVyICpuZ0lmPVwiIWxhc3RcIj48L21hdC1kaXZpZGVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9kaXY+Il19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy, Input } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
|
+
import { NgSsmComponent } from 'ngssm-store';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ngssm-store";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
class WrapperComponent extends NgSsmComponent {
|
|
9
|
+
constructor(store, viewContainerRef) {
|
|
10
|
+
super(store);
|
|
11
|
+
this.viewContainerRef = viewContainerRef;
|
|
12
|
+
this._innerHtml$ = new BehaviorSubject(undefined);
|
|
13
|
+
}
|
|
14
|
+
set item(value) {
|
|
15
|
+
if (typeof value === 'string') {
|
|
16
|
+
this._innerHtml$.next(value);
|
|
17
|
+
}
|
|
18
|
+
else if (!!value) {
|
|
19
|
+
this.viewContainerRef.clear();
|
|
20
|
+
this.viewContainerRef.createComponent(value);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
get innerHtml$() {
|
|
24
|
+
return this._innerHtml$.asObservable();
|
|
25
|
+
}
|
|
26
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: WrapperComponent, deps: [{ token: i1.Store }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
27
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: WrapperComponent, isStandalone: true, selector: "ngssm-wrapper", inputs: { item: "item" }, usesInheritance: true, ngImport: i0, template: "<span *ngIf=\"(innerHtml$ | async) as innerHtml\" [innerHTML]=\"innerHtml\"></span>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
28
|
+
}
|
|
29
|
+
export { WrapperComponent };
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: WrapperComponent, decorators: [{
|
|
31
|
+
type: Component,
|
|
32
|
+
args: [{ selector: 'ngssm-wrapper', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<span *ngIf=\"(innerHtml$ | async) as innerHtml\" [innerHTML]=\"innerHtml\"></span>" }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i0.ViewContainerRef }]; }, propDecorators: { item: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}] } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3JhcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3NzbS1zaGVsbC9zcmMvbGliL2NvbXBvbmVudHMvd3JhcHBlci93cmFwcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvY29tcG9uZW50cy93cmFwcGVyL3dyYXBwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxLQUFLLEVBQW9CLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSxjQUFjLEVBQVMsTUFBTSxhQUFhLENBQUM7Ozs7QUFFcEQsTUFPYSxnQkFBaUIsU0FBUSxjQUFjO0lBR2xELFlBQVksS0FBWSxFQUFVLGdCQUFrQztRQUNsRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFEbUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUZuRCxnQkFBVyxHQUFHLElBQUksZUFBZSxDQUFxQixTQUFTLENBQUMsQ0FBQztJQUlsRixDQUFDO0lBRUQsSUFBb0IsSUFBSSxDQUFDLEtBQVU7UUFDakMsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUI7YUFBTSxJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzlCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDOUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN6QyxDQUFDOzhHQWxCVSxnQkFBZ0I7a0dBQWhCLGdCQUFnQiwwSENiN0IscUZBQStFLDJDRFNuRSxZQUFZOztTQUlYLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQVA1QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBRU4sdUJBQXVCLENBQUMsTUFBTTsySEFTM0IsSUFBSTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE5nU3NtQ29tcG9uZW50LCBTdG9yZSB9IGZyb20gJ25nc3NtLXN0b3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmdzc20td3JhcHBlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vd3JhcHBlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFdyYXBwZXJDb21wb25lbnQgZXh0ZW5kcyBOZ1NzbUNvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lubmVySHRtbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuICBjb25zdHJ1Y3RvcihzdG9yZTogU3RvcmUsIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xuICAgIHN1cGVyKHN0b3JlKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgaXRlbSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2lubmVySHRtbCQubmV4dCh2YWx1ZSk7XG4gICAgfSBlbHNlIGlmICghIXZhbHVlKSB7XG4gICAgICB0aGlzLnZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgICAgIHRoaXMudmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5uZXJIdG1sJCgpOiBPYnNlcnZhYmxlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuICAgIHJldHVybiB0aGlzLl9pbm5lckh0bWwkLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG59XG4iLCI8c3BhbiAqbmdJZj1cIihpbm5lckh0bWwkIHwgYXN5bmMpIGFzIGlubmVySHRtbFwiIFtpbm5lckhUTUxdPVwiaW5uZXJIdG1sXCI+PC9zcGFuPiJdfQ==
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NGSSM_EFFECT } from 'ngssm-store';
|
|
3
|
+
import { ShellActionType } from '../actions';
|
|
4
|
+
import { ShellNotificationPopupComponent } from '../components';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/material/snack-bar";
|
|
7
|
+
class NotificationShowingEffect {
|
|
8
|
+
constructor(snackBar) {
|
|
9
|
+
this.snackBar = snackBar;
|
|
10
|
+
this.processedActions = [ShellActionType.displayNotification];
|
|
11
|
+
}
|
|
12
|
+
processAction(store, state, action) {
|
|
13
|
+
this.snackBar.openFromComponent(ShellNotificationPopupComponent, {
|
|
14
|
+
panelClass: 'ngssm-shell-notification-snack-panel',
|
|
15
|
+
duration: 1000,
|
|
16
|
+
horizontalPosition: 'center',
|
|
17
|
+
verticalPosition: 'top'
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NotificationShowingEffect, deps: [{ token: i1.MatSnackBar }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
21
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NotificationShowingEffect }); }
|
|
22
|
+
}
|
|
23
|
+
export { NotificationShowingEffect };
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NotificationShowingEffect, decorators: [{
|
|
25
|
+
type: Injectable
|
|
26
|
+
}], ctorParameters: function () { return [{ type: i1.MatSnackBar }]; } });
|
|
27
|
+
export const notificationShowingEffectProvider = {
|
|
28
|
+
provide: NGSSM_EFFECT,
|
|
29
|
+
useClass: NotificationShowingEffect,
|
|
30
|
+
multi: true
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLXNob3dpbmcuZWZmZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdzc20tc2hlbGwvc3JjL2xpYi9lZmZlY3RzL25vdGlmaWNhdGlvbi1zaG93aW5nLmVmZmVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBR3JELE9BQU8sRUFBZ0MsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFaEUsTUFDYSx5QkFBeUI7SUFHcEMsWUFBb0IsUUFBcUI7UUFBckIsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQUZ6QixxQkFBZ0IsR0FBYSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRXZDLENBQUM7SUFFdEMsYUFBYSxDQUFDLEtBQVksRUFBRSxLQUFZLEVBQUUsTUFBYztRQUM3RCxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLCtCQUErQixFQUFFO1lBQy9ELFVBQVUsRUFBRSxzQ0FBc0M7WUFDbEQsUUFBUSxFQUFFLElBQUk7WUFDZCxrQkFBa0IsRUFBRSxRQUFRO1lBQzVCLGdCQUFnQixFQUFFLEtBQUs7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0FaVSx5QkFBeUI7a0hBQXpCLHlCQUF5Qjs7U0FBekIseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBRHJDLFVBQVU7O0FBZ0JYLE1BQU0sQ0FBQyxNQUFNLGlDQUFpQyxHQUFhO0lBQ3pELE9BQU8sRUFBRSxZQUFZO0lBQ3JCLFFBQVEsRUFBRSx5QkFBeUI7SUFDbkMsS0FBSyxFQUFFLElBQUk7Q0FDWixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcblxuaW1wb3J0IHsgRWZmZWN0LCBTdG9yZSwgU3RhdGUsIEFjdGlvbiwgTkdTU01fRUZGRUNUIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBTaGVsbEFjdGlvblR5cGUgfSBmcm9tICcuLi9hY3Rpb25zJztcbmltcG9ydCB7IFNoZWxsTm90aWZpY2F0aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5vdGlmaWNhdGlvblNob3dpbmdFZmZlY3QgaW1wbGVtZW50cyBFZmZlY3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvY2Vzc2VkQWN0aW9uczogc3RyaW5nW10gPSBbU2hlbGxBY3Rpb25UeXBlLmRpc3BsYXlOb3RpZmljYXRpb25dO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyKSB7fVxuXG4gIHB1YmxpYyBwcm9jZXNzQWN0aW9uKHN0b3JlOiBTdG9yZSwgc3RhdGU6IFN0YXRlLCBhY3Rpb246IEFjdGlvbik6IHZvaWQge1xuICAgIHRoaXMuc25hY2tCYXIub3BlbkZyb21Db21wb25lbnQoU2hlbGxOb3RpZmljYXRpb25Qb3B1cENvbXBvbmVudCwge1xuICAgICAgcGFuZWxDbGFzczogJ25nc3NtLXNoZWxsLW5vdGlmaWNhdGlvbi1zbmFjay1wYW5lbCcsXG4gICAgICBkdXJhdGlvbjogMTAwMCxcbiAgICAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJ1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBub3RpZmljYXRpb25TaG93aW5nRWZmZWN0UHJvdmlkZXI6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR1NTTV9FRkZFQ1QsXG4gIHVzZUNsYXNzOiBOb3RpZmljYXRpb25TaG93aW5nRWZmZWN0LFxuICBtdWx0aTogdHJ1ZVxufTtcbiJdfQ==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { NGSSM_REDUCER } from 'ngssm-store';
|
|
3
|
+
import { ShellActionType } from '../actions';
|
|
4
|
+
import { selectShellState, updateShellState } from '../state';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
class NavigationBarReducer {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.processedActions = [
|
|
9
|
+
ShellActionType.toggleNavigationBarState,
|
|
10
|
+
ShellActionType.openNavigationBar,
|
|
11
|
+
ShellActionType.closeNavigationBar,
|
|
12
|
+
ShellActionType.lockNavigationBar
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
updateState(state, action) {
|
|
16
|
+
switch (action.type) {
|
|
17
|
+
case ShellActionType.toggleNavigationBarState:
|
|
18
|
+
return updateShellState(state, {
|
|
19
|
+
navigationBarOpen: { $apply: (value) => !value }
|
|
20
|
+
});
|
|
21
|
+
case ShellActionType.openNavigationBar:
|
|
22
|
+
if (selectShellState(state).navigationBarOpen) {
|
|
23
|
+
return state;
|
|
24
|
+
}
|
|
25
|
+
return updateShellState(state, {
|
|
26
|
+
navigationBarOpen: { $set: true }
|
|
27
|
+
});
|
|
28
|
+
case ShellActionType.closeNavigationBar:
|
|
29
|
+
if (!selectShellState(state).navigationBarOpen) {
|
|
30
|
+
return state;
|
|
31
|
+
}
|
|
32
|
+
return updateShellState(state, {
|
|
33
|
+
navigationBarOpen: { $set: false }
|
|
34
|
+
});
|
|
35
|
+
case ShellActionType.lockNavigationBar:
|
|
36
|
+
const lockNavigationBarAction = action;
|
|
37
|
+
return updateShellState(state, {
|
|
38
|
+
navigationBarLockStatus: { $set: lockNavigationBarAction.lockStatus }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
return state;
|
|
42
|
+
}
|
|
43
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationBarReducer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
44
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationBarReducer }); }
|
|
45
|
+
}
|
|
46
|
+
export { NavigationBarReducer };
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: NavigationBarReducer, decorators: [{
|
|
48
|
+
type: Injectable
|
|
49
|
+
}] });
|
|
50
|
+
export const navigationBarReducerProvider = {
|
|
51
|
+
provide: NGSSM_REDUCER,
|
|
52
|
+
useClass: NavigationBarReducer,
|
|
53
|
+
multi: true
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi1iYXIucmVkdWNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nc3NtLXNoZWxsL3NyYy9saWIvcmVkdWNlcnMvbmF2aWdhdGlvbi1iYXIucmVkdWNlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRXJELE9BQU8sRUFBMEIsYUFBYSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXBFLE9BQU8sRUFBMkIsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFFOUQsTUFDYSxvQkFBb0I7SUFEakM7UUFFa0IscUJBQWdCLEdBQWE7WUFDM0MsZUFBZSxDQUFDLHdCQUF3QjtZQUN4QyxlQUFlLENBQUMsaUJBQWlCO1lBQ2pDLGVBQWUsQ0FBQyxrQkFBa0I7WUFDbEMsZUFBZSxDQUFDLGlCQUFpQjtTQUNsQyxDQUFDO0tBb0NIO0lBbENRLFdBQVcsQ0FBQyxLQUFZLEVBQUUsTUFBYztRQUM3QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDbkIsS0FBSyxlQUFlLENBQUMsd0JBQXdCO2dCQUMzQyxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRTtvQkFDN0IsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFO2lCQUNqRCxDQUFDLENBQUM7WUFFTCxLQUFLLGVBQWUsQ0FBQyxpQkFBaUI7Z0JBQ3BDLElBQUksZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsaUJBQWlCLEVBQUU7b0JBQzdDLE9BQU8sS0FBSyxDQUFDO2lCQUNkO2dCQUVELE9BQU8sZ0JBQWdCLENBQUMsS0FBSyxFQUFFO29CQUM3QixpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7aUJBQ2xDLENBQUMsQ0FBQztZQUVMLEtBQUssZUFBZSxDQUFDLGtCQUFrQjtnQkFDckMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLGlCQUFpQixFQUFFO29CQUM5QyxPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFFRCxPQUFPLGdCQUFnQixDQUFDLEtBQUssRUFBRTtvQkFDN0IsaUJBQWlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFO2lCQUNuQyxDQUFDLENBQUM7WUFFTCxLQUFLLGVBQWUsQ0FBQyxpQkFBaUI7Z0JBQ3BDLE1BQU0sdUJBQXVCLEdBQUcsTUFBaUMsQ0FBQztnQkFDbEUsT0FBTyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7b0JBQzdCLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixDQUFDLFVBQVUsRUFBRTtpQkFDdEUsQ0FBQyxDQUFDO1NBQ047UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7OEdBekNVLG9CQUFvQjtrSEFBcEIsb0JBQW9COztTQUFwQixvQkFBb0I7MkZBQXBCLG9CQUFvQjtrQkFEaEMsVUFBVTs7QUE2Q1gsTUFBTSxDQUFDLE1BQU0sNEJBQTRCLEdBQWE7SUFDcEQsT0FBTyxFQUFFLGFBQWE7SUFDdEIsUUFBUSxFQUFFLG9CQUFvQjtJQUM5QixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBSZWR1Y2VyLCBTdGF0ZSwgQWN0aW9uLCBOR1NTTV9SRURVQ0VSIH0gZnJvbSAnbmdzc20tc3RvcmUnO1xuXG5pbXBvcnQgeyBMb2NrTmF2aWdhdGlvbkJhckFjdGlvbiwgU2hlbGxBY3Rpb25UeXBlIH0gZnJvbSAnLi4vYWN0aW9ucyc7XG5pbXBvcnQgeyBzZWxlY3RTaGVsbFN0YXRlLCB1cGRhdGVTaGVsbFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmF2aWdhdGlvbkJhclJlZHVjZXIgaW1wbGVtZW50cyBSZWR1Y2VyIHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2Nlc3NlZEFjdGlvbnM6IHN0cmluZ1tdID0gW1xuICAgIFNoZWxsQWN0aW9uVHlwZS50b2dnbGVOYXZpZ2F0aW9uQmFyU3RhdGUsXG4gICAgU2hlbGxBY3Rpb25UeXBlLm9wZW5OYXZpZ2F0aW9uQmFyLFxuICAgIFNoZWxsQWN0aW9uVHlwZS5jbG9zZU5hdmlnYXRpb25CYXIsXG4gICAgU2hlbGxBY3Rpb25UeXBlLmxvY2tOYXZpZ2F0aW9uQmFyXG4gIF07XG5cbiAgcHVibGljIHVwZGF0ZVN0YXRlKHN0YXRlOiBTdGF0ZSwgYWN0aW9uOiBBY3Rpb24pOiBTdGF0ZSB7XG4gICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBTaGVsbEFjdGlvblR5cGUudG9nZ2xlTmF2aWdhdGlvbkJhclN0YXRlOlxuICAgICAgICByZXR1cm4gdXBkYXRlU2hlbGxTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgIG5hdmlnYXRpb25CYXJPcGVuOiB7ICRhcHBseTogKHZhbHVlKSA9PiAhdmFsdWUgfVxuICAgICAgICB9KTtcblxuICAgICAgY2FzZSBTaGVsbEFjdGlvblR5cGUub3Blbk5hdmlnYXRpb25CYXI6XG4gICAgICAgIGlmIChzZWxlY3RTaGVsbFN0YXRlKHN0YXRlKS5uYXZpZ2F0aW9uQmFyT3Blbikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB1cGRhdGVTaGVsbFN0YXRlKHN0YXRlLCB7XG4gICAgICAgICAgbmF2aWdhdGlvbkJhck9wZW46IHsgJHNldDogdHJ1ZSB9XG4gICAgICAgIH0pO1xuXG4gICAgICBjYXNlIFNoZWxsQWN0aW9uVHlwZS5jbG9zZU5hdmlnYXRpb25CYXI6XG4gICAgICAgIGlmICghc2VsZWN0U2hlbGxTdGF0ZShzdGF0ZSkubmF2aWdhdGlvbkJhck9wZW4pIHtcbiAgICAgICAgICByZXR1cm4gc3RhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdXBkYXRlU2hlbGxTdGF0ZShzdGF0ZSwge1xuICAgICAgICAgIG5hdmlnYXRpb25CYXJPcGVuOiB7ICRzZXQ6IGZhbHNlIH1cbiAgICAgICAgfSk7XG5cbiAgICAgIGNhc2UgU2hlbGxBY3Rpb25UeXBlLmxvY2tOYXZpZ2F0aW9uQmFyOlxuICAgICAgICBjb25zdCBsb2NrTmF2aWdhdGlvbkJhckFjdGlvbiA9IGFjdGlvbiBhcyBMb2NrTmF2aWdhdGlvbkJhckFjdGlvbjtcbiAgICAgICAgcmV0dXJuIHVwZGF0ZVNoZWxsU3RhdGUoc3RhdGUsIHtcbiAgICAgICAgICBuYXZpZ2F0aW9uQmFyTG9ja1N0YXR1czogeyAkc2V0OiBsb2NrTmF2aWdhdGlvbkJhckFjdGlvbi5sb2NrU3RhdHVzIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBuYXZpZ2F0aW9uQmFyUmVkdWNlclByb3ZpZGVyOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTkdTU01fUkVEVUNFUixcbiAgdXNlQ2xhc3M6IE5hdmlnYXRpb25CYXJSZWR1Y2VyLFxuICBtdWx0aTogdHJ1ZVxufTtcbiJdfQ==
|