@indice/ng-components 0.2.136-beta → 0.2.136
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 +217 -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 +194 -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 +23 -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,160 @@ 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.allNotificationsLink = of([]);
|
|
1694
|
+
this.inboxAction = undefined;
|
|
1695
|
+
this.newArrival = false;
|
|
1696
|
+
}
|
|
1697
|
+
ngOnDestroy() {
|
|
1698
|
+
if (this.notificationsSub$) {
|
|
1699
|
+
this.notificationsSub$.unsubscribe();
|
|
1700
|
+
}
|
|
1701
|
+
}
|
|
1702
|
+
ngOnInit() {
|
|
1703
|
+
this.allNotificationsLink = this.links['notifications'];
|
|
1704
|
+
this.notificationsSub$ = this.notifications.messages.subscribe(result => {
|
|
1705
|
+
if (result.items) {
|
|
1706
|
+
this.newArrival = true;
|
|
1707
|
+
this.unreadCount = result.count;
|
|
1708
|
+
this.items = result.items;
|
|
1709
|
+
setTimeout(() => { this.newArrival = false; }, 1000);
|
|
1710
|
+
}
|
|
1711
|
+
});
|
|
1712
|
+
}
|
|
1713
|
+
toggleMenu() {
|
|
1714
|
+
this.menuExpanded = !this.menuExpanded;
|
|
1715
|
+
this.unreadCount = 0;
|
|
1716
|
+
}
|
|
1717
|
+
doInboxAction() {
|
|
1718
|
+
if (this.notifications.inboxAction) {
|
|
1719
|
+
this.notifications.inboxAction();
|
|
1720
|
+
}
|
|
1721
|
+
else {
|
|
1722
|
+
this.menuExpanded = true;
|
|
1723
|
+
}
|
|
1724
|
+
this.unreadCount = 0;
|
|
1725
|
+
}
|
|
1726
|
+
// this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
|
|
1727
|
+
// this.allItemsLink = result.allNotifications;
|
|
1728
|
+
// this.items = result.items;
|
|
1729
|
+
// this.unreadCount = result.count;
|
|
1730
|
+
// }));
|
|
1731
|
+
// [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
|
|
1732
|
+
// this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
|
|
1733
|
+
// this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
|
|
1734
|
+
// this.getUnreadNotificationsCount();
|
|
1735
|
+
// tslint:disable-next-line:typedef
|
|
1736
|
+
onClickOutside($event) {
|
|
1737
|
+
this.menuExpanded = false;
|
|
1738
|
+
}
|
|
1739
|
+
}
|
|
1740
|
+
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 });
|
|
1741
|
+
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 | async\">\r\n <button type=\"button\" class=\"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", 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, "async": i1.AsyncPipe } });
|
|
1742
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: NotificationsIndicatorComponent, decorators: [{
|
|
1743
|
+
type: Component,
|
|
1744
|
+
args: [{
|
|
1745
|
+
selector: 'lib-notifications-indicator',
|
|
1746
|
+
templateUrl: './notifications-indicator.component.html'
|
|
1747
|
+
}]
|
|
1748
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1749
|
+
type: Inject,
|
|
1750
|
+
args: [APP_NOTIFICATIONS]
|
|
1751
|
+
}] }, { type: undefined, decorators: [{
|
|
1752
|
+
type: Inject,
|
|
1753
|
+
args: [APP_LINKS]
|
|
1754
|
+
}] }]; } });
|
|
1755
|
+
|
|
1646
1756
|
class ShellHeaderComponent {
|
|
1647
|
-
constructor(authService, router, links) {
|
|
1757
|
+
constructor(authService, router, route, config, links) {
|
|
1648
1758
|
this.authService = authService;
|
|
1649
1759
|
this.router = router;
|
|
1760
|
+
this.route = route;
|
|
1761
|
+
this.config = config;
|
|
1650
1762
|
this.links = links;
|
|
1651
1763
|
// tslint:disable-next-line:no-input-rename
|
|
1652
1764
|
this.sectionLinksPath = 'main';
|
|
1653
|
-
|
|
1654
|
-
this.allNotificationsLinkPath = 'allNotifications';
|
|
1655
|
-
this.border = true;
|
|
1656
|
-
this.showNotifications = false;
|
|
1657
|
-
this.showUserNameOnHeader = false;
|
|
1658
|
-
this.notificationsMenuVisible = true;
|
|
1765
|
+
// tslint:disable-next-line:no-input-rename
|
|
1659
1766
|
this.profileMenuVisible = true;
|
|
1767
|
+
// tslint:disable-next-line:no-input-rename
|
|
1768
|
+
this.showUserNameOnHeader = false;
|
|
1769
|
+
// tslint:disable-next-line:no-input-rename
|
|
1770
|
+
this.showAlerts = false;
|
|
1771
|
+
this.border = true;
|
|
1660
1772
|
this.sectionLinks = of([]);
|
|
1661
|
-
this.notificationLinks = of([]);
|
|
1662
|
-
this.allNotificationsLink = of();
|
|
1663
1773
|
this.mobileMenuExpanded = false;
|
|
1664
1774
|
this.userMenuExpanded = false;
|
|
1665
|
-
this.notificationsMenuExpanded = false;
|
|
1666
|
-
this.routeSubject = new Observable();
|
|
1667
1775
|
this.routerSub$ = null;
|
|
1668
1776
|
this.userSub$ = null;
|
|
1669
1777
|
this.statusSub$ = null;
|
|
1670
1778
|
this.user = null;
|
|
1671
1779
|
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
|
-
}
|
|
1780
|
+
this.activeFragment = null;
|
|
1781
|
+
this.routeSubject = this.router.events.pipe(filter((event) => event instanceof NavigationStart));
|
|
1685
1782
|
}
|
|
1686
1783
|
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;
|
|
1784
|
+
this.activeFragment = this.route.fragment.pipe(share());
|
|
1690
1785
|
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 => {
|
|
1786
|
+
this.routerSub$ = this.routeSubject.subscribe((event) => {
|
|
1694
1787
|
this.mobileMenuExpanded = false;
|
|
1695
1788
|
this.userMenuExpanded = false;
|
|
1696
|
-
this.notificationsMenuExpanded = false;
|
|
1697
1789
|
});
|
|
1698
1790
|
this.authService.loadUser().subscribe((user) => {
|
|
1699
|
-
console.log(user);
|
|
1700
1791
|
this.setCurrentUser(user);
|
|
1701
1792
|
}, error => {
|
|
1702
|
-
console.
|
|
1793
|
+
console.error(error);
|
|
1703
1794
|
});
|
|
1704
1795
|
// Detect user changes and display / or not user info accordingly...
|
|
1705
1796
|
this.userSub$ = this.authService.user$.subscribe((user) => {
|
|
1706
1797
|
// console.log('ShellHeaderComponent user subscription');
|
|
1707
1798
|
this.setCurrentUser(user);
|
|
1708
1799
|
});
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1800
|
+
// set current lang if no current value from langs if any
|
|
1801
|
+
if (!this.currentLang && this.langs && this.langs.length > 0) {
|
|
1802
|
+
this.setCurrentLang(this.langs[0]);
|
|
1803
|
+
}
|
|
1712
1804
|
}
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1805
|
+
ngOnDestroy() {
|
|
1806
|
+
if (this.routerSub$) {
|
|
1807
|
+
this.routerSub$.unsubscribe();
|
|
1808
|
+
}
|
|
1809
|
+
// TODO: check authenticated user here before we start polling server status
|
|
1810
|
+
if (this.statusSub$) {
|
|
1811
|
+
this.statusSub$.unsubscribe();
|
|
1812
|
+
}
|
|
1813
|
+
if (this.userSub$) {
|
|
1814
|
+
this.userSub$.unsubscribe();
|
|
1719
1815
|
}
|
|
1720
1816
|
}
|
|
1721
1817
|
// tslint:disable-next-line:typedef
|
|
1722
|
-
|
|
1818
|
+
onClickOutside($event) {
|
|
1723
1819
|
this.userMenuExpanded = false;
|
|
1724
1820
|
}
|
|
1725
|
-
// tslint:disable-next-line:typedef
|
|
1726
|
-
onClickOutsideNotifications($event) {
|
|
1727
|
-
this.notificationsMenuExpanded = false;
|
|
1728
|
-
}
|
|
1729
1821
|
signin(event) {
|
|
1730
1822
|
if (event) {
|
|
1731
1823
|
event.preventDefault();
|
|
1732
1824
|
}
|
|
1733
1825
|
this.authService.signinRedirect();
|
|
1734
1826
|
}
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
this.
|
|
1827
|
+
setCurrentUser(user) {
|
|
1828
|
+
var _a, _b;
|
|
1829
|
+
this.user = user;
|
|
1830
|
+
if (this.user && this.user.profile) {
|
|
1831
|
+
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();
|
|
1832
|
+
}
|
|
1738
1833
|
}
|
|
1739
|
-
|
|
1740
|
-
this.
|
|
1741
|
-
this.userMenuExpanded = false;
|
|
1834
|
+
setCurrentLang(lang) {
|
|
1835
|
+
this.currentLang = lang;
|
|
1742
1836
|
}
|
|
1743
1837
|
}
|
|
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 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 \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\">99</span>\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-red-100 transform translate-x-1/2 -translate-y-1/2 bg-red-600 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 } });
|
|
1838
|
+
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 });
|
|
1839
|
+
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
1840
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellHeaderComponent, decorators: [{
|
|
1747
1841
|
type: Component,
|
|
1748
1842
|
args: [{
|
|
@@ -1756,20 +1850,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1756
1850
|
}] }, { type: i1$1.Router, decorators: [{
|
|
1757
1851
|
type: Inject,
|
|
1758
1852
|
args: [Router]
|
|
1853
|
+
}] }, { type: i1$1.ActivatedRoute, decorators: [{
|
|
1854
|
+
type: Inject,
|
|
1855
|
+
args: [ActivatedRoute]
|
|
1856
|
+
}] }, { type: undefined, decorators: [{
|
|
1857
|
+
type: Inject,
|
|
1858
|
+
args: [SHELL_CONFIG]
|
|
1759
1859
|
}] }, { type: undefined, decorators: [{
|
|
1760
1860
|
type: Inject,
|
|
1761
1861
|
args: [APP_LINKS]
|
|
1762
1862
|
}] }]; }, propDecorators: { sectionLinksPath: [{
|
|
1763
1863
|
type: Input,
|
|
1764
1864
|
args: ['section-links']
|
|
1765
|
-
}],
|
|
1865
|
+
}], profileMenuVisible: [{
|
|
1766
1866
|
type: Input,
|
|
1767
|
-
args: ['
|
|
1768
|
-
}],
|
|
1867
|
+
args: ['profile-menu']
|
|
1868
|
+
}], showUserNameOnHeader: [{
|
|
1769
1869
|
type: Input,
|
|
1770
|
-
args: ['
|
|
1771
|
-
}],
|
|
1870
|
+
args: ['show-userName']
|
|
1871
|
+
}], showAlerts: [{
|
|
1872
|
+
type: Input,
|
|
1873
|
+
args: ['show-alerts']
|
|
1874
|
+
}], langs: [{
|
|
1772
1875
|
type: Input
|
|
1876
|
+
}], currentLang: [{
|
|
1877
|
+
type: Input,
|
|
1878
|
+
args: ['current-lang']
|
|
1773
1879
|
}], border: [{
|
|
1774
1880
|
type: Input
|
|
1775
1881
|
}] } });
|
|
@@ -1793,14 +1899,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1793
1899
|
}] }]; } });
|
|
1794
1900
|
|
|
1795
1901
|
class ShellLayoutComponent {
|
|
1796
|
-
constructor(router, location, config, componentLoaderFactory) {
|
|
1902
|
+
constructor(document, router, location, config, componentLoaderFactory) {
|
|
1903
|
+
this.document = document;
|
|
1797
1904
|
this.router = router;
|
|
1798
1905
|
this.location = location;
|
|
1799
1906
|
this.config = config;
|
|
1800
1907
|
this.componentLoaderFactory = componentLoaderFactory;
|
|
1801
1908
|
this.dynamicComponentHosts = null;
|
|
1802
|
-
this.routerSub$ = null;
|
|
1803
1909
|
this.showRightPaneSM = false;
|
|
1910
|
+
this.routerSub$ = null;
|
|
1804
1911
|
this.activeConfig = new DefaultShellConfig();
|
|
1805
1912
|
this.loaded = false;
|
|
1806
1913
|
if (!config) {
|
|
@@ -1861,8 +1968,8 @@ class ShellLayoutComponent {
|
|
|
1861
1968
|
}
|
|
1862
1969
|
}
|
|
1863
1970
|
}
|
|
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\"
|
|
1971
|
+
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 });
|
|
1972
|
+
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
1973
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: ShellLayoutComponent, decorators: [{
|
|
1867
1974
|
type: Component,
|
|
1868
1975
|
args: [{
|
|
@@ -1870,7 +1977,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
1870
1977
|
selector: 'lib-shell-layout',
|
|
1871
1978
|
templateUrl: './shell-layout.component.html',
|
|
1872
1979
|
}]
|
|
1873
|
-
}], ctorParameters: function () { return [{ type:
|
|
1980
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
1981
|
+
type: Inject,
|
|
1982
|
+
args: [DOCUMENT]
|
|
1983
|
+
}] }, { type: i1$1.Router }, { type: i1.Location }, { type: undefined, decorators: [{
|
|
1874
1984
|
type: Inject,
|
|
1875
1985
|
args: [SHELL_CONFIG]
|
|
1876
1986
|
}] }, { type: ComponentLoaderFactory }]; }, propDecorators: { dynamicComponentHosts: [{
|
|
@@ -1999,11 +2109,9 @@ class ModelViewLayoutComponent {
|
|
|
1999
2109
|
ngOnInit() {
|
|
2000
2110
|
}
|
|
2001
2111
|
onSidePaneActivated($event) {
|
|
2002
|
-
//console.log('onSidePaneActivated', $event);
|
|
2003
2112
|
this.showRightPaneSM = true;
|
|
2004
2113
|
}
|
|
2005
2114
|
onSidePaneDeactivated($event) {
|
|
2006
|
-
//console.log('onSidePaneActivated', $event);
|
|
2007
2115
|
this.showRightPaneSM = false;
|
|
2008
2116
|
}
|
|
2009
2117
|
closeSidePane() {
|
|
@@ -2130,8 +2238,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
2130
2238
|
}] } });
|
|
2131
2239
|
|
|
2132
2240
|
class FormLayoutComponent {
|
|
2133
|
-
constructor(
|
|
2134
|
-
this.
|
|
2241
|
+
constructor(router$) {
|
|
2242
|
+
this.router$ = router$;
|
|
2135
2243
|
this.title = null;
|
|
2136
2244
|
// tslint:disable-next-line:no-input-rename
|
|
2137
2245
|
this.searchPlaceholder = 'αναζήτηση';
|
|
@@ -2143,7 +2251,6 @@ class FormLayoutComponent {
|
|
|
2143
2251
|
// tslint:disable-next-line:no-output-on-prefix
|
|
2144
2252
|
this.onSearch = new EventEmitter();
|
|
2145
2253
|
this.onComplete = new EventEmitter();
|
|
2146
|
-
this.showRightPaneSM = false;
|
|
2147
2254
|
}
|
|
2148
2255
|
ngOnInit() {
|
|
2149
2256
|
var _a;
|
|
@@ -2172,10 +2279,10 @@ class FormLayoutComponent {
|
|
|
2172
2279
|
}
|
|
2173
2280
|
routerLinkActionClick(action, relative = false) {
|
|
2174
2281
|
if (action.outlet) {
|
|
2175
|
-
this.
|
|
2282
|
+
this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
|
|
2176
2283
|
}
|
|
2177
2284
|
else {
|
|
2178
|
-
this.
|
|
2285
|
+
this.router$.navigate([action.link]);
|
|
2179
2286
|
}
|
|
2180
2287
|
}
|
|
2181
2288
|
}
|
|
@@ -2312,7 +2419,7 @@ class PageNotFoundComponent {
|
|
|
2312
2419
|
}
|
|
2313
2420
|
}
|
|
2314
2421
|
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\"
|
|
2422
|
+
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
2423
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0, type: PageNotFoundComponent, decorators: [{
|
|
2317
2424
|
type: Component,
|
|
2318
2425
|
args: [{
|
|
@@ -2416,28 +2523,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
2416
2523
|
}]
|
|
2417
2524
|
}] });
|
|
2418
2525
|
|
|
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
2526
|
class BaseListComponent {
|
|
2442
2527
|
constructor(route$, router$) {
|
|
2443
2528
|
this.route$ = route$;
|
|
@@ -3108,7 +3193,8 @@ IndiceComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
3108
3193
|
// pipes
|
|
3109
3194
|
AddressPipe,
|
|
3110
3195
|
DurationFormatPipe,
|
|
3111
|
-
|
|
3196
|
+
NavLinksListComponent,
|
|
3197
|
+
NotificationsIndicatorComponent], imports: [CommonModule,
|
|
3112
3198
|
RouterModule,
|
|
3113
3199
|
IndiceAuthModule], exports: [ClickOutsideDirective,
|
|
3114
3200
|
DropDownMenuComponent,
|
|
@@ -3135,7 +3221,6 @@ IndiceComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0",
|
|
|
3135
3221
|
UnauthorizedComponent,
|
|
3136
3222
|
AddressPipe,
|
|
3137
3223
|
DurationFormatPipe,
|
|
3138
|
-
ObsWithStatusPipe,
|
|
3139
3224
|
CollapsiblePanelComponent,
|
|
3140
3225
|
SidePaneComponent,
|
|
3141
3226
|
DatepickerComponent,
|
|
@@ -3192,7 +3277,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
3192
3277
|
// pipes
|
|
3193
3278
|
AddressPipe,
|
|
3194
3279
|
DurationFormatPipe,
|
|
3195
|
-
|
|
3280
|
+
NavLinksListComponent,
|
|
3281
|
+
NotificationsIndicatorComponent
|
|
3196
3282
|
],
|
|
3197
3283
|
imports: [
|
|
3198
3284
|
CommonModule,
|
|
@@ -3225,7 +3311,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
3225
3311
|
UnauthorizedComponent,
|
|
3226
3312
|
AddressPipe,
|
|
3227
3313
|
DurationFormatPipe,
|
|
3228
|
-
ObsWithStatusPipe,
|
|
3229
3314
|
CollapsiblePanelComponent,
|
|
3230
3315
|
SidePaneComponent,
|
|
3231
3316
|
DatepickerComponent,
|
|
@@ -3243,5 +3328,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImpor
|
|
|
3243
3328
|
* Generated bundle index. Do not edit.
|
|
3244
3329
|
*/
|
|
3245
3330
|
|
|
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,
|
|
3331
|
+
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
3332
|
//# sourceMappingURL=indice-ng-components.js.map
|