ngx-techlify-core 14.13.1 → 14.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,48 +1,60 @@
1
1
  import { Injectable } from '@angular/core';
2
+ import { HttpErrorResponse } from '@angular/common/http';
2
3
  import { throwError } from 'rxjs';
3
4
  import { catchError } from 'rxjs/operators';
4
5
  import { Logger } from './logger.service';
5
6
  import * as i0 from "@angular/core";
6
7
  import * as i1 from "./config.service";
7
8
  import * as i2 from "./error-handler.service";
9
+ import * as i3 from "./alert.service";
8
10
  const log = new Logger('ErrorHandlerInterceptor');
9
11
  /**
10
12
  * Adds a default error handler to all requests.
11
13
  */
12
14
  export class ErrorHandlerInterceptor {
13
- constructor(configService, errorHandler) {
15
+ constructor(configService, errorHandler, alertService) {
14
16
  this.configService = configService;
15
17
  this.errorHandler = errorHandler;
18
+ this.alertService = alertService;
16
19
  }
17
20
  intercept(request, next) {
18
21
  return next.handle(request).pipe(catchError(error => this.handleError(error)));
19
22
  }
20
23
  // Customize the default error handler here if needed
21
24
  handleError(error) {
22
- let errorMessage = '';
23
- if (error.error instanceof ErrorEvent) {
24
- // client-side error
25
- errorMessage = `Client Error: ${this.configService?.getProjectKey()}: ${error.error.message}`;
25
+ if (this.checkNoNetworkConnection(error)) {
26
+ this.alertService.addAlert('Internet connection not available, try later', 'warning');
27
+ return throwError(error);
26
28
  }
27
- else {
28
- // server-side error
29
- errorMessage = `Server Error: ${this.configService?.getProjectKey()}`;
30
- try {
31
- this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');
32
- }
33
- catch (e) {
34
- console.log("Unable to handle server error", e);
35
- }
29
+ try {
30
+ this.errorHandler.handleError(error, 'Unexpected Server Error, try later or contact service team');
31
+ }
32
+ catch (e) {
33
+ console.log("Unable to handle server error", e);
36
34
  }
37
35
  return throwError(error);
38
36
  }
37
+ /**
38
+ * Helper function to check if an error is likely due to a network connection issue.
39
+ *
40
+ * @param error The error object to check.
41
+ * @returns `true` if it's likely a network error, `false` otherwise.
42
+ */
43
+ checkNoNetworkConnection(error) {
44
+ return (error instanceof HttpErrorResponse
45
+ && !error.headers.keys().length
46
+ && !error.ok
47
+ && !error.status
48
+ && !error.error.loaded
49
+ && !error.error.total);
50
+ }
39
51
  }
40
- ErrorHandlerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerInterceptor, deps: [{ token: i1.ConfigService }, { token: i2.ErrorHandlerService }], target: i0.ɵɵFactoryTarget.Injectable });
52
+ ErrorHandlerInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerInterceptor, deps: [{ token: i1.ConfigService }, { token: i2.ErrorHandlerService }, { token: i3.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
41
53
  ErrorHandlerInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerInterceptor, providedIn: 'root' });
42
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: ErrorHandlerInterceptor, decorators: [{
43
55
  type: Injectable,
44
56
  args: [{
45
57
  providedIn: 'root'
46
58
  }]
47
- }], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.ErrorHandlerService }]; } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBSTFDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFbEQ7O0dBRUc7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBRWxDLFlBQW9CLGFBQTRCLEVBQVUsWUFBaUM7UUFBdkUsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7SUFBSSxDQUFDO0lBRWhHLFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVELHFEQUFxRDtJQUM3QyxXQUFXLENBQUMsS0FBd0I7UUFDMUMsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLEtBQUssWUFBWSxVQUFVLEVBQUU7WUFDckMsb0JBQW9CO1lBQ3BCLFlBQVksR0FBRyxpQkFBaUIsSUFBSSxDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQy9GO2FBQU07WUFDTCxvQkFBb0I7WUFDcEIsWUFBWSxHQUFHLGlCQUFpQixJQUFJLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDdEUsSUFBSTtnQkFDRixJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsNERBQTRELENBQUMsQ0FBQzthQUNwRztZQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDakQ7U0FDRjtRQUNELE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzNCLENBQUM7O29IQXhCVSx1QkFBdUI7d0hBQXZCLHVCQUF1QixjQUZ0QixNQUFNOzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnQsIEh0dHBJbnRlcmNlcHRvciwgSHR0cEhhbmRsZXIsIEh0dHBSZXF1ZXN0LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IEVycm9ySGFuZGxlclNlcnZpY2UgfSBmcm9tICcuL2Vycm9yLWhhbmRsZXIuc2VydmljZSc7XG5cbmNvbnN0IGxvZyA9IG5ldyBMb2dnZXIoJ0Vycm9ySGFuZGxlckludGVyY2VwdG9yJyk7XG5cbi8qKlxuICogQWRkcyBhIGRlZmF1bHQgZXJyb3IgaGFuZGxlciB0byBhbGwgcmVxdWVzdHMuXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlckludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlKSB7IH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkpO1xuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgaGVyZSBpZiBuZWVkZWRcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgbGV0IGVycm9yTWVzc2FnZSA9ICcnO1xuICAgIGlmIChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcbiAgICAgIC8vIGNsaWVudC1zaWRlIGVycm9yXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgQ2xpZW50IEVycm9yOiAke3RoaXMuY29uZmlnU2VydmljZT8uZ2V0UHJvamVjdEtleSgpfTogJHtlcnJvci5lcnJvci5tZXNzYWdlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHNlcnZlci1zaWRlIGVycm9yXG4gICAgICBlcnJvck1lc3NhZ2UgPSBgU2VydmVyIEVycm9yOiAke3RoaXMuY29uZmlnU2VydmljZT8uZ2V0UHJvamVjdEtleSgpfWA7XG4gICAgICB0cnkge1xuICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihlcnJvciwgJ1VuZXhwZWN0ZWQgU2VydmVyIEVycm9yLCB0cnkgbGF0ZXIgb3IgY29udGFjdCBzZXJ2aWNlIHRlYW0nKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJVbmFibGUgdG8gaGFuZGxlIHNlcnZlciBlcnJvclwiLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IpO1xuICB9XG5cbn1cbiJdfQ==
59
+ }], ctorParameters: function () { return [{ type: i1.ConfigService }, { type: i2.ErrorHandlerService }, { type: i3.AlertService }]; } });
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvY29yZS9lcnJvci1oYW5kbGVyLmludGVyY2VwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUF3RCxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9HLE9BQU8sRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7QUFLMUMsTUFBTSxHQUFHLEdBQUcsSUFBSSxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUVsRDs7R0FFRztBQUlILE1BQU0sT0FBTyx1QkFBdUI7SUFFbEMsWUFBb0IsYUFBNEIsRUFDdEMsWUFBaUMsRUFDakMsWUFBMEI7UUFGaEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDdEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUksQ0FBQztJQUV6QyxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxxREFBcUQ7SUFDN0MsV0FBVyxDQUFDLEtBQXdCO1FBQzFDLElBQUksSUFBSSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLDhDQUE4QyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3RGLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzFCO1FBQ0QsSUFBSTtZQUNGLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSw0REFBNEQsQ0FBQyxDQUFDO1NBQ3BHO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ2pEO1FBQ0QsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7OztLQUtDO0lBQ0Qsd0JBQXdCLENBQUMsS0FBVTtRQUNqQyxPQUFPLENBQ0wsS0FBSyxZQUFZLGlCQUFpQjtlQUMvQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTTtlQUM1QixDQUFDLEtBQUssQ0FBQyxFQUFFO2VBQ1QsQ0FBQyxLQUFLLENBQUMsTUFBTTtlQUNiLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNO2VBQ25CLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQ3RCLENBQUE7SUFDSCxDQUFDOztvSEF2Q1UsdUJBQXVCO3dIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cEV2ZW50LCBIdHRwSW50ZXJjZXB0b3IsIEh0dHBIYW5kbGVyLCBIdHRwUmVxdWVzdCwgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyBFcnJvckhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnLi9lcnJvci1oYW5kbGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi9hbGVydC5zZXJ2aWNlJztcblxuY29uc3QgbG9nID0gbmV3IExvZ2dlcignRXJyb3JIYW5kbGVySW50ZXJjZXB0b3InKTtcblxuLyoqXG4gKiBBZGRzIGEgZGVmYXVsdCBlcnJvciBoYW5kbGVyIHRvIGFsbCByZXF1ZXN0cy5cbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIGVycm9ySGFuZGxlcjogRXJyb3JIYW5kbGVyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlKSB7IH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoY2F0Y2hFcnJvcihlcnJvciA9PiB0aGlzLmhhbmRsZUVycm9yKGVycm9yKSkpO1xuICB9XG5cbiAgLy8gQ3VzdG9taXplIHRoZSBkZWZhdWx0IGVycm9yIGhhbmRsZXIgaGVyZSBpZiBuZWVkZWRcbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHRoaXMuY2hlY2tOb05ldHdvcmtDb25uZWN0aW9uKGVycm9yKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ0ludGVybmV0IGNvbm5lY3Rpb24gbm90IGF2YWlsYWJsZSwgdHJ5IGxhdGVyJywgJ3dhcm5pbmcnKTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuZXJyb3JIYW5kbGVyLmhhbmRsZUVycm9yKGVycm9yLCAnVW5leHBlY3RlZCBTZXJ2ZXIgRXJyb3IsIHRyeSBsYXRlciBvciBjb250YWN0IHNlcnZpY2UgdGVhbScpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiVW5hYmxlIHRvIGhhbmRsZSBzZXJ2ZXIgZXJyb3JcIiwgZSk7XG4gICAgfVxuICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yKTtcbiAgfVxuXG4gIC8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGFuIGVycm9yIGlzIGxpa2VseSBkdWUgdG8gYSBuZXR3b3JrIGNvbm5lY3Rpb24gaXNzdWUuXG4gKlxuICogQHBhcmFtIGVycm9yIFRoZSBlcnJvciBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgaXQncyBsaWtlbHkgYSBuZXR3b3JrIGVycm9yLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuICBjaGVja05vTmV0d29ya0Nvbm5lY3Rpb24oZXJyb3I6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlXG4gICAgICAmJiAhZXJyb3IuaGVhZGVycy5rZXlzKCkubGVuZ3RoXG4gICAgICAmJiAhZXJyb3Iub2tcbiAgICAgICYmICFlcnJvci5zdGF0dXNcbiAgICAgICYmICFlcnJvci5lcnJvci5sb2FkZWRcbiAgICAgICYmICFlcnJvci5lcnJvci50b3RhbFxuICAgIClcbiAgfVxuXG59XG4iXX0=
@@ -121,7 +121,7 @@ export class EntityFileFormComponent {
121
121
  async fileChanged(event) {
122
122
  this.fileList = event;
123
123
  if (this.fileList.length > 0) {
124
- const result = await this.entityFileService.uploadEntityFile(this.fileList[0]);
124
+ const result = await this.entityFileService.uploadEntityFile(this.fileList[0], { entity_type: this.entityFileGroup.get('entity_type').value });
125
125
  this.entityFileGroup.patchValue(result.item);
126
126
  ;
127
127
  this.fileList = [];
@@ -158,4 +158,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
158
158
  type: Inject,
159
159
  args: [MAT_DIALOG_DATA]
160
160
  }] }, { type: i2.FormValidatorService }, { type: i3.UntypedFormBuilder }, { type: i4.EntityFileService }, { type: i5.AlertService }]; } });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2VudGl0eS1maWxlcy9lbnRpdHktZmlsZS1mb3JtL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9lbnRpdHktZmlsZXMvZW50aXR5LWZpbGUtZm9ybS9lbnRpdHktZmlsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBV2xGLE1BQU0sYUFBYSxHQUFRO0lBQ3pCLEdBQUcsRUFBRTtRQUNILFFBQVEsRUFBRSxrQkFBa0I7S0FDN0I7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLHVCQUF1QjtJQWlCbEMsWUFDUyxTQUFnRCxFQUN2QixJQUFTLEVBQ2pDLG9CQUEwQyxFQUMxQyxFQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsWUFBMEI7UUFMM0IsY0FBUyxHQUFULFNBQVMsQ0FBdUM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFsQnBDLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFHckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7V0FFRztR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RUFDTCxJQUFJLENBQUMsZUFBZSxFQUNwQixhQUFhLENBQ2QsQ0FBQztJQUNKLENBQUM7O29IQXRLVSx1QkFBdUIsOENBbUJ4QixlQUFlO3dHQW5CZCx1QkFBdUIsd0RDeEJwQyw0M0VBbURBOzJGRDNCYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkF1QnpCLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nXCI7XG5pbXBvcnQgeyBVbnR5cGVkRm9ybUdyb3VwLCBVbnR5cGVkRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEVudGl0eUZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vZW50aXR5LWZpbGUuc2VydmljZSc7XG5pbXBvcnQgeyBGaWxlRHJvcHBlckNvbmZpZyB9IGZyb20gJy4uLy4uL2ZpbGUtZHJvcHBlci9maWxlLWRyb3BwZXIubW9kZWwnO1xuaW1wb3J0IHsgVmlld2VyQ29uZmlnIH0gZnJvbSAnLi4vLi4vZG9jdW1lbnQtdmlld2VyL3ZpZXdlci1jb25maWcubW9kZWwnO1xuaW1wb3J0IHsgRm9ybVZhbGlkYXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL2Zvcm0tdmFsaWRhdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYWxlcnQuc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgVGVjaGxpZnlUYWdnZXJUYWdGb3JtQ29uZmlnTW9kZWxcbn0gZnJvbSBcIi4uLy4uL3RlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZC90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gXCJyeGpzXCI7XG5cbmNvbnN0IGVycm9yTWVzc2FnZXM6IGFueSA9IHtcbiAgdXJsOiB7XG4gICAgcmVxdWlyZWQ6IFwiRmlsZSBpcyByZXF1aXJlZFwiXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRpdHktZmlsZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbnRpdHktZmlsZS1mb3JtLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbnRpdHlGaWxlRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGVudGl0eUZpbGVHcm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgYXNzaWdubWVudEZpbGVGaXJzdEF0dGVtcHQ6IGJvb2xlYW47XG4gIHVwZGF0ZU1vZGU6IGJvb2xlYW47XG4gIGZpbGVDb25maWc6IEZpbGVEcm9wcGVyQ29uZmlnO1xuICBmaWxlTGlzdDogYW55W10gPSBbXTtcbiAgdmlld2VyQ29uZmlnOiBWaWV3ZXJDb25maWc7XG4gIGhpZGVUaXRsZUFuZERldGFpbHM6IGJvb2xlYW47XG4gIGlzU2F2aW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB3ZSBhbGxvdyB0YWdnaW5nIGVudGl0eS1maWxlcz9cbiAgICovXG4gIHVzZVRlY2hsaWZ5VGFncyA9IGZhbHNlO1xuICB0ZWNobGlmeVRhZ0NhdGVnb3JpZXM6IHN0cmluZ1tdID0gW107XG4gIHRlY2hsaWZ5VGFnQ29uZmlnOiBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1Db25maWdNb2RlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RW50aXR5RmlsZUZvcm1Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGVudGl0eUZpbGVTZXJ2aWNlOiBFbnRpdHlGaWxlU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICB9XG5cbiAgLyoqIE1ldGhvZCB0byBjcmVhdGUgYSBmb3JtICoqL1xuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgLy9UT0RPOiBGaW5pYWxpemUgYW5kIGFkZCBtb3JlIHZhbGlkYXRpb25zLlxuICAgIHRoaXMuZW50aXR5RmlsZUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogWycnXSxcbiAgICAgIHRpdGxlOiBbJyddLFxuICAgICAgZGV0YWlsczogWycnXSxcbiAgICAgIGVudGl0eV90eXBlOiBbJyddLFxuICAgICAgZW50aXR5X2lkOiBbXSxcbiAgICAgIGZpbGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB1cmw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBmaWxlX3NpemU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB0YWdfaWRzOiBbW11dXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmVudGl0eSkge1xuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAuZ2V0KCdlbnRpdHlfdHlwZScpLnNldFZhbHVlKHRoaXMuZGF0YS5lbnRpdHkuZW50aXR5X3R5cGUpO1xuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAuZ2V0KCdlbnRpdHlfaWQnKS5zZXRWYWx1ZSh0aGlzLmRhdGEuZW50aXR5LmVudGl0eV9pZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGEuZmlsZSkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW50aXR5RmlsZUdyb3VwLnBhdGNoVmFsdWUodGhpcy5kYXRhLmZpbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGE/LmhpZGVUaXRsZUFuZERldGFpbHMpIHtcbiAgICAgIHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlscyA9IHRoaXMuZGF0YT8uaGlkZVRpdGxlQW5kRGV0YWlscztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhPy51c2VUZWNobGlmeVRhZ3MpIHtcbiAgICAgIHRoaXMudXNlVGVjaGxpZnlUYWdzID0gdGhpcy5kYXRhPy51c2VUZWNobGlmeVRhZ3M7XG4gICAgICB0aGlzLnRlY2hsaWZ5VGFnQ2F0ZWdvcmllcyA9IHRoaXMuZGF0YT8udGVjaGxpZnlUYWdDYXRlZ29yaWVzO1xuICAgICAgdGhpcy50ZWNobGlmeVRhZ0NvbmZpZyA9IHRoaXMuZGF0YT8udGVjaGxpZnlUYWdDb25maWc7XG4gICAgICBpZiAodGhpcy5kYXRhLmZpbGU/LnRhZ3MpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAuZ2V0KCd0YWdfaWRzJykuc2V0VmFsdWUoXG4gICAgICAgICAgKHRoaXMuZGF0YS5maWxlPy50YWdzIGFzIFtdKS5tYXAoKHRhZzogYW55KSA9PiB0YWcuaWQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9GaWxlIGRyb3BwZXIgY29uZmlnXG4gICAgdGhpcy5maWxlQ29uZmlnID0ge1xuICAgICAgZmlsZUlkOiBcInN1YmplY3RGaWxlXCIsXG4gICAgICBjb250YWluZXJJZDogXCJzdWJqZWN0RmlsZUNvbnRhaW5lclwiLFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGhlaWdodDogXCIyMDBweFwiXG4gICAgICB9LFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgYWNjZXB0RmlsZTogXCIqXCIsXG4gICAgICBtYXhTaXplOiAxMCxcbiAgICAgIGFjY2VwdEZpbGVUZXh0OiBcIkFsbCBGaWxlc1wiXG4gICAgfTtcblxuICAgIHRoaXMudmlld2VyQ29uZmlnID0ge1xuICAgICAgdmlld2VyU3R5bGU6IHtcbiAgICAgICAgaGVpZ2h0OiAnMjAwcHgnLFxuICAgICAgICB3aWR0aDogJzEwMCUnXG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvL01ldGhvZCB0byB0cmlnZ2VyIHN1Ym1pdFxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgdGhpcy5hc3NpZ25tZW50RmlsZUZpcnN0QXR0ZW1wdCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmVudGl0eUZpbGVHcm91cC52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuZW50aXR5RmlsZUdyb3VwLnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlscykge1xuICAgICAgbW9kZWwudGl0bGUgPSBtb2RlbC5maWxlO1xuICAgIH1cbiAgICBtb2RlbC50YWdfaWRzID0gbW9kZWwudGFnX2lkcy50b1N0cmluZygpO1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgd2l0aDogJ2NyZWF0b3IsdGFncydcbiAgICB9O1xuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMudXBkYXRlTW9kZVxuICAgICAgPyB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLnVwZGF0ZShtb2RlbCwgcGFyYW1zKVxuICAgICAgOiB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLnN0b3JlKG1vZGVsLCBwYXJhbXMpO1xuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlc3VsdDogYW55KSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcbiAgICAgICAgICAgICdGaWxlIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHknLFxuICAgICAgICAgICAgJ3N1Y2Nlc3MnXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuaXNTYXZpbmcgPSBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmlsZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsZUxpc3QgPSBldmVudDtcblxuICAgIGlmICh0aGlzLmZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcblxuICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSBhd2FpdCB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLnVwbG9hZEVudGl0eUZpbGUoXG4gICAgICAgIHRoaXMuZmlsZUxpc3RbMF0sXG4gICAgICApO1xuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAucGF0Y2hWYWx1ZShyZXN1bHQuaXRlbSk7O1xuICAgICAgdGhpcy5maWxlTGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG5cbiAgYXN5bmMgcmVtb3ZlRmlsZSgpIHtcbiAgICBpZiAodGhpcy5lbnRpdHlGaWxlR3JvdXAudmFsdWUuZmlsZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgZmlsZTogXCJcIixcbiAgICAgICAgICB1cmw6IFwiXCJcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcIlVuYWJsZSB0byByZW1vdmUgZmlsZSwgdHJ5IGxhdGVyXCIsIFwid2FyblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChcbiAgICAgIGZpZWxkLFxuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAsXG4gICAgICB0aGlzLmFzc2lnbm1lbnRGaWxlRmlyc3RBdHRlbXB0XG4gICAgKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoXG4gICAgICBmaWVsZCxcbiAgICAgIHRoaXMuZW50aXR5RmlsZUdyb3VwLFxuICAgICAgZXJyb3JNZXNzYWdlc1xuICAgICk7XG4gIH1cblxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJlbnRpdHlGaWxlR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgPGRpdj5FbnRpdHkgRmlsZTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbi49XCJzdGFydFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlVGl0bGVBbmREZXRhaWxzXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHBsYWNlaG9sZGVyPVwiVGl0bGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXRhaWxzXCIgcGxhY2Vob2xkZXI9XCJEZXRhaWxzXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZVRlY2hsaWZ5VGFnc1wiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5UYWc8L21hdC1sYWJlbD5cbiAgICAgICAgICA8YXBwLXRlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZFxuICAgICAgICAgICAgW2NhdGVnb3JpZXNdPVwidGVjaGxpZnlUYWdDYXRlZ29yaWVzXCJcbiAgICAgICAgICAgIG1vZGVsVHlwZT1cImVudGl0eS1maWxlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRhZ19pZHNcIlxuICAgICAgICAgICAgW21vZGVsSWRdPVwiZW50aXR5RmlsZUdyb3VwLmdldCgnaWQnKS52YWx1ZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIG5ldyB0YWdcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJ0ZWNobGlmeVRhZ0NvbmZpZ1wiXG4gICAgICAgICAgPjwvYXBwLXRlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNmaWxlVXBsb2FkPlxuICAgICAgICA8c2VjdGlvbiBmeEZsZXg9XCIxMDAlXCI+XG4gICAgICAgICAgPGRpdj5FbnRpdHkgRmlsZSo8L2Rpdj5cbiAgICAgICAgICA8YXBwLWZpbGUtZHJvcHBlciBbY29uZmlnXT1cImZpbGVDb25maWdcIiAoZmlsZUNoYW5nZWQpPVwiZmlsZUNoYW5nZWQoJGV2ZW50KVwiIFtmaWxlQXJyYXldPVwiZmlsZUxpc3RcIj5cbiAgICAgICAgICA8L2FwcC1maWxlLWRyb3BwZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3VybCcpXCI+XG4gICAgICAgICAgICB7e2dldEVycm9yTWVzc2FnZShcInVybFwiKX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMCVcIiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cImVudGl0eUZpbGVHcm91cC5nZXQoJ3VybCcpLnZhbHVlO2Vsc2UgZmlsZVVwbG9hZDtcIj5cbiAgICAgICAgPGFwcC1kb2N1bWVudC12aWV3ZXIgW2ZpbGVdPVwiZW50aXR5RmlsZUdyb3VwLmdldCgnZmlsZScpLnZhbHVlXCIgW2ZpbGVVcmxdPVwiZW50aXR5RmlsZUdyb3VwLmdldCgndXJsJykudmFsdWVcIlxuICAgICAgICAgIFtjb25maWddPVwidGhpcy52aWV3ZXJDb25maWdcIiAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiIFtkaXNhYmxlRWRpdF09XCJ1cGRhdGVNb2RlXCI+XG4gICAgICAgIDwvYXBwLWRvY3VtZW50LXZpZXdlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbWItMlwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIzMHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmxleD1cIjEwMCVcIj5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCI+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5TYXZlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
