@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.
Files changed (28) hide show
  1. package/_styles.css +69 -72
  2. package/bundles/indice-ng-components.umd.js +218 -122
  3. package/bundles/indice-ng-components.umd.js.map +1 -1
  4. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +40 -0
  5. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +77 -0
  6. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +70 -72
  7. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +11 -6
  8. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +5 -6
  9. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +1 -3
  10. package/esm2015/lib/ng-components.module.js +7 -6
  11. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +2 -2
  12. package/esm2015/lib/tokens.js +2 -1
  13. package/esm2015/lib/types.js +10 -7
  14. package/esm2015/public-api.js +2 -2
  15. package/fesm2015/indice-ng-components.js +195 -109
  16. package/fesm2015/indice-ng-components.js.map +1 -1
  17. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +15 -0
  18. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +22 -0
  19. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +21 -25
  20. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +3 -2
  21. package/lib/layouts/views/form-layout/form-layout.component.d.ts +2 -3
  22. package/lib/ng-components.module.d.ts +6 -5
  23. package/lib/tokens.d.ts +1 -0
  24. package/lib/types.d.ts +18 -10
  25. package/package.json +1 -1
  26. package/public-api.d.ts +1 -1
  27. package/esm2015/lib/pipes/obs-with-status.pipe.js +0 -26
  28. package/lib/pipes/obs-with-status.pipe.d.ts +0 -13
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
2
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('@angular/router'), require('@angular/forms'), require('rxjs'), require('rxjs/operators'), require('@indice/ng-auth')) :
3
3
  typeof define === 'function' && define.amd ? define('@indice/ng-components', ['exports', '@angular/core', '@angular/common', '@angular/router', '@angular/forms', 'rxjs', 'rxjs/operators', '@indice/ng-auth'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.indice = global.indice || {}, global.indice['ng-components'] = {}), global.ng.core, global.ng.common, global.ng.router, global.ng.forms, global.rxjs, global.rxjs.operators, global.i2));
5
- }(this, (function (exports, i0, i1, i1$1, forms, rxjs, operators, i2) { 'use strict';
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.indice = global.indice || {}, global.indice["ng-components"] = {}), global.ng.core, global.ng.common, global.ng.router, global.ng.forms, global.rxjs, global.rxjs.operators, global.i2));
5
+ })(this, (function (exports, i0, i1, i1$1, forms, rxjs, operators, i2) { 'use strict';
6
6
 
7
7
  function _interopNamespace(e) {
8
8
  if (e && e.__esModule) return e;
@@ -13,14 +13,12 @@
13
13
  var d = Object.getOwnPropertyDescriptor(e, k);
14
14
  Object.defineProperty(n, k, d.get ? d : {
15
15
  enumerable: true,
16
- get: function () {
17
- return e[k];
18
- }
16
+ get: function () { return e[k]; }
19
17
  });
20
18
  }
21
19
  });
22
20
  }
23
- n['default'] = e;
21
+ n["default"] = e;
24
22
  return Object.freeze(n);
25
23
  }
26
24
 
@@ -255,10 +253,16 @@
255
253
  r[k] = a[j];
256
254
  return r;
257
255
  }
