@indice/ng-components 0.2.134-beta → 0.2.134

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 (34) hide show
  1. package/README.md +4 -4
  2. package/_styles.css +25 -72
  3. package/bundles/indice-ng-components.umd.js +212 -119
  4. package/bundles/indice-ng-components.umd.js.map +1 -1
  5. package/esm2015/lib/controls/kpi-tile/kpi-tile.component.js +1 -1
  6. package/esm2015/lib/controls/list-view/list-column.component.js +1 -1
  7. package/esm2015/lib/controls/list-view/list-view-empty-state.component.js +2 -2
  8. package/esm2015/lib/controls/nav-links-list/nav-links-list.component.js +40 -0
  9. package/esm2015/lib/controls/notifications-indicator/notifications-indicator.component.js +68 -0
  10. package/esm2015/lib/controls/skeleton-loader/skeleton-loader.component.js +1 -1
  11. package/esm2015/lib/layouts/shell/shell-header/shell-header.component.js +70 -68
  12. package/esm2015/lib/layouts/shell/shell-layout/shell-layout.component.js +11 -6
  13. package/esm2015/lib/layouts/views/form-layout/form-layout.component.js +5 -6
  14. package/esm2015/lib/layouts/views/model-view-layout/model-view-layout.component.js +1 -3
  15. package/esm2015/lib/ng-components.module.js +7 -6
  16. package/esm2015/lib/pages/http-status/page-not-found/page-not-found.component.js +2 -2
  17. package/esm2015/lib/services/toaster.service.js +1 -1
  18. package/esm2015/lib/tokens.js +2 -1
  19. package/esm2015/lib/types.js +10 -7
  20. package/esm2015/public-api.js +2 -2
  21. package/fesm2015/indice-ng-components.js +189 -106
  22. package/fesm2015/indice-ng-components.js.map +1 -1
  23. package/lib/controls/nav-links-list/nav-links-list.component.d.ts +15 -0
  24. package/lib/controls/notifications-indicator/notifications-indicator.component.d.ts +23 -0
  25. package/lib/layouts/shell/shell-header/shell-header.component.d.ts +21 -24
  26. package/lib/layouts/shell/shell-layout/shell-layout.component.d.ts +3 -2
  27. package/lib/layouts/views/form-layout/form-layout.component.d.ts +2 -3
  28. package/lib/ng-components.module.d.ts +6 -5
  29. package/lib/tokens.d.ts +1 -0
  30. package/lib/types.d.ts +27 -10
  31. package/package.json +1 -1
  32. package/public-api.d.ts +1 -1
  33. package/esm2015/lib/pipes/obs-with-status.pipe.js +0 -26
  34. 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
  }
@@ -989,7 +999,7 @@
989
999
  return ListViewEmptyStateComponent;
990
1000
  }());
991
1001
  ListViewEmptyStateComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ListViewEmptyStateComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
