ngx-cho-common 1.0.14 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,15 +13,41 @@ NgxChoCommon is a foundational library that contains:
13
13
  - Configuration interfaces
14
14
  - Shared pipes and guards
15
15
 
16
- ## Dependencies
17
-
18
- This library has **no dependencies** on other workspace libraries and should be built first.
19
-
20
- ## Installation
21
-
22
- ```bash
23
- npm install ngx-cho-common
24
- ```
16
+ ## Dependencies
17
+
18
+ This library has **no dependencies** on other workspace libraries and should be built first.
19
+
20
+ Peer dependencies:
21
+ - `@angular/common`
22
+ - `@angular/core`
23
+ - `@js-joda/core`
24
+ - `file-saver`
25
+ - `moment`
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ npm install ngx-cho-common moment
31
+ ```
32
+
33
+ ## Breaking Changes
34
+
35
+ `ChoModalService` has been removed. Applications should replace it with an app-local dialog implementation, such as a native dialog or a PrimeNG dialog/drawer. This library no longer depends on ng-bootstrap.
36
+
37
+ `ngx-spinner` and `ngx-toastr` peer dependencies have been removed. Applications that want CHO guards to show notifications should provide the optional `CHO_NOTIFICATION_ADAPTER` token.
38
+
39
+ ## Optional UI Adapters
40
+
41
+ ```typescript
42
+ import {
43
+ CHO_LOADING_ADAPTER,
44
+ CHO_NOTIFICATION_ADAPTER,
45
+ ChoLoadingAdapter,
46
+ ChoNotificationAdapter,
47
+ } from 'ngx-cho-common';
48
+ ```
49
+
50
+ `CHO_NOTIFICATION_ADAPTER` is used by `ChoFeatureGuard` when a feature is disabled. `CHO_LOADING_ADAPTER` is exported for sibling CHO libraries, such as `ngx-cho-security`, to show app-owned loading UI. Both tokens are optional; the library still works when they are not provided.
25
51
 
26
52
  ## Build
27
53
 
@@ -51,12 +77,12 @@ ng generate directive directive-name --project ngx-cho-common
51
77
  ng test ngx-cho-common
52
78
  ```
53
79
 
54
- ## Publishing
55
-
56
- 1. **Update version** in `projects/ngx-cho-common/package.json`
57
- 2. **Build the library**:
58
- ```bash
59
- ng build ngx-cho-common --configuration production
80
+ ## Publishing
81
+
82
+ 1. **Update version** in `projects/ngx-cho-common/package.json`. Use a major version for the modal-service and UI dependency removal.
83
+ 2. **Build the library**:
84
+ ```bash
85
+ ng build ngx-cho-common --configuration production
60
86
  ```
61
87
  3. **Publish to npm**:
62
88
  ```bash
@@ -0,0 +1,4 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export const CHO_NOTIFICATION_ADAPTER = new InjectionToken('CHO_NOTIFICATION_ADAPTER');
3
+ export const CHO_LOADING_ADAPTER = new InjectionToken('CHO_LOADING_ADAPTER');
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLXVpLWFkYXB0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWNoby1jb21tb24vc3JjL2xpYi9hZGFwdGVycy9jaG8tdWktYWRhcHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQU0vQyxNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLGNBQWMsQ0FDdEQsMEJBQTBCLENBQzdCLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDakQscUJBQXFCLENBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENob05vdGlmaWNhdGlvbkFkYXB0ZXIge1xuICAgIGVycm9yKG1lc3NhZ2U6IHN0cmluZywgdGl0bGU/OiBzdHJpbmcpOiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQ0hPX05PVElGSUNBVElPTl9BREFQVEVSID0gbmV3IEluamVjdGlvblRva2VuPENob05vdGlmaWNhdGlvbkFkYXB0ZXI+KFxuICAgICdDSE9fTk9USUZJQ0FUSU9OX0FEQVBURVInXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENob0xvYWRpbmdBZGFwdGVyIHtcbiAgICBzaG93KCk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIGhpZGUoKTogdm9pZCB8IFByb21pc2U8dm9pZD47XG59XG5cbmV4cG9ydCBjb25zdCBDSE9fTE9BRElOR19BREFQVEVSID0gbmV3IEluamVjdGlvblRva2VuPENob0xvYWRpbmdBZGFwdGVyPihcbiAgICAnQ0hPX0xPQURJTkdfQURBUFRFUidcbik7XG4iXX0=
@@ -1,13 +1,13 @@
1
- import { Injectable } from '@angular/core';
1
+ import { Inject, Injectable, Optional } from '@angular/core';
2
+ import { CHO_NOTIFICATION_ADAPTER, } from '../adapters/cho-ui-adapters';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../services/cho-feature.service";
4
5
  import * as i2 from "../services/cho-navigation.service";
5
- import * as i3 from "ngx-toastr";
6
6
  export class ChoFeatureGuard {
7
- constructor(featureService, navigationService, toastr) {
7
+ constructor(featureService, navigationService, notificationAdapter) {
8
8
  this.featureService = featureService;
9
9
  this.navigationService = navigationService;
10
- this.toastr = toastr;
10
+ this.notificationAdapter = notificationAdapter;
11
11
  }
12
12
  async canActivate(route) {
13
13
  const routeFeature = route.data['feature'];
@@ -16,17 +16,22 @@ export class ChoFeatureGuard {
16
16
  }
17
17
  await this.featureService.checkEnabledFeatures();
18
18
  if (!this.featureService.checkFeatureIsEnabled(routeFeature)) {
19
- this.toastr.error("Oops! It doesn't look like this feature has been enabled.");
19
+ this.notificationAdapter?.error("Oops! It doesn't look like this feature has been enabled.");
20
20
  this.navigationService.goBack();
21
21
  return false;
22
22
  }
23
23
  return true;
24
24
  }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, deps: [{ token: i1.ChoFeatureService }, { token: i2.ChoNavigationService }, { token: i3.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
25
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, deps: [{ token: i1.ChoFeatureService }, { token: i2.ChoNavigationService }, { token: CHO_NOTIFICATION_ADAPTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
26
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, providedIn: 'root' }); }
27
27
  }
28
28
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{ providedIn: 'root' }]
31
- }], ctorParameters: () => [{ type: i1.ChoFeatureService }, { type: i2.ChoNavigationService }, { type: i3.ToastrService }] });
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWZlYXR1cmUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2d1YXJkcy9jaG8tZmVhdHVyZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVEzQyxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUNxQixjQUFpQyxFQUNqQyxpQkFBdUMsRUFDdkMsTUFBcUI7UUFGckIsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFDdkMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUN2QyxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUE2QjtRQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBVyxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1lBRS9FLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVoQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0F6QlEsZUFBZTttSEFBZixlQUFlLGNBREYsTUFBTTs7NEZBQ25CLGVBQWU7a0JBRDNCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuXHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgfSBmcm9tICduZ3gtdG9hc3RyJztcclxuaW1wb3J0IHsgQ2hvRmVhdHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jaG8tZmVhdHVyZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hvTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jaG8tbmF2aWdhdGlvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDaG9GZWF0dXJlR3VhcmQge1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlU2VydmljZTogQ2hvRmVhdHVyZVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBuYXZpZ2F0aW9uU2VydmljZTogQ2hvTmF2aWdhdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSB0b2FzdHI6IFRvYXN0clNlcnZpY2VcclxuICAgICkge31cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgICAgICBjb25zdCByb3V0ZUZlYXR1cmUgPSByb3V0ZS5kYXRhWydmZWF0dXJlJ10gYXMgc3RyaW5nO1xyXG5cclxuICAgICAgICBpZiAoIXJvdXRlRmVhdHVyZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGF3YWl0IHRoaXMuZmVhdHVyZVNlcnZpY2UuY2hlY2tFbmFibGVkRmVhdHVyZXMoKTtcclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLmZlYXR1cmVTZXJ2aWNlLmNoZWNrRmVhdHVyZUlzRW5hYmxlZChyb3V0ZUZlYXR1cmUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiT29wcyEgSXQgZG9lc24ndCBsb29rIGxpa2UgdGhpcyBmZWF0dXJlIGhhcyBiZWVuIGVuYWJsZWQuXCIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nb0JhY2soKTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
31
+ }], ctorParameters: () => [{ type: i1.ChoFeatureService }, { type: i2.ChoNavigationService }, { type: undefined, decorators: [{
32
+ type: Optional
33
+ }, {
34
+ type: Inject,
35
+ args: [CHO_NOTIFICATION_ADAPTER]
36
+ }] }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWZlYXR1cmUuZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL2d1YXJkcy9jaG8tZmVhdHVyZS5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUNILHdCQUF3QixHQUUzQixNQUFNLDZCQUE2QixDQUFDOzs7O0FBS3JDLE1BQU0sT0FBTyxlQUFlO0lBQ3hCLFlBQ3FCLGNBQWlDLEVBQ2pDLGlCQUF1QyxFQUd2QyxtQkFBa0Q7UUFKbEQsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUFHdkMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUErQjtJQUNwRSxDQUFDO0lBRUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUE2QjtRQUNsRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBVyxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNoQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFFakQsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUMzRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUMzQiwyREFBMkQsQ0FDOUQsQ0FBQztZQUVGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUVoQyxPQUFPLEtBQUssQ0FBQztRQUNqQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzsrR0E3QlEsZUFBZSx1RkFLWix3QkFBd0I7bUhBTDNCLGVBQWUsY0FERixNQUFNOzs0RkFDbkIsZUFBZTtrQkFEM0IsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQUt6QixRQUFROzswQkFDUixNQUFNOzJCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge1xuICAgIENIT19OT1RJRklDQVRJT05fQURBUFRFUixcbiAgICBDaG9Ob3RpZmljYXRpb25BZGFwdGVyLFxufSBmcm9tICcuLi9hZGFwdGVycy9jaG8tdWktYWRhcHRlcnMnO1xuaW1wb3J0IHsgQ2hvRmVhdHVyZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9jaG8tZmVhdHVyZS5zZXJ2aWNlJztcbmltcG9ydCB7IENob05hdmlnYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvY2hvLW5hdmlnYXRpb24uc2VydmljZSc7XG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIENob0ZlYXR1cmVHdWFyZCB7XHJcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBmZWF0dXJlU2VydmljZTogQ2hvRmVhdHVyZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgbmF2aWdhdGlvblNlcnZpY2U6IENob05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KENIT19OT1RJRklDQVRJT05fQURBUFRFUilcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBub3RpZmljYXRpb25BZGFwdGVyOiBDaG9Ob3RpZmljYXRpb25BZGFwdGVyIHwgbnVsbFxuICAgICkge31cblxyXG4gICAgcHVibGljIGFzeW5jIGNhbkFjdGl2YXRlKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICAgICAgY29uc3Qgcm91dGVGZWF0dXJlID0gcm91dGUuZGF0YVsnZmVhdHVyZSddIGFzIHN0cmluZztcclxuXHJcbiAgICAgICAgaWYgKCFyb3V0ZUZlYXR1cmUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLmZlYXR1cmVTZXJ2aWNlLmNoZWNrRW5hYmxlZEZlYXR1cmVzKCk7XHJcblxuICAgICAgICBpZiAoIXRoaXMuZmVhdHVyZVNlcnZpY2UuY2hlY2tGZWF0dXJlSXNFbmFibGVkKHJvdXRlRmVhdHVyZSkpIHtcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uQWRhcHRlcj8uZXJyb3IoXG4gICAgICAgICAgICAgICAgXCJPb3BzISBJdCBkb2Vzbid0IGxvb2sgbGlrZSB0aGlzIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZC5cIlxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uU2VydmljZS5nb0JhY2soKTtcblxyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -14,11 +14,11 @@ export class ChoDateService {
14
14
  return items;
15
15
  }
16
16
  getYearItems(startYear, endYear) {
17
- startYear = startYear || moment().year();
18
- endYear = endYear || moment().year();
17
+ const resolvedStartYear = startYear || moment().year();
18
+ const resolvedEndYear = endYear || moment().year();
19
19
  const items = [];
20
- let i = startYear;
21
- while (i <= endYear) {
20
+ let i = resolvedStartYear;
21
+ while (i <= resolvedEndYear) {
22
22
  items.push({ value: i, name: i.toString() });
23
23
  i++;
24
24
  }
@@ -37,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
37
37
  type: Injectable,
38
38
  args: [{ providedIn: 'root' }]
39
39
  }] });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWRhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvc2VydmljZXMvY2hvLWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7QUFLNUIsTUFBTSxPQUFPLGNBQWM7SUFDaEIsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUU7UUFDOUMsTUFBTSxLQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBRW5CLE9BQU8sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQyxFQUFFLENBQUM7UUFDUixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFrQixFQUFFLE9BQWdCO1FBQ3BELFNBQVMsR0FBRyxTQUFTLElBQUksTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsT0FBTyxHQUFHLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVyQyxNQUFNLEtBQUssR0FBNEIsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUVsQixPQUFPLENBQUMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM3QyxDQUFDLEVBQUUsQ0FBQztRQUNSLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQXlCO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU0sV0FBVyxDQUFDLEtBQXlCO1FBQ3hDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7K0dBcENRLGNBQWM7bUhBQWQsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xyXG5cclxuaW1wb3J0IHsgTmFtZVZhbHVlSXRlbSB9IGZyb20gJy4uL3R5cGVzL25hbWUtdmFsdWUtaXRlbS50eXBlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBDaG9EYXRlU2VydmljZSB7XHJcbiAgICBwdWJsaWMgZ2V0TW9udGhJdGVtcyhzdGFydE1vbnRoID0gMSwgZW5kTW9udGggPSAxMik6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdIHtcclxuICAgICAgICBjb25zdCBpdGVtczogTmFtZVZhbHVlSXRlbTxudW1iZXI+W10gPSBbXTtcclxuICAgICAgICBjb25zdCBkID0gbW9tZW50KCkuc3RhcnRPZigneWVhcicpO1xyXG4gICAgICAgIGxldCBpID0gc3RhcnRNb250aDtcclxuXHJcbiAgICAgICAgd2hpbGUgKGkgPD0gZW5kTW9udGgpIHtcclxuICAgICAgICAgICAgZC5zZXQoJ21vbnRoJywgaSAtIDEpO1xyXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHsgdmFsdWU6IGksIG5hbWU6IGQuZm9ybWF0KCdNTU1NJykgfSk7XHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0WWVhckl0ZW1zKHN0YXJ0WWVhcj86IG51bWJlciwgZW5kWWVhcj86IG51bWJlcik6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdIHtcclxuICAgICAgICBzdGFydFllYXIgPSBzdGFydFllYXIgfHwgbW9tZW50KCkueWVhcigpO1xyXG4gICAgICAgIGVuZFllYXIgPSBlbmRZZWFyIHx8IG1vbWVudCgpLnllYXIoKTtcclxuXHJcbiAgICAgICAgY29uc3QgaXRlbXM6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdID0gW107XHJcbiAgICAgICAgbGV0IGkgPSBzdGFydFllYXI7XHJcblxyXG4gICAgICAgIHdoaWxlIChpIDw9IGVuZFllYXIpIHtcclxuICAgICAgICAgICAgaXRlbXMucHVzaCh7IHZhbHVlOiBpLCBuYW1lOiBpLnRvU3RyaW5nKCkgfSk7XHJcbiAgICAgICAgICAgIGkrKztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtcztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdG9EYXRlU3RyaW5nKGlucHV0OiBtb21lbnQuTW9tZW50SW5wdXQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoaW5wdXQpLmZvcm1hdCgneXl5eS1NTS1ERCcpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0lTT1N0cmluZyhpbnB1dDogbW9tZW50Lk1vbWVudElucHV0KTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gbW9tZW50KGlucHV0KS50b0lTT1N0cmluZygpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLWRhdGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9saWIvc2VydmljZXMvY2hvLWRhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7QUFLNUIsTUFBTSxPQUFPLGNBQWM7SUFDaEIsYUFBYSxDQUFDLFVBQVUsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEVBQUU7UUFDOUMsTUFBTSxLQUFLLEdBQTRCLEVBQUUsQ0FBQztRQUMxQyxNQUFNLENBQUMsR0FBRyxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDO1FBRW5CLE9BQU8sQ0FBQyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDakQsQ0FBQyxFQUFFLENBQUM7UUFDUixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLFlBQVksQ0FBQyxTQUFrQixFQUFFLE9BQWdCO1FBQ3BELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxJQUFJLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELE1BQU0sZUFBZSxHQUFHLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUVuRCxNQUFNLEtBQUssR0FBNEIsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBRTFCLE9BQU8sQ0FBQyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQzFCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzdDLENBQUMsRUFBRSxDQUFDO1FBQ1IsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFFTSxZQUFZLENBQUMsS0FBeUI7UUFDekMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFTSxXQUFXLENBQUMsS0FBeUI7UUFDeEMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkMsQ0FBQzsrR0FwQ1EsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XHJcblxyXG5pbXBvcnQgeyBOYW1lVmFsdWVJdGVtIH0gZnJvbSAnLi4vdHlwZXMvbmFtZS12YWx1ZS1pdGVtLnR5cGUnO1xyXG5cclxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcclxuZXhwb3J0IGNsYXNzIENob0RhdGVTZXJ2aWNlIHtcclxuICAgIHB1YmxpYyBnZXRNb250aEl0ZW1zKHN0YXJ0TW9udGggPSAxLCBlbmRNb250aCA9IDEyKTogTmFtZVZhbHVlSXRlbTxudW1iZXI+W10ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1zOiBOYW1lVmFsdWVJdGVtPG51bWJlcj5bXSA9IFtdO1xyXG4gICAgICAgIGNvbnN0IGQgPSBtb21lbnQoKS5zdGFydE9mKCd5ZWFyJyk7XHJcbiAgICAgICAgbGV0IGkgPSBzdGFydE1vbnRoO1xyXG5cclxuICAgICAgICB3aGlsZSAoaSA8PSBlbmRNb250aCkge1xyXG4gICAgICAgICAgICBkLnNldCgnbW9udGgnLCBpIC0gMSk7XHJcbiAgICAgICAgICAgIGl0ZW1zLnB1c2goeyB2YWx1ZTogaSwgbmFtZTogZC5mb3JtYXQoJ01NTU0nKSB9KTtcclxuICAgICAgICAgICAgaSsrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxuXG4gICAgcHVibGljIGdldFllYXJJdGVtcyhzdGFydFllYXI/OiBudW1iZXIsIGVuZFllYXI/OiBudW1iZXIpOiBOYW1lVmFsdWVJdGVtPG51bWJlcj5bXSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkU3RhcnRZZWFyID0gc3RhcnRZZWFyIHx8IG1vbWVudCgpLnllYXIoKTtcbiAgICAgICAgY29uc3QgcmVzb2x2ZWRFbmRZZWFyID0gZW5kWWVhciB8fCBtb21lbnQoKS55ZWFyKCk7XG5cbiAgICAgICAgY29uc3QgaXRlbXM6IE5hbWVWYWx1ZUl0ZW08bnVtYmVyPltdID0gW107XG4gICAgICAgIGxldCBpID0gcmVzb2x2ZWRTdGFydFllYXI7XG5cbiAgICAgICAgd2hpbGUgKGkgPD0gcmVzb2x2ZWRFbmRZZWFyKSB7XG4gICAgICAgICAgICBpdGVtcy5wdXNoKHsgdmFsdWU6IGksIG5hbWU6IGkudG9TdHJpbmcoKSB9KTtcbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgfVxuXHJcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0b0RhdGVTdHJpbmcoaW5wdXQ6IG1vbWVudC5Nb21lbnRJbnB1dCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIG1vbWVudChpbnB1dCkuZm9ybWF0KCd5eXl5LU1NLUREJyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHRvSVNPU3RyaW5nKGlucHV0OiBtb21lbnQuTW9tZW50SW5wdXQpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBtb21lbnQoaW5wdXQpLnRvSVNPU3RyaW5nKCk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -2,6 +2,7 @@