258
- function __spreadArray(to, from) {
259
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
260
- to[j] = from[i];
261
- return to;
256
+ function __spreadArray(to, from, pack) {
257
+ if (pack || arguments.length === 2)
258
+ for (var i = 0, l = from.length, ar; i < l; i++) {
259
+ if (ar || !(i in from)) {
260
+ if (!ar)
261
+ ar = Array.prototype.slice.call(from, 0, i);
262
+ ar[i] = from[i];
263
+ }
264
+ }
265
+ return to.concat(ar || Array.prototype.slice.call(from));
262
266
  }
263
267
  function __await(v) {
264
268
  return this instanceof __await ? (this.v = v, this) : new __await(v);
@@ -659,38 +663,44 @@
659
663
  Icons.Details = ' ms-Icon ms-Icon--AccountActivity';
660
664
 
661
665
  var NavLink = /** @class */ (function () {
662
- function NavLink(text, path, exact, external, icon, isRead, creationDate) {
666
+ function NavLink(text, path, exact, external, icon, data) {
663
667
  if (exact === void 0) { exact = false; }
664
668
  if (external === void 0) { external = false; }
665
- this.isRead = false;
669
+ this.type = 'router';
666
670
  this.text = text;
667
671
  this.path = path;
668
672
  this.exact = exact;
669
673
  this.external = external;
670
674
  this.icon = icon;
671
- this.isRead = isRead;
672
- this.creationDate = creationDate;
675
+ this.data = data;
673
676
  }
674
677
  return NavLink;
675
678
  }());
676
679
  var ExternalNavLink = /** @class */ (function (_super) {
677
680
  __extends(ExternalNavLink, _super);
678
681
  function ExternalNavLink(text, path, openInNewTab, icon) {
679
- return _super.call(this, text, path, true, openInNewTab, icon) || this;
682
+ var _this = _super.call(this, text, path, true, openInNewTab, icon) || this;
683
+ _this.type = 'external';
684
+ return _this;
680
685
  }
681
686
  return ExternalNavLink;
682
687
  }(NavLink));
683
688
  var FragmentNavLink = /** @class */ (function (_super) {
684
689
  __extends(FragmentNavLink, _super);
685
690
  function FragmentNavLink(text, path, icon) {
686
- return _super.call(this, text, path, true, true, icon) || this;
691
+ var _this = _super.call(this, text, path, true, true, icon) || this;
692
+ _this.type = 'fragment';
693
+ return _this;
687
694
  }
688
695
  return FragmentNavLink;
689
696
  }(NavLink));
690
697
  var NotificationNavLink = /** @class */ (function (_super) {
691
698
  __extends(NotificationNavLink, _super);
692
699
  function NotificationNavLink(text, path, isRead, creationDate) {
693
- return _super.call(this, text, path, true, false, undefined, isRead, creationDate) || this;
700
+ var _this = _super.call(this, text, path, true, false, undefined) || this;
701
+ _this.isRead = isRead;
702
+ _this.creationDate = creationDate;
703
+ return _this;
694
704
  }
695
705
  return NotificationNavLink;
696
706
  }(NavLink));
@@ -756,7 +766,7 @@
756
766
  this.appLogoAlt = 'your app name here';
757
767
  this.showHeader = true;
758
768
  this.showUserNameOnHeader = false;
759
- this.showNotifications = false;
769
+ this.showAlertsOnHeader = false;
760
770
  this.showFooter = true;
761
771
  this.fluid = false;
762
772
  }
@@ -1813,7 +1823,45 @@
1813
1823
  type: i0.Output
1814
1824
  }] } });
1815
1825
 
1826
+ var NavLinksListComponent = /** @class */ (function () {
1827
+ function NavLinksListComponent() {
1828
+ // tslint:disable-next-line:no-input-rename
1829
+ this.navLinkClass = 'nav-link';
1830
+ // tslint:disable-next-line:no-input-rename
1831
+ this.navLinkActiveClass = 'nav-link-active';
1832
+ // tslint:disable-next-line:no-input-rename
1833
+ this.containerClass = '';
1834
+ }
1835
+ NavLinksListComponent.prototype.ngOnInit = function () {
1836
+ };
1837
+ return NavLinksListComponent;
1838
+ }());
1839
+ NavLinksListComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: NavLinksListComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
1840
+ NavLinksListComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i1__namespace.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { type: i1__namespace$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1__namespace$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "routerLinkActive"], exportAs: ["routerLinkActive"] }], pipes: { "async": i1__namespace.AsyncPipe } });
1841
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: NavLinksListComponent, decorators: [{
1842
+ type: i0.Component,
1843
+ args: [{
1844
+ selector: 'lib-nav-links-list',
1845
+ templateUrl: './nav-links-list.component.html'
1846
+ }]
1847
+ }], ctorParameters: function () { return []; }, propDecorators: { links: [{
1848
+ type: i0.Input
1849
+ }], activeFragment: [{
1850
+ type: i0.Input,
1851
+ args: ['active-fragment']
1852
+ }], navLinkClass: [{
1853
+ type: i0.Input,
1854
+ args: ['link-class']
1855
+ }], navLinkActiveClass: [{
1856
+ type: i0.Input,
1857
+ args: ['link-active-class']
1858
+ }], containerClass: [{
1859
+ type: i0.Input,
1860
+ args: ['container-class']
1861
+ }] } });
1862
+
1816
1863
  var APP_LINKS = new i0.InjectionToken('APP_LINKS');
1864
+ var APP_NOTIFICATIONS = new i0.InjectionToken('APP_NOTIFICATIONS');
1817
1865
  var SHELL_CONFIG = new i0.InjectionToken('SHELL_CONFIG');
