@lenne.tech/ng-base 15.0.0-beta → 15.0.0-beta-3

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 (111) hide show
  1. package/base-components/base-components.module.d.ts +3 -1
  2. package/base-components/components/input/input.component.d.ts +2 -1
  3. package/base-components/components/model-table/model-table.component.d.ts +16 -4
  4. package/base-components/components/refence-input/refence-input.component.d.ts +10 -2
  5. package/base-components/components/select/select.component.d.ts +2 -1
  6. package/base-components/components/tags/tags.component.d.ts +2 -1
  7. package/base-components/components/textarea/textarea.component.d.ts +9 -2
  8. package/base-components/components/upload-image/upload-image.component.d.ts +19 -4
  9. package/base-components/directives/sort.directive.d.ts +3 -2
  10. package/base-prototype/pages/login/login.component.d.ts +5 -8
  11. package/base-prototype/pages/profile/profile.component.d.ts +5 -29
  12. package/base-prototype/pages/register/register.component.d.ts +6 -2
  13. package/esm2020/base-cms/base-cms-routing.module.mjs +4 -4
  14. package/esm2020/base-cms/base-cms.module.mjs +4 -4
  15. package/esm2020/base-cms/pages/base-cms/base-cms.component.mjs +5 -5
  16. package/esm2020/base-components/base-components.module.mjs +9 -7
  17. package/esm2020/base-components/components/breadcrumb/breadcrumb.component.mjs +3 -3
  18. package/esm2020/base-components/components/change-password/change-password.component.mjs +3 -3
  19. package/esm2020/base-components/components/checkbox/checkbox.component.mjs +3 -3
  20. package/esm2020/base-components/components/delete-account/delete-account.component.mjs +3 -3
  21. package/esm2020/base-components/components/fab-button/fab-button.component.mjs +3 -3
  22. package/esm2020/base-components/components/input/input.component.mjs +8 -5
  23. package/esm2020/base-components/components/loading-bar/loading-bar.component.mjs +3 -3
  24. package/esm2020/base-components/components/model-form/model-form-base.component.mjs +3 -3
  25. package/esm2020/base-components/components/model-form/model-form.component.mjs +14 -14
  26. package/esm2020/base-components/components/model-form-sub/model-form-sub.component.mjs +5 -5
  27. package/esm2020/base-components/components/model-table/model-table.component.mjs +78 -19
  28. package/esm2020/base-components/components/refence-input/refence-input.component.mjs +24 -10
  29. package/esm2020/base-components/components/select/select.component.mjs +9 -6
  30. package/esm2020/base-components/components/skeleton-loader/skeleton-loader.component.mjs +3 -3
  31. package/esm2020/base-components/components/tags/tags.component.mjs +8 -5
  32. package/esm2020/base-components/components/textarea/textarea.component.mjs +41 -7
  33. package/esm2020/base-components/components/toast/toast.component.mjs +3 -3
  34. package/esm2020/base-components/components/upload-image/upload-image.component.mjs +100 -28
  35. package/esm2020/base-components/directives/back-button.directive.mjs +3 -3
  36. package/esm2020/base-components/directives/context-menu.directive.mjs +3 -3
  37. package/esm2020/base-components/directives/sort.directive.mjs +10 -7
  38. package/esm2020/base-components/directives/stop-propagation.directive.mjs +3 -3
  39. package/esm2020/base-components/pipes/ellipses.pipe.mjs +3 -3
  40. package/esm2020/base-prototype/base-prototype.module.mjs +4 -4
  41. package/esm2020/base-prototype/pages/email-verification/email-verification.component.mjs +3 -3
  42. package/esm2020/base-prototype/pages/forgot-password/forgot-password.component.mjs +3 -3
  43. package/esm2020/base-prototype/pages/login/login.component.mjs +17 -10
  44. package/esm2020/base-prototype/pages/profile/profile.component.mjs +15 -5
  45. package/esm2020/base-prototype/pages/register/register.component.mjs +15 -8
  46. package/esm2020/base-prototype/pages/set-password/set-password.component.mjs +3 -3
  47. package/esm2020/shared/classes/auth.class.mjs +2 -1
  48. package/esm2020/shared/interfaces/cms-field-config.interface.mjs +1 -1
  49. package/esm2020/shared/interfaces/cropping-options.interface.mjs +2 -0
  50. package/esm2020/shared/interfaces/login-config.interface.mjs +2 -0
  51. package/esm2020/shared/public-api.mjs +3 -1
  52. package/esm2020/shared/services/auth.service.mjs +88 -17
  53. package/esm2020/shared/services/breadcrumb.service.mjs +9 -9
  54. package/esm2020/shared/services/cms.service.mjs +3 -3
  55. package/esm2020/shared/services/file.service.mjs +3 -3
  56. package/esm2020/shared/services/forms.service.mjs +3 -3
  57. package/esm2020/shared/services/graphql-meta.service.mjs +3 -3
  58. package/esm2020/shared/services/graphql-plus.service.mjs +3 -3
  59. package/esm2020/shared/services/graphql.service.mjs +3 -3
  60. package/esm2020/shared/services/image.service.mjs +3 -3
  61. package/esm2020/shared/services/loader.service.mjs +3 -3
  62. package/esm2020/shared/services/navigation.service.mjs +3 -3
  63. package/esm2020/shared/services/scroll.service.mjs +3 -3
  64. package/esm2020/shared/services/storage.service.mjs +3 -3
  65. package/esm2020/shared/services/toast.service.mjs +3 -3
  66. package/esm2020/shared/services/user.service.mjs +12 -10
  67. package/esm2020/shared/services/ws.service.mjs +3 -3
  68. package/esm2020/src/base.module.mjs +4 -4
  69. package/esm2020/src/directives/lazy-load.directive.mjs +3 -3
  70. package/esm2020/src/directives/match-height.directive.mjs +9 -4
  71. package/esm2020/src/directives/resizable.directive.mjs +3 -3
  72. package/esm2020/src/factories/apollo-options.factory.mjs +47 -4
  73. package/esm2020/src/guards/auth.guard.mjs +28 -9
  74. package/esm2020/src/guards/can-deactivate.guard.mjs +3 -3
  75. package/esm2020/src/guards/logout.guard.mjs +3 -3
  76. package/esm2020/src/pipes/date-ago.pipe.mjs +3 -3
  77. package/esm2020/src/pipes/safe-html.pipe.mjs +3 -3
  78. package/esm2020/src/services/fullscreen.service.mjs +3 -3
  79. package/esm2020/src/services/seo.service.mjs +3 -3
  80. package/esm2020/src/services/theme.service.mjs +14 -14
  81. package/fesm2015/lenne.tech-ng-base-base-cms.mjs +13 -13
  82. package/fesm2015/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  83. package/fesm2015/lenne.tech-ng-base-base-components.mjs +307 -130
  84. package/fesm2015/lenne.tech-ng-base-base-components.mjs.map +1 -1
  85. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs +56 -33
  86. package/fesm2015/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  87. package/fesm2015/lenne.tech-ng-base-shared.mjs +354 -283
  88. package/fesm2015/lenne.tech-ng-base-shared.mjs.map +1 -1
  89. package/fesm2015/lenne.tech-ng-base.mjs +122 -58
  90. package/fesm2015/lenne.tech-ng-base.mjs.map +1 -1
  91. package/fesm2020/lenne.tech-ng-base-base-cms.mjs +13 -13
  92. package/fesm2020/lenne.tech-ng-base-base-cms.mjs.map +1 -1
  93. package/fesm2020/lenne.tech-ng-base-base-components.mjs +314 -130
  94. package/fesm2020/lenne.tech-ng-base-base-components.mjs.map +1 -1
  95. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs +56 -33
  96. package/fesm2020/lenne.tech-ng-base-base-prototype.mjs.map +1 -1
  97. package/fesm2020/lenne.tech-ng-base-shared.mjs +351 -278
  98. package/fesm2020/lenne.tech-ng-base-shared.mjs.map +1 -1
  99. package/fesm2020/lenne.tech-ng-base.mjs +123 -57
  100. package/fesm2020/lenne.tech-ng-base.mjs.map +1 -1
  101. package/package.json +9 -7
  102. package/shared/classes/auth.class.d.ts +1 -0
  103. package/shared/interfaces/cms-field-config.interface.d.ts +6 -1
  104. package/shared/interfaces/cropping-options.interface.d.ts +12 -0
  105. package/shared/interfaces/field.interface.d.ts +1 -1
  106. package/shared/interfaces/login-config.interface.d.ts +6 -0
  107. package/shared/public-api.d.ts +2 -0
  108. package/shared/services/auth.service.d.ts +16 -4
  109. package/shared/types/graphql-fields.type.d.ts +1 -1
  110. package/shared/types/storage.type.d.ts +1 -1
  111. package/src/directives/match-height.directive.d.ts +1 -0