2
2
  * Public API Surface of ngx-cho-common
3
3
  */
4
4
  export { CHO_COMMON_CONFIG } from './ngx-cho-common.config';
5
+ export { CHO_LOADING_ADAPTER, CHO_NOTIFICATION_ADAPTER, } from './lib/adapters/cho-ui-adapters';
5
6
  export { ChoAutoFocusDirective } from './lib/directives/cho-auto-focus.directive';
6
7
  export { ChoFormFocusDirective } from './lib/directives/cho-form-focus.directive';
7
8
  export { ChoKeyPressEnterDirective } from './lib/directives/cho-key-press-enter.directive';
@@ -23,10 +24,9 @@ export { ChoErrorService } from './lib/services/cho-error.service';
23
24
  export { ChoFeatureService } from './lib/services/cho-feature.service';
24
25
  export { ChoIntervalService, IntervalTimer, FireImmediately, } from './lib/services/cho-interval.service';
25
26
  export { ChoLocalStorageService } from './lib/services/cho-local-storage.service';
26
- export { ChoModalService } from './lib/services/cho-modal.service';
27
27
  export { ChoNavigationService } from './lib/services/cho-navigation.service';
28
28
  export { ChoObjectService } from './lib/services/cho-object.service';
29
29
  export { ChoRestClientService } from './lib/services/cho-rest-client.service';
30
30
  export { ChoRouteParamService } from './lib/services/cho-route-param.service';
31
31
  export { ChoSessionStorageService } from './lib/services/cho-session-storage.service';
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBRTdFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBRTdGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQVloRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDekUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbkUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDOUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNqRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDdkUsT0FBTyxFQUNILGtCQUFrQixFQUNsQixhQUFhLEVBQ2IsZUFBZSxHQUNsQixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBuZ3gtY2hvLWNvbW1vblxyXG4gKi9cclxuZXhwb3J0IHsgQ0hPX0NPTU1PTl9DT05GSUcsIENob0NvbW1vbkNvbmZpZyB9IGZyb20gJy4vbmd4LWNoby1jb21tb24uY29uZmlnJztcclxuXHJcbmV4cG9ydCB7IENob0F1dG9Gb2N1c0RpcmVjdGl2ZSB9IGZyb20gJy4vbGliL2RpcmVjdGl2ZXMvY2hvLWF1dG8tZm9jdXMuZGlyZWN0aXZlJztcclxuZXhwb3J0IHsgQ2hvRm9ybUZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8tZm9ybS1mb2N1cy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBDaG9LZXlQcmVzc0VudGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8ta2V5LXByZXNzLWVudGVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCB7IENob0tleVByZXNzRXNjYXBlRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8ta2V5LXByZXNzLWVzY2FwZS5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0IHsgQ2hvRmVhdHVyZUd1YXJkIH0gZnJvbSAnLi9saWIvZ3VhcmRzL2Noby1mZWF0dXJlLmd1YXJkJztcclxuZXhwb3J0IHsgQ2hvVW5zYXZlZENoYW5nZXNHdWFyZCB9IGZyb20gJy4vbGliL2d1YXJkcy9jaG8tdW5zYXZlZC1jaGFuZ2VzLmd1YXJkJztcclxuXHJcbmV4cG9ydCB7IElEZWFjdGl2YXRhYmxlIH0gZnJvbSAnLi9saWIvbW9kZWxzL2RlYWN0aXZhdGFibGUuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCB7IElQaG9uZUluZm8gfSBmcm9tICcuL2xpYi9tb2RlbHMvcGhvbmUtaW5mby5tb2RlbCc7XHJcbmV4cG9ydCB7IElOb3RlSW5mbyB9IGZyb20gJy4vbGliL21vZGVscy9ub3RlLWluZm8ubW9kZWwnO1xyXG5leHBvcnQgeyBJRW1haWxJbmZvIH0gZnJvbSAnLi9saWIvbW9kZWxzL2VtYWlsLWluZm8ubW9kZWwnO1xyXG5leHBvcnQgeyBJQ29udGFjdEluZm8gfSBmcm9tICcuL2xpYi9tb2RlbHMvY29udGFjdC1pbmZvLm1vZGVsJztcclxuZXhwb3J0IHsgQmFzaWNTZWFyY2hGaWx0ZXIgfSBmcm9tICcuL2xpYi9tb2RlbHMvYmFzaWMtc2VhcmNoLWZpbHRlci5tb2RlbCc7XHJcbmV4cG9ydCB7IEFwcEZpbGUgfSBmcm9tICcuL2xpYi9tb2RlbHMvYXBwLWZpbGUubW9kZWwnO1xyXG5leHBvcnQgeyBJQWRkcmVzcyB9IGZyb20gJy4vbGliL21vZGVscy9hZGRyZXNzLm1vZGVsJztcclxuZXhwb3J0IHsgSU5vdGUgfSBmcm9tICcuL2xpYi9tb2RlbHMvbm90ZS5tb2RlbCc7XHJcbmV4cG9ydCB7IFV1aWQgfSBmcm9tICcuL2xpYi9tb2RlbHMvdXVpZC5tb2RlbCc7XHJcblxyXG5leHBvcnQgeyBDaG9BY3RpdmVGaWx0ZXJQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWFjdGl2ZS1maWx0ZXIucGlwZSc7XHJcbmV4cG9ydCB7IENob0Jvb2xlYW5QaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWJvb2xlYW4ucGlwZSc7XHJcbmV4cG9ydCB7IENob0RhdGVQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWRhdGUucGlwZSc7XHJcbmV4cG9ydCB7IENob0ZpbHRlclBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9jaG8tZmlsdGVyLnBpcGUnO1xyXG5leHBvcnQgeyBDaG9Gb3JtYXRLZXlQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWZvcm1hdC1rZXkucGlwZSc7XHJcbmV4cG9ydCB7IENob0xvd2VyS2ViYWJDYXNlUGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2Noby1sb3dlci1rZWJhYi1jYXNlLnBpcGUnO1xyXG5leHBvcnQgeyBDaG9TdW1CeVBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9jaG8tc3VtLWJ5LnBpcGUnO1xyXG5leHBvcnQgeyBDaG9UZXh0RmlsdGVyUGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2Noby10ZXh0LWZpbHRlci5waXBlJztcclxuXHJcbmV4cG9ydCB7IENob0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLWRhdGUuc2VydmljZSc7XHJcbmV4cG9ydCB7IENob0Rvd25sb2FkU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1kb3dubG9hZC5zZXJ2aWNlJztcclxuZXhwb3J0IHsgQ2hvRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLWVycm9yLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBDaG9GZWF0dXJlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1mZWF0dXJlLnNlcnZpY2UnO1xyXG5leHBvcnQge1xyXG4gICAgQ2hvSW50ZXJ2YWxTZXJ2aWNlLFxyXG4gICAgSW50ZXJ2YWxUaW1lcixcclxuICAgIEZpcmVJbW1lZGlhdGVseSxcclxufSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8taW50ZXJ2YWwuc2VydmljZSc7XHJcbmV4cG9ydCB7IENob0xvY2FsU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8tbG9jYWwtc3RvcmFnZS5zZXJ2aWNlJztcclxuZXhwb3J0IHsgQ2hvTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLW1vZGFsLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBDaG9OYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1uYXZpZ2F0aW9uLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBDaG9PYmplY3RTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLW9iamVjdC5zZXJ2aWNlJztcclxuZXhwb3J0IHsgQ2hvUmVzdENsaWVudFNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8tcmVzdC1jbGllbnQuc2VydmljZSc7XHJcbmV4cG9ydCB7IENob1JvdXRlUGFyYW1TZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLXJvdXRlLXBhcmFtLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBDaG9TZXNzaW9uU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8tc2Vzc2lvbi1zdG9yYWdlLnNlcnZpY2UnO1xyXG5cclxuZXhwb3J0IHsgSW5kZXhhYmxlIH0gZnJvbSAnLi9saWIvdHlwZXMvaW5kZXhhYmxlLnR5cGUnO1xyXG5leHBvcnQgeyBOYW1lVmFsdWVJdGVtIH0gZnJvbSAnLi9saWIvdHlwZXMvbmFtZS12YWx1ZS1pdGVtLnR5cGUnO1xyXG4iXX0=
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25neC1jaG8tY29tbW9uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLHlCQUF5QixDQUFDO0FBRTdFLE9BQU8sRUFDSCxtQkFBbUIsRUFDbkIsd0JBQXdCLEdBRzNCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbEYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDM0YsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFFN0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBWWhGLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFckUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixlQUFlLEdBQ2xCLE1BQU0scUNBQXFDLENBQUM7QUFDN0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDbEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNENBQTRDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2Ygbmd4LWNoby1jb21tb25cclxuICovXHJcbmV4cG9ydCB7IENIT19DT01NT05fQ09ORklHLCBDaG9Db21tb25Db25maWcgfSBmcm9tICcuL25neC1jaG8tY29tbW9uLmNvbmZpZyc7XG5cbmV4cG9ydCB7XG4gICAgQ0hPX0xPQURJTkdfQURBUFRFUixcbiAgICBDSE9fTk9USUZJQ0FUSU9OX0FEQVBURVIsXG4gICAgQ2hvTG9hZGluZ0FkYXB0ZXIsXG4gICAgQ2hvTm90aWZpY2F0aW9uQWRhcHRlcixcbn0gZnJvbSAnLi9saWIvYWRhcHRlcnMvY2hvLXVpLWFkYXB0ZXJzJztcblxuZXhwb3J0IHsgQ2hvQXV0b0ZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8tYXV0by1mb2N1cy5kaXJlY3RpdmUnO1xuZXhwb3J0IHsgQ2hvRm9ybUZvY3VzRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8tZm9ybS1mb2N1cy5kaXJlY3RpdmUnO1xyXG5leHBvcnQgeyBDaG9LZXlQcmVzc0VudGVyRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8ta2V5LXByZXNzLWVudGVyLmRpcmVjdGl2ZSc7XHJcbmV4cG9ydCB7IENob0tleVByZXNzRXNjYXBlRGlyZWN0aXZlIH0gZnJvbSAnLi9saWIvZGlyZWN0aXZlcy9jaG8ta2V5LXByZXNzLWVzY2FwZS5kaXJlY3RpdmUnO1xyXG5cclxuZXhwb3J0IHsgQ2hvRmVhdHVyZUd1YXJkIH0gZnJvbSAnLi9saWIvZ3VhcmRzL2Noby1mZWF0dXJlLmd1YXJkJztcclxuZXhwb3J0IHsgQ2hvVW5zYXZlZENoYW5nZXNHdWFyZCB9IGZyb20gJy4vbGliL2d1YXJkcy9jaG8tdW5zYXZlZC1jaGFuZ2VzLmd1YXJkJztcclxuXHJcbmV4cG9ydCB7IElEZWFjdGl2YXRhYmxlIH0gZnJvbSAnLi9saWIvbW9kZWxzL2RlYWN0aXZhdGFibGUuaW50ZXJmYWNlJztcclxuXHJcbmV4cG9ydCB7IElQaG9uZUluZm8gfSBmcm9tICcuL2xpYi9tb2RlbHMvcGhvbmUtaW5mby5tb2RlbCc7XHJcbmV4cG9ydCB7IElOb3RlSW5mbyB9IGZyb20gJy4vbGliL21vZGVscy9ub3RlLWluZm8ubW9kZWwnO1xyXG5leHBvcnQgeyBJRW1haWxJbmZvIH0gZnJvbSAnLi9saWIvbW9kZWxzL2VtYWlsLWluZm8ubW9kZWwnO1xyXG5leHBvcnQgeyBJQ29udGFjdEluZm8gfSBmcm9tICcuL2xpYi9tb2RlbHMvY29udGFjdC1pbmZvLm1vZGVsJztcclxuZXhwb3J0IHsgQmFzaWNTZWFyY2hGaWx0ZXIgfSBmcm9tICcuL2xpYi9tb2RlbHMvYmFzaWMtc2VhcmNoLWZpbHRlci5tb2RlbCc7XHJcbmV4cG9ydCB7IEFwcEZpbGUgfSBmcm9tICcuL2xpYi9tb2RlbHMvYXBwLWZpbGUubW9kZWwnO1xyXG5leHBvcnQgeyBJQWRkcmVzcyB9IGZyb20gJy4vbGliL21vZGVscy9hZGRyZXNzLm1vZGVsJztcclxuZXhwb3J0IHsgSU5vdGUgfSBmcm9tICcuL2xpYi9tb2RlbHMvbm90ZS5tb2RlbCc7XHJcbmV4cG9ydCB7IFV1aWQgfSBmcm9tICcuL2xpYi9tb2RlbHMvdXVpZC5tb2RlbCc7XHJcblxyXG5leHBvcnQgeyBDaG9BY3RpdmVGaWx0ZXJQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWFjdGl2ZS1maWx0ZXIucGlwZSc7XHJcbmV4cG9ydCB7IENob0Jvb2xlYW5QaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWJvb2xlYW4ucGlwZSc7XHJcbmV4cG9ydCB7IENob0RhdGVQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWRhdGUucGlwZSc7XHJcbmV4cG9ydCB7IENob0ZpbHRlclBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9jaG8tZmlsdGVyLnBpcGUnO1xyXG5leHBvcnQgeyBDaG9Gb3JtYXRLZXlQaXBlIH0gZnJvbSAnLi9saWIvcGlwZXMvY2hvLWZvcm1hdC1rZXkucGlwZSc7XHJcbmV4cG9ydCB7IENob0xvd2VyS2ViYWJDYXNlUGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2Noby1sb3dlci1rZWJhYi1jYXNlLnBpcGUnO1xyXG5leHBvcnQgeyBDaG9TdW1CeVBpcGUgfSBmcm9tICcuL2xpYi9waXBlcy9jaG8tc3VtLWJ5LnBpcGUnO1xyXG5leHBvcnQgeyBDaG9UZXh0RmlsdGVyUGlwZSB9IGZyb20gJy4vbGliL3BpcGVzL2Noby10ZXh0LWZpbHRlci5waXBlJztcclxuXHJcbmV4cG9ydCB7IENob0RhdGVTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLWRhdGUuc2VydmljZSc7XHJcbmV4cG9ydCB7IENob0Rvd25sb2FkU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1kb3dubG9hZC5zZXJ2aWNlJztcclxuZXhwb3J0IHsgQ2hvRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLWVycm9yLnNlcnZpY2UnO1xyXG5leHBvcnQgeyBDaG9GZWF0dXJlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1mZWF0dXJlLnNlcnZpY2UnO1xyXG5leHBvcnQge1xuICAgIENob0ludGVydmFsU2VydmljZSxcbiAgICBJbnRlcnZhbFRpbWVyLFxuICAgIEZpcmVJbW1lZGlhdGVseSxcbn0gZnJvbSAnLi9saWIvc2VydmljZXMvY2hvLWludGVydmFsLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ2hvTG9jYWxTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1sb2NhbC1zdG9yYWdlLnNlcnZpY2UnO1xuZXhwb3J0IHsgQ2hvTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8tbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCB7IENob09iamVjdFNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8tb2JqZWN0LnNlcnZpY2UnO1xuZXhwb3J0IHsgQ2hvUmVzdENsaWVudFNlcnZpY2UgfSBmcm9tICcuL2xpYi9zZXJ2aWNlcy9jaG8tcmVzdC1jbGllbnQuc2VydmljZSc7XG5leHBvcnQgeyBDaG9Sb3V0ZVBhcmFtU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1yb3V0ZS1wYXJhbS5zZXJ2aWNlJztcbmV4cG9ydCB7IENob1Nlc3Npb25TdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL3NlcnZpY2VzL2Noby1zZXNzaW9uLXN0b3JhZ2Uuc2VydmljZSc7XHJcblxyXG5leHBvcnQgeyBJbmRleGFibGUgfSBmcm9tICcuL2xpYi90eXBlcy9pbmRleGFibGUudHlwZSc7XHJcbmV4cG9ydCB7IE5hbWVWYWx1ZUl0ZW0gfSBmcm9tICcuL2xpYi90eXBlcy9uYW1lLXZhbHVlLWl0ZW0udHlwZSc7XHJcbiJdfQ==
@@ -1,18 +1,19 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Directive, HostListener, EventEmitter, Output, Injectable, Inject, Pipe } from '@angular/core';
2
+ import { InjectionToken, Directive, HostListener, EventEmitter, Output, Injectable, Inject, Optional, Pipe } from '@angular/core';
3
3
  import { lastValueFrom, take, retry, BehaviorSubject, shareReplay } from 'rxjs';