1818
1866
 
1819
1867
  var DynamicComponentHostDirective = /** @class */ (function () {
@@ -2067,108 +2115,167 @@
2067
2115
  args: [{ providedIn: 'root' }]
2068
2116
  }], ctorParameters: function () { return [{ type: i0__namespace.ComponentFactoryResolver }, { type: i0__namespace.Injector }, { type: i0__namespace.ApplicationRef }]; } });
2069
2117
 
2118
+ var NotificationsIndicatorComponent = /** @class */ (function () {
2119
+ function NotificationsIndicatorComponent(notifications, links) {
2120
+ this.notifications = notifications;
2121
+ this.links = links;
2122
+ this.menuExpanded = false;
2123
+ this.unreadCount = 0;
2124
+ this.items = [];
2125
+ this.inboxAction = undefined;
2126
+ this.newArrival = false;
2127
+ }
2128
+ NotificationsIndicatorComponent.prototype.ngOnDestroy = function () {
2129
+ if (this.notificationsSub$) {
2130
+ this.notificationsSub$.unsubscribe();
2131
+ }
2132
+ };
2133
+ NotificationsIndicatorComponent.prototype.ngOnInit = function () {
2134
+ var _this = this;
2135
+ this.links['notifications'].subscribe(function (notificationsLink) {
2136
+ _this.allNotificationsLink = notificationsLink;
2137
+ });
2138
+ this.notificationsSub$ = this.notifications.messages.subscribe(function (result) {
2139
+ if (result.items) {
2140
+ _this.newArrival = true;
2141
+ _this.unreadCount = result.count;
2142
+ _this.items = result.items;
2143
+ setTimeout(function () { _this.newArrival = false; }, 1000);
2144
+ }
2145
+ });
2146
+ };
2147
+ NotificationsIndicatorComponent.prototype.toggleMenu = function () {
2148
+ this.menuExpanded = !this.menuExpanded;
2149
+ this.unreadCount = 0;
2150
+ };
2151
+ NotificationsIndicatorComponent.prototype.doInboxAction = function () {
2152
+ if (this.notifications.inboxAction) {
2153
+ this.notifications.inboxAction();
2154
+ }
2155
+ else {
2156
+ this.menuExpanded = true;
2157
+ }
2158
+ this.unreadCount = 0;
2159
+ };
2160
+ // this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
2161
+ // this.allItemsLink = result.allNotifications;
2162
+ // this.items = result.items;
2163
+ // this.unreadCount = result.count;
2164
+ // }));
2165
+ // [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
2166
+ // this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
2167
+ // this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
2168
+ // this.getUnreadNotificationsCount();
2169
+ // tslint:disable-next-line:typedef
2170
+ NotificationsIndicatorComponent.prototype.onClickOutside = function ($event) {
2171
+ this.menuExpanded = false;
2172
+ };
2173
+ return NotificationsIndicatorComponent;
2174
+ }());
2175
+ NotificationsIndicatorComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: NotificationsIndicatorComponent, deps: [{ token: APP_NOTIFICATIONS }, { token: APP_LINKS }], target: i0__namespace.ɵɵFactoryTarget.Component });
2176
+ NotificationsIndicatorComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: NotificationsIndicatorComponent, selector: "lib-notifications-indicator", ngImport: i0__namespace, 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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i1__namespace$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }], pipes: { "date": i1__namespace.DatePipe } });
2177
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: NotificationsIndicatorComponent, decorators: [{
2178
+ type: i0.Component,
2179
+ args: [{
2180
+ selector: 'lib-notifications-indicator',
2181
+ templateUrl: './notifications-indicator.component.html'
2182
+ }]
2183
+ }], ctorParameters: function () {
2184
+ return [{ type: undefined, decorators: [{
2185
+ type: i0.Inject,
2186
+ args: [APP_NOTIFICATIONS]
2187
+ }] }, { type: undefined, decorators: [{
2188
+ type: i0.Inject,
2189
+ args: [APP_LINKS]
2190
+ }] }];
2191
+ } });
2192
+
2070
2193
  var ShellHeaderComponent = /** @class */ (function () {
2071
- function ShellHeaderComponent(authService, router, links) {
2194
+ function ShellHeaderComponent(authService, router, route, config, links) {
2072
2195
  this.authService = authService;
2073
2196
  this.router = router;
2197
+ this.route = route;
2198
+ this.config = config;
2074
2199
  this.links = links;
2075
2200
  // tslint:disable-next-line:no-input-rename
2076
2201
  this.sectionLinksPath = 'main';
2077
- this.notificationLinksPath = 'notifications';
2078
- this.allNotificationsLinkPath = 'allNotifications';
2079
- this.border = true;
2080
- this.showNotifications = false;
2081
- this.showUserNameOnHeader = false;
2082
- this.notificationsMenuVisible = true;
2202
+ // tslint:disable-next-line:no-input-rename
2083
2203
  this.profileMenuVisible = true;
2204
+ // tslint:disable-next-line:no-input-rename
2205
+ this.showUserNameOnHeader = false;
2206
+ // tslint:disable-next-line:no-input-rename
2207
+ this.showAlerts = false;
2208
+ this.border = true;
2084
2209
  this.sectionLinks = rxjs.of([]);
2085
- this.notificationLinks = rxjs.of([]);
2086
- this.allNotificationsLink = rxjs.of();
2087
2210
  this.mobileMenuExpanded = false;
2088
2211
  this.userMenuExpanded = false;
2089
- this.notificationsMenuExpanded = false;
2090
- this.routeSubject = new rxjs.Observable();
2091
2212
  this.routerSub$ = null;
2092
2213
  this.userSub$ = null;
2093
2214
  this.statusSub$ = null;
2094
2215
  this.user = null;
2095
2216
  this.avatarName = null;
2096
- this.notificationsCount = 0;
2217
+ this.activeFragment = null;
2218
+ this.routeSubject = this.router.events.pipe(operators.filter(function (event) { return event instanceof i1$1.NavigationStart; }));
2097
2219
  }
2098
- ShellHeaderComponent.prototype.ngOnDestroy = function () {
2099
- if (this.routerSub$) {
2100
- this.routerSub$.unsubscribe();
2101
- }
2102
- // TODO: check authenticated user here before we start polling server status
2103
- if (this.statusSub$) {
2104
- this.statusSub$.unsubscribe();
2105
- }
2106
- if (this.userSub$) {
2107
- this.userSub$.unsubscribe();
2108
- }
2109
- };
2110
2220
  ShellHeaderComponent.prototype.ngOnInit = function () {
2111
2221
  var _this = this;
2112
- var _a, _b;
2113
- this.showNotifications = (_a = this.config) === null || _a === void 0 ? void 0 : _a.showNotifications;
2114
- this.showUserNameOnHeader = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showUserNameOnHeader;
2222
+ this.activeFragment = this.route.fragment.pipe(operators.share());
2115
2223
  this.sectionLinks = this.links[this.sectionLinksPath];
2116
- this.notificationLinks = this.links[this.notificationLinksPath];
2117
- this.allNotificationsLink = this.links[this.allNotificationsLinkPath];
2118
- this.routerSub$ = this.router.events.pipe(operators.filter(function (event) { return event instanceof i1$1.NavigationStart; })).subscribe(function (event) {
2224
+ this.routerSub$ = this.routeSubject.subscribe(function (event) {
2119
2225
  _this.mobileMenuExpanded = false;
2120
2226
  _this.userMenuExpanded = false;
2121
- _this.notificationsMenuExpanded = false;
2122
2227
  });
2123
2228
  this.authService.loadUser().subscribe(function (user) {
2124
- console.log(user);
2125
2229
  _this.setCurrentUser(user);
2126
2230
  }, function (error) {
2127
- console.log(error);
2231
+ console.error(error);
2128
2232
  });
2129
2233
  // Detect user changes and display / or not user info accordingly...
2130
2234
  this.userSub$ = this.authService.user$.subscribe(function (user) {
2131
2235
  // console.log('ShellHeaderComponent user subscription');
2132
2236
  _this.setCurrentUser(user);
2133
2237
  });
2134
- this.notificationLinks.pipe(operators.take(1), operators.map(function (notifications) {
2135
- _this.notificationsCount = notifications.filter(function (x) { return !x.isRead; }).length;
2136
- })).subscribe();
2238
+ // set current lang if no current value from langs if any
2239
+ if (!this.currentLang && this.langs && this.langs.length > 0) {
2240
+ this.setCurrentLang(this.langs[0]);
2241
+ }
2137
2242
  };
2138
- ShellHeaderComponent.prototype.setCurrentUser = function (user) {
2139
- var _a, _b;
2140
- this.user = user;
2141
- if (this.user && this.user.profile) {
2142
- 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));
2143
- console.log('load user', this.avatarName);
2243
+ ShellHeaderComponent.prototype.ngOnDestroy = function () {
2244
+ if (this.routerSub$) {
2245
+ this.routerSub$.unsubscribe();
2246
+ }
2247
+ // TODO: check authenticated user here before we start polling server status
2248
+ if (this.statusSub$) {
2249
+ this.statusSub$.unsubscribe();
2250
+ }
2251
+ if (this.userSub$) {
2252
+ this.userSub$.unsubscribe();
2144
2253
  }
2145
2254
  };
2146
2255
  // tslint:disable-next-line:typedef
2147
- ShellHeaderComponent.prototype.onClickOutsideProfile = function ($event) {
2256
+ ShellHeaderComponent.prototype.onClickOutside = function ($event) {
2148
2257
  this.userMenuExpanded = false;
2149
2258
  };
2150
- // tslint:disable-next-line:typedef
2151
- ShellHeaderComponent.prototype.onClickOutsideNotifications = function ($event) {
2152
- this.notificationsMenuExpanded = false;
2153
- };
2154
2259
  ShellHeaderComponent.prototype.signin = function (event) {
2155
2260
  if (event) {
2156
2261
  event.preventDefault();
2157
2262
  }
2158
2263
  this.authService.signinRedirect();
2159
2264
  };
2160
- ShellHeaderComponent.prototype.expandUserMenu = function () {
2161
- this.userMenuExpanded = !this.userMenuExpanded;
2162
- this.notificationsMenuExpanded = false;
2265
+ ShellHeaderComponent.prototype.setCurrentUser = function (user) {
2266
+ var _a, _b;
2267
+ this.user = user;
2268
+ if (this.user && this.user.profile) {
2269
+ 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();
2270
+ }
2163
2271
  };
2164
- ShellHeaderComponent.prototype.expandNotificationsMenu = function () {
2165
- this.notificationsMenuExpanded = !this.notificationsMenuExpanded;
2166
- this.userMenuExpanded = false;
2272
+ ShellHeaderComponent.prototype.setCurrentLang = function (lang) {
2273
+ this.currentLang = lang;
2167
2274
  };
2168
2275
  return ShellHeaderComponent;
2169
2276
  }());
2170
- ShellHeaderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellHeaderComponent, deps: [{ token: i2.AuthService }, { token: i1$1.Router }, { token: APP_LINKS }], target: i0__namespace.ɵɵFactoryTarget.Component });
2171
- ShellHeaderComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__namespace$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1__namespace.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1__namespace$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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "async": i1__namespace.AsyncPipe, "date": i1__namespace.DatePipe } });
2277
+ ShellHeaderComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellHeaderComponent, deps: [{ token: i2.AuthService }, { token: i1$1.Router }, { token: i1$1.ActivatedRoute }, { token: SHELL_CONFIG }, { token: APP_LINKS }], target: i0__namespace.ɵɵFactoryTarget.Component });
2278
+ ShellHeaderComponent.ɵcmp = i0__namespace.ɵɵ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__namespace, 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__namespace$1.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["routerLink", "target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo"] }, { type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: ClickOutsideDirective, selector: "[clickOutside]", inputs: ["clickOutsideEnabled", "attachOutsideOnClick", "delayClickOutsideInit", "emitOnBlur", "exclude", "excludeBeforeClick", "clickOutsideEvents"], outputs: ["clickOutside"] }, { type: i1__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
2172
2279
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellHeaderComponent, decorators: [{
2173
2280
  type: i0.Component,
2174
2281
  args: [{
@@ -2183,6 +2290,12 @@
2183
2290
  }] }, { type: i1__namespace$1.Router, decorators: [{
2184
2291
  type: i0.Inject,
2185
2292
  args: [i1$1.Router]
2293
+ }] }, { type: i1__namespace$1.ActivatedRoute, decorators: [{
2294
+ type: i0.Inject,
2295
+ args: [i1$1.ActivatedRoute]
2296
+ }] }, { type: undefined, decorators: [{
2297
+ type: i0.Inject,
2298
+ args: [SHELL_CONFIG]
2186
2299
  }] }, { type: undefined, decorators: [{
2187
2300
  type: i0.Inject,
2188
2301
  args: [APP_LINKS]
@@ -2190,14 +2303,20 @@
2190
2303
  }, propDecorators: { sectionLinksPath: [{
2191
2304
  type: i0.Input,
2192
2305
  args: ['section-links']
2193
- }], notificationLinksPath: [{
2306
+ }], profileMenuVisible: [{
2307
+ type: i0.Input,
2308
+ args: ['profile-menu']
2309
+ }], showUserNameOnHeader: [{
2194
2310
  type: i0.Input,
2195
- args: ['notification-links']
2196
- }], allNotificationsLinkPath: [{
2311
+ args: ['show-userName']
2312
+ }], showAlerts: [{
2197
2313
  type: i0.Input,
2198
- args: ['all-notifications']
2199
- }], config: [{
2314
+ args: ['show-alerts']
2315
+ }], langs: [{
2200
2316
  type: i0.Input
2317
+ }], currentLang: [{
2318
+ type: i0.Input,
2319
+ args: ['current-lang']
2201
2320
  }], border: [{
2202
2321
  type: i0.Input
2203
2322
  }] } });
@@ -2224,14 +2343,15 @@
2224
2343
  } });