992
- ListViewEmptyStateComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: { title: "title", subTitle: ["sub-title", "subTitle"], newItemLabel: ["new-item-label", "newItemLabel"] }, ngImport: i0__namespace, template: "<div class=\"p-20\">\r\n <div class=\"text-center p-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-auto h-12 w-12 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4\" />\r\n </svg>\r\n <h3 class=\"mt-2 text-sm font-medium text-gray-900\">{{title}}</h3>\r\n <p class=\"mt-1 text-sm text-gray-500\">\r\n {{subTitle}}\r\n </p>\r\n <div class=\"mt-6\" *ngIf=\"false\">\r\n <button type=\"button\" class=\"inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-gray-600 hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-gray-500\">\r\n <!-- Heroicon name: solid/plus -->\r\n <svg class=\"-ml-1 mr-2 h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\r\n <path vector-effect=\"non-scaling-stroke\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z\" />\r\n </svg>\r\n {{newItemLabel}}\r\n </button>\r\n </div>\r\n </div>\r\n</div>\r\n", directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
1002
+ ListViewEmptyStateComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.1", type: ListViewEmptyStateComponent, selector: "lib-list-view-empty-state", inputs: { title: "title", subTitle: ["sub-title", "subTitle"], newItemLabel: ["new-item-label", "newItemLabel"] }, ngImport: i0__namespace, template: "<div class=\"p-20\">\n <div class=\"text-center p-2\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" class=\"mx-auto h-12 w-12 text-gray-400\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 7v10c0 2.21 3.582 4 8 4s8-1.79 8-4V7M4 7c0 2.21 3.582 4 8 4s8-1.79 8-4M4 7c0-2.21 3.582-4 8-4s8 1.79 8 4m0 5c0 2.21-3.582 4-8 4s-8-1.79-8-4\" />\n </svg>\n <h3 class=\"mt-2 text-sm font-medium text-gray-900\">{{title}}</h3>\n <p class=\"mt-1 text-sm text-gray-500\">\n {{subTitle}}\n </p>\n <div class=\"mt-6\" *ngIf=\"false\">\n <button type=\"button\" class=\"inline-flex items-center px-4 py-2 border border-transparent shadow-sm text-sm font-medium rounded-md text-white bg-gray-600 hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-offset-1 focus:ring-gray-500\">\n <!-- Heroicon name: solid/plus -->\n <svg class=\"-ml-1 mr-2 h-6 w-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" aria-hidden=\"true\">\n <path vector-effect=\"non-scaling-stroke\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M9 13h6m-3-3v6m-9 1V7a2 2 0 012-2h6l2 2h6a2 2 0 012 2v8a2 2 0 01-2 2H5a2 2 0 01-2-2z\" />\n </svg>\n {{newItemLabel}}\n </button>\n </div>\n </div>\n</div>\n", directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
993
1003
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ListViewEmptyStateComponent, decorators: [{
994
1004
  type: i0.Component,
995
1005
  args: [{
@@ -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\">\n <ng-container *ngFor=\"let link of links | async\">\n <ng-container [ngSwitch]=\"link.type\">\n <a *ngSwitchCase=\"'router'\"\n href=\"#\"\n [routerLink]=\"[link.path]\"\n [routerLinkActive]=\"navLinkActiveClass\"\n [routerLinkActiveOptions]=\"{ exact: link.exact }\"\n [class]=\"navLinkClass\">\n {{ link.text }}\n </a>\n <a *ngSwitchCase=\"'external'\"\n [href]=\"link.path\"\n [attr.target]=\"link.external ? '_blank' : '_self'\"\n class=\"nav-link\">\n {{ link.text }}\n </a>\n <a *ngSwitchCase=\"'fragment'\"\n routerLink=\".\"\n [fragment]=\"link.path\"\n [class.active]=\"(activeFragment | async) === link.path\"\n class=\"nav-link\">\n {{ link.text }}\n </a>\n </ng-container>\n </ng-container>\n</div>\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,104 +2115,160 @@
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) {
2120
+ this.notifications = notifications;
2121
+ this.notificationsMenuVisible = true;
2122
+ this.menuExpanded = false;
2123
+ this.showNotifications = true;
2124
+ this.showUserNameOnHeader = true;
2125
+ this.unreadCount = 0;
2126
+ this.items = [];
2127
+ this.inboxAction = undefined;
2128
+ this.newArrival = false;
2129
+ }
2130
+ NotificationsIndicatorComponent.prototype.ngOnDestroy = function () {
2131
+ if (this.notificationsSub$) {
2132
+ this.notificationsSub$.unsubscribe();
2133
+ }
2134
+ };
2135
+ NotificationsIndicatorComponent.prototype.ngOnInit = function () {
2136
+ var _this = this;
2137
+ this.notificationsSub$ = this.notifications.messages.subscribe(function (result) {
2138
+ if (result.items) {
2139
+ _this.newArrival = true;
2140
+ _this.unreadCount = result.count;
2141
+ _this.items = result.items;
2142
+ setTimeout(function () { _this.newArrival = false; }, 1000);
2143
+ }
2144
+ });
2145
+ };
2146
+ NotificationsIndicatorComponent.prototype.toggleMenu = function () {
2147
+ this.menuExpanded = !this.menuExpanded;
2148
+ this.unreadCount = 0;
2149
+ };
2150
+ NotificationsIndicatorComponent.prototype.doInboxAction = function () {
2151
+ if (this.notifications.inboxAction) {
2152
+ this.notifications.inboxAction();
2153
+ }
2154
+ this.unreadCount = 0;
2155
+ };
2156
+ // this.notificationsSub$ = this.links.notifications?.pipe(map(result => {
2157
+ // this.allItemsLink = result.allNotifications;
2158
+ // this.items = result.items;
2159
+ // this.unreadCount = result.count;
2160
+ // }));
2161
+ // [this.notificationsLinksPath] as Observable<NotificationNavLink[]>;
2162
+ // this.allNotificationsLink = this.links[this.allNotificationsLinkPath] as Observable<NavLink>;
2163
+ // this.unreadNotificationsCountObs = this.links[this.notificationsCounterLinksPath] as Observable<number>;
2164
+ // this.getUnreadNotificationsCount();
2165
+ // tslint:disable-next-line:typedef
2166
+ NotificationsIndicatorComponent.prototype.onClickOutside = function ($event) {
2167
+ this.menuExpanded = false;
2168
+ };
2169
+ return NotificationsIndicatorComponent;
2170
+ }());
2171
+ NotificationsIndicatorComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: NotificationsIndicatorComponent, deps: [{ token: APP_NOTIFICATIONS }], target: i0__namespace.ɵɵFactoryTarget.Component });
2172
+ 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\">\n <!-- Notifications Button -->\n <button type=\"button\" (click)=\"doInboxAction()\" aria-expanded=\"false\" aria-haspopup=\"true\">\n <span class=\"sr-only\">View notifications</span>\n <span class=\"avatar-container\">\n <span class=\"avatar-text\">\n <i class=\"ms-Icon \"\n [class.ms-Icon--MessageFill]=\"unreadCount > 0\"\n [class.text-sky-400]=\"unreadCount > 0\"\n [class.animate-notification]=\"newArrival\"\n [class.ms-Icon--Message]=\"unreadCount === 0\"></i>\n </span>\n <span *ngIf=\"unreadCount > 0\"\n [class.animate-pulse]=\"newArrival\"\n class=\"absolute top-0 right-0 inline-flex items-center justify-center -mt-1 ml-1 text-xs leading-none text-gray-100\">\n {{unreadCount}}\n </span>\n </span>\n </button>\n</div>\n", directives: [{ type: i1__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
2173
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: NotificationsIndicatorComponent, decorators: [{
2174
+ type: i0.Component,
2175
+ args: [{
2176
+ selector: 'lib-notifications-indicator',
2177
+ templateUrl: './notifications-indicator.component.html'
2178
+ }]
2179
+ }], ctorParameters: function () {
2180
+ return [{ type: undefined, decorators: [{
2181
+ type: i0.Inject,
2182
+ args: [APP_NOTIFICATIONS]
2183
+ }] }];
2184
+ } });
2185
+
2070
2186
  var ShellHeaderComponent = /** @class */ (function () {
2071
- function ShellHeaderComponent(authService, router, links) {
2187
+ function ShellHeaderComponent(authService, router, route, config, links) {
2072
2188
  this.authService = authService;
2073
2189
  this.router = router;
2190
+ this.route = route;
2191
+ this.config = config;
2074
2192
  this.links = links;
2075
2193
  // tslint:disable-next-line:no-input-rename
2076
2194
  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;
2195
+ // tslint:disable-next-line:no-input-rename
2083
2196
  this.profileMenuVisible = true;
2197
+ // tslint:disable-next-line:no-input-rename
2198
+ this.showUserNameOnHeader = false;
2199
+ // tslint:disable-next-line:no-input-rename
2200
+ this.showAlerts = false;
2201
+ this.border = true;
2084
2202
  this.sectionLinks = rxjs.of([]);
2085
- this.notificationLinks = rxjs.of([]);
2086
- this.allNotificationsLink = rxjs.of();
2087
2203
  this.mobileMenuExpanded = false;
2088
2204
  this.userMenuExpanded = false;
2089
- this.notificationsMenuExpanded = false;
2090
- this.routeSubject = new rxjs.Observable();
2091
2205
  this.routerSub$ = null;
2092
2206
  this.userSub$ = null;
2093
2207
  this.statusSub$ = null;
2094
2208
  this.user = null;
2095
2209
  this.avatarName = null;
2210
+ this.activeFragment = null;
2211
+ this.routeSubject = this.router.events.pipe(operators.filter(function (event) { return event instanceof i1$1.NavigationStart; }));
2096
2212
  }
2097
- ShellHeaderComponent.prototype.ngOnDestroy = function () {
2098
- if (this.routerSub$) {
2099
- this.routerSub$.unsubscribe();
2100
- }
2101
- // TODO: check authenticated user here before we start polling server status
2102
- if (this.statusSub$) {
2103
- this.statusSub$.unsubscribe();
2104
- }
2105
- if (this.userSub$) {
2106
- this.userSub$.unsubscribe();
2107
- }
2108
- };
2109
2213
  ShellHeaderComponent.prototype.ngOnInit = function () {
2110
2214
  var _this = this;
2111
- var _a, _b;
2112
- this.showNotifications = (_a = this.config) === null || _a === void 0 ? void 0 : _a.showNotifications;
2113
- this.showUserNameOnHeader = (_b = this.config) === null || _b === void 0 ? void 0 : _b.showUserNameOnHeader;
2215
+ this.activeFragment = this.route.fragment.pipe(operators.share());
2114
2216
  this.sectionLinks = this.links[this.sectionLinksPath];
2115
- this.notificationLinks = this.links[this.notificationLinksPath];
2116
- this.allNotificationsLink = this.links[this.allNotificationsLinkPath];
2117
- this.routerSub$ = this.router.events.pipe(operators.filter(function (event) { return event instanceof i1$1.NavigationStart; })).subscribe(function (event) {
2217
+ this.routerSub$ = this.routeSubject.subscribe(function (event) {
2118
2218
  _this.mobileMenuExpanded = false;
2119
2219
  _this.userMenuExpanded = false;
2120
- _this.notificationsMenuExpanded = false;
2121
2220
  });
2122
2221
  this.authService.loadUser().subscribe(function (user) {
2123
- console.log(user);
2124
2222
  _this.setCurrentUser(user);
2125
2223
  }, function (error) {
2126
- console.log(error);
2224
+ console.error(error);
2127
2225
  });
2128
2226
  // Detect user changes and display / or not user info accordingly...
2129
2227
  this.userSub$ = this.authService.user$.subscribe(function (user) {
2130
2228
  // console.log('ShellHeaderComponent user subscription');
2131
2229
  _this.setCurrentUser(user);
2132
2230
  });
2231
+ // set current lang if no current value from langs if any
2232
+ if (!this.currentLang && this.langs && this.langs.length > 0) {
2233
+ this.setCurrentLang(this.langs[0]);
2234
+ }
2133
2235
  };
2134
- ShellHeaderComponent.prototype.setCurrentUser = function (user) {
2135
- var _a, _b;
2136
- this.user = user;
2137
- if (this.user && this.user.profile) {
2138
- 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));
2139
- console.log('load user', this.avatarName);
2236
+ ShellHeaderComponent.prototype.ngOnDestroy = function () {
2237
+ if (this.routerSub$) {
2238
+ this.routerSub$.unsubscribe();
2239
+ }
2240
+ // TODO: check authenticated user here before we start polling server status
2241
+ if (this.statusSub$) {
2242
+ this.statusSub$.unsubscribe();
2243
+ }
2244
+ if (this.userSub$) {
2245
+ this.userSub$.unsubscribe();
2140
2246
  }
2141
2247
  };
2142
2248
  // tslint:disable-next-line:typedef
2143
- ShellHeaderComponent.prototype.onClickOutsideProfile = function ($event) {
2249
+ ShellHeaderComponent.prototype.onClickOutside = function ($event) {
2144
2250
  this.userMenuExpanded = false;
2145
2251
  };
2146
- // tslint:disable-next-line:typedef
2147
- ShellHeaderComponent.prototype.onClickOutsideNotifications = function ($event) {
2148
- this.notificationsMenuExpanded = false;
2149
- };
2150
2252
  ShellHeaderComponent.prototype.signin = function (event) {
2151
2253
  if (event) {
2152
2254
  event.preventDefault();
2153
2255
  }
2154
2256
  this.authService.signinRedirect();
2155
2257
  };
2156
- ShellHeaderComponent.prototype.expandUserMenu = function () {
2157
- this.userMenuExpanded = !this.userMenuExpanded;
2158
- this.notificationsMenuExpanded = false;
2258
+ ShellHeaderComponent.prototype.setCurrentUser = function (user) {
2259
+ var _a, _b;
2260
+ this.user = user;
2261
+ if (this.user && this.user.profile) {
2262
+ 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();
2263
+ }
2159
2264
  };
2160
- ShellHeaderComponent.prototype.expandNotificationsMenu = function () {
2161
- this.notificationsMenuExpanded = !this.notificationsMenuExpanded;
2162
- this.userMenuExpanded = false;
2265
+ ShellHeaderComponent.prototype.setCurrentLang = function (lang) {
2266
+ this.currentLang = lang;
2163
2267
  };
2164
2268
  return ShellHeaderComponent;
2165
2269
  }());
2166
- 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 });
2167
- 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 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 <!-- 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\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 *ngFor=\"let link of obs\">\r\n\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 } });
2270
+ 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 });
2271
+ 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 <div *ngIf=\"showAlerts && user\" class=\"mr-2\">\r\n <lib-notifications-indicator></lib-notifications-indicator>\r\n </div>\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 <div *ngIf=\"user && showUserNameOnHeader\" class=\"shell-header-profile-userName\">\r\n {{ user.profile.name }}\r\n </div>\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"] }] });
2168
2272
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellHeaderComponent, decorators: [{
2169
2273
  type: i0.Component,
2170
2274
  args: [{
@@ -2179,6 +2283,12 @@
2179
2283
  }] }, { type: i1__namespace$1.Router, decorators: [{
2180
2284
  type: i0.Inject,
2181
2285
  args: [i1$1.Router]
2286
+ }] }, { type: i1__namespace$1.ActivatedRoute, decorators: [{
2287
+ type: i0.Inject,
2288
+ args: [i1$1.ActivatedRoute]
2289
+ }] }, { type: undefined, decorators: [{
2290
+ type: i0.Inject,
2291
+ args: [SHELL_CONFIG]
2182
2292
  }] }, { type: undefined, decorators: [{
2183
2293
  type: i0.Inject,
2184
2294
  args: [APP_LINKS]
@@ -2186,14 +2296,20 @@
2186
2296
  }, propDecorators: { sectionLinksPath: [{
2187
2297
  type: i0.Input,
2188
2298
  args: ['section-links']
2189
- }], notificationLinksPath: [{
2299
+ }], profileMenuVisible: [{
2190
2300
  type: i0.Input,
2191
- args: ['notification-links']
2192
- }], allNotificationsLinkPath: [{
2301
+ args: ['profile-menu']
2302
+ }], showUserNameOnHeader: [{
2193
2303
  type: i0.Input,
2194
- args: ['all-notifications']
2195
- }], config: [{
2304
+ args: ['show-userName']
2305
+ }], showAlerts: [{
2306
+ type: i0.Input,
2307
+ args: ['show-alerts']
2308
+ }], langs: [{
2196
2309
  type: i0.Input
2310
+ }], currentLang: [{
2311
+ type: i0.Input,
2312
+ args: ['current-lang']
2197
2313
  }], border: [{
2198
2314
  type: i0.Input
2199
2315
  }] } });
@@ -2220,14 +2336,15 @@
2220
2336
  } });
