@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 @@
1
+ {"version":3,"file":"sapphire-ion-framework.mjs","sources":["../../../projects/sapphire-ion-framework/src/lib/classes/comparison/comparison-operator.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/comparison.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/comparison-value-type.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/bool-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/date-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/datetime-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/decimal-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/enum-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/implicit-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/int-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/long-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/string-property.ts","../../../projects/sapphire-ion-framework/src/lib/classes/comparison/properties/time-property.ts","../../../projects/sapphire-ion-framework/src/lib/services/utils.service.ts","../../../projects/sapphire-ion-framework/src/lib/classes/filters/view-filtros.ts","../../../projects/sapphire-ion-framework/src/lib/classes/inputs/table-field-form-builder.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-type.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-string/input-string.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/core.module.ts","../../../projects/sapphire-ion-framework/src/lib/classes/environment.ts","../../../projects/sapphire-ion-framework/src/lib/services/environment.service.ts","../../../projects/sapphire-ion-framework/src/lib/services/web/api-url-provider.service.ts","../../../projects/sapphire-ion-framework/src/lib/services/generics.service.ts","../../../projects/sapphire-ion-framework/src/lib/services/web/http.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-bool/input-bool.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/services/web/http.ativo.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input.select.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-date/input-date.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-file/input-file.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/classes/inputs/table-field.ts","../../../projects/sapphire-ion-framework/src/lib/classes/routes/default-routing-factory.ts","../../../projects/sapphire-ion-framework/src/lib/classes/routes/id-preloader-configuration.ts","../../../projects/sapphire-ion-framework/src/lib/classes/routes/route-data.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/i-carousel-item.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/loading/loading.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/loading/loading.component.html","../../../projects/sapphire-ion-framework/src/lib/services/auth.service.ts","../../../projects/sapphire-ion-framework/src/lib/pipes/secure.pipe.ts","../../../projects/sapphire-ion-framework/src/lib/components/image/image.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/image/image.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-image/carousel-image.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-image/carousel-image.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-item/carousel-item.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel-item/carousel-item.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel.component.html","../../../projects/sapphire-ion-framework/src/lib/components/carousel/carousel.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/content-block/content-block.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/content-block/content-block.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/header-list/header-list.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/header-list/header-list.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/list.ts","../../../projects/sapphire-ion-framework/src/lib/services/web/storage.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-provider-factory.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/custom-input.ts","../../../projects/sapphire-ion-framework/src/lib/directives/ng-var.directive.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-loading/input-loading.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-loading/input-loading.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-file/input-file.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-file/input-file.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-file/download-button/download-button.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-file/download-button/download-button.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-pagination/default-pagination.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-pagination/default-pagination.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-date/input-date.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-date/input-date.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-decimal/input-decimal.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-decimal/input-decimal.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/ISelect.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select-internal-option/input-select-internal-option.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select-option/input-select-option.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select-option/input-select-option.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/custom-signal-input.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-string/input-string.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-string/input-string.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/th-filter/th-filter.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/th-filter/th-filter.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/default-table.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-table/default-table.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/default-list.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/default-list.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-list/abstract-list.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/header-view/header-view.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/header-view/header-view.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/abstract-view.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/view.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-bool/input-bool.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-bool/input-bool.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-textarea/input-textarea.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-textarea/input-textarea.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/default-view.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default-view/default-view.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-color/input-color.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-color/input-color.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-select/input-select-template.directive.ts","../../../projects/sapphire-ion-framework/src/lib/components/tooltip/tooltip.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/tooltip/tooltip.component.html","../../../projects/sapphire-ion-framework/src/lib/components/text-tooltip/text-tooltip.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/text-tooltip/text-tooltip.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/inputs.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/default/default.module.ts","../../../projects/sapphire-ion-framework/src/lib/services/route/route.cache.service.ts","../../../projects/sapphire-ion-framework/src/lib/services/route/route.provider.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/default-page/default.page.ts","../../../projects/sapphire-ion-framework/src/lib/components/default-page/default.page.html","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-file.directive.ts","../../../projects/sapphire-ion-framework/src/lib/components/drag-drop-file/drag-drop-file.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html","../../../projects/sapphire-ion-framework/src/lib/components/drawer/menu.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer-group/drawer-group.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer-group/drawer-group.component.html","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/drawer/drawer.component.html","../../../projects/sapphire-ion-framework/src/lib/components/filter/filter.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/filter/filter.component.html","../../../projects/sapphire-ion-framework/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html","../../../projects/sapphire-ion-framework/src/lib/components/info-popover/info-popover.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/info-popover/info-popover.component.html","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-default-configurations.ts","../../../projects/sapphire-ion-framework/src/lib/components/inputs/input-validators.ts","../../../projects/sapphire-ion-framework/src/lib/services/usuario.service.ts","../../../projects/sapphire-ion-framework/src/lib/components/login/login-admin/login-admin.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/login/login-admin/login-admin.component.html","../../../projects/sapphire-ion-framework/src/lib/components/login/login.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/login/login.component.html","../../../projects/sapphire-ion-framework/src/lib/components/main-content/main-content.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/main-content/main-content.component.html","../../../projects/sapphire-ion-framework/src/lib/components/stepper/step/step.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/stepper/step/step.component.html","../../../projects/sapphire-ion-framework/src/lib/components/stepper/stepper.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/stepper/stepper.component.html","../../../projects/sapphire-ion-framework/src/lib/components/stepper/stepper.module.ts","../../../projects/sapphire-ion-framework/src/lib/components/tabs/tab/tab.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/tabs/tab/tab.component.html","../../../projects/sapphire-ion-framework/src/lib/components/tabs/tabs/tabs.component.ts","../../../projects/sapphire-ion-framework/src/lib/components/tabs/tabs/tabs.component.html","../../../projects/sapphire-ion-framework/src/lib/components/tabs/tabs.module.ts","../../../projects/sapphire-ion-framework/src/lib/guards/auth.guard.ts","../../../projects/sapphire-ion-framework/src/lib/guards/error.interceptor.ts","../../../projects/sapphire-ion-framework/src/lib/guards/token.interceptor.ts","../../../projects/sapphire-ion-framework/src/lib/index.ts","../../../projects/sapphire-ion-framework/src/public-api.ts","../../../projects/sapphire-ion-framework/src/sapphire-ion-framework.ts"],"sourcesContent":["export enum ComparisonOperator{\r\n Equals = 1,\r\n GreaterThan = 2,\r\n GreaterThanOrEqual = 3,\r\n LessThan = 4,\r\n LessThanOrEqual = 5,\r\n IsContainedIn = 6,\r\n}\r\n\r\nexport const ComparisonOperatorString: Map<ComparisonOperator, string> = new Map<ComparisonOperator, string>([\r\n [ComparisonOperator.Equals , \"Equals\" ],\r\n [ComparisonOperator.GreaterThan , \"GreaterThan\" ],\r\n [ComparisonOperator.GreaterThanOrEqual, \"GreaterThanOrEqual\"],\r\n [ComparisonOperator.LessThan , \"LessThan\" ],\r\n [ComparisonOperator.LessThanOrEqual , \"LessThanOrEqual\" ],\r\n [ComparisonOperator.IsContainedIn , \"IsContainedIn\" ],\r\n]);\r\n","import { TableField } from \"../inputs/table-field\";\r\nimport { ComparisonOperator, ComparisonOperatorString } from \"./comparison-operator\";\r\nimport { ComparisonValueType } from \"./comparison-value-type\";\r\n\r\nexport class Comparison<T = any> {\r\n constructor(\r\n public propertyName: string,\r\n public operator: ComparisonOperator,\r\n public value: T | undefined = undefined,\r\n public valueType: ComparisonValueType,\r\n\r\n public disableChange: boolean = false,\r\n\r\n /** @beta */\r\n public isNot: boolean = false,\r\n\r\n /** @beta */\r\n public targetTable: string | undefined = undefined,\r\n ){}\r\n\r\n public toString(): string {\r\n return `${this.propertyName} ${ComparisonOperatorString.get(this.operator)} ${this.value}`;\r\n }\r\n}\r\n\r\nexport function CompileLstTableField(lstTableFields: TableField[]): Comparison[] {\r\n var lstComparison: Comparison[] = [];\r\n for (const tf of lstTableFields) {\r\n if(!tf.filter){ continue; } \r\n\r\n if(lstComparison){\r\n lstComparison.push(...tf.filter);\r\n }else{\r\n lstComparison = [...tf.filter]; \r\n }\r\n }\r\n return lstComparison;\r\n}\r\n\r\n/**\r\n * @deprecated\r\n */\r\nexport function CompileFilters(filter: Comparison[]){\r\n return filter.map(p => p);\r\n}","export enum ComparisonValueType{\r\n Long = 10,\r\n ListLong = 11,\r\n \r\n Int = 20,\r\n ListInt = 21,\r\n \r\n Enum = 30,\r\n ListEnum = 31,\r\n\r\n Decimal = 40,\r\n ListDecimal = 41,\r\n\r\n String = 50,\r\n ListString = 51,\r\n\r\n DateTime = 60,\r\n ListDateTime = 61,\r\n\r\n Date = 70,\r\n ListDate = 71,\r\n\r\n Time = 80,\r\n ListTime = 81,\r\n\r\n\r\n List = 90,\r\n ListList = 91,\r\n\r\n Bool = 100,\r\n ListBool = 101,\r\n\r\n ListUnknown = 200,\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class BoolProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: boolean): Comparison<boolean> {\r\n return new Comparison<boolean>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Bool);\r\n }\r\n IsContainedIn(value: boolean[]): Comparison<boolean[]> {\r\n return new Comparison<boolean[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListBool);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class DateProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Date);\r\n }\r\n GreaterThan(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.Date);\r\n }\r\n GreaterThanOrEqual(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.Date);\r\n }\r\n LessThan(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.Date);\r\n }\r\n LessThanOrEqual(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.Date);\r\n }\r\n IsContainedIn(value: string[]): Comparison<string[]> {\r\n return new Comparison<string[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListDate);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class DateTimeProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.DateTime);\r\n }\r\n GreaterThan(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.DateTime);\r\n }\r\n GreaterThanOrEqual(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.DateTime);\r\n }\r\n LessThan(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.DateTime);\r\n }\r\n LessThanOrEqual(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.DateTime);\r\n }\r\n IsContainedIn(value: string[]): Comparison<string[]> {\r\n return new Comparison<string[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListDateTime);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class DecimalProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Decimal);\r\n }\r\n GreaterThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.Decimal);\r\n }\r\n GreaterThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.Decimal);\r\n }\r\n LessThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.Decimal);\r\n }\r\n LessThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.Decimal);\r\n }\r\n IsContainedIn(value: number[]): Comparison<number[]> {\r\n return new Comparison<number[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListDecimal);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class EnumProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Enum);\r\n }\r\n GreaterThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.Enum);\r\n }\r\n GreaterThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.Enum);\r\n }\r\n LessThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.Enum);\r\n }\r\n LessThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.Enum);\r\n }\r\n IsContainedIn(value: number[]): Comparison<number[]> {\r\n return new Comparison<number[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListEnum);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class ImplicitProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n IsContainedIn(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListUnknown);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class IntProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Int);\r\n }\r\n GreaterThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.Int);\r\n }\r\n GreaterThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.Int);\r\n }\r\n LessThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.Int);\r\n }\r\n LessThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.Int);\r\n }\r\n IsContainedIn(value: number[]): Comparison<number[]> {\r\n return new Comparison<number[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListInt);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class LongProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Long);\r\n }\r\n GreaterThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.Long);\r\n }\r\n GreaterThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.Long);\r\n }\r\n LessThan(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.Long);\r\n }\r\n LessThanOrEqual(value: number): Comparison<number> {\r\n return new Comparison<number>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.Long);\r\n }\r\n IsContainedIn(value: number[]): Comparison<number[]> {\r\n return new Comparison<number[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListLong);\r\n }\r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class StringProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.String);\r\n }\r\n IsContainedIn(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListString);\r\n }\r\n \r\n}","import { Comparison } from \"../comparison\";\r\nimport { ComparisonOperator } from \"../comparison-operator\";\r\nimport { ComparisonValueType } from \"../comparison-value-type\";\r\n\r\nexport class TimeProperty {\r\n constructor(\r\n public propertyName: string\r\n ) { }\r\n \r\n Equals(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.Equals, value, ComparisonValueType.Time);\r\n }\r\n GreaterThan(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.GreaterThan, value, ComparisonValueType.Time);\r\n }\r\n GreaterThanOrEqual(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.GreaterThanOrEqual, value, ComparisonValueType.Time);\r\n }\r\n LessThan(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.LessThan, value, ComparisonValueType.Time);\r\n }\r\n LessThanOrEqual(value: string): Comparison<string> {\r\n return new Comparison<string>(this.propertyName, ComparisonOperator.LessThanOrEqual, value, ComparisonValueType.Time);\r\n }\r\n IsContainedIn(value: string[]): Comparison<string[]> {\r\n return new Comparison<string[]>(this.propertyName, ComparisonOperator.IsContainedIn, value, ComparisonValueType.ListTime);\r\n }\r\n}","import { ActionSheetButton, ActionSheetController } from '@ionic/angular';\r\nimport { FilePicker, PickFilesResult, PickedFile } from '@capawesome/capacitor-file-picker';\r\nimport { OverlayEventDetail } from '@ionic/core';\r\nimport { CameraSource } from '@capacitor/camera';\r\nimport { Injectable } from '@angular/core';\r\nimport moment from 'moment';\r\n\r\nimport { InputFileConfiguration } from '../components/inputs/input-file/input-file.configuration';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilsService{\r\n\r\n constructor(private actionSheetController: ActionSheetController) {\r\n }\r\n\r\n /** Retorna um array de arquivos de acordo com o tipo de configutação */\r\n async SelectFile(configuration: InputFileConfiguration): Promise<File[]>{\r\n enum SelectType {\r\n camera = 1,\r\n galery = 2,\r\n file = 3,\r\n deny = 4,\r\n }\r\n\r\n const btnCamera: ActionSheetButton = { text: 'Câmera' , icon: 'camera' , data: SelectType.camera }\r\n const btnGalery: ActionSheetButton = { text: 'Galeria' , icon: 'image' , data: SelectType.galery }\r\n const btnFile : ActionSheetButton = { text: 'Selecionar Arquivo', icon: 'document' , data: SelectType.file }\r\n const btnDeny : ActionSheetButton = { text: 'Cancelar' , icon: 'close-circle', data: SelectType.deny, role: 'cancel', };\r\n\r\n const isApp = (!document.URL.startsWith('http') || document.URL.startsWith('http://localhost:8080'));\r\n\r\n var lstBtn: any[] = [];\r\n if(isApp){ \r\n lstBtn.push(btnCamera); \r\n lstBtn.push(btnGalery);\r\n }\r\n lstBtn.push(btnFile);\r\n lstBtn.push(btnDeny);\r\n\r\n var res: OverlayEventDetail<any>;\r\n if(lstBtn.length > 2){\r\n const actionSheet = await this.actionSheetController.create({ buttons: lstBtn });\r\n actionSheet.present();\r\n res = await actionSheet.onDidDismiss();\r\n }else{\r\n res = { role: 'confirm', data: lstBtn[0].data };\r\n }\r\n\r\n \r\n if(['backdrop', 'cancel'].includes(res.role)){ return; }\r\n\r\n if([SelectType.camera, SelectType.galery].includes(res.data)){ \r\n const Source = res.data == SelectType.camera ? CameraSource.Camera : CameraSource.Photos\r\n //const photo = await Camera.getPhoto({ resultType: CameraResultType.Uri, source: Source, quality: 100 });\r\n console.error(\"[ TODO ]\")\r\n return null;\r\n }else{\r\n const res: Promise<PickFilesResult> = FilePicker.pickFiles({ types: configuration.types, limit: configuration.multiple ? 0 : 1 });\r\n const files: PickedFile[] = (await res).files;\r\n return files.map(p => <File>p.blob);\r\n }\r\n } \r\n}\r\n\r\nexport class Utils {\r\n /** Converte de unix para Date object */\r\n static UNIXToDate(unix_timestamp: number): Date {\r\n var date = new Date(unix_timestamp * 1000);\r\n return date;\r\n }\r\n \r\n /**\r\n * @param DateStr - Date on ISO format, e.g: \r\n * [ 2010-10-05T14:48:00.000Z ]\r\n * @returns Date on format DD/MM/YYYY\r\n */\r\n static DateISOToDDMMYYYYHHMM(iso: string, onInvalidDateString: string = '-'): string{\r\n if(!iso){ return onInvalidDateString; }\r\n return moment(iso).format(\"DD/MM/YYYY HH:mm\");\r\n }\r\n\r\n /**\r\n * @param iso - Date on ISO format, e.g: \r\n * [ 2010-10-05T14:48:00.000Z ]\r\n * @returns Date on format DD/MM/YYYY\r\n */\r\n static DateISOToDDMMYYYY(iso: string, onInvalidDateString: string = '-'): string{\r\n if(!iso){ return onInvalidDateString; }\r\n return moment(iso).format(\"DD/MM/YYYY\");\r\n }\r\n\r\n static GenerateGUID(): string {\r\n return 'id-xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16 | 0,\r\n v = c === 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n\r\n /** \r\n * @param file: base64 | Blob\r\n */\r\n static async DownloadFile(file: string | Blob, fileName: string){\r\n var blob: Blob = null;\r\n if(!(file instanceof Blob)){\r\n blob = await this.Base64ToBlob(file);\r\n }\r\n else{ \r\n blob = file; \r\n }\r\n\r\n var fileURL = URL.createObjectURL(blob);\r\n const linkElement = document.createElement(\"a\");\r\n linkElement.setAttribute(\"href\", fileURL);\r\n linkElement.setAttribute(\"target\", \"_blank\");\r\n linkElement.setAttribute(\"download\", fileName);\r\n\r\n let me = new MouseEvent(\"click\", {\r\n view: window,\r\n bubbles: true,\r\n cancelable: false,\r\n });\r\n\r\n linkElement.dispatchEvent(me);\r\n }\r\n\r\n static async Base64ToBlob(base64: string): Promise<Blob>{\r\n return (await fetch(base64)).blob();\r\n }\r\n}\r\n\r\nexport function Search<T = any>(items: T[], Search: string, bindLabel: ((obj: T) => string)): T[] {\r\n return items.filter(p => bindLabel(p)?.toLowerCase().includes(Search.toLowerCase()));\r\n}\r\n\r\nexport function Timeout(timeout: number): Promise<void>{\r\n return new Promise(resolve => setTimeout(resolve, timeout));\r\n}\r\n\r\n//[ Base 64 ]\r\nfunction DecodeBase64<T>(b64: string): T{\r\n return JSON.parse(Buffer.from(b64, 'base64').toString('utf-8'));\r\n}\r\n\r\nfunction DecodeBase64AsString(b64: string) {\r\n return Buffer.from(b64, 'base64').toString('utf-8');\r\n}\r\n\r\nfunction EncodeBase64(obj: any | string): string{\r\n if(typeof obj == \"object\"){\r\n return Buffer.from(JSON.stringify(obj)).toString('base64');\r\n }\r\n else\r\n if(typeof obj == \"string\"){\r\n return Buffer.from(obj).toString('base64');\r\n }\r\n}\r\n\r\nexport const INT_MAX = 2_147_483_646;","import { INT_MAX } from \"../../services/utils.service\";\r\nimport { Comparison } from \"../comparison/comparison\";\r\n\r\nexport class ViewFiltros{\r\n limit : number = 0;\r\n public filter : Comparison[] = [];\r\n\r\n constructor(\r\n limit : number | null = 25, \r\n public search: string = \"\", \r\n public page : number = 1, \r\n public orderByProperty: string | null = null, \r\n public ascending : boolean = true\r\n ){\r\n if(limit == null){ this.limit = INT_MAX } \r\n else { this.limit = limit; }\r\n }\r\n}","import { FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { TableField } from \"./table-field\";\r\n\r\nexport class TableFieldFormBuilder {\r\n static create(lstTableFields: TableField[], fb: FormBuilder): FormGroup{\r\n const frm: FormGroup = fb.group({});\r\n for (const field of lstTableFields) {\r\n frm.addControl(field.index, field.formControl);\r\n }\r\n return frm;\r\n }\r\n}","export enum InputType {\r\n Bool = \"Bool\",\r\n Currency = \"Currency\",\r\n Date = \"Date\",\r\n DateTime = \"DateTime\",\r\n Time = \"Time\",\r\n Decimal = \"Decimal\",\r\n Number = \"Number\",\r\n File = \"File\",\r\n String = \"String\",\r\n TextArea = \"TextArea\",\r\n Select = \"Select\",\r\n Cpf = \"Cpf\",\r\n Cpnj = \"Cnpj\",\r\n CpfCnpj = \"CpfCnpj\",\r\n}\r\n","export class InputDecimalConfiguration{\r\n prefix : string;\r\n sufix : string;\r\n placeholder : string;\r\n\r\n constructor(\r\n /** Declara a quantidade de numeros apos o ponto */\r\n public precision: number = 2, \r\n /** Texto no inicio do input */\r\n prefix: string | null = null, \r\n /** Texto no fim do input */\r\n sufix: string | null = null, \r\n /** Se = false não aplica virgulas no lugar do separador a cada 3 unidades */\r\n public thousandSeparator: string = '.',\r\n public decimalSeparator : string = ','\r\n ){\r\n if(!prefix){ this.prefix = ''; }else{ this.prefix = prefix; }\r\n if(!sufix ){ this.sufix = ''; }else{ this.sufix = sufix; }\r\n\r\n this.placeholder = \"-\";\r\n if(precision > 0){\r\n this.placeholder += this.decimalSeparator;\r\n for(let i = precision; i > 0; i--){\r\n this.placeholder += \"-\";\r\n }\r\n }\r\n }\r\n} \r\nexport class InputNumberConfiguration extends InputDecimalConfiguration {\r\n constructor(\r\n prefix: string = \"\", \r\n sufix : string = \"\", \r\n thousandSeparator: string = '.'\r\n ){\r\n super(0, prefix, sufix, thousandSeparator);\r\n }\r\n}\r\nexport class InputCurrencyConfiguration extends InputDecimalConfiguration {\r\n constructor(prefix: string = \"R$\", sufix: string = \"\", thousandSeparator: string = '.'){\r\n super(2, prefix, sufix, thousandSeparator);\r\n }\r\n}\r\n","export enum InputStringType{\r\n Text = \"text\", \r\n Password = \"password\", \r\n Email = \"email\", \r\n Number = \"number\", \r\n Search = \"search\", \r\n Tel = \"tel\", \r\n Url = \"url\"\r\n}\r\n\r\nexport class InputStringConfiguration{\r\n maxlength: number;\r\n type: InputStringType = InputStringType.Text;\r\n constructor(type: InputStringType = InputStringType.Text, maxlength: number = 50){\r\n this.type = type; \r\n this.maxlength = maxlength;\r\n }\r\n}","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { Environment } from './classes/environment';\r\nimport { EnvironmentService } from './services/environment.service';\r\n\r\nexport const EnvironmentInjectionToken = new InjectionToken<Environment>('Environment');\r\n\r\n\r\n@NgModule({\r\n declarations: [],\r\n exports : [],\r\n imports: [\r\n CommonModule\r\n ],\r\n})\r\nexport class SapphireIonFrameworkModule { \r\n static forRoot(config: Environment): ModuleWithProviders<SapphireIonFrameworkModule> {\r\n return { \r\n ngModule: SapphireIonFrameworkModule,\r\n providers: [ \r\n EnvironmentService, { provide: EnvironmentInjectionToken, useValue: config }, \r\n ]\r\n }\r\n }\r\n}\r\n","import { INT_MAX } from \"../services/utils.service\";\r\nimport { Credentials } from \"./credentials\";\r\nimport { ViewFiltros } from \"./filters/view-filtros\";\r\nimport { PageOption } from \"./page-option\";\r\n\r\nexport class Environment {\r\n production : boolean = false;\r\n applicationName: string = \"Panel\";\r\n apiUrl : string | null = null;\r\n defaultCredentials: Credentials = { apelido: \"admin\", senha: \"Coopertec@2017\" };\r\n defaultPageLimits : PageOption[] = [\r\n { value: 25 , label: \"25\" },\r\n { value: 50 , label: \"50\" },\r\n { value: 100 , label: \"100\" },\r\n { value: 200 , label: \"200\" },\r\n { value: INT_MAX, label: \"Todos\" },\r\n ];\r\n get defaultPageLimit(): number | null {\r\n return this.defaultPageLimits[0].value\r\n }\r\n get defaultPaginationObject(): ViewFiltros{\r\n return new ViewFiltros(10, \"\", 1)\r\n }\r\n\r\n constructor(production: boolean, applicationName: string, apiUrl: string, defaultCredentials?: Credentials, defaultPageLimits?: PageOption[]){\r\n this.production = production;\r\n this.applicationName = applicationName;\r\n this.apiUrl = apiUrl;\r\n //[ ApiUrls ]\r\n if(defaultCredentials)\r\n this.defaultCredentials = defaultCredentials;\r\n if(defaultPageLimits)\r\n this.defaultPageLimits = defaultPageLimits\r\n }\r\n}","import { Inject, Injectable } from \"@angular/core\";\r\nimport { EnvironmentInjectionToken } from \"../core.module\";\r\nimport { Environment } from \"../classes/environment\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n constructor(@Inject(EnvironmentInjectionToken) private config: Environment) {\r\n this._environment = this.config;\r\n }\r\n\r\n private _environment: Environment\r\n get environment(): Environment{\r\n return this._environment;\r\n }\r\n}","import { Injectable, OnInit } from '@angular/core';\r\nimport { EnvironmentService } from '../environment.service';\r\nimport { Preferences } from '@capacitor/preferences';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApiUrlProviderService {\r\n\r\n constructor(\r\n private coreService: EnvironmentService,\r\n ) { \r\n this._production = coreService.environment.production;\r\n\r\n this.apiUrl = this.coreService.environment.apiUrl;;\r\n\r\n console.log(`%c [ sapphire-ion-framework : ${this.coreService.environment.applicationName} started @ development ] | Conectado em: ${this.apiUrl}`, \"background-color: #2fdf75; color: black;\")\r\n }\r\n\r\n //#region [ API URL ]\r\n public _apiUrl: string = '';\r\n\r\n public get apiUrl(): string{ return this._apiUrl; }\r\n public set apiUrl(value: string){\r\n this._apiUrl = value;\r\n }\r\n \r\n private _production: boolean;\r\n\r\n public get production() { return this._production; }\r\n //#endregion [ API URL ]\r\n}\r\n\r\n// export class ApiUrl{\r\n// label : string; \r\n// value : string;\r\n// production: boolean;\r\n// constructor(value: string, port: number, production: boolean, https: boolean = false){\r\n// this.production = production;\r\n// if(!production){\r\n// this.value = `http${https ? 's' : ''}://${value}:${port}/`;\r\n// this.label = value;\r\n// }else{\r\n// this.value = `http${https ? 's' : ''}://${value}/`;\r\n// this.label = 'Produção'\r\n// }\r\n// }\r\n// }","import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Title } from '@angular/platform-browser';\r\nimport { AlertButton, AlertController, ToastController } from \"@ionic/angular\";\r\n\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class GenericService{\r\n constructor(\r\n private toastController: ToastController,\r\n private alertController: AlertController,\r\n private titleController: Title,\r\n private coreService: EnvironmentService,\r\n ){}\r\n\r\n public async PresentToast(message: string, icon = 'alert-circle') {\r\n const toast = await this.toastController.create({\r\n message: message,\r\n duration: 1750,\r\n icon: icon,\r\n position: 'bottom',\r\n translucent: false, \r\n });\r\n\r\n await toast.present();\r\n }\r\n \r\n public async PresentToastSuccess(message: string = \"Salvo com sucesso!\") {\r\n const toast = await this.toastController.create({\r\n message: message,\r\n duration: 1750,\r\n icon: 'checkmark-circle',\r\n position: 'bottom',\r\n translucent: false,\r\n });\r\n\r\n await toast.present();\r\n return toast.onDidDismiss();\r\n }\r\n\r\n public static CancelButton: AlertButton = {\r\n text: 'Cancelar',\r\n role: 'cancel',\r\n }\r\n public static ConfirmButton : AlertButton = {\r\n text: 'OK',\r\n role: 'confirm',\r\n }\r\n static defaultAlertButtons: AlertButton[] = [GenericService.ConfirmButton];\r\n\r\n public async PresentAlert(header: string, message: string, buttons: AlertButton[] = GenericService.defaultAlertButtons) {\r\n const alert = await this.alertController.create({\r\n header: header,\r\n message: message,\r\n buttons: buttons,\r\n });\r\n await alert.present();\r\n return alert.onDidDismiss();\r\n }\r\n\r\n public SetTitle(title: string){\r\n this.titleController.setTitle(this.coreService.environment.applicationName + \" | \" + title)\r\n }\r\n\r\n public GetId(activatedRoute: ActivatedRoute, depth: number = 2): number | null{\r\n try{\r\n var Route = activatedRoute;\r\n for(let i = 0; i < depth; i++){\r\n Route = Route.parent;\r\n }\r\n if(Route.snapshot.paramMap.has('id')){\r\n return Number(Route.snapshot.paramMap.get('id'));\r\n }\r\n else{\r\n return 0;\r\n }\r\n }catch{\r\n return null;\r\n }\r\n }\r\n}","import { BehaviorSubject, Observable, firstValueFrom } from 'rxjs';\r\nimport { HttpClient, HttpEventType } from '@angular/common/http';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { Injectable, inject } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NavController } from '@ionic/angular';\r\nimport { PickedFile } from '@capawesome/capacitor-file-picker';\r\n\r\n\r\nimport { ApiUrlProviderService } from './api-url-provider.service';\r\nimport { HttpServiceAtivo } from './http.ativo.service';\r\nimport { GenericService } from '../../services/generics.service';\r\nimport { ViewFiltros } from '../../classes/filters/view-filtros';\r\nimport { TableField } from '../../classes/inputs/table-field';\r\nimport { InputType } from '../../components/inputs/input-type';\r\nimport { View } from '../../components/default/default-view/view';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class HttpService<V = any> {\r\n\r\n public abstract route: string; \r\n public abstract title: string; \r\n\r\n constructor(\r\n protected http : HttpClient,\r\n protected fb : FormBuilder, \r\n protected genericService: GenericService,\r\n protected navController : NavController,\r\n protected apiUrlProviderService: ApiUrlProviderService,\r\n ) { }\r\n\r\n public get fullRoute(): string{\r\n return this.apiUrlProviderService.apiUrl + this.route\r\n }\r\n\r\n /** \r\n * Retorna os dados de acordo com os filtros \r\n * @param vFilter Filtra os dados (Pesquisa, Paginação e IComparison)\r\n */\r\n List(vFilter?: ViewFiltros): Observable<ViewRetorno<V>>{\r\n return this.http.post<ViewRetorno<V>>(this.fullRoute + `/list`, vFilter);\r\n }\r\n\r\n /** Retorna o dado da tabela associada com a rota com o id indicado \r\n * @param id id do dado\r\n */\r\n Get(id: number): Observable<V> { \r\n return this.http.get<V>(this.fullRoute +`/get/${id}`);\r\n }\r\n \r\n /** Salva as alterações no dado recebido */\r\n Save<T = number>(obj: any | V, view?: View<HttpService | HttpServiceAtivo>): Observable<T>{\r\n if(view){ view.submitted = true; }\r\n\r\n var object = obj;\r\n \r\n if(obj instanceof FormGroup){ \r\n if(obj.invalid){ \r\n const r = new BehaviorSubject(null)\r\n r.error(\"[ Invalid Form ]\");\r\n r.complete();\r\n this.genericService.PresentToast(\"Verifique os campos!\")\r\n return r;\r\n }\r\n \r\n object = obj.value; \r\n }\r\n\r\n const formData = new FormData();\r\n this.FilesToForm(object, formData)\r\n \r\n if(obj instanceof FormGroup && this.hasFileForm && !view){ \r\n console.error(\"[ FormGroup contains file, but view isnt passed ]\") \r\n } else \r\n if(view){ \r\n return this._Save(formData, view); \r\n } \r\n\r\n return this.http.post<T>(this.fullRoute + `/save`, formData);\r\n }\r\n\r\n /** Exclui a entidade */\r\n Delete(id: number): Observable<void> {\r\n return this.http.delete<void>(this.fullRoute + `/delete/`+id);\r\n }\r\n\r\n /** Retorna todos os dados */\r\n public Load(vFiltros?: ViewFiltros): Promise<ViewRetorno<V>>{\r\n return firstValueFrom(this.List(vFiltros));\r\n }\r\n\r\n get lstTableFields() : TableField[] { return []; } \r\n get lstTableFieldsView(): TableField[] { return this.lstTableFields; } \r\n\r\n get defaultId() {\r\n var control = this.fb.control(0);\r\n const field = new TableField(\"id\", \"id\", control, InputType.Number); \r\n field.hidden = true;\r\n field.hiddenView = true;\r\n return field\r\n }\r\n\r\n get defaultIdEmpresa() {\r\n var control = this.fb.control(0);\r\n const field = new TableField(\"Empresa\", \"idEmpresa\", control, InputType.Select); \r\n field.hiddenView = true;\r\n field.hidden = true;\r\n return field;\r\n }\r\n\r\n private get hasFileForm(): boolean { return this.lstTableFieldsView.filter(p => p.type == InputType.File).length > 0; } \r\n\r\n protected _Save(formData: FormData, view: View<HttpService | HttpServiceAtivo>): Observable<any | void>{\r\n view.loading = true;\r\n\r\n const subject = new BehaviorSubject<any>(null);\r\n this.http.post(this.fullRoute +`/save`, formData, {\r\n reportProgress: true,\r\n observe: 'events',\r\n }).subscribe({\r\n next: (rez) => { \r\n if(rez.type == HttpEventType.UploadProgress){\r\n const res = rez.loaded / rez.total!; \r\n subject.next(rez);\r\n view.progress = res; \r\n }else \r\n if(rez.type == HttpEventType.Response){\r\n view.loading = false; \r\n view.submitted = false; \r\n view.Refresh(); \r\n\r\n const id: number = Number(rez.body)\r\n //[ Redirect to view/id | redirectPath ]\r\n if(view.id == 0){ this.RedirectRoute(id, view.redirectPath, view.GetCurrentRouting()); }\r\n }\r\n },\r\n error:(err) => { \r\n subject.error(err); \r\n view.loading = false; \r\n view.submitted = false; \r\n subject.complete(); \r\n },\r\n complete:() => { \r\n this.genericService.PresentToastSuccess();\r\n subject.complete(); \r\n }\r\n });\r\n\r\n return subject;\r\n }\r\n\r\n private RedirectRoute(id: number, redirectPath: string, activatedRoute: ActivatedRoute): void {\r\n if(!redirectPath){ return; }\r\n const path = redirectPath.replace(\":id\", id.toString());\r\n this.navController.navigateRoot([`../${path}`], { relativeTo: activatedRoute })\r\n }\r\n\r\n\r\n private FilesToForm(object: any, formData: FormData){\r\n //TODO FIX\r\n Object.entries(object).forEach((prop) => {\r\n if(this.lstTableFieldsView.find(p => prop[0] == p.index && p.type == InputType.File)){\r\n const formValue = prop[1];\r\n if(formValue && typeof(formValue) != \"string\"){\r\n var lstFiles = (formValue as any[])\r\n lstFiles.forEach(e => {\r\n if(e instanceof File){\r\n const file: File = e; \r\n const name = `file-${(formValue as any[]).indexOf(file)}-${prop[0]}`;\r\n formData.append(name, e, e.name); \r\n } else {\r\n var file: PickedFile = e;\r\n const fileToUpload = <File>file.blob;\r\n const name = `file-${(formValue as any[]).indexOf(file)}-${prop[0]}`;\r\n formData.append(name, fileToUpload, fileToUpload.name); \r\n }\r\n });\r\n object[prop[0]]= \"\";\r\n }\r\n }\r\n });\r\n formData.append('view', JSON.stringify(object));\r\n }\r\n}\r\n\r\nexport class ViewRetorno<T = any> {\r\n lstDados: T[] = [];\r\n total: number;\r\n}","\r\nexport class InputBoolConfiguration{\r\n constructor(\r\n /** Estilo do ckeckbox \r\n * - checkbox : @link https://ionicframework.com/docs/api/checkbox\r\n * - toggle : @link https://ionicframework.com/docs/api/toggle\r\n */\r\n public type: InputBoolType = InputBoolType.checkbox\r\n ){} \r\n}\r\nexport enum InputBoolType{\r\n checkbox = \"checkbox\",\r\n toggle = \"toogle\",\r\n}","import { NavController } from '@ionic/angular';\r\nimport { FormBuilder } from '@angular/forms';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { InputBoolConfiguration, InputBoolType} from '../../components/inputs/input-bool/input-bool.configuration';\r\nimport { HttpService, ViewRetorno } from './http.service';\r\nimport { ApiUrlProviderService } from './api-url-provider.service';\r\nimport { GenericService } from '../generics.service';\r\nimport { ViewFiltros } from '../../classes/filters/view-filtros';\r\nimport { TableField } from '../../classes/inputs/table-field';\r\nimport { InputType } from '../../components/inputs/input-type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport abstract class HttpServiceAtivo<V = any> extends HttpService<V> {\r\n\r\n constructor(\r\n protected override http : HttpClient,\r\n protected override fb : FormBuilder, \r\n protected override genericService: GenericService,\r\n protected override navController : NavController,\r\n protected override apiUrlProviderService: ApiUrlProviderService,\r\n ) { \r\n super(http, fb, genericService, navController, apiUrlProviderService);\r\n }\r\n\r\n /**\r\n * Troca o status de ativo da entidade\r\n */\r\n Ativar(id: number): Observable<boolean> {\r\n return this.http.post<boolean>(this.fullRoute + `/ativar/${id}`, {});\r\n }\r\n\r\n /**\r\n * Lista todos os dados ativos\r\n * @param vFilter\r\n */\r\n ListAtivo<T = ViewRetorno>(vFilter?: ViewFiltros): Observable<T> {\r\n return this.http.post<T>(this.fullRoute + `/listAtivo`, vFilter);\r\n }\r\n\r\n /** Table Field padrão de ativo */\r\n get defaultAtivo(): TableField {\r\n var control = this.fb.control(true);\r\n const field = new TableField(\"Ativo\", \"ativo\", control, InputType.Bool);\r\n field.configuration = new InputBoolConfiguration(InputBoolType.toggle); \r\n return field;\r\n }\r\n}","import { Observable, firstValueFrom } from \"rxjs\";\r\n\r\nimport { HttpService, ViewRetorno } from \"../../../services/web/http.service\";\r\nimport { HttpServiceAtivo } from \"../../../services/web/http.ativo.service\";\r\nimport { ViewFiltros } from \"../../../classes/filters/view-filtros\";\r\nimport { INT_MAX } from \"../../../services/utils.service\";\r\nimport { ISelect } from \"./ISelect\";\r\nimport { Comparison } from \"../../../classes/comparison/comparison\";\r\n\r\nexport type DefaultModelOptions = { value: string, label: string };\r\n\r\nexport class InputSelectConfiguration{\r\n placeholder : string = \"Selecione um item...\"\r\n noItensFoundText: string = \"Sem items encontrados...\"\r\n\r\n loader: InputSelectDataLoader;\r\n loadFromArray : any[];\r\n loadFromService : HttpService | HttpServiceAtivo\r\n loadFromFunction: Observable<any>\r\n\r\n public vFiltros: ViewFiltros | null = null;\r\n\r\n constructor(\r\n /** Valor que será setado no formControl */\r\n public bindValue: string | ((obj: any) => any) = \"id\" ,\r\n /** Valor que será exibido */\r\n public bindLabel: string | ((obj: any) => string) = \"nome\", \r\n \r\n /** Indica se o select pode ser nulo e limpavel */\r\n public clearable : boolean = true, \r\n /** Indica se o select pode ser pesquisado */\r\n public searcheable: boolean = true, \r\n \r\n /** \r\n * Se LoadFrom instanceof HttpService -> Os dados serão carregados do List()\r\n * Se LoadFrom instanceof HttpServiceAtivo -> Os dados serão carregados do ListAtivo()\r\n * Se LoadFrom instanceof Observable -> Os dados serão carregados da função indicada\r\n * Se LoadFrom instanceof Array -> Os dados serão o array\r\n */\r\n public loadFrom?: HttpService | HttpServiceAtivo | Observable<ViewRetorno> | any[], \r\n /** Se = true Os valores no form control seráo um array dos items selecionados */\r\n public multiple : boolean = false,\r\n /** Aplica os filtros na pesquisa */\r\n vFiltros : Partial<{ \r\n /** Aplica uma pesquisa em texto */\r\n search: string\r\n /** Propriedade de ordenação */\r\n orderByProperty: string\r\n /** Orientação de ordenação */\r\n ascending: boolean,\r\n /** Filtro */\r\n filter: Comparison[]\r\n }> | null = null,\r\n /** Desativa os items que estão de acordo com a função */\r\n public disableConditional: ((obj: any) => boolean) | null = null\r\n ){\r\n this.clearable = clearable;\r\n this.searcheable = searcheable;\r\n this.multiple = multiple;\r\n\r\n if(vFiltros != null){\r\n const v = vFiltros;\r\n if(v.ascending == null || v.ascending == undefined){ v.ascending = true; }\r\n this.vFiltros = new ViewFiltros(INT_MAX, v.search, 1, v.orderByProperty, v.ascending);\r\n (this.vFiltros as ViewFiltros).filter = v.filter;\r\n }\r\n\r\n if(loadFrom){\r\n if(Array.isArray(loadFrom)){ \r\n this.loadFromArray = loadFrom; \r\n } else\r\n if(loadFrom instanceof HttpService || loadFrom instanceof HttpServiceAtivo){ \r\n this.loadFromService = loadFrom;\r\n } else { \r\n this.loadFromFunction = loadFrom;\r\n }\r\n }\r\n this.loader = new InputSelectDataLoader(this);\r\n }\r\n}\r\n\r\nexport class InputSelectDataLoader{\r\n lstComponents: ISelect[] = [];\r\n configuration: InputSelectConfiguration;\r\n\r\n /** Valor que será setado no formControl */\r\n public bindValue: ((obj: any) => any) | null = null;\r\n /** Valor que será exibido */\r\n public bindLabel: ((obj: any) => string)| null = null;\r\n\r\n constructor(configuration: InputSelectConfiguration){ \r\n this.configuration = configuration; \r\n this.bindValue = BindValueFactory(configuration)\r\n this.bindLabel = BindLabelFactory(configuration)\r\n }\r\n\r\n public GetLabel(value: any){\r\n if(!this.items || !this.bindValue || !this.bindLabel){ return \"\"; }\r\n const item = this.items.find(p => this.bindValue(p) == value);\r\n if(!item){ return \"\" ;}\r\n return this.bindLabel(item);\r\n }\r\n\r\n AddComponent(component: ISelect){ \r\n this.lstComponents.push(component);\r\n }\r\n\r\n private _isLoaded: boolean = false;\r\n\r\n async Refresh(items?: any[]): Promise<void>{\r\n this.lstComponents.forEach(component => { component.loadingFromLoader = true; });\r\n \r\n if(!this.configuration.loadFromService && !this.configuration.loadFromFunction && (!this.configuration.loadFromArray || !(this.configuration.loadFromArray.length > 0))){\r\n this.items = items;\r\n this._isLoaded = true;\r\n this.lstComponents.forEach(component => { component.items.set(this.items); });\r\n }\r\n \r\n try{\r\n await this.Load();\r\n this._isLoaded = true;\r\n this.lstComponents.forEach(component => { component.items.set(this.items); });\r\n }\r\n finally{\r\n this.lstComponents.forEach(component => { component.loadingFromLoader = false; });\r\n }\r\n }\r\n\r\n private SetLstComponentsThisItens(){\r\n this.lstComponents.forEach(component => { component.items.set(this.items); return; });\r\n }\r\n\r\n items: any[] = [];\r\n async Load(): Promise<void>{\r\n if(this._isLoaded){\r\n this.SetLstComponentsThisItens();\r\n return;\r\n }\r\n\r\n //[ Load from Array ]\r\n if(this.configuration.loadFromArray != undefined && this.configuration.loadFromArray.length){\r\n this.items = this.configuration.loadFromArray;\r\n this.SetLstComponentsThisItens();\r\n return;\r\n }\r\n\r\n //[ Load from api ]\r\n var vFiltros: ViewFiltros | null = this.configuration.vFiltros;\r\n try{\r\n var lstDados: any[] = [];\r\n \r\n if(this.configuration.loadFromService){\r\n lstDados = (await firstValueFrom(this.configuration.loadFromService.List(vFiltros))).lstDados\r\n }else{\r\n lstDados = (await firstValueFrom(this.configuration.loadFromFunction)).lstDados;\r\n }\r\n\r\n this.items = lstDados;\r\n this.SetLstComponentsThisItens();\r\n }finally{ return; }\r\n }\r\n}\r\n\r\nexport function BindValueFactory(configuration: InputSelectConfiguration): ((obj: any) => any) {\r\n const cBindValue = configuration.bindValue;\r\n var bindValue: ((args: any) => any) = null;\r\n if(typeof(cBindValue) == 'string'){\r\n var bvS: string = cBindValue;\r\n bindValue = ((obj: any): any => { return obj[bvS]; });\r\n }else{\r\n var bvF: ((args: any) => any) = cBindValue;\r\n bindValue = ((obj: any): any => { return bvF(obj); });\r\n }\r\n return bindValue;\r\n}\r\n\r\nexport function BindLabelFactory(configuration: InputSelectConfiguration): ((obj: any) => string){\r\n const cBindLabel = configuration.bindLabel;\r\n var bindLabel: ((args: any) => string) = null;\r\n if(typeof(cBindLabel) == 'string'){\r\n var blS: string = cBindLabel;\r\n bindLabel = ((obj: any): string => { return obj[blS] + ''; });\r\n }else{\r\n var blF: ((args: any) => any) = cBindLabel;\r\n bindLabel = ((obj: any): string => { return blF(obj) + ''; });\r\n }\r\n return bindLabel;\r\n}","export class InputDateConfiguration{\r\n constructor(\r\n /** Habilita o botão de limpar os dados */\r\n public clearable: boolean = false\r\n ){}\r\n}","export class InputFileConfiguration{\r\n constructor(\r\n /** Tipos de arquivos que podem ser selecionados */\r\n public types: any | [] = ['image/*'], \r\n /** Declara se mais do que um arquivo pode ser selecionado */\r\n public multiple: boolean = false\r\n ){}\r\n}","import { FormControl } from \"@angular/forms\";\r\nimport { Comparison } from \"../comparison/comparison\";\r\nimport { InputType } from \"../../components/inputs/input-type\";\r\n\r\nimport { InputDecimalConfiguration, InputCurrencyConfiguration, InputNumberConfiguration } from '../../components/inputs/input-decimal/input-decimal.configuration';\r\nimport { InputStringConfiguration } from '../../components/inputs/input-string/input-string.configuration';\r\nimport { InputSelectConfiguration } from '../../components/inputs/input-select/input.select.configuration';\r\nimport { InputDateConfiguration } from '../../components/inputs/input-date/input-date.configuration';\r\nimport { InputFileConfiguration } from '../../components/inputs/input-file/input-file.configuration';\r\nimport { InputBoolConfiguration } from '../../components/inputs/input-bool/input-bool.configuration';\r\nimport { InputConfiguration } from \"../../components/inputs/input-configuration\";\r\n\r\nexport class TableField{\r\n class : string = \"xl:col-span-3 md:col-span-6 col-span-full\"\r\n hiddenView: boolean = false;\r\n hidden : boolean = false;\r\n filter : Comparison[] = [];\r\n disabledChange(): boolean {\r\n return this.filter.find(p => p.disableChange) != null;\r\n };\r\n\r\n\r\n constructor(\r\n public header: string, \r\n public index : string, \r\n public formControl : FormControl | null, \r\n public type : InputType | null, \r\n public configuration: InputConfiguration | null = null,\r\n public disabled : boolean = false\r\n ){\r\n if(configuration){ this.configuration = configuration }\r\n else{\r\n if(TableField.dateTypes.includes(type)){ this.configuration = new InputDateConfiguration() } else\r\n if(type == InputType.File ){ this.configuration = new InputFileConfiguration() }else\r\n if(type == InputType.Number ){ this.configuration = new InputNumberConfiguration() }else\r\n if(type == InputType.Decimal ){ this.configuration = new InputDecimalConfiguration() }else\r\n if(type == InputType.Currency){ this.configuration = new InputCurrencyConfiguration() }else\r\n if(type == InputType.String ){ this.configuration = new InputStringConfiguration() }else\r\n if(type == InputType.Select ){ this.configuration = new InputSelectConfiguration() }else\r\n if(type == InputType.TextArea){ \r\n this.configuration = new InputStringConfiguration(); \r\n this.class = \"col-span-full\" \r\n }else \r\n if(type == InputType.Bool ){ \r\n this.configuration = new InputBoolConfiguration(); \r\n if(this.formControl.value == null){ this.formControl.setValue(false); } \r\n }\r\n }\r\n }\r\n private static readonly dateTypes = [InputType.Date, InputType.DateTime, InputType.Time];\r\n}","import { Routes } from \"@angular/router\";\r\n\r\nexport class DefaultRoutingFactory{\r\n /** Retorna as rotas padrões, incluindo listagem, view(novo) e view:id\r\n * @param ListComponent Componente de listagem a ser invocado\r\n * @param ViewCompnent Componente de listagem a ser invocado\r\n */\r\n public static GetRoutes(ListComponent, ViewCompnent): Routes{\r\n return [\r\n {\r\n path: '',\r\n component: ListComponent\r\n },\r\n {\r\n path: 'view',\r\n component: ViewCompnent\r\n },\r\n {\r\n path: 'view/:id',\r\n component: ViewCompnent,\r\n }\r\n ]\r\n } \r\n}","import { Comparison } from \"../comparison/comparison\";\r\n\r\n/** Configuração de rota: Automaticamente aplica o id de uma rota superior para a filtragem de uma listagem de uma tebela filha\r\n * * A propriedade precisa existir no seu determinado service para ser aplicado\r\n */\r\nexport class idPreloaderConfiguration{\r\n constructor(\r\n /** Propriedade no banco de dados a ser comparada */\r\n public propertyName: string,\r\n /** \r\n * Se idPreloaderChange == true : o valor PODERÁ ser modificado na listagem pelo usuário\r\n * Se idPreloaderChange == false : o valor NÃO poderá ser modificado na listagem pelo usuário\r\n * */\r\n public disableChange: boolean = false,\r\n\r\n /** Profundidade da rota para buscar o parametro :id\r\n * Valor minimo é 0\r\n */\r\n public routeDepth : number = 2,\r\n ){ }\r\n}","import { idPreloaderConfiguration } from \"./id-preloader-configuration\";\r\n\r\nexport class RouteData{\r\n idPreloaderConfiguration: idPreloaderConfiguration | null = null;\r\n \r\n constructor(data: Partial<RouteData>){\r\n if(data.idPreloaderConfiguration){ this.idPreloaderConfiguration = data.idPreloaderConfiguration }\r\n }\r\n}","import { Component, Input, model, ModelSignal, Signal, signal, WritableSignal } from \"@angular/core\";\r\n\r\n@Component({ template: '' })\r\nexport abstract class ICarouselItem {\r\n index: WritableSignal<number> = signal(0);\r\n carouselIndex: Signal<number> = signal(0);\r\n value: ModelSignal<any> = model<any>(undefined)\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [ CommonModule, IonicModule ],\r\n selector: 'loading',\r\n templateUrl: './loading.component.html',\r\n styleUrls: ['./loading.component.scss'],\r\n})\r\nexport class LoadingComponent implements OnInit {\r\n\r\n /** Texto exibido */\r\n @Input() text : string = \"Carregando, por favor aguarde...\";\r\n /** Tipo do loading\r\n * 1 - Componente basico - h-16 de altura \r\n * 2 - Componente basico - h-16 de altura \r\n * 3 - Componente absoluto, preenche o elemento superior relativo\r\n */\r\n @Input() type : 1 | 2 | 3 = 1;\r\n /** Utilizado no tipo 3, quando inativo é hidden */\r\n @Input() loading : boolean = true;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","@switch (type) {\r\n @case (1) {\r\n <div class=\"w-full text-center h-16 flex items-center justify-center\">\r\n <div class=\"flex items-center justify-center\">\r\n <ion-spinner></ion-spinner>\r\n </div>\r\n @if(text){\r\n <span>{{text}}</span>\r\n }\r\n </div>\r\n }\r\n @case (2) {\r\n <div class=\"w-full text-center h-16 flex items-center justify-center\">\r\n <div class=\"flex items-center justify-center\">\r\n <ion-spinner></ion-spinner> \r\n @if (text) {\r\n <span class=\"ml-3\">{{text}}</span>\r\n }\r\n </div>\r\n </div>\r\n }\r\n @case (3) {\r\n <div class=\"absolute top-0 left-0 size-full opacity-0 -z-50 default-transition -translate-y-12 flex items-center justify-center !translucid-background\" \r\n [ngClass]=\"{'!z-20 !opacity-100 !translate-y-0': loading}\">\r\n <loading [type]=\"2\" [text]=\"text\"></loading> \r\n </div>\r\n }\r\n}","import { Observable, firstValueFrom } from 'rxjs';\r\nimport { NavController } from '@ionic/angular';\r\nimport { Preferences } from '@capacitor/preferences';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { ApiUrlProviderService } from '../services/web/api-url-provider.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Utils } from './utils.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private navController: NavController,\r\n private coreService: EnvironmentService,\r\n private apiUrlProviderService: ApiUrlProviderService \r\n ) {\r\n this.SetToken();\r\n }\r\n\r\n private localUserKey : string = this.coreService.environment.applicationName.toUpperCase() + \"_USER_KEY\";\r\n private localAdminKey : string = this.coreService.environment.applicationName.toUpperCase() + \"_ADMIN_KEY\";\r\n public currentToken: string | null = null;\r\n\r\n async SetToken(): Promise<void> {\r\n const Token = await this.LoadToken();\r\n const TokenAdmin = await this.LoadTokenAdmin();\r\n if(this.isTokenValid(Token)){\r\n this.currentToken = await this.JWToken();\r\n }else{\r\n return this.Loggout();\r\n }\r\n\r\n if(TokenAdmin && this.isTokenValid(TokenAdmin)){\r\n this._isAdmin = true;\r\n }\r\n\r\n return;\r\n }\r\n\r\n async Loggout(): Promise<void> {\r\n await Preferences.remove({ key: this.localUserKey });\r\n await Preferences.remove({ key: this.localAdminKey });\r\n this.currentToken = null;\r\n this.navController.navigateRoot(\"login\");\r\n }\r\n \r\n _isAdmin: boolean = false;\r\n get isAdmin(){ return this._isAdmin; }\r\n\r\n async Login(credentials: Authentication): Promise<any> {\r\n try{\r\n const JWToken = await firstValueFrom(this.ApiLogin(credentials));\r\n await this.SaveToken(JWToken);\r\n await this.SetToken();\r\n return (jwtDecode(JWToken));\r\n }\r\n catch (Error){\r\n throw Error;\r\n }\r\n }\r\n\r\n async BypassLogin(id: number): Promise<any> {\r\n try{\r\n const JWToken = await firstValueFrom(this.ApiBypassLogin(id));\r\n await this.SaveToken(JWToken);\r\n await this.SetToken();\r\n return (jwtDecode(JWToken));\r\n }\r\n catch (Error){\r\n throw Error;\r\n }\r\n }\r\n\r\n ApiLogin(credentials: Authentication): Observable<string> {\r\n return this.http.post<string>(this.apiUrlProviderService.apiUrl + 'auth', credentials);\r\n }\r\n ApiBypassLogin(id: number): Observable<string> {\r\n return this.http.get<string>(this.apiUrlProviderService.apiUrl + `auth/${id}`);\r\n }\r\n\r\n async SaveToken(JWToken: string): Promise<void>{\r\n if((jwtDecode(JWToken) as Token).id == 1){ \r\n await Preferences.set({ key: this.localAdminKey, value: JWToken});\r\n }\r\n await Preferences.set({ key: this.localUserKey, value: JWToken })\r\n }\r\n\r\n async LoadToken(): Promise<Token | null | any> {\r\n const JWToken = (await Preferences.get({ key: this.localUserKey})).value;\r\n if(JWToken){\r\n const ParsedObject = jwtDecode(JWToken);\r\n return ParsedObject;\r\n }else{\r\n return null;\r\n }\r\n }\r\n async LoadTokenAdmin(): Promise<Token | null | any> {\r\n const JWToken = (await Preferences.get({ key: this.localAdminKey})).value;\r\n if(JWToken){\r\n const ParsedObject = jwtDecode(JWToken);\r\n return ParsedObject;\r\n }else{\r\n return null;\r\n }\r\n }\r\n\r\n async JWToken(): Promise<string> {\r\n const JWToken: string = (await Preferences.get({ key: this.localUserKey })).value;\r\n return JWToken;\r\n }\r\n\r\n async GetBearer(): Promise<string>{\r\n return `Bearer ${await this.JWToken()}`\r\n }\r\n\r\n public isTokenValid(Token: any): boolean{\r\n if(!Token){ return false; }else\r\n return !(Utils.UNIXToDate(Token.exp) < new Date())\r\n }\r\n}\r\n\r\nclass Authentication{\r\n public Apelido: string = null;\r\n public Senha : string = null;\r\n}\r\n\r\nclass Token {\r\n [prop: string]: any;\r\n Acesso : number = 0;\r\n Apelido : string = \"\";\r\n Nome : string = \"\";\r\n id : number = 0;\r\n idEmpresa: number = 0;\r\n \r\n constructor(){}\r\n \r\n patch(token: Token | any): void{\r\n for(let prop of Object.getOwnPropertyNames(token)){\r\n if(Number((token[prop]))){\r\n this[prop] = Number(token[prop]); \r\n continue;\r\n }\r\n this[prop] = token[prop];\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable, from, switchMap } from 'rxjs';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n\r\nimport { ApiUrlProviderService } from '../services/web/api-url-provider.service';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Pipe({\r\n name: 'secure',\r\n standalone: true,\r\n})\r\nexport class SecurePipe implements PipeTransform {\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private auth: AuthService,\r\n private apiUrlProviderService: ApiUrlProviderService\r\n ) {}\r\n\r\n transform(src: string): Observable<string> | Promise<string> {\r\n if(src.startsWith(this.apiUrlProviderService.apiUrl)){\r\n // Convert the Promise to an Observable and chain the HTTP request\r\n return from(this.auth.LoadToken())\r\n .pipe(\r\n switchMap((Bearer: string) => {\r\n const headers = new HttpHeaders({ 'Authorization': `Bearer ${Bearer}` });\r\n return this.http.get(src, { headers, responseType: 'blob' });\r\n }),\r\n switchMap((blob: Blob) => {\r\n const url = URL.createObjectURL(blob);\r\n return from(Promise.resolve(url));\r\n })\r\n );\r\n }\r\n else{\r\n return Promise.resolve(src);\r\n }\r\n }\r\n}","import { Component, computed, effect, input, Input, InputSignal, OnInit, Signal } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { ApiUrlProviderService } from '../../services/web/api-url-provider.service';\r\nimport { LoadingComponent } from '../loading/loading.component';\r\nimport { SecurePipe } from '../../pipes/secure.pipe';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [IonicModule, CommonModule, LoadingComponent, SecurePipe],\r\n selector: 'image',\r\n templateUrl: './image.component.html',\r\n styleUrls: ['./image.component.scss'],\r\n})\r\nexport class ImageComponent implements OnInit {\r\n\r\n /** Tipo de prenchimento e borda do objeto */\r\n @Input() fill: 'clear'| 'outline' | 'solid' = 'outline';\r\n /** Tipo de prenchimento da imagem */\r\n @Input() object: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down' = 'contain';\r\n\r\n ClassFill: string;\r\n SetClassFill(): void{\r\n switch(this.fill){\r\n case('clear'):{\r\n this.ClassFill = ''\r\n break;\r\n }\r\n case('outline'):{\r\n this.ClassFill = 'p-2 translucid-border rounded-2xl'\r\n break;\r\n }\r\n case('solid'):{\r\n this.ClassFill = 'p-2 translucid-border bg-medium/10 rounded-2xl'\r\n break;\r\n }\r\n }\r\n }\r\n ClassObject: string\r\n SetClassObject(): void{\r\n switch(this.object){\r\n case('contain'):{\r\n this.ClassFill = 'object-contain'\r\n break;\r\n }\r\n case('cover'):{\r\n this.ClassFill = 'object-cover'\r\n break;\r\n }\r\n case('fill'):{\r\n this.ClassFill = 'object-fill'\r\n break;\r\n }\r\n case('none'):{\r\n this.ClassFill = 'object-none'\r\n break;\r\n }\r\n case('scale-down'):{\r\n this.ClassFill = 'object-scale-down'\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /** Link */\r\n src: InputSignal<string | null> = input<string | null>();\r\n _src: Signal<string> = computed(() => { \r\n if(this.src()?.startsWith(\"http\")){\r\n return this.src();\r\n }\r\n else\r\n if(this.src()?.startsWith('assets')){\r\n return window.origin + '/' + this.src()\r\n }\r\n else{\r\n return this.apiUrlProviderService.apiUrl + this.src()\r\n }\r\n });\r\n\r\n err: boolean = false;\r\n loading: boolean = false;\r\n\r\n constructor(\r\n public apiUrlProviderService: ApiUrlProviderService\r\n ) { \r\n effect(() => {\r\n this.err = !this.src();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.SetClassFill();\r\n }\r\n}\r\n","@if (!err && _src()) {\r\n <div class=\"animated-from-top flex items-center justify-center relative overflow-hidden size-full {{ClassObject}} {{ClassFill}}\" >\r\n <loading class=\"!text-sm\" [loading]=\"loading\" [type]=\"3\" text=\"\"></loading>\r\n <ion-img \r\n class=\"-translate-y-12 opacity-0 default-transition animated-from-top object-contain size-full\" \r\n [ngClass]=\"{'opacity-100 translate-y-0': !loading }\"\r\n [src]=\"src() ? (_src() | secure | async) : null\" \r\n (ionImgWillLoad)=\"loading = true\"\r\n (ionError)=\"loading = false; err = true\"\r\n (ionImgDidLoad)=\"loading = false;\"\r\n ></ion-img>\r\n </div>\r\n}@else {\r\n <div class=\"animated-from-top flex items-center justify-center size-full {{ClassObject}} {{ClassFill}}\">\r\n <ion-icon class=\"text-xl\" name=\"image\" color=\"dark\"></ion-icon>\r\n </div>\r\n}","import { Component, Input, OnInit } from '@angular/core';\r\nimport { ICarouselItem } from '../i-carousel-item.component';\r\n\r\n@Component({\r\n selector: 'carousel-image',\r\n templateUrl: './carousel-image.component.html',\r\n styleUrls: ['./carousel-image.component.scss'],\r\n providers: [{ provide: ICarouselItem, useExisting: CarouselImageComponent }],\r\n})\r\nexport class CarouselImageComponent extends ICarouselItem implements OnInit {\r\n @Input() src: string; \r\n constructor() { super(); }\r\n\r\n ngOnInit() {}\r\n}","<image class=\"absolute top-0 left-0 block size-full default-transition rounded-xl\" fill=\"clear\" \r\n [ngClass]=\"{'opacity-20 -translate-x-full': carouselIndex() > index(), 'opacity-20 translate-x-full': carouselIndex() < index() }\" \r\n [src]=\"src\"\r\n></image>","import { Component, OnInit } from '@angular/core';\r\nimport { ICarouselItem } from '../i-carousel-item.component';\r\n\r\n@Component({\r\n selector: 'carousel-item',\r\n templateUrl: './carousel-item.component.html',\r\n styleUrls: ['./carousel-item.component.scss'],\r\n providers: [{ provide: ICarouselItem, useExisting: CarouselItemComponent }],\r\n})\r\nexport class CarouselItemComponent extends ICarouselItem implements OnInit {\r\n constructor() { super(); }\r\n\r\n ngOnInit() {}\r\n}","<div class=\"absolute top-0 left-0 size-full default-transition rounded-xl\" [ngClass]=\"{'opacity-20 -translate-x-full': carouselIndex() > index(), 'opacity-20 translate-x-full': carouselIndex() < index() }\">\r\n <ng-content></ng-content>\r\n</div>","import { AfterContentInit, Component, contentChildren, ContentChildren, effect, forwardRef, input, InputSignal, output, OutputEmitterRef, QueryList, signal, Signal, WritableSignal } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { ICarouselItem } from './i-carousel-item.component';\r\n\r\n@Component({\r\n selector: 'carousel',\r\n templateUrl: './carousel.component.html',\r\n styleUrls: ['./carousel.component.scss'],\r\n providers: [{ provide : NG_VALUE_ACCESSOR, \r\n useExisting: forwardRef(() => CarouselComponent),\r\n multi: true \r\n }]\r\n})\r\nexport class CarouselComponent implements AfterContentInit, ControlValueAccessor {\r\n\r\n @ContentChildren(ICarouselItem) components: QueryList<ICarouselItem>;\r\n lst: Signal<readonly ICarouselItem[]> = contentChildren(ICarouselItem);\r\n \r\n value: InputSignal<any> = input<any>();\r\n constructor() {\r\n effect(() => {\r\n if(this.value()){\r\n this._model = this.value();\r\n this.index.set(this.lst().find(p => p.value() == this.value())?.index())\r\n }\r\n else{\r\n if(this.lst().length){\r\n this.model = this.lst()[0].value();\r\n }\r\n }\r\n this.UpdateIndex();\r\n\r\n }, { allowSignalWrites: true });\r\n }\r\n\r\n index: WritableSignal<number> = signal<number>(0);\r\n\r\n ngAfterContentInit() {\r\n this.UpdateIndex();\r\n }\r\n\r\n UpdateIndex(): void{\r\n const lst = this.lst();\r\n for(let carouselItem of lst){\r\n carouselItem.index.set(lst.indexOf(carouselItem));\r\n carouselItem.carouselIndex = this.index;\r\n }\r\n }\r\n SetIndex(index: number){\r\n this.index.set(index);\r\n this.UpdateModel();\r\n }\r\n IndexUp(){\r\n this.index.set(this.index() + 1);\r\n this.UpdateModel();\r\n }\r\n IndexDown(){\r\n this.index.set(this.index() - 1);\r\n this.UpdateModel();\r\n }\r\n UpdateModel(){\r\n this.model = this.lst().find(p => p.index() == this.index())?.value();\r\n }\r\n\r\n protected _model: any | null = null;\r\n get model(): any { return this._model; }\r\n set model(value: any) { this._model = value; this.propagateChange(this._model); }\r\n \r\n\r\n writeValue(value: string){ this.model = value; }\r\n\r\n //[ ControlValueAccessor ]\r\n /** Acionado quando um elemento perde o foco. */\r\n blur : OutputEmitterRef<any> = output<any>();\r\n /** Emitido quando o valor é alterado. */\r\n change: OutputEmitterRef<any> = output<any>();\r\n propagateChange(obj: any): void{ this.onChange(obj); this.change.emit(obj);; }\r\n\r\n onChange: (value: any) => void = (v: any) => { return; }\r\n onTouch : (value: any) => void = (v: any) => { return; }\r\n registerOnChange (fn: (value: any) => void ){ this.onChange = fn }\r\n registerOnTouched(fn: (value: any) => void ){ this.onTouch = fn }\r\n}\r\n","<ion-card class=\"size-full m-0\">\r\n <ion-card-content class=\"size-full p-0 relative\">\r\n <ng-content></ng-content>\r\n\r\n <ion-button color=\"dark\" size=\"small\" class=\"absolute backdrop-blur-sm w-3 h-10 top-0 bottom-0 my-auto left-0 ml-2 default-transition\" [disabled]=\"index() == 0\" [ngClass]=\"{'opacity-0': index() == 0}\" style=\"--border-radius: .5rem;\" (click)=\"IndexDown()\">\r\n <ion-icon slot=\"icon-only\" name=\"chevron-back\"></ion-icon>\r\n </ion-button>\r\n <ion-button color=\"dark\" size=\"small\" class=\"absolute backdrop-blur-sm w-3 h-10 top-0 bottom-0 my-auto right-0 mr-2 default-transition\" [disabled]=\" index() >= lst().length - 1\" [ngClass]=\"{'opacity-0': index() >= lst().length - 1}\" style=\"--border-radius: .5rem;\" (click)=\"IndexUp()\">\r\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\"></ion-icon>\r\n </ion-button>\r\n\r\n @if(lst().length){\r\n <div class=\"absolute left-0 bottom-0 h-8 w-full flex items-center justify-center\">\r\n <div class=\"bg-dark/50 h-3 rounded-full flex items-center justify-center default-transition gap-0.5 p-0.5\">\r\n @for (item of lst(); track $index) {\r\n <div class=\"bg-light cursor-pointer border border-light/40 h-full aspect-square rounded-full backdrop-blur-sm default-transition\" (click)=\"SetIndex($index)\" [ngClass]=\"{'bg-dark': $index != index()}\"></div>\r\n }\r\n </div>\r\n </div>\r\n }\r\n </ion-card-content>\r\n</ion-card>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CarouselComponent } from './carousel.component';\r\nimport { CarouselImageComponent } from './carousel-image/carousel-image.component';\r\nimport { CarouselItemComponent } from './carousel-item/carousel-item.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { ImageComponent } from '../image/image.component';\r\n\r\nconst lstComponents = [ CarouselComponent, CarouselImageComponent, CarouselItemComponent ]\r\n\r\n@NgModule({\r\n declarations: [...lstComponents],\r\n exports : [...lstComponents],\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n ImageComponent\r\n ]\r\n})\r\nexport class CarouselModule { }\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit } from '@angular/core';\r\n\r\n/** Bloqueia o conteudo na div que é aplicada\r\n * O elemento superior NÃO deve ter posicionamento INSET\r\n */\r\n@Component({\r\n standalone: true,\r\n imports: [ CommonModule ],\r\n selector: 'content-block',\r\n templateUrl: './content-block.component.html',\r\n styleUrls: ['./content-block.component.scss'],\r\n})\r\nexport class ContentBlockComponent implements OnInit {\r\n\r\n /** Texto a ser exibido */\r\n @Input() text : string = \"Carregando, por favor aguarde...\";\r\n /** Define se o conteudo é bloqueado ou não */\r\n @Input() value: boolean = true;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","<div class=\"absolute top-0 left-0 size-full opacity-0 -z-50 default-transition -translate-y-12 flex items-center justify-center !translucid-background\" \r\n [ngClass]=\"{'!z-20 !opacity-100 !translate-y-0': value}\">\r\n <div class=\"w-full text-center h-16 flex items-center justify-center\">\r\n {{text}}\r\n </div>\r\n</div>","import { Component, Output, Input, EventEmitter, HostListener } from '@angular/core';\r\nimport { IonSearchbar } from '@ionic/angular';\r\n\r\nimport { EnvironmentService } from '../../../../services/environment.service';\r\nimport { PageOption } from '../../../../classes/page-option';\r\n\r\n/** Componente de cabeçalho de listagem padrão */\r\n@Component({\r\n selector: 'header-list',\r\n templateUrl: './header-list.component.html',\r\n styleUrls: ['./header-list.component.scss'],\r\n})\r\nexport class HeaderListComponent {\r\n\r\n /** Número de páginas máximo (usando two way data binding) */\r\n @Input() limit: number | null;\r\n @Output() limitChange: EventEmitter<number | null> = new EventEmitter<number | null>();\r\n\r\n /** Valor da pagina, setado = 1 quando troca-se o valor de limite de paginas (usando two way data binding) */\r\n @Input() page: number;\r\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n\r\n /** Campo de pesquisa (usando two way data binding) */\r\n @Input() search: string | null;\r\n @Output() searchChange: EventEmitter<string | null> = new EventEmitter<string | null>();\r\n \r\n @Input() loading: boolean;\r\n\r\n /** Evento de refersh\r\n * Emitido em:\r\n * - Troca de página\r\n * - Pesquisa\r\n */\r\n @Output('refresh') refreshEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n /** Link a ser acessado no click do botão NOVO */\r\n @Input() link : string = \"view\";\r\n\r\n /** Remove o botão NOVO */\r\n @Input() noNew: boolean = false;\r\n /** Remove o select de paginas */\r\n @Input() noPage: boolean = false;\r\n /** Remove o elemento de pesquisa */\r\n @Input() noSearch: boolean = false;\r\n \r\n\r\n /** Desabilita o redirect de novo em um botão para ser utilizado com [onNewEmitter] */\r\n @Input() overrideNew: boolean = false;\r\n /** Evento quando o botáo NOVO é clickado */\r\n @Output('onNew') onNewEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n onNew(): void{\r\n this.onNewEmitter.emit();\r\n }\r\n\r\n constructor(private environmentService: EnvironmentService) { \r\n this.lstLimits = environmentService.environment.defaultPageLimits;\r\n this.limit = this.lstLimits[0].value\r\n }\r\n\r\n lstLimits: PageOption[] = []\r\n EmitSearch(): void{\r\n this.searchChange.emit(this.search);\r\n this.EmitChange();\r\n }\r\n\r\n EmitLimit(): void{\r\n this.limitChange.emit(this.limit);\r\n this.pageChange.emit(1);\r\n \r\n this.EmitChange();\r\n }\r\n\r\n EmitChange(){\r\n this.refreshEmitter.emit();\r\n }\r\n\r\n @HostListener('window:keydown',['$event'])\r\n onKeyPress($event: KeyboardEvent) {\r\n if(($event.ctrlKey || $event.metaKey) && ($event.key == 'F' || $event.key == 'f')){\r\n (document.getElementById(\"list_search\") as any as IonSearchbar).setFocus();\r\n $event.preventDefault();\r\n }\r\n }\r\n}","<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>","\r\nimport { Component, effect, ElementRef, Input, model, ModelSignal, OnInit } from '@angular/core';\r\nimport { RefresherCustomEvent } from \"@ionic/angular\";\r\nimport { Observable, firstValueFrom } from \"rxjs\";\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { CompileLstTableField, Comparison } from \"../../../classes/comparison/comparison\";\r\nimport { HttpService, ViewRetorno } from '../../../services/web/http.service';\r\nimport { GenericService } from \"../../../services/generics.service\";\r\nimport { ViewFiltros } from \"../../../classes/filters/view-filtros\";\r\nimport { TableField } from \"../../../classes/inputs/table-field\";\r\nimport { RouteData } from \"../../../classes/routes/route-data\";\r\nimport { LongProperty } from '../../../classes/comparison/properties/long-property';\r\n\r\n//Classe de listagem, implemente carregamento e filtragem de dados\r\n@Component({ template: '', styles: '' })\r\nexport abstract class List<T extends HttpService<V>, V = any> implements OnInit {\r\n\r\n protected genericService: GenericService;\r\n protected activatedRoute: ActivatedRoute;\r\n protected elementRef: ElementRef;\r\n @Input() service: T;\r\n\r\n constructor() { \r\n effect(() => {\r\n this.SetFilters();\r\n });\r\n }\r\n \r\n /** @optional Filtro a ser aplicado na busca da listagem na API */\r\n preloadFilter: ModelSignal<Comparison[]> = model<Comparison[]>([]); \r\n \r\n /** End-point de carregamento de dados. Deve ser uma função no service aplicado */\r\n @Input() loadFrom: (view: ViewFiltros) => Observable<ViewRetorno>;\r\n\r\n\r\n lstDados: V[] = [];\r\n total : number;\r\n nested : boolean = false;\r\n loading : boolean = true;\r\n \r\n originalFilters: Comparison[] = [];\r\n\r\n /** Filtro précarregado */\r\n @Input() frm: ViewFiltros = new ViewFiltros();\r\n\r\n /** Lista de campos a serem substituídos pelo padrão, armazenado no service enviado como parâmetro */\r\n @Input() lstTableFields: TableField[] = [];\r\n\r\n async ngOnInit(): Promise<void> {\r\n this.originalFilters = this.frm.filter;\r\n\r\n if(this.lstTableFields.length == 0){\r\n this.lstTableFields = this.service.lstTableFields;\r\n }\r\n if(!this.service.route){ console.warn(\"[ Warning! ] [ Url is undefined ]\")}\r\n if(!this.service.title){ console.warn(\"[ Warning! ] [ titulo is undefined ]\")}\r\n \r\n //[ Nested element ]\r\n if(this.elementRef.nativeElement.parentElement){\r\n this.nested = (this.elementRef.nativeElement.parentElement.tagName as string).toUpperCase() != \"ION-CONTENT\";\r\n }else{\r\n this.nested = true;\r\n }\r\n\r\n await this.SetFilters();\r\n if(this.nested){ this.Refresh(); }\r\n }\r\n\r\n protected async SetFilters(): Promise<void>{\r\n await this.LoadIdComparison();\r\n const compiled = CompileLstTableField(this.lstTableFields);\r\n const preloadFilter = this.preloadFilter();\r\n this.frm.filter = [...preloadFilter, ...compiled, ...this.originalFilters].map(p => p);\r\n }\r\n\r\n async LoadIdComparison(): Promise<void>{\r\n try{\r\n const data: RouteData = (await firstValueFrom(this.activatedRoute.data)) as RouteData;\r\n\r\n const id = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);\r\n var index: number = this.lstTableFields.indexOf(this.lstTableFields.find(p => p.index == data.idPreloaderConfiguration.propertyName));\r\n const filter: Comparison = new LongProperty(data.idPreloaderConfiguration.propertyName).Equals(id);\r\n\r\n filter.value = id;\r\n filter.disableChange = data.idPreloaderConfiguration.disableChange;\r\n this.lstTableFields[index].filter = [filter];\r\n }finally{ \r\n return;\r\n }\r\n }\r\n\r\n async Refresh(event?: RefresherCustomEvent): Promise<void> {\r\n this.loading = true;\r\n try{\r\n await this.Load();\r\n }\r\n finally{\r\n if(event){ event.target.complete(); }\r\n this.loading = false;\r\n }\r\n }\r\n \r\n async Load(): Promise<void>{\r\n var vRetorno: ViewRetorno;\r\n\r\n try{\r\n if(this.loadFrom){\r\n vRetorno = await firstValueFrom(this.service[this.loadFrom.name](this.frm));\r\n }\r\n else{\r\n vRetorno = await firstValueFrom(this.service.List(this.frm));\r\n }\r\n this.lstDados = vRetorno.lstDados; \r\n this.total = vRetorno.total; \r\n } finally{ \r\n return;\r\n }\r\n }\r\n}","import { HttpClient, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { ApiUrlProviderService } from './api-url-provider.service';\r\nimport { GenericService } from '../generics.service';\r\nimport { Utils } from '../utils.service';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n\r\n constructor(\r\n private http : HttpClient,\r\n private apiUrlProviderService: ApiUrlProviderService,\r\n private genericService: GenericService\r\n ) { }\r\n\r\n private currentlyDownloading: Download[] = [];\r\n\r\n public GetProgress(file: string): number{\r\n const Download = this.currentlyDownloading.find(p => p.file == file)\r\n return Download ? Download.progress : 0;\r\n }\r\n\r\n public StartDownload(file: string, params?: any, post: boolean = false): Download {\r\n if(!this.currentlyDownloading.find(p => p.file == file)){\r\n const download = new Download(file);\r\n this.currentlyDownloading.push(download);\r\n this.HandleDownload(download, params, post);\r\n return download;\r\n }\r\n return this.currentlyDownloading.find(p => p.file == file);\r\n }\r\n\r\n private HandleDownload(download: Download, params?: any, post: boolean = false){\r\n var request: Observable<any> = this.GetFile(download.file, params, post);\r\n\r\n const requestProgess = new BehaviorSubject<any>(null);\r\n download.requestProgess = requestProgess;\r\n request.subscribe({\r\n next: (event) => {\r\n if (event.type === HttpEventType.DownloadProgress) { \r\n download.progress = event.loaded / event.total; \r\n requestProgess.next(download.progress);\r\n } else \r\n if (event.type === HttpEventType.Response) {\r\n Utils.DownloadFile(event, download.file);\r\n this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1);\r\n requestProgess.complete(); \r\n }\r\n if(event.status == 404){\r\n this.genericService.PresentToast(\"Arquivo não encontrado / Url inválida\")\r\n requestProgess.error(event); \r\n requestProgess.complete(); \r\n }\r\n },\r\n error: (err) => {\r\n this.currentlyDownloading.splice(this.currentlyDownloading.indexOf(download), 1)\r\n }\r\n });\r\n return request;\r\n }\r\n\r\n public static SanitizeFileName(v): string{\r\n try{\r\n var filenameEnd: string = v.split('/')[v.split('/').length - 1]\r\n \r\n if(filenameEnd.split('.').length <= 2){\r\n return filenameEnd;\r\n }else{\r\n var lst = filenameEnd.split('.');\r\n lst[0] = '';\r\n return lst.join('.').replace('.', '');\r\n }\r\n }catch{\r\n return v;\r\n }\r\n };\r\n\r\n public GetFile(fileUrl: string, params?: any, post: boolean = false): Observable<any> {\r\n var url: string;\r\n if(fileUrl[0] == '/'){ \r\n url = fileUrl.slice(1, fileUrl.length - 1);\r\n }else{\r\n url = `${this.apiUrlProviderService.apiUrl}${fileUrl}`;\r\n }\r\n url = encodeURI(url).replace(/#/g, '%23')\r\n\r\n if(!post){\r\n return this.http.get(url, {\r\n reportProgress: true,\r\n observe: 'events',\r\n responseType: 'blob',\r\n params: params\r\n });\r\n }else{\r\n return this.http.post(url, params, {\r\n reportProgress: true,\r\n observe: 'events',\r\n responseType: 'blob'\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport class Download {\r\n requestProgess: Observable<any>;\r\n progress : number = 0.00001;\r\n constructor(public file: string){}\r\n}","import { forwardRef, Provider } from \"@angular/core\";\r\nimport { NG_VALUE_ACCESSOR } from \"@angular/forms\";\r\n\r\nexport class InputProviderFactory{\r\n static GetProvider(component: unknown, providers: Provider[] = []): Provider[]{\r\n return [ \r\n ...providers,\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => component),\r\n multi: true,\r\n },\r\n ]\r\n }\r\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from \"@angular/core\";\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, Validators } from \"@angular/forms\";\r\nimport { InputProviderFactory } from \"./input-provider-factory\";\r\n\r\n@Component({ template: '', providers: InputProviderFactory.GetProvider(CustomInput) })\r\nexport abstract class CustomInput<T> implements ControlValueAccessor, OnInit{\r\n //[ Basic ]\r\n @Input() id : string = \"uniqueId\";\r\n /** Exibe o spinner de carregamento */\r\n @Input() loading : boolean;\r\n /** Se ativo desabilita o Input */\r\n @Input() disabled : boolean;\r\n /** Indica se o formulário foi enviado */\r\n @Input() submitted: boolean = false;\r\n /** Titulo do Input */\r\n @Input() label : string = \"Label\";\r\n /** Torna o input obrigatório (Utiliza-se com ngModel) */\r\n @Input() required : boolean = false;\r\n \r\n writeValue(obj: T): void { console.error(\"[ Component writeValue isnt implemented ]\") }\r\n \r\n //[ Value ]\r\n _model: T | null | undefined = null;\r\n get model(): T | any { return this._model; }\r\n set model(value: T | any) { this._model = value; }\r\n\r\n //[ Handle Form / NgModel ]\r\n @Input() formControlName: string;\r\n \r\n public controlContainer : ControlContainer;\r\n @Input('formControl') public control: AbstractControl;\r\n protected elementRef : ElementRef;\r\n\r\n ngOnInit(){\r\n if(!this.control && this.controlContainer && this.formControlName){ \r\n this.control = this.controlContainer.control.get(this.formControlName); \r\n }\r\n \r\n if(this.control){ \r\n this.required = this.control.hasValidator(Validators.required); \r\n this.invalid = this.control.invalid;\r\n\r\n this.control.events.subscribe({\r\n next: (event) => { this.RunValidation(event.source); }\r\n });\r\n }\r\n }\r\n\r\n private RunValidation(control: AbstractControl): void{\r\n this.required = control.hasValidator(Validators.required);\r\n this.invalid = control.invalid;\r\n }\r\n \r\n invalid = false;\r\n // classes: string;\r\n\r\n @Output('blur') blurEmitter: EventEmitter<T> = new EventEmitter<T>();\r\n\r\n //[ ControlValueAccessor ]\r\n @Output('change') changeEmitter: EventEmitter<T> = new EventEmitter<T>();\r\n propagateChange(obj: T): void{ this._onChange(obj); this.changeEmitter.emit(obj);; }\r\n\r\n _onChange: Function = (v: any) => {}\r\n _onTouch : Function = (v: any) => {}\r\n registerOnChange (fn: (value: any) => void ){ this._onChange = fn }\r\n registerOnTouched(fn: (value: any) => void ){ this._onTouch = fn }\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[ngVar]',\r\n})\r\nexport class NgVarDirective {\r\n @Input()\r\n set ngVar(context: unknown) {\r\n this.context.$implicit = this.context.ngVar = context;\r\n\r\n if (!this.hasView) {\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n this.hasView = true;\r\n }\r\n }\r\n\r\n private context: { $implicit: unknown; ngVar: unknown; } = { $implicit: null, ngVar: null, };\r\n\r\n private hasView: boolean = false;\r\n\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private vcRef: ViewContainerRef\r\n ) {}\r\n}","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'input-loading',\r\n templateUrl: './input-loading.component.html',\r\n styleUrls: ['./input-loading.component.scss'],\r\n})\r\nexport class InputLoadingComponent {\r\n\r\n @Input() loading: boolean;\r\n\r\n constructor() { }\r\n}\r\n","<div id=\"spinner-wrapper\" class=\"absolute size-full flex justify-center items-center default-transition w-full left-0 top-0\" [ngClass]=\"{ '-translate-y-12 opacity-0 -z-10' : !loading }\">\r\n <ion-spinner></ion-spinner>\r\n</div>","import { Component, ElementRef, Host, Input, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { InputFileConfiguration } from './input-file.configuration';\r\nimport { ApiUrlProviderService } from '../../../services/web/api-url-provider.service';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { Utils, UtilsService } from '../../../services/utils.service';\r\nimport { CustomInput } from '../custom-input';\r\nimport { StorageService } from '../../../services/web/storage.service';\r\n\r\n@Component({\r\n selector: 'input-file',\r\n templateUrl: './input-file.component.html',\r\n styleUrls: ['./input-file.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputFileComponent)\r\n})\r\nexport class InputFileComponent extends CustomInput<File[] | string> {\r\n\r\n @Input() configuration: InputFileConfiguration = new InputFileConfiguration()\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef: ElementRef,\r\n private utilsService: UtilsService,\r\n private apiUrlProviderService: ApiUrlProviderService,\r\n public storageService: StorageService\r\n ) { super() }\r\n\r\n guid: string;\r\n apiUrl: string;\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n this.apiUrl = this.apiUrlProviderService.apiUrl;\r\n this.guid = `${this.formControlName}${this.id}${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`\r\n }\r\n\r\n override writeValue(value: File[] | string): void { this.setModel(value); }\r\n \r\n override get model(){\r\n if(!this._model){ return \"\"; }\r\n \r\n if(typeof(this._model) == \"string\") { \r\n const t = this._model.split(';').length;\r\n return t == 1 ? StorageService.SanitizeFileName(this._model) : `${t} Arquivos Armazenados`; \r\n } else { \r\n if(this._model.length > 1){ return `${this._model.length} Arquivos Selecionados` }\r\n else { return this._model[0].name }\r\n }\r\n\r\n }\r\n override set model(value: File[] | string) { \r\n this.setModel(value);\r\n this.propagateChange(this._model); \r\n }\r\n setModel(value: File[] | string) { \r\n this._model = value;\r\n \r\n if(typeof(this._model) == \"string\"){\r\n this.lstFiles = this._model.split(';');\r\n }else{\r\n this.lstFiles = [];\r\n }\r\n }\r\n\r\n lstFiles: any[] = [];\r\n\r\n Upload(): void{\r\n this.utilsService.SelectFile(this.configuration).then((res) => { if(res){ this.model = res; } });\r\n }\r\n Download(value: string): void{\r\n this.storageService.StartDownload(value);\r\n }\r\n\r\n PopoverImg(){\r\n return !this.configuration.multiple && typeof(this._model) == \"string\" && this.ExtensionIsImage(this._model);\r\n }\r\n ExtensionIsImage(v){\r\n try{\r\n return imageTypes.includes(v.split('.')[v.split('.').length - 1])\r\n }catch{}\r\n }\r\n\r\n get src(){\r\n return this.apiUrl + this._model\r\n }\r\n get isCloud(){\r\n return typeof(this._model) == \"string\"\r\n }\r\n\r\n Sanitize(v): string { return StorageService.SanitizeFileName(v); }\r\n\r\n lstLoading: string[] = [];\r\n SetLoading(path: string){\r\n this.lstLoading.push(path);\r\n }\r\n SetNotLoading(path: string){\r\n this.lstLoading.splice(this.lstLoading.indexOf(path), 1);\r\n }\r\n isLoading(path: string){\r\n return this.lstLoading.indexOf(path) != -1;\r\n }\r\n}\r\n\r\nexport const imageTypes: string[] = [\r\n 'jpe',\r\n 'jpg',\r\n 'jpeg',\r\n 'gif',\r\n 'png',\r\n 'bmp',\r\n 'ico',\r\n 'svg',\r\n 'svgz',\r\n 'tif',\r\n 'tiff',\r\n] ","<div class=\"flex relative overflow-hidden\">\r\n <ion-card [disabled]=\"loading || disabled\"\r\n class=\"!border-r-0 !rounded-r-none focus-within:on-focus ion-card-input\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <ion-item lines=\"none\">\r\n <ion-input [readonly]=\"true\" class=\"!opacity-100\" labelPlacement=\"stacked\" [(ngModel)]=\"model\">\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n </ion-input>\r\n </ion-item>\r\n <div class=\"absolute h-full right-2 top-0 z-50 flex items-center justify-center\">\r\n <ion-button [id]=\"guid\" [disabled]=\"!(lstFiles.length > 1)\"\r\n class=\"aspect-square default-transition opacity-0 translate-x-12\" \r\n [ngClass]=\"{'opacity-100 !translate-x-0 size-8': lstFiles.length > 1 }\" \r\n size=\"small\" fill=\"outline\" color=\"medium\"\r\n >\r\n <ion-icon name=\"ellipsis-vertical\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n\r\n <div class=\"absolute h-full right-12 top-0 z-50 flex items-center justify-center\" [ngClass]=\"{'!z-0': !(_model && lstFiles.length == 1 && PopoverImg)}\" >\r\n <ion-button [id]=\"guid + 'image'\" [disabled]=\"!(_model && lstFiles.length == 1 && PopoverImg)\"\r\n class=\"aspect-square default-transition opacity-0 translate-x-12\" \r\n [ngClass]=\"{'opacity-100 !translate-x-0 size-8': _model && lstFiles.length == 1 && PopoverImg }\" \r\n size=\"small\" fill=\"outline\" color=\"medium\"\r\n >\r\n <ion-icon name=\"image\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n\r\n <div class=\"absolute h-full right-2 top-0 z-50 flex items-center justify-center\" [ngClass]=\"{'!z-0': !(_model && lstFiles.length == 1 && PopoverImg)}\" >\r\n <ion-button (click)=\"Download(_model.toString())\" [disabled]=\"!(_model && lstFiles.length == 1)\"\r\n class=\"aspect-square default-transition opacity-0 translate-x-12\" \r\n [ngClass]=\"{'opacity-100 !translate-x-0 size-8': _model && lstFiles.length == 1 }\" \r\n size=\"small\" fill=\"outline\"\r\n >\r\n <ion-icon name=\"cloud-download\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n\r\n @if (model) {\r\n <ion-progress-bar *ngVar=\"storageService.GetProgress(_model.toString()) as val\" [value]=\"val\" class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'!h-0': !val}\"></ion-progress-bar>\r\n }\r\n </ion-card-content>\r\n </ion-card>\r\n <div class=\"w-12\"> \r\n <ion-button (click)=\"Upload()\" class=\"m-0 h-full w-full rou on-hover rounded-r-2xl\" [disabled]=\"loading || disabled\" style=\"--border-width: 1px 1px 2px 1px; --border-radius: 0rem 1rem 1rem 0rem;\" size=\"small\" color=\"secondary\" fill=\"outline\"> \r\n <ion-icon slot=\"icon-only\" name=\"cloud-upload\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n\r\n</div>\r\n\r\n@if (PopoverImg) {\r\n <ion-popover [trigger]=\"guid + 'image'\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-img [src]=\"src\"></ion-img> \r\n </ng-template>\r\n </ion-popover>\r\n}\r\n@if(configuration.multiple){\r\n <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content class=\"p-0 bg-transparent\">\r\n <ion-list>\r\n @for (item of lstFiles; track item; let i = $index; let l = $last) {\r\n <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n @if (ExtensionIsImage(item)) {\r\n <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n }\r\n\r\n <ion-label>{{Sanitize(item)}}</ion-label>\r\n <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n </ion-item>\r\n <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n <loading [hidden]=\"!isLoading\"></loading>\r\n <ion-img [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </section>\r\n }\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}\r\n","import { Component, computed, ElementRef, Input, model, ModelSignal, Signal } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { InputFileConfiguration } from '../input-file.configuration';\r\nimport { ApiUrlProviderService } from '../../../../services/web/api-url-provider.service';\r\nimport { InputProviderFactory } from '../../input-provider-factory';\r\nimport { StorageService } from '../../../../services/web/storage.service';\r\nimport { imageTypes } from '../input-file.component';\r\nimport { Utils } from '../../../../services/utils.service';\r\n\r\n@Component({\r\n selector: 'download-button',\r\n templateUrl: './download-button.component.html',\r\n styleUrls: ['./download-button.component.scss'],\r\n providers: InputProviderFactory.GetProvider(DownloadButtonComponent)\r\n})\r\nexport class DownloadButtonComponent implements ControlValueAccessor {\r\n\r\n @Input() expand: string = \"\";\r\n value: ModelSignal<string> = model<string>();\r\n @Input() size: string = \"small\";\r\n @Input() params: any;\r\n @Input() disabled: boolean;\r\n @Input() post: boolean = false;\r\n @Input() configuration: InputFileConfiguration = new InputFileConfiguration();\r\n \r\n constructor(\r\n public storageService: StorageService,\r\n private elementRef: ElementRef,\r\n private apiUrlProviderService: ApiUrlProviderService\r\n ) { }\r\n\r\n registerOnChange(fn: any): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n registerOnTouched(fn: any): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n guid : string = \"\";\r\n apiUrl: string;\r\n\r\n ngOnInit() {\r\n this.apiUrl = this.apiUrlProviderService.apiUrl;\r\n this.guid = `${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`\r\n }\r\n\r\n lstFiles: Signal<string[]> = computed(() => {\r\n if(typeof(this.value()) == \"string\"){\r\n return this.value().split(';');\r\n }else{\r\n return [];\r\n }\r\n });\r\n\r\n writeValue(value: string): void { this.value.set(value); }\r\n\r\n Download(value: string): void{\r\n this.storageService.StartDownload(value, this.params, this.post);\r\n }\r\n\r\n Sanitize(v): string {\r\n return StorageService.SanitizeFileName(v);\r\n }\r\n\r\n ExtensionIsImage(v){\r\n try{\r\n return imageTypes.includes(v.split('.')[v.split('.').length - 1])\r\n }catch{}\r\n }\r\n\r\n lstLoading: string[] = [];\r\n SetLoading(path: string){\r\n this.lstLoading.push(path);\r\n }\r\n SetNotLoading(path: string){\r\n this.lstLoading.splice(this.lstLoading.indexOf(path), 1);\r\n }\r\n isLoading(path: string){\r\n return this.lstLoading.indexOf(path) != -1;\r\n }\r\n}\r\n","@if(lstFiles().length == 0){\r\n <ion-button fill=\"outline\" [disabled]=\"true\" [size]=\"size\"> \r\n <ion-icon name=\"close-circle\" slot=\"start\"></ion-icon> \r\n <ion-label> Sem arquivos... </ion-label>\r\n </ion-button>\r\n}\r\n@else if(lstFiles().length == 1){\r\n <ion-button *ngVar=\"storageService.GetProgress(lstFiles()[0]) as val\" class=\"relative block {{expand == 'block' ? 'size-full' : ''}}\" [disabled]=\"val != 0 || disabled\" (click)=\"Download(lstFiles()[0])\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{Sanitize(lstFiles()[0])}} </ion-label>\r\n <input-loading [loading]=\"val != 0\"></input-loading>\r\n <div class=\"absolute size-full h-[calc(100%+var(--padding-top)+var(--padding-bottom))] w-[calc(100%+var(--padding-end)+var(--padding-start))]\">\r\n <div class=\"size-full flex flex-row-reverse relative\">\r\n <ion-progress-bar class=\"absolute bottom-0 left-0 w-full h-1 default-transition\" [ngClass]=\"{'-translate-y-4 opacity-0': (!val || val == 0)}\" [value]=\"val\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n </ion-button>\r\n}\r\n@else{\r\n <ion-button [id]=\"guid\" fill=\"outline\" [size]=\"size\"> \r\n <ion-icon name=\"download\" slot=\"start\"></ion-icon> \r\n <ion-label> {{lstFiles().length}} Arquivos </ion-label>\r\n </ion-button>\r\n\r\n <ion-popover [trigger]=\"guid\" [keepContentsMounted]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content class=\"p-0 bg-transparent\">\r\n <ion-list>\r\n @for (item of lstFiles(); track item; let i = $index; let l = $last) {\r\n <section *ngVar=\"storageService.GetProgress(item) as val\">\r\n <ion-item style=\"--background: transparent\" lines=\"{{l ? 'none' : 'full'}}\" button [detail]=\"false\">\r\n\r\n <ion-icon name=\"download\" (click)=\"Download(item)\" slot=\"start\"></ion-icon> \r\n @if (ExtensionIsImage(item)) {\r\n <ion-icon [id]=\"guid + '-' + i + '-nested-popover'\" name=\"image\" slot=\"start\"></ion-icon> \r\n }\r\n\r\n <ion-label>{{Sanitize(item)}}</ion-label>\r\n <ion-text *ngIf=\"val != 0\" slot=\"end\" class=\"text-sm\"><b>{{val * 100 | number : '1.2-2'}}%</b></ion-text>\r\n </ion-item>\r\n <ion-progress-bar class=\"h-0 default-transition\" [ngClass]=\"{'h-1': val != 0 }\" [value]=\"val\"></ion-progress-bar>\r\n <ion-popover *ngIf=\"ExtensionIsImage(item)\" side=\"end\" alignment=\"center\" [trigger]=\"guid + '-' + i + '-nested-popover'\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content *ngVar=\"isLoading(item) as isLoading\">\r\n <loading [hidden]=\"!isLoading\"></loading>\r\n <ion-img [hidden]=\"isLoading\" [src]=\"apiUrl + item\" (ionImgWillLoad)=\"SetLoading(item)\" (ionImgDidLoad)=\"SetNotLoading(item)\"></ion-img>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </section>\r\n }\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { GenericService } from '../../../services/generics.service';\r\nimport { Utils } from '../../../services/utils.service';\r\n\r\n/** Componente de paginação padrão */\r\n@Component({\r\n selector: 'default-pagination',\r\n templateUrl: './default-pagination.component.html',\r\n styleUrls: ['./default-pagination.component.scss'],\r\n})\r\nexport class DefaultPaginationComponent implements OnInit {\r\n\r\n\r\n total: number = 0;\r\n limit: number | null = 0;\r\n /** Valor total de dados */\r\n @Input('total') set _total(value: number){ \r\n this.total = value;\r\n this.TotalPages = this.GetTotalPages();\r\n this.lstPages = this.GetlstPages();\r\n };\r\n /** Limite de páginas */\r\n @Input('limit') set _limit(value: number | null){ \r\n this.limit = value;\r\n this.TotalPages = this.GetTotalPages();\r\n this.lstPages = this.GetlstPages();\r\n };\r\n\r\n /** Quantidade de dados em tela */\r\n @Input() length: number;\r\n @Input() loading: boolean;\r\n \r\n /** Pagina atual (usando two way data binding) */\r\n @Input() page: number;\r\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n \r\n /** Evento emitido na mudança de valores (Pagina) */\r\n @Output('change') changeEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n \r\n constructor(\r\n private genericService: GenericService\r\n ) { }\r\n\r\n ngOnInit() {}\r\n pop_id: string = \"popover-id-\" + Utils.GenerateGUID();\r\n\r\n GetlstPages(): number[] {\r\n if(!this.TotalPages){ return []; }\r\n var startIndex: number;\r\n var start: number[] = [];\r\n\r\n startIndex = this.page - 1;\r\n\r\n var _: number[] = [];\r\n for(let i = this.TotalPages - 4; i <= this.TotalPages ; i++){\r\n if(i > 0){\r\n _.push(i);\r\n }\r\n }\r\n\r\n for(let i = startIndex; i <= this.TotalPages && i < startIndex + 5; i++){\r\n if(i > 0){\r\n start.push(i);\r\n }\r\n }\r\n if(startIndex == 0 && this.TotalPages >= 5){\r\n start.push(5);\r\n }\r\n\r\n if(start[0] > _[0]){\r\n return _;\r\n }\r\n\r\n return start;\r\n }\r\n\r\n GetTotalPages(): number{\r\n return this.limit ? Math.ceil(this.total / this.limit) : Math.ceil(this.total / this.total)\r\n }\r\n\r\n lstPages : number[] = [];\r\n TotalPages: number = 0;\r\n\r\n PageAdd(): void{\r\n if(this.page + 1 > this.TotalPages){ return; }\r\n this.SetPage(this.page + 1);\r\n }\r\n \r\n PageSub(): void{\r\n if(this.page - 1 < 1){ return; }\r\n this.SetPage(this.page - 1);\r\n }\r\n\r\n SetPage(value: number): void{\r\n if(value != this.page){\r\n this.pageChange.emit(value);\r\n this.EmitChange()\r\n\r\n setTimeout(() => {\r\n this.TotalPages = this.GetTotalPages();\r\n this.lstPages = this.GetlstPages();\r\n }, 100);\r\n }\r\n }\r\n\r\n _page: number;\r\n SetPageManual(){\r\n if(this._page && this._page > 0 && this._page <= this.TotalPages){\r\n this.SetPage(this._page);\r\n }else{\r\n this.genericService.PresentToast(\"Página inválida\")\r\n }\r\n }\r\n\r\n EmitChange(): void{\r\n this.changeEmitter.emit();\r\n }\r\n}","<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ágina [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>","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { IonModal } from '@ionic/angular';\r\nimport moment from 'moment';\r\n\r\nimport { InputDateConfiguration } from './input-date.configuration';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomInput } from '../custom-input';\r\nimport { Utils } from '../../../services/utils.service';\r\n\r\n@Component({\r\n selector: 'input-date, input-date-time, input-time',\r\n templateUrl: './input-date.component.html',\r\n styleUrls: ['./input-date.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputDateComponent)\r\n})\r\nexport class InputDateComponent extends CustomInput<string> implements OnInit {\r\n\r\n @Input() configuration: InputDateConfiguration = new InputDateConfiguration();\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer : ControlContainer,\r\n override elementRef : ElementRef,\r\n ) { super(); this.HandleSelector(); }\r\n\r\n public presentation: \"date-time\" | \"date\" | \"time\" | string = \"date-time\"\r\n private transform: Function = ((v) => { console.warn(\"[ Component isn't ready ]\"); })\r\n\r\n HandleSelector(){\r\n const selector: string = (this.elementRef.nativeElement.tagName.toLowerCase() as string).replace('input-', '');\r\n this.presentation = selector;\r\n \r\n if(selector == \"date-time\"){ this.transform = Utils.DateISOToDDMMYYYYHHMM }\r\n if(selector == \"date\") { this.transform = Utils.DateISOToDDMMYYYY }\r\n if(selector == \"time\") { this.transform = TimeTransform }\r\n }\r\n\r\n id_modal: string = \"\";\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n this.id_modal = `${this.formControlName}${this.id}${Utils.GenerateGUID()}${this.elementRef.nativeElement.tagName.toLowerCase()}`\r\n }\r\n\r\n dateModel: string | null = new Date().toISOString();\r\n override writeValue(value: string | null){\r\n if (value !== undefined && value != null) {\r\n if(['date-time', 'date'].includes(this.presentation)){\r\n this.dateModel = moment(value).toISOString();\r\n this.setModel(value);\r\n }else{\r\n this.dateModel = this.transform(value);\r\n this.setModel(this.transform(value));\r\n }\r\n }else{\r\n this.dateModel = null;\r\n this.setModel(null)\r\n }\r\n }\r\n override get model(): string { if(this._model != null){ return this.transform(this._model); } else return null; }\r\n override set model(value: string) { this._model = value; this.propagateChange(this._model); }\r\n setModel(value: string){\r\n this._model = value; \r\n }\r\n \r\n get _val() { return this.model; }\r\n set _val(v) { }\r\n\r\n get modal(){ return document.getElementById(this.id_modal) as any as IonModal}\r\n Open(){ if(!this.disabled){ this.modal.present(); } }\r\n\r\n Clear(){ \r\n this.dateModel = null;\r\n this.DateTimeChange();\r\n }\r\n DateTimeChange(): void{\r\n if(this.dateModel){\r\n if(this.presentation == 'time') { this.model = this.dateModel; } else\r\n if(this.presentation == 'date') { this.model = this.dateModel.split('T')[0] + \"T00:00:00\" } else { this.model = this.dateModel }\r\n }else{\r\n this.model = this.dateModel\r\n }\r\n }\r\n}\r\n\r\nconst TimeTransform: Function = ((v: string): string => { \r\n if(!v){ return null; }\r\n if(v.split(':').length == 2){ \r\n return v; \r\n }else{ \r\n return v.split(':')[0] + \":\" + v.split(':')[1]\r\n } \r\n})","<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled' : disabled,\r\n '!border-r-0 !rounded-r-none': configuration.clearable\r\n }\"\r\n >\r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"w-full default-transition\">\r\n <ion-input (click)=\"Open()\" [readonly]=\"true\" labelPlacement=\"stacked\" class=\"!opacity-100\" [(ngModel)]=\"_val\">\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}}</ion-text>\r\n </ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n <div class=\"w-12 shrink-0\" [hidden]=\"!configuration.clearable\"> \r\n <ion-button (click)=\"Clear()\"[disabled]=\"loading || disabled\" class=\"m-0 h-full w-full rounded-r-2xl on-hover\" style=\"--border-width: 1px 1px 2px 1px;\" size=\"small\" color=\"medium\" fill=\"outline\"> \r\n <ion-icon slot=\"icon-only\" name=\"backspace\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>\r\n\r\n<ion-modal [id]=\"id_modal\" [keepContentsMounted]=\"true\" class=\"bg-transparent\">\r\n <ng-template>\r\n <ion-datetime [presentation]=\"presentation\" #datetime id=\"{{id_modal}}-datetime\" locale=\"pt-BR\" [(ngModel)]=\"dateModel\" (ngModelChange)=\"DateTimeChange()\">\r\n <ion-buttons slot=\"buttons\">\r\n <ion-button color=\"primary\" fill=\"clear\" (click)=\"datetime.cancel(); modal.dismiss()\">\r\n <ion-icon slot=\"icon-only\" name=\"close-circle\"></ion-icon>\r\n </ion-button>\r\n <ion-button color=\"primary\" fill=\"clear\" (click)=\"datetime.confirm(); modal.dismiss()\">\r\n <ion-icon slot=\"icon-only\" name=\"checkmark-circle\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n </ion-datetime>\r\n </ng-template>\r\n</ion-modal>\r\n<ion-datetime-button class=\"hidden\" datetime=\"{{id_modal}}-datetime\"></ion-datetime-button>","import { Component, ElementRef, Host, HostListener, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nimport { InputCurrencyConfiguration, InputDecimalConfiguration, InputNumberConfiguration } from './input-decimal.configuration';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { Timeout } from '../../../services/utils.service';\r\nimport { CustomInput } from '../custom-input';\r\n\r\n@Component({\r\n selector: 'input-decimal, input-number, input-currency, inout-percentage',\r\n templateUrl: './input-decimal.component.html',\r\n styleUrls: ['./input-decimal.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputDecimalComponent)\r\n})\r\nexport class InputDecimalComponent extends CustomInput<number> implements OnInit {\r\n\r\n @Input() configuration: InputDecimalConfiguration | InputNumberConfiguration | InputCurrencyConfiguration;\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef: ElementRef\r\n ) { super(); this._model = 0; }\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.HandleSelector();\r\n this.setDivider();\r\n }\r\n\r\n digitsInfo: string = \"1.2-2\";\r\n setDigitsInfo(): void { this.digitsInfo = `1.${this.configuration.precision}-${this.configuration.precision}`; }\r\n HandleSelector(): void{\r\n const selector: string = this.elementRef.nativeElement.tagName.toLowerCase().split('-')[1];\r\n\r\n if(selector == \"number\" && !this.configuration){ this.configuration = new InputNumberConfiguration(); } else\r\n if(selector == \"decimal\" && !this.configuration){ this.configuration = new InputDecimalConfiguration(); } else\r\n if(selector == \"currency\" && !this.configuration){ this.configuration = new InputCurrencyConfiguration(); }\r\n this.setDigitsInfo();\r\n }\r\n\r\n override writeValue(value: number){ this._model = value; }\r\n\r\n override get model(): string { \r\n var formated = formatNumber(this._model, \"pt-BR\", this.digitsInfo);\r\n if(this.configuration.thousandSeparator){ \r\n return formated;\r\n }else{\r\n return formated.replaceAll(thousandSeparator, '')\r\n } \r\n }\r\n override set model(value: number) { this._model = value; this.propagateChange(this._model); }\r\n\r\n //#region [ Event Handler ]\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(event: any) {\r\n this.eventType = 0;\r\n this.event = event;\r\n this.key = event.key;\r\n \r\n this.altKey = this.event.altKey;\r\n this.ctrlKey = this.event.ctrlKey;\r\n this.shiftKey = this.event.shiftKey;\r\n\r\n this.startPosition = event.target.selectionStart;\r\n this.endPosition = event.target.selectionEnd;\r\n\r\n this.value = event.target.value;\r\n\r\n this.HandleBrowser();\r\n }\r\n \r\n @HostListener('paste', ['$event'])\r\n onPaste(event: any) {\r\n this.event.preventDefault();\r\n \r\n let clipboardData = event.clipboardData || window['clipboardData'];\r\n let pastedText = clipboardData.getData('text');\r\n\r\n const s = pastedText.replaceAll('.', '').replaceAll(',', '.');\r\n const n = Number(s);\r\n\r\n if(Number(s) && isFinite(n)){ \r\n this.model = n;\r\n } else{\r\n\r\n }\r\n event.preventDefault();\r\n }\r\n\r\n key: string | null | undefined;\r\n \r\n altKey : boolean = false;\r\n ctrlKey : boolean = false;\r\n shiftKey: boolean = false;\r\n\r\n startPosition : number;\r\n endPosition : number;\r\n\r\n value: string;\r\n\r\n event : any;\r\n eventType: number;\r\n \r\n atLeft: string;\r\n atRight: string;\r\n\r\n HandleBrowser(){\r\n this.atLeft = this.value.slice(0, this.startPosition); \r\n this.atRight = this.value.slice(this.endPosition, this.value.length); \r\n if([\"-\"].includes(this.key)){ \r\n return this.HandleNegative();\r\n }else\r\n if([\"V\", \"v\"].includes(this.key) && this.ctrlKey){ \r\n //@HostListener('paste', ['$event'])\r\n }else\r\n if(lstNumbers.includes(this.key)){ \r\n return this.HandleNumber(); \r\n }else\r\n if(lstEspecialCases.includes(this.key)){ \r\n return this.HandleEspecial(); \r\n }else\r\n if([\"A\", \"a\"].includes(this.key) && this.ctrlKey){ \r\n return; \r\n }else\r\n if([\"C\", \"c\"].includes(this.key) && this.ctrlKey){ \r\n return this.HandleCopy(); \r\n }else\r\n if(lstIgnoreNotPrevent.includes(this.key)){ \r\n return; \r\n }else\r\n this.event.preventDefault();\r\n }\r\n\r\n divider: number;\r\n setDivider(){\r\n var d = \"1\";\r\n for(let i = 0; i < this.configuration.precision; i++){\r\n d += \"0\"; \r\n }\r\n this.divider = Number(d);\r\n }\r\n\r\n async HandleNumber(){\r\n this.event.preventDefault();\r\n\r\n var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;\r\n /** [ Remove decimalSeparator & thousandSeparator ] */\r\n const f = this.atLeft + this.key + this.atRight;\r\n const CurrentValue: number = this.SanitizeValue(f);\r\n if(CurrentValue == this._model){ return false; }\r\n if(CurrentValue > decimalMaxValue){\r\n return false;\r\n }\r\n \r\n //[ Handle Set Cursor Position]\r\n this.model = CurrentValue;\r\n const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;\r\n \r\n //Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element\r\n await Timeout(0);\r\n this.event.target.setSelectionRange(newPos, newPos); \r\n if(focusEnd){\r\n this.event.target.setSelectionRange(this.model.length, this.model.length); \r\n }\r\n\r\n return false;\r\n }\r\n \r\n async HandleNegative(){\r\n this.event.preventDefault();\r\n\r\n var focusEnd = this.startPosition == 0 && this.endPosition == this.model.length;\r\n /** [ Remove decimalSeparator & thousandSeparator ] */\r\n var f;\r\n if(!this.atLeft.includes('-')){\r\n f = this.key + this.atLeft + this.atRight;\r\n }else{\r\n f = (this.atLeft + this.atRight).replace('-', '')\r\n }\r\n if(f == \"-\"){ \r\n if(this.value.includes('-')){\r\n f = this.value.replace('-', '');\r\n }\r\n else{\r\n f = `-${this.value}`;\r\n }\r\n }\r\n\r\n const CurrentValue: number = this.SanitizeValue(f);\r\n if(CurrentValue == this._model){ return false; }\r\n \r\n //[ Handle Set Cursor Position]\r\n this.model = CurrentValue;\r\n const newPos = this.startPosition + 1 + this.model.split('.').length - this.value.split('.').length;\r\n \r\n //Horrivel, mas nao sem uma alternativa boa, https://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element\r\n await Timeout(0);\r\n this.event.target.setSelectionRange(newPos, newPos); \r\n if(focusEnd){\r\n this.event.target.setSelectionRange(this.model.length, this.model.length); \r\n }\r\n return false;\r\n }\r\n\r\n async HandleEspecial(){\r\n this.event.preventDefault();\r\n if(this.startPosition == this.endPosition){\r\n if(this.key == \"Backspace\"){\r\n if(this.startPosition == this.endPosition && this.startPosition == 0){ return false; }\r\n\r\n const previousChar: string = this.atLeft[this.atLeft.length - 1];\r\n const isNumber = lstNumbers.includes(previousChar);\r\n const f = this.atLeft.slice(0, this.atLeft.length - (isNumber ? 1 : 2)) + this.atRight;\r\n const CurrentValue = this.SanitizeValue(f);\r\n \r\n //[ Handle Set Cursor Position]\r\n this.model = CurrentValue;\r\n await Timeout(0);\r\n this.event.target.setSelectionRange(this.startPosition, this.startPosition); \r\n \r\n return false;\r\n }else\r\n if(this.key == \"Delete\"){\r\n const nextChar: string = this.atRight[0];\r\n const isNumber = lstNumbers.includes(nextChar);\r\n const f = this.atLeft + this.atRight.slice(isNumber ? 1 : 2);\r\n const CurrentValue = this.SanitizeValue(f);\r\n \r\n //[ Handle Set Cursor Position]\r\n this.model = CurrentValue;\r\n var newPos: number = this.startPosition - 1\r\n if(newPos <= -1){ newPos = 0; }\r\n\r\n await Timeout(0);\r\n this.event.target.setSelectionRange(newPos, newPos);\r\n \r\n return false;\r\n }\r\n }else{\r\n const f = this.atLeft + this.atRight;\r\n const CurrentValue = this.SanitizeValue(f);\r\n this.model = CurrentValue;\r\n \r\n await Timeout(0);\r\n this.event.target.setSelectionRange(this.model.length, this.model.length); \r\n\r\n return false;\r\n }\r\n }\r\n\r\n async HandleCopy(){\r\n //[ Not necessary, default behaviour might work ]\r\n // this.event.preventDefault();\r\n\r\n // var str = this.model;\r\n // var lst = str.split('');\r\n // lst.splice(this.endPosition, str.length - this.endPosition);\r\n // lst.splice(0, this.startPosition)\r\n // var copy = lst.join('').replaceAll(this.configuration.thousandSeparator, '').replace(this.configuration.decimalSeparator, '.');\r\n // console.log(copy)\r\n // Clipboard.write({string: copy}).catch(() => {\r\n // navigator.clipboard.writeText(copy);\r\n // });\r\n }\r\n\r\n SanitizeValue(f: string): number{\r\n var CurrentValue: number = Number(Sanitize(f)) / this.divider;\r\n //[ Cancela se o valor for muito alto ]\r\n if(CurrentValue >= decimalMaxValue){ \r\n return this._model; \r\n }\r\n return CurrentValue;\r\n }\r\n //#endregion [ Event Handler ]\r\n}\r\n\r\nconst decimalMaxValue = 9_000_000_000_000.00\r\n\r\nconst decimalSeparator : string = \",\";\r\nconst thousandSeparator: string = \".\";\r\n\r\nconst Sanitize: Function = ((v: string): string => { \r\n return v.replaceAll(thousandSeparator, '')\r\n .replace (decimalSeparator , '') \r\n });\r\n\r\nconst lstNumbers = [\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\"];\r\nconst lstIgnoreNotPrevent = [\r\n \"Tab\", \"CapsLock\", \"Shift\", \"Control\", \"Alt\", \"ArrowRight\", \"ArrowUp\", \"ArrowDown\", \"ArrowLeft\"\r\n];\r\nconst lstEspecialCases = [\r\n \"Backspace\", \"Delete\"\r\n];","<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"relative flex\">\r\n <ion-item class=\"w-full shrink-0\" [ngClass]=\"{'required' : required}\" lines=\"none\">\r\n <ion-input\r\n class=\"default-transition\" [value]=\"model\" labelPlacement=\"stacked\"\r\n >\r\n <ion-text [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n <span *ngIf=\"configuration.prefix\" slot=\"start\">{{configuration.prefix}}</span>\r\n <span *ngIf=\"configuration.sufix\" slot=\"end\" >{{configuration.sufix}}</span>\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>","import { ModelSignal } from \"@angular/core\"\r\nimport { InputSelectConfiguration } from \"./input.select.configuration\"\r\n\r\nexport abstract class ISelect{\r\n items : ModelSignal<any[]> \r\n configuration : ModelSignal<InputSelectConfiguration>\r\n loadingFromLoader: boolean\r\n Clear : (() => void) \r\n Select: ((item: any, UseDefaultModelOptions?) => void)\r\n PresentPopover: (($event: MouseEvent) => Promise<void>)\r\n UpdateUseDefaultModelOptions: (() => void);\r\n Update: (() => void);\r\n}\r\nexport abstract class ISelectOption{\r\n hidden : boolean = false;\r\n disabled: boolean = false;\r\n\r\n label: ModelSignal<string>;\r\n \r\n model: any;\r\n \r\n GetNativeElement: (() => HTMLElement);\r\n\r\n isSelected: boolean = false;\r\n onFocus : boolean = false;\r\n}","import { Component, effect, ElementRef, Input, model, ModelSignal } from '@angular/core';\r\nimport { ISelectOption, ISelect } from '../ISelect';\r\n\r\n@Component({\r\n selector: 'input-select-internal-option',\r\n templateUrl: './input-select-internal-option.component.html',\r\n styleUrls: ['./input-select-internal-option.component.scss', '../../inputs.scss'],\r\n})\r\nexport class InputSelectInternalOptionComponent implements ISelectOption {\r\n\r\n @Input() hidden : boolean = false;\r\n @Input() disabled: boolean = false;\r\n\r\n constructor(\r\n protected parentComponent: ISelect,\r\n private elementRef: ElementRef<HTMLElement>\r\n ) {\r\n effect(() => { \r\n parentComponent.UpdateUseDefaultModelOptions(); \r\n parentComponent.Update(); \r\n }, { allowSignalWrites: true })\r\n }\r\n\r\n public GetNativeElement(){\r\n return this.elementRef.nativeElement\r\n }\r\n\r\n label: ModelSignal<string> = model<string>();\r\n \r\n @Input() model: any;\r\n\r\n protected HandleClick(): void{\r\n this.parentComponent.Select(this.model, false);\r\n }\r\n\r\n @Input() isSelected: boolean = false;\r\n onFocus : boolean = false;\r\n}\r\n","<ion-item \r\n [disabled]=\"disabled\" \r\n [ngClass]=\"{'remove-select-padding': isSelected, 'opacity-0 !h-0' : hidden, 'bg-primary/10': onFocus}\" \r\n lines=\"full\" \r\n class=\"default-transition w-full flex items-center cursor-pointer justify-between overflow-hidden select-none hover:bg-primary/5\" \r\n (click)=\"HandleClick()\"\r\n>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n <div class=\"size-full flex items-center justify-start\">\r\n <ng-content class=\"truncate w-full\"></ng-content>\r\n </div>\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n <div slot=\"end\" class=\"w-6 flex items-center justify-start opacity-100 default-transition\" [ngClass]=\"{'!w-0 !opacity-0': !isSelected}\">\r\n <ion-icon class=\"text-2xl\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n </div>\r\n</ion-item>","import { Component, ElementRef, Input, ModelSignal, computed, effect, model } from '@angular/core';\r\nimport { DefaultModelOptions } from '../input.select.configuration';\r\nimport { ISelectOption, ISelect } from '../ISelect';\r\n\r\n@Component({\r\n selector: 'input-select-option',\r\n templateUrl: './input-select-option.component.html',\r\n styleUrls: ['./input-select-option.component.scss', '../../inputs.scss'],\r\n})\r\nexport class InputSelectOptionComponent implements ISelectOption {\r\n\r\n /** Atributo indicando que o navegador não deve renderizar o conteúdo do elemento. */\r\n @Input() hidden : boolean = false;\r\n /** Se ativo desabilita o Input */\r\n @Input() disabled: boolean = false;\r\n /** Valor da opção em questão */\r\n @Input() value: any;\r\n \r\n\r\n constructor(\r\n protected parentComponent: ISelect,\r\n private elementRef: ElementRef<HTMLElement>\r\n ) { \r\n effect(() => { \r\n parentComponent.UpdateUseDefaultModelOptions(); \r\n parentComponent.Update(); \r\n }, { allowSignalWrites: true })\r\n }\r\n\r\n public GetNativeElement(){\r\n return this.elementRef.nativeElement\r\n }\r\n\r\n /** Representa uma legenda para um item */\r\n label: ModelSignal<string> = model<string>();\r\n \r\n public model = computed<DefaultModelOptions>(() => {\r\n return { value: this.value, label: this.label() }\r\n });\r\n\r\n protected HandleClick(): void{\r\n this.parentComponent.Select(this.model(), true);\r\n }\r\n\r\n isSelected: boolean = false;\r\n onFocus : boolean = false;\r\n}\r\n","<ion-item [disabled]=\"disabled\" \r\n [ngClass]=\"{'remove-select-padding': isSelected, 'opacity-0 !h-0' : hidden, 'bg-primary/10': onFocus}\" \r\n lines=\"full\" \r\n class=\"default-transition w-full flex items-center h-fit cursor-pointer justify-between overflow-hidden select-none hover:bg-primary/5\" \r\n (click)=\"HandleClick()\"\r\n>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n <div class=\"size-full flex items-center justify-start\">\r\n <ng-content class=\"truncate w-full\"></ng-content>\r\n </div>\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n <div slot=\"end\" class=\"w-6 flex items-center justify-start opacity-100 default-transition\" [ngClass]=\"{'!w-0 !opacity-0': !isSelected}\">\r\n <ion-icon class=\"text-2xl\" color=\"primary\" name=\"checkmark\"></ion-icon>\r\n </div>\r\n</ion-item>","import { Component, ElementRef, Input, OnInit, OutputEmitterRef, WritableSignal, effect, model, output } from \"@angular/core\";\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, Validators } from \"@angular/forms\";\r\nimport { InputProviderFactory } from \"./input-provider-factory\";\r\n\r\n@Component({ template: '', providers: InputProviderFactory.GetProvider(CustomSignalInput) })\r\nexport abstract class CustomSignalInput<T> implements ControlValueAccessor, OnInit{\r\n //[ Basic ]\r\n /** Exibe o spinner de carregamento */\r\n @Input() loading : boolean = false;\r\n /** Se ativo desabilita o Input */\r\n @Input() disabled : boolean = false;\r\n /** Indica se o formulário foi enviado */\r\n @Input() submitted: boolean = false;\r\n /** Titulo do Input */\r\n @Input() label : string = \"Label\";\r\n /** Torna o input obrigatorio */\r\n required: WritableSignal<boolean> = model<boolean>(false)\r\n \r\n writeValue(obj: T): void { console.error(\"[ Component writeValue isnt implemented ]\") }\r\n \r\n //[ Value ]\r\n protected _model: T | null = null;\r\n get model(): T | any { return this._model; }\r\n set model(value: T | any) { this._model = value; }\r\n\r\n //[ Handle Form / NgModel ]\r\n @Input() formControlName : string;\r\n public controlContainer: ControlContainer;\r\n @Input('formControl') \r\n public control : AbstractControl;\r\n protected elementRef : ElementRef;\r\n\r\n constructor(){\r\n effect(() => { \r\n if(this.control){ this.invalid = this.control.invalid; }\r\n });\r\n }\r\n\r\n ngOnInit(){\r\n if(!this.control && this.controlContainer && this.formControlName){ \r\n this.control = this.controlContainer.control.get(this.formControlName); \r\n }\r\n \r\n if(this.control){ \r\n this.required.set(this.control.hasValidator(Validators.required)); \r\n this.invalid = this.control.invalid;\r\n\r\n this.control.events.subscribe({ next: (event) => { this.RunValidation(); } });\r\n }\r\n }\r\n\r\n private RunValidation(): void{\r\n this.required.set(this.control.hasValidator(Validators.required)); \r\n this.invalid = this.control.invalid;\r\n }\r\n \r\n invalid = false;\r\n\r\n //[ ControlValueAccessor ]\r\n /** Acionado quando um elemento perde o foco. */\r\n blur : OutputEmitterRef<T> = output<T>();\r\n /** Emitido quando o valor é alterado. */\r\n change: OutputEmitterRef<T> = output<T>();\r\n propagateChange(obj: T): void{ this.onChange(obj); this.change.emit(obj);; }\r\n\r\n onChange: (value: any) => void = (v: any) => { return; }\r\n onTouch : (value: any) => void = (v: any) => { return; }\r\n registerOnChange (fn: (value: any) => void ){ this.onChange = fn }\r\n registerOnTouched(fn: (value: any) => void ){ this.onTouch = fn }\r\n}\r\n","import { Component, ContentChildren, ElementRef, Host, HostListener, ModelSignal, OnDestroy, OnInit, Optional, QueryList, Signal, SkipSelf, ViewChild, ViewChildren, WritableSignal, computed, effect, forwardRef, model, signal } from '@angular/core';\r\nimport { IonInput, IonItem, IonPopover, IonSearchbar } from '@ionic/angular';\r\nimport { ControlContainer, ControlValueAccessor } from '@angular/forms';\r\nimport { Observable, Subscription, interval } from 'rxjs';\r\nimport { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\r\n\r\nimport { BindLabelFactory, BindValueFactory, DefaultModelOptions, InputSelectConfiguration } from './input.select.configuration';\r\nimport { InputSelectInternalOptionComponent } from './input-select-internal-option/input-select-internal-option.component';\r\nimport { InputSelectOptionComponent } from './input-select-option/input-select-option.component';\r\nimport { ISelect, ISelectOption } from './ISelect';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomSignalInput } from '../custom-signal-input';\r\nimport { Search } from '../../../services/utils.service';\r\n\r\n@Component({\r\n selector: 'input-select',\r\n templateUrl: './input-select.component.html',\r\n styleUrls: ['./input-select.component.scss', '../inputs.scss'],\r\n providers: [InputProviderFactory.GetProvider(InputSelectComponent, \r\n [\r\n { \r\n provide: ISelect, useExisting: forwardRef(() => InputSelectComponent)\r\n }\r\n ]\r\n )]\r\n})\r\nexport class InputSelectComponent extends CustomSignalInput<any> implements OnInit, OnDestroy, ControlValueAccessor, ISelect {\r\n\r\n /** Items disponíveis no select */\r\n public items : ModelSignal<any[]> = model<any[]>([]);\r\n /** Configuração do select */\r\n public configuration : ModelSignal<InputSelectConfiguration> = model<InputSelectConfiguration>(new InputSelectConfiguration()); \r\n public loadingFromLoader: boolean = false;\r\n\r\n @ContentChildren(InputSelectOptionComponent) lstOptions: QueryList<InputSelectOptionComponent>;\r\n @ViewChildren(InputSelectInternalOptionComponent) lstInternalOptions: QueryList<InputSelectInternalOptionComponent>;\r\n @ViewChild(CdkVirtualScrollViewport, { read: ElementRef<any> }) cdkVirtualScrollViewport: ElementRef<any>\r\n\r\n private useDefaultModelOptions: WritableSignal<boolean> = signal<boolean>(false);\r\n protected bindValue: Signal<((args: any) => any)> = computed(() => { \r\n if(this.useDefaultModelOptions()){ return ((obj: DefaultModelOptions): string => { return obj.value; }); }\r\n return BindValueFactory(this.configuration());\r\n });\r\n protected bindLabel: Signal<((args: any) => string)> = computed(() => {\r\n if(this.useDefaultModelOptions()){ return ((obj: DefaultModelOptions): string => { return obj.label; }); }\r\n return BindLabelFactory(this.configuration());\r\n });\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef : ElementRef\r\n ) { super();\r\n effect(() => { this.Update(); }, { allowSignalWrites: true });\r\n\r\n this.updateInterval = interval(1000);\r\n this.updateSubscription = this.updateInterval.subscribe(() => {\r\n if(this.lastItemsQtd != this.items().length){\r\n this.lastItemsQtd = this.items().length;\r\n this.Update();\r\n } \r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.updateSubscription.unsubscribe();\r\n }\r\n\r\n updateInterval: Observable<number> | null;\r\n updateSubscription: Subscription;\r\n\r\n lastItemsQtd: number | null = null;\r\n \r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this.configuration().loader.AddComponent(this);\r\n this.configuration().loader.Refresh(this.items());\r\n }\r\n\r\n public Clear(): void{ \r\n this.model = null; \r\n this.Update();\r\n }\r\n \r\n protected CurrentLabel : string = \"\";\r\n protected CurrentlyNoValue : boolean = true;\r\n\r\n public Update(){\r\n this.UpdateSelected();\r\n this.UpdateCurrentLabel(); \r\n }\r\n private UpdateCurrentLabel(): void{\r\n if(this._model == null){ \r\n this.CurrentLabel = this.configuration().placeholder;\r\n this.CurrentlyNoValue = true;\r\n return;\r\n }\r\n if(!this.configuration().multiple){\r\n const m: any | null = this.items().find(p => this.bindValue()(p) == this._model);\r\n if(m){ \r\n this.CurrentLabel = this.bindLabel()(m);\r\n this.CurrentlyNoValue = false; \r\n }\r\n return;\r\n }else{\r\n if(!this._model){ \r\n this.CurrentLabel = this.configuration().placeholder; \r\n this.CurrentlyNoValue = true;\r\n return; \r\n }else\r\n if(Array.isArray(this.model) && !this.model.length){ \r\n this.CurrentLabel = this.configuration().placeholder; \r\n this.CurrentlyNoValue = true;\r\n return; \r\n }\r\n this.CurrentLabel = \"\"; \r\n this.CurrentlyNoValue = false;\r\n return;\r\n }\r\n }\r\n private UpdateSelected(){\r\n if(this.lstOptions && this.lstOptions.length){\r\n this.lstOptions.forEach(p => p.isSelected = false);\r\n this.lstOptions.filter(p => Array.isArray(this._model) ? this._model.includes(p.value) : this._model == p.value).forEach(p => p.isSelected = true);\r\n }\r\n }\r\n\r\n IsSelected(item: any){\r\n if(Array.isArray(this._model)){\r\n return this._model.includes(this.bindValue()(item));\r\n }\r\n return this._model == this.bindValue()(item);\r\n }\r\n\r\n /** Applies only on multiple */\r\n protected GetSelectedItens(): any[]{\r\n if(this._model && this.lstOptions.length){\r\n return this.lstOptions.filter(p => p.isSelected).map(p => p.model()); \r\n }\r\n if(this._model && this.items()){\r\n return this.items().filter(p => Array.isArray(this._model) ? this._model.includes(this.bindValue()(p)) : this._model == this.bindValue()(p)); \r\n }\r\n\r\n return [];\r\n }\r\n\r\n //[ Model ]\r\n override _model: any = null;\r\n override get model(): any { return this._model; }\r\n override set model(value: any) { \r\n this.SetModel(value);\r\n this.propagateChange(this._model); \r\n }\r\n protected SetModel(value: any): void { \r\n if(value == null ){ this._model = null; return; }\r\n\r\n this._model = value;\r\n\r\n this.Update();\r\n return; \r\n }\r\n\r\n protected SearchChanged(): void{\r\n if(this.lstOptions.length){\r\n this.useDefaultModelOptions.set(true);\r\n var lst = Search(this.lstOptions.map(p => p.model()), this.Search(), this.bindLabel()); \r\n this.lstOptions.forEach(p => p.hidden = !lst.includes(p.model()))\r\n }\r\n }\r\n \r\n protected GetUseDefaultModelOptions(): boolean{\r\n if(this.lstOptions && this.lstOptions.length){ return true; }\r\n return false;\r\n }\r\n\r\n public UpdateUseDefaultModelOptions(): void{\r\n this.useDefaultModelOptions.set(this.GetUseDefaultModelOptions());\r\n if(this.useDefaultModelOptions()){ \r\n if(this.items().length != this.lstOptions.length){\r\n this.items.set(this.lstOptions.map(p => p.model())); \r\n }\r\n }\r\n }\r\n\r\n //[ Select ]\r\n override writeValue(obj: any): void { this.SetModel(obj); }\r\n\r\n public Select(item: any): void{\r\n this.UpdateUseDefaultModelOptions();\r\n \r\n if(!this.configuration().multiple){ \r\n this.model = this.bindValue()(item); \r\n } \r\n else{\r\n var value = this.bindValue()(item);\r\n\r\n if(this._model){\r\n if(this._model.includes(value)){ \r\n this.model = [...this._model.filter(p => p != value)]; \r\n }\r\n else{\r\n this.model = [...this._model, value];\r\n }\r\n return;\r\n }\r\n\r\n this.model = [value];\r\n return;\r\n }\r\n }\r\n\r\n protected interfaceOptions = { cssClass : 'wider-popover' }\r\n\r\n @ViewChild('container', { read: ElementRef }) inputContainer: ElementRef<HTMLElement>;\r\n @ViewChild(IonPopover) ionPopoverComponent: IonPopover;\r\n @ViewChild(IonPopover, { read: ElementRef }) ionPopoverElement: ElementRef<HTMLElement>;\r\n @ViewChild(IonSearchbar) searchbarComponent: IonSearchbar;\r\n\r\n public async PresentPopover($event: MouseEvent) {\r\n Object.defineProperty($event, 'target', { writable: false, value: this.inputContainer.nativeElement });\r\n const Popover = this.ionPopoverComponent;\r\n const PopoverElement = this.ionPopoverElement.nativeElement as HTMLElement;\r\n \r\n const PopoverContent = Array.from(\r\n Array.from(PopoverElement.shadowRoot.children).find(\r\n p => p.classList.contains(\"popover-wrapper\")\r\n ).children\r\n ).find(\r\n p => p.classList.contains(\"popover-content\")\r\n ) as HTMLElement\r\n PopoverContent.style.width = this.inputContainer.nativeElement.offsetWidth + 'px';\r\n await Popover.present($event);\r\n this.searchbarComponent.setFocus();\r\n\r\n if(this.cdkVirtualScrollViewport){\r\n this.cdkVirtualScrollViewport.nativeElement.scroll({ top: 1, behavior: 'smooth' });\r\n }\r\n\r\n this.focusedModel = null;\r\n this.UpdateUseDefaultModelOptions();\r\n };\r\n\r\n protected Search : ModelSignal<string> = model<string>(\"\");\r\n protected lstSearchItens: Signal<any[]> = computed<any[]>(() => { return Search(this.items(), this.Search(), this.bindLabel()); })\r\n\r\n //#region [ Arrow/Tab Control ]\r\n @ViewChild(IonInput) inputComponent: IonInput;\r\n @ViewChild(IonItem, { read: ElementRef }) itemComponent : ElementRef<HTMLElement>;\r\n @HostListener('document:keydown', ['$event'])\r\n async HandleKeyboardEvent(event: KeyboardEvent) {\r\n if(!this.inputComponent || !this.searchbarComponent){ return; }\r\n \r\n const inputComponent = await this.inputComponent.getInputElement();\r\n const searchbarComponent = await this.searchbarComponent.getInputElement();\r\n \r\n if(event.target == inputComponent && event.key == \"ArrowDown\" && this.configuration().searcheable){\r\n this.itemComponent.nativeElement.click();\r\n event.preventDefault();\r\n }else\r\n if(event.target == searchbarComponent){\r\n this.UpdateUseDefaultModelOptions();\r\n\r\n const items = this.lstSearchItens();\r\n if(event.key == \"ArrowDown\"){\r\n if(this.focusedModel){\r\n const index = items.indexOf(this.focusedModel);\r\n \r\n if(items[index + 1]){\r\n this.SetFocusedElement(items[index + 1]);\r\n }else{\r\n this.SetFocusedElement(items[0]);\r\n }\r\n }else{\r\n if(items[0]){\r\n this.SetFocusedElement(items[0]);\r\n }\r\n }\r\n }else\r\n if(event.key == \"ArrowUp\"){\r\n if(this.focusedModel){\r\n const index = items.indexOf(this.focusedModel);\r\n\r\n if(items[index - 1]){\r\n this.SetFocusedElement(items[index - 1]);\r\n }else{\r\n this.SetFocusedElement(items[items.length -1]);\r\n }\r\n }\r\n }else\r\n if(event.key == \"Enter\"){\r\n var Option: ISelectOption;\r\n if(this.useDefaultModelOptions()){\r\n Option = this.lstOptions.find(p => p.model() == this.focusedModel);\r\n }else{\r\n Option = this.lstInternalOptions.find(p => p.model == this.focusedModel);\r\n }\r\n if(!Option.disabled){\r\n this.Select(this.focusedModel);\r\n }\r\n }\r\n }\r\n }\r\n SetFocusedElement(focusedModel: any, scroll: boolean = true,): void{\r\n this.focusedModel = focusedModel;\r\n \r\n var Option: ISelectOption;\r\n if(this.useDefaultModelOptions()){\r\n Option = this.lstOptions.find(p => p.model() == focusedModel);\r\n this.lstOptions.filter(p => p.onFocus).forEach(p => p.onFocus = false);\r\n Option.onFocus = true;\r\n }else{\r\n Option = this.lstInternalOptions.find(p => p.model == focusedModel);\r\n this.lstInternalOptions.filter(p => p.onFocus).forEach(p => p.onFocus = false);\r\n Option.onFocus = true;\r\n }\r\n \r\n if(scroll){ Option.GetNativeElement().scrollIntoView({ behavior: 'smooth' }); }\r\n }\r\n\r\n focusedModel: any | null;\r\n //#endregion [ Arrow/Tab Control ]\r\n}","<div class=\"relative flex overflow-hidden\" #container>\r\n <ion-card \r\n class=\"focus-within:on-focus ion-card-input\" \r\n [disabled]=\"loading || loadingFromLoader || disabled\" \r\n [class.invalid]=\"invalid\"\r\n [class.submitted]=\"submitted\"\r\n [class.disabled]=\"disabled\"\r\n [ngClass]=\"{'!rounded-l-2xl !rounded-r-none !border-r-0': configuration().clearable}\"\r\n >\r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl w-full relative\" (click)=\"PresentPopover($event)\" [ngClass]=\"{'!rounded-l-2xl !rounded-r-none': configuration().clearable }\">\r\n <ion-input fill=\"none\" [readonly]=\"true\" labelPlacement=\"stacked\" [value]=\"CurrentLabel\" [class.no-items-opacity]=\"CurrentlyNoValue\">\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required() }\" slot=\"label\" class=\"!text-dark\"> \r\n {{label}} \r\n </ion-text>\r\n </ion-input>\r\n @if(configuration().multiple){\r\n <div class=\"absolute left-0 bottom-0 h-6 w-full flex z-[90] overflow-x-auto\">\r\n @for(item of GetSelectedItens(); track $index){\r\n <div class=\"h-full flex bg-medium/10 border translucid-border rounded-lg mr-1 animated\">\r\n <div (click)=\"Select(item); $event.stopPropagation()\" class=\"bg-medium/10 cursor-pointer translucid-border min-w-min !border-l-0 !border-y-0 h-full aspect-square flex items-center justify-center rounded-r-lg\"> \r\n <ion-icon color=\"danger\" name=\"close\"></ion-icon>\r\n </div>\r\n <div class=\"h-full px-1 select-none\"> {{bindLabel()(item)}} </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </ion-item>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading || loadingFromLoader\"></input-loading>\r\n @if(configuration().clearable){\r\n <div class=\"w-12\">\r\n <ion-button (click)=\"Clear()\" [disabled]=\"loading || disabled || loadingFromLoader\" size=\"small\" fill=\"outline\" color=\"medium\" class=\"rounded-r-2xl h-full w-full\" style=\"--border-width: 1px 1px 2px 1px;\">\r\n <ion-icon name=\"backspace\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n }\r\n</div>\r\n\r\n<ion-popover class=\"input-select-popover\" [keepContentsMounted]=\"false\" [dismissOnSelect]=\"!configuration().multiple\" (didDismiss)=\"Search.set('')\">\r\n <ng-template>\r\n <div class=\"size-full flex flex-col bg-primary/10\">\r\n <div class=\"w-full shrink-0\" [hidden]=\"!configuration().searcheable\">\r\n <ion-searchbar [(ngModel)]=\"Search\" (ngModelChange)=\"SearchChanged()\" placeholder=\"Pesquisa...\" class=\"size-full bg-transparent\" [debounce]=\"100\"></ion-searchbar>\r\n </div>\r\n\r\n <div class=\"h-48 w-full overflow-hidden translucid-border !border-x-0 !border-b-0 rounded-t-2xl bg-light\" [ngClass]=\"{'!border-0': !configuration().searcheable}\">\r\n @if(!lstOptions || !lstOptions.length){\r\n <cdk-virtual-scroll-viewport itemSize=\"45\" [minBufferPx]=\"200\" [maxBufferPx]=\"300\" class=\"size-full\">\r\n <input-select-internal-option [model]=\"item\" *cdkVirtualFor=\"let item of lstSearchItens()\" [isSelected]=\"IsSelected(item)\">\r\n <ion-label class=\"truncate\">{{bindLabel()(item)}}</ion-label>\r\n </input-select-internal-option>\r\n </cdk-virtual-scroll-viewport>\r\n }\r\n @else {\r\n <div class=\"size-full overflow-y-auto overflow-x-hidden mask-y\">\r\n <ng-content select=\"input-select-option\"></ng-content>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ion-popover>","import { Component, ElementRef, Host, Input, OnInit, Optional, Self, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { InputStringConfiguration } from './input-string.configuration';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomInput } from '../custom-input';\r\n\r\n@Component({\r\n selector: 'input-string',\r\n templateUrl: './input-string.component.html',\r\n styleUrls: ['./input-string.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputStringComponent)\r\n})\r\nexport class InputStringComponent extends CustomInput<string> implements OnInit {\r\n\r\n @Input() configuration: InputStringConfiguration = new InputStringConfiguration();\r\n @Input() type: 'text' | 'password' = 'text';\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef: ElementRef\r\n ) { super(); }\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n override writeValue(value: string){ this.setModel(value) }\r\n override get model(): string { return this._model; }\r\n override set model(value: string) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n setModel(value){\r\n if(value == null){ this._model = '' } else { this._model = value + '' }\r\n }\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"flex\">\r\n <ion-item class=\"w-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n <ion-input [type]=\"type\" (ionBlur)=\"blurEmitter.emit(model)\" [maxlength]=\"configuration.maxlength\" labelPlacement=\"stacked\" [(ngModel)]=\"model\">\r\n @if (label) {\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n }\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>\r\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\n\r\nimport { TableField } from '../../../../classes/inputs/table-field';\r\nimport { InputType } from '../../../inputs/input-type';\r\nimport { Utils } from '../../../../services/utils.service';\r\n\r\nimport { InputDecimalConfiguration, InputCurrencyConfiguration, InputNumberConfiguration } from '../../../inputs/input-decimal/input-decimal.configuration';\r\nimport { InputStringConfiguration } from '../../../inputs/input-string/input-string.configuration';\r\nimport { InputSelectConfiguration } from '../../../inputs/input-select/input.select.configuration';\r\nimport { InputDateConfiguration } from '../../../inputs/input-date/input-date.configuration';\r\nimport { InputFileConfiguration } from '../../../inputs/input-file/input-file.configuration';\r\nimport { InputBoolConfiguration } from '../../../inputs/input-bool/input-bool.configuration';\r\nimport { InputConfiguration } from '../../../inputs/input-configuration';\r\n\r\nimport { ImplicitProperty } from '../../../../classes/comparison/properties/implicit-property';\r\nimport { DecimalProperty } from '../../../../classes/comparison/properties/decimal-property';\r\nimport { StringProperty } from '../../../../classes/comparison/properties/string-property';\r\nimport { BoolProperty } from '../../../../classes/comparison/properties/bool-property';\r\nimport { DateProperty } from '../../../../classes/comparison/properties/date-property';\r\n\r\nimport { Comparison } from '../../../../classes/comparison/comparison';\r\n\r\n@Component({\r\n selector: 'th-filter',\r\n templateUrl: './th-filter.component.html',\r\n styleUrls: ['./th-filter.component.scss'],\r\n})\r\nexport class ThFilterComponent implements OnInit {\r\n\r\n @Input() field : TableField \r\n\r\n guid: string = Utils.GenerateGUID();\r\n configuration: InputConfiguration;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.configuration = this.field.configuration;\r\n \r\n if(!this.configuration){\r\n if([InputType.Date, InputType.DateTime, InputType.Time].includes(this.field.type)){ this.configuration = new InputDateConfiguration() } else\r\n if(this.field.type == InputType.File ){ this.configuration = new InputFileConfiguration() }else\r\n if(this.field.type == InputType.Number ){ this.configuration = new InputNumberConfiguration() }else\r\n if(this.field.type == InputType.Decimal ){ this.configuration = new InputDecimalConfiguration() }else\r\n if(this.field.type == InputType.Currency){ this.configuration = new InputCurrencyConfiguration() }else\r\n if(this.field.type == InputType.String ){ this.configuration = new InputStringConfiguration() }else\r\n if(this.field.type == InputType.Select ){ this.configuration = new InputSelectConfiguration() }else\r\n if(this.field.type == InputType.TextArea){ \r\n this.configuration = new InputStringConfiguration(); \r\n }else \r\n if(this.field.type == InputType.Bool ){ \r\n this.configuration = new InputBoolConfiguration(); \r\n }\r\n }\r\n\r\n if(this.configuration instanceof InputSelectConfiguration){\r\n this.configuration = new InputSelectConfiguration(\r\n this.configuration.bindValue,\r\n this.configuration.bindLabel,\r\n true,\r\n true,\r\n this.configuration.loadFrom,\r\n true,\r\n );\r\n }\r\n\r\n if(this.configuration instanceof InputDateConfiguration){\r\n this.configuration = new InputDateConfiguration(true);\r\n }\r\n\r\n if(this.field.type == InputType.Bool){\r\n if(this.field.index == \"ativo\"){\r\n this.configuration = this.configuration = new InputSelectConfiguration('value', 'label', true, true, [\r\n { label: 'Somente Ativos' , value: true },\r\n { label: 'Somente Não Ativos', value: false },\r\n ]);\r\n this.model = true;\r\n }\r\n else{\r\n this.configuration = new InputSelectConfiguration('value', 'label', true, false, [\r\n { label: 'Sim', value: true },\r\n { label: 'Não', value: false },\r\n ])\r\n }\r\n }\r\n }\r\n\r\n isFilterActive: boolean = false;\r\n\r\n model: any | null = null;\r\n modelMinimum: any | null = null;\r\n modelMaximum: any | null = null;\r\n @Output('change') changeEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n Change(): void{\r\n if(((typeof(this.model) == 'string' && !this.model) || \r\n this.model == null || \r\n (Array.isArray(this.model) && this.model.length == 0)) && \r\n !this.modelMinimum && !this.modelMaximum)\r\n {\r\n this.SetInactive();\r\n return;\r\n }\r\n\r\n if([InputType.Currency, InputType.Decimal, InputType.Number].includes(this.field.type)){\r\n var Comparison: Comparison[] = [];\r\n if(this.modelMinimum){\r\n var Bigger = new DecimalProperty(this.field.index).GreaterThanOrEqual(this.modelMinimum);\r\n Comparison = [Bigger];\r\n }\r\n if(this.modelMaximum){\r\n var Smaller = new DecimalProperty(this.field.index).LessThanOrEqual(this.modelMaximum);\r\n if(Comparison.length){ Comparison.push(Smaller); } \r\n else { Comparison = [Smaller]; }\r\n }\r\n\r\n this.field.filter = Comparison;\r\n this.isFilterActive = true;\r\n this.changeEmitter.emit();\r\n return;\r\n }else\r\n if([InputType.String].includes(this.field.type)){\r\n this.field.filter = [new StringProperty(this.field.index).IsContainedIn(this.model)];\r\n this.isFilterActive = true;\r\n this.changeEmitter.emit();\r\n return;\r\n }else\r\n if(this.field.type == InputType.Select){\r\n this.field.filter = [new ImplicitProperty(this.field.index).IsContainedIn(this.model)];\r\n this.isFilterActive = true;\r\n this.changeEmitter.emit();\r\n return;\r\n }else\r\n if(this.field.type == InputType.Bool){\r\n this.field.filter = [new BoolProperty(this.field.index).Equals(this.model)];\r\n this.isFilterActive = true;\r\n this.changeEmitter.emit();\r\n return;\r\n } else\r\n if (this.field.type == InputType.Date || this.field.type == InputType.DateTime){\r\n if(this.modelMinimum){\r\n if(this.field.type == InputType.Date){ this.modelMinimum = this.modelMinimum.split(\"T\")[0] + \"T23:59:59\" }\r\n }\r\n if(this.modelMaximum){\r\n if(this.field.type == InputType.Date){ this.modelMaximum = this.modelMaximum.split(\"T\")[0] + \"T23:59:59\" }\r\n }\r\n \r\n var Comparison: Comparison[] = [];\r\n if(this.modelMinimum){\r\n var BiggerDate = new DateProperty(this.field.index).GreaterThanOrEqual(this.modelMinimum);\r\n Comparison = [BiggerDate];\r\n }\r\n if(this.modelMaximum){\r\n var SmallerDate = new DateProperty(this.field.index).LessThanOrEqual(this.modelMaximum);\r\n if(Comparison.length){ Comparison.push(SmallerDate); } \r\n else { Comparison = [SmallerDate] ; }\r\n }\r\n this.field.filter = Comparison;\r\n this.isFilterActive = true;\r\n this.changeEmitter.emit();\r\n return;\r\n }\r\n\r\n this.changeEmitter.emit();\r\n }\r\n\r\n SetInactive(): void{\r\n this.field.filter = null;\r\n this.isFilterActive = false;\r\n this.changeEmitter.emit();\r\n return;\r\n }\r\n}\r\n","<div class=\"h-5 aspect-square mr-1 flex items-center justify-center cursor-pointer\">\r\n <ion-icon id=\"{{guid}}-trigger\" name=\"filter-circle\" class=\"text-xl align-sub size-full\" [color]=\"isFilterActive ? 'secondary' : 'medium' \"></ion-icon>\r\n</div>\r\n\r\n<ion-popover [keepContentsMounted]=\"true\" class=\"popover-filter\" trigger=\"{{guid}}-trigger\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-card class=\"m-0 !border-0 bg-primary/30\">\r\n <ion-card-header class=\"bg-transparent\">\r\n <ion-card-title class=\"text-center text-sm\">\r\n Filtro - {{field.header}}\r\n </ion-card-title>\r\n </ion-card-header>\r\n <ion-card-content [ngClass]=\"{'!p-0': ['Select', 'Bool', 'String', 'TextArea'].includes(field.type)}\" class=\"!p-2 bg-light rounded-t-2xl\">\r\n @switch (field.type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" class=\"th-select\" label=\"\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor Mínimo\" [configuration]=\"field.configuration\"></input-number>\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-number>\r\n </div>\r\n }\r\n @case ('Decimal') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor Mínimo\" [configuration]=\"field.configuration\"></input-decimal>\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-decimal>\r\n </div>\r\n }\r\n @case ('Currency') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Valor Mínimo\" [configuration]=\"field.configuration\"></input-currency>\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Valor Maximo\" [configuration]=\"field.configuration\"></input-currency>\r\n </div>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" label=\"\" placeholder=\"\" [configuration]=\"configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <div class=\"size-full grid grid-cols-1 gap-2\">\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data Mínima\" [configuration]=\"configuration\"></input-date>\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date>\r\n </div>\r\n }\r\n @case ('DateTime') {\r\n <div class=\"grid grid-cols-1 gap-2\">\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMinimum\" label=\"Data Mínima\" [configuration]=\"configuration\"></input-date-time>\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"modelMaximum\" label=\"Data Maxima\" [configuration]=\"configuration\"></input-date-time>\r\n </div>\r\n }\r\n }\r\n </ion-card-content>\r\n </ion-card>\r\n </ng-template>\r\n</ion-popover>\r\n","import { Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nimport { Comparison, CompileLstTableField } from '../../../classes/comparison/comparison';\r\nimport { InputDecimalConfiguration } from '../../../components/inputs/input-decimal/input-decimal.configuration';\r\nimport { InputSelectConfiguration } from '../../../components/inputs/input-select/input.select.configuration';\r\nimport { StorageService } from '../../../services/web/storage.service';\r\nimport { HttpService } from '../../../services/web/http.service';\r\nimport { TableField } from '../../../classes/inputs/table-field';\r\nimport { InputType } from '../../inputs/input-type';\r\nimport { Utils } from '../../../services/utils.service';\r\n\r\n/** Componente de tabela padrão */\r\n@Component({\r\n selector: 'default-table',\r\n templateUrl: './default-table.component.html',\r\n styleUrls: ['./default-table.component.scss'],\r\n})\r\nexport class DefaultTableComponent<T extends HttpService> implements OnInit {\r\n \r\n /** Service a ser utilizado na listagem */\r\n @Input('service') defaultService: T;\r\n/** Template de ações, deve ser um elemento ```<ng-template>``` */\r\n @Input() acoesTemplate: TemplateRef<any>;\r\n\r\n //#region [ Pagination ]\r\n /** Valor total de dados */\r\n @Input() total: number;\r\n\r\n /** Número de páginas máximo (usando two way data binding) */\r\n @Input() limit: number;\r\n @Output() limitChange: EventEmitter<number> = new EventEmitter<number>();\r\n \r\n /** Valor da pagina, setado = 1 quando troca-se o valor de limite de paginas (usando two way data binding) */\r\n @Input() page: number;\r\n @Output() pageChange: EventEmitter<number> = new EventEmitter<number>();\r\n \r\n /** Propriedade de ordenação (usando two way data binding) */\r\n @Input() orderByProperty: string | null;\r\n @Output() orderByPropertyChange: EventEmitter<string | null> = new EventEmitter<string | null>();\r\n \r\n /** Propriedade de ordenação\r\n * Se = true Ordenará de menor ao maior \r\n * Se = false Ordenará de maior ao menor (usando two way data binding) */\r\n @Input() ascending: boolean;\r\n @Output() ascendingChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n //#endregion [ Pagination ]\r\n\r\n /** Filtros (usando two way data binding) */ \r\n @Input('filter') filter: Comparison[] = [];\r\n @Output() filterChange: EventEmitter<Comparison[]> = new EventEmitter<Comparison[]>();\r\n \r\n /** Evento emitido quando um dos dados é ativado. Emite o id do dado */ \r\n @Output('ativar') ativarEmitter: EventEmitter<number> = new EventEmitter<number>;\r\n @Output('refresh') refreshEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n @Input() loading: boolean;\r\n\r\n /** Lista de dados a ser exibidos */\r\n @Input() items: any[] = [];\r\n \r\n /** Lista de campos a ser exibidos */\r\n @Input() lstTableFields: TableField[] = [];\r\n\r\n /** Remove os filtros no cabeçalho da tabela */\r\n @Input() noFilters: boolean = false;\r\n \r\n /** Aplica classes de CSS na coluna de acirdo com o retorno da função passada como parametro */\r\n @Input() columnClass: ((index:string, object: any) => string) | null = null;\r\n /** Aplica style de CSS na coluna de acirdo com o retorno da função passada como parametro */\r\n @Input() columnStyle: ((index:string, object: any) => string) | null = null;\r\n /** Remove a paginação da listagem */\r\n @Input() noPagination: boolean = false;\r\n /** Caminho de redirecionamento do item */\r\n @Input() itemPath: string | null = \"view/:id\"\r\n InputTypeFile = InputType.File\r\n\r\n constructor(\r\n public storageService : StorageService,\r\n private activatedRoute: ActivatedRoute,\r\n private router : Router,\r\n ) { }\r\n\r\n Redirect(field: TableField, item: any): void{\r\n if(field.index == 'ativo'){\r\n return;\r\n }else\r\n if(field.type == 'File'){\r\n return;\r\n }else{\r\n if(this.itemPath){\r\n const id = item.id; \r\n const path = this.itemPath.replace(\":id\", id.toString());\r\n this.router.navigate([`./${path}`], { relativeTo: this.activatedRoute })\r\n }\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if(this.defaultService && this.lstTableFields.length == 0){\r\n this.lstTableFields = this.defaultService.lstTableFields;\r\n }\r\n if(this.lstTableFields.length == 0){ console.warn(\"[ Warning! ] [ Table configuration is empty]\") }\r\n\r\n this.lstTableFields.filter(tf => tf.configuration instanceof InputSelectConfiguration).forEach(tf => tf.configuration.loader.Refresh());\r\n }\r\n\r\n SwitchOrder(field: TableField): void{\r\n if(this.orderByProperty != field.index){\r\n this.orderByProperty = field.index;\r\n this.ascending = true;\r\n }\r\n else if(this.ascending){\r\n this.ascending = false;\r\n }\r\n else{ this.orderByProperty = null; }\r\n\r\n this.orderByPropertyChange.emit(this.orderByProperty)\r\n this.ascendingChange.emit(this.ascending);\r\n\r\n this.EmitChange();\r\n }\r\n\r\n EmitPage(value: number): void{\r\n this.pageChange.emit(value);\r\n this.EmitChange()\r\n }\r\n\r\n EmitChange(): void{\r\n this.refreshEmitter.emit();\r\n }\r\n\r\n GetField(item: any, field : TableField): any{\r\n const value = item[field.index];\r\n const type = field.type;\r\n if(['Number','Decimal','Currency'].includes(type)){\r\n const config: InputDecimalConfiguration = (field.configuration as InputDecimalConfiguration)\r\n return config.prefix + ' ' + formatNumber(value, \"pt-BR\", `1.${config.precision}-${config.precision}`) + ' ' + config.sufix;\r\n }else\r\n if(type == 'DateTime'){\r\n if(!value){ return \"-\"; }\r\n return Utils.DateISOToDDMMYYYYHHMM(value);\r\n }else\r\n if(type == 'Date'){\r\n if(!value){ return \"-\"; }\r\n return Utils.DateISOToDDMMYYYY(value);\r\n }\r\n return value;\r\n }\r\n\r\n GetSelectLabel(item: any, tField: TableField): string{\r\n const configuration: InputSelectConfiguration = tField.configuration;\r\n return configuration.loader.GetLabel(this.GetField(item, tField));\r\n }\r\n\r\n GetTypeOf(val): string{\r\n return typeof(val)\r\n }\r\n\r\n Ativar(id): void{\r\n this.ativarEmitter.emit(id);\r\n }\r\n\r\n ChangeFilter(): void{\r\n this.filterChange.emit(CompileLstTableField(this.lstTableFields));\r\n this.refreshEmitter.emit();\r\n }\r\n\r\n GetTdClasses(field, item): string{\r\n var classes : string = \"\";\r\n if(['DateTime', 'Time', 'Date'].includes(field.type)){\r\n classes += 'font-mono ';\r\n }\r\n if(this.columnClass){\r\n classes += this.columnClass(field.index, item);\r\n }\r\n return classes;\r\n }\r\n GetTdStyle(field, item): string{\r\n if(this.columnStyle){\r\n return this.columnStyle(field, item);\r\n }\r\n return \"\";\r\n }\r\n}","<section class=\"w-full h-full rounded-2xl flex flex-col overflow-y-hidden relative\" [ngClass]=\"{ 'loading' : loading }\">\r\n \r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': !loading }\">\r\n <loading [type]=\"2\"></loading>\r\n </div>\r\n <div class=\"unique-conteiner default-transition\" [ngClass]=\"{'!-z-50 !-translate-y-12 !opacity-0': items.length != 0 || loading }\">\r\n <b><ion-icon class=\"align-sub\" name=\"remove-circle\"></ion-icon> Sem dados</b>\r\n </div>\r\n\r\n <div id=\"wrapper\" class=\"relative overflow-y-auto w-full grow-0 mb-auto pb-2\">\r\n <table class=\"z-20\">\r\n <thead>\r\n <tr>\r\n <th scope=\"col\" class=\"px-3 !h-10\" *ngIf=\"acoesTemplate\">\r\n <span>Ações</span>\r\n </th>\r\n @for (field of lstTableFields; let i = $index; track i) {\r\n @if (!field.hidden) {\r\n <th scope=\"col\" class=\"p-2 px-3\" id=\"th-filter-select\">\r\n <div class=\"flex items-center justify-start h-full\" style=\"white-space: var(--ion-table-filter-wrap);\"> \r\n @if(!noFilters){\r\n <th-filter *ngIf=\"(field.type != InputTypeFile) && !(field.filter && field.disabledChange()) && !noFilters\"\r\n [field]=\"field\"\r\n (change)=\"ChangeFilter()\"\r\n ></th-filter>\r\n }\r\n <span>{{field.header}}</span>\r\n\r\n <a *ngIf=\"!(!(field.type != InputTypeFile) && !(field.filter && field.disabledChange())) && !noFilters\" class=\"order-switch h-5 flex items-center justify-center px-1 ml-2 shrink-0 cursor-pointer rounded-2xl\" (click)=\"SwitchOrder(field)\" [ngClass]=\"{ 'ordering-asc' : orderByProperty == field.index && ascending, 'ordering-desc' : orderByProperty == field.index && !ascending}\">\r\n <ion-icon id=\"up\" name=\"arrow-up\" class=\"-mt-1\"></ion-icon>\r\n <ion-icon id=\"down\" name=\"arrow-down\" class=\"-ml-1 -mb-1\"></ion-icon>\r\n </a>\r\n </div>\r\n </th>\r\n }\r\n }\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr [hidden]=\"loading\" *ngFor=\"let item of items\">\r\n @if(acoesTemplate){\r\n <td class=\"whitespace-nowrap py-1 px-3\" [style]=\"GetTdStyle('Acoes', item)\" >\r\n <ng-container *ngTemplateOutlet=\"acoesTemplate; context: { $implicit: item }\"></ng-container>\r\n </td>\r\n }\r\n\r\n @for (field of lstTableFields; track $index) {\r\n @if (!field.hidden) {\r\n <td class=\"px-3 py-2\" \r\n [ngClass]=\"GetTdClasses(field, item)\" \r\n [style]=\"GetTdStyle(field, item)\" \r\n (click)=\"Redirect(field, item)\"\r\n style=\"white-space: var(--ion-table-row-wrap);\"\r\n >\r\n @if (field.index == 'ativo') {\r\n <div class=\"w-full h-full flex items-center justify-start\" [routerLink]=\"null\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"loading\" (ionChange)=\"Ativar(item.id)\" ></ion-toggle>\r\n </div>\r\n } @else {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n @if (field.configuration.type == \"toggle\") {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-toggle [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-toggle>\r\n </div>\r\n }\r\n @else {\r\n <div class=\"-full h-full flex items-center justify-start\">\r\n <ion-checkbox [checked]=\"item[field.index]\" [disabled]=\"true\"></ion-checkbox>\r\n </div>\r\n }\r\n }\r\n @case (\"File\") {\r\n <download-button [(ngModel)]=\"item[field.index]\" [configuration]=\"field.configuration\"></download-button>\r\n }\r\n @case (\"Select\") {\r\n {{GetSelectLabel(item, field)}}\r\n }\r\n @default {\r\n {{GetField(item, field)}} \r\n }\r\n }\r\n }\r\n </td>\r\n }\r\n }\r\n </tr>\r\n\r\n <ng-content select=\"[slot=item-end]\"></ng-content>\r\n </tbody>\r\n </table>\r\n </div>\r\n @if(!noPagination){\r\n <div class=\"shrink-0 mt-auto w-full\">\r\n <default-pagination\r\n [page]=\"page\"\r\n (pageChange)=\"EmitPage($event)\"\r\n [total]=\"total\"\r\n [limit]=\"limit\"\r\n [length]=\"items.length\"\r\n [loading]=\"loading\"\r\n ></default-pagination>\r\n </div>\r\n }\r\n</section>\r\n","import { Component, ContentChild, ElementRef, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\nimport { HttpServiceAtivo } from '../../../services/web/http.ativo.service';\r\nimport { GenericService } from '../../../services/generics.service';\r\nimport { HttpService } from '../../../services/web/http.service';\r\nimport { List } from './list';\r\n\r\n/** Componente de listagem padrão\r\n * Tipo Generic deve ser um service HttpService \r\n * @link https://sapphire-ion-framework.gitbook.io/framework/componentes-default/default-list\r\n */\r\n@Component({\r\n selector: 'default-list',\r\n templateUrl: './default-list.component.html',\r\n styleUrls: ['./default-list.component.scss'],\r\n})\r\nexport class DefaultListComponent<T extends HttpService> extends List<T> implements OnInit {\r\n\r\n //#region [@Table]\r\n /** Remove o botão NOVO da listagem */\r\n @Input() noNew: boolean = false;\r\n /** Remove a paginação da listagem */\r\n @Input() noPage: boolean = false;\r\n /** Remove o elemento de pesquisa da listagem */\r\n @Input() noSearch: boolean = false;\r\n \r\n /** Aplica classes de CSS na coluna de acirdo com o retorno da função passada como parametro */\r\n @Input() columnClass: ((index:string, object: any) => string) | null = null;\r\n /** Aplica style de CSS na coluna de acirdo com o retorno da função passada como parametro */\r\n @Input() columnStyle: ((index:string, object: any) => string) | null = null;\r\n \r\n /** Desabilita o redirect de novo em um botão para ser utilizado com [onNewEmitter] */\r\n @Input() overrideNew: boolean = false;\r\n /** Evento quando o botão NOVO é clicado */\r\n @Output('onNew') onNewEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n /** Template de ações, é enviado com #tmpAcoes, deve ser um elemento ```<ng-template>``` */\r\n @ContentChild('tmpAcoes', { static: false }) acoesTemplate!: TemplateRef<any>;\r\n //#endregion [@Table]\r\n\r\n /** Remove a paginação da listagem */\r\n @Input() noPagination : boolean = false;\r\n /** Remove os breadcrumbs da listagem */\r\n @Input() noBreadcrumbs: boolean = false;\r\n /** Caminho de redirecionamento do item */\r\n @Input() itemPath: string | null = \"view/:id\"\r\n \r\n constructor(\r\n public override elementRef : ElementRef,\r\n public override activatedRoute: ActivatedRoute,\r\n public override genericService: GenericService\r\n ) { super(); }\r\n \r\n public async Ativar(id: number): Promise<void>{\r\n if(!(this.service instanceof HttpServiceAtivo)){ return; }\r\n this.loading = true;\r\n try{\r\n await firstValueFrom(this.service.Ativar(id));\r\n this.Refresh();\r\n }catch{\r\n this.loading = false;\r\n }\r\n }\r\n\r\n override async ngOnInit() {\r\n await super.ngOnInit(); \r\n }\r\n}","<ion-content class=\"bg-transparent\">\r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[service ? service.route : '']\" [replaceUrl]=\"true\">{{service.title}}</ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n <ion-card>\r\n <ion-card-header [ngClass]=\"{'!px-0 !pb-0': noNew && noPage && noSearch}\">\r\n <header-list \r\n [(limit)]=\"frm.limit\"\r\n [(search)]=\"frm.search\" \r\n [(page)]=\"frm.page\" \r\n [loading]=\"loading\" \r\n (refresh)=\"Refresh()\"\r\n [noNew]=\"noNew\"\r\n [noPage]=\"noPage\"\r\n [noSearch]=\"noSearch\"\r\n [overrideNew]=\"overrideNew\"\r\n (onNew)=\"onNewEmitter.emit()\"\r\n > \r\n <ng-content slot=\"start\" select=\"[slot=header-start]\"></ng-content>\r\n <ng-content slot=\"end\" select=\"[slot=header-end]\"></ng-content>\r\n </header-list>\r\n </ion-card-header>\r\n <ion-card-content>\r\n <ion-refresher slot=\"fixed\" class=\"z-20\" (ionRefresh)=\"Refresh($event)\">\r\n <ion-refresher-content></ion-refresher-content>\r\n </ion-refresher>\r\n <div class=\"size-full ion-content-scroll-host\">\r\n @if(frm){\r\n <default-table \r\n class=\"block size-full relative\" \r\n [ngClass]=\"{ 'translate-y-0' : !loading }\"\r\n [loading]=\"loading\"\r\n [items]=\"lstDados\" \r\n [total]=\"total\"\r\n [(limit)]=\"frm.limit\"\r\n [(page)]=\"frm.page\"\r\n [(ascending)]=\"frm.ascending\"\r\n [(orderByProperty)]=\"frm.orderByProperty\"\r\n [(filter)]=\"frm.filter\"\r\n [itemPath]=\"itemPath\"\r\n [columnClass]=\"columnClass\"\r\n [columnStyle]=\"columnStyle\"\r\n [service]=\"service\"\r\n [acoesTemplate]=\"acoesTemplate\"\r\n (refresh)=\"Refresh();\"\r\n (ativar)=\"Ativar($event)\"\r\n [lstTableFields]=\"lstTableFields\"\r\n [noPagination]=\"noPagination\"\r\n >\r\n </default-table>\r\n }\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>","import { Component, OnInit, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { AlertButton } from \"@ionic/angular\";\r\n\r\nimport { DefaultListComponent } from \"./default-list.component\";\r\nimport { GenericService } from \"../../../services/generics.service\";\r\nimport { HttpService } from \"../../../services/web/http.service\";\r\nimport { RouteData } from \"../../../classes/routes/route-data\";\r\n\r\n/** Componente padrão para a invocação do DefaultList */\r\n@Component({ template: '', styles: '' })\r\nexport abstract class AbstractList<T extends HttpService> implements OnInit {\r\n \r\n protected service: T\r\n protected genericService: GenericService\r\n protected activatedRoute: ActivatedRoute;\r\n\r\n public id: number;\r\n \r\n ngOnInit(): void { \r\n this.LoadId();\r\n if(this.activatedRoute){ this.LoadId(); }\r\n }\r\n\r\n /** Busca o id da tabela se estiver configurado */\r\n async LoadId(){\r\n if(this.activatedRoute){\r\n const data: RouteData = (await firstValueFrom(this.activatedRoute.data)) as RouteData;\r\n if(data && data.idPreloaderConfiguration){\r\n this.id = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);\r\n }\r\n }\r\n }\r\n\r\n @ViewChild('defList') DefaultList: DefaultListComponent<T>;\r\n ionViewWillEnter(): void{\r\n if(this.DefaultList){\r\n this.DefaultList.Refresh();\r\n }\r\n }\r\n \r\n Delete(id: number): void {\r\n const buttons: AlertButton[] = [\r\n { text: \"Cancelar\", role: 'cancel' },\r\n { text: \"OK\" , role: 'confirm', handler: (() => { \r\n this.service.Delete(id).subscribe({ \r\n next: (() => { this.DefaultList.Refresh(); this.genericService.PresentToastSuccess(\"Excluido com sucesso!\"); }) \r\n }); \r\n }) \r\n }\r\n ]\r\n\r\n this.genericService.PresentAlert(\"Atenção!\", \"Tem certeza que deseja excluir o dado?\", buttons)\r\n }\r\n}","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { IonBackButton, NavController } from '@ionic/angular';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'header-view',\r\n templateUrl: './header-view.component.html',\r\n styleUrls: ['./header-view.component.scss'],\r\n})\r\nexport class HeaderViewComponent implements OnInit {\r\n\r\n @Input() novo: boolean = false;\r\n @Input() loading: boolean;\r\n @Input() progress: number | null = null;\r\n @Output('save') saveEmitter: EventEmitter<void> = new EventEmitter<void>(); \r\n\r\n @Input() noBack: boolean = false;\r\n @Input() noNew : boolean = false;\r\n @Input() useDefaultRouting: boolean = false;\r\n\r\n constructor(\r\n private navController: NavController,\r\n private activatedRoute: ActivatedRoute\r\n ) { }\r\n\r\n ngOnInit() {}\r\n\r\n protected get BackRoute(){\r\n const fullRoute = window.location.pathname.split('/')\r\n\r\n const li = fullRoute[fullRoute.length - 1];\r\n var offset = 1;\r\n if(Number(li)){ offset++; }\r\n let route: string[] = []\r\n for(let i = 0; i < fullRoute.length - offset; i++){ route.push(fullRoute[i]); }\r\n return route.join('/');\r\n }\r\n\r\n @ViewChild(IonBackButton) IonBackButtonElement: IonBackButton; \r\n public Back($event = null){\r\n this.IonBackButtonElement.onClick($event)\r\n }\r\n @ViewChild('new') NewIonButtonElement: ElementRef; \r\n public New(){\r\n if(!this.novo){\r\n this.navController.navigateForward(['../'], { relativeTo: this.activatedRoute});\r\n }\r\n }\r\n\r\n Save(): void{\r\n this.saveEmitter.emit();\r\n }\r\n}\r\n","<div class=\"w-full h-7 flex\">\r\n <div class=\"w-1/2 flex items-center justify-start gap-3\">\r\n @if(!noBack){\r\n <ion-back-button style=\"--min-height: 100%;\" [disabled]=\"loading\" text=\"Voltar\" [defaultHref]=\"BackRoute\"></ion-back-button>\r\n\r\n <!-- <ion-card button [disabled]=\"loading\" class=\"h-full w-12 m-0 default-transition\" style=\"border-color: var(--ion-color-primary)\">\r\n <ion-card-content class=\"p-0 bg-transparent\">\r\n @if(!useDefaultRouting){\r\n <ion-back-button class=\"scale-75 size-full\" style=\"--min-height: 100%;\" text=\"\" [defaultHref]=\"BackRoute\" >\r\n </ion-back-button>\r\n }@else {\r\n <ion-button class=\"size-full\" size=\"small\" fill=\"clear\" [routerLink]=\"BackRoute\">\r\n <ion-icon name=\"chevron-back\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n }\r\n </ion-card-content>\r\n </ion-card> -->\r\n }\r\n <div class=\"h-full border-r border-r-primary border-solid\"></div>\r\n\r\n <div class=\"relative\">\r\n <ion-button class=\"-mx-2\" [disabled]=\"loading\" fill=\"clear\" size=\"small\" (click)=\"Save()\">\r\n <ion-icon class=\"text-base\" slot=\"start\" name=\"save\"></ion-icon>\r\n <ion-text class=\"text-base\">\r\n Salvar\r\n </ion-text>\r\n </ion-button>\r\n\r\n <div class=\"absolute w-[125%] h-[125%] -top-[12.5%] -left-[12.5%] flex flex-col items-center justify-center default-transition backdrop-blur-sm\" [ngClass]=\"{'opacity-0 -translate-y-8': !loading}\">\r\n <ion-text color=\"success\" class=\"text-sm mt-1\"><b>\r\n @if(progress){\r\n {{(progress * 100) | number: '1.1-1'}}%\r\n }@else {\r\n {{0 | number: '1.1-1'}}%\r\n }\r\n </b></ion-text>\r\n <ion-progress-bar [value]=\"progress\" color=\"success\" class=\"w-full default-transition\"></ion-progress-bar>\r\n </div>\r\n </div>\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n <div class=\"w-1/2 flex justify-end items-center gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n\r\n @if(!(noNew || novo)){\r\n <ion-button #new [routerLink]=\"['../']\" class=\"m-0\" fill=\"clear\" size=\"small\">\r\n <ion-icon class=\"text-base\" name=\"add\" slot=\"start\"></ion-icon> \r\n <ion-text class=\"text-base\">\r\n Novo\r\n </ion-text>\r\n </ion-button>\r\n }\r\n </div>\r\n</div>","import { Component, OnInit } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { GenericService } from \"../../../services/generics.service\";\r\nimport { HttpService } from \"../../../services/web/http.service\";\r\n\r\n/** Componente padrão para a invocação do DefaultView */\r\n@Component({ template: '', styles: '' })\r\nexport abstract class AbstractView<T extends HttpService> implements OnInit {\r\n public service : T;\r\n public genericService: GenericService;\r\n public activatedRoute: ActivatedRoute;\r\n \r\n public id: number;\r\n \r\n ngOnInit(): void {\r\n this.id = this.genericService.GetId(this.activatedRoute, 0);\r\n }\r\n\r\n public static GetProvider(component): any[]{\r\n return [{ provide: AbstractView, useExisting: component }]\r\n }\r\n}\r\n","import { Component, ElementRef, EventEmitter, HostListener, inject, Input, OnInit, Output, ViewChild, viewChild } from \"@angular/core\";\r\nimport { FormBuilder, FormGroup } from \"@angular/forms\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\nimport { HttpService } from \"../../../services/web/http.service\";\r\nimport { HttpServiceAtivo } from \"../../../services/web/http.ativo.service\";\r\nimport { GenericService } from \"../../../services/generics.service\";\r\nimport { TableFieldFormBuilder } from \"../../../classes/inputs/table-field-form-builder\";\r\nimport { NavController } from \"@ionic/angular\";\r\nimport { firstValueFrom, lastValueFrom } from \"rxjs\";\r\nimport { HeaderViewComponent } from \"./header-view/header-view.component\";\r\nimport { TableField } from \"../../../classes/inputs/table-field\";\r\nimport { RouteData } from \"../../../classes/routes/route-data\";\r\n\r\n@Component({ template: '', styles: '' })\r\nexport abstract class View<T extends HttpService | HttpServiceAtivo> implements OnInit {\r\n /** Id do dado a ser carregado */\r\n @Input() id : number | null = null;\r\n @Input() loading : boolean = false;\r\n @Input() submitted: boolean = false;\r\n /** Progresso de salvamento */\r\n @Input() progress : number;\r\n /** Service a ser utlizado na view */\r\n @Input() service : T;\r\n \r\n protected genericService: GenericService;\r\n protected activatedRoute: ActivatedRoute;\r\n protected elementRef: ElementRef;\r\n protected fb: FormBuilder;\r\n\r\n protected nested: boolean = false;\r\n\r\n constructor(){\r\n this.genericService = inject(GenericService)\r\n this.activatedRoute = inject(ActivatedRoute)\r\n this.elementRef = inject(ElementRef)\r\n this.fb = inject(FormBuilder)\r\n }\r\n\r\n /** Lista de TableFields a serem invocados de acordo com sua configuração.\r\n * Automaticamente preenchido com service.lstTableFieldsView ou service.lstTableFields quando não informado\r\n */\r\n @Input() lstTableFields: TableField[] = [];\r\n @Input() public redirectPath: string | null = \"/view/:id\"\r\n \r\n \r\n @ViewChild('.wrapper') Wrapper: HTMLElement;\r\n async ngOnInit() {\r\n if(this.lstTableFields.length == 0){\r\n if(this.service.lstTableFieldsView.length != 0){\r\n this.lstTableFields = this.service.lstTableFieldsView;\r\n }else{\r\n this.lstTableFields = this.service.lstTableFields;\r\n }\r\n }\r\n\r\n if(this.id == null){\r\n this.id = this.genericService.GetId(this.activatedRoute, 0);\r\n }\r\n \r\n if(!this.service){ console.warn(\"[ View service is not valid! ]\"); }\r\n if (instanceOfViewWillCreateForm(this)) { this.OnViewWillCreateForm() }\r\n await this.CreateForm();\r\n if (instanceOfViewDidCreateForm(this)) { this.OnViewDidCreateForm() }\r\n \r\n if(this.elementRef && this.elementRef.nativeElement && this.elementRef.nativeElement.parentElement){\r\n this.nested = (this.elementRef.nativeElement.parentElement.tagName as string).toUpperCase() != \"ION-CONTENT\";\r\n }else{\r\n this.nested = true;\r\n }\r\n\r\n this.Refresh();\r\n }\r\n\r\n async Refresh() {\r\n this.loading = true;\r\n try{\r\n await this.Load();\r\n }finally{ }\r\n this.loading = false;\r\n }\r\n\r\n async Load(): Promise<void>{\r\n if(this.id == 0){ return; }\r\n const res = await firstValueFrom(this.service.Get(this.id));\r\n this.frm.patchValue(res);\r\n }\r\n\r\n frm: FormGroup;\r\n async CreateForm() {\r\n this.frm = TableFieldFormBuilder.create(this.lstTableFields, this.fb);\r\n await this.LoadIdComparison();\r\n }\r\n\r\n async LoadIdComparison(): Promise<void> {\r\n try{\r\n const data: RouteData = await firstValueFrom(this.activatedRoute.data) as RouteData;\r\n if(!data){ return; }\r\n const id = this.genericService.GetId(this.activatedRoute, data.idPreloaderConfiguration.routeDepth);\r\n \r\n if(!id){ return; }\r\n\r\n this.frm.controls[data.idPreloaderConfiguration.propertyName].setValue(id);\r\n this.lstTableFields.find(p => p.index == data.idPreloaderConfiguration.propertyName).disabled = true;\r\n }catch{ }\r\n }\r\n\r\n /** Emite o id da entidade salva apos o salvamento */\r\n @Output('Save') SaveEmitter: EventEmitter<number> = new EventEmitter<number>();\r\n async Save() {\r\n await lastValueFrom(this.service.Save(this.frm, this));\r\n this.SaveEmitter.emit(this.id);\r\n }\r\n\r\n public get BackRoute(){\r\n const fullRoute = window.location.pathname.split('/')\r\n\r\n const li = fullRoute[fullRoute.length - 1];\r\n var offset = 1;\r\n if(Number(li)){ offset++; }\r\n let route: string[] = []\r\n for(let i = 0; i < fullRoute.length - offset; i++){ route.push(fullRoute[i]); }\r\n return route.join('/');\r\n }\r\n\r\n public GetCurrentRouting(): ActivatedRoute { return this.activatedRoute; }\r\n\r\n protected navController: NavController;\r\n protected NavigateToList(): void{ this.navController.navigateBack(this.BackRoute); }\r\n\r\n\r\n @ViewChild(HeaderViewComponent) HeaderViewComponentElement: HeaderViewComponent;\r\n\r\n @HostListener('window:keydown',['$event'])\r\n onKeyPress($event: KeyboardEvent) {\r\n if(!(this.elementRef.nativeElement.contains(document.activeElement) || document.activeElement == this.elementRef.nativeElement)){\r\n return;\r\n }\r\n if($event.key == 'Escape'){\r\n this.HeaderViewComponentElement.Back($event);\r\n $event.preventDefault();\r\n return;\r\n }\r\n if(($event.ctrlKey || $event.metaKey) && ($event.key == 'Enter')){\r\n this.Save();\r\n $event.preventDefault();\r\n return;\r\n }\r\n if($event.altKey && $event.key == 'Insert'){\r\n this.HeaderViewComponentElement.New();\r\n $event.preventDefault();\r\n return;\r\n }\r\n }\r\n\r\n\r\n\r\n}\r\n\r\nexport interface ViewWillCreateForm{\r\n OnViewWillCreateForm(): void | any;\r\n} \r\nfunction instanceOfViewWillCreateForm(object: any): object is ViewWillCreateForm {\r\n return 'OnViewWillCreateForm' in object;\r\n}\r\nexport interface ViewDidCreateForm {\r\n OnViewDidCreateForm(): void | any;\r\n} \r\nfunction instanceOfViewDidCreateForm(object: any): object is ViewDidCreateForm {\r\n return 'OnViewDidCreateForm' in object;\r\n}\r\n\r\n","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { InputBoolConfiguration, InputBoolType } from './input-bool.configuration';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomInput } from '../custom-input';\r\n\r\n@Component({\r\n selector: 'input-bool',\r\n templateUrl: './input-bool.component.html',\r\n styleUrls: ['./input-bool.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputBoolComponent)\r\n})\r\nexport class InputBoolComponent extends CustomInput<boolean> implements OnInit {\r\n\r\n @Input() configuration: InputBoolConfiguration = new InputBoolConfiguration();\r\n types = InputBoolType;\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef: ElementRef\r\n ) { super(); }\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n override get model() : boolean { return this._model; }\r\n override set model(value: boolean) { this.setModel(value); this.propagateChange(value); }\r\n setModel(value: boolean){\r\n this._model = value;\r\n }\r\n\r\n override writeValue(value: boolean): void { this.setModel(value); }\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"cursor-pointer ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled' : disabled,\r\n }\"\r\n >\r\n <ion-card-content class=\"default-transition flex h-full\">\r\n <div id=\"content\" class=\"flex flex-col shrink-0 default-transition\">\r\n <ion-toggle class=\"w-full grow flex items-center\" *ngIf=\"configuration.type == types.toggle\" [(ngModel)]=\"model\">{{label}}</ion-toggle>\r\n <ion-checkbox class=\"w-full grow flex items-center\" *ngIf=\"configuration.type != types.toggle\" [(ngModel)]=\"model\">{{label}}</ion-checkbox>\r\n </div>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { InputStringConfiguration } from '../input-string/input-string.configuration';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomInput } from '../custom-input';\r\n\r\n@Component({\r\n selector: 'input-textarea',\r\n templateUrl: './input-textarea.component.html',\r\n styleUrls: ['./input-textarea.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputTextareaComponent)\r\n})\r\nexport class InputTextareaComponent extends CustomInput<string> implements OnInit {\r\n\r\n @Input() configuration: InputStringConfiguration = new InputStringConfiguration();\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef: ElementRef\r\n ) { super(); }\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n override writeValue(value: string){ this.setModel(value) }\r\n override get model(): string { return this._model; }\r\n override set model(value: string) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n setModel(value){\r\n if(value == null){ this._model = '' } else { this._model = value + '' }\r\n }\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n <ion-card class=\"!size-full !max-h-full focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled' : disabled,\r\n }\"\r\n >\r\n <ion-card-content class=\"!size-full\">\r\n <div class=\"flex size-full\">\r\n <ion-item class=\"size-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n <ion-textarea \r\n [autoGrow]=\"true\" \r\n class=\"!size-full\"\r\n [maxlength]=\"configuration.maxlength\" \r\n labelPlacement=\"stacked\" \r\n [(ngModel)]=\"model\">\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n </ion-textarea>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n</div>","export type CPFCnpj = 'CPF' | 'CNPJ' | 'CPF/CNPJ'\r\nexport class InputCpfCnpjConfiguration {\r\n constructor(public type: CPFCnpj = 'CPF/CNPJ'){}\r\n}","import { Component, ElementRef, Host, Input, OnInit, Optional, SkipSelf } from '@angular/core';\r\nimport { ControlContainer } from '@angular/forms';\r\n\r\nimport { MaskitoOptions, MaskitoElementPredicate, maskitoTransform } from '@maskito/core';\r\nimport { MaskitoMaskExpression } from '@maskito/core/src/lib/types';\r\n\r\nimport { InputCpfCnpjConfiguration } from './input-cpf-cnpj.configuration';\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomInput } from '../custom-input';\r\n\r\n@Component({\r\n selector: 'input-cpf-cnpj, input-cpf, input-cnpj',\r\n templateUrl: './input-cpf-cnpj.component.html',\r\n styleUrls: ['./input-cpf-cnpj.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputCpfCnpjComponent)\r\n})\r\nexport class InputCpfCnpjComponent extends CustomInput<string> implements OnInit {\r\n\r\n @Input() configuration: InputCpfCnpjConfiguration = new InputCpfCnpjConfiguration('CPF/CNPJ')\r\n\r\n constructor(\r\n @Optional() @Host() @SkipSelf()\r\n override controlContainer: ControlContainer,\r\n override elementRef: ElementRef\r\n ) { super(); }\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n \r\n if(this.elementRef.nativeElement.tagName.toLowerCase() == 'input-cpf-cnpj'){\r\n this.configuration = new InputCpfCnpjConfiguration();\r\n }else{\r\n const selector: string = this.elementRef.nativeElement.tagName.toLowerCase().split('-')[1];\r\n if(selector == 'cpf' ){ this.configuration = new InputCpfCnpjConfiguration('CPF') } else\r\n if(selector == 'cnpj'){ this.configuration = new InputCpfCnpjConfiguration('CNPJ') } \r\n }\r\n }\r\n\r\n override writeValue(value: string){ this.setModel(value) }\r\n override get model(): string { return this._model; }\r\n override set model(value: string) { this.setModel(value); this.propagateChange(this._model.replaceAll('.', '').replaceAll('-', '').replaceAll('/', '')); }\r\n\r\n setModel(value){\r\n if(value == null){ \r\n this._model = '' \r\n } else { \r\n this._model = maskitoTransform(value, this.mask);\r\n }\r\n }\r\n\r\n readonly cpfMask : MaskitoMaskExpression = [ /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/ ];\r\n readonly cnpjMask: MaskitoMaskExpression = [ /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '.', /\\d/, /\\d/, /\\d/, '/', /\\d/, /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/];\r\n \r\n readonly mask: MaskitoOptions = {\r\n mask: (elementState) => {\r\n if(this.configuration.type == 'CPF/CNPJ'){\r\n if(!elementState.value){ \r\n return this.cpfMask;\r\n }else{\r\n if(elementState.value.includes('.')){\r\n if(elementState.value.length <= 14) { \r\n return this.cpfMask; \r\n }\r\n return this.cnpjMask;\r\n }else{\r\n if(elementState.value.length <= 11) { \r\n return this.cpfMask; \r\n }\r\n return this.cnpjMask;\r\n }\r\n }\r\n }\r\n if(this.configuration.type == 'CNPJ'){ return this.cnpjMask; }\r\n if(this.configuration.type == 'CPF' ){ return this.cpfMask; }\r\n },\r\n };\r\n readonly maskPredicate: MaskitoElementPredicate = async (el) => (el as HTMLIonInputElement).getInputElement();\r\n}\r\n","<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled' : disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"flex\">\r\n <ion-item class=\"w-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n <ion-input \r\n [(ngModel)]=\"model\"\r\n labelPlacement=\"stacked\"\r\n\r\n [maskito]=\"mask\"\r\n [maskitoElement]=\"maskPredicate\"\r\n >\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>","import { FormBuilder } from '@angular/forms';\r\nimport { Component, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { NavController } from '@ionic/angular';\r\n\r\n\r\nimport { HttpServiceAtivo } from '../../../services/web/http.ativo.service';\r\nimport { HttpService } from '../../../services/web/http.service';\r\nimport { GenericService } from './../../../services/generics.service';\r\nimport { View } from './view';\r\n\r\n/** Componente View Padão */\r\n@Component({\r\n selector: 'default-view',\r\n templateUrl: './default-view.component.html',\r\n styleUrls: ['./default-view.component.scss'],\r\n})\r\nexport class DefaultViewComponent<T extends HttpService | HttpServiceAtivo> extends View<T> implements OnInit {\r\n\r\n /** Remove o botão de voltar */\r\n @Input() noBack: boolean = false;\r\n /** Remove o botão NOVO da listagem */\r\n @Input() noNew : boolean = false;\r\n /** Remove os breadcrumbs da listagem */\r\n @Input() noBreadcrumbs: boolean = false;\r\n\r\n constructor(\r\n public override fb: FormBuilder,\r\n public override elementRef: ElementRef,\r\n public override activatedRoute: ActivatedRoute,\r\n public override genericService: GenericService,\r\n public override navController: NavController,\r\n ) { super(); }\r\n}","<ion-content class=\"bg-transparent\"> \r\n <div class=\"wrapper\" [ngClass]=\"{'!p-0 translucid-primary-background': nested}\" tabindex=\"-1\">\r\n @if (!noBreadcrumbs) {\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb class=\"cursor-pointer\" (click)=\"NavigateToList()\">\r\n {{service.title}}\r\n </ion-breadcrumb>\r\n <ion-breadcrumb> \r\n {{id == 0 ? 'Novo Registro' : 'Editar Registro' }} \r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n }\r\n \r\n <ion-card>\r\n <ion-card-header class=\"!block\">\r\n <header-view *ngIf=\"service\" [novo]=\"id == 0\" [useDefaultRouting]=\"nested\" [loading]=\"loading\" [progress]=\"progress\" (save)=\"Save()\" [noBack]=\"noBack\" [noNew]=\"noNew\"></header-view>\r\n </ion-card-header>\r\n <ion-card-content class=\"p-0 h-full !overflow-y-auto overflow-x-hidden\">\r\n <div class=\"grid grid-cols-12 gap-4 w-full\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n \r\n @for (field of lstTableFields; track $index) {\r\n @if (field.index != 'id') {\r\n @if (!field.hiddenView) {\r\n @switch (field.type) {\r\n @case (\"Bool\") {\r\n <input-bool [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\" ></input-bool>\r\n }\r\n @case (\"Currency\") {\r\n <input-currency [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-currency>\r\n }\r\n @case (\"Date\") {\r\n <input-date [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date>\r\n }\r\n @case (\"Time\") {\r\n <input-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-time>\r\n }\r\n @case (\"DateTime\") {\r\n <input-date-time [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-date-time>\r\n }\r\n @case (\"Decimal\") {\r\n <input-decimal [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-decimal>\r\n }\r\n @case (\"File\") {\r\n <input-file [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-file>\r\n }\r\n @case (\"String\") {\r\n <input-string [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-string>\r\n }\r\n @case (\"TextArea\") {\r\n <input-textarea [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\"></input-textarea>\r\n }\r\n @case (\"Number\") {\r\n <input-number [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-number>\r\n }\r\n @case (\"Select\") {\r\n <input-select [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-select>\r\n }\r\n @case (\"Cpf\") {\r\n <input-cpf [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf>\r\n }\r\n @case (\"Cnpj\") {\r\n <input-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cnpj>\r\n }\r\n @case (\"CpfCnpj\") {\r\n <input-cpf-cnpj [class]=\"field.class\" [formControlName]=\"field.index\" [label]=\"field.header\" [loading]=\"loading\" [disabled]=\"field.disabled\" [submitted]=\"submitted\" [configuration]=\"field.configuration\"></input-cpf-cnpj>\r\n }\r\n }\r\n }\r\n }\r\n }\r\n \r\n <div class=\"col-span-full rounded-2xl p-3 flex items-center justify-center\" *ngIf=\"!service || service.lstTableFields.length == 0\" style=\"background: var(--ion-color-danger);\">\r\n <ion-text class=\"text-2xl text-white\">\r\n <ion-icon class=\"align-sub text-3xl\" name=\"alert-circle\"></ion-icon> [ Invalid Configuration ]\r\n </ion-text>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Clipboard } from '@capacitor/clipboard';\r\nimport { IonPopover } from '@ionic/angular';\r\n\r\nimport { InputProviderFactory } from '../input-provider-factory';\r\nimport { CustomSignalInput } from '../custom-signal-input';\r\nimport { GenericService } from '../../../services/generics.service';\r\n\r\ntype RGB = { r: number, g: number, b: number };\r\ntype HSL = { h: number, l: number, s: number };\r\n\r\n@Component({\r\n selector: 'input-color',\r\n templateUrl: './input-color.component.html',\r\n styleUrls: ['./input-color.component.scss', '../inputs.scss'],\r\n providers: InputProviderFactory.GetProvider(InputColorComponent)\r\n})\r\nexport class InputColorComponent extends CustomSignalInput<string> implements OnInit {\r\n\r\n constructor(\r\n private genericService: GenericService\r\n ) { super(); }\r\n\r\n \r\n @ViewChild('canvas' ) canvas: ElementRef<HTMLCanvasElement>;\r\n @ViewChild(\"hueSlider\" ) hueSlider: ElementRef<HTMLCanvasElement>\r\n @ViewChild(\"alphaSlider\") alphaSlider: ElementRef<HTMLCanvasElement>\r\n\r\n override writeValue(value: string){ this.setModel(value, true) }\r\n override get model(): string { return this._model; }\r\n override set model(value: string) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n setModel(value: string, redraw: boolean = false){\r\n if(value){\r\n this.setColorFromHex(value, false);\r\n if(this.canvasCtx && redraw){\r\n this.updateSelectedColor(); \r\n this.updateIndicatorPositions(); \r\n this.drawColorGradient()\r\n }\r\n }\r\n }\r\n\r\n @ViewChild(IonPopover) Popover: IonPopover;\r\n rendering: boolean = true;\r\n async Present($event){\r\n this.rendering = true;\r\n await this.Popover.present($event);\r\n \r\n this.initCanvas()\r\n this.initHueSlider()\r\n this.initAlphaSlider()\r\n this.drawColorGradient()\r\n this.drawHueSlider()\r\n this.drawAlphaSlider()\r\n this.rendering = false;\r\n }\r\n private canvasCtx: CanvasRenderingContext2D;\r\n private canvasWidth: number = 0;\r\n private canvasHeight: number = 0;\r\n\r\n private hueCtx: CanvasRenderingContext2D;\r\n private hueSliderWidth: number = 0;\r\n private hueSliderHeight: number = 0;\r\n\r\n private alphaCtx: CanvasRenderingContext2D;\r\n private alphaSliderWidth: number = 0;\r\n private alphaSliderHeight: number = 0;\r\n\r\n private isDragging = false\r\n private isHueDragging = false\r\n private isAlphaDragging = false\r\n\r\n rgbColor : RGB = { r: 255, g: 0, b: 0 };\r\n hslColor : HSL = { h: 0, s: 100, l: 50 };\r\n alpha : number = 0\r\n\r\n indicatorX: number = 100\r\n indicatorY: number = 0\r\n\r\n initCanvas(): void {\r\n const canvas = this.canvas.nativeElement;\r\n this.canvasWidth = canvas.width; \r\n this.canvasHeight = canvas.height; \r\n this.canvasCtx = canvas.getContext('2d');\r\n\r\n canvas.addEventListener('mousedown' , this.startDrag.bind(this));\r\n canvas.addEventListener('mousemove' , this.drag.bind(this));\r\n canvas.addEventListener('mouseup' , this.endDrag.bind(this));\r\n canvas.addEventListener('mouseleave', this.endDrag.bind(this));\r\n\r\n // Touch events\r\n canvas.addEventListener('touchstart', this.handleTouch.bind(this));\r\n canvas.addEventListener('touchmove' , this.handleTouch.bind(this));\r\n canvas.addEventListener('touchend' , this.endDrag.bind(this));\r\n }\r\n\r\n initHueSlider(): void {\r\n const hueSlider = this.hueSlider.nativeElement\r\n this.hueSliderWidth = hueSlider.width;\r\n this.hueSliderHeight = hueSlider.height;\r\n this.hueCtx = hueSlider.getContext(\"2d\")\r\n\r\n hueSlider.addEventListener(\"mousedown\" , this.startHueDrag.bind(this))\r\n hueSlider.addEventListener(\"mousemove\" , this.hueDrag.bind(this))\r\n hueSlider.addEventListener(\"mouseup\" , this.endHueDrag.bind(this))\r\n hueSlider.addEventListener(\"mouseleave\", this.endHueDrag.bind(this))\r\n\r\n // Touch events\r\n hueSlider.addEventListener(\"touchstart\", this.handleHueTouch.bind(this))\r\n hueSlider.addEventListener(\"touchmove\" , this.handleHueTouch.bind(this))\r\n hueSlider.addEventListener(\"touchend\" , this.endHueDrag.bind(this))\r\n }\r\n\r\n initAlphaSlider(): void {\r\n const alphaSlider = this.alphaSlider.nativeElement;\r\n this.alphaSliderHeight = alphaSlider.height;\r\n this.alphaSliderWidth = alphaSlider.width;\r\n\r\n this.alphaCtx = alphaSlider.getContext(\"2d\")\r\n\r\n alphaSlider.addEventListener(\"mousedown\" , this.startAlphaDrag.bind(this))\r\n alphaSlider.addEventListener(\"mousemove\" , this.alphaDrag.bind(this))\r\n alphaSlider.addEventListener(\"mouseup\" , this.endAlphaDrag.bind(this))\r\n alphaSlider.addEventListener(\"mouseleave\", this.endAlphaDrag.bind(this))\r\n\r\n // Touch events\r\n alphaSlider.addEventListener(\"touchstart\", this.handleAlphaTouch.bind(this))\r\n alphaSlider.addEventListener(\"touchmove\" , this.handleAlphaTouch.bind(this))\r\n alphaSlider.addEventListener(\"touchend\" , this.endAlphaDrag.bind(this))\r\n }\r\n\r\n drawColorGradient(): void {\r\n const ctx = this.canvasCtx;\r\n\r\n // Clear canvas\r\n ctx.clearRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n\r\n // Draw the pure hue color at the top-right corner\r\n ctx.fillStyle = `hsl(${this.hslColor.h}, 100%, 50%)`\r\n ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n\r\n // White gradient (horizontal - saturation)\r\n const whiteGradient = ctx.createLinearGradient(0, 0, this.canvasWidth, 0)\r\n whiteGradient.addColorStop(0, \"white\")\r\n whiteGradient.addColorStop(1, \"rgba(255, 255, 255, 0)\")\r\n ctx.fillStyle = whiteGradient\r\n ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n\r\n // Black gradient (vertical - brightness)\r\n const blackGradient = ctx.createLinearGradient(0, 0, 0, this.canvasHeight)\r\n blackGradient.addColorStop(0, \"rgba(0, 0, 0, 0)\")\r\n blackGradient.addColorStop(1, \"black\")\r\n ctx.fillStyle = blackGradient\r\n ctx.fillRect(0, 0, this.canvasWidth, this.canvasHeight)\r\n }\r\n\r\n drawHueSlider(): void {\r\n const ctx = this.hueCtx\r\n\r\n // Create hue gradient\r\n const gradient = ctx.createLinearGradient(0, 0, this.hueSliderWidth, 0)\r\n for (let i = 0; i <= 360; i += 60) {\r\n gradient.addColorStop(i / 360, `hsl(${i}, 100%, 50%)`)\r\n }\r\n\r\n ctx.fillStyle = gradient\r\n ctx.fillRect(0, 0, this.hueSliderWidth, this.hueSliderHeight)\r\n }\r\n\r\n drawAlphaSlider(): void {\r\n const ctx = this.alphaCtx\r\n const width = this.alphaSliderWidth\r\n const height = this.alphaSliderHeight\r\n\r\n // Clear canvas\r\n ctx.clearRect(0, 0, width, height)\r\n\r\n // Create checkerboard pattern for transparency\r\n const squareSize = 8\r\n for (let i = 0; i < width; i += squareSize) {\r\n for (let j = 0; j < height; j += squareSize) {\r\n const isEven = (i / squareSize + j / squareSize) % 2 === 0\r\n ctx.fillStyle = isEven ? \"#ffffff\" : \"#cccccc\"\r\n ctx.fillRect(i, j, squareSize, squareSize)\r\n }\r\n }\r\n \r\n\r\n // Create alpha gradient\r\n const gradient = ctx.createLinearGradient(0, 0, width, 0)\r\n const rgb = this.hslToRgb(this.hslColor);\r\n\r\n gradient.addColorStop(0, `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 0)`)\r\n gradient.addColorStop(1, `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, 1)`)\r\n\r\n ctx.fillStyle = gradient\r\n ctx.fillRect(0, 0, width, height)\r\n }\r\n\r\n startDrag(e: MouseEvent): void {\r\n this.isDragging = true\r\n this.handleColorSelection(e.offsetX, e.offsetY)\r\n }\r\n\r\n drag(e: MouseEvent): void {\r\n if (this.isDragging) {\r\n this.handleColorSelection(e.offsetX, e.offsetY)\r\n }\r\n }\r\n\r\n endDrag(): void {\r\n this.isDragging = false\r\n }\r\n\r\n handleTouch(e: TouchEvent): void {\r\n e.preventDefault()\r\n if (e.type === \"touchstart\") {\r\n this.isDragging = true\r\n }\r\n\r\n if (this.isDragging) {\r\n const rect = this.canvas.nativeElement.getBoundingClientRect()\r\n const touch = e.touches[0]\r\n const x = touch.clientX - rect.left\r\n const y = touch.clientY - rect.top\r\n this.handleColorSelection(x, y)\r\n }\r\n }\r\n\r\n startHueDrag(e: MouseEvent): void {\r\n this.isHueDragging = true\r\n this.handleHueSelection(e.offsetX)\r\n }\r\n\r\n hueDrag(e: MouseEvent): void {\r\n if (this.isHueDragging) {\r\n this.handleHueSelection(e.offsetX)\r\n }\r\n }\r\n\r\n endHueDrag(): void {\r\n this.isHueDragging = false\r\n }\r\n\r\n startAlphaDrag(e: MouseEvent): void {\r\n this.isAlphaDragging = true\r\n this.handleAlphaSelection(e.offsetX)\r\n }\r\n\r\n alphaDrag(e: MouseEvent): void {\r\n if (this.isAlphaDragging) {\r\n this.handleAlphaSelection(e.offsetX)\r\n }\r\n }\r\n\r\n endAlphaDrag(): void {\r\n this.isAlphaDragging = false\r\n }\r\n\r\n handleAlphaTouch(e: TouchEvent): void {\r\n e.preventDefault()\r\n if (e.type === \"touchstart\") {\r\n this.isAlphaDragging = true\r\n }\r\n\r\n if (this.isAlphaDragging) {\r\n const rect = this.alphaSlider.nativeElement.getBoundingClientRect()\r\n const touch = e.touches[0]\r\n const x = touch.clientX - rect.left\r\n this.handleAlphaSelection(x)\r\n }\r\n }\r\n\r\n handleHueTouch(e: TouchEvent): void {\r\n e.preventDefault()\r\n if (e.type === \"touchstart\") {\r\n this.isHueDragging = true\r\n }\r\n\r\n if (this.isHueDragging) {\r\n const rect = this.hueSlider.nativeElement.getBoundingClientRect()\r\n const touch = e.touches[0]\r\n const x = touch.clientX - rect.left\r\n this.handleHueSelection(x)\r\n }\r\n }\r\n\r\n handleHueSelection(x: number): void {\r\n // Constrain x to canvas bounds\r\n x = Math.max(0, Math.min(x, this.hueSliderWidth))\r\n\r\n // Calculate hue based on x position (0-360)\r\n this.hslColor.h = Math.round((x / this.hueSliderWidth) * 360)\r\n\r\n // Redraw color gradient with new hue\r\n this.drawColorGradient()\r\n\r\n // Redraw alpha slider with new color\r\n this.drawAlphaSlider()\r\n\r\n // Update selected color\r\n this.updateSelectedColor(this.hslColor.s, this.hslColor.l, true)\r\n }\r\n\r\n handleAlphaSelection(x: number): void {\r\n // Constrain x to canvas bounds\r\n x = Math.max(0, Math.min(x, this.alphaSliderWidth))\r\n\r\n // Calculate alpha based on x position (0-100)\r\n this.alpha = Math.round((x / this.alphaSliderWidth) * 100)\r\n\r\n // Update selected color\r\n this.updateSelectedColor(this.hslColor.s, this.hslColor.l, true)\r\n }\r\n\r\n handleColorSelection(x: number, y: number): void {\r\n // Constrain coordinates to canvas bounds\r\n x = Math.max(0, Math.min(x, this.canvasWidth))\r\n y = Math.max(0, Math.min(y, this.canvasHeight))\r\n\r\n // Store the raw position percentage for the indicator\r\n this.indicatorX = (x / this.canvasWidth) * 100\r\n this.indicatorY = (y / this.canvasHeight) * 100\r\n\r\n // Calculate saturation and lightness based on position\r\n this.hslColor.s = Math.round(this.indicatorX)\r\n // Adjust lightness calculation:\r\n // - Top of canvas (y=0) should be white (lightness=100) on the left and pure color (lightness=50) on the right\r\n // - Bottom of canvas (y=height) should be black (lightness=0)\r\n if (this.hslColor.s === 0) {\r\n // Left edge is always white to black, regardless of y position\r\n this.hslColor.l = Math.round(100 - this.indicatorY)\r\n } else {\r\n // For other saturation values, top is 50-100% lightness (based on saturation), bottom is 0%\r\n const maxLightness = 100 - this.hslColor.s / 2\r\n this.hslColor.l = Math.round(maxLightness - (this.indicatorY / 100) * maxLightness)\r\n }\r\n\r\n // Update selected color\r\n this.updateSelectedColor(this.hslColor.s, this.hslColor.l, true)\r\n\r\n // Redraw alpha slider with new color\r\n this.drawAlphaSlider()\r\n }\r\n\r\n updateSelectedColor(saturation: number | null = null, lightness: number | null = null, emitChanges: boolean = false): void {\r\n\r\n // Update HSL values\r\n if(saturation != null){\r\n this.hslColor.s = saturation\r\n }\r\n if(lightness != null){\r\n this.hslColor.l = lightness\r\n }\r\n // Convert HSL to RGB\r\n const rgb = this.hslToRgb(this.hslColor);\r\n\r\n this.rgbColor = rgb\r\n\r\n // Convert RGB to HEX\r\n const hex = this.rgbToHex(rgb, this.alpha / 100);\r\n if(emitChanges){ this.model = hex }else{ this._model = hex }\r\n\r\n // Emit color change event\r\n // this.colorChange.emit(this.selectedColor)\r\n }\r\n\r\n updateIndicatorPositions(): void {\r\n // Set X position directly from saturation (0-100)\r\n this.indicatorX = this.hslColor.s;\r\n \r\n // Set Y position based on lightness\r\n // When lightness is 50, Y should be 0 (top)\r\n // When lightness is 0, Y should be 100 (bottom)\r\n this.indicatorY = (50 - this.hslColor.l) * 2;\r\n }\r\n\r\n hslToRgb(hsl: HSL): RGB {\r\n var h = hsl.h / 360;\r\n var s = hsl.s / 100;\r\n var l = hsl.l / 100;\r\n\r\n let r: number, g: number, b: number\r\n\r\n if (s === 0) {\r\n r = g = b = l // achromatic\r\n } else {\r\n const hue2rgb = (p: number, q: number, t: number) => {\r\n if (t < 0) t += 1\r\n if (t > 1) t -= 1\r\n if (t < 1 / 6) return p + (q - p) * 6 * t\r\n if (t < 1 / 2) return q\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6\r\n return p\r\n }\r\n\r\n const q = l < 0.5 ? l * (1 + s) : l + s - l * s\r\n const p = 2 * l - q\r\n\r\n r = hue2rgb(p, q, h + 1 / 3)\r\n g = hue2rgb(p, q, h)\r\n b = hue2rgb(p, q, h - 1 / 3)\r\n }\r\n\r\n return {\r\n r: Math.round(r * 255),\r\n g: Math.round(g * 255),\r\n b: Math.round(b * 255),\r\n }\r\n }\r\n\r\n setColorFromHex(hexColor: string, updateCanvas: boolean = true, emitChanges: boolean = false): void {\r\n // Remove # if present\r\n hexColor = hexColor.replace(/^#/, \"\")\r\n\r\n let r: number, g: number, b: number, a = 1\r\n\r\n // Parse hex values based on string length\r\n if (hexColor.length === 3) {\r\n // Short hex (#RGB)\r\n r = Number.parseInt(hexColor.charAt(0) + hexColor.charAt(0), 16)\r\n g = Number.parseInt(hexColor.charAt(1) + hexColor.charAt(1), 16)\r\n b = Number.parseInt(hexColor.charAt(2) + hexColor.charAt(2), 16)\r\n } else if (hexColor.length === 6) {\r\n // Standard hex (#RRGGBB)\r\n r = Number.parseInt(hexColor.substring(0, 2), 16)\r\n g = Number.parseInt(hexColor.substring(2, 4), 16)\r\n b = Number.parseInt(hexColor.substring(4, 6), 16)\r\n } else if (hexColor.length === 8) {\r\n // Hex with alpha (#RRGGBBAA)\r\n r = Number.parseInt(hexColor.substring(0, 2), 16)\r\n g = Number.parseInt(hexColor.substring(2, 4), 16)\r\n b = Number.parseInt(hexColor.substring(4, 6), 16)\r\n a = Number.parseInt(hexColor.substring(6, 8), 16) / 255\r\n } else {\r\n // Invalid hex, use default\r\n console.error(\"Invalid hex color format\")\r\n return\r\n }\r\n\r\n // Update RGB color\r\n this.rgbColor = { r, g, b }\r\n\r\n // Convert RGB to HSL\r\n this.hslColor = this.rgbToHsl(this.rgbColor)\r\n\r\n // Update alpha\r\n this.alpha = Math.round(a * 100)\r\n\r\n // Update selected color\r\n const hex = this.rgbToHex(this.rgbColor, a)\r\n if(emitChanges){ this.model = hex }else{ this._model = hex }\r\n\r\n if(updateCanvas){\r\n // Calculate indicator position\r\n this.updateIndicatorPosition()\r\n \r\n // Redraw components\r\n this.drawColorGradient()\r\n this.drawAlphaSlider()\r\n }\r\n }\r\n\r\n updateIndicatorPosition(): void {\r\n // Set X position based on saturation (0-100%)\r\n this.indicatorX = this.hslColor.s\r\n\r\n // Calculate Y position based on lightness and saturation\r\n if (this.hslColor.s == 0) {\r\n // Left edge: lightness determines position\r\n this.indicatorY = 100 - this.hslColor.l\r\n } else {\r\n // Rest of canvas: calculate based on max lightness for this saturation\r\n const maxLightness = 100 - this.hslColor.s / 2\r\n \r\n // Ensure lightness is within valid range for this saturation\r\n const adjustedLightness = Math.min(this.hslColor.l, maxLightness)\r\n\r\n // Calculate Y position (0% at top, 100% at bottom)\r\n if (maxLightness == 0) {\r\n this.indicatorY = 100 // Avoid division by zero\r\n } else {\r\n this.indicatorY = ((maxLightness - adjustedLightness) / maxLightness) * 100\r\n }\r\n\r\n // Constrain to canvas bounds\r\n this.indicatorY = Math.max(0, Math.min(100, this.indicatorY))\r\n }\r\n }\r\n\r\n rgbToHsl(rgb: RGB): HSL {\r\n var r = rgb.r / 255\r\n var g = rgb.g / 255\r\n var b = rgb.b / 255\r\n\r\n const max = Math.max(r, g, b)\r\n const min = Math.min(r, g, b)\r\n let h = 0,\r\n s = 0\r\n const l = (max + min) / 2\r\n\r\n if (max !== min) {\r\n const d = max - min\r\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\r\n\r\n switch (max) {\r\n case r:\r\n h = ((g - b) / d + (g < b ? 6 : 0)) / 6\r\n break\r\n case g:\r\n h = ((b - r) / d + 2) / 6\r\n break\r\n case b:\r\n h = ((r - g) / d + 4) / 6\r\n break\r\n }\r\n }\r\n\r\n return {\r\n h: Math.round(h * 360),\r\n s: Math.round(s * 100),\r\n l: Math.round(l * 100),\r\n }\r\n }\r\n\r\n rgbToHex(rgb: RGB , a = 1): string {\r\n var { r, g, b } = rgb\r\n\r\n const alphaHex = Math.round(a * 255)\r\n .toString(16)\r\n .padStart(2, \"0\")\r\n return (\r\n \"#\" +\r\n [r, g, b]\r\n .map((x) => {\r\n const hex = x.toString(16)\r\n return hex.length === 1 ? \"0\" + hex : hex\r\n })\r\n .join(\"\") +\r\n (a < 1 ? alphaHex : \"\")\r\n ).toUpperCase();\r\n }\r\n\r\n getRgbaString(): string {\r\n const { r, g, b } = this.rgbColor\r\n const a = this.alpha / 100\r\n return `rgba(${r}, ${g}, ${b}, ${a})`\r\n }\r\n\r\n getHslaString(): string {\r\n return `hsla(${this.hslColor.h}, ${this.hslColor.s}%, ${this.hslColor.l}%, ${this.alpha / 100})`\r\n }\r\n\r\n async CopyToClipboard() {\r\n await Clipboard.write({\r\n string: this.model\r\n });\r\n await this.genericService.PresentToastSuccess(`${this.model} copiada para a área de transferência!`);\r\n }\r\n}","<div class=\"flex relative overflow-hidden\">\r\n <ion-card class=\"focus-within:on-focus ion-card-input !rounded-r-none\" [disabled]=\"loading || disabled\"\r\n [ngClass]=\"{\r\n 'invalid' : invalid,\r\n 'submitted': submitted,\r\n 'disabled': disabled,\r\n }\"\r\n >\r\n <ion-card-content>\r\n <div class=\"flex\">\r\n <ion-item class=\"w-full\" [ngClass]=\"{'submitted': submitted, 'invalid': invalid, 'required': required}\" lines=\"none\">\r\n <ion-input (ionBlur)=\"blur.emit(model)\" [maxlength]=\"9\" labelPlacement=\"stacked\" [(ngModel)]=\"model\">\r\n @if (label) {\r\n <ion-text id=\"label\" [ngClass]=\"{'required': required}\" slot=\"label\"> {{label}} </ion-text>\r\n }\r\n </ion-input>\r\n </ion-item>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n <div class=\"w-12 shrink-0\" > \r\n <ion-button (click)=\"Present($event)\" [disabled]=\"loading || disabled\" class=\"m-0 h-full w-full rounded-r-2xl on-hover [--border-radius:0rem_1rem_1rem_0rem]\" style=\"--border-width: 1px 1px 2px 1px;\" size=\"small\" color=\"medium\" fill=\"outline\"> \r\n <ion-icon class=\"fill-rainbow\" slot=\"icon-only\" name=\"color-palette\"></ion-icon> \r\n </ion-button>\r\n </div>\r\n <input-loading [loading]=\"loading\"></input-loading>\r\n</div>\r\n\r\n<ion-popover #popover [keepContentsMounted]=\"true\">\r\n <ng-template>\r\n <ion-card class=\"m-0\">\r\n <ion-card-content class=\"p-0 relative\">\r\n <loading [type]=\"3\" [loading]=\"rendering\" text=\"\"></loading>\r\n <div class=\"size-full p-3 flex gap-2\">\r\n <div class=\"h-[12.5rem] flex flex-col gap-1 w-44\">\r\n <div class=\"w-full h-32 relative\">\r\n <canvas #canvas width=\"176\" height=\"128\" class=\"size-full rounded-sm translucid-border\"></canvas>\r\n \r\n <div class=\"color-indicator quick-transition\" [style.left.%]=\"indicatorX\" [style.top.%]=\"indicatorY\"></div>\r\n </div>\r\n \r\n <div class=\"w-full flex shrink-0\">\r\n <div class=\"w-full grid grid-cols-5 gap-1\">\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#000000FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#3880ffff' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#2dd36fff' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#ffc409ff' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#eb445aff' }\"></ng-container>\r\n \r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#FFFFFFFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#59168bFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#c6005cFF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#fb2c36FF' }\"></ng-container>\r\n <ng-container *ngTemplateOutlet=\"templateColor; context: { $implicit: '#314158FF' }\"></ng-container>\r\n \r\n <ng-template #templateColor let-color>\r\n <div class=\"size-8 rounded translucid-border cursor-pointer\" (click)=\"setColorFromHex(color, true, true)\" [style]=\"{ 'background': color }\"></div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"h-[12.5rem] flex flex-col gap-2 w-44\">\r\n <div class=\"w-full relative\">\r\n <canvas #hueSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"hslColor.h / 3.6\"></div>\r\n </div>\r\n <div class=\"w-full relative\">\r\n <canvas #alphaSlider class=\"w-full rounded h-[22px]\" width=\"176\" height=\"22\"></canvas>\r\n <div class=\"indicator quick-transition\" [style.left.%]=\"alpha\"></div>\r\n </div>\r\n \r\n <div class=\"flex flex-col gap-1\">\r\n <div class=\"flex items-center justify-center w-full h-fit gap-1 overflow-hidden\">\r\n <div class=\"size-10 relative z-10 shrink-0 flex items-center justify-center\">\r\n <div class=\"size-full z-10 rounded translucid-border absolute left-0 top-0\" [style.background]=\"getRgbaString()\"></div>\r\n <ion-icon class=\"z-0 opacity-50\" color=\"dark\" name=\"color-fill\"></ion-icon>\r\n </div>\r\n \r\n <div class=\"h-full shrink text-sm flex flex-col items-start justify-center\">\r\n <ion-text>Hex</ion-text>\r\n <input [value]=\"model\" (change)=\"setColorFromHex($event.target['value'])\" class=\"w-full\"/>\r\n </div>\r\n \r\n <ion-button (click)=\"CopyToClipboard()\" class=\"aspect-square\" style=\"--border-radius: .25rem\" size=\"small\">\r\n <ion-icon slot=\"icon-only\" name=\"clipboard\"></ion-icon>\r\n </ion-button>\r\n </div> \r\n \r\n <div class=\"w-full flex gap-1 overflow-hidden text-sm\">\r\n <div class=\"w-full shrink\">\r\n <ion-text>R</ion-text>\r\n <input [(ngModel)]=\"rgbColor.r\" (change)=\"updateSelectedColor(); updateIndicatorPositions(); this.drawColorGradient()\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n <div class=\"w-full shrink\">\r\n <ion-text>G</ion-text>\r\n <input [(ngModel)]=\"rgbColor.g\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n <div class=\"w-full shrink\">\r\n <ion-text>B</ion-text>\r\n <input [(ngModel)]=\"rgbColor.b\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n <div class=\"w-full shrink\">\r\n <ion-text>A</ion-text>\r\n <input [(ngModel)]=\"alpha\" class=\"w-full\"/>\r\n </div>\r\n </div>\r\n \r\n <div class=\"w-full flex gap-1 overflow-hidden text-sm\">\r\n <div class=\"w-full shrink\">\r\n <ion-text>H</ion-text>\r\n <input [(ngModel)]=\"hslColor.h\" (change)=\"updateSelectedColor(); updateIndicatorPositions(); this.drawColorGradient()\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n <div class=\"w-full shrink\">\r\n <ion-text>L</ion-text>\r\n <input [(ngModel)]=\"hslColor.l\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n <div class=\"w-full shrink\">\r\n <ion-text>S</ion-text>\r\n <input [(ngModel)]=\"hslColor.s\" (change)=\"updateSelectedColor(); updateIndicatorPositions()\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n <div class=\"w-full shrink\">\r\n <ion-text>A</ion-text>\r\n <input [(ngModel)]=\"alpha\" type=\"number\" class=\"w-full\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </ng-template>\r\n</ion-popover>\r\n","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[input-select-template]',\r\n})\r\nexport class InputSelectTemplateDirective {\r\n constructor(public template: TemplateRef<any>) { }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { AfterViewInit, Component, ElementRef, Host, Input, input, OnDestroy, OnInit, SkipSelf, ViewChild } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n selector: 'tooltip',\r\n standalone: true,\r\n imports: [CommonModule, IonicModule],\r\n templateUrl: './tooltip.component.html',\r\n styleUrls: ['./tooltip.component.scss'],\r\n})\r\nexport class TooltipComponent {\r\n\r\n @Input() align: 'top' | 'bottom' | 'left' | 'right' = 'right';\r\n @Input() color: string= 'secondary';\r\n}\r\n","<!-- <div\r\n class=\"\r\n absolute\r\n \r\n\r\n default-transition px-2\r\n min-w-fit h-fit py-1\r\n bg-[var(--ion-color-secondary)] \r\n rounded-xl\r\n \"\r\n [ngClass]=\"{'!translate-x-0 !translate-y-0 !opacity-100': _active}\"\r\n> \r\n <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-red-500 [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n <div class=\"z-[100] whitespace-nowrap\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div> -->\r\n<div #wrapper id=\"wrapper\" class=\"size-full absolute left-0 right-0 animated\">\r\n <div\r\n id=\"tooltip\"\r\n style=\"--background: var(--ion-color-{{color}})\"\r\n class=\"\r\n !pointer-events-none\r\n absolute\r\n default-transition px-2\r\n min-w-fit h-fit py-1\r\n bg-[var(--background)]\r\n rounded-xl blur-sm\r\n opacity-0\r\n max-w-full\r\n {{align}}\r\n \"\r\n > \r\n @switch (align) {\r\n @case ('top') {\r\n <div class=\"absolute rounded -bottom-1 left-0 right-0 mx-auto -rotate-45 h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n }\r\n @case ('bottom') {\r\n <div class=\"absolute rounded -top-1 left-0 right-0 mx-auto rotate-[135deg] h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n }\r\n @case ('right') {\r\n <div class=\"absolute rounded -left-1 top-0 bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n }\r\n @case ('left') {\r\n <div class=\"absolute rounded -right-1 top-0 bottom-0 my-auto -rotate-[135deg] h-4 aspect-square bg-[var(--background)] [clip-path:polygon(0_20%,_0%_100%,_80%_100%)]\"></div>\r\n }\r\n }\r\n <div class=\"z-[100] block text-dark text-sm\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div> \r\n</div>\r\n\r\n","import { AfterContentInit, Component, ElementRef, HostListener, Input, OnChanges, SimpleChanges, ViewChild } from '@angular/core';\r\nimport { TooltipComponent } from '../tooltip/tooltip.component';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'text-tooltip',\r\n standalone: true,\r\n imports: [CommonModule, IonicModule, TooltipComponent],\r\n templateUrl: './text-tooltip.component.html',\r\n styleUrls: ['./text-tooltip.component.scss'],\r\n})\r\nexport class TextTooltipComponent implements OnChanges, AfterContentInit {\r\n isOverflowing: boolean = true;\r\n\r\n @ViewChild('text') text: ElementRef<HTMLDivElement>;\r\n private CheckOverflowHandler(){\r\n if(this.text){ this.isOverflowing = this.text.nativeElement.scrollWidth > this.text.nativeElement.clientWidth; }\r\n };\r\n \r\n @Input() align: 'top' | 'bottom' | 'left' | 'right' = 'right';\r\n @Input() color: string= 'secondary';\r\n\r\n constructor() { \r\n }\r\n \r\n @HostListener(\"mouseenter\")\r\n onMouseEnter() {\r\n this.CheckOverflowHandler()\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n setTimeout(() => this.CheckOverflowHandler(), 100)\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.CheckOverflowHandler();\r\n }\r\n\r\n @HostListener(\"window:resize\")\r\n onResize() {\r\n this.CheckOverflowHandler()\r\n }\r\n\r\n}\r\n","<div #text class=\"w-full truncate relative overflow-hidden\">\r\n <ng-content select=\"[slot=content]\"></ng-content>\r\n</div>\r\n<div class=\"absolute top-0 left-0 size-full\">\r\n <tooltip [color]=\"color\" [align]=\"align\" *ngIf=\"isOverflowing\" [hidden]=\"!isOverflowing\">\r\n <ng-content select=\"[slot=tooltip]\"></ng-content>\r\n </tooltip>\r\n</div>","import { ScrollingModule } from '@angular/cdk/scrolling'; \r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MaskitoDirective } from '@maskito/angular';\r\n\r\nimport { NgVarDirective } from '../../directives/ng-var.directive';\r\n\r\nimport { InputBoolComponent } from './input-bool/input-bool.component';\r\nimport { InputDateComponent } from './input-date/input-date.component';\r\n\r\nimport { InputDecimalComponent } from './input-decimal/input-decimal.component';\r\n\r\nimport { InputFileComponent } from './input-file/input-file.component';\r\nimport { DownloadButtonComponent } from './input-file/download-button/download-button.component';\r\n\r\nimport { LoadingComponent } from '../loading/loading.component';\r\nimport { InputSelectComponent } from './input-select/input-select.component';\r\nimport { InputStringComponent } from './input-string/input-string.component';\r\nimport { InputTextareaComponent } from './input-textarea/input-textarea.component';\r\nimport { InputLoadingComponent } from './input-loading/input-loading.component';\r\nimport { InputColorComponent } from './input-color/input-color.component';\r\nimport { InputCpfCnpjComponent } from './input-cpf-cnpj/input-cpf-cnpj.component';\r\nimport { InputSelectOptionComponent } from './input-select/input-select-option/input-select-option.component';\r\nimport { InputSelectTemplateDirective } from './input-select/input-select-template.directive';\r\nimport { InputSelectInternalOptionComponent } from './input-select/input-select-internal-option/input-select-internal-option.component';\r\nimport { TextTooltipComponent } from \"../text-tooltip/text-tooltip.component\";\r\nconst declare_export = [\r\n InputBoolComponent , \r\n InputDateComponent , \r\n InputDecimalComponent , \r\n InputFileComponent , \r\n DownloadButtonComponent, \r\n\r\n InputSelectComponent ,\r\n InputSelectOptionComponent , \r\n InputSelectTemplateDirective,\r\n\r\n InputStringComponent , \r\n InputTextareaComponent, \r\n InputLoadingComponent ,\r\n InputColorComponent ,\r\n InputCpfCnpjComponent\r\n]\r\n\r\n@NgModule({\r\n declarations: [ ...declare_export, InputSelectInternalOptionComponent ],\r\n exports : [ ...declare_export ],\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n ReactiveFormsModule,\r\n FormsModule,\r\n NgVarDirective,\r\n LoadingComponent,\r\n MaskitoDirective,\r\n ScrollingModule,\r\n TextTooltipComponent,\r\n ],\r\n})\r\nexport class InputsModule { }\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { RouterLink, RouterLinkWithHref, RouterModule, RouterOutlet } from '@angular/router';\r\n\r\nimport { NgVarDirective } from '../../directives/ng-var.directive';\r\nimport { InputsModule } from '../inputs/inputs.module';\r\n\r\nimport { LoadingComponent } from '../loading/loading.component';\r\nimport { DefaultListComponent } from './default-list/default-list.component';\r\nimport { DefaultViewComponent } from './default-view/default-view.component';\r\nimport { HeaderListComponent } from './default-list/header-list/header-list.component';\r\nimport { HeaderViewComponent } from './default-view/header-view/header-view.component';\r\nimport { DefaultTableComponent } from './default-table/default-table.component';\r\nimport { DefaultPaginationComponent } from './default-pagination/default-pagination.component';\r\nimport { ThFilterComponent } from './default-table/th-filter/th-filter.component';\r\n\r\nconst lstComponents = [\r\n HeaderListComponent,\r\n DefaultListComponent,\r\n\r\n DefaultViewComponent,\r\n HeaderViewComponent,\r\n DefaultTableComponent,\r\n DefaultPaginationComponent,\r\n ThFilterComponent\r\n]\r\n\r\n/** Modulo parão, inclui os seguiintes componentes:\r\n * - HeaderListComponent,\r\n - DefaultListComponent,\r\n - DefaultViewComponent,\r\n - HeaderViewComponent,\r\n - DefaultTableComponent,\r\n - DefaultPaginationComponent,\r\n */\r\n@NgModule({\r\n declarations: [...lstComponents],\r\n exports : [...lstComponents],\r\n imports: [\r\n IonicModule, \r\n CommonModule, \r\n InputsModule,\r\n ReactiveFormsModule, \r\n RouterLinkWithHref,\r\n FormsModule,\r\n RouterModule,\r\n RouterOutlet,\r\n RouterLink,\r\n LoadingComponent,\r\n NgVarDirective\r\n ]\r\n})\r\nexport class DefaultModule { }\r\n","import { Menu } from \"../../components/drawer/menu\";\r\n\r\nexport class RouteCacheService {\r\n private cachedData: Menu[] | null = null;\r\n\r\n getCachedData(): Menu[] {\r\n return this.cachedData;\r\n }\r\n\r\n setCachedData(data: Menu[]): void {\r\n this.cachedData = data;\r\n }\r\n\r\n isDataCached(): boolean {\r\n return this.cachedData != null;\r\n }\r\n}","import { Observable, tap, share, finalize } from 'rxjs';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { RouteCacheService } from './route.cache.service';\r\nimport { Menu } from '../../components/drawer/menu';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class RouteProviderService {\r\n\r\n loadFrom: Observable<Menu[]> | Menu[] = [];\r\n private routeCacheService: RouteCacheService = new RouteCacheService();\r\n private loading$: Observable<Menu[]> | null = null;\r\n\r\n constructor(\r\n ) { }\r\n\r\n resolver: Promise<Menu[]>\r\n\r\n GetData(): Observable<Menu[]> {\r\n // If a request is already in progress, return that Observable\r\n if (this.loading$) {\r\n return this.loading$;\r\n }\r\n\r\n if(Array.isArray(this.loadFrom)){\r\n this.routeCacheService.setCachedData(this.loadFrom);\r\n }\r\n\r\n const cachedData = this.routeCacheService.getCachedData();\r\n\r\n if (cachedData) {\r\n return new Observable(observer => {\r\n observer.next(cachedData);\r\n observer.complete();\r\n });\r\n } else {\r\n // Store the loading Observable and make sure to reset it when it completes\r\n this.loading$ = (this.loadFrom as Observable<Menu[]>).pipe(\r\n tap(data => this.routeCacheService.setCachedData(data)),\r\n finalize(() => this.loading$ = null),\r\n share() // Share the same subscription with multiple subscribers\r\n );\r\n \r\n return this.loading$;\r\n }\r\n }\r\n}\r\n","import { ActivatedRoute, RouterLinkWithHref } from '@angular/router';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nimport { RouteProviderService } from '../../services/route/route.provider.service';\r\nimport { EnvironmentService } from '../../services/environment.service';\r\nimport { LoadingComponent } from '../loading/loading.component';\r\nimport { GenericService } from '../../services/generics.service';\r\nimport { InputsModule } from '../inputs/inputs.module';\r\nimport { Menu } from '../drawer/menu';\r\n\r\n/** Pagina Default - mostra os botões de rotas horizontalmente - componente padrão */\r\n@Component({\r\n standalone: true,\r\n selector: 'app-default',\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n IonicModule,\r\n InputsModule,\r\n RouterLinkWithHref,\r\n LoadingComponent,\r\n TranslateModule,\r\n ],\r\n templateUrl: './default.page.html',\r\n styleUrls: ['./default.page.scss'],\r\n})\r\nexport class DefaultPage implements OnInit {\r\n \r\n useTranslation: boolean = false;\r\n TranslationModule: any = {\r\n Permissao : 'Entities.Permissao.',\r\n PermissaoGrupo: 'Entities.PermissaoGrupo.'\r\n };\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private coreService: EnvironmentService,\r\n private genericService: GenericService,\r\n private routeProviderService: RouteProviderService \r\n ) { \r\n }\r\n \r\n title: string = this.coreService.environment.applicationName;\r\n loading: boolean;\r\n lstMenu: Menu[] = [] \r\n configuration: DefaultPageConfiguration | null = null;\r\n async ngOnInit(): Promise<void> {\r\n this.loading = true;\r\n this.configuration = await firstValueFrom(this.route.data) as DefaultPageConfiguration;\r\n this.lstMenu = await firstValueFrom(this.routeProviderService.GetData());\r\n this.loading = false;\r\n }\r\n\r\n SetTitle(item: Menu){\r\n this.genericService.SetTitle(item.title);\r\n }\r\n}\r\n\r\nexport class DefaultPageConfiguration{\r\n constructor(\r\n public image: DefaultPageImage | null = null,\r\n public useTranslation: boolean = false\r\n ){\r\n }\r\n}\r\n\r\nexport class DefaultPageImage {\r\n constructor(\r\n public src: string | null = null,\r\n public classes: string = ''\r\n ){}\r\n}\r\n","<ion-content [fullscreen]=\"true\">\r\n <div class=\"wrapper\">\r\n <ion-breadcrumbs>\r\n <ion-breadcrumb [routerLink]=\"[null]\">\r\n <ion-icon slot=\"start\" name=\"home\"></ion-icon> Inicio\r\n </ion-breadcrumb>\r\n </ion-breadcrumbs>\r\n \r\n <ion-card>\r\n <ion-card-content class=\"flex flex-col items-center justify-center !p-8\">\r\n <div class=\"w-full shrink-0 text-center\">\r\n @if(configuration?.image){\r\n <ion-img [class]=\"configuration.image.classes\" [src]=\"configuration.image.src\" (ion-error)=\"configuration.image = null\"></ion-img>\r\n }\r\n @else {\r\n <ion-text class=\"text-8xl font-poppins w-full\"> {{title}} </ion-text>\r\n }\r\n </div>\r\n <div class=\"!overflow-y-auto w-full portrait:grow relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\"></loading>\r\n <div class=\"flex flex-wrap items-start justify-start mt-4 portrait:!grid portrait:!grid-cols-1\"> \r\n @for (item of lstMenu; track item; let i = $index) {\r\n @if(item.type == \"Menu\"){\r\n <ion-button fill=\"outline\" class=\"mx-1 mt-2 flex-grow shrink-0\" [routerLink]=\"[item.route]\">\r\n <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n {{useTranslation ? (TranslationModule.Permissao + item.id | translate) : item.title}}\r\n </ion-button>\r\n }\r\n @if(item.type == \"MenuGroup\"){\r\n <ion-button fill=\"outline\" class=\"mx-1 mt-2 flex-grow shrink-0\" (click)=\"popover.present($event)\">\r\n <ion-icon slot=\"start\" [name]=\"item.icon\"></ion-icon> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-button>\r\n <ion-popover #popover class=\"overflow-y-auto\" [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-list class=\"no-outer-border\">\r\n <ion-item class=\"bg-transparent\" (click)=\"SetTitle(menu)\" *ngFor=\"let menu of item.lstMenu\" [routerLink]=\"['./' + menu.route]\" lines=\"none\" detail=\"false\" routerLinkActive=\"selected\">\r\n <ion-icon [name]=\"menu.icon\" slot=\"start\"></ion-icon> \r\n <ion-label> \r\n {{useTranslation ? (TranslationModule.Permissao + menu.id | translate) : menu.title}} \r\n </ion-label>\r\n </ion-item>\r\n </ion-list>\r\n </ng-template>\r\n </ion-popover>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</ion-content>","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n selector: 'drag-drop-overlay',\r\n templateUrl: './drag-drop-overlay.component.html',\r\n styleUrls: ['./drag-drop-overlay.component.scss'],\r\n})\r\nexport class DragDropOverlayComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n fileOver: boolean;\r\n}\r\n","<div class=\"absolute top-0 left-0 size-full z-50 p-4 pointer-events-none\" [ngClass]=\"{'fileOver': fileOver}\">\r\n <div class=\"border-4 border-dashed border-transparent default-transition rounded-2xl size-full flex items-center justify-center\">\r\n <ion-icon class=\"text-9xl text-transparent\" name=\"cloud-upload\"></ion-icon>\r\n </div>\r\n</div>","import { ContentChild, Directive, ViewChild } from '@angular/core';\r\nimport { Output, EventEmitter, HostBinding, HostListener } from '@angular/core';\r\nimport { DragDropOverlayComponent } from './drag-drop-overlay/drag-drop-overlay.component';\r\n\r\n@Directive({\r\n selector: '[DragDropFile]'\r\n})\r\nexport class DragDropFileDirective {\r\n\r\n constructor() { }\r\n\r\n @HostBinding('class.fileOver') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<File[]>();\r\n\r\n @ContentChild(DragDropOverlayComponent) dragDropOverlay: DragDropOverlayComponent \r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt: DragEvent) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n this.dragDropOverlay.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: DragEvent) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n this.dragDropOverlay.fileOver = false;\r\n }\r\n \r\n // Drop listener\r\n @HostListener('drop', ['$event']) public onDrop(evt: DragEvent) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n this.dragDropOverlay.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(Array.from(files));\r\n }\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DragDropFileDirective } from './drag-drop-file.directive';\r\nimport { DragDropOverlayComponent } from './drag-drop-overlay/drag-drop-overlay.component';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nconst values = [\r\n DragDropFileDirective,\r\n DragDropOverlayComponent\r\n]\r\n\r\n\r\n@NgModule({\r\n declarations: [ ...values ],\r\n exports : [ ...values ],\r\n imports: [\r\n CommonModule,\r\n IonicModule\r\n ]\r\n})\r\nexport class DragDropFileModule { }\r\n","import { Component, Input, OnInit } from '@angular/core';\r\nimport { RouterLinkWithHref } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AuthService } from '../../../services/auth.service';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n RouterLinkWithHref,\r\n ],\r\n selector: 'default-drawer-end',\r\n templateUrl: './default-drawer-end.component.html',\r\n styleUrls: ['./default-drawer-end.component.scss'],\r\n})\r\nexport class DefaultDrawerEndComponent implements OnInit {\r\n\r\n constructor(\r\n public authService: AuthService\r\n ) { }\r\n\r\n @Input() colapsed: boolean = false;\r\n\r\n Token: any;\r\n ngOnInit(): void {\r\n this.authService.LoadToken().then((res) => {\r\n this.Token = res;\r\n })\r\n }\r\n\r\n\r\n Loggout(): void { this.authService.Loggout(); }\r\n}\r\n","<div class=\"mt-1 w-full default-transition flex p-3\" [ngClass]=\"{'!w-16': colapsed}\">\r\n <div class=\"w-10 shrink-0 aspect-square rounded-2xl flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n <span>{{Token ? Token.Nome : ''}}</span>\r\n </div>\r\n\r\n <ion-button (click)=\"Loggout()\" class=\"size-10 shrink-0\" size=\"small\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></ion-icon> \r\n </ion-button>\r\n</div>","\r\nexport class Menu{\r\n id: number;\r\n route: string | null;\r\n icon : string | null;\r\n title: string;\r\n lstMenu: Menu[];\r\n type: 'Menu' | 'MenuGroup'\r\n constructor(type: 'Menu' | 'MenuGroup', title: string, icon : string | null, lstMenu: Menu[] = [], route: string | null = null){\r\n this.type = type; \r\n this.title = title;\r\n this.route = route;\r\n if(icon){\r\n this.icon = icon;\r\n }else{\r\n this.icon = \"layers\";\r\n }\r\n this.lstMenu = lstMenu;\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, QueryList, ViewChildren } from '@angular/core';\r\nimport { IonAccordion, IonAccordionGroup, IonicModule, NavController } from '@ionic/angular';\r\nimport { Menu } from '.././menu';\r\nimport { Router } from '@angular/router';\r\nimport { GenericService } from '../../../services/generics.service';\r\nimport { NgVarDirective } from '../../../directives/ng-var.directive';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule, IonicModule, NgVarDirective, TranslateModule],\r\n selector: 'drawer-group',\r\n templateUrl: './drawer-group.component.html',\r\n styleUrls: ['./drawer-group.component.scss'],\r\n})\r\nexport class DrawerGroupComponent implements OnInit {\r\n\r\n TranslationModule: any = {\r\n Permissao : 'Entities.Permissao.',\r\n PermissaoGrupo: 'Entities.PermissaoGrupo.'\r\n };\r\n @Input() MenuGroup: Menu;\r\n @Input() colapsed: boolean;\r\n @Input() useTranslation: boolean;\r\n\r\n constructor(\r\n public router: Router,\r\n private navController: NavController,\r\n private genericService: GenericService\r\n ) { }\r\n\r\n ngOnInit() {}\r\n\r\n HandleNav(item: Menu | any){\r\n this.SetTitle(item);\r\n this.navController.navigateRoot('/' + item.route);\r\n }\r\n SetTitle(item: Menu){\r\n this.genericService.SetTitle(item.title);\r\n }\r\n\r\n @ViewChildren(IonAccordionGroup) lstIonAcordionGroup: QueryList<IonAccordion>\r\n}\r\n","<div class=\"w-full text-center mb-2\">\r\n <ion-item class=\"bg-inactive bg-active\" lines=\"none\" style=\"--border-radius: 1rem\">\r\n <ion-label class=\"text-center\">\r\n <ion-icon class=\"text-2xl\" [name]=\"MenuGroup.icon\"></ion-icon> <br>\r\n <ion-text class=\"text-lg\">\r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + MenuGroup.id | translate) : MenuGroup.title}} \r\n </ion-text>\r\n </ion-label>\r\n </ion-item>\r\n</div>\r\n\r\n<div class=\"grid gap-2 w-full overflow-hidden\">\r\n @for (mGroup of MenuGroup.lstMenu; track $index) {\r\n <!-- Menu -->\r\n @if(mGroup.type == \"Menu\"){\r\n <ion-item \r\n class=\"bg-inactive\" lines=\"none\" \r\n (click)=\"HandleNav(mGroup)\"\r\n [ngClass]=\"{'colapsed': colapsed, 'bg-active' : router.isActive('/' + mGroup.route, false)}\">\r\n <ion-icon slot=\"start\" [name]=\"mGroup.icon\"></ion-icon>\r\n <ion-label class=\"ion-text-nowrap\">\r\n {{useTranslation ? (TranslationModule.Permissao + mGroup.id | translate) : mGroup.title}} \r\n </ion-label>\r\n </ion-item>\r\n } \r\n @else if (mGroup.type == \"MenuGroup\") {\r\n <!-- MenuGroup -->\r\n <div class=\"w-full overflow-hidden\">\r\n <ion-accordion-group class=\"ion-text-nowrap w-full\">\r\n <ion-accordion class=\"bg-transparent\" [value]=\"mGroup\">\r\n <ion-item slot=\"header\" color=\"light\" class=\"ion-text-nowrap bg-inactive\" style=\"--ion-color-base: var(--background) !important\">\r\n <ion-icon slot=\"start\" [name]=\"mGroup.icon\"></ion-icon>\r\n <ion-label>\r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + mGroup.id | translate) : mGroup.title}}\r\n </ion-label>\r\n </ion-item>\r\n <div slot=\"content\">\r\n <div class=\"pl-8\">\r\n <div class=\"w-full border-l-2 border-solid rounded-bl-2xl grid gap-2 pl-2 py-2\" style=\"border-color: color-mix(in srgb, var(--ion-color-primary) 30%, transparent 70%)\">\r\n @for (mMenu of mGroup.lstMenu; track $index) {\r\n @if (mMenu.type == \"Menu\") {\r\n <ion-item \r\n class=\"bg-inactive\" lines=\"none\" \r\n (click)=\"HandleNav(mMenu)\"\r\n [ngClass]=\"{'colapsed': colapsed, 'bg-active' : router.isActive('/' + mMenu.route, false)}\">\r\n <ion-icon slot=\"start\" [name]=\"mMenu.icon\"></ion-icon>\r\n <ion-label class=\"ion-text-nowrap\">\r\n {{useTranslation ? (TranslationModule.Permissao + mMenu.id | translate) : mMenu.title}}\r\n </ion-label>\r\n </ion-item>\r\n }\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n </ion-accordion>\r\n </ion-accordion-group>\r\n </div>\r\n }\r\n }\r\n</div>\r\n","import { Component, computed, effect, EventEmitter, input, Input, InputSignal, Output, Signal } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { Menu } from './menu';\r\n\r\nimport { DrawerGroupComponent } from './drawer-group/drawer-group.component';\r\nimport { LoadingComponent } from '../../components/loading/loading.component';\r\nimport { GenericService } from '../../services/generics.service';\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n LoadingComponent,\r\n DrawerGroupComponent,\r\n TranslateModule\r\n ],\r\n selector: 'drawer',\r\n templateUrl: './drawer.component.html',\r\n styleUrls: ['./drawer.component.scss'],\r\n})\r\nexport class DrawerComponent {\r\n\r\n TranslationModule: any = {\r\n Permissao : 'Entities.Permissao.',\r\n PermissaoGrupo: 'Entities.PermissaoGrupo.'\r\n };\r\n\r\n @Input() loading: boolean = true;\r\n lstMenu: InputSignal<Menu[]> = input<Menu[]>() \r\n lstFlattenMenu: Signal<Menu[]> = computed(() => { return FlattenMenus(this.lstMenu()) });\r\n\r\n @Input() colapsed: boolean = false; \r\n @Output() colapsedChange: EventEmitter<boolean> = new EventEmitter<boolean>; \r\n @Input() title: string;\r\n @Input() useTranslation: boolean = false;\r\n \r\n constructor(\r\n private genericService: GenericService,\r\n ) { \r\n effect(() => {\r\n //Handle Menu Title\r\n const lstFlat = this.lstFlattenMenu();\r\n const currentMenu = lstFlat.find(p => window.location.pathname.includes('/' + p.route));\r\n const group: Menu | null = FindMenuParent(this.lstMenu(), currentMenu);\r\n if(group){\r\n this.CurrentGroupActive = group;\r\n }\r\n else{\r\n this.CurrentGroupActive = this.lstMenu()[0];\r\n }\r\n });\r\n }\r\n CurrentGroupActive: Menu = null;\r\n\r\n ToggleCollapsed(){\r\n this.colapsedChange.emit(!this._enterColapsed);\r\n this._enterColapsed = false;\r\n }\r\n\r\n _enterColapsed: boolean = false;\r\n onMouseEnter(){\r\n if(this.colapsed){\r\n this._enterColapsed = true;\r\n this.colapsedChange.emit(false);\r\n }\r\n }\r\n onMouseLeave(){\r\n if(this._enterColapsed){\r\n this._enterColapsed = false;\r\n this.colapsedChange.emit(true);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Flattens a hierarchical Menu[] structure into a single array\r\n * containing all Menu items from the original array and all nested items\r\n * @param menus The array of Menu items to flatten\r\n * @returns A flattened array containing all Menu items\r\n */\r\nfunction FlattenMenus(menus: Menu[]): Menu[] {\r\n const result: Menu[] = [];\r\n \r\n function addMenuItems(items: Menu[]) {\r\n for (const menu of items) {\r\n // Add current menu to result\r\n result.push(menu);\r\n \r\n // Process nested menus if they exist\r\n if (menu.lstMenu && menu.lstMenu.length > 0) {\r\n addMenuItems(menu.lstMenu);\r\n }\r\n }\r\n }\r\n \r\n addMenuItems(menus);\r\n return result;\r\n}\r\n\r\nfunction FindMenuParent(menus: Menu[], targetMenu: Menu): Menu | null {\r\n for (const menu of menus) {\r\n // Check if current menu has the target in its direct children\r\n if (menu.lstMenu && menu.lstMenu.some(m => m === targetMenu)) {\r\n return menu;\r\n }\r\n \r\n // Search deeper in the hierarchy\r\n if (menu.lstMenu && menu.lstMenu.length > 0) {\r\n const parent = FindMenuParent(menu.lstMenu, targetMenu);\r\n if (parent) {\r\n return parent;\r\n }\r\n }\r\n }\r\n \r\n return null;\r\n}","<div class=\"absolute left-0 top-0 h-full w-[19rem] flex flex-col bg-light\" (mouseenter)=\"onMouseEnter()\" (mouseleave)=\"onMouseLeave()\">\r\n <div class=\"w-full px-2 h-14 pt-2 flex justify-between items-center text-3xl text-center\">\r\n <ion-button id=\"drawer-button\" class=\"shrink-0 portrait:hidden aspect-square h-12 z-10 default-transition m-0\" size=\"small\" fill=\"outline\" color=\"dark\" style=\"--border-radius: 999rem; --border-width: 0;\" (click)=\"ToggleCollapsed()\"> \r\n <ion-icon name=\"menu\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <div class=\"size-full\">\r\n @if (!ref.children.length) {\r\n <ion-text class=\"size-full flex items-center justify-center default-transition z-0\" [ngClass]=\"{'opacity-0 -translate-x-1/2': colapsed }\"> \r\n {{title}}\r\n </ion-text>\r\n }\r\n <div #ref class=\"size-full flex items-center justify-center\">\r\n <ng-content select=\"[slot=logo]\"></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div id=\"menu-conteiner\" class=\"mask-y flex flex-col relative\">\r\n <loading [type]=\"3\" [loading]=\"loading\" text=\"\"></loading>\r\n <div class=\"size-full shrink flex\">\r\n <div class=\"h-full w-16 p-2 shrink-0\">\r\n <div class=\"grid gap-2\">\r\n @for (item of lstMenu(); track $index) {\r\n <ion-item \r\n id=\"group-menu\" [title]=\"item.title\" class=\"bg-inactive relative overflow-visible\" lines=\"none\" style=\"--padding-start: 0;\"\r\n (click)=\"CurrentGroupActive = item\" \r\n [ngClass]=\"{'bg-active': CurrentGroupActive == item}\"\r\n >\r\n <div id=\"tooltip\" class=\"opacity-0 !pointer-events-none -translate-x-4 absolute top-0 bottom-0 default-transition left-14 px-2 my-auto text-nowrap h-8 bg-[var(--ion-color-secondary)] -z-30 rounded-xl flex items-center justify-center\">\r\n <div class=\"absolute -left-1 top-0 rounded bottom-0 my-auto rotate-45 h-4 aspect-square bg-[var(--ion-color-secondary)]\"></div>\r\n <ion-icon class=\"z-50 mr-2\" [name]=\"item.icon\"></ion-icon>\r\n <ion-text class=\"z-50\"> \r\n {{useTranslation ? (TranslationModule.PermissaoGrupo + item.id | translate) : item.title}}\r\n </ion-text>\r\n </div>\r\n <div class=\"absolute top-0 size-full flex items-center justify-center overflow-visible\">\r\n <ion-icon class=\"text-2xl\" [name]=\"item.icon\"></ion-icon>\r\n </div>\r\n </ion-item>\r\n }\r\n </div>\r\n </div>\r\n <div class=\"h-full w-full border-dashed border-l relative\" style=\"border-color: color-mix(in srgb, var(--ion-color-dark) 20%, transparent 80%);\">\r\n @for (mGroup of lstMenu(); track $index) {\r\n <div class=\"absolute top-0 left-0 px-2 py-2 size-full default-transition opacity-0 translate-x-full z-0 mask-y overflow-y-auto\" [ngClass]=\"{'opacity-100 !translate-x-0': CurrentGroupActive == mGroup}\">\r\n <drawer-group [MenuGroup]=\"mGroup\" [useTranslation]=\"useTranslation\" [colapsed]=\"colapsed\"></drawer-group>\r\n </div>\r\n }\r\n </div>\r\n </div> \r\n\r\n <div class=\"shrink-0 w-full\">\r\n <ng-content select=\"[slot=drawer]\"></ng-content>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, effect, EventEmitter, Input, model, ModelSignal, Output } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport moment from 'moment';\r\n\r\nimport { InputSelectConfiguration } from '../inputs/input-select/input.select.configuration';\r\nimport { ComparisonValueType } from '../../classes/comparison/comparison-value-type';\r\nimport { ComparisonOperator } from '../../classes/comparison/comparison-operator';\r\nimport { InputsModule } from '../inputs/inputs.module';\r\nimport { Comparison } from '../../classes/comparison/comparison';\r\nimport { InputType } from '../inputs/input-type';\r\nimport { Utils } from '../../services/utils.service';\r\n\r\nimport { InputCurrencyConfiguration, InputDecimalConfiguration, InputNumberConfiguration } from '../inputs/input-decimal/input-decimal.configuration';\r\nimport { InputStringConfiguration } from '../inputs/input-string/input-string.configuration';\r\nimport { InputDateConfiguration } from '../inputs/input-date/input-date.configuration';\r\nimport { InputFileConfiguration } from '../inputs/input-file/input-file.configuration';\r\nimport { InputBoolConfiguration } from '../inputs/input-bool/input-bool.configuration';\r\nimport { InputConfiguration } from '../inputs/input-configuration';\r\n\r\n/** Componente padrão de filtro */\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule, IonicModule, InputsModule, ReactiveFormsModule, FormsModule],\r\n selector: 'filter',\r\n templateUrl: './filter.component.html',\r\n styleUrls: ['./filter.component.scss'],\r\n\r\n})\r\nexport class FilterComponent {\r\n\r\n /** Label do input */\r\n @Input() label: string;\r\n /** Filtro que sera utilizado na pesquisa (usando two way data binding) */\r\n filter: ModelSignal<Comparison> = model<Comparison>();\r\n\r\n /** Tipo de input do filtro */\r\n @Input() type: InputType;\r\n \r\n guid: string = Utils.GenerateGUID();\r\n \r\n /** Configuração input do filtro */\r\n _configuration: InputConfiguration | null = null;\r\n configuration: ModelSignal<InputConfiguration | null> = model<InputConfiguration | null>(null);\r\n\r\n constructor() { \r\n effect(() => {\r\n if([InputType.Date, InputType.DateTime].includes(this.type)){ \r\n this.model = moment(this.filter().value).format(\"YYYY-MM-DDTHH:mm:ss\");\r\n this.filter().value = this.model;\r\n }\r\n this.SetConfiguration();\r\n })\r\n }\r\n\r\n get index() { return this.filter().propertyName; }\r\n\r\n SetConfiguration() {\r\n if(!this.configuration()){\r\n if([InputType.Date, InputType.DateTime, InputType.Time].includes(this.type)){ \r\n this._configuration = new InputDateConfiguration(true) } else\r\n if(this.type == InputType.File ){ this._configuration = new InputFileConfiguration() } else\r\n if(this.type == InputType.Number ){ this._configuration = new InputNumberConfiguration() } else\r\n if(this.type == InputType.Decimal ){ this._configuration = new InputDecimalConfiguration() } else\r\n if(this.type == InputType.Currency){ this._configuration = new InputCurrencyConfiguration() } else\r\n if(this.type == InputType.String ){ this._configuration = new InputStringConfiguration() } else\r\n if(this.type == InputType.Select ){ this._configuration = new InputSelectConfiguration() } else\r\n if(this.type == InputType.TextArea){ this._configuration = new InputStringConfiguration(); } else \r\n if(this.type == InputType.Bool ){ this._configuration = new InputBoolConfiguration(); }\r\n }\r\n\r\n if(this.configuration() && this.configuration() instanceof InputSelectConfiguration){\r\n this._configuration = new InputSelectConfiguration(\r\n this.configuration().bindValue,\r\n this.configuration().bindLabel,\r\n true,\r\n true,\r\n this.configuration().loadFrom,\r\n true,\r\n );\r\n }\r\n\r\n if(this.configuration() instanceof InputDateConfiguration){\r\n this._configuration = new InputDateConfiguration(true);\r\n }\r\n\r\n if(this.type == InputType.Bool){\r\n if(this.index == \"ativo\"){\r\n this._configuration = new InputSelectConfiguration('value', 'label', true, true, [\r\n { label: 'Somente Ativos' , value: true },\r\n { label: 'Somente Não Ativos', value: false },\r\n ]);\r\n this.model = true;\r\n }\r\n else{\r\n this._configuration = new InputSelectConfiguration('value', 'label', true, false, [\r\n { label: 'Sim', value: true },\r\n { label: 'Não', value: false },\r\n ]);\r\n }\r\n }\r\n }\r\n\r\n isFilterActive: boolean = false;\r\n\r\n model: any | null = null;\r\n /** Evento emitido quando o valor do filtro muda */\r\n @Output('change') changeEmitter: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n Change(): void{\r\n if(this.model){\r\n if(this.type == InputType.Date && (\r\n this.filter().operator == ComparisonOperator.LessThan || \r\n this.filter().operator == ComparisonOperator.LessThanOrEqual)\r\n )\r\n { \r\n this.model = this.FormatDateModel(moment(this.model).endOf(\"day\").toISOString());\r\n }\r\n }\r\n this.filter().value = this.model;\r\n this.filter.set(this.filter());\r\n this.changeEmitter.emit();\r\n }\r\n\r\n FormatDateModel(model: string): string{\r\n return moment(model).format(\"YYYY-MM-DDTHH:mm:ss\");\r\n }\r\n}\r\n","@if(_configuration){\r\n @switch (type) {\r\n @case ('String') {\r\n <input-string [(ngModel)]=\"model\" [label]=\"label\" (blur)=\"Change()\"></input-string>\r\n }\r\n @case ('Number') {\r\n <input-number (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-number>\r\n }\r\n @case ('Decimal') {\r\n <input-decimal (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-decimal>\r\n }\r\n @case ('Currency') {\r\n <input-currency (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-currency>\r\n }\r\n @case ('Select') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" [label]=\"label\" [configuration]=\"_configuration\"></input-select>\r\n }\r\n @case ('TextArea') {\r\n <input-string (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" [label]=\"label\"></input-string>\r\n }\r\n @case ('Bool') {\r\n <input-select (change)=\"Change()\" [(ngModel)]=\"model\" class=\"th-select\" [label]=\"label\" placeholder=\"\" [configuration]=\"_configuration\"></input-select>\r\n }\r\n @case ('Date') {\r\n <input-date (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-date>\r\n }\r\n @case ('DateTime') {\r\n <input-date-time (change)=\"Change()\" [(ngModel)]=\"model\" [label]=\"label\" [configuration]=\"_configuration\"></input-date-time>\r\n }\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { RouterLink } from '@angular/router';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n selector: 'forbidden-403',\r\n standalone: true,\r\n imports: [CommonModule, IonicModule, RouterLink],\r\n templateUrl: './forbidden-403.component.html',\r\n styleUrls: ['./forbidden-403.component.scss'],\r\n})\r\nexport class Forbidden403Component implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {}\r\n\r\n}\r\n","<div class=\"bg-white size-full\">\r\n <div class=\"relative flex flex-col items-center justify-center min-h-screen overflow-hidden\">\r\n <div class=\"absolute inset-0 w-full h-full bg-gradient-to-br from-red-500 to-red-900 animate-gradient-fade\"></div>\r\n \r\n <ion-card class=\"m-0 max-w-md\">\r\n <ion-card-content class=\"size-full bg-light/10 p-8 flex flex-col items-center justify-center text-center space-y-6\">\r\n <div class=\"p-3 rounded-full relative translucid-border\">\r\n <div class=\"size-12 flex items-center justify-center\">\r\n <ion-icon class=\"text-5xl text-white/70\" name=\"shield-outline\"></ion-icon>\r\n </div>\r\n \r\n \r\n <div class=\"absolute -inset-1 rounded-full bg-gradient-to-r from-rose-400 to-pink-500 opacity-25 blur-sm\"></div>\r\n </div>\r\n \r\n <ion-text class=\"text-4xl font-bold tracking-tight text-white/70\">\r\n Acesso Negado\r\n </ion-text>\r\n \r\n <ion-text color=\"light\" class=\"text-white/70\">\r\n Você não tem permissão para acessar este recurso. Por favor, entre em contato com o administrador se acreditar que isso é um erro.\r\n </ion-text>\r\n \r\n <div class=\"flex flex-col sm:flex-row gap-4 mt-4\">\r\n <ion-button [routerLink]=\"['/']\" color=\"danger\" class=\"text-red-600 px-4 py-2 rounded-md font-medium\">\r\n <ion-icon name=\"chevron-back\" slot=\"start\"></ion-icon>\r\n Retornar a navegação\r\n </ion-button>\r\n </div>\r\n \r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n</div>\r\n ","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [ IonicModule, CommonModule ],\r\n selector: 'info-popover',\r\n templateUrl: './info-popover.component.html',\r\n styleUrls: ['./info-popover.component.scss'],\r\n})\r\nexport class InfoPopoverComponent implements OnInit {\r\n\r\n @Output('OnClick') clickEventEmitter: EventEmitter<void> = new EventEmitter<void>()\r\n\r\n @Input() button: boolean = false;\r\n @Input() fill: string = 'solid';\r\n @Input('position') _position: string = 'relative';\r\n position: string = '';\r\n\r\n SetPositionClass(){\r\n switch(this._position){\r\n case('relative'): {\r\n this.position = \"relative\"; \r\n }\r\n break;\r\n case('top-right'):{\r\n this.position = \"absolute top-3 right-3\"; \r\n }\r\n break;\r\n case('right'):{\r\n this.position = \"absolute top-1/2 bottom 1/2 right-3\"; \r\n }\r\n break;\r\n case('bottom-right'):{\r\n this.position = \"absolute bottom-3 right-3\"; \r\n }\r\n break;\r\n case('top'):{\r\n this.position = \"absolute top-3 right-1/2 left-1/2\"; \r\n }\r\n break;\r\n case('bottom'):{\r\n this.position = \"absolute left-1/2 right-1/2 bottom-3\"; \r\n }\r\n break;\r\n case('left'):{\r\n this.position = \"absolute top-1/2 bottom-1/2 left-3\"; \r\n }\r\n break;\r\n case('top-left'):{\r\n this.position = \"absolute top-3 left-3\"; \r\n }\r\n break;\r\n case('bottom-left'):{\r\n this.position = \"absolute bottom-3 left-3\"; \r\n }\r\n break;\r\n case('center'):{\r\n this.position = \"absolute top-1/2 bottom-1/2 left-1/2 right-1/2\"; \r\n }\r\n break;\r\n }\r\n }\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.SetPositionClass();\r\n }\r\n\r\n ClickEvent(){\r\n this.clickEventEmitter.emit();\r\n }\r\n}\r\n","<div class=\"min-w-fit min-h-fit {{position}}\">\r\n <ion-button [fill]=\"fill\" size=\"small\" class=\"size-8 m-0\" (click)=\"button ? popover.present($event) : null\" (mouseenter)=\"!button ? popover.present($event) : null\">\r\n <ion-icon slot=\"icon-only\" name=\"help\"></ion-icon>\r\n </ion-button>\r\n \r\n <ion-popover #popover triggerAction=\"hover\">\r\n <ng-template>\r\n <ion-content class=\"ion-padding\">\r\n <div class=\"w-56 text-sm\">\r\n <ng-content></ng-content>\r\n </div>\r\n \r\n @if (button) {\r\n <div class=\"w-56 h-8 flex items-center justify-center mt-3\">\r\n <ion-text class=\"cursor-pointer\" color=\"primary\" (click)=\"ClickEvent()\">\r\n <ion-icon class=\"align-sub\" name=\"information-circle\"></ion-icon> Clique para saber mais\r\n </ion-text>\r\n </div>\r\n }\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n</div>","import { InputDecimalConfiguration, InputNumberConfiguration } from \"./input-decimal/input-decimal.configuration\";\r\n\r\nexport class InputsDefaultConfigurations {\r\n static readonly configurationDecimalPercentage: InputDecimalConfiguration = new InputDecimalConfiguration(2, null, '%');\r\n static readonly configurationDecimalDegree : InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"°C\");\r\n static readonly configurationDecimalM3H : InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"m³/h\");\r\n static readonly configurationDecimalMeters : InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"m\");\r\n static readonly configurationDecimalMilimeters: InputDecimalConfiguration = new InputDecimalConfiguration(2, null, \"mm\");\r\n\r\n static readonly configurationNumberPercentage: InputNumberConfiguration = new InputNumberConfiguration(null, '%');\r\n static readonly configurationNumberDegree : InputNumberConfiguration = new InputNumberConfiguration(null, \"°C\");\r\n static readonly configurationNumberM3H : InputNumberConfiguration = new InputNumberConfiguration(null, \"m³/h\");\r\n static readonly configurationNumberMeters : InputNumberConfiguration = new InputNumberConfiguration(null, \"m\");\r\n static readonly configurationNumberMilimeters: InputNumberConfiguration = new InputNumberConfiguration(null, \"mm\");\r\n}","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class ControlError {\r\n constructor(public message: string){}\r\n}\r\n\r\nexport class FormValidators{\r\n static readonly CPFError : ControlError = new ControlError(\"CPF incompleto\");\r\n static readonly CnpjError : ControlError = new ControlError(\"CNPJ incompleto\");\r\n static readonly CPFCnpjError: ControlError = new ControlError(\"CPF / CNPJ incompleto\");\r\n static CPFValidator(control: AbstractControl): ControlError | null {\r\n if(control.value != null){\r\n if(control.value.length != 11){ return FormValidators.CPFError; }\r\n return null;\r\n }\r\n return FormValidators.CPFError;\r\n } \r\n static CnpjValidator(control: AbstractControl): ControlError | null {\r\n if(control.value != null){\r\n if(control.value.length != 14){ return FormValidators.CnpjError; }\r\n return null;\r\n }\r\n return FormValidators.CnpjError;\r\n } \r\n static CPFCpnjValidator(control: AbstractControl): ControlError | null {\r\n if(control.value != null){\r\n if(control.value.length < 11){\r\n return FormValidators.CPFError;\r\n }else\r\n if(control.value.length > 11 && control.value.length != 14){ \r\n return FormValidators.CnpjError;\r\n }\r\n return null;\r\n }\r\n return null;\r\n } \r\n\r\n static readonly PositiveNonZeroNumberError: ControlError = new ControlError(\"%fieldName% deve ser maior que 0!\");\r\n static PositiveNonZeroNumberValidator(fieldName: string): (control: AbstractControl) => ControlError | null {\r\n return ((control: AbstractControl): ControlError | null => {\r\n const Error = FormValidators.PositiveNonZeroNumberError.message.replace(\"%fieldName%\", fieldName);\r\n if(control.value != null){\r\n if(control.value <= 0){ return new ControlError(Error); }\r\n return null;\r\n }\r\n return new ControlError(Error);;\r\n })\r\n }\r\n\r\n static readonly PositiveNumberError: ControlError = new ControlError(\"%fieldName% deve ser maior ou igual que 0!\");\r\n static PositiveNumberValidator(fieldName: string): (control: AbstractControl) => ControlError | null {\r\n return ((control: AbstractControl): ControlError | null => {\r\n const Error = FormValidators.PositiveNumberError.message.replace(\"%fieldName%\", fieldName);\r\n if(control.value != null){\r\n if(control.value < 0){ return new ControlError(Error); }\r\n return null;\r\n }\r\n return new ControlError(Error); \r\n })\r\n }\r\n\r\n static readonly ValueBetweenError = new ControlError(\"%fieldName% deve ser maior ou igual a %min% e menor ou igual a %max%\");\r\n static ValueBetweenValidator(min: number, max: number, fieldName: string, equalMin: boolean = true, equalMax: boolean = true): (control: AbstractControl) => ControlError | null {\r\n return ((control: AbstractControl): ControlError | null => {\r\n const Error = FormValidators.ValueBetweenError.message.replace(\"%fieldName%\", fieldName).replace(\"%min%\", min.toString()).replace(\"%max%\", max.toString());\r\n if(control.value != null){\r\n if(control.value < min && equalMin){ return new ControlError(Error); }else\r\n if(control.value > max && equalMax){ return new ControlError(Error); }else\r\n if(control.value <= min && !equalMin){ return new ControlError(Error); }else\r\n if(control.value >= max && !equalMax){ return new ControlError(Error); }\r\n return null;\r\n }\r\n return new ControlError(Error); \r\n });\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormBuilder, Validators } from '@angular/forms';\r\nimport { NavController } from '@ionic/angular';\r\n\r\nimport { InputStringConfiguration, InputStringType } from '../components/inputs/input-string/input-string.configuration';\r\nimport { ApiUrlProviderService } from '../services/web/api-url-provider.service';\r\nimport { HttpServiceAtivo } from '../services/web/http.ativo.service';\r\nimport { GenericService } from './generics.service';\r\nimport { TableField } from '../classes/inputs/table-field';\r\nimport { InputType } from '../components/inputs/input-type';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UsuarioService extends HttpServiceAtivo {\r\n\r\n public override route: string = \"usuario\"; \r\n public override title: string = \"Usuario\"; \r\n\r\n constructor(\r\n protected override http: HttpClient,\r\n protected override fb: FormBuilder,\r\n protected override genericService: GenericService,\r\n protected override navController : NavController,\r\n protected override apiUrlProviderService : ApiUrlProviderService,\r\n ) { \r\n super(http, fb, genericService, navController, apiUrlProviderService);\r\n }\r\n\r\n override get lstTableFields(){\r\n var lst: TableField[] = [];\r\n\r\n lst[0] = this.defaultId;\r\n lst[1] = new TableField(\"Nome\" , \"nome\" , this.fb.control(null, Validators.required), InputType.String)\r\n lst[2] = new TableField(\"Apelido\", \"apelido\", this.fb.control(null, Validators.required), InputType.String)\r\n lst[3] = new TableField(\"Senha\" , \"senha\" , this.fb.control(null, Validators.required), InputType.String)\r\n lst[3].hiddenView = true;\r\n lst[3].configuration = new InputStringConfiguration(InputStringType.Password);\r\n lst[4] = this.defaultAtivo;\r\n\r\n return lst;\r\n };\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\nimport { ApiUrlProviderService } from '../../../services/web/api-url-provider.service';\r\nimport { UsuarioService } from '../../../services/usuario.service';\r\nimport { AuthService } from '../../../services/auth.service';\r\n\r\nimport { InputsModule } from '../../../components/inputs/inputs.module';\r\nimport { InputSelectConfiguration } from '../../../components/inputs/input-select/input.select.configuration';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n InputsModule\r\n ],\r\n selector: 'login-admin',\r\n templateUrl: './login-admin.component.html',\r\n styleUrls: ['./login-admin.component.scss'],\r\n})\r\nexport class LoginAdminComponent implements OnInit {\r\n\r\n constructor(\r\n public apiUrlProviderService: ApiUrlProviderService,\r\n public authService: AuthService,\r\n private usuarioService: UsuarioService,\r\n ) { }\r\n\r\n idUsuario: number | null;\r\n\r\n async ngOnInit() {\r\n try{\r\n this.idUsuario = (await this.authService.LoadToken()).id;\r\n }catch{}\r\n }\r\n\r\n public selectUserConfiguration: InputSelectConfiguration = new InputSelectConfiguration('id', ((v) => { return v.nome + ' - ' + v.apelido; }), false, true, this.usuarioService);\r\n SelectUser(event: number){\r\n if(event){ this.authService.BypassLogin(event).then(() => window.location.reload() ) }\r\n }\r\n\r\n apiUrl: string = this.apiUrlProviderService.apiUrl;\r\n SetApiUrl(){\r\n this.apiUrlProviderService.apiUrl = this.apiUrl;\r\n }\r\n}\r\n","@if (this.authService.isAdmin || !this.apiUrlProviderService.production) {\r\n <ion-button (click)=\"adminPopover.present($event)\" fill=\"outline\" class=\"aspect-square h-8 z-50\" size=\"small\">\r\n <ion-icon name=\"shield\" slot=\"icon-only\"></ion-icon>\r\n </ion-button>\r\n <ion-popover id=\"admin-popover\" #adminPopover>\r\n <ng-template>\r\n <ion-content class=\"p-2 bg-transparent\">\r\n <div class=\"p-2\">\r\n <input-select\r\n [(ngModel)]=\"idUsuario\"\r\n label=\"Logar como...\"\r\n (change)=\"SelectUser($event)\"\r\n [configuration]=\"selectUserConfiguration\"\r\n ></input-select>\r\n \r\n <div class=\"rounded-2xl mt-2 overflow-hidden border border-primary/30\">\r\n <div class=\"py-2 text-center border-b border-b-medium/30\">\r\n <span class=\"font-poppins\"> API </span>\r\n </div>\r\n <ion-item lines=\"none\" style=\"--border-width: 0 !important;\">\r\n <ion-input [(ngModel)]=\"apiUrl\" (ngModelChange)=\"SetApiUrl()\"></ion-input>\r\n </ion-item>\r\n </div>\r\n </div>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n}","import { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\r\nimport { Component, EventEmitter, HostListener, OnInit, Output, ViewChild } from '@angular/core';\r\nimport { IonicModule, NavController } from '@ionic/angular';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { EnvironmentService } from '../../services/environment.service';\r\nimport { ApiUrlProviderService } from '../../services/web/api-url-provider.service';\r\nimport { GenericService } from '../../services/generics.service';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n IonicModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n ],\r\n selector: 'login',\r\n templateUrl: './login.component.html',\r\n styleUrls: ['./login.component.scss'],\r\n})\r\nexport class DefaultLoginComponent implements OnInit {\r\n\r\n constructor(\r\n private fb: FormBuilder,\r\n private genericService: GenericService,\r\n private navController: NavController,\r\n private authService: AuthService,\r\n public apiUrlProviderService: ApiUrlProviderService,\r\n public coreService: EnvironmentService,\r\n private router: Router\r\n ) { \r\n this.genericService.SetTitle(\"Login\");\r\n }\r\n \r\n async ngOnInit() {\r\n this.CreateForm();\r\n\r\n if(!this.coreService.environment.production){\r\n this.frm.patchValue(this.coreService.environment.defaultCredentials); \r\n }\r\n const Token = await this.authService.LoadToken()\r\n if(this.authService.isTokenValid(Token)){\r\n this.router.navigate([\"/\"]);\r\n }\r\n }\r\n \r\n frm: FormGroup;\r\n CreateForm(): void{\r\n this.frm = this.fb.group({\r\n apelido : [null ,Validators.required],\r\n senha : [null, Validators.required]\r\n });\r\n }\r\n\r\n loading: boolean;\r\n submitted: boolean = false;\r\n\r\n @Output() OnLogin: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n @HostListener('window:keydown', ['$event'])\r\n async Login($event?: KeyboardEvent): Promise<void>{\r\n if($event && $event.key != 'Enter'){ return; }\r\n\r\n this.submitted = true;\r\n this.loading = true;\r\n \r\n if(!this.frm.valid){\r\n this.loading = false;\r\n this.genericService.PresentToast(\"Usuario / Senha não informado!\"); return;\r\n }\r\n\r\n try{\r\n const Token = await this.authService.Login(this.frm.value);\r\n\r\n this.loading = false;\r\n this.navController.navigateRoot(\"/\");\r\n this.genericService.PresentToast(\"Logado com sucesso!\", \"checkmark-circle\");\r\n this.OnLogin.emit(Token);\r\n }\r\n catch (status){\r\n if(status == 401){\r\n this.genericService.PresentToast(\"Usuário / Senha inválido (s)!\");\r\n }else{\r\n this.genericService.PresentToast(\"Ocorreu um erro ao realizar o login!\");\r\n }\r\n this.loading = false;\r\n }\r\n }\r\n}\r\n","<div class=\"size-full flex justify-center items-center relative\">\r\n <div class=\"landscape:w-4/5 portrait:w-full landscape:h-2/3 portrait:h-full landscape:max-w-[60rem] translucid-border landscape:rounded-3xl landscape:backdrop-blur-xl overflow-hidden\">\r\n <div class=\"size-full flex portrait:flex-col\" style=\"background-color: color-mix(in srgb, var(--ion-color-light) 20%, transparent 80%);\">\r\n <div class=\"shrink-0 w-96 portrait:w-full portrait:h-32 h-full p-3\">\r\n <div class=\"rounded-2xl size-full overflow-x-hidden\">\r\n <ng-content class=\"size-full\"></ng-content>\r\n </div>\r\n </div>\r\n <div class=\"grow flex items-center justify-center h-full py-3 pr-3 portrait:pl-3\">\r\n <div class=\"w-96 h-full flex flex-col items-center justify-center\" *ngIf=\"frm\" [formGroup]=\"frm\">\r\n\r\n <ion-text class=\"text-5xl my-10 portrait:mt-[-5rem]\"> Login </ion-text>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\">\r\n <ion-card-content>\r\n <ion-item lines=\"none\" label=\"Senha\" labelPlacement=\"stacked\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"person\" slot=\"start\"></ion-icon>\r\n <ion-input placeholder=\"Usuário / User\" formControlName=\"apelido\"></ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <ion-card class=\"w-full backdrop-blur-xl\"> \r\n <ion-card-content>\r\n <ion-item lines=\"none\" class=\"rounded-2xl my-3 w-full\">\r\n <ion-icon name=\"lock-closed\" slot=\"start\"></ion-icon>\r\n <ion-input type=\"password\" formControlName=\"senha\" placeholder=\"Senha / Password\">\r\n <ion-input-password-toggle slot=\"end\"></ion-input-password-toggle>\r\n </ion-input>\r\n </ion-item>\r\n </ion-card-content>\r\n </ion-card>\r\n\r\n <div class=\"flex my-3 w-full\">\r\n <ion-button class=\"rounded-2xl shadow-xl default-transition w-full\" expand=\"block\" (click)=\"Login()\" [disabled]=\"loading\">\r\n <ion-spinner class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': !loading, 'mr-2' : loading}\" slot=\"start\"></ion-spinner>\r\n <ion-icon class=\"default-transition\" [ngClass]=\"{'-translate-x-12 opacity-0 size-0': loading}\" name=\"enter-outline\" slot=\"start\" ></ion-icon>\r\n <span class=\"default-transition\" > Login </span>\r\n </ion-button>\r\n\r\n <ion-button class=\"shrink-0 aspect-square ml-3\" color=\"dark\" hidden>\r\n <svg class=\"size-8\" slot=\"icon-only\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\" width=\"64\" height=\"64\"><defs><path id=\"A\" d=\"M44.5 20H24v8.5h11.8C34.7 33.9 30.1 37 24 37c-7.2 0-13-5.8-13-13s5.8-13 13-13c3.1 0 5.9 1.1 8.1 2.9l6.4-6.4C34.6 4.1 29.6 2 24 2 11.8 2 2 11.8 2 24s9.8 22 22 22c11 0 21-8 21-22 0-1.3-.2-2.7-.5-4z\"/></defs><clipPath id=\"B\"><use xlink:href=\"#A\"/></clipPath><g transform=\"matrix(.727273 0 0 .727273 -.954545 -1.45455)\"><path d=\"M0 37V11l17 13z\" clip-path=\"url(#B)\" fill=\"#fbbc05\"/><path d=\"M0 11l17 13 7-6.1L48 14V0H0z\" clip-path=\"url(#B)\" fill=\"#ea4335\"/><path d=\"M0 37l30-23 7.9 1L48 0v48H0z\" clip-path=\"url(#B)\" fill=\"#34a853\"/><path d=\"M48 48L17 24l-4-3 35-10z\" clip-path=\"url(#B)\" fill=\"#4285f4\"/></g></svg>\r\n <!-- <ion-icon name=\"logo-google\" ></ion-icon> -->\r\n </ion-button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { RouterLinkWithHref } from '@angular/router';\r\nimport { DrawerComponent } from '../drawer/drawer.component';\r\nimport { AuthService } from '../../services/auth.service';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [ CommonModule, IonicModule, RouterLinkWithHref ],\r\n selector: 'main-content',\r\n templateUrl: './main-content.component.html',\r\n styleUrls: ['./main-content.component.scss'],\r\n})\r\nexport class MainContentComponent implements OnInit {\r\n\r\n @Input() colapsed: boolean = false;\r\n @Input() drawerComponent: DrawerComponent;\r\n\r\n constructor(\r\n public authService: AuthService\r\n ) { }\r\n\r\n Token: any;\r\n ngOnInit(): void {\r\n this.authService.LoadToken().then((res) => {\r\n this.Token = res;\r\n });\r\n }\r\n\r\n get fullScreen(): boolean { \r\n if(document.fullscreenElement != null){\r\n return true;\r\n }\r\n return false; \r\n };\r\n @ViewChild('target') FullScreenConteiner;\r\n FullScreen(): void{\r\n if(!this.fullScreen){\r\n const elem = this.FullScreenConteiner.nativeElement;\r\n \r\n if (elem.requestFullscreen) {\r\n elem.requestFullscreen();\r\n } else if (elem.msRequestFullscreen) {\r\n elem.msRequestFullscreen();\r\n } else if (elem.mozRequestFullScreen) {\r\n elem.mozRequestFullScreen();\r\n } else if (elem.webkitRequestFullscreen) {\r\n elem.webkitRequestFullscreen();\r\n }\r\n }else{\r\n document.exitFullscreen()\r\n }\r\n }\r\n}\r\n","<div class=\"size-full flex flex-col\" [ngClass]=\"{'bg-light/50': fullScreen}\" #target>\r\n <div class=\"w-full h-14 relative shrink-0\">\r\n <ion-card class=\"m-0 rounded-none size-full border-none\">\r\n <ion-card-content class=\"p-0 px-2 size-full flex\">\r\n <div class=\"w-1/2 h-full flex items-center justify-start\">\r\n @if (!fullScreen) {\r\n <ion-menu-button [routerLink]=\"['/']\" [autoHide]=\"true\"></ion-menu-button>\r\n }\r\n <ng-content select=\"[slot=start]\"></ng-content>\r\n </div>\r\n\r\n <div class=\"w-1/2 h-full flex flex-row-reverse items-center justify-start gap-2\">\r\n <ng-content select=\"[slot=end]\"></ng-content>\r\n \r\n @if (!fullScreen) {\r\n <ion-button (click)=\"userPopover.present($event)\" size=\"small\" class=\"size-10 aspect-square\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </ion-button>\r\n <ion-popover #userPopover [dismissOnSelect]=\"true\" triggerAction=\"click\">\r\n <ng-template>\r\n <ion-content>\r\n <div class=\"size-full\">\r\n <div class=\"w-full px-3 flex items-center\">\r\n <div class=\"size-10 shrink-0 aspect-square rounded-2xl text-sm flex items-center justify-center default-transition\" style=\"background-color: var(--ion-color-primary);\">\r\n <span class=\"uppercase text-white\">{{Token ? Token.Nome[0] : ''}}</span>\r\n </div>\r\n <div class=\"grow min-w-10 p-2 justify-center items-center whitespace-nowrap text-ellipsis overflow-hidden block default-transition\" [ngClass]=\"{'opacity-0 w-0': colapsed}\">\r\n <span>{{Token ? Token.Nome : ''}}</span> <br>\r\n <ion-text color=\"secondary\" class=\"text-sm\">\r\n &#64;{{Token ? Token.Apelido : ''}}\r\n </ion-text>\r\n </div>\r\n </div>\r\n <div class=\"w-full\">\r\n <ng-content class=\"size-full\" select=\"[slot=user-popover]\"></ng-content>\r\n </div>\r\n <div class=\"w-full px-3 py-2 translucid-border !border-x-0 !border-b-0 flex items-center justify-between\">\r\n <ion-text> Log Out </ion-text>\r\n <ion-button (click)=\"authService.Loggout()\" class=\"size-10 shrink-0\" size=\"small\" color=\"danger\">\r\n <ion-icon slot=\"icon-only\" name=\"exit-outline\"></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\r\n <ion-button (click)=\"FullScreen()\" fill=\"outline\" color=\"dark\" size=\"small\" class=\"size-10 aspect-square\">\r\n <ion-icon slot=\"icon-only\" name=\"expand\"></ion-icon>\r\n </ion-button>\r\n </div>\r\n </ion-card-content>\r\n </ion-card>\r\n </div>\r\n <div class=\"size-full relative p-2 bg-light\">\r\n <div class=\"size-full relative rounded-2xl bg-primary/30 content-shadow overflow-hidden\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { StepperComponent } from '../stepper.component';\r\n\r\n@Component({\r\n selector: 'step',\r\n templateUrl: './step.component.html',\r\n styleUrls: ['./step.component.scss'],\r\n})\r\nexport class StepComponent implements OnInit {\r\n \r\n @Input() label : string = \"Label\";\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n parent: StepperComponent;\r\n\r\n get index(): number{ \r\n if(this.parent && this.parent.lstSteps){\r\n return this.parent.lstSteps.toArray().indexOf(this);\r\n }\r\n return 0;\r\n }\r\n \r\n get fill(): boolean{\r\n if(this.parent){\r\n return this.parent.lstSteps.toArray().indexOf(this) == this.parent._model;\r\n }\r\n return false;\r\n };\r\n \r\n get selected(): boolean{\r\n if(this.parent){\r\n return this.parent.lstSteps.toArray().indexOf(this) <= this.parent._model;\r\n }\r\n return false;\r\n };\r\n\r\n get _fill(){\r\n return this.fill ? 1 : 0; \r\n }\r\n}","<div class=\"px-1 flex flex-col items-center justify-center text-center animated\">\r\n <div [ngClass]=\"{'selected': selected}\" class=\"default-transition min-h-8 min-w-8 bg-red-400 flex items-center justify-center rounded-2xl step\">\r\n <div class=\"wrapper\"><ng-content select=\"ion-icon, ion-text\"></ng-content></div>\r\n <div class=\"default\">\r\n {{index + 1}}\r\n </div>\r\n </div>\r\n \r\n <ion-text> {{label}} </ion-text>\r\n <ion-progress-bar [color]=\"selected ? 'secondary' : 'primary'\" class=\"h-2 ease-in-out\" [value]=\"_fill\"></ion-progress-bar>\r\n</div>","import { AfterContentInit, Component, ContentChildren, QueryList } from '@angular/core';\r\nimport { StepComponent } from './step/step.component';\r\nimport { CustomInput } from '../inputs/custom-input';\r\nimport { InputProviderFactory } from '../inputs/input-provider-factory';\r\n\r\n@Component({\r\n selector: 'stepper',\r\n templateUrl: './stepper.component.html',\r\n styleUrls: ['./stepper.component.scss'],\r\n providers: InputProviderFactory.GetProvider(StepperComponent)\r\n})\r\nexport class StepperComponent extends CustomInput<any> implements AfterContentInit {\r\n\r\n constructor() { super(); }\r\n ngAfterContentInit(): void {\r\n if(this.lstSteps){\r\n this.lstSteps.filter(p => !p.parent).forEach(comp => { comp.parent = this; });\r\n }\r\n }\r\n\r\n override async ngOnInit() {\r\n super.ngOnInit();\r\n }\r\n\r\n @ContentChildren(StepComponent) lstSteps : QueryList<StepComponent>;\r\n\r\n override writeValue(value: any){ this.setModel(value) }\r\n override get model(): any { return this._model; }\r\n override set model(value: any) { this.setModel(value); this.propagateChange(this._model); }\r\n\r\n override _model: number = 0;\r\n setModel(value){\r\n this._model = value;\r\n this.ngAfterContentInit();\r\n }\r\n}\r\n","<div class=\"flex w-full justify-evenly\">\r\n <ng-content selector=\"step\" class=\"grow\"></ng-content>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { StepComponent } from './step/step.component';\r\nimport { StepperComponent } from './stepper.component';\r\nimport { IonicModule } from '@ionic/angular';\r\n\r\n@NgModule({\r\n declarations: [ StepComponent, StepperComponent ],\r\n exports: [ StepComponent, StepperComponent ],\r\n imports: [\r\n CommonModule,\r\n IonicModule\r\n ]\r\n})\r\nexport class StepperModule { }\r\n","import { Component, Input, ViewChild, ViewContainerRef } from \"@angular/core\";\r\nimport { RouterOutlet } from \"@angular/router\";\r\nimport { Utils } from \"../../../services/utils.service\";\r\n\r\n@Component({\r\n selector: 'tab',\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss'],\r\n})\r\nexport class TabComponent {\r\n @Input() id : string = null;\r\n\r\n @Input() label: string = \"Label\";\r\n /** Icone da aba @link https://ionic.io/ionicons */\r\n @Input() name : string = \"warning\";\r\n /** Rota aba, quando náo informada irá mostrar o conteudo do componente */\r\n @Input() public route : string | null = null;\r\n @Input() active: boolean = false;\r\n @Input() relative: boolean = false;\r\n\r\n constructor() { }\r\n\r\n @ViewChild('placeToRender', {read: ViewContainerRef}) placeToRender: ViewContainerRef;\r\n routerOutlet: RouterOutlet | null = null;\r\n\r\n guid = Utils.GenerateGUID();\r\n}\r\n\r\n","<div [ngClass]=\"{'-translate-x-full opacity-0': !active,\r\n '!relative': relative }\" class=\"default-transition overflow-hidden max-h-full size-full absolute top-0 left-0\">\r\n @if(route && active){\r\n <router-outlet class=\"size-full\"></router-outlet>\r\n }@else {\r\n <ng-content></ng-content>\r\n }\r\n</div>","import { AfterContentInit, Component, ContentChild, ContentChildren, EventEmitter, OnInit, Output, QueryList } from '@angular/core';\r\nimport { TabComponent } from '../tab/tab.component';\r\nimport { RouterOutlet } from '@angular/router';\r\n\r\n@Component({\r\n selector: 'tabs',\r\n templateUrl: './tabs.component.html',\r\n styleUrls: ['./tabs.component.scss'],\r\n})\r\nexport class TabsComponent implements AfterContentInit {\r\n\r\n @ContentChildren(TabComponent) lstTabs: QueryList<TabComponent>;\r\n @ContentChild(RouterOutlet) router: RouterOutlet;\r\n \r\n /** Emitido quando a aba é trocada. Emite o ID do elemento */\r\n @Output('change') changeEmitter: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n constructor(\r\n ) { }\r\n\r\n ngAfterContentInit(): void {\r\n let activeTabs = this.lstTabs.filter((tab) => tab.active);\r\n if(activeTabs.length == 0 && this.lstTabs.length > 0) { this.SetActiveTab(this.lstTabs.first); }\r\n \r\n let currentLocationTabs = this.lstTabs.filter(tab => tab.route).filter((tab) => window.location.pathname.toLocaleLowerCase().includes((tab.route).toLocaleLowerCase()));\r\n if(currentLocationTabs.length > 0){ this.SetActiveTab(currentLocationTabs[0]); }\r\n }\r\n\r\n ActiveTab: TabComponent | null = null;\r\n SetActiveTab(tab: TabComponent){\r\n this.lstTabs.forEach(tab => tab.active = false);\r\n tab.active = true;\r\n this.ActiveTab = tab;\r\n if(tab.route){ this.isComponent = false; } else{ this.isComponent = true; }\r\n this.changeEmitter.emit(this.ActiveTab.id);\r\n }\r\n isComponent: boolean = true;\r\n\r\n GetElse(){\r\n return this.lstTabs.some(p => p.route != null) ? './' : undefined\r\n }\r\n}\r\n","<div class=\"flex flex-col size-full\">\r\n <div class=\"h-10 w-full flex px-3 mask-x/3 overflow-x-auto\">\r\n @for (tab of lstTabs; track $index) {\r\n <div [routerLink]=\"tab.route ? '.' + tab.route : GetElse()\" [ngClass]=\"{'selected': tab.active}\" class=\"default-transition !translucid-background translucid-border tab-selector !border-b-0 animated-from-right whitespace-nowrap\" (click)=\"SetActiveTab(tab)\">\r\n <ion-text class=\"mx-auto\" [color]=\"tab.active ? 'dark' : ''\">\r\n <ion-icon [name]=\"tab.name\" class=\"align-sub mr-1\"></ion-icon> {{tab.label}}\r\n </ion-text>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"translucid-border tab-content !overflow-hidden relative\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { RouterLinkWithHref, RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { NgModule } from '@angular/core';\r\n\r\nimport { TabsComponent } from './tabs/tabs.component';\r\nimport { TabComponent } from './tab/tab.component';\r\nimport { NgVarDirective } from '../../directives/ng-var.directive';\r\n\r\n@NgModule({\r\n declarations: [ TabsComponent, TabComponent ],\r\n exports : [ TabsComponent, TabComponent ],\r\n imports: [ CommonModule, IonicModule, NgVarDirective, RouterLinkWithHref, RouterModule ]\r\n})\r\nexport class TabsModule { }\r\n","import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable()\r\nexport class AuthGuard implements CanActivate {\r\n\r\n constructor(private auth: AuthService, private router: Router) {}\r\n\r\n async canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<boolean> {\r\n const Token = await this.auth.LoadToken();\r\n const Authenticated = this.auth.isTokenValid(Token);\r\n if(!Authenticated){\r\n this.auth.Loggout();\r\n }\r\n return Authenticated;\r\n }\r\n}","import { HttpClient, HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Observable, catchError } from \"rxjs\";\r\nimport { ToastController } from \"@ionic/angular\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\nimport { ApiUrlProviderService } from \"../services/web/api-url-provider.service\";\r\nimport { GenericService } from \"../services/generics.service\";\r\nimport { AuthService } from \"../services/auth.service\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private auth: AuthService,\r\n private http: HttpClient,\r\n private genericService: GenericService,\r\n private toastController: ToastController,\r\n private apiUrlProviderService: ApiUrlProviderService,\r\n private router: Router\r\n ) {}\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(req).pipe(\r\n catchError((error: HttpErrorResponse) => { \r\n // if(error.status == 0){\r\n // this.PresentErrorToast(error.error, req, error);\r\n // }\r\n if(error.status == 401){ \r\n this.auth.Loggout(); \r\n }else \r\n if(error.status != 404){ \r\n this.PresentErrorToast(error.error, req, error);\r\n }\r\n if(error.status == 403){\r\n this.router.navigate(['/403'])\r\n }\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n private localUserKey: string = \"APLICATION_USER_KEY\";\r\n private localAdminKey: string = \"APLICATION_ADMIN_KEY\";\r\n async PresentErrorToast(json: string, request: any, fullError: any) {\r\n var res: ApiErrorReturn = null;\r\n try{\r\n res = JSON.parse(json) as ApiErrorReturn\r\n }catch{\r\n res = { Erro: \"Não foi possivel converter o JSON de retorno!\", Mensagem: \"Ocorreu um erro inesperado!\", _Info: \"\" }\r\n }\r\n res._Info = await this.GetInfo(request, fullError);\r\n\r\n const toast = await this.toastController.create({\r\n message: res.Mensagem,\r\n duration: 5000,\r\n icon: \"bug\",\r\n position: 'bottom',\r\n translucent: false, \r\n cssClass: 'ionic-toast',\r\n buttons: [\r\n { \r\n text: \"Reportar Erro\",\r\n icon: \"document\",\r\n side: \"end\",\r\n handler: () => {\r\n this.Report(res);\r\n }\r\n }\r\n ]\r\n });\r\n\r\n await toast.present();\r\n }\r\n\r\n protected get fullRoute(): string{\r\n return this.apiUrlProviderService.apiUrl + 'error'\r\n }\r\n Report(res: ApiErrorReturn): void{\r\n this.http.post(this.fullRoute, res).subscribe({\r\n next: (res) => { this.genericService.PresentToast(\"Erro informado com sucesso!\", \"checkmark-circle\"); },\r\n error:(err) => { this.genericService.PresentToast(\"Ocorreu um erro inesperado no retorno do erro!\"); }\r\n });\r\n }\r\n\r\n async GetInfo(request: any, fullError: any): Promise<string>{\r\n return JSON.stringify({\r\n token : this.auth.LoadToken(),\r\n tokenAdmin: this.auth.LoadTokenAdmin(),\r\n currentUrl: window.location.href,\r\n userId : (await this.auth.LoadToken()).id,\r\n jwtAdmin : localStorage.getItem(this.localAdminKey),\r\n jwtUser : localStorage.getItem(this.localUserKey),\r\n request : request,\r\n error : fullError,\r\n apiUrl : this.apiUrlProviderService.apiUrl\r\n });\r\n }\r\n}\r\n\r\nclass ApiErrorReturn {\r\n Mensagem: string;\r\n Erro: string;\r\n _Info: string;\r\n}","import { AuthService } from '../services/auth.service';\r\nimport { Injectable } from '@angular/core';\r\nimport {\r\n HttpRequest,\r\n HttpHandler,\r\n HttpEvent,\r\n HttpInterceptor\r\n} from '@angular/common/http';\r\nimport { Observable, first, firstValueFrom, from, lastValueFrom, mergeMap, switchMap } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n\r\n constructor(\r\n private auth: AuthService\r\n ) {}\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\r\n return from(this.auth.JWToken()).pipe( \r\n switchMap((authToken: string) => {\r\n const authReq = request.clone({ setHeaders: { Authorization: `Bearer ${authToken}` } });\r\n return next.handle(authReq);\r\n })\r\n );\r\n }\r\n}\r\n","/*\r\n * Public API Surface of @sapphire-ion/framework\r\n */\r\n\r\n// [ 📁 Lib ]\r\n//[ 📁 Classes ]\r\n // [ 📁 Classes -> Comparison ]\r\n export * from '../lib/classes/comparison/properties/bool-property';\r\n export * from '../lib/classes/comparison/properties/date-property';\r\n export * from '../lib/classes/comparison/properties/datetime-property';\r\n export * from '../lib/classes/comparison/properties/decimal-property';\r\n export * from '../lib/classes/comparison/properties/enum-property';\r\n export * from '../lib/classes/comparison/properties/implicit-property';\r\n export * from '../lib/classes/comparison/properties/int-property';\r\n export * from '../lib/classes/comparison/properties/long-property';\r\n export * from '../lib/classes/comparison/properties/string-property';\r\n export * from '../lib/classes/comparison/properties/time-property';\r\n export * from '../lib/classes/comparison/properties/bool-property';\r\n export * from '../lib/classes/comparison/comparison';\r\n export * from '../lib/classes/comparison/comparison-operator';\r\n export * from '../lib/classes/comparison/comparison-value-type';\r\n // [ 📁 Classes -> Filters ]\r\n export * from '../lib/classes/filters/view-filtros';\r\n // [ 📁 Classes -> Inputs ]\r\n export * from '../lib/classes/inputs/table-field-form-builder';\r\n export * from '../lib/classes/inputs/table-field';\r\n // [ 📁 Classes -> Routes ]\r\n export * from '../lib/classes/routes/default-routing-factory';\r\n export * from '../lib/classes/routes/id-preloader-configuration';\r\n export * from '../lib/classes/routes/route-data';\r\nexport * from '../lib/classes/credentials';\r\nexport * from '../lib/classes/environment';\r\nexport * from '../lib/classes/page-option';\r\n\r\n//[ 📁 Components ]\r\n //[ 📁 Components -> Carousel ]\r\n // [ 📁 Components -> Carousel -> Carrousel-Image ]\r\n export * from '../lib/components/carousel/carousel-image/carousel-image.component';\r\n // [ 📁 Components -> Carousel -> Carrousel-Item ]\r\n export * from '../lib/components/carousel/carousel-item/carousel-item.component';\r\n export * from '../lib/components/carousel/carousel.component';\r\n export * from '../lib/components/carousel/carousel.module';\r\n export * from '../lib/components/carousel/i-carousel-item.component';\r\n // [ 📁 Components -> Content-Block ]\r\n export * from '../lib/components/content-block/content-block.component';\r\n // [ 📁 Components -> Default ]\r\n // [ 📁 Components -> Default -> default-list ]\r\n // [ 📁 Components -> Default -> default-list -> header-list ]\r\n export * from '../lib/components/default/default-list/header-list/header-list.component';\r\n export * from '../lib/components/default/default-list/abstract-list';\r\n export * from '../lib/components/default/default-list/default-list.component';\r\n export * from '../lib/components/default/default-list/list';\r\n // [ 📁 Components -> Default -> default-pagination ]\r\n export * from '../lib/components/default/default-pagination/default-pagination.component';\r\n // [ 📁 Components -> Default -> default-table ]\r\n // [ 📁 Components -> Default -> default-table -> th-filter ]\r\n export * from '../lib/components/default/default-table/th-filter/th-filter.component';\r\n export * from '../lib/components/default/default-table/default-table.component';\r\n // [ 📁 Components -> Default -> default-view ]\r\n // [ 📁 Components -> Default -> default-view -> header-view ]\r\n export * from '../lib/components/default/default-view/header-view/header-view.component';\r\n export * from '../lib/components/default/default-view/abstract-view';\r\n export * from '../lib/components/default/default-view/default-view.component';\r\n export * from '../lib/components/default/default-view/view';\r\n export * from '../lib/components/default/default.module';\r\n // [ 📁 Components -> default-page ]\r\n export * from '../lib/components/default-page/default.page';\r\n // [ 📁 Components -> drag-drop-page ]\r\n // [ 📁 Components -> drag-drop-page -> drag-drop-overlay ]\r\n export * from '../lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component';\r\n export * from '../lib/components/drag-drop-file/drag-drop-file.directive';\r\n export * from '../lib/components/drag-drop-file/drag-drop-file.module';\r\n // [ 📁 Components -> drawer ]\r\n // [ 📁 Components -> drawer -> default-drawer-end ]\r\n export * from '../lib/components/drawer/default-drawer-end/default-drawer-end.component';\r\n // [ 📁 Components -> drawer -> drawer-group ]\r\n export * from '../lib/components/drawer/drawer-group/drawer-group.component';\r\n export * from '../lib/components/drawer/drawer.component';\r\n export * from '../lib/components/drawer/menu';\r\n // [ 📁 Components -> filter ]\r\n export * from '../lib/components/filter/filter.component';\r\n // [ 📁 Components -> http-responses-pages ]\r\n // [ 📁 Components -> http-responses-pages -> forbidden-403 ]\r\n export * from '../lib/components/http-responses-pages/forbidden-403/forbidden-403.component';\r\n // [ 📁 Components -> image ]\r\n export * from '../lib/components/image/image.component';\r\n // [ 📁 Components -> info-popover ]\r\n export * from '../lib/components/info-popover/info-popover.component';\r\n // [ 📁 Components -> inputs ]\r\n // [ 📁 Components -> inputs -> input-bool ]\r\n export * from '../lib/components/inputs/input-bool/input-bool.component';\r\n export * from '../lib/components/inputs/input-bool/input-bool.configuration';\r\n // [ 📁 Components -> inputs -> input-color ]\r\n export * from '../lib/components/inputs/input-color/input-color.component';\r\n // export * from '../lib/components/inputs/input-color/input-color.configuration';\r\n // [ 📁 Components -> inputs -> input-cpf-cnpj ]\r\n export * from '../lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component';\r\n export * from '../lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration';\r\n // [ 📁 Components -> inputs -> input-date ]\r\n export * from '../lib/components/inputs/input-date/input-date.component';\r\n export * from '../lib/components/inputs/input-date/input-date.configuration';\r\n // [ 📁 Components -> inputs -> input-decimal ]\r\n export * from '../lib/components/inputs/input-decimal/input-decimal.component';\r\n export * from '../lib/components/inputs/input-decimal/input-decimal.configuration';\r\n // [ 📁 Components -> inputs -> input-file ]\r\n export * from '../lib/components/inputs/input-file/download-button/download-button.component';\r\n export * from '../lib/components/inputs/input-file/input-file.component';\r\n export * from '../lib/components/inputs/input-file/input-file.configuration';\r\n // [ 📁 Components -> inputs -> input-loading ]\r\n export * from '../lib/components/inputs/input-loading/input-loading.component';\r\n // [ 📁 Components -> inputs -> input-select ]\r\n export * from '../lib/components/inputs/input-select/input-select-option/input-select-option.component';\r\n export * from '../lib/components/inputs/input-select/input-select-template.directive';\r\n export * from '../lib/components/inputs/input-select/input-select.component';\r\n export * from '../lib/components/inputs/input-select/input.select.configuration';\r\n // [ 📁 Components -> inputs -> input-string ]\r\n export * from '../lib/components/inputs/input-string/input-string.component';\r\n export * from '../lib/components/inputs/input-string/input-string.configuration';\r\n // [ 📁 Components -> inputs -> input-textarea ]\r\n export * from '../lib/components/inputs/input-textarea/input-textarea.component';\r\n export * from '../lib/components/inputs/input-configuration';\r\n export * from '../lib/components/inputs/input-default-configurations';\r\n export * from '../lib/components/inputs/input-provider-factory';\r\n export * from '../lib/components/inputs/input-type';\r\n export * from '../lib/components/inputs/input-validators';\r\n export * from '../lib/components/inputs/inputs.module';\r\n // [ 📁 Components -> loading ]\r\n export * from '../lib/components/loading/loading.component';\r\n // [ 📁 Components -> login ]\r\n // [ 📁 Components -> login -> login-admin ]\r\n export * from '../lib/components/login/login-admin/login-admin.component';\r\n export * from '../lib/components/login/login.component';\r\n // [ 📁 Components -> main-content ]\r\n export * from '../lib/components/main-content/main-content.component';\r\n // [ 📁 Components -> stepper ]\r\n // [ 📁 Components -> stepper -> step ]\r\n export * from '../lib/components/stepper/step/step.component';\r\n export * from '../lib/components/stepper/stepper.component';\r\n export * from '../lib/components/stepper/stepper.module';\r\n // [ 📁 Components -> tabs ]\r\n // [ 📁 Components -> tabs -> tab ]\r\n export * from '../lib/components/tabs/tab/tab.component';\r\n // [ 📁 Components -> tabs -> tabs ]\r\n export * from '../lib/components/tabs/tabs/tabs.component';\r\n export * from '../lib/components/tabs/tabs.module';\r\n // [ 📁 Components -> text-tooltip ]\r\n export * from '../lib/components/text-tooltip/text-tooltip.component';\r\n // [ 📁 Components -> tooltip ]\r\n export * from '../lib/components/tooltip/tooltip.component';\r\n//[ 📁 Directives ]\r\n export * from '../lib/directives/ng-var.directive';\r\n//[ 📁 Guards ]\r\n export * from '../lib/guards/auth.guard';\r\n export * from '../lib/guards/error.interceptor';\r\n export * from '../lib/guards/token.interceptor';\r\n// [ 📁 Pipes ]\r\n export * from '../lib/pipes/secure.pipe';\r\n// [ 📁 Services ]\r\n // [ 📁 Services -> Route ]\r\n export * from '../lib/services/route/route.provider.service';\r\n export * from '../lib/services/route/route.cache.service';\r\n // [ 📁 Services -> Web ]\r\n export * from '../lib/services/web/api-url-provider.service';\r\n export * from '../lib/services/web/http.ativo.service';\r\n export * from '../lib/services/web/http.service';\r\n export * from '../lib/services/web/storage.service';\r\n export * from '../lib/services/auth.service';\r\n // export * from '../lib/services/crypto.service';\r\n export * from '../lib/services/environment.service';\r\n export * from '../lib/services/generics.service';\r\n export * from '../lib/services/usuario.service';\r\n export * from '../lib/services/utils.service';\r\n\r\nexport * from '../lib/core.module';","/*\r\n * Public API Surface of ion-sapphire-framework\r\n */\r\n\r\nexport * from './lib/index';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i1.EnvironmentService","i3.EnvironmentService","i2","i3.GenericService","i4","i5.ApiUrlProviderService","i4.ApiUrlProviderService","i2.AuthService","i3.ApiUrlProviderService","i1.ApiUrlProviderService","i3","i2.ImageComponent","lstComponents","i2.ApiUrlProviderService","i2.UtilsService","i4.StorageService","i5","i6","i7.NgVarDirective","i8.LoadingComponent","i9.InputLoadingComponent","i1.StorageService","i5.NgVarDirective","i6.LoadingComponent","i7.InputLoadingComponent","i1.GenericService","i4.InputLoadingComponent","i1.ISelect","i5.InputLoadingComponent","i6.InputSelectInternalOptionComponent","i3.InputDateComponent","i4.InputDecimalComponent","i5.InputSelectComponent","i6.InputStringComponent","i7","i5.DownloadButtonComponent","i7.LoadingComponent","i8.DefaultPaginationComponent","i9.ThFilterComponent","i2.GenericService","i5.HeaderListComponent","i6.DefaultTableComponent","i6.InputBoolComponent","i7.InputDateComponent","i8.InputDecimalComponent","i9.InputFileComponent","i10.InputSelectComponent","i11.InputStringComponent","i12.InputTextareaComponent","i13.InputCpfCnpjComponent","i14.HeaderViewComponent","i5.LoadingComponent","i6.InputLoadingComponent","i2.EnvironmentService","i4.RouteProviderService","i1.AuthService","i1.InputDateComponent","i2.InputDecimalComponent","i3.InputSelectComponent","i4.InputStringComponent","i3.UsuarioService","i6.InputSelectComponent","i4.AuthService","i6.EnvironmentService"],"mappings":"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"}