@churchillliving/se-ui-toolkit 6.53.562 → 6.53.564

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.
Files changed (143) hide show
  1. package/README.md +28 -28
  2. package/{esm2015/churchillliving-se-ui-toolkit.js → esm2022/churchillliving-se-ui-toolkit.mjs} +4 -4
  3. package/esm2022/lib/components/base/alert-pop-up/alert-pop-up.component.mjs +36 -0
  4. package/esm2022/lib/components/base/caption/caption.component.mjs +73 -0
  5. package/esm2022/lib/components/base/cards/card.component.mjs +156 -0
  6. package/esm2022/lib/components/base/file/file.component.mjs +125 -0
  7. package/esm2022/lib/components/base/file-upload/file-upload.component.mjs +71 -0
  8. package/esm2022/lib/components/base/filter/filter.component.mjs +57 -0
  9. package/esm2022/lib/components/base/form/form.component.mjs +1144 -0
  10. package/esm2022/lib/components/base/form-util/form-util.component.mjs +1145 -0
  11. package/esm2022/lib/components/base/grid/grid.component.mjs +2674 -0
  12. package/{esm2015/lib/components/base/grid/grid.constant.js → esm2022/lib/components/base/grid/grid.constant.mjs} +26 -26
  13. package/esm2022/lib/components/base/grid-row-actions/grid-row-actions.component.mjs +59 -0
  14. package/esm2022/lib/components/base/header/header.component.mjs +100 -0
  15. package/{esm2015/lib/components/base/iframe/iframe.component.js → esm2022/lib/components/base/iframe/iframe.component.mjs} +44 -48
  16. package/esm2022/lib/components/base/image-gallery/image-gallery.component.mjs +34 -0
  17. package/esm2022/lib/components/base/loader/loader.component.mjs +36 -0
  18. package/esm2022/lib/components/base/menu-bar/menu-bar.component.mjs +130 -0
  19. package/esm2022/lib/components/base/report/report-Filter/report-filter/report-filter.component.mjs +120 -0
  20. package/esm2022/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.mjs +31 -0
  21. package/esm2022/lib/components/base/sidebar/sidebar.component.mjs +336 -0
  22. package/esm2022/lib/components/shared/dropdown/dropdown.component.mjs +37 -0
  23. package/esm2022/lib/components/shared/filter-menu/filter-menu.component.mjs +30 -0
  24. package/esm2022/lib/components/shared/global-filters/global-filters.component.mjs +494 -0
  25. package/esm2022/lib/components/shared/notes/notes.component.mjs +32 -0
  26. package/esm2022/lib/directive/add-row.directive.mjs +39 -0
  27. package/{esm2015/lib/models/common.model.js → esm2022/lib/models/common.model.mjs} +2 -2
  28. package/esm2022/lib/models/form.model.mjs +97 -0
  29. package/esm2022/lib/models/grid.model.mjs +121 -0
  30. package/esm2022/lib/models/header.model.mjs +19 -0
  31. package/{esm2015/lib/models/menu.model.js → esm2022/lib/models/menu.model.mjs} +2 -2
  32. package/esm2022/lib/models/request.model.mjs +2 -0
  33. package/{esm2015/lib/models/response.model.js → esm2022/lib/models/response.model.mjs} +2 -2
  34. package/esm2022/lib/models/sidebar.model.mjs +11 -0
  35. package/{esm2015/lib/models/user-info.model.js → esm2022/lib/models/user-info.model.mjs} +9 -9
  36. package/esm2022/lib/se-ui-toolkit.module.mjs +247 -0
  37. package/{esm2015/lib/services/alert.service.js → esm2022/lib/services/alert.service.mjs} +77 -77
  38. package/{esm2015/lib/services/authentication.service.js → esm2022/lib/services/authentication.service.mjs} +52 -52
  39. package/esm2022/lib/services/card.service.mjs +98 -0
  40. package/{esm2015/lib/services/dropdown.service.js → esm2022/lib/services/dropdown.service.mjs} +69 -69
  41. package/esm2022/lib/services/form.service.mjs +451 -0
  42. package/esm2022/lib/services/grid.service.mjs +1333 -0
  43. package/{esm2015/lib/services/header.service.js → esm2022/lib/services/header.service.mjs} +61 -61
  44. package/esm2022/lib/services/hyperlink.service.mjs +143 -0
  45. package/{esm2015/lib/services/loader.service.js → esm2022/lib/services/loader.service.mjs} +36 -36
  46. package/{esm2015/lib/services/page-logger.service.js → esm2022/lib/services/page-logger.service.mjs} +25 -25
  47. package/esm2022/lib/services/report.service.mjs +158 -0
  48. package/{esm2015/lib/services/request.service.js → esm2022/lib/services/request.service.mjs} +48 -48
  49. package/esm2022/lib/services/sidebar.service.mjs +57 -0
  50. package/esm2022/lib/services/utilities.service.mjs +1033 -0
  51. package/{esm2015/public-api.js → esm2022/public-api.mjs} +58 -58
  52. package/fesm2022/churchillliving-se-ui-toolkit.mjs +10874 -0
  53. package/fesm2022/churchillliving-se-ui-toolkit.mjs.map +1 -0
  54. package/{churchillliving-se-ui-toolkit.d.ts → index.d.ts} +5 -5
  55. package/lib/components/base/alert-pop-up/alert-pop-up.component.d.ts +15 -15
  56. package/lib/components/base/caption/caption.component.d.ts +24 -24
  57. package/lib/components/base/cards/card.component.d.ts +31 -31
  58. package/lib/components/base/file/file.component.d.ts +29 -29
  59. package/lib/components/base/file-upload/file-upload.component.d.ts +19 -19
  60. package/lib/components/base/filter/filter.component.d.ts +24 -24
  61. package/lib/components/base/form/form.component.d.ts +174 -174
  62. package/lib/components/base/form-util/form-util.component.d.ts +172 -172
  63. package/lib/components/base/grid/grid.component.d.ts +393 -394
  64. package/lib/components/base/grid/grid.constant.d.ts +2 -2
  65. package/lib/components/base/grid-row-actions/grid-row-actions.component.d.ts +23 -23
  66. package/lib/components/base/header/header.component.d.ts +20 -20
  67. package/lib/components/base/iframe/iframe.component.d.ts +18 -18
  68. package/lib/components/base/image-gallery/image-gallery.component.d.ts +9 -9
  69. package/lib/components/base/loader/loader.component.d.ts +16 -16
  70. package/lib/components/base/menu-bar/menu-bar.component.d.ts +37 -37
  71. package/lib/components/base/report/report-Filter/report-filter/report-filter.component.d.ts +25 -25
  72. package/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.d.ts +17 -17
  73. package/lib/components/base/sidebar/sidebar.component.d.ts +69 -69
  74. package/lib/components/shared/dropdown/dropdown.component.d.ts +16 -16
  75. package/lib/components/shared/filter-menu/filter-menu.component.d.ts +14 -14
  76. package/lib/components/shared/global-filters/global-filters.component.d.ts +88 -88
  77. package/lib/components/shared/notes/notes.component.d.ts +15 -15
  78. package/lib/directive/add-row.directive.d.ts +10 -10
  79. package/lib/models/common.model.d.ts +9 -9
  80. package/lib/models/form.model.d.ts +348 -348
  81. package/lib/models/grid.model.d.ts +491 -491
  82. package/lib/models/header.model.d.ts +72 -72
  83. package/lib/models/menu.model.d.ts +7 -7
  84. package/lib/models/request.model.d.ts +13 -13
  85. package/lib/models/response.model.d.ts +10 -10
  86. package/lib/models/sidebar.model.d.ts +44 -44
  87. package/lib/models/user-info.model.d.ts +25 -25
  88. package/lib/se-ui-toolkit.module.d.ts +64 -64
  89. package/lib/services/alert.service.d.ts +25 -25
  90. package/lib/services/authentication.service.d.ts +11 -11
  91. package/lib/services/card.service.d.ts +20 -18
  92. package/lib/services/dropdown.service.d.ts +18 -18
  93. package/lib/services/form.service.d.ts +50 -50
  94. package/lib/services/grid.service.d.ts +122 -122
  95. package/lib/services/header.service.d.ts +14 -14
  96. package/lib/services/hyperlink.service.d.ts +19 -19
  97. package/lib/services/loader.service.d.ts +21 -21
  98. package/lib/services/page-logger.service.d.ts +9 -9
  99. package/lib/services/report.service.d.ts +21 -21
  100. package/lib/services/request.service.d.ts +19 -19
  101. package/lib/services/sidebar.service.d.ts +21 -21
  102. package/lib/services/utilities.service.d.ts +64 -64
  103. package/package.json +21 -14
  104. package/public-api.d.ts +54 -54
  105. package/bundles/churchillliving-se-ui-toolkit.umd.js +0 -12169
  106. package/bundles/churchillliving-se-ui-toolkit.umd.js.map +0 -1
  107. package/esm2015/lib/components/base/alert-pop-up/alert-pop-up.component.js +0 -41
  108. package/esm2015/lib/components/base/caption/caption.component.js +0 -77
  109. package/esm2015/lib/components/base/cards/card.component.js +0 -164
  110. package/esm2015/lib/components/base/file/file.component.js +0 -129
  111. package/esm2015/lib/components/base/file-upload/file-upload.component.js +0 -77
  112. package/esm2015/lib/components/base/filter/filter.component.js +0 -60
  113. package/esm2015/lib/components/base/form/form.component.js +0 -1168
  114. package/esm2015/lib/components/base/form-util/form-util.component.js +0 -1166
  115. package/esm2015/lib/components/base/grid/grid.component.js +0 -2738
  116. package/esm2015/lib/components/base/grid-row-actions/grid-row-actions.component.js +0 -63
  117. package/esm2015/lib/components/base/header/header.component.js +0 -105
  118. package/esm2015/lib/components/base/image-gallery/image-gallery.component.js +0 -38
  119. package/esm2015/lib/components/base/loader/loader.component.js +0 -40
  120. package/esm2015/lib/components/base/menu-bar/menu-bar.component.js +0 -129
  121. package/esm2015/lib/components/base/report/report-Filter/report-filter/report-filter.component.js +0 -133
  122. package/esm2015/lib/components/base/report/reportGenerateBtn/generate-report-btn/generate-report-btn.component.js +0 -35
  123. package/esm2015/lib/components/base/sidebar/sidebar.component.js +0 -350
  124. package/esm2015/lib/components/shared/dropdown/dropdown.component.js +0 -41
  125. package/esm2015/lib/components/shared/filter-menu/filter-menu.component.js +0 -34
  126. package/esm2015/lib/components/shared/global-filters/global-filters.component.js +0 -507
  127. package/esm2015/lib/components/shared/notes/notes.component.js +0 -37
  128. package/esm2015/lib/directive/add-row.directive.js +0 -31
  129. package/esm2015/lib/models/form.model.js +0 -97
  130. package/esm2015/lib/models/grid.model.js +0 -121
  131. package/esm2015/lib/models/header.model.js +0 -19
  132. package/esm2015/lib/models/request.model.js +0 -2
  133. package/esm2015/lib/models/sidebar.model.js +0 -11
  134. package/esm2015/lib/se-ui-toolkit.module.js +0 -256
  135. package/esm2015/lib/services/card.service.js +0 -99
  136. package/esm2015/lib/services/form.service.js +0 -460
  137. package/esm2015/lib/services/grid.service.js +0 -1357
  138. package/esm2015/lib/services/hyperlink.service.js +0 -156
  139. package/esm2015/lib/services/report.service.js +0 -161
  140. package/esm2015/lib/services/sidebar.service.js +0 -60
  141. package/esm2015/lib/services/utilities.service.js +0 -1078
  142. package/fesm2015/churchillliving-se-ui-toolkit.js +0 -11189
  143. 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
@@ -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=