@sapphire-ion/framework 0.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/classes/comparison/comparison-operator.mjs +18 -0
  3. package/esm2022/lib/classes/comparison/comparison-value-type.mjs +25 -0
  4. package/esm2022/lib/classes/comparison/comparison.mjs +41 -0
  5. package/esm2022/lib/classes/comparison/properties/bool-property.mjs +15 -0
  6. package/esm2022/lib/classes/comparison/properties/date-property.mjs +27 -0
  7. package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +27 -0
  8. package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +27 -0
  9. package/esm2022/lib/classes/comparison/properties/enum-property.mjs +27 -0
  10. package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +12 -0
  11. package/esm2022/lib/classes/comparison/properties/int-property.mjs +27 -0
  12. package/esm2022/lib/classes/comparison/properties/long-property.mjs +27 -0
  13. package/esm2022/lib/classes/comparison/properties/string-property.mjs +15 -0
  14. package/esm2022/lib/classes/comparison/properties/time-property.mjs +27 -0
  15. package/esm2022/lib/classes/credentials.mjs +2 -0
  16. package/esm2022/lib/classes/environment.mjs +32 -0
  17. package/esm2022/lib/classes/filters/view-filtros.mjs +18 -0
  18. package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +10 -0
  19. package/esm2022/lib/classes/inputs/table-field.mjs +63 -0
  20. package/esm2022/lib/classes/page-option.mjs +2 -0
  21. package/esm2022/lib/classes/routes/default-routing-factory.mjs +23 -0
  22. package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +22 -0
  23. package/esm2022/lib/classes/routes/route-data.mjs +9 -0
  24. package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +18 -0
  25. package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +15 -0
  26. package/esm2022/lib/components/carousel/carousel.component.mjs +79 -0
  27. package/esm2022/lib/components/carousel/carousel.module.mjs +31 -0
  28. package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +16 -0
  29. package/esm2022/lib/components/content-block/content-block.component.mjs +27 -0
  30. package/esm2022/lib/components/default/default-list/abstract-list.mjs +49 -0
  31. package/esm2022/lib/components/default/default-list/default-list.component.mjs +94 -0
  32. package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +98 -0
  33. package/esm2022/lib/components/default/default-list/list.mjs +110 -0
  34. package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +123 -0
  35. package/esm2022/lib/components/default/default-table/default-table.component.mjs +206 -0
  36. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +182 -0
  37. package/esm2022/lib/components/default/default-view/abstract-view.mjs +18 -0
  38. package/esm2022/lib/components/default/default-view/default-view.component.mjs +51 -0
  39. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +72 -0
  40. package/esm2022/lib/components/default/default-view/view.mjs +170 -0
  41. package/esm2022/lib/components/default/default.module.mjs +87 -0
  42. package/esm2022/lib/components/default-page/default.page.mjs +73 -0
  43. package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +60 -0
  44. package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +31 -0
  45. package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +15 -0
  46. package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +34 -0
  47. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +49 -0
  48. package/esm2022/lib/components/drawer/drawer.component.mjs +117 -0
  49. package/esm2022/lib/components/drawer/menu.mjs +15 -0
  50. package/esm2022/lib/components/filter/filter.component.mjs +124 -0
  51. package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +17 -0
  52. package/esm2022/lib/components/image/image.component.mjs +91 -0
  53. package/esm2022/lib/components/info-popover/info-popover.component.mjs +91 -0
  54. package/esm2022/lib/components/inputs/custom-input.mjs +77 -0
  55. package/esm2022/lib/components/inputs/custom-signal-input.mjs +74 -0
  56. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +43 -0
  57. package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +16 -0
  58. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +487 -0
  59. package/esm2022/lib/components/inputs/input-configuration.mjs +2 -0
  60. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +93 -0
  61. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +6 -0
  62. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +119 -0
  63. package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +8 -0
  64. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +269 -0
  65. package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +45 -0
  66. package/esm2022/lib/components/inputs/input-default-configurations.mjs +14 -0
  67. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +91 -0
  68. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +128 -0
  69. package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +11 -0
  70. package/esm2022/lib/components/inputs/input-loading/input-loading.component.mjs +16 -0
  71. package/esm2022/lib/components/inputs/input-provider-factory.mjs +15 -0
  72. package/esm2022/lib/components/inputs/input-select/ISelect.mjs +11 -0
  73. package/esm2022/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.mjs +42 -0
  74. package/esm2022/lib/components/inputs/input-select/input-select-option/input-select-option.component.mjs +46 -0
  75. package/esm2022/lib/components/inputs/input-select/input-select-template.directive.mjs +16 -0
  76. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +322 -0
  77. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +164 -0
  78. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +50 -0
  79. package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +18 -0
  80. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +47 -0
  81. package/esm2022/lib/components/inputs/input-type.mjs +18 -0
  82. package/esm2022/lib/components/inputs/input-validators.mjs +90 -0
  83. package/esm2022/lib/components/inputs/inputs.module.mjs +101 -0
  84. package/esm2022/lib/components/loading/loading.component.mjs +34 -0
  85. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +52 -0
  86. package/esm2022/lib/components/login/login.component.mjs +93 -0
  87. package/esm2022/lib/components/main-content/main-content.component.mjs +62 -0
  88. package/esm2022/lib/components/stepper/step/step.component.mjs +43 -0
  89. package/esm2022/lib/components/stepper/stepper.component.mjs +36 -0
  90. package/esm2022/lib/components/stepper/stepper.module.mjs +25 -0
  91. package/esm2022/lib/components/tabs/tab/tab.component.mjs +41 -0
  92. package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +56 -0
  93. package/esm2022/lib/components/tabs/tabs.module.mjs +22 -0
  94. package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +51 -0
  95. package/esm2022/lib/components/tooltip/tooltip.component.mjs +21 -0
  96. package/esm2022/lib/core.module.mjs +29 -0
  97. package/esm2022/lib/directives/ng-var.directive.mjs +29 -0
  98. package/esm2022/lib/guards/auth.guard.mjs +26 -0
  99. package/esm2022/lib/guards/error.interceptor.mjs +106 -0
  100. package/esm2022/lib/guards/token.interceptor.mjs +25 -0
  101. package/esm2022/lib/index.mjs +172 -0
  102. package/esm2022/lib/pipes/secure.pipe.mjs +42 -0
  103. package/esm2022/lib/services/auth.service.mjs +149 -0
  104. package/esm2022/lib/services/environment.service.mjs +26 -0
  105. package/esm2022/lib/services/generics.service.mjs +84 -0
  106. package/esm2022/lib/services/route/route.cache.service.mjs +15 -0
  107. package/esm2022/lib/services/route/route.provider.service.mjs +42 -0
  108. package/esm2022/lib/services/usuario.service.mjs +49 -0
  109. package/esm2022/lib/services/utils.service.mjs +149 -0
  110. package/esm2022/lib/services/web/api-url-provider.service.mjs +29 -0
  111. package/esm2022/lib/services/web/http.ativo.service.mjs +55 -0
  112. package/esm2022/lib/services/web/http.service.mjs +175 -0
  113. package/esm2022/lib/services/web/storage.service.mjs +115 -0
  114. package/esm2022/public-api.mjs +5 -0
  115. package/esm2022/sapphire-ion-framework.mjs +5 -0
  116. package/fesm2022/sapphire-ion-framework.mjs +6080 -0
  117. package/fesm2022/sapphire-ion-framework.mjs.map +1 -0
  118. package/index.d.ts +5 -0
  119. package/lib/classes/comparison/comparison-operator.d.ts +9 -0
  120. package/lib/classes/comparison/comparison-value-type.d.ts +23 -0
  121. package/lib/classes/comparison/comparison.d.ts +25 -0
  122. package/lib/classes/comparison/properties/bool-property.d.ts +7 -0
  123. package/lib/classes/comparison/properties/date-property.d.ts +11 -0
  124. package/lib/classes/comparison/properties/datetime-property.d.ts +11 -0
  125. package/lib/classes/comparison/properties/decimal-property.d.ts +11 -0
  126. package/lib/classes/comparison/properties/enum-property.d.ts +11 -0
  127. package/lib/classes/comparison/properties/implicit-property.d.ts +6 -0
  128. package/lib/classes/comparison/properties/int-property.d.ts +11 -0
  129. package/lib/classes/comparison/properties/long-property.d.ts +11 -0
  130. package/lib/classes/comparison/properties/string-property.d.ts +7 -0
  131. package/lib/classes/comparison/properties/time-property.d.ts +11 -0
  132. package/lib/classes/credentials.d.ts +5 -0
  133. package/lib/classes/environment.d.ts +13 -0
  134. package/lib/classes/filters/view-filtros.d.ts +10 -0
  135. package/lib/classes/inputs/table-field-form-builder.d.ts +5 -0
  136. package/lib/classes/inputs/table-field.d.ts +19 -0
  137. package/lib/classes/page-option.d.ts +7 -0
  138. package/lib/classes/routes/default-routing-factory.d.ts +8 -0
  139. package/lib/classes/routes/id-preloader-configuration.d.ts +28 -0
  140. package/lib/classes/routes/route-data.d.ts +5 -0
  141. package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +10 -0
  142. package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +9 -0
  143. package/lib/components/carousel/carousel.component.d.ts +32 -0
  144. package/lib/components/carousel/carousel.module.d.ts +12 -0
  145. package/lib/components/carousel/i-carousel-item.component.d.ts +9 -0
  146. package/lib/components/content-block/content-block.component.d.ts +15 -0
  147. package/lib/components/default/default-list/abstract-list.d.ts +21 -0
  148. package/lib/components/default/default-list/default-list.component.d.ts +42 -0
  149. package/lib/components/default/default-list/header-list/header-list.component.d.ts +45 -0
  150. package/lib/components/default/default-list/list.d.ts +37 -0
  151. package/lib/components/default/default-pagination/default-pagination.component.d.ts +36 -0
  152. package/lib/components/default/default-table/default-table.component.d.ts +71 -0
  153. package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +20 -0
  154. package/lib/components/default/default-view/abstract-view.d.ts +16 -0
  155. package/lib/components/default/default-view/default-view.component.d.ts +26 -0
  156. package/lib/components/default/default-view/header-view/header-view.component.d.ts +25 -0
  157. package/lib/components/default/default-view/view.d.ts +55 -0
  158. package/lib/components/default/default.module.d.ts +28 -0
  159. package/lib/components/default-page/default.page.d.ts +35 -0
  160. package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +14 -0
  161. package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +10 -0
  162. package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +9 -0
  163. package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +13 -0
  164. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +22 -0
  165. package/lib/components/drawer/drawer.component.d.ts +23 -0
  166. package/lib/components/drawer/menu.d.ts +9 -0
  167. package/lib/components/filter/filter.component.d.ts +29 -0
  168. package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +8 -0
  169. package/lib/components/image/image.component.d.ts +23 -0
  170. package/lib/components/info-popover/info-popover.component.d.ts +15 -0
  171. package/lib/components/inputs/custom-input.d.ts +36 -0
  172. package/lib/components/inputs/custom-signal-input.d.ts +38 -0
  173. package/lib/components/inputs/input-bool/input-bool.component.d.ts +19 -0
  174. package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +17 -0
  175. package/lib/components/inputs/input-color/input-color.component.d.ts +80 -0
  176. package/lib/components/inputs/input-configuration.d.ts +8 -0
  177. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +24 -0
  178. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +5 -0
  179. package/lib/components/inputs/input-date/input-date.component.d.ts +30 -0
  180. package/lib/components/inputs/input-date/input-date.configuration.d.ts +7 -0
  181. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +41 -0
  182. package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +25 -0
  183. package/lib/components/inputs/input-default-configurations.d.ts +13 -0
  184. package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +36 -0
  185. package/lib/components/inputs/input-file/input-file.component.d.ts +39 -0
  186. package/lib/components/inputs/input-file/input-file.configuration.d.ts +11 -0
  187. package/lib/components/inputs/input-loading/input-loading.component.d.ts +7 -0
  188. package/lib/components/inputs/input-provider-factory.d.ts +4 -0
  189. package/lib/components/inputs/input-select/ISelect.d.ts +21 -0
  190. package/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.d.ts +18 -0
  191. package/lib/components/inputs/input-select/input-select-option/input-select-option.component.d.ts +24 -0
  192. package/lib/components/inputs/input-select/input-select-template.directive.d.ts +8 -0
  193. package/lib/components/inputs/input-select/input-select.component.d.ts +66 -0
  194. package/lib/components/inputs/input-select/input.select.configuration.d.ts +87 -0
  195. package/lib/components/inputs/input-string/input-string.component.d.ts +19 -0
  196. package/lib/components/inputs/input-string/input-string.configuration.d.ts +14 -0
  197. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +18 -0
  198. package/lib/components/inputs/input-type.d.ts +16 -0
  199. package/lib/components/inputs/input-validators.d.ts +19 -0
  200. package/lib/components/inputs/inputs.module.d.ts +28 -0
  201. package/lib/components/loading/loading.component.d.ts +18 -0
  202. package/lib/components/login/login-admin/login-admin.component.d.ts +20 -0
  203. package/lib/components/login/login.component.d.ts +28 -0
  204. package/lib/components/main-content/main-content.component.d.ts +17 -0
  205. package/lib/components/stepper/step/step.component.d.ts +15 -0
  206. package/lib/components/stepper/stepper.component.d.ts +17 -0
  207. package/lib/components/stepper/stepper.module.d.ts +10 -0
  208. package/lib/components/tabs/tab/tab.component.d.ts +19 -0
  209. package/lib/components/tabs/tabs/tabs.component.d.ts +18 -0
  210. package/lib/components/tabs/tabs.module.d.ts +12 -0
  211. package/lib/components/text-tooltip/text-tooltip.component.d.ts +16 -0
  212. package/lib/components/tooltip/tooltip.component.d.ts +7 -0
  213. package/lib/core.module.d.ts +11 -0
  214. package/lib/directives/ng-var.directive.d.ts +12 -0
  215. package/lib/guards/auth.guard.d.ts +11 -0
  216. package/lib/guards/error.interceptor.d.ts +32 -0
  217. package/lib/guards/token.interceptor.d.ts +11 -0
  218. package/lib/index.d.ts +108 -0
  219. package/lib/pipes/secure.pipe.d.ts +15 -0
  220. package/lib/services/auth.service.d.ts +47 -0
  221. package/lib/services/environment.service.d.ts +10 -0
  222. package/lib/services/generics.service.d.ts +22 -0
  223. package/lib/services/route/route.cache.service.d.ts +7 -0
  224. package/lib/services/route/route.provider.service.d.ts +13 -0
  225. package/lib/services/usuario.service.d.ts +21 -0
  226. package/lib/services/utils.service.d.ts +36 -0
  227. package/lib/services/web/api-url-provider.service.d.ts +13 -0
  228. package/lib/services/web/http.ativo.service.d.ts +31 -0
  229. package/lib/services/web/http.service.d.ts +51 -0
  230. package/lib/services/web/storage.service.d.ts +25 -0
  231. package/package.json +41 -0
  232. package/public-api.d.ts +1 -0
  233. package/themes/compiled-styles.scss +2291 -0
  234. package/themes/components/_inputs_new/input-string/input-string.component.scss +0 -0
  235. package/themes/components/_inputs_new/inputs.scss +15 -0
  236. package/themes/components/carousel/carousel-image/carousel-image.component.scss +0 -0
  237. package/themes/components/carousel/carousel-item/carousel-item.component.scss +0 -0
  238. package/themes/components/carousel/carousel.component.scss +9 -0
  239. package/themes/components/content-block/content-block.component.scss +0 -0
  240. package/themes/components/default/default-list/default-list.component.scss +0 -0
  241. package/themes/components/default/default-list/header-list/header-list.component.scss +0 -0
  242. package/themes/components/default/default-pagination/default-pagination.component.scss +22 -0
  243. package/themes/components/default/default-table/default-table.component.scss +33 -0
  244. package/themes/components/default/default-table/th-filter/th-filter.component.scss +24 -0
  245. package/themes/components/default/default-view/default-view.component.scss +5 -0
  246. package/themes/components/default/default-view/header-view/header-view.component.scss +7 -0
  247. package/themes/components/default-page/default.page.scss +4 -0
  248. package/themes/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +9 -0
  249. package/themes/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
  250. package/themes/components/drawer/drawer-group/drawer-group.component.scss +22 -0
  251. package/themes/components/drawer/drawer.component.scss +46 -0
  252. package/themes/components/filter/filter.component.scss +0 -0
  253. package/themes/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +19 -0
  254. package/themes/components/image/image.component.scss +0 -0
  255. package/themes/components/info-popover/info-popover.component.scss +3 -0
  256. package/themes/components/inputs/input-bool/input-bool.component.scss +14 -0
  257. package/themes/components/inputs/input-color/input-color.component.scss +48 -0
  258. package/themes/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss +0 -0
  259. package/themes/components/inputs/input-date/input-date.component.scss +41 -0
  260. package/themes/components/inputs/input-decimal/input-decimal.component.scss +44 -0
  261. package/themes/components/inputs/input-file/download-button/download-button.component.scss +3 -0
  262. package/themes/components/inputs/input-file/input-file.component.scss +3 -0
  263. package/themes/components/inputs/input-loading/input-loading.component.scss +0 -0
  264. package/themes/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.scss +0 -0
  265. package/themes/components/inputs/input-select/input-select-option/input-select-option.component.scss +0 -0
  266. package/themes/components/inputs/input-select/input-select.component.scss +28 -0
  267. package/themes/components/inputs/input-string/input-string.component.scss +0 -0
  268. package/themes/components/inputs/input-textarea/input-textarea.component.scss +0 -0
  269. package/themes/components/inputs/inputs.scss +67 -0
  270. package/themes/components/loading/loading.component.scss +0 -0
  271. package/themes/components/login/login-admin/login-admin.component.scss +3 -0
  272. package/themes/components/login/login.component.scss +40 -0
  273. package/themes/components/main-content/main-content.component.scss +9 -0
  274. package/themes/components/stepper/step/step.component.scss +48 -0
  275. package/themes/components/stepper/stepper.component.scss +0 -0
  276. package/themes/components/tabs/tab/tab.component.scss +0 -0
  277. package/themes/components/tabs/tabs/tabs.component.scss +23 -0
  278. package/themes/components/text-tooltip/text-tooltip.component.scss +0 -0
  279. package/themes/components/tooltip/tooltip.component.scss +23 -0
  280. package/themes/styles/components.scss +52 -0
  281. package/themes/styles/core.styles.scss +409 -0
  282. package/themes/styles/ionic/ion-action-sheet.scss +8 -0
  283. package/themes/styles/ionic/ion-alert.scss +9 -0
  284. package/themes/styles/ionic/ion-button.scss +3 -0
  285. package/themes/styles/ionic/ion-card.scss +3 -0
  286. package/themes/styles/ionic/ion-content.scss +3 -0
  287. package/themes/styles/ionic/ion-datetime.scss +6 -0
  288. package/themes/styles/ionic/ion-item.scss +10 -0
  289. package/themes/styles/ionic/ion-list.scss +4 -0
  290. package/themes/styles/ionic/ion-modal.scss +8 -0
  291. package/themes/styles/ionic/ion-popover.scss +31 -0
  292. package/themes/styles/ionic/ion-progress-bar.scss +3 -0
  293. package/themes/styles/ionic/ion-searchbar.scss +4 -0
  294. package/themes/styles/ionic/ion-toast.scss +14 -0
  295. package/themes/styles/ionic.scss +13 -0
  296. package/themes/styles/login-default.scss +87 -0
  297. package/themes/styles/mixins.scss +467 -0
  298. package/themes/styles/styles.scss +1 -0
  299. package/themes/styles/translucid.scss +21 -0
