@es.framework/ng.ui.core 2.0.58

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 (246) hide show
  1. package/README.md +3 -0
  2. package/attachments/README.md +3 -0
  3. package/base-crud/README.md +3 -0
  4. package/breadcrumb/README.md +3 -0
  5. package/checkbox/README.md +3 -0
  6. package/collapsible/README.md +3 -0
  7. package/color-picker/README.md +3 -0
  8. package/column-settings-popover/README.md +3 -0
  9. package/custom-switch/README.md +3 -0
  10. package/datepicker/README.md +3 -0
  11. package/deactivation-reason/README.md +3 -0
  12. package/excel-import/README.md +3 -0
  13. package/fesm2022/es.framework-ng.ui.core-attachments.mjs +217 -0
  14. package/fesm2022/es.framework-ng.ui.core-attachments.mjs.map +1 -0
  15. package/fesm2022/es.framework-ng.ui.core-base-crud.mjs +370 -0
  16. package/fesm2022/es.framework-ng.ui.core-base-crud.mjs.map +1 -0
  17. package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs +145 -0
  18. package/fesm2022/es.framework-ng.ui.core-breadcrumb.mjs.map +1 -0
  19. package/fesm2022/es.framework-ng.ui.core-checkbox.mjs +131 -0
  20. package/fesm2022/es.framework-ng.ui.core-checkbox.mjs.map +1 -0
  21. package/fesm2022/es.framework-ng.ui.core-collapsible.mjs +90 -0
  22. package/fesm2022/es.framework-ng.ui.core-collapsible.mjs.map +1 -0
  23. package/fesm2022/es.framework-ng.ui.core-color-picker.mjs +87 -0
  24. package/fesm2022/es.framework-ng.ui.core-color-picker.mjs.map +1 -0
  25. package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs +183 -0
  26. package/fesm2022/es.framework-ng.ui.core-column-settings-popover.mjs.map +1 -0
  27. package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs +119 -0
  28. package/fesm2022/es.framework-ng.ui.core-custom-switch.mjs.map +1 -0
  29. package/fesm2022/es.framework-ng.ui.core-datepicker.mjs +519 -0
  30. package/fesm2022/es.framework-ng.ui.core-datepicker.mjs.map +1 -0
  31. package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs +144 -0
  32. package/fesm2022/es.framework-ng.ui.core-deactivation-reason.mjs.map +1 -0
  33. package/fesm2022/es.framework-ng.ui.core-excel-import.mjs +566 -0
  34. package/fesm2022/es.framework-ng.ui.core-excel-import.mjs.map +1 -0
  35. package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs +386 -0
  36. package/fesm2022/es.framework-ng.ui.core-filter-templates.mjs.map +1 -0
  37. package/fesm2022/es.framework-ng.ui.core-form-button.mjs +62 -0
  38. package/fesm2022/es.framework-ng.ui.core-form-button.mjs.map +1 -0
  39. package/fesm2022/es.framework-ng.ui.core-form-field.mjs +155 -0
  40. package/fesm2022/es.framework-ng.ui.core-form-field.mjs.map +1 -0
  41. package/fesm2022/es.framework-ng.ui.core-form-template.mjs +37 -0
  42. package/fesm2022/es.framework-ng.ui.core-form-template.mjs.map +1 -0
  43. package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs +132 -0
  44. package/fesm2022/es.framework-ng.ui.core-formly-avatar-image.mjs.map +1 -0
  45. package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs +89 -0
  46. package/fesm2022/es.framework-ng.ui.core-formly-avatar-label.mjs.map +1 -0
  47. package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs +195 -0
  48. package/fesm2022/es.framework-ng.ui.core-formly-button-selector.mjs.map +1 -0
  49. package/fesm2022/es.framework-ng.ui.core-formly-button.mjs +73 -0
  50. package/fesm2022/es.framework-ng.ui.core-formly-button.mjs.map +1 -0
  51. package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs +201 -0
  52. package/fesm2022/es.framework-ng.ui.core-formly-presets.mjs.map +1 -0
  53. package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs +542 -0
  54. package/fesm2022/es.framework-ng.ui.core-formly-prime-icon-picker.mjs.map +1 -0
  55. package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs +62 -0
  56. package/fesm2022/es.framework-ng.ui.core-formly-split-button.mjs.map +1 -0
  57. package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs +422 -0
  58. package/fesm2022/es.framework-ng.ui.core-formly-ui-all.mjs.map +1 -0
  59. package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs +48 -0
  60. package/fesm2022/es.framework-ng.ui.core-formly-ui.mjs.map +1 -0
  61. package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs +85 -0
  62. package/fesm2022/es.framework-ng.ui.core-formly-username-with-domain.mjs.map +1 -0
  63. package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs +22 -0
  64. package/fesm2022/es.framework-ng.ui.core-generic-assets.mjs.map +1 -0
  65. package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs +173 -0
  66. package/fesm2022/es.framework-ng.ui.core-generic-autocomplete.mjs.map +1 -0
  67. package/fesm2022/es.framework-ng.ui.core-generic-button.mjs +150 -0
  68. package/fesm2022/es.framework-ng.ui.core-generic-button.mjs.map +1 -0
  69. package/fesm2022/es.framework-ng.ui.core-generic-card.mjs +218 -0
  70. package/fesm2022/es.framework-ng.ui.core-generic-card.mjs.map +1 -0
  71. package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs +929 -0
  72. package/fesm2022/es.framework-ng.ui.core-generic-crud-table.mjs.map +1 -0
  73. package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs +321 -0
  74. package/fesm2022/es.framework-ng.ui.core-generic-dialog.mjs.map +1 -0
  75. package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs +35 -0
  76. package/fesm2022/es.framework-ng.ui.core-generic-errormessage.mjs.map +1 -0
  77. package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs +63 -0
  78. package/fesm2022/es.framework-ng.ui.core-generic-formly-fields.mjs.map +1 -0
  79. package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs +34 -0
  80. package/fesm2022/es.framework-ng.ui.core-generic-loadingspinner.mjs.map +1 -0
  81. package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs +196 -0
  82. package/fesm2022/es.framework-ng.ui.core-generic-report-tabs.mjs.map +1 -0
  83. package/fesm2022/es.framework-ng.ui.core-generic-report.mjs +556 -0
  84. package/fesm2022/es.framework-ng.ui.core-generic-report.mjs.map +1 -0
  85. package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs +2995 -0
  86. package/fesm2022/es.framework-ng.ui.core-generic-search-advanced.mjs.map +1 -0
  87. package/fesm2022/es.framework-ng.ui.core-generic-search.mjs +103 -0
  88. package/fesm2022/es.framework-ng.ui.core-generic-search.mjs.map +1 -0
  89. package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs +684 -0
  90. package/fesm2022/es.framework-ng.ui.core-generic-selector.mjs.map +1 -0
  91. package/fesm2022/es.framework-ng.ui.core-generic-table.mjs +388 -0
  92. package/fesm2022/es.framework-ng.ui.core-generic-table.mjs.map +1 -0
  93. package/fesm2022/es.framework-ng.ui.core-generic-view.mjs +465 -0
  94. package/fesm2022/es.framework-ng.ui.core-generic-view.mjs.map +1 -0
  95. package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs +31 -0
  96. package/fesm2022/es.framework-ng.ui.core-header-wrapper.mjs.map +1 -0
  97. package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs +205 -0
  98. package/fesm2022/es.framework-ng.ui.core-icon-picker.mjs.map +1 -0
  99. package/fesm2022/es.framework-ng.ui.core-input-switch.mjs +102 -0
  100. package/fesm2022/es.framework-ng.ui.core-input-switch.mjs.map +1 -0
  101. package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs +67 -0
  102. package/fesm2022/es.framework-ng.ui.core-input-with-icon.mjs.map +1 -0
  103. package/fesm2022/es.framework-ng.ui.core-input.mjs +250 -0
  104. package/fesm2022/es.framework-ng.ui.core-input.mjs.map +1 -0
  105. package/fesm2022/es.framework-ng.ui.core-label-type.mjs +184 -0
  106. package/fesm2022/es.framework-ng.ui.core-label-type.mjs.map +1 -0
  107. package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs +66 -0
  108. package/fesm2022/es.framework-ng.ui.core-loading-skeletons.mjs.map +1 -0
  109. package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs +307 -0
  110. package/fesm2022/es.framework-ng.ui.core-odata-query-builder.mjs.map +1 -0
  111. package/fesm2022/es.framework-ng.ui.core-query-type.mjs +162 -0
  112. package/fesm2022/es.framework-ng.ui.core-query-type.mjs.map +1 -0
  113. package/fesm2022/es.framework-ng.ui.core-radio.mjs +120 -0
  114. package/fesm2022/es.framework-ng.ui.core-radio.mjs.map +1 -0
  115. package/fesm2022/es.framework-ng.ui.core-repeat.mjs +290 -0
  116. package/fesm2022/es.framework-ng.ui.core-repeat.mjs.map +1 -0
  117. package/fesm2022/es.framework-ng.ui.core-select.mjs +179 -0
  118. package/fesm2022/es.framework-ng.ui.core-select.mjs.map +1 -0
  119. package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs +52 -0
  120. package/fesm2022/es.framework-ng.ui.core-sidebar-cards.mjs.map +1 -0
  121. package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs +53 -0
  122. package/fesm2022/es.framework-ng.ui.core-sidebar-toggles.mjs.map +1 -0
  123. package/fesm2022/es.framework-ng.ui.core-tabs.mjs +57 -0
  124. package/fesm2022/es.framework-ng.ui.core-tabs.mjs.map +1 -0
  125. package/fesm2022/es.framework-ng.ui.core-tag-type.mjs +209 -0
  126. package/fesm2022/es.framework-ng.ui.core-tag-type.mjs.map +1 -0
  127. package/fesm2022/es.framework-ng.ui.core-text-editor.mjs +58 -0
  128. package/fesm2022/es.framework-ng.ui.core-text-editor.mjs.map +1 -0
  129. package/fesm2022/es.framework-ng.ui.core-textarea.mjs +93 -0
  130. package/fesm2022/es.framework-ng.ui.core-textarea.mjs.map +1 -0
  131. package/fesm2022/es.framework-ng.ui.core-wrappers.mjs +245 -0
  132. package/fesm2022/es.framework-ng.ui.core-wrappers.mjs.map +1 -0
  133. package/fesm2022/es.framework-ng.ui.core.mjs +20 -0
  134. package/fesm2022/es.framework-ng.ui.core.mjs.map +1 -0
  135. package/filter-templates/README.md +3 -0
  136. package/form-button/README.md +3 -0
  137. package/form-field/README.md +3 -0
  138. package/form-template/README.md +3 -0
  139. package/formly-avatar-image/README.md +3 -0
  140. package/formly-avatar-label/README.md +3 -0
  141. package/formly-button/README.md +3 -0
  142. package/formly-button-selector/README.md +3 -0
  143. package/formly-presets/README.md +3 -0
  144. package/formly-prime-icon-picker/README.md +3 -0
  145. package/formly-split-button/README.md +3 -0
  146. package/formly-ui/README.md +3 -0
  147. package/formly-ui-all/README.md +3 -0
  148. package/formly-username-with-domain/README.md +3 -0
  149. package/generic-assets/README.md +3 -0
  150. package/generic-autocomplete/README.md +3 -0
  151. package/generic-button/README.md +3 -0
  152. package/generic-card/README.md +3 -0
  153. package/generic-crud-table/README.md +3 -0
  154. package/generic-dialog/README.md +3 -0
  155. package/generic-errormessage/README.md +3 -0
  156. package/generic-formly-fields/README.md +3 -0
  157. package/generic-loadingspinner/README.md +3 -0
  158. package/generic-report/README.md +3 -0
  159. package/generic-report-tabs/README.md +0 -0
  160. package/generic-search/README.md +3 -0
  161. package/generic-search-advanced/README.md +3 -0
  162. package/generic-selector/README.md +3 -0
  163. package/generic-table/README.md +3 -0
  164. package/generic-view/README.md +3 -0
  165. package/header-wrapper/README.md +3 -0
  166. package/icon-picker/README.md +3 -0
  167. package/input/README.md +3 -0
  168. package/input-switch/README.md +3 -0
  169. package/input-with-icon/README.md +3 -0
  170. package/label-type/README.md +3 -0
  171. package/loading-skeletons/README.md +3 -0
  172. package/odata-query-builder/README.md +3 -0
  173. package/package.json +264 -0
  174. package/query-type/README.md +3 -0
  175. package/radio/README.md +3 -0
  176. package/repeat/README.md +3 -0
  177. package/select/README.md +3 -0
  178. package/sidebar-cards/README.md +3 -0
  179. package/sidebar-toggles/README.md +3 -0
  180. package/styles.css +2 -0
  181. package/tabs/README.md +3 -0
  182. package/tag-type/README.md +3 -0
  183. package/text-editor/README.md +3 -0
  184. package/textarea/README.md +3 -0
  185. package/types/es.framework-ng.ui.core-attachments.d.ts +38 -0
  186. package/types/es.framework-ng.ui.core-base-crud.d.ts +74 -0
  187. package/types/es.framework-ng.ui.core-breadcrumb.d.ts +17 -0
  188. package/types/es.framework-ng.ui.core-checkbox.d.ts +33 -0
  189. package/types/es.framework-ng.ui.core-collapsible.d.ts +18 -0
  190. package/types/es.framework-ng.ui.core-color-picker.d.ts +16 -0
  191. package/types/es.framework-ng.ui.core-column-settings-popover.d.ts +46 -0
  192. package/types/es.framework-ng.ui.core-custom-switch.d.ts +19 -0
  193. package/types/es.framework-ng.ui.core-datepicker.d.ts +23 -0
  194. package/types/es.framework-ng.ui.core-deactivation-reason.d.ts +32 -0
  195. package/types/es.framework-ng.ui.core-excel-import.d.ts +69 -0
  196. package/types/es.framework-ng.ui.core-filter-templates.d.ts +57 -0
  197. package/types/es.framework-ng.ui.core-form-button.d.ts +17 -0
  198. package/types/es.framework-ng.ui.core-form-field.d.ts +30 -0
  199. package/types/es.framework-ng.ui.core-form-template.d.ts +16 -0
  200. package/types/es.framework-ng.ui.core-formly-avatar-image.d.ts +18 -0
  201. package/types/es.framework-ng.ui.core-formly-avatar-label.d.ts +36 -0
  202. package/types/es.framework-ng.ui.core-formly-button-selector.d.ts +35 -0
  203. package/types/es.framework-ng.ui.core-formly-button.d.ts +20 -0
  204. package/types/es.framework-ng.ui.core-formly-presets.d.ts +37 -0
  205. package/types/es.framework-ng.ui.core-formly-prime-icon-picker.d.ts +45 -0
  206. package/types/es.framework-ng.ui.core-formly-split-button.d.ts +23 -0
  207. package/types/es.framework-ng.ui.core-formly-ui-all.d.ts +40 -0
  208. package/types/es.framework-ng.ui.core-formly-ui.d.ts +13 -0
  209. package/types/es.framework-ng.ui.core-formly-username-with-domain.d.ts +19 -0
  210. package/types/es.framework-ng.ui.core-generic-assets.d.ts +10 -0
  211. package/types/es.framework-ng.ui.core-generic-autocomplete.d.ts +41 -0
  212. package/types/es.framework-ng.ui.core-generic-button.d.ts +39 -0
  213. package/types/es.framework-ng.ui.core-generic-card.d.ts +93 -0
  214. package/types/es.framework-ng.ui.core-generic-crud-table.d.ts +293 -0
  215. package/types/es.framework-ng.ui.core-generic-dialog.d.ts +93 -0
  216. package/types/es.framework-ng.ui.core-generic-errormessage.d.ts +17 -0
  217. package/types/es.framework-ng.ui.core-generic-formly-fields.d.ts +26 -0
  218. package/types/es.framework-ng.ui.core-generic-loadingspinner.d.ts +16 -0
  219. package/types/es.framework-ng.ui.core-generic-report-tabs.d.ts +21 -0
  220. package/types/es.framework-ng.ui.core-generic-report.d.ts +121 -0
  221. package/types/es.framework-ng.ui.core-generic-search-advanced.d.ts +305 -0
  222. package/types/es.framework-ng.ui.core-generic-search.d.ts +36 -0
  223. package/types/es.framework-ng.ui.core-generic-selector.d.ts +99 -0
  224. package/types/es.framework-ng.ui.core-generic-table.d.ts +84 -0
  225. package/types/es.framework-ng.ui.core-generic-view.d.ts +97 -0
  226. package/types/es.framework-ng.ui.core-header-wrapper.d.ts +15 -0
  227. package/types/es.framework-ng.ui.core-icon-picker.d.ts +30 -0
  228. package/types/es.framework-ng.ui.core-input-switch.d.ts +16 -0
  229. package/types/es.framework-ng.ui.core-input-with-icon.d.ts +17 -0
  230. package/types/es.framework-ng.ui.core-input.d.ts +47 -0
  231. package/types/es.framework-ng.ui.core-label-type.d.ts +38 -0
  232. package/types/es.framework-ng.ui.core-loading-skeletons.d.ts +17 -0
  233. package/types/es.framework-ng.ui.core-odata-query-builder.d.ts +87 -0
  234. package/types/es.framework-ng.ui.core-query-type.d.ts +37 -0
  235. package/types/es.framework-ng.ui.core-radio.d.ts +38 -0
  236. package/types/es.framework-ng.ui.core-repeat.d.ts +31 -0
  237. package/types/es.framework-ng.ui.core-select.d.ts +42 -0
  238. package/types/es.framework-ng.ui.core-sidebar-cards.d.ts +25 -0
  239. package/types/es.framework-ng.ui.core-sidebar-toggles.d.ts +25 -0
  240. package/types/es.framework-ng.ui.core-tabs.d.ts +17 -0
  241. package/types/es.framework-ng.ui.core-tag-type.d.ts +34 -0
  242. package/types/es.framework-ng.ui.core-text-editor.d.ts +16 -0
  243. package/types/es.framework-ng.ui.core-textarea.d.ts +36 -0
  244. package/types/es.framework-ng.ui.core-wrappers.d.ts +36 -0
  245. package/types/es.framework-ng.ui.core.d.ts +8 -0
  246. package/wrappers/README.md +3 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es.framework-ng.ui.core-generic-report.mjs","sources":["../../../../libs/ng.ui.core/generic-report/src/lib/generic-report-module.ts","../../../../libs/ng.ui.core/generic-report/src/lib/report-name-dialog.component.ts","../../../../libs/ng.ui.core/generic-report/src/lib/generic-report.component.ts","../../../../libs/ng.ui.core/generic-report/src/lib/generic-report.component.html","../../../../libs/ng.ui.core/generic-report/src/es.framework-ng.ui.core-generic-report.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\n@NgModule({\n imports: [CommonModule],\n})\nexport class GenericReportModule {}\n","// report-name-dialog.component.ts\r\nimport { Component, inject } from '@angular/core';\r\n\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { LocalizationService } from '@es.framework/ng.core/services';\r\n\r\n@Component({\r\n selector: 'app-report-name-dialog',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n TranslatePipe,\r\n ButtonModule,\r\n InputTextModule\r\n],\r\n template: `\r\n <div class=\"p-fluid\">\r\n <div class=\"field\">\r\n <label for=\"fileName\" class=\"block text-sm font-medium mb-2\">\r\n {{ 'REPORT_NAME' | translate }}\r\n </label>\r\n <input\r\n id=\"fileName\"\r\n type=\"text\"\r\n [(ngModel)]=\"fileName\"\r\n pInputText\r\n class=\"w-full\"\r\n [placeholder]=\"'ENTER_REPORT_NAME' | translate\"\r\n autofocus>\r\n </div>\r\n </div>\r\n\r\n <div class=\"flex justify-end gap-2 mt-4\">\r\n <button\r\n type=\"button\"\r\n pButton\r\n class=\"p-button-text\"\r\n (click)=\"ref.close()\"\r\n [label]=\"'CANCEL' | translate\">\r\n </button>\r\n <button\r\n type=\"button\"\r\n pButton\r\n (click)=\"save()\"\r\n [label]=\"'SAVE' | translate\">\r\n </button>\r\n </div>\r\n `\r\n})\r\nexport class ReportNameDialogComponent {\r\n fileName: string = '';\r\n\r\n ref = inject(DynamicDialogRef);\r\n config = inject(DynamicDialogConfig);\r\n translate = inject(LocalizationService);\r\n\r\n ngOnInit() {\r\n this.fileName = this.config.data?.fileName || '';\r\n }\r\n\r\n save() {\r\n if (this.fileName?.trim()) {\r\n this.ref.close(this.fileName.trim());\r\n }\r\n }\r\n}\r\n","\r\nimport { Component, inject, OnInit, ViewChild, ElementRef, Input, OnDestroy } from '@angular/core';\r\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { FormlyFieldConfig, FormlyFormOptions, FormlyForm } from '@ngx-formly/core';\r\nimport { TranslatePipe } from '@es.framework/ng.core/pipes';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { InputTextModule } from 'primeng/inputtext';\r\nimport { RadioButtonModule } from 'primeng/radiobutton';\r\nimport { CheckboxModule } from 'primeng/checkbox';\r\nimport { DynamicDialogRef, DynamicDialogConfig, DialogService } from 'primeng/dynamicdialog';\r\nimport { LocalizationService, RestService } from '@es.framework/ng.core/services';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { DrawerModule } from 'primeng/drawer';\r\nimport { TableModule } from 'primeng/table';\r\nimport { SplitButtonModule } from 'primeng/splitbutton';\r\nimport { MenuItem } from 'primeng/api';\r\nimport { TooltipModule } from 'primeng/tooltip';\r\nimport { ReportNameDialogComponent } from './report-name-dialog.component';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\r\nimport { QueryBuilderService } from '@es.framework/ng.ui.core/generic-search-advanced';\r\n\r\nexport interface ExportConfig {\r\n filters: any;\r\n exportType: ExportType;\r\n fileName?: string;\r\n}\r\n\r\nexport enum ExportType {\r\n LIST,\r\n HTML,\r\n PDF,\r\n EXCEL,\r\n PRINT\r\n}\r\n\r\n@Component({\r\n selector: 'app-generic-report',\r\n templateUrl: './generic-report.component.html',\r\n imports: [\r\n ReactiveFormsModule,\r\n FormsModule,\r\n TranslatePipe,\r\n ButtonModule,\r\n DialogModule,\r\n InputTextModule,\r\n RadioButtonModule,\r\n CheckboxModule,\r\n DrawerModule,\r\n FormlyForm,\r\n TableModule,\r\n SplitButtonModule,\r\n TooltipModule\r\n],\r\n providers:[DialogService,RestService]\r\n})\r\nexport class GenericReportComponent implements OnInit, OnDestroy {\r\n @ViewChild('previewContainer') previewContainer!: ElementRef;\r\n\r\n @Input() filterFields: FormlyFieldConfig[] = [];\r\n fields_: FormlyFieldConfig[] = [];\r\n exportType: ExportType = ExportType.PDF;\r\n fileName: string = '';\r\n showFilters: boolean = false;\r\n loading: boolean = false;\r\n currentDate: Date = new Date();\r\n previewData: any[] = [];\r\n htmlExportContent: string = '';\r\n showHtmlInIframe: boolean = false;\r\n previewColumns: any[] = [];\r\n\r\n options: FormlyFormOptions = {};\r\n @Input() enableQueryBuilder: boolean = true;\r\n @Input() localExport: boolean = false;\r\n @Input() queryString: string = '';\r\n @Input() apiName: string = '';\r\n @Input() moduleName: string = '';\r\n\r\n @Input() model: any = {};\r\n form = new FormGroup({});\r\n exportConfig!: ExportConfig;\r\n\r\n exportTypes = [\r\n { value: ExportType.EXCEL, label: 'EXCEL', icon: 'pi pi-file-excel' },\r\n { value: ExportType.PDF, label: 'PDF', icon: 'pi pi-file-pdf' },\r\n { value: ExportType.HTML, label: 'HTML', icon: 'pi pi-code' },\r\n { value: ExportType.PRINT, label: 'PRINT', icon: 'pi pi-print' }\r\n ];\r\n\r\n exportMenuItems: MenuItem[] = [];\r\n\r\n private destroy$ = new Subject<void>();\r\n private dialogService:DialogService = inject(DialogService);\r\n private translate = inject(LocalizationService);\r\n private restService: RestService = inject(RestService);\r\n private queryBuilder = inject(QueryBuilderService);\r\nprivate sanitizer: DomSanitizer = inject(DomSanitizer);\r\n constructor(\r\n public ref: DynamicDialogRef,\r\n public config: DynamicDialogConfig\r\n ) {}\r\n\r\n ngOnDestroy() {\r\n this.destroy$.next();\r\n this.destroy$.complete();\r\n\r\n if (this.ref) {\r\n try {\r\n this.ref.close();\r\n } catch (e) {\r\n // Ignore errors during cleanup\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.filterFields = this.config.data?.filterFields || [];\r\n this.buildQueryUIFields();\r\n this.initializeComponent();\r\n this.initializeExportConfig();\r\n this.initializeExportMenu();\r\n }\r\n get filterCount() {\r\n\r\n return this.queryBuilder.getAppliedFiltersCount(this.model).total;\r\n }\r\n private buildQueryUIFields() {\r\n if (this.enableQueryBuilder) {\r\n this.fields_ = this.queryBuilder.buildQueryUIFields(this.filterFields,true,true);\r\n } else {\r\n this.fields_ = this.filterFields;\r\n }\r\n }\r\n\r\n private initializeComponent() {\r\n this.apiName = this.config.data?.apiName || '';\r\n this.moduleName = this.config.data?.moduleName || '';\r\n this.initializeFilterFields();\r\n this.onExport();\r\n }\r\n\r\n private initializeFilterFields() {\r\n this.filterFields = this.config.data?.filterFields || this.getDefaultFilterFields();\r\n this.model = this.config.data?.model || {};\r\n this.fileName = this.config.data?.defaultFileName || `export_${new Date().toISOString().split('T')[0]}`;\r\n }\r\n\r\n private initializeExportConfig() {\r\n this.exportConfig = {\r\n filters: this.model,\r\n exportType: this.exportType,\r\n fileName: this.fileName\r\n };\r\n }\r\n\r\n private initializeExportMenu() {\r\n this.exportMenuItems = [\r\n // Edit Report Name menu item\r\n {\r\n label: this.translate.instant('EDIT_REPORT_NAME'),\r\n icon: 'pi pi-pencil',\r\n command: () => this.openReportNameDialog()\r\n },\r\n // Separator\r\n { separator: true },\r\n // Export type menu items\r\n ...this.exportTypes.map(type => ({\r\n label: this.translate.instant(type.label),\r\n icon: type.icon,\r\n command: () => this.onExportTypeChange(type.value)\r\n }))\r\n ];\r\n}\r\n\r\nprivate openReportNameDialog() {\r\n const ref = this.dialogService.open(ReportNameDialogComponent, {\r\n header: this.translate.instant('EDIT_REPORT_NAME'),\r\n width: '500px',\r\n data: {\r\n fileName: this.fileName\r\n }\r\n });\r\n\r\n ref?.onClose.subscribe((result: string) => {\r\n if (result) {\r\n this.fileName = result;\r\n }\r\n });\r\n}\r\n\r\n private getDefaultFilterFields(): FormlyFieldConfig[] {\r\n return [\r\n {\r\n key: 'search',\r\n type: 'input',\r\n props: {\r\n label: this.translate.instant('SEARCH'),\r\n placeholder: this.translate.instant('ENTER_SEARCH_TERM'),\r\n }\r\n }\r\n ];\r\n }\r\n\r\n // Query and Preview Methods\r\n generatePreview() {\r\n this.onExport();\r\n }\r\n\r\n onSubmit() {\r\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.filterFields);\r\n this.queryString = this.queryBuilder.toODataQueryString(odataParams);\r\n this.onExport();\r\n }\r\n\r\n onReset() {\r\n this.exportType = ExportType.PDF;\r\n this.fileName = `export_${new Date().toISOString().split('T')[0]}`;\r\n this.form.reset();\r\n this.model = {};\r\n this.generatePreview();\r\n }\r\n\r\n // Export Methods\r\n onExport() {\r\n this.loading = true;\r\n const exportConfig = this.createExportConfig();\r\n this.handleApiExport(exportConfig);\r\n }\r\n\r\n private createExportConfig(): any {\r\n return {\r\n filters: this.model,\r\n exportType: this.exportType,\r\n fileName: this.fileName\r\n };\r\n }\r\n\r\n private handleApiExport(config: any) {\r\n if (this.form.invalid) return;\r\n\r\n const requestOptions = this.createRequestOptions(config);\r\n\r\n this.restService.request<any, any>(\r\n requestOptions,\r\n { apiName: this.apiName , moduleName: this.moduleName }\r\n )\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.handleExportResponse(response, config);\r\n },\r\n error: (error) => {\r\n console.error('Export failed:', error);\r\n this.loading = false;\r\n }\r\n });\r\n }\r\n\r\n private createRequestOptions(config: any): any {\r\n // Default query\r\n if(!this.queryString || this.queryString == ''){\r\n\r\n // Use the new QueryBuilderService methods\r\n const odataParams = this.queryBuilder.buildODataFromQueryModel(this.model, this.filterFields);\r\n // this.odataSearch.emit(odataParams);\r\n\r\n // Generate query string using the unified method\r\n this.queryString = this.queryBuilder.toODataQueryString(odataParams);\r\n // console.log('OData Query String:', queryString);\r\n\r\n }\r\n const filters: Partial<any> = {\r\n fileName: config.fileName || '',\r\n query: this.queryString,\r\n exportType: config.exportType,\r\n };\r\n\r\n\r\n\r\n const params = Object.keys(filters).reduce((acc: any, key) => {\r\n acc[key] = filters[key];\r\n return acc;\r\n }, {});\r\n\r\n const requestOptions: any = {\r\n method: 'GET',\r\n url: `/${this.apiName}/export`,\r\n params: params\r\n };\r\n\r\n if (config.exportType === ExportType.HTML) {\r\n requestOptions.responseType = 'text';\r\n }\r\n\r\n return requestOptions;\r\n }\r\n\r\n // private handleExportResponse(response: any, config: any) {\r\n // this.loading = false;\r\n\r\n // if (config.exportType === ExportType.HTML) {\r\n // this.showHtmlExport(response);\r\n // } else {\r\n // this.downloadBinaryExport(response, config);\r\n // }\r\n // }\r\n private handleExportResponse(response: any, config: any) {\r\n this.loading = false;\r\n\r\n if (config.exportType === ExportType.HTML) {\r\n this.showHtmlExport(response);\r\n // } else if (config.exportType === ExportType.PDF && this.isMobileDevice()) {\r\n } else if (config.exportType === ExportType.PDF) {\r\n this.showPdfInMobile(response, config);\r\n } else {\r\n this.downloadBinaryExport(response, config);\r\n }\r\n }\r\n // Platform detection methods\r\nprivate isMobileDevice(): boolean {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n}\r\n\r\nprivate isIOS(): boolean {\r\n return /iPad|iPhone|iPod/.test(navigator.userAgent);\r\n}\r\n\r\nprivate isAndroid(): boolean {\r\n return /Android/.test(navigator.userAgent);\r\n}\r\n showPdfModal = false;\r\n currentPdfUrl?:SafeResourceUrl;\r\n currentFileName = '';\r\n private showPdfInMobile(base64Data: string, config: any): void {\r\n\r\n\r\n try {\r\n const blob = this.base64ToBlob(base64Data, this.getMimeType(ExportType.PDF));\r\n this.currentPdfUrl = this.sanitizeUrl(URL.createObjectURL(blob));\r\n this.currentFileName = `${config.fileName}.pdf`;\r\n this.showPdfModal = true;\r\n } catch (error) {\r\n var error = 'PDF is too large for mobile viewing. Please download instead.';\r\n } finally {\r\n // this.loading = false;\r\n }\r\n }\r\n\r\n\r\n private sanitizeUrl(url: string): SafeResourceUrl {\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(url);\r\n }\r\n\r\n // onPdfModalClose(): void {\r\n // this.showPdfModal = false;\r\n // if (this.currentPdfUrl) {\r\n // URL.revokeObjectURL(this.currentPdfUrl);\r\n // this.currentPdfUrl = '';\r\n // }\r\n // }\r\n\r\n onPdfDownload(): void {\r\n // Trigger download\r\n // const blob = this.base64ToBlob(this.getCurrentBase64(), this.getMimeType(ExportType.PDF));\r\n // this.downloadFile(blob, this.currentFileName);\r\n }\r\n private downloadBinaryExport(response: any, config: any) {\r\n const blob = this.base64ToBlob(\r\n response,\r\n this.getMimeType(config.exportType)\r\n );\r\n\r\n this.downloadFile(\r\n blob,\r\n `${config.fileName}.${this.getFileExtension(config.exportType)}`\r\n );\r\n }\r\n\r\n // HTML Export Methods\r\n private showHtmlExport(htmlContent: string): void {\r\n const cleanHtml = this.cleanHtmlContent(htmlContent);\r\n this.htmlExportContent = cleanHtml;\r\n this.showHtmlInIframe = true;\r\n\r\n setTimeout(() => {\r\n this.setIframeContent(cleanHtml);\r\n }, 100);\r\n }\r\n\r\n private setIframeContent(htmlContent: string): void {\r\n const iframe = document.getElementById('reportIframe') as HTMLIFrameElement;\r\n if (!iframe) {\r\n console.error('Iframe not found');\r\n return;\r\n }\r\n\r\n const iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;\r\n if (iframeDoc) {\r\n iframeDoc.open();\r\n iframeDoc.write(htmlContent);\r\n iframeDoc.close();\r\n }\r\n }\r\n\r\n print(): void {\r\n // const iframe = document.getElementById('reportIframe') as HTMLIFrameElement | null;\r\n // if (!iframe || !iframe.contentWindow) return;\r\n\r\n // const iframeWindow = iframe.contentWindow;\r\n // iframeWindow.focus();\r\n // iframeWindow.print();\r\n\r\n (document.getElementById('reportIframe') as any).contentWindow.print() ;\r\n }\r\n\r\n\r\n // Utility Methods\r\n getExportButtonText(): string {\r\n switch (this.exportType) {\r\n case ExportType.PRINT:\r\n return this.translate.instant('PRINT');\r\n case ExportType.HTML:\r\n return this.translate.instant('EXPORT');\r\n default:\r\n return this.translate.instant('EXPORT');\r\n }\r\n }\r\n\r\n onExportTypeChange(type: ExportType) {\r\n this.exportType = type;\r\n }\r\n\r\n getCurrentExportTypeIcon(): string {\r\n const currentType = this.exportTypes.find(type => type.value === this.exportType);\r\n return currentType?.icon || 'pi pi-download';\r\n }\r\n\r\n private base64ToBlob(base64: string, mime: string): Blob {\r\n const byteChars = atob(base64);\r\n const byteNums = Array.from(byteChars, c => c.charCodeAt(0));\r\n return new Blob([new Uint8Array(byteNums)], { type: mime });\r\n }\r\n\r\n private downloadFile(blob: Blob, fileName: string) {\r\n const url = window.URL.createObjectURL(blob);\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(url);\r\n }\r\n\r\n private getFileExtension(exportType: ExportType): string {\r\n switch (exportType) {\r\n case ExportType.EXCEL:\r\n return 'xlsx';\r\n case ExportType.PDF:\r\n return 'pdf';\r\n case ExportType.HTML:\r\n return 'html';\r\n default:\r\n return 'pdf';\r\n }\r\n }\r\n\r\n private getMimeType(exportType: ExportType): string {\r\n switch (exportType) {\r\n case ExportType.EXCEL:\r\n return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\r\n case ExportType.PDF:\r\n return 'application/pdf';\r\n default:\r\n return 'application/octet-stream';\r\n }\r\n }\r\n\r\n private cleanHtmlContent(html: string): string {\r\n return html\r\n .replace(/\\\\r\\\\n/g, '\\n')\r\n .replace(/\\\\\"/g, '\"')\r\n .replace(/\\\\t/g, ' ')\r\n .trim();\r\n }\r\n}\r\n","<!-- class=\"flex flex-col h-full bg-white dark:bg-gray-900 rounded-lg max-w-6xl mx-auto\" -->\n<div >\n <!-- Content -->\n <div class=\"flex-1 overflow-hidden p-2\">\n\n <!-- Preview Actions -->\n <div class=\"flex justify-between items-center mb-6 p-2 bg-white rounded-lg\">\n <h3 class=\"text-lg font-semibold text-gray-900 dark:text-white\">\n {{ 'REPORT' | translate }}\n </h3>\n <div class=\"flex gap-2\">\n <!-- Filters Button -->\n <button\n type=\"button\"\n (click)=\"showFilters = !showFilters\"\n class=\"flex items-center px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors\"\n [pTooltip]=\"'SEARCH_FILTERS' | translate\">\n <i class=\"pi pi-filter\"></i>\n @if (filterCount > 0) {\n <span class=\"ml-2 bg-blue-500 text-white text-xs rounded-full h-5 w-5 flex items-center justify-center\">\n {{ filterCount }}\n </span>\n }\n </button>\n\n <!-- Refresh Preview -->\n <button\n (click)=\"generatePreview()\"\n [disabled]=\"loading\"\n class=\"flex items-center px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-700 disabled:bg-gray-300 disabled:cursor-not-allowed transition-colors\"\n [pTooltip]=\"'REFRESH' | translate\">\n <i class=\"pi pi-refresh mr-2 ml-2\" [class.animate-spin]=\"loading\"></i>\n {{ 'REFRESH' | translate }}\n </button>\n\n <!-- Print Button -->\n @if (exportType === 4 || exportType === 1 || exportType === 2) {\n <button\n (click)=\"print()\"\n class=\"flex items-center px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors\"\n [pTooltip]=\"'PRINT' | translate\">\n <i class=\"pi pi-print mr-2 ml-2\"></i>\n {{ 'PRINT' | translate }}\n </button>\n }\n </div>\n </div>\n\n <!-- Preview Content -->\n <div #previewContainer class=\"bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg\">\n <!-- HTML Export Preview (Iframe) -->\n @if (showHtmlInIframe && htmlExportContent || showPdfModal) {\n <div class=\"html-export-preview\">\n <iframe\n id=\"reportIframe\"\n class=\"w-full border border-gray-300 dark:border-gray-600 rounded-b-lg\"\n [style.height]=\"'600px'\"\n title=\"HTML Export Preview\"\n [src]=\"currentPdfUrl\"\n width=\"100%\"\n height=\"100%\"\n frameborder=\"0\"\n allowfullscreen\n >\n <!-- allowfullscreen -->\n </iframe>\n </div>\n }\n <!-- <app-pdf-modal\n *ngIf=\"showPdfModal\"\n [pdfUrl]=\"currentPdfUrl\"\n [fileName]=\"currentFileName\"\n (closed)=\"onPdfModalClose()\"\n (downloadRequested)=\"onPdfDownload()\">\n </app-pdf-modal> -->\n\n <!-- Regular Preview Table -->\n <!-- <div *ngIf=\"!showHtmlInIframe\" class=\"p-4\">\n <p-table\n [value]=\"previewData\"\n [columns]=\"previewColumns\"\n [paginator]=\"true\"\n [rows]=\"10\"\n [showCurrentPageReport]=\"true\"\n currentPageReportTemplate=\"Showing {first} to {last} of {totalRecords} entries\"\n styleClass=\"p-datatable-sm\">\n <ng-template pTemplate=\"header\">\n <tr>\n <th *ngFor=\"let col of previewColumns\" class=\"text-left\">\n {{ col.header }}\n </th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\" let-rowData>\n <tr>\n <td *ngFor=\"let col of previewColumns\" class=\"text-left\">\n {{ rowData[col.field] }}\n </td>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"emptymessage\">\n <tr>\n <td [attr.colspan]=\"previewColumns.length\" class=\"text-center py-4\">\n <div class=\"text-center py-8\">\n <i class=\"pi pi-inbox text-4xl text-gray-400 dark:text-gray-500 mb-4\"></i>\n <p class=\"text-gray-500 dark:text-gray-400\">{{ 'NO_PREVIEW_DATA' | translate }}</p>\n </div>\n </td>\n </tr>\n </ng-template>\n </p-table>\n </div> -->\n</div>\n\n<!-- <div class=\"mt-4 p-3 bg-green-50 dark:bg-green-900/20 rounded-lg\">\n<p class=\"text-sm text-green-700 dark:text-green-300\">\n <i class=\"pi pi-info-circle mr-2\"></i>\n {{ 'PREVIEW_INFO' | translate }}\n</p>\n</div> -->\n</div>\n\n<!-- Footer -->\n<div class=\"border-t border-gray-200 dark:border-gray-700 px-2 py-2 bg-gray-50 dark:bg-gray-800\">\n <div class=\"flex justify-between items-center\">\n <button\n type=\"button\"\n (click)=\"onReset()\"\n class=\"flex items-center px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-700 rounded-lg transition-colors\"\n [disabled]=\"loading\">\n <i class=\"pi pi-refresh mr-2\"></i>\n {{ 'RESET' | translate }}\n </button>\n\n <div class=\"flex gap-2\">\n <button\n type=\"button\"\n (click)=\"ref?.close()\"\n class=\"px-4 py-2 text-sm font-medium text-gray-700 dark:text-gray-300 border border-gray-300 dark:border-gray-600 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors\"\n [disabled]=\"loading\">\n {{ 'CANCEL' | translate }}\n </button>\n\n <!-- SplitButton for Export -->\n <!-- || previewData.length === 0 -->\n <p-splitButton\n [label]=\"getExportButtonText()\"\n [icon]=\"getCurrentExportTypeIcon()\"\n [model]=\"exportMenuItems\"\n (onClick)=\"onExport()\"\n [disabled]=\"loading\"\n styleClass=\"p-button-primary\">\n </p-splitButton>\n </div>\n </div>\n</div>\n\n<!-- Filters Drawer -->\n@if(showFilters){\n <p-drawer\n [(visible)]=\"showFilters\"\n position=\"right\"\n [styleClass]=\"'!w-full md:!w-80 lg:!w-[40rem] !h-full' \"\n [modal]=\"true\"\n [dismissible]=\"true\"\n styleClass=\"p-4 w-full max-w-md max-h-[90vh] flex flex-col\">\n <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit(); showFilters=false\" class=\"flex flex-col flex-1\">\n <div class=\"flex-1 overflow-auto\">\n <formly-form\n [form]=\"form\"\n [fields]=\"fields_\"\n [model]=\"model\"\n [options]=\"options\">\n </formly-form>\n </div>\n </form>\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-end mt-2 space-x-2 flex-none\">\n <button\n type=\"submit\"\n pButton size=\"small\"\n (click)=\" onSubmit(); showFilters=false\"\n label=\"{{ 'SEARCH' | translate }}\">\n </button>\n <button\n type=\"button\"\n pButton\n size=\"small\"\n class=\"p-button-text\"\n (click)=\"onReset(); showFilters=false\">\n {{ 'CLEAR' | translate }}\n </button>\n </div>\n </ng-template>\n </p-drawer>\n}\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i3"],"mappings":"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"}