4
4
  import * as i1 from '@angular/common/http';
5
5
  import { HttpHeaders, HttpParams } from '@angular/common/http';
6
6
  import * as i1$1 from '@angular/router';
7
7
  import { NavigationEnd } from '@angular/router';
8
8
  import * as i2 from '@angular/common';
9
- import * as i3 from 'ngx-toastr';
10
9
  import moment from 'moment';
11
10
  import { saveAs } from 'file-saver';
12
- import * as i1$2 from '@ng-bootstrap/ng-bootstrap';
13
11
 
14
12
  const CHO_COMMON_CONFIG = new InjectionToken('ChoCommonConfig');
15
13
 
14
+ const CHO_NOTIFICATION_ADAPTER = new InjectionToken('CHO_NOTIFICATION_ADAPTER');
15
+ const CHO_LOADING_ADAPTER = new InjectionToken('CHO_LOADING_ADAPTER');
16
+
16
17
  // from https://stackblitz.com/edit/angular-inline-edit?file=src%2Fapp%2Fautofocus.directive.ts
17
18
  class ChoAutoFocusDirective {
18
19
  constructor(elementRef) {
@@ -364,10 +365,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
364
365
  }], ctorParameters: () => [{ type: i1$1.Router }, { type: i2.Location }] });
365
366
 
366
367
  class ChoFeatureGuard {
367
- constructor(featureService, navigationService, toastr) {
368
+ constructor(featureService, navigationService, notificationAdapter) {
368
369
  this.featureService = featureService;
369
370
  this.navigationService = navigationService;
370
- this.toastr = toastr;
371
+ this.notificationAdapter = notificationAdapter;
371
372
  }
372
373
  async canActivate(route) {
373
374
  const routeFeature = route.data['feature'];
@@ -376,19 +377,24 @@ class ChoFeatureGuard {
376
377
  }
377
378
  await this.featureService.checkEnabledFeatures();
378
379
  if (!this.featureService.checkFeatureIsEnabled(routeFeature)) {
379
- this.toastr.error("Oops! It doesn't look like this feature has been enabled.");
380
+ this.notificationAdapter?.error("Oops! It doesn't look like this feature has been enabled.");
380
381
  this.navigationService.goBack();
381
382
  return false;
382
383
  }
383
384
  return true;
384
385
  }
385
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, deps: [{ token: ChoFeatureService }, { token: ChoNavigationService }, { token: i3.ToastrService }], target: i0.ɵɵFactoryTarget.Injectable }); }
386
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, deps: [{ token: ChoFeatureService }, { token: ChoNavigationService }, { token: CHO_NOTIFICATION_ADAPTER, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
386
387
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, providedIn: 'root' }); }
387
388
  }
388
389
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoFeatureGuard, decorators: [{
389
390
  type: Injectable,
390
391
  args: [{ providedIn: 'root' }]
391
- }], ctorParameters: () => [{ type: ChoFeatureService }, { type: ChoNavigationService }, { type: i3.ToastrService }] });
392
+ }], ctorParameters: () => [{ type: ChoFeatureService }, { type: ChoNavigationService }, { type: undefined, decorators: [{
393
+ type: Optional
394
+ }, {
395
+ type: Inject,
396
+ args: [CHO_NOTIFICATION_ADAPTER]
397
+ }] }] });
392
398
 
393
399
  class ChoUnsavedChangesGuard {
394
400
  canDeactivate(component) {
@@ -651,11 +657,11 @@ class ChoDateService {
651
657
  return items;
652
658
  }
653
659
  getYearItems(startYear, endYear) {
654
- startYear = startYear || moment().year();
655
- endYear = endYear || moment().year();
660
+ const resolvedStartYear = startYear || moment().year();
661
+ const resolvedEndYear = endYear || moment().year();
656
662
  const items = [];
657
- let i = startYear;
658
- while (i <= endYear) {
663
+ let i = resolvedStartYear;
664
+ while (i <= resolvedEndYear) {
659
665
  items.push({ value: i, name: i.toString() });
660
666
  i++;
661
667
  }
@@ -898,37 +904,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
898
904
  args: [{ providedIn: 'root' }]
899
905
  }] });
900
906
 