@@ -2,17 +2,18 @@ import { APOLLO_OPTIONS, ApolloModule } from 'apollo-angular';
2
2
  import { HttpLink } from 'apollo-angular/http';
3
3
  import * as i0 from '@angular/core';
4
4
  import { Directive, HostBinding, Input, PLATFORM_ID, Inject, HostListener, Pipe, NgModule, Injectable } from '@angular/core';
5
- import { ApolloLink, split, concat } from '@apollo/client/core';
5
+ import { ApolloLink, fromPromise, split, concat } from '@apollo/client/core';
6
6
  import { InMemoryCache } from '@apollo/client/cache';
7
7
  import { getMainDefinition } from '@apollo/client/utilities';
8
8
  import * as i2 from '@lenne.tech/ng-base/shared';
9
9
  import { createRestartableClient, BASE_MODULE_CONFIG, AuthService, WsService } from '@lenne.tech/ng-base/shared';
10
10
  import { GraphQLWsLink } from '@apollo/client/link/subscriptions';
11
+ import { firstValueFrom, Observable, BehaviorSubject } from 'rxjs';
12
+ import { onError } from '@apollo/client/link/error';
11
13
  import { __awaiter } from 'tslib';
12
14
  import { isPlatformBrowser } from '@angular/common';
13
15
  import * as i1 from '@angular/platform-browser';