2221
2337
 
2222
2338
  var ShellLayoutComponent = /** @class */ (function () {
2223
- function ShellLayoutComponent(router, location, config, componentLoaderFactory) {
2339
+ function ShellLayoutComponent(document, router, location, config, componentLoaderFactory) {
2340
+ this.document = document;
2224
2341
  this.router = router;
2225
2342
  this.location = location;
2226
2343
  this.config = config;
2227
2344
  this.componentLoaderFactory = componentLoaderFactory;
2228
2345
  this.dynamicComponentHosts = null;
2229
- this.routerSub$ = null;
2230
2346
  this.showRightPaneSM = false;
2347
+ this.routerSub$ = null;
2231
2348
  this.activeConfig = new DefaultShellConfig();
2232
2349
  this.loaded = false;
2233
2350
  if (!config) {
@@ -2291,8 +2408,8 @@
2291
2408
  };
2292
2409
  return ShellLayoutComponent;
2293
2410
  }());
2294
- 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 });
2295
- 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"] }] });
2411
+ 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 });
2412
+ 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"] }] });
2296
2413
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ShellLayoutComponent, decorators: [{
2297
2414
  type: i0.Component,
2298
2415
  args: [{
@@ -2301,7 +2418,10 @@
2301
2418
  templateUrl: './shell-layout.component.html',
2302
2419
  }]
2303
2420
  }], ctorParameters: function () {
2304
- return [{ type: i1__namespace$1.Router }, { type: i1__namespace.Location }, { type: undefined, decorators: [{
2421
+ return [{ type: undefined, decorators: [{
2422
+ type: i0.Inject,
2423
+ args: [i1.DOCUMENT]
2424
+ }] }, { type: i1__namespace$1.Router }, { type: i1__namespace.Location }, { type: undefined, decorators: [{
2305
2425
  type: i0.Inject,
2306
2426
  args: [SHELL_CONFIG]
2307
2427
  }] }, { type: ComponentLoaderFactory }];
@@ -2432,11 +2552,9 @@
2432
2552
  ModelViewLayoutComponent.prototype.ngOnInit = function () {
2433
2553
  };
2434
2554
  ModelViewLayoutComponent.prototype.onSidePaneActivated = function ($event) {
2435
- //console.log('onSidePaneActivated', $event);
2436
2555
  this.showRightPaneSM = true;
2437
2556
  };
2438
2557
  ModelViewLayoutComponent.prototype.onSidePaneDeactivated = function ($event) {
2439
- //console.log('onSidePaneActivated', $event);
2440
2558
  this.showRightPaneSM = false;
2441
2559
  };
2442
2560
  ModelViewLayoutComponent.prototype.closeSidePane = function () {
@@ -2566,8 +2684,8 @@
2566
2684
  }] } });
2567
2685
 
2568
2686
  var FormLayoutComponent = /** @class */ (function () {
2569
- function FormLayoutComponent(_router) {
2570
- this._router = _router;
2687
+ function FormLayoutComponent(router$) {
2688
+ this.router$ = router$;
2571
2689
  this.title = null;
2572
2690
  // tslint:disable-next-line:no-input-rename
2573
2691
  this.searchPlaceholder = 'αναζήτηση';
@@ -2579,7 +2697,6 @@
2579
2697
  // tslint:disable-next-line:no-output-on-prefix
2580
2698
  this.onSearch = new i0.EventEmitter();
2581
2699
  this.onComplete = new i0.EventEmitter();
2582
- this.showRightPaneSM = false;
2583
2700
  }
2584
2701
  FormLayoutComponent.prototype.ngOnInit = function () {
2585
2702
  var _a;
@@ -2609,10 +2726,10 @@
2609
2726
  FormLayoutComponent.prototype.routerLinkActionClick = function (action, relative) {
2610
2727
  if (relative === void 0) { relative = false; }
2611
2728
  if (action.outlet) {
2612
- this._router.navigate(['', { outlets: { formRightPane: action.link } }]);
2729
+ this.router$.navigate(['', { outlets: { formRightPane: action.link } }]);
2613
2730
  }
2614
2731
  else {
2615
- this._router.navigate([action.link]);
2732
+ this.router$.navigate([action.link]);
2616
2733
  }
2617
2734
  };
2618
2735
  return FormLayoutComponent;
@@ -2765,7 +2882,7 @@
2765
2882
  return PageNotFoundComponent;
2766
2883
  }());
2767
2884
  PageNotFoundComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: PageNotFoundComponent, deps: [], target: i0__namespace.ɵɵFactoryTarget.Component });
2768
- 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"] }] });
2885
+ 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"] }] });
2769
2886
  i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: PageNotFoundComponent, decorators: [{
2770
2887
  type: i0.Component,
2771
2888
  args: [{
@@ -2877,31 +2994,6 @@
2877
2994
  }]
2878
2995
  }] });
