@sapphire-ion/framework 1.2.63 → 1.3.1

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 (498) hide show
  1. package/build.ps1 +39 -0
  2. package/ng-package.json +10 -0
  3. package/package.json +43 -47
  4. package/src/lib/classes/comparison/comparison-operator.ts +17 -0
  5. package/src/lib/classes/comparison/comparison-value-type.ts +34 -0
  6. package/src/lib/classes/comparison/comparison.ts +45 -0
  7. package/src/lib/classes/comparison/properties/bool-property.ts +16 -0
  8. package/src/lib/classes/comparison/properties/date-property.ts +28 -0
  9. package/src/lib/classes/comparison/properties/datetime-property.ts +28 -0
  10. package/src/lib/classes/comparison/properties/decimal-property.ts +28 -0
  11. package/src/lib/classes/comparison/properties/enum-property.ts +28 -0
  12. package/src/lib/classes/comparison/properties/implicit-property.ts +13 -0
  13. package/src/lib/classes/comparison/properties/int-property.ts +28 -0
  14. package/src/lib/classes/comparison/properties/long-property.ts +28 -0
  15. package/src/lib/classes/comparison/properties/string-property.ts +16 -0
  16. package/src/lib/classes/comparison/properties/time-property.ts +28 -0
  17. package/{lib/classes/credentials.d.ts → src/lib/classes/credentials.ts} +5 -5
  18. package/src/lib/classes/environment.ts +37 -0
  19. package/src/lib/classes/filters/view-filtros.ts +18 -0
  20. package/src/lib/classes/infinite-scroll.ts +112 -0
  21. package/src/lib/classes/inputs/table-field-form-builder.ts +12 -0
  22. package/src/lib/classes/inputs/table-field.ts +62 -0
  23. package/src/lib/classes/page-option.ts +8 -0
  24. package/src/lib/classes/routes/default-routing-factory.ts +24 -0
  25. package/src/lib/classes/routes/id-preloader-configuration.ts +21 -0
  26. package/src/lib/classes/routes/route-data.ts +9 -0
  27. package/src/lib/components/carousel/carousel-image/carousel-image.component.html +4 -0
  28. package/src/lib/components/carousel/carousel-image/carousel-image.component.ts +15 -0
  29. package/src/lib/components/carousel/carousel-item/carousel-item.component.html +3 -0
  30. package/src/lib/components/carousel/carousel-item/carousel-item.component.ts +14 -0
  31. package/src/lib/components/carousel/carousel.component.html +22 -0
  32. package/src/lib/components/carousel/carousel.component.ts +83 -0
  33. package/src/lib/components/carousel/carousel.module.ts +20 -0
  34. package/src/lib/components/carousel/i-carousel-item.component.ts +8 -0
  35. package/src/lib/components/content-block/content-block.component.html +6 -0
  36. package/src/lib/components/content-block/content-block.component.ts +25 -0
  37. package/src/lib/components/default/default-list/abstract-list.ts +56 -0
  38. package/src/lib/components/default/default-list/default-list.component.html +60 -0
  39. package/src/lib/components/default/default-list/default-list.component.ts +72 -0
  40. package/src/lib/components/default/default-list/header-list/header-list.component.html +32 -0
  41. package/src/lib/components/default/default-list/header-list/header-list.component.ts +85 -0
  42. package/src/lib/components/default/default-list/list.ts +127 -0
  43. package/src/lib/components/default/default-pagination/default-pagination.component.html +52 -0
  44. package/src/lib/components/default/default-pagination/default-pagination.component.ts +118 -0
  45. package/src/lib/components/default/default-table/default-table.component.html +104 -0
  46. package/src/lib/components/default/default-table/default-table.component.ts +255 -0
  47. package/src/lib/components/default/default-table/th-filter/th-filter.component.html +69 -0
  48. package/src/lib/components/default/default-table/th-filter/th-filter.component.ts +205 -0
  49. package/src/lib/components/default/default-view/abstract-view.ts +25 -0
  50. package/src/lib/components/default/default-view/default-view.component.html +111 -0
  51. package/src/lib/components/default/default-view/default-view.component.ts +56 -0
  52. package/src/lib/components/default/default-view/header-view/header-view.component.html +64 -0
  53. package/src/lib/components/default/default-view/header-view/header-view.component.ts +62 -0
  54. package/src/lib/components/default/default-view/view.ts +195 -0
  55. package/src/lib/components/default/default.module.ts +61 -0
  56. package/src/lib/components/default-page/default.page.html +63 -0
  57. package/src/lib/components/default-page/default.page.ts +84 -0
  58. package/src/lib/components/drag-drop-file/drag-drop-file.directive.ts +44 -0
  59. package/src/lib/components/drag-drop-file/drag-drop-file.module.ts +21 -0
  60. package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.html +5 -0
  61. package/src/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.ts +17 -0
  62. package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.html +12 -0
  63. package/src/lib/components/drawer/default-drawer-end/default-drawer-end.component.ts +35 -0
  64. package/src/lib/components/drawer/drawer-group/drawer-group.component.html +79 -0
  65. package/src/lib/components/drawer/drawer-group/drawer-group.component.ts +49 -0
  66. package/src/lib/components/drawer/drawer.component.html +120 -0
  67. package/src/lib/components/drawer/drawer.component.ts +157 -0
  68. package/src/lib/components/drawer/menu.ts +20 -0
  69. package/src/lib/components/filter/filter.component.html +43 -0
  70. package/src/lib/components/filter/filter.component.ts +141 -0
  71. package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.html +35 -0
  72. package/src/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.ts +19 -0
  73. package/src/lib/components/image/image.component.html +17 -0
  74. package/src/lib/components/image/image.component.ts +95 -0
  75. package/src/lib/components/info-popover/info-popover.component.html +23 -0
  76. package/src/lib/components/info-popover/info-popover.component.ts +75 -0
  77. package/src/lib/components/inputs/custom-input.ts +94 -0
  78. package/src/lib/components/inputs/input-bool/input-bool.component.html +26 -0
  79. package/src/lib/components/inputs/input-bool/input-bool.component.ts +39 -0
  80. package/src/lib/components/inputs/input-bool/input-bool.configuration.ts +14 -0
  81. package/src/lib/components/inputs/input-cep/input-cep.component.html +27 -0
  82. package/src/lib/components/inputs/input-cep/input-cep.component.ts +41 -0
  83. package/src/lib/components/inputs/input-cep/input-cep.configuration.ts +4 -0
  84. package/src/lib/components/inputs/input-color/input-color.component.html +79 -0
  85. package/src/lib/components/inputs/input-color/input-color.component.ts +544 -0
  86. package/{lib/components/inputs/input-configuration.d.ts → src/lib/components/inputs/input-configuration.ts} +23 -10
  87. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.html +28 -0
  88. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.ts +99 -0
  89. package/src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.ts +4 -0
  90. package/src/lib/components/inputs/input-date/input-date.component.html +89 -0
  91. package/src/lib/components/inputs/input-date/input-date.component.ts +269 -0
  92. package/src/lib/components/inputs/input-date/input-date.configuration.ts +8 -0
  93. package/src/lib/components/inputs/input-decimal/input-decimal.component.html +32 -0
  94. package/src/lib/components/inputs/input-decimal/input-decimal.component.ts +283 -0
  95. package/src/lib/components/inputs/input-decimal/input-decimal.configuration.ts +47 -0
  96. package/src/lib/components/inputs/input-default-configurations.ts +15 -0
  97. package/src/lib/components/inputs/input-file/download-button/download-button.component.html +56 -0
  98. package/src/lib/components/inputs/input-file/download-button/download-button.component.ts +91 -0
  99. package/src/lib/components/inputs/input-file/input-file.component.html +56 -0
  100. package/src/lib/components/inputs/input-file/input-file.component.ts +97 -0
  101. package/src/lib/components/inputs/input-file/input-file.configuration.ts +25 -0
  102. package/src/lib/components/inputs/input-icon/fluenticons.ts +3733 -0
  103. package/src/lib/components/inputs/input-icon/input-icon.component.html +8 -0
  104. package/src/lib/components/inputs/input-icon/input-icon.component.ts +52 -0
  105. package/src/lib/components/inputs/input-icon/ionicons.ts +1359 -0
  106. package/src/lib/components/inputs/input-provider-factory.ts +12 -0
  107. package/src/lib/components/inputs/input-select/directives/sion-label-template.directive.ts +19 -0
  108. package/src/lib/components/inputs/input-select/directives/sion-option-template.directive.ts +16 -0
  109. package/src/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.ts +19 -0
  110. package/src/lib/components/inputs/input-select/input-select.component.html +176 -0
  111. package/src/lib/components/inputs/input-select/input-select.component.ts +366 -0
  112. package/src/lib/components/inputs/input-select/input.select.configuration.ts +300 -0
  113. package/src/lib/components/inputs/input-string/input-string.component.html +27 -0
  114. package/src/lib/components/inputs/input-string/input-string.component.ts +31 -0
  115. package/src/lib/components/inputs/input-string/input-string.configuration.ts +20 -0
  116. package/src/lib/components/inputs/input-telefone/input-telefone.component.html +29 -0
  117. package/src/lib/components/inputs/input-telefone/input-telefone.component.ts +63 -0
  118. package/src/lib/components/inputs/input-telefone/input-telefone.configuration.ts +8 -0
  119. package/src/lib/components/inputs/input-textarea/input-textarea.component.html +27 -0
  120. package/src/lib/components/inputs/input-textarea/input-textarea.component.ts +75 -0
  121. package/src/lib/components/inputs/input-textarea/input-textarea.configuration.ts +7 -0
  122. package/src/lib/components/inputs/input-type.ts +22 -0
  123. package/src/lib/components/inputs/input-validators.ts +111 -0
  124. package/src/lib/components/inputs/inputs.module.ts +74 -0
  125. package/src/lib/components/loading/loading.component.html +28 -0
  126. package/src/lib/components/loading/loading.component.ts +29 -0
  127. package/src/lib/components/login/login-admin/login-admin.component.html +28 -0
  128. package/src/lib/components/login/login-admin/login-admin.component.ts +51 -0
  129. package/src/lib/components/login/login.component.html +104 -0
  130. package/src/lib/components/login/login.component.ts +96 -0
  131. package/src/lib/components/main-content/main-content.component.html +145 -0
  132. package/src/lib/components/main-content/main-content.component.ts +93 -0
  133. package/src/lib/components/popover/sion-popover/sion-popover.component.html +21 -0
  134. package/src/lib/components/popover/sion-popover/sion-popover.component.ts +182 -0
  135. package/src/lib/components/popover/sion-popover.module.ts +12 -0
  136. package/src/lib/components/sion-card/sion-card.component.html +12 -0
  137. package/src/lib/components/sion-card/sion-card.component.ts +23 -0
  138. package/src/lib/components/stepper/step/step.component.html +11 -0
  139. package/src/lib/components/stepper/step/step.component.ts +44 -0
  140. package/src/lib/components/stepper/stepper.component.html +3 -0
  141. package/src/lib/components/stepper/stepper.component.ts +37 -0
  142. package/src/lib/components/stepper/stepper.module.ts +15 -0
  143. package/src/lib/components/tabs/tab/tab.component.html +8 -0
  144. package/src/lib/components/tabs/tab/tab.component.ts +28 -0
  145. package/src/lib/components/tabs/tabs/tabs.component.html +14 -0
  146. package/src/lib/components/tabs/tabs/tabs.component.ts +42 -0
  147. package/src/lib/components/tabs/tabs.module.ts +15 -0
  148. package/src/lib/components/text-tooltip/text-tooltip.component.html +8 -0
  149. package/src/lib/components/text-tooltip/text-tooltip.component.scss +0 -0
  150. package/src/lib/components/text-tooltip/text-tooltip.component.ts +45 -0
  151. package/src/lib/components/tooltip/tooltip.component.html +53 -0
  152. package/src/lib/components/tooltip/tooltip.component.ts +16 -0
  153. package/src/lib/core.module.ts +29 -0
  154. package/src/lib/directives/ng-var.directive.ts +26 -0
  155. package/src/lib/guards/auth.guard.ts +19 -0
  156. package/src/lib/guards/error.interceptor.ts +108 -0
  157. package/src/lib/guards/token.interceptor.ts +28 -0
  158. package/src/lib/index.ts +191 -0
  159. package/src/lib/pipes/secure.pipe.ts +39 -0
  160. package/src/lib/services/auth.service.ts +150 -0
  161. package/src/lib/services/crypto.service.ts +164 -0
  162. package/src/lib/services/environment.service.ts +17 -0
  163. package/src/lib/services/generic.service.ts +85 -0
  164. package/src/lib/services/modal-focus-trap.service.ts +65 -0
  165. package/src/lib/services/navigation-context.service.ts +121 -0
  166. package/src/lib/services/popover-focus-trap.service.ts +65 -0
  167. package/src/lib/services/route/route.cache.service.ts +17 -0
  168. package/src/lib/services/route/route.provider.service.ts +49 -0
  169. package/src/lib/services/usuario.service.ts +44 -0
  170. package/src/lib/services/utils.service.ts +216 -0
  171. package/src/lib/services/web/api-url-provider.service.ts +48 -0
  172. package/src/lib/services/web/http.ativo.service.ts +37 -0
  173. package/src/lib/services/web/http.service.ts +206 -0
  174. package/src/lib/services/web/storage.service.ts +210 -0
  175. package/src/public-api.ts +5 -0
  176. package/tailwind.config.js +27 -0
  177. package/tsconfig.lib.json +29 -0
  178. package/tsconfig.lib.prod.json +23 -0
  179. package/tsconfig.spec.json +27 -0
  180. package/esm2022/lib/classes/comparison/comparison-operator.mjs +0 -18
  181. package/esm2022/lib/classes/comparison/comparison-value-type.mjs +0 -25
  182. package/esm2022/lib/classes/comparison/comparison.mjs +0 -41
  183. package/esm2022/lib/classes/comparison/properties/bool-property.mjs +0 -15
  184. package/esm2022/lib/classes/comparison/properties/date-property.mjs +0 -27
  185. package/esm2022/lib/classes/comparison/properties/datetime-property.mjs +0 -27
  186. package/esm2022/lib/classes/comparison/properties/decimal-property.mjs +0 -27
  187. package/esm2022/lib/classes/comparison/properties/enum-property.mjs +0 -27
  188. package/esm2022/lib/classes/comparison/properties/implicit-property.mjs +0 -12
  189. package/esm2022/lib/classes/comparison/properties/int-property.mjs +0 -27
  190. package/esm2022/lib/classes/comparison/properties/long-property.mjs +0 -27
  191. package/esm2022/lib/classes/comparison/properties/string-property.mjs +0 -15
  192. package/esm2022/lib/classes/comparison/properties/time-property.mjs +0 -27
  193. package/esm2022/lib/classes/credentials.mjs +0 -2
  194. package/esm2022/lib/classes/environment.mjs +0 -34
  195. package/esm2022/lib/classes/filters/view-filtros.mjs +0 -18
  196. package/esm2022/lib/classes/infinite-scroll.mjs +0 -90
  197. package/esm2022/lib/classes/inputs/table-field-form-builder.mjs +0 -10
  198. package/esm2022/lib/classes/inputs/table-field.mjs +0 -79
  199. package/esm2022/lib/classes/page-option.mjs +0 -2
  200. package/esm2022/lib/classes/routes/default-routing-factory.mjs +0 -23
  201. package/esm2022/lib/classes/routes/id-preloader-configuration.mjs +0 -22
  202. package/esm2022/lib/classes/routes/route-data.mjs +0 -9
  203. package/esm2022/lib/components/carousel/carousel-image/carousel-image.component.mjs +0 -18
  204. package/esm2022/lib/components/carousel/carousel-item/carousel-item.component.mjs +0 -15
  205. package/esm2022/lib/components/carousel/carousel.component.mjs +0 -79
  206. package/esm2022/lib/components/carousel/carousel.module.mjs +0 -31
  207. package/esm2022/lib/components/carousel/i-carousel-item.component.mjs +0 -16
  208. package/esm2022/lib/components/content-block/content-block.component.mjs +0 -27
  209. package/esm2022/lib/components/default/default-list/abstract-list.mjs +0 -49
  210. package/esm2022/lib/components/default/default-list/default-list.component.mjs +0 -95
  211. package/esm2022/lib/components/default/default-list/header-list/header-list.component.mjs +0 -98
  212. package/esm2022/lib/components/default/default-list/list.mjs +0 -120
  213. package/esm2022/lib/components/default/default-pagination/default-pagination.component.mjs +0 -123
  214. package/esm2022/lib/components/default/default-table/default-table.component.mjs +0 -216
  215. package/esm2022/lib/components/default/default-table/th-filter/th-filter.component.mjs +0 -212
  216. package/esm2022/lib/components/default/default-view/abstract-view.mjs +0 -22
  217. package/esm2022/lib/components/default/default-view/default-view.component.mjs +0 -76
  218. package/esm2022/lib/components/default/default-view/header-view/header-view.component.mjs +0 -81
  219. package/esm2022/lib/components/default/default-view/view.mjs +0 -198
  220. package/esm2022/lib/components/default/default.module.mjs +0 -98
  221. package/esm2022/lib/components/default-page/default.page.mjs +0 -75
  222. package/esm2022/lib/components/drag-drop-file/drag-drop-file.directive.mjs +0 -60
  223. package/esm2022/lib/components/drag-drop-file/drag-drop-file.module.mjs +0 -31
  224. package/esm2022/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.mjs +0 -15
  225. package/esm2022/lib/components/drawer/default-drawer-end/default-drawer-end.component.mjs +0 -34
  226. package/esm2022/lib/components/drawer/drawer-group/drawer-group.component.mjs +0 -52
  227. package/esm2022/lib/components/drawer/drawer.component.mjs +0 -156
  228. package/esm2022/lib/components/drawer/menu.mjs +0 -15
  229. package/esm2022/lib/components/filter/filter.component.mjs +0 -145
  230. package/esm2022/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.mjs +0 -17
  231. package/esm2022/lib/components/image/image.component.mjs +0 -91
  232. package/esm2022/lib/components/info-popover/info-popover.component.mjs +0 -91
  233. package/esm2022/lib/components/inputs/custom-input.mjs +0 -85
  234. package/esm2022/lib/components/inputs/input-bool/input-bool.component.mjs +0 -46
  235. package/esm2022/lib/components/inputs/input-bool/input-bool.configuration.mjs +0 -16
  236. package/esm2022/lib/components/inputs/input-cep/input-cep.component.mjs +0 -50
  237. package/esm2022/lib/components/inputs/input-cep/input-cep.configuration.mjs +0 -4
  238. package/esm2022/lib/components/inputs/input-color/input-color.component.mjs +0 -481
  239. package/esm2022/lib/components/inputs/input-configuration.mjs +0 -2
  240. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.mjs +0 -116
  241. package/esm2022/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.mjs +0 -6
  242. package/esm2022/lib/components/inputs/input-date/input-date.component.mjs +0 -263
  243. package/esm2022/lib/components/inputs/input-date/input-date.configuration.mjs +0 -11
  244. package/esm2022/lib/components/inputs/input-decimal/input-decimal.component.mjs +0 -276
  245. package/esm2022/lib/components/inputs/input-decimal/input-decimal.configuration.mjs +0 -50
  246. package/esm2022/lib/components/inputs/input-default-configurations.mjs +0 -14
  247. package/esm2022/lib/components/inputs/input-file/download-button/download-button.component.mjs +0 -102
  248. package/esm2022/lib/components/inputs/input-file/input-file.component.mjs +0 -100
  249. package/esm2022/lib/components/inputs/input-file/input-file.configuration.mjs +0 -24
  250. package/esm2022/lib/components/inputs/input-icon/fluenticons.mjs +0 -3734
  251. package/esm2022/lib/components/inputs/input-icon/input-icon.component.mjs +0 -60
  252. package/esm2022/lib/components/inputs/input-icon/ionicons.mjs +0 -1360
  253. package/esm2022/lib/components/inputs/input-provider-factory.mjs +0 -12
  254. package/esm2022/lib/components/inputs/input-select/directives/sion-label-template.directive.mjs +0 -16
  255. package/esm2022/lib/components/inputs/input-select/directives/sion-option-template.directive.mjs +0 -16
  256. package/esm2022/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.mjs +0 -16
  257. package/esm2022/lib/components/inputs/input-select/input-select.component.mjs +0 -376
  258. package/esm2022/lib/components/inputs/input-select/input.select.configuration.mjs +0 -233
  259. package/esm2022/lib/components/inputs/input-string/input-string.component.mjs +0 -41
  260. package/esm2022/lib/components/inputs/input-string/input-string.configuration.mjs +0 -20
  261. package/esm2022/lib/components/inputs/input-telefone/input-telefone.component.mjs +0 -74
  262. package/esm2022/lib/components/inputs/input-telefone/input-telefone.configuration.mjs +0 -12
  263. package/esm2022/lib/components/inputs/input-textarea/input-textarea.component.mjs +0 -82
  264. package/esm2022/lib/components/inputs/input-textarea/input-textarea.configuration.mjs +0 -7
  265. package/esm2022/lib/components/inputs/input-type.mjs +0 -24
  266. package/esm2022/lib/components/inputs/input-validators.mjs +0 -121
  267. package/esm2022/lib/components/inputs/inputs.module.mjs +0 -133
  268. package/esm2022/lib/components/loading/loading.component.mjs +0 -34
  269. package/esm2022/lib/components/login/login-admin/login-admin.component.mjs +0 -52
  270. package/esm2022/lib/components/login/login.component.mjs +0 -99
  271. package/esm2022/lib/components/main-content/main-content.component.mjs +0 -100
  272. package/esm2022/lib/components/popover/sion-popover/sion-popover.component.mjs +0 -182
  273. package/esm2022/lib/components/popover/sion-popover.module.mjs +0 -21
  274. package/esm2022/lib/components/sion-card/sion-card.component.mjs +0 -26
  275. package/esm2022/lib/components/stepper/step/step.component.mjs +0 -43
  276. package/esm2022/lib/components/stepper/stepper.component.mjs +0 -36
  277. package/esm2022/lib/components/stepper/stepper.module.mjs +0 -25
  278. package/esm2022/lib/components/tabs/tab/tab.component.mjs +0 -41
  279. package/esm2022/lib/components/tabs/tabs/tabs.component.mjs +0 -56
  280. package/esm2022/lib/components/tabs/tabs.module.mjs +0 -22
  281. package/esm2022/lib/components/text-tooltip/text-tooltip.component.mjs +0 -51
  282. package/esm2022/lib/components/tooltip/tooltip.component.mjs +0 -21
  283. package/esm2022/lib/core.module.mjs +0 -38
  284. package/esm2022/lib/directives/ng-var.directive.mjs +0 -29
  285. package/esm2022/lib/guards/auth.guard.mjs +0 -26
  286. package/esm2022/lib/guards/error.interceptor.mjs +0 -107
  287. package/esm2022/lib/guards/token.interceptor.mjs +0 -25
  288. package/esm2022/lib/index.mjs +0 -188
  289. package/esm2022/lib/pipes/secure.pipe.mjs +0 -42
  290. package/esm2022/lib/services/auth.service.mjs +0 -146
  291. package/esm2022/lib/services/environment.service.mjs +0 -26
  292. package/esm2022/lib/services/generic.service.mjs +0 -84
  293. package/esm2022/lib/services/modal-focus-trap.service.mjs +0 -62
  294. package/esm2022/lib/services/navigation-context.service.mjs +0 -111
  295. package/esm2022/lib/services/popover-focus-trap.service.mjs +0 -62
  296. package/esm2022/lib/services/route/route.cache.service.mjs +0 -15
  297. package/esm2022/lib/services/route/route.provider.service.mjs +0 -42
  298. package/esm2022/lib/services/usuario.service.mjs +0 -49
  299. package/esm2022/lib/services/utils.service.mjs +0 -190
  300. package/esm2022/lib/services/web/api-url-provider.service.mjs +0 -29
  301. package/esm2022/lib/services/web/http.ativo.service.mjs +0 -37
  302. package/esm2022/lib/services/web/http.service.mjs +0 -184
  303. package/esm2022/lib/services/web/storage.service.mjs +0 -186
  304. package/esm2022/public-api.mjs +0 -5
  305. package/esm2022/sapphire-ion-framework.mjs +0 -5
  306. package/fesm2022/sapphire-ion-framework.mjs +0 -12491
  307. package/fesm2022/sapphire-ion-framework.mjs.map +0 -1
  308. package/index.d.ts +0 -5
  309. package/lib/classes/comparison/comparison-operator.d.ts +0 -9
  310. package/lib/classes/comparison/comparison-value-type.d.ts +0 -23
  311. package/lib/classes/comparison/comparison.d.ts +0 -25
  312. package/lib/classes/comparison/properties/bool-property.d.ts +0 -7
  313. package/lib/classes/comparison/properties/date-property.d.ts +0 -11
  314. package/lib/classes/comparison/properties/datetime-property.d.ts +0 -11
  315. package/lib/classes/comparison/properties/decimal-property.d.ts +0 -11
  316. package/lib/classes/comparison/properties/enum-property.d.ts +0 -11
  317. package/lib/classes/comparison/properties/implicit-property.d.ts +0 -6
  318. package/lib/classes/comparison/properties/int-property.d.ts +0 -11
  319. package/lib/classes/comparison/properties/long-property.d.ts +0 -11
  320. package/lib/classes/comparison/properties/string-property.d.ts +0 -7
  321. package/lib/classes/comparison/properties/time-property.d.ts +0 -11
  322. package/lib/classes/environment.d.ts +0 -14
  323. package/lib/classes/filters/view-filtros.d.ts +0 -10
  324. package/lib/classes/infinite-scroll.d.ts +0 -26
  325. package/lib/classes/inputs/table-field-form-builder.d.ts +0 -5
  326. package/lib/classes/inputs/table-field.d.ts +0 -20
  327. package/lib/classes/page-option.d.ts +0 -7
  328. package/lib/classes/routes/default-routing-factory.d.ts +0 -8
  329. package/lib/classes/routes/id-preloader-configuration.d.ts +0 -28
  330. package/lib/classes/routes/route-data.d.ts +0 -5
  331. package/lib/components/carousel/carousel-image/carousel-image.component.d.ts +0 -10
  332. package/lib/components/carousel/carousel-item/carousel-item.component.d.ts +0 -9
  333. package/lib/components/carousel/carousel.component.d.ts +0 -32
  334. package/lib/components/carousel/carousel.module.d.ts +0 -12
  335. package/lib/components/carousel/i-carousel-item.component.d.ts +0 -9
  336. package/lib/components/content-block/content-block.component.d.ts +0 -15
  337. package/lib/components/default/default-list/abstract-list.d.ts +0 -21
  338. package/lib/components/default/default-list/default-list.component.d.ts +0 -47
  339. package/lib/components/default/default-list/header-list/header-list.component.d.ts +0 -45
  340. package/lib/components/default/default-list/list.d.ts +0 -40
  341. package/lib/components/default/default-pagination/default-pagination.component.d.ts +0 -36
  342. package/lib/components/default/default-table/default-table.component.d.ts +0 -90
  343. package/lib/components/default/default-table/th-filter/th-filter.component.d.ts +0 -23
  344. package/lib/components/default/default-view/abstract-view.d.ts +0 -18
  345. package/lib/components/default/default-view/default-view.component.d.ts +0 -40
  346. package/lib/components/default/default-view/header-view/header-view.component.d.ts +0 -36
  347. package/lib/components/default/default-view/view.d.ts +0 -67
  348. package/lib/components/default/default.module.d.ts +0 -31
  349. package/lib/components/default-page/default.page.d.ts +0 -35
  350. package/lib/components/drag-drop-file/drag-drop-file.directive.d.ts +0 -14
  351. package/lib/components/drag-drop-file/drag-drop-file.module.d.ts +0 -10
  352. package/lib/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.d.ts +0 -9
  353. package/lib/components/drawer/default-drawer-end/default-drawer-end.component.d.ts +0 -13
  354. package/lib/components/drawer/drawer-group/drawer-group.component.d.ts +0 -22
  355. package/lib/components/drawer/drawer.component.d.ts +0 -31
  356. package/lib/components/drawer/menu.d.ts +0 -9
  357. package/lib/components/filter/filter.component.d.ts +0 -29
  358. package/lib/components/http-responses-pages/forbidden-403/forbidden-403.component.d.ts +0 -8
  359. package/lib/components/image/image.component.d.ts +0 -23
  360. package/lib/components/info-popover/info-popover.component.d.ts +0 -15
  361. package/lib/components/inputs/custom-input.d.ts +0 -40
  362. package/lib/components/inputs/input-bool/input-bool.component.d.ts +0 -16
  363. package/lib/components/inputs/input-bool/input-bool.configuration.d.ts +0 -17
  364. package/lib/components/inputs/input-cep/input-cep.component.d.ts +0 -18
  365. package/lib/components/inputs/input-cep/input-cep.configuration.d.ts +0 -3
  366. package/lib/components/inputs/input-color/input-color.component.d.ts +0 -77
  367. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.d.ts +0 -19
  368. package/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.configuration.d.ts +0 -5
  369. package/lib/components/inputs/input-date/input-date.component.d.ts +0 -61
  370. package/lib/components/inputs/input-date/input-date.configuration.d.ts +0 -11
  371. package/lib/components/inputs/input-decimal/input-decimal.component.d.ts +0 -27
  372. package/lib/components/inputs/input-decimal/input-decimal.configuration.d.ts +0 -28
  373. package/lib/components/inputs/input-default-configurations.d.ts +0 -13
  374. package/lib/components/inputs/input-file/download-button/download-button.component.d.ts +0 -40
  375. package/lib/components/inputs/input-file/input-file.component.d.ts +0 -28
  376. package/lib/components/inputs/input-file/input-file.configuration.d.ts +0 -8
  377. package/lib/components/inputs/input-icon/fluenticons.d.ts +0 -1
  378. package/lib/components/inputs/input-icon/input-icon.component.d.ts +0 -20
  379. package/lib/components/inputs/input-icon/ionicons.d.ts +0 -1
  380. package/lib/components/inputs/input-provider-factory.d.ts +0 -4
  381. package/lib/components/inputs/input-select/directives/sion-label-template.directive.d.ts +0 -18
  382. package/lib/components/inputs/input-select/directives/sion-option-template.directive.d.ts +0 -14
  383. package/lib/components/inputs/input-select/directives/sion-placeholder-template.directive.d.ts +0 -18
  384. package/lib/components/inputs/input-select/input-select.component.d.ts +0 -83
  385. package/lib/components/inputs/input-select/input.select.configuration.d.ts +0 -127
  386. package/lib/components/inputs/input-string/input-string.component.d.ts +0 -14
  387. package/lib/components/inputs/input-string/input-string.configuration.d.ts +0 -15
  388. package/lib/components/inputs/input-telefone/input-telefone.component.d.ts +0 -19
  389. package/lib/components/inputs/input-telefone/input-telefone.configuration.d.ts +0 -9
  390. package/lib/components/inputs/input-textarea/input-textarea.component.d.ts +0 -17
  391. package/lib/components/inputs/input-textarea/input-textarea.configuration.d.ts +0 -4
  392. package/lib/components/inputs/input-type.d.ts +0 -22
  393. package/lib/components/inputs/input-validators.d.ts +0 -25
  394. package/lib/components/inputs/inputs.module.d.ts +0 -33
  395. package/lib/components/loading/loading.component.d.ts +0 -18
  396. package/lib/components/login/login-admin/login-admin.component.d.ts +0 -20
  397. package/lib/components/login/login.component.d.ts +0 -29
  398. package/lib/components/main-content/main-content.component.d.ts +0 -27
  399. package/lib/components/popover/sion-popover/sion-popover.component.d.ts +0 -43
  400. package/lib/components/popover/sion-popover.module.d.ts +0 -9
  401. package/lib/components/sion-card/sion-card.component.d.ts +0 -11
  402. package/lib/components/stepper/step/step.component.d.ts +0 -15
  403. package/lib/components/stepper/stepper.component.d.ts +0 -14
  404. package/lib/components/stepper/stepper.module.d.ts +0 -10
  405. package/lib/components/tabs/tab/tab.component.d.ts +0 -19
  406. package/lib/components/tabs/tabs/tabs.component.d.ts +0 -18
  407. package/lib/components/tabs/tabs.module.d.ts +0 -12
  408. package/lib/components/text-tooltip/text-tooltip.component.d.ts +0 -16
  409. package/lib/components/tooltip/tooltip.component.d.ts +0 -7
  410. package/lib/core.module.d.ts +0 -16
  411. package/lib/directives/ng-var.directive.d.ts +0 -12
  412. package/lib/guards/auth.guard.d.ts +0 -11
  413. package/lib/guards/error.interceptor.d.ts +0 -32
  414. package/lib/guards/token.interceptor.d.ts +0 -11
  415. package/lib/index.d.ts +0 -118
  416. package/lib/pipes/secure.pipe.d.ts +0 -15
  417. package/lib/services/auth.service.d.ts +0 -47
  418. package/lib/services/environment.service.d.ts +0 -10
  419. package/lib/services/generic.service.d.ts +0 -22
  420. package/lib/services/modal-focus-trap.service.d.ts +0 -13
  421. package/lib/services/navigation-context.service.d.ts +0 -14
  422. package/lib/services/popover-focus-trap.service.d.ts +0 -13
  423. package/lib/services/route/route.cache.service.d.ts +0 -7
  424. package/lib/services/route/route.provider.service.d.ts +0 -13
  425. package/lib/services/usuario.service.d.ts +0 -21
  426. package/lib/services/utils.service.d.ts +0 -53
  427. package/lib/services/web/api-url-provider.service.d.ts +0 -13
  428. package/lib/services/web/http.ativo.service.d.ts +0 -20
  429. package/lib/services/web/http.service.d.ts +0 -59
  430. package/lib/services/web/storage.service.d.ts +0 -46
  431. package/public-api.d.ts +0 -1
  432. /package/{themes → src/lib}/compiled-styles.scss +0 -0
  433. /package/{themes → src/lib}/components/carousel/carousel-image/carousel-image.component.scss +0 -0
  434. /package/{themes → src/lib}/components/carousel/carousel-item/carousel-item.component.scss +0 -0
  435. /package/{themes → src/lib}/components/carousel/carousel.component.scss +0 -0
  436. /package/{themes → src/lib}/components/content-block/content-block.component.scss +0 -0
  437. /package/{themes → src/lib}/components/default/default-list/default-list.component.scss +0 -0
  438. /package/{themes → src/lib}/components/default/default-list/header-list/header-list.component.scss +0 -0
  439. /package/{themes → src/lib}/components/default/default-pagination/default-pagination.component.scss +0 -0
  440. /package/{themes → src/lib}/components/default/default-table/default-table.component.scss +0 -0
  441. /package/{themes → src/lib}/components/default/default-table/th-filter/th-filter.component.scss +0 -0
  442. /package/{themes → src/lib}/components/default/default-view/default-view.component.scss +0 -0
  443. /package/{themes → src/lib}/components/default/default-view/header-view/header-view.component.scss +0 -0
  444. /package/{themes → src/lib}/components/default-page/default.page.scss +0 -0
  445. /package/{themes → src/lib}/components/drag-drop-file/drag-drop-overlay/drag-drop-overlay.component.scss +0 -0
  446. /package/{themes → src/lib}/components/drawer/default-drawer-end/default-drawer-end.component.scss +0 -0
  447. /package/{themes → src/lib}/components/drawer/drawer-group/drawer-group.component.scss +0 -0
  448. /package/{themes → src/lib}/components/drawer/drawer.component.scss +0 -0
  449. /package/{themes → src/lib}/components/filter/filter.component.scss +0 -0
  450. /package/{themes → src/lib}/components/http-responses-pages/forbidden-403/forbidden-403.component.scss +0 -0
  451. /package/{themes → src/lib}/components/image/image.component.scss +0 -0
  452. /package/{themes → src/lib}/components/info-popover/info-popover.component.scss +0 -0
  453. /package/{themes → src/lib}/components/inputs/input-bool/input-bool.component.scss +0 -0
  454. /package/{themes → src/lib}/components/inputs/input-cep/input-cep.component.scss +0 -0
  455. /package/{themes → src/lib}/components/inputs/input-color/input-color.component.scss +0 -0
  456. /package/{themes/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss → src/lib/components/inputs/input-color/input-color.configuration.ts} +0 -0
  457. /package/{themes/components/inputs/input-icon/input-icon.component.scss → src/lib/components/inputs/input-cpf-cnpj/input-cpf-cnpj.component.scss} +0 -0
  458. /package/{themes → src/lib}/components/inputs/input-date/input-date.component.scss +0 -0
  459. /package/{themes → src/lib}/components/inputs/input-decimal/input-decimal.component.scss +0 -0
  460. /package/{themes → src/lib}/components/inputs/input-file/download-button/download-button.component.scss +0 -0
  461. /package/{themes → src/lib}/components/inputs/input-file/input-file.component.scss +0 -0
  462. /package/{themes/components/inputs/input-string/input-string.component.scss → src/lib/components/inputs/input-icon/input-icon.component.scss} +0 -0
  463. /package/{themes → src/lib}/components/inputs/input-select/input-select.component.scss +0 -0
  464. /package/{themes/components/inputs/input-telefone/input-telefone.component.scss → src/lib/components/inputs/input-string/input-string.component.scss} +0 -0
  465. /package/{themes/components/loading/loading.component.scss → src/lib/components/inputs/input-telefone/input-telefone.component.scss} +0 -0
  466. /package/{themes → src/lib}/components/inputs/input-textarea/input-textarea.component.scss +0 -0
  467. /package/{themes → src/lib}/components/inputs/inputs.scss +0 -0
  468. /package/{themes/components/sion-card/sion-card.component.scss → src/lib/components/loading/loading.component.scss} +0 -0
  469. /package/{themes → src/lib}/components/login/login-admin/login-admin.component.scss +0 -0
  470. /package/{themes → src/lib}/components/login/login.component.scss +0 -0
  471. /package/{themes → src/lib}/components/main-content/main-content.component.scss +0 -0
  472. /package/{themes → src/lib}/components/popover/sion-popover/sion-popover.component.scss +0 -0
  473. /package/{themes/components/stepper/stepper.component.scss → src/lib/components/sion-card/sion-card.component.scss} +0 -0
  474. /package/{themes → src/lib}/components/stepper/step/step.component.scss +0 -0
  475. /package/{themes/components/tabs/tab/tab.component.scss → src/lib/components/stepper/stepper.component.scss} +0 -0
  476. /package/{themes/components/text-tooltip/text-tooltip.component.scss → src/lib/components/tabs/tab/tab.component.scss} +0 -0
  477. /package/{themes → src/lib}/components/tabs/tabs/tabs.component.scss +0 -0
  478. /package/{themes → src/lib}/components/tooltip/tooltip.component.scss +0 -0
  479. /package/{themes → src/lib}/styles/components.scss +0 -0
  480. /package/{themes → src/lib}/styles/core.styles.scss +0 -0
  481. /package/{themes → src/lib}/styles/ionic/ion-action-sheet.scss +0 -0
  482. /package/{themes → src/lib}/styles/ionic/ion-alert.scss +0 -0
  483. /package/{themes → src/lib}/styles/ionic/ion-button.scss +0 -0
  484. /package/{themes → src/lib}/styles/ionic/ion-card.scss +0 -0
  485. /package/{themes → src/lib}/styles/ionic/ion-content.scss +0 -0
  486. /package/{themes → src/lib}/styles/ionic/ion-datetime.scss +0 -0
  487. /package/{themes → src/lib}/styles/ionic/ion-item.scss +0 -0
  488. /package/{themes → src/lib}/styles/ionic/ion-list.scss +0 -0
  489. /package/{themes → src/lib}/styles/ionic/ion-modal.scss +0 -0
  490. /package/{themes → src/lib}/styles/ionic/ion-popover.scss +0 -0
  491. /package/{themes → src/lib}/styles/ionic/ion-progress-bar.scss +0 -0
  492. /package/{themes → src/lib}/styles/ionic/ion-searchbar.scss +0 -0
  493. /package/{themes → src/lib}/styles/ionic/ion-toast.scss +0 -0
  494. /package/{themes → src/lib}/styles/ionic.scss +0 -0
  495. /package/{themes → src/lib}/styles/login-default.scss +0 -0
  496. /package/{themes → src/lib}/styles/mixins.scss +0 -0
  497. /package/{themes → src/lib}/styles/styles.scss +0 -0
  498. /package/{themes → src/lib}/styles/translucid.scss +0 -0