14
16
  import { HttpClientModule } from '@angular/common/http';
15
- import { Observable, BehaviorSubject } from 'rxjs';
16
17
  import * as i1$1 from '@angular/router';
17
18
 
18
19
  /**
@@ -109,9 +110,17 @@ function apolloOptionsFactory(baseModuleConfig, httpLink, authService, wsService
109
110
  extractFiles,
110
111
  });
111
112
  const authMiddleware = new ApolloLink((operation, forward) => {
113
+ var _a, _b, _c, _d;
112
114
  const headers = {};
115
+ const operationName = (_d = (_c = (_b = (_a = operation.query.definitions[0]) === null || _a === void 0 ? void 0 : _a.selectionSet) === null || _b === void 0 ? void 0 : _b.selections[0]) === null || _c === void 0 ? void 0 : _c.name) === null || _d === void 0 ? void 0 : _d.value;
113
116
  if (localStorage) {
114
- const token = authService.token || null;
117
+ let token;
118
+ if (operationName === 'refreshToken') {
119
+ token = authService.refreshToken || null;
120
+ }
121
+ else {
122
+ token = authService.token || null;
123
+ }
115
124
  if (token) {
116
125
  headers.Authorization = 'Bearer ' + token;
117
126
  }
@@ -119,6 +128,36 @@ function apolloOptionsFactory(baseModuleConfig, httpLink, authService, wsService
119
128
  }
120
129
  return forward(operation);
121
130
  });
131
+ const errorLink = onError(({ graphQLErrors, networkError, operation, forward }) => {
132
+ if (graphQLErrors) {
133
+ for (const err of graphQLErrors) {
134
+ switch (err.extensions.code) {
135
+ case 'UNAUTHENTICATED': {
136
+ if (err.message !== 'Expired refresh token' &&
137
+ err.message !== 'Expired token' &&
138
+ err.message !== 'Invalid token') {
139
+ return;
140
+ }
141
+ if (err.message === 'Expired refresh token' || err.message === 'Invalid token') {
142
+ authService.clearSession();
143
+ return;
144
+ }
145
+ return fromPromise(firstValueFrom(authService.requestNewToken()))
146
+ .filter((value) => Boolean(value))
147
+ .flatMap((response) => {
148
+ const oldHeaders = operation.getContext().headers;
149
+ // modify the operation context with a new token
150
+ operation.setContext({
151
+ headers: Object.assign(Object.assign({}, oldHeaders), { Authorization: `Bearer ${response.token}` }),
152
+ });
153
+ // retry the request, returning the new observable
154
+ return forward(operation);
155
+ });
156
+ }
157
+ }
158
+ }
159
+ }
160
+ });
122
161
  if (baseModuleConfig.logging) {
123
162
  console.log(baseModuleConfig);
124
163
  }
@@ -141,10 +180,11 @@ function apolloOptionsFactory(baseModuleConfig, httpLink, authService, wsService
141
180
  // @ts-ignore
142
181
  const { kind, operation } = getMainDefinition(query);
143
182
  return kind === 'OperationDefinition' && operation === 'subscription';
144
- }, wsLink, concat(authMiddleware, http)));
183
+ }, wsLink, concat(concat(authMiddleware, errorLink), http)));
145
184
  }
146
185
  else {
147
186
  links.push(authMiddleware);
187
+ links.push(errorLink);
148
188
  links.push(http);
149
189
  }
150
190
  return {
@@ -187,9 +227,9 @@ class LazyLoadDirective {
187
227
  this.srcAttr = this.src;
188
228
  }
189
229
  }
190
- LazyLoadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LazyLoadDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
191
- LazyLoadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: LazyLoadDirective, selector: "img[ltLazyLoad]", inputs: { src: "src" }, host: { properties: { "attr.src": "this.srcAttr" } }, ngImport: i0 });
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LazyLoadDirective, decorators: [{
230
+ LazyLoadDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LazyLoadDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
231
+ LazyLoadDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: LazyLoadDirective, selector: "img[ltLazyLoad]", inputs: { src: "src" }, host: { properties: { "attr.src": "this.srcAttr" } }, ngImport: i0 });
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LazyLoadDirective, decorators: [{
193
233
  type: Directive,
194
234
  args: [{
195
235
  selector: 'img[ltLazyLoad]',
@@ -217,6 +257,11 @@ class MatchHeightDirective {
217
257
  }
218
258
  ngAfterViewInit() {
219
259
  this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
260
+ this.observer = new MutationObserver(() => {
261
+ this.matchHeight(this.el.nativeElement, this.ltMatchHeight);
262
+ });
263
+ //Observes if one or more elements get added to or removed from the childlist and applies matching heights
264
+ this.observer.observe(this.el.nativeElement, { childList: true });
220
265
  }
221
266
  matchHeight(parent, target) {
222
267
  return __awaiter(this, void 0, void 0, function* () {
@@ -259,9 +304,9 @@ class MatchHeightDirective {
259
304
  });
260
305
  }
261
306
  }
262
- MatchHeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatchHeightDirective, deps: [{ token: i0.ElementRef }, { token: i2.ImageService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
263
- MatchHeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: MatchHeightDirective, selector: "[ltMatchHeight]", inputs: { ltMatchHeight: "ltMatchHeight", loadImages: "loadImages" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
264
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MatchHeightDirective, decorators: [{
307
+ MatchHeightDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MatchHeightDirective, deps: [{ token: i0.ElementRef }, { token: i2.ImageService }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive });
308
+ MatchHeightDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: MatchHeightDirective, selector: "[ltMatchHeight]", inputs: { ltMatchHeight: "ltMatchHeight", loadImages: "loadImages" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0 });
309
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: MatchHeightDirective, decorators: [{
265
310
  type: Directive,
266
311
  args: [{
267
312
  selector: '[ltMatchHeight]',
@@ -355,9 +400,9 @@ class ResizableDirective {
355
400
  }, true);
356
401
  }
357
402
  }
358
- ResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizableDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
359
- ResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ResizableDirective, selector: "[ltResizable]", inputs: { resizableGrabWidth: "resizableGrabWidth", resizableMinWidth: "resizableMinWidth" }, ngImport: i0 });
360
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizableDirective, decorators: [{
403
+ ResizableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ResizableDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
404
+ ResizableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.9", type: ResizableDirective, selector: "[ltResizable]", inputs: { resizableGrabWidth: "resizableGrabWidth", resizableMinWidth: "resizableMinWidth" }, ngImport: i0 });
405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ResizableDirective, decorators: [{
361
406
  type: Directive,
362
407
  args: [{
363
408
  selector: '[ltResizable]',
@@ -379,9 +424,9 @@ class SafeHtmlPipe {
379
424
  return this.sanitized.bypassSecurityTrustHtml(value);
380
425
  }
381
426
  }
382
- SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
383
- SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: SafeHtmlPipe, name: "ltSafeHtml" });
384
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SafeHtmlPipe, decorators: [{
427
+ SafeHtmlPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SafeHtmlPipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
428
+ SafeHtmlPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: SafeHtmlPipe, name: "ltSafeHtml" });
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SafeHtmlPipe, decorators: [{
385
430
  type: Pipe,
386
431
  args: [{ name: 'ltSafeHtml' }]
387
432
  }], ctorParameters: function () { return [{ type: i1.DomSanitizer }]; } });
@@ -439,9 +484,9 @@ class DateAgoPipe {
439
484
  return value;
440
485
  }
441
486
  }
442
- DateAgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DateAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
443
- DateAgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: DateAgoPipe, name: "dateAgo" });
444
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DateAgoPipe, decorators: [{
487
+ DateAgoPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateAgoPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
488
+ DateAgoPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: DateAgoPipe, name: "dateAgo" });
489
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: DateAgoPipe, decorators: [{
445
490
  type: Pipe,
446
491
  args: [{
447
492
  name: 'dateAgo',
@@ -497,8 +542,8 @@ class BaseModule {
497
542
  };
498
543
  }
499
544
  }
500
- BaseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: BaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
501
- BaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: BaseModule, declarations: [
545
+ BaseModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
546
+ BaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.9", ngImport: i0, type: BaseModule, declarations: [
502
547
  // Directives
503
548
  LazyLoadDirective,
504
549
  MatchHeightDirective,
@@ -515,8 +560,8 @@ BaseModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15
515
560
  SafeHtmlPipe,
516
561
  DateAgoPipe, ApolloModule, HttpClientModule
517
562
  ] });
518
- BaseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: BaseModule, imports: [ApolloModule, HttpClientModule, ApolloModule, HttpClientModule] });
519
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: BaseModule, decorators: [{
563
+ BaseModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseModule, imports: [ApolloModule, HttpClientModule, ApolloModule, HttpClientModule] });
564
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseModule, decorators: [{
520
565
  type: NgModule,
521
566
  args: [{
522
567
  imports: [ApolloModule, HttpClientModule],
@@ -565,14 +610,33 @@ class AuthGuard {
565
610
  */