2225
2344
 
2226
2345
  var ShellLayoutComponent = /** @class */ (function () {
2227
- function ShellLayoutComponent(router, location, config, componentLoaderFactory) {
2346
+ function ShellLayoutComponent(document, router, location, config, componentLoaderFactory) {
2347
+ this.document = document;
2228
2348
  this.router = router;
2229
2349
  this.location = location;
2230
2350
  this.config = config;
2231
2351
  this.componentLoaderFactory = componentLoaderFactory;
2232
2352
  this.dynamicComponentHosts = null;
2233
- this.routerSub$ = null;
2234
2353
  this.showRightPaneSM = false;
2354
+ this.routerSub$ = null;
2235
2355
  this.activeConfig = new DefaultShellConfig();
2236
2356
  this.loaded = false;
2237
2357
  if (!config) {
@@ -2295,8 +2415,8 @@
2295
2415
  };
2296
2416
  return ShellLayoutComponent;
2297
2417
  }());
2298
- ShellLayoutComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellLayoutComponent, deps: [{ token: i1__namespace$1.Router }, { token: i1__namespace.Location }, { token: SHELL_CONFIG }, { token: ComponentLoaderFactory }], target: i0__namespace.ɵɵFactoryTarget.Component });
2299
- ShellLayoutComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ShellLayoutComponent, selector: "lib-shell-layout", viewQueries: [{ propertyName: "dynamicComponentHosts", predicate: DynamicComponentHostDirective, descendants: true }], ngImport: i0__namespace, template: "<div *ngIf=\"loaded\"\r\n [style.display]=\"!loaded ? 'none':'block'\"\r\n class=\"shell-container active-side-pane\">\r\n <div class=\"shell-header-container\"\r\n *ngIf=\"activeConfig.showHeader\">\r\n <div [class]=\"activeConfig.fluid ? 'shell-header-container-inner-fluid' : 'shell-header-container-inner'\">\r\n\r\n <ng-container *ngIf=\"activeConfig.customHeaderComponent\">\r\n <div appDynamicComponentHost=\"Header\"></div>\r\n </ng-container>\r\n\r\n <lib-shell-header *ngIf=\"!activeConfig.customHeaderComponent\"\r\n [config]=\"activeConfig\"></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\"\r\n *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\r\n 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\"\r\n (activate)=\"rightPane.onSidePaneActivated($event)\"\r\n (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", "notification-links", "all-notifications", "config", "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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentHostDirective, selector: "[appDynamicComponentHost]", inputs: ["hostName"] }, { type: i1__namespace$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
2418
+ ShellLayoutComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellLayoutComponent, deps: [{ token: i1.DOCUMENT }, { token: i1__namespace$1.Router }, { token: i1__namespace.Location }, { token: SHELL_CONFIG }, { token: ComponentLoaderFactory }], target: i0__namespace.ɵɵFactoryTarget.Component });
2419
+ ShellLayoutComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ShellLayoutComponent, selector: "lib-shell-layout", viewQueries: [{ propertyName: "dynamicComponentHosts", predicate: DynamicComponentHostDirective, descendants: true }], ngImport: i0__namespace, 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__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: DynamicComponentHostDirective, selector: "[appDynamicComponentHost]", inputs: ["hostName"] }, { type: i1__namespace$1.RouterOutlet, selector: "router-outlet", outputs: ["activate", "deactivate"], exportAs: ["outlet"] }] });
2300
2420
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellLayoutComponent, decorators: [{
2301
2421
  type: i0.Component,
2302
2422
  args: [{
@@ -2305,7 +2425,10 @@
2305
2425
  templateUrl: './shell-layout.component.html',
2306
2426
  }]
2307
2427
  }], ctorParameters: function () {
2308
- return [{ type: i1__namespace$1.Router }, { type: i1__namespace.Location }, { type: undefined, decorators: [{
2428
+ return [{ type: undefined, decorators: [{
2429
+ type: i0.Inject,
2430
+ args: [i1.DOCUMENT]
2431
+ }] }, { type: i1__namespace$1.Router }, { type: i1__namespace.Location }, { type: undefined, decorators: [{
2309
2432
  type: i0.Inject,
2310
2433
  args: [SHELL_CONFIG]
2311
2434
  }] }, { type: ComponentLoaderFactory }];
@@ -2436,11 +2559,9 @@
2436
2559
  ModelViewLayoutComponent.prototype.ngOnInit = function () {
2437
2560
  };
2438
2561
  ModelViewLayoutComponent.prototype.onSidePaneActivated = function ($event) {
2439
- //console.log('onSidePaneActivated', $event);
2440
2562
  this.showRightPaneSM = true;
2441
2563
  };
2442
2564
  ModelViewLayoutComponent.prototype.onSidePaneDeactivated = function ($event) {
2443
- //console.log('onSidePaneActivated', $event);
2444
2565
  this.showRightPaneSM = false;
2445
2566
  };
2446
2567
  ModelViewLayoutComponent.prototype.closeSidePane = function () {
@@ -2570,8 +2691,8 @@
2570
2691
  }] } });
2571
2692
 
2572
2693
  var FormLayoutComponent = /** @class */ (function () {
2573
- function FormLayoutComponent(_router) {
2574
- this._router = _router;
2694
+ function FormLayoutComponent(router$) {
2695
+ this.router$ = router$;
2575
2696
  this.title = null;
2576
2697
  // tslint:disable-next-line:no-input-rename
2577
2698
  this.searchPlaceholder = 'αναζήτηση';
@@ -2583,7 +2704,6 @@
2583
2704
  // tslint:disable-next-line:no-output-on-prefix
2584
2705
  this.onSearch = new i0.EventEmitter();
2585
2706
  this.onComplete = new i0.EventEmitter();
2586
- this.showRightPaneSM = false;
2587
2707
  }
2588
2708
  FormLayoutComponent.prototype.ngOnInit = function () {
2589
2709
  var _a;
@@ -2613,10 +2733,10 @@
2613
2733
  FormLayoutComponent.prototype.routerLinkActionClick = function (action, relative) {
2614
2734
  if (relative === void 0) { relative = false; }
2615
2735
  if (action.outlet) {
2616
- this._router.navigate(['', { outlets: { formRightPane: action.link } }]);
2736
+ this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
2617
2737
  }
2618
2738
  else {
2619
- this._router.navigate([action.link]);
2739
+ this.router$.navigate([action.link]);
2620
2740
  }
2621
2741
  };
2622
2742
  return FormLayoutComponent;
@@ -2769,7 +2889,7 @@
2769
2889
  return PageNotFoundComponent;
2770
2890
  }());
2771
2891
  PageNotFoundComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: PageNotFoundComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
2772
- PageNotFoundComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: PageNotFoundComponent, selector: "lib-page-not-found", ngImport: i0__namespace, template: "<lib-view-layout [show-header]=\"false\"\r\n title=\"404 - \u03B4\u03B5\u03BD \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5!\">\r\n <div class=\"bg-gray-600 view-container\">\r\n <div class=\"max-w-2xl 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 text-white 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-200\">\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>", components: [{ type: ViewLayoutComponent, selector: "lib-view-layout", inputs: ["show-header", "fluid", "title", "icon", "actions", "busy", "search-placeholder", "view", "meta-items"], outputs: ["onAction", "onSearch"] }] });
2892
+ PageNotFoundComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: PageNotFoundComponent, selector: "lib-page-not-found", ngImport: i0__namespace, 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"] }] });
2773
2893
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: PageNotFoundComponent, decorators: [{
2774
2894
  type: i0.Component,
2775
2895
  args: [{
@@ -2881,31 +3001,6 @@
2881
3001
  }]
2882
3002
  }] });