2879
2996
 
2880
- var defaultError = 'Something went wrong';
2881
- var ObsWithStatusPipe = /** @class */ (function () {
2882
- function ObsWithStatusPipe() {
2883
- }
2884
- ObsWithStatusPipe.prototype.transform = function (val) {
2885
- return val.pipe(operators.map(function (value) {
2886
- return {
2887
- loading: value.type === 'start',
2888
- error: value.type === 'error' ? defaultError : '',
2889
- value: value.type ? value.value : value,
2890
- };
2891
- }), operators.startWith({ loading: true }), operators.catchError(function (error) { return rxjs.of({ loading: false, error: typeof error === 'string' ? error : defaultError }); }));
2892
- };
2893
- return ObsWithStatusPipe;
2894
- }());
2895
- ObsWithStatusPipe.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ObsWithStatusPipe, deps: [], target: i0__namespace.ɵɵFactoryTarget.Pipe });
2896
- ObsWithStatusPipe.ɵpipe = i0__namespace.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ObsWithStatusPipe, name: "obsWithStatus", pure: false });
2897
- i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.1", ngImport: i0__namespace, type: ObsWithStatusPipe, decorators: [{
2898
- type: i0.Pipe,
2899
- args: [{
2900
- name: 'obsWithStatus',
2901
- pure: false
2902
- }]
2903
- }] });
2904
-
2905
2997
  var BaseListComponent = /** @class */ (function () {
2906
2998
  function BaseListComponent(route$, router$) {
2907
2999
  this.route$ = route$;
@@ -3581,7 +3673,8 @@
3581
3673
  // pipes
3582
3674
  AddressPipe,
3583
3675
  DurationFormatPipe,
3584
- ObsWithStatusPipe
3676
+ NavLinksListComponent,
3677
+ NotificationsIndicatorComponent
3585
3678
  ], imports: [i1.CommonModule,
3586
3679
  i1$1.RouterModule,
3587
3680
  i2.IndiceAuthModule], exports: [ClickOutsideDirective,
@@ -3609,7 +3702,6 @@
3609
3702
  UnauthorizedComponent,
3610
3703
  AddressPipe,
3611
3704
  DurationFormatPipe,
3612
- ObsWithStatusPipe,
3613
3705
  CollapsiblePanelComponent,
3614
3706
  SidePaneComponent,
3615
3707
  DatepickerComponent,
@@ -3666,7 +3758,8 @@
3666
3758
  // pipes
3667
3759
  AddressPipe,
3668
3760
  DurationFormatPipe,
3669
- ObsWithStatusPipe
3761
+ NavLinksListComponent,
3762
+ NotificationsIndicatorComponent
3670
3763
  ],
3671
3764
  imports: [
3672
3765
  i1.CommonModule,
@@ -3699,7 +3792,6 @@
3699
3792
  UnauthorizedComponent,
3700
3793
  AddressPipe,
3701
3794
  DurationFormatPipe,
3702
- ObsWithStatusPipe,
3703
3795
  CollapsiblePanelComponent,
3704
3796
  SidePaneComponent,
3705
3797
  DatepickerComponent,
@@ -3718,6 +3810,7 @@
3718
3810
  */
3719
3811
 
3720
3812
  exports.APP_LINKS = APP_LINKS;
3813
+ exports.APP_NOTIFICATIONS = APP_NOTIFICATIONS;
3721
3814
  exports.AddressPipe = AddressPipe;
3722
3815
  exports.AuthCallbackComponent = AuthCallbackComponent;
3723
3816
  exports.AuthRenewComponent = AuthRenewComponent;
@@ -3753,8 +3846,8 @@
3753
3846
  exports.ModelViewLayoutComponent = ModelViewLayoutComponent;
3754
3847
  exports.NULL_TOAST = NULL_TOAST;
3755
3848
  exports.NavLink = NavLink;
3849
+ exports.NavLinksListComponent = NavLinksListComponent;
3756
3850
  exports.NotificationNavLink = NotificationNavLink;
3757
- exports.ObsWithStatusPipe = ObsWithStatusPipe;
3758
3851
  exports.PageNotFoundComponent = PageNotFoundComponent;
3759
3852
  exports.PagerComponent = PagerComponent;
3760
3853
  exports.RouterViewAction = RouterViewAction;
@@ -3776,5 +3869,5 @@
3776
3869
 
3777
3870
  Object.defineProperty(exports, '__esModule', { value: true });
3778
3871
 
3779
- })));
3872
+ }));
3780
3873
  //# sourceMappingURL=indice-ng-components.umd.js.map