161
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGUtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2VudGl0eS1maWxlcy9lbnRpdHktZmlsZS1mb3JtL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9lbnRpdHktZmlsZXMvZW50aXR5LWZpbGUtZm9ybS9lbnRpdHktZmlsZS1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBZ0IsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUF3QyxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBV2xGLE1BQU0sYUFBYSxHQUFRO0lBQ3pCLEdBQUcsRUFBRTtRQUNILFFBQVEsRUFBRSxrQkFBa0I7S0FDN0I7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLHVCQUF1QjtJQWlCbEMsWUFDUyxTQUFnRCxFQUN2QixJQUFTLEVBQ2pDLG9CQUEwQyxFQUMxQyxFQUFzQixFQUN0QixpQkFBb0MsRUFDcEMsWUFBMEI7UUFMM0IsY0FBUyxHQUFULFNBQVMsQ0FBdUM7UUFDdkIsU0FBSSxHQUFKLElBQUksQ0FBSztRQUNqQyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLE9BQUUsR0FBRixFQUFFLENBQW9CO1FBQ3RCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFsQnBDLGFBQVEsR0FBVSxFQUFFLENBQUM7UUFHckIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQjs7V0FFRztR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Q0FBd0M7SUFDeEMsZUFBZSxDQUFDLEtBQWE7UUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsZUFBZSxDQUM5QyxLQUFLLEVBQ0wsSUFBSSxDQUFDLGVBQWUsRUFDcEIsYUFBYSxDQUNkLENBQUM7SUFDSixDQUFDOztvSEF0S1UsdUJBQXVCLDhDQW1CeEIsZUFBZTt3R0FuQmQsdUJBQXVCLHdEQ3hCcEMsNDNFQW1EQTsyRkQzQmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLGtCQUFrQjs7MEJBdUJ6QixNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Hcm91cCwgVW50eXBlZEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5pbXBvcnQgeyBFbnRpdHlGaWxlU2VydmljZSB9IGZyb20gJy4uL2VudGl0eS1maWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlsZURyb3BwZXJDb25maWcgfSBmcm9tICcuLi8uLi9maWxlLWRyb3BwZXIvZmlsZS1kcm9wcGVyLm1vZGVsJztcbmltcG9ydCB7IFZpZXdlckNvbmZpZyB9IGZyb20gJy4uLy4uL2RvY3VtZW50LXZpZXdlci92aWV3ZXItY29uZmlnLm1vZGVsJztcbmltcG9ydCB7IEZvcm1WYWxpZGF0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS9mb3JtLXZhbGlkYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gXCIuLi8uLi9jb3JlL2FsZXJ0LnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gIFRlY2hsaWZ5VGFnZ2VyVGFnRm9ybUNvbmZpZ01vZGVsXG59IGZyb20gXCIuLi8uLi90ZWNobGlmeS10YWdnZXItdGFnLWZvcm0tZmllbGQvdGVjaGxpZnktdGFnZ2VyLXRhZy1mb3JtLWNvbmZpZy5tb2RlbFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbmNvbnN0IGVycm9yTWVzc2FnZXM6IGFueSA9IHtcbiAgdXJsOiB7XG4gICAgcmVxdWlyZWQ6IFwiRmlsZSBpcyByZXF1aXJlZFwiXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlbnRpdHktZmlsZS1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VudGl0eS1maWxlLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lbnRpdHktZmlsZS1mb3JtLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBFbnRpdHlGaWxlRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGVudGl0eUZpbGVHcm91cDogVW50eXBlZEZvcm1Hcm91cDtcbiAgYXNzaWdubWVudEZpbGVGaXJzdEF0dGVtcHQ6IGJvb2xlYW47XG4gIHVwZGF0ZU1vZGU6IGJvb2xlYW47XG4gIGZpbGVDb25maWc6IEZpbGVEcm9wcGVyQ29uZmlnO1xuICBmaWxlTGlzdDogYW55W10gPSBbXTtcbiAgdmlld2VyQ29uZmlnOiBWaWV3ZXJDb25maWc7XG4gIGhpZGVUaXRsZUFuZERldGFpbHM6IGJvb2xlYW47XG4gIGlzU2F2aW5nID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNob3VsZCB3ZSBhbGxvdyB0YWdnaW5nIGVudGl0eS1maWxlcz9cbiAgICovXG4gIHVzZVRlY2hsaWZ5VGFncyA9IGZhbHNlO1xuICB0ZWNobGlmeVRhZ0NhdGVnb3JpZXM6IHN0cmluZ1tdID0gW107XG4gIHRlY2hsaWZ5VGFnQ29uZmlnOiBUZWNobGlmeVRhZ2dlclRhZ0Zvcm1Db25maWdNb2RlbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8RW50aXR5RmlsZUZvcm1Db21wb25lbnQ+LFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55LFxuICAgIHByaXZhdGUgZm9ybVZhbGlkYXRvclNlcnZpY2U6IEZvcm1WYWxpZGF0b3JTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGVudGl0eUZpbGVTZXJ2aWNlOiBFbnRpdHlGaWxlU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICB9XG5cbiAgLyoqIE1ldGhvZCB0byBjcmVhdGUgYSBmb3JtICoqL1xuICBwcml2YXRlIGNyZWF0ZUZvcm0oKSB7XG4gICAgLy9UT0RPOiBGaW5pYWxpemUgYW5kIGFkZCBtb3JlIHZhbGlkYXRpb25zLlxuICAgIHRoaXMuZW50aXR5RmlsZUdyb3VwID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBpZDogWycnXSxcbiAgICAgIHRpdGxlOiBbJyddLFxuICAgICAgZGV0YWlsczogWycnXSxcbiAgICAgIGVudGl0eV90eXBlOiBbJyddLFxuICAgICAgZW50aXR5X2lkOiBbXSxcbiAgICAgIGZpbGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB1cmw6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBmaWxlX3NpemU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB0YWdfaWRzOiBbW11dXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXRhLmVudGl0eSkge1xuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAuZ2V0KCdlbnRpdHlfdHlwZScpLnNldFZhbHVlKHRoaXMuZGF0YS5lbnRpdHkuZW50aXR5X3R5cGUpO1xuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAuZ2V0KCdlbnRpdHlfaWQnKS5zZXRWYWx1ZSh0aGlzLmRhdGEuZW50aXR5LmVudGl0eV9pZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmRhdGEuZmlsZSkge1xuICAgICAgdGhpcy51cGRhdGVNb2RlID0gdHJ1ZTtcbiAgICAgIHRoaXMuZW50aXR5RmlsZUdyb3VwLnBhdGNoVmFsdWUodGhpcy5kYXRhLmZpbGUpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmRhdGE/LmhpZGVUaXRsZUFuZERldGFpbHMpIHtcbiAgICAgIHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlscyA9IHRoaXMuZGF0YT8uaGlkZVRpdGxlQW5kRGV0YWlscztcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhPy51c2VUZWNobGlmeVRhZ3MpIHtcbiAgICAgIHRoaXMudXNlVGVjaGxpZnlUYWdzID0gdGhpcy5kYXRhPy51c2VUZWNobGlmeVRhZ3M7XG4gICAgICB0aGlzLnRlY2hsaWZ5VGFnQ2F0ZWdvcmllcyA9IHRoaXMuZGF0YT8udGVjaGxpZnlUYWdDYXRlZ29yaWVzO1xuICAgICAgdGhpcy50ZWNobGlmeVRhZ0NvbmZpZyA9IHRoaXMuZGF0YT8udGVjaGxpZnlUYWdDb25maWc7XG4gICAgICBpZiAodGhpcy5kYXRhLmZpbGU/LnRhZ3MpIHtcbiAgICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAuZ2V0KCd0YWdfaWRzJykuc2V0VmFsdWUoXG4gICAgICAgICAgKHRoaXMuZGF0YS5maWxlPy50YWdzIGFzIFtdKS5tYXAoKHRhZzogYW55KSA9PiB0YWcuaWQpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy9GaWxlIGRyb3BwZXIgY29uZmlnXG4gICAgdGhpcy5maWxlQ29uZmlnID0ge1xuICAgICAgZmlsZUlkOiBcInN1YmplY3RGaWxlXCIsXG4gICAgICBjb250YWluZXJJZDogXCJzdWJqZWN0RmlsZUNvbnRhaW5lclwiLFxuICAgICAgc3R5bGVzOiB7XG4gICAgICAgIGhlaWdodDogXCIyMDBweFwiXG4gICAgICB9LFxuICAgICAgbXVsdGlwbGU6IGZhbHNlLFxuICAgICAgYWNjZXB0RmlsZTogXCIqXCIsXG4gICAgICBtYXhTaXplOiAxMCxcbiAgICAgIGFjY2VwdEZpbGVUZXh0OiBcIkFsbCBGaWxlc1wiXG4gICAgfTtcblxuICAgIHRoaXMudmlld2VyQ29uZmlnID0ge1xuICAgICAgdmlld2VyU3R5bGU6IHtcbiAgICAgICAgaGVpZ2h0OiAnMjAwcHgnLFxuICAgICAgICB3aWR0aDogJzEwMCUnXG4gICAgICB9XG4gICAgfVxuICB9XG5cblxuICAvL01ldGhvZCB0byB0cmlnZ2VyIHN1Ym1pdFxuICBhc3luYyBzdWJtaXQoKSB7XG4gICAgdGhpcy5hc3NpZ25tZW50RmlsZUZpcnN0QXR0ZW1wdCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmVudGl0eUZpbGVHcm91cC52YWxpZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtb2RlbCA9IHRoaXMuZW50aXR5RmlsZUdyb3VwLnZhbHVlO1xuXG4gICAgaWYgKHRoaXMuaGlkZVRpdGxlQW5kRGV0YWlscykge1xuICAgICAgbW9kZWwudGl0bGUgPSBtb2RlbC5maWxlO1xuICAgIH1cbiAgICBtb2RlbC50YWdfaWRzID0gbW9kZWwudGFnX2lkcy50b1N0cmluZygpO1xuICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgd2l0aDogJ2NyZWF0b3IsdGFncydcbiAgICB9O1xuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3Q6IE9ic2VydmFibGU8YW55PiA9IHRoaXMudXBkYXRlTW9kZVxuICAgICAgPyB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLnVwZGF0ZShtb2RlbCwgcGFyYW1zKVxuICAgICAgOiB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLnN0b3JlKG1vZGVsLCBwYXJhbXMpO1xuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdC5pdGVtKTtcbiAgICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoXG4gICAgICAgICAgJ0ZpbGUgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScsXG4gICAgICAgICAgJ3N1Y2Nlc3MnXG4gICAgICAgICk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHRoaXMuaXNTYXZpbmcgPSBmYWxzZVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmlsZUNoYW5nZWQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuZmlsZUxpc3QgPSBldmVudDtcblxuICAgIGlmICh0aGlzLmZpbGVMaXN0Lmxlbmd0aCA+IDApIHtcblxuICAgICAgY29uc3QgcmVzdWx0OiBhbnkgPSBhd2FpdCB0aGlzLmVudGl0eUZpbGVTZXJ2aWNlLnVwbG9hZEVudGl0eUZpbGUoXG4gICAgICAgIHRoaXMuZmlsZUxpc3RbMF0sIHsgZW50aXR5X3R5cGU6IHRoaXMuZW50aXR5RmlsZUdyb3VwLmdldCgnZW50aXR5X3R5cGUnKS52YWx1ZSB9XG4gICAgICApO1xuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAucGF0Y2hWYWx1ZShyZXN1bHQuaXRlbSk7O1xuICAgICAgdGhpcy5maWxlTGlzdCA9IFtdO1xuICAgIH1cbiAgfVxuXG5cbiAgYXN5bmMgcmVtb3ZlRmlsZSgpIHtcbiAgICBpZiAodGhpcy5lbnRpdHlGaWxlR3JvdXAudmFsdWUuZmlsZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgZmlsZTogXCJcIixcbiAgICAgICAgICB1cmw6IFwiXCJcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcIlVuYWJsZSB0byByZW1vdmUgZmlsZSwgdHJ5IGxhdGVyXCIsIFwid2FyblwiKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipNZXRob2QgdG8gZXZhbHVhdGUgZm9ybSBmaWVsZHMqL1xuICBpc0ZpZWxkVmFsaWQoZmllbGQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmZvcm1WYWxpZGF0b3JTZXJ2aWNlLmlzRmllbGRWYWxpZChcbiAgICAgIGZpZWxkLFxuICAgICAgdGhpcy5lbnRpdHlGaWxlR3JvdXAsXG4gICAgICB0aGlzLmFzc2lnbm1lbnRGaWxlRmlyc3RBdHRlbXB0XG4gICAgKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoXG4gICAgICBmaWVsZCxcbiAgICAgIHRoaXMuZW50aXR5RmlsZUdyb3VwLFxuICAgICAgZXJyb3JNZXNzYWdlc1xuICAgICk7XG4gIH1cblxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJlbnRpdHlGaWxlR3JvdXBcIiAobmdTdWJtaXQpPVwic3VibWl0KClcIj5cbiAgPGRpdiBmeExheW91dD1cImNvbHVtblwiIGNsYXNzPVwibWF0LXR5cG9ncmFwaHlcIj5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgPGRpdj5FbnRpdHkgRmlsZTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRBbGlnbi49XCJzdGFydFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlVGl0bGVBbmREZXRhaWxzXCI+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiIHBsYWNlaG9sZGVyPVwiVGl0bGVcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgIDx0ZXh0YXJlYSBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkZXRhaWxzXCIgcGxhY2Vob2xkZXI9XCJEZXRhaWxzXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInVzZVRlY2hsaWZ5VGFnc1wiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPG1hdC1sYWJlbD5UYWc8L21hdC1sYWJlbD5cbiAgICAgICAgICA8YXBwLXRlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZFxuICAgICAgICAgICAgW2NhdGVnb3JpZXNdPVwidGVjaGxpZnlUYWdDYXRlZ29yaWVzXCJcbiAgICAgICAgICAgIG1vZGVsVHlwZT1cImVudGl0eS1maWxlXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRhZ19pZHNcIlxuICAgICAgICAgICAgW21vZGVsSWRdPVwiZW50aXR5RmlsZUdyb3VwLmdldCgnaWQnKS52YWx1ZVwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIG5ldyB0YWdcIlxuICAgICAgICAgICAgW2NvbmZpZ109XCJ0ZWNobGlmeVRhZ0NvbmZpZ1wiXG4gICAgICAgICAgPjwvYXBwLXRlY2hsaWZ5LXRhZ2dlci10YWctZm9ybS1maWVsZD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNmaWxlVXBsb2FkPlxuICAgICAgICA8c2VjdGlvbiBmeEZsZXg9XCIxMDAlXCI+XG4gICAgICAgICAgPGRpdj5FbnRpdHkgRmlsZSo8L2Rpdj5cbiAgICAgICAgICA8YXBwLWZpbGUtZHJvcHBlciBbY29uZmlnXT1cImZpbGVDb25maWdcIiAoZmlsZUNoYW5nZWQpPVwiZmlsZUNoYW5nZWQoJGV2ZW50KVwiIFtmaWxlQXJyYXldPVwiZmlsZUxpc3RcIj5cbiAgICAgICAgICA8L2FwcC1maWxlLWRyb3BwZXI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJpc0ZpZWxkVmFsaWQoJ3VybCcpXCI+XG4gICAgICAgICAgICB7e2dldEVycm9yTWVzc2FnZShcInVybFwiKX19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2IGZ4RmxleD1cIjEwMCVcIiBjbGFzcz1cIm10LTJcIiAqbmdJZj1cImVudGl0eUZpbGVHcm91cC5nZXQoJ3VybCcpLnZhbHVlO2Vsc2UgZmlsZVVwbG9hZDtcIj5cbiAgICAgICAgPGFwcC1kb2N1bWVudC12aWV3ZXIgW2ZpbGVdPVwiZW50aXR5RmlsZUdyb3VwLmdldCgnZmlsZScpLnZhbHVlXCIgW2ZpbGVVcmxdPVwiZW50aXR5RmlsZUdyb3VwLmdldCgndXJsJykudmFsdWVcIlxuICAgICAgICAgIFtjb25maWddPVwidGhpcy52aWV3ZXJDb25maWdcIiAocmVtb3ZlKT1cInJlbW92ZUZpbGUoKVwiIFtkaXNhYmxlRWRpdF09XCJ1cGRhdGVNb2RlXCI+XG4gICAgICAgIDwvYXBwLWRvY3VtZW50LXZpZXdlcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm10LTQgbWItMlwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIzMHB4XCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiIGZ4RmxleD1cIjEwMCVcIj5cbiAgICAgICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSgpXCI+XG4gICAgICAgICAgQ2FuY2VsXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjb2xvcj1cInByaW1hcnlcIj5TYXZlPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
@@ -15,6 +15,8 @@ export class EntityFileService extends TechlifyServiceBaseClass {
15
15
  formData.append("fileData", file, file.name);
16
16
  if (params?.entity_id) {
17
17
  formData.append('entity_id', params.entity_id);
18
+ }
19
+ if (params?.entity_type) {
18
20
  formData.append('entity_type', params.entity_type);
19
21
  }
20
22
  params?.disk ? formData.append('disk', params.disk) : null;
@@ -35,4 +37,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
35
37
  providedIn: 'root'
36
38
  }]