@@ -0,0 +1,98 @@
1
+ import { Component, Output, Input, EventEmitter, HostListener } from '@angular/core';
2
+ import { EnvironmentService } from '../../../../services/environment.service';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../../../../services/environment.service";
5
+ import * as i2 from "@ionic/angular";
6
+ import * as i3 from "@angular/forms";
7
+ import * as i4 from "@angular/router";
8
+ /** Componente de cabeçalho de listagem padrão */
9
+ export class HeaderListComponent {
10
+ onNew() {
11
+ this.onNewEmitter.emit();
12
+ }
13
+ constructor(environmentService) {
14
+ this.environmentService = environmentService;
15
+ this.limitChange = new EventEmitter();
16
+ this.pageChange = new EventEmitter();
17
+ this.searchChange = new EventEmitter();
18
+ /** Evento de refersh
19
+ * Emitido em:
20
+ * - Troca de página
21
+ * - Pesquisa
22
+ */
23
+ this.refreshEmitter = new EventEmitter();
24
+ /** Link a ser acessado no click do botão NOVO */
25
+ this.link = "view";
26
+ /** Remove o botão NOVO */
27
+ this.noNew = false;
28
+ /** Remove o select de paginas */
29
+ this.noPage = false;
30
+ /** Remove o elemento de pesquisa */
31
+ this.noSearch = false;
32
+ /** Desabilita o redirect de novo em um botão para ser utilizado com [onNewEmitter] */
33
+ this.overrideNew = false;
34
+ /** Evento quando o botáo NOVO é clickado */
35
+ this.onNewEmitter = new EventEmitter();
36
+ this.lstLimits = [];
37
+ this.lstLimits = environmentService.environment.defaultPageLimits;
38
+ this.limit = this.lstLimits[0].value;
39
+ }
40
+ EmitSearch() {
41
+ this.searchChange.emit(this.search);
42
+ this.EmitChange();
43
+ }
44
+ EmitLimit() {
45
+ this.limitChange.emit(this.limit);
46
+ this.pageChange.emit(1);
47
+ this.EmitChange();
48
+ }
49
+ EmitChange() {
50
+ this.refreshEmitter.emit();
51
+ }
52
+ onKeyPress($event) {
53
+ if (($event.ctrlKey || $event.metaKey) && ($event.key == 'F' || $event.key == 'f')) {
54
+ document.getElementById("list_search").setFocus();
55
+ $event.preventDefault();
56
+ }
57
+ }
58
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderListComponent, deps: [{ token: i1.EnvironmentService }], target: i0.ɵɵFactoryTarget.Component }); }
59
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: HeaderListComponent, selector: "header-list", inputs: { limit: "limit", page: "page", search: "search", loading: "loading", link: "link", noNew: "noNew", noPage: "noPage", noSearch: "noSearch", overrideNew: "overrideNew" }, outputs: { limitChange: "limitChange", pageChange: "pageChange", searchChange: "searchChange", refreshEmitter: "refresh", onNewEmitter: "onNew" }, host: { listeners: { "window:keydown": "onKeyPress($event)" } }, ngImport: i0, template: "<div class=\"flex flex-wrap w-full gap-2\">\r\n @if (!noPage) {\r\n <div class=\"portrait:basis-[calc(50%-0.25rem)] landscape:w-48 portrait:order-1\">\r\n <ion-item class=\"rounded-2xl w-full h-full translucid-border\" lines=\"full\" style=\"--border-radius: 1rem !important; --background: transparent\" >\r\n <ion-select [disabled]=\"loading\" [(ngModel)]=\"limit\" (ionChange)=\"EmitLimit()\" interface=\"popover\">\r\n @for (limit of lstLimits; track limit) {\r\n <ion-select-option [value]=\"limit.value\">{{limit.label}}</ion-select-option>\r\n }\r\n </ion-select>\r\n </ion-item>\r\n </div>\r\n }\r\n \r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n\r\n @if(!noSearch) {\r\n <div class=\"portrait:basis-full portrait:order-3 grow flex items-center justify-center\">\r\n <ion-searchbar class=\"w-full min-h-0 p-0 m-0\" [debounce]=\"500\" [(ngModel)]=\"search\" (ionInput)=\"this.EmitSearch()\" [animated]=\"true\" placeholder=\"Pesquisar...\"></ion-searchbar>\r\n </div>\r\n }\r\n\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!noNew){\r\n <div class=\"portrait:basis-[calc(50%-0.25rem)] landscape:basis-24 portrait:order-2\">\r\n <ion-button [routerLink]=\"overrideNew ? null : [link]\" (click)=\"onNew()\" class=\"size-full m-0 rounded-2xl text-base\" size=\"small\" fill=\"clear\">\r\n <ion-icon name=\"add\" slot=\"start\"></ion-icon>\r\n <ion-text class=\"text-base\">Novo</ion-text>\r\n </ion-button>\r\n </div>\r\n }\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i2.IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "required", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: i2.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "directive", type: i2.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i2.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar" }, { kind: "directive", type: i2.RouterLinkDelegate, selector: ":not(a):not(area)[routerLink]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
60
+ }
61
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: HeaderListComponent, decorators: [{
62
+ type: Component,
63
+ args: [{ selector: 'header-list', template: "<div class=\"flex flex-wrap w-full gap-2\">\r\n @if (!noPage) {\r\n <div class=\"portrait:basis-[calc(50%-0.25rem)] landscape:w-48 portrait:order-1\">\r\n <ion-item class=\"rounded-2xl w-full h-full translucid-border\" lines=\"full\" style=\"--border-radius: 1rem !important; --background: transparent\" >\r\n <ion-select [disabled]=\"loading\" [(ngModel)]=\"limit\" (ionChange)=\"EmitLimit()\" interface=\"popover\">\r\n @for (limit of lstLimits; track limit) {\r\n <ion-select-option [value]=\"limit.value\">{{limit.label}}</ion-select-option>\r\n }\r\n </ion-select>\r\n </ion-item>\r\n </div>\r\n }\r\n \r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n\r\n @if(!noSearch) {\r\n <div class=\"portrait:basis-full portrait:order-3 grow flex items-center justify-center\">\r\n <ion-searchbar class=\"w-full min-h-0 p-0 m-0\" [debounce]=\"500\" [(ngModel)]=\"search\" (ionInput)=\"this.EmitSearch()\" [animated]=\"true\" placeholder=\"Pesquisar...\"></ion-searchbar>\r\n </div>\r\n }\r\n\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!noNew){\r\n <div class=\"portrait:basis-[calc(50%-0.25rem)] landscape:basis-24 portrait:order-2\">\r\n <ion-button [routerLink]=\"overrideNew ? null : [link]\" (click)=\"onNew()\" class=\"size-full m-0 rounded-2xl text-base\" size=\"small\" fill=\"clear\">\r\n <ion-icon name=\"add\" slot=\"start\"></ion-icon>\r\n <ion-text class=\"text-base\">Novo</ion-text>\r\n </ion-button>\r\n </div>\r\n }\r\n</div>" }]
64
+ }], ctorParameters: () => [{ type: i1.EnvironmentService }], propDecorators: { limit: [{
65
+ type: Input
66
+ }], limitChange: [{
67
+ type: Output
68
+ }], page: [{
69
+ type: Input
70
+ }], pageChange: [{
71
+ type: Output
72
+ }], search: [{
73
+ type: Input
74
+ }], searchChange: [{
75
+ type: Output
76
+ }], loading: [{
77
+ type: Input
78
+ }], refreshEmitter: [{
79
+ type: Output,
80
+ args: ['refresh']
81
+ }], link: [{
82
+ type: Input
83
+ }], noNew: [{
84
+ type: Input
85
+ }], noPage: [{
86
+ type: Input
87
+ }], noSearch: [{
88
+ type: Input
89
+ }], overrideNew: [{
90
+ type: Input
91
+ }], onNewEmitter: [{
92
+ type: Output,
93
+ args: ['onNew']
94
+ }], onKeyPress: [{
95
+ type: HostListener,
96
+ args: ['window:keydown', ['$event']]
97
+ }] } });
98
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FwcGhpcmUtaW9uLWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LWxpc3QvaGVhZGVyLWxpc3QvaGVhZGVyLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2FwcGhpcmUtaW9uLWZyYW1ld29yay9zcmMvbGliL2NvbXBvbmVudHMvZGVmYXVsdC9kZWZhdWx0LWxpc3QvaGVhZGVyLWxpc3QvaGVhZGVyLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHckYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7Ozs7OztBQUc5RSxrREFBa0Q7QUFNbEQsTUFBTSxPQUFPLG1CQUFtQjtJQXVDOUIsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQW9CLGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBdkNoRCxnQkFBVyxHQUFnQyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUk3RSxlQUFVLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFJOUQsaUJBQVksR0FBZ0MsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFJeEY7Ozs7V0FJRztRQUNnQixtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRWpGLGlEQUFpRDtRQUN4QyxTQUFJLEdBQVksTUFBTSxDQUFDO1FBRWhDLDBCQUEwQjtRQUNqQixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ2hDLGlDQUFpQztRQUN4QixXQUFNLEdBQVksS0FBSyxDQUFDO1FBQ2pDLG9DQUFvQztRQUMzQixhQUFRLEdBQVksS0FBSyxDQUFDO1FBR25DLHNGQUFzRjtRQUM3RSxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUN0Qyw0Q0FBNEM7UUFDM0IsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQVc3RSxjQUFTLEdBQWlCLEVBQUUsQ0FBQTtRQUoxQixJQUFJLENBQUMsU0FBUyxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ3RDLENBQUM7SUFHRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV4QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFHRCxVQUFVLENBQUMsTUFBcUI7UUFDOUIsSUFBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBQyxDQUFDO1lBQ2hGLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUF5QixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNFLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzsrR0F2RVUsbUJBQW1CO21HQUFuQixtQkFBbUIseWJDWmhDLHlpREErQk07OzRGRG5CTyxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYTt1RkFPYixLQUFLO3NCQUFkLEtBQUs7Z0JBQ0ksV0FBVztzQkFBcEIsTUFBTTtnQkFHRSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFHRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxPQUFPO3NCQUFmLEtBQUs7Z0JBT2EsY0FBYztzQkFBaEMsTUFBTTt1QkFBQyxTQUFTO2dCQUdSLElBQUk7c0JBQVosS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsV0FBVztzQkFBbkIsS0FBSztnQkFFVyxZQUFZO3NCQUE1QixNQUFNO3VCQUFDLE9BQU87Z0JBNkJmLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBQyxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT3V0cHV0LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSW9uU2VhcmNoYmFyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvZW52aXJvbm1lbnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhZ2VPcHRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9jbGFzc2VzL3BhZ2Utb3B0aW9uJztcclxuXHJcbi8qKiBDb21wb25lbnRlIGRlIGNhYmXDp2FsaG8gZGUgbGlzdGFnZW0gcGFkcsOjbyAgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdoZWFkZXItbGlzdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hlYWRlci1saXN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXItbGlzdC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGVhZGVyTGlzdENvbXBvbmVudCB7XHJcblxyXG4gIC8qKiBOw7ptZXJvIGRlIHDDoWdpbmFzIG3DoXhpbW8gKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBASW5wdXQoKSAgbGltaXQ6IG51bWJlciB8IG51bGw7XHJcbiAgQE91dHB1dCgpIGxpbWl0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8bnVtYmVyIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlciB8IG51bGw+KCk7XHJcblxyXG4gIC8qKiBWYWxvciBkYSBwYWdpbmEsIHNldGFkbyA9IDEgcXVhbmRvIHRyb2NhLXNlIG8gdmFsb3IgZGUgbGltaXRlIGRlIHBhZ2luYXMgKHVzYW5kbyB0d28gd2F5IGRhdGEgYmluZGluZykgKi9cclxuICBASW5wdXQoKSBwYWdlOiBudW1iZXI7XHJcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XHJcblxyXG4gIC8qKiBDYW1wbyBkZSBwZXNxdWlzYSAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIEBJbnB1dCgpIHNlYXJjaDogc3RyaW5nIHwgbnVsbDtcclxuICBAT3V0cHV0KCkgc2VhcmNoQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bGw+KCk7XHJcbiAgXHJcbiAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuXHJcbiAgLyoqIEV2ZW50byBkZSByZWZlcnNoXHJcbiAgICogRW1pdGlkbyBlbTpcclxuICAgKiAgLSBUcm9jYSBkZSBww6FnaW5hXHJcbiAgICogIC0gUGVzcXVpc2FcclxuICAgKi9cclxuICBAT3V0cHV0KCdyZWZyZXNoJykgcmVmcmVzaEVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgLyoqIExpbmsgYSBzZXIgYWNlc3NhZG8gbm8gY2xpY2sgZG8gYm90w6NvIE5PVk8gKi9cclxuICBASW5wdXQoKSBsaW5rIDogc3RyaW5nID0gXCJ2aWV3XCI7XHJcblxyXG4gIC8qKiBSZW1vdmUgbyBib3TDo28gTk9WTyAqL1xyXG4gIEBJbnB1dCgpIG5vTmV3OiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIFJlbW92ZSBvIHNlbGVjdCBkZSBwYWdpbmFzICovXHJcbiAgQElucHV0KCkgbm9QYWdlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgLyoqIFJlbW92ZSBvIGVsZW1lbnRvIGRlIHBlc3F1aXNhICovXHJcbiAgQElucHV0KCkgbm9TZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIFxyXG5cclxuICAvKiogRGVzYWJpbGl0YSBvIHJlZGlyZWN0IGRlIG5vdm8gZW0gdW0gYm90w6NvIHBhcmEgc2VyIHV0aWxpemFkbyBjb20gW29uTmV3RW1pdHRlcl0gKi9cclxuICBASW5wdXQoKSBvdmVycmlkZU5ldzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKiBFdmVudG8gcXVhbmRvIG8gYm90w6FvIE5PVk8gw6kgY2xpY2thZG8gKi9cclxuICBAT3V0cHV0KCdvbk5ldycpIG9uTmV3RW1pdHRlcjogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBvbk5ldygpOiB2b2lke1xyXG4gICAgdGhpcy5vbk5ld0VtaXR0ZXIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSkgeyBcclxuICAgIHRoaXMubHN0TGltaXRzID0gZW52aXJvbm1lbnRTZXJ2aWNlLmVudmlyb25tZW50LmRlZmF1bHRQYWdlTGltaXRzO1xyXG4gICAgdGhpcy5saW1pdCA9IHRoaXMubHN0TGltaXRzWzBdLnZhbHVlXHJcbiAgfVxyXG5cclxuICBsc3RMaW1pdHM6IFBhZ2VPcHRpb25bXSA9IFtdXHJcbiAgRW1pdFNlYXJjaCgpOiB2b2lke1xyXG4gICAgdGhpcy5zZWFyY2hDaGFuZ2UuZW1pdCh0aGlzLnNlYXJjaCk7XHJcbiAgICB0aGlzLkVtaXRDaGFuZ2UoKTtcclxuICB9XHJcblxyXG4gIEVtaXRMaW1pdCgpOiB2b2lke1xyXG4gICAgdGhpcy5saW1pdENoYW5nZS5lbWl0KHRoaXMubGltaXQpO1xyXG4gICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoMSk7XHJcbiAgICBcclxuICAgIHRoaXMuRW1pdENoYW5nZSgpO1xyXG4gIH1cclxuXHJcbiAgRW1pdENoYW5nZSgpe1xyXG4gICAgdGhpcy5yZWZyZXNoRW1pdHRlci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6a2V5ZG93bicsWyckZXZlbnQnXSlcclxuICBvbktleVByZXNzKCRldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgaWYoKCRldmVudC5jdHJsS2V5IHx8ICRldmVudC5tZXRhS2V5KSAmJiAoJGV2ZW50LmtleSA9PSAnRicgfHwgJGV2ZW50LmtleSA9PSAnZicpKXtcclxuICAgICAgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibGlzdF9zZWFyY2hcIikgYXMgYW55IGFzIElvblNlYXJjaGJhcikuc2V0Rm9jdXMoKTtcclxuICAgICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG59IiwiPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIHctZnVsbCBnYXAtMlwiPlxyXG4gIEBpZiAoIW5vUGFnZSkge1xyXG4gICAgPGRpdiBjbGFzcz1cInBvcnRyYWl0OmJhc2lzLVtjYWxjKDUwJS0wLjI1cmVtKV0gbGFuZHNjYXBlOnctNDggcG9ydHJhaXQ6b3JkZXItMVwiPlxyXG4gICAgICA8aW9uLWl0ZW0gY2xhc3M9XCJyb3VuZGVkLTJ4bCB3LWZ1bGwgaC1mdWxsIHRyYW5zbHVjaWQtYm9yZGVyXCIgbGluZXM9XCJmdWxsXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDFyZW0gIWltcG9ydGFudDsgLS1iYWNrZ3JvdW5kOiB0cmFuc3BhcmVudFwiID5cclxuICAgICAgICA8aW9uLXNlbGVjdCBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIFsobmdNb2RlbCldPVwibGltaXRcIiAoaW9uQ2hhbmdlKT1cIkVtaXRMaW1pdCgpXCIgaW50ZXJmYWNlPVwicG9wb3ZlclwiPlxyXG4gICAgICAgICAgQGZvciAobGltaXQgb2YgbHN0TGltaXRzOyB0cmFjayBsaW1pdCkge1xyXG4gICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cImxpbWl0LnZhbHVlXCI+e3tsaW1pdC5sYWJlbH19PC9pb24tc2VsZWN0LW9wdGlvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L2lvbi1zZWxlY3Q+XHJcbiAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICA8L2Rpdj5cclxuICB9XHJcbiAgXHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9c3RhcnRdXCI+PC9uZy1jb250ZW50PlxyXG5cclxuICBAaWYoIW5vU2VhcmNoKSB7XHJcbiAgICA8ZGl2IGNsYXNzPVwicG9ydHJhaXQ6YmFzaXMtZnVsbCBwb3J0cmFpdDpvcmRlci0zIGdyb3cgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXJcIj5cclxuICAgICAgPGlvbi1zZWFyY2hiYXIgY2xhc3M9XCJ3LWZ1bGwgbWluLWgtMCBwLTAgbS0wXCIgW2RlYm91bmNlXT1cIjUwMFwiIFsobmdNb2RlbCldPVwic2VhcmNoXCIgKGlvbklucHV0KT1cInRoaXMuRW1pdFNlYXJjaCgpXCIgW2FuaW1hdGVkXT1cInRydWVcIiBwbGFjZWhvbGRlcj1cIlBlc3F1aXNhci4uLlwiPjwvaW9uLXNlYXJjaGJhcj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuXHJcbiAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3Nsb3Q9ZW5kXVwiPjwvbmctY29udGVudD5cclxuXHJcbiAgQGlmKCFub05ldyl7XHJcbiAgICA8ZGl2IGNsYXNzPVwicG9ydHJhaXQ6YmFzaXMtW2NhbGMoNTAlLTAuMjVyZW0pXSBsYW5kc2NhcGU6YmFzaXMtMjQgcG9ydHJhaXQ6b3JkZXItMlwiPlxyXG4gICAgICA8aW9uLWJ1dHRvbiBbcm91dGVyTGlua109XCJvdmVycmlkZU5ldyA/IG51bGwgOiBbbGlua11cIiAoY2xpY2spPVwib25OZXcoKVwiIGNsYXNzPVwic2l6ZS1mdWxsIG0tMCByb3VuZGVkLTJ4bCB0ZXh0LWJhc2VcIiBzaXplPVwic21hbGxcIiBmaWxsPVwiY2xlYXJcIj5cclxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFkZFwiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwidGV4dC1iYXNlXCI+Tm92bzwvaW9uLXRleHQ+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIH1cclxuPC9kaXY+Il19
@@ -0,0 +1,110 @@
1
+ import { Component, effect, Input, model } from '@angular/core';
2
+ import { firstValueFrom } from "rxjs";
3
+ import { CompileLstTableField } from "../../../classes/comparison/comparison";
4
+ import { ViewFiltros } from "../../../classes/filters/view-filtros";
5
+ import { LongProperty } from '../../../classes/comparison/properties/long-property';
6
+ import * as i0 from "@angular/core";
7
+ //Classe de listagem, implemente carregamento e filtragem de dados
8
+ export class List {
9
+ constructor() {
10
+ /** @optional Filtro a ser aplicado na busca da listagem na API */
11
+ this.preloadFilter = model([]);
12
+ this.lstDados = [];
13
+ this.nested = false;
14
+ this.loading = true;
15
+ this.originalFilters = [];
16
+ /** Filtro précarregado */
17
+ this.frm = new ViewFiltros();
18
+ /** Lista de campos a serem substituídos pelo padrão, armazenado no service enviado como parâmetro */
19
+ this.lstTableFields = [];
20
+ effect(() => {
21
+ this.SetFilters();
22
+ });
23
+ }
24
+ async ngOnInit() {
25
+ this.originalFilters = this.frm.filter;
26
+ if (this.lstTableFields.length == 0) {
27
+ this.lstTableFields = this.service.lstTableFields;
28
+ }
29
+ if (!this.service.route) {
30
+ console.warn("[ Warning! ] [ Url is undefined ]");
31
+ }
32
+ if (!this.service.title) {
33
+ console.warn("[ Warning! ] [ titulo is undefined ]");
34
+ }
35
+ //[ Nested element ]
36
+ if (this.elementRef.nativeElement.parentElement) {
37
+ this.nested = this.elementRef.nativeElement.parentElement.tagName.toUpperCase() != "ION-CONTENT";
38
+ }
39
+ else {
40
+ this.nested = true;
41
+ }
42
+ await this.SetFilters();
43
+ if (this.nested) {
44
+ this.Refresh();
45
+ }
46
+ }
47
+ async SetFilters() {
48
+ await this.LoadIdComparison();
49
+ const compiled = CompileLstTableField(this.lstTableFields);
50
+ const preloadFilter = this.preloadFilter();
51
+ this.frm.filter = [...preloadFilter, ...compiled, ...this.originalFilters].map(p => p);
52
+ }
53
+ async LoadIdComparison() {
54
+ try {
55
+ const data = (await firstValueFrom(this.activatedRoute.data));
56
+ const id = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);
57
+ var index = this.lstTableFields.indexOf(this.lstTableFields.find(p => p.index == data.idPreloaderConfiguration.propertyName));
58
+ const filter = new LongProperty(data.idPreloaderConfiguration.propertyName).Equals(id);
59
+ filter.value = id;
60
+ filter.disableChange = data.idPreloaderConfiguration.disableChange;
61
+ this.lstTableFields[index].filter = [filter];
62
+ }
63
+ finally {
64
+ return;
65
+ }
66
+ }
67
+ async Refresh(event) {
68
+ this.loading = true;
69
+ try {
70
+ await this.Load();
71
+ }
72
+ finally {
73
+ if (event) {
74
+ event.target.complete();
75
+ }
76
+ this.loading = false;
77
+ }
78
+ }
79
+ async Load() {
80
+ var vRetorno;
81
+ try {
82
+ if (this.loadFrom) {
83
+ vRetorno = await firstValueFrom(this.service[this.loadFrom.name](this.frm));
84
+ }
85
+ else {
86
+ vRetorno = await firstValueFrom(this.service.List(this.frm));
87
+ }
88
+ this.lstDados = vRetorno.lstDados;
89
+ this.total = vRetorno.total;
90
+ }
91
+ finally {
92
+ return;
93
+ }
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: List, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
96
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.13", type: List, selector: "ng-component", inputs: { service: { classPropertyName: "service", publicName: "service", isSignal: false, isRequired: false, transformFunction: null }, preloadFilter: { classPropertyName: "preloadFilter", publicName: "preloadFilter", isSignal: true, isRequired: false, transformFunction: null }, loadFrom: { classPropertyName: "loadFrom", publicName: "loadFrom", isSignal: false, isRequired: false, transformFunction: null }, frm: { classPropertyName: "frm", publicName: "frm", isSignal: false, isRequired: false, transformFunction: null }, lstTableFields: { classPropertyName: "lstTableFields", publicName: "lstTableFields", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { preloadFilter: "preloadFilterChange" }, ngImport: i0, template: '', isInline: true, styles: [""] }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: List, decorators: [{
99
+ type: Component,
100
+ args: [{ template: '' }]
101
+ }], ctorParameters: () => [], propDecorators: { service: [{
102
+ type: Input
103
+ }], loadFrom: [{
104
+ type: Input
105
+ }], frm: [{
106
+ type: Input
107
+ }], lstTableFields: [{
108
+ type: Input
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC1saXN0L2xpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQWMsS0FBSyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFakcsT0FBTyxFQUFjLGNBQWMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdsRCxPQUFPLEVBQUUsb0JBQW9CLEVBQWMsTUFBTSx3Q0FBd0MsQ0FBQztBQUcxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFHcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNEQUFzRCxDQUFDOztBQUVwRixrRUFBa0U7QUFFbEUsTUFBTSxPQUFnQixJQUFJO0lBT3hCO1FBTUEsa0VBQWtFO1FBQ2xFLGtCQUFhLEdBQThCLEtBQUssQ0FBZSxFQUFFLENBQUMsQ0FBQztRQU1uRSxhQUFRLEdBQVEsRUFBRSxDQUFDO1FBRW5CLFdBQU0sR0FBYyxLQUFLLENBQUM7UUFDMUIsWUFBTyxHQUFhLElBQUksQ0FBQztRQUV6QixvQkFBZSxHQUFpQixFQUFFLENBQUM7UUFFbkMsMkJBQTJCO1FBQ2xCLFFBQUcsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUU5QyxxR0FBcUc7UUFDNUYsbUJBQWMsR0FBaUIsRUFBRSxDQUFDO1FBdkJ6QyxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQXNCRCxLQUFLLENBQUMsUUFBUTtRQUNaLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUM7UUFFdkMsSUFBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ3BELENBQUM7UUFDRCxJQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUMsQ0FBQztZQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLENBQUMsQ0FBQTtRQUFBLENBQUM7UUFDM0UsSUFBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFDLENBQUM7WUFBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLENBQUE7UUFBQSxDQUFDO1FBRTlFLG9CQUFvQjtRQUNwQixJQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLEdBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLE9BQWtCLENBQUMsV0FBVyxFQUFFLElBQUksYUFBYSxDQUFDO1FBQy9HLENBQUM7YUFBSSxDQUFDO1lBQ0osSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDckIsQ0FBQztRQUVELE1BQU0sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3hCLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsS0FBSyxDQUFDLFVBQVU7UUFDeEIsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUM5QixNQUFNLFFBQVEsR0FBUSxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDaEUsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFPLENBQUMsR0FBRyxhQUFhLEVBQUUsR0FBRyxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0YsQ0FBQztJQUVELEtBQUssQ0FBQyxnQkFBZ0I7UUFDcEIsSUFBRyxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQWMsQ0FBQyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFjLENBQUM7WUFFdEYsTUFBTSxFQUFFLEdBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDdEcsSUFBSSxLQUFLLEdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBQ3RJLE1BQU0sTUFBTSxHQUFlLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFbkcsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUFDO1lBQ25FLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDL0MsQ0FBQztnQkFBTyxDQUFDO1lBQ1AsT0FBTztRQUNULENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUE0QjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFHLENBQUM7WUFDRixNQUFNLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNwQixDQUFDO2dCQUNNLENBQUM7WUFDTixJQUFHLEtBQUssRUFBQyxDQUFDO2dCQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFBQyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLFFBQXFCLENBQUM7UUFFMUIsSUFBRyxDQUFDO1lBQ0YsSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFDLENBQUM7Z0JBQ2hCLFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDOUUsQ0FBQztpQkFDRyxDQUFDO2dCQUNILFFBQVEsR0FBRyxNQUFNLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMvRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQU0sUUFBUSxDQUFDLEtBQUssQ0FBQztRQUNqQyxDQUFDO2dCQUFRLENBQUM7WUFDUixPQUFPO1FBQ1QsQ0FBQztJQUNILENBQUM7K0dBdEdtQixJQUFJO21HQUFKLElBQUksMndCQURILEVBQUU7OzRGQUNILElBQUk7a0JBRHpCLFNBQVM7K0JBQWEsRUFBRTt3REFNZCxPQUFPO3NCQUFmLEtBQUs7Z0JBWUcsUUFBUTtzQkFBaEIsS0FBSztnQkFXRyxHQUFHO3NCQUFYLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5pbXBvcnQgeyBDb21wb25lbnQsIGVmZmVjdCwgRWxlbWVudFJlZiwgSW5wdXQsIG1vZGVsLCBNb2RlbFNpZ25hbCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJlZnJlc2hlckN1c3RvbUV2ZW50IH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuaW1wb3J0IHsgQ29tcGlsZUxzdFRhYmxlRmllbGQsIENvbXBhcmlzb24gfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9jb21wYXJpc29uL2NvbXBhcmlzb25cIjtcclxuaW1wb3J0IHsgSHR0cFNlcnZpY2UsIFZpZXdSZXRvcm5vIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvd2ViL2h0dHAuc2VydmljZSc7XHJcbmltcG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWNzLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVmlld0ZpbHRyb3MgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9maWx0ZXJzL3ZpZXctZmlsdHJvc1wiO1xyXG5pbXBvcnQgeyBUYWJsZUZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL2NsYXNzZXMvaW5wdXRzL3RhYmxlLWZpZWxkXCI7XHJcbmltcG9ydCB7IFJvdXRlRGF0YSB9IGZyb20gXCIuLi8uLi8uLi9jbGFzc2VzL3JvdXRlcy9yb3V0ZS1kYXRhXCI7XHJcbmltcG9ydCB7IExvbmdQcm9wZXJ0eSB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcGFyaXNvbi9wcm9wZXJ0aWVzL2xvbmctcHJvcGVydHknO1xyXG5cclxuLy9DbGFzc2UgZGUgbGlzdGFnZW0sIGltcGxlbWVudGUgY2FycmVnYW1lbnRvIGUgZmlsdHJhZ2VtIGRlIGRhZG9zXHJcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZTogJycsIHN0eWxlczogJycgfSlcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIExpc3Q8VCBleHRlbmRzIEh0dHBTZXJ2aWNlPFY+LCBWID0gYW55PiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIHByb3RlY3RlZCBnZW5lcmljU2VydmljZTogR2VuZXJpY1NlcnZpY2U7XHJcbiAgcHJvdGVjdGVkIGFjdGl2YXRlZFJvdXRlOiBBY3RpdmF0ZWRSb3V0ZTtcclxuICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZjtcclxuICBASW5wdXQoKSBzZXJ2aWNlOiBUO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgXHJcbiAgICBlZmZlY3QoKCkgPT4ge1xyXG4gICAgICB0aGlzLlNldEZpbHRlcnMoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICAvKiogQG9wdGlvbmFsIEZpbHRybyBhIHNlciBhcGxpY2FkbyBuYSBidXNjYSBkYSBsaXN0YWdlbSBuYSBBUEkgKi9cclxuICBwcmVsb2FkRmlsdGVyOiBNb2RlbFNpZ25hbDxDb21wYXJpc29uW10+ID0gbW9kZWw8Q29tcGFyaXNvbltdPihbXSk7IFxyXG4gIFxyXG4gIC8qKiBFbmQtcG9pbnQgZGUgY2FycmVnYW1lbnRvIGRlIGRhZG9zLiBEZXZlIHNlciB1bWEgZnVuw6fDo28gbm8gc2VydmljZSBhcGxpY2FkbyAqL1xyXG4gIEBJbnB1dCgpIGxvYWRGcm9tOiAodmlldzogVmlld0ZpbHRyb3MpID0+IE9ic2VydmFibGU8Vmlld1JldG9ybm8+O1xyXG5cclxuXHJcbiAgbHN0RGFkb3M6IFZbXSA9IFtdO1xyXG4gIHRvdGFsICAgOiBudW1iZXI7XHJcbiAgbmVzdGVkICA6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBsb2FkaW5nIDogYm9vbGVhbiA9IHRydWU7XHJcbiAgXHJcbiAgb3JpZ2luYWxGaWx0ZXJzOiBDb21wYXJpc29uW10gPSBbXTtcclxuXHJcbiAgLyoqIEZpbHRybyBwcsOpY2FycmVnYWRvICAqL1xyXG4gIEBJbnB1dCgpIGZybTogVmlld0ZpbHRyb3MgPSBuZXcgVmlld0ZpbHRyb3MoKTtcclxuXHJcbiAgLyoqIExpc3RhIGRlIGNhbXBvcyBhIHNlcmVtIHN1YnN0aXR1w61kb3MgcGVsbyBwYWRyw6NvLCBhcm1hemVuYWRvIG5vIHNlcnZpY2UgZW52aWFkbyBjb21vIHBhcsOibWV0cm8gKi9cclxuICBASW5wdXQoKSBsc3RUYWJsZUZpZWxkczogVGFibGVGaWVsZFtdID0gW107XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5vcmlnaW5hbEZpbHRlcnMgPSB0aGlzLmZybS5maWx0ZXI7XHJcblxyXG4gICAgaWYodGhpcy5sc3RUYWJsZUZpZWxkcy5sZW5ndGggPT0gMCl7XHJcbiAgICAgIHRoaXMubHN0VGFibGVGaWVsZHMgPSB0aGlzLnNlcnZpY2UubHN0VGFibGVGaWVsZHM7XHJcbiAgICB9XHJcbiAgICBpZighdGhpcy5zZXJ2aWNlLnJvdXRlKXsgY29uc29sZS53YXJuKFwiWyBXYXJuaW5nISBdIFsgVXJsIGlzIHVuZGVmaW5lZCBdXCIpfVxyXG4gICAgaWYoIXRoaXMuc2VydmljZS50aXRsZSl7IGNvbnNvbGUud2FybihcIlsgV2FybmluZyEgXSBbIHRpdHVsbyBpcyB1bmRlZmluZWQgXVwiKX1cclxuICAgIFxyXG4gICAgLy9bIE5lc3RlZCBlbGVtZW50IF1cclxuICAgIGlmKHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudEVsZW1lbnQpe1xyXG4gICAgICB0aGlzLm5lc3RlZCA9ICh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5wYXJlbnRFbGVtZW50LnRhZ05hbWUgYXMgc3RyaW5nKS50b1VwcGVyQ2FzZSgpICE9IFwiSU9OLUNPTlRFTlRcIjtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLm5lc3RlZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgdGhpcy5TZXRGaWx0ZXJzKCk7XHJcbiAgICBpZih0aGlzLm5lc3RlZCl7IHRoaXMuUmVmcmVzaCgpOyB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgU2V0RmlsdGVycygpOiBQcm9taXNlPHZvaWQ+e1xyXG4gICAgYXdhaXQgdGhpcy5Mb2FkSWRDb21wYXJpc29uKCk7XHJcbiAgICBjb25zdCBjb21waWxlZCAgICAgID0gQ29tcGlsZUxzdFRhYmxlRmllbGQodGhpcy5sc3RUYWJsZUZpZWxkcyk7XHJcbiAgICBjb25zdCBwcmVsb2FkRmlsdGVyID0gdGhpcy5wcmVsb2FkRmlsdGVyKCk7XHJcbiAgICB0aGlzLmZybS5maWx0ZXIgICAgID0gWy4uLnByZWxvYWRGaWx0ZXIsIC4uLmNvbXBpbGVkLCAuLi50aGlzLm9yaWdpbmFsRmlsdGVyc10ubWFwKHAgPT4gcCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBMb2FkSWRDb21wYXJpc29uKCk6IFByb21pc2U8dm9pZD57XHJcbiAgICB0cnl7XHJcbiAgICAgIGNvbnN0IGRhdGE6IFJvdXRlRGF0YSA9IChhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFjdGl2YXRlZFJvdXRlLmRhdGEpKSBhcyBSb3V0ZURhdGE7XHJcblxyXG4gICAgICBjb25zdCBpZCAgID0gdGhpcy5nZW5lcmljU2VydmljZS5HZXRJZCh0aGlzLmFjdGl2YXRlZFJvdXRlLCBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5yb3V0ZURlcHRoKTtcclxuICAgICAgdmFyIGluZGV4OiBudW1iZXIgPSB0aGlzLmxzdFRhYmxlRmllbGRzLmluZGV4T2YodGhpcy5sc3RUYWJsZUZpZWxkcy5maW5kKHAgPT4gcC5pbmRleCA9PSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpKTtcclxuICAgICAgY29uc3QgZmlsdGVyOiBDb21wYXJpc29uID0gbmV3IExvbmdQcm9wZXJ0eShkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5wcm9wZXJ0eU5hbWUpLkVxdWFscyhpZCk7XHJcblxyXG4gICAgICBmaWx0ZXIudmFsdWUgPSBpZDtcclxuICAgICAgZmlsdGVyLmRpc2FibGVDaGFuZ2UgPSBkYXRhLmlkUHJlbG9hZGVyQ29uZmlndXJhdGlvbi5kaXNhYmxlQ2hhbmdlO1xyXG4gICAgICB0aGlzLmxzdFRhYmxlRmllbGRzW2luZGV4XS5maWx0ZXIgPSBbZmlsdGVyXTtcclxuICAgIH1maW5hbGx5eyBcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgUmVmcmVzaChldmVudD86IFJlZnJlc2hlckN1c3RvbUV2ZW50KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCB0aGlzLkxvYWQoKTtcclxuICAgIH1cclxuICAgIGZpbmFsbHl7XHJcbiAgICAgIGlmKGV2ZW50KXsgZXZlbnQudGFyZ2V0LmNvbXBsZXRlKCk7IH1cclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIGFzeW5jIExvYWQoKTogUHJvbWlzZTx2b2lkPntcclxuICAgIHZhciB2UmV0b3JubzogVmlld1JldG9ybm87XHJcblxyXG4gICAgdHJ5e1xyXG4gICAgICBpZih0aGlzLmxvYWRGcm9tKXtcclxuICAgICAgICB2UmV0b3JubyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZVt0aGlzLmxvYWRGcm9tLm5hbWVdKHRoaXMuZnJtKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZXtcclxuICAgICAgICB2UmV0b3JubyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VydmljZS5MaXN0KHRoaXMuZnJtKSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5sc3REYWRvcyA9IHZSZXRvcm5vLmxzdERhZG9zOyBcclxuICAgICAgdGhpcy50b3RhbCAgICA9IHZSZXRvcm5vLnRvdGFsOyBcclxuICAgIH0gZmluYWxseXsgXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcbn0iXX0=
@@ -0,0 +1,123 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { GenericService } from '../../../services/generics.service';
3
+ import { Utils } from '../../../services/utils.service';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../../../services/generics.service";
6
+ import * as i2 from "@ionic/angular";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@angular/forms";
9
+ /** Componente de paginação padrão */
10
+ export class DefaultPaginationComponent {
11
+ /** Valor total de dados */
12
+ set _total(value) {
13
+ this.total = value;
14
+ this.TotalPages = this.GetTotalPages();
15
+ this.lstPages = this.GetlstPages();
16
+ }
17
+ ;
18
+ /** Limite de páginas */
19
+ set _limit(value) {
20
+ this.limit = value;
21
+ this.TotalPages = this.GetTotalPages();
22
+ this.lstPages = this.GetlstPages();
23
+ }
24
+ ;
25
+ constructor(genericService) {
26
+ this.genericService = genericService;
27
+ this.total = 0;
28
+ this.limit = 0;
29
+ this.pageChange = new EventEmitter();
30
+ /** Evento emitido na mudança de valores (Pagina) */
31
+ this.changeEmitter = new EventEmitter();
32
+ this.pop_id = "popover-id-" + Utils.GenerateGUID();
33
+ this.lstPages = [];
34
+ this.TotalPages = 0;
35
+ }
36
+ ngOnInit() { }
37
+ GetlstPages() {
38
+ if (!this.TotalPages) {
39
+ return [];
40
+ }
41
+ var startIndex;
42
+ var start = [];
43
+ startIndex = this.page - 1;
44
+ var _ = [];
45
+ for (let i = this.TotalPages - 4; i <= this.TotalPages; i++) {
46
+ if (i > 0) {
47
+ _.push(i);
48
+ }
49
+ }
50
+ for (let i = startIndex; i <= this.TotalPages && i < startIndex + 5; i++) {
51
+ if (i > 0) {
52
+ start.push(i);
53
+ }
54
+ }
55
+ if (startIndex == 0 && this.TotalPages >= 5) {
56
+ start.push(5);
57
+ }
58
+ if (start[0] > _[0]) {
59
+ return _;
60
+ }
61
+ return start;
62
+ }
63
+ GetTotalPages() {
64
+ return this.limit ? Math.ceil(this.total / this.limit) : Math.ceil(this.total / this.total);
65
+ }
66
+ PageAdd() {
67
+ if (this.page + 1 > this.TotalPages) {
68
+ return;
69
+ }
70
+ this.SetPage(this.page + 1);
71
+ }
72
+ PageSub() {
73
+ if (this.page - 1 < 1) {
74
+ return;
75
+ }
76
+ this.SetPage(this.page - 1);
77
+ }
78
+ SetPage(value) {
79
+ if (value != this.page) {
80
+ this.pageChange.emit(value);
81
+ this.EmitChange();
82
+ setTimeout(() => {
83
+ this.TotalPages = this.GetTotalPages();
84
+ this.lstPages = this.GetlstPages();
85
+ }, 100);
86
+ }
87
+ }
88
+ SetPageManual() {
89
+ if (this._page && this._page > 0 && this._page <= this.TotalPages) {
90
+ this.SetPage(this._page);
91
+ }
92
+ else {
93
+ this.genericService.PresentToast("Página inválida");
94
+ }
95
+ }
96
+ EmitChange() {
97
+ this.changeEmitter.emit();
98
+ }
99
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPaginationComponent, deps: [{ token: i1.GenericService }], target: i0.ɵɵFactoryTarget.Component }); }
100
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DefaultPaginationComponent, selector: "default-pagination", inputs: { _total: ["total", "_total"], _limit: ["limit", "_limit"], length: "length", loading: "loading", page: "page" }, outputs: { pageChange: "pageChange", changeEmitter: "change" }, ngImport: i0, template: "<div id=\"pagination\" class=\"flex items-center rounded-b-2xl px-4 py-2 portrait:flex-col\">\r\n <div class=\"w-full h-full items-center justify-start flex portrait:justify-center\">\r\n <ion-spinner [hidden]=\"!(loading && lstPages.length == 0)\"></ion-spinner>\r\n <ion-text [hidden]=\"loading && lstPages.length == 0\">\r\n <div class=\"flex\">\r\n Mostrando &nbsp;\r\n <ion-skeleton-text *ngIf=\"loading\" [animated]=\"true\" style=\"width: 2ch\"></ion-skeleton-text>\r\n <b *ngIf=\"!loading\">{{limit * page - limit + length}}</b> &nbsp;\r\n de \r\n @if (total != null) {\r\n <b>&nbsp; {{total}} &nbsp;</b> items\r\n }\r\n @else{\r\n <b>&nbsp; - &nbsp; </b> items\r\n }\r\n </div>\r\n </ion-text>\r\n </div>\r\n <div class=\"w-full h-full items-center justify-end flex portrait:justify-center\" *ngIf=\"total != null\">\r\n <button class=\"flex items-center\" [disabled]=\"loading\" (click)=\"PageSub()\">\r\n <ion-icon [ngClass]=\"{'opacity-20': page == 1}\" name=\"chevron-back\" class=\"cursor-pointer default transition\"></ion-icon>\r\n </button>\r\n\r\n <ion-spinner *ngIf=\"loading && lstPages.length == 0\"></ion-spinner>\r\n\r\n <button [disabled]=\"loading\" class=\"page\" *ngFor=\"let item of lstPages\" [ngClass]=\"{ 'selected' : page == item }\" (click)=\"SetPage(item)\"> {{item}} </button>\r\n\r\n <button class=\"flex items-center\" [disabled]=\"loading\" (click)=\"PageAdd()\">\r\n <ion-icon [ngClass]=\"{'opacity-20': page == TotalPages }\" name=\"chevron-forward\" class=\"cursor-pointer default transition\"></ion-icon>\r\n </button>\r\n\r\n @if (TotalPages > 5) {\r\n <button [disabled]=\"loading\" class=\"page\" [id]=\"pop_id\"><ion-icon name=\"search\"></ion-icon></button>\r\n <ion-popover [trigger]=\"pop_id\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content>\r\n <div class=\"grid grid-cols-10 pl-3\">\r\n <div class=\"col-span-8 pb-2\">\r\n <ion-input class=\"number-class\" [(ngModel)]=\"_page\" type=\"Number\" labelPlacement=\"stacked\" label=\"P\u00E1gina [Max. {{TotalPages}}]\"></ion-input>\r\n </div>\r\n <div class=\"col-span-2\">\r\n <ion-button [disabled]=\"loading\" class=\"size-full\" size=\"small\" (click)=\"SetPageManual()\" style=\"--border-radius: 0rem\">\r\n <ion-icon class=\"w-4 aspect-square\" slot=\"icon-only\" name=\"checkmark-circle\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n }\r\n </div>\r\n</div>", styles: ["#pagination{background-color:var(--ion-color-step-300);color:var(--ion-color-step-700)}@media (prefers-color-scheme: light){#pagination{background-color:var(--ion-framework-table-light)}}button.page{margin-left:.25rem;margin-right:.25rem;display:flex;height:1.5rem;min-width:1.5rem;cursor:pointer;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;padding-left:.25rem;padding-right:.25rem;text-align:center;border:var(--ion-color-dark) solid 1px;color:var(--ion-color-dark);transition:all .25s}button.page:disabled{opacity:.75}button.page.selected{background-color:var(--ion-color-dark);color:var(--ion-color-dark-contrast)!important}\n"], dependencies: [{ kind: "component", type: i2.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonInput, selector: "ion-input", inputs: ["autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearInputIcon", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i2.IonSkeletonText, selector: "ion-skeleton-text", inputs: ["animated"] }, { kind: "component", type: i2.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i2.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i2.NumericValueAccessor, selector: "ion-input[type=number],ion-range" }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
101
+ }
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DefaultPaginationComponent, decorators: [{
103
+ type: Component,
104
+ args: [{ selector: 'default-pagination', template: "<div id=\"pagination\" class=\"flex items-center rounded-b-2xl px-4 py-2 portrait:flex-col\">\r\n <div class=\"w-full h-full items-center justify-start flex portrait:justify-center\">\r\n <ion-spinner [hidden]=\"!(loading && lstPages.length == 0)\"></ion-spinner>\r\n <ion-text [hidden]=\"loading && lstPages.length == 0\">\r\n <div class=\"flex\">\r\n Mostrando &nbsp;\r\n <ion-skeleton-text *ngIf=\"loading\" [animated]=\"true\" style=\"width: 2ch\"></ion-skeleton-text>\r\n <b *ngIf=\"!loading\">{{limit * page - limit + length}}</b> &nbsp;\r\n de \r\n @if (total != null) {\r\n <b>&nbsp; {{total}} &nbsp;</b> items\r\n }\r\n @else{\r\n <b>&nbsp; - &nbsp; </b> items\r\n }\r\n </div>\r\n </ion-text>\r\n </div>\r\n <div class=\"w-full h-full items-center justify-end flex portrait:justify-center\" *ngIf=\"total != null\">\r\n <button class=\"flex items-center\" [disabled]=\"loading\" (click)=\"PageSub()\">\r\n <ion-icon [ngClass]=\"{'opacity-20': page == 1}\" name=\"chevron-back\" class=\"cursor-pointer default transition\"></ion-icon>\r\n </button>\r\n\r\n <ion-spinner *ngIf=\"loading && lstPages.length == 0\"></ion-spinner>\r\n\r\n <button [disabled]=\"loading\" class=\"page\" *ngFor=\"let item of lstPages\" [ngClass]=\"{ 'selected' : page == item }\" (click)=\"SetPage(item)\"> {{item}} </button>\r\n\r\n <button class=\"flex items-center\" [disabled]=\"loading\" (click)=\"PageAdd()\">\r\n <ion-icon [ngClass]=\"{'opacity-20': page == TotalPages }\" name=\"chevron-forward\" class=\"cursor-pointer default transition\"></ion-icon>\r\n </button>\r\n\r\n @if (TotalPages > 5) {\r\n <button [disabled]=\"loading\" class=\"page\" [id]=\"pop_id\"><ion-icon name=\"search\"></ion-icon></button>\r\n <ion-popover [trigger]=\"pop_id\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content>\r\n <div class=\"grid grid-cols-10 pl-3\">\r\n <div class=\"col-span-8 pb-2\">\r\n <ion-input class=\"number-class\" [(ngModel)]=\"_page\" type=\"Number\" labelPlacement=\"stacked\" label=\"P\u00E1gina [Max. {{TotalPages}}]\"></ion-input>\r\n </div>\r\n <div class=\"col-span-2\">\r\n <ion-button [disabled]=\"loading\" class=\"size-full\" size=\"small\" (click)=\"SetPageManual()\" style=\"--border-radius: 0rem\">\r\n <ion-icon class=\"w-4 aspect-square\" slot=\"icon-only\" name=\"checkmark-circle\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n </div>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n }\r\n </div>\r\n</div>", styles: ["#pagination{background-color:var(--ion-color-step-300);color:var(--ion-color-step-700)}@media (prefers-color-scheme: light){#pagination{background-color:var(--ion-framework-table-light)}}button.page{margin-left:.25rem;margin-right:.25rem;display:flex;height:1.5rem;min-width:1.5rem;cursor:pointer;align-items:center;justify-content:center;border-radius:.375rem;border-width:1px;padding-left:.25rem;padding-right:.25rem;text-align:center;border:var(--ion-color-dark) solid 1px;color:var(--ion-color-dark);transition:all .25s}button.page:disabled{opacity:.75}button.page.selected{background-color:var(--ion-color-dark);color:var(--ion-color-dark-contrast)!important}\n"] }]
105
+ }], ctorParameters: () => [{ type: i1.GenericService }], propDecorators: { _total: [{
106
+ type: Input,
107
+ args: ['total']
108
+ }], _limit: [{
109
+ type: Input,
110
+ args: ['limit']
111
+ }], length: [{
112
+ type: Input
113
+ }], loading: [{
114
+ type: Input
115
+ }], page: [{
116
+ type: Input
117
+ }], pageChange: [{
118
+ type: Output
119
+ }], changeEmitter: [{
120
+ type: Output,
121
+ args: ['change']
122
+ }] } });
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmYXVsdC1wYWdpbmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NhcHBoaXJlLWlvbi1mcmFtZXdvcmsvc3JjL2xpYi9jb21wb25lbnRzL2RlZmF1bHQvZGVmYXVsdC1wYWdpbmF0aW9uL2RlZmF1bHQtcGFnaW5hdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zYXBwaGlyZS1pb24tZnJhbWV3b3JrL3NyYy9saWIvY29tcG9uZW50cy9kZWZhdWx0L2RlZmF1bHQtcGFnaW5hdGlvbi9kZWZhdWx0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7QUFFeEQsc0NBQXNDO0FBTXRDLE1BQU0sT0FBTywwQkFBMEI7SUFLckMsMkJBQTJCO0lBQzNCLElBQW9CLE1BQU0sQ0FBQyxLQUFhO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFBQSxDQUFDO0lBQ0Ysd0JBQXdCO0lBQ3hCLElBQW9CLE1BQU0sQ0FBQyxLQUFvQjtRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN2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QyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBHZW5lcmljU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2dlbmVyaWNzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzLnNlcnZpY2UnO1xyXG5cclxuLyoqIENvbXBvbmVudGUgZGUgcGFnaW5hw6fDo28gcGFkcsOjbyAgKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdkZWZhdWx0LXBhZ2luYXRpb24nLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZWZhdWx0LXBhZ2luYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RlZmF1bHQtcGFnaW5hdGlvbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGVmYXVsdFBhZ2luYXRpb25Db21wb25lbnQgIGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblxyXG4gIHRvdGFsOiBudW1iZXIgPSAwO1xyXG4gIGxpbWl0OiBudW1iZXIgfCBudWxsID0gMDtcclxuICAvKiogVmFsb3IgdG90YWwgZGUgZGFkb3MgKi9cclxuICBASW5wdXQoJ3RvdGFsJykgc2V0IF90b3RhbCh2YWx1ZTogbnVtYmVyKXsgIFxyXG4gICAgdGhpcy50b3RhbCA9IHZhbHVlO1xyXG4gICAgdGhpcy5Ub3RhbFBhZ2VzID0gdGhpcy5HZXRUb3RhbFBhZ2VzKCk7XHJcbiAgICB0aGlzLmxzdFBhZ2VzID0gdGhpcy5HZXRsc3RQYWdlcygpO1xyXG4gIH07XHJcbiAgLyoqIExpbWl0ZSBkZSBww6FnaW5hcyAqL1xyXG4gIEBJbnB1dCgnbGltaXQnKSBzZXQgX2xpbWl0KHZhbHVlOiBudW1iZXIgfCBudWxsKXsgXHJcbiAgICB0aGlzLmxpbWl0ID0gdmFsdWU7XHJcbiAgICB0aGlzLlRvdGFsUGFnZXMgPSB0aGlzLkdldFRvdGFsUGFnZXMoKTtcclxuICAgIHRoaXMubHN0UGFnZXMgPSB0aGlzLkdldGxzdFBhZ2VzKCk7XHJcbiAgfTtcclxuXHJcbiAgLyoqIFF1YW50aWRhZGUgZGUgZGFkb3MgZW0gdGVsYSAqL1xyXG4gIEBJbnB1dCgpIGxlbmd0aDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcbiAgXHJcbiAgLyoqIFBhZ2luYSBhdHVhbCAodXNhbmRvIHR3byB3YXkgZGF0YSBiaW5kaW5nKSAqL1xyXG4gIEBJbnB1dCgpIHBhZ2U6IG51bWJlcjtcclxuICBAT3V0cHV0KCkgcGFnZUNoYW5nZTogRXZlbnRFbWl0dGVyPG51bWJlcj4gPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcclxuICBcclxuICAvKiogRXZlbnRvIGVtaXRpZG8gbmEgbXVkYW7Dp2EgZGUgdmFsb3JlcyAoUGFnaW5hKSAqL1xyXG4gIEBPdXRwdXQoJ2NoYW5nZScpIGNoYW5nZUVtaXR0ZXI6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICBcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZ2VuZXJpY1NlcnZpY2U6IEdlbmVyaWNTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG4gIHBvcF9pZDogc3RyaW5nID0gXCJwb3BvdmVyLWlkLVwiICsgVXRpbHMuR2VuZXJhdGVHVUlEKCk7XHJcblxyXG4gIEdldGxzdFBhZ2VzKCk6IG51bWJlcltdIHtcclxuICAgIGlmKCF0aGlzLlRvdGFsUGFnZXMpeyByZXR1cm4gW107IH1cclxuICAgIHZhciBzdGFydEluZGV4OiBudW1iZXI7XHJcbiAgICB2YXIgc3RhcnQ6IG51bWJlcltdID0gW107XHJcblxyXG4gICAgc3RhcnRJbmRleCA9IHRoaXMucGFnZSAtIDE7XHJcblxyXG4gICAgdmFyIF86IG51bWJlcltdID0gW107XHJcbiAgICBmb3IobGV0IGkgPSB0aGlzLlRvdGFsUGFnZXMgLSA0OyBpIDw9IHRoaXMuVG90YWxQYWdlcyA7IGkrKyl7XHJcbiAgICAgIGlmKGkgPiAwKXtcclxuICAgICAgICBfLnB1c2goaSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3IobGV0IGkgPSBzdGFydEluZGV4OyBpIDw9IHRoaXMuVG90YWxQYWdlcyAmJiBpIDwgc3RhcnRJbmRleCArIDU7IGkrKyl7XHJcbiAgICAgIGlmKGkgPiAwKXtcclxuICAgICAgICBzdGFydC5wdXNoKGkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZihzdGFydEluZGV4ID09IDAgJiYgdGhpcy5Ub3RhbFBhZ2VzID49IDUpe1xyXG4gICAgICBzdGFydC5wdXNoKDUpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmKHN0YXJ0WzBdID4gX1swXSl7XHJcbiAgICAgIHJldHVybiBfO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBzdGFydDtcclxuICB9XHJcblxyXG4gIEdldFRvdGFsUGFnZXMoKTogbnVtYmVye1xyXG4gICAgcmV0dXJuIHRoaXMubGltaXQgPyBNYXRoLmNlaWwodGhpcy50b3RhbCAvIHRoaXMubGltaXQpIDogTWF0aC5jZWlsKHRoaXMudG90YWwgLyB0aGlzLnRvdGFsKVxyXG4gIH1cclxuXHJcbiAgbHN0UGFnZXMgIDogbnVtYmVyW10gPSBbXTtcclxuICBUb3RhbFBhZ2VzOiBudW1iZXIgPSAwO1xyXG5cclxuICBQYWdlQWRkKCk6IHZvaWR7XHJcbiAgICBpZih0aGlzLnBhZ2UgKyAxID4gdGhpcy5Ub3RhbFBhZ2VzKXsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLlNldFBhZ2UodGhpcy5wYWdlICsgMSk7XHJcbiAgfVxyXG4gIFxyXG4gIFBhZ2VTdWIoKTogdm9pZHtcclxuICAgIGlmKHRoaXMucGFnZSAtIDEgPCAxKXsgcmV0dXJuOyB9XHJcbiAgICB0aGlzLlNldFBhZ2UodGhpcy5wYWdlIC0gMSk7XHJcbiAgfVxyXG5cclxuICBTZXRQYWdlKHZhbHVlOiBudW1iZXIpOiB2b2lke1xyXG4gICAgaWYodmFsdWUgIT0gdGhpcy5wYWdlKXtcclxuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQodmFsdWUpO1xyXG4gICAgICB0aGlzLkVtaXRDaGFuZ2UoKVxyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5Ub3RhbFBhZ2VzID0gdGhpcy5HZXRUb3RhbFBhZ2VzKCk7XHJcbiAgICAgICAgdGhpcy5sc3RQYWdlcyA9IHRoaXMuR2V0bHN0UGFnZXMoKTtcclxuICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9wYWdlOiBudW1iZXI7XHJcbiAgU2V0UGFnZU1hbnVhbCgpe1xyXG4gICAgaWYodGhpcy5fcGFnZSAmJiB0aGlzLl9wYWdlID4gMCAmJiB0aGlzLl9wYWdlIDw9IHRoaXMuVG90YWxQYWdlcyl7XHJcbiAgICAgIHRoaXMuU2V0UGFnZSh0aGlzLl9wYWdlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLmdlbmVyaWNTZXJ2aWNlLlByZXNlbnRUb2FzdChcIlDDoWdpbmEgaW52w6FsaWRhXCIpXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBFbWl0Q2hhbmdlKCk6IHZvaWR7XHJcbiAgICB0aGlzLmNoYW5nZUVtaXR0ZXIuZW1pdCgpO1xyXG4gIH1cclxufSIsIjxkaXYgaWQ9XCJwYWdpbmF0aW9uXCIgY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlciByb3VuZGVkLWItMnhsIHB4LTQgcHktMiBwb3J0cmFpdDpmbGV4LWNvbFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LXN0YXJ0IGZsZXggcG9ydHJhaXQ6anVzdGlmeS1jZW50ZXJcIj5cclxuICAgIDxpb24tc3Bpbm5lciBbaGlkZGVuXT1cIiEobG9hZGluZyAmJiBsc3RQYWdlcy5sZW5ndGggPT0gMClcIj48L2lvbi1zcGlubmVyPlxyXG4gICAgPGlvbi10ZXh0IFtoaWRkZW5dPVwibG9hZGluZyAmJiBsc3RQYWdlcy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleFwiPlxyXG4gICAgICAgIE1vc3RyYW5kbyAmbmJzcDtcclxuICAgICAgICA8aW9uLXNrZWxldG9uLXRleHQgKm5nSWY9XCJsb2FkaW5nXCIgW2FuaW1hdGVkXT1cInRydWVcIiBzdHlsZT1cIndpZHRoOiAyY2hcIj48L2lvbi1za2VsZXRvbi10ZXh0PlxyXG4gICAgICAgIDxiICpuZ0lmPVwiIWxvYWRpbmdcIj57e2xpbWl0ICogcGFnZSAtIGxpbWl0ICsgbGVuZ3RofX08L2I+ICAmbmJzcDtcclxuICAgICAgICBkZSBcclxuICAgICAgICBAaWYgKHRvdGFsICE9IG51bGwpIHtcclxuICAgICAgICAgIDxiPiZuYnNwOyB7e3RvdGFsfX0gJm5ic3A7PC9iPiBpdGVtc1xyXG4gICAgICAgIH1cclxuICAgICAgICBAZWxzZXtcclxuICAgICAgICAgIDxiPiZuYnNwOyAtICZuYnNwOyA8L2I+IGl0ZW1zXHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvaW9uLXRleHQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cInctZnVsbCBoLWZ1bGwgaXRlbXMtY2VudGVyIGp1c3RpZnktZW5kIGZsZXggcG9ydHJhaXQ6anVzdGlmeS1jZW50ZXJcIiAqbmdJZj1cInRvdGFsICE9IG51bGxcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKGNsaWNrKT1cIlBhZ2VTdWIoKVwiPlxyXG4gICAgICA8aW9uLWljb24gW25nQ2xhc3NdPVwieydvcGFjaXR5LTIwJzogcGFnZSA9PSAxfVwiIG5hbWU9XCJjaGV2cm9uLWJhY2tcIiBjbGFzcz1cImN1cnNvci1wb2ludGVyIGRlZmF1bHQgdHJhbnNpdGlvblwiPjwvaW9uLWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8aW9uLXNwaW5uZXIgKm5nSWY9XCJsb2FkaW5nICYmIGxzdFBhZ2VzLmxlbmd0aCA9PSAwXCI+PC9pb24tc3Bpbm5lcj5cclxuXHJcbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgY2xhc3M9XCJwYWdlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbHN0UGFnZXNcIiBbbmdDbGFzc109XCJ7ICdzZWxlY3RlZCcgOiBwYWdlID09IGl0ZW0gfVwiIChjbGljayk9XCJTZXRQYWdlKGl0ZW0pXCI+IHt7aXRlbX19IDwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gY2xhc3M9XCJmbGV4IGl0ZW1zLWNlbnRlclwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgKGNsaWNrKT1cIlBhZ2VBZGQoKVwiPlxyXG4gICAgICA8aW9uLWljb24gW25nQ2xhc3NdPVwieydvcGFjaXR5LTIwJzogcGFnZSA9PSBUb3RhbFBhZ2VzIH1cIiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkXCIgY2xhc3M9XCJjdXJzb3ItcG9pbnRlciBkZWZhdWx0IHRyYW5zaXRpb25cIj48L2lvbi1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgQGlmIChUb3RhbFBhZ2VzID4gNSkge1xyXG4gICAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgY2xhc3M9XCJwYWdlXCIgW2lkXT1cInBvcF9pZFwiPjxpb24taWNvbiBuYW1lPVwic2VhcmNoXCI+PC9pb24taWNvbj48L2J1dHRvbj5cclxuICAgICAgPGlvbi1wb3BvdmVyIFt0cmlnZ2VyXT1cInBvcF9pZFwiIHRyaWdnZXJBY3Rpb249XCJjbGlja1wiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDxpb24tY29udGVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWQgZ3JpZC1jb2xzLTEwIHBsLTNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNwYW4tOCBwYi0yXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWlucHV0IGNsYXNzPVwibnVtYmVyLWNsYXNzXCIgWyhuZ01vZGVsKV09XCJfcGFnZVwiIHR5cGU9XCJOdW1iZXJcIiBsYWJlbFBsYWNlbWVudD1cInN0YWNrZWRcIiBsYWJlbD1cIlDDoWdpbmEgW01heC4ge3tUb3RhbFBhZ2VzfX1dXCI+PC9pb24taW5wdXQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zcGFuLTJcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tYnV0dG9uIFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgY2xhc3M9XCJzaXplLWZ1bGxcIiBzaXplPVwic21hbGxcIiAoY2xpY2spPVwiU2V0UGFnZU1hbnVhbCgpXCIgc3R5bGU9XCItLWJvcmRlci1yYWRpdXM6IDByZW1cIj5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIGNsYXNzPVwidy00IGFzcGVjdC1zcXVhcmVcIiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImNoZWNrbWFyay1jaXJjbGVcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvaW9uLWNvbnRlbnQ+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9pb24tcG9wb3Zlcj5cclxuICAgIH1cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=