@@ -0,0 +1,150 @@
1
+ import { Observable, firstValueFrom } from 'rxjs';
2
+ import { NavController } from '@ionic/angular';
3
+ import { Preferences } from '@capacitor/preferences';
4
+ import { HttpClient } from '@angular/common/http';
5
+ import { Injectable } from '@angular/core';
6
+ import { jwtDecode } from 'jwt-decode';
7
+
8
+ import { ApiUrlProviderService } from '../services/web/api-url-provider.service';
9
+ import { EnvironmentService } from './environment.service';
10
+ import { Utils } from './utils.service';
11
+
12
+ @Injectable({
13
+ providedIn: 'root'
14
+ })
15
+ export class AuthService {
16
+
17
+ constructor(
18
+ private http: HttpClient,
19
+ private navController: NavController,
20
+ private coreService: EnvironmentService,
21
+ private apiUrlProviderService: ApiUrlProviderService
22
+ ) {
23
+ this.SetToken();
24
+ }
25
+
26
+ private localUserKey : string = this.coreService.environment.applicationName.toUpperCase() + "_USER_KEY";
27
+ private localAdminKey : string = this.coreService.environment.applicationName.toUpperCase() + "_ADMIN_KEY";
28
+ public currentToken: string | null = null;
29
+
30
+ async SetToken(): Promise<void> {
31
+ const Token = await this.LoadToken();
32
+ const TokenAdmin = await this.LoadTokenAdmin();
33
+ if(this.isTokenValid(Token)){
34
+ this.currentToken = await this.JWToken();
35
+ }
36
+
37
+ if(TokenAdmin && this.isTokenValid(TokenAdmin)){
38
+ this._isAdmin = true;
39
+ }
40
+
41
+ return;
42
+ }
43
+
44
+ async Loggout(): Promise<void> {
45
+ await Preferences.remove({ key: this.localUserKey });
46
+ await Preferences.remove({ key: this.localAdminKey });
47
+ this.currentToken = null;
48
+ this.navController.navigateRoot("login");
49
+ }
50
+
51
+ _isAdmin: boolean = false;
52
+ get isAdmin(){ return this._isAdmin; }
53
+
54
+ async Login(credentials: Authentication): Promise<any> {
55
+ try{
56
+ const JWToken = await firstValueFrom(this.ApiLogin(credentials));
57
+ await this.SaveToken(JWToken);
58
+ await this.SetToken();
59
+ return (jwtDecode(JWToken));
60
+ }
61
+ catch (Error){
62
+ throw Error;
63
+ }
64
+ }
65
+
66
+ async BypassLogin(id: number): Promise<any> {
67
+ try{
68
+ const JWToken = await firstValueFrom(this.ApiBypassLogin(id));
69
+ await this.SaveToken(JWToken);
70
+ await this.SetToken();
71
+ return (jwtDecode(JWToken));
72
+ }
73
+ catch (Error){
74
+ throw Error;
75
+ }
76
+ }
77
+
78
+ ApiLogin(credentials: Authentication): Observable<string> {
79
+ return this.http.post<string>(this.apiUrlProviderService.apiUrl + 'auth', credentials);
80
+ }
81
+ ApiBypassLogin(id: number): Observable<string> {
82
+ return this.http.get<string>(this.apiUrlProviderService.apiUrl + `auth/${id}`);
83
+ }
84
+
85
+ async SaveToken(JWToken: string): Promise<void>{
86
+ if((jwtDecode(JWToken) as Token).id == 1){
87
+ await Preferences.set({ key: this.localAdminKey, value: JWToken});
88
+ }
89
+ await Preferences.set({ key: this.localUserKey, value: JWToken })
90
+ }
91
+
92
+ async LoadToken(): Promise<Token | null | any> {
93
+ const JWToken = (await Preferences.get({ key: this.localUserKey})).value;
94
+ if(JWToken){
95
+ const ParsedObject = jwtDecode(JWToken);
96
+ return ParsedObject;
97
+ }else{
98
+ return null;
99
+ }
100
+ }
101
+ async LoadTokenAdmin(): Promise<Token | null | any> {
102
+ const JWToken = (await Preferences.get({ key: this.localAdminKey})).value;
103
+ if(JWToken){
104
+ const ParsedObject = jwtDecode(JWToken);
105
+ return ParsedObject;
106
+ }else{
107
+ return null;
108
+ }
109
+ }
110
+
111
+ async JWToken(): Promise<string> {
112
+ const JWToken: string = (await Preferences.get({ key: this.localUserKey })).value;
113
+ return JWToken;
114
+ }
115
+
116
+ async GetBearer(): Promise<string>{
117
+ return `Bearer ${await this.JWToken()}`
118
+ }
119
+
120
+ public isTokenValid(Token: any): boolean{
121
+ if(!Token){ return false; }else
122
+ return !(Utils.UNIXToDate(Token.exp) < new Date())
123
+ }
124
+ }
125
+
126
+ class Authentication{
127
+ public Apelido: string = null;
128
+ public Senha : string = null;
129
+ }
130
+
131
+ class Token {
132
+ [prop: string]: any;
133
+ Acesso : number = 0;
134
+ Apelido : string = "";
135
+ Nome : string = "";
136
+ id : number = 0;
137
+ idEmpresa: number = 0;
138
+
139
+ constructor(){}
140
+
141
+ patch(token: Token | any): void{
142
+ for(let prop of Object.getOwnPropertyNames(token)){
143
+ if(Number((token[prop]))){
144
+ this[prop] = Number(token[prop]);
145
+ continue;
146
+ }
147
+ this[prop] = token[prop];
148
+ }
149
+ }
150
+ }
@@ -0,0 +1,164 @@
1
+ import { Injectable } from '@angular/core';
2
+
3
+ @Injectable({
4
+ providedIn: 'root'
5
+ })
6
+ export class CryptoService {
7
+
8
+ key: CryptoKey;
9
+
10
+ constructor(
11
+ ) { }
12
+
13
+ Initialize(){
14
+
15
+ }
16
+ }
17
+
18
+
19
+ //[ Array Buffer ]
20
+
21
+ /**
22
+ * Converts a string to an ArrayBuffer using UTF-8 encoding
23
+ * @param str - The string to convert
24
+ * @returns An ArrayBuffer containing the UTF-8 encoded string
25
+ */
26
+ function StringToArrayBuffer(str: string): ArrayBuffer {
27
+ const encoder = new TextEncoder()
28
+ return encoder.encode(str).buffer as ArrayBuffer
29
+ }
30
+
31
+ /**
32
+ * Converts an ArrayBuffer to a string using UTF-8 encoding
33
+ * @param buffer - The ArrayBuffer to convert
34
+ * @returns A decoded string
35
+ */
36
+ function ArrayBufferToString(buffer: ArrayBuffer): string {
37
+ const decoder = new TextDecoder()
38
+ return decoder.decode(buffer)
39
+ }
40
+
41
+ //------------------------------------------------------------
42
+
43
+ // More compact base64 encoding (URL-safe with no padding)
44
+
45
+ const iterations: number = 10;
46
+
47
+ // More compact base64 encoding (URL-safe with no padding)
48
+ function toBase64Url(buffer: ArrayBuffer): string {
49
+ let binary = ""
50
+ const bytes = new Uint8Array(buffer)
51
+ for (let i = 0; i < bytes.byteLength; i++) {
52
+ binary += String.fromCharCode(bytes[i])
53
+ }
54
+ // Standard base64 encoding
55
+ const base64 = btoa(binary)
56
+ // Make URL safe and remove padding
57
+ return base64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "")
58
+ }
59
+
60
+ // Decode the compact base64 encoding
61
+ function fromBase64Url(base64url: string): ArrayBuffer {
62
+ // Add padding if needed
63
+ let base64 = base64url
64
+ if (base64.length % 4 !== 0) {
65
+ base64 += "=".repeat(4 - (base64.length % 4))
66
+ }
67
+ // Convert back to standard base64
68
+ base64 = base64.replace(/-/g, "+").replace(/_/g, "/")
69
+
70
+ const binaryString = atob(base64)
71
+ const bytes = new Uint8Array(binaryString.length)
72
+ for (let i = 0; i < binaryString.length; i++) {
73
+ bytes[i] = binaryString.charCodeAt(i)
74
+ }
75
+ return bytes.buffer
76
+ }
77
+
78
+ async function CreateKey(passwordBuffer: Uint8Array, salt: Uint8Array, iv: Uint8Array){
79
+ try {
80
+ // Import the password as a key
81
+ const importedKey = await window.crypto.subtle.importKey("raw", passwordBuffer, { name: "PBKDF2" }, false, ["deriveKey",])
82
+
83
+ // Derive the actual encryption key
84
+ const key = await window.crypto.subtle.deriveKey(
85
+ { name: "PBKDF2", salt, iterations: iterations, hash: "SHA-128" },
86
+ importedKey,
87
+ { name: "AES-GCM", length: 128 },
88
+ false,
89
+ ["encrypt"],
90
+ )
91
+
92
+ // Use the more compact base64url encoding
93
+ return key;
94
+
95
+ } catch (error) {
96
+ console.error("Encryption error:", error)
97
+ throw error
98
+ }
99
+ }
100
+
101
+ // Encrypt a string with a key
102
+ async function EncryptString(plaintext: string, passwordBuffer: Uint8Array, salt: Uint8Array, iv: Uint8Array): Promise<string> {
103
+ try {
104
+ // Import the password as a key
105
+ const importedKey = await window.crypto.subtle.importKey("raw", passwordBuffer, { name: "PBKDF2" }, false, ["deriveKey",])
106
+
107
+ // Derive the actual encryption key
108
+ const key = await window.crypto.subtle.deriveKey(
109
+ { name: "PBKDF2", salt, iterations: iterations, hash: "SHA-256" },
110
+ importedKey,
111
+ { name: "AES-GCM", length: 256 },
112
+ false,
113
+ ["encrypt"],
114
+ )
115
+
116
+ // Encrypt the data
117
+ const encryptedData = await window.crypto.subtle.encrypt({ name: "AES-GCM", iv }, key, StringToArrayBuffer(plaintext))
118
+
119
+ // Use the more compact base64url encoding
120
+ return toBase64Url(encryptedData)
121
+ } catch (error) {
122
+ console.error("Encryption error:", error)
123
+ throw error
124
+ }
125
+ }
126
+
127
+ async function decryptString(encryptedBase64Url: string, password: string, salt: Uint8Array, iv: Uint8Array): Promise<string> {
128
+ try {
129
+ // Import the password as a key
130
+ const passwordBuffer = StringToArrayBuffer(password)
131
+ const importedKey = await window.crypto.subtle.importKey("raw", passwordBuffer, { name: "PBKDF2" }, false, [
132
+ "deriveKey",
133
+ ])
134
+
135
+ // Derive the same key using the fixed salt
136
+ const key = await window.crypto.subtle.deriveKey(
137
+ {
138
+ name: "PBKDF2",
139
+ salt,
140
+ iterations: iterations,
141
+ hash: "SHA-256",
142
+ },
143
+ importedKey,
144
+ { name: "AES-GCM", length: 256 },
145
+ false,
146
+ ["decrypt"],
147
+ )
148
+
149
+ // Decrypt the data
150
+ const decryptedData = await window.crypto.subtle.decrypt(
151
+ {
152
+ name: "AES-GCM",
153
+ iv,
154
+ },
155
+ key,
156
+ fromBase64Url(encryptedBase64Url),
157
+ )
158
+
159
+ return ArrayBufferToString(decryptedData)
160
+ } catch (error) {
161
+ console.error("Decryption error:", error)
162
+ throw error
163
+ }
164
+ }
@@ -0,0 +1,17 @@
1
+ import { Inject, Injectable } from "@angular/core";
2
+ import { EnvironmentInjectionToken } from "../core.module";
3
+ import { Environment } from "../classes/environment";
4
+
5
+ @Injectable({
6
+ providedIn: 'root'
7
+ })
8
+ export class EnvironmentService {
9
+ constructor(@Inject(EnvironmentInjectionToken) private config: Environment) {
10
+ this._environment = this.config;
11
+ }
12
+
13
+ private _environment: Environment
14
+ get environment(): Environment{
15
+ return this._environment;
16
+ }
17
+ }
@@ -0,0 +1,85 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { ActivatedRoute } from "@angular/router";
3
+ import { Title } from '@angular/platform-browser';
4
+ import { AlertButton, AlertController, ToastController } from "@ionic/angular";
5
+
6
+ import { EnvironmentService } from './environment.service';
7
+
8
+ @Injectable({
9
+ providedIn: 'root'
10
+ })
11
+
12
+ export class GenericService{
13
+ constructor(
14
+ private toastController: ToastController,
15
+ private alertController: AlertController,
16
+ private titleController: Title,
17
+ private coreService: EnvironmentService,
18
+ ){}
19
+
20
+ public async PresentToast(message: string, icon = 'alert-circle') {
21
+ const toast = await this.toastController.create({
22
+ message: message,
23
+ duration: 1750,
24
+ icon: icon,
25
+ position: 'bottom',
26
+ translucent: false,
27
+ });
28
+
29
+ await toast.present();
30
+ }
31
+
32
+ public async PresentToastSuccess(message: string = "Salvo com sucesso!") {
33
+ const toast = await this.toastController.create({
34
+ message: message,
35
+ duration: 1750,
36
+ icon: 'checkmark-circle',
37
+ position: 'bottom',
38
+ translucent: false,
39
+ });
40
+
41
+ await toast.present();
42
+ return toast.onDidDismiss();
43
+ }
44
+
45
+ public static CancelButton: AlertButton = {
46
+ text: 'Cancelar',
47
+ role: 'cancel',
48
+ }
49
+ public static ConfirmButton : AlertButton = {
50
+ text: 'OK',
51
+ role: 'confirm',
52
+ }
53
+ static defaultAlertButtons: AlertButton[] = [GenericService.ConfirmButton];
54
+
55
+ public async PresentAlert(header: string, message: string, buttons: AlertButton[] = GenericService.defaultAlertButtons) {
56
+ const alert = await this.alertController.create({
57
+ header: header,
58
+ message: message,
59
+ buttons: buttons,
60
+ });
61
+ await alert.present();
62
+ return alert.onDidDismiss();
63
+ }
64
+
65
+ public SetTitle(title: string){
66
+ this.titleController.setTitle(this.coreService.environment.applicationName + " | " + title)
67
+ }
68
+
69
+ public GetId(activatedRoute: ActivatedRoute, depth: number = 2): number | null{
70
+ try{
71
+ var Route = activatedRoute;
72
+ for(let i = 0; i < depth; i++){
73
+ Route = Route.parent;
74
+ }
75
+ if(Route.snapshot.paramMap.has('id')){
76
+ return Number(Route.snapshot.paramMap.get('id'));
77
+ }
78
+ else{
79
+ return 0;
80
+ }
81
+ }catch{
82
+ return null;
83
+ }
84
+ }
85
+ }
@@ -0,0 +1,65 @@
1
+ import { Injectable } from '@angular/core';
2
+
3
+ /**
4
+ * Corrige o focus trap em modais do Ionic, permite que o foco não fique preso dentro do modal.
5
+ * Utilizado para concertar interatividade com popovers e outros elementos que podem ser interativos fora do modal.
6
+ */
7
+ @Injectable({
8
+ providedIn: 'root'
9
+ })
10
+ export class ModalFocusTrapService {
11
+
12
+ constructor() {
13
+ this.initGlobalFocusTrapDisable();
14
+ }
15
+
16
+ private initGlobalFocusTrapDisable() {
17
+ // Wait for the platform to be ready
18
+ document.addEventListener('DOMContentLoaded', () => {
19
+ this.setupModalObserver();
20
+ });
21
+ }
22
+
23
+ private setupModalObserver() {
24
+ // Create a mutation observer to watch for new modals
25
+ const observer = new MutationObserver((mutations) => {
26
+ mutations.forEach((mutation) => {
27
+ mutation.addedNodes.forEach((node) => {
28
+ if (node.nodeType === Node.ELEMENT_NODE) {
29
+ const element = node as Element;
30
+
31
+ // Check if the added node is an ion-modal
32
+ if (element.tagName?.toLowerCase() === 'ion-modal') {
33
+ this.disableFocusTrap(element);
34
+ }
35
+
36
+ // Check for ion-modal children
37
+ const modals = element.querySelectorAll?.('ion-modal');
38
+ modals?.forEach(modal => this.disableFocusTrap(modal));
39
+ }
40
+ });
41
+ });
42
+ });
43
+
44
+ // Start observing
45
+ observer.observe(document.body, {
46
+ childList: true,
47
+ subtree: true
48
+ });
49
+
50
+ // Also handle existing modals
51
+ const existingModals = document.querySelectorAll('ion-modal');
52
+ existingModals.forEach(modal => this.disableFocusTrap(modal));
53
+ }
54
+
55
+ private disableFocusTrap(modal: Element) {
56
+ // Add the CSS class
57
+ modal.classList.add('ion-disable-focus-trap');
58
+
59
+ // Set the property if it exists
60
+ const modalElement = modal as any;
61
+ if (modalElement.disableFocusTrap !== undefined) {
62
+ modalElement.disableFocusTrap = true;
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,121 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { NavigationEnd, Router } from '@angular/router';
3
+ import { filter } from 'rxjs';
4
+
5
+ @Injectable({ providedIn: 'root' })
6
+ export class NavigationContextService {
7
+ private previousUrl: string | null = null;
8
+ private currentUrl: string | null = null;
9
+
10
+ constructor(private router: Router) {
11
+ this.currentUrl = this.router.url;
12
+
13
+ this.router.events.pipe(filter(e => e instanceof NavigationEnd)).subscribe((e: NavigationEnd) => {
14
+ const nextUrl = e.urlAfterRedirects;
15
+ const preserve = history.state?.__preserveBack == true;
16
+
17
+ const currentBase = this.currentUrl ? this.getBaseRoute(this.currentUrl) : null;
18
+ const nextBase = this.getBaseRoute(nextUrl);
19
+
20
+ const nav = this.router.getCurrentNavigation();
21
+ const isBack = nav?.trigger == 'popstate';
22
+
23
+ // Redirect técnico - ignora
24
+ if (preserve) {
25
+ this.currentUrl = nextUrl;
26
+ return;
27
+ }
28
+
29
+ // Navegação interna da mesma view (Ex: Item <-> View Principal)
30
+ if (currentBase && currentBase == nextBase) {
31
+ // ajustes no histórico baseando-se estritamente na hierarquia.
32
+
33
+ const cleanNext = nextUrl.split('?')[0].replace(/\/$/, '');
34
+ const cleanBase = nextBase.replace(/\/$/, '');
35
+
36
+ if (cleanNext == cleanBase) {
37
+ // voltou para a raiz da entidade
38
+ this.previousUrl = this.getListRoute(nextBase);
39
+ } else {
40
+ // voltou de um filho → pai REAL
41
+ this.previousUrl = this.getParentRoute(nextUrl);
42
+ }
43
+
44
+
45
+ this.currentUrl = nextUrl;
46
+ return;
47
+ }
48
+
49
+ // Chegou numa view base VIA BACK (de outro módulo)
50
+ if (isBack) {
51
+ // Se voltou de fora (OS -> Obra), recalcula para garantir
52
+ const cleanNext = nextUrl.split('?')[0].replace(/\/$/, '');
53
+ const cleanBase = nextBase.replace(/\/$/, '');
54
+
55
+ if (cleanNext === cleanBase) {
56
+ this.previousUrl = this.getListRoute(nextBase);
57
+ } else {
58
+ this.previousUrl = nextBase;
59
+ }
60
+
61
+ this.currentUrl = nextUrl;
62
+ return;
63
+ }
64
+
65
+ // Navegação real (Entrando em um módulo novo ou avançando)
66
+ this.previousUrl = this.currentUrl;
67
+ this.currentUrl = nextUrl;
68
+ });
69
+ }
70
+
71
+ private getBaseRoute(url: string): string {
72
+ const parts = url.split('/').filter(Boolean);
73
+ const base: string[] = [];
74
+
75
+ for (const part of parts) {
76
+ if (!isNaN(Number(part))) {
77
+ break;
78
+ }
79
+ base.push(part);
80
+ }
81
+ return '/' + base.join('/');
82
+ }
83
+
84
+ private getListRoute(baseRoute: string): string {
85
+ //verifica se a rota de retorno é a inicial
86
+ const parts = baseRoute.split('/').filter(Boolean);
87
+ return '/' + parts[0];
88
+ }
89
+
90
+ private getParentRoute(url: string): string {
91
+ const clean = url.split('?')[0].replace(/\/$/, '');
92
+ let parts = clean.split('/').filter(Boolean);
93
+ // ---- REGRA FROM ----
94
+ const idx = parts.indexOf('from');
95
+ if (idx != -1) {
96
+ // remove o "from" e o parâmetro após ele
97
+ parts = parts.slice(0, idx);
98
+ // se o último item for view → remove também
99
+ if (parts[parts.length - 1] === 'view') {
100
+ parts.pop();
101
+ }
102
+
103
+ return '/' + parts.join('/');
104
+ }
105
+
106
+ // ---- REGRA VIEW ----
107
+ if (parts.length <= 1) {
108
+ return '/' + parts.join('/');
109
+ }
110
+ if (!isNaN(Number(parts[parts.length - 1]))) {
111
+ parts.pop();
112
+ }
113
+ if (parts[parts.length - 1] === 'view') {
114
+ parts.pop();
115
+ }
116
+ return '/' + parts.join('/');
117
+ }
118
+ getBackRoute(): string | null {
119
+ return this.previousUrl;
120
+ }
121
+ }
@@ -0,0 +1,65 @@
1
+ import { Injectable } from '@angular/core';
2
+
3
+ /**
4
+ * Corrige o focus trap em modais do Ionic, permite que o foco não fique preso dentro do popover.
5
+ * Utilizado para concertar interatividade com popovers e outros elementos que podem ser interativos fora do popover.
6
+ */
7
+ @Injectable({
8
+ providedIn: 'root'
9
+ })
10
+ export class PopoverFocusTrapService {
11
+
12
+ constructor() {
13
+ this.initGlobalFocusTrapDisable();
14
+ }
15
+
16
+ private initGlobalFocusTrapDisable() {
17
+ // Wait for the platform to be ready
18
+ document.addEventListener('DOMContentLoaded', () => {
19
+ this.setuppopoverObserver();
20
+ });
21
+ }
22
+
23
+ private setuppopoverObserver() {
24
+ // Create a mutation observer to watch for new popovers
25
+ const observer = new MutationObserver((mutations) => {
26
+ mutations.forEach((mutation) => {
27
+ mutation.addedNodes.forEach((node) => {
28
+ if (node.nodeType === Node.ELEMENT_NODE) {
29
+ const element = node as Element;
30
+
31
+ // Check if the added node is an ion-popover
32
+ if (element.tagName?.toLowerCase() === 'ion-popover') {
33
+ this.disableFocusTrap(element);
34
+ }
35
+
36
+ // Check for ion-popover children
37
+ const popovers = element.querySelectorAll?.('ion-popover');
38
+ popovers?.forEach(popover => this.disableFocusTrap(popover));
39
+ }
40
+ });
41
+ });
42
+ });
43
+
44
+ // Start observing
45
+ observer.observe(document.body, {
46
+ childList: true,
47
+ subtree: true
48
+ });
49
+
50
+ // Also handle existing popovers
51
+ const existingpopovers = document.querySelectorAll('ion-popover');
52
+ existingpopovers.forEach(popover => this.disableFocusTrap(popover));
53
+ }
54
+
55
+ private disableFocusTrap(popover: Element) {
56
+ // Add the CSS class
57
+ popover.classList.add('ion-disable-focus-trap');
58
+
59
+ // Set the property if it exists
60
+ const popoverElement = popover as any;
61
+ if (popoverElement.disableFocusTrap !== undefined) {
62
+ popoverElement.disableFocusTrap = true;
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,17 @@
1
+ import { Menu } from "../../components/drawer/menu";
2
+
3
+ export class RouteCacheService {
4
+ private cachedData: Menu[] | null = null;
5
+
6
+ getCachedData(): Menu[] {
7
+ return this.cachedData;
8
+ }
9
+
10
+ setCachedData(data: Menu[]): void {
11
+ this.cachedData = data;
12
+ }
13
+
14
+ isDataCached(): boolean {
15
+ return this.cachedData != null;
16
+ }
17
+ }