37
39
  }], ctorParameters: function () { return [{ type: i1.HttpService }]; } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUt6RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsd0JBQXdCO0lBRTdELFlBQW1CLElBQWlCO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFEWCxTQUFJLEdBQUosSUFBSSxDQUFhO0lBRXBDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUsTUFBWTtRQUN2QyxNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUMvQyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRCxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2RSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsVUFBVSxFQUFFO2FBQ1osSUFBSSxDQUNILHlCQUF5QixFQUN6QixRQUFRLENBQ1QsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNFLENBQUM7OzhHQS9CVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB9IGZyb20gXCIuLi9iYXNlLW1vZGVsXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUZpbGVTZXJ2aWNlIGV4dGVuZHMgVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzIHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cFNlcnZpY2UpIHtcbiAgICBzdXBlcihodHRwLCAnZW50aXR5LWZpbGVzJyk7XG4gIH1cblxuICBkZWxldGVFbnRpdHlGaWxlKG1vZGVsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgYXBpL2VudGl0eS1maWxlcy8ke21vZGVsLmlkfWApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgdXBsb2FkRW50aXR5RmlsZShmaWxlOiBGaWxlLCBwYXJhbXM/OiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlRGF0YVwiLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIGlmIChwYXJhbXM/LmVudGl0eV9pZCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbnRpdHlfaWQnLCBwYXJhbXMuZW50aXR5X2lkKTtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZW50aXR5X3R5cGUnLCBwYXJhbXMuZW50aXR5X3R5cGUpO1xuICAgIH1cblxuICAgIHBhcmFtcz8uZGlzayA/IGZvcm1EYXRhLmFwcGVuZCgnZGlzaycsIHBhcmFtcy5kaXNrKSA6IG51bGw7XG4gICAgcGFyYW1zPy5zdWJfcGF0aCA/IGZvcm1EYXRhLmFwcGVuZCgnc3ViX3BhdGgnLCBwYXJhbXMuc3ViX3BhdGgpIDogbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5za2lwSGVhZGVyKClcbiAgICAgIC5wb3N0KFxuICAgICAgICBcImFwaS9lbnRpdHktZmlsZXMtdXBsb2FkXCIsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGJ1bGtVcGRhdGUobW9kZWwpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGFwaS9lbnRpdHktZmlsZXMvYnVsay11cGRhdGVgLCBtb2RlbCkudG9Qcm9taXNlKCk7XG4gIH1cblxufVxuIl19
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LWZpbGUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvZW50aXR5LWZpbGVzL2VudGl0eS1maWxlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUt6RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsd0JBQXdCO0lBRTdELFlBQW1CLElBQWlCO1FBQ2xDLEtBQUssQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFEWCxTQUFJLEdBQUosSUFBSSxDQUFhO0lBRXBDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFVLEVBQUUsTUFBWTtRQUN2QyxNQUFNLFFBQVEsR0FBYSxJQUFJLFFBQVEsRUFBRSxDQUFDO1FBQzFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0MsSUFBSSxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3JCLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNoRDtRQUNELElBQUksTUFBTSxFQUFFLFdBQVcsRUFBRTtZQUN2QixRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDcEQ7UUFFRCxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRCxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUV2RSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsVUFBVSxFQUFFO2FBQ1osSUFBSSxDQUNILHlCQUF5QixFQUN6QixRQUFRLENBQ1QsQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQzNFLENBQUM7OzhHQWpDVSxpQkFBaUI7a0hBQWpCLGlCQUFpQixjQUZoQixNQUFNOzJGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwU2VydmljZSB9IGZyb20gJy4uL2NvcmUvaHR0cC5zZXJ2aWNlJztcbmltcG9ydCB7IFRlY2hsaWZ5U2VydmljZUJhc2VDbGFzcyB9IGZyb20gXCIuLi9iYXNlLW1vZGVsXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEVudGl0eUZpbGVTZXJ2aWNlIGV4dGVuZHMgVGVjaGxpZnlTZXJ2aWNlQmFzZUNsYXNzIHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cFNlcnZpY2UpIHtcbiAgICBzdXBlcihodHRwLCAnZW50aXR5LWZpbGVzJyk7XG4gIH1cblxuICBkZWxldGVFbnRpdHlGaWxlKG1vZGVsOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgYXBpL2VudGl0eS1maWxlcy8ke21vZGVsLmlkfWApLnRvUHJvbWlzZSgpO1xuICB9XG5cbiAgdXBsb2FkRW50aXR5RmlsZShmaWxlOiBGaWxlLCBwYXJhbXM/OiBhbnkpIHtcbiAgICBjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoXCJmaWxlRGF0YVwiLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgIGlmIChwYXJhbXM/LmVudGl0eV9pZCkge1xuICAgICAgZm9ybURhdGEuYXBwZW5kKCdlbnRpdHlfaWQnLCBwYXJhbXMuZW50aXR5X2lkKTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcz8uZW50aXR5X3R5cGUpIHtcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZW50aXR5X3R5cGUnLCBwYXJhbXMuZW50aXR5X3R5cGUpO1xuICAgIH1cblxuICAgIHBhcmFtcz8uZGlzayA/IGZvcm1EYXRhLmFwcGVuZCgnZGlzaycsIHBhcmFtcy5kaXNrKSA6IG51bGw7XG4gICAgcGFyYW1zPy5zdWJfcGF0aCA/IGZvcm1EYXRhLmFwcGVuZCgnc3ViX3BhdGgnLCBwYXJhbXMuc3ViX3BhdGgpIDogbnVsbDtcblxuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5za2lwSGVhZGVyKClcbiAgICAgIC5wb3N0KFxuICAgICAgICBcImFwaS9lbnRpdHktZmlsZXMtdXBsb2FkXCIsXG4gICAgICAgIGZvcm1EYXRhLFxuICAgICAgKS50b1Byb21pc2UoKTtcbiAgfVxuXG4gIGJ1bGtVcGRhdGUobW9kZWwpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYGFwaS9lbnRpdHktZmlsZXMvYnVsay11cGRhdGVgLCBtb2RlbCkudG9Qcm9taXNlKCk7XG4gIH1cblxufVxuIl19
@@ -7,11 +7,14 @@ import * as i2 from "../../core";
7
7
  import * as i3 from "../current-user.service";