566
611
  canActivate(route, state) {
567
612
  return new Observable((subscriber) => {
568
- var _a, _b, _c, _d;
613
+ var _a, _b, _c, _d, _e, _f, _g;
569
614
  let allowed = false;
615
+ let redirected = false;
616
+ /* If the user is logged in and the route is not marked as opposite, then the user is allowed to access the route. */
570
617
  const opposite = ((_a = route === null || route === void 0 ? void 0 : route.data) === null || _a === void 0 ? void 0 : _a.opposite) ? (_b = route === null || route === void 0 ? void 0 : route.data) === null || _b === void 0 ? void 0 : _b.opposite : false;
571
- const redirectUrl = ((_c = route === null || route === void 0 ? void 0 : route.data) === null || _c === void 0 ? void 0 : _c.redirectUrl) ? route.data.redirectUrl : this.moduleConfig.authGuardRedirectUrl;
618
+ const redirectAuthUrl = ((_c = route === null || route === void 0 ? void 0 : route.data) === null || _c === void 0 ? void 0 : _c.redirectAuthUrl)
619
+ ? route.data.redirectAuthUrl
620
+ : this.moduleConfig.authGuardRedirectUrl;
621
+ const redirectRoleUrl = ((_d = route === null || route === void 0 ? void 0 : route.data) === null || _d === void 0 ? void 0 : _d.redirectRoleUrl)
622
+ ? route.data.redirectRoleUrl
623
+ : this.moduleConfig.authGuardRedirectUrl;
624
+ const disableQueryParams = (_f = (_e = route === null || route === void 0 ? void 0 : route.data) === null || _e === void 0 ? void 0 : _e.disableQueryParams) !== null && _f !== void 0 ? _f : false;
625
+ const queryParams = disableQueryParams
626
+ ? {}
627
+ : {
628
+ queryParams: {
629
+ redirectUrl: route['_routerState'].url,
630
+ },
631
+ };
572
632
  if (this.authService.token && !opposite) {
573
- if (route.data.allowedRole) {
633
+ if ((_g = route.data) === null || _g === void 0 ? void 0 : _g.roles) {
574
634
  const user = this.authService.currentUser;
575
- allowed = (_d = user === null || user === void 0 ? void 0 : user.roles) === null || _d === void 0 ? void 0 : _d.includes(route.data.allowedRole);
635
+ allowed = !!route.data.roles.find((role) => { var _a; return (_a = user.roles) === null || _a === void 0 ? void 0 : _a.includes(role); });
636
+ if (!allowed && redirectRoleUrl) {
637
+ this.router.navigate([redirectRoleUrl], queryParams);
638
+ redirected = true;
639
+ }
576
640
  }
577
641
  else {
578
642
  allowed = true;
@@ -581,8 +645,8 @@ class AuthGuard {
581
645
  else if (!this.authService.token && opposite) {
582
646
  allowed = true;
583
647
  }
584
- if (!allowed) {
585
- this.router.navigate([redirectUrl]);
648
+ if (!allowed && redirectAuthUrl && !redirected) {
649
+ this.router.navigate([redirectAuthUrl], queryParams);
586
650
  }
587
651
  subscriber.next(allowed);
588
652
  subscriber.complete();
@@ -595,9 +659,9 @@ class AuthGuard {
595
659
  return this.canActivate(route, state);
596
660
  }
597
661
  }
598
- AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Router }, { token: i2.AuthService }, { token: BASE_MODULE_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
599
- AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: AuthGuard });
600
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: AuthGuard, decorators: [{
662
+ AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthGuard, deps: [{ token: i1$1.Router }, { token: i2.AuthService }, { token: BASE_MODULE_CONFIG }], target: i0.ɵɵFactoryTarget.Injectable });
663
+ AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthGuard });
664
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AuthGuard, decorators: [{
601
665
  type: Injectable
602
666
  }], ctorParameters: function () {
603
667
  return [{ type: i1$1.Router }, { type: i2.AuthService }, { type: undefined, decorators: [{
@@ -614,9 +678,9 @@ class CanDeactivateGuard {
614
678
  return component.canDeactivate ? component.canDeactivate() : true;
615
679
  }
616
680
  }
617
- CanDeactivateGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CanDeactivateGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
618
- CanDeactivateGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CanDeactivateGuard });
619
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CanDeactivateGuard, decorators: [{
681
+ CanDeactivateGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CanDeactivateGuard, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
682
+ CanDeactivateGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CanDeactivateGuard });
683
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: CanDeactivateGuard, decorators: [{
620
684
  type: Injectable
621
685
  }] });
622
686
 
@@ -641,9 +705,9 @@ class LogoutGuard {
641
705
  return this.canActivate(route, state);
642
706
  }
643
707
  }
644
- LogoutGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LogoutGuard, deps: [{ token: i1$1.Router }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
645
- LogoutGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LogoutGuard });
646
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LogoutGuard, decorators: [{
708
+ LogoutGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LogoutGuard, deps: [{ token: i1$1.Router }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable });
709
+ LogoutGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LogoutGuard });
710
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LogoutGuard, decorators: [{
647
711
  type: Injectable
648
712
  }], ctorParameters: function () { return [{ type: i1$1.Router }, { type: i2.AuthService }]; } });