901
- class ChoModalService {
902
- constructor(ngbModal) {
903
- this.ngbModal = ngbModal;
904
- }
905
- async showModal(component, componentParameters, modalOptions = { backdrop: 'static' }) {
906
- const modal = this.ngbModal.open(component, modalOptions);
907
- const componentInstance = modal.componentInstance;
908
- Object.assign(componentInstance, componentParameters);
909
- let result;
910
- try {
911
- result = await modal.result;
912
- }
913
- catch (error) {
914
- result = null;
915
- if (error === undefined) {
916
- throw 'modal dismiss';
917
- }
918
- throw error;
919
- }
920
- return { result, componentInstance };
921
- }
922
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoModalService, deps: [{ token: i1$2.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable }); }
923
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoModalService, providedIn: 'root' }); }
924
- }
925
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoModalService, decorators: [{
926
- type: Injectable,
927
- args: [{
928
- providedIn: 'root',
929
- }]
930
- }], ctorParameters: () => [{ type: i1$2.NgbModal }] });
931
-
932
907
  class ChoRouteParamService {
933
908
  constructor(route) {
934
909
  this.route = route;
@@ -1014,5 +989,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
1014
989
  * Generated bundle index. Do not edit.
1015
990
  */
1016
991
 
1017
- export { CHO_COMMON_CONFIG, ChoActiveFilterPipe, ChoAutoFocusDirective, ChoBooleanPipe, ChoDatePipe, ChoDateService, ChoDownloadService, ChoErrorService, ChoFeatureGuard, ChoFeatureService, ChoFilterPipe, ChoFormFocusDirective, ChoFormatKeyPipe, ChoIntervalService, ChoKeyPressEnterDirective, ChoKeyPressEscapeDirective, ChoLocalStorageService, ChoLowerKebabCasePipe, ChoModalService, ChoNavigationService, ChoObjectService, ChoRestClientService, ChoRouteParamService, ChoSessionStorageService, ChoSumByPipe, ChoTextFilterPipe, ChoUnsavedChangesGuard, FireImmediately, IntervalTimer, Uuid };
992
+ export { CHO_COMMON_CONFIG, CHO_LOADING_ADAPTER, CHO_NOTIFICATION_ADAPTER, ChoActiveFilterPipe, ChoAutoFocusDirective, ChoBooleanPipe, ChoDatePipe, ChoDateService, ChoDownloadService, ChoErrorService, ChoFeatureGuard, ChoFeatureService, ChoFilterPipe, ChoFormFocusDirective, ChoFormatKeyPipe, ChoIntervalService, ChoKeyPressEnterDirective, ChoKeyPressEscapeDirective, ChoLocalStorageService, ChoLowerKebabCasePipe, ChoNavigationService, ChoObjectService, ChoRestClientService, ChoRouteParamService, ChoSessionStorageService, ChoSumByPipe, ChoTextFilterPipe, ChoUnsavedChangesGuard, FireImmediately, IntervalTimer, Uuid };
1018
993
  //# sourceMappingURL=ngx-cho-common.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-cho-common.mjs","sources":["../../../projects/ngx-cho-common/src/ngx-cho-common.config.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-auto-focus.directive.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-form-focus.directive.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-key-press-enter.directive.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-key-press-escape.directive.ts","../../../projects/ngx-cho-common/src/lib/services/cho-rest-client.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-feature.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-navigation.service.ts","../../../projects/ngx-cho-common/src/lib/guards/cho-feature.guard.ts","../../../projects/ngx-cho-common/src/lib/guards/cho-unsaved-changes.guard.ts","../../../projects/ngx-cho-common/src/lib/models/uuid.model.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-active-filter.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-boolean.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-date.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-filter.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-format-key.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-lower-kebab-case.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-sum-by.pipe.ts","../../../projects/ngx-cho-common/src/lib/services/cho-object.service.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-text-filter.pipe.ts","../../../projects/ngx-cho-common/src/lib/services/cho-date.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-download.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-error.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-interval.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-local-storage.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-modal.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-route-param.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-session-storage.service.ts","../../../projects/ngx-cho-common/src/public-api.ts","../../../projects/ngx-cho-common/src/ngx-cho-common.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ChoCommonConfig {\r\n webAppUrl: string;\r\n webApiUrl: string;\r\n}\r\n\r\nexport const CHO_COMMON_CONFIG = new InjectionToken<ChoCommonConfig>('ChoCommonConfig');\r\n","// from https://stackblitz.com/edit/angular-inline-edit?file=src%2Fapp%2Fautofocus.directive.ts\r\nimport { Directive, ElementRef, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choAutoFocus]',\r\n standalone: true,\r\n})\r\nexport class ChoAutoFocusDirective implements OnInit {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n}\r\n","// from https://timdeschryver.dev/blog/auto-focus-a-form-control-with-an-angular-directive\r\nimport { Directive, ElementRef, HostListener, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choFormFocus]',\r\n standalone: true,\r\n})\r\nexport class ChoFormFocusDirective implements AfterViewInit {\r\n focusables = ['input', 'select', 'textarea'];\r\n\r\n constructor(private element: ElementRef) {}\r\n\r\n ngAfterViewInit() {\r\n const input = this.element.nativeElement.querySelector(this.focusables.join(','));\r\n\r\n if (input) {\r\n input.focus();\r\n return;\r\n }\r\n\r\n // focus on first available button if no other focusable element\r\n const button = this.element.nativeElement.querySelector('button');\r\n if (button) {\r\n button.focus();\r\n }\r\n }\r\n\r\n @HostListener('submit')\r\n submit() {\r\n const input = this.element.nativeElement.querySelector(\r\n this.focusables.map(x => `${x}.ng-invalid`).join(',')\r\n );\r\n if (input) {\r\n input.focus();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choKeyPressEnter]',\r\n standalone: true,\r\n})\r\nexport class ChoKeyPressEnterDirective {\r\n @Output('appKeyPressEnter') emitter = new EventEmitter();\r\n\r\n @HostListener('window:keypress', ['$event'])\r\n keyEvent(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n this.emitter.emit();\r\n }\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choKeyPressEscape]',\r\n standalone: true,\r\n})\r\nexport class ChoKeyPressEscapeDirective {\r\n @Output('appKeyPressEscape') emitter = new EventEmitter();\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n keyEvent(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.emitter.emit();\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { lastValueFrom, Observable, retry, RetryConfig, take } from 'rxjs';\r\n\r\ntype RequestParameters = {\r\n body?: unknown;\r\n queryParameters?: {};\r\n apiVersion?: {};\r\n headers?: {};\r\n cacheLifetimeSeconds?: number;\r\n retry?: RetryConfig;\r\n showSpinner?: {};\r\n};\r\n\r\ntype DeleteRequestParameters = Omit<RequestParameters, 'body' | 'cacheLifetimeSeconds'>;\r\ntype GetRequestParameters = Omit<RequestParameters, 'body'>;\r\n\r\n@Injectable({ providedIn: 'any' })\r\nexport class ChoRestClientService {\r\n private readonly defaultRetry = { count: 0, delay: 1000 };\r\n\r\n constructor(private readonly httpClient: HttpClient) {}\r\n\r\n /**\r\n * Sends a delete request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public delete(url: string, options?: DeleteRequestParameters): Promise<void> {\r\n return lastValueFrom(this.request('DELETE', url, options));\r\n }\r\n\r\n /**\r\n * Retrieves data from the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public get<T>(url: string, options?: GetRequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('GET', url, options));\r\n }\r\n\r\n /**\r\n * Sends a patch request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public patch<T>(url: string, options?: RequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('PATCH', url, options));\r\n }\r\n\r\n /**\r\n * Sends a post request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public post<T>(url: string, options?: RequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('POST', url, options));\r\n }\r\n\r\n /**\r\n * Sends a put request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public put<T>(url: string, options?: RequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('PUT', url, options));\r\n }\r\n\r\n /**\r\n * Sends a request to the specified REST service\r\n *\r\n * @param method DELETE, GET, POST, PUT, or PATCH\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public request<T>(\r\n method: 'DELETE',\r\n url: string,\r\n options?: DeleteRequestParameters\r\n ): Observable<T>;\r\n public request<T>(method: 'GET', url: string, options?: GetRequestParameters): Observable<T>;\r\n public request<T>(\r\n method: 'POST' | 'PUT' | 'PATCH',\r\n url: string,\r\n options?: RequestParameters\r\n ): Observable<T>;\r\n\r\n public request<T>(\r\n method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT',\r\n url: string,\r\n options?: RequestParameters\r\n ): Observable<T> {\r\n return this.httpClient\r\n .request<T>(method, url, {\r\n body: options?.body ? JSON.stringify(options.body) : undefined,\r\n headers: this.createRequestHeaders(options),\r\n params: this.createRequestParams(options?.queryParameters),\r\n })\r\n .pipe(take(1), retry(options?.retry || this.defaultRetry));\r\n }\r\n\r\n /**\r\n *\r\n * @param url\r\n * @param options\r\n * @returns\r\n */\r\n public getResponse<T>(\r\n method: 'GET' | 'PATCH' | 'POST' | 'PUT',\r\n url: string,\r\n options?: RequestParameters\r\n ): Observable<HttpResponse<T>> {\r\n return this.httpClient\r\n .request<T>(method, url, {\r\n observe: 'response',\r\n body: options?.body ? JSON.stringify(options.body) : undefined,\r\n headers: this.createRequestHeaders(options),\r\n params: this.createRequestParams(options?.queryParameters),\r\n })\r\n .pipe(take(1), retry(options?.retry || this.defaultRetry));\r\n }\r\n\r\n /**\r\n * Creates request headers based on the provided options.\r\n *\r\n * @param options\r\n * @returns\r\n */\r\n private createRequestHeaders(options?: RequestParameters): HttpHeaders {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const headers: any = Object.assign(\r\n {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n options?.headers\r\n );\r\n\r\n if (options?.apiVersion) {\r\n const versionString = `; version=${options.apiVersion}`;\r\n\r\n headers.Accept += versionString;\r\n headers['Content-Type'] += versionString;\r\n }\r\n\r\n if (options?.showSpinner === false) {\r\n headers['x-spinner'] = 'false';\r\n }\r\n\r\n if (options?.cacheLifetimeSeconds) {\r\n headers['x-cache-ttl'] = options?.cacheLifetimeSeconds;\r\n }\r\n\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n /**\r\n * Converts one or more objects to an HttpParams object.\r\n *\r\n * @param sources The objects to convert\r\n * @returns\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private createRequestParams(...sources: any[]): HttpParams {\r\n let params = new HttpParams();\r\n\r\n for (const source of sources) {\r\n if (source == null) {\r\n continue;\r\n }\r\n\r\n for (const key of Object.keys(source)) {\r\n const value = source[key];\r\n\r\n if (value != null) {\r\n params = params.set(key, value.toString());\r\n }\r\n }\r\n }\r\n\r\n return params;\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ChoRestClientService } from './cho-rest-client.service';\r\nimport { CHO_COMMON_CONFIG, ChoCommonConfig } from '../../ngx-cho-common.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoFeatureService {\r\n public readonly featureStream = new BehaviorSubject<string[]>([]);\r\n\r\n private _enabledFeatures: string[] = [];\r\n private _isInitialized = false;\r\n private readonly routePrefix;\r\n\r\n constructor(\r\n @Inject(CHO_COMMON_CONFIG) private choCommonConfig: ChoCommonConfig,\r\n private readonly restClient: ChoRestClientService\r\n ) {\r\n this.routePrefix = `${this.choCommonConfig.webApiUrl}/common/features`;\r\n this.checkEnabledFeatures();\r\n }\r\n\r\n /**\r\n * Gets the enabled features.\r\n */\r\n get enabledFeatures(): string[] {\r\n return this._enabledFeatures;\r\n }\r\n\r\n /**\r\n * Sets the enabled features.\r\n */\r\n private set enabledFeatures(enabledFeatures: string[]) {\r\n this._enabledFeatures = enabledFeatures;\r\n this._isInitialized = true;\r\n\r\n this.featureStream.next(enabledFeatures);\r\n }\r\n\r\n /**\r\n * Gets whether features have been initialized\r\n */\r\n get isInitialized(): boolean {\r\n return this._isInitialized;\r\n }\r\n\r\n /**\r\n * Checks that the enabled features are set and returns the list.\r\n *\r\n * @param name\r\n * @returns\r\n */\r\n async checkEnabledFeatures(): Promise<string[]> {\r\n if (!this.isInitialized) {\r\n this.enabledFeatures = await this.restClient.get(`${this.routePrefix}/enabled`);\r\n }\r\n\r\n return this.enabledFeatures;\r\n }\r\n\r\n /**\r\n * Checks that the specified feature is enabled.\r\n *\r\n * @param name\r\n * @returns\r\n */\r\n checkFeatureIsEnabled(name: string): boolean {\r\n return this._enabledFeatures?.some(p => p === name);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { NavigationEnd, NavigationExtras, Params, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoNavigationService {\r\n private history: string[] = [];\r\n\r\n constructor(private router: Router, private location: Location) {\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.history.push(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public go(commands: any[], extras?: NavigationExtras): Promise<boolean> {\r\n return this.router.navigate(commands, extras);\r\n }\r\n\r\n public goBack(): void {\r\n this.goBackOrDefault('/');\r\n }\r\n\r\n // based on https://nils-mehlhorn.de/posts/angular-navigate-back-previous-page\r\n public goBackOrDefault(defaultUrl: string): void {\r\n if (this.history.length > 0) {\r\n this.history.pop();\r\n this.location.back();\r\n } else {\r\n this.router.navigateByUrl(defaultUrl);\r\n }\r\n }\r\n\r\n // based on https://medium.com/agilix/change-the-route-without-reloading-in-angular-7a4aa82a8d3e\r\n public replaceState(url: string, data: any = null): void {\r\n window.history.replaceState(data, '', url);\r\n }\r\n\r\n public setQueryParams(params: Params): void {\r\n this.router.navigate([], {\r\n queryParams: params,\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\n\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ChoFeatureService } from '../services/cho-feature.service';\r\nimport { ChoNavigationService } from '../services/cho-navigation.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoFeatureGuard {\r\n constructor(\r\n private readonly featureService: ChoFeatureService,\r\n private readonly navigationService: ChoNavigationService,\r\n private readonly toastr: ToastrService\r\n ) {}\r\n\r\n public async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {\r\n const routeFeature = route.data['feature'] as string;\r\n\r\n if (!routeFeature) {\r\n return true;\r\n }\r\n\r\n await this.featureService.checkEnabledFeatures();\r\n\r\n if (!this.featureService.checkFeatureIsEnabled(routeFeature)) {\r\n this.toastr.error(\"Oops! It doesn't look like this feature has been enabled.\");\r\n\r\n this.navigationService.goBack();\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IDeactivatable } from '../models/deactivatable.interface';\r\n\r\n@Injectable()\r\nexport class ChoUnsavedChangesGuard {\r\n component: IDeactivatable | undefined;\r\n route: ActivatedRouteSnapshot | undefined;\r\n\r\n canDeactivate(component: IDeactivatable): Observable<boolean> | Promise<boolean> | boolean {\r\n return component.onDeactivate ? component.onDeactivate() : true;\r\n }\r\n}\r\n","export class Uuid {\r\n public static create(): string {\r\n const bytes = crypto.getRandomValues(new Uint8Array(16));\r\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\r\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\r\n\r\n let index = 0;\r\n\r\n return (\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++])\r\n );\r\n }\r\n\r\n private static toHex(byte: number): string {\r\n return (0x100 | byte).toString(16).substr(1);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choActiveFilter',\r\n standalone: true,\r\n})\r\nexport class ChoActiveFilterPipe implements PipeTransform {\r\n transform(value: any[], property?: string): any[] {\r\n if (value?.length === 0) {\r\n return value;\r\n }\r\n\r\n const filteredItems: any[] = [];\r\n\r\n for (const item of value) {\r\n if (item[property || 'isActive']) {\r\n filteredItems.push(item);\r\n }\r\n }\r\n\r\n return filteredItems;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choBoolean',\r\n standalone: true,\r\n})\r\nexport class ChoBooleanPipe implements PipeTransform {\r\n transform(value: unknown): unknown {\r\n return value ? 'Yes' : 'No';\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choDate',\r\n standalone: true,\r\n})\r\nexport class ChoDatePipe implements PipeTransform {\r\n constructor(public datePipe: DatePipe) {}\r\n transform(\r\n value: Date | string | number,\r\n format?: string,\r\n timezone?: string,\r\n locale?: string\r\n ): string | null {\r\n switch (format ?? 'shortDate') {\r\n case 'short':\r\n format = 'MM/dd/yyyy hh:mm a';\r\n break;\r\n\r\n case 'shortDate':\r\n format = 'MM/dd/yyyy';\r\n break;\r\n }\r\n\r\n return this.datePipe.transform(value, format, timezone, locale);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choFilter',\r\n standalone: true,\r\n})\r\nexport class ChoFilterPipe implements PipeTransform {\r\n transform(items: any[], callback: (item: any) => boolean): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n return items.filter(item => callback(item));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choFormatKey',\r\n standalone: true,\r\n})\r\nexport class ChoFormatKeyPipe implements PipeTransform {\r\n transform(key: string): string {\r\n let result = '';\r\n const tokenized = key.split(/(?=[A-Z])/);\r\n\r\n tokenized.forEach(item => {\r\n const uppercase = item.charAt(0).toUpperCase() + item.slice(1);\r\n result += uppercase + ' ';\r\n });\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choLowerKebabCase',\r\n standalone: true,\r\n})\r\nexport class ChoLowerKebabCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n //take string and convert to lower kebab case\r\n return value\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choSumBy',\r\n standalone: true,\r\n})\r\nexport class ChoSumByPipe implements PipeTransform {\r\n transform(items: any[], attr: string): any {\r\n return items.reduce((a, b) => a + (b[attr] || 0), 0);\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoObjectService {\r\n public getNestedPropertyValue(obj: unknown, property: string): unknown {\r\n return property.split('.').reduce((acc, key) => acc && acc[key], obj);\r\n }\r\n\r\n public toValueObject(obj: object): object {\r\n const result = Object.getOwnPropertyNames(obj).reduce((p, key) => {\r\n if (obj[key]) {\r\n p[key] = obj[key];\r\n }\r\n return p;\r\n }, new Object());\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Convert Object to HttpParams\r\n * @param {object} obj\r\n * @returns {HttpParams}\r\n * see: https://stackoverflow.com/questions/45210406/angular-4-3-httpclient-set-params\r\n */\r\n public toHttpParams(obj: object): HttpParams {\r\n const temp = Object.getOwnPropertyNames(obj).reduce(\r\n (p, key) => (obj[key] == null || obj[key].length === 0 ? p : p.set(key, obj[key])),\r\n new HttpParams()\r\n );\r\n\r\n return temp;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ChoObjectService } from '../services/cho-object.service';\r\n\r\n@Pipe({\r\n name: 'choTextFilter',\r\n standalone: true,\r\n})\r\nexport class ChoTextFilterPipe implements PipeTransform {\r\n constructor(private readonly objectService: ChoObjectService) {}\r\n\r\n transform(value: any[], filterString: string | null | undefined, properties: string[]): any[] {\r\n if (value?.length === 0 || !filterString || !properties?.length) {\r\n return value;\r\n }\r\n\r\n filterString = filterString.toLowerCase();\r\n\r\n return value.filter(item => {\r\n for (const property of properties) {\r\n const propertyValue = property.includes('.')\r\n ? this.objectService.getNestedPropertyValue(item, property)\r\n : item[property];\r\n\r\n if (\r\n propertyValue &&\r\n propertyValue.toString().toLowerCase().includes(filterString)\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\n\r\nimport { NameValueItem } from '../types/name-value-item.type';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoDateService {\r\n public getMonthItems(startMonth = 1, endMonth = 12): NameValueItem<number>[] {\r\n const items: NameValueItem<number>[] = [];\r\n const d = moment().startOf('year');\r\n let i = startMonth;\r\n\r\n while (i <= endMonth) {\r\n d.set('month', i - 1);\r\n items.push({ value: i, name: d.format('MMMM') });\r\n i++;\r\n }\r\n\r\n return items;\r\n }\r\n\r\n public getYearItems(startYear?: number, endYear?: number): NameValueItem<number>[] {\r\n startYear = startYear || moment().year();\r\n endYear = endYear || moment().year();\r\n\r\n const items: NameValueItem<number>[] = [];\r\n let i = startYear;\r\n\r\n while (i <= endYear) {\r\n items.push({ value: i, name: i.toString() });\r\n i++;\r\n }\r\n\r\n return items;\r\n }\r\n\r\n public toDateString(input: moment.MomentInput): string {\r\n return moment(input).format('yyyy-MM-DD');\r\n }\r\n\r\n public toISOString(input: moment.MomentInput): string {\r\n return moment(input).toISOString();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Observable, shareReplay } from 'rxjs';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Injectable({ providedIn: 'any' })\r\nexport class ChoDownloadService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n private octetStreamMime = 'application/octet-stream';\r\n\r\n public downloadFile(url: string, params?: HttpParams): Observable<HttpResponse<ArrayBuffer>> {\r\n const download$ = this.httpClient\r\n .get(url, {\r\n responseType: 'arraybuffer',\r\n observe: 'response',\r\n params: params,\r\n })\r\n .pipe(shareReplay());\r\n\r\n download$.subscribe(r => this.processDownload(r));\r\n\r\n return download$;\r\n }\r\n\r\n private processDownload(response: HttpResponse<ArrayBuffer>): void {\r\n const filename = this.getFileNameFromResponse(response);\r\n const contentType = response.headers.get('content-type') || this.octetStreamMime;\r\n\r\n if (response.body) {\r\n const blob = new Blob([response.body], { type: contentType });\r\n saveAs(blob, filename);\r\n }\r\n }\r\n\r\n private getFileNameFromResponse(response: HttpResponse<ArrayBuffer>): string {\r\n // attempt to get from response headers\r\n let fileName = response.headers.get('x-filename') || response.headers.get('filename');\r\n\r\n if (!fileName) {\r\n // attempt to get from content disposition\r\n const disposition = response.headers.get('content-disposition');\r\n\r\n if (disposition) {\r\n fileName = disposition.split(';')[1].split('=')[1].replace(/\"/g, '');\r\n }\r\n }\r\n\r\n return fileName || 'download.bin';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoErrorService {\r\n /**\r\n * Checks if error message contains a specific string\r\n *\r\n * @param error\r\n * @param searchString\r\n * @returns\r\n */\r\n public contains(error: unknown, searchString: string): boolean {\r\n const message = this.getErrorMessage(error);\r\n return message.includes(searchString);\r\n }\r\n\r\n /**\r\n * Gets the message from an error object or string\r\n *\r\n * @param error\r\n * @returns\r\n */\r\n public getErrorMessage(error: unknown): string {\r\n if (!error) {\r\n return 'Unknown error';\r\n }\r\n\r\n if (error instanceof Error) {\r\n return error.message;\r\n }\r\n\r\n if (typeof error === 'string' || error instanceof String) {\r\n return error as string;\r\n }\r\n\r\n console.log('Unknown error type:', error);\r\n\r\n return 'Unknown error';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport type IntervalOptions = {\r\n fireImmediately: FireImmediately;\r\n blurInterval?: number;\r\n hiddenInterval?: number;\r\n};\r\n\r\ntype Action = () => Promise<unknown>;\r\n\r\nexport enum FireImmediately {\r\n never,\r\n whenShown,\r\n whenFocused,\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoIntervalService {\r\n static readonly defaultOptions: IntervalOptions = { fireImmediately: FireImmediately.never };\r\n\r\n create(\r\n action: Action,\r\n interval: number,\r\n options: IntervalOptions = ChoIntervalService.defaultOptions\r\n ): IntervalTimer {\r\n const timer = new IntervalTimer(action, interval, options);\r\n timer.initialize();\r\n\r\n return timer;\r\n }\r\n}\r\n\r\nexport class IntervalTimer {\r\n $handle?: number;\r\n currentInterval = 0;\r\n isStopped = true;\r\n\r\n constructor(\r\n private readonly action: Action,\r\n private readonly interval: number,\r\n private readonly options: IntervalOptions\r\n ) {}\r\n\r\n initialize(): void {\r\n if (this.options.hiddenInterval != null) {\r\n document.addEventListener('visibilitychange', () => {\r\n if (document.hidden) {\r\n this.onHidden();\r\n } else {\r\n this.onShown();\r\n }\r\n });\r\n }\r\n\r\n if (this.options.blurInterval != null) {\r\n window.addEventListener('blur', () => this.onBlur());\r\n window.addEventListener('focus', () => this.onFocus());\r\n }\r\n }\r\n\r\n start(): void {\r\n if (this.isStopped) {\r\n if (!document.hidden) {\r\n this.isStopped = false;\r\n this.onShown();\r\n } else {\r\n this.setInterval(this.interval);\r\n this.isStopped = false;\r\n }\r\n }\r\n }\r\n\r\n stop(): void {\r\n this.setInterval(0);\r\n this.isStopped = true;\r\n }\r\n\r\n private async callActionAndScheduleNext(nextInterval: number): Promise<void> {\r\n this.setInterval(0); // pause while the action runs\r\n await this.action();\r\n this.setInterval(nextInterval);\r\n }\r\n\r\n private onBlur(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n this.setInterval(this.options?.blurInterval);\r\n }\r\n\r\n private onFocus(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n if (this.options?.fireImmediately === FireImmediately.whenFocused) {\r\n this.callActionAndScheduleNext(this.interval);\r\n return;\r\n }\r\n\r\n this.setInterval(this.interval);\r\n }\r\n\r\n private onHidden(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n this.setInterval(this.options?.hiddenInterval);\r\n }\r\n\r\n private onShown(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n if (this.options.fireImmediately === FireImmediately.whenShown) {\r\n this.callActionAndScheduleNext(this.interval);\r\n return;\r\n }\r\n\r\n this.setInterval(this.interval);\r\n }\r\n\r\n private setInterval(interval?: number): void {\r\n if (this.$handle) {\r\n if (interval === this.currentInterval) {\r\n return;\r\n }\r\n\r\n window.clearTimeout(this.$handle);\r\n this.$handle = undefined;\r\n }\r\n\r\n if (!interval) {\r\n return;\r\n }\r\n\r\n this.$handle = window.setTimeout(() => this.callActionAndScheduleNext(interval), interval);\r\n this.currentInterval = interval;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoLocalStorageService {\r\n checkIfKeyExists(key: string): boolean {\r\n return globalThis.localStorage.getItem(key) !== null;\r\n }\r\n\r\n getItem<T>(key: string): T | undefined {\r\n const valueString = globalThis.localStorage.getItem(key);\r\n\r\n if (valueString === null) {\r\n return undefined;\r\n }\r\n\r\n const value = JSON.parse(valueString);\r\n return value;\r\n }\r\n\r\n setItem<T>(key: string, value: T): void {\r\n const valueString = JSON.stringify(value);\r\n globalThis.localStorage.setItem(key, valueString);\r\n }\r\n\r\n removeItem(key: string): void {\r\n globalThis.localStorage.removeItem(key);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoModalService {\r\n constructor(private readonly ngbModal: NgbModal) {}\r\n\r\n public async showModal<T>(\r\n component: unknown,\r\n componentParameters?: unknown,\r\n modalOptions: NgbModalOptions = { backdrop: 'static' }\r\n ): Promise<{ result: T; componentInstance: unknown }> {\r\n const modal = this.ngbModal.open(component, modalOptions);\r\n const componentInstance = modal.componentInstance;\r\n\r\n Object.assign(componentInstance, componentParameters);\r\n\r\n let result: T;\r\n\r\n try {\r\n result = await modal.result;\r\n } catch (error) {\r\n result = null as unknown as T;\r\n if (error === undefined) {\r\n throw 'modal dismiss';\r\n }\r\n throw error;\r\n }\r\n\r\n return { result, componentInstance };\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoRouteParamService {\r\n constructor(private readonly route: ActivatedRoute) {}\r\n\r\n public getParameterBoolean(params: Params, paramKey: string): boolean | null {\r\n const value = this.getParameterValue(params, paramKey);\r\n\r\n if (value) {\r\n return !!value;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getParameterNumber(params: Params, paramKey: string): number | null {\r\n const value = this.getParameterValue(params, paramKey);\r\n\r\n if (value) {\r\n return parseInt(value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getParameterValue(params: Params, paramKey: string): string | null {\r\n const value = params[paramKey];\r\n return value || null;\r\n }\r\n\r\n public getQueryParameterBoolean(paramKey: string): boolean | null {\r\n return this.getParameterBoolean(this.route.snapshot.queryParams, paramKey);\r\n }\r\n\r\n public getQueryParameterNumber(paramKey: string): number | null {\r\n return this.getParameterNumber(this.route.snapshot.queryParams, paramKey);\r\n }\r\n\r\n public getQueryParameterValue(paramKey: string): string | null {\r\n return this.getParameterValue(this.route.snapshot.queryParams, paramKey);\r\n }\r\n\r\n public getRouteParameterBoolean(route: ActivatedRoute, paramKey: string): boolean | null {\r\n return this.getParameterBoolean(route.snapshot.params, paramKey);\r\n }\r\n\r\n public getRouteParameterNumber(route: ActivatedRoute, paramKey: string): number | null {\r\n return this.getParameterNumber(route.snapshot.params, paramKey);\r\n }\r\n\r\n public getRouteParameterValue(route: ActivatedRoute, paramKey: string): string | null {\r\n return this.getParameterValue(route.snapshot.params, paramKey);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoSessionStorageService {\r\n checkIfKeyExists(key: string): boolean {\r\n return globalThis.sessionStorage.getItem(key) !== null;\r\n }\r\n\r\n getItem<T>(key: string): T | undefined {\r\n const valueString = globalThis.sessionStorage.getItem(key);\r\n\r\n if (valueString === null) {\r\n return undefined;\r\n }\r\n\r\n const value = JSON.parse(valueString);\r\n return value;\r\n }\r\n\r\n setItem<T>(key: string, value: T): void {\r\n const valueString = JSON.stringify(value);\r\n globalThis.sessionStorage.setItem(key, valueString);\r\n }\r\n\r\n removeItem(key: string): void {\r\n globalThis.sessionStorage.removeItem(key);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-cho-common\r\n */\r\nexport { CHO_COMMON_CONFIG, ChoCommonConfig } from './ngx-cho-common.config';\r\n\r\nexport { ChoAutoFocusDirective } from './lib/directives/cho-auto-focus.directive';\r\nexport { ChoFormFocusDirective } from './lib/directives/cho-form-focus.directive';\r\nexport { ChoKeyPressEnterDirective } from './lib/directives/cho-key-press-enter.directive';\r\nexport { ChoKeyPressEscapeDirective } from './lib/directives/cho-key-press-escape.directive';\r\n\r\nexport { ChoFeatureGuard } from './lib/guards/cho-feature.guard';\r\nexport { ChoUnsavedChangesGuard } from './lib/guards/cho-unsaved-changes.guard';\r\n\r\nexport { IDeactivatable } from './lib/models/deactivatable.interface';\r\n\r\nexport { IPhoneInfo } from './lib/models/phone-info.model';\r\nexport { INoteInfo } from './lib/models/note-info.model';\r\nexport { IEmailInfo } from './lib/models/email-info.model';\r\nexport { IContactInfo } from './lib/models/contact-info.model';\r\nexport { BasicSearchFilter } from './lib/models/basic-search-filter.model';\r\nexport { AppFile } from './lib/models/app-file.model';\r\nexport { IAddress } from './lib/models/address.model';\r\nexport { INote } from './lib/models/note.model';\r\nexport { Uuid } from './lib/models/uuid.model';\r\n\r\nexport { ChoActiveFilterPipe } from './lib/pipes/cho-active-filter.pipe';\r\nexport { ChoBooleanPipe } from './lib/pipes/cho-boolean.pipe';\r\nexport { ChoDatePipe } from './lib/pipes/cho-date.pipe';\r\nexport { ChoFilterPipe } from './lib/pipes/cho-filter.pipe';\r\nexport { ChoFormatKeyPipe } from './lib/pipes/cho-format-key.pipe';\r\nexport { ChoLowerKebabCasePipe } from './lib/pipes/cho-lower-kebab-case.pipe';\r\nexport { ChoSumByPipe } from './lib/pipes/cho-sum-by.pipe';\r\nexport { ChoTextFilterPipe } from './lib/pipes/cho-text-filter.pipe';\r\n\r\nexport { ChoDateService } from './lib/services/cho-date.service';\r\nexport { ChoDownloadService } from './lib/services/cho-download.service';\r\nexport { ChoErrorService } from './lib/services/cho-error.service';\r\nexport { ChoFeatureService } from './lib/services/cho-feature.service';\r\nexport {\r\n ChoIntervalService,\r\n IntervalTimer,\r\n FireImmediately,\r\n} from './lib/services/cho-interval.service';\r\nexport { ChoLocalStorageService } from './lib/services/cho-local-storage.service';\r\nexport { ChoModalService } from './lib/services/cho-modal.service';\r\nexport { ChoNavigationService } from './lib/services/cho-navigation.service';\r\nexport { ChoObjectService } from './lib/services/cho-object.service';\r\nexport { ChoRestClientService } from './lib/services/cho-rest-client.service';\r\nexport { ChoRouteParamService } from './lib/services/cho-route-param.service';\r\nexport { ChoSessionStorageService } from './lib/services/cho-session-storage.service';\r\n\r\nexport { Indexable } from './lib/types/indexable.type';\r\nexport { NameValueItem } from './lib/types/name-value-item.type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChoRestClientService","i1","i1.ChoFeatureService","i2.ChoNavigationService","i1.ChoObjectService"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-cho-common.mjs","sources":["../../../projects/ngx-cho-common/src/ngx-cho-common.config.ts","../../../projects/ngx-cho-common/src/lib/adapters/cho-ui-adapters.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-auto-focus.directive.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-form-focus.directive.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-key-press-enter.directive.ts","../../../projects/ngx-cho-common/src/lib/directives/cho-key-press-escape.directive.ts","../../../projects/ngx-cho-common/src/lib/services/cho-rest-client.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-feature.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-navigation.service.ts","../../../projects/ngx-cho-common/src/lib/guards/cho-feature.guard.ts","../../../projects/ngx-cho-common/src/lib/guards/cho-unsaved-changes.guard.ts","../../../projects/ngx-cho-common/src/lib/models/uuid.model.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-active-filter.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-boolean.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-date.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-filter.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-format-key.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-lower-kebab-case.pipe.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-sum-by.pipe.ts","../../../projects/ngx-cho-common/src/lib/services/cho-object.service.ts","../../../projects/ngx-cho-common/src/lib/pipes/cho-text-filter.pipe.ts","../../../projects/ngx-cho-common/src/lib/services/cho-date.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-download.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-error.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-interval.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-local-storage.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-route-param.service.ts","../../../projects/ngx-cho-common/src/lib/services/cho-session-storage.service.ts","../../../projects/ngx-cho-common/src/public-api.ts","../../../projects/ngx-cho-common/src/ngx-cho-common.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nexport interface ChoCommonConfig {\r\n webAppUrl: string;\r\n webApiUrl: string;\r\n}\r\n\r\nexport const CHO_COMMON_CONFIG = new InjectionToken<ChoCommonConfig>('ChoCommonConfig');\r\n","import { InjectionToken } from '@angular/core';\n\nexport interface ChoNotificationAdapter {\n error(message: string, title?: string): void;\n}\n\nexport const CHO_NOTIFICATION_ADAPTER = new InjectionToken<ChoNotificationAdapter>(\n 'CHO_NOTIFICATION_ADAPTER'\n);\n\nexport interface ChoLoadingAdapter {\n show(): void | Promise<void>;\n hide(): void | Promise<void>;\n}\n\nexport const CHO_LOADING_ADAPTER = new InjectionToken<ChoLoadingAdapter>(\n 'CHO_LOADING_ADAPTER'\n);\n","// from https://stackblitz.com/edit/angular-inline-edit?file=src%2Fapp%2Fautofocus.directive.ts\r\nimport { Directive, ElementRef, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choAutoFocus]',\r\n standalone: true,\r\n})\r\nexport class ChoAutoFocusDirective implements OnInit {\r\n constructor(private elementRef: ElementRef) {}\r\n\r\n ngOnInit(): void {\r\n this.elementRef.nativeElement.focus();\r\n }\r\n}\r\n","// from https://timdeschryver.dev/blog/auto-focus-a-form-control-with-an-angular-directive\r\nimport { Directive, ElementRef, HostListener, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choFormFocus]',\r\n standalone: true,\r\n})\r\nexport class ChoFormFocusDirective implements AfterViewInit {\r\n focusables = ['input', 'select', 'textarea'];\r\n\r\n constructor(private element: ElementRef) {}\r\n\r\n ngAfterViewInit() {\r\n const input = this.element.nativeElement.querySelector(this.focusables.join(','));\r\n\r\n if (input) {\r\n input.focus();\r\n return;\r\n }\r\n\r\n // focus on first available button if no other focusable element\r\n const button = this.element.nativeElement.querySelector('button');\r\n if (button) {\r\n button.focus();\r\n }\r\n }\r\n\r\n @HostListener('submit')\r\n submit() {\r\n const input = this.element.nativeElement.querySelector(\r\n this.focusables.map(x => `${x}.ng-invalid`).join(',')\r\n );\r\n if (input) {\r\n input.focus();\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, Output, EventEmitter } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choKeyPressEnter]',\r\n standalone: true,\r\n})\r\nexport class ChoKeyPressEnterDirective {\r\n @Output('appKeyPressEnter') emitter = new EventEmitter();\r\n\r\n @HostListener('window:keypress', ['$event'])\r\n keyEvent(event: KeyboardEvent) {\r\n if (event.key === 'Enter') {\r\n this.emitter.emit();\r\n }\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[choKeyPressEscape]',\r\n standalone: true,\r\n})\r\nexport class ChoKeyPressEscapeDirective {\r\n @Output('appKeyPressEscape') emitter = new EventEmitter();\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n keyEvent(event: KeyboardEvent) {\r\n if (event.key === 'Escape') {\r\n this.emitter.emit();\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/ban-types */\r\nimport { HttpClient, HttpHeaders, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { lastValueFrom, Observable, retry, RetryConfig, take } from 'rxjs';\r\n\r\ntype RequestParameters = {\r\n body?: unknown;\r\n queryParameters?: {};\r\n apiVersion?: {};\r\n headers?: {};\r\n cacheLifetimeSeconds?: number;\r\n retry?: RetryConfig;\r\n showSpinner?: {};\r\n};\r\n\r\ntype DeleteRequestParameters = Omit<RequestParameters, 'body' | 'cacheLifetimeSeconds'>;\r\ntype GetRequestParameters = Omit<RequestParameters, 'body'>;\r\n\r\n@Injectable({ providedIn: 'any' })\r\nexport class ChoRestClientService {\r\n private readonly defaultRetry = { count: 0, delay: 1000 };\r\n\r\n constructor(private readonly httpClient: HttpClient) {}\r\n\r\n /**\r\n * Sends a delete request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public delete(url: string, options?: DeleteRequestParameters): Promise<void> {\r\n return lastValueFrom(this.request('DELETE', url, options));\r\n }\r\n\r\n /**\r\n * Retrieves data from the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public get<T>(url: string, options?: GetRequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('GET', url, options));\r\n }\r\n\r\n /**\r\n * Sends a patch request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public patch<T>(url: string, options?: RequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('PATCH', url, options));\r\n }\r\n\r\n /**\r\n * Sends a post request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public post<T>(url: string, options?: RequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('POST', url, options));\r\n }\r\n\r\n /**\r\n * Sends a put request to the specified REST service\r\n *\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public put<T>(url: string, options?: RequestParameters): Promise<T> {\r\n return lastValueFrom(this.request('PUT', url, options));\r\n }\r\n\r\n /**\r\n * Sends a request to the specified REST service\r\n *\r\n * @param method DELETE, GET, POST, PUT, or PATCH\r\n * @param url The service endpoint\r\n * @param options Additional options\r\n */\r\n public request<T>(\r\n method: 'DELETE',\r\n url: string,\r\n options?: DeleteRequestParameters\r\n ): Observable<T>;\r\n public request<T>(method: 'GET', url: string, options?: GetRequestParameters): Observable<T>;\r\n public request<T>(\r\n method: 'POST' | 'PUT' | 'PATCH',\r\n url: string,\r\n options?: RequestParameters\r\n ): Observable<T>;\r\n\r\n public request<T>(\r\n method: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT',\r\n url: string,\r\n options?: RequestParameters\r\n ): Observable<T> {\r\n return this.httpClient\r\n .request<T>(method, url, {\r\n body: options?.body ? JSON.stringify(options.body) : undefined,\r\n headers: this.createRequestHeaders(options),\r\n params: this.createRequestParams(options?.queryParameters),\r\n })\r\n .pipe(take(1), retry(options?.retry || this.defaultRetry));\r\n }\r\n\r\n /**\r\n *\r\n * @param url\r\n * @param options\r\n * @returns\r\n */\r\n public getResponse<T>(\r\n method: 'GET' | 'PATCH' | 'POST' | 'PUT',\r\n url: string,\r\n options?: RequestParameters\r\n ): Observable<HttpResponse<T>> {\r\n return this.httpClient\r\n .request<T>(method, url, {\r\n observe: 'response',\r\n body: options?.body ? JSON.stringify(options.body) : undefined,\r\n headers: this.createRequestHeaders(options),\r\n params: this.createRequestParams(options?.queryParameters),\r\n })\r\n .pipe(take(1), retry(options?.retry || this.defaultRetry));\r\n }\r\n\r\n /**\r\n * Creates request headers based on the provided options.\r\n *\r\n * @param options\r\n * @returns\r\n */\r\n private createRequestHeaders(options?: RequestParameters): HttpHeaders {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const headers: any = Object.assign(\r\n {\r\n Accept: 'application/json',\r\n 'Content-Type': 'application/json',\r\n },\r\n options?.headers\r\n );\r\n\r\n if (options?.apiVersion) {\r\n const versionString = `; version=${options.apiVersion}`;\r\n\r\n headers.Accept += versionString;\r\n headers['Content-Type'] += versionString;\r\n }\r\n\r\n if (options?.showSpinner === false) {\r\n headers['x-spinner'] = 'false';\r\n }\r\n\r\n if (options?.cacheLifetimeSeconds) {\r\n headers['x-cache-ttl'] = options?.cacheLifetimeSeconds;\r\n }\r\n\r\n return new HttpHeaders(headers);\r\n }\r\n\r\n /**\r\n * Converts one or more objects to an HttpParams object.\r\n *\r\n * @param sources The objects to convert\r\n * @returns\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n private createRequestParams(...sources: any[]): HttpParams {\r\n let params = new HttpParams();\r\n\r\n for (const source of sources) {\r\n if (source == null) {\r\n continue;\r\n }\r\n\r\n for (const key of Object.keys(source)) {\r\n const value = source[key];\r\n\r\n if (value != null) {\r\n params = params.set(key, value.toString());\r\n }\r\n }\r\n }\r\n\r\n return params;\r\n }\r\n}\r\n","import { Inject, Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ChoRestClientService } from './cho-rest-client.service';\r\nimport { CHO_COMMON_CONFIG, ChoCommonConfig } from '../../ngx-cho-common.config';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoFeatureService {\r\n public readonly featureStream = new BehaviorSubject<string[]>([]);\r\n\r\n private _enabledFeatures: string[] = [];\r\n private _isInitialized = false;\r\n private readonly routePrefix;\r\n\r\n constructor(\r\n @Inject(CHO_COMMON_CONFIG) private choCommonConfig: ChoCommonConfig,\r\n private readonly restClient: ChoRestClientService\r\n ) {\r\n this.routePrefix = `${this.choCommonConfig.webApiUrl}/common/features`;\r\n this.checkEnabledFeatures();\r\n }\r\n\r\n /**\r\n * Gets the enabled features.\r\n */\r\n get enabledFeatures(): string[] {\r\n return this._enabledFeatures;\r\n }\r\n\r\n /**\r\n * Sets the enabled features.\r\n */\r\n private set enabledFeatures(enabledFeatures: string[]) {\r\n this._enabledFeatures = enabledFeatures;\r\n this._isInitialized = true;\r\n\r\n this.featureStream.next(enabledFeatures);\r\n }\r\n\r\n /**\r\n * Gets whether features have been initialized\r\n */\r\n get isInitialized(): boolean {\r\n return this._isInitialized;\r\n }\r\n\r\n /**\r\n * Checks that the enabled features are set and returns the list.\r\n *\r\n * @param name\r\n * @returns\r\n */\r\n async checkEnabledFeatures(): Promise<string[]> {\r\n if (!this.isInitialized) {\r\n this.enabledFeatures = await this.restClient.get(`${this.routePrefix}/enabled`);\r\n }\r\n\r\n return this.enabledFeatures;\r\n }\r\n\r\n /**\r\n * Checks that the specified feature is enabled.\r\n *\r\n * @param name\r\n * @returns\r\n */\r\n checkFeatureIsEnabled(name: string): boolean {\r\n return this._enabledFeatures?.some(p => p === name);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Location } from '@angular/common';\r\nimport { NavigationEnd, NavigationExtras, Params, Router } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoNavigationService {\r\n private history: string[] = [];\r\n\r\n constructor(private router: Router, private location: Location) {\r\n this.router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n this.history.push(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public go(commands: any[], extras?: NavigationExtras): Promise<boolean> {\r\n return this.router.navigate(commands, extras);\r\n }\r\n\r\n public goBack(): void {\r\n this.goBackOrDefault('/');\r\n }\r\n\r\n // based on https://nils-mehlhorn.de/posts/angular-navigate-back-previous-page\r\n public goBackOrDefault(defaultUrl: string): void {\r\n if (this.history.length > 0) {\r\n this.history.pop();\r\n this.location.back();\r\n } else {\r\n this.router.navigateByUrl(defaultUrl);\r\n }\r\n }\r\n\r\n // based on https://medium.com/agilix/change-the-route-without-reloading-in-angular-7a4aa82a8d3e\r\n public replaceState(url: string, data: any = null): void {\r\n window.history.replaceState(data, '', url);\r\n }\r\n\r\n public setQueryParams(params: Params): void {\r\n this.router.navigate([], {\r\n queryParams: params,\r\n queryParamsHandling: 'merge',\r\n replaceUrl: true,\r\n });\r\n }\r\n}\r\n","import { Inject, Injectable, Optional } from '@angular/core';\nimport { ActivatedRouteSnapshot } from '@angular/router';\n\nimport {\n CHO_NOTIFICATION_ADAPTER,\n ChoNotificationAdapter,\n} from '../adapters/cho-ui-adapters';\nimport { ChoFeatureService } from '../services/cho-feature.service';\nimport { ChoNavigationService } from '../services/cho-navigation.service';\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoFeatureGuard {\r\n constructor(\n private readonly featureService: ChoFeatureService,\n private readonly navigationService: ChoNavigationService,\n @Optional()\n @Inject(CHO_NOTIFICATION_ADAPTER)\n private readonly notificationAdapter: ChoNotificationAdapter | null\n ) {}\n\r\n public async canActivate(route: ActivatedRouteSnapshot): Promise<boolean> {\r\n const routeFeature = route.data['feature'] as string;\r\n\r\n if (!routeFeature) {\r\n return true;\r\n }\r\n\r\n await this.featureService.checkEnabledFeatures();\r\n\n if (!this.featureService.checkFeatureIsEnabled(routeFeature)) {\n this.notificationAdapter?.error(\n \"Oops! It doesn't look like this feature has been enabled.\"\n );\n\n this.navigationService.goBack();\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IDeactivatable } from '../models/deactivatable.interface';\r\n\r\n@Injectable()\r\nexport class ChoUnsavedChangesGuard {\r\n component: IDeactivatable | undefined;\r\n route: ActivatedRouteSnapshot | undefined;\r\n\r\n canDeactivate(component: IDeactivatable): Observable<boolean> | Promise<boolean> | boolean {\r\n return component.onDeactivate ? component.onDeactivate() : true;\r\n }\r\n}\r\n","export class Uuid {\r\n public static create(): string {\r\n const bytes = crypto.getRandomValues(new Uint8Array(16));\r\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\r\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\r\n\r\n let index = 0;\r\n\r\n return (\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n '-' +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++]) +\r\n Uuid.toHex(bytes[index++])\r\n );\r\n }\r\n\r\n private static toHex(byte: number): string {\r\n return (0x100 | byte).toString(16).substr(1);\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choActiveFilter',\r\n standalone: true,\r\n})\r\nexport class ChoActiveFilterPipe implements PipeTransform {\r\n transform(value: any[], property?: string): any[] {\r\n if (value?.length === 0) {\r\n return value;\r\n }\r\n\r\n const filteredItems: any[] = [];\r\n\r\n for (const item of value) {\r\n if (item[property || 'isActive']) {\r\n filteredItems.push(item);\r\n }\r\n }\r\n\r\n return filteredItems;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choBoolean',\r\n standalone: true,\r\n})\r\nexport class ChoBooleanPipe implements PipeTransform {\r\n transform(value: unknown): unknown {\r\n return value ? 'Yes' : 'No';\r\n }\r\n}\r\n","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choDate',\r\n standalone: true,\r\n})\r\nexport class ChoDatePipe implements PipeTransform {\r\n constructor(public datePipe: DatePipe) {}\r\n transform(\r\n value: Date | string | number,\r\n format?: string,\r\n timezone?: string,\r\n locale?: string\r\n ): string | null {\r\n switch (format ?? 'shortDate') {\r\n case 'short':\r\n format = 'MM/dd/yyyy hh:mm a';\r\n break;\r\n\r\n case 'shortDate':\r\n format = 'MM/dd/yyyy';\r\n break;\r\n }\r\n\r\n return this.datePipe.transform(value, format, timezone, locale);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choFilter',\r\n standalone: true,\r\n})\r\nexport class ChoFilterPipe implements PipeTransform {\r\n transform(items: any[], callback: (item: any) => boolean): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n return items.filter(item => callback(item));\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choFormatKey',\r\n standalone: true,\r\n})\r\nexport class ChoFormatKeyPipe implements PipeTransform {\r\n transform(key: string): string {\r\n let result = '';\r\n const tokenized = key.split(/(?=[A-Z])/);\r\n\r\n tokenized.forEach(item => {\r\n const uppercase = item.charAt(0).toUpperCase() + item.slice(1);\r\n result += uppercase + ' ';\r\n });\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choLowerKebabCase',\r\n standalone: true,\r\n})\r\nexport class ChoLowerKebabCasePipe implements PipeTransform {\r\n transform(value: string): string {\r\n //take string and convert to lower kebab case\r\n return value\r\n .replace(/([a-z])([A-Z])/g, '$1-$2')\r\n .replace(/\\s+/g, '-')\r\n .toLowerCase();\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n name: 'choSumBy',\r\n standalone: true,\r\n})\r\nexport class ChoSumByPipe implements PipeTransform {\r\n transform(items: any[], attr: string): any {\r\n return items.reduce((a, b) => a + (b[attr] || 0), 0);\r\n }\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoObjectService {\r\n public getNestedPropertyValue(obj: unknown, property: string): unknown {\r\n return property.split('.').reduce((acc, key) => acc && acc[key], obj);\r\n }\r\n\r\n public toValueObject(obj: object): object {\r\n const result = Object.getOwnPropertyNames(obj).reduce((p, key) => {\r\n if (obj[key]) {\r\n p[key] = obj[key];\r\n }\r\n return p;\r\n }, new Object());\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Convert Object to HttpParams\r\n * @param {object} obj\r\n * @returns {HttpParams}\r\n * see: https://stackoverflow.com/questions/45210406/angular-4-3-httpclient-set-params\r\n */\r\n public toHttpParams(obj: object): HttpParams {\r\n const temp = Object.getOwnPropertyNames(obj).reduce(\r\n (p, key) => (obj[key] == null || obj[key].length === 0 ? p : p.set(key, obj[key])),\r\n new HttpParams()\r\n );\r\n\r\n return temp;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { ChoObjectService } from '../services/cho-object.service';\r\n\r\n@Pipe({\r\n name: 'choTextFilter',\r\n standalone: true,\r\n})\r\nexport class ChoTextFilterPipe implements PipeTransform {\r\n constructor(private readonly objectService: ChoObjectService) {}\r\n\r\n transform(value: any[], filterString: string | null | undefined, properties: string[]): any[] {\r\n if (value?.length === 0 || !filterString || !properties?.length) {\r\n return value;\r\n }\r\n\r\n filterString = filterString.toLowerCase();\r\n\r\n return value.filter(item => {\r\n for (const property of properties) {\r\n const propertyValue = property.includes('.')\r\n ? this.objectService.getNestedPropertyValue(item, property)\r\n : item[property];\r\n\r\n if (\r\n propertyValue &&\r\n propertyValue.toString().toLowerCase().includes(filterString)\r\n ) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\n\r\nimport { NameValueItem } from '../types/name-value-item.type';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoDateService {\r\n public getMonthItems(startMonth = 1, endMonth = 12): NameValueItem<number>[] {\r\n const items: NameValueItem<number>[] = [];\r\n const d = moment().startOf('year');\r\n let i = startMonth;\r\n\r\n while (i <= endMonth) {\r\n d.set('month', i - 1);\r\n items.push({ value: i, name: d.format('MMMM') });\r\n i++;\r\n }\r\n\r\n return items;\r\n }\n\n public getYearItems(startYear?: number, endYear?: number): NameValueItem<number>[] {\n const resolvedStartYear = startYear || moment().year();\n const resolvedEndYear = endYear || moment().year();\n\n const items: NameValueItem<number>[] = [];\n let i = resolvedStartYear;\n\n while (i <= resolvedEndYear) {\n items.push({ value: i, name: i.toString() });\n i++;\n }\n\r\n return items;\r\n }\r\n\r\n public toDateString(input: moment.MomentInput): string {\r\n return moment(input).format('yyyy-MM-DD');\r\n }\r\n\r\n public toISOString(input: moment.MomentInput): string {\r\n return moment(input).toISOString();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Observable, shareReplay } from 'rxjs';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Injectable({ providedIn: 'any' })\r\nexport class ChoDownloadService {\r\n constructor(private httpClient: HttpClient) {}\r\n\r\n private octetStreamMime = 'application/octet-stream';\r\n\r\n public downloadFile(url: string, params?: HttpParams): Observable<HttpResponse<ArrayBuffer>> {\r\n const download$ = this.httpClient\r\n .get(url, {\r\n responseType: 'arraybuffer',\r\n observe: 'response',\r\n params: params,\r\n })\r\n .pipe(shareReplay());\r\n\r\n download$.subscribe(r => this.processDownload(r));\r\n\r\n return download$;\r\n }\r\n\r\n private processDownload(response: HttpResponse<ArrayBuffer>): void {\r\n const filename = this.getFileNameFromResponse(response);\r\n const contentType = response.headers.get('content-type') || this.octetStreamMime;\r\n\r\n if (response.body) {\r\n const blob = new Blob([response.body], { type: contentType });\r\n saveAs(blob, filename);\r\n }\r\n }\r\n\r\n private getFileNameFromResponse(response: HttpResponse<ArrayBuffer>): string {\r\n // attempt to get from response headers\r\n let fileName = response.headers.get('x-filename') || response.headers.get('filename');\r\n\r\n if (!fileName) {\r\n // attempt to get from content disposition\r\n const disposition = response.headers.get('content-disposition');\r\n\r\n if (disposition) {\r\n fileName = disposition.split(';')[1].split('=')[1].replace(/\"/g, '');\r\n }\r\n }\r\n\r\n return fileName || 'download.bin';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoErrorService {\r\n /**\r\n * Checks if error message contains a specific string\r\n *\r\n * @param error\r\n * @param searchString\r\n * @returns\r\n */\r\n public contains(error: unknown, searchString: string): boolean {\r\n const message = this.getErrorMessage(error);\r\n return message.includes(searchString);\r\n }\r\n\r\n /**\r\n * Gets the message from an error object or string\r\n *\r\n * @param error\r\n * @returns\r\n */\r\n public getErrorMessage(error: unknown): string {\r\n if (!error) {\r\n return 'Unknown error';\r\n }\r\n\r\n if (error instanceof Error) {\r\n return error.message;\r\n }\r\n\r\n if (typeof error === 'string' || error instanceof String) {\r\n return error as string;\r\n }\r\n\r\n console.log('Unknown error type:', error);\r\n\r\n return 'Unknown error';\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport type IntervalOptions = {\r\n fireImmediately: FireImmediately;\r\n blurInterval?: number;\r\n hiddenInterval?: number;\r\n};\r\n\r\ntype Action = () => Promise<unknown>;\r\n\r\nexport enum FireImmediately {\r\n never,\r\n whenShown,\r\n whenFocused,\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoIntervalService {\r\n static readonly defaultOptions: IntervalOptions = { fireImmediately: FireImmediately.never };\r\n\r\n create(\r\n action: Action,\r\n interval: number,\r\n options: IntervalOptions = ChoIntervalService.defaultOptions\r\n ): IntervalTimer {\r\n const timer = new IntervalTimer(action, interval, options);\r\n timer.initialize();\r\n\r\n return timer;\r\n }\r\n}\r\n\r\nexport class IntervalTimer {\r\n $handle?: number;\r\n currentInterval = 0;\r\n isStopped = true;\r\n\r\n constructor(\r\n private readonly action: Action,\r\n private readonly interval: number,\r\n private readonly options: IntervalOptions\r\n ) {}\r\n\r\n initialize(): void {\r\n if (this.options.hiddenInterval != null) {\r\n document.addEventListener('visibilitychange', () => {\r\n if (document.hidden) {\r\n this.onHidden();\r\n } else {\r\n this.onShown();\r\n }\r\n });\r\n }\r\n\r\n if (this.options.blurInterval != null) {\r\n window.addEventListener('blur', () => this.onBlur());\r\n window.addEventListener('focus', () => this.onFocus());\r\n }\r\n }\r\n\r\n start(): void {\r\n if (this.isStopped) {\r\n if (!document.hidden) {\r\n this.isStopped = false;\r\n this.onShown();\r\n } else {\r\n this.setInterval(this.interval);\r\n this.isStopped = false;\r\n }\r\n }\r\n }\r\n\r\n stop(): void {\r\n this.setInterval(0);\r\n this.isStopped = true;\r\n }\r\n\r\n private async callActionAndScheduleNext(nextInterval: number): Promise<void> {\r\n this.setInterval(0); // pause while the action runs\r\n await this.action();\r\n this.setInterval(nextInterval);\r\n }\r\n\r\n private onBlur(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n this.setInterval(this.options?.blurInterval);\r\n }\r\n\r\n private onFocus(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n if (this.options?.fireImmediately === FireImmediately.whenFocused) {\r\n this.callActionAndScheduleNext(this.interval);\r\n return;\r\n }\r\n\r\n this.setInterval(this.interval);\r\n }\r\n\r\n private onHidden(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n this.setInterval(this.options?.hiddenInterval);\r\n }\r\n\r\n private onShown(): void {\r\n if (this.isStopped) {\r\n return;\r\n }\r\n\r\n if (this.options.fireImmediately === FireImmediately.whenShown) {\r\n this.callActionAndScheduleNext(this.interval);\r\n return;\r\n }\r\n\r\n this.setInterval(this.interval);\r\n }\r\n\r\n private setInterval(interval?: number): void {\r\n if (this.$handle) {\r\n if (interval === this.currentInterval) {\r\n return;\r\n }\r\n\r\n window.clearTimeout(this.$handle);\r\n this.$handle = undefined;\r\n }\r\n\r\n if (!interval) {\r\n return;\r\n }\r\n\r\n this.$handle = window.setTimeout(() => this.callActionAndScheduleNext(interval), interval);\r\n this.currentInterval = interval;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoLocalStorageService {\r\n checkIfKeyExists(key: string): boolean {\r\n return globalThis.localStorage.getItem(key) !== null;\r\n }\r\n\r\n getItem<T>(key: string): T | undefined {\r\n const valueString = globalThis.localStorage.getItem(key);\r\n\r\n if (valueString === null) {\r\n return undefined;\r\n }\r\n\r\n const value = JSON.parse(valueString);\r\n return value;\r\n }\r\n\r\n setItem<T>(key: string, value: T): void {\r\n const valueString = JSON.stringify(value);\r\n globalThis.localStorage.setItem(key, valueString);\r\n }\r\n\r\n removeItem(key: string): void {\r\n globalThis.localStorage.removeItem(key);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ChoRouteParamService {\r\n constructor(private readonly route: ActivatedRoute) {}\r\n\r\n public getParameterBoolean(params: Params, paramKey: string): boolean | null {\r\n const value = this.getParameterValue(params, paramKey);\r\n\r\n if (value) {\r\n return !!value;\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getParameterNumber(params: Params, paramKey: string): number | null {\r\n const value = this.getParameterValue(params, paramKey);\r\n\r\n if (value) {\r\n return parseInt(value);\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getParameterValue(params: Params, paramKey: string): string | null {\r\n const value = params[paramKey];\r\n return value || null;\r\n }\r\n\r\n public getQueryParameterBoolean(paramKey: string): boolean | null {\r\n return this.getParameterBoolean(this.route.snapshot.queryParams, paramKey);\r\n }\r\n\r\n public getQueryParameterNumber(paramKey: string): number | null {\r\n return this.getParameterNumber(this.route.snapshot.queryParams, paramKey);\r\n }\r\n\r\n public getQueryParameterValue(paramKey: string): string | null {\r\n return this.getParameterValue(this.route.snapshot.queryParams, paramKey);\r\n }\r\n\r\n public getRouteParameterBoolean(route: ActivatedRoute, paramKey: string): boolean | null {\r\n return this.getParameterBoolean(route.snapshot.params, paramKey);\r\n }\r\n\r\n public getRouteParameterNumber(route: ActivatedRoute, paramKey: string): number | null {\r\n return this.getParameterNumber(route.snapshot.params, paramKey);\r\n }\r\n\r\n public getRouteParameterValue(route: ActivatedRoute, paramKey: string): string | null {\r\n return this.getParameterValue(route.snapshot.params, paramKey);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class ChoSessionStorageService {\r\n checkIfKeyExists(key: string): boolean {\r\n return globalThis.sessionStorage.getItem(key) !== null;\r\n }\r\n\r\n getItem<T>(key: string): T | undefined {\r\n const valueString = globalThis.sessionStorage.getItem(key);\r\n\r\n if (valueString === null) {\r\n return undefined;\r\n }\r\n\r\n const value = JSON.parse(valueString);\r\n return value;\r\n }\r\n\r\n setItem<T>(key: string, value: T): void {\r\n const valueString = JSON.stringify(value);\r\n globalThis.sessionStorage.setItem(key, valueString);\r\n }\r\n\r\n removeItem(key: string): void {\r\n globalThis.sessionStorage.removeItem(key);\r\n }\r\n}\r\n","/*\r\n * Public API Surface of ngx-cho-common\r\n */\r\nexport { CHO_COMMON_CONFIG, ChoCommonConfig } from './ngx-cho-common.config';\n\nexport {\n CHO_LOADING_ADAPTER,\n CHO_NOTIFICATION_ADAPTER,\n ChoLoadingAdapter,\n ChoNotificationAdapter,\n} from './lib/adapters/cho-ui-adapters';\n\nexport { ChoAutoFocusDirective } from './lib/directives/cho-auto-focus.directive';\nexport { ChoFormFocusDirective } from './lib/directives/cho-form-focus.directive';\r\nexport { ChoKeyPressEnterDirective } from './lib/directives/cho-key-press-enter.directive';\r\nexport { ChoKeyPressEscapeDirective } from './lib/directives/cho-key-press-escape.directive';\r\n\r\nexport { ChoFeatureGuard } from './lib/guards/cho-feature.guard';\r\nexport { ChoUnsavedChangesGuard } from './lib/guards/cho-unsaved-changes.guard';\r\n\r\nexport { IDeactivatable } from './lib/models/deactivatable.interface';\r\n\r\nexport { IPhoneInfo } from './lib/models/phone-info.model';\r\nexport { INoteInfo } from './lib/models/note-info.model';\r\nexport { IEmailInfo } from './lib/models/email-info.model';\r\nexport { IContactInfo } from './lib/models/contact-info.model';\r\nexport { BasicSearchFilter } from './lib/models/basic-search-filter.model';\r\nexport { AppFile } from './lib/models/app-file.model';\r\nexport { IAddress } from './lib/models/address.model';\r\nexport { INote } from './lib/models/note.model';\r\nexport { Uuid } from './lib/models/uuid.model';\r\n\r\nexport { ChoActiveFilterPipe } from './lib/pipes/cho-active-filter.pipe';\r\nexport { ChoBooleanPipe } from './lib/pipes/cho-boolean.pipe';\r\nexport { ChoDatePipe } from './lib/pipes/cho-date.pipe';\r\nexport { ChoFilterPipe } from './lib/pipes/cho-filter.pipe';\r\nexport { ChoFormatKeyPipe } from './lib/pipes/cho-format-key.pipe';\r\nexport { ChoLowerKebabCasePipe } from './lib/pipes/cho-lower-kebab-case.pipe';\r\nexport { ChoSumByPipe } from './lib/pipes/cho-sum-by.pipe';\r\nexport { ChoTextFilterPipe } from './lib/pipes/cho-text-filter.pipe';\r\n\r\nexport { ChoDateService } from './lib/services/cho-date.service';\r\nexport { ChoDownloadService } from './lib/services/cho-download.service';\r\nexport { ChoErrorService } from './lib/services/cho-error.service';\r\nexport { ChoFeatureService } from './lib/services/cho-feature.service';\r\nexport {\n ChoIntervalService,\n IntervalTimer,\n FireImmediately,\n} from './lib/services/cho-interval.service';\nexport { ChoLocalStorageService } from './lib/services/cho-local-storage.service';\nexport { ChoNavigationService } from './lib/services/cho-navigation.service';\nexport { ChoObjectService } from './lib/services/cho-object.service';\nexport { ChoRestClientService } from './lib/services/cho-rest-client.service';\nexport { ChoRouteParamService } from './lib/services/cho-route-param.service';\nexport { ChoSessionStorageService } from './lib/services/cho-session-storage.service';\r\n\r\nexport { Indexable } from './lib/types/indexable.type';\r\nexport { NameValueItem } from './lib/types/name-value-item.type';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChoRestClientService","i1","i1.ChoObjectService"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export interface ChoNotificationAdapter {
3
+ error(message: string, title?: string): void;
4
+ }
5
+ export declare const CHO_NOTIFICATION_ADAPTER: InjectionToken<ChoNotificationAdapter>;
6
+ export interface ChoLoadingAdapter {
7
+ show(): void | Promise<void>;
8
+ hide(): void | Promise<void>;
9
+ }
10
+ export declare const CHO_LOADING_ADAPTER: InjectionToken<ChoLoadingAdapter>;
@@ -1,14 +1,14 @@
1
1
  import { ActivatedRouteSnapshot } from '@angular/router';
2
- import { ToastrService } from 'ngx-toastr';
2
+ import { ChoNotificationAdapter } from '../adapters/cho-ui-adapters';
3
3
  import { ChoFeatureService } from '../services/cho-feature.service';
4
4
  import { ChoNavigationService } from '../services/cho-navigation.service';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class ChoFeatureGuard {
7
7
  private readonly featureService;
8
8
  private readonly navigationService;
9
- private readonly toastr;
10
- constructor(featureService: ChoFeatureService, navigationService: ChoNavigationService, toastr: ToastrService);
9
+ private readonly notificationAdapter;
10
+ constructor(featureService: ChoFeatureService, navigationService: ChoNavigationService, notificationAdapter: ChoNotificationAdapter | null);
11
11
  canActivate(route: ActivatedRouteSnapshot): Promise<boolean>;
12
- static ɵfac: i0.ɵɵFactoryDeclaration<ChoFeatureGuard, never>;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChoFeatureGuard, [null, null, { optional: true; }]>;
13
13
  static ɵprov: i0.ɵɵInjectableDeclaration<ChoFeatureGuard>;
14
14
  }
package/package.json CHANGED
@@ -1,13 +1,12 @@
1
1
  {
2
2
  "name": "ngx-cho-common",
3
- "version": "1.0.14",
3
+ "version": "2.0.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",
7
7
  "@js-joda/core": "^5.2.0",
8
8
  "file-saver": "^2.0.5",
9
- "ngx-spinner": "16.0.2",
10
- "ngx-toastr": "^15.2.1"
9
+ "moment": "^2.30.1"
11
10
  },
12
11
  "dependencies": {
13
12
  "tslib": "^2.3.0"
package/public-api.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { CHO_COMMON_CONFIG, ChoCommonConfig } from './ngx-cho-common.config';
2
+ export { CHO_LOADING_ADAPTER, CHO_NOTIFICATION_ADAPTER, ChoLoadingAdapter, ChoNotificationAdapter, } from './lib/adapters/cho-ui-adapters';
2
3
  export { ChoAutoFocusDirective } from './lib/directives/cho-auto-focus.directive';
3
4
  export { ChoFormFocusDirective } from './lib/directives/cho-form-focus.directive';
4
5
  export { ChoKeyPressEnterDirective } from './lib/directives/cho-key-press-enter.directive';
@@ -29,7 +30,6 @@ export { ChoErrorService } from './lib/services/cho-error.service';
29
30
  export { ChoFeatureService } from './lib/services/cho-feature.service';
30
31
  export { ChoIntervalService, IntervalTimer, FireImmediately, } from './lib/services/cho-interval.service';
31
32
  export { ChoLocalStorageService } from './lib/services/cho-local-storage.service';
32
- export { ChoModalService } from './lib/services/cho-modal.service';
33
33
  export { ChoNavigationService } from './lib/services/cho-navigation.service';
34
34
  export { ChoObjectService } from './lib/services/cho-object.service';
35
35
  export { ChoRestClientService } from './lib/services/cho-rest-client.service';
@@ -1,34 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
4
- export class ChoModalService {
5
- constructor(ngbModal) {
6
- this.ngbModal = ngbModal;
7
- }
8
- async showModal(component, componentParameters, modalOptions = { backdrop: 'static' }) {
9
- const modal = this.ngbModal.open(component, modalOptions);
10
- const componentInstance = modal.componentInstance;
11
- Object.assign(componentInstance, componentParameters);
12
- let result;
13
- try {
14
- result = await modal.result;
15
- }
16
- catch (error) {
17
- result = null;
18
- if (error === undefined) {
19
- throw 'modal dismiss';
20
- }
21
- throw error;
22
- }
23
- return { result, componentInstance };
24
- }
25
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoModalService, deps: [{ token: i1.NgbModal }], target: i0.ɵɵFactoryTarget.Injectable }); }
26
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoModalService, providedIn: 'root' }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChoModalService, decorators: [{
29
- type: Injectable,
30
- args: [{
31
- providedIn: 'root',
32
- }]
33
- }], ctorParameters: () => [{ type: i1.NgbModal }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvLW1vZGFsLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtY2hvLWNvbW1vbi9zcmMvbGliL3NlcnZpY2VzL2Noby1tb2RhbC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU0zQyxNQUFNLE9BQU8sZUFBZTtJQUN4QixZQUE2QixRQUFrQjtRQUFsQixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQUcsQ0FBQztJQUU1QyxLQUFLLENBQUMsU0FBUyxDQUNsQixTQUFrQixFQUNsQixtQkFBNkIsRUFDN0IsZUFBZ0MsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO1FBRXRELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztRQUMxRCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUVsRCxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLG1CQUFtQixDQUFDLENBQUM7UUFFdEQsSUFBSSxNQUFTLENBQUM7UUFFZCxJQUFJLENBQUM7WUFDRCxNQUFNLEdBQUcsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQ2hDLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2IsTUFBTSxHQUFHLElBQW9CLENBQUM7WUFDOUIsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sZUFBZSxDQUFDO1lBQzFCLENBQUM7WUFDRCxNQUFNLEtBQUssQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7K0dBMUJRLGVBQWU7bUhBQWYsZUFBZSxjQUZaLE1BQU07OzRGQUVULGVBQWU7a0JBSDNCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCwgTmdiTW9kYWxPcHRpb25zIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hvTW9kYWxTZXJ2aWNlIHtcclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbmdiTW9kYWw6IE5nYk1vZGFsKSB7fVxyXG5cclxuICAgIHB1YmxpYyBhc3luYyBzaG93TW9kYWw8VD4oXHJcbiAgICAgICAgY29tcG9uZW50OiB1bmtub3duLFxyXG4gICAgICAgIGNvbXBvbmVudFBhcmFtZXRlcnM/OiB1bmtub3duLFxyXG4gICAgICAgIG1vZGFsT3B0aW9uczogTmdiTW9kYWxPcHRpb25zID0geyBiYWNrZHJvcDogJ3N0YXRpYycgfVxyXG4gICAgKTogUHJvbWlzZTx7IHJlc3VsdDogVDsgY29tcG9uZW50SW5zdGFuY2U6IHVua25vd24gfT4ge1xyXG4gICAgICAgIGNvbnN0IG1vZGFsID0gdGhpcy5uZ2JNb2RhbC5vcGVuKGNvbXBvbmVudCwgbW9kYWxPcHRpb25zKTtcclxuICAgICAgICBjb25zdCBjb21wb25lbnRJbnN0YW5jZSA9IG1vZGFsLmNvbXBvbmVudEluc3RhbmNlO1xyXG5cclxuICAgICAgICBPYmplY3QuYXNzaWduKGNvbXBvbmVudEluc3RhbmNlLCBjb21wb25lbnRQYXJhbWV0ZXJzKTtcclxuXHJcbiAgICAgICAgbGV0IHJlc3VsdDogVDtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgbW9kYWwucmVzdWx0O1xyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IG51bGwgYXMgdW5rbm93biBhcyBUO1xyXG4gICAgICAgICAgICBpZiAoZXJyb3IgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgJ21vZGFsIGRpc21pc3MnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCBjb21wb25lbnRJbnN0YW5jZSB9O1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,12 +0,0 @@
1
- import { NgbModal, NgbModalOptions } from '@ng-bootstrap/ng-bootstrap';
2
- import * as i0 from "@angular/core";
3
- export declare class ChoModalService {
4
- private readonly ngbModal;
5
- constructor(ngbModal: NgbModal);
6
- showModal<T>(component: unknown, componentParameters?: unknown, modalOptions?: NgbModalOptions): Promise<{
7
- result: T;
8
- componentInstance: unknown;
9
- }>;
10
- static ɵfac: i0.ɵɵFactoryDeclaration<ChoModalService, never>;
11
- static ɵprov: i0.ɵɵInjectableDeclaration<ChoModalService>;
12
- }