@flywheel-io/vision 0.3.1 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/flywheel-io-vision.umd.js +402 -6
- package/bundles/flywheel-io-vision.umd.js.map +1 -1
- package/bundles/flywheel-io-vision.umd.min.js +1 -1
- package/bundles/flywheel-io-vision.umd.min.js.map +1 -1
- package/components/dialog/choice-dialog.component.d.ts +24 -0
- package/components/dialog/confirm-dialog.component.d.ts +12 -0
- package/components/dialog/dialog.module.d.ts +2 -0
- package/components/dialog/dialog.service.d.ts +19 -0
- package/components/dialog/error-dialog.component.d.ts +10 -0
- package/components/dialog/portal-dialog.component.d.ts +25 -0
- package/components/shared/pipes/pipes.module.d.ts +4 -0
- package/components/shared/pipes/translate.pipe.d.ts +15 -0
- package/components/shared/pipes/trusthtml.pipe.d.ts +7 -0
- package/components/shared/translation.service.d.ts +11 -0
- package/esm2015/components/dialog/choice-dialog.component.js +52 -0
- package/esm2015/components/dialog/confirm-dialog.component.js +40 -0
- package/esm2015/components/dialog/dialog.module.js +45 -0
- package/esm2015/components/dialog/dialog.service.js +69 -0
- package/esm2015/components/dialog/error-dialog.component.js +32 -0
- package/esm2015/components/dialog/portal-dialog.component.js +88 -0
- package/esm2015/components/notification/notification/notification.component.js +1 -1
- package/esm2015/components/shared/pipes/pipes.module.js +24 -0
- package/esm2015/components/shared/pipes/translate.pipe.js +40 -0
- package/esm2015/components/shared/pipes/trusthtml.pipe.js +20 -0
- package/esm2015/components/shared/translation.service.js +22 -0
- package/esm2015/flywheel-io-vision.js +5 -2
- package/esm2015/public-api.js +8 -1
- package/fesm2015/flywheel-io-vision.js +402 -6
- package/fesm2015/flywheel-io-vision.js.map +1 -1
- package/flywheel-io-vision.d.ts +4 -1
- package/flywheel-io-vision.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +7 -0
- package/scss/material/overrides.scss +8 -20
- package/styles.css +11 -80
- package/styles.scss +0 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { ThemePalette } from '@angular/material/core';
|
|
2
|
+
interface Choice {
|
|
3
|
+
color?: ThemePalette;
|
|
4
|
+
label: string;
|
|
5
|
+
testId?: string;
|
|
6
|
+
value: any;
|
|
7
|
+
variant?: 'raised' | 'stroked' | 'flat';
|
|
8
|
+
}
|
|
9
|
+
export interface FwChoiceDialogData {
|
|
10
|
+
alignActions: 'start' | 'center' | 'end';
|
|
11
|
+
choices: Choice[];
|
|
12
|
+
content: string;
|
|
13
|
+
title?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class FwChoiceDialog {
|
|
16
|
+
private data;
|
|
17
|
+
alignActions: "center" | "end";
|
|
18
|
+
choices: Choice[];
|
|
19
|
+
content: string;
|
|
20
|
+
title: string;
|
|
21
|
+
constructor(data: FwChoiceDialogData);
|
|
22
|
+
getTestId(choice: any): string;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Type } from '@angular/core';
|
|
2
|
+
import { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
+
export declare type StackingStrategy = 'allow' | 'replace' | 'ignore';
|
|
4
|
+
export interface DialogConfig<T> extends MatDialogConfig<T> {
|
|
5
|
+
multi: StackingStrategy;
|
|
6
|
+
}
|
|
7
|
+
export interface OpenDialog<T> {
|
|
8
|
+
component: Type<T>;
|
|
9
|
+
ref: MatDialogRef<T>;
|
|
10
|
+
}
|
|
11
|
+
export declare class FwDialogService {
|
|
12
|
+
private matDialog;
|
|
13
|
+
readonly dialogs: OpenDialog<any>[];
|
|
14
|
+
private config;
|
|
15
|
+
constructor(matDialog: MatDialog);
|
|
16
|
+
closeAll(component?: Type<unknown>): void;
|
|
17
|
+
open<T, D, R>(component: Type<T>, config?: MatDialogConfig<D>): MatDialogRef<T, R>;
|
|
18
|
+
registerDialog(component: Type<unknown>, config: DialogConfig<unknown>): void;
|
|
19
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MatDialogRef } from '@angular/material/dialog';
|
|
2
|
+
export interface FwErrorDialogData {
|
|
3
|
+
message: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class FwErrorDialog {
|
|
6
|
+
private data;
|
|
7
|
+
private ref;
|
|
8
|
+
message: string;
|
|
9
|
+
constructor(data: FwErrorDialogData, ref: MatDialogRef<FwErrorDialog>);
|
|
10
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { CdkPortalOutletAttachedRef, ComponentType, Portal } from '@angular/cdk/portal';
|
|
2
|
+
import { OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
3
|
+
interface ComponentSpec {
|
|
4
|
+
type: ComponentType<unknown>;
|
|
5
|
+
inputs?: Record<string, unknown>;
|
|
6
|
+
outputs?: Record<string, (value: unknown) => void>;
|
|
7
|
+
}
|
|
8
|
+
export interface FwPortalDialogData {
|
|
9
|
+
component?: ComponentSpec;
|
|
10
|
+
content?: string;
|
|
11
|
+
template?: TemplateRef<unknown>;
|
|
12
|
+
title?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class FwPortalDialog implements OnDestroy {
|
|
15
|
+
private data;
|
|
16
|
+
private viewContainerRef;
|
|
17
|
+
content: string;
|
|
18
|
+
portal: Portal<any>;
|
|
19
|
+
title: string;
|
|
20
|
+
private destroyed$;
|
|
21
|
+
constructor(data: FwPortalDialogData, viewContainerRef: ViewContainerRef);
|
|
22
|
+
ngOnDestroy(): void;
|
|
23
|
+
attached(ref: CdkPortalOutletAttachedRef): void;
|
|
24
|
+
}
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChangeDetectorRef, OnDestroy } from '@angular/core';
|
|
2
|
+
import { PipeTransform } from '@angular/core';
|
|
3
|
+
import { TranslationService } from '../translation.service';
|
|
4
|
+
/**
|
|
5
|
+
* Translate a message given a nested key to a location in the loaded locale copy.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TranslatePipe implements PipeTransform, OnDestroy {
|
|
8
|
+
private cdr;
|
|
9
|
+
private translationService;
|
|
10
|
+
private subscriptions;
|
|
11
|
+
private messages;
|
|
12
|
+
constructor(cdr: ChangeDetectorRef, translationService: TranslationService);
|
|
13
|
+
ngOnDestroy(): void;
|
|
14
|
+
transform(key: string, silent?: boolean): string;
|
|
15
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PipeTransform } from '@angular/core';
|
|
2
|
+
import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
|
|
3
|
+
export declare class TrustHtmlPipe implements PipeTransform {
|
|
4
|
+
private sanitizer;
|
|
5
|
+
constructor(sanitizer: DomSanitizer);
|
|
6
|
+
transform(html: string): SafeHtml;
|
|
7
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
export declare abstract class TranslationService {
|
|
3
|
+
abstract getMessage(key: string, silent?: boolean): Observable<string>;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Very basic i18n implementation. Consumer apps can provide their own implementation of TranslationService to override.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MinimalTranslationService implements TranslationService {
|
|
9
|
+
private static messages;
|
|
10
|
+
getMessage(key: string, silent?: boolean): Observable<string>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
export class FwChoiceDialog {
|
|
4
|
+
constructor(data) {
|
|
5
|
+
this.data = data;
|
|
6
|
+
this.alignActions = this.data.alignActions
|
|
7
|
+
? this.data.alignActions === 'start'
|
|
8
|
+
? null
|
|
9
|
+
: this.data.alignActions
|
|
10
|
+
: 'center';
|
|
11
|
+
this.choices = this.data.choices;
|
|
12
|
+
this.content = this.data.content;
|
|
13
|
+
this.title = this.data.title;
|
|
14
|
+
}
|
|
15
|
+
getTestId(choice) {
|
|
16
|
+
var _a;
|
|
17
|
+
return choice.testId || `${String((_a = choice.label) !== null && _a !== void 0 ? _a : choice.value).toLowerCase()}-button`;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
FwChoiceDialog.decorators = [
|
|
21
|
+
{ type: Component, args: [{
|
|
22
|
+
host: {
|
|
23
|
+
class: 'mat-dialog-component',
|
|
24
|
+
'test-id': 'choice-dialog',
|
|
25
|
+
},
|
|
26
|
+
selector: 'fw-choice-dialog',
|
|
27
|
+
template: `
|
|
28
|
+
<h1 mat-dialog-title *ngIf="title">{{ title }}</h1>
|
|
29
|
+
<div mat-dialog-content>{{ content }}</div>
|
|
30
|
+
<div mat-dialog-actions [align]="alignActions">
|
|
31
|
+
<ng-container *ngFor="let choice of choices" [ngSwitch]="choice.variant">
|
|
32
|
+
<button *ngSwitchCase="'raised'" mat-raised-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
|
|
33
|
+
[mat-dialog-close]="choice.value">{{ choice.label }}</button>
|
|
34
|
+
<button *ngSwitchCase="'stroked'" mat-stroked-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
|
|
35
|
+
[mat-dialog-close]="choice.value">{{ choice.label }}</button>
|
|
36
|
+
<button *ngSwitchCase="'flat'" mat-flat-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
|
|
37
|
+
[mat-dialog-close]="choice.value">{{ choice.label }}</button>
|
|
38
|
+
<ng-container *ngSwitchDefault>
|
|
39
|
+
<button *ngIf="choice.color" mat-flat-button [color]="choice.color" [attr.test-id]="getTestId(choice)"
|
|
40
|
+
[mat-dialog-close]="choice.value">{{ choice.label }}</button>
|
|
41
|
+
<button *ngIf="!choice.color" mat-stroked-button [attr.test-id]="getTestId(choice)"
|
|
42
|
+
[mat-dialog-close]="choice.value">{{ choice.label }}</button>
|
|
43
|
+
</ng-container>
|
|
44
|
+
</ng-container>
|
|
45
|
+
</div>
|
|
46
|
+
`
|
|
47
|
+
},] }
|
|
48
|
+
];
|
|
49
|
+
FwChoiceDialog.ctorParameters = () => [
|
|
50
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
51
|
+
];
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hvaWNlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvY2hvaWNlLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBNEMzRCxNQUFNLE9BQU8sY0FBYztJQVV6QixZQUNtQyxJQUF3QjtRQUF4QixTQUFJLEdBQUosSUFBSSxDQUFvQjtRQVYzRCxpQkFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNuQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTztnQkFDbEMsQ0FBQyxDQUFDLElBQUk7Z0JBQ04sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUMxQixDQUFDLENBQUMsUUFBUSxDQUFBO1FBQ1osWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBQzNCLFlBQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQTtRQUMzQixVQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUE7SUFJcEIsQ0FBQztJQUVKLFNBQVMsQ0FBQyxNQUFNOztRQUNkLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLE1BQU0sT0FBQyxNQUFNLENBQUMsS0FBSyxtQ0FBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxFQUFFLFNBQVMsQ0FBQztJQUN6RixDQUFDOzs7WUEzQ0YsU0FBUyxTQUFDO2dCQUNULElBQUksRUFBRTtvQkFDSixLQUFLLEVBQUUsc0JBQXNCO29CQUM3QixTQUFTLEVBQUUsZUFBZTtpQkFDM0I7Z0JBQ0QsUUFBUSxFQUFFLGtCQUFrQjtnQkFDNUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUJUO2FBQ0Y7Ozs0Q0FZSSxNQUFNLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmludGVyZmFjZSBDaG9pY2Uge1xuICBjb2xvcj86IFRoZW1lUGFsZXR0ZVxuICBsYWJlbDogc3RyaW5nXG4gIHRlc3RJZD86IHN0cmluZ1xuICB2YWx1ZTogYW55XG4gIHZhcmlhbnQ/OiAncmFpc2VkJyB8ICdzdHJva2VkJyB8ICdmbGF0J1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZ3Q2hvaWNlRGlhbG9nRGF0YSB7XG4gIGFsaWduQWN0aW9uczogJ3N0YXJ0JyB8ICdjZW50ZXInIHwgJ2VuZCdcbiAgY2hvaWNlczogQ2hvaWNlW11cbiAgY29udGVudDogc3RyaW5nXG4gIHRpdGxlPzogc3RyaW5nXG59XG5cbkBDb21wb25lbnQoe1xuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtYXQtZGlhbG9nLWNvbXBvbmVudCcsXG4gICAgJ3Rlc3QtaWQnOiAnY2hvaWNlLWRpYWxvZycsXG4gIH0sXG4gIHNlbGVjdG9yOiAnZnctY2hvaWNlLWRpYWxvZycsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGgxIG1hdC1kaWFsb2ctdGl0bGUgKm5nSWY9XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9oMT5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudD57eyBjb250ZW50IH19PC9kaXY+XG4gICAgPGRpdiBtYXQtZGlhbG9nLWFjdGlvbnMgW2FsaWduXT1cImFsaWduQWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2hvaWNlIG9mIGNob2ljZXNcIiBbbmdTd2l0Y2hdPVwiY2hvaWNlLnZhcmlhbnRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdTd2l0Y2hDYXNlPVwiJ3JhaXNlZCdcIiBtYXQtcmFpc2VkLWJ1dHRvbiBbY29sb3JdPVwiY2hvaWNlLmNvbG9yXCIgW2F0dHIudGVzdC1pZF09XCJnZXRUZXN0SWQoY2hvaWNlKVwiXG4gICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cIidzdHJva2VkJ1wiIG1hdC1zdHJva2VkLWJ1dHRvbiBbY29sb3JdPVwiY2hvaWNlLmNvbG9yXCIgW2F0dHIudGVzdC1pZF09XCJnZXRUZXN0SWQoY2hvaWNlKVwiXG4gICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gKm5nU3dpdGNoQ2FzZT1cIidmbGF0J1wiIG1hdC1mbGF0LWJ1dHRvbiBbY29sb3JdPVwiY2hvaWNlLmNvbG9yXCIgW2F0dHIudGVzdC1pZF09XCJnZXRUZXN0SWQoY2hvaWNlKVwiXG4gICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiY2hvaWNlLmNvbG9yXCIgbWF0LWZsYXQtYnV0dG9uIFtjb2xvcl09XCJjaG9pY2UuY29sb3JcIiBbYXR0ci50ZXN0LWlkXT1cImdldFRlc3RJZChjaG9pY2UpXCJcbiAgICAgICAgICAgIFttYXQtZGlhbG9nLWNsb3NlXT1cImNob2ljZS52YWx1ZVwiPnt7IGNob2ljZS5sYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gKm5nSWY9XCIhY2hvaWNlLmNvbG9yXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFthdHRyLnRlc3QtaWRdPVwiZ2V0VGVzdElkKGNob2ljZSlcIlxuICAgICAgICAgICAgW21hdC1kaWFsb2ctY2xvc2VdPVwiY2hvaWNlLnZhbHVlXCI+e3sgY2hvaWNlLmxhYmVsIH19PC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIEZ3Q2hvaWNlRGlhbG9nIHtcbiAgYWxpZ25BY3Rpb25zID0gdGhpcy5kYXRhLmFsaWduQWN0aW9uc1xuICAgID8gdGhpcy5kYXRhLmFsaWduQWN0aW9ucyA9PT0gJ3N0YXJ0J1xuICAgICAgPyBudWxsXG4gICAgICA6IHRoaXMuZGF0YS5hbGlnbkFjdGlvbnNcbiAgICA6ICdjZW50ZXInXG4gIGNob2ljZXMgPSB0aGlzLmRhdGEuY2hvaWNlc1xuICBjb250ZW50ID0gdGhpcy5kYXRhLmNvbnRlbnRcbiAgdGl0bGUgPSB0aGlzLmRhdGEudGl0bGVcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkYXRhOiBGd0Nob2ljZURpYWxvZ0RhdGEsXG4gICkge31cblxuICBnZXRUZXN0SWQoY2hvaWNlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2hvaWNlLnRlc3RJZCB8fCBgJHtTdHJpbmcoY2hvaWNlLmxhYmVsID8/IGNob2ljZS52YWx1ZSkudG9Mb3dlckNhc2UoKX0tYnV0dG9uYDtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
3
|
+
export class FwConfirmDialog {
|
|
4
|
+
constructor(data) {
|
|
5
|
+
this.data = data;
|
|
6
|
+
this.title = this.data.title;
|
|
7
|
+
this.content = this.data.content;
|
|
8
|
+
this.html = this.data.html;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
FwConfirmDialog.decorators = [
|
|
12
|
+
{ type: Component, args: [{
|
|
13
|
+
host: {
|
|
14
|
+
class: 'mat-dialog-component',
|
|
15
|
+
'test-id': 'confirm-dialog',
|
|
16
|
+
},
|
|
17
|
+
selector: 'fw-confirm-dialog',
|
|
18
|
+
template: `
|
|
19
|
+
<h1 mat-dialog-title *ngIf="title">{{ title }}</h1>
|
|
20
|
+
<div mat-dialog-content *ngIf="html" class="markup" [innerHTML]="html | trusthtml"></div>
|
|
21
|
+
<div mat-dialog-content *ngIf="!html">{{ content || ('confirmDialog.body' | translate ) }}</div>
|
|
22
|
+
<div mat-dialog-actions align="center">
|
|
23
|
+
<button test-id="no-button" mat-stroked-button [mat-dialog-close]="false">{{ 'confirmDialog.no' | translate }}</button>
|
|
24
|
+
<button test-id="yes-button" mat-flat-button color="primary" [mat-dialog-close]="true">{{ 'confirmDialog.yes' | translate }}</button>
|
|
25
|
+
</div>
|
|
26
|
+
`,
|
|
27
|
+
styles: [`
|
|
28
|
+
[mat-dialog-content] {
|
|
29
|
+
text-align: center;
|
|
30
|
+
}
|
|
31
|
+
[mat-dialog-content].markup {
|
|
32
|
+
text-align: inherit;
|
|
33
|
+
}
|
|
34
|
+
`]
|
|
35
|
+
},] }
|
|
36
|
+
];
|
|
37
|
+
FwConfirmDialog.ctorParameters = () => [
|
|
38
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] }
|
|
39
|
+
];
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFnQzNELE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ21DLElBQXlCO1FBQXpCLFNBQUksR0FBSixJQUFJLENBQXFCO1FBTDVELFVBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUN2QixZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7UUFDM0IsU0FBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFBO0lBSWxCLENBQUM7OztZQS9CTCxTQUFTLFNBQUM7Z0JBQ1QsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxzQkFBc0I7b0JBQzdCLFNBQVMsRUFBRSxnQkFBZ0I7aUJBQzVCO2dCQUNELFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7R0FRVDt5QkFDUTs7Ozs7OztHQU9SO2FBQ0Y7Ozs0Q0FPSSxNQUFNLFNBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ3Q29uZmlybURpYWxvZ0RhdGEge1xuICB0aXRsZT86IHN0cmluZyxcbiAgY29udGVudD86IHN0cmluZyxcbiAgaHRtbD86IHN0cmluZyxcbn1cblxuQENvbXBvbmVudCh7XG4gIGhvc3Q6IHtcbiAgICBjbGFzczogJ21hdC1kaWFsb2ctY29tcG9uZW50JyxcbiAgICAndGVzdC1pZCc6ICdjb25maXJtLWRpYWxvZycsXG4gIH0sXG4gIHNlbGVjdG9yOiAnZnctY29uZmlybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxoMSBtYXQtZGlhbG9nLXRpdGxlICpuZ0lmPVwidGl0bGVcIj57eyB0aXRsZSB9fTwvaDE+XG4gICAgPGRpdiBtYXQtZGlhbG9nLWNvbnRlbnQgKm5nSWY9XCJodG1sXCIgY2xhc3M9XCJtYXJrdXBcIiBbaW5uZXJIVE1MXT1cImh0bWwgfCB0cnVzdGh0bWxcIj48L2Rpdj5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctY29udGVudCAqbmdJZj1cIiFodG1sXCI+e3sgY29udGVudCB8fCAoJ2NvbmZpcm1EaWFsb2cuYm9keScgfCB0cmFuc2xhdGUgKSB9fTwvZGl2PlxuICAgIDxkaXYgbWF0LWRpYWxvZy1hY3Rpb25zIGFsaWduPVwiY2VudGVyXCI+XG4gICAgICA8YnV0dG9uIHRlc3QtaWQ9XCJuby1idXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIj57eyAnY29uZmlybURpYWxvZy5ubycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICAgIDxidXR0b24gdGVzdC1pZD1cInllcy1idXR0b25cIiBtYXQtZmxhdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgW21hdC1kaWFsb2ctY2xvc2VdPVwidHJ1ZVwiPnt7ICdjb25maXJtRGlhbG9nLnllcycgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIFttYXQtZGlhbG9nLWNvbnRlbnRdIHtcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICB9XG4gICAgW21hdC1kaWFsb2ctY29udGVudF0ubWFya3VwIHtcbiAgICAgIHRleHQtYWxpZ246IGluaGVyaXQ7XG4gICAgfVxuICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndDb25maXJtRGlhbG9nIHtcbiAgdGl0bGUgPSB0aGlzLmRhdGEudGl0bGVcbiAgY29udGVudCA9IHRoaXMuZGF0YS5jb250ZW50XG4gIGh0bWwgPSB0aGlzLmRhdGEuaHRtbFxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRhdGE6IEZ3Q29uZmlybURpYWxvZ0RhdGEsXG4gICkge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { PortalModule } from '@angular/cdk/portal';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
5
|
+
import { MatDialogModule, MAT_DIALOG_DEFAULT_OPTIONS } from '@angular/material/dialog';
|
|
6
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
7
|
+
import { FwChoiceDialog } from './choice-dialog.component';
|
|
8
|
+
import { FwConfirmDialog } from './confirm-dialog.component';
|
|
9
|
+
import { FwDialogService } from './dialog.service';
|
|
10
|
+
import { FwErrorDialog } from './error-dialog.component';
|
|
11
|
+
import { FwPortalDialog } from './portal-dialog.component';
|
|
12
|
+
import { PipesModule } from '../shared/pipes/pipes.module';
|
|
13
|
+
const ɵ0 = {
|
|
14
|
+
disableClose: true,
|
|
15
|
+
hasBackdrop: true,
|
|
16
|
+
};
|
|
17
|
+
export class FwDialogModule {
|
|
18
|
+
}
|
|
19
|
+
FwDialogModule.decorators = [
|
|
20
|
+
{ type: NgModule, args: [{
|
|
21
|
+
declarations: [
|
|
22
|
+
FwChoiceDialog,
|
|
23
|
+
FwConfirmDialog,
|
|
24
|
+
FwErrorDialog,
|
|
25
|
+
FwPortalDialog,
|
|
26
|
+
],
|
|
27
|
+
imports: [
|
|
28
|
+
CommonModule,
|
|
29
|
+
MatButtonModule,
|
|
30
|
+
MatDialogModule,
|
|
31
|
+
MatIconModule,
|
|
32
|
+
PipesModule,
|
|
33
|
+
PortalModule,
|
|
34
|
+
],
|
|
35
|
+
providers: [
|
|
36
|
+
FwDialogService,
|
|
37
|
+
{
|
|
38
|
+
provide: MAT_DIALOG_DEFAULT_OPTIONS,
|
|
39
|
+
useValue: ɵ0
|
|
40
|
+
}
|
|
41
|
+
],
|
|
42
|
+
},] }
|
|
43
|
+
];
|
|
44
|
+
export { ɵ0 };
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2RpYWxvZy9kaWFsb2cubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzdELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztXQXFCM0M7SUFDUixZQUFZLEVBQUUsSUFBSTtJQUNsQixXQUFXLEVBQUUsSUFBSTtDQUNsQjtBQUlQLE1BQU0sT0FBTyxjQUFjOzs7WUExQjFCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUU7b0JBQ1osY0FBYztvQkFDZCxlQUFlO29CQUNmLGFBQWE7b0JBQ2IsY0FBYztpQkFDZjtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixlQUFlO29CQUNmLGVBQWU7b0JBQ2YsYUFBYTtvQkFDYixXQUFXO29CQUNYLFlBQVk7aUJBQ2I7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULGVBQWU7b0JBQ2Y7d0JBQ0UsT0FBTyxFQUFFLDBCQUEwQjt3QkFDbkMsUUFBUSxJQUdQO3FCQUNGO2lCQUNGO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERpYWxvZ01vZHVsZSwgTUFUX0RJQUxPR19ERUZBVUxUX09QVElPTlMgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuXG5pbXBvcnQgeyBGd0Nob2ljZURpYWxvZyB9IGZyb20gJy4vY2hvaWNlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndDb25maXJtRGlhbG9nIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBGd0Vycm9yRGlhbG9nIH0gZnJvbSAnLi9lcnJvci1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZ3UG9ydGFsRGlhbG9nIH0gZnJvbSAnLi9wb3J0YWwtZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQaXBlc01vZHVsZSB9IGZyb20gJy4uL3NoYXJlZC9waXBlcy9waXBlcy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBGd0Nob2ljZURpYWxvZyxcbiAgICBGd0NvbmZpcm1EaWFsb2csXG4gICAgRndFcnJvckRpYWxvZyxcbiAgICBGd1BvcnRhbERpYWxvZyxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgTWF0RGlhbG9nTW9kdWxlLFxuICAgIE1hdEljb25Nb2R1bGUsXG4gICAgUGlwZXNNb2R1bGUsXG4gICAgUG9ydGFsTW9kdWxlLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICBGd0RpYWxvZ1NlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogTUFUX0RJQUxPR19ERUZBVUxUX09QVElPTlMsXG4gICAgICB1c2VWYWx1ZToge1xuICAgICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgfVxuICAgIH1cbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndEaWFsb2dNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { MatDialog, } from '@angular/material/dialog';
|
|
3
|
+
export class FwDialogService {
|
|
4
|
+
constructor(matDialog) {
|
|
5
|
+
this.matDialog = matDialog;
|
|
6
|
+
this.dialogs = [];
|
|
7
|
+
this.config = new Map();
|
|
8
|
+
}
|
|
9
|
+
closeAll(component) {
|
|
10
|
+
if (component) {
|
|
11
|
+
this.dialogs
|
|
12
|
+
.filter((el) => el.component === component)
|
|
13
|
+
.forEach((el) => el.ref.close());
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
this.matDialog.closeAll();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
open(component, config) {
|
|
20
|
+
const index = this.dialogs.findIndex(el => el.component === component);
|
|
21
|
+
let ref = null;
|
|
22
|
+
const baseConfig = Object.assign({ multi: 'allow' }, this.config.get(component));
|
|
23
|
+
switch (baseConfig.multi) {
|
|
24
|
+
case 'ignore':
|
|
25
|
+
// if an existing dialog of the same type doesn't exist, open one
|
|
26
|
+
if (index === -1) {
|
|
27
|
+
ref = this.matDialog.open(component, Object.assign(Object.assign({}, baseConfig), config));
|
|
28
|
+
this.dialogs.push({ component, ref });
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
case 'replace':
|
|
32
|
+
// if an existing dialog of the same type exists, replace it.
|
|
33
|
+
if (index > -1) {
|
|
34
|
+
this.dialogs[index].ref.close();
|
|
35
|
+
ref = this.matDialog.open(component, Object.assign(Object.assign({}, baseConfig), config));
|
|
36
|
+
this.dialogs.splice(index, 1, { component, ref });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
ref = this.matDialog.open(component, Object.assign(Object.assign({}, baseConfig), config));
|
|
40
|
+
this.dialogs.push({ component, ref });
|
|
41
|
+
}
|
|
42
|
+
break;
|
|
43
|
+
default:
|
|
44
|
+
ref = this.matDialog.open(component, Object.assign(Object.assign({}, baseConfig), config));
|
|
45
|
+
this.dialogs.push({ component, ref });
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
if (ref) {
|
|
49
|
+
ref.afterClosed().subscribe(() => {
|
|
50
|
+
// clean up open dialog reference
|
|
51
|
+
const index = this.dialogs.findIndex(el => el.ref === ref);
|
|
52
|
+
if (index >= 0) {
|
|
53
|
+
this.dialogs.splice(index, 1);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return ref;
|
|
58
|
+
}
|
|
59
|
+
registerDialog(component, config) {
|
|
60
|
+
this.config.set(component, config);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
FwDialogService.decorators = [
|
|
64
|
+
{ type: Injectable }
|
|
65
|
+
];
|
|
66
|
+
FwDialogService.ctorParameters = () => [
|
|
67
|
+
{ type: MatDialog }
|
|
68
|
+
];
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvZGlhbG9nLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQ0wsU0FBUyxHQUdWLE1BQU0sMEJBQTBCLENBQUM7QUFrQmxDLE1BQU0sT0FBTyxlQUFlO0lBSzFCLFlBQ1UsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUxyQixZQUFPLEdBQXNCLEVBQUUsQ0FBQztRQUVqQyxXQUFNLEdBQUcsSUFBSSxHQUFHLEVBQXdDLENBQUM7SUFJOUQsQ0FBQztJQUVKLFFBQVEsQ0FBQyxTQUF5QjtRQUNoQyxJQUFJLFNBQVMsRUFBRTtZQUNiLElBQUksQ0FBQyxPQUFPO2lCQUNULE1BQU0sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7aUJBQzFDLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3BDO2FBQU07WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBVSxTQUFrQixFQUFFLE1BQTJCO1FBQzNELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUN2RSxJQUFJLEdBQUcsR0FBdUIsSUFBSSxDQUFDO1FBQ25DLE1BQU0sVUFBVSxtQkFDZCxLQUFLLEVBQUUsT0FBTyxJQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUM5QixDQUFDO1FBRUYsUUFBUSxVQUFVLENBQUMsS0FBSyxFQUFFO1lBQ3hCLEtBQUssUUFBUTtnQkFDWCxpRUFBaUU7Z0JBQ2pFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNoQixHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxrQ0FBTyxVQUFVLEdBQUssTUFBTSxFQUFHLENBQUM7b0JBQ25FLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ3ZDO2dCQUNELE1BQU07WUFDUixLQUFLLFNBQVM7Z0JBQ1osNkRBQTZEO2dCQUM3RCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDaEMsR0FBRyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsa0NBQU8sVUFBVSxHQUFLLE1BQU0sRUFBRyxDQUFDO29CQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7aUJBQ25EO3FCQUFNO29CQUNMLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLGtDQUFPLFVBQVUsR0FBSyxNQUFNLEVBQUcsQ0FBQztvQkFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztpQkFDdkM7Z0JBQ0QsTUFBTTtZQUNSO2dCQUNFLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLGtDQUFPLFVBQVUsR0FBSyxNQUFNLEVBQUcsQ0FBQztnQkFDbkUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDdEMsTUFBTTtTQUNUO1FBRUQsSUFBSSxHQUFHLEVBQUU7WUFDUCxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDL0IsaUNBQWlDO2dCQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQzNELElBQUksS0FBSyxJQUFJLENBQUMsRUFBRTtvQkFDZCxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQy9CO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUF3QixFQUFFLE1BQTZCO1FBQ3BFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDOzs7WUFwRUYsVUFBVTs7O1lBcEJULFNBQVMiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IEluamVjdGFibGUsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIE1hdERpYWxvZyxcbiAgTWF0RGlhbG9nQ29uZmlnLFxuICBNYXREaWFsb2dSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbi8qXG4qIHR5cGUgU3RhY2tpbmdTdHJhdGVneVxuKiBhbGxvdyAtIHdpbGwgYWxsb3cgbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGRpYWxvZyB0byBkaXNwbGF5IGF0IG9uY2VcbiogcmVwbGFjZSAtIHdpbGwgY2xvc2UgZXhpc3RpbmcgZGlhbG9ncyBvZiB0aGUgc2FtZSB0eXBlIGFuZCBvcGVuIGEgbmV3IG9uZVxuKiBpZ25vcmUgLSB3aWxsIGtlZXAgYSBkaWFsb2cgb2YgdGhlIHNhbWUgdHlwZSBvcGVuXG4qL1xuZXhwb3J0IHR5cGUgU3RhY2tpbmdTdHJhdGVneSA9ICdhbGxvdycgfCAncmVwbGFjZScgfCAnaWdub3JlJ1xuZXhwb3J0IGludGVyZmFjZSBEaWFsb2dDb25maWc8VD4gZXh0ZW5kcyBNYXREaWFsb2dDb25maWc8VD4ge1xuICBtdWx0aTogU3RhY2tpbmdTdHJhdGVneVxufVxuZXhwb3J0IGludGVyZmFjZSBPcGVuRGlhbG9nPFQ+IHtcbiAgY29tcG9uZW50OiBUeXBlPFQ+XG4gIHJlZjogTWF0RGlhbG9nUmVmPFQ+XG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBGd0RpYWxvZ1NlcnZpY2Uge1xuICByZWFkb25seSBkaWFsb2dzOiBPcGVuRGlhbG9nPGFueT5bXSA9IFtdO1xuXG4gIHByaXZhdGUgY29uZmlnID0gbmV3IE1hcDxUeXBlPHVua25vd24+LCBEaWFsb2dDb25maWc8dW5rbm93bj4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtYXREaWFsb2c6IE1hdERpYWxvZyxcbiAgKSB7fVxuXG4gIGNsb3NlQWxsKGNvbXBvbmVudD86IFR5cGU8dW5rbm93bj4pOiB2b2lkIHtcbiAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICB0aGlzLmRpYWxvZ3NcbiAgICAgICAgLmZpbHRlcigoZWwpID0+IGVsLmNvbXBvbmVudCA9PT0gY29tcG9uZW50KVxuICAgICAgICAuZm9yRWFjaCgoZWwpID0+IGVsLnJlZi5jbG9zZSgpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tYXREaWFsb2cuY2xvc2VBbGwoKTtcbiAgICB9XG4gIH1cblxuICBvcGVuPFQsIEQsIFI+KGNvbXBvbmVudDogVHlwZTxUPiwgY29uZmlnPzogTWF0RGlhbG9nQ29uZmlnPEQ+KTogTWF0RGlhbG9nUmVmPFQsIFI+IHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZGlhbG9ncy5maW5kSW5kZXgoZWwgPT4gZWwuY29tcG9uZW50ID09PSBjb21wb25lbnQpO1xuICAgIGxldCByZWY6IE1hdERpYWxvZ1JlZjxULCBSPiA9IG51bGw7XG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IHtcbiAgICAgIG11bHRpOiAnYWxsb3cnLFxuICAgICAgLi4udGhpcy5jb25maWcuZ2V0KGNvbXBvbmVudCksXG4gICAgfTtcblxuICAgIHN3aXRjaCAoYmFzZUNvbmZpZy5tdWx0aSkge1xuICAgICAgY2FzZSAnaWdub3JlJzpcbiAgICAgICAgLy8gaWYgYW4gZXhpc3RpbmcgZGlhbG9nIG9mIHRoZSBzYW1lIHR5cGUgZG9lc24ndCBleGlzdCwgb3BlbiBvbmVcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgIHJlZiA9IHRoaXMubWF0RGlhbG9nLm9wZW4oY29tcG9uZW50LCB7IC4uLmJhc2VDb25maWcsIC4uLmNvbmZpZyB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ3MucHVzaCh7IGNvbXBvbmVudCwgcmVmIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVwbGFjZSc6XG4gICAgICAgIC8vIGlmIGFuIGV4aXN0aW5nIGRpYWxvZyBvZiB0aGUgc2FtZSB0eXBlIGV4aXN0cywgcmVwbGFjZSBpdC5cbiAgICAgICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ3NbaW5kZXhdLnJlZi5jbG9zZSgpO1xuICAgICAgICAgIHJlZiA9IHRoaXMubWF0RGlhbG9nLm9wZW4oY29tcG9uZW50LCB7IC4uLmJhc2VDb25maWcsIC4uLmNvbmZpZyB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ3Muc3BsaWNlKGluZGV4LCAxLCB7IGNvbXBvbmVudCwgcmVmIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlZiA9IHRoaXMubWF0RGlhbG9nLm9wZW4oY29tcG9uZW50LCB7IC4uLmJhc2VDb25maWcsIC4uLmNvbmZpZyB9KTtcbiAgICAgICAgICB0aGlzLmRpYWxvZ3MucHVzaCh7IGNvbXBvbmVudCwgcmVmIH0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVmID0gdGhpcy5tYXREaWFsb2cub3Blbihjb21wb25lbnQsIHsgLi4uYmFzZUNvbmZpZywgLi4uY29uZmlnIH0pO1xuICAgICAgICB0aGlzLmRpYWxvZ3MucHVzaCh7IGNvbXBvbmVudCwgcmVmIH0pO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAocmVmKSB7XG4gICAgICByZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvLyBjbGVhbiB1cCBvcGVuIGRpYWxvZyByZWZlcmVuY2VcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLmRpYWxvZ3MuZmluZEluZGV4KGVsID0+IGVsLnJlZiA9PT0gcmVmKTtcbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICB0aGlzLmRpYWxvZ3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZjtcbiAgfVxuXG4gIHJlZ2lzdGVyRGlhbG9nKGNvbXBvbmVudDogVHlwZTx1bmtub3duPiwgY29uZmlnOiBEaWFsb2dDb25maWc8dW5rbm93bj4pOiB2b2lkIHtcbiAgICB0aGlzLmNvbmZpZy5zZXQoY29tcG9uZW50LCBjb25maWcpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Component, Inject } from '@angular/core';
|
|
2
|
+
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
3
|
+
export class FwErrorDialog {
|
|
4
|
+
constructor(data, ref) {
|
|
5
|
+
this.data = data;
|
|
6
|
+
this.ref = ref;
|
|
7
|
+
this.message = this.data.message;
|
|
8
|
+
this.ref.disableClose = false;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
FwErrorDialog.decorators = [
|
|
12
|
+
{ type: Component, args: [{
|
|
13
|
+
host: {
|
|
14
|
+
class: 'mat-dialog-component',
|
|
15
|
+
'test-id': 'error-dialog',
|
|
16
|
+
},
|
|
17
|
+
selector: 'fw-error-dialog',
|
|
18
|
+
template: `
|
|
19
|
+
<div mat-dialog-content>{{ message }}</div>
|
|
20
|
+
<div mat-dialog-actions align="end">
|
|
21
|
+
<button test-id="close-button" mat-stroked-button mat-dialog-close>
|
|
22
|
+
{{ 'common.actions.close' | translate }}
|
|
23
|
+
</button>
|
|
24
|
+
</div>
|
|
25
|
+
`
|
|
26
|
+
},] }
|
|
27
|
+
];
|
|
28
|
+
FwErrorDialog.ctorParameters = () => [
|
|
29
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
|
|
30
|
+
{ type: MatDialogRef }
|
|
31
|
+
];
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2RpYWxvZy9lcnJvci1kaWFsb2cuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFxQnpFLE1BQU0sT0FBTyxhQUFhO0lBR3hCLFlBQ21DLElBQXVCLEVBQ2hELEdBQWdDO1FBRFAsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDaEQsUUFBRyxHQUFILEdBQUcsQ0FBNkI7UUFKbkMsWUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFBO1FBTWhDLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDOzs7WUF2QkYsU0FBUyxTQUFDO2dCQUNULElBQUksRUFBRTtvQkFDSixLQUFLLEVBQUUsc0JBQXNCO29CQUM3QixTQUFTLEVBQUUsY0FBYztpQkFDMUI7Z0JBQ0QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsUUFBUSxFQUFFOzs7Ozs7O0dBT1Q7YUFDRjs7OzRDQUtJLE1BQU0sU0FBQyxlQUFlO1lBekJELFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ3RXJyb3JEaWFsb2dEYXRhIHtcbiAgbWVzc2FnZTogc3RyaW5nXG59XG5cbkBDb21wb25lbnQoe1xuICBob3N0OiB7XG4gICAgY2xhc3M6ICdtYXQtZGlhbG9nLWNvbXBvbmVudCcsXG4gICAgJ3Rlc3QtaWQnOiAnZXJyb3ItZGlhbG9nJyxcbiAgfSxcbiAgc2VsZWN0b3I6ICdmdy1lcnJvci1kaWFsb2cnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgbWF0LWRpYWxvZy1jb250ZW50Pnt7IG1lc3NhZ2UgfX08L2Rpdj5cbiAgICA8ZGl2IG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICAgICAgPGJ1dHRvbiB0ZXN0LWlkPVwiY2xvc2UtYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIG1hdC1kaWFsb2ctY2xvc2U+XG4gICAgICAgIHt7ICdjb21tb24uYWN0aW9ucy5jbG9zZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBGd0Vycm9yRGlhbG9nIHtcbiAgcHVibGljIG1lc3NhZ2UgPSB0aGlzLmRhdGEubWVzc2FnZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwcml2YXRlIGRhdGE6IEZ3RXJyb3JEaWFsb2dEYXRhLFxuICAgIHByaXZhdGUgcmVmOiBNYXREaWFsb2dSZWY8RndFcnJvckRpYWxvZz4sXG4gICkge1xuICAgIHRoaXMucmVmLmRpc2FibGVDbG9zZSA9IGZhbHNlO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
2
|
+
import { Component, Inject, SimpleChange, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
4
|
+
import { Subject } from 'rxjs';
|
|
5
|
+
import { takeUntil } from 'rxjs/operators';
|
|
6
|
+
export class FwPortalDialog {
|
|
7
|
+
constructor(data, viewContainerRef) {
|
|
8
|
+
this.data = data;
|
|
9
|
+
this.viewContainerRef = viewContainerRef;
|
|
10
|
+
this.content = this.data.content;
|
|
11
|
+
this.title = this.data.title;
|
|
12
|
+
this.destroyed$ = new Subject();
|
|
13
|
+
if (this.data.component) {
|
|
14
|
+
this.portal = new ComponentPortal(this.data.component.type, this.viewContainerRef);
|
|
15
|
+
}
|
|
16
|
+
else if (this.data.template) {
|
|
17
|
+
this.portal = new TemplatePortal(this.data.template, this.viewContainerRef);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
throw new Error('One of [component, template] was not provided.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this.destroyed$.next();
|
|
25
|
+
}
|
|
26
|
+
attached(ref) {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
if (this.data.component) {
|
|
29
|
+
ref = ref;
|
|
30
|
+
if (this.data.component.outputs) {
|
|
31
|
+
for (const [key, observer] of Object.entries(this.data.component.outputs)) {
|
|
32
|
+
const output$ = ref[key];
|
|
33
|
+
if (typeof (output$ === null || output$ === void 0 ? void 0 : output$.pipe) === 'function' && typeof output$.subscribe === 'function') {
|
|
34
|
+
output$.pipe(takeUntil(this.destroyed$)).subscribe(observer);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (this.data.component.inputs) {
|
|
39
|
+
const changes = {};
|
|
40
|
+
for (const [key, value] of Object.entries(this.data.component.inputs)) {
|
|
41
|
+
ref.instance[key] = value;
|
|
42
|
+
changes[key] = new SimpleChange(value, value, true);
|
|
43
|
+
}
|
|
44
|
+
(_b = (_a = ref.instance).ngOnChanges) === null || _b === void 0 ? void 0 : _b.call(_a, changes);
|
|
45
|
+
ref.changeDetectorRef.markForCheck();
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
FwPortalDialog.decorators = [
|
|
51
|
+
{ type: Component, args: [{
|
|
52
|
+
host: {
|
|
53
|
+
class: 'mat-dialog-component',
|
|
54
|
+
'test-id': 'portal-dialog',
|
|
55
|
+
},
|
|
56
|
+
selector: 'fw-portal-dialog',
|
|
57
|
+
template: `
|
|
58
|
+
<ng-container *ngIf="title">
|
|
59
|
+
<h1 mat-dialog-title>{{ title }}</h1>
|
|
60
|
+
<button test-id="dialog-close-corner" mat-icon-button mat-dialog-close>
|
|
61
|
+
<mat-icon>close</mat-icon>
|
|
62
|
+
</button>
|
|
63
|
+
</ng-container>
|
|
64
|
+
<mat-dialog-content>
|
|
65
|
+
<p *ngIf="content" class="content">{{ content }}</p>
|
|
66
|
+
<ng-template [cdkPortalOutlet]="portal" (attached)="attached($event)"></ng-template>
|
|
67
|
+
</mat-dialog-content>
|
|
68
|
+
<mat-dialog-actions align="end">
|
|
69
|
+
<button test-id="dialog-close-button" mat-stroked-button mat-dialog-close>
|
|
70
|
+
{{ 'common.actions.close' | translate }}
|
|
71
|
+
</button>
|
|
72
|
+
</mat-dialog-actions>
|
|
73
|
+
`,
|
|
74
|
+
styles: [`
|
|
75
|
+
:host {
|
|
76
|
+
min-width: 200px;
|
|
77
|
+
}
|
|
78
|
+
.content {
|
|
79
|
+
margin-bottom: 30px;
|
|
80
|
+
}
|
|
81
|
+
`]
|
|
82
|
+
},] }
|
|
83
|
+
];
|
|
84
|
+
FwPortalDialog.ctorParameters = () => [
|
|
85
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MAT_DIALOG_DATA,] }] },
|
|
86
|
+
{ type: ViewContainerRef }
|
|
87
|
+
];
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9ydGFsLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9kaWFsb2cvcG9ydGFsLWRpYWxvZy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUE4QixlQUFlLEVBQXlCLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pILE9BQU8sRUFBRSxTQUFTLEVBQThCLE1BQU0sRUFBYSxZQUFZLEVBQThCLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JKLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQStDM0MsTUFBTSxPQUFPLGNBQWM7SUFPekIsWUFDbUMsSUFBd0IsRUFDakQsZ0JBQWtDO1FBRFQsU0FBSSxHQUFKLElBQUksQ0FBb0I7UUFDakQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQVI1QyxZQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7UUFFM0IsVUFBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBRWYsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFNaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUNwRjthQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUM3RTthQUFNO1lBQ0wsTUFBTSxJQUFJLEtBQUssQ0FBQyxnREFBZ0QsQ0FBQyxDQUFDO1NBQ25FO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxRQUFRLENBQUMsR0FBK0I7O1FBQ3RDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDdkIsR0FBRyxHQUFHLEdBQXdCLENBQUM7WUFDL0IsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN6RSxNQUFNLE9BQU8sR0FBMEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNoRCxJQUFJLFFBQU8sT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksQ0FBQSxLQUFLLFVBQVUsSUFBSSxPQUFPLE9BQU8sQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO3dCQUNsRixPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7cUJBQzlEO2lCQUNGO2FBQ0Y7WUFDRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsTUFBTSxPQUFPLEdBQWtCLEVBQUUsQ0FBQztnQkFDbEMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7b0JBQ3JFLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDckQ7Z0JBQ0QsTUFBQSxNQUFBLEdBQUcsQ0FBQyxRQUFRLEVBQUMsV0FBVyxtREFBRyxPQUFPLEVBQUU7Z0JBQ3BDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQzthQUN0QztTQUNGO0lBQ0gsQ0FBQzs7O1lBN0VGLFNBQVMsU0FBQztnQkFDVCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLHNCQUFzQjtvQkFDN0IsU0FBUyxFQUFFLGVBQWU7aUJBQzNCO2dCQUNELFFBQVEsRUFBRSxrQkFBa0I7Z0JBQzVCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7OztHQWdCVDt5QkFDUTs7Ozs7OztHQU9SO2FBQ0Y7Ozs0Q0FTSSxNQUFNLFNBQUMsZUFBZTtZQTFEa0YsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrUG9ydGFsT3V0bGV0QXR0YWNoZWRSZWYsIENvbXBvbmVudFBvcnRhbCwgQ29tcG9uZW50VHlwZSwgUG9ydGFsLCBUZW1wbGF0ZVBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBPbkRlc3Ryb3ksIFNpbXBsZUNoYW5nZSwgU2ltcGxlQ2hhbmdlcywgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmludGVyZmFjZSBDb21wb25lbnRTcGVjIHtcbiAgdHlwZTogQ29tcG9uZW50VHlwZTx1bmtub3duPixcbiAgaW5wdXRzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgb3V0cHV0cz86IFJlY29yZDxzdHJpbmcsICh2YWx1ZTogdW5rbm93bikgPT4gdm9pZD5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGd1BvcnRhbERpYWxvZ0RhdGEge1xuICBjb21wb25lbnQ/OiBDb21wb25lbnRTcGVjXG4gIGNvbnRlbnQ/OiBzdHJpbmdcbiAgdGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx1bmtub3duPlxuICB0aXRsZT86IHN0cmluZ1xufVxuXG5AQ29tcG9uZW50KHtcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnbWF0LWRpYWxvZy1jb21wb25lbnQnLFxuICAgICd0ZXN0LWlkJzogJ3BvcnRhbC1kaWFsb2cnLFxuICB9LFxuICBzZWxlY3RvcjogJ2Z3LXBvcnRhbC1kaWFsb2cnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0aXRsZVwiPlxuICAgICAgPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3sgdGl0bGUgfX08L2gxPlxuICAgICAgPGJ1dHRvbiB0ZXN0LWlkPVwiZGlhbG9nLWNsb3NlLWNvcm5lclwiIG1hdC1pY29uLWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG1hdC1kaWFsb2ctY29udGVudD5cbiAgICAgIDxwICpuZ0lmPVwiY29udGVudFwiIGNsYXNzPVwiY29udGVudFwiPnt7IGNvbnRlbnQgfX08L3A+XG4gICAgICA8bmctdGVtcGxhdGUgW2Nka1BvcnRhbE91dGxldF09XCJwb3J0YWxcIiAoYXR0YWNoZWQpPVwiYXR0YWNoZWQoJGV2ZW50KVwiPjwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG4gICAgPG1hdC1kaWFsb2ctYWN0aW9ucyBhbGlnbj1cImVuZFwiPlxuICAgICAgPGJ1dHRvbiB0ZXN0LWlkPVwiZGlhbG9nLWNsb3NlLWJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtZGlhbG9nLWNsb3NlPlxuICAgICAgICB7eyAnY29tbW9uLmFjdGlvbnMuY2xvc2UnIHwgdHJhbnNsYXRlIH19XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L21hdC1kaWFsb2ctYWN0aW9ucz5cbiAgYCxcbiAgc3R5bGVzOiBbYFxuICAgIDpob3N0IHtcbiAgICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgfVxuICAgIC5jb250ZW50IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgfVxuICBgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndQb3J0YWxEaWFsb2cgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBjb250ZW50ID0gdGhpcy5kYXRhLmNvbnRlbnRcbiAgcG9ydGFsOiBQb3J0YWw8YW55PlxuICB0aXRsZSA9IHRoaXMuZGF0YS50aXRsZVxuXG4gIHByaXZhdGUgZGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0KClcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkYXRhOiBGd1BvcnRhbERpYWxvZ0RhdGEsXG4gICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICApIHtcbiAgICBpZiAodGhpcy5kYXRhLmNvbXBvbmVudCkge1xuICAgICAgdGhpcy5wb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKHRoaXMuZGF0YS5jb21wb25lbnQudHlwZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YS50ZW1wbGF0ZSkge1xuICAgICAgdGhpcy5wb3J0YWwgPSBuZXcgVGVtcGxhdGVQb3J0YWwodGhpcy5kYXRhLnRlbXBsYXRlLCB0aGlzLnZpZXdDb250YWluZXJSZWYpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ09uZSBvZiBbY29tcG9uZW50LCB0ZW1wbGF0ZV0gd2FzIG5vdCBwcm92aWRlZC4nKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3llZCQubmV4dCgpO1xuICB9XG5cbiAgYXR0YWNoZWQocmVmOiBDZGtQb3J0YWxPdXRsZXRBdHRhY2hlZFJlZik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGEuY29tcG9uZW50KSB7XG4gICAgICByZWYgPSByZWYgYXMgQ29tcG9uZW50UmVmPGFueT47XG4gICAgICBpZiAodGhpcy5kYXRhLmNvbXBvbmVudC5vdXRwdXRzKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgb2JzZXJ2ZXJdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuZGF0YS5jb21wb25lbnQub3V0cHV0cykpIHtcbiAgICAgICAgICBjb25zdCBvdXRwdXQkOiBFdmVudEVtaXR0ZXI8dW5rbm93bj4gPSByZWZba2V5XTtcbiAgICAgICAgICBpZiAodHlwZW9mIG91dHB1dCQ/LnBpcGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG91dHB1dCQuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBvdXRwdXQkLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpLnN1YnNjcmliZShvYnNlcnZlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5kYXRhLmNvbXBvbmVudC5pbnB1dHMpIHtcbiAgICAgICAgY29uc3QgY2hhbmdlczogU2ltcGxlQ2hhbmdlcyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGEuY29tcG9uZW50LmlucHV0cykpIHtcbiAgICAgICAgICByZWYuaW5zdGFuY2Vba2V5XSA9IHZhbHVlO1xuICAgICAgICAgIGNoYW5nZXNba2V5XSA9IG5ldyBTaW1wbGVDaGFuZ2UodmFsdWUsIHZhbHVlLCB0cnVlKTtcbiAgICAgICAgfVxuICAgICAgICByZWYuaW5zdGFuY2UubmdPbkNoYW5nZXM/LihjaGFuZ2VzKTtcbiAgICAgICAgcmVmLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -56,7 +56,7 @@ FwNotificationComponent.decorators = [
|
|
|
56
56
|
providers: [FwNotificationTimerService],
|
|
57
57
|
encapsulation: ViewEncapsulation.None,
|
|
58
58
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
59
|
-
styles: ["fw-notification{display:block;border-radius:4px;box-sizing:border-box;margin:5px 24px;max-width:33vw;min-width:344px;padding:14px 16px;transform-origin:center;background-color:#2f96b4;border:1px solid hsla(0,0%,100%,.
|
|
59
|
+
styles: ["fw-notification{display:block;border-radius:4px;box-sizing:border-box;margin:5px 24px;max-width:33vw;min-width:344px;padding:14px 16px;transform-origin:center;background-color:#2f96b4;border:1px solid hsla(0,0%,100%,.7019607843);box-shadow:0 0 12px #999;color:#fff;opacity:.99;white-space:pre-wrap}fw-notification.error{background-color:#bd362f}fw-notification.info{background-color:#2f96b4}fw-notification.success{background-color:#51a351}fw-notification.wait{background-color:#2f96b4}fw-notification.warning{background-color:#f89406}"]
|
|
60
60
|
},] }
|
|
61
61
|
];
|
|
62
62
|
FwNotificationComponent.ctorParameters = () => [
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { TranslatePipe } from './translate.pipe';
|
|
3
|
+
import { TranslationService, MinimalTranslationService } from '../translation.service';
|
|
4
|
+
import { TrustHtmlPipe } from './trusthtml.pipe';
|
|
5
|
+
const exports = [
|
|
6
|
+
TranslatePipe,
|
|
7
|
+
TrustHtmlPipe,
|
|
8
|
+
];
|
|
9
|
+
export class PipesModule {
|
|
10
|
+
}
|
|
11
|
+
PipesModule.decorators = [
|
|
12
|
+
{ type: NgModule, args: [{
|
|
13
|
+
declarations: exports,
|
|
14
|
+
exports: exports,
|
|
15
|
+
providers: [
|
|
16
|
+
{
|
|
17
|
+
provide: TranslationService,
|
|
18
|
+
useClass: MinimalTranslationService,
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
},] }
|
|
22
|
+
];
|
|
23
|
+
export { TranslationService };
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2hhcmVkL3BpcGVzL3BpcGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxPQUFPLEdBQUc7SUFDZCxhQUFhO0lBQ2IsYUFBYTtDQUNkLENBQUM7QUFZRixNQUFNLE9BQU8sV0FBVzs7O1lBVnZCLFFBQVEsU0FBQztnQkFDUixZQUFZLEVBQUUsT0FBTztnQkFDckIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsa0JBQWtCO3dCQUMzQixRQUFRLEVBQUUseUJBQXlCO3FCQUNwQztpQkFDRjthQUNGOztBQUdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlLCBNaW5pbWFsVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBUcnVzdEh0bWxQaXBlIH0gZnJvbSAnLi90cnVzdGh0bWwucGlwZSc7XG5cbmNvbnN0IGV4cG9ydHMgPSBbXG4gIFRyYW5zbGF0ZVBpcGUsXG4gIFRydXN0SHRtbFBpcGUsXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IGV4cG9ydHMsXG4gIGV4cG9ydHM6IGV4cG9ydHMsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICAgIHVzZUNsYXNzOiBNaW5pbWFsVHJhbnNsYXRpb25TZXJ2aWNlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFBpcGVzTW9kdWxlIHt9XG5cbmV4cG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9XG4iXX0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ChangeDetectorRef } from '@angular/core';
|
|
2
|
+
import { Pipe } from '@angular/core';
|
|
3
|
+
import { TranslationService } from '../translation.service';
|
|
4
|
+
/**
|
|
5
|
+
* Translate a message given a nested key to a location in the loaded locale copy.
|
|
6
|
+
*/
|
|
7
|
+
export class TranslatePipe {
|
|
8
|
+
constructor(cdr, translationService) {
|
|
9
|
+
this.cdr = cdr;
|
|
10
|
+
this.translationService = translationService;
|
|
11
|
+
this.subscriptions = {};
|
|
12
|
+
this.messages = {};
|
|
13
|
+
}
|
|
14
|
+
ngOnDestroy() {
|
|
15
|
+
for (const subscription of Object.values(this.subscriptions)) {
|
|
16
|
+
subscription.unsubscribe();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
transform(key, silent = false) {
|
|
20
|
+
if (!(key in this.subscriptions)) {
|
|
21
|
+
this.subscriptions[key] = this.translationService.getMessage(key, silent).subscribe(message => {
|
|
22
|
+
this.messages[key] = message;
|
|
23
|
+
// trigger change detection to support components with ChangeDetectionStrategy.OnPush
|
|
24
|
+
this.cdr.markForCheck();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return this.messages[key] || '';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
TranslatePipe.decorators = [
|
|
31
|
+
{ type: Pipe, args: [{
|
|
32
|
+
name: 'translate',
|
|
33
|
+
pure: false,
|
|
34
|
+
},] }
|
|
35
|
+
];
|
|
36
|
+
TranslatePipe.ctorParameters = () => [
|
|
37
|
+
{ type: ChangeDetectorRef },
|
|
38
|
+
{ type: TranslationService }
|
|
39
|
+
];
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zaGFyZWQvcGlwZXMvdHJhbnNsYXRlLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBR3BELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTVEOztHQUVHO0FBS0gsTUFBTSxPQUFPLGFBQWE7SUFJeEIsWUFDVSxHQUFzQixFQUN0QixrQkFBc0M7UUFEdEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUx4QyxrQkFBYSxHQUFvQyxFQUFFLENBQUE7UUFDbkQsYUFBUSxHQUE4QixFQUFFLENBQUE7SUFLN0MsQ0FBQztJQUVKLFdBQVc7UUFDVCxLQUFLLE1BQU0sWUFBWSxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQzVELFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsR0FBVyxFQUFFLE1BQU0sR0FBRyxLQUFLO1FBQ25DLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQzVGLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO2dCQUM3QixxRkFBcUY7Z0JBQ3JGLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7O1lBNUJELElBQUksU0FBQztnQkFDTCxJQUFJLEVBQUUsV0FBVztnQkFDakIsSUFBSSxFQUFFLEtBQUs7YUFDWjs7O1lBWlEsaUJBQWlCO1lBSWpCLGtCQUFrQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi90cmFuc2xhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBUcmFuc2xhdGUgYSBtZXNzYWdlIGdpdmVuIGEgbmVzdGVkIGtleSB0byBhIGxvY2F0aW9uIGluIHRoZSBsb2FkZWQgbG9jYWxlIGNvcHkuXG4gKi9cbiBAUGlwZSh7XG4gIG5hbWU6ICd0cmFuc2xhdGUnLFxuICBwdXJlOiBmYWxzZSxcbn0pXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0sIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogeyBba2V5OiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9XG4gIHByaXZhdGUgbWVzc2FnZXM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHRyYW5zbGF0aW9uU2VydmljZTogVHJhbnNsYXRpb25TZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgT2JqZWN0LnZhbHVlcyh0aGlzLnN1YnNjcmlwdGlvbnMpKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICB0cmFuc2Zvcm0oa2V5OiBzdHJpbmcsIHNpbGVudCA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBpZiAoIShrZXkgaW4gdGhpcy5zdWJzY3JpcHRpb25zKSkge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zW2tleV0gPSB0aGlzLnRyYW5zbGF0aW9uU2VydmljZS5nZXRNZXNzYWdlKGtleSwgc2lsZW50KS5zdWJzY3JpYmUobWVzc2FnZSA9PiB7XG4gICAgICAgIHRoaXMubWVzc2FnZXNba2V5XSA9IG1lc3NhZ2U7XG4gICAgICAgIC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiB0byBzdXBwb3J0IGNvbXBvbmVudHMgd2l0aCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZXNba2V5XSB8fCAnJztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Pipe } from '@angular/core';
|
|
2
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
3
|
+
export class TrustHtmlPipe {
|
|
4
|
+
constructor(sanitizer) {
|
|
5
|
+
this.sanitizer = sanitizer;
|
|
6
|
+
}
|
|
7
|
+
transform(html) {
|
|
8
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
TrustHtmlPipe.decorators = [
|
|
12
|
+
{ type: Pipe, args: [{
|
|
13
|
+
name: 'trusthtml',
|
|
14
|
+
pure: true,
|
|
15
|
+
},] }
|
|
16
|
+
];
|
|
17
|
+
TrustHtmlPipe.ctorParameters = () => [
|
|
18
|
+
{ type: DomSanitizer }
|
|
19
|
+
];
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RodG1sLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9zaGFyZWQvcGlwZXMvdHJ1c3RodG1sLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBWSxNQUFNLDJCQUEyQixDQUFDO0FBTW5FLE1BQU0sT0FBTyxhQUFhO0lBQ3hCLFlBQXFCLFNBQXVCO1FBQXZCLGNBQVMsR0FBVCxTQUFTLENBQWM7SUFBSSxDQUFDO0lBRWpELFNBQVMsQ0FBQyxJQUFZO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDOzs7WUFURixJQUFJLFNBQUM7Z0JBQ0osSUFBSSxFQUFFLFdBQVc7Z0JBQ2pCLElBQUksRUFBRSxJQUFJO2FBQ1g7OztZQUxRLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQaXBlLCBQaXBlVHJhbnNmb3JtIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3RydXN0aHRtbCcsXG4gIHB1cmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFRydXN0SHRtbFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgY29uc3RydWN0b3IgKHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHsgfVxuXG4gIHRyYW5zZm9ybShodG1sOiBzdHJpbmcpOiBTYWZlSHRtbCB7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWwpO1xuICB9XG59XG4iXX0=
|