@churchillliving/se-ui-toolkit 6.53.562 → 6.53.565
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 +28 -28
- package/{esm2015/churchillliving-se-ui-toolkit.js → esm2022/churchillliving-se-ui-toolkit.mjs} +4 -4
- package/esm2022/lib/components/base/alert-pop-up/alert-pop-up.component.mjs +36 -0
- package/esm2022/lib/components/base/caption/caption.component.mjs +73 -0
- package/esm2022/lib/components/base/cards/card.component.mjs +156 -0
- package/esm2022/lib/components/base/file/file.component.mjs +125 -0
- package/esm2022/lib/components/base/file-upload/file-upload.component.mjs +71 -0
- package/esm2022/lib/components/base/filter/filter.component.mjs +57 -0
- package/esm2022/lib/components/base/form/form.component.mjs +1144 -0
- package/esm2022/lib/components/base/form-util/form-util.component.mjs +1145 -0
- package/esm2022/lib/components/base/grid/grid.component.mjs +2674 -0
- package/{esm2015/lib/components/base/grid/grid.constant.js → esm2022/lib/components/base/grid/grid.constant.mjs} +26 -26
- package/esm2022/lib/components/base/grid-row-actions/grid-row-actions.component.mjs +59 -0
- package/esm2022/lib/components/base/header/header.component.mjs +100 -0
- package/{esm2015/lib/components/base/iframe/iframe.component.js → esm2022/lib/components/base/iframe/iframe.component.mjs} +44 -48
- package/esm2022/lib/components/base/image-gallery/image-gallery.component.mjs +34 -0
- package/esm2022/lib/components/base/loader/loader.component.mjs +36 -0
- package/esm2022/lib/components/base/menu-bar/menu-bar.component.mjs +130 -0
- package/esm2022/lib/components/base/report/report-Filter/report-filter/report-filter.component.mjs +120 -0
- package/esm2022/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.mjs +31 -0
- package/esm2022/lib/components/base/sidebar/sidebar.component.mjs +336 -0
- package/esm2022/lib/components/shared/dropdown/dropdown.component.mjs +37 -0
- package/esm2022/lib/components/shared/filter-menu/filter-menu.component.mjs +30 -0
- package/esm2022/lib/components/shared/global-filters/global-filters.component.mjs +494 -0
- package/esm2022/lib/components/shared/notes/notes.component.mjs +32 -0
- package/esm2022/lib/directive/add-row.directive.mjs +39 -0
- package/{esm2015/lib/models/common.model.js → esm2022/lib/models/common.model.mjs} +2 -2
- package/esm2022/lib/models/form.model.mjs +97 -0
- package/esm2022/lib/models/grid.model.mjs +121 -0
- package/esm2022/lib/models/header.model.mjs +19 -0
- package/{esm2015/lib/models/menu.model.js → esm2022/lib/models/menu.model.mjs} +2 -2
- package/esm2022/lib/models/request.model.mjs +2 -0
- package/{esm2015/lib/models/response.model.js → esm2022/lib/models/response.model.mjs} +2 -2
- package/esm2022/lib/models/sidebar.model.mjs +11 -0
- package/{esm2015/lib/models/user-info.model.js → esm2022/lib/models/user-info.model.mjs} +9 -9
- package/esm2022/lib/se-ui-toolkit.module.mjs +247 -0
- package/{esm2015/lib/services/alert.service.js → esm2022/lib/services/alert.service.mjs} +77 -77
- package/{esm2015/lib/services/authentication.service.js → esm2022/lib/services/authentication.service.mjs} +52 -52
- package/esm2022/lib/services/card.service.mjs +98 -0
- package/{esm2015/lib/services/dropdown.service.js → esm2022/lib/services/dropdown.service.mjs} +69 -69
- package/esm2022/lib/services/form.service.mjs +451 -0
- package/esm2022/lib/services/grid.service.mjs +1333 -0
- package/{esm2015/lib/services/header.service.js → esm2022/lib/services/header.service.mjs} +61 -61
- package/esm2022/lib/services/hyperlink.service.mjs +143 -0
- package/{esm2015/lib/services/loader.service.js → esm2022/lib/services/loader.service.mjs} +36 -36
- package/{esm2015/lib/services/page-logger.service.js → esm2022/lib/services/page-logger.service.mjs} +25 -25
- package/esm2022/lib/services/report.service.mjs +158 -0
- package/{esm2015/lib/services/request.service.js → esm2022/lib/services/request.service.mjs} +48 -48
- package/esm2022/lib/services/sidebar.service.mjs +57 -0
- package/esm2022/lib/services/utilities.service.mjs +1033 -0
- package/{esm2015/public-api.js → esm2022/public-api.mjs} +58 -58
- package/fesm2022/churchillliving-se-ui-toolkit.mjs +10874 -0
- package/fesm2022/churchillliving-se-ui-toolkit.mjs.map +1 -0
- package/{churchillliving-se-ui-toolkit.d.ts → index.d.ts} +5 -5
- package/lib/components/base/alert-pop-up/alert-pop-up.component.d.ts +15 -15
- package/lib/components/base/caption/caption.component.d.ts +24 -24
- package/lib/components/base/cards/card.component.d.ts +31 -31
- package/lib/components/base/file/file.component.d.ts +29 -29
- package/lib/components/base/file-upload/file-upload.component.d.ts +19 -19
- package/lib/components/base/filter/filter.component.d.ts +24 -24
- package/lib/components/base/form/form.component.d.ts +174 -174
- package/lib/components/base/form-util/form-util.component.d.ts +172 -172
- package/lib/components/base/grid/grid.component.d.ts +393 -394
- package/lib/components/base/grid/grid.constant.d.ts +2 -2
- package/lib/components/base/grid-row-actions/grid-row-actions.component.d.ts +23 -23
- package/lib/components/base/header/header.component.d.ts +20 -20
- package/lib/components/base/iframe/iframe.component.d.ts +18 -18
- package/lib/components/base/image-gallery/image-gallery.component.d.ts +9 -9
- package/lib/components/base/loader/loader.component.d.ts +16 -16
- package/lib/components/base/menu-bar/menu-bar.component.d.ts +37 -37
- package/lib/components/base/report/report-Filter/report-filter/report-filter.component.d.ts +25 -25
- package/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.d.ts +17 -17
- package/lib/components/base/sidebar/sidebar.component.d.ts +69 -69
- package/lib/components/shared/dropdown/dropdown.component.d.ts +16 -16
- package/lib/components/shared/filter-menu/filter-menu.component.d.ts +14 -14
- package/lib/components/shared/global-filters/global-filters.component.d.ts +88 -88
- package/lib/components/shared/notes/notes.component.d.ts +15 -15
- package/lib/directive/add-row.directive.d.ts +10 -10
- package/lib/models/common.model.d.ts +9 -9
- package/lib/models/form.model.d.ts +348 -348
- package/lib/models/grid.model.d.ts +491 -491
- package/lib/models/header.model.d.ts +72 -72
- package/lib/models/menu.model.d.ts +7 -7
- package/lib/models/request.model.d.ts +13 -13
- package/lib/models/response.model.d.ts +10 -10
- package/lib/models/sidebar.model.d.ts +44 -44
- package/lib/models/user-info.model.d.ts +25 -25
- package/lib/se-ui-toolkit.module.d.ts +64 -64
- package/lib/services/alert.service.d.ts +25 -25
- package/lib/services/authentication.service.d.ts +11 -11
- package/lib/services/card.service.d.ts +20 -18
- package/lib/services/dropdown.service.d.ts +18 -18
- package/lib/services/form.service.d.ts +50 -50
- package/lib/services/grid.service.d.ts +122 -122
- package/lib/services/header.service.d.ts +14 -14
- package/lib/services/hyperlink.service.d.ts +19 -19
- package/lib/services/loader.service.d.ts +21 -21
- package/lib/services/page-logger.service.d.ts +9 -9
- package/lib/services/report.service.d.ts +21 -21
- package/lib/services/request.service.d.ts +19 -19
- package/lib/services/sidebar.service.d.ts +21 -21
- package/lib/services/utilities.service.d.ts +64 -64
- package/package.json +21 -14
- package/public-api.d.ts +54 -54
- package/bundles/churchillliving-se-ui-toolkit.umd.js +0 -12169
- package/bundles/churchillliving-se-ui-toolkit.umd.js.map +0 -1
- package/esm2015/lib/components/base/alert-pop-up/alert-pop-up.component.js +0 -41
- package/esm2015/lib/components/base/caption/caption.component.js +0 -77
- package/esm2015/lib/components/base/cards/card.component.js +0 -164
- package/esm2015/lib/components/base/file/file.component.js +0 -129
- package/esm2015/lib/components/base/file-upload/file-upload.component.js +0 -77
- package/esm2015/lib/components/base/filter/filter.component.js +0 -60
- package/esm2015/lib/components/base/form/form.component.js +0 -1168
- package/esm2015/lib/components/base/form-util/form-util.component.js +0 -1166
- package/esm2015/lib/components/base/grid/grid.component.js +0 -2738
- package/esm2015/lib/components/base/grid-row-actions/grid-row-actions.component.js +0 -63
- package/esm2015/lib/components/base/header/header.component.js +0 -105
- package/esm2015/lib/components/base/image-gallery/image-gallery.component.js +0 -38
- package/esm2015/lib/components/base/loader/loader.component.js +0 -40
- package/esm2015/lib/components/base/menu-bar/menu-bar.component.js +0 -129
- package/esm2015/lib/components/base/report/report-Filter/report-filter/report-filter.component.js +0 -133
- package/esm2015/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.js +0 -35
- package/esm2015/lib/components/base/sidebar/sidebar.component.js +0 -350
- package/esm2015/lib/components/shared/dropdown/dropdown.component.js +0 -41
- package/esm2015/lib/components/shared/filter-menu/filter-menu.component.js +0 -34
- package/esm2015/lib/components/shared/global-filters/global-filters.component.js +0 -507
- package/esm2015/lib/components/shared/notes/notes.component.js +0 -37
- package/esm2015/lib/directive/add-row.directive.js +0 -31
- package/esm2015/lib/models/form.model.js +0 -97
- package/esm2015/lib/models/grid.model.js +0 -121
- package/esm2015/lib/models/header.model.js +0 -19
- package/esm2015/lib/models/request.model.js +0 -2
- package/esm2015/lib/models/sidebar.model.js +0 -11
- package/esm2015/lib/se-ui-toolkit.module.js +0 -256
- package/esm2015/lib/services/card.service.js +0 -99
- package/esm2015/lib/services/form.service.js +0 -460
- package/esm2015/lib/services/grid.service.js +0 -1357
- package/esm2015/lib/services/hyperlink.service.js +0 -156
- package/esm2015/lib/services/report.service.js +0 -161
- package/esm2015/lib/services/sidebar.service.js +0 -60
- package/esm2015/lib/services/utilities.service.js +0 -1078
- package/fesm2015/churchillliving-se-ui-toolkit.js +0 -11189
- package/fesm2015/churchillliving-se-ui-toolkit.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
# SeUiToolkit
|
|
2
|
-
|
|
3
|
-
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.4.
|
|
4
|
-
|
|
5
|
-
## Code scaffolding
|
|
6
|
-
|
|
7
|
-
Run `ng generate component component-name --project se-ui-toolkit` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project se-ui-toolkit`.
|
|
8
|
-
> Note: Don't forget to add `--project se-ui-toolkit` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
-
|
|
10
|
-
## Build
|
|
11
|
-
|
|
12
|
-
Run `ng build se-ui-toolkit` 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 se-ui-toolkit`, go to the dist folder `cd dist/se-ui-toolkit` and run `npm publish`.
|
|
17
|
-
|
|
18
|
-
## Running unit tests
|
|
19
|
-
|
|
20
|
-
Run `ng test se-ui-toolkit` 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.io/cli) page.
|
|
25
|
-
|
|
26
|
-
## Library Publish Command
|
|
27
|
-
|
|
28
|
-
run `npm run publish-toolkit` to publish the npm package
|
|
1
|
+
# SeUiToolkit
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 12.0.4.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project se-ui-toolkit` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project se-ui-toolkit`.
|
|
8
|
+
> Note: Don't forget to add `--project se-ui-toolkit` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build se-ui-toolkit` 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 se-ui-toolkit`, go to the dist folder `cd dist/se-ui-toolkit` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test se-ui-toolkit` 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.io/cli) page.
|
|
25
|
+
|
|
26
|
+
## Library Publish Command
|
|
27
|
+
|
|
28
|
+
run `npm run publish-toolkit` to publish the npm package
|
package/{esm2015/churchillliving-se-ui-toolkit.js → esm2022/churchillliving-se-ui-toolkit.mjs}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1cmNoaWxsbGl2aW5nLXNlLXVpLXRvb2xraXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9jaHVyY2hpbGxsaXZpbmctc2UtdWktdG9vbGtpdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL3B1YmxpYy1hcGknO1xuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Component, Optional } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "primeng/dynamicdialog";
|
|
4
|
+
import * as i2 from "@angular/common";
|
|
5
|
+
import * as i3 from "primeng/button";
|
|
6
|
+
export class AlertPopUpComponent {
|
|
7
|
+
constructor(config, ref) {
|
|
8
|
+
this.config = config;
|
|
9
|
+
this.ref = ref;
|
|
10
|
+
}
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
if (this.config?.data) {
|
|
13
|
+
this.message = this.config.data?.alertPopInfo?.message;
|
|
14
|
+
this.buttons = this.config.data?.alertPopInfo?.buttons;
|
|
15
|
+
this.icon = this.config.data?.alertPopInfo?.icon;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
clickedBtn(button) {
|
|
19
|
+
const closeBtn = document.querySelectorAll(".alertPopUp button")[0];
|
|
20
|
+
if (closeBtn) {
|
|
21
|
+
closeBtn?.click();
|
|
22
|
+
this.ref.close(button);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: AlertPopUpComponent, deps: [{ token: i1.DynamicDialogConfig, optional: true }, { token: i1.DynamicDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: AlertPopUpComponent, selector: "lib-alert-pop-up", ngImport: i0, template: "<h4><i [class]=\"icon\"></i> {{message}}</h4>\n<br>\n<button *ngFor=\"let button of buttons\" pButton type=\"button\" [label]=\"button.buttonLabel\"\n [class]=\"button.buttonClass ? button.buttonClass+ ' p-mr-3' : 'p-mr-3 p-button-success'\"\n (click)=\"clickedBtn(button)\">\n</button>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }] }); }
|
|
27
|
+
}
|
|
28
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: AlertPopUpComponent, decorators: [{
|
|
29
|
+
type: Component,
|
|
30
|
+
args: [{ selector: 'lib-alert-pop-up', template: "<h4><i [class]=\"icon\"></i> {{message}}</h4>\n<br>\n<button *ngFor=\"let button of buttons\" pButton type=\"button\" [label]=\"button.buttonLabel\"\n [class]=\"button.buttonClass ? button.buttonClass+ ' p-mr-3' : 'p-mr-3 p-button-success'\"\n (click)=\"clickedBtn(button)\">\n</button>" }]
|
|
31
|
+
}], ctorParameters: function () { return [{ type: i1.DynamicDialogConfig, decorators: [{
|
|
32
|
+
type: Optional
|
|
33
|
+
}] }, { type: i1.DynamicDialogRef, decorators: [{
|
|
34
|
+
type: Optional
|
|
35
|
+
}] }]; } });
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtcG9wLXVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NlLXVpLXRvb2xraXQvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UvYWxlcnQtcG9wLXVwL2FsZXJ0LXBvcC11cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2FsZXJ0LXBvcC11cC9hbGVydC1wb3AtdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUTVELE1BQU0sT0FBTyxtQkFBbUI7SUFLOUIsWUFBK0IsTUFBMkIsRUFDdkMsR0FBcUI7UUFEVCxXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUN2QyxRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUFLLENBQUM7SUFFOUMsUUFBUTtRQUNOLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUM7WUFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztZQUN2RCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUM7U0FDbEQ7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLE1BQVc7UUFDcEIsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGdCQUFnQixDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxDQUFzQixDQUFDO1FBQ3pGLElBQUcsUUFBUSxFQUFDO1lBQ1YsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3hCO0lBQ0gsQ0FBQztpSUF0QlUsbUJBQW1CO3FIQUFuQixtQkFBbUIsd0RDUmhDLHNTQUtTOzsyRkRHSSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFTZixRQUFROzswQkFDcEIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hbGVydC1wb3AtdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWxlcnQtcG9wLXVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQtcG9wLXVwLmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBBbGVydFBvcFVwQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgYnV0dG9uczogYW55W11cbiAgbWVzc2FnZTogc3RyaW5nO1xuICBpY29uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcHVibGljIGNvbmZpZzogRHluYW1pY0RpYWxvZ0NvbmZpZyxcbiAgQE9wdGlvbmFsKCkgcHVibGljIHJlZjogRHluYW1pY0RpYWxvZ1JlZiwpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY29uZmlnPy5kYXRhKXtcbiAgICAgIHRoaXMubWVzc2FnZSA9IHRoaXMuY29uZmlnLmRhdGE/LmFsZXJ0UG9wSW5mbz8ubWVzc2FnZTtcbiAgICAgIHRoaXMuYnV0dG9ucyA9IHRoaXMuY29uZmlnLmRhdGE/LmFsZXJ0UG9wSW5mbz8uYnV0dG9ucztcbiAgICAgIHRoaXMuaWNvbiA9IHRoaXMuY29uZmlnLmRhdGE/LmFsZXJ0UG9wSW5mbz8uaWNvbjtcbiAgICB9XG4gIH1cblxuICBjbGlja2VkQnRuKGJ1dHRvbjogYW55KXtcbiAgICBjb25zdCBjbG9zZUJ0biA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuYWxlcnRQb3BVcCBidXR0b25cIilbMF0gYXMgSFRNTEJ1dHRvbkVsZW1lbnQ7XG4gICAgaWYoY2xvc2VCdG4pe1xuICAgICAgY2xvc2VCdG4/LmNsaWNrKCk7XG4gICAgICB0aGlzLnJlZi5jbG9zZShidXR0b24pO1xuICAgIH1cbiAgfVxufVxuIiwiPGg0PjxpIFtjbGFzc109XCJpY29uXCI+PC9pPiB7e21lc3NhZ2V9fTwvaDQ+XG48YnI+XG48YnV0dG9uICpuZ0Zvcj1cImxldCBidXR0b24gb2YgYnV0dG9uc1wiIHBCdXR0b24gdHlwZT1cImJ1dHRvblwiIFtsYWJlbF09XCJidXR0b24uYnV0dG9uTGFiZWxcIlxuICAgIFtjbGFzc109XCJidXR0b24uYnV0dG9uQ2xhc3MgPyBidXR0b24uYnV0dG9uQ2xhc3MrICcgcC1tci0zJyA6ICdwLW1yLTMgcC1idXR0b24tc3VjY2VzcydcIlxuICAgIChjbGljayk9XCJjbGlja2VkQnRuKGJ1dHRvbilcIj5cbjwvYnV0dG9uPiJdfQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Component, Optional } from '@angular/core';
|
|
2
|
+
import { EValidator } from '../../../models/form.model';
|
|
3
|
+
import * as utilities from '../../../services/utilities.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../services/form.service";
|
|
6
|
+
import * as i2 from "../../../services/request.service";
|
|
7
|
+
import * as i3 from "../../../services/alert.service";
|
|
8
|
+
import * as i4 from "primeng/dynamicdialog";
|
|
9
|
+
import * as i5 from "@angular/common";
|
|
10
|
+
import * as i6 from "../form/form.component";
|
|
11
|
+
export class CaptionComponent {
|
|
12
|
+
constructor(formService, requestService, alertService, config, ref) {
|
|
13
|
+
this.formService = formService;
|
|
14
|
+
this.requestService = requestService;
|
|
15
|
+
this.alertService = alertService;
|
|
16
|
+
this.config = config;
|
|
17
|
+
this.ref = ref;
|
|
18
|
+
}
|
|
19
|
+
ngOnInit() {
|
|
20
|
+
if (this.config.data) {
|
|
21
|
+
this.id = this.config.data.id;
|
|
22
|
+
this.caption = this.config.data.caption;
|
|
23
|
+
}
|
|
24
|
+
this.initilizeForm();
|
|
25
|
+
}
|
|
26
|
+
initilizeForm() {
|
|
27
|
+
this.dynamicForm = {
|
|
28
|
+
formSections: [
|
|
29
|
+
{
|
|
30
|
+
fields: [
|
|
31
|
+
this.formService.addTextbox({
|
|
32
|
+
field: 'fileCaption',
|
|
33
|
+
label: 'Caption',
|
|
34
|
+
value: this.caption,
|
|
35
|
+
column: 12,
|
|
36
|
+
validations: [{ type: EValidator.REQUIRED }]
|
|
37
|
+
}),
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
saveForm(formFiels) {
|
|
44
|
+
this.requestService
|
|
45
|
+
.get('/AzureUpload/UpdateCaption', {
|
|
46
|
+
Id: this.id,
|
|
47
|
+
fileCaption: utilities.getFormFieldValue(this.dynamicForm, 'fileCaption'),
|
|
48
|
+
})
|
|
49
|
+
.subscribe((response) => {
|
|
50
|
+
if (response) {
|
|
51
|
+
this.alertService.success('Caption added successfully.');
|
|
52
|
+
this.ref.close(response);
|
|
53
|
+
}
|
|
54
|
+
}, ({ error }) => {
|
|
55
|
+
this.ref.close();
|
|
56
|
+
this.alertService.apiError(error);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
cancelForm(event) {
|
|
60
|
+
//console.log('CancelForm: ', event);
|
|
61
|
+
}
|
|
62
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: CaptionComponent, deps: [{ token: i1.FormService }, { token: i2.RequestService }, { token: i3.AlertService }, { token: i4.DynamicDialogConfig, optional: true }, { token: i4.DynamicDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
63
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: CaptionComponent, selector: "se-caption", ngImport: i0, template: "<!-- add Caption on DisplayImage Component -->\n<div class=\"caption-form\">\n <se-form\n *ngIf=\"dynamicForm\"\n [form]=\"dynamicForm\"\n (saveForm)=\"saveForm($event)\"\n (cancelForm)=\"cancelForm($event)\"\n >\n </se-form>\n</div>\n", styles: [":host ::ng-deep .caption-form span.error{display:none}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.FormComponent, selector: "se-form", inputs: ["stickyActions", "form", "hideSaveButton", "hideCancelButton", "formButtons", "loading", "activeTestMode"], outputs: ["saveForm", "cancelForm", "dropDownChangeEvent", "sectionClickedEvent"] }] }); }
|
|
64
|
+
}
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: CaptionComponent, decorators: [{
|
|
66
|
+
type: Component,
|
|
67
|
+
args: [{ selector: 'se-caption', template: "<!-- add Caption on DisplayImage Component -->\n<div class=\"caption-form\">\n <se-form\n *ngIf=\"dynamicForm\"\n [form]=\"dynamicForm\"\n (saveForm)=\"saveForm($event)\"\n (cancelForm)=\"cancelForm($event)\"\n >\n </se-form>\n</div>\n", styles: [":host ::ng-deep .caption-form span.error{display:none}\n"] }]
|
|
68
|
+
}], ctorParameters: function () { return [{ type: i1.FormService }, { type: i2.RequestService }, { type: i3.AlertService }, { type: i4.DynamicDialogConfig, decorators: [{
|
|
69
|
+
type: Optional
|
|
70
|
+
}] }, { type: i4.DynamicDialogRef, decorators: [{
|
|
71
|
+
type: Optional
|
|
72
|
+
}] }]; } });
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FwdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2NhcHRpb24vY2FwdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2NhcHRpb24vY2FwdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUF3QixRQUFRLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFbEYsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsTUFBTSw0QkFBNEIsQ0FBQztBQUl0RSxPQUFPLEtBQUssU0FBUyxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7OztBQU9qRSxNQUFNLE9BQU8sZ0JBQWdCO0lBSzNCLFlBQ1UsV0FBd0IsRUFDeEIsY0FBOEIsRUFDOUIsWUFBMEIsRUFDZixNQUEyQixFQUMzQixHQUFxQjtRQUpoQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDZixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUMzQixRQUFHLEdBQUgsR0FBRyxDQUFrQjtJQUN2QyxDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDekM7UUFDRCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsV0FBVyxHQUFHO1lBQ2pCLFlBQVksRUFBRTtnQkFDWjtvQkFDRSxNQUFNLEVBQUU7d0JBQ04sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7NEJBQzFCLEtBQUssRUFBRSxhQUFhOzRCQUNwQixLQUFLLEVBQUUsU0FBUzs0QkFDaEIsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPOzRCQUNuQixNQUFNLEVBQUUsRUFBRTs0QkFDVixXQUFXLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7eUJBQzdDLENBQUM7cUJBQ0g7aUJBQ0Y7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQsUUFBUSxDQUFDLFNBQWM7UUFDckIsSUFBSSxDQUFDLGNBQWM7YUFDaEIsR0FBRyxDQUFhLDRCQUE0QixFQUFFO1lBQzdDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRTtZQUNYLFdBQVcsRUFBRSxTQUFTLENBQUMsaUJBQWlCLENBQ3RDLElBQUksQ0FBQyxXQUFXLEVBQ2hCLGFBQWEsQ0FDZDtTQUNGLENBQUM7YUFDRCxTQUFTLENBQ1IsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoQixJQUFJLFFBQVEsRUFBRTtnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMxQjtRQUNILENBQUMsRUFDRCxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEMsQ0FBQyxDQUNGLENBQUM7SUFDTixDQUFDO0lBQ0QsVUFBVSxDQUFDLEtBQVU7UUFDbkIscUNBQXFDO0lBQ3ZDLENBQUM7aUlBL0RVLGdCQUFnQjtxSEFBaEIsZ0JBQWdCLGtEQ2I3Qiw0UEFVQTs7MkZER2EsZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLFlBQVk7OzBCQWFuQixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZiB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBFVmFsaWRhdG9yLCBJRHluYW1pY0Zvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEZvcm1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZm9ybS5zZXJ2aWNlJztcbmltcG9ydCB7IFJlcXVlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NlLWNhcHRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vY2FwdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhcHRpb24uY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FwdGlvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIGR5bmFtaWNGb3JtOiBJRHluYW1pY0Zvcm07XG4gIGlkOiBudW1iZXI7XG4gIGNhcHRpb246IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZvcm1TZXJ2aWNlOiBGb3JtU2VydmljZSxcbiAgICBwcml2YXRlIHJlcXVlc3RTZXJ2aWNlOiBSZXF1ZXN0U2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBjb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcsXG4gICAgQE9wdGlvbmFsKCkgcHVibGljIHJlZjogRHluYW1pY0RpYWxvZ1JlZlxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLmRhdGEpIHtcbiAgICAgIHRoaXMuaWQgPSB0aGlzLmNvbmZpZy5kYXRhLmlkO1xuICAgICAgdGhpcy5jYXB0aW9uID0gdGhpcy5jb25maWcuZGF0YS5jYXB0aW9uO1xuICAgIH1cbiAgICB0aGlzLmluaXRpbGl6ZUZvcm0oKTtcbiAgfVxuXG4gIGluaXRpbGl6ZUZvcm0oKSB7XG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHtcbiAgICAgIGZvcm1TZWN0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLmFkZFRleHRib3goe1xuICAgICAgICAgICAgICBmaWVsZDogJ2ZpbGVDYXB0aW9uJyxcbiAgICAgICAgICAgICAgbGFiZWw6ICdDYXB0aW9uJyxcbiAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuY2FwdGlvbixcbiAgICAgICAgICAgICAgY29sdW1uOiAxMixcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbnM6IFt7IHR5cGU6IEVWYWxpZGF0b3IuUkVRVUlSRUQgfV1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBzYXZlRm9ybShmb3JtRmllbHM6IGFueSkge1xuICAgIHRoaXMucmVxdWVzdFNlcnZpY2VcbiAgICAgIC5nZXQ8YW55W10sIGFueT4oJy9BenVyZVVwbG9hZC9VcGRhdGVDYXB0aW9uJywge1xuICAgICAgICBJZDogdGhpcy5pZCxcbiAgICAgICAgZmlsZUNhcHRpb246IHV0aWxpdGllcy5nZXRGb3JtRmllbGRWYWx1ZShcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtLFxuICAgICAgICAgICdmaWxlQ2FwdGlvbidcbiAgICAgICAgKSxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcygnQ2FwdGlvbiBhZGRlZCBzdWNjZXNzZnVsbHkuJyk7XG4gICAgICAgICAgICB0aGlzLnJlZi5jbG9zZShyZXNwb25zZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoeyBlcnJvciB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWYuY2xvc2UoKTtcbiAgICAgICAgICB0aGlzLmFsZXJ0U2VydmljZS5hcGlFcnJvcihlcnJvcik7XG4gICAgICAgIH1cbiAgICAgICk7XG4gIH1cbiAgY2FuY2VsRm9ybShldmVudDogYW55KSB7XG4gICAgLy9jb25zb2xlLmxvZygnQ2FuY2VsRm9ybTogJywgZXZlbnQpO1xuICB9XG59XG4iLCI8IS0tIGFkZCBDYXB0aW9uIG9uIERpc3BsYXlJbWFnZSBDb21wb25lbnQgLS0+XG48ZGl2IGNsYXNzPVwiY2FwdGlvbi1mb3JtXCI+XG4gIDxzZS1mb3JtXG4gICAgKm5nSWY9XCJkeW5hbWljRm9ybVwiXG4gICAgW2Zvcm1dPVwiZHluYW1pY0Zvcm1cIlxuICAgIChzYXZlRm9ybSk9XCJzYXZlRm9ybSgkZXZlbnQpXCJcbiAgICAoY2FuY2VsRm9ybSk9XCJjYW5jZWxGb3JtKCRldmVudClcIlxuICA+XG4gIDwvc2UtZm9ybT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
3
|
+
import * as utilities from '../../../services/utilities.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "primeng/dynamicdialog";
|
|
6
|
+
import * as i2 from "../../../services/grid.service";
|
|
7
|
+
import * as i3 from "primeng/api";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "primeng/confirmdialog";
|
|
10
|
+
import * as i6 from "@angular/cdk/drag-drop";
|
|
11
|
+
import * as i7 from "../form-util/form-util.component";
|
|
12
|
+
import * as i8 from "../file/file.component";
|
|
13
|
+
export class CardComponent {
|
|
14
|
+
constructor(dialogService, gridService, confirmationService) {
|
|
15
|
+
this.dialogService = dialogService;
|
|
16
|
+
this.gridService = gridService;
|
|
17
|
+
this.confirmationService = confirmationService;
|
|
18
|
+
this.selectedCard = new EventEmitter();
|
|
19
|
+
// @Output() onDeleteCard: EventEmitter<any> = new EventEmitter();
|
|
20
|
+
this.data = [];
|
|
21
|
+
this.width = '';
|
|
22
|
+
this.height = '';
|
|
23
|
+
this.showFiles = false;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() { }
|
|
26
|
+
ngOnChanges() {
|
|
27
|
+
if (this.card) {
|
|
28
|
+
let { data, formSections, cardInfo } = this.card;
|
|
29
|
+
if (cardInfo && Object.keys(cardInfo).length) {
|
|
30
|
+
this.displayCardInfo = cardInfo;
|
|
31
|
+
data = this.gridService.setDataFields(data);
|
|
32
|
+
const newArr = [];
|
|
33
|
+
data?.forEach((record) => {
|
|
34
|
+
if (!Object.keys(record)?.includes('azurecontainerid')) {
|
|
35
|
+
newArr.push({ ...record, blobfileurl: record[cardInfo.url?.toLowerCase()], filecaption: record[cardInfo.caption?.toLowerCase()], fileextension: record[cardInfo.extension?.toLowerCase()] });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
newArr.push(record);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
this.data = newArr;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
this.data = this.gridService.setDataFields(data);
|
|
45
|
+
}
|
|
46
|
+
this.dynamicForm = { formSections };
|
|
47
|
+
// set the default value of allowDelete, allowEditableCaption and allowDownload
|
|
48
|
+
this.setCardPropValue('allowDownload');
|
|
49
|
+
this.setCardPropValue('allowDelete');
|
|
50
|
+
this.setCardPropValue('allowEditableCaption');
|
|
51
|
+
//files.allowEditableCaption = this.setCardPropValue(files.allowEditableCaption);
|
|
52
|
+
/** In case of when we are using this component for stand alone then if formSection is exist in
|
|
53
|
+
the this.card and then add in the data array.
|
|
54
|
+
*/
|
|
55
|
+
if (this.data) {
|
|
56
|
+
this.data.forEach((x) => {
|
|
57
|
+
if (!x.dynamicform) {
|
|
58
|
+
x.dynamicform = JSON.parse(JSON.stringify(this.dynamicForm));
|
|
59
|
+
}
|
|
60
|
+
utilities.setCardFieldsData(x);
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
// set the default value of allowDelete, allowEditableCaption and allowDownload
|
|
66
|
+
setCardPropValue(prop) {
|
|
67
|
+
if (!this.card[prop]?.toString()?.length) {
|
|
68
|
+
this.card[prop] = true;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
dragAndDrop(event) {
|
|
72
|
+
moveItemInArray(this.data, event.previousIndex, event.currentIndex);
|
|
73
|
+
event.item?.element?.nativeElement;
|
|
74
|
+
this.card.data = this.data;
|
|
75
|
+
this.card['change'] = true;
|
|
76
|
+
if (this.card && this.card.onSort) {
|
|
77
|
+
this.card.onSort(this.data);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
deleteImage(event) {
|
|
81
|
+
this.confirmationService.confirm({
|
|
82
|
+
message: 'Are you sure that you want to delete this Image?',
|
|
83
|
+
header: 'Delete Confirmation',
|
|
84
|
+
icon: 'pi pi-exclamation-triangle',
|
|
85
|
+
key: 'handlecolumnActions',
|
|
86
|
+
accept: () => {
|
|
87
|
+
if (this.data && event) {
|
|
88
|
+
let arr = [...this.data];
|
|
89
|
+
const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);
|
|
90
|
+
let obj = arr[index];
|
|
91
|
+
arr.splice(index, 1);
|
|
92
|
+
this.data = [...arr];
|
|
93
|
+
if (this.card && this.card.onDelete) {
|
|
94
|
+
obj = this.replacePropName(obj);
|
|
95
|
+
this.card.onDelete(obj);
|
|
96
|
+
// this.onDeleteCard.emit();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
this.confirmationService.close();
|
|
100
|
+
},
|
|
101
|
+
reject: () => {
|
|
102
|
+
this.confirmationService.close();
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
replacePropName(cardInfo) {
|
|
107
|
+
if (this.displayCardInfo && Object.keys(this.displayCardInfo).length > 0) {
|
|
108
|
+
const cardProp = { ...this.displayCardInfo };
|
|
109
|
+
const obj = { ...cardInfo, [cardProp.url]: cardInfo.blobfileurl, [cardProp.caption]: cardInfo.filecaption, [cardProp.extension]: cardInfo.fileextension };
|
|
110
|
+
return obj;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
return cardInfo;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
saveCaption(event) {
|
|
117
|
+
if (this.data && event) {
|
|
118
|
+
let arr = [...this.data];
|
|
119
|
+
const index = arr.findIndex((i) => i.blobfileurl === event.blobfileurl);
|
|
120
|
+
let obj = arr[index];
|
|
121
|
+
if (index !== -1) {
|
|
122
|
+
obj.filecaption = event.caption;
|
|
123
|
+
arr.splice(index, 1, obj);
|
|
124
|
+
this.card.data = arr;
|
|
125
|
+
this.card['change'] = true;
|
|
126
|
+
}
|
|
127
|
+
if (this.card && this.card?.onCaptionSave) {
|
|
128
|
+
obj = this.replacePropName(obj);
|
|
129
|
+
this.card.onCaptionSave(obj);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
onClickEvent(data, index) {
|
|
134
|
+
data['index'] = index;
|
|
135
|
+
this.selectedCard.emit(data);
|
|
136
|
+
}
|
|
137
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: CardComponent, deps: [{ token: i1.DialogService }, { token: i2.GridService }, { token: i3.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: CardComponent, selector: "se-card", inputs: { data: "data", width: "width", height: "height", card: "card", setCardData: "setCardData" }, outputs: { selectedCard: "selectedCard" }, usesOnChanges: true, ngImport: i0, template: "<!-- Display Files Card -->\n<p-confirmDialog key=\"handlecolumnActions\"></p-confirmDialog>\n<div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n class=\"example-list\"\n (cdkDropListDropped)=\"dragAndDrop($event)\"\n>\n <div \n class=\"p-d-flex cards-wrapper\" \n [ngStyle]=\"{ width: width, height: height }\" \n *ngIf=\"data\" \n [class]=\"card && card.class ? card.class : ''\">\n <div\n cdkDrag\n class=\"example-box p-d-flex p-flex-column cards-wrapper\"\n [class]=\"\n card && card.width && card.width.length > 0\n ? 'p-col-' + card.width\n : 'p-col-3'\n \"\n *ngFor=\"let file of data; let i = index\"\n (click)=\"onClickEvent(file,i)\"\n [ngClass]=\"file.selectedCard ? file.selectedCard : ''\"\n >\n <!-- start cards image functionality -->\n <se-file\n [url]=\"file.blobfileurl\"\n [type]=\"file.fileextension\"\n [caption]=\"file?.filecaption\"\n [height]=\"card?.height\"\n [allowDownloadFile]=\"card?.allowDownload\"\n [allowEditableCaption]=\"card?.allowEditableCaption\"\n [allowDeleteFile]=\"card?.allowDelete\"\n [name]=\"file.blobfileurl\"\n [id]=\"file.fileextension\"\n (onDeleteEvent)=\"deleteImage($event)\"\n (onSaveEvent)=\"saveCaption($event)\"\n ></se-file>\n <!-- End cards image functionality -->\n\n <!-- start form functionality in card -->\n <se-form-util\n class=\"form-content\"\n [form]=\"file.dynamicform\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n <!-- End form functionality in card -->\n </div>\n </div>\n\n <!-- in case of form and data is empty or null -->\n <div *ngIf=\"dynamicForm && (!data || data.length == 0)\">\n <se-form-util\n *ngIf=\"dynamicForm\"\n [form]=\"dynamicForm\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n </div>\n</div>\n", styles: [":host ::ng-deep .custom-card .action-buttons{visibility:hidden}:host ::ng-deep .custom-card .image-wrapper:hover .action-buttons{visibility:visible}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:hover .header-icons{opacity:1}.card-active{transform:scale(1.1);transition:all .2s linear;z-index:999}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.ConfirmDialog, selector: "p-confirmDialog", inputs: ["header", "icon", "message", "style", "styleClass", "maskStyleClass", "acceptIcon", "acceptLabel", "closeAriaLabel", "acceptAriaLabel", "acceptVisible", "rejectIcon", "rejectLabel", "rejectAriaLabel", "rejectVisible", "acceptButtonStyleClass", "rejectButtonStyleClass", "closeOnEscape", "dismissableMask", "blockScroll", "rtl", "closable", "appendTo", "key", "autoZIndex", "baseZIndex", "transitionOptions", "focusTrap", "defaultFocus", "breakpoints", "visible", "position"], outputs: ["onHide"] }, { kind: "directive", type: i6.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i7.FormUtilComponent, selector: "se-form-util", inputs: ["stickyActions", "form", "hideSaveButton", "hideCancelButton", "formButtons", "loading", "activeTestMode"], outputs: ["saveForm", "cancelForm", "dropDownChangeEvent", "sectionClickedEvent"] }, { kind: "component", type: i8.fileComponent, selector: "se-file", inputs: ["url", "caption", "width", "height", "id", "name", "type", "allowDownloadFile", "allowEditableCaption", "allowDeleteFile"], outputs: ["onDeleteEvent", "onSaveEvent"] }] }); }
|
|
139
|
+
}
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: CardComponent, decorators: [{
|
|
141
|
+
type: Component,
|
|
142
|
+
args: [{ selector: 'se-card', template: "<!-- Display Files Card -->\n<p-confirmDialog key=\"handlecolumnActions\"></p-confirmDialog>\n<div\n cdkDropList\n cdkDropListOrientation=\"horizontal\"\n class=\"example-list\"\n (cdkDropListDropped)=\"dragAndDrop($event)\"\n>\n <div \n class=\"p-d-flex cards-wrapper\" \n [ngStyle]=\"{ width: width, height: height }\" \n *ngIf=\"data\" \n [class]=\"card && card.class ? card.class : ''\">\n <div\n cdkDrag\n class=\"example-box p-d-flex p-flex-column cards-wrapper\"\n [class]=\"\n card && card.width && card.width.length > 0\n ? 'p-col-' + card.width\n : 'p-col-3'\n \"\n *ngFor=\"let file of data; let i = index\"\n (click)=\"onClickEvent(file,i)\"\n [ngClass]=\"file.selectedCard ? file.selectedCard : ''\"\n >\n <!-- start cards image functionality -->\n <se-file\n [url]=\"file.blobfileurl\"\n [type]=\"file.fileextension\"\n [caption]=\"file?.filecaption\"\n [height]=\"card?.height\"\n [allowDownloadFile]=\"card?.allowDownload\"\n [allowEditableCaption]=\"card?.allowEditableCaption\"\n [allowDeleteFile]=\"card?.allowDelete\"\n [name]=\"file.blobfileurl\"\n [id]=\"file.fileextension\"\n (onDeleteEvent)=\"deleteImage($event)\"\n (onSaveEvent)=\"saveCaption($event)\"\n ></se-file>\n <!-- End cards image functionality -->\n\n <!-- start form functionality in card -->\n <se-form-util\n class=\"form-content\"\n [form]=\"file.dynamicform\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n <!-- End form functionality in card -->\n </div>\n </div>\n\n <!-- in case of form and data is empty or null -->\n <div *ngIf=\"dynamicForm && (!data || data.length == 0)\">\n <se-form-util\n *ngIf=\"dynamicForm\"\n [form]=\"dynamicForm\"\n [hideSaveButton]=\"true\"\n [hideCancelButton]=\"true\"\n ></se-form-util>\n </div>\n</div>\n", styles: [":host ::ng-deep .custom-card .action-buttons{visibility:hidden}:host ::ng-deep .custom-card .image-wrapper:hover .action-buttons{visibility:visible}.cdk-drag-preview{box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:hover .header-icons{opacity:1}.card-active{transform:scale(1.1);transition:all .2s linear;z-index:999}\n"] }]
|
|
143
|
+
}], ctorParameters: function () { return [{ type: i1.DialogService }, { type: i2.GridService }, { type: i3.ConfirmationService }]; }, propDecorators: { selectedCard: [{
|
|
144
|
+
type: Output
|
|
145
|
+
}], data: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], width: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], height: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], card: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], setCardData: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}] } });
|
|
156
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2NhcmRzL2NhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2UtdWktdG9vbGtpdC9zcmMvbGliL2NvbXBvbmVudHMvYmFzZS9jYXJkcy9jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXpELE9BQU8sS0FBSyxTQUFTLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7Ozs7QUFRakUsTUFBTSxPQUFPLGFBQWE7SUFZeEIsWUFDUyxhQUE0QixFQUMzQixXQUF3QixFQUN4QixtQkFBd0M7UUFGekMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDM0IsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQWR4QyxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQy9ELGtFQUFrRTtRQUN6RCxTQUFJLEdBQVEsRUFBRSxDQUFDO1FBQ2YsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixXQUFNLEdBQVcsRUFBRSxDQUFDO1FBSTdCLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFPeEIsQ0FBQztJQUVKLFFBQVEsS0FBVSxDQUFDO0lBRW5CLFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDYixJQUFJLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsR0FBUSxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ3RELElBQUcsUUFB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QUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO2FBQzVCO1lBQ0QsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO2dCQUN6QyxHQUFHLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUI7U0FDRjtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsSUFBUyxFQUFFLEtBQWE7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO2lJQXhJVSxhQUFhO3FIQUFiLGFBQWEscU5DYjFCLG8rREE4REE7OzJGRGpEYSxhQUFhO2tCQUx6QixTQUFTOytCQUNFLFNBQVM7Z0tBS1QsWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdwcmltZW5nL2R5bmFtaWNkaWFsb2cnO1xuaW1wb3J0IHsgSUR5bmFtaWNDYXJkLCBJRHluYW1pY0Zvcm0sIElWaWV3Q2FyZFByb3AgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XG5pbXBvcnQgeyBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcbmltcG9ydCB7IEdyaWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZ3JpZC5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIHV0aWxpdGllcyBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy91dGlsaXRpZXMuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJkLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIENhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRDYXJkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gQE91dHB1dCgpIG9uRGVsZXRlQ2FyZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBJbnB1dCgpIGRhdGE6IGFueSA9IFtdO1xuICBASW5wdXQoKSB3aWR0aDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGhlaWdodDogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGNhcmQ6IGFueTtcbiAgQElucHV0KCkgc2V0Q2FyZERhdGE6IGJvb2xlYW47XG4gIGR5bmFtaWNGb3JtOiBJRHluYW1pY0Zvcm07XG4gIHNob3dGaWxlczogYm9vbGVhbiA9IGZhbHNlO1xuICBkaXNwbGF5Q2FyZEluZm86IElWaWV3Q2FyZFByb3A7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBncmlkU2VydmljZTogR3JpZFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb25maXJtYXRpb25TZXJ2aWNlOiBDb25maXJtYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMuY2FyZCkge1xuICAgICAgbGV0IHsgZGF0YSwgZm9ybVNlY3Rpb25zLCBjYXJkSW5mbyB9OiBhbnkgPSB0aGlzLmNhcmQ7XG4gICAgICBpZihjYXJkSW5mbyAmJiBPYmplY3Qua2V5cyhjYXJkSW5mbykubGVuZ3RoKXtcbiAgICAgICAgdGhpcy5kaXNwbGF5Q2FyZEluZm8gPSBjYXJkSW5mbztcbiAgICAgICAgZGF0YSA9IHRoaXMuZ3JpZFNlcnZpY2Uuc2V0RGF0YUZpZWxkcyhkYXRhKTtcbiAgICAgICAgY29uc3QgbmV3QXJyID0gW107XG4gICAgICAgIGRhdGE/LmZvckVhY2goKHJlY29yZCk9PntcbiAgICAgICAgICBpZighT2JqZWN0LmtleXMocmVjb3JkKT8uaW5jbHVkZXMoJ2F6dXJlY29udGFpbmVyaWQnKSl7XG4gICAgICAgICAgICBuZXdBcnIucHVzaCh7Li4ucmVjb3JkLCBibG9iZmlsZXVybDogcmVjb3JkW2NhcmRJbmZvLnVybD8udG9Mb3dlckNhc2UoKV0sIGZpbGVjYXB0aW9uOiByZWNvcmRbY2FyZEluZm8uY2FwdGlvbj8udG9Mb3dlckNhc2UoKV0sIGZpbGVleHRlbnNpb246IHJlY29yZFtjYXJkSW5mby5leHRlbnNpb24/LnRvTG93ZXJDYXNlKCldfSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld0Fyci5wdXNoKHJlY29yZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5kYXRhID0gbmV3QXJyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kYXRhID0gdGhpcy5ncmlkU2VydmljZS5zZXREYXRhRmllbGRzKGRhdGEpO1xuICAgICAgfVxuICAgICAgdGhpcy5keW5hbWljRm9ybSA9IHsgZm9ybVNlY3Rpb25zIH07XG4gICAgICAvLyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYWxsb3dEZWxldGUsIGFsbG93RWRpdGFibGVDYXB0aW9uIGFuZCBhbGxvd0Rvd25sb2FkXG4gICAgICB0aGlzLnNldENhcmRQcm9wVmFsdWUoJ2FsbG93RG93bmxvYWQnKTtcbiAgICAgIHRoaXMuc2V0Q2FyZFByb3BWYWx1ZSgnYWxsb3dEZWxldGUnKTtcbiAgICAgIHRoaXMuc2V0Q2FyZFByb3BWYWx1ZSgnYWxsb3dFZGl0YWJsZUNhcHRpb24nKTtcbiAgICAgIC8vZmlsZXMuYWxsb3dFZGl0YWJsZUNhcHRpb24gPSB0aGlzLnNldENhcmRQcm9wVmFsdWUoZmlsZXMuYWxsb3dFZGl0YWJsZUNhcHRpb24pO1xuICAgICAgLyoqIEluIGNhc2Ugb2Ygd2hlbiB3ZSBhcmUgdXNpbmcgdGhpcyBjb21wb25lbnQgZm9yIHN0YW5kIGFsb25lIHRoZW4gaWYgZm9ybVNlY3Rpb24gaXMgZXhpc3QgaW5cbiAgICAgICAgICB0aGUgdGhpcy5jYXJkIGFuZCB0aGVuIGFkZCBpbiB0aGUgZGF0YSBhcnJheS5cbiAgICAgICovXG4gICAgICBpZiAodGhpcy5kYXRhKSB7XG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKCh4OiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoIXguZHluYW1pY2Zvcm0pIHtcbiAgICAgICAgICAgIHguZHluYW1pY2Zvcm0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZHluYW1pY0Zvcm0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdXRpbGl0aWVzLnNldENhcmRGaWVsZHNEYXRhKHgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBzZXQgdGhlIGRlZmF1bHQgdmFsdWUgb2YgYWxsb3dEZWxldGUsIGFsbG93RWRpdGFibGVDYXB0aW9uIGFuZCBhbGxvd0Rvd25sb2FkXG4gIHNldENhcmRQcm9wVmFsdWUocHJvcDpzdHJpbmcpe1xuICAgaWYoIXRoaXMuY2FyZFtwcm9wXT8udG9TdHJpbmcoKT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNhcmRbcHJvcF09IHRydWU7XG4gICAgfVxuICB9XG5cbiAgZHJhZ0FuZERyb3AoZXZlbnQ6IGFueSkge1xuICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgZXZlbnQuaXRlbT8uZWxlbWVudD8ubmF0aXZlRWxlbWVudDtcbiAgICB0aGlzLmNhcmQuZGF0YSA9IHRoaXMuZGF0YTtcbiAgICB0aGlzLmNhcmRbJ2NoYW5nZSddID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5jYXJkICYmIHRoaXMuY2FyZC5vblNvcnQpIHtcbiAgICAgIHRoaXMuY2FyZC5vblNvcnQodGhpcy5kYXRhKTtcbiAgICB9XG4gIH1cblxuICBkZWxldGVJbWFnZShldmVudDogYW55KSB7XG4gICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNvbmZpcm0oe1xuICAgICAgbWVzc2FnZTogJ0FyZSB5b3Ugc3VyZSB0aGF0IHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEltYWdlPycsXG4gICAgICBoZWFkZXI6ICdEZWxldGUgQ29uZmlybWF0aW9uJyxcbiAgICAgIGljb246ICdwaSBwaS1leGNsYW1hdGlvbi10cmlhbmdsZScsXG4gICAgICBrZXk6ICdoYW5kbGVjb2x1bW5BY3Rpb25zJyxcbiAgICAgIGFjY2VwdDogKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kYXRhICYmIGV2ZW50KSB7XG4gICAgICAgICAgbGV0IGFyciA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgICAgIGNvbnN0IGluZGV4ID0gYXJyLmZpbmRJbmRleChcbiAgICAgICAgICAgIChpKSA9PiBpLmJsb2JmaWxldXJsID09PSBldmVudC5ibG9iZmlsZXVybFxuICAgICAgICAgICk7XG4gICAgICAgICAgbGV0IG9iaiA9IGFycltpbmRleF07XG4gICAgICAgICAgYXJyLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgdGhpcy5kYXRhID0gWy4uLmFycl07XG5cbiAgICAgICAgICBpZiAodGhpcy5jYXJkICYmIHRoaXMuY2FyZC5vbkRlbGV0ZSkge1xuICAgICAgICAgICAgb2JqID0gdGhpcy5yZXBsYWNlUHJvcE5hbWUob2JqKTtcbiAgICAgICAgICAgIHRoaXMuY2FyZC5vbkRlbGV0ZShvYmopO1xuICAgICAgICAgICAgLy8gdGhpcy5vbkRlbGV0ZUNhcmQuZW1pdCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY2xvc2UoKTtcbiAgICAgIH0sXG4gICAgICByZWplY3Q6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25TZXJ2aWNlLmNsb3NlKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcmVwbGFjZVByb3BOYW1lKGNhcmRJbmZvOmFueSl7XG4gICAgaWYodGhpcy5kaXNwbGF5Q2FyZEluZm8gJiYgT2JqZWN0LmtleXModGhpcy5kaXNwbGF5Q2FyZEluZm8pLmxlbmd0aCA+IDApe1xuICAgICAgY29uc3QgY2FyZFByb3AgPSB7Li4udGhpcy5kaXNwbGF5Q2FyZEluZm99O1xuICAgICAgY29uc3Qgb2JqID0gey4uLmNhcmRJbmZvLFtjYXJkUHJvcC51cmxdOiBjYXJkSW5mby5ibG9iZmlsZXVybCxbY2FyZFByb3AuY2FwdGlvbl06IGNhcmRJbmZvLmZpbGVjYXB0aW9uLFtjYXJkUHJvcC5leHRlbnNpb25dOiBjYXJkSW5mby5maWxlZXh0ZW5zaW9ufTtcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBjYXJkSW5mbztcbiAgICB9XG4gIH1cblxuICBzYXZlQ2FwdGlvbihldmVudDogYW55KSB7XG4gICAgaWYgKHRoaXMuZGF0YSAmJiBldmVudCkge1xuICAgICAgbGV0IGFyciA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgY29uc3QgaW5kZXggPSBhcnIuZmluZEluZGV4KChpKSA9PiBpLmJsb2JmaWxldXJsID09PSBldmVudC5ibG9iZmlsZXVybCk7XG4gICAgICBsZXQgb2JqID0gYXJyW2luZGV4XTtcbiAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgb2JqLmZpbGVjYXB0aW9uID0gZXZlbnQuY2FwdGlvbjtcbiAgICAgICAgYXJyLnNwbGljZShpbmRleCwgMSwgb2JqKTtcbiAgICAgICAgdGhpcy5jYXJkLmRhdGEgPSBhcnI7XG4gICAgICAgIHRoaXMuY2FyZFsnY2hhbmdlJ10gPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2FyZCAmJiB0aGlzLmNhcmQ/Lm9uQ2FwdGlvblNhdmUpIHtcbiAgICAgICAgb2JqID0gdGhpcy5yZXBsYWNlUHJvcE5hbWUob2JqKTtcbiAgICAgICAgdGhpcy5jYXJkLm9uQ2FwdGlvblNhdmUob2JqKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBvbkNsaWNrRXZlbnQoZGF0YTogYW55LCBpbmRleDogbnVtYmVyKXtcbiAgICBkYXRhWydpbmRleCddID0gaW5kZXg7XG4gICAgdGhpcy5zZWxlY3RlZENhcmQuZW1pdChkYXRhKTtcbiAgfVxuXG59XG4iLCI8IS0tIERpc3BsYXkgRmlsZXMgQ2FyZCAtLT5cbjxwLWNvbmZpcm1EaWFsb2cga2V5PVwiaGFuZGxlY29sdW1uQWN0aW9uc1wiPjwvcC1jb25maXJtRGlhbG9nPlxuPGRpdlxuICBjZGtEcm9wTGlzdFxuICBjZGtEcm9wTGlzdE9yaWVudGF0aW9uPVwiaG9yaXpvbnRhbFwiXG4gIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcbiAgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcmFnQW5kRHJvcCgkZXZlbnQpXCJcbj5cbiAgPGRpdiBcbiAgY2xhc3M9XCJwLWQtZmxleCBjYXJkcy13cmFwcGVyXCIgXG4gIFtuZ1N0eWxlXT1cInsgd2lkdGg6IHdpZHRoLCBoZWlnaHQ6IGhlaWdodCB9XCIgXG4gICpuZ0lmPVwiZGF0YVwiIFxuICBbY2xhc3NdPVwiY2FyZCAmJiBjYXJkLmNsYXNzID8gY2FyZC5jbGFzcyA6ICcnXCI+XG4gICAgPGRpdlxuICAgICAgY2RrRHJhZ1xuICAgICAgY2xhc3M9XCJleGFtcGxlLWJveCBwLWQtZmxleCBwLWZsZXgtY29sdW1uIGNhcmRzLXdyYXBwZXJcIlxuICAgICAgW2NsYXNzXT1cIlxuICAgICAgICBjYXJkICYmIGNhcmQud2lkdGggJiYgY2FyZC53aWR0aC5sZW5ndGggPiAwXG4gICAgICAgICAgPyAncC1jb2wtJyArIGNhcmQud2lkdGhcbiAgICAgICAgICA6ICdwLWNvbC0zJ1xuICAgICAgXCJcbiAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIGRhdGE7IGxldCBpID0gaW5kZXhcIlxuICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tFdmVudChmaWxlLGkpXCJcbiAgICAgIFtuZ0NsYXNzXT1cImZpbGUuc2VsZWN0ZWRDYXJkID8gZmlsZS5zZWxlY3RlZENhcmQgOiAnJ1wiXG4gICAgPlxuICAgICAgPCEtLSBzdGFydCBjYXJkcyBpbWFnZSBmdW5jdGlvbmFsaXR5IC0tPlxuICAgICAgPHNlLWZpbGVcbiAgICAgICAgW3VybF09XCJmaWxlLmJsb2JmaWxldXJsXCJcbiAgICAgICAgW3R5cGVdPVwiZmlsZS5maWxlZXh0ZW5zaW9uXCJcbiAgICAgICAgW2NhcHRpb25dPVwiZmlsZT8uZmlsZWNhcHRpb25cIlxuICAgICAgICBbaGVpZ2h0XT1cImNhcmQ/LmhlaWdodFwiXG4gICAgICAgIFthbGxvd0Rvd25sb2FkRmlsZV09XCJjYXJkPy5hbGxvd0Rvd25sb2FkXCJcbiAgICAgICAgW2FsbG93RWRpdGFibGVDYXB0aW9uXT1cImNhcmQ/LmFsbG93RWRpdGFibGVDYXB0aW9uXCJcbiAgICAgICAgW2FsbG93RGVsZXRlRmlsZV09XCJjYXJkPy5hbGxvd0RlbGV0ZVwiXG4gICAgICAgIFtuYW1lXT1cImZpbGUuYmxvYmZpbGV1cmxcIlxuICAgICAgICBbaWRdPVwiZmlsZS5maWxlZXh0ZW5zaW9uXCJcbiAgICAgICAgKG9uRGVsZXRlRXZlbnQpPVwiZGVsZXRlSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgIChvblNhdmVFdmVudCk9XCJzYXZlQ2FwdGlvbigkZXZlbnQpXCJcbiAgICAgID48L3NlLWZpbGU+XG4gICAgICA8IS0tIEVuZCBjYXJkcyBpbWFnZSBmdW5jdGlvbmFsaXR5IC0tPlxuXG4gICAgICA8IS0tIHN0YXJ0IGZvcm0gZnVuY3Rpb25hbGl0eSBpbiBjYXJkIC0tPlxuICAgICAgPHNlLWZvcm0tdXRpbFxuICAgICAgICBjbGFzcz1cImZvcm0tY29udGVudFwiXG4gICAgICAgIFtmb3JtXT1cImZpbGUuZHluYW1pY2Zvcm1cIlxuICAgICAgICBbaGlkZVNhdmVCdXR0b25dPVwidHJ1ZVwiXG4gICAgICAgIFtoaWRlQ2FuY2VsQnV0dG9uXT1cInRydWVcIlxuICAgICAgPjwvc2UtZm9ybS11dGlsPlxuICAgICAgPCEtLSBFbmQgZm9ybSBmdW5jdGlvbmFsaXR5IGluIGNhcmQgLS0+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDwhLS0gaW4gY2FzZSBvZiBmb3JtIGFuZCBkYXRhIGlzIGVtcHR5IG9yIG51bGwgLS0+XG4gIDxkaXYgKm5nSWY9XCJkeW5hbWljRm9ybSAmJiAoIWRhdGEgfHwgZGF0YS5sZW5ndGggPT0gMClcIj5cbiAgICA8c2UtZm9ybS11dGlsXG4gICAgICAqbmdJZj1cImR5bmFtaWNGb3JtXCJcbiAgICAgIFtmb3JtXT1cImR5bmFtaWNGb3JtXCJcbiAgICAgIFtoaWRlU2F2ZUJ1dHRvbl09XCJ0cnVlXCJcbiAgICAgIFtoaWRlQ2FuY2VsQnV0dG9uXT1cInRydWVcIlxuICAgID48L3NlLWZvcm0tdXRpbD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { ESelectFileType } from '../../../models/form.model';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "primeng/api";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/forms";
|
|
7
|
+
import * as i4 from "primeng/button";
|
|
8
|
+
import * as i5 from "primeng/inputtext";
|
|
9
|
+
import * as i6 from "primeng/card";
|
|
10
|
+
export class fileComponent {
|
|
11
|
+
constructor(confirmationService) {
|
|
12
|
+
this.confirmationService = confirmationService;
|
|
13
|
+
this.url = '';
|
|
14
|
+
this.caption = '';
|
|
15
|
+
this.width = '';
|
|
16
|
+
this.height = '200px';
|
|
17
|
+
this.onDeleteEvent = new EventEmitter();
|
|
18
|
+
this.onSaveEvent = new EventEmitter();
|
|
19
|
+
this.name = '';
|
|
20
|
+
this.allowDownloadFile = true;
|
|
21
|
+
this.allowEditableCaption = true;
|
|
22
|
+
this.allowDeleteFile = true;
|
|
23
|
+
this.editableCaption = false;
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.checkFileExtension();
|
|
27
|
+
}
|
|
28
|
+
checkFileExtension() {
|
|
29
|
+
switch (this.type) {
|
|
30
|
+
case 'png':
|
|
31
|
+
case 'jpeg':
|
|
32
|
+
case 'jfif':
|
|
33
|
+
case 'jpg': {
|
|
34
|
+
this.type = '.image';
|
|
35
|
+
break;
|
|
36
|
+
}
|
|
37
|
+
case 'xlsx':
|
|
38
|
+
case 'xls':
|
|
39
|
+
case 'xlsm':
|
|
40
|
+
case 'txt': {
|
|
41
|
+
this.type = ESelectFileType.EXCEL;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case 'pdf':
|
|
45
|
+
case 'html': {
|
|
46
|
+
this.type = ESelectFileType.PDF;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case 'doc':
|
|
50
|
+
case 'docx': {
|
|
51
|
+
this.type = ESelectFileType.DOCUMENT;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
downloadFile(url) {
|
|
57
|
+
const link = document.createElement('a');
|
|
58
|
+
link.href = url;
|
|
59
|
+
link.target = '_blank';
|
|
60
|
+
link.click();
|
|
61
|
+
}
|
|
62
|
+
captionClickEvent() {
|
|
63
|
+
if (this.allowEditableCaption) {
|
|
64
|
+
this.editableCaption = true;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
captionSave(id, name, url, type, caption) {
|
|
68
|
+
let obj = {
|
|
69
|
+
id: id,
|
|
70
|
+
name: name,
|
|
71
|
+
blobfileurl: url,
|
|
72
|
+
type: type,
|
|
73
|
+
caption: caption,
|
|
74
|
+
};
|
|
75
|
+
if (caption !== null) {
|
|
76
|
+
this.caption = caption;
|
|
77
|
+
this.editableCaption = false;
|
|
78
|
+
this.onSaveEvent.emit(obj);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
onDeleteFile(id, name, url, type, caption) {
|
|
82
|
+
let obj = {
|
|
83
|
+
id: id,
|
|
84
|
+
name: name,
|
|
85
|
+
blobfileurl: url,
|
|
86
|
+
type: type,
|
|
87
|
+
caption: caption,
|
|
88
|
+
};
|
|
89
|
+
this.onDeleteEvent.emit(obj);
|
|
90
|
+
}
|
|
91
|
+
cancel() {
|
|
92
|
+
this.editableCaption = false;
|
|
93
|
+
}
|
|
94
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: fileComponent, deps: [{ token: i1.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
95
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.1", type: fileComponent, selector: "se-file", inputs: { url: "url", caption: "caption", width: "width", height: "height", id: "id", name: "name", type: "type", allowDownloadFile: "allowDownloadFile", allowEditableCaption: "allowEditableCaption", allowDeleteFile: "allowDeleteFile" }, outputs: { onDeleteEvent: "onDeleteEvent", onSaveEvent: "onSaveEvent" }, ngImport: i0, template: "<div class=\"p-d-flex cards-wrapper\">\n <div\n class=\"example-box\"\n [class]=\"width && width.length > 0 ? 'p-col-' + width : 'p-col-12'\"\n >\n <p-card class=\"custom-card\">\n <div class=\"image-wrapper\">\n <!-- Start image file type cases -->\n <div [ngSwitch]=\"type\">\n <img\n alt=\"ImageCard\"\n [src]=\"url\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.image'\"\n [ngStyle]=\"{ height: height }\"\n />\n\n <img\n alt=\"ImageCard\"\n src=\"../../../../assets/images/pdf-file.png\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.pdf'\"\n [ngStyle]=\"{ height: height }\"\n />\n <img\n alt=\"ImageCard\"\n src=\"../../../../assets/images/xls.png\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.excel'\"\n [ngStyle]=\"{ height: height }\"\n />\n <img\n alt=\"ImageCard\"\n src=\"../../../../assets/images/doc.png\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.document'\"\n [ngStyle]=\"{ height: height }\"\n />\n </div>\n <!-- End image file type cases -->\n\n <!-- start caption functionality-->\n <div class=\"edit-caption\">\n <h4\n class=\"example-box\"\n (click)=\"captionClickEvent()\"\n [title]=\"caption\"\n *ngIf=\"!editableCaption\"\n >\n {{ caption }}\n </h4>\n <div\n class=\"p-d-flex p-flex-column p-ai-end\" \n *ngIf=\"editableCaption && allowEditableCaption\"\n >\n <input\n type=\"text\"\n name=\"caption\"\n [(ngModel)]=\"caption\"\n pInputText\n (blur)=\"captionSave(id, name, url, type, caption)\"\n />\n <div class=\"icons\">\n <i\n class=\"pi pi-check\"\n (click)=\"captionSave(id, name, url, type, caption)\"\n ></i>\n <i class=\"pi pi-times\" (click)=\"cancel()\"></i>\n </div>\n </div>\n <!-- End caption functionality-->\n\n <!-- start header action button functionality -->\n <div class=\"action-buttons\">\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-arrow-circle-down\"\n (click)=\"downloadFile(url)\"\n class=\"p-button-rounded p-button-text\"\n *ngIf=\"allowDownloadFile\"\n ></button>\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-trash\"\n (click)=\"onDeleteFile(id, name, url, type, caption)\"\n class=\"p-button-rounded p-button-text\"\n *ngIf=\"allowDeleteFile\"\n ></button>\n </div>\n <!-- End header action button functionality -->\n </div>\n </div>\n </p-card>\n </div>\n</div>\n", styles: [":host ::ng-deep .custom-card .action-buttons{visibility:hidden}:host ::ng-deep .custom-card .image-wrapper:hover .action-buttons{visibility:visible}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.InputText, selector: "[pInputText]" }, { kind: "component", type: i6.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }] }); }
|
|
96
|
+
}
|
|
97
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.1", ngImport: i0, type: fileComponent, decorators: [{
|
|
98
|
+
type: Component,
|
|
99
|
+
args: [{ selector: 'se-file', template: "<div class=\"p-d-flex cards-wrapper\">\n <div\n class=\"example-box\"\n [class]=\"width && width.length > 0 ? 'p-col-' + width : 'p-col-12'\"\n >\n <p-card class=\"custom-card\">\n <div class=\"image-wrapper\">\n <!-- Start image file type cases -->\n <div [ngSwitch]=\"type\">\n <img\n alt=\"ImageCard\"\n [src]=\"url\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.image'\"\n [ngStyle]=\"{ height: height }\"\n />\n\n <img\n alt=\"ImageCard\"\n src=\"../../../../assets/images/pdf-file.png\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.pdf'\"\n [ngStyle]=\"{ height: height }\"\n />\n <img\n alt=\"ImageCard\"\n src=\"../../../../assets/images/xls.png\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.excel'\"\n [ngStyle]=\"{ height: height }\"\n />\n <img\n alt=\"ImageCard\"\n src=\"../../../../assets/images/doc.png\"\n [name]=\"name\"\n [id]=\"id\"\n *ngSwitchCase=\"'.document'\"\n [ngStyle]=\"{ height: height }\"\n />\n </div>\n <!-- End image file type cases -->\n\n <!-- start caption functionality-->\n <div class=\"edit-caption\">\n <h4\n class=\"example-box\"\n (click)=\"captionClickEvent()\"\n [title]=\"caption\"\n *ngIf=\"!editableCaption\"\n >\n {{ caption }}\n </h4>\n <div\n class=\"p-d-flex p-flex-column p-ai-end\" \n *ngIf=\"editableCaption && allowEditableCaption\"\n >\n <input\n type=\"text\"\n name=\"caption\"\n [(ngModel)]=\"caption\"\n pInputText\n (blur)=\"captionSave(id, name, url, type, caption)\"\n />\n <div class=\"icons\">\n <i\n class=\"pi pi-check\"\n (click)=\"captionSave(id, name, url, type, caption)\"\n ></i>\n <i class=\"pi pi-times\" (click)=\"cancel()\"></i>\n </div>\n </div>\n <!-- End caption functionality-->\n\n <!-- start header action button functionality -->\n <div class=\"action-buttons\">\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-arrow-circle-down\"\n (click)=\"downloadFile(url)\"\n class=\"p-button-rounded p-button-text\"\n *ngIf=\"allowDownloadFile\"\n ></button>\n <button\n pButton\n type=\"button\"\n icon=\"pi pi-trash\"\n (click)=\"onDeleteFile(id, name, url, type, caption)\"\n class=\"p-button-rounded p-button-text\"\n *ngIf=\"allowDeleteFile\"\n ></button>\n </div>\n <!-- End header action button functionality -->\n </div>\n </div>\n </p-card>\n </div>\n</div>\n", styles: [":host ::ng-deep .custom-card .action-buttons{visibility:hidden}:host ::ng-deep .custom-card .image-wrapper:hover .action-buttons{visibility:visible}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}\n"] }]
|
|
100
|
+
}], ctorParameters: function () { return [{ type: i1.ConfirmationService }]; }, propDecorators: { url: [{
|
|
101
|
+
type: Input
|
|
102
|
+
}], caption: [{
|
|
103
|
+
type: Input
|
|
104
|
+
}], width: [{
|
|
105
|
+
type: Input
|
|
106
|
+
}], height: [{
|
|
107
|
+
type: Input
|
|
108
|
+
}], onDeleteEvent: [{
|
|
109
|
+
type: Output
|
|
110
|
+
}], onSaveEvent: [{
|
|
111
|
+
type: Output
|
|
112
|
+
}], id: [{
|
|
113
|
+
type: Input
|
|
114
|
+
}], name: [{
|
|
115
|
+
type: Input
|
|
116
|
+
}], type: [{
|
|
117
|
+
type: Input
|
|
118
|
+
}], allowDownloadFile: [{
|
|
119
|
+
type: Input
|
|
120
|
+
}], allowEditableCaption: [{
|
|
121
|
+
type: Input
|
|
122
|
+
}], allowDeleteFile: [{
|
|
123
|
+
type: Input
|
|
124
|
+
}] } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2ZpbGUvZmlsZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zZS11aS10b29sa2l0L3NyYy9saWIvY29tcG9uZW50cy9iYXNlL2ZpbGUvZmlsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFPN0QsTUFBTSxPQUFPLGFBQWE7SUFleEIsWUFBb0IsbUJBQXdDO1FBQXhDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFkbkQsUUFBRyxHQUFXLEVBQUUsQ0FBQztRQUNqQixZQUFPLEdBQVcsRUFBRSxDQUFDO1FBQ3JCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUN4QixrQkFBYSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3RELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFckQsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUVsQixzQkFBaUIsR0FBWSxJQUFJLENBQUM7UUFDbEMseUJBQW9CLEdBQVksSUFBSSxDQUFDO1FBQ3JDLG9CQUFlLEdBQVksSUFBSSxDQUFDO1FBQ3pDLG9CQUFlLEdBQVksS0FBSyxDQUFDO0lBRThCLENBQUM7SUFFaEUsUUFBUTtRQUNOLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2pC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QWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuaW1wb3J0IHsgRVNlbGVjdEZpbGVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZS1maWxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9maWxlLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIGZpbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB1cmw6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBjYXB0aW9uOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBoZWlnaHQ6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU2F2ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQElucHV0KCkgaWQ6IG51bWJlcjtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHR5cGU6IGFueTtcbiAgQElucHV0KCkgYWxsb3dEb3dubG9hZEZpbGU6IGJvb2xlYW4gPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd0VkaXRhYmxlQ2FwdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RGVsZXRlRmlsZTogYm9vbGVhbiA9IHRydWU7XG4gIGVkaXRhYmxlQ2FwdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrRmlsZUV4dGVuc2lvbigpO1xuICB9XG5cbiAgY2hlY2tGaWxlRXh0ZW5zaW9uKCkge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlICdwbmcnOlxuICAgICAgY2FzZSAnanBlZyc6XG4gICAgICBjYXNlICdqZmlmJzpcbiAgICAgIGNhc2UgJ2pwZyc6IHtcbiAgICAgICAgdGhpcy50eXBlID0gJy5pbWFnZSc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSAneGxzeCc6XG4gICAgICBjYXNlICd4bHMnOlxuICAgICAgY2FzZSAneGxzbSc6XG4gICAgICBjYXNlICd0eHQnOiB7XG4gICAgICAgIHRoaXMudHlwZSA9IEVTZWxlY3RGaWxlVHlwZS5FWENFTDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdwZGYnOlxuICAgICAgY2FzZSAnaHRtbCc6IHtcbiAgICAgICAgdGhpcy50eXBlID0gRVNlbGVjdEZpbGVUeXBlLlBERjtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlICdkb2MnOlxuICAgICAgY2FzZSAnZG9jeCc6IHtcbiAgICAgICAgdGhpcy50eXBlID0gRVNlbGVjdEZpbGVUeXBlLkRPQ1VNRU5UO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBkb3dubG9hZEZpbGUodXJsOiBzdHJpbmcpIHtcbiAgICBjb25zdCBsaW5rOiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgbGluay5ocmVmID0gdXJsO1xuICAgIGxpbmsudGFyZ2V0ID0gJ19ibGFuayc7XG4gICAgbGluay5jbGljaygpO1xuICB9XG5cbiAgY2FwdGlvbkNsaWNrRXZlbnQoKSB7XG4gICAgaWYgKHRoaXMuYWxsb3dFZGl0YWJsZUNhcHRpb24pIHtcbiAgICAgIHRoaXMuZWRpdGFibGVDYXB0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBjYXB0aW9uU2F2ZShcbiAgICBpZDogbnVtYmVyLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0eXBlOiBhbnksXG4gICAgY2FwdGlvbjogc3RyaW5nXG4gICkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBpZDogaWQsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgYmxvYmZpbGV1cmw6IHVybCxcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBjYXB0aW9uOiBjYXB0aW9uLFxuICAgIH07XG4gICAgaWYoY2FwdGlvbiAhPT0gbnVsbCl7XG4gICAgICB0aGlzLmNhcHRpb24gPSBjYXB0aW9uO1xuICAgICAgdGhpcy5lZGl0YWJsZUNhcHRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMub25TYXZlRXZlbnQuZW1pdChvYmopO1xuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlRmlsZShcbiAgICBpZDogbnVtYmVyLFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICB0eXBlOiBhbnksXG4gICAgY2FwdGlvbjogc3RyaW5nXG4gICkge1xuICAgIGxldCBvYmogPSB7XG4gICAgICBpZDogaWQsXG4gICAgICBuYW1lOiBuYW1lLFxuICAgICAgYmxvYmZpbGV1cmw6IHVybCxcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBjYXB0aW9uOiBjYXB0aW9uLFxuICAgIH07XG4gICAgdGhpcy5vbkRlbGV0ZUV2ZW50LmVtaXQob2JqKTtcbiAgfVxuXG4gIGNhbmNlbCgpIHtcbiAgICB0aGlzLmVkaXRhYmxlQ2FwdGlvbiA9IGZhbHNlO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicC1kLWZsZXggY2FyZHMtd3JhcHBlclwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJleGFtcGxlLWJveFwiXG4gICAgW2NsYXNzXT1cIndpZHRoICYmIHdpZHRoLmxlbmd0aCA+IDAgPyAncC1jb2wtJyArIHdpZHRoIDogJ3AtY29sLTEyJ1wiXG4gID5cbiAgICA8cC1jYXJkIGNsYXNzPVwiY3VzdG9tLWNhcmRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZS13cmFwcGVyXCI+XG4gICAgICAgIDwhLS0gU3RhcnQgaW1hZ2UgZmlsZSB0eXBlIGNhc2VzIC0tPlxuICAgICAgICA8ZGl2IFtuZ1N3aXRjaF09XCJ0eXBlXCI+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgYWx0PVwiSW1hZ2VDYXJkXCJcbiAgICAgICAgICAgIFtzcmNdPVwidXJsXCJcbiAgICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCInLmltYWdlJ1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0IH1cIlxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBhbHQ9XCJJbWFnZUNhcmRcIlxuICAgICAgICAgICAgc3JjPVwiLi4vLi4vLi4vLi4vYXNzZXRzL2ltYWdlcy9wZGYtZmlsZS5wbmdcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIicucGRmJ1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7IGhlaWdodDogaGVpZ2h0IH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgYWx0PVwiSW1hZ2VDYXJkXCJcbiAgICAgICAgICAgIHNyYz1cIi4uLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMveGxzLnBuZ1wiXG4gICAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiJy5leGNlbCdcIlxuICAgICAgICAgICAgW25nU3R5bGVdPVwieyBoZWlnaHQ6IGhlaWdodCB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgIGFsdD1cIkltYWdlQ2FyZFwiXG4gICAgICAgICAgICBzcmM9XCIuLi8uLi8uLi8uLi9hc3NldHMvaW1hZ2VzL2RvYy5wbmdcIlxuICAgICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgICBbaWRdPVwiaWRcIlxuICAgICAgICAgICAgKm5nU3dpdGNoQ2FzZT1cIicuZG9jdW1lbnQnXCJcbiAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgaGVpZ2h0OiBoZWlnaHQgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gRW5kIGltYWdlIGZpbGUgdHlwZSBjYXNlcyAtLT5cblxuICAgICAgICA8IS0tIHN0YXJ0IGNhcHRpb24gZnVuY3Rpb25hbGl0eS0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZWRpdC1jYXB0aW9uXCI+XG4gICAgICAgICAgPGg0XG4gICAgICAgICAgICBjbGFzcz1cImV4YW1wbGUtYm94XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjYXB0aW9uQ2xpY2tFdmVudCgpXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWVkaXRhYmxlQ2FwdGlvblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgY2FwdGlvbiB9fVxuICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicC1kLWZsZXggcC1mbGV4LWNvbHVtbiBwLWFpLWVuZFwiIFxuICAgICAgICAgICpuZ0lmPVwiZWRpdGFibGVDYXB0aW9uICYmIGFsbG93RWRpdGFibGVDYXB0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBuYW1lPVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY2FwdGlvblwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgKGJsdXIpPVwiY2FwdGlvblNhdmUoaWQsIG5hbWUsIHVybCwgdHlwZSwgY2FwdGlvbilcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uc1wiPlxuICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgIGNsYXNzPVwicGkgcGktY2hlY2tcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjYXB0aW9uU2F2ZShpZCwgbmFtZSwgdXJsLCB0eXBlLCBjYXB0aW9uKVwiXG4gICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwicGkgcGktdGltZXNcIiAoY2xpY2spPVwiY2FuY2VsKClcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEVuZCBjYXB0aW9uIGZ1bmN0aW9uYWxpdHktLT5cblxuICAgICAgICAgIDwhLS0gc3RhcnQgaGVhZGVyIGFjdGlvbiBidXR0b24gZnVuY3Rpb25hbGl0eSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWFycm93LWNpcmNsZS1kb3duXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZSh1cmwpXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLXRleHRcIlxuICAgICAgICAgICAgICAqbmdJZj1cImFsbG93RG93bmxvYWRGaWxlXCJcbiAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRyYXNoXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlRmlsZShpZCwgbmFtZSwgdXJsLCB0eXBlLCBjYXB0aW9uKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi10ZXh0XCJcbiAgICAgICAgICAgICAgKm5nSWY9XCJhbGxvd0RlbGV0ZUZpbGVcIlxuICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwhLS0gRW5kIGhlYWRlciBhY3Rpb24gYnV0dG9uIGZ1bmN0aW9uYWxpdHkgLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9wLWNhcmQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|