649
713
 
@@ -686,9 +750,9 @@ class FullscreenService {
686
750
  });
687
751
  }
688
752
  }
689
- FullscreenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FullscreenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
690
- FullscreenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FullscreenService, providedIn: 'root' });
691
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FullscreenService, decorators: [{
753
+ FullscreenService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FullscreenService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
754
+ FullscreenService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FullscreenService, providedIn: 'root' });
755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: FullscreenService, decorators: [{
692
756
  type: Injectable,
693
757
  args: [{
694
758
  providedIn: 'root',
@@ -780,9 +844,9 @@ class SEOService {
780
844
  this.metaTagService.updateTag({ name: 'keywords', content: keywords });
781
845
  }
782
846
  }
783
- SEOService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SEOService, deps: [{ token: i1.Title }, { token: i1.Meta }], target: i0.ɵɵFactoryTarget.Injectable });
784
- SEOService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SEOService, providedIn: 'root' });
785
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SEOService, decorators: [{
847
+ SEOService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SEOService, deps: [{ token: i1.Title }, { token: i1.Meta }], target: i0.ɵɵFactoryTarget.Injectable });
848
+ SEOService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SEOService, providedIn: 'root' });
849
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SEOService, decorators: [{
786
850
  type: Injectable,
787
851
  args: [{
788
852
  providedIn: 'root',
@@ -790,16 +854,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
790
854
  }], ctorParameters: function () { return [{ type: i1.Title }, { type: i1.Meta }]; } });