2883
3003
 
2884
- var defaultError = 'Something went wrong';
2885
- var ObsWithStatusPipe = /** @class */ (function () {
2886
- function ObsWithStatusPipe() {
2887
- }
2888
- ObsWithStatusPipe.prototype.transform = function (val) {
2889
- return val.pipe(operators.map(function (value) {
2890
- return {
2891
- loading: value.type === 'start',
2892
- error: value.type === 'error' ? defaultError : '',
2893
- value: value.type ? value.value : value,
2894
- };
2895
- }), operators.startWith({ loading: true }), operators.catchError(function (error) { return rxjs.of({ loading: false, error: typeof error === 'string' ? error : defaultError }); }));
2896
- };
2897
- return ObsWithStatusPipe;
2898
- }());
2899
- ObsWithStatusPipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ObsWithStatusPipe, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
2900
- ObsWithStatusPipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ObsWithStatusPipe, name: "obsWithStatus", pure: false });
2901
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ObsWithStatusPipe, decorators: [{
2902
- type: i0.Pipe,
2903
- args: [{
2904
- name: 'obsWithStatus',
2905
- pure: false
2906
- }]
2907
- }] });
2908
-
2909
3004
  var BaseListComponent = /** @class */ (function () {
2910
3005
  function BaseListComponent(route$, router$) {
2911
3006
  this.route$ = route$;
@@ -3585,7 +3680,8 @@
3585
3680
  // pipes
3586
3681
  AddressPipe,
3587
3682
  DurationFormatPipe,
3588
- ObsWithStatusPipe
3683
+ NavLinksListComponent,
3684
+ NotificationsIndicatorComponent
3589
3685
  ], imports: [i1.CommonModule,
3590
3686
  i1$1.RouterModule,
3591
3687
  i2.IndiceAuthModule], exports: [ClickOutsideDirective,
@@ -3613,7 +3709,6 @@
3613
3709
  UnauthorizedComponent,
3614
3710
  AddressPipe,
3615
3711
  DurationFormatPipe,
3616
- ObsWithStatusPipe,
3617
3712
  CollapsiblePanelComponent,
3618
3713
  SidePaneComponent,
3619
3714
  DatepickerComponent,
@@ -3670,7 +3765,8 @@
3670
3765
  // pipes
3671
3766
  AddressPipe,
3672
3767
  DurationFormatPipe,
3673
- ObsWithStatusPipe
3768
+ NavLinksListComponent,
3769
+ NotificationsIndicatorComponent
3674
3770
  ],
3675
3771
  imports: [
3676
3772
  i1.CommonModule,
@@ -3703,7 +3799,6 @@
3703
3799
  UnauthorizedComponent,
3704
3800
  AddressPipe,
3705
3801
  DurationFormatPipe,
3706
- ObsWithStatusPipe,
3707
3802
  CollapsiblePanelComponent,
3708
3803
  SidePaneComponent,
3709
3804
  DatepickerComponent,
@@ -3722,6 +3817,7 @@
3722
3817
  */
3723
3818
 
3724
3819
  exports.APP_LINKS = APP_LINKS;
3820
+ exports.APP_NOTIFICATIONS = APP_NOTIFICATIONS;
3725
3821
  exports.AddressPipe = AddressPipe;
3726
3822
  exports.AuthCallbackComponent = AuthCallbackComponent;
3727
3823
  exports.AuthRenewComponent = AuthRenewComponent;
@@ -3757,8 +3853,8 @@
3757
3853
  exports.ModelViewLayoutComponent = ModelViewLayoutComponent;
3758
3854
  exports.NULL_TOAST = NULL_TOAST;
3759
3855
  exports.NavLink = NavLink;
3856
+ exports.NavLinksListComponent = NavLinksListComponent;
3760
3857
  exports.NotificationNavLink = NotificationNavLink;
3761
- exports.ObsWithStatusPipe = ObsWithStatusPipe;
3762
3858
  exports.PageNotFoundComponent = PageNotFoundComponent;
3763
3859
  exports.PagerComponent = PagerComponent;
3764
3860
  exports.RouterViewAction = RouterViewAction;
@@ -3780,5 +3876,5 @@
3780
3876
 
3781
3877
  Object.defineProperty(exports, '__esModule', { value: true });
3782
3878
 
3783
- })));
3879
+ }));
3784
3880
  //# sourceMappingURL=indice-ng-components.umd.js.map