@indice/ng-components 0.2.138-beta → 0.2.138
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/_styles.css +69 -72
- package/bundles/indice-ng-components.umd.js +218 -122
- package/bundles/indice-ng-components.umd.js.map +1 -1
- package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +40 -0
- package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +77 -0
- package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +70 -72
- package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +11 -6
- package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +5 -6
- package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +1 -3
- package/esm2015/lib/ng-components.module.js +7 -6
- package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +2 -2
- package/esm2015/lib/tokens.js +2 -1
- package/esm2015/lib/types.js +10 -7
- package/esm2015/public-api.js +2 -2
- package/fesm2015/indice-ng-components.js +195 -109
- package/fesm2015/indice-ng-components.js.map +1 -1
- package/lib/controls/nav-links-list/nav-links-list.component.d.ts +15 -0
- package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +22 -0
- package/lib/layouts/shell/shell-header/shell-header.component.d.ts +21 -25
- package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +3 -2
- package/lib/layouts/views/form-layout/form-layout.component.d.ts +2 -3
- package/lib/ng-components.module.d.ts +6 -5
- package/lib/tokens.d.ts +1 -0
- package/lib/types.d.ts +18 -10
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/esm2015/lib/pipes/obs-with-status.pipe.js +0 -26
- package/lib/pipes/obs-with-status.pipe.d.ts +0 -13
|
@@ -3,10 +3,10 @@ import { EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, Component,
|
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';
|
|
5
5
|
import * as i1$1 from '@angular/router';
|
|
6
|
-
import { NavigationStart, Router, ActivationStart, RouterModule } from '@angular/router';
|
|
6
|
+
import { NavigationStart, Router, ActivatedRoute, ActivationStart, RouterModule } from '@angular/router';
|
|
7
7
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
8
|
-
import { BehaviorSubject, Subject, of,
|
|
9
|
-
import { filter,
|
|
8
|
+
import { BehaviorSubject, Subject, of, fromEvent } from 'rxjs';
|
|
9
|
+
import { filter, share, map, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
10
10
|
import * as i2 from '@indice/ng-auth';
|
|
11
11
|
import { AuthService, IndiceAuthModule } from '@indice/ng-auth';
|
|
12
12
|
|
|
@@ -294,30 +294,33 @@ Icons.SortDesc = 'ms-Icon ms-Icon--Descending';
|
|
|
294
294
|
Icons.Details = ' ms-Icon ms-Icon--AccountActivity';
|
|
295
295
|
|
|
296
296
|
class NavLink {
|
|
297
|
-
constructor(text, path, exact = false, external = false, icon,
|
|
298
|
-
this.
|
|
297
|
+
constructor(text, path, exact = false, external = false, icon, data) {
|
|
298
|
+
this.type = 'router';
|
|
299
299
|
this.text = text;
|
|
300
300
|
this.path = path;
|
|
301
301
|
this.exact = exact;
|
|
302
302
|
this.external = external;
|
|
303
303
|
this.icon = icon;
|
|
304
|
-
this.
|
|
305
|
-
this.creationDate = creationDate;
|
|
304
|
+
this.data = data;
|
|
306
305
|
}
|
|
307
306
|
}
|
|
308
307
|
class ExternalNavLink extends NavLink {
|
|
309
308
|
constructor(text, path, openInNewTab, icon) {
|
|
310
309
|
super(text, path, true, openInNewTab, icon);
|
|
310
|
+
this.type = 'external';
|
|
311
311
|
}
|
|
312
312
|
}
|
|
313
313
|
class FragmentNavLink extends NavLink {
|
|
314
314
|
constructor(text, path, icon) {
|
|
315
315
|
super(text, path, true, true, icon);
|
|
316
|
+
this.type = 'fragment';
|
|
316
317
|
}
|
|
317
318
|
}
|
|
318
319
|
class NotificationNavLink extends NavLink {
|
|
319
320
|
constructor(text, path, isRead, creationDate) {
|
|
320
|
-
super(text, path, true, false, undefined
|
|
321
|
+
super(text, path, true, false, undefined);
|
|
322
|
+
this.isRead = isRead;
|
|
323
|
+
this.creationDate = creationDate;
|
|
321
324
|
}
|
|
322
325
|
}
|
|
323
326
|
class ViewAction {
|
|
@@ -371,7 +374,7 @@ class DefaultShellConfig {
|
|
|
371
374
|
this.appLogoAlt = 'your app name here';
|
|
372
375
|
this.showHeader = true;
|
|
373
376
|
this.showUserNameOnHeader = false;
|
|
374
|
-
this.
|
|
377
|
+
this.showAlertsOnHeader = false;
|
|
375
378
|
this.showFooter = true;
|
|
376
379
|
this.fluid = false;
|
|
377
380
|
}
|
|
@@ -1394,7 +1397,44 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1394
1397
|
type: Output
|
|
1395
1398
|
}] } });
|
|
1396
1399
|
|
|
1400
|
+
class NavLinksListComponent {
|
|
1401
|
+
constructor() {
|
|
1402
|
+
// tslint:disable-next-line:no-input-rename
|
|
1403
|
+
this.navLinkClass = 'nav-link';
|
|
1404
|
+
// tslint:disable-next-line:no-input-rename
|
|
1405
|
+
this.navLinkActiveClass = 'nav-link-active';
|
|
1406
|
+
// tslint:disable-next-line:no-input-rename
|
|
1407
|
+
this.containerClass = '';
|
|
1408
|
+
}
|
|
1409
|
+
ngOnInit() {
|
|
1410
|
+
}
|
|
1411
|
+
}
|
|
1412
|
+
NavLinksListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: NavLinksListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1413
|
+
NavLinksListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: { links: "links", activeFragment: ["active-fragment", "activeFragment"], navLinkClass: ["link-class", "navLinkClass"], navLinkActiveClass: ["link-active-class", "navLinkActiveClass"], containerClass: ["container-class", "containerClass"] }, ngImport: i0, template: "<div [class]=\"containerClass\">\r\n <ng-container *ngFor=\"let link of links | async\">\r\n <ng-container [ngSwitch]=\"link.type\">\r\n <a *ngSwitchCase=\"'router'\"\r\n href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [routerLinkActive]=\"navLinkActiveClass\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n [class]=\"navLinkClass\">\r\n {{ link.text }}\r\n </a>\r\n <a *ngSwitchCase=\"'external'\"\r\n [href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n class=\"nav-link\">\r\n {{ link.text }}\r\n </a>\r\n <a *ngSwitchCase=\"'fragment'\"\r\n routerLink=\".\"\r\n [fragment]=\"link.path\"\r\n [class.active]=\"(activeFragment | async) === link.path\"\r\n class=\"nav-link\">\r\n {{ link.text }}\r\n </a>\r\n </ng-container>\r\n </ng-container>\r\n</div>\r\n", directives: [{ type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }], pipes: { "async": i1.AsyncPipe } });
|
|
1414
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: NavLinksListComponent, decorators: [{
|
|
1415
|
+
type: Component,
|
|
1416
|
+
args: [{
|
|
1417
|
+
selector: 'lib-nav-links-list',
|
|
1418
|
+
templateUrl: './nav-links-list.component.html'
|
|
1419
|
+
}]
|
|
1420
|
+
}], ctorParameters: function () { return []; }, propDecorators: { links: [{
|
|
1421
|
+
type: Input
|
|
1422
|
+
}], activeFragment: [{
|
|
1423
|
+
type: Input,
|
|
1424
|
+
args: ['active-fragment']
|
|
1425
|
+
}], navLinkClass: [{
|
|
1426
|
+
type: Input,
|
|
1427
|
+
args: ['link-class']
|
|
1428
|
+
}], navLinkActiveClass: [{
|
|
1429
|
+
type: Input,
|
|
1430
|
+
args: ['link-active-class']
|
|
1431
|
+
}], containerClass: [{
|
|
1432
|
+
type: Input,
|
|
1433
|
+
args: ['container-class']
|
|
1434
|
+
}] } });
|
|
1435
|
+
|
|
1397
1436
|
const APP_LINKS = new InjectionToken('APP_LINKS');
|
|
1437
|
+
const APP_NOTIFICATIONS = new InjectionToken('APP_NOTIFICATIONS');
|
|
1398
1438
|
const SHELL_CONFIG = new InjectionToken('SHELL_CONFIG');
|
|
1399
1439
|
|
|
1400
1440
|
class DynamicComponentHostDirective {
|
|
@@ -1643,106 +1683,161 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1643
1683
|
args: [{ providedIn: 'root' }]
|
|
1644
1684
|
}], ctorParameters: function () { return [{ type: i0.ComponentFactoryResolver }, { type: i0.Injector }, { type: i0.ApplicationRef }]; } });
|
|
1645
1685
|
|
|
1686
|
+
class NotificationsIndicatorComponent {
|
|
1687
|
+
constructor(notifications, links) {
|
|
1688
|
+
this.notifications = notifications;
|
|
1689
|
+
this.links = links;
|
|
1690
|
+
this.menuExpanded = false;
|
|
1691
|
+
this.unreadCount = 0;
|
|
1692
|
+
this.items = [];
|
|
1693
|
+
this.inboxAction = undefined;
|
|
1694
|
+
this.newArrival = false;
|
|
1695
|
+
}
|
|
1696
|
+
ngOnDestroy() {
|
|
1697
|
+
if (this.notificationsSub$) {
|
|
1698
|
+
this.notificationsSub$.unsubscribe();
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
ngOnInit() {
|
|
1702
|
+
this.links['notifications'].subscribe(notificationsLink => {
|
|
1703
|
+
this.allNotificationsLink = notificationsLink;
|
|
1704
|
+
});
|
|
1705
|
+
this.notificationsSub$ = this.notifications.messages.subscribe(result => {
|
|
1706
|
+
if (result.items) {
|
|
1707
|
+
this.newArrival = true;
|
|
1708
|
+
this.unreadCount = result.count;
|
|
1709
|
+
this.items = result.items;
|
|
1710
|
+
setTimeout(() => { this.newArrival = false; }, 1000);
|
|
1711
|
+
}
|
|
1712
|
+
});
|
|
1713
|
+
}
|
|
1714
|
+
toggleMenu() {
|
|
1715
|
+
this.menuExpanded = !this.menuExpanded;
|
|
1716
|
+
this.unreadCount = 0;
|
|
1717
|
+
}
|
|
1718
|
+
doInboxAction() {
|
|
1719
|
+
if (this.notifications.inboxAction) {
|
|
1720
|
+
this.notifications.inboxAction();
|
|
1721
|
+
}
|
|
1722
|
+
else {
|
|
1723
|
+
this.menuExpanded = true;
|
|
1724
|
+
}
|
|
1725
|
+
this.unreadCount = 0;
|
|
1726
|
+
}
|
|
1727
|
+
// this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
|
|
1728
|
+
// this.allItemsLink = result.allNotifications;
|
|
1729
|
+
// this.items = result.items;
|
|
1730
|
+
// this.unreadCount = result.count;
|
|
1731
|
+
// }));
|
|
1732
|
+
// [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
|
|
1733
|
+
// this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
|
|
1734
|
+
// this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
|
|
1735
|
+
// this.getUnreadNotificationsCount();
|
|
1736
|
+
// tslint:disable-next-line:typedef
|
|
1737
|
+
onClickOutside($event) {
|
|
1738
|
+
this.menuExpanded = false;
|
|
1739
|
+
}
|
|
1740
|
+
}
|
|
1741
|
+
NotificationsIndicatorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: NotificationsIndicatorComponent, deps: [{ token: APP_NOTIFICATIONS }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
|
|
1742
|
+
NotificationsIndicatorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator", ngImport: i0, template: "<div class=\"relative\"\r\n(clickOutside)=\"onClickOutside($event)\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n (click)=\"doInboxAction()\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">\r\n <i class=\"ms-Icon\"\r\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\r\n [class.text-sky-400]=\"unreadCount > 0\"\r\n [class.animate-notification]=\"newArrival\"\r\n [class.ms-Icon--Message]=\"unreadCount === 0\">\r\n </i>\r\n </span>\r\n <span\r\n *ngIf=\"unreadCount > 0\"\r\n [class.animate-pulse]=\"newArrival\"\r\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100 ordinal\">\r\n {{ unreadCount }}\r\n </span>\r\n </span>\r\n </button>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"menuExpanded\" class=\"header-notifications-dropdown-with-username\" role=\"menu\" aria-orientation=\"vertical\" aria-labelledby=\"messages-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!items; else messagesDropDown\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-template #messagesDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"items; else loading\">\r\n <ng-container *ngIf=\"items.length <= 0\" class=\"py-5\">\r\n <div class=\"notifications-nav-link hover:bg-transparent\">\u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2</div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let message of items\">\r\n <li class=\"mb-2\" [ngClass]=\"{ 'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !message.data.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a\r\n [routerLink]=\"message.path\"\r\n class=\"notifications-nav-link grid\"\r\n [ngClass]=\"!message.data.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\"\r\n >\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ message.data.creationDate | date: \"EEE, d MMMM\" }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ message.data.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </li>\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-sm\" >\r\n <a [routerLink]=\"allNotificationsLink!.path\">\r\n <button type=\"button\" class=\"header-notifications-dropdown-view-all-button\">{{allNotificationsLink!.text}}</button>\r\n </a>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "date": i1.DatePipe } });
|
|
1743
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: NotificationsIndicatorComponent, decorators: [{
|
|
1744
|
+
type: Component,
|
|
1745
|
+
args: [{
|
|
1746
|
+
selector: 'lib-notifications-indicator',
|
|
1747
|
+
templateUrl: './notifications-indicator.component.html'
|
|
1748
|
+
}]
|
|
1749
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1750
|
+
type: Inject,
|
|
1751
|
+
args: [APP_NOTIFICATIONS]
|
|
1752
|
+
}] }, { type: undefined, decorators: [{
|
|
1753
|
+
type: Inject,
|
|
1754
|
+
args: [APP_LINKS]
|
|
1755
|
+
}] }]; } });
|
|
1756
|
+
|
|
1646
1757
|
class ShellHeaderComponent {
|
|
1647
|
-
constructor(authService, router, links) {
|
|
1758
|
+
constructor(authService, router, route, config, links) {
|
|
1648
1759
|
this.authService = authService;
|
|
1649
1760
|
this.router = router;
|
|
1761
|
+
this.route = route;
|
|
1762
|
+
this.config = config;
|
|
1650
1763
|
this.links = links;
|
|
1651
1764
|
// tslint:disable-next-line:no-input-rename
|
|
1652
1765
|
this.sectionLinksPath = 'main';
|
|
1653
|
-
|
|
1654
|
-
this.allNotificationsLinkPath = 'allNotifications';
|
|
1655
|
-
this.border = true;
|
|
1656
|
-
this.showNotifications = false;
|
|
1657
|
-
this.showUserNameOnHeader = false;
|
|
1658
|
-
this.notificationsMenuVisible = true;
|
|
1766
|
+
// tslint:disable-next-line:no-input-rename
|
|
1659
1767
|
this.profileMenuVisible = true;
|
|
1768
|
+
// tslint:disable-next-line:no-input-rename
|
|
1769
|
+
this.showUserNameOnHeader = false;
|
|
1770
|
+
// tslint:disable-next-line:no-input-rename
|
|
1771
|
+
this.showAlerts = false;
|
|
1772
|
+
this.border = true;
|
|
1660
1773
|
this.sectionLinks = of([]);
|
|
1661
|
-
this.notificationLinks = of([]);
|
|
1662
|
-
this.allNotificationsLink = of();
|
|
1663
1774
|
this.mobileMenuExpanded = false;
|
|
1664
1775
|
this.userMenuExpanded = false;
|
|
1665
|
-
this.notificationsMenuExpanded = false;
|
|
1666
|
-
this.routeSubject = new Observable();
|
|
1667
1776
|
this.routerSub$ = null;
|
|
1668
1777
|
this.userSub$ = null;
|
|
1669
1778
|
this.statusSub$ = null;
|
|
1670
1779
|
this.user = null;
|
|
1671
1780
|
this.avatarName = null;
|
|
1672
|
-
this.
|
|
1673
|
-
|
|
1674
|
-
ngOnDestroy() {
|
|
1675
|
-
if (this.routerSub$) {
|
|
1676
|
-
this.routerSub$.unsubscribe();
|
|
1677
|
-
}
|
|
1678
|
-
// TODO: check authenticated user here before we start polling server status
|
|
1679
|
-
if (this.statusSub$) {
|
|
1680
|
-
this.statusSub$.unsubscribe();
|
|
1681
|
-
}
|
|
1682
|
-
if (this.userSub$) {
|
|
1683
|
-
this.userSub$.unsubscribe();
|
|
1684
|
-
}
|
|
1781
|
+
this.activeFragment = null;
|
|
1782
|
+
this.routeSubject = this.router.events.pipe(filter((event) => event instanceof NavigationStart));
|
|
1685
1783
|
}
|
|
1686
1784
|
ngOnInit() {
|
|
1687
|
-
|
|
1688
|
-
this.showNotifications = (_a = this.config) === null || _a === void 0 ? void 0 : _a.showNotifications;
|
|
1689
|
-
this.showUserNameOnHeader = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showUserNameOnHeader;
|
|
1785
|
+
this.activeFragment = this.route.fragment.pipe(share());
|
|
1690
1786
|
this.sectionLinks = this.links[this.sectionLinksPath];
|
|
1691
|
-
this.
|
|
1692
|
-
this.allNotificationsLink = this.links[this.allNotificationsLinkPath];
|
|
1693
|
-
this.routerSub$ = this.router.events.pipe(filter(event => event instanceof NavigationStart)).subscribe(event => {
|
|
1787
|
+
this.routerSub$ = this.routeSubject.subscribe((event) => {
|
|
1694
1788
|
this.mobileMenuExpanded = false;
|
|
1695
1789
|
this.userMenuExpanded = false;
|
|
1696
|
-
this.notificationsMenuExpanded = false;
|
|
1697
1790
|
});
|
|
1698
1791
|
this.authService.loadUser().subscribe((user) => {
|
|
1699
|
-
console.log(user);
|
|
1700
1792
|
this.setCurrentUser(user);
|
|
1701
1793
|
}, error => {
|
|
1702
|
-
console.
|
|
1794
|
+
console.error(error);
|
|
1703
1795
|
});
|
|
1704
1796
|
// Detect user changes and display / or not user info accordingly...
|
|
1705
1797
|
this.userSub$ = this.authService.user$.subscribe((user) => {
|
|
1706
1798
|
// console.log('ShellHeaderComponent user subscription');
|
|
1707
1799
|
this.setCurrentUser(user);
|
|
1708
1800
|
});
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1801
|
+
// set current lang if no current value from langs if any
|
|
1802
|
+
if (!this.currentLang && this.langs && this.langs.length > 0) {
|
|
1803
|
+
this.setCurrentLang(this.langs[0]);
|
|
1804
|
+
}
|
|
1712
1805
|
}
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1806
|
+
ngOnDestroy() {
|
|
1807
|
+
if (this.routerSub$) {
|
|
1808
|
+
this.routerSub$.unsubscribe();
|
|
1809
|
+
}
|
|
1810
|
+
// TODO: check authenticated user here before we start polling server status
|
|
1811
|
+
if (this.statusSub$) {
|
|
1812
|
+
this.statusSub$.unsubscribe();
|
|
1813
|
+
}
|
|
1814
|
+
if (this.userSub$) {
|
|
1815
|
+
this.userSub$.unsubscribe();
|
|
1719
1816
|
}
|
|
1720
1817
|
}
|
|
1721
1818
|
// tslint:disable-next-line:typedef
|
|
1722
|
-
|
|
1819
|
+
onClickOutside($event) {
|
|
1723
1820
|
this.userMenuExpanded = false;
|
|
1724
1821
|
}
|
|
1725
|
-
// tslint:disable-next-line:typedef
|
|
1726
|
-
onClickOutsideNotifications($event) {
|
|
1727
|
-
this.notificationsMenuExpanded = false;
|
|
1728
|
-
}
|
|
1729
1822
|
signin(event) {
|
|
1730
1823
|
if (event) {
|
|
1731
1824
|
event.preventDefault();
|
|
1732
1825
|
}
|
|
1733
1826
|
this.authService.signinRedirect();
|
|
1734
1827
|
}
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
this.
|
|
1828
|
+
setCurrentUser(user) {
|
|
1829
|
+
var _a, _b;
|
|
1830
|
+
this.user = user;
|
|
1831
|
+
if (this.user && this.user.profile) {
|
|
1832
|
+
this.avatarName = `${(_a = this.user.profile.given_name) === null || _a === void 0 ? void 0 : _a.charAt(0)}${(_b = this.user.profile.family_name) === null || _b === void 0 ? void 0 : _b.charAt(0)}`.toUpperCase();
|
|
1833
|
+
}
|
|
1738
1834
|
}
|
|
1739
|
-
|
|
1740
|
-
this.
|
|
1741
|
-
this.userMenuExpanded = false;
|
|
1835
|
+
setCurrentLang(lang) {
|
|
1836
|
+
this.currentLang = lang;
|
|
1742
1837
|
}
|
|
1743
1838
|
}
|
|
1744
|
-
ShellHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellHeaderComponent, deps: [{ token: AuthService }, { token: Router }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
|
|
1745
|
-
ShellHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ShellHeaderComponent, selector: "lib-shell-header", inputs: { sectionLinksPath: ["section-links", "sectionLinksPath"], notificationLinksPath: ["notification-links", "notificationLinksPath"], allNotificationsLinkPath: ["all-notifications", "allNotificationsLinkPath"], config: "config", border: "border" }, ngImport: i0, template: "<nav>\r\n <div class=\"shell-header-paddings\">\r\n <div [class]=\"border ? 'shell-header-border' : ''\">\r\n <div class=\"shell-header-menu-container\">\r\n <div class=\"shell-header-links-no-grow-container\">\r\n <div>\r\n <a href=\"#\"\r\n [routerLink]=\"['/']\"><img class=\"app-logo\"\r\n [src]=\"config.appLogo\"\r\n [alt]=\"config.appLogoAlt\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shell-header-link-container\">\r\n <ng-container *ngFor=\"let link of sectionLinks | async\">\r\n <a href=\"#\"\r\n [routerLink]=\"[link.path]\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\"\r\n [routerLinkActive]=\"['nav-link-active']\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n class=\"nav-link\">\r\n {{ link.text }}\r\n </a>\r\n </ng-container>\r\n </div>\r\n\r\n <div class=\"shell-header-md-visible\">\r\n <div class=\"shell-header-links-no-grow-container\">\r\n\r\n <ng-container *ngFor=\"let link of links.profileActions | async\">\r\n <a class=\"shell-header-menu-rounded-button\"\r\n (clickOutside)=\"onClickOutsideProfile($event)\"\r\n [attr.href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\">\r\n <span class=\"sr-only\">{{ link.text }}</span>\r\n <i *ngIf=\"link.icon\"\r\n [class]=\"link.icon\"></i>\r\n </a>\r\n </ng-container>\r\n\r\n <!-- Profile dropdown -->\r\n <div class=\"ml-2 relative\"\r\n (clickOutside)=\"onClickOutsideProfile($event)\"\r\n *ngIf=\"profileMenuVisible\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <div *ngIf=\"user && showUserNameOnHeader\"\r\n class=\"shell-header-profile-userName\">\r\n {{ user.profile.name }}\r\n </div>\r\n <button type=\"button\"\r\n *ngIf=\"user\"\r\n (click)=\"userMenuExpanded = !userMenuExpanded\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">Open user menu</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">{{this.avatarName}}</span>\r\n </span>\r\n </button>\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!user\"\r\n (click)=\"signin(null)\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">sign in</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\"><i class=\"ms-Icon ms-Icon--Signin\"></i></span>\r\n </span>\r\n </button>\r\n\r\n <div *ngIf=\"userMenuExpanded\"\r\n [ngClass]=\"showUserNameOnHeader ? 'shell-header-profile-dropdown-with-username' : 'shell-header-profile-dropdown'\"\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n aria-labelledby=\"user-menu\">\r\n <!-- <a href=\"#\" class=\"block px-4 py-2 text-sm text-gray-700 hover:bg-gray-100\" role=\"menuitem\">\u0391\u03C0\u03BF\u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7</a> -->\r\n <ng-container *ngFor=\"let link of links.profile | async\">\r\n <!-- <a *ngIf=\"link.external\" [attr.href]=\"link.path\" [attr.target]=\"'_blank'\" class=\"nav-link-profile\">\r\n {{ link.text }}\r\n </a> -->\r\n <a [routerLink]=\"link.path\"\r\n [routerLinkActive]=\"['nav-link-profile-active']\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n class=\"nav-link-profile\">\r\n {{ link.text }}\r\n </a>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Notifications dropdown -->\r\n <div class=\"ml-2 relative\"\r\n (clickOutside)=\"onClickOutsideNotifications($event)\"\r\n *ngIf=\"notificationsMenuVisible\">\r\n <!-- Notifications Button -->\r\n <button type=\"button\"\r\n class=\"mobile-menu-rounded-button bg-transparent\"\r\n *ngIf=\"showNotifications\"\r\n (click)=\"expandNotificationsMenu()\"\r\n id=\"notifications-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <span class=\"relative inline-block\">\r\n <!-- Heroicon name: outline/bell -->\r\n <svg class=\"mobile-menu-rounded-button-icon-style\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\r\n </svg>\r\n <span *ngIf=\"notificationsCount > 0\"\r\n class=\"absolute top-0 right-0 inline-flex items-center justify-center px-2 py-1 text-xs font-bold leading-none text-gray-100 transform translate-x-1/2 -translate-y-1/2 bg-gray-500 rounded-full\">{{notificationsCount}}</span>\r\n </span>\r\n </button>\r\n\r\n <div *ngIf=\"notificationsMenuExpanded\"\r\n [ngClass]=\"showUserNameOnHeader ? 'shell-header-notifications-dropdown-with-username' : 'shell-header-notifications-dropdown'\"\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n aria-labelledby=\"notifications-menu\">\r\n <div class=\"max-h-64 overflow-y-auto notification-messages min-h\">\r\n <ng-container *ngIf=\"!notificationLinks; else notificationsDropDown\"\r\n class=\"py-5\">\r\n <div class=\"nav-link-notifications hover:bg-transparent\">\r\n \u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2\r\n </div>\r\n </ng-container>\r\n <ng-template #notificationsDropDown>\r\n <ul class=\"pr-1.5\">\r\n <ng-container *ngIf=\"notificationLinks | async as obs; else loading\">\r\n <ng-container *ngIf=\"obs.length <= 0\"\r\n class=\"py-5\">\r\n <div class=\"nav-link-notifications hover:bg-transparent\">\r\n \u0394\u03B5\u03BD \u03AD\u03C7\u03B5\u03C4\u03B5 \u03BD\u03AD\u03B5\u03C2 \u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2\r\n </div>\r\n </ng-container>\r\n <ng-container *ngFor=\"let link of obs\">\r\n <li class=\"mb-2\"\r\n [ngClass]=\"{'border-l-2 border-blue-500 bg-blue-50 hover:bg-blue-50': !link.isRead }\">\r\n <div class=\"flex justify-between\">\r\n <div class=\"flex-grow\">\r\n <a [routerLink]=\"link.path\"\r\n class=\"nav-link-notifications grid\"\r\n [ngClass]=\"!link.isRead ? ' hover:bg-blue-50' : 'border-b border-gray-100'\">\r\n <div class=\"flex flex-col\">\r\n <div class=\"font-thin tracking-tighter\">\r\n {{ link.creationDate | date: 'EEE, d MMMM' }}\r\n </div>\r\n <div class=\"font-bold\">\r\n {{ link.text }}\r\n </div>\r\n </div>\r\n </a>\r\n </div>\r\n <!-- <div class=\"flex-none font-thin tracking-tighter\">\r\n <button type=\"button\"\r\n title=\"\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE\"\r\n class=\"text-red-600 hover:text-red-900\">\r\n <span class=\"ms-Icon ms-Icon--Delete\"></span>\r\n </button>\r\n </div> -->\r\n </div>\r\n </li>\r\n\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n <ng-template #loading>\r\n <div class=\"h-32 flex items-center justify-center\">\r\n <div class=\"animate-pulse text-s text-gray-600\">Loading...</div>\r\n </div>\r\n </ng-template>\r\n\r\n\r\n </ul>\r\n </ng-template>\r\n </div>\r\n <div class=\"p-1 rounded-sm\">\r\n <a [routerLink]=\"(allNotificationsLink | async)?.path\">\r\n <button type=\"button\"\r\n class=\"shell-header-notifications-dropdown-view-all-button\">\u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE \u03CC\u03BB\u03C9\u03BD</button>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mobile-menu-button-container\">\r\n <!-- Mobile menu button -->\r\n <button type=\"button\"\r\n (click)=\"mobileMenuExpanded = !mobileMenuExpanded\"\r\n class=\"mobile-menu-button\"\r\n aria-controls=\"mobile-menu\"\r\n [attr.aria-expanded]=\"mobileMenuExpanded\">\r\n <span class=\"sr-only\">Open main menu</span>\r\n <!--Heroicon name: outline/menu Menu open: \"hidden\", Menu closed: \"block\"-->\r\n <svg class=\"block h-6 w-6\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M4 6h16M4 12h16M4 18h16\" />\r\n </svg>\r\n <!--Heroicon name: outline/x Menu open: \"block\", Menu closed: \"hidden\"-->\r\n <svg class=\"hidden h-6 w-6\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Mobile menu, show/hide based on menu state. -->\r\n <div class=\"mobile-menu-container\"\r\n *ngIf=\"mobileMenuExpanded\"\r\n id=\"mobile-menu\">\r\n <div class=\"mobile-menu-link-container\">\r\n <ng-container *ngFor=\"let link of sectionLinks | async\">\r\n <a *ngIf=\"link.external\"\r\n [attr.href]=\"link.path\"\r\n [attr.target]=\"'_blank'\"\r\n class=\"nav-link-mobile\">\r\n {{ link.text }}\r\n </a>\r\n <a *ngIf=\"!link.external\"\r\n [routerLink]=\"link.path\"\r\n [routerLinkActive]=\"['nav-link-mobile-active']\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n class=\"nav-link-mobile\">\r\n {{ link.text }}\r\n </a>\r\n </ng-container>\r\n <ng-container *ngIf=\"!user\">\r\n <a href=\"#\"\r\n (click)=\"signin($event)\"\r\n class=\"nav-link-mobile\">\r\n <i class=\"ms-Icon ms-Icon--Signin mr-2\"></i>\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\r\n </a>\r\n </ng-container>\r\n </div>\r\n <div class=\"mobile-menu-user-info-container\"\r\n *ngIf=\"user\">\r\n <div class=\"mobile-menu-user-info-container-inner\">\r\n <div class=\"flex-shrink-0\">\r\n <span class=\"mobile-menu-avatar-container\">\r\n <span class=\"mobile-menu-avatar-name\">{{ this.avatarName }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ml-3\">\r\n <div class=\"mobile-menu-user-name\">{{ user.profile.name }}</div>\r\n <div class=\"mobile-menu-user-email\">{{ user.profile.email }}</div>\r\n </div>\r\n <a [routerLink]=\"(allNotificationsLink | async)?.path\">\r\n <button class=\"mobile-menu-rounded-button\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <!-- Heroicon name: outline/bell -->\r\n <svg class=\"mobile-menu-rounded-button-icon-style\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\r\n </svg>\r\n </button>\r\n </a>\r\n </div>\r\n <div class=\"mobile-menu-link-container\">\r\n <ng-container *ngFor=\"let link of links.profile | async\">\r\n <a *ngIf=\"link.external\"\r\n [attr.href]=\"link.path\"\r\n [attr.target]=\"'_blank'\"\r\n class=\"nav-link-mobile\">\r\n {{ link.text }}\r\n </a>\r\n <a [routerLink]=\"link.path\"\r\n [routerLinkActive]=\"['nav-link-mobile-active']\"\r\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\r\n class=\"nav-link-mobile\">\r\n {{ link.text }}\r\n </a>\r\n </ng-container>\r\n <!-- <a href=\"#\" class=\"block px-3 py-2 rounded-sm text-base font-medium text-gray-400 hover:text-white hover:bg-gray-700\">\u0391\u03C0\u03BF\u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7</a> -->\r\n </div>\r\n </div>\r\n </div>\r\n</nav>", directives: [{ type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }, { type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i1.AsyncPipe, "date": i1.DatePipe } });
|
|
1839
|
+
ShellHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellHeaderComponent, deps: [{ token: AuthService }, { token: Router }, { token: ActivatedRoute }, { token: SHELL_CONFIG }, { token: APP_LINKS }], target: i0.ɵɵFactoryTarget.Component });
|
|
1840
|
+
ShellHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ShellHeaderComponent, selector: "lib-shell-header", inputs: { sectionLinksPath: ["section-links", "sectionLinksPath"], profileMenuVisible: ["profile-menu", "profileMenuVisible"], showUserNameOnHeader: ["show-userName", "showUserNameOnHeader"], showAlerts: ["show-alerts", "showAlerts"], langs: "langs", currentLang: ["current-lang", "currentLang"], border: "border" }, ngImport: i0, template: "<nav>\r\n <div class=\"shell-header-paddings\">\r\n <div [class]=\"border ? 'shell-header-border' : ''\">\r\n <div class=\"shell-header-menu-container\">\r\n <div class=\"shell-header-logo-container\">\r\n <div>\r\n <a href=\"#\" [routerLink]=\"['/']\"><img class=\"app-logo\" [src]=\"config.appLogo\" [alt]=\"config.appLogoAlt\" /></a>\r\n </div>\r\n </div>\r\n\r\n <div class=\"shell-header-link-container\">\r\n <div class=\"shell-header-link-container-inner\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link'\"\r\n [link-active-class]=\"'nav-link-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"langs && langs.length > 1 && currentLang\" class=\"shell-header-links-far-container\">\r\n <button class=\"text-blue-300 hover:text-blue-500\">\r\n <span>{{currentLang}}</span>\r\n <i class=\"text-xs ml-1 ms-Icon ms-Icon--ChevronDown\"></i>\r\n </button>\r\n </div>\r\n\r\n <div class=\"shell-header-md-visible\">\r\n <div class=\"shell-header-links-far-container\" (clickOutside)=\"onClickOutside($event)\">\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profileActions\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'shell-header-menu-rounded-button'\"\r\n [link-active-class]=\"'shell-header-menu-rounded-button-active'\">\r\n </lib-nav-links-list>\r\n\r\n <!-- <ng-container *ngFor=\"let link of links.profileActions | async\">\r\n <a class=\"shell-header-menu-rounded-button\"\r\n (clickOutside)=\"onClickOutside($event)\"\r\n [attr.href]=\"link.path\"\r\n [attr.target]=\"link.external ? '_blank' : '_self'\">\r\n <span class=\"sr-only\">{{ link.text }}</span>\r\n <i *ngIf=\"link.icon\" [class]=\"link.icon\"></i>\r\n </a>\r\n </ng-container> -->\r\n\r\n <!-- Username -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-2 relative\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <div *ngIf=\"user && showUserNameOnHeader\" class=\"shell-header-profile-userName\">\r\n {{ user.profile.name }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Notifications dropdown -->\r\n <div *ngIf=\"showAlerts && user\" class=\"ml-2\">\r\n <lib-notifications-indicator></lib-notifications-indicator>\r\n </div>\r\n\r\n <!-- Profile dropdown -->\r\n <div *ngIf=\"profileMenuVisible\" class=\"ml-2 relative\" (clickOutside)=\"onClickOutside($event)\">\r\n <div [ngClass]=\"{'shell-header-profile': showUserNameOnHeader}\">\r\n <button type=\"button\" *ngIf=\"user\" (click)=\"userMenuExpanded = !userMenuExpanded\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">Open user menu</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\">{{this.avatarName}}</span>\r\n </span>\r\n </button>\r\n\r\n <button type=\"button\"\r\n *ngIf=\"!user\"\r\n (click)=\"signin(null)\"\r\n class=\"shell-header-profile-dropdown-button\"\r\n id=\"user-menu\"\r\n aria-expanded=\"false\"\r\n aria-haspopup=\"true\">\r\n <span class=\"sr-only\">sign in</span>\r\n <span class=\"avatar-container\">\r\n <span class=\"avatar-text\"><i class=\"ms-Icon ms-Icon--Signin\"></i></span>\r\n </span>\r\n </button>\r\n\r\n <div *ngIf=\"userMenuExpanded\"\r\n [ngClass]=\"showUserNameOnHeader ? 'shell-header-profile-dropdown-with-username' : 'shell-header-profile-dropdown'\"\r\n role=\"menu\"\r\n aria-orientation=\"vertical\"\r\n aria-labelledby=\"user-menu\">\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-profile'\"\r\n [link-active-class]=\"'nav-link-profile-active'\">\r\n </lib-nav-links-list>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mobile-menu-button-container\">\r\n <!-- Mobile menu button -->\r\n <button type=\"button\"\r\n (click)=\"mobileMenuExpanded = !mobileMenuExpanded\"\r\n class=\"mobile-menu-button\"\r\n aria-controls=\"mobile-menu\"\r\n [attr.aria-expanded]=\"mobileMenuExpanded\">\r\n <span class=\"sr-only\">Open main menu</span>\r\n <!--Heroicon name: outline/menu Menu open: \"hidden\", Menu closed: \"block\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'hidden':'block h-6 w-6'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M4 6h16M4 12h16M4 18h16\" />\r\n </svg>\r\n <!--Heroicon name: outline/x Menu open: \"block\", Menu closed: \"hidden\"-->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\"\r\n [class]=\"mobileMenuExpanded ? 'block h-6 w-6':'hidden'\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M6 18L18 6M6 6l12 12\" />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Mobile menu, show/hide based on menu state. -->\r\n <div class=\"mobile-menu-container\" *ngIf=\"mobileMenuExpanded\" id=\"mobile-menu\">\r\n <lib-nav-links-list\r\n [links]=\"sectionLinks\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n\r\n <div *ngIf=\"!user\">\r\n <a href=\"#\" (click)=\"signin($event)\" class=\"nav-link-mobile\">\r\n <i class=\"ms-Icon ms-Icon--Signin mr-2\"></i>\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\r\n </a>\r\n </div>\r\n\r\n <div class=\"mobile-menu-user-info-container\" *ngIf=\"user\">\r\n <div class=\"mobile-menu-user-info-container-inner\">\r\n <div class=\"flex-shrink-0\">\r\n <span class=\"mobile-menu-avatar-container\">\r\n <span class=\"mobile-menu-avatar-name\">{{ this.avatarName }}</span>\r\n </span>\r\n </div>\r\n <div class=\"ml-3\">\r\n <div class=\"mobile-menu-user-name\">{{ user.profile.name }}</div>\r\n <div class=\"mobile-menu-user-email\">{{ user.profile.email }}</div>\r\n </div>\r\n <button class=\"mobile-menu-rounded-button\">\r\n <span class=\"sr-only\">View notifications</span>\r\n <!-- Heroicon name: outline/bell -->\r\n <svg class=\"mobile-menu-rounded-button-icon-style\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n stroke=\"currentColor\"\r\n aria-hidden=\"true\">\r\n <path stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n stroke-width=\"2\"\r\n d=\"M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <lib-nav-links-list\r\n [links]=\"links.profile\"\r\n [active-fragment]=\"activeFragment\"\r\n [link-class]=\"'nav-link-mobile'\"\r\n [link-active-class]=\"'nav-link-mobile-active'\"\r\n [container-class]=\"'mobile-menu-link-container'\">\r\n </lib-nav-links-list>\r\n </div>\r\n</nav>\r\n", components: [{ type: NavLinksListComponent, selector: "lib-nav-links-list", inputs: ["links", "active-fragment", "link-class", "link-active-class", "container-class"] }, { type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator" }], directives: [{ type: i1$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
1746
1841
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellHeaderComponent, decorators: [{
|
|
1747
1842
|
type: Component,
|
|
1748
1843
|
args: [{
|
|
@@ -1756,20 +1851,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1756
1851
|
}] }, { type: i1$1.Router, decorators: [{
|
|
1757
1852
|
type: Inject,
|
|
1758
1853
|
args: [Router]
|
|
1854
|
+
}] }, { type: i1$1.ActivatedRoute, decorators: [{
|
|
1855
|
+
type: Inject,
|
|
1856
|
+
args: [ActivatedRoute]
|
|
1857
|
+
}] }, { type: undefined, decorators: [{
|
|
1858
|
+
type: Inject,
|
|
1859
|
+
args: [SHELL_CONFIG]
|
|
1759
1860
|
}] }, { type: undefined, decorators: [{
|
|
1760
1861
|
type: Inject,
|
|
1761
1862
|
args: [APP_LINKS]
|
|
1762
1863
|
}] }]; }, propDecorators: { sectionLinksPath: [{
|
|
1763
1864
|
type: Input,
|
|
1764
1865
|
args: ['section-links']
|
|
1765
|
-
}],
|
|
1866
|
+
}], profileMenuVisible: [{
|
|
1766
1867
|
type: Input,
|
|
1767
|
-
args: ['
|
|
1768
|
-
}],
|
|
1868
|
+
args: ['profile-menu']
|
|
1869
|
+
}], showUserNameOnHeader: [{
|
|
1769
1870
|
type: Input,
|
|
1770
|
-
args: ['
|
|
1771
|
-
}],
|
|
1871
|
+
args: ['show-userName']
|
|
1872
|
+
}], showAlerts: [{
|
|
1873
|
+
type: Input,
|
|
1874
|
+
args: ['show-alerts']
|
|
1875
|
+
}], langs: [{
|
|
1772
1876
|
type: Input
|
|
1877
|
+
}], currentLang: [{
|
|
1878
|
+
type: Input,
|
|
1879
|
+
args: ['current-lang']
|
|
1773
1880
|
}], border: [{
|
|
1774
1881
|
type: Input
|
|
1775
1882
|
}] } });
|
|
@@ -1793,14 +1900,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1793
1900
|
}] }]; } });
|
|
1794
1901
|
|
|
1795
1902
|
class ShellLayoutComponent {
|
|
1796
|
-
constructor(router, location, config, componentLoaderFactory) {
|
|
1903
|
+
constructor(document, router, location, config, componentLoaderFactory) {
|
|
1904
|
+
this.document = document;
|
|
1797
1905
|
this.router = router;
|
|
1798
1906
|
this.location = location;
|
|
1799
1907
|
this.config = config;
|
|
1800
1908
|
this.componentLoaderFactory = componentLoaderFactory;
|
|
1801
1909
|
this.dynamicComponentHosts = null;
|
|
1802
|
-
this.routerSub$ = null;
|
|
1803
1910
|
this.showRightPaneSM = false;
|
|
1911
|
+
this.routerSub$ = null;
|
|
1804
1912
|
this.activeConfig = new DefaultShellConfig();
|
|
1805
1913
|
this.loaded = false;
|
|
1806
1914
|
if (!config) {
|
|
@@ -1861,8 +1969,8 @@ class ShellLayoutComponent {
|
|
|
1861
1969
|
}
|
|
1862
1970
|
}
|
|
1863
1971
|
}
|
|
1864
|
-
ShellLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellLayoutComponent, deps: [{ token: i1$1.Router }, { token: i1.Location }, { token: SHELL_CONFIG }, { token: ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Component });
|
|
1865
|
-
ShellLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ShellLayoutComponent, selector: "lib-shell-layout", viewQueries: [{ propertyName: "dynamicComponentHosts", predicate: DynamicComponentHostDirective, descendants: true }], ngImport: i0, template: "<div *ngIf=\"loaded\"
|
|
1972
|
+
ShellLayoutComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellLayoutComponent, deps: [{ token: DOCUMENT }, { token: i1$1.Router }, { token: i1.Location }, { token: SHELL_CONFIG }, { token: ComponentLoaderFactory }], target: i0.ɵɵFactoryTarget.Component });
|
|
1973
|
+
ShellLayoutComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ShellLayoutComponent, selector: "lib-shell-layout", viewQueries: [{ propertyName: "dynamicComponentHosts", predicate: DynamicComponentHostDirective, descendants: true }], ngImport: i0, template: "<div *ngIf=\"loaded\" [style.display]=\"!loaded ? 'none':'block'\" class=\"shell-container active-side-pane\">\r\n\r\n <div class=\"shell-header-container\" *ngIf=\"activeConfig.showHeader\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-header-container-inner-fluid' : 'shell-header-container-inner'\">\r\n <ng-container *ngIf=\"activeConfig.customHeaderComponent\">\r\n <div appDynamicComponentHost =\"Header\"></div>\r\n </ng-container>\r\n <lib-shell-header *ngIf=\"!activeConfig.customHeaderComponent\"\r\n [langs]=\"activeConfig.langs\"\r\n [show-userName]=\"activeConfig.showUserNameOnHeader\"\r\n [show-alerts]=\"activeConfig.showAlertsOnHeader\"></lib-shell-header>\r\n </div>\r\n </div>\r\n\r\n <main [class]=\"activeConfig.showHeader ? 'shell-content-container' : 'shell-content-container-no-header'\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-content-container-inner-fluid' : 'shell-content-container-inner'\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </main>\r\n\r\n <div class=\"shell-footer-container\" *ngIf=\"activeConfig.showFooter\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-footer-container-inner-fluid' : 'shell-footer-container-inner'\">\r\n <ng-container *ngIf=\"activeConfig.customFooterComponent\">\r\n <div appDynamicComponentHost hostName=\"Footer\"></div>\r\n </ng-container>\r\n <lib-shell-footer *ngIf=\"!activeConfig.customFooterComponent\"></lib-shell-footer>\r\n </div>\r\n </div>\r\n\r\n <lib-side-pane #rightPane>\r\n <router-outlet name=\"rightpane\" (activate)=\"rightPane.onSidePaneActivated($event)\" (deactivate)=\"rightPane.onSidePaneDeactivated($event)\"></router-outlet>\r\n </lib-side-pane>\r\n\r\n <lib-toaster-container></lib-toaster-container>\r\n\r\n</div>\r\n", components: [{ type: ShellHeaderComponent, selector: "lib-shell-header", inputs: ["section-links", "profile-menu", "show-userName", "show-alerts", "langs", "current-lang", "border"] }, { type: ShellFooterComponent, selector: "lib-shell-footer" }, { type: SidePaneComponent, selector: "lib-side-pane", inputs: ["visible"], outputs: ["onComplete"] }, { type: ToasterContainerComponent, selector: "lib-toaster-container" }], directives: [{ type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentHostDirective, selector: "[appDynamicComponentHost]", inputs: ["hostName"] }, { type: i1$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
|
|
1866
1974
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellLayoutComponent, decorators: [{
|
|
1867
1975
|
type: Component,
|
|
1868
1976
|
args: [{
|
|
@@ -1870,7 +1978,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1870
1978
|
selector: 'lib-shell-layout',
|
|
1871
1979
|
templateUrl: './shell-layout.component.html',
|
|
1872
1980
|
}]
|
|
1873
|
-
}], ctorParameters: function () { return [{ type:
|
|
1981
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1982
|
+
type: Inject,
|
|
1983
|
+
args: [DOCUMENT]
|
|
1984
|
+
}] }, { type: i1$1.Router }, { type: i1.Location }, { type: undefined, decorators: [{
|
|
1874
1985
|
type: Inject,
|
|
1875
1986
|
args: [SHELL_CONFIG]
|
|
1876
1987
|
}] }, { type: ComponentLoaderFactory }]; }, propDecorators: { dynamicComponentHosts: [{
|
|
@@ -1999,11 +2110,9 @@ class ModelViewLayoutComponent {
|
|
|
1999
2110
|
ngOnInit() {
|
|
2000
2111
|
}
|
|
2001
2112
|
onSidePaneActivated($event) {
|
|
2002
|
-
//console.log('onSidePaneActivated', $event);
|
|
2003
2113
|
this.showRightPaneSM = true;
|
|
2004
2114
|
}
|
|
2005
2115
|
onSidePaneDeactivated($event) {
|
|
2006
|
-
//console.log('onSidePaneActivated', $event);
|
|
2007
2116
|
this.showRightPaneSM = false;
|
|
2008
2117
|
}
|
|
2009
2118
|
closeSidePane() {
|
|
@@ -2130,8 +2239,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
2130
2239
|
}] } });
|
|
2131
2240
|
|
|
2132
2241
|
class FormLayoutComponent {
|
|
2133
|
-
constructor(
|
|
2134
|
-
this.
|
|
2242
|
+
constructor(router$) {
|
|
2243
|
+
this.router$ = router$;
|
|
2135
2244
|
this.title = null;
|
|
2136
2245
|
// tslint:disable-next-line:no-input-rename
|
|
2137
2246
|
this.searchPlaceholder = 'αναζήτηση';
|
|
@@ -2143,7 +2252,6 @@ class FormLayoutComponent {
|
|
|
2143
2252
|
// tslint:disable-next-line:no-output-on-prefix
|
|
2144
2253
|
this.onSearch = new EventEmitter();
|
|
2145
2254
|
this.onComplete = new EventEmitter();
|
|
2146
|
-
this.showRightPaneSM = false;
|
|
2147
2255
|
}
|
|
2148
2256
|
ngOnInit() {
|
|
2149
2257
|
var _a;
|
|
@@ -2172,10 +2280,10 @@ class FormLayoutComponent {
|
|
|
2172
2280
|
}
|
|
2173
2281
|
routerLinkActionClick(action, relative = false) {
|
|
2174
2282
|
if (action.outlet) {
|
|
2175
|
-
this.
|
|
2283
|
+
this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
|
|
2176
2284
|
}
|
|
2177
2285
|
else {
|
|
2178
|
-
this.
|
|
2286
|
+
this.router$.navigate([action.link]);
|
|
2179
2287
|
}
|
|
2180
2288
|
}
|
|
2181
2289
|
}
|
|
@@ -2312,7 +2420,7 @@ class PageNotFoundComponent {
|
|
|
2312
2420
|
}
|
|
2313
2421
|
}
|
|
2314
2422
|
PageNotFoundComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: PageNotFoundComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2315
|
-
PageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: PageNotFoundComponent, selector: "lib-page-not-found", ngImport: i0, template: "<lib-view-layout [show-header]=\"false\"
|
|
2423
|
+
PageNotFoundComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: PageNotFoundComponent, selector: "lib-page-not-found", ngImport: i0, template: "<lib-view-layout [show-header]=\"false\" title=\"404 - \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5!\">\r\n <div class=\"text-gray-900\">\r\n <div class=\"max-w-4xl mx-auto text-center py-16 px-4 sm:py-20 sm:px-6 lg:px-8\">\r\n <h2 class=\"text-3xl font-extrabold sm:text-4xl\">\r\n <span class=\"block\">404</span>\r\n </h2>\r\n <p class=\"mt-4 text-lg leading-6 text-gray-800\">\u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5 \u03B7 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 \u03C0\u03BF\u03C5 \u03B6\u03B7\u03C4\u03AE\u03C3\u03B1\u03C4\u03B5!</p>\r\n <a href=\"/\"\r\n class=\"mt-8 inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-sm rounded-sm text-gray-600 bg-white hover:bg-gray-50 sm:w-auto\">\r\n \u03C0\u03B1\u03C4\u03AE\u03C3\u03C4\u03B5 \u03B5\u03B4\u03CE \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03AD\u03C8\u03B5\u03C4\u03B5\r\n </a>\r\n </div>\r\n </div>\r\n</lib-view-layout>\r\n", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
|
|
2316
2424
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: PageNotFoundComponent, decorators: [{
|
|
2317
2425
|
type: Component,
|
|
2318
2426
|
args: [{
|
|
@@ -2416,28 +2524,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
2416
2524
|
}]
|
|
2417
2525
|
}] });
|
|
2418
2526
|
|
|
2419
|
-
const defaultError = 'Something went wrong';
|
|
2420
|
-
class ObsWithStatusPipe {
|
|
2421
|
-
transform(val) {
|
|
2422
|
-
return val.pipe(map((value) => {
|
|
2423
|
-
return {
|
|
2424
|
-
loading: value.type === 'start',
|
|
2425
|
-
error: value.type === 'error' ? defaultError : '',
|
|
2426
|
-
value: value.type ? value.value : value,
|
|
2427
|
-
};
|
|
2428
|
-
}), startWith({ loading: true }), catchError(error => of({ loading: false, error: typeof error === 'string' ? error : defaultError })));
|
|
2429
|
-
}
|
|
2430
|
-
}
|
|
2431
|
-
ObsWithStatusPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ObsWithStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2432
|
-
ObsWithStatusPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ObsWithStatusPipe, name: "obsWithStatus", pure: false });
|
|
2433
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ObsWithStatusPipe, decorators: [{
|
|
2434
|
-
type: Pipe,
|
|
2435
|
-
args: [{
|
|
2436
|
-
name: 'obsWithStatus',
|
|
2437
|
-
pure: false
|
|
2438
|
-
}]
|
|
2439
|
-
}] });
|
|
2440
|
-
|
|
2441
2527
|
class BaseListComponent {
|
|
2442
2528
|
constructor(route$, router$) {
|
|
2443
2529
|
this.route$ = route$;
|
|
@@ -3108,7 +3194,8 @@ IndiceComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
3108
3194
|
// pipes
|
|
3109
3195
|
AddressPipe,
|
|
3110
3196
|
DurationFormatPipe,
|
|
3111
|
-
|
|
3197
|
+
NavLinksListComponent,
|
|
3198
|
+
NotificationsIndicatorComponent], imports: [CommonModule,
|
|
3112
3199
|
RouterModule,
|
|
3113
3200
|
IndiceAuthModule], exports: [ClickOutsideDirective,
|
|
3114
3201
|
DropDownMenuComponent,
|
|
@@ -3135,7 +3222,6 @@ IndiceComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
3135
3222
|
UnauthorizedComponent,
|
|
3136
3223
|
AddressPipe,
|
|
3137
3224
|
DurationFormatPipe,
|
|
3138
|
-
ObsWithStatusPipe,
|
|
3139
3225
|
CollapsiblePanelComponent,
|
|
3140
3226
|
SidePaneComponent,
|
|
3141
3227
|
DatepickerComponent,
|
|
@@ -3192,7 +3278,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
3192
3278
|
// pipes
|
|
3193
3279
|
AddressPipe,
|
|
3194
3280
|
DurationFormatPipe,
|
|
3195
|
-
|
|
3281
|
+
NavLinksListComponent,
|
|
3282
|
+
NotificationsIndicatorComponent
|
|
3196
3283
|
],
|
|
3197
3284
|
imports: [
|
|
3198
3285
|
CommonModule,
|
|
@@ -3225,7 +3312,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
3225
3312
|
UnauthorizedComponent,
|
|
3226
3313
|
AddressPipe,
|
|
3227
3314
|
DurationFormatPipe,
|
|
3228
|
-
ObsWithStatusPipe,
|
|
3229
3315
|
CollapsiblePanelComponent,
|
|
3230
3316
|
SidePaneComponent,
|
|
3231
3317
|
DatepickerComponent,
|
|
@@ -3243,5 +3329,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
3243
3329
|
* Generated bundle index. Do not edit.
|
|
3244
3330
|
*/
|
|
3245
3331
|
|
|
3246
|
-
export { APP_LINKS, AddressPipe, AuthCallbackComponent, AuthRenewComponent, AvatarInitialsComponent, BaseListComponent, ClickOutsideDirective, CollapsiblePanelComponent, ComponentLoaderFactory, DatepickerComponent, DefaultShellConfig, DropDownMenuComponent, DurationFormatPipe, ErrorComponent, ExternalNavLink, FormLayoutComponent, FragmentNavLink, HeaderMetaItem, Icons, IndiceComponentsModule, KpiTileComponent, ListColumnComponent, ListDetailsSectionComponent, ListTileComponent, ListViewComponent, ListViewEmptyStateComponent, ListViewType, LoggedOutComponent, MODAL_CONFIG_DEFAULT_OVERRIDE, MenuOption, Modal, ModalOptions, ModalService, ModelViewLayoutComponent, NULL_TOAST, NavLink,
|
|
3332
|
+
export { APP_LINKS, APP_NOTIFICATIONS, AddressPipe, AuthCallbackComponent, AuthRenewComponent, AvatarInitialsComponent, BaseListComponent, ClickOutsideDirective, CollapsiblePanelComponent, ComponentLoaderFactory, DatepickerComponent, DefaultShellConfig, DropDownMenuComponent, DurationFormatPipe, ErrorComponent, ExternalNavLink, FormLayoutComponent, FragmentNavLink, HeaderMetaItem, Icons, IndiceComponentsModule, KpiTileComponent, ListColumnComponent, ListDetailsSectionComponent, ListTileComponent, ListViewComponent, ListViewEmptyStateComponent, ListViewType, LoggedOutComponent, MODAL_CONFIG_DEFAULT_OVERRIDE, MenuOption, Modal, ModalOptions, ModalService, ModelViewLayoutComponent, NULL_TOAST, NavLink, NavLinksListComponent, NotificationNavLink, PageNotFoundComponent, PagerComponent, RouterViewAction, SCREEN_SIZE, SHELL_CONFIG, ShellFooterComponent, ShellHeaderComponent, ShellLayoutComponent, SidePaneComponent, SidePaneOverlayType, SidePaneSize, SideViewLayoutComponent, SkeletonLoaderComponent, SwitchViewAction, ToastType, ToasterComponent, ToasterContainerComponent, ToasterService, ToggleComponent, UnauthorizedComponent, ViewAction, ViewLayoutComponent };
|
|
3247
3333
|
//# sourceMappingURL=indice-ng-components.js.map
|