791
855
 
792
856
  class ThemeService {
793
- constructor(storageService) {
794
- this.storageService = storageService;
795
- this._theme = new BehaviorSubject('light');
796
- // Load from storage
797
- this.theme = this.storageService.load('theme');
798
- // Use system theme if no theme is set
799
- if (!this.theme) {
800
- this.checkSystemTheme();
801
- }
802
- }
803
857
  get theme() {
804
858
  return this._theme.value;
805
859
  }
@@ -810,6 +864,16 @@ class ThemeService {
810
864
  get themeObservable() {
811
865
  return this._theme.asObservable();
812
866
  }
867
+ constructor(storageService) {
868
+ this.storageService = storageService;
869
+ this._theme = new BehaviorSubject('light');
870
+ // Load from storage
871
+ this.theme = this.storageService.load('theme');
872
+ // Use system theme if no theme is set
873
+ if (!this.theme) {
874
+ this.checkSystemTheme();
875
+ }
876
+ }
813
877
  /**
814
878
  * Check theme from system
815
879
  */
@@ -819,9 +883,9 @@ class ThemeService {
819
883
  }
820
884
  }
821
885
  }
822
- ThemeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ThemeService, deps: [{ token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
823
- ThemeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ThemeService, providedIn: 'root' });
824
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ThemeService, decorators: [{
886
+ ThemeService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ThemeService, deps: [{ token: i2.StorageService }], target: i0.ɵɵFactoryTarget.Injectable });
887
+ ThemeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ThemeService, providedIn: 'root' });
888
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ThemeService, decorators: [{
825
889
  type: Injectable,
826
890
  args: [{
827
891
  providedIn: 'root',
@@ -831,6 +895,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
831
895
  /**
832
896
  * Exports for public API
833
897
  */
898
+ // Module
834
899
 
835
900
  /**
836
901
  * Generated bundle index. Do not edit.
@@ -838,4 +903,3 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
838
903
 
839
904
  export { AuthGuard, AutoUnsubscribe, BaseModule, CanDeactivateGuard, DateAgoPipe, FullscreenService, LazyLoadDirective, LogoutGuard, MatchHeightDirective, ResizableDirective, SEOService, SafeHtmlPipe, ThemeService, apolloOptionsFactory };
840
905
  //# sourceMappingURL=lenne.tech-ng-base.mjs.map
841
- //# sourceMappingURL=lenne.tech-ng-base.mjs.map