ngx-techlify-checksheet 18.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/esm2022/lib/@shared/file-upload-button/file-upload-button.component.mjs +50 -0
- package/esm2022/lib/@shared/index.mjs +2 -0
- package/esm2022/lib/@shared/material.module.mjs +171 -0
- package/esm2022/lib/@shared/shared.module.mjs +54 -0
- package/esm2022/lib/checksheet/checksheet-form/checksheet-form.component.mjs +161 -0
- package/esm2022/lib/checksheet/checksheet-form-button/checksheet-form-button.component.mjs +58 -0
- package/esm2022/lib/checksheet/checksheet-format-list/checksheet-format-list.component.mjs +123 -0
- package/esm2022/lib/checksheet/checksheet-format-question.service.mjs +18 -0
- package/esm2022/lib/checksheet/checksheet-format.service.mjs +24 -0
- package/esm2022/lib/checksheet/checksheet-list/checksheet-list.component.mjs +138 -0
- package/esm2022/lib/checksheet/checksheet-node-view/checksheet-node-view.component.mjs +59 -0
- package/esm2022/lib/checksheet/checksheet-question/checksheet-question.component.mjs +174 -0
- package/esm2022/lib/checksheet/checksheet-question-form/checksheet-question-form.component.mjs +148 -0
- package/esm2022/lib/checksheet/checksheet-question-list/checksheet-question-list.component.mjs +161 -0
- package/esm2022/lib/checksheet/checksheet-report/checksheet-report.component.mjs +242 -0
- package/esm2022/lib/checksheet/checksheet-review-button/checksheet-review-button.component.mjs +68 -0
- package/esm2022/lib/checksheet/checksheet-routing.module.mjs +44 -0
- package/esm2022/lib/checksheet/checksheet-submission-answer.service.mjs +18 -0
- package/esm2022/lib/checksheet/checksheet-submission-delete-button/checksheet-submission-delete-button.component.mjs +52 -0
- package/esm2022/lib/checksheet/checksheet-submission-file/checksheet-submission-file-delete-button/checksheet-submission-file-delete-button.component.mjs +55 -0
- package/esm2022/lib/checksheet/checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component.mjs +67 -0
- package/esm2022/lib/checksheet/checksheet-submission-file-upload/checksheet-submisison-file-upload.component.mjs +46 -0
- package/esm2022/lib/checksheet/checksheet-submission-file.service.mjs +18 -0
- package/esm2022/lib/checksheet/checksheet-submission-form/checksheet-submission-form.component.mjs +131 -0
- package/esm2022/lib/checksheet/checksheet-submission-form-button/checksheet-submission-form-button.component.mjs +58 -0
- package/esm2022/lib/checksheet/checksheet-submission-list/checksheet-submission-list.component.mjs +107 -0
- package/esm2022/lib/checksheet/checksheet-submission-review-button/checksheet-submission-review-button.component.mjs +68 -0
- package/esm2022/lib/checksheet/checksheet-submission-view/checksheet-submission-view.component.mjs +142 -0
- package/esm2022/lib/checksheet/checksheet-submission.service.mjs +36 -0
- package/esm2022/lib/checksheet/checksheet-submittable.type.mjs +2 -0
- package/esm2022/lib/checksheet/checksheet-view/checksheet-view.component.mjs +140 -0
- package/esm2022/lib/checksheet/checksheet.module.mjs +131 -0
- package/esm2022/lib/checksheet/checksheet.service.mjs +44 -0
- package/esm2022/lib/checksheet/mechanical-issue-form/mechanical-issue-form.component.mjs +73 -0
- package/esm2022/ngx-techlify-checksheet.mjs +5 -0
- package/esm2022/public-api.mjs +9 -0
- package/fesm2022/ngx-techlify-checksheet.mjs +2550 -0
- package/fesm2022/ngx-techlify-checksheet.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/@shared/file-upload-button/file-upload-button.component.d.ts +20 -0
- package/lib/@shared/index.d.ts +1 -0
- package/lib/@shared/material.module.d.ts +40 -0
- package/lib/@shared/shared.module.d.ts +14 -0
- package/lib/checksheet/checksheet-form/checksheet-form.component.d.ts +45 -0
- package/lib/checksheet/checksheet-form-button/checksheet-form-button.component.d.ts +29 -0
- package/lib/checksheet/checksheet-format-list/checksheet-format-list.component.d.ts +19 -0
- package/lib/checksheet/checksheet-format-question.service.d.ts +7 -0
- package/lib/checksheet/checksheet-format.service.d.ts +10 -0
- package/lib/checksheet/checksheet-list/checksheet-list.component.d.ts +31 -0
- package/lib/checksheet/checksheet-node-view/checksheet-node-view.component.d.ts +25 -0
- package/lib/checksheet/checksheet-question/checksheet-question.component.d.ts +34 -0
- package/lib/checksheet/checksheet-question-form/checksheet-question-form.component.d.ts +38 -0
- package/lib/checksheet/checksheet-question-list/checksheet-question-list.component.d.ts +26 -0
- package/lib/checksheet/checksheet-report/checksheet-report.component.d.ts +47 -0
- package/lib/checksheet/checksheet-review-button/checksheet-review-button.component.d.ts +32 -0
- package/lib/checksheet/checksheet-routing.module.d.ts +7 -0
- package/lib/checksheet/checksheet-submission-answer.service.d.ts +7 -0
- package/lib/checksheet/checksheet-submission-delete-button/checksheet-submission-delete-button.component.d.ts +24 -0
- package/lib/checksheet/checksheet-submission-file/checksheet-submission-file-delete-button/checksheet-submission-file-delete-button.component.d.ts +24 -0
- package/lib/checksheet/checksheet-submission-file/checksheet-submission-files/checksheet-submission-files.component.d.ts +17 -0
- package/lib/checksheet/checksheet-submission-file-upload/checksheet-submisison-file-upload.component.d.ts +13 -0
- package/lib/checksheet/checksheet-submission-file.service.d.ts +7 -0
- package/lib/checksheet/checksheet-submission-form/checksheet-submission-form.component.d.ts +27 -0
- package/lib/checksheet/checksheet-submission-form-button/checksheet-submission-form-button.component.d.ts +29 -0
- package/lib/checksheet/checksheet-submission-list/checksheet-submission-list.component.d.ts +24 -0
- package/lib/checksheet/checksheet-submission-review-button/checksheet-submission-review-button.component.d.ts +32 -0
- package/lib/checksheet/checksheet-submission-view/checksheet-submission-view.component.d.ts +37 -0
- package/lib/checksheet/checksheet-submission.service.d.ts +22 -0
- package/lib/checksheet/checksheet-submittable.type.d.ts +1 -0
- package/lib/checksheet/checksheet-view/checksheet-view.component.d.ts +37 -0
- package/lib/checksheet/checksheet.module.d.ts +34 -0
- package/lib/checksheet/checksheet.service.d.ts +25 -0
- package/lib/checksheet/mechanical-issue-form/mechanical-issue-form.component.d.ts +21 -0
- package/package.json +45 -0
- package/public-api.d.ts +5 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# NgxTechlifyChecksheet
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 18.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project ngx-techlify-checksheet` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project ngx-techlify-checksheet`.
|
|
8
|
+
> Note: Don't forget to add `--project ngx-techlify-checksheet` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build ngx-techlify-checksheet` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build ngx-techlify-checksheet`, go to the dist folder `cd dist/ngx-techlify-checksheet` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test ngx-techlify-checksheet` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
4
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "ngx-techlify-core";
|
|
7
|
+
import * as i2 from "@angular/material/button";
|
|
8
|
+
import * as i3 from "@angular/material/icon";
|
|
9
|
+
export class FileUploadButtonComponent {
|
|
10
|
+
entityFileService;
|
|
11
|
+
config;
|
|
12
|
+
uploaded = new EventEmitter();
|
|
13
|
+
DEFAULT_FILE_ID = 'file-upload-button';
|
|
14
|
+
isUploading;
|
|
15
|
+
constructor(entityFileService) {
|
|
16
|
+
this.entityFileService = entityFileService;
|
|
17
|
+
}
|
|
18
|
+
async onFileChange(event) {
|
|
19
|
+
if (event.target.files && event.target.files.length) {
|
|
20
|
+
const fileArray = Array.from(event.target.files);
|
|
21
|
+
const fileInput = document.getElementById(this.config?.fileId ?? this.DEFAULT_FILE_ID);
|
|
22
|
+
fileInput.value = '';
|
|
23
|
+
this.isUploading = true;
|
|
24
|
+
const results = await this.uploadFiles(fileArray);
|
|
25
|
+
this.uploaded.emit(results);
|
|
26
|
+
this.isUploading = false;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
selectFiles(event) {
|
|
30
|
+
event.preventDefault();
|
|
31
|
+
document
|
|
32
|
+
.getElementById(this.config?.fileId ?? this.DEFAULT_FILE_ID)
|
|
33
|
+
?.click();
|
|
34
|
+
}
|
|
35
|
+
async uploadFiles(files) {
|
|
36
|
+
const uploadPromises = files.map((file) => this.entityFileService.uploadEntityFile(file));
|
|
37
|
+
return await Promise.all(uploadPromises);
|
|
38
|
+
}
|
|
39
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadButtonComponent, deps: [{ token: i1.EntityFileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
40
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: FileUploadButtonComponent, isStandalone: true, selector: "app-file-upload-button", inputs: { config: "config" }, outputs: { uploaded: "uploaded" }, ngImport: i0, template: "<button\n [disabled]=\"isUploading\"\n mat-stroked-button\n type=\"button\"\n (click)=\"selectFiles($event)\"\n>\n <mat-icon>attachment</mat-icon> Attach\n</button>\n\n<input\n type=\"file\"\n id=\"{{ config.fileId ?? DEFAULT_FILE_ID }}\"\n [accept]=\"config.accept ?? '*'\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple ?? false\"\n class=\"d-none\"\n/>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: FileUploadButtonComponent, decorators: [{
|
|
43
|
+
type: Component,
|
|
44
|
+
args: [{ selector: 'app-file-upload-button', standalone: true, imports: [CommonModule, MatButtonModule, MatIconModule], template: "<button\n [disabled]=\"isUploading\"\n mat-stroked-button\n type=\"button\"\n (click)=\"selectFiles($event)\"\n>\n <mat-icon>attachment</mat-icon> Attach\n</button>\n\n<input\n type=\"file\"\n id=\"{{ config.fileId ?? DEFAULT_FILE_ID }}\"\n [accept]=\"config.accept ?? '*'\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple ?? false\"\n class=\"d-none\"\n/>\n" }]
|
|
45
|
+
}], ctorParameters: () => [{ type: i1.EntityFileService }], propDecorators: { config: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}], uploaded: [{
|
|
48
|
+
type: Output
|
|
49
|
+
}] } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWQtYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvQHNoYXJlZC9maWxlLXVwbG9hZC1idXR0b24vZmlsZS11cGxvYWQtYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvQHNoYXJlZC9maWxlLXVwbG9hZC1idXR0b24vZmlsZS11cGxvYWQtYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7O0FBVXZELE1BQU0sT0FBTyx5QkFBeUI7SUFXaEI7SUFWWCxNQUFNLENBSWI7SUFDUSxRQUFRLEdBQXdCLElBQUksWUFBWSxFQUFTLENBQUM7SUFFM0QsZUFBZSxHQUFHLG9CQUFvQixDQUFDO0lBQ2hELFdBQVcsQ0FBVztJQUV0QixZQUFvQixpQkFBb0M7UUFBcEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtJQUFHLENBQUM7SUFFNUQsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFVO1FBQzNCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEQsTUFBTSxTQUFTLEdBQVcsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pELE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQ3hCLENBQUM7WUFDdEIsU0FBUyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsTUFBTSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVU7UUFDcEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLFFBQVE7YUFDTCxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM1RCxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUM5QyxDQUFDO1FBQ0YsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDM0MsQ0FBQzt3R0F2Q1UseUJBQXlCOzRGQUF6Qix5QkFBeUIsbUpDYnRDLHNZQWlCQSx5RERSWSxZQUFZLDhCQUFFLGVBQWUsMk5BQUUsYUFBYTs7NEZBSTNDLHlCQUF5QjtrQkFQckMsU0FBUzsrQkFDRSx3QkFBd0IsY0FDdEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLENBQUM7c0ZBSzlDLE1BQU07c0JBQWQsS0FBSztnQkFLSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgRW50aXR5RmlsZVNlcnZpY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1maWxlLXVwbG9hZC1idXR0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsZS11cGxvYWQtYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZmlsZS11cGxvYWQtYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZEJ1dHRvbkNvbXBvbmVudCAge1xuICBASW5wdXQoKSBjb25maWchOiB7XG4gICAgZmlsZUlkPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIG11bHRpcGxlPzogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgICBhY2NlcHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIH07XG4gIEBPdXRwdXQoKSB1cGxvYWRlZDogRXZlbnRFbWl0dGVyPGFueVtdPiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG5cbiAgcmVhZG9ubHkgREVGQVVMVF9GSUxFX0lEID0gJ2ZpbGUtdXBsb2FkLWJ1dHRvbic7XG4gIGlzVXBsb2FkaW5nITogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVudGl0eUZpbGVTZXJ2aWNlOiBFbnRpdHlGaWxlU2VydmljZSkge31cblxuICBhc3luYyBvbkZpbGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xuICAgIGlmIChldmVudC50YXJnZXQuZmlsZXMgJiYgZXZlbnQudGFyZ2V0LmZpbGVzLmxlbmd0aCkge1xuICAgICAgY29uc3QgZmlsZUFycmF5OiBGaWxlW10gPSBBcnJheS5mcm9tKGV2ZW50LnRhcmdldC5maWxlcyk7XG4gICAgICBjb25zdCBmaWxlSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgdGhpcy5jb25maWc/LmZpbGVJZCA/PyB0aGlzLkRFRkFVTFRfRklMRV9JRFxuICAgICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XG4gICAgICB0aGlzLmlzVXBsb2FkaW5nID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCB0aGlzLnVwbG9hZEZpbGVzKGZpbGVBcnJheSk7XG4gICAgICB0aGlzLnVwbG9hZGVkLmVtaXQocmVzdWx0cyk7XG4gICAgICB0aGlzLmlzVXBsb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0RmlsZXMoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZCh0aGlzLmNvbmZpZz8uZmlsZUlkID8/IHRoaXMuREVGQVVMVF9GSUxFX0lEKVxuICAgICAgPy5jbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyB1cGxvYWRGaWxlcyhmaWxlczogRmlsZVtdKTogUHJvbWlzZTxhbnlbXT4ge1xuICAgIGNvbnN0IHVwbG9hZFByb21pc2VzID0gZmlsZXMubWFwKChmaWxlKSA9PlxuICAgICAgdGhpcy5lbnRpdHlGaWxlU2VydmljZS51cGxvYWRFbnRpdHlGaWxlKGZpbGUpXG4gICAgKTtcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwodXBsb2FkUHJvbWlzZXMpO1xuICB9XG59XG4iLCI8YnV0dG9uXG4gIFtkaXNhYmxlZF09XCJpc1VwbG9hZGluZ1wiXG4gIG1hdC1zdHJva2VkLWJ1dHRvblxuICB0eXBlPVwiYnV0dG9uXCJcbiAgKGNsaWNrKT1cInNlbGVjdEZpbGVzKCRldmVudClcIlxuPlxuICA8bWF0LWljb24+YXR0YWNobWVudDwvbWF0LWljb24+IEF0dGFjaFxuPC9idXR0b24+XG5cbjxpbnB1dFxuICB0eXBlPVwiZmlsZVwiXG4gIGlkPVwie3sgY29uZmlnLmZpbGVJZCA/PyBERUZBVUxUX0ZJTEVfSUQgfX1cIlxuICBbYWNjZXB0XT1cImNvbmZpZy5hY2NlcHQgPz8gJyonXCJcbiAgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gIFttdWx0aXBsZV09XCJjb25maWcubXVsdGlwbGUgPz8gZmFsc2VcIlxuICBjbGFzcz1cImQtbm9uZVwiXG4vPlxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './shared.module';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL0BzaGFyZWQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQkFBaUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2hhcmVkLm1vZHVsZSc7XG4iXX0=
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* This module imports and re-exports all Angular Material modules for convenience,
|
|
3
|
+
* so only 1 module import is needed in your feature modules.
|
|
4
|
+
* See https://material.angular.io/guide/getting-started#step-3-import-the-component-modules.
|
|
5
|
+
*
|
|
6
|
+
* To optimize your production builds, you should only import the components used in your app.
|
|
7
|
+
*/
|
|
8
|
+
import { NgModule } from '@angular/core';
|
|
9
|
+
import { MatCommonModule, MatLineModule, MatNativeDateModule, MatOptionModule, MatPseudoCheckboxModule, MatRippleModule } from '@angular/material/core';
|
|
10
|
+
import { MatAutocompleteModule } from '@angular/material/autocomplete';
|
|
11
|
+
import { MatBadgeModule } from '@angular/material/badge';
|
|
12
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
13
|
+
import { MatButtonToggleModule } from '@angular/material/button-toggle';
|
|
14
|
+
import { MatCardModule } from '@angular/material/card';
|
|
15
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
16
|
+
import { MatChipsModule } from '@angular/material/chips';
|
|
17
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
18
|
+
import { MatDialogModule } from '@angular/material/dialog';
|
|
19
|
+
import { MatDividerModule } from '@angular/material/divider';
|
|
20
|
+
import { MatExpansionModule } from '@angular/material/expansion';
|
|
21
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
22
|
+
import { MatGridListModule } from '@angular/material/grid-list';
|
|
23
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
24
|
+
import { MatInputModule } from '@angular/material/input';
|
|
25
|
+
import { MatListModule } from '@angular/material/list';
|
|
26
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
27
|
+
import { MatPaginatorModule } from '@angular/material/paginator';
|
|
28
|
+
import { MatProgressBarModule } from '@angular/material/progress-bar';
|
|
29
|
+
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
|
30
|
+
import { MatRadioModule } from '@angular/material/radio';
|
|
31
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
32
|
+
import { MatSidenavModule } from '@angular/material/sidenav';
|
|
33
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
34
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
35
|
+
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
36
|
+
import { MatSortModule } from '@angular/material/sort';
|
|
37
|
+
import { MatStepperModule } from '@angular/material/stepper';
|
|
38
|
+
import { MatTableModule } from '@angular/material/table';
|
|
39
|
+
import { MatTabsModule } from '@angular/material/tabs';
|
|
40
|
+
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
41
|
+
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
42
|
+
import { MatTreeModule } from '@angular/material/tree';
|
|
43
|
+
import * as i0 from "@angular/core";
|
|
44
|
+
export class MaterialModule {
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
46
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, exports: [MatAutocompleteModule,
|
|
47
|
+
MatBadgeModule,
|
|
48
|
+
MatButtonModule,
|
|
49
|
+
MatButtonToggleModule,
|
|
50
|
+
MatCardModule,
|
|
51
|
+
MatCheckboxModule,
|
|
52
|
+
MatChipsModule,
|
|
53
|
+
MatCommonModule,
|
|
54
|
+
MatDatepickerModule,
|
|
55
|
+
MatDialogModule,
|
|
56
|
+
MatDividerModule,
|
|
57
|
+
MatExpansionModule,
|
|
58
|
+
MatFormFieldModule,
|
|
59
|
+
MatGridListModule,
|
|
60
|
+
MatIconModule,
|
|
61
|
+
MatInputModule,
|
|
62
|
+
MatLineModule,
|
|
63
|
+
MatListModule,
|
|
64
|
+
MatMenuModule,
|
|
65
|
+
MatNativeDateModule,
|
|
66
|
+
MatOptionModule,
|
|
67
|
+
MatPaginatorModule,
|
|
68
|
+
MatProgressBarModule,
|
|
69
|
+
MatProgressSpinnerModule,
|
|
70
|
+
MatPseudoCheckboxModule,
|
|
71
|
+
MatRadioModule,
|
|
72
|
+
MatRippleModule,
|
|
73
|
+
MatSelectModule,
|
|
74
|
+
MatSidenavModule,
|
|
75
|
+
MatSlideToggleModule,
|
|
76
|
+
MatSliderModule,
|
|
77
|
+
MatSnackBarModule,
|
|
78
|
+
MatSortModule,
|
|
79
|
+
MatStepperModule,
|
|
80
|
+
MatTableModule,
|
|
81
|
+
MatTabsModule,
|
|
82
|
+
MatToolbarModule,
|
|
83
|
+
MatTooltipModule,
|
|
84
|
+
MatTreeModule] });
|
|
85
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, imports: [MatAutocompleteModule,
|
|
86
|
+
MatBadgeModule,
|
|
87
|
+
MatButtonModule,
|
|
88
|
+
MatButtonToggleModule,
|
|
89
|
+
MatCardModule,
|
|
90
|
+
MatCheckboxModule,
|
|
91
|
+
MatChipsModule,
|
|
92
|
+
MatCommonModule,
|
|
93
|
+
MatDatepickerModule,
|
|
94
|
+
MatDialogModule,
|
|
95
|
+
MatDividerModule,
|
|
96
|
+
MatExpansionModule,
|
|
97
|
+
MatFormFieldModule,
|
|
98
|
+
MatGridListModule,
|
|
99
|
+
MatIconModule,
|
|
100
|
+
MatInputModule,
|
|
101
|
+
MatLineModule,
|
|
102
|
+
MatListModule,
|
|
103
|
+
MatMenuModule,
|
|
104
|
+
MatNativeDateModule,
|
|
105
|
+
MatOptionModule,
|
|
106
|
+
MatPaginatorModule,
|
|
107
|
+
MatProgressBarModule,
|
|
108
|
+
MatProgressSpinnerModule,
|
|
109
|
+
MatPseudoCheckboxModule,
|
|
110
|
+
MatRadioModule,
|
|
111
|
+
MatRippleModule,
|
|
112
|
+
MatSelectModule,
|
|
113
|
+
MatSidenavModule,
|
|
114
|
+
MatSlideToggleModule,
|
|
115
|
+
MatSliderModule,
|
|
116
|
+
MatSnackBarModule,
|
|
117
|
+
MatSortModule,
|
|
118
|
+
MatStepperModule,
|
|
119
|
+
MatTableModule,
|
|
120
|
+
MatTabsModule,
|
|
121
|
+
MatToolbarModule,
|
|
122
|
+
MatTooltipModule,
|
|
123
|
+
MatTreeModule] });
|
|
124
|
+
}
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MaterialModule, decorators: [{
|
|
126
|
+
type: NgModule,
|
|
127
|
+
args: [{
|
|
128
|
+
exports: [
|
|
129
|
+
MatAutocompleteModule,
|
|
130
|
+
MatBadgeModule,
|
|
131
|
+
MatButtonModule,
|
|
132
|
+
MatButtonToggleModule,
|
|
133
|
+
MatCardModule,
|
|
134
|
+
MatCheckboxModule,
|
|
135
|
+
MatChipsModule,
|
|
136
|
+
MatCommonModule,
|
|
137
|
+
MatDatepickerModule,
|
|
138
|
+
MatDialogModule,
|
|
139
|
+
MatDividerModule,
|
|
140
|
+
MatExpansionModule,
|
|
141
|
+
MatFormFieldModule,
|
|
142
|
+
MatGridListModule,
|
|
143
|
+
MatIconModule,
|
|
144
|
+
MatInputModule,
|
|
145
|
+
MatLineModule,
|
|
146
|
+
MatListModule,
|
|
147
|
+
MatMenuModule,
|
|
148
|
+
MatNativeDateModule,
|
|
149
|
+
MatOptionModule,
|
|
150
|
+
MatPaginatorModule,
|
|
151
|
+
MatProgressBarModule,
|
|
152
|
+
MatProgressSpinnerModule,
|
|
153
|
+
MatPseudoCheckboxModule,
|
|
154
|
+
MatRadioModule,
|
|
155
|
+
MatRippleModule,
|
|
156
|
+
MatSelectModule,
|
|
157
|
+
MatSidenavModule,
|
|
158
|
+
MatSlideToggleModule,
|
|
159
|
+
MatSliderModule,
|
|
160
|
+
MatSnackBarModule,
|
|
161
|
+
MatSortModule,
|
|
162
|
+
MatStepperModule,
|
|
163
|
+
MatTableModule,
|
|
164
|
+
MatTabsModule,
|
|
165
|
+
MatToolbarModule,
|
|
166
|
+
MatTooltipModule,
|
|
167
|
+
MatTreeModule
|
|
168
|
+
]
|
|
169
|
+
}]
|
|
170
|
+
}] });
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNoZWNrc2hlZXQvc3JjL2xpYi9Ac2hhcmVkL21hdGVyaWFsLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUNiLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsdUJBQXVCLEVBQ3ZCLGVBQWUsRUFDaEIsTUFBTSx3QkFBd0IsQ0FBQztBQUNoQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2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QWE7WUFDYixnQkFBZ0I7WUFDaEIsZ0JBQWdCO1lBQ2hCLGFBQWE7OzRGQUdKLGNBQWM7a0JBM0MxQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxxQkFBcUI7d0JBQ3JCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixxQkFBcUI7d0JBQ3JCLGFBQWE7d0JBQ2IsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsa0JBQWtCO3dCQUNsQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGFBQWE7d0JBQ2IsYUFBYTt3QkFDYixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixrQkFBa0I7d0JBQ2xCLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4Qix1QkFBdUI7d0JBQ3ZCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLGdCQUFnQjt3QkFDaEIsYUFBYTtxQkFDZDtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBUaGlzIG1vZHVsZSBpbXBvcnRzIGFuZCByZS1leHBvcnRzIGFsbCBBbmd1bGFyIE1hdGVyaWFsIG1vZHVsZXMgZm9yIGNvbnZlbmllbmNlLFxuICogc28gb25seSAxIG1vZHVsZSBpbXBvcnQgaXMgbmVlZGVkIGluIHlvdXIgZmVhdHVyZSBtb2R1bGVzLlxuICogU2VlIGh0dHBzOi8vbWF0ZXJpYWwuYW5ndWxhci5pby9ndWlkZS9nZXR0aW5nLXN0YXJ0ZWQjc3RlcC0zLWltcG9ydC10aGUtY29tcG9uZW50LW1vZHVsZXMuXG4gKlxuICogVG8gb3B0aW1pemUgeW91ciBwcm9kdWN0aW9uIGJ1aWxkcywgeW91IHNob3VsZCBvbmx5IGltcG9ydCB0aGUgY29tcG9uZW50cyB1c2VkIGluIHlvdXIgYXBwLlxuICovXG5cbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBNYXRDb21tb25Nb2R1bGUsXG4gIE1hdExpbmVNb2R1bGUsXG4gIE1hdE5hdGl2ZURhdGVNb2R1bGUsXG4gIE1hdE9wdGlvbk1vZHVsZSxcbiAgTWF0UHNldWRvQ2hlY2tib3hNb2R1bGUsXG4gIE1hdFJpcHBsZU1vZHVsZVxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2F1dG9jb21wbGV0ZSc7XG5pbXBvcnQgeyBNYXRCYWRnZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcbmltcG9ydCB7IE1hdENhcmRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZXhwYW5zaW9uJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0R3JpZExpc3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9ncmlkLWxpc3QnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRMaXN0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbGlzdCc7XG5pbXBvcnQgeyBNYXRNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvbWVudSc7XG5pbXBvcnQgeyBNYXRQYWdpbmF0b3JNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XG5pbXBvcnQgeyBNYXRSYWRpb01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3JhZGlvJztcbmltcG9ydCB7IE1hdFNlbGVjdE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NlbGVjdCc7XG5pbXBvcnQgeyBNYXRTaWRlbmF2TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0U25hY2tCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0U29ydE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NvcnQnO1xuaW1wb3J0IHsgTWF0U3RlcHBlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3N0ZXBwZXInO1xuaW1wb3J0IHsgTWF0VGFibGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRUb29sYmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbGJhcic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXRUcmVlTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXG4gICAgTWF0QmFkZ2VNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE1hdEJ1dHRvblRvZ2dsZU1vZHVsZSxcbiAgICBNYXRDYXJkTW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdENoaXBzTW9kdWxlLFxuICAgIE1hdENvbW1vbk1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICBNYXREaXZpZGVyTW9kdWxlLFxuICAgIE1hdEV4cGFuc2lvbk1vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0R3JpZExpc3RNb2R1bGUsXG4gICAgTWF0SWNvbk1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRMaW5lTW9kdWxlLFxuICAgIE1hdExpc3RNb2R1bGUsXG4gICAgTWF0TWVudU1vZHVsZSxcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxuICAgIE1hdE9wdGlvbk1vZHVsZSxcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXG4gICAgTWF0UHJvZ3Jlc3NTcGlubmVyTW9kdWxlLFxuICAgIE1hdFBzZXVkb0NoZWNrYm94TW9kdWxlLFxuICAgIE1hdFJhZGlvTW9kdWxlLFxuICAgIE1hdFJpcHBsZU1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0U2lkZW5hdk1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRTbGlkZXJNb2R1bGUsXG4gICAgTWF0U25hY2tCYXJNb2R1bGUsXG4gICAgTWF0U29ydE1vZHVsZSxcbiAgICBNYXRTdGVwcGVyTW9kdWxlLFxuICAgIE1hdFRhYmxlTW9kdWxlLFxuICAgIE1hdFRhYnNNb2R1bGUsXG4gICAgTWF0VG9vbGJhck1vZHVsZSxcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxuICAgIE1hdFRyZWVNb2R1bGVcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBNYXRlcmlhbE1vZHVsZSB7IH1cbiJdfQ==
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FlexLayoutModule } from '@angular/flex-layout';
|
|
4
|
+
import { MaterialModule } from './material.module';
|
|
5
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { InfiniteScrollModule } from 'ngx-infinite-scroll';
|
|
7
|
+
import { RouterModule } from '@angular/router';
|
|
8
|
+
import { LoaderModule } from 'ngx-techlify-core';
|
|
9
|
+
import { NgxPermissionsModule } from 'ngx-permissions';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class SharedModule {
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, imports: [FlexLayoutModule,
|
|
14
|
+
MaterialModule,
|
|
15
|
+
CommonModule], exports: [FlexLayoutModule,
|
|
16
|
+
MaterialModule,
|
|
17
|
+
NgxPermissionsModule,
|
|
18
|
+
FormsModule,
|
|
19
|
+
ReactiveFormsModule,
|
|
20
|
+
InfiniteScrollModule,
|
|
21
|
+
RouterModule,
|
|
22
|
+
LoaderModule] });
|
|
23
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, imports: [FlexLayoutModule,
|
|
24
|
+
MaterialModule,
|
|
25
|
+
CommonModule, FlexLayoutModule,
|
|
26
|
+
MaterialModule,
|
|
27
|
+
NgxPermissionsModule,
|
|
28
|
+
FormsModule,
|
|
29
|
+
ReactiveFormsModule,
|
|
30
|
+
InfiniteScrollModule,
|
|
31
|
+
RouterModule,
|
|
32
|
+
LoaderModule] });
|
|
33
|
+
}
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: SharedModule, decorators: [{
|
|
35
|
+
type: NgModule,
|
|
36
|
+
args: [{
|
|
37
|
+
imports: [
|
|
38
|
+
FlexLayoutModule,
|
|
39
|
+
MaterialModule,
|
|
40
|
+
CommonModule
|
|
41
|
+
],
|
|
42
|
+
exports: [
|
|
43
|
+
FlexLayoutModule,
|
|
44
|
+
MaterialModule,
|
|
45
|
+
NgxPermissionsModule,
|
|
46
|
+
FormsModule,
|
|
47
|
+
ReactiveFormsModule,
|
|
48
|
+
InfiniteScrollModule,
|
|
49
|
+
RouterModule,
|
|
50
|
+
LoaderModule
|
|
51
|
+
]
|
|
52
|
+
}]
|
|
53
|
+
}] });
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvQHNoYXJlZC9zaGFyZWQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsV0FBVyxFQUFFLG1CQUFtQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEUsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDekQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUMvQyxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFtQnJELE1BQU0sT0FBTyxZQUFZO3dHQUFaLFlBQVk7eUdBQVosWUFBWSxZQWZyQixnQkFBZ0I7WUFDaEIsY0FBYztZQUNkLFlBQVksYUFHWixnQkFBZ0I7WUFDaEIsY0FBYztZQUNkLG9CQUFvQjtZQUNwQixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLG9CQUFvQjtZQUNwQixZQUFZO1lBQ1osWUFBWTt5R0FHSCxZQUFZLFlBZnJCLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2QsWUFBWSxFQUdaLGdCQUFnQjtZQUNoQixjQUFjO1lBQ2Qsb0JBQW9CO1lBQ3BCLFdBQVc7WUFDWCxtQkFBbUI7WUFDbkIsb0JBQW9CO1lBQ3BCLFlBQVk7WUFDWixZQUFZOzs0RkFHSCxZQUFZO2tCQWpCeEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsZ0JBQWdCO3dCQUNoQixjQUFjO3dCQUNkLFlBQVk7cUJBQ2I7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGdCQUFnQjt3QkFDaEIsY0FBYzt3QkFDZCxvQkFBb0I7d0JBQ3BCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLFlBQVk7d0JBQ1osWUFBWTtxQkFDYjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0ZsZXhMYXlvdXRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2ZsZXgtbGF5b3V0JztcbmltcG9ydCB7TWF0ZXJpYWxNb2R1bGV9IGZyb20gJy4vbWF0ZXJpYWwubW9kdWxlJztcbmltcG9ydCB7Rm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7SW5maW5pdGVTY3JvbGxNb2R1bGV9IGZyb20gJ25neC1pbmZpbml0ZS1zY3JvbGwnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge0xvYWRlck1vZHVsZX0gZnJvbSAnbmd4LXRlY2hsaWZ5LWNvcmUnO1xuaW1wb3J0IHtOZ3hQZXJtaXNzaW9uc01vZHVsZX0gZnJvbSAnbmd4LXBlcm1pc3Npb25zJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIEZsZXhMYXlvdXRNb2R1bGUsXG4gICAgTWF0ZXJpYWxNb2R1bGUsXG4gICAgQ29tbW9uTW9kdWxlXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGbGV4TGF5b3V0TW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICAgIE5neFBlcm1pc3Npb25zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgSW5maW5pdGVTY3JvbGxNb2R1bGUsXG4gICAgUm91dGVyTW9kdWxlLFxuICAgIExvYWRlck1vZHVsZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFNoYXJlZE1vZHVsZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { Component, Input } from '@angular/core';
|
|
2
|
+
import { Validators } from '@angular/forms';
|
|
3
|
+
import { ActionPopupComponent } from 'ngx-techlify-core';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "ngx-techlify-core";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
import * as i3 from "ngx-spinner";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/material/dialog";
|
|
10
|
+
import * as i6 from "@angular/router";
|
|
11
|
+
import * as i7 from "../checksheet-format.service";
|
|
12
|
+
import * as i8 from "@angular/flex-layout/flex";
|
|
13
|
+
import * as i9 from "@angular/material/button";
|
|
14
|
+
import * as i10 from "@angular/material/card";
|
|
15
|
+
import * as i11 from "@angular/material/form-field";
|
|
16
|
+
import * as i12 from "@angular/material/input";
|
|
17
|
+
import * as i13 from "@angular/material/progress-bar";
|
|
18
|
+
import * as i14 from "../checksheet-question-list/checksheet-question-list.component";
|
|
19
|
+
const errorMessages = {
|
|
20
|
+
title: {
|
|
21
|
+
required: 'The title is required.'
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export class ChecksheetFormComponent {
|
|
25
|
+
formValidatorService;
|
|
26
|
+
fb;
|
|
27
|
+
spinnerService;
|
|
28
|
+
alertService;
|
|
29
|
+
location;
|
|
30
|
+
errorHandler;
|
|
31
|
+
dataManager;
|
|
32
|
+
dialog;
|
|
33
|
+
route;
|
|
34
|
+
checksheetFormatService;
|
|
35
|
+
checksheetForm;
|
|
36
|
+
updateMode;
|
|
37
|
+
checksheet;
|
|
38
|
+
isSaving = false;
|
|
39
|
+
id;
|
|
40
|
+
disableInput;
|
|
41
|
+
isLoading = false;
|
|
42
|
+
constructor(formValidatorService, fb, spinnerService, alertService, location, errorHandler, dataManager, dialog, route, checksheetFormatService) {
|
|
43
|
+
this.formValidatorService = formValidatorService;
|
|
44
|
+
this.fb = fb;
|
|
45
|
+
this.spinnerService = spinnerService;
|
|
46
|
+
this.alertService = alertService;
|
|
47
|
+
this.location = location;
|
|
48
|
+
this.errorHandler = errorHandler;
|
|
49
|
+
this.dataManager = dataManager;
|
|
50
|
+
this.dialog = dialog;
|
|
51
|
+
this.route = route;
|
|
52
|
+
this.checksheetFormatService = checksheetFormatService;
|
|
53
|
+
this.id = parseInt(this.route.snapshot.params?.['checksheetId']);
|
|
54
|
+
this.createForm();
|
|
55
|
+
}
|
|
56
|
+
ngOnInit() {
|
|
57
|
+
if (this.disableInput) {
|
|
58
|
+
this.checksheetForm.disable();
|
|
59
|
+
}
|
|
60
|
+
if (this.id) {
|
|
61
|
+
this.updateMode = true;
|
|
62
|
+
this.loadChecksheetFormat();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Create a check-sheet form.
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
69
|
+
createForm() {
|
|
70
|
+
this.checksheetForm = this.fb.group({
|
|
71
|
+
id: [''],
|
|
72
|
+
title: ['', Validators.required]
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
/**Method to evaluate form fields*/
|
|
76
|
+
isFieldValid(field) {
|
|
77
|
+
return this.formValidatorService.isFieldValid(field, this.checksheetForm);
|
|
78
|
+
}
|
|
79
|
+
/**Method to find error in form fields*/
|
|
80
|
+
getErrorMessage(field) {
|
|
81
|
+
return this.formValidatorService.getErrorMessage(field, this.checksheetForm, errorMessages);
|
|
82
|
+
}
|
|
83
|
+
submit() {
|
|
84
|
+
this.checksheetForm.markAllAsTouched();
|
|
85
|
+
if (this.checksheetForm.invalid) {
|
|
86
|
+
this.alertService.addAlert('Please check the form for errors.', 'error');
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const model = { ...this.checksheetForm.value };
|
|
90
|
+
this.isSaving = true;
|
|
91
|
+
let request = this.updateMode
|
|
92
|
+
? this.checksheetFormatService.update(model)
|
|
93
|
+
: this.checksheetFormatService.store(model);
|
|
94
|
+
request.subscribe({
|
|
95
|
+
next: (result) => {
|
|
96
|
+
this.isSaving = false;
|
|
97
|
+
if (!this.updateMode) {
|
|
98
|
+
this.checksheet = result.item;
|
|
99
|
+
this.checksheetForm.patchValue({ ...this.checksheet });
|
|
100
|
+
}
|
|
101
|
+
this.updateMode = true;
|
|
102
|
+
this.alertService.addAlert('Checksheet saved successfully', 'success');
|
|
103
|
+
},
|
|
104
|
+
error: (error) => {
|
|
105
|
+
this.isSaving = false;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
publishChecksheet() {
|
|
110
|
+
const dialogRef = this.dialog.open(ActionPopupComponent, {
|
|
111
|
+
width: '400px',
|
|
112
|
+
data: {
|
|
113
|
+
title: 'Publish Checksheet',
|
|
114
|
+
message: `Review the checksheet completely before publishing, you cannot alter once it is published. Are you sure to publish the Checksheet?`
|
|
115
|
+
},
|
|
116
|
+
autoFocus: false
|
|
117
|
+
});
|
|
118
|
+
dialogRef.afterClosed().subscribe(async (result) => {
|
|
119
|
+
if (result) {
|
|
120
|
+
//Action confirmed
|
|
121
|
+
try {
|
|
122
|
+
this.spinnerService.show();
|
|
123
|
+
const model = this.checksheetForm.value;
|
|
124
|
+
model.is_published = true;
|
|
125
|
+
const result = await this.dataManager.PUT(`api/checksheet-formats/${model.id}`, model);
|
|
126
|
+
this.alertService.addAlert('Checksheet successfully published', 'success');
|
|
127
|
+
this.location.back();
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
this.errorHandler.handleError(error, 'Unable to publish checksheet, try later');
|
|
131
|
+
}
|
|
132
|
+
finally {
|
|
133
|
+
this.spinnerService.hide();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
loadChecksheetFormat() {
|
|
139
|
+
this.isLoading = true;
|
|
140
|
+
const params = { with: 'questions.answers,questions.type' };
|
|
141
|
+
this.checksheetFormatService.show(this.id, params).subscribe({
|
|
142
|
+
next: (result) => {
|
|
143
|
+
this.isLoading = false;
|
|
144
|
+
this.checksheetForm.patchValue(result?.item);
|
|
145
|
+
this.checksheet = result?.item;
|
|
146
|
+
},
|
|
147
|
+
error: () => {
|
|
148
|
+
this.isLoading = false;
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormComponent, deps: [{ token: i1.FormValidatorService }, { token: i2.UntypedFormBuilder }, { token: i3.NgxSpinnerService }, { token: i1.AlertService }, { token: i4.Location }, { token: i1.ErrorHandlerService }, { token: i1.DataManager }, { token: i5.MatDialog }, { token: i6.ActivatedRoute }, { token: i7.ChecksheetFormatService }], target: i0.ɵɵFactoryTarget.Component });
|
|
153
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetFormComponent, selector: "app-checksheet-form", inputs: { disableInput: "disableInput" }, ngImport: i0, template: "<div fxLayout=\"column\" fxLayoutGap=\"0.5rem\">\n <h2>Checksheet Form</h2>\n\n <div\n class=\"d-flex justify-content-start align-items-start gap-3\"\n *ngIf=\"!isLoading\"\n >\n <div style=\"width: calc(70% - 1rem)\" *ngIf=\"checksheet\">\n <app-checksheet-question-list\n class=\"w-100\"\n [(checksheet)]=\"checksheet\"\n [disableInput]=\"disableInput\"\n >\n </app-checksheet-question-list>\n </div>\n <mat-card style=\"width: calc(30% - 1rem)\">\n <mat-card-content>\n <h3>Checksheet Info</h3>\n <form\n [formGroup]=\"checksheetForm\"\n (submit)=\"submit()\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n >\n <mat-form-field>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"Title\"\n autocomplete=\"off\"\n required\n />\n <mat-error *ngIf=\"isFieldValid('title')\">\n {{ getErrorMessage('title') }}\n </mat-error>\n </mat-form-field>\n\n <div\n class=\"my-2\"\n fxLayout=\"row\"\n fxLayoutGap=\"15px\"\n fxLayoutAlign=\"end\"\n *ngIf=\"!disableInput\"\n >\n <button\n [disabled]=\"isSaving\"\n mat-flat-button\n type=\"button\"\n (click)=\"location.back()\"\n >\n Cancel\n </button>\n <button\n [disabled]=\"isSaving\"\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n >\n Save\n </button>\n\n <button\n mat-raised-button\n [disabled]=\"isSaving\"\n color=\"accent\"\n *ngIf=\"updateMode\"\n type=\"button\"\n (click)=\"publishChecksheet()\"\n >\n Publish\n </button>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n </div>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.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: i8.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: i8.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: "component", type: i9.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i10.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i10.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i11.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i11.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i12.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: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i14.ChecksheetQuestionListComponent, selector: "app-checksheet-question-list", inputs: ["checksheet", "submission", "disableInput"], outputs: ["checksheetChange"] }] });
|
|
154
|
+
}
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormComponent, decorators: [{
|
|
156
|
+
type: Component,
|
|
157
|
+
args: [{ selector: 'app-checksheet-form', template: "<div fxLayout=\"column\" fxLayoutGap=\"0.5rem\">\n <h2>Checksheet Form</h2>\n\n <div\n class=\"d-flex justify-content-start align-items-start gap-3\"\n *ngIf=\"!isLoading\"\n >\n <div style=\"width: calc(70% - 1rem)\" *ngIf=\"checksheet\">\n <app-checksheet-question-list\n class=\"w-100\"\n [(checksheet)]=\"checksheet\"\n [disableInput]=\"disableInput\"\n >\n </app-checksheet-question-list>\n </div>\n <mat-card style=\"width: calc(30% - 1rem)\">\n <mat-card-content>\n <h3>Checksheet Info</h3>\n <form\n [formGroup]=\"checksheetForm\"\n (submit)=\"submit()\"\n fxLayout=\"column\"\n fxLayoutGap=\"0.25rem\"\n >\n <mat-form-field>\n <input\n matInput\n formControlName=\"title\"\n placeholder=\"Title\"\n autocomplete=\"off\"\n required\n />\n <mat-error *ngIf=\"isFieldValid('title')\">\n {{ getErrorMessage('title') }}\n </mat-error>\n </mat-form-field>\n\n <div\n class=\"my-2\"\n fxLayout=\"row\"\n fxLayoutGap=\"15px\"\n fxLayoutAlign=\"end\"\n *ngIf=\"!disableInput\"\n >\n <button\n [disabled]=\"isSaving\"\n mat-flat-button\n type=\"button\"\n (click)=\"location.back()\"\n >\n Cancel\n </button>\n <button\n [disabled]=\"isSaving\"\n mat-raised-button\n type=\"submit\"\n color=\"primary\"\n >\n Save\n </button>\n\n <button\n mat-raised-button\n [disabled]=\"isSaving\"\n color=\"accent\"\n *ngIf=\"updateMode\"\n type=\"button\"\n (click)=\"publishChecksheet()\"\n >\n Publish\n </button>\n </div>\n </form>\n </mat-card-content>\n </mat-card>\n </div>\n\n <mat-progress-bar mode=\"indeterminate\" *ngIf=\"isLoading\"></mat-progress-bar>\n</div>\n" }]
|
|
158
|
+
}], ctorParameters: () => [{ type: i1.FormValidatorService }, { type: i2.UntypedFormBuilder }, { type: i3.NgxSpinnerService }, { type: i1.AlertService }, { type: i4.Location }, { type: i1.ErrorHandlerService }, { type: i1.DataManager }, { type: i5.MatDialog }, { type: i6.ActivatedRoute }, { type: i7.ChecksheetFormatService }], propDecorators: { disableInput: [{
|
|
159
|
+
type: Input
|
|
160
|
+
}] } });
|
|
161
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm0vY2hlY2tzaGVldC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm0vY2hlY2tzaGVldC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFHTCxVQUFVLEVBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUd4QixPQUFPLEVBRUwsb0JBQW9CLEVBSXJCLE1BQU0sbUJBQW1CLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPM0IsTUFBTSxhQUFhLEdBQVE7SUFDekIsS0FBSyxFQUFFO1FBQ0wsUUFBUSxFQUFFLHdCQUF3QjtLQUNuQztDQUNGLENBQUM7QUFPRixNQUFNLE9BQU8sdUJBQXVCO0lBV3hCO0lBQ0E7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBbkJWLGNBQWMsQ0FBb0I7SUFDbEMsVUFBVSxDQUFXO0lBQ3JCLFVBQVUsQ0FBTTtJQUNoQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLEVBQUUsQ0FBVTtJQUVILFlBQVksQ0FBVztJQUNoQyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRTNCLFlBQ1Usb0JBQTBDLEVBQzFDLEVBQXNCLEVBQ3RCLGNBQWlDLEVBQ2pDLFlBQTBCLEVBQzNCLFFBQWtCLEVBQ2pCLFlBQWlDLEVBQ2pDLFdBQXdCLEVBQ3hCLE1BQWlCLEVBQ2pCLEtBQXFCLEVBQ3JCLHVCQUFnRDtR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LE9BQU8sS0FBSyxFQUFFLENBQUM7b0JBQ2YsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQzNCLEtBQUssRUFDTCx5Q0FBeUMsQ0FDMUMsQ0FBQztnQkFDSixDQUFDO3dCQUFTLENBQUM7b0JBQ1QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDN0IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQVEsRUFBRSxJQUFJLEVBQUUsa0NBQWtDLEVBQUUsQ0FBQztRQUNqRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzNELElBQUksRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO2dCQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUM3QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sRUFBRSxJQUFJLENBQUM7WUFDakMsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBN0lVLHVCQUF1Qjs0RkFBdkIsdUJBQXVCLHFHQ2hDcEMsOHJFQStFQTs7NEZEL0NhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxxQkFBcUI7bVdBV3RCLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFVudHlwZWRGb3JtR3JvdXAsXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcbiAgVmFsaWRhdG9yc1xufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBGb3JtVmFsaWRhdG9yU2VydmljZSB9IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnbmd4LXNwaW5uZXInO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBBY3Rpb25Qb3B1cENvbXBvbmVudCxcbiAgQWN0aW9uUG9wdXAsXG4gIEVycm9ySGFuZGxlclNlcnZpY2UsXG4gIERhdGFNYW5hZ2VyXG59IGZyb20gJ25neC10ZWNobGlmeS1jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvY2F0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBDaGVja3NoZWV0Rm9ybWF0U2VydmljZSB9IGZyb20gJy4uL2NoZWNrc2hlZXQtZm9ybWF0LnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5jb25zdCBlcnJvck1lc3NhZ2VzOiBhbnkgPSB7XG4gIHRpdGxlOiB7XG4gICAgcmVxdWlyZWQ6ICdUaGUgdGl0bGUgaXMgcmVxdWlyZWQuJ1xuICB9XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY2hlY2tzaGVldC1mb3JtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrc2hlZXQtZm9ybS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrc2hlZXRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY2hlY2tzaGVldEZvcm0hOiBVbnR5cGVkRm9ybUdyb3VwO1xuICB1cGRhdGVNb2RlITogYm9vbGVhbjtcbiAgY2hlY2tzaGVldDogYW55O1xuICBpc1NhdmluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBpZCE6IG51bWJlcjtcblxuICBASW5wdXQoKSBkaXNhYmxlSW5wdXQhOiBib29sZWFuO1xuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1WYWxpZGF0b3JTZXJ2aWNlOiBGb3JtVmFsaWRhdG9yU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwdWJsaWMgbG9jYXRpb246IExvY2F0aW9uLFxuICAgIHByaXZhdGUgZXJyb3JIYW5kbGVyOiBFcnJvckhhbmRsZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YU1hbmFnZXI6IERhdGFNYW5hZ2VyLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBjaGVja3NoZWV0Rm9ybWF0U2VydmljZTogQ2hlY2tzaGVldEZvcm1hdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5pZCA9IHBhcnNlSW50KHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zPy5bJ2NoZWNrc2hlZXRJZCddKTtcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVJbnB1dCkge1xuICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybS5kaXNhYmxlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICB0aGlzLnVwZGF0ZU1vZGUgPSB0cnVlO1xuICAgICAgdGhpcy5sb2FkQ2hlY2tzaGVldEZvcm1hdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBjaGVjay1zaGVldCBmb3JtLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuY2hlY2tzaGVldEZvcm0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGlkOiBbJyddLFxuICAgICAgdGl0bGU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKk1ldGhvZCB0byBldmFsdWF0ZSBmb3JtIGZpZWxkcyovXG4gIGlzRmllbGRWYWxpZChmaWVsZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybVZhbGlkYXRvclNlcnZpY2UuaXNGaWVsZFZhbGlkKGZpZWxkLCB0aGlzLmNoZWNrc2hlZXRGb3JtKTtcbiAgfVxuXG4gIC8qKk1ldGhvZCB0byBmaW5kIGVycm9yIGluIGZvcm0gZmllbGRzKi9cbiAgZ2V0RXJyb3JNZXNzYWdlKGZpZWxkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtVmFsaWRhdG9yU2VydmljZS5nZXRFcnJvck1lc3NhZ2UoXG4gICAgICBmaWVsZCxcbiAgICAgIHRoaXMuY2hlY2tzaGVldEZvcm0sXG4gICAgICBlcnJvck1lc3NhZ2VzXG4gICAgKTtcbiAgfVxuXG4gIHN1Ym1pdCgpIHtcbiAgICB0aGlzLmNoZWNrc2hlZXRGb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcbiAgICBpZiAodGhpcy5jaGVja3NoZWV0Rm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydCgnUGxlYXNlIGNoZWNrIHRoZSBmb3JtIGZvciBlcnJvcnMuJywgJ2Vycm9yJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWwgPSB7IC4uLnRoaXMuY2hlY2tzaGVldEZvcm0udmFsdWUgfTtcbiAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcbiAgICBsZXQgcmVxdWVzdDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy51cGRhdGVNb2RlXG4gICAgICA/IHRoaXMuY2hlY2tzaGVldEZvcm1hdFNlcnZpY2UudXBkYXRlKG1vZGVsKVxuICAgICAgOiB0aGlzLmNoZWNrc2hlZXRGb3JtYXRTZXJ2aWNlLnN0b3JlKG1vZGVsKTtcblxuICAgIHJlcXVlc3Quc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy51cGRhdGVNb2RlKSB7XG4gICAgICAgICAgdGhpcy5jaGVja3NoZWV0ID0gcmVzdWx0Lml0ZW07XG4gICAgICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybS5wYXRjaFZhbHVlKHsgLi4udGhpcy5jaGVja3NoZWV0IH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZSA9IHRydWU7XG4gICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZEFsZXJ0KCdDaGVja3NoZWV0IHNhdmVkIHN1Y2Nlc3NmdWxseScsICdzdWNjZXNzJyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1Ymxpc2hDaGVja3NoZWV0KCkge1xuICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQWN0aW9uUG9wdXBDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnNDAwcHgnLFxuICAgICAgZGF0YTogPEFjdGlvblBvcHVwPntcbiAgICAgICAgdGl0bGU6ICdQdWJsaXNoIENoZWNrc2hlZXQnLFxuICAgICAgICBtZXNzYWdlOiBgUmV2aWV3IHRoZSBjaGVja3NoZWV0IGNvbXBsZXRlbHkgYmVmb3JlIHB1Ymxpc2hpbmcsIHlvdSBjYW5ub3QgYWx0ZXIgb25jZSBpdCBpcyBwdWJsaXNoZWQuIEFyZSB5b3Ugc3VyZSB0byBwdWJsaXNoIHRoZSBDaGVja3NoZWV0P2BcbiAgICAgIH0sXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoYXN5bmMgKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAvL0FjdGlvbiBjb25maXJtZWRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcbiAgICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMuY2hlY2tzaGVldEZvcm0udmFsdWU7XG4gICAgICAgICAgbW9kZWwuaXNfcHVibGlzaGVkID0gdHJ1ZTtcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmRhdGFNYW5hZ2VyLlBVVChcbiAgICAgICAgICAgIGBhcGkvY2hlY2tzaGVldC1mb3JtYXRzLyR7bW9kZWwuaWR9YCxcbiAgICAgICAgICAgIG1vZGVsXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcbiAgICAgICAgICAgICdDaGVja3NoZWV0IHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQnLFxuICAgICAgICAgICAgJ3N1Y2Nlc3MnXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvY2F0aW9uLmJhY2soKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICB0aGlzLmVycm9ySGFuZGxlci5oYW5kbGVFcnJvcihcbiAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgJ1VuYWJsZSB0byBwdWJsaXNoIGNoZWNrc2hlZXQsIHRyeSBsYXRlcidcbiAgICAgICAgICApO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDaGVja3NoZWV0Rm9ybWF0KCkge1xuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICBjb25zdCBwYXJhbXM6IGFueSA9IHsgd2l0aDogJ3F1ZXN0aW9ucy5hbnN3ZXJzLHF1ZXN0aW9ucy50eXBlJyB9O1xuICAgIHRoaXMuY2hlY2tzaGVldEZvcm1hdFNlcnZpY2Uuc2hvdyh0aGlzLmlkLCBwYXJhbXMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jaGVja3NoZWV0Rm9ybS5wYXRjaFZhbHVlKHJlc3VsdD8uaXRlbSk7XG4gICAgICAgIHRoaXMuY2hlY2tzaGVldCA9IHJlc3VsdD8uaXRlbTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCIgZnhMYXlvdXRHYXA9XCIwLjVyZW1cIj5cbiAgPGgyPkNoZWNrc2hlZXQgRm9ybTwvaDI+XG5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtM1wiXG4gICAgKm5nSWY9XCIhaXNMb2FkaW5nXCJcbiAgPlxuICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogY2FsYyg3MCUgLSAxcmVtKVwiICpuZ0lmPVwiY2hlY2tzaGVldFwiPlxuICAgICAgPGFwcC1jaGVja3NoZWV0LXF1ZXN0aW9uLWxpc3RcbiAgICAgICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgICAgIFsoY2hlY2tzaGVldCldPVwiY2hlY2tzaGVldFwiXG4gICAgICAgIFtkaXNhYmxlSW5wdXRdPVwiZGlzYWJsZUlucHV0XCJcbiAgICAgID5cbiAgICAgIDwvYXBwLWNoZWNrc2hlZXQtcXVlc3Rpb24tbGlzdD5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWNhcmQgc3R5bGU9XCJ3aWR0aDogY2FsYygzMCUgLSAxcmVtKVwiPlxuICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgIDxoMz5DaGVja3NoZWV0IEluZm88L2gzPlxuICAgICAgICA8Zm9ybVxuICAgICAgICAgIFtmb3JtR3JvdXBdPVwiY2hlY2tzaGVldEZvcm1cIlxuICAgICAgICAgIChzdWJtaXQpPVwic3VibWl0KClcIlxuICAgICAgICAgIGZ4TGF5b3V0PVwiY29sdW1uXCJcbiAgICAgICAgICBmeExheW91dEdhcD1cIjAuMjVyZW1cIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUaXRsZVwiXG4gICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cImlzRmllbGRWYWxpZCgndGl0bGUnKVwiPlxuICAgICAgICAgICAgICB7eyBnZXRFcnJvck1lc3NhZ2UoJ3RpdGxlJykgfX1cbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm15LTJcIlxuICAgICAgICAgICAgZnhMYXlvdXQ9XCJyb3dcIlxuICAgICAgICAgICAgZnhMYXlvdXRHYXA9XCIxNXB4XCJcbiAgICAgICAgICAgIGZ4TGF5b3V0QWxpZ249XCJlbmRcIlxuICAgICAgICAgICAgKm5nSWY9XCIhZGlzYWJsZUlucHV0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiXG4gICAgICAgICAgICAgIG1hdC1mbGF0LWJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImxvY2F0aW9uLmJhY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENhbmNlbFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1NhdmluZ1wiXG4gICAgICAgICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBTYXZlXG4gICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIlxuICAgICAgICAgICAgICBjb2xvcj1cImFjY2VudFwiXG4gICAgICAgICAgICAgICpuZ0lmPVwidXBkYXRlTW9kZVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwicHVibGlzaENoZWNrc2hlZXQoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFB1Ymxpc2hcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Zvcm0+XG4gICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgPC9tYXQtY2FyZD5cbiAgPC9kaXY+XG5cbiAgPG1hdC1wcm9ncmVzcy1iYXIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIiAqbmdJZj1cImlzTG9hZGluZ1wiPjwvbWF0LXByb2dyZXNzLWJhcj5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/material/dialog";
|
|
4
|
+
import * as i2 from "ngx-techlify-core";
|
|
5
|
+
import * as i3 from "@angular/router";
|
|
6
|
+
import * as i4 from "@angular/common";
|
|
7
|
+
import * as i5 from "@angular/material/icon";
|
|
8
|
+
import * as i6 from "@angular/material/tooltip";
|
|
9
|
+
import * as i7 from "../checksheet-submission-form/checksheet-submission-form.component";
|
|
10
|
+
export class ChecksheetFormButtonComponent {
|
|
11
|
+
matDialog;
|
|
12
|
+
alertService;
|
|
13
|
+
router;
|
|
14
|
+
submittableType = 'fixed-asset';
|
|
15
|
+
submittableId;
|
|
16
|
+
saved = new EventEmitter();
|
|
17
|
+
constructor(matDialog, alertService, router) {
|
|
18
|
+
this.matDialog = matDialog;
|
|
19
|
+
this.alertService = alertService;
|
|
20
|
+
this.router = router;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Open Checksheet form.
|
|
24
|
+
*
|
|
25
|
+
* @param templateRef
|
|
26
|
+
*/
|
|
27
|
+
openForm(templateRef) {
|
|
28
|
+
this.matDialog.open(templateRef, { width: '500px' });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Handle Checksheet save event.
|
|
32
|
+
*
|
|
33
|
+
* @param checksheetSubmission
|
|
34
|
+
*/
|
|
35
|
+
onSaved(checksheetSubmission) {
|
|
36
|
+
this.saved.emit(checksheetSubmission);
|
|
37
|
+
this.matDialog.closeAll();
|
|
38
|
+
this.alertService.addAlert('The Checksheet is saved successfully!', 'success');
|
|
39
|
+
this.router.navigate([
|
|
40
|
+
'fixed-assets/checksheets/checksheets',
|
|
41
|
+
checksheetSubmission?.id,
|
|
42
|
+
'view'
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormButtonComponent, deps: [{ token: i1.MatDialog }, { token: i2.AlertService }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ChecksheetFormButtonComponent, selector: "app-checksheet-form-button", inputs: { submittableType: "submittableType", submittableId: "submittableId" }, outputs: { saved: "saved" }, ngImport: i0, template: "<span\n *ngIf=\"submittableId\"\n class=\"material-symbols-outlined text-secondary\"\n matTooltip=\"Add Checksheet\"\n (click)=\"openForm(formTemplate)\"\n>\n assignment_turned_in\n</span>\n<mat-icon\n *ngIf=\"!submittableId\"\n class=\"cursor-pointer text-secondary\"\n (click)=\"openForm(formTemplate)\"\n>\n add\n</mat-icon>\n\n<ng-template #formTemplate>\n <app-checksheet-submission-form\n mat-dialog-content\n (cancelled)=\"matDialog.closeAll()\"\n (saved)=\"onSaved($event)\"\n [submittableType]=\"submittableType\"\n [submittableId]=\"submittableId\"\n ></app-checksheet-submission-form>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: i7.ChecksheetSubmissionFormComponent, selector: "app-checksheet-submission-form", inputs: ["submittableType", "submittableId", "checksheetSubmission"], outputs: ["cancelled", "saved"] }] });
|
|
47
|
+
}
|
|
48
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ChecksheetFormButtonComponent, decorators: [{
|
|
49
|
+
type: Component,
|
|
50
|
+
args: [{ selector: 'app-checksheet-form-button', template: "<span\n *ngIf=\"submittableId\"\n class=\"material-symbols-outlined text-secondary\"\n matTooltip=\"Add Checksheet\"\n (click)=\"openForm(formTemplate)\"\n>\n assignment_turned_in\n</span>\n<mat-icon\n *ngIf=\"!submittableId\"\n class=\"cursor-pointer text-secondary\"\n (click)=\"openForm(formTemplate)\"\n>\n add\n</mat-icon>\n\n<ng-template #formTemplate>\n <app-checksheet-submission-form\n mat-dialog-content\n (cancelled)=\"matDialog.closeAll()\"\n (saved)=\"onSaved($event)\"\n [submittableType]=\"submittableType\"\n [submittableId]=\"submittableId\"\n ></app-checksheet-submission-form>\n</ng-template>\n" }]
|
|
51
|
+
}], ctorParameters: () => [{ type: i1.MatDialog }, { type: i2.AlertService }, { type: i3.Router }], propDecorators: { submittableType: [{
|
|
52
|
+
type: Input
|
|
53
|
+
}], submittableId: [{
|
|
54
|
+
type: Input
|
|
55
|
+
}], saved: [{
|
|
56
|
+
type: Output
|
|
57
|
+
}] } });
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tzaGVldC1mb3JtLWJ1dHRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY2hlY2tzaGVldC9zcmMvbGliL2NoZWNrc2hlZXQvY2hlY2tzaGVldC1mb3JtLWJ1dHRvbi9jaGVja3NoZWV0LWZvcm0tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jaGVja3NoZWV0L3NyYy9saWIvY2hlY2tzaGVldC9jaGVja3NoZWV0LWZvcm0tYnV0dG9uL2NoZWNrc2hlZXQtZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBV3ZCLE1BQU0sT0FBTyw2QkFBNkI7SUFNL0I7SUFDQztJQUNBO0lBUEQsZUFBZSxHQUE4QixhQUFhLENBQUM7SUFDM0QsYUFBYSxDQUFVO0lBQ3RCLEtBQUssR0FBc0IsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUU3RCxZQUNTLFNBQW9CLEVBQ25CLFlBQTBCLEVBQzFCLE1BQWM7UUFGZixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDckIsQ0FBQztJQUVKOzs7O09BSUc7SUFDSCxRQUFRLENBQUMsV0FBNkI7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxPQUFPLENBQUMsb0JBQXlCO1FBQy9CLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUMxQixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FDeEIsdUNBQXVDLEVBQ3ZDLFNBQVMsQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDbkIsc0NBQXNDO1lBQ3RDLG9CQUFvQixFQUFFLEVBQUU7WUFDeEIsTUFBTTtTQUNQLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBdENVLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLCtLQ2pCMUMsaW9CQXlCQTs7NEZEUmEsNkJBQTZCO2tCQUx6QyxTQUFTOytCQUNFLDRCQUE0Qjs4SEFLN0IsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICduZ3gtdGVjaGxpZnktY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ2hlY2tzaGVldFN1Ym1pdHRhYmxlVHlwZSB9IGZyb20gJy4uL2NoZWNrc2hlZXQtc3VibWl0dGFibGUudHlwZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1jaGVja3NoZWV0LWZvcm0tYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrc2hlZXQtZm9ybS1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja3NoZWV0LWZvcm0tYnV0dG9uLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tzaGVldEZvcm1CdXR0b25Db21wb25lbnQge1xuICBASW5wdXQoKSBzdWJtaXR0YWJsZVR5cGU6IENoZWNrc2hlZXRTdWJtaXR0YWJsZVR5cGUgPSAnZml4ZWQtYXNzZXQnO1xuICBASW5wdXQoKSBzdWJtaXR0YWJsZUlkITogbnVtYmVyO1xuICBAT3V0cHV0KCkgc2F2ZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxuICApIHt9XG5cbiAgLyoqXG4gICAqIE9wZW4gQ2hlY2tzaGVldCBmb3JtLlxuICAgKlxuICAgKiBAcGFyYW0gdGVtcGxhdGVSZWZcbiAgICovXG4gIG9wZW5Gb3JtKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+KSB7XG4gICAgdGhpcy5tYXREaWFsb2cub3Blbih0ZW1wbGF0ZVJlZiwgeyB3aWR0aDogJzUwMHB4JyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgQ2hlY2tzaGVldCBzYXZlIGV2ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gY2hlY2tzaGVldFN1Ym1pc3Npb25cbiAgICovXG4gIG9uU2F2ZWQoY2hlY2tzaGVldFN1Ym1pc3Npb246IGFueSkge1xuICAgIHRoaXMuc2F2ZWQuZW1pdChjaGVja3NoZWV0U3VibWlzc2lvbik7XG4gICAgdGhpcy5tYXREaWFsb2cuY2xvc2VBbGwoKTtcbiAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRBbGVydChcbiAgICAgICdUaGUgQ2hlY2tzaGVldCBpcyBzYXZlZCBzdWNjZXNzZnVsbHkhJyxcbiAgICAgICdzdWNjZXNzJ1xuICAgICk7XG5cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXG4gICAgICAnZml4ZWQtYXNzZXRzL2NoZWNrc2hlZXRzL2NoZWNrc2hlZXRzJyxcbiAgICAgIGNoZWNrc2hlZXRTdWJtaXNzaW9uPy5pZCxcbiAgICAgICd2aWV3J1xuICAgIF0pO1xuICB9XG59XG4iLCI8c3BhblxuICAqbmdJZj1cInN1Ym1pdHRhYmxlSWRcIlxuICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgdGV4dC1zZWNvbmRhcnlcIlxuICBtYXRUb29sdGlwPVwiQWRkIENoZWNrc2hlZXRcIlxuICAoY2xpY2spPVwib3BlbkZvcm0oZm9ybVRlbXBsYXRlKVwiXG4+XG4gIGFzc2lnbm1lbnRfdHVybmVkX2luXG48L3NwYW4+XG48bWF0LWljb25cbiAgKm5nSWY9XCIhc3VibWl0dGFibGVJZFwiXG4gIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXIgdGV4dC1zZWNvbmRhcnlcIlxuICAoY2xpY2spPVwib3BlbkZvcm0oZm9ybVRlbXBsYXRlKVwiXG4+XG4gIGFkZFxuPC9tYXQtaWNvbj5cblxuPG5nLXRlbXBsYXRlICNmb3JtVGVtcGxhdGU+XG4gIDxhcHAtY2hlY2tzaGVldC1zdWJtaXNzaW9uLWZvcm1cbiAgICBtYXQtZGlhbG9nLWNvbnRlbnRcbiAgICAoY2FuY2VsbGVkKT1cIm1hdERpYWxvZy5jbG9zZUFsbCgpXCJcbiAgICAoc2F2ZWQpPVwib25TYXZlZCgkZXZlbnQpXCJcbiAgICBbc3VibWl0dGFibGVUeXBlXT1cInN1Ym1pdHRhYmxlVHlwZVwiXG4gICAgW3N1Ym1pdHRhYmxlSWRdPVwic3VibWl0dGFibGVJZFwiXG4gID48L2FwcC1jaGVja3NoZWV0LXN1Ym1pc3Npb24tZm9ybT5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|