8
8
  import * as i4 from "@angular/common";
9
9
  import * as i5 from "@angular/material/button";
10
+ import * as i6 from "@angular/material/icon";
11
+ import * as i7 from "@angular/material/tooltip";
10
12
  let UserEnableButtonComponent = class UserEnableButtonComponent {
11
13
  constructor(service, alertService, currentUserService) {
12
14
  this.service = service;
13
15
  this.alertService = alertService;
14
16
  this.currentUserService = currentUserService;
17
+ this.isUseIcons = false;
15
18
  this.onSave = new EventEmitter();
16
19
  }
17
20
  ngOnInit() {
@@ -37,7 +40,7 @@ let UserEnableButtonComponent = class UserEnableButtonComponent {
37
40
  }
38
41
  };
39
42
  UserEnableButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserEnableButtonComponent, deps: [{ token: i1.UserService }, { token: i2.AlertService }, { token: i3.CurrentUserService }], target: i0.ɵɵFactoryTarget.Component });
40
- UserEnableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UserEnableButtonComponent, selector: "app-user-enable-button", inputs: { user: "user" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n</button>\n<button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n</button>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }] });
43
+ UserEnableButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UserEnableButtonComponent, selector: "app-user-enable-button", inputs: { user: "user", isUseIcons: "isUseIcons" }, outputs: { onSave: "onSave" }, ngImport: i0, template: "<ng-container *ngIf=\"!isUseIcons\">\n <button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n </button>\n <button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"isUseIcons\">\n <button mat-icon-button class=\"text-danger\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\" matTooltip=\"Enable User\">\n <mat-icon>person_off</mat-icon>\n </button>\n <button mat-icon-button class=\"text-success\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\" matTooltip=\"Disables User\">\n <mat-icon>task_alt</mat-icon>\n </button>\n</ng-container>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
41
44
  UserEnableButtonComponent = __decorate([
42
45
  UntilDestroy()
43
46
  /**
@@ -50,10 +53,12 @@ UserEnableButtonComponent = __decorate([
50
53
  export { UserEnableButtonComponent };
51
54
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UserEnableButtonComponent, decorators: [{
52
55
  type: Component,
53
- args: [{ selector: 'app-user-enable-button', template: "<button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n</button>\n<button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n</button>\n" }]
56
+ args: [{ selector: 'app-user-enable-button', template: "<ng-container *ngIf=\"!isUseIcons\">\n <button mat-stroked-button color=\"warn\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\">\n Disable\n </button>\n <button mat-raised-button color=\"primary\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\">\n Enable\n </button>\n</ng-container>\n\n<ng-container *ngIf=\"isUseIcons\">\n <button mat-icon-button class=\"text-danger\" *ngIf=\"user?.user_client?.is_enabled\n && user?.id !== currentUser?.id\n && currentUserService.hasPermission('user_disable')\" (click)=\"disableUser()\" matTooltip=\"Enable User\">\n <mat-icon>person_off</mat-icon>\n </button>\n <button mat-icon-button class=\"text-success\" *ngIf=\"!user?.user_client?.is_enabled\n&& user?.id !== currentUser?.id\n&& currentUserService.hasPermission('user_enable')\" (click)=\"enableUser()\" matTooltip=\"Disables User\">\n <mat-icon>task_alt</mat-icon>\n </button>\n</ng-container>" }]
54
57
  }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.AlertService }, { type: i3.CurrentUserService }]; }, propDecorators: { user: [{
55
58
  type: Input
59
+ }], isUseIcons: [{
60
+ type: Input
56
61
  }], onSave: [{
57
62
  type: Output
58
63
  }] } });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lbmFibGUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWVuYWJsZS1idXR0b24tY29tcG9uZW50L3VzZXItZW5hYmxlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3VzZXIvdXNlci1lbmFibGUtYnV0dG9uLWNvbXBvbmVudC91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7O0lBZXhDLHlCQUF5QixTQUF6Qix5QkFBeUI7SUFPcEMsWUFDVSxPQUFvQixFQUNwQixZQUEwQixFQUMzQixrQkFBc0M7UUFGckMsWUFBTyxHQUFQLE9BQU8sQ0FBYTtRQUNwQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMzQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBRTdDLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFHRCxVQUFVO1FBQ1IsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyRSxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNqQyxHQUFHLENBQUMsRUFBRTtZQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsS0FBSyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUNyRSxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUNsQyxHQUFHLENBQUMsRUFBRTtZQUNKLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRixDQUFBO3NIQTNDWSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix1SENsQnRDLGtnQkFVQTtBRFFhLHlCQUF5QjtJQVhyQyxZQUFZLEVBQUU7SUFDZjs7Ozs7T0FLRztHQUtVLHlCQUF5QixDQTJDckM7U0EzQ1kseUJBQXlCOzJGQUF6Qix5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0Usd0JBQXdCOzhKQUt6QixJQUFJO3NCQUFaLEtBQUs7Z0JBR0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL3VzZXIubW9kZWwnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVW50aWxEZXN0cm95IH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IEFsZXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL2NvcmUnO1xuaW1wb3J0IHsgQ3VycmVudFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vY3VycmVudC11c2VyLnNlcnZpY2UnO1xuXG5AVW50aWxEZXN0cm95KClcbi8qKlxuICogQ29tcG9uZW50IHRvIHZpZXcgdGhlIHNldCBvZiB1c2Vyc1xuICpcbiAqIEBhdXRob3IgSm9zaHVhIEtpc3Nvb25cbiAqIEBzaW5jZSAyMDE3MDcxMFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtdXNlci1lbmFibGUtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3VzZXItZW5hYmxlLWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgVXNlckVuYWJsZUJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgdXNlcjogYW55O1xuICBjdXJyZW50VXNlcjogVXNlcjtcblxuICBAT3V0cHV0KCkgb25TYXZlOiBFdmVudEVtaXR0ZXI8VXNlcj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5vblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXI+KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy5jdXJyZW50VXNlclNlcnZpY2UuZ2V0VXNlcigpO1xuICB9XG5cblxuICBlbmFibGVVc2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRVc2VyLmlkID09PSB0aGlzPy51c2VyPy5pZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ0N1cnJlbnQgdXNlciBjYW5ub3QgYmUgY2hhbmdlZCcsICd3YXJuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VydmljZS5lbmFibGUodGhpcy51c2VyKS50aGVuKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLnVzZXIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBkaXNhYmxlVXNlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VXNlci5pZCA9PT0gdGhpcz8udXNlcj8uaWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDdXJyZW50IHVzZXIgY2Fubm90IGJlIGNoYW5nZWQnLCAnd2FybicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2UuZGlzYWJsZSh0aGlzLnVzZXIpLnRoZW4oXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMudXNlcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuXG4iLCI8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cIndhcm5cIiAqbmdJZj1cInVzZXI/LnVzZXJfY2xpZW50Py5pc19lbmFibGVkXG4gICAgICAgICAgICAgICAgICAgICYmIHVzZXI/LmlkICE9PSBjdXJyZW50VXNlcj8uaWRcbiAgICAgICAgICAgICAgICAgICAgJiYgY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfZGlzYWJsZScpXCIgKGNsaWNrKT1cImRpc2FibGVVc2VyKClcIj5cbiAgRGlzYWJsZVxuPC9idXR0b24+XG48YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiICpuZ0lmPVwiIXVzZXI/LnVzZXJfY2xpZW50Py5pc19lbmFibGVkXG4gICAgICAgICAgICAgICAgICAmJiB1c2VyPy5pZCAhPT0gY3VycmVudFVzZXI/LmlkXG4gICAgICAgICAgICAgICAgICAmJiBjdXJyZW50VXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbigndXNlcl9lbmFibGUnKVwiIChjbGljayk9XCJlbmFibGVVc2VyKClcIj5cbiAgRW5hYmxlXG48L2J1dHRvbj5cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1lbmFibGUtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvdXNlci91c2VyLWVuYWJsZS1idXR0b24tY29tcG9uZW50L3VzZXItZW5hYmxlLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL3VzZXIvdXNlci1lbmFibGUtYnV0dG9uLWNvbXBvbmVudC91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7SUFleEMseUJBQXlCLFNBQXpCLHlCQUF5QjtJQVFwQyxZQUNVLE9BQW9CLEVBQ3BCLFlBQTBCLEVBQzNCLGtCQUFzQztRQUZyQyxZQUFPLEdBQVAsT0FBTyxDQUFhO1FBQ3BCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFSdEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQVVuQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDekMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN2RCxDQUFDO0lBR0QsVUFBVTtRQUNSLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDakMsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLEtBQUssSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDMUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDckUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FDbEMsR0FBRyxDQUFDLEVBQUU7WUFDSixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0NBQ0YsQ0FBQTtzSEE1Q1kseUJBQXlCOzBHQUF6Qix5QkFBeUIsaUpDbEJ0QyxxbUNBd0JlO0FETkYseUJBQXlCO0lBWHJDLFlBQVksRUFBRTtJQUNmOzs7OztPQUtHO0dBS1UseUJBQXlCLENBNENyQztTQTVDWSx5QkFBeUI7MkZBQXpCLHlCQUF5QjtrQkFKckMsU0FBUzsrQkFDRSx3QkFBd0I7OEpBS3pCLElBQUk7c0JBQVosS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi91c2VyLm1vZGVsJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vdXNlci5zZXJ2aWNlJztcbmltcG9ydCB7IFVudGlsRGVzdHJveSB9IGZyb20gJ0BuZ25lYXQvdW50aWwtZGVzdHJveSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IEN1cnJlbnRVc2VyU2VydmljZSB9IGZyb20gJy4uL2N1cnJlbnQtdXNlci5zZXJ2aWNlJztcblxuQFVudGlsRGVzdHJveSgpXG4vKipcbiAqIENvbXBvbmVudCB0byB2aWV3IHRoZSBzZXQgb2YgdXNlcnNcbiAqXG4gKiBAYXV0aG9yIEpvc2h1YSBLaXNzb29uXG4gKiBAc2luY2UgMjAxNzA3MTBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXVzZXItZW5hYmxlLWJ1dHRvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi91c2VyLWVuYWJsZS1idXR0b24uY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFVzZXJFbmFibGVCdXR0b25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHVzZXI6IGFueTtcbiAgQElucHV0KCkgaXNVc2VJY29uczogYm9vbGVhbiA9IGZhbHNlO1xuICBjdXJyZW50VXNlcjogVXNlcjtcblxuICBAT3V0cHV0KCkgb25TYXZlOiBFdmVudEVtaXR0ZXI8VXNlcj47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXJyZW50VXNlclNlcnZpY2U6IEN1cnJlbnRVc2VyU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy5vblNhdmUgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXI+KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN1cnJlbnRVc2VyID0gdGhpcy5jdXJyZW50VXNlclNlcnZpY2UuZ2V0VXNlcigpO1xuICB9XG5cblxuICBlbmFibGVVc2VyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRVc2VyLmlkID09PSB0aGlzPy51c2VyPy5pZCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkQWxlcnQoJ0N1cnJlbnQgdXNlciBjYW5ub3QgYmUgY2hhbmdlZCcsICd3YXJuJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2VydmljZS5lbmFibGUodGhpcy51c2VyKS50aGVuKFxuICAgICAgcmVzID0+IHtcbiAgICAgICAgdGhpcy5vblNhdmUuZW1pdCh0aGlzLnVzZXIpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBkaXNhYmxlVXNlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VXNlci5pZCA9PT0gdGhpcz8udXNlcj8uaWQpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDdXJyZW50IHVzZXIgY2Fubm90IGJlIGNoYW5nZWQnLCAnd2FybicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlcnZpY2UuZGlzYWJsZSh0aGlzLnVzZXIpLnRoZW4oXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHRoaXMudXNlcik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVXNlSWNvbnNcIj5cbiAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKm5nSWY9XCJ1c2VyPy51c2VyX2NsaWVudD8uaXNfZW5hYmxlZFxuICAmJiB1c2VyPy5pZCAhPT0gY3VycmVudFVzZXI/LmlkXG4gICYmIGN1cnJlbnRVc2VyU2VydmljZS5oYXNQZXJtaXNzaW9uKCd1c2VyX2Rpc2FibGUnKVwiIChjbGljayk9XCJkaXNhYmxlVXNlcigpXCI+XG4gICAgRGlzYWJsZVxuICA8L2J1dHRvbj5cbiAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAqbmdJZj1cIiF1c2VyPy51c2VyX2NsaWVudD8uaXNfZW5hYmxlZFxuJiYgdXNlcj8uaWQgIT09IGN1cnJlbnRVc2VyPy5pZFxuJiYgY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfZW5hYmxlJylcIiAoY2xpY2spPVwiZW5hYmxlVXNlcigpXCI+XG4gICAgRW5hYmxlXG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc1VzZUljb25zXCI+XG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cInVzZXI/LnVzZXJfY2xpZW50Py5pc19lbmFibGVkXG4gICYmIHVzZXI/LmlkICE9PSBjdXJyZW50VXNlcj8uaWRcbiAgJiYgY3VycmVudFVzZXJTZXJ2aWNlLmhhc1Blcm1pc3Npb24oJ3VzZXJfZGlzYWJsZScpXCIgKGNsaWNrKT1cImRpc2FibGVVc2VyKClcIiBtYXRUb29sdGlwPVwiRW5hYmxlIFVzZXJcIj5cbiAgICA8bWF0LWljb24+cGVyc29uX29mZjwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiBjbGFzcz1cInRleHQtc3VjY2Vzc1wiICpuZ0lmPVwiIXVzZXI/LnVzZXJfY2xpZW50Py5pc19lbmFibGVkXG4mJiB1c2VyPy5pZCAhPT0gY3VycmVudFVzZXI/LmlkXG4mJiBjdXJyZW50VXNlclNlcnZpY2UuaGFzUGVybWlzc2lvbigndXNlcl9lbmFibGUnKVwiIChjbGljayk9XCJlbmFibGVVc2VyKClcIiBtYXRUb29sdGlwPVwiRGlzYWJsZXMgVXNlclwiPlxuICAgIDxtYXQtaWNvbj50YXNrX2FsdDwvbWF0LWljb24+XG4gIDwvYnV0dG9uPlxuPC9uZy1jb250YWluZXI+Il19
@@ -190,7 +190,7 @@ let UsersViewAllComponent = class UsersViewAllComponent {
190
190
  }
191
191
  };
192
192
  UsersViewAllComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UsersViewAllComponent, deps: [{ token: i1.HttpService }, { token: i1.AlertService }, { token: i2.CurrentUserService }, { token: i3.UserConfigService }, { token: i4.MatDialog }, { token: i5.UserService }, { token: i6.UntypedFormBuilder }, { token: i7.RequestHelperService }], target: i0.ɵɵFactoryTarget.Component });
193
- UsersViewAllComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UsersViewAllComponent, selector: "app-users-view-all", inputs: { clientId: "clientId", userTypeIds: "userTypeIds", title: "title" }, ngImport: i0, template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <section fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"10px\" class=\"mb-2\">\n <h3 class=\"mb-0\">\n {{ title }}\n </h3>\n <mat-icon class=\"cursor-pointer\" matTooltip=\"New User\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (click)=\"createOrEditUser()\">add</mat-icon>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\" *ngIf=\"config?.userConfig?.showImportButton\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Manage Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <mat-card class=\"mb-2\">\n <mat-card-content>\n <form [formGroup]=\"userFilterForm\" fxLayout fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\" formControlName=\"search\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group formControlName=\"enabled\">\n <mat-button-toggle [value]=\"true\">Enabled Users</mat-button-toggle>\n <mat-button-toggle [value]=\"false\">All Users</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"usersDataSource\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"onSortChange($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n {{ element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <mat-chip-list fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"5px\">\n <mat-chip *ngFor=\"let role of element?.roles\">{{role?.label}}</mat-chip>\n </mat-chip-list>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div fxLayout fxLayoutAlign=\"start center\" fxLayoutGap=\"5px\">\n <button type=\"button\" mat-icon-button [routerLink]=\"[element.id]\">\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button *ngIf=\"currentUserService.hasPermission('user_update')\" type=\"button\" mat-icon-button\n (click)=\"createOrEditUser(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"currentUserService.hasPermission('user_delete')\" type=\"button\" mat-icon-button\n (click)=\"deleteUser(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n <app-user-enable-button [user]=\"element\" (onSave)=\"reload()\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>\n", dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i15.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i16.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i16.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i17.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i17.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i18.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i19.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i19.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i20.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i20.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i20.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i21.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i22.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i23.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i24.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i25.UserEnableButtonComponent, selector: "app-user-enable-button", inputs: ["user"], outputs: ["onSave"] }, { kind: "pipe", type: i8.DatePipe, name: "date" }] });
193
+ UsersViewAllComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UsersViewAllComponent, selector: "app-users-view-all", inputs: { clientId: "clientId", userTypeIds: "userTypeIds", title: "title" }, ngImport: i0, template: "<div [ngClass]=\"{'m-4':config?.userConfig?.showDefaultMargin}\">\n <section fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"10px\" class=\"mb-2\">\n <h3 class=\"mb-0\">\n {{ title }}\n </h3>\n <mat-icon class=\"cursor-pointer\" matTooltip=\"New User\"\n *ngIf=\"config?.userConfig?.showAddUser && currentUserService?.hasPermission('user_create')\"\n (click)=\"createOrEditUser()\">add</mat-icon>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../import']\" *ngIf=\"config?.userConfig?.showImportButton\">\n Import User\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../roles']\" *ngIf=\"config?.userConfig?.showRoles\">\n <mat-icon>people</mat-icon>\n Manage Roles\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../role-permissions']\"\n *ngIf=\"config?.userConfig?.showPermissions\">\n <mat-icon>lock</mat-icon>\n Role Permissions\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../configurations']\"\n *ngIf=\"config?.userConfig?.showConfigurations && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n toggle_on\n </span>\n </mat-icon>\n Configurations\n </button>\n <button mat-raised-button type=\"button\" [routerLink]=\"['../restrictors']\"\n *ngIf=\"config?.userConfig?.showRestrictors && currentUser?.user_type_id === 2\">\n <mat-icon>\n <span class=\"material-icons-outlined\">\n vpn_lock\n </span>\n </mat-icon>\n Restrictors\n </button>\n </section>\n <mat-card class=\"mb-2\">\n <mat-card-content>\n <form [formGroup]=\"userFilterForm\" fxLayout fxLayoutAlign=\"start center\" fxLayoutGap=\"10px\">\n <mat-form-field>\n <mat-label>Search</mat-label>\n <input autocomplete=\"off\" matInput type=\"text\" name=\"search\" placeholder=\"Search by name, email\" formControlName=\"search\">\n </mat-form-field>\n <mat-form-field>\n <mat-label>Role</mat-label>\n <app-searchable-selector apiUrl=\"api/roles\" [multiple]=\"true\" formControlName=\"role_ids\"\n titleField=\"label\"></app-searchable-selector>\n </mat-form-field>\n <mat-button-toggle-group formControlName=\"enabled\">\n <mat-button-toggle [value]=\"true\">Enabled Users</mat-button-toggle>\n <mat-button-toggle [value]=\"false\">All Users</mat-button-toggle>\n </mat-button-toggle-group>\n </form>\n </mat-card-content>\n </mat-card>\n <mat-card class=\"mt-2 p-0\">\n <mat-card-content>\n <table mat-table [dataSource]=\"usersDataSource\" class=\"w-100\" aria-describedby=\"Users\" infiniteScroll\n [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\" [infiniteScrollContainer]=\"scrollContainer\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\" matSort (matSortChange)=\"onSortChange($event)\">\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = index;\"> {{ i + 1 }} </td>\n </ng-container>\n\n <!-- Name Column -->\n <ng-container matColumnDef=\"name\">\n <th mat-header-cell mat-sort-header=\"name\" *matHeaderCellDef> Name </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [routerLink]=\"[element?.id]\" class=\"text-decoration-none\">\n {{ element.name }}\n </a>\n <p class=\"mb-0 text-secondary\">\n {{ element?.user_client?.is_enabled ? 'Enabled' : 'Disabled' }}\n </p>\n </td>\n </ng-container>\n\n <!-- Email Column -->\n <ng-container matColumnDef=\"email\">\n <th mat-header-cell mat-sort-header=\"email\" *matHeaderCellDef> Email </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.email}} </td>\n </ng-container>\n\n <!-- Type Column -->\n <ng-container matColumnDef=\"type\">\n <th mat-header-cell mat-sort-header=\"user_type_id\" *matHeaderCellDef> User Type </th>\n <td mat-cell *matCellDef=\"let element\"> {{ getUserType(element) }} </td>\n </ng-container>\n\n <!-- Roles Column -->\n <ng-container matColumnDef=\"roles\">\n <th mat-header-cell *matHeaderCellDef> Role </th>\n <td mat-cell *matCellDef=\"let element\">\n <mat-chip-list fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"5px\">\n <mat-chip *ngFor=\"let role of element?.roles\">{{role?.label}}</mat-chip>\n </mat-chip-list>\n </td>\n </ng-container>\n\n <!-- Last Login Column -->\n <ng-container matColumnDef=\"last_login\">\n <th mat-header-cell *matHeaderCellDef> Last Login </th>\n <td mat-cell *matCellDef=\"let element\">{{ element?.last_login | date:'medium' }}</td>\n </ng-container>\n\n <!-- Added By Column -->\n <ng-container matColumnDef=\"added_by\">\n <th mat-header-cell *matHeaderCellDef> Added By </th>\n <td mat-cell *matCellDef=\"let element\">\n <p class=\"mb-0\">{{ element?.creator?.name }}</p>\n <p class=\"text-secondary\">{{ element?.created_at | date }}</p>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Action </th>\n <td mat-cell *matCellDef=\"let element\">\n <div fxLayout fxLayoutAlign=\"start center\" fxLayoutGap=\"5px\">\n <button type=\"button\" mat-icon-button [routerLink]=\"[element.id]\">\n <mat-icon>visibility</mat-icon>\n </button>\n\n <button *ngIf=\"currentUserService.hasPermission('user_update')\" type=\"button\" mat-icon-button\n (click)=\"createOrEditUser(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"currentUserService.hasPermission('user_delete')\" type=\"button\" mat-icon-button\n (click)=\"deleteUser(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n <app-user-enable-button [user]=\"element\" (onSave)=\"reload()\"></app-user-enable-button>\n </div>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n <mat-progress-bar *ngIf=\"isWorking\" mode=\"indeterminate\"></mat-progress-bar>\n </mat-card-content>\n </mat-card>\n</div>\n", dependencies: [{ kind: "directive", type: i8.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i8.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i8.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i9.RouterLink, selector: ":not(a):not(area)[routerLink]", inputs: ["queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatLabel, selector: "mat-label" }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i13.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: i14.MatSort, selector: "[matSort]", inputs: ["matSortDisabled", "matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i14.MatSortHeader, selector: "[mat-sort-header]", inputs: ["disabled", "mat-sort-header", "arrowPosition", "start", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i15.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i15.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i15.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i15.MatColumnDef, selector: "[matColumnDef]", inputs: ["sticky", "matColumnDef"] }, { kind: "directive", type: i15.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i15.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i15.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i15.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "component", type: i15.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i15.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i16.MatCard, selector: "mat-card", exportAs: ["matCard"] }, { kind: "directive", type: i16.MatCardContent, selector: "mat-card-content, [mat-card-content], [matCardContent]" }, { kind: "component", type: i17.MatChipList, selector: "mat-chip-list", inputs: ["role", "aria-describedby", "errorStateMatcher", "multiple", "compareWith", "value", "required", "placeholder", "disabled", "aria-orientation", "selectable", "tabIndex"], outputs: ["change", "valueChange"], exportAs: ["matChipList"] }, { kind: "directive", type: i17.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["color", "disableRipple", "tabIndex", "role", "selected", "value", "selectable", "disabled", "removable"], outputs: ["selectionChange", "destroyed", "removed"], exportAs: ["matChip"] }, { kind: "directive", type: i18.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i19.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i19.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i20.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i20.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i20.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i21.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "directive", type: i6.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i22.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "component", type: i23.SearchableSelectorComponent, selector: "app-searchable-selector", inputs: ["valueField", "titleField", "subtitleField", "apiUrl", "multiple", "selectedValue", "enableSearch", "add", "addConfig", "edit", "editConfig", "sort", "sortBy", "searchField", "itemComponent", "items", "apiDataProperty", "cache", "perPage", "inDataSearch", "required", "disabled", "value"], outputs: ["selectedValueChange", "selectionChange", "itemsChange"] }, { kind: "component", type: i24.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "component", type: i25.UserEnableButtonComponent, selector: "app-user-enable-button", inputs: ["user", "isUseIcons"], outputs: ["onSave"] }, { kind: "pipe", type: i8.DatePipe, name: "date" }] });
194
194
  UsersViewAllComponent = __decorate([
195
195
  UntilDestroy()
196
196
  /**