zek 17.3.119 → 19.0.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 (187) hide show
  1. package/README.md +49 -10
  2. package/fesm2022/zek.mjs +856 -750
  3. package/fesm2022/zek.mjs.map +1 -1
  4. package/lib/components/base.component.d.ts +1 -1
  5. package/lib/components/core-ui.component.d.ts +1 -1
  6. package/lib/components/core.component.d.ts +1 -1
  7. package/lib/components/edit-base.component.d.ts +3 -3
  8. package/lib/components/list-base.component.d.ts +1 -1
  9. package/lib/modules/bb/bb-modal-base.d.ts +1 -1
  10. package/lib/modules/validators/directive.d.ts +1 -1
  11. package/package.json +3 -5
  12. package/esm2022/lib/components/args.mjs +0 -2
  13. package/esm2022/lib/components/base.component.mjs +0 -101
  14. package/esm2022/lib/components/core-ui.component.mjs +0 -193
  15. package/esm2022/lib/components/core.component.mjs +0 -46
  16. package/esm2022/lib/components/edit-base.component.mjs +0 -226
  17. package/esm2022/lib/components/index.mjs +0 -8
  18. package/esm2022/lib/components/list-base.component.mjs +0 -311
  19. package/esm2022/lib/components/types.mjs +0 -2
  20. package/esm2022/lib/directives/delayed-input.directive.mjs +0 -57
  21. package/esm2022/lib/directives/index.mjs +0 -2
  22. package/esm2022/lib/models/alert-type.mjs +0 -2
  23. package/esm2022/lib/models/api.mjs +0 -2
  24. package/esm2022/lib/models/approve.moodel.mjs +0 -2
  25. package/esm2022/lib/models/batch.model.mjs +0 -2
  26. package/esm2022/lib/models/captcha.model.mjs +0 -2
  27. package/esm2022/lib/models/ctor.mjs +0 -2
  28. package/esm2022/lib/models/edit-base.model.mjs +0 -3
  29. package/esm2022/lib/models/file.model.mjs +0 -2
  30. package/esm2022/lib/models/filter.model.mjs +0 -12
  31. package/esm2022/lib/models/gender.model.mjs +0 -6
  32. package/esm2022/lib/models/index.mjs +0 -22
  33. package/esm2022/lib/models/key-pair.model.mjs +0 -14
  34. package/esm2022/lib/models/list-base.model.mjs +0 -3
  35. package/esm2022/lib/models/login.model.mjs +0 -2
  36. package/esm2022/lib/models/modal-size.mjs +0 -2
  37. package/esm2022/lib/models/month.model.mjs +0 -16
  38. package/esm2022/lib/models/nav.model.mjs +0 -2
  39. package/esm2022/lib/models/pager.model.mjs +0 -33
  40. package/esm2022/lib/models/print.model.mjs +0 -6
  41. package/esm2022/lib/models/tree.mjs +0 -2
  42. package/esm2022/lib/models/tree.model.mjs +0 -7
  43. package/esm2022/lib/models/valid-event-args.model.mjs +0 -6
  44. package/esm2022/lib/modules/age/age.pipe.mjs +0 -22
  45. package/esm2022/lib/modules/age/index.mjs +0 -2
  46. package/esm2022/lib/modules/alert/alert/alert.mjs +0 -48
  47. package/esm2022/lib/modules/alert/index.mjs +0 -5
  48. package/esm2022/lib/modules/alert/toast/toast.mjs +0 -119
  49. package/esm2022/lib/modules/alert/validation/validation.mjs +0 -56
  50. package/esm2022/lib/modules/autocomplete/autocomplete.directive.mjs +0 -25
  51. package/esm2022/lib/modules/autocomplete/index.mjs +0 -2
  52. package/esm2022/lib/modules/bb/bb-modal-base.mjs +0 -74
  53. package/esm2022/lib/modules/bb/bb-modal-toolbar.mjs +0 -44
  54. package/esm2022/lib/modules/bb/bb.component.mjs +0 -207
  55. package/esm2022/lib/modules/bb/bb.module.mjs +0 -37
  56. package/esm2022/lib/modules/bb/index.mjs +0 -5
  57. package/esm2022/lib/modules/callback/callback.pipe.mjs +0 -23
  58. package/esm2022/lib/modules/callback/index.mjs +0 -2
  59. package/esm2022/lib/modules/card/card/card.mjs +0 -48
  60. package/esm2022/lib/modules/card/index.mjs +0 -2
  61. package/esm2022/lib/modules/countdown/countdown.mjs +0 -103
  62. package/esm2022/lib/modules/countdown/index.mjs +0 -2
  63. package/esm2022/lib/modules/date-ago/date-ago.pipe.mjs +0 -45
  64. package/esm2022/lib/modules/date-ago/index.mjs +0 -2
  65. package/esm2022/lib/modules/datepicker/date-value-accessor.mjs +0 -188
  66. package/esm2022/lib/modules/datepicker/datepicker.module.mjs +0 -31
  67. package/esm2022/lib/modules/datepicker/index.mjs +0 -3
  68. package/esm2022/lib/modules/edit-toolbar/edit-toolbar.mjs +0 -94
  69. package/esm2022/lib/modules/edit-toolbar/index.mjs +0 -2
  70. package/esm2022/lib/modules/file/file-size.pipe.mjs +0 -50
  71. package/esm2022/lib/modules/file/index.mjs +0 -2
  72. package/esm2022/lib/modules/file-input/file-input.mjs +0 -79
  73. package/esm2022/lib/modules/file-input/index.mjs +0 -2
  74. package/esm2022/lib/modules/file-viewer/file-viewer.mjs +0 -53
  75. package/esm2022/lib/modules/file-viewer/index.mjs +0 -2
  76. package/esm2022/lib/modules/google-login-button/google-login-button.mjs +0 -135
  77. package/esm2022/lib/modules/google-login-button/index.mjs +0 -3
  78. package/esm2022/lib/modules/google-login-button/loader.mjs +0 -10
  79. package/esm2022/lib/modules/google-login-button/module.mjs +0 -40
  80. package/esm2022/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.mjs +0 -147
  81. package/esm2022/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.mjs +0 -16
  82. package/esm2022/lib/modules/grid-toolbar/index.mjs +0 -3
  83. package/esm2022/lib/modules/index.mjs +0 -39
  84. package/esm2022/lib/modules/list-toolbar/index.mjs +0 -2
  85. package/esm2022/lib/modules/list-toolbar/list-toolbar.mjs +0 -112
  86. package/esm2022/lib/modules/loading/index.mjs +0 -4
  87. package/esm2022/lib/modules/loading/loading-interceptor.mjs +0 -59
  88. package/esm2022/lib/modules/loading/loading.mjs +0 -33
  89. package/esm2022/lib/modules/loading/loading.module.mjs +0 -32
  90. package/esm2022/lib/modules/modal/filter-modal/filter-modal.component.mjs +0 -23
  91. package/esm2022/lib/modules/modal/index.mjs +0 -5
  92. package/esm2022/lib/modules/modal/modal/modal.component.mjs +0 -355
  93. package/esm2022/lib/modules/modal/modal.module.mjs +0 -62
  94. package/esm2022/lib/modules/modal/sum-modal/sum-modal.component.mjs +0 -27
  95. package/esm2022/lib/modules/numeric/index.mjs +0 -2
  96. package/esm2022/lib/modules/numeric/numeric.directive.mjs +0 -92
  97. package/esm2022/lib/modules/page-title/index.mjs +0 -2
  98. package/esm2022/lib/modules/page-title/page-title.component.mjs +0 -33
  99. package/esm2022/lib/modules/pager/index.mjs +0 -2
  100. package/esm2022/lib/modules/pager/pager/pager.mjs +0 -52
  101. package/esm2022/lib/modules/password/index.mjs +0 -2
  102. package/esm2022/lib/modules/password/password.mjs +0 -48
  103. package/esm2022/lib/modules/progress/index.mjs +0 -2
  104. package/esm2022/lib/modules/progress/progress.mjs +0 -97
  105. package/esm2022/lib/modules/radio/index.mjs +0 -2
  106. package/esm2022/lib/modules/radio/radio.mjs +0 -133
  107. package/esm2022/lib/modules/readonly/index.mjs +0 -2
  108. package/esm2022/lib/modules/readonly/readonly.directive.mjs +0 -29
  109. package/esm2022/lib/modules/recaptcha/index.mjs +0 -4
  110. package/esm2022/lib/modules/recaptcha/loader.mjs +0 -13
  111. package/esm2022/lib/modules/recaptcha/recaptcha.model.mjs +0 -2
  112. package/esm2022/lib/modules/recaptcha/recaptcha.module.mjs +0 -32
  113. package/esm2022/lib/modules/recaptcha/recaptcha.service.mjs +0 -119
  114. package/esm2022/lib/modules/safe/index.mjs +0 -2
  115. package/esm2022/lib/modules/safe/safe.pipe.mjs +0 -40
  116. package/esm2022/lib/modules/select/index.mjs +0 -2
  117. package/esm2022/lib/modules/select/model.mjs +0 -4
  118. package/esm2022/lib/modules/select/select.mjs +0 -201
  119. package/esm2022/lib/modules/select2/index.mjs +0 -2
  120. package/esm2022/lib/modules/select2/select2.mjs +0 -172
  121. package/esm2022/lib/modules/select2-multiple/index.mjs +0 -2
  122. package/esm2022/lib/modules/select2-multiple/select2-multiple.mjs +0 -137
  123. package/esm2022/lib/modules/sort/index.mjs +0 -3
  124. package/esm2022/lib/modules/sort/sort-button-group/sort-button-group.mjs +0 -81
  125. package/esm2022/lib/modules/sort/sort.mjs +0 -120
  126. package/esm2022/lib/modules/tag/index.mjs +0 -2
  127. package/esm2022/lib/modules/tag/tag.mjs +0 -111
  128. package/esm2022/lib/modules/time/index.mjs +0 -4
  129. package/esm2022/lib/modules/time/time.module.mjs +0 -27
  130. package/esm2022/lib/modules/time/time.pipe.mjs +0 -40
  131. package/esm2022/lib/modules/time/timer-service.mjs +0 -89
  132. package/esm2022/lib/modules/tooltip/index.mjs +0 -2
  133. package/esm2022/lib/modules/tooltip/tooltip.mjs +0 -27
  134. package/esm2022/lib/modules/utc-to-local/index.mjs +0 -3
  135. package/esm2022/lib/modules/utc-to-local/local-to-utc.pipe.mjs +0 -39
  136. package/esm2022/lib/modules/utc-to-local/utc-to-local.pipe.mjs +0 -38
  137. package/esm2022/lib/modules/validator/field-validator.mjs +0 -17
  138. package/esm2022/lib/modules/validator/index.mjs +0 -2
  139. package/esm2022/lib/modules/validators/directive.mjs +0 -107
  140. package/esm2022/lib/modules/validators/index.mjs +0 -4
  141. package/esm2022/lib/modules/validators/module.mjs +0 -28
  142. package/esm2022/lib/modules/validators/validator.mjs +0 -119
  143. package/esm2022/lib/modules/wizard/index.mjs +0 -3
  144. package/esm2022/lib/modules/wizard/wizard/wizard.mjs +0 -66
  145. package/esm2022/lib/modules/wizard/wizard2/wizard2.mjs +0 -14
  146. package/esm2022/lib/services/alert.service.mjs +0 -74
  147. package/esm2022/lib/services/auth-guard.service.mjs +0 -13
  148. package/esm2022/lib/services/auth.service.mjs +0 -194
  149. package/esm2022/lib/services/base.service.mjs +0 -8
  150. package/esm2022/lib/services/cache-helper.mjs +0 -35
  151. package/esm2022/lib/services/crud.service.mjs +0 -48
  152. package/esm2022/lib/services/file.service.mjs +0 -32
  153. package/esm2022/lib/services/http-error-handler.service.mjs +0 -141
  154. package/esm2022/lib/services/index.mjs +0 -9
  155. package/esm2022/lib/services/web.api.mjs +0 -139
  156. package/esm2022/lib/tokens.mjs +0 -7
  157. package/esm2022/lib/utils/array-helper.mjs +0 -216
  158. package/esm2022/lib/utils/base64-helper.mjs +0 -18
  159. package/esm2022/lib/utils/bitwise-helper.mjs +0 -14
  160. package/esm2022/lib/utils/bootstrap.helper.mjs +0 -124
  161. package/esm2022/lib/utils/convert.mjs +0 -35
  162. package/esm2022/lib/utils/css-helper.mjs +0 -41
  163. package/esm2022/lib/utils/date-helper.mjs +0 -264
  164. package/esm2022/lib/utils/error-helper.mjs +0 -32
  165. package/esm2022/lib/utils/excel-helper.mjs +0 -13
  166. package/esm2022/lib/utils/file.helper.mjs +0 -75
  167. package/esm2022/lib/utils/filter-helper.mjs +0 -13
  168. package/esm2022/lib/utils/handler.mjs +0 -24
  169. package/esm2022/lib/utils/html-helper.mjs +0 -73
  170. package/esm2022/lib/utils/index.mjs +0 -28
  171. package/esm2022/lib/utils/interval-helper.mjs +0 -32
  172. package/esm2022/lib/utils/jwt-helper.mjs +0 -11
  173. package/esm2022/lib/utils/math-helper.mjs +0 -19
  174. package/esm2022/lib/utils/object-helper.mjs +0 -80
  175. package/esm2022/lib/utils/overlap-helper.mjs +0 -73
  176. package/esm2022/lib/utils/pager-helper.mjs +0 -63
  177. package/esm2022/lib/utils/random-helper.mjs +0 -16
  178. package/esm2022/lib/utils/storage-helper.mjs +0 -28
  179. package/esm2022/lib/utils/string-helper.mjs +0 -84
  180. package/esm2022/lib/utils/thenBy.mjs +0 -41
  181. package/esm2022/lib/utils/time-helper.mjs +0 -46
  182. package/esm2022/lib/utils/tmp-helper.mjs +0 -25
  183. package/esm2022/lib/utils/url-helper.mjs +0 -44
  184. package/esm2022/lib/utils/validation-helper.mjs +0 -10
  185. package/esm2022/lib/zek.module.mjs +0 -28
  186. package/esm2022/public-api.mjs +0 -12
  187. package/esm2022/zek.mjs +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"zek.mjs","sources":["../../../projects/zek/src/lib/models/print.model.ts","../../../projects/zek/src/lib/utils/array-helper.ts","../../../projects/zek/src/lib/utils/base64-helper.ts","../../../projects/zek/src/lib/utils/bitwise-helper.ts","../../../projects/zek/src/lib/utils/bootstrap.helper.ts","../../../projects/zek/src/lib/utils/convert.ts","../../../projects/zek/src/lib/utils/css-helper.ts","../../../projects/zek/src/lib/utils/overlap-helper.ts","../../../projects/zek/src/lib/utils/time-helper.ts","../../../projects/zek/src/lib/utils/date-helper.ts","../../../projects/zek/src/lib/utils/error-helper.ts","../../../projects/zek/src/lib/utils/excel-helper.ts","../../../projects/zek/src/lib/utils/file.helper.ts","../../../projects/zek/src/lib/utils/object-helper.ts","../../../projects/zek/src/lib/utils/filter-helper.ts","../../../projects/zek/src/lib/utils/handler.ts","../../../projects/zek/src/lib/utils/html-helper.ts","../../../projects/zek/src/lib/utils/jwt-helper.ts","../../../projects/zek/src/lib/utils/math-helper.ts","../../../projects/zek/src/lib/utils/pager-helper.ts","../../../projects/zek/src/lib/utils/random-helper.ts","../../../projects/zek/src/lib/utils/storage-helper.ts","../../../projects/zek/src/lib/utils/string-helper.ts","../../../projects/zek/src/lib/utils/thenBy.ts","../../../projects/zek/src/lib/utils/interval-helper.ts","../../../projects/zek/src/lib/utils/tmp-helper.ts","../../../projects/zek/src/lib/utils/url-helper.ts","../../../projects/zek/src/lib/utils/validation-helper.ts","../../../projects/zek/src/lib/services/auth.service.ts","../../../projects/zek/src/lib/services/auth-guard.service.ts","../../../projects/zek/src/lib/services/base.service.ts","../../../projects/zek/src/lib/services/cache-helper.ts","../../../projects/zek/src/lib/services/crud.service.ts","../../../projects/zek/src/lib/services/alert.service.ts","../../../projects/zek/src/lib/services/http-error-handler.service.ts","../../../projects/zek/src/lib/tokens.ts","../../../projects/zek/src/lib/services/web.api.ts","../../../projects/zek/src/lib/services/file.service.ts","../../../projects/zek/src/lib/components/core.component.ts","../../../projects/zek/src/lib/components/base.component.ts","../../../projects/zek/src/lib/components/core-ui.component.ts","../../../projects/zek/src/lib/components/edit-base.component.ts","../../../projects/zek/src/lib/models/edit-base.model.ts","../../../projects/zek/src/lib/models/filter.model.ts","../../../projects/zek/src/lib/models/gender.model.ts","../../../projects/zek/src/lib/models/key-pair.model.ts","../../../projects/zek/src/lib/models/list-base.model.ts","../../../projects/zek/src/lib/models/month.model.ts","../../../projects/zek/src/lib/models/pager.model.ts","../../../projects/zek/src/lib/models/tree.model.ts","../../../projects/zek/src/lib/models/valid-event-args.model.ts","../../../projects/zek/src/lib/components/list-base.component.ts","../../../projects/zek/src/lib/directives/delayed-input.directive.ts","../../../projects/zek/src/lib/modules/age/age.pipe.ts","../../../projects/zek/src/lib/modules/alert/alert/alert.ts","../../../projects/zek/src/lib/modules/alert/alert/alert.html","../../../projects/zek/src/lib/modules/alert/toast/toast.ts","../../../projects/zek/src/lib/modules/alert/toast/toast.html","../../../projects/zek/src/lib/modules/alert/validation/validation.ts","../../../projects/zek/src/lib/modules/alert/validation/validation.html","../../../projects/zek/src/lib/modules/autocomplete/autocomplete.directive.ts","../../../projects/zek/src/lib/modules/bb/bb.component.ts","../../../projects/zek/src/lib/modules/bb/bb.component.html","../../../projects/zek/src/lib/modules/bb/bb-modal-toolbar.ts","../../../projects/zek/src/lib/modules/bb/bb-modal-toolbar.html","../../../projects/zek/src/lib/modules/bb/bb.module.ts","../../../projects/zek/src/lib/modules/bb/bb-modal-base.ts","../../../projects/zek/src/lib/modules/callback/callback.pipe.ts","../../../projects/zek/src/lib/modules/card/card/card.ts","../../../projects/zek/src/lib/modules/card/card/card.html","../../../projects/zek/src/lib/modules/countdown/countdown.ts","../../../projects/zek/src/lib/modules/countdown/countdown.html","../../../projects/zek/src/lib/modules/date-ago/date-ago.pipe.ts","../../../projects/zek/src/lib/modules/datepicker/date-value-accessor.ts","../../../projects/zek/src/lib/modules/datepicker/datepicker.module.ts","../../../projects/zek/src/lib/modules/edit-toolbar/edit-toolbar.ts","../../../projects/zek/src/lib/modules/edit-toolbar/edit-toolbar.html","../../../projects/zek/src/lib/modules/file/file-size.pipe.ts","../../../projects/zek/src/lib/modules/file-input/file-input.ts","../../../projects/zek/src/lib/modules/file-input/file-input.html","../../../projects/zek/src/lib/modules/modal/modal/modal.component.ts","../../../projects/zek/src/lib/modules/modal/modal/modal.component.html","../../../projects/zek/src/lib/modules/modal/filter-modal/filter-modal.component.ts","../../../projects/zek/src/lib/modules/modal/filter-modal/filter-modal.component.html","../../../projects/zek/src/lib/modules/modal/sum-modal/sum-modal.component.ts","../../../projects/zek/src/lib/modules/modal/sum-modal/sum-modal.component.html","../../../projects/zek/src/lib/modules/modal/modal.module.ts","../../../projects/zek/src/lib/modules/safe/safe.pipe.ts","../../../projects/zek/src/lib/modules/file-viewer/file-viewer.ts","../../../projects/zek/src/lib/modules/file-viewer/file-viewer.html","../../../projects/zek/src/lib/modules/google-login-button/loader.ts","../../../projects/zek/src/lib/modules/google-login-button/google-login-button.ts","../../../projects/zek/src/lib/modules/google-login-button/module.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.html","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.html","../../../projects/zek/src/lib/modules/list-toolbar/list-toolbar.ts","../../../projects/zek/src/lib/modules/list-toolbar/list-toolbar.html","../../../projects/zek/src/lib/modules/loading/loading-interceptor.ts","../../../projects/zek/src/lib/modules/loading/loading.ts","../../../projects/zek/src/lib/modules/loading/loading.module.ts","../../../projects/zek/src/lib/modules/loading/index.ts","../../../projects/zek/src/lib/modules/numeric/numeric.directive.ts","../../../projects/zek/src/lib/modules/page-title/page-title.component.ts","../../../projects/zek/src/lib/modules/page-title/page-title.component.html","../../../projects/zek/src/lib/modules/pager/pager/pager.ts","../../../projects/zek/src/lib/modules/pager/pager/pager.html","../../../projects/zek/src/lib/modules/validator/field-validator.ts","../../../projects/zek/src/lib/modules/validator/field-validator.html","../../../projects/zek/src/lib/modules/password/password.ts","../../../projects/zek/src/lib/modules/password/password.html","../../../projects/zek/src/lib/modules/progress/progress.ts","../../../projects/zek/src/lib/modules/progress/progress.html","../../../projects/zek/src/lib/modules/radio/radio.ts","../../../projects/zek/src/lib/modules/radio/radio.html","../../../projects/zek/src/lib/modules/readonly/readonly.directive.ts","../../../projects/zek/src/lib/modules/recaptcha/loader.ts","../../../projects/zek/src/lib/modules/recaptcha/recaptcha.service.ts","../../../projects/zek/src/lib/modules/recaptcha/recaptcha.module.ts","../../../projects/zek/src/lib/modules/select/select.ts","../../../projects/zek/src/lib/modules/select/select.html","../../../projects/zek/src/lib/modules/select2/select2.ts","../../../projects/zek/src/lib/modules/select2/select2.html","../../../projects/zek/src/lib/modules/select2-multiple/select2-multiple.ts","../../../projects/zek/src/lib/modules/select2-multiple/select2-multiple.html","../../../projects/zek/src/lib/modules/sort/sort.ts","../../../projects/zek/src/lib/modules/sort/sort-button-group/sort-button-group.ts","../../../projects/zek/src/lib/modules/sort/sort-button-group/sort-button-group.html","../../../projects/zek/src/lib/modules/tag/tag.ts","../../../projects/zek/src/lib/modules/tag/tag.html","../../../projects/zek/src/lib/modules/time/time.pipe.ts","../../../projects/zek/src/lib/modules/time/time.module.ts","../../../projects/zek/src/lib/modules/time/timer-service.ts","../../../projects/zek/src/lib/modules/tooltip/tooltip.ts","../../../projects/zek/src/lib/modules/utc-to-local/local-to-utc.pipe.ts","../../../projects/zek/src/lib/modules/utc-to-local/utc-to-local.pipe.ts","../../../projects/zek/src/lib/modules/validators/validator.ts","../../../projects/zek/src/lib/modules/validators/directive.ts","../../../projects/zek/src/lib/modules/validators/module.ts","../../../projects/zek/src/lib/modules/wizard/wizard/wizard.ts","../../../projects/zek/src/lib/modules/wizard/wizard/wizard.html","../../../projects/zek/src/lib/modules/wizard/wizard2/wizard2.ts","../../../projects/zek/src/lib/modules/wizard/wizard2/wizard2.html","../../../projects/zek/src/lib/zek.module.ts","../../../projects/zek/src/public-api.ts","../../../projects/zek/src/zek.ts"],"sourcesContent":["export enum PrintType {\r\n Show = 1,\r\n Pdf = 2\r\n}","// import { KeyPair } from \"../models/key-pair.model\";\r\n// import { Tree } from \"../models/tree.model\";\r\n\r\nimport { KeyPair, KeyPairEx, Tree } from \"../models\";\r\nimport { IFlattenTree, IFlattenTreeNode, INode, ITreeNode } from \"../models/tree\";\r\n\r\n\r\n\r\nexport class ArrayHelper {\r\n static insert(array: any[], index: number, item: any) {\r\n array.splice(index, 0, item);\r\n }\r\n\r\n\r\n /**\r\n * Remove item from array\r\n * @param array \r\n * @param item item to remove\r\n */\r\n static remove(array: any[], item: any) {\r\n const index = array.indexOf(item);\r\n if (index > -1) { // only splice array when item is found\r\n array.splice(index, 1); // 2nd parameter means remove one item only\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Remove all items from array\r\n * @param array \r\n * @param item item to remove\r\n */\r\n static removeAll(array: any[], item: any) {\r\n var i = 0;\r\n while (i < array.length) {\r\n if (array[i] === item) {\r\n array.splice(i, 1);\r\n } else {\r\n ++i;\r\n }\r\n }\r\n }\r\n\r\n\r\n static move(array: any[], fromIndex: number, toIndex: number) {\r\n\r\n const item = array[fromIndex];\r\n array.splice(fromIndex, 1);//remove item frrom array\r\n array.splice(toIndex, 0, item);//insert item into array\r\n return array;\r\n }\r\n\r\n static contains(value: any[], v: any) {\r\n for (let i = 0; i < value.length; i++) {\r\n if (value[i] === v) return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n static isArray(value: any) {\r\n return Array.isArray(value) && value.length > 0;\r\n }\r\n // static distinct(value: any[]) {\r\n // var arr: any[] = [];\r\n // for (var i = 0; i < value.length; i++) {\r\n // let val = value[i];\r\n // if (!this.contains(arr, val)) {\r\n // arr.push(val);\r\n // }\r\n // }\r\n // return arr;\r\n // }\r\n\r\n static distinct(array: any[]) {\r\n const length = array.length;\r\n const result = []\r\n const seen = new Set();\r\n\r\n for (let index = 0; index < length; index++) {\r\n const value = array[index];\r\n if (seen.has(value)) continue;\r\n\r\n seen.add(value);\r\n result.push(value);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static filterByKey(filterValue: any, key: string, array: any[]) {\r\n if (typeof filterValue === 'undefined' || filterValue == null || (typeof key === 'string' && key.length === 0))\r\n return array;\r\n\r\n return array.filter(x => x !== undefined && x !== null && x[key] === filterValue);\r\n }\r\n\r\n\r\n\r\n static flatten(array: any, indent: number = 0) {\r\n let result: any[] = [];\r\n if (!Array.isArray(array)) {\r\n const flattenedItem = {\r\n ...array, // shallow copy the current item\r\n indent, // add the current indent level\r\n count: Array.isArray(array.children) ? array.children.length : 0 // set count based on children\r\n };\r\n\r\n delete flattenedItem.children;\r\n delete flattenedItem.childrenIds;\r\n result.push(flattenedItem);\r\n\r\n if (flattenedItem.count) {\r\n result.push(...this.flatten(array.children, indent + 1)); // Use spread operator for efficiency\r\n }\r\n\r\n return result;\r\n } else {\r\n\r\n for (const item of array) {\r\n result.push(...this.flatten(item, indent));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * @deprecated use flattenDropDownList2\r\n */\r\n static flattenDropDownList(tree: Tree | Tree[], indent: number = 0) {\r\n let result: IFlattenTree[] = [];\r\n // If the input is an array of trees, we process each one\r\n if (!Array.isArray(tree)) {\r\n // Add the current tree node to the result\r\n let item: IFlattenTree = {\r\n key: tree.key,\r\n value: '&emsp;'.repeat(indent) + tree.value,\r\n indent: indent,\r\n count: Array.isArray(tree.children) ? tree.children.length : 0\r\n } as IFlattenTree;\r\n result.push(item);\r\n // If there are children, recursively flatten them\r\n if (Array.isArray(tree.children)) {\r\n result.push(...this.flattenDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency\r\n }\r\n } else {\r\n for (const item of tree) {\r\n result.push(...this.flattenDropDownList(item, indent));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static flattenTreeNodeDropDownList(tree: ITreeNode | ITreeNode[], indent: number = 0) {\r\n let result: IFlattenTreeNode[] = [];\r\n // If the input is an array of trees, we process each one\r\n if (!Array.isArray(tree)) {\r\n // Add the current tree node to the result\r\n let item: IFlattenTreeNode = {\r\n id: tree.id,\r\n name: '&emsp;'.repeat(indent) + tree.name,\r\n indent: indent,\r\n count: Array.isArray(tree.children) ? tree.children.length : 0\r\n } as IFlattenTree;\r\n result.push(item);\r\n // If there are children, recursively flatten them\r\n if (Array.isArray(tree.children)) {\r\n result.push(...this.flattenTreeNodeDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency\r\n }\r\n } else {\r\n for (const item of tree) {\r\n result.push(...this.flattenTreeNodeDropDownList(item, indent));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n private static enumToKeyPairBaseArray<T extends KeyPair<number, string>>(value: any): T[] {\r\n const keys = Object.keys(value);\r\n const slice = keys.length / 2;\r\n const result: T[] = [];\r\n // for (let i = 0; i < slice; i++) {\r\n // result.push({ key: +keys[i], value: keys[i + slice] } as T);\r\n // }\r\n for (let i = slice; i < keys.length; i++) {\r\n const name = keys[i];\r\n result.push({ key: + value[name], value: name } as T);\r\n }\r\n return result;\r\n //return Array.from(keys.slice(keys.length / 2), x => { key:x, value:'aaa' } as Object);\r\n }\r\n static enumToKeyPairArray(value: any): KeyPair<number, string>[] {\r\n return this.enumToKeyPairBaseArray<KeyPair<number, string>>(value);\r\n }\r\n static enumToKeyPairExArray(value: any): KeyPairEx<number, string>[] {\r\n return this.enumToKeyPairBaseArray<KeyPairEx<number, string>>(value);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Method to create a tree from a flat array of nodes\r\n * @param array \r\n * @param safe if tue and some nodes not have parent thand adds as a root node. if false than thoose nodes skipped.\r\n * @returns \r\n */\r\n static createTree(array: INode[], safe = true): ITreeNode[] {\r\n const tree: ITreeNode[] = [];\r\n\r\n // Map to store nodes by their id for easy access\r\n const map: { [key: number]: ITreeNode } = {};\r\n\r\n // Step 1: Loop over the array to build the nodes\r\n for (const item of array) {\r\n const node: ITreeNode = {\r\n id: item.id,\r\n parentId: item.parentId ?? null,\r\n name: item.name ?? null,\r\n children: null\r\n };\r\n map[node.id] = node;\r\n }\r\n\r\n for (const item of array) {\r\n const node = map[item.id];\r\n\r\n // Step 2: Check if it's a root or child and assign to parent or tree\r\n if (typeof node.parentId === 'undefined' || node.parentId === null) {\r\n // Root node, add directly to the tree\r\n tree.push(node);\r\n } else {\r\n // Non-root node, find its parent and add to its children\r\n let parentNode = map[node.parentId];\r\n if (parentNode) {\r\n if (!Array.isArray(parentNode.children))\r\n parentNode.children = [];\r\n parentNode.children.push(node);\r\n } else if (safe) {\r\n //if save=true and parent node not exists, then we add as a root node\r\n tree.push(node);\r\n }\r\n }\r\n }\r\n\r\n return tree;\r\n }\r\n\r\n}","export class Base64Helper {\r\n static utf8ToBase64String(str: string) {\r\n return btoa(unescape(encodeURIComponent(str)));\r\n }\r\n\r\n static base64StringToUtf8(str: string) {\r\n return decodeURIComponent(escape(atob(str)));\r\n }\r\n\r\n static base64StringToBlob(str: string, type?: string) {\r\n const byteString = atob(str);\r\n const int8Array = new Uint8Array(byteString.length);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: type });\r\n return blob;\r\n }\r\n}\r\n","export class BitwiseHelper {\r\n static hasFlag(flags: number, flagToCheck: any): boolean {\r\n return (flags & flagToCheck) === flagToCheck;\r\n }\r\n\r\n static addFlags(flags: number, ...flagsToAdd: any[]): number {\r\n if (!flagsToAdd) return flags;\r\n\r\n flagsToAdd.forEach(flag => {\r\n flags |= flag;\r\n });\r\n\r\n return flags;\r\n }\r\n}","import { AlertType } from '../models/alert-type';\r\n\r\nexport enum ComponentType {\r\n Primary = 1,\r\n // Secondary,\r\n Success,\r\n Delete,\r\n //Danger,\r\n Warning,\r\n Info,\r\n // Light,\r\n // Dark,\r\n}\r\n\r\nexport enum Color {\r\n Primary = 1,\r\n Secondary = 2,\r\n Success = 3,\r\n Danger = 4,\r\n Warning = 5,\r\n Info = 6,\r\n Dark = 8,\r\n}\r\n\r\nexport class BootstrapHelper {\r\n static cssColor(color?: Color | null) {\r\n switch (color) {\r\n case Color.Primary:\r\n return 'bg-primary text-white'\r\n case Color.Secondary:\r\n return 'bg-secondary text-white';\r\n case Color.Success:\r\n return 'bg-success text-white';\r\n case Color.Danger:\r\n return 'bg-danger text-white';\r\n case Color.Warning:\r\n return 'bg-warning text-dark';\r\n case Color.Info:\r\n return 'bg-info text-dark';\r\n case Color.Dark:\r\n return 'bg-dark text-white';\r\n default:\r\n return '';\r\n }\r\n }\r\n static cssIcon(type: ComponentType): string | null {\r\n if (!type) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case ComponentType.Delete:\r\n return 'fa-solid fa-trash';\r\n\r\n // case ComponentType.Danger:\r\n case ComponentType.Warning:\r\n return 'fa-solid fa-triangle-exclamation';\r\n\r\n case ComponentType.Info:\r\n return 'fa-solid fa-circle-info';\r\n\r\n default:\r\n return 'fa-solid fa-check';\r\n }\r\n }\r\n\r\n static cssButton(type: ComponentType): string {\r\n switch (type) {\r\n case ComponentType.Primary:\r\n // case ComponentType.Secondary:\r\n case ComponentType.Success:\r\n // case ComponentType.Danger:\r\n case ComponentType.Warning:\r\n case ComponentType.Info:\r\n // case ComponentType.Light:\r\n // case ComponentType.Dark:\r\n return `btn-${ComponentType[type].toLowerCase()}`;\r\n\r\n case ComponentType.Delete:\r\n return 'btn-danger';\r\n default:\r\n return 'btn-secondary';\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // static getAlertType(type?: string | null): AlertType | null {\r\n // if (!type) return null;\r\n\r\n // let v = StringHelper.firstUpper(type);\r\n // if (!v)\r\n // return null;\r\n\r\n // var enumValue = (<any>AlertType)[v];\r\n // if (!enumValue)\r\n // return null;\r\n\r\n\r\n // return enumValue;\r\n // }\r\n static cssAlert(type?: AlertType | null): string {\r\n switch (type) {\r\n case 'primary':\r\n return 'alert-primary';\r\n case 'secondary':\r\n return 'alert-secondary';\r\n case 'success':\r\n return 'alert-success';\r\n case 'danger':\r\n return 'alert-danger';\r\n case 'warning':\r\n return 'alert-warning';\r\n case 'info':\r\n return 'alert-info';\r\n case 'light':\r\n return 'alert-light';\r\n case 'dark':\r\n return 'alert-dark';\r\n default:\r\n return 'alert-secondary';\r\n }\r\n }\r\n static cssAlertIcon(type?: AlertType | null): string {\r\n switch (type) {\r\n case 'success':\r\n return 'fa-solid fa-circle-check';\r\n case 'danger':\r\n return 'fa-solid fa-circle-xmark';\r\n case 'warning':\r\n return 'fa-solid fa-circle-exclamation';\r\n case 'info':\r\n return 'fa-solid fa-circle-info';\r\n default:\r\n return '';\r\n }\r\n }\r\n}","export class Convert {\r\n static toBoolean(value: any) {\r\n if (typeof value !== 'undefined' && value !== null && value !== '') {\r\n switch (`${value}`.toUpperCase()) {\r\n case \"TRUE\":\r\n case \"YES\":\r\n case \"1\":\r\n case \"ON\":\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static toBooleanProperty(value: any): boolean {\r\n return value != null && `${value}` !== 'false';\r\n }\r\n\r\n static parseNumber(value: any) {\r\n if (typeof value === 'undefined' || value == null || (typeof value === 'string' && value.length === 0)) return null;\r\n const n = Number(value);\r\n return !isNaN(n) ? n : null;\r\n }\r\n static toNumber(value: any, defaultValue = 0) {\r\n return this.isNumber(value) ? Number(value) : defaultValue;\r\n }\r\n\r\n static isNumber(value: any): boolean {\r\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\r\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\r\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\r\n return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\r\n }\r\n\r\n // static toNumber(value: any){\r\n // if (typeof value !== 'undefined' && value !== null && value !== '') {\r\n // return +value;\r\n // }\r\n\r\n // return 0;\r\n // }\r\n}","import { ArrayHelper } from './array-helper';\r\n\r\nexport class CssHelper {\r\n static addClass<T extends string | string[] | null | undefined>(clazz: T, addClasses?: string | string[] | null): T {\r\n if (!clazz || clazz === '' || clazz.length == 0) {\r\n return addClasses as T;\r\n }\r\n\r\n if (!addClasses || addClasses === '') {\r\n return clazz;\r\n }\r\n\r\n\r\n const arr = ArrayHelper.distinct(this.parseClassNames(clazz).concat(this.parseClassNames(addClasses)));\r\n\r\n return Array.isArray(clazz) ? arr as T : arr.join(' ') as T;\r\n }\r\n\r\n\r\n static removeClass<T extends string | string[] | null | undefined>(clazz: T, removeClasses?: string | string[] | null): T {\r\n if (!clazz || clazz === '') {\r\n return clazz;\r\n }\r\n\r\n if (!removeClasses || removeClasses === '' || removeClasses.length === 0) {\r\n return clazz;\r\n }\r\n\r\n const arrClasses = this.parseClassNames(clazz);\r\n const arrRemove = this.parseClassNames(removeClasses);\r\n\r\n const arr: any[] = [];\r\n for (var i = 0; i < arrClasses.length; i++) {\r\n const val = arrClasses[i];\r\n if (!ArrayHelper.contains(arrRemove, val)) {\r\n arr.push(val);\r\n }\r\n }\r\n return Array.isArray(clazz) ? arr as T : arr.join(' ') as T;\r\n }\r\n\r\n\r\n static parseClassNames(raw?: string | string[] | null) {\r\n if (Array.isArray(raw)) {\r\n return raw\r\n }\r\n\r\n if (typeof raw === 'string') {\r\n return raw.split(/\\s+/)\r\n }\r\n\r\n return []\r\n }\r\n}","export enum PeriodRelation {\r\n After,\r\n StartTouching,\r\n StartInside,\r\n InsideStartTouching,\r\n EnclosingStartTouching,\r\n Enclosing,\r\n EnclosingEndTouching,\r\n ExactMatch,\r\n Inside,\r\n InsideEndTouching,\r\n EndInside,\r\n EndTouching,\r\n Before,\r\n}\r\n\r\nexport class OverlapHelper {\r\n\r\n\r\n static getRelation(start1: Date, end1: Date, start2: Date, end2: Date): PeriodRelation {\r\n if (end2 < start1) {\r\n return PeriodRelation.After;\r\n }\r\n if (start2 > end1) {\r\n return PeriodRelation.Before;\r\n }\r\n if (start2 == start1 && end2 == end1) {\r\n return PeriodRelation.ExactMatch;\r\n }\r\n if (end2 == start1) {\r\n return PeriodRelation.StartTouching;\r\n }\r\n if (start2 == end1) {\r\n return PeriodRelation.EndTouching;\r\n }\r\n if (this.hasInside2(start1, end1, start2, end2)) {\r\n if (start2 == start1) {\r\n return PeriodRelation.EnclosingStartTouching;\r\n }\r\n return end2 == end1 ? PeriodRelation.EnclosingEndTouching : PeriodRelation.Enclosing;\r\n }\r\n const periodContainsMyStart = this.hasInside(start2, end2, start1);\r\n const periodContainsMyEnd = this.hasInside(start2, end2, end1);\r\n if (periodContainsMyStart && periodContainsMyEnd) {\r\n if (start2 == start1) {\r\n return PeriodRelation.InsideStartTouching;\r\n }\r\n return end2 == end1 ? PeriodRelation.InsideEndTouching : PeriodRelation.Inside;\r\n }\r\n if (periodContainsMyStart) {\r\n return PeriodRelation.StartInside;\r\n }\r\n if (periodContainsMyEnd) {\r\n return PeriodRelation.EndInside;\r\n }\r\n\r\n throw new Error(\"invalid period relation of '\" + start1 + \"-\" + end1 + \"' and '\" + start2 + \"-\" + end2 + \"'\");\r\n }\r\n\r\n static hasInside(start: Date, end: Date, date: Date): boolean {\r\n return date >= start && date <= end;\r\n }\r\n\r\n static hasInside2(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n return this.hasInside(start1, end1, start2) && this.hasInside(start1, end1, end2);\r\n }\r\n\r\n static intersects(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n return this.hasInside(start1, end1, start2) || this.hasInside(start1, end1, end2) || (start2 < start1 && end2 > end1);\r\n }\r\n\r\n static overlaps(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n const relation = this.getRelation(start1, end1, start2, end2);\r\n return relation != PeriodRelation.After &&\r\n relation != PeriodRelation.StartTouching &&\r\n relation != PeriodRelation.EndTouching &&\r\n relation != PeriodRelation.Before;\r\n }\r\n\r\n\r\n}","import { OverlapHelper } from \"./overlap-helper\";\r\n\r\nexport class TimeHelper {\r\n static parseTime(value: any): string | null {\r\n if (typeof value === 'undefined' || value == null || value === '') return null;\r\n return this.toTime(value);\r\n }\r\n static toTime(value: string): string {\r\n if (typeof value === 'string') {\r\n value = value.trim();\r\n\r\n if (/^(\\d{1,2}:\\d{1,2})$/.test(value)) {\r\n const [h, m] = value.split(':').map((val: string) => +val);\r\n return `${h < 10 ? '0' : ''}${h}:${m < 10 ? '0' : ''}${m}:00`;\r\n } else if (/^(\\d{1,2}:\\d{1,2}:\\d{1,2})$/.test(value)) {\r\n const [h, m, s] = value.split(':').map((val: string) => +val);\r\n return `${h < 10 ? '0' : ''}${h}:${m < 10 ? '0' : ''}${m}:${s < 10 ? '0' : ''}${s}`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n \r\n\r\n\r\n static toDate(time: string | undefined | null): Date {\r\n const date = new Date(0);\r\n\r\n const tmp = this.parseTime(time);\r\n if (!tmp) return date;\r\n\r\n const timeDate = new Date('1970-01-01T' + time + 'Z');\r\n date.setTime(date.getTime() + timeDate.getTime());\r\n return date;\r\n }\r\n\r\n\r\n static intersects(start1: string, end1: string, start2: string, end2: string): boolean {\r\n const startDate1 = this.toDate(start1);\r\n const endDate1 = this.toDate(end1);\r\n const startDate2 = this.toDate(start2);\r\n const endDate2 = this.toDate(end2);\r\n\r\n return OverlapHelper.intersects(startDate1, endDate1, startDate2, endDate2);\r\n }\r\n\r\n static overlaps(start1: string, end1: string, start2: string, end2: string): boolean {\r\n const startDate1 = this.toDate(start1);\r\n const endDate1 = this.toDate(end1);\r\n const startDate2 = this.toDate(start2);\r\n const endDate2 = this.toDate(end2);\r\n\r\n return OverlapHelper.overlaps(startDate1, endDate1, startDate2, endDate2);\r\n }\r\n}","import { TimeHelper } from \"./time-helper\";\r\n\r\nexport class DateHelper {\r\n\r\n static equals(value1?: Date | null, value2?: Date | null) {\r\n const val1 = (value1 === undefined || value1 === null) ? null : value1;\r\n const val2 = (value2 === undefined || value2 === null) ? null : value2;\r\n\r\n\r\n if (val1 === val2) {\r\n return true;\r\n }\r\n\r\n if (!val1 || !val2) {\r\n return false;\r\n }\r\n\r\n return val1.getTime() === val2.getTime();\r\n }\r\n\r\n static getDates(start: Date, end: Date) {\r\n const dates = new Array<Date>();\r\n let date = new Date(start.valueOf());\r\n while (date <= end) {\r\n dates.push(new Date(date));\r\n date = this.addDays(date, 1);\r\n }\r\n return dates;\r\n }\r\n\r\n static dateOnly(value: Date) {\r\n const year = value.getFullYear();\r\n const month = value.getMonth();\r\n const day = value.getDate();\r\n const date = new Date(Date.UTC(year, month, day));\r\n\r\n return date;\r\n }\r\n static today() {\r\n return this.dateOnly(new Date());\r\n }\r\n\r\n static toISODateString(value: Date | string) {\r\n const date = this.parseDate(value);\r\n\r\n if (!date)\r\n return null;\r\n\r\n const year = date.getFullYear();\r\n // Add +1 to month since 0 is January\r\n const month = date.getMonth() + 1;\r\n const day = date.getDate();\r\n\r\n const str = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;\r\n return str;\r\n }\r\n\r\n static toISOTimeString(value: Date | string) {\r\n const date = DateHelper.parseDate(value);\r\n\r\n if (!date)\r\n return null;\r\n\r\n const hour = date.getHours();\r\n const minute = date.getMinutes();\r\n const second = date.getSeconds();\r\n\r\n const str = `${hour < 10 ? '0' : ''}${hour}:${minute < 10 ? '0' : ''}${minute}:${second < 10 ? '0' : ''}${second}`;\r\n return str;\r\n }\r\n \r\n static toTimeInput(value: Date | string) {\r\n const date = DateHelper.parseDate(value);\r\n\r\n if (!date)\r\n return null;\r\n\r\n const hour = date.getHours();\r\n const minute = date.getMinutes();\r\n\r\n const str = `${hour < 10 ? '0' : ''}${hour}:${minute < 10 ? '0' : ''}${minute}`;\r\n return str;\r\n }\r\n\r\n //** Offes seconds ( offsetmin * 60sec * 1000ms) */\r\n private static readonly _utcDiff = -new Date().getTimezoneOffset() * 60000;\r\n static utcToLocal(utc: Date) {\r\n return new Date(utc.getTime() + this._utcDiff);\r\n }\r\n static localToUtc(utc: Date) {\r\n return new Date(utc.getTime() - this._utcDiff);\r\n }\r\n\r\n static addTime(value: Date, time: string | undefined | null) {\r\n const tmp = TimeHelper.parseTime(time);\r\n if (!tmp) return value;\r\n\r\n const timeDate = new Date('1970-01-01T' + time + 'Z');\r\n const date = value;\r\n date.setTime(date.getTime() + timeDate.getTime());\r\n return date;\r\n }\r\n static addYears(v: Date, years: number): Date {\r\n if (!years) return v;\r\n\r\n const date = v;\r\n date.setFullYear(v.getFullYear() + years);\r\n return date;\r\n }\r\n static addMonths(v: Date, months: number) {\r\n if (!months) return v;\r\n\r\n const date = v;\r\n date.setMonth(date.getMonth() + months);\r\n return date;\r\n }\r\n static addDays(v: Date, days: number) {\r\n if (!days) return v;\r\n\r\n const date = v;\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n }\r\n static addHours(v: Date, hours: number) {\r\n if (!hours) return v;\r\n\r\n const date = new Date(v);\r\n //todo need to check if this line needs --> date = new Date(date.getTime());\r\n date.setHours(date.getHours() + hours);\r\n return date;\r\n }\r\n static addMinutes(v: Date, minutes: number) {\r\n if (!minutes) return v;\r\n\r\n const date = new Date(v);\r\n //todo need to check if this line needs --> date = new Date(date.getTime());\r\n date.setMinutes(date.getMinutes() + minutes);\r\n return date;\r\n }\r\n static addSeconds(v: Date, seconds: number) {\r\n if (!seconds) return v;\r\n\r\n const date = v;\r\n date.setSeconds(date.getSeconds() + seconds);\r\n\r\n return date;\r\n }\r\n static isToday(date: Date) {\r\n const today = new Date();\r\n return this.isSameDate(date, today);\r\n }\r\n static clone(date: Date) {\r\n return new Date(+date);\r\n }\r\n static isAnotherMonth(a: Date, b: Date) {\r\n return b && a.getMonth() !== b.getMonth();\r\n }\r\n static isWeekend(v: Date,): boolean {\r\n return v.getDay() === 0 || v.getDay() === 6;\r\n }\r\n static isSameDate(a: Date, b: Date) {\r\n return b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n }\r\n\r\n\r\n static getAge(value?: Date | string | null, now?: Date | null) {\r\n if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n const date = this.toDate(value);\r\n\r\n const nowTime = now ? now.getTime() : Date.now();\r\n const timeDiff = nowTime - date.getTime();\r\n\r\n return Math.floor((timeDiff / 86400000) / 365.25);//86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour\r\n }\r\n static subtractMonths(endDate: Date, starDate: Date) {\r\n const start = starDate <= endDate ? starDate : endDate;\r\n const end = starDate <= endDate ? endDate : starDate;\r\n const plus = starDate <= endDate ? 1 : -1;\r\n\r\n let months = (end.getFullYear() - start.getFullYear()) * 12;\r\n months -= start.getMonth();\r\n months += end.getMonth();\r\n return months * plus;\r\n }\r\n\r\n static subtractDays(value: Date, date: Date) {\r\n if (!date)\r\n return null;\r\n\r\n date = this.toDate(date);\r\n const timeDiff = date.getTime() - value.getTime();\r\n return Math.floor(timeDiff / 86400000);//86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour\r\n }\r\n static subtractHours(value: Date, date?: Date | null) {\r\n if (!date)\r\n return null;\r\n\r\n date = this.toDate(date);\r\n const timeDiff = date.getTime() - value.getTime();\r\n return Math.floor((timeDiff % 86400000) / 3600000);\r\n }\r\n static subtractMinutes(value: Date, date?: Date | null) {\r\n if (!date)\r\n return null;\r\n\r\n date = this.toDate(date);\r\n const timeDiff = date.getTime() - value.getTime();\r\n //\r\n return Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n }\r\n\r\n\r\n\r\n\r\n static ISO8601_DATE_REGEX =\r\n /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\r\n // 1 2 3 4 5 6 7 8 9 10 11\r\n\r\n\r\n static parseDate(value: any): Date | null {\r\n if (typeof value === 'undefined' || value == null || value === '') return null;\r\n return this.toDate(value);\r\n }\r\n\r\n // export function toDate(value: string|number|Date): Date this function is imported from date pipe \r\n // packages/common/src/i18n/format_date.ts\r\n\r\n /***\r\n * Converts a value to date.\r\n *\r\n * Supported input formats:\r\n * - `Date`\r\n * - number: timestamp\r\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\r\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\r\n * Note: ISO strings without time return a date without timeoffset.\r\n *\r\n * Throws if unable to convert to a date.\r\n */\r\n static toDate(value: string | number | Date): Date {\r\n if (this.isDate(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number' && !isNaN(value)) {\r\n return new Date(value);\r\n }\r\n\r\n if (typeof value === 'string') {\r\n value = value.trim();\r\n\r\n const parsedNb = parseFloat(value);\r\n\r\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\r\n if (!isNaN(value as any - parsedNb)) {\r\n return new Date(parsedNb);\r\n }\r\n\r\n if (/^(\\d{4}-\\d{1,2}-\\d{1,2})$/.test(value)) {\r\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\r\n before Date creation to avoid time offset and errors in the new Date.\r\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\r\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\r\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\r\n is applied.\r\n Note: ISO months are 0 for January, 1 for February, ... */\r\n const [y, m, d] = value.split('-').map((val: string) => +val);\r\n return new Date(y, m - 1, d);\r\n }\r\n\r\n let match: RegExpMatchArray | null;\r\n if (match = value.match(this.ISO8601_DATE_REGEX)) {\r\n return this.isoStringToDate(match);\r\n }\r\n }\r\n\r\n const date = new Date(value as any);\r\n if (!this.isDate(date)) {\r\n throw new Error(`Unable to convert \"${value}\" into a date`);\r\n }\r\n return date;\r\n }\r\n\r\n /**\r\n * Converts a date in ISO8601 to a Date.\r\n * Used instead of `Date.parse` because of browser discrepancies.\r\n */\r\n static isoStringToDate(match: RegExpMatchArray): Date {\r\n const date = new Date(0);\r\n let tzHour = 0;\r\n let tzMin = 0;\r\n\r\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\r\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\r\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\r\n\r\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\r\n if (match[9]) {\r\n tzHour = Number(match[9] + match[10]);\r\n tzMin = Number(match[9] + match[11]);\r\n }\r\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\r\n const h = Number(match[4] || 0) - tzHour;\r\n const m = Number(match[5] || 0) - tzMin;\r\n const s = Number(match[6] || 0);\r\n const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);\r\n timeSetter.call(date, h, m, s, ms);\r\n return date;\r\n }\r\n\r\n static isDate(value: any): value is Date {\r\n return value instanceof Date && !isNaN(value.valueOf());\r\n }\r\n}","import { KeyPair } from \"../models\";\r\n\r\nexport class ErrorHelper {\r\n static responseToKeyPairArray(response: any) {\r\n let error: any;\r\n if (typeof response.error === 'string' && response.error[0] === '{') {\r\n error = JSON.parse(response.error);\r\n } else {\r\n error = response.error;\r\n }\r\n\r\n return this.toKeyPairArray(error);\r\n }\r\n\r\n static toKeyPairArray(error: any) {\r\n if (typeof error === 'object') {\r\n const errors = error.traceId || error.success === false\r\n ? error.errors\r\n : error;\r\n\r\n const result: KeyPair<string | null | undefined, string | null | undefined>[] = [];\r\n const properties = Object.keys(errors);\r\n\r\n for (const property of properties) {\r\n const messages = errors[property];\r\n if (messages instanceof Array) {\r\n for (const message of messages) {\r\n result.push({ key: property, value: message });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n return null;\r\n }\r\n}","export class ExcelHelper {\r\n static getColumnName(columnNumber: number) {\r\n let dividend = columnNumber;\r\n let columnName = '';\r\n\r\n while (dividend > 0) {\r\n const modulo = Math.floor((dividend - 1) % 26); \r\n columnName = String.fromCharCode(65 + modulo) + columnName;\r\n dividend = Math.floor((dividend - modulo) / 26);\r\n }\r\n return columnName;\r\n }\r\n}","import { IFileString } from \"../models\";\r\n\r\nexport class FileHelper {\r\n static getExtension(path?: string | null) {\r\n if (path === undefined || path == null)\r\n return path;\r\n\r\n if (typeof path !== 'string') {\r\n throw new Error(\"path parameter is not string\");\r\n }\r\n\r\n const directorySeparatorChar = '\\\\';\r\n const altDirectorySeparatorChar = '/';\r\n const volumeSeparatorChar = ':';\r\n\r\n const length = path.length;\r\n for (let i = length; --i >= 0;) {\r\n const ch = path[i];\r\n if (ch === '.') {\r\n if (i !== length - 1)\r\n return path.substring(i, length);\r\n else\r\n return '';\r\n }\r\n if (ch == directorySeparatorChar || ch == altDirectorySeparatorChar || ch == volumeSeparatorChar)\r\n break;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n static download(blob: Blob | null, fileName: string) {\r\n if (!blob) return;\r\n\r\n const nav = (window.navigator as any);\r\n if (nav && nav.msSaveOrOpenBlob) {\r\n nav.msSaveOrOpenBlob(blob, fileName);\r\n } else {\r\n const a = document.createElement('a');\r\n a.href = URL.createObjectURL(blob);\r\n a.download = fileName;\r\n a.target = '_blank';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n }\r\n\r\n\r\n\r\n static fileToDataUrl(file: File) {\r\n return new Promise<IFileString>((resolve, reject) => {\r\n if (!file) {\r\n reject('file is null');\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n\r\n resolve({\r\n fileName: file.name,\r\n content: reader.result,\r\n } as IFileString);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n static fileToBase64String(file: File) {\r\n return new Promise<IFileString>((resolve, reject) => {\r\n if (!file) {\r\n reject('file is null');\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n const dataUrl = reader.result as string;\r\n const index = dataUrl.indexOf(',');\r\n resolve({\r\n fileName: file.name,\r\n content: dataUrl.substring(index + 1),\r\n } as IFileString);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n}","\r\nexport class ObjectHelper {\r\n static isDefined(value: any) {\r\n return typeof value !== 'undefined' && value !== null;\r\n }\r\n\r\n static isObject(value: any) {\r\n return this.isDefined(value) && typeof value === 'object';\r\n }\r\n\r\n\r\n /**\r\n * Check if the object is a string or array before evaluating the length attribute.\r\n * This avoids falsely rejecting objects that contain a custom length attribute.\r\n * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\r\n */\r\n static isEmptyValue(value: any): boolean {\r\n return !this.isDefined(value) || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\r\n }\r\n\r\n\r\n static isEmpty(obj: any) {\r\n if (!this.isDefined(obj))\r\n return true;\r\n // if (typeof obj === 'undefined' || obj === null)\r\n // return true;\r\n for (const prop in obj) {\r\n const v = obj[prop];\r\n if (!this.isEmptyValue(v))\r\n return false;\r\n // if (typeof (obj[prop]) !== undefined && obj[prop] !== null && obj[prop] !== '') {\r\n // return false;\r\n // }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n * @deprecated The method should not be used. please use deleteNullFields\r\n */\r\n static deleteNullKeys(val: any) {\r\n this.deleteNullFields(val);\r\n }\r\n\r\n static deleteNullFields<T extends {}>(val: T) {\r\n if (!val) return;\r\n for (let key in val) {\r\n let tmp = val[key];\r\n if (tmp === undefined || tmp === null) {\r\n delete val[key];\r\n }\r\n }\r\n return val\r\n }\r\n\r\n static assignFields<T extends {}, U extends {}>(target: T, source: U): T {\r\n let t: any = target;\r\n let s: any = source;\r\n for (const key of Object.keys(target)) {\r\n let v = s[key];\r\n if (typeof v !== 'undefined') {\r\n t[key] = v;\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n\r\n\r\n static deepCopy<T = any>(value: any): T {\r\n if (!this.isObject(value))\r\n return value;\r\n\r\n let output: any = {};\r\n if (Array.isArray(value)) {\r\n output = value.map(x => this.deepCopy(x));\r\n }\r\n else {\r\n Object.keys(value).forEach((key: any) => {\r\n const v = value[key];\r\n\r\n if (this.isObject(v)) {\r\n output[key] = this.deepCopy(v);\r\n\r\n } else {\r\n Object.assign(output, { [key]: v });\r\n }\r\n });\r\n }\r\n\r\n return output as T;\r\n }\r\n\r\n}","import { ObjectHelper } from \"./object-helper\";\r\n\r\nexport class FilterHelper {\r\n static isEmpty(obj: any) {\r\n if (typeof obj === 'undefined' || obj === null)\r\n return true;\r\n\r\n const tmp = Object.assign({}, obj);\r\n delete tmp.page;\r\n delete tmp.pageSize;\r\n delete tmp.sort;\r\n\r\n return ObjectHelper.isEmpty(tmp);\r\n }\r\n}","\r\nexport const handler = (function () {\r\n let i = 1;\r\n const listeners: any = {};\r\n\r\n return {\r\n addListener: function (element: HTMLElement | Window, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) {\r\n element.addEventListener(event, handler, options); \r\n listeners[i] = {\r\n element: element,\r\n event: event,\r\n handler: handler,\r\n options: options,\r\n };\r\n return i++;\r\n },\r\n removeListener: function (id: number) {\r\n if (id in listeners) {\r\n const h = listeners[id];\r\n \r\n h.element.removeEventListener(h.event, h.handler, h.options);\r\n delete listeners[id];\r\n }\r\n }\r\n };\r\n}());","export class HtmlHelper {\r\n static escapeHtml(source: string) {\r\n if (source == null) {\r\n source = '';\r\n }\r\n\r\n return source\r\n .replace(/&/g, '&amp;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#39;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;');\r\n }\r\n\r\n\r\n static addInput(type: string, name: string, id: string = name, force = false) {\r\n const node = document.createElement('input');\r\n node.type = type;\r\n node.name = name;\r\n node.id = id;\r\n\r\n document.getElementsByTagName('body')[0].appendChild(node);\r\n return node;\r\n }\r\n\r\n\r\n static loadScript(url: string, nonce?: string, async = true, defer = true) {\r\n const script = document.createElement('script');\r\n script.innerHTML = '';\r\n script.src = url;\r\n script.type = 'text/javascript';\r\n\r\n if (nonce) {\r\n script.nonce = nonce;\r\n }\r\n\r\n if (async) {\r\n script.async = true;\r\n }\r\n if (defer) {\r\n script.defer = true;\r\n }\r\n\r\n document.head.appendChild(script);\r\n //2022-02-24 document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n static loadScripts(...scripts: string[]) {\r\n const promises: any[] = [];\r\n scripts.forEach((script) => promises.push(this.internalLoadScript(script)));\r\n return Promise.all(promises);\r\n }\r\n private static internalLoadScript(src: string) {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script') as any;\r\n script.src = src;\r\n script.type = 'text/javascript';\r\n if (script.readyState) { //IE\r\n script.onreadystatechange = () => {\r\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n script.onreadystatechange = null;\r\n resolve({ script: src, loaded: true });\r\n }\r\n };\r\n } else { //Others\r\n script.onload = () => {\r\n resolve({ script: src, loaded: true });\r\n };\r\n }\r\n script.onerror = (error: any) => resolve({ script: src, loaded: false });\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n });\r\n }\r\n\r\n\r\n static loadCss(url: string) {\r\n const link = document.createElement('link');\r\n link.rel = 'stylesheet';\r\n link.type = 'text/css';\r\n link.href = url;\r\n document.getElementsByTagName('head')[0].appendChild(link);\r\n }\r\n\r\n}","export class JwtHelper {\r\n\r\n static decode(token: any) {\r\n const base64Url = token.split('.')[1]\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n return JSON.parse(jsonPayload)\r\n }\r\n}","export class MathHelper {\r\n static round(value: number, decimals: number = 0): number {\r\n return Math.round(Number(value) * Math.pow(10, decimals)) / (Math.pow(10, decimals));\r\n }\r\n\r\n\r\n static clamp(v: number, min: number, max: number) {\r\n return Math.max(min, Math.min(max, v));\r\n }\r\n\r\n // static sum(...values: number[]) {\r\n // return values.reduce((acc, cur) => acc + cur, 0);\r\n // }\r\n static sum(...values: number[]) {\r\n let sum = 0;\r\n for (let i = 0; i < values.length; i++) {\r\n sum += values[i];\r\n }\r\n return sum;\r\n }\r\n}","import { Pager } from \"../models\";\r\n\r\nexport class PagerHelper {\r\n static get(totalItemCount: number | null | undefined, pageNumber: number | null | undefined = 1, pageSize: number | null | undefined = 10) {\r\n if (!totalItemCount) totalItemCount = 0;\r\n if (!pageNumber) pageNumber = 1;\r\n if (!pageSize) pageSize = 10;\r\n\r\n // calculate total pages\r\n const pageCount = Math.ceil(totalItemCount / pageSize);\r\n let startPage: number, endPage: number;\r\n if (pageCount <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = pageCount;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (pageNumber <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (pageNumber + 4 >= pageCount) {\r\n startPage = pageCount - 9;\r\n endPage = pageCount;\r\n } else {\r\n startPage = pageNumber - 5;\r\n endPage = pageNumber + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const firstItemOnPage = (pageNumber - 1) * pageSize + 1;\r\n const lastItemOnPage = Math.min(firstItemOnPage + pageSize - 1, totalItemCount);\r\n\r\n const hasPreviousPage = pageNumber > 1;\r\n const hasNextPage = pageNumber < pageCount;\r\n const isFirstPage = pageNumber <= 1;\r\n const isLastPage = pageNumber >= pageCount;\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n //let pages = _.range(startPage, endPage + 1);\r\n const pages: number[] = [];\r\n for (let i = startPage; i <= endPage; i++) {\r\n pages.push(i);\r\n }\r\n\r\n // return object with all pager properties required by the view\r\n return {\r\n pageCount,\r\n totalItemCount,\r\n pageNumber,\r\n pageSize,\r\n hasPreviousPage,\r\n hasNextPage,\r\n isFirstPage,\r\n isLastPage,\r\n firstItemOnPage,\r\n lastItemOnPage,\r\n startPage: startPage,\r\n endPage: endPage,\r\n pages\r\n } as Pager;\r\n }\r\n}","export class RandomHelper {\r\n static randomHex(count: number = 2) {\r\n let out: string = '';\r\n for (let i: number = 0; i < count; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n }\r\n return out;\r\n }\r\n\r\n static randomInt(min: number, max: number) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}","export class StorageHelper {\r\n static set(key: string, value: any) {\r\n if (!key) { return; }\r\n\r\n if (!value) {\r\n localStorage.removeItem(key);\r\n return;\r\n }\r\n\r\n if (typeof value === \"object\") {\r\n value = JSON.stringify(value);\r\n }\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n\r\n static get(key: string) {\r\n const str = localStorage.getItem(key);\r\n if (!str) { return null; }\r\n \r\n // assume it is an object that has been stringified\r\n if (str[0] === '{') {\r\n const v = JSON.parse(str);\r\n return v;\r\n }\r\n \r\n return str;\r\n }\r\n}","export class StringHelper {\r\n static firstUpper(v?: string | null) {\r\n if (!v || v.length < 1)\r\n return v;\r\n\r\n return v.charAt(0).toUpperCase() + v.slice(1);\r\n }\r\n\r\n static isNullOrEmpty(value?: string | null) {\r\n return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.length === 0);\r\n }\r\n static isNullOrWhiteSpace(value?: string | null) {\r\n return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.trim().length === 0);\r\n }\r\n static tryTrim(val: string | undefined | null) {\r\n if (!val)\r\n return val;\r\n return val.trim();\r\n }\r\n static ifNullEmpty(value?: string | null) {\r\n return typeof value === 'undefined' || value == null ? '' : value;\r\n }\r\n static join(val: string | undefined | null, separator: string, part: string | undefined | null) {\r\n if (this.isNullOrEmpty(val)) {\r\n return part;\r\n }\r\n if (this.isNullOrEmpty(part)) {\r\n return val;\r\n }\r\n\r\n return val + separator + part;\r\n }\r\n static trim(val: string | null, ch: string) {\r\n if (!val || !ch)\r\n return val;\r\n\r\n let start = 0,\r\n end = val.length;\r\n\r\n while (start < end && val[start] === ch)\r\n ++start;\r\n\r\n while (end > start && val[end - 1] === ch)\r\n --end;\r\n\r\n return (start > 0 || end < val.length) ? val.substring(start, end) : val;\r\n }\r\n static trimStart(val: string | null, ch: string) {\r\n if (!val || !ch)\r\n return val;\r\n\r\n let start = 0\r\n const end = val.length;\r\n\r\n while (start < end && val[start] === ch)\r\n ++start;\r\n\r\n return (start > 0) ? val.substring(start, end) : val;\r\n }\r\n static trimEnd(val: string | null, ch: string) {\r\n if (!val || !ch)\r\n return val;\r\n\r\n let start = 0,\r\n end = val.length;\r\n\r\n while (end > start && val[end - 1] === ch)\r\n --end;\r\n\r\n return (end < val.length) ? val.substring(start, end) : val;\r\n }\r\n\r\n /**\r\n * \r\n * @param val source string\r\n * @param chars trim any character\r\n * @returns \r\n */\r\n static trimAny(val: string | null, chars: string) {\r\n if (!val || !chars)\r\n return val;\r\n\r\n let start = 0,\r\n end = val.length;\r\n\r\n while (start < end && chars.indexOf(val[start]) >= 0)\r\n ++start;\r\n\r\n while (end > start && chars.indexOf(val[end - 1]) >= 0)\r\n --end;\r\n\r\n return (start > 0 || end < val.length) ? val.substring(start, end) : val;\r\n }\r\n\r\n static split(val: string | null | undefined, ...separator: string[]) {\r\n if (!val) return [];\r\n\r\n if (separator.length === 0)\r\n separator = [','];\r\n\r\n const regex = new RegExp(`(?:${separator.join('|')})`);\r\n return val.split(regex)\r\n .map(entry => entry.trim()) // Trim spaces\r\n .filter(entry => entry.length > 0); // Remove empty entries\r\n }\r\n\r\n}","export const firstBy = (function() {\r\n\r\n function identity(v: any){return v;}\r\n\r\n function ignoreCase(v: any){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\r\n\r\n function makeCompareFunction(f: any, opt: any){\r\n opt = typeof(opt)===\"number\" ? {direction:opt} : opt||{};\r\n if(typeof(f)!=\"function\"){\r\n const prop = f;\r\n // make unary function\r\n f = function(v1: any){return !!v1[prop] ? v1[prop] : \"\";}\r\n }\r\n if(f.length === 1) {\r\n // f is a unary function mapping a single item to its sort score\r\n const uf = f;\r\n const preprocess = opt.ignoreCase?ignoreCase:identity;\r\n const cmp = opt.cmp || function(v1: any,v2: any) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\r\n f = function(v1: any,v2: any) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\r\n }\r\n if(opt.direction === -1) return function(v1: any,v2: any){return -f(v1,v2)};\r\n return f;\r\n }\r\n\r\n /* adds a secondary compare function to the target function (`this` context)\r\n which is applied in case the first one returns 0 (equal)\r\n returns a new compare function, which has a `thenBy` method as well */\r\n function tb(this: any, func: any, opt: any) {\r\n /* should get value false for the first call. This can be done by calling the \r\n exported function, or the firstBy property on it (for es6 module compatibility)\r\n */\r\n const x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\r\n const y = makeCompareFunction(func, opt);\r\n const f = x ? function(a: any, b: any) {\r\n return x(a,b) || y(a,b);\r\n }\r\n : y;\r\n f.thenBy = tb;\r\n return f;\r\n }\r\n tb.firstBy = tb;\r\n return tb;\r\n})();","\r\nexport interface ITimeout {\r\n id: number;\r\n callback: string;\r\n interval: number;\r\n createdAt: Date;\r\n}\r\n\r\nexport class IntervalHelper {\r\n private static _timeouts: ITimeout[] = [];\r\n\r\n static create(callback: Function, ms: number) {\r\n const id = setInterval(() => {\r\n callback();\r\n }, ms);\r\n\r\n const timeout = {\r\n id: +id,\r\n callback: callback.toString(),\r\n interval: ms,\r\n createdAt: new Date()\r\n } as ITimeout;\r\n this._timeouts.push(timeout);\r\n return timeout;\r\n }\r\n\r\n static clear(id: number) {\r\n const index = this._timeouts.findIndex(x => x.id === id);\r\n if (index !== -1) {\r\n clearInterval(id);\r\n this._timeouts.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static clearAll() {\r\n for (const timeout of this._timeouts) {\r\n this.clear(timeout.id);\r\n }\r\n this._timeouts = [];\r\n }\r\n}","export class TmpHelper {\r\n private static _obj: any = {};\r\n\r\n static get(key: string, remove = true): any {\r\n if (!key) return;\r\n const v = this._obj[key];\r\n if (remove)\r\n this.remove(key);\r\n return v;\r\n }\r\n \r\n static set(key: string, value: any) {\r\n if (!key) return;\r\n this._obj[key] = value;\r\n }\r\n \r\n static clear() {\r\n this._obj = {};\r\n }\r\n static remove(key: string) {\r\n if (!key) return;\r\n delete this._obj[key]\r\n }\r\n}","import { StringHelper } from \"./string-helper\";\r\n\r\nexport class UrlHelper {\r\n static getController(url: string) {\r\n return url.substring(0, url.lastIndexOf('/') + 1);\r\n }\r\n\r\n static getAction(url: string) {\r\n const action = url.substring(url.lastIndexOf('/') + 1);\r\n const i = action.indexOf(';');\r\n return i === -1 ? action : action.substring(0, i);\r\n }\r\n\r\n static getNoParam(url: string) {\r\n const i1 = url.indexOf('?');\r\n const i2 = url.indexOf(';');\r\n if (i1 !== -1) {\r\n if (i2 !== -1) {\r\n const min = i1 < i2 ? i1 : i2;\r\n return url.substring(0, min)\r\n }\r\n return url.substring(0, i1)\r\n }\r\n if (i2 !== -1) {\r\n return url.substring(0, i2)\r\n }\r\n return url;\r\n }\r\n\r\n static combine(...parts: any[]) {\r\n let result = '';\r\n for (const part of parts) {\r\n if (typeof part === 'undefined' && part === null)\r\n continue;\r\n const str = `${part}`;\r\n result = this.combineEnsureSingleSeparator(result, str, '/');\r\n }\r\n return result;\r\n }\r\n\r\n private static combineEnsureSingleSeparator(a: string, b: string, separator: string = '') {\r\n if (!a) return b;\r\n if (!b) return a;\r\n return StringHelper.trimEnd(a, separator) + separator + StringHelper.trimStart(b, separator);\r\n }\r\n}","export class ValidationHelper {\r\n static readonly emailRegExp = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n\r\n static isValidEmail(email?: string | null) {\r\n if (typeof email === 'undefined' || email == null || ((typeof email === 'string') && email.length === 0)) {\r\n return false;\r\n }\r\n\r\n return this.emailRegExp.test(email);\r\n }\r\n}","import { Injectable, } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { KeyPair, LoginToken, LoginUser } from '../models';\r\nimport { DateHelper, ObjectHelper, StorageHelper } from '../utils';\r\nimport { BitwiseHelper } from '../utils/bitwise-helper';\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n static USER_KEY = 'user';\r\n static REFRESH_TOKEN_INTERVAL = 15 * 60 * 1000;\r\n\r\n private _auth = false;\r\n private _user: LoginUser | null = null;\r\n private _timerId: any;\r\n private _refreshTimerId: any;\r\n\r\n constructor() {\r\n const user = StorageHelper.get(AuthService.USER_KEY);\r\n if (user) {\r\n this._init(user);\r\n }\r\n }\r\n\r\n\r\n private get _isAuthenticated() {\r\n const expired = this.getExpired()\r\n return new Date() < expired;\r\n }\r\n\r\n\r\n\r\n get user() {\r\n return this._user;\r\n }\r\n get isAuthenticated() {\r\n return this._auth;\r\n }\r\n\r\n private _starTimer() {\r\n this._stopTimer();\r\n\r\n let interval = this.getExpired().getTime() - new Date().getTime() + 1000;\r\n if (interval < 1000)\r\n interval = 1000;\r\n if (interval > 0 && this._user) {\r\n this._timerId = setTimeout(() => {\r\n this._onTick();\r\n }, interval);\r\n }\r\n }\r\n private _stopTimer() {\r\n if (typeof this._timerId === 'number') {\r\n clearTimeout(this._timerId);\r\n }\r\n }\r\n\r\n private _onTick() {\r\n const newValue = this._isAuthenticated;\r\n if (this._auth !== newValue && !newValue) {\r\n this.logout();\r\n }\r\n }\r\n\r\n\r\n private _starRefreshTokenTimer() {\r\n this._stopRefreshTokenTimer();\r\n\r\n const interval = AuthService.REFRESH_TOKEN_INTERVAL;\r\n if (interval > 0 && this._user) {\r\n this._refreshTimerId = setInterval(() => {\r\n this.emitOnRefreshToken();\r\n }, interval);\r\n }\r\n }\r\n private _stopRefreshTokenTimer() {\r\n if (typeof this._refreshTimerId === 'number') {\r\n clearInterval(this._refreshTimerId);\r\n }\r\n }\r\n emitOnRefreshToken() {\r\n if (this._onRefreshTokenSubject) {\r\n this._onRefreshTokenSubject.next();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n emitOnSignedIn() {\r\n if (this._onSignedInSubject) {\r\n this._onSignedInSubject.next(this._auth);\r\n }\r\n }\r\n\r\n private _onSignedInSubject?: Subject<boolean>;//BehaviorSubject is for initial firt value = false\r\n private _onSignedInObservable?: Observable<boolean>;\r\n get onSignedIn(): Observable<boolean> {\r\n if (!this._onSignedInSubject) {\r\n this._onSignedInSubject = new Subject<boolean>();//(this.isAuthenticated);\r\n this._onSignedInObservable = this._onSignedInSubject.asObservable();\r\n }\r\n\r\n if (!this._onSignedInObservable)\r\n throw new Error(\"_onExecuteObservable is undefined\");\r\n\r\n return this._onSignedInObservable;\r\n }\r\n\r\n\r\n private _onRefreshTokenSubject?: Subject<void>;\r\n private _onRefreshTokenObservable?: Observable<void>;\r\n get onRefreshToken(): Observable<void> {\r\n if (!this._onRefreshTokenSubject) {\r\n this._onRefreshTokenSubject = new Subject<void>();\r\n this._onRefreshTokenObservable = this._onRefreshTokenSubject.asObservable();\r\n }\r\n\r\n if (!this._onRefreshTokenObservable)\r\n throw new Error(\"onRefreshTokenObservable is undefined\");\r\n\r\n return this._onRefreshTokenObservable;\r\n }\r\n\r\n\r\n\r\n login(user: LoginToken | LoginUser) {\r\n StorageHelper.set(AuthService.USER_KEY, user);\r\n this._init(user);\r\n }\r\n private _init(user: LoginToken | LoginUser) {\r\n if (user) {\r\n //convert string to local date/time\r\n user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;\r\n\r\n if (Array.isArray(user.roles)) {\r\n user.roles = user.roles.map(function (e: any) { return e ? e.toUpperCase() : e; });\r\n }\r\n }\r\n this._user = user as any;\r\n\r\n // if (!this._auth) {\r\n // this._auth = true;\r\n // this.emitOnSignedIn();\r\n // }\r\n this._auth = true;\r\n this.emitOnSignedIn();\r\n\r\n //restart timers for new timeouts\r\n this._starTimer();\r\n this._starRefreshTokenTimer();\r\n }\r\n\r\n logout() {\r\n StorageHelper.set(AuthService.USER_KEY, null);\r\n this._user = null;\r\n if (this._auth) {\r\n this._auth = false;\r\n this.emitOnSignedIn();\r\n }\r\n\r\n this._stopTimer();\r\n this._stopRefreshTokenTimer();\r\n }\r\n\r\n /**\r\n *\r\n * @returns user expiry date. if user is null returns min JS date\r\n */\r\n protected getExpired() {\r\n return this.user?.expired ?? new Date(0);\r\n }\r\n\r\n hasPermission(permission?: KeyPair<number, number> | number | null): boolean {\r\n if (!permission) {\r\n return true;\r\n }\r\n\r\n let key = 0;\r\n let value: number | null | undefined;\r\n if (typeof permission === 'number' || typeof permission === 'string') {\r\n key = +permission;\r\n }// else if (Array.isArray(permission)) {\r\n // }\r\n else if (typeof permission === 'object') {\r\n if (!permission.key)\r\n return true;\r\n\r\n key = permission.key;\r\n value = permission.value;\r\n }\r\n\r\n return this.hasPermissions([key], value);\r\n }\r\n\r\n\r\n hasPermissions(permissions?: Array<number>, value?: number | null): boolean {\r\n if (!permissions || permissions.length === 0) {\r\n return true;\r\n }\r\n\r\n const user = this.user;\r\n const userPermissions = user ? user.permissions : null;\r\n if (!userPermissions) {\r\n return false;\r\n }\r\n\r\n if (value) {\r\n for (let i = 0; i < permissions.length; i++) {\r\n const p = permissions[i];\r\n const found = userPermissions[p];\r\n if (found) {\r\n const hasPermission = BitwiseHelper.hasFlag(found, value);\r\n if (hasPermission)\r\n return true;\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < permissions.length; i++) {\r\n const p = permissions[i];\r\n const found = userPermissions[p];\r\n if (found)\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n hasDataPermission(data: any) {\r\n //if (data === undefined || data === null) return true;\r\n // const allowedRoles = data.roles;\r\n // let isInRole = this.isInRole(allowedRoles);\r\n\r\n const permission = data.permission;\r\n\r\n const hasPermission = this.hasPermission(permission);\r\n\r\n // return isInRole && hasPermission;\r\n return hasPermission;\r\n }\r\n}","import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, CanActivateFn } from '@angular/router';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n\r\nexport const zekAuthGuard: CanActivateFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const auth = inject(AuthService);\r\n const router = inject(Router);\r\n\r\n if (!auth.isAuthenticated) {\r\n router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n return false;\r\n }\r\n\r\n return auth.hasDataPermission(route.data);\r\n}","import { WebApiClient } from \"./web.api\";\r\nimport { HttpErrorHandler, HandleError } from \"./http-error-handler.service\";\r\n\r\nexport class BaseService {\r\n protected readonly handleError: HandleError;\r\n constructor(\r\n protected readonly controller: string,\r\n protected readonly api: WebApiClient,\r\n httpErrorHandler: HttpErrorHandler) {\r\n this.handleError = httpErrorHandler.createHandleError(this.constructor.name);\r\n }\r\n}","import { Observable, of, tap } from \"rxjs\";\r\n\r\ninterface CacheContent {\r\n expiry: number;\r\n value: any;\r\n}\r\n\r\nexport class CacheHelper {\r\n private static _cache = new Map<string, CacheContent>();\r\n\r\n static get(key: string): Observable<any> | undefined {\r\n const data = this._cache.get(key);\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n const now = new Date().getTime();\r\n if (now > data.expiry) {\r\n this._cache.delete(key);\r\n return undefined;\r\n }\r\n\r\n return of(data.value);\r\n }\r\n\r\n // Set data to cache\r\n static set(key: string, value: any, minutes: number = 5): Observable<any> {\r\n const expiry = new Date().getTime() + minutes * 60000;\r\n this._cache.set(key, { expiry, value });\r\n return of(value);\r\n }\r\n\r\n // Cache and return the Observable\r\n static getOrCreate(key: string, fallback: Observable<any>, minutes?: number): Observable<any> {\r\n const cached = this.get(key);\r\n if (cached) {\r\n return cached;\r\n } else {\r\n return fallback.pipe(\r\n tap(value => {\r\n this.set(key, value, minutes);\r\n })\r\n );\r\n }\r\n }\r\n}","import { catchError, Observable } from \"rxjs\";\r\n\r\nimport { HttpErrorHandler } from \"./http-error-handler.service\";\r\nimport { PagedList } from \"../models\";\r\nimport { BaseService } from \"./base.service\";\r\nimport { WebApiClient } from \"./web.api\";\r\nimport { UrlHelper } from \"../utils\";\r\n\r\nexport interface IService {\r\n getAll(filter: any): Observable<PagedList>;\r\n delete(id: any): Observable<any>;\r\n delete2(id: any, id2: any): Observable<any>;\r\n export(filter: any, fileTypeId: any): Observable<Blob | null>;\r\n sum(filter: any): Observable<any>;\r\n\r\n get(id: any): Observable<any>;\r\n get2(id: any, id2: any): Observable<any>;\r\n save(model: any): Observable<any>;\r\n restore(id: any): Observable<any>;\r\n approve(model: any): Observable<any>;\r\n disapprove(model: any): Observable<any>;\r\n batch(model: any): Observable<any>;\r\n}\r\nexport class CrudService extends BaseService implements IService {\r\n constructor(\r\n controller: string,\r\n api: WebApiClient,\r\n httpErrorHandler: HttpErrorHandler) {\r\n super(controller, api, httpErrorHandler);\r\n }\r\n\r\n get(id: any) {\r\n const url = UrlHelper.combine(`api/${this.controller}`, id);\r\n return this.api.get(url).pipe(catchError(this.handleError(this.get.name, null)));\r\n }\r\n get2(id: any, id2: any) {\r\n return this.api.get(`api/${this.controller}/${id}/${id2}`).pipe(catchError(this.handleError(this.get2.name, null)));\r\n }\r\n\r\n getAll(filter?: any): Observable<PagedList> {\r\n return this.api.get(`api/${this.controller}`, filter).pipe(catchError(this.handleError(this.getAll.name)));\r\n }\r\n sum(filter?: any) {\r\n return this.api.get(`api/${this.controller}/Sum`, filter).pipe(catchError(this.handleError(this.sum.name)));\r\n }\r\n\r\n save(model: any) {\r\n return !model.id\r\n ? this.api.post<any>(`api/${this.controller}`, model).pipe(catchError(this.handleError(this.save.name, null)))\r\n : this.api.put<any>(`api/${this.controller}/${model.id}`, model).pipe(catchError(this.handleError(this.save.name, null)));\r\n }\r\n\r\n delete(id: any) {\r\n return this.api.delete(`api/${this.controller}/${id}`).pipe(catchError(this.handleError(this.delete.name, null)));\r\n }\r\n delete2(id: any, id2: any) {\r\n return this.api.delete(`api/${this.controller}/${id}/${id2}`).pipe(catchError(this.handleError(this.delete2.name, null)));\r\n }\r\n\r\n restore(id: any) {\r\n return this.api.patch(`api/${this.controller}/${id}/Restore`).pipe(catchError(this.handleError(this.restore.name, null)));\r\n }\r\n\r\n approve(model: any) {\r\n return this.api.patch(`api/${this.controller}/Approve`, model).pipe(catchError(this.handleError(this.approve.name, null)));\r\n }\r\n disapprove(model: any) {\r\n return this.api.patch(`api/${this.controller}/Disapprove`, model).pipe(catchError(this.handleError(this.disapprove.name, null)));\r\n }\r\n\r\n batch(model: any) {\r\n return this.api.post(`api/${this.controller}/Batch`, model).pipe(catchError(this.handleError(this.batch.name, null)));\r\n }\r\n\r\n\r\n export(model: any, fileTypeId: any): Observable<Blob | null> {\r\n return this.api.getBlob(`api/${this.controller}/Export/${fileTypeId}`, model).pipe(catchError(this.handleError('export', null)));\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { AlertType } from '../models';\r\nimport { BootstrapHelper } from '../utils/bootstrap.helper';\r\n\r\nexport class BaseAlert {\r\n type?: AlertType | null;\r\n icon?: string | null;\r\n title?: string | null;\r\n css?: string | null;\r\n // id?: string;\r\n}\r\n\r\nexport class Alert extends BaseAlert {\r\n messages?: string[];\r\n}\r\n\r\nexport class Toast extends BaseAlert {\r\n message?: string | null;\r\n}\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n private alertSubject = new Subject<any>();\r\n private toastSubject = new Subject<any>();\r\n private keepAfterRouteChange = false;\r\n // private id = 0;\r\n\r\n constructor(router: Router) {\r\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.keepAfterRouteChange) {\r\n // only keep for a single route change\r\n this.keepAfterRouteChange = false;\r\n } else {\r\n // clear alert messages\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n add(alertType: AlertType, message: string, keepAfterRouteChange = false) {\r\n const messages = [];\r\n messages.push(message);\r\n this.addRange(alertType, messages, keepAfterRouteChange);\r\n }\r\n addRange(alertType: AlertType, messages: string[], keepAfterRouteChange = false) {\r\n this.keepAfterRouteChange = keepAfterRouteChange;\r\n this.alertSubject.next(<Alert>{ type: alertType, messages: messages });\r\n }\r\n clear() {\r\n this.alertSubject.next(null);\r\n }\r\n\r\n\r\n getAlert() {\r\n return this.alertSubject.asObservable();\r\n }\r\n getToast() {\r\n return this.toastSubject.asObservable();\r\n }\r\n\r\n\r\n success(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'success', icon);\r\n }\r\n error(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'danger', icon);\r\n }\r\n warning(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'warning', icon);\r\n }\r\n info(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'info', icon);\r\n }\r\n private show(message: string, title?: string | null, alertType?: AlertType | null, icon?: string | null) {\r\n // if (!icon) {\r\n // icon = BootstrapHelper.cssAlertIcon(alertType)\r\n // }\r\n\r\n this.toastSubject.next(<Toast>{ message, title, type: alertType, icon });//, id: `${this.id++}`\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AlertService } from './alert.service';\r\nimport { ObjectHelper } from '../utils/object-helper';\r\n\r\n/** Type of the handleError function returned by HttpErrorHandler.createHandleError */\r\nexport type HandleError = <T = any>(operation?: string, result?: T, show?: boolean) => (error: HttpErrorResponse) => Observable<T>;\r\nexport type HandleErrorResult = <T = any>(operation?: string, result?: T, show?: boolean) => (error: HttpErrorResponse) => Observable<T>;\r\n\r\n/** Handles HttpClient errors */\r\n@Injectable()\r\nexport class HttpErrorHandler {\r\n constructor(\r\n private readonly alert: AlertService,\r\n private readonly translate: TranslateService,\r\n private readonly router: Router) { }\r\n\r\n /** Create curried handleError function that already knows the service name */\r\n createHandleError = (serviceName = '') => <T>(operation = 'operation', result = {} as T, show = true) => this.handleError(serviceName, operation, result, show);\r\n createHandleErrorResult = (serviceName = '') => <T>(operation = 'operation', result = {} as T, show = true) => this.handleErrorResult(serviceName, operation, result, show);\r\n\r\n /**\r\n * Returns a function that handles Http operation failures.\r\n * This error handler lets the app continue to run as if no error occurred.\r\n * @param serviceName = name of the data service that attempted the operation\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n * @param show - optional value to show error\r\n */\r\n handleError<T>(serviceName = '', operation = 'operation', result = {} as T, show?: boolean) {\r\n return (response: HttpErrorResponse): Observable<T> => {\r\n console.error(response);\r\n\r\n if (show) {\r\n this.showError(serviceName, operation, response)\r\n }\r\n\r\n return of(result);\r\n };\r\n }\r\n\r\n\r\n\r\n /**\r\n * Returns a function that handles Http operation failures.\r\n * This error handler lets the app continue to run as if no error occurred.\r\n * @param serviceName = name of the data service that attempted the operation\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n * @param show - optional value to show error\r\n */\r\n handleErrorResult<T>(serviceName = '', operation = 'operation', result = {} as T, show?: boolean) {\r\n return (response: HttpErrorResponse): Observable<any> => {\r\n console.error(response);\r\n\r\n if (show) {\r\n this.showError(serviceName, operation, response)\r\n }\r\n\r\n\r\n let error: any; \r\n if (typeof response.error === 'string' && response.error[0] === '{') {\r\n error = JSON.parse(response.error);\r\n } else {\r\n error = response.error;\r\n }\r\n\r\n if (error instanceof ErrorEvent) {\r\n error = response.error.message;\r\n }\r\n\r\n return ObjectHelper.isDefined(error) ? of(error) : of(result);\r\n };\r\n }\r\n\r\n\r\n private showError(serviceName: string, operation: string, response: HttpErrorResponse) {\r\n switch (response.status) {\r\n case 0://No Connection\r\n this.alert.error(`Can't connect to api server.`);\r\n break;\r\n\r\n case 400://Bad Request\r\n let error: any;\r\n if (typeof response.error === 'string' && response.error[0] === '{') {\r\n error = JSON.parse(response.error);\r\n } else {\r\n error = response.error;\r\n }\r\n\r\n if (error instanceof ErrorEvent) {\r\n this.alert.error(`${serviceName}: ${operation} failed: ${response.error.message}`);\r\n } if (typeof error === 'string') {\r\n this.alert.error(response.error as string);\r\n } else if (typeof error === 'object') {\r\n const errors = error.traceId || error.success === false\r\n ? error.errors\r\n : error;\r\n\r\n const errorMessages: string[] = [];\r\n const properties = Object.getOwnPropertyNames(errors);\r\n\r\n for (const property of properties) {\r\n const messages = errors[property];\r\n if (messages instanceof Array) {\r\n for (const message of messages) {\r\n const messageKey = `Validation.${message}`;\r\n let translatedMessage = this.translate.instant(messageKey);\r\n // if translation not found then use message\r\n if (messageKey == translatedMessage) {\r\n translatedMessage = message;\r\n }\r\n\r\n if (property) {\r\n const propertyKey = `Fields.${property}`;\r\n let translatedProperty = this.translate.instant(`Fields.${property}`);\r\n // if translation not found then use property\r\n if (propertyKey == translatedProperty) {\r\n translatedProperty = property\r\n }\r\n errorMessages.push(translatedProperty + ' - ' + translatedMessage);\r\n }\r\n else {\r\n errorMessages.push(translatedMessage);\r\n }\r\n }\r\n }\r\n }\r\n this.alert.addRange('danger', errorMessages);\r\n }\r\n break;\r\n\r\n case 401://Unauthorized\r\n this.alert.error('Unauthorized');\r\n this.router.navigate(['/login']);\r\n break;\r\n\r\n case 403://Forbidden\r\n this.alert.error('Forbidden');\r\n break;\r\n\r\n case 404://Not Found\r\n this.alert.error('Not Found');\r\n break;\r\n\r\n case 402://Payment Required\r\n this.alert.error('License Payment Required');\r\n break;\r\n\r\n case 500://Internal Server Error\r\n this.alert.error('Internal Server Error');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_BASE_URL = new InjectionToken<string>('API_BASE_URL');\r\nexport const DATE_FORMAT = new InjectionToken<string>('DATE_FORMAT');\r\nexport const LANGUAGE = new InjectionToken<string>('LANGUAGE');\r\nexport const RECAPTCHA_SITE_KEY = new InjectionToken<string>('RECAPTCHA_SITE_KEY');\r\nexport const GOOGLE_CLIENT_ID = new InjectionToken<string>('GOOGLE_CLIENT_ID');","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams/*, HttpErrorResponse*/ } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n//import { of } from 'rxjs/observable/of';\r\n//import { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthService } from './auth.service';\r\n//import { deleteNullProperties } from '../utils';\r\n//import { HttpErrorHandler, HandleError } from './http-error-handler.service';\r\nimport { HttpParameterCodec } from '@angular/common/http';\r\nimport { API_BASE_URL } from '../tokens';\r\nimport { UrlHelper } from '../utils';\r\n\r\nexport interface WebApiConfig {\r\n baseUrl: string;\r\n}\r\n\r\n@Injectable()\r\nexport class WebApiClient {\r\n constructor(\r\n protected readonly http: HttpClient,\r\n protected readonly auth: AuthService,\r\n @Inject(API_BASE_URL) private readonly baseUrl: string) {\r\n }\r\n\r\n get<T = any>(url: string, params?: any): Observable<T> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get<T>(combinedUrl, { headers: this.getHeaders(), params: this.toHttpParams(params) });\r\n /*.catch(catchError(this.handleError(url)))\r\n .do((res: Response) => {\r\n // Handle success, maybe display notification\r\n }, (error: any) => {\r\n // Handle errors\r\n })\r\n .finally(() => {\r\n // Request completed\r\n });\r\n */\r\n }\r\n\r\n getString(url: string, params?: object): Observable<string | null> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'text', params: this.toHttpParams(params) });\r\n }\r\n getBytes(url: string, params?: any): Observable<ArrayBuffer> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'arraybuffer', params: this.toHttpParams(params) });\r\n }\r\n getBlob(url: string, params?: any): Observable<Blob> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'blob', params: this.toHttpParams(params) });\r\n }\r\n postBlob(url: string, body: any): Observable<Blob> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.post(combinedUrl, body, { headers: this.getHeaders(), responseType: 'blob' });\r\n }\r\n\r\n\r\n protected toHttpParams(obj: any) {\r\n if (!obj)\r\n return undefined;\r\n\r\n let params = new HttpParams({ encoder: new CustomHttpParamEncoder() });\r\n for (const key of Object.keys(obj)) {\r\n const field = obj[key];\r\n\r\n if (field === undefined || field === null || (typeof field === 'string' && field.length === 0))\r\n continue;\r\n\r\n const value = field;\r\n // if (typeof field === 'string' && field.length > 0) {\r\n // value = field.replace(/\\+/gi, '%2B');\r\n // }\r\n\r\n params = params.append(key, value);\r\n // if (field instanceof Array) {\r\n // field.forEach((item: any) => {\r\n // params = params.append(`${key}[]`, item);\r\n // });\r\n // } else {\r\n // params = params.append(key, field);\r\n // }\r\n }\r\n return params;\r\n\r\n\r\n //deleteNullProperties(obj);\r\n //comment because int[] not sending in c# it send \"1,2,3,4\"\r\n // return obj\r\n // ? Object.getOwnPropertyNames(obj).reduce((p, key) => p.set(key, obj[key]), new HttpParams())\r\n // : undefined;\r\n }\r\n\r\n //toKeyPairs(obj: any): KeyPair[] | undefined {\r\n // if (obj instanceof Object) {\r\n // const properties = Object.getOwnPropertyNames(obj);\r\n // const result = new Array<KeyPair>();\r\n // for (let property of properties) {\r\n // const value = obj[property];\r\n // result.push({ key: property, value: value });\r\n // }\r\n // return result;\r\n // }\r\n // return undefined;\r\n //}\r\n\r\n post<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.post<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n //.pipe(\r\n //catchError(this.handleError(url))\r\n //);\r\n }\r\n put<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.put<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n //.pipe(\r\n //catchError(this.handleError(url))\r\n //);\r\n }\r\n delete<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.request<T>('delete', UrlHelper.combine(this.baseUrl, url), { body, headers: this.getHeaders(body) });\r\n //return this.http.delete(environment.url + url, { headers: this.getHeaders() });\r\n //.pipe(\r\n //catchError(this.handleError(url))\r\n //);\r\n }\r\n patch<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.patch<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n }\r\n\r\n\r\n protected getHeaders(body?: any | null): HttpHeaders {\r\n let httpHeaders = new HttpHeaders();\r\n if (!(body instanceof FormData))\r\n httpHeaders = httpHeaders.set('Content-Type', 'application/json');\r\n const tmp = this.auth.user;\r\n const token = tmp ? tmp.token : undefined;\r\n if (token)\r\n httpHeaders = httpHeaders.set('Authorization', token);\r\n return httpHeaders;\r\n }\r\n\r\n\r\n\r\n //private getParams(params?: KeyPair[] | null) {\r\n // if (!params || params.length === 0) {\r\n // return undefined;\r\n // }\r\n // let httpParams = new HttpParams();\r\n // if (params) {\r\n // for (let param of params) {\r\n // httpParams = httpParams.set(param.key, param.value);\r\n // }\r\n // }\r\n // return httpParams;\r\n //}\r\n}\r\n\r\n\r\n\r\nexport class CustomHttpParamEncoder implements HttpParameterCodec {\r\n encodeKey(key: string): string {\r\n return encodeURIComponent(key);\r\n }\r\n encodeValue(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n decodeKey(key: string): string {\r\n return decodeURIComponent(key);\r\n }\r\n decodeValue(value: string): string {\r\n return decodeURIComponent(value);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { catchError } from 'rxjs';\r\nimport { CrudService } from './crud.service';\r\nimport { WebApiClient } from './web.api';\r\nimport { HttpErrorHandler } from './http-error-handler.service';\r\nimport { IFileBase } from '../models';\r\n\r\n@Injectable()\r\nexport class FileService extends CrudService {\r\n constructor(api: WebApiClient, httpErrorHandler: HttpErrorHandler) {\r\n super('files', api, httpErrorHandler);\r\n }\r\n\r\n download(id: any, hash: any) {\r\n return this.api.getBlob(`api/${this.controller}`, { id, hash }).pipe(catchError(this.handleError(this.download.name, null)));\r\n }\r\n\r\n presignedUrl(id: any, hash: any) {\r\n return this.api.get(`api/${this.controller}/${id}/${hash}/presigned-url`).pipe(catchError(this.handleError(this.presignedUrl.name, null)));\r\n }\r\n\r\n downloadFile(file: IFileBase) {\r\n if (!file) return;\r\n this.presignedUrl(file.id, file.hash).subscribe(data => {\r\n if (data?.success) {\r\n window.open(data.value, '_blank');\r\n }\r\n });\r\n }\r\n}","import { OnInit, Directive, OnDestroy, Input } from '@angular/core';\r\n\r\nlet uniqueId = 0;\r\n\r\n@Directive()\r\nexport class CoreComponent implements OnInit, OnDestroy {\r\n loading = false;\r\n\r\n ngOnInit() {\r\n this.load();\r\n }\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n\r\n uniqueId = ++uniqueId;\r\n \r\n async load() {\r\n try {\r\n if (this.loading) return;\r\n\r\n this.loading = true;\r\n await this.init();\r\n await this.bindModel();\r\n await this.bindDictionary();\r\n await this.onBindingCompleted();\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n\r\n await this.onLoadCompleted();\r\n }\r\n init() { }\r\n bindModel() {\r\n this.onBindModelCompleted();\r\n }\r\n onBindModelCompleted() { }\r\n bindDictionary() { }\r\n onBindingCompleted() { }\r\n onLoadCompleted() { }\r\n\r\n async destroy() {\r\n }\r\n}","import { Input, Directive, inject, EventEmitter, Output } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { PrintType } from '../models/print.model';\r\nimport { WebApiClient } from '../services';\r\nimport { CoreComponent } from './core.component';\r\nimport { BooleanInput } from './types';\r\nimport { Convert, FileHelper, UrlHelper } from '../utils';\r\n\r\n@Directive()\r\nexport class BaseComponent<TModel = any> extends CoreComponent {\r\n protected readonly api = inject(WebApiClient);\r\n protected readonly route = inject(ActivatedRoute);\r\n protected readonly router = inject(Router);\r\n\r\n private _readOnly = false;\r\n @Input()\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n set readOnly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _url: string | null = null;\r\n protected get url(): string {\r\n if (!this._url)\r\n this._url = UrlHelper.getNoParam(this.router.url);\r\n return this._url;\r\n }\r\n\r\n @Input() model?: TModel | null;\r\n @Output() modelChange = new EventEmitter<TModel | null | undefined>();\r\n\r\n protected getParam(name: string) {\r\n return this.route.snapshot.paramMap.get(name);\r\n }\r\n protected getQueryParam(name: string) {\r\n return this.route.snapshot.queryParamMap.get(name);\r\n }\r\n\r\n reload() {\r\n this._redirectTo(this.router.url);\r\n }\r\n private _redirectTo(url: string) {\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigateByUrl(url);\r\n });\r\n }\r\n\r\n protected navigateReturnUrl() {\r\n const returnUrl = this.getQueryParam('returnUrl') || this.getParam('returnUrl');\r\n if (returnUrl) {\r\n this.router.navigateByUrl(returnUrl);\r\n // let urlTree = this.router.parseUrl(returnUrl);\r\n // const urlWithoutParams = urlTree.root.children[PRIMARY_OUTLET].segments.map(it => it.path).join('/')\r\n // this.router.navigate([urlWithoutParams, urlTree.root.children[PRIMARY_OUTLET].segments[urlTree.root.children[PRIMARY_OUTLET].segments.length - 1].parameters]);\r\n return;\r\n }\r\n\r\n this.router.navigate([this.router.url.substring(0, this.router.url.lastIndexOf('/'))]);\r\n }\r\n\r\n\r\n cancel() {\r\n this.navigateReturnUrl();\r\n }\r\n\r\n downloadFile(blob: Blob | null, fileName: string, type?: string | null) {\r\n FileHelper.download(blob, fileName);\r\n }\r\n print(id?: number | null, printType?: PrintType) {\r\n const split = this.url.split('/');\r\n if (split.length < 2) {\r\n return;\r\n }\r\n const template = split[1];\r\n // let api = inject(WebApiClient);\r\n\r\n let actionName: string;\r\n\r\n switch (printType) {\r\n case PrintType.Pdf:\r\n actionName = 'PrintPdfIdLink';\r\n break;\r\n\r\n default:\r\n actionName = 'ShowIdLink'\r\n break;\r\n }\r\n this.api.getString(`api/Reports/${actionName}`, { template, id }).subscribe(url => {\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n });\r\n }\r\n\r\n protected internalPrint(name: any, id: any, printType: PrintType = PrintType.Show) {\r\n this.api.get(`api/reports/presigned-url`, { name, id, type: printType }).subscribe(data => {\r\n if (data?.success) {\r\n window.open(data.value, '_blank');\r\n }\r\n });\r\n }\r\n}\r\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from \"@angular/core\";\r\nimport { ControlValueAccessor } from \"@angular/forms\";\r\nimport { Convert } from \"../utils\";\r\nimport { CancelArgs } from \"./args\";\r\nimport { CoreComponent } from \"./core.component\";\r\nimport { BooleanInput } from \"./types\";\r\n\r\n@Directive()\r\nexport class CoreUiComponent extends CoreComponent\r\n implements AfterContentInit, ControlValueAccessor {\r\n constructor(\r\n protected _renderer: Renderer2,\r\n protected _elementRef: ElementRef\r\n //private _changeDetector: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n /** The method to be called in order to update ngModel */\r\n _onChange: (value: any) => void = () => { };\r\n\r\n /**\r\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\r\n * @docs-private\r\n */\r\n _onTouched: () => any = () => { };\r\n\r\n\r\n /**\r\n * Helper method that sets a property on a target element using the current Renderer\r\n * implementation.\r\n * @nodoc\r\n */\r\n protected setProperty(key: string, value: any): void {\r\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\r\n }\r\n\r\n @Output() readonly change: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() readonly changing: EventEmitter<CancelArgs> = new EventEmitter<CancelArgs>();\r\n\r\n private _name: string = `zek-${++this.uniqueId}`;\r\n get name(): string {\r\n return this._name;\r\n }\r\n @Input()\r\n set name(value: string) {\r\n if (this._name !== value) {\r\n this._name = value;\r\n this.onNameChanged();\r\n }\r\n }\r\n onNameChanged() { }\r\n \r\n\r\n private _isInitialized = false;\r\n get isInitialized() {\r\n return this._isInitialized;\r\n }\r\n\r\n protected _value: any = null;\r\n get value(): any {\r\n return this._value;\r\n }\r\n @Input()\r\n set value(newValue: any) {\r\n if (this._value !== newValue) {\r\n const cancelEventArgs: CancelArgs = {\r\n oldValue: this._value,\r\n newValue: newValue\r\n };\r\n\r\n this.onValueChanging(cancelEventArgs);\r\n if (cancelEventArgs.cancel === true)\r\n return;\r\n\r\n // Set this before proceeding to ensure no circular loop occurs with selection.\r\n this._value = newValue;\r\n this.onValueChanged();\r\n }\r\n }\r\n onValueChanging(e: CancelArgs) {\r\n this.changing.emit(e);\r\n }\r\n onValueChanged() { }\r\n\r\n /**\r\n * Use this method for client side change\r\n * @param newValue \r\n */\r\n setNgModel(newValue: any) {\r\n if (!this.disabled) {\r\n if (this._value !== newValue) {\r\n this.value = newValue;\r\n this._emitChangeEvent();\r\n this._onChange(this._value);//write value to NgModel\r\n }\r\n }\r\n }\r\n\r\n private _readonly = false;\r\n /** Whether the component is disabled */\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n @Input()\r\n set readonly(value: BooleanInput) {\r\n const v = Convert.toBooleanProperty(value);\r\n if (this._readonly !== v) {\r\n this._readonly = v;\r\n this.onReadOnlyChanged();\r\n }\r\n }\r\n onReadOnlyChanged() { }\r\n\r\n\r\n private _disabled = false;\r\n /** Whether the component is disabled */\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n @Input()\r\n set disabled(value: BooleanInput) {\r\n const v = Convert.toBooleanProperty(value);\r\n if (this._disabled !== v) {\r\n this._disabled = v;\r\n this.onDisabledChanged();\r\n }\r\n }\r\n onDisabledChanged() { }\r\n\r\n\r\n private _required = false;\r\n /** Whether the component is required */\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n @Input()\r\n set required(value: BooleanInput) {\r\n const v = Convert.toBooleanProperty(value);\r\n if (this._required !== v) {\r\n this._required = v;\r\n this.onRequiredChanged();\r\n }\r\n }\r\n onRequiredChanged() { }\r\n\r\n\r\n _onInputInteraction(event: Event) {\r\n // We always have to stop propagation on the change event.\r\n // Otherwise the change event, from the input element, will bubble up and\r\n // emit its event object to the `change` output.\r\n event.stopPropagation();\r\n this.setNgModel((event.target as any).value);\r\n }\r\n\r\n /** Dispatch change event with current value. */\r\n _emitChangeEvent(): void {\r\n if (this._isInitialized) {\r\n this.change.emit(this._value);\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit() {\r\n // Mark this component as initialized in AfterContentInit because the initial value can\r\n // possibly be set by NgModel on component, and it is possible that the OnInit of the\r\n // NgModel occurs *after* the OnInit of the component.\r\n this._isInitialized = true;\r\n }\r\n\r\n\r\n /**\r\n * Sets the model value. Implemented as part of ControlValueAccessor.\r\n * (write from model to el.nativeElement)\r\n * @param value\r\n */\r\n writeValue(value: any) {\r\n this.value = value;\r\n //this._changeDetector.markForCheck();\r\n //this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n }\r\n\r\n /**\r\n * Registers a callback to be triggered when the model value changes.\r\n * Implemented as part of ControlValueAccessor.\r\n * @param fn Callback to be registered.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback to be triggered when the control is touched.\r\n * Implemented as part of ControlValueAccessor.\r\n * @param fn Callback to be registered.\r\n */\r\n registerOnTouched(fn: any) {\r\n this._onTouched = fn;\r\n }\r\n\r\n\r\n /**\r\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\r\n * @param isDisabled Whether the control should be disabled.\r\n */\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n //this._changeDetector.markForCheck();\r\n //this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n}","import { ViewChild, Directive, inject } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base.component';\r\nimport { ApproveModel, IObjectConstructor, PrintType } from '../models';\r\nimport { ZekModal } from '../modules/modal/modal/modal.component';\r\nimport { AlertService } from '../services/alert.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { IService } from '../services';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Directive()\r\nexport class EditFormComponent<TModel = any> extends BaseComponent<TModel> {\r\n id?: number | null;\r\n id2?: number | null;\r\n @ViewChild('f', { static: false }) form?: NgForm;\r\n\r\n\r\n approveModel: ApproveModel = {};\r\n @ViewChild('approveModal', { static: false }) protected readonly approveModal?: ZekModal;\r\n @ViewChild('disapproveModal', { static: false }) protected readonly disapproveModal?: ZekModal;\r\n // @ViewChild('submitModal', { static: false }) protected readonly submitModal?: ModalComponent;\r\n\r\n override init() {\r\n super.init();\r\n const idParam = this.getParam('id') || this.getQueryParam('id');\r\n if (idParam)\r\n this.id = +idParam;\r\n\r\n const id2Param = this.getParam('id2') || this.getQueryParam('id2');\r\n if (id2Param)\r\n this.id2 = +id2Param;\r\n }\r\n\r\n override async bindModel() {\r\n if (this.id) {\r\n this.model = await this.getModel();\r\n }\r\n else {\r\n this.initCreate();\r\n }\r\n }\r\n\r\n protected initCreate() {\r\n this.model = {} as TModel;\r\n }\r\n\r\n protected getModel(): Promise<any> {\r\n throw 'Not implemented getModel';\r\n }\r\n\r\n onSubmit(f: NgForm) {\r\n this.save(f);\r\n }\r\n async save(f?: NgForm) {\r\n if (!f || f.valid) {\r\n return await this.internalSave(true);\r\n }\r\n\r\n return false;\r\n }\r\n protected internalSave(navigateToReturnUrl?: boolean): Promise<boolean> {\r\n throw 'Not implemented internalSave';\r\n }\r\n\r\n\r\n showApproveModal() {\r\n this.approveModel = {};\r\n if (this.approveModal) {\r\n this.approveModal.show();\r\n }\r\n else {\r\n throw new Error('approveModal is null or undefined');\r\n }\r\n }\r\n async approve() {\r\n if (this.id) {\r\n this.approveModel.ids = [this.id];\r\n const approved = await this.internalApprove(this.approveModel);\r\n if (approved) {\r\n this.load();\r\n }\r\n }\r\n }\r\n protected internalApprove(model?: any): Promise<boolean> {\r\n throw 'Not implemented internalApprove';\r\n }\r\n\r\n showDisapproveModal() {\r\n this.approveModel = {};\r\n if (this.disapproveModal) {\r\n this.disapproveModal.show();\r\n }\r\n else {\r\n throw new Error('disapproveModal is null or undefined');\r\n }\r\n }\r\n async disapprove() {\r\n if (this.id) {\r\n this.approveModel.ids = [this.id];\r\n const disapproved = await this.internalDisapprove(this.approveModel);\r\n if (disapproved) {\r\n this.load();\r\n }\r\n }\r\n }\r\n protected internalDisapprove(model?: any): Promise<boolean> {\r\n throw 'Not implemented internalDisapprove';\r\n }\r\n}\r\n\r\n@Directive()\r\nexport class EditBaseComponent<TModel = any> extends EditFormComponent<TModel> {\r\n constructor(readonly service: IService) {\r\n super();\r\n }\r\n\r\n readonly translate = inject(TranslateService);\r\n readonly alert = inject(AlertService);\r\n\r\n\r\n protected override async internalSave(navigateToReturnUrl?: boolean | null): Promise<boolean> {\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.service.save(this.model));\r\n let success = false;\r\n if (typeof data === 'number' && data > 0) {\r\n success = true;\r\n this.id = data;\r\n } else if (typeof data === 'object' && data?.success) {\r\n success = true;\r\n }\r\n\r\n if (success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.SaveSuccess'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n\r\n if (navigateToReturnUrl === true) {\r\n this.navigateReturnUrl();\r\n }\r\n\r\n return true;\r\n // if (navigateToReturnUrl) {\r\n // this.navigateReturnUrl();\r\n // } else if (!this.id) {//if insert\r\n // this.router.navigate([this.router.url.substring(0, this.router.url.length - 6), id]);\r\n // }\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.SaveError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n protected override async internalApprove(model?: any): Promise<boolean> {\r\n const data = await firstValueFrom(this.service.approve(model));\r\n if (data && data.length > 0) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Approved'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n return true;\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.ApproveError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n protected override async internalDisapprove(model?: any): Promise<boolean> {\r\n const data = await firstValueFrom(this.service.disapprove(model));\r\n if (data && data.length > 0) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Disapproved'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n return true;\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.DisapproveError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n protected async internalSubmit(model?: any): Promise<boolean> {\r\n const data = await firstValueFrom(this.service.approve(model));\r\n if (data && data.length > 0) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Submitted'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n return true;\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.SubmitError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n protected override async getModel() {\r\n if (this.id2)\r\n return await firstValueFrom(this.service.get2(this.id, this.id2));\r\n else\r\n return await firstValueFrom(this.service.get(this.id));\r\n }\r\n protected override initCreate() {\r\n this.model = {} as TModel;\r\n }\r\n\r\n override print(printType?: PrintType) {\r\n super.print(this.id, printType);\r\n }\r\n\r\n async restore() {\r\n const data = await firstValueFrom(this.service.restore(this.id))\r\n if (data?.success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Restored'));\r\n this.alert.success(message);\r\n this.load();\r\n }\r\n }\r\n export(fileTypeId: number) {\r\n this.service.export({ id: this.id }, fileTypeId).subscribe(data => {\r\n this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n });\r\n }\r\n}\r\n\r\n@Directive()\r\nexport class EditComponent<TModel> extends EditBaseComponent<TModel> {\r\n constructor(private readonly _ctorModel: IObjectConstructor<TModel>, service: IService) {\r\n super(service);\r\n }\r\n\r\n protected override initCreate() {\r\n this.model = new this._ctorModel();\r\n }\r\n}","export class EditBase {\r\n id?: number | null;\r\n\r\n isDeleted?: boolean | null;\r\n readOnly?: boolean | null;\r\n}","export class FilterBase {\r\n id?: number | null = null;\r\n isDeleted: boolean | null = null;\r\n quickSearch: string | null = null;\r\n\r\n page: number = 1;\r\n pageSize: number = 10;\r\n\r\n sort: string | null = null;\r\n asc = false;\r\n}","export enum Gender {\r\n Male = 1,\r\n Female = 2,\r\n}","export class KeyPair<TKey = any, TValue = any> {\r\n key?: TKey | null;\r\n value?: TValue | null;\r\n\r\n constructor(init?: Partial<KeyPair>) {\r\n if (init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\nexport class KeyPairEx<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n [key: string]: any\r\n}\r\n\r\nexport class KeyPairChecked<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n checked?: boolean | null;\r\n\r\n}\r\n\r\nexport class KeyPairRequired<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n required?: boolean | null;\r\n}","export class ListBase {\r\n id?: number | null;\r\n isDeleted?: boolean | null;\r\n}","export enum Month\r\n{\r\n January = 1,\r\n February = 2,\r\n March = 3,\r\n April = 4,\r\n May = 5,\r\n June = 6,\r\n July = 7,\r\n August = 8,\r\n September = 9,\r\n October = 10,\r\n November = 11,\r\n December = 12\r\n}","export class Pager {\r\n totalItemCount = 0;\r\n pageCount = 1;\r\n pageNumber = 1;\r\n pageSize = 25;\r\n hasPreviousPage = false;\r\n hasNextPage = false;\r\n isFirstPage = false;\r\n isLastPage = false;\r\n firstItemOnPage = 0;\r\n lastItemOnPage = 0;\r\n pages: number[] = [];\r\n}\r\n\r\n\r\nexport class PagedList<T = any> {\r\n items: T[] = [];\r\n\r\n pager: Pager = new Pager();\r\n\r\n totalItemCount = 0;\r\n count = 0;\r\n pageNumber = 1;\r\n pageSize = 25;\r\n\r\n pageCount = 1;\r\n hasPreviousPage = false;\r\n hasNextPage = false;\r\n isFirstPage = false;\r\n isLastPage = false;\r\n firstItemOnPage = 0;\r\n lastItemOnPage = 0;\r\n}","import { KeyPairChecked } from './key-pair.model';\r\n\r\n/**\r\n * @deprecated use ITreeNode\r\n */\r\nexport class Tree extends KeyPairChecked<number, string> {\r\n parentId?: number | null;\r\n children?: Tree[] | null;\r\n childrenCount?: number | null;\r\n indent?: number | null;\r\n childrenIds?: number[] | null;\r\n}","export class ValidEventArgs {\r\n valid = true;\r\n}","import { ViewChild, Directive, inject, Input } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nimport { IService } from '../services';\r\nimport { BaseComponent } from './base.component';\r\nimport { ApproveModel, FilterBase, PagedList, Pager, PrintType } from '../models';\r\nimport { ZekModal } from '../modules/modal/modal/modal.component';\r\nimport { AlertService } from '../services/alert.service';\r\nimport { ArrayHelper, Convert, FilterHelper, PagerHelper, StorageHelper, StringHelper, UrlHelper } from '../utils';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { BooleanInput } from './types';\r\n// declare let bootstrap: any;\r\n\r\n@Directive()\r\nexport class ListBaseComponent<TService extends IService = IService, TPagedListItem = any> extends BaseComponent<PagedList<TPagedListItem>> {\r\n filter: any = new FilterBase();\r\n saveFilter = true;\r\n sortFields: any;\r\n protected internalFilter: any = new FilterBase();\r\n isFiltered = false;\r\n selectedIds: any[] = [];\r\n selectedItems: any[] = [];\r\n pager = new Pager();\r\n sumModel: any;\r\n tableId = 'table';\r\n\r\n private _initItems = true;\r\n get initItems(): boolean {\r\n return this._initItems;\r\n }\r\n @Input()\r\n set initItems(v: BooleanInput) {\r\n this._initItems = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @ViewChild('filterModal', { static: false }) protected readonly filterModal?: ZekModal | null;\r\n\r\n approveModel: ApproveModel = {};\r\n @ViewChild('approveModal', { static: false }) protected readonly approveModal?: ZekModal | null;\r\n protected approvedMesage = 'Alert.Approved';\r\n\r\n @ViewChild('disapproveModal', { static: false }) protected readonly disapproveModal?: ZekModal | null;\r\n protected disapprovedMesage = 'Alert.Disapproved';\r\n\r\n constructor(protected readonly service: TService) {\r\n super();\r\n }\r\n\r\n\r\n readonly translate = inject(TranslateService);\r\n readonly alert = inject(AlertService);\r\n\r\n\r\n\r\n\r\n\r\n\r\n override init() {\r\n super.init();\r\n\r\n this.reset();\r\n this.initDefaultFilter();\r\n this.initStoredFilter();\r\n this.assignFilter();\r\n }\r\n override async bindModel() {\r\n // this.selectedIds = [];\r\n this.model = await firstValueFrom(this.apiGetAll(this.internalFilter));\r\n if (this.model) {\r\n let totalCount = this.model.totalItemCount;\r\n if (!totalCount && this.model.pager) {\r\n totalCount = this.model.pager ? (this.model.pager.totalItemCount || 0) : 0;\r\n }\r\n this.pager = PagerHelper.get(totalCount, this.internalFilter.page, this.internalFilter.pageSize);\r\n this.onBindModelCompleted();\r\n }\r\n else {\r\n this.pager = new Pager();\r\n }\r\n //this.pagedList.pager = this.pager;\r\n }\r\n apiGetAll(filter: any) {\r\n return this.service.getAll(filter);\r\n }\r\n scrollTop() {\r\n const el = document.getElementById(this.tableId);\r\n el?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n }\r\n override onBindModelCompleted() {\r\n if (this.initItems) {\r\n if (this.model && ArrayHelper.isArray(this.model.items) && ArrayHelper.isArray(this.selectedIds)) {\r\n for (const item of this.model.items) {\r\n const tmp = item as any;\r\n tmp.selected = this.selectedIds.includes(tmp.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n protected initDefaultFilter() {\r\n }\r\n private initStoredFilter() {\r\n const filterParam = this.getQueryParam('filter') || this.getParam('filter');\r\n\r\n if (filterParam) {\r\n const tmp = StorageHelper.get('filter');\r\n if (tmp && tmp.url && tmp.url === this.url && tmp.filter) {\r\n this.filter = Object.assign({}, tmp.filter);\r\n //we dont need this.assignFilter(); because after initStoredFilter(); will be assigned.\r\n } else {\r\n localStorage.removeItem('filter');\r\n }\r\n } else {\r\n localStorage.removeItem('filter');\r\n }\r\n }\r\n async changePage(page: number) {\r\n this.internalFilter.page = page;\r\n this.filter.page = page;\r\n await this.bindModel();\r\n this.autoSaveFilter();\r\n this.scrollTop();\r\n }\r\n changePageSize(pageSize: number) {\r\n this.internalFilter.pageSize = pageSize;\r\n this.filter.pageSize = pageSize;\r\n this.changePage(1);\r\n }\r\n showFilter() {\r\n this.filterModal?.show();\r\n }\r\n search() {\r\n this.assignFilter();\r\n\r\n // this.changePage(1);\r\n //can't use this because don't want to execute scrollTop\r\n this.internalFilter.page = 1;\r\n this.filter.page = 1;\r\n this.bindModel();\r\n this.autoSaveFilter();\r\n }\r\n protected assignFilter() {\r\n this.internalFilter = Object.assign({}, this.filter);\r\n this.isFiltered = !FilterHelper.isEmpty(this.internalFilter);\r\n }\r\n private autoSaveFilter() {\r\n if (this.saveFilter)\r\n this.internalSaveFilter()\r\n }\r\n private internalSaveFilter() {\r\n StorageHelper.set('filter', {\r\n url: this.url,\r\n filter: this.internalFilter\r\n });\r\n }\r\n reset() {\r\n this.filter = { page: 1, pageSize: 25 };\r\n this.assignFilter();\r\n }\r\n refresh() {\r\n this.bindModel();\r\n }\r\n\r\n\r\n create() {\r\n const url = UrlHelper.getNoParam(this.router.url);\r\n // this.router.navigate([url, 'create', { returnUrl: url + ';filter=1' }]);\r\n this.router.navigate([url, 'create'],\r\n { queryParams: { returnUrl: url + '?filter=1' } }\r\n );\r\n }\r\n async delete(id: any) {\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiDelete(id));\r\n if (data?.success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Deleted'));\r\n this.alert.error(message, null, 'fa-solid fa-trash')\r\n this.refresh();\r\n }\r\n }\r\n apiDelete(id: any) {\r\n return this.service.delete(id);\r\n }\r\n\r\n async delete2(id: any, id2: any) {\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiDelete2(id, id2))\r\n if (data?.success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Deleted'));\r\n this.alert.error(message, null, 'fa-solid fa-trash')\r\n this.refresh();\r\n }\r\n }\r\n apiDelete2(id: any, id2: any) {\r\n return this.service.delete2(id, id2);\r\n }\r\n\r\n edit(id: number) {\r\n // this.router.navigate([this.url, id],\r\n // { queryParams: { returnUrl: this.url + ';filter=1' } }\r\n // );\r\n\r\n this.router.navigate([this.url, id],\r\n { queryParams: { returnUrl: this.url + '?filter=1' } }\r\n );\r\n }\r\n edit2(id: number, id2: number) {\r\n // this.router.navigate([this.url, id, id2, { returnUrl: this.url + ';filter=1' }]);\r\n this.router.navigate([this.url, id, id2],\r\n { queryParams: { returnUrl: this.url + '?filter=1' } }\r\n );\r\n }\r\n select(item: any) {\r\n item.selected = !item.selected;\r\n const id = item.id;\r\n if (id) {\r\n if (item.selected) {\r\n if (!this.selectedIds.includes(id)) {\r\n this.selectedIds.push(id);\r\n this.selectedItems.push(item);\r\n }\r\n\r\n } else {\r\n this.selectedIds = this.selectedIds.filter(item => item !== id);\r\n this.selectedItems = this.selectedItems.filter(item => item.id !== id);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n showApproveModal(id: number) {\r\n if (!id || !this.approveModal) return;\r\n\r\n const tmp = { ids: [id] };\r\n this.approveModel = {};\r\n this.approveModal.show(tmp);\r\n }\r\n showApproveSelectedModal() {\r\n const tmp = { ids: this.getSelectedIds() };\r\n if (!tmp.ids || tmp.ids.length === 0 || !this.approveModal) return;\r\n\r\n this.approveModel = {};\r\n this.approveModal.show(tmp);\r\n }\r\n async approve(model: any) {\r\n if (!model) return;\r\n\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiApprove(model));\r\n if (!data || data.length === 0)\r\n return;\r\n\r\n const message = await firstValueFrom(this.translate.get(this.approvedMesage));\r\n this.alert.success(message, null, 'fa-solid fa-thumbs-up')\r\n this.refresh();\r\n }\r\n apiApprove(model: any) {\r\n return this.service.approve(model);\r\n }\r\n\r\n\r\n showDisapproveModal(id: number) {\r\n if (!id || !this.disapproveModal) return;\r\n\r\n const tmp = { ids: [id] };\r\n this.approveModel = {};\r\n this.disapproveModal.show(tmp);\r\n }\r\n showDisapproveSelectedModal() {\r\n const tmp = { ids: this.getSelectedIds() };\r\n if (!tmp.ids || tmp.ids.length === 0 || !this.disapproveModal) return;\r\n\r\n this.approveModel = {};\r\n this.disapproveModal.show(tmp);\r\n }\r\n async disapprove(model: any) {\r\n if (!model || !this.approveModel) return;\r\n\r\n if (typeof model === 'object') {\r\n model.status = this.approveModel.status;\r\n model.comment = StringHelper.tryTrim(this.approveModel.comment);\r\n if (!model.comment) delete model.comment;\r\n }\r\n\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiDisapprove(model));\r\n if (!data || data.length === 0)\r\n return;\r\n\r\n const message = await firstValueFrom(this.translate.get(this.disapprovedMesage));\r\n this.alert.success(message, null, 'fa-solid fa-thumbs-down')\r\n this.refresh();\r\n }\r\n apiDisapprove(model: any) {\r\n return this.service.disapprove(model);\r\n }\r\n\r\n getSelectedIds() {\r\n return this.selectedIds;\r\n // if (!this.pagedList || !this.pagedList.items) return [];\r\n\r\n // let ids = [];\r\n // for (const item of this.pagedList.items) {\r\n // if (!item.selected || !item.id) continue;\r\n\r\n // ids.push(item.id);\r\n // }\r\n // return ids;\r\n }\r\n\r\n showSum() { }\r\n async sum() {\r\n this.sumModel = null;\r\n const data = await firstValueFrom(this.apiSum(this.internalFilter));\r\n if (data) {\r\n this.sumModel = data;\r\n this.showSum();\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.SumError'));\r\n this.alert.error(message);\r\n }\r\n }\r\n apiSum(filter: any) {\r\n return this.service.sum(filter);\r\n }\r\n\r\n export(fileTypeId: number) {\r\n this.service.export(this.internalFilter, fileTypeId).subscribe(data => {\r\n this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n });\r\n }\r\n\r\n\r\n override print(printType?: PrintType) {\r\n if (!this.model || !this.model.items) return;\r\n\r\n const ids = this.getSelectedIds();\r\n for (const id of ids) {\r\n super.print(id, printType);\r\n }\r\n }\r\n}","import { Directive, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Convert, MathHelper } from '../utils';\r\nimport { NumberInput } from '../components';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[zek-delayed-input]'\r\n})\r\nexport class ZekDelayedInputDirective implements OnInit {//OnChanges\r\n\r\n private _inputSubject$ = new Subject<string>();\r\n @Output() delayedInput = new EventEmitter<string>();\r\n\r\n private _delay = 500;\r\n get delay(): number {\r\n return this._delay;\r\n }\r\n @Input()\r\n set delay(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v), 1, 3_600_000);\r\n if (this._delay !== tmp) {\r\n this._delay = tmp;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.initSubscription();\r\n }\r\n\r\n private initSubscription() {\r\n // Emit values after the specified debounce time\r\n this._inputSubject$.pipe(debounceTime(this.delay)).subscribe((value) => {\r\n this.delayedInput.emit(value);\r\n });\r\n }\r\n\r\n // ngOnChanges(changes: SimpleChanges) {\r\n // if (changes['delayTime']) {\r\n // // Reset the subscription when delayTime changes\r\n // this._inputSubject$ = new Subject<string>(); // Replace the Subject\r\n // this.initSubscription(); // Reinitialize with the new delayTime\r\n // }\r\n // }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n onInput(value: string) {\r\n this._inputSubject$.next(value); // Push new value to the Subject\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'age'\r\n})\r\nexport class AgePipe implements PipeTransform {\r\n transform(value: any, now?: any): number | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n \r\n const date = DateHelper.toDate(value);\r\n\r\n const timeDiff = (now ? DateHelper.toDate(now).getTime() : Date.now()) - date.getTime();\r\n return Math.floor((timeDiff / (1000 * 3600 * 24)) / 365.25);\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput, CoreComponent } from '../../../components';\r\nimport { AlertType } from '../../../models';\r\nimport { Convert } from '../../../utils';\r\nimport { BootstrapHelper } from '../../../utils/bootstrap.helper';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-alert',\r\n templateUrl: './alert.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule]\r\n})\r\nexport class ZekAlert extends CoreComponent {\r\n private _type: AlertType | null | undefined = 'info';\r\n @Input()\r\n get type(): AlertType | null | undefined {\r\n return this._type;\r\n }\r\n set type(v: AlertType | null | undefined) {\r\n if (v !== this._type) {\r\n this._type = v\r\n this.init();\r\n }\r\n }\r\n\r\n _showClose = true;\r\n @Input()\r\n get showClose(): boolean {\r\n return this._showClose;\r\n }\r\n set showClose(v: BooleanInput) {\r\n this._showClose = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() title?: string | null;\r\n\r\n\r\n override init() {\r\n this.cssAlert = BootstrapHelper.cssAlert(this._type);\r\n this.cssIcon = BootstrapHelper.cssAlertIcon(this._type);\r\n }\r\n\r\n cssAlert = '';\r\n cssIcon = '';\r\n}\r\n\r\n","<div class=\"alert {{cssAlert}} alert-dismissible fade show\" role=\"alert\">\r\n <button *ngIf=\"_showClose\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1\" *ngIf=\"cssIcon\">\r\n <span class=\"flex-shrink-0\"><i class=\"{{cssIcon}}\"></i></span>\r\n </div>\r\n <div class=\"col-auto\">\r\n <div *ngIf=\"title\">\r\n <h5 class=\"alert-heading\">{{title}}</h5>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { BootstrapHelper, Convert, MathHelper } from '../../../utils';\r\n\r\nimport { AlertService, Toast } from '../../../services/alert.service';\r\nimport { NumberInput } from '../../../components';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-toast',\r\n styleUrls: ['./toast.css'],\r\n templateUrl: './toast.html',\r\n imports: [CommonModule]\r\n})\r\nexport class ZekToast implements OnInit, OnDestroy {\r\n @Input()\r\n get delay(): number {\r\n return this._delay;\r\n }\r\n set delay(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 10, 3600000);\r\n if (this._delay !== tmp) {\r\n this._delay = tmp;\r\n }\r\n }\r\n _delay: number = 3000;\r\n \r\n \r\n @Input() icon = true;\r\n\r\n toasts: any[] = [];\r\n private _subscription?: Subscription;\r\n private _timeout: any;\r\n\r\n constructor(private readonly alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this._subscription = this.alertService.getToast().subscribe((toast: Toast) => {\r\n if (!toast) {\r\n // clear alerts when an empty alert is received\r\n this.toasts = [];\r\n return;\r\n }\r\n\r\n // add toast to array\r\n this.cssInit(toast);\r\n this.toasts.unshift(toast);\r\n\r\n this._timeout = setTimeout(() => {\r\n this.remove(toast);\r\n // let toastEl = document.getElementById(`toast-${toast.id}`);\r\n // let t = new bootstrap.Toast(toastEl);\r\n // t.show();\r\n }, this._delay);\r\n\r\n\r\n // let toastElList = [].slice.call(document.querySelectorAll('.toast'))\r\n // let toastList = toastElList.map(function (toastEl) {\r\n // return new bootstrap.Toast(toastEl)\r\n // })\r\n // toastList.forEach(t => {\r\n // t.show();\r\n // });\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this._subscription) {\r\n this._subscription.unsubscribe();\r\n }\r\n this.clearTimeout();\r\n }\r\n\r\n\r\n clear() {\r\n this.alertService.clear();\r\n }\r\n remove(toast: Toast) {\r\n this.toasts = this.toasts.filter(x => x !== toast);\r\n }\r\n\r\n clearTimeout() {\r\n if (this._timeout) {\r\n clearTimeout(this._timeout);\r\n this._timeout = null;\r\n }\r\n }\r\n\r\n\r\n cssInit(toast: Toast) {\r\n if (!toast || !toast.type)\r\n return;\r\n\r\n\r\n if (this.icon && !toast.icon) {\r\n toast.icon = BootstrapHelper.cssAlertIcon(toast.type);\r\n }\r\n\r\n let v = toast as any;\r\n switch (toast.type) {\r\n case 'primary':\r\n v.css = 'bg-primary text-white';\r\n break;\r\n case 'success':\r\n v.css = 'bg-success text-white';\r\n // v.iconColor = 'text--accent-green';\r\n // v.borderColor = 'border--accent-green';\r\n break;\r\n case 'danger':\r\n v.css = 'bg-danger text-white';\r\n // v.iconColor = 'text--accent-red';\r\n // v.borderColor = 'border--accent-red';\r\n break;\r\n case 'warning':\r\n v.css = 'bg-warning text-dark';\r\n // v.iconColor = 'text--accent-yellow';\r\n // v.borderColor = 'border--accent-yellow';\r\n break;\r\n case 'info':\r\n v.css = 'bg-info text-white';\r\n // v.iconColor = 'text--accent-blue';\r\n // v.borderColor = 'border--accent-blue';\r\n break;\r\n case 'light':\r\n v.css = 'bg-light text-dark';\r\n break;\r\n case 'dark':\r\n v.css = 'bg-dark text-white';\r\n break;\r\n\r\n\r\n default:\r\n v.css = 'bg-secondary text-white';\r\n break;\r\n }\r\n }\r\n}\r\n\r\n","<div class=\"toast-container position-fixed top-0 end-0 p-3\">\r\n <div *ngFor=\"let toast of toasts\" class=\"toast fade show border-0 {{ toast.css }}\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" [attr.data-bs-delay]=\"_delay\">\r\n <div class=\"toast-header\">\r\n <span class=\"me-1\" *ngIf=\"icon && toast.icon\"><i class=\"{{ toast.icon }}\"></i></span>\r\n <strong class=\"me-auto\" *ngIf=\"toast.title\">{{ toast.title }}</strong>\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n <div class=\"toast-body\">\r\n {{ toast.message }}\r\n </div>\r\n </div>\r\n <!-- <div *ngFor=\"let toast of toasts\" class=\"toast fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n <div class=\"toast-body\">\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1 border-start border-8 {{toast.borderColor}}\">\r\n <span *ngIf=\"toast.icon\" class=\"icon flex-shrink-0 {{toast.iconColor}}\"><i class=\"{{toast.icon}}\"></i></span>\r\n </div>\r\n <div class=\"col\">\r\n <div *ngIf=\"toast.title\"><h5>{{toast.title}}</h5></div>\r\n {{ toast.message }}\r\n </div>\r\n <div class=\"col-auto p-0\">\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AlertService, Alert } from '../../../services/alert.service';\r\nimport { BootstrapHelper } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-validation',\r\n templateUrl: './validation.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule]\r\n})\r\nexport class ZekValidation implements OnInit, OnDestroy {\r\n alerts: Alert[] = [];\r\n private subscription?: Subscription;\r\n\r\n constructor(private readonly alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this.subscription = this.alertService.getAlert().subscribe((alert: Alert) => {\r\n if (!alert) {\r\n // clear alerts when an empty alert is received\r\n this.alerts = [];\r\n return;\r\n }\r\n // add alert to array\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n\r\n clear() {\r\n this.alertService.clear();\r\n }\r\n remove(alert: Alert) {\r\n this.alerts = this.alerts.filter(x => x !== alert);\r\n }\r\n\r\n cssIcon(alert: Alert) {\r\n if (!alert) {\r\n return;\r\n }\r\n\r\n if (alert.icon && alert.icon.length > 0)\r\n return alert.icon;\r\n\r\n\r\n if (!alert.type) {\r\n return;\r\n }\r\n\r\n return BootstrapHelper.cssAlertIcon(alert.type);\r\n }\r\n\r\n cssAlert(alert: Alert) {\r\n if (!alert) {\r\n return;\r\n }\r\n\r\n return BootstrapHelper.cssAlert(alert.type);\r\n }\r\n}","<div *ngFor=\"let alert of alerts\" class=\"alert {{ cssAlert(alert) }} alert-dismissible fade show mt-3\" role=\"alert\">\r\n <button (click)=\"remove(alert)\" type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button>\r\n <div *ngFor=\"let message of alert.messages\">\r\n <i *ngIf=\"cssIcon(alert)\" class=\"{{ cssIcon(alert) }}\"></i>\r\n {{message}}\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { AfterViewInit, ElementRef } from '@angular/core';\r\nimport { Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'form'\r\n})\r\nexport class ZekAutoComplete implements AfterViewInit {\r\n constructor(private readonly el: ElementRef, private readonly router: Router) {\r\n\r\n }\r\n ngAfterViewInit() {\r\n if (this.router.url === '/login') {\r\n return;\r\n }\r\n\r\n this.el.nativeElement.setAttribute('autocomplete', 'off');\r\n }\r\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput } from '../../components';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { KeyPair, ModalSize, PagedList } from '../../models';\r\nimport { Convert, ObjectHelper } from '../../utils';\r\ndeclare let bootstrap: any;\r\n\r\n/**\r\n * Provider Expression that allows bb to register as a ControlValueAccessor. This\r\n * allows it to support [(ngModel)] and ngControl.\r\n * @docs-private\r\n */\r\nconst ZEK_BB_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ZekButtonBrowse),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n selector: 'zek-bb',\r\n templateUrl: './bb.component.html',\r\n providers: [ZEK_BB_CONTROL_VALUE_ACCESSOR],\r\n})\r\nexport class ZekButtonBrowse extends CoreUiComponent {\r\n override destroy() {\r\n this._modal?.dispose();\r\n this._modal = null;\r\n return super.destroy();\r\n }\r\n\r\n private _uniqueId: string = `zek-bb-${this.uniqueId}`;\r\n /** The unique ID for the bb. */\r\n @Input() id: string = this._uniqueId;\r\n get modalId(): string {\r\n return `${this.id || this._uniqueId}-modal`;\r\n }\r\n filter: any = {};\r\n data: PagedList = new PagedList();\r\n\r\n\r\n private _type?: string | null;\r\n @Input()\r\n get type() {\r\n return this._type;\r\n }\r\n set type(v: string | null | undefined) {\r\n if (this._type !== v) {\r\n this._type = v;\r\n this.onValueChanged();//get and set input text\r\n }\r\n }\r\n\r\n private _text: string | null = null;\r\n @Input()\r\n get text(): string | null {\r\n return this._text;\r\n }\r\n set text(v: string | null) {\r\n if (this._text !== v) {\r\n this._text = v\r\n this.onTextChanged();\r\n }\r\n }\r\n onTextChanged() {\r\n this.onKeyPairChange.emit(new KeyPair({ key: this._value, value: this._text }))\r\n }\r\n\r\n\r\n\r\n private _readOnly = false;\r\n @Input()\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n set readOnly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n private _hide = false;\r\n @Input()\r\n get hide(): boolean {\r\n return this._hide;\r\n }\r\n set hide(v: BooleanInput) {\r\n this._hide = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showInput = true;\r\n @Input()\r\n get showInput(): boolean {\r\n return this._showInput;\r\n }\r\n set showInput(v: BooleanInput) {\r\n this._showInput = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _multiSelect = false;\r\n @Input()\r\n get multiSelect(): boolean {\r\n return this._multiSelect;\r\n }\r\n set multiSelect(v: BooleanInput) {\r\n this._multiSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n @Output() onShowModal = new EventEmitter();\r\n @Output() onChooseAll = new EventEmitter();\r\n @Output() onKeyPairChange = new EventEmitter<KeyPair>();\r\n @Output() onBindText = new EventEmitter();\r\n\r\n private _modal: any;\r\n get modal(): any {\r\n if (!this._modal) {\r\n const modalEl = document.getElementById(this.modalId);\r\n this._modal = new bootstrap.Modal(modalEl, { backdrop: false });\r\n }\r\n return this._modal;\r\n }\r\n set modal(v: any) {\r\n this._modal = v;\r\n }\r\n\r\n\r\n private _size: ModalSize = '';\r\n @Input()\r\n get size() {\r\n return this._size;\r\n }\r\n set size(v: ModalSize) {\r\n this._size = v;\r\n }\r\n\r\n private _scrollable = false;\r\n @Input()\r\n get scrollable(): boolean {\r\n return this._scrollable;\r\n }\r\n set scrollable(v: BooleanInput) {\r\n this._scrollable = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _fullscreen = false;\r\n @Input()\r\n get fullscreen(): boolean {\r\n return this._fullscreen;\r\n }\r\n set fullscreen(v: BooleanInput) {\r\n this._fullscreen = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showHeader = true;\r\n @Input()\r\n get showHeader(): boolean {\r\n return this._showHeader;\r\n }\r\n set showHeader(v: BooleanInput) {\r\n this._showHeader = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n showModal() {\r\n if (!this.disabled && !this.readOnly) {\r\n this.onShowModal.emit(this.filter);\r\n\r\n this.data = new PagedList();\r\n if (this.modal)\r\n this.modal.show();\r\n }\r\n }\r\n close() {\r\n this._modal?.hide();\r\n }\r\n\r\n\r\n\r\n choose(value: any) {\r\n if (!this.disabled && !this.readOnly) {\r\n this.setNgModel(value);\r\n this.close();\r\n }\r\n }\r\n chooseAll(filter: any) {\r\n this.onChooseAll.emit(filter);\r\n this.close();\r\n }\r\n\r\n delete() {\r\n if (!this.readOnly) {//!this.disabled && \r\n this.setNgModel(null);\r\n }\r\n }\r\n\r\n _onKey(event: KeyboardEvent) {\r\n if (event.key === 'Delete') {\r\n this.delete();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n override onValueChanged() {\r\n if (ObjectHelper.isDefined(this._value) && ObjectHelper.isDefined(this._type)) {\r\n this.bindText();\r\n } else {\r\n this.text = null;\r\n }\r\n }\r\n bindText() {\r\n this.onBindText.emit();\r\n }\r\n}","<div *ngIf=\"!hide && showInput\" class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [ngClass]=\"{ 'ng-valid required': !required || value, 'ng-invalid': required && !value }\" (keyup)=\"_onKey($event)\" title=\"ID = {{value}}\" [value]=\"text\" [attr.readonly]=\"true\">\r\n <button type=\"button\" [disabled]=\"disabled || readOnly\" class=\"btn btn-outline-secondary\" (click)=\"showModal()\">\r\n <i class=\"fa-solid fa-ellipsis\"></i>\r\n </button>\r\n <button type=\"button\" [disabled]=\"disabled || readOnly\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item\" (click)=\"delete()\" href=\"javascript:void(0)\"> <i class=\"fa-solid fa-trash\"></i> Delete <kbd>delete</kbd> </a></li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"!hide || disabled || readOnly\" class=\"modal fade\" [id]=\"modalId\" tabindex=\"-1\" aria-labelledby=\"bb-modal-label\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" [ngClass]=\"{\r\n 'modal-sm': size === 'sm',\r\n 'modal-lg': size === 'lg', \r\n 'modal-xl': size === 'xl'\r\n }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n <h5 class=\"modal-title\" id=\"{{modalId}}-label\">{{'Action.Choose' | translate }}</h5>\r\n <button type=\"button\" (click)=\"close()\" class=\"btn-close\" data-bs-dismiss2=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\n\r\n@Component({\r\n selector: 'zek-bb-modal-toolbar',\r\n templateUrl: './bb-modal-toolbar.html',\r\n})\r\nexport class ZekButtonBrowseModalToolbar {\r\n\r\n @Output() onSearch = new EventEmitter();\r\n search() {\r\n this.onSearch.emit();\r\n }\r\n\r\n @Output() onReset = new EventEmitter();\r\n reset() {\r\n this.onReset.emit();\r\n }\r\n\r\n private _multiSelect = false;\r\n @Input()\r\n get multiSelect(): boolean {\r\n return this._multiSelect;\r\n }\r\n set multiSelect(v: BooleanInput) {\r\n this._multiSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Output() onChooseAll = new EventEmitter();\r\n chooseAll() {\r\n if (!this.multiSelect) return;\r\n this.onChooseAll.emit();\r\n }\r\n\r\n // @Output()\r\n // onCreate = new EventEmitter();\r\n // create() {\r\n // this.onCreate.emit();\r\n // }\r\n}","<ng-content select=\"[left]\"></ng-content>\r\n<button type=\"button\" (click)=\"search()\" class=\"btn btn-primary me-2\" id=\"bb-filter-button\" title=\"Filter\">\r\n <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\r\n</button>\r\n<button type=\"button\" (click)=\"reset()\" class=\"btn btn-secondary me-2\" title=\"Reset\">\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n</button>\r\n<button *ngIf=\"multiSelect\" type=\"button\" (click)=\"chooseAll()\" class=\"btn btn-secondary me-2\" title=\"Choose All\">\r\n <i class=\"fa-solid fa-hand-point-up\" aria-hidden=\"true\"></i>\r\n</button>\r\n<ng-content></ng-content>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ZekButtonBrowse } from './bb.component';\r\nimport { ZekButtonBrowseModalToolbar } from './bb-modal-toolbar';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TranslateModule,\r\n ],\r\n declarations: [\r\n ZekButtonBrowse,\r\n ZekButtonBrowseModalToolbar\r\n ],\r\n exports: [\r\n ZekButtonBrowse,\r\n ZekButtonBrowseModalToolbar\r\n ]\r\n})\r\nexport class ZekButtonBrowseModule { }","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BooleanInput, CoreComponent } from \"../../components\";\r\nimport { PagedList } from \"../../models\";\r\nimport { Convert } from \"../../utils\";\r\n\r\n@Directive()\r\nexport class ZekButtonBrowseModalBase extends CoreComponent {\r\n @Input() type?: string | null;\r\n @Input() filter: any = {};\r\n @Input() data?: PagedList | null;\r\n\r\n private _multiSelect = false;\r\n @Input() get multiSelect() : boolean {\r\n return this._multiSelect;\r\n }\r\n set multiSelect(v: BooleanInput) {\r\n this._multiSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() value: any;\r\n\r\n @Output() onChoose = new EventEmitter();\r\n choose(value: any) {\r\n this.onChoose.emit(value);\r\n }\r\n\r\n @Output() onChooseAll = new EventEmitter();\r\n chooseAll() {\r\n this.onChooseAll.emit(this.filter);\r\n }\r\n\r\n onKeydown(e: Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.search();\r\n }\r\n\r\n bindData() { }\r\n async refresh() {\r\n try {\r\n this.loading = true;\r\n await this.bindData();\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n\r\n }\r\n onPageChange(page: number) {\r\n this.filter.page = page;\r\n this.refresh();\r\n }\r\n onPageSizeChange(pageSize: number) {\r\n this.filter.pageSize = pageSize;\r\n this.onPageChange(1);\r\n }\r\n\r\n search() {\r\n this.onPageChange(1);\r\n }\r\n\r\n reset() {\r\n this.filter = {};\r\n }\r\n}","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone:true,\r\n name: 'callback',\r\n pure: false//this pure need because we are changing filter model and pure=false is handling\r\n})\r\nexport class ZekCallbackPipe implements PipeTransform {\r\n transform(items: any[], callback: (item: any, filter?: any) => boolean, filter?: any): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n\r\n return filter\r\n ? items.filter(item => callback(item, filter))\r\n : items.filter(item => callback(item));\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild, AfterViewInit, ChangeDetectorRef, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-card',\r\n templateUrl: './card.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule]\r\n})\r\nexport class ZekCard implements AfterViewInit {\r\n /**\r\n *\r\n */\r\n constructor(private readonly cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n @ViewChild('headerRef') private headerWrapper: ElementRef | undefined;\r\n @ViewChild('bodyRef') private bodyRef: ElementRef | undefined;\r\n // @ViewChild('contentRef') private contentRef: ElementRef | undefined;\r\n @ViewChild('footerRef') private footerRef: ElementRef | undefined;\r\n\r\n private _css = '';\r\n @Input()\r\n get css() {\r\n return this._css;\r\n }\r\n set css(value: string | null | undefined) {\r\n this._css = value || '';\r\n }\r\n showHeader = true;\r\n showBody = true;\r\n\r\n // showContent = true;\r\n showFooter = true;\r\n\r\n ngAfterViewInit() {\r\n this.showHeader = this.headerWrapper ? this.headerWrapper.nativeElement.childNodes.length > 0 : false;\r\n this.showBody = this.bodyRef ? this.bodyRef.nativeElement.children.length > 0 : false;\r\n // this.showContent = this.contentRef ? this.contentRef.nativeElement.children.length > 0 : false;\r\n this.showFooter = this.footerRef ? this.footerRef.nativeElement.childNodes.length > 0 : false;\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n}","<div class=\"card {{css}}\">\r\n <div class=\"card-header\" #headerRef *ngIf=\"showHeader\">\r\n <ng-content select=\"[card-header]\"></ng-content>\r\n </div>\r\n <div class=\"card-body\" #bodyRef *ngIf=\"showBody\">\r\n <ng-content select=\"[card-body]\"></ng-content>\r\n </div>\r\n <ng-content></ng-content>\r\n <div class=\"card-footer\" #footerRef *ngIf=\"showFooter\">\r\n <ng-content select=\"[card-footer]\"></ng-content>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { interval, Observable, Subject, Subscription, timer } from 'rxjs';\r\nimport { CoreComponent } from '../../components';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [],\r\n selector: 'zek-countdown',\r\n templateUrl: 'countdown.html'\r\n})\r\nexport class ZekCountdown extends CoreComponent {\r\n override destroy() {\r\n stop();\r\n return super.destroy();\r\n }\r\n\r\n\r\n left = {\r\n days: 0,\r\n hours: 0,\r\n hh: '00',\r\n minutes: 0,\r\n mm: '00',\r\n seconds: 0,\r\n ss: '00'\r\n }\r\n date = new Date();\r\n\r\n\r\n private _interval$?: Observable<number> | null;\r\n private _subscription?: Subscription;\r\n\r\n\r\n // private _onTickSubject?: Subject<void>;\r\n // private _onTickObservable?: Observable<void>;\r\n // get onRefreshToken(): Observable<void> {\r\n // if (!this._onTickSubject) {\r\n // this._onTickSubject = new Subject<void>();\r\n // this._onTickObservable = this._onTickSubject.asObservable();\r\n // }\r\n\r\n // if (!this._onTickObservable)\r\n // throw new Error(\"_onTickObservable is undefined\");\r\n\r\n // return this._onTickObservable;\r\n // }\r\n\r\n override init() {\r\n this.start();\r\n this.tick();\r\n }\r\n\r\n private _targetDate: Date | null = null;\r\n private _targetTime: number | null = null;\r\n get targetDate(): Date | null {\r\n return this._targetDate;\r\n }\r\n @Input()\r\n set targetDate(v: Date | string | number | null | undefined) {\r\n this._targetDate = DateHelper.parseDate(v)\r\n this._targetTime = this._targetDate ? this._targetDate.getTime() : null;\r\n }\r\n\r\n\r\n start() {\r\n this._interval$ = interval(1000);\r\n this._subscription = this._interval$.subscribe(() => {\r\n this.emitTick();\r\n });\r\n }\r\n stop() {\r\n this._subscription?.unsubscribe();\r\n this._interval$ = null;\r\n\r\n // this._onTickSubject?.complete();\r\n // this._onTickSubject?.unsubscribe();\r\n }\r\n\r\n emitTick() {\r\n this.tick();\r\n // this._onTickSubject?.next();\r\n }\r\n\r\n\r\n\r\n reset() {\r\n this.left = {\r\n days: 0,\r\n hours: 0,\r\n hh: '00',\r\n minutes: 0,\r\n mm: '00',\r\n seconds: 0,\r\n ss: '00'\r\n }\r\n }\r\n\r\n tick() {\r\n this.reset();\r\n\r\n if (!this.targetDate || !this._targetTime) return;\r\n\r\n this.date = new Date();\r\n const now = this.date.getTime();\r\n\r\n const difference = this._targetTime - now;\r\n if (difference < 0) {\r\n this.stop();\r\n return\r\n }\r\n\r\n this.left.days = Math.floor(difference / (1000 * 60 * 60 * 24));\r\n\r\n this.left.hours = 23 - this.date.getHours();\r\n this.left.hh = (this.left.hours < 10 ? '0' : '') + this.left.hours;\r\n\r\n this.left.minutes = 60 - this.date.getMinutes();\r\n this.left.mm = (this.left.minutes < 10 ? '0' : '') + this.left.minutes;\r\n\r\n\r\n this.left.seconds = 60 - this.date.getSeconds();\r\n this.left.ss = (this.left.seconds < 10 ? '0' : '') + this.left.seconds;\r\n }\r\n}","{{left.days}}d - {{left.hh}}h - {{left.mm}}m - {{left.ss}}s","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'dateAgo',\r\n pure: true\r\n})\r\nexport class ZekDateAgoPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): string | Date | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n const date = DateHelper.toDate(value);\r\n const seconds = Math.floor((+new Date() - +new Date(date)) / 1000);\r\n if (seconds < 29) // less than 30 seconds ago will show as 'Just now'\r\n return 'Just now';\r\n const intervals: { [key: string]: number } = {\r\n 'year': 31536000,\r\n 'month': 2592000,\r\n 'week': 604800,\r\n 'day': 86400,\r\n 'hour': 3600,\r\n 'minute': 60,\r\n 'second': 1\r\n };\r\n let counter;\r\n for (const i in intervals) {\r\n counter = Math.floor(seconds / intervals[i]);\r\n if (counter > 0)\r\n if (counter === 1) {\r\n return counter + ' ' + i + ' ago'; // singular (1 day ago)\r\n } else {\r\n return counter + ' ' + i + 's ago'; // plural (2 days ago)\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n}","import { Directive, ElementRef, OnDestroy, forwardRef, Inject } from '@angular/core'\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DATE_FORMAT, LANGUAGE } from '../../tokens';\r\nimport { DateHelper } from '../../utils';\r\n\r\ndeclare let Datepicker: any;\r\n\r\nconst DATE_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateValueAccessor),\r\n multi: true,\r\n};\r\n\r\n\r\n\r\n@Directive({\r\n selector: '[zek-date],input[type=date][formControlName],input[type=date][formControl],input[type=date][ngModel]',//,input[type=date][ngModel]\r\n providers: [DATE_VALUE_ACCESSOR],\r\n host: {\r\n //არაა საჭირო ეს ევენტი ისედაც მუშაობს'(change)': 'onChange($event.target.value)',\r\n //აღარ არის საჭირო რადგანაც ახა ვერსიაში updateOnBlur=true აკეთებს მაგას \"(keyup)\": \"onKeyUp($event)\",\r\n }\r\n})\r\nexport class DateValueAccessor implements ControlValueAccessor, OnDestroy {\r\n //@Input() ngModel: any;\r\n private datepicker?: any;\r\n private oldValue?: Date | null = null;\r\n\r\n constructor(private el: ElementRef,\r\n @Inject(DATE_FORMAT) format: string,\r\n @Inject(LANGUAGE) language: string,\r\n @Inject('env') env?: any | null) {\r\n\r\n if (env) {\r\n if (env.datepickerFormat) {\r\n format = env.datepickerFormat;\r\n }\r\n if (env.lang) {\r\n language = env.lang;\r\n }\r\n }\r\n\r\n if (el.nativeElement.type === 'date') {\r\n el.nativeElement.type = 'text'//change input type to text to override browser default date editor\r\n }\r\n this.el.nativeElement.setAttribute('autocomplete', 'off');\r\n\r\n this.datepicker = new Datepicker(el.nativeElement, {\r\n autohide: true,\r\n //beforeShowDay: this.beforeShowDay,\r\n buttonClass: 'btn',\r\n //clearBtn: true,\r\n\r\n //datesDisabled: []\r\n daysOfWeekHighlighted: [0, 6],\r\n format: format,\r\n language: language,\r\n\r\n //prevArrow: '«',\r\n //nextArrow: '»',\r\n //orientation: 'top auto', //left|right|auto for horizontal and top|bottom|auto\r\n todayBtn: true,\r\n //todayBtnMode: 0, //0\tfocus\tMove the focused date to the current date without changing the selection. 1 select\tSelect (or toggle the selection of) the current date\r\n todayHighlight: true,\r\n updateOnBlur: true,\r\n weekStart: 1,//0:Sunday – 6:Saturday\r\n });\r\n\r\n el.nativeElement.addEventListener('changeDate', (e: CustomEvent) => {\r\n this.onChangeDate(e);//execude \r\n });\r\n\r\n setTimeout(() => {\r\n const min = this.el.nativeElement.getAttribute('min');\r\n const max = this.el.nativeElement.getAttribute('max');\r\n\r\n const minDate = min ? DateHelper.toDate(min) : null;\r\n const maxDate = max ? DateHelper.toDate(max) : null;\r\n this.datepicker.setOptions({\r\n minDate: minDate,//String|Date|Number\r\n maxDate: maxDate,//String|Date|Number\r\n });\r\n }, 0);\r\n }\r\n\r\n // onKeyUp(e: any) {\r\n\r\n // if (e && e.target) {\r\n // let v = e.target.value;\r\n // if (v && v.length === 10 && (v.indexOf('.') > 1 || (v.indexOf('/') > 1 || v.indexOf('-') > 1))) {\r\n // var parsed = Datepicker.parseDate(v, environment.datepickerFormat, environment.lang);//parseDate(v);\r\n // var date = parseDate(parsed);\r\n\r\n // if (date) {\r\n // var ev = new KeyboardEvent('keydown', {\r\n // key: \"Enter\",//datepicke listens only by key parameter. other parameter don't need. check after update new version!!!\r\n // });\r\n // console.log(e.target.dispatchEvent(ev));\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n ngOnDestroy() {\r\n this.el.nativeElement.removeEventListener('changeDate', this.onChangeDate);\r\n\r\n if (this.datepicker && typeof this.datepicker.destroy === 'function') {\r\n this.datepicker.destroy()\r\n }\r\n }\r\n\r\n /**\r\n * Fires when user choose date in datepicker\r\n * @param e Custom event \r\n */\r\n onChangeDate(e: CustomEvent) {\r\n this.setDate(e.detail.date);\r\n }\r\n\r\n\r\n // private beforeShowDay(date: any) {\r\n // if (date.getMonth() == new Date().getMonth()) {\r\n // switch (date.getDate()) {\r\n // case 4:\r\n // return {\r\n // content: '<span data-bs-toggle=\"tooltip\" title=\"Example tooltip\">4</span>',\r\n // classes: 'bg-info'\r\n // };\r\n // case 8:\r\n // return false;\r\n // case 12:\r\n // return \"text-success\";\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n //set value into ngModel (when choose date in calendar)\r\n setDate(newValue?: Date | null) {\r\n //newValue = parseDate(newValue);\r\n\r\n if (this.isReadOnly()) {\r\n //if values not equals sets old value \r\n if (!DateHelper.equals(newValue, this.oldValue)) {\r\n if (this.oldValue) {\r\n this.datepicker.setDate(this.oldValue, { clear: true });//if read only don't change date (it just changes element value not ngModel)\r\n } else {\r\n this.datepicker.setDate({ clear: true });//if read only don't change date (it just changes element value not ngModel)\r\n }\r\n }\r\n return;\r\n }\r\n\r\n this.oldValue = newValue;\r\n\r\n if (newValue) {\r\n this.onChange(DateHelper.toISODateString(newValue));\r\n } else {\r\n this.onChange(null);\r\n }\r\n }\r\n\r\n\r\n\r\n private isReadOnly() {\r\n return this.el.nativeElement.disabled || this.el.nativeElement.readOnly;\r\n }\r\n\r\n\r\n\r\n //write from model to el.nativeElement\r\n writeValue(value: any) {\r\n const date = DateHelper.parseDate(value);\r\n this.oldValue = date;\r\n\r\n if (date) {\r\n this.datepicker.setDate(date, { clear: true });//to display in input\r\n } else {\r\n this.datepicker.setDate({ clear: true });\r\n }\r\n\r\n\r\n\r\n //this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n\r\n\r\n // let readOnly = this.isReadOnly();\r\n // if (readOnly) {\r\n // this.el.nativeElement.value = Datepicker.formatDate(date, this.datepicker.config.format);\r\n // }\r\n // else {\r\n // this.datepicker.setDate(date);\r\n // }\r\n }\r\n /*writeValue(date: Date) {\r\n // Create UTC Date, time is set to 00:00 in UTC time\r\n const utcDate: Date | null = date\r\n ? new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\r\n : null;\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'valueAsDate', utcDate);\r\n }*/\r\n\r\n //@HostListener('input', ['$event.target.valueAsDate']) onChange = (_: any) => { };\r\n\r\n\r\n //@HostListener('input', [])\r\n onChange: (_: any) => void = () => { };\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n //@HostListener('blur', [])\r\n onTouched = () => { };\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { DATE_FORMAT, LANGUAGE } from '../../tokens';\r\nimport { DateValueAccessor } from './date-value-accessor';\r\n\r\nexport interface DatepickerConfig {\r\n dateFormat: string;\r\n language: string;\r\n}\r\n\r\n@NgModule({\r\n declarations: [DateValueAccessor],\r\n exports: [DateValueAccessor]\r\n})\r\nexport class DatepickerModule {\r\n public static forRoot(config: DatepickerConfig, environment?: any | null): ModuleWithProviders<DatepickerModule> {\r\n\r\n return {\r\n ngModule: DatepickerModule,\r\n providers: [\r\n DateValueAccessor,\r\n { provide: DATE_FORMAT, useValue: config.dateFormat },\r\n { provide: LANGUAGE, useValue: config.language },\r\n { provide: 'env', useValue: environment }\r\n ]\r\n };\r\n }\r\n\r\n public static forChild(config: DatepickerConfig, environment?: any | null) {\r\n return this.forRoot(config, environment);\r\n }\r\n}","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { PrintType } from '../../models/print.model';\r\nimport { Convert } from '../../utils';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-edit-toolbar',\r\n templateUrl: './edit-toolbar.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekEditToolbar {\r\n\r\n private _showSave = true;\r\n @Input()\r\n get showSave() {\r\n return this._showSave;\r\n }\r\n set showSave(v: BooleanInput) {\r\n this._showSave = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showCancel = true;\r\n @Input()\r\n get showCancel() {\r\n return this._showCancel;\r\n }\r\n set showCancel(v: BooleanInput) {\r\n this._showCancel = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n PrintType = PrintType;\r\n\r\n private _showExport = false;\r\n @Input()\r\n get showExport() {\r\n return this._showExport;\r\n }\r\n set showExport(v: BooleanInput) {\r\n this._showExport = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showPrint = false;\r\n @Input()\r\n get showPrint() {\r\n return this._showPrint;\r\n }\r\n set showPrint(v: BooleanInput) {\r\n this._showPrint = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _readOnly = false;\r\n @Input()\r\n get readOnly() : boolean {\r\n return this._readOnly;\r\n }\r\n set readOnly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Output() onSave = new EventEmitter();\r\n // save(navigateToReturnUrl: boolean) {\r\n // this.onSave.emit(navigateToReturnUrl);\r\n // }\r\n\r\n @Output() onCancel = new EventEmitter();\r\n cancel() {\r\n this.onCancel.emit();\r\n }\r\n\r\n // @Output()\r\n // onReset = new EventEmitter();\r\n // reset() {\r\n // this.onReset.emit();\r\n // }\r\n\r\n @Output() onPrint = new EventEmitter<PrintType>();\r\n print(printType?: PrintType) {\r\n this.onPrint.emit(printType);\r\n }\r\n\r\n\r\n @Output() onExport = new EventEmitter<number>();\r\n exportExcel() {\r\n this.onExport.emit(1);\r\n }\r\n}","<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Action toolbar\">\r\n <ng-content select=\"[left]\"></ng-content>\r\n <div *ngIf=\"showSave\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Save group\">\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"readOnly\"><i class=\"fa-solid fa-floppy-disk\"></i> {{ 'Action.Save' | translate }}</button>\r\n </div>\r\n <div *ngIf=\"showCancel\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Cancel group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\"><i class=\"fa-solid fa-ban\"></i> {{ 'Action.Close' | translate }}</button>\r\n </div>\r\n <div *ngIf=\"showPrint\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Print group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"print(PrintType.Pdf)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button>\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <!-- dropdown-toggle-split -->\r\n <span class=\"visually-hidden\">Toggle Dropend</span>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(PrintType.Show)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button></li>\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(PrintType.Pdf)\"><i class=\"fa-solid fa-file-pdf\"></i> {{ 'Action.Print' | translate }} PDF</button></li>\r\n <ng-content select=\"[print]\"></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showExport\" class=\"btn-group\" role=\"group\" aria-label=\"Filter / Export group\">\r\n <div class=\"btn-group\" role=\"group\">\r\n <button id=\"btnGroupExport\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"fa-solid fa-download\"></i> {{ 'Action.Export' | translate }}</button>\r\n <ul class=\"dropdown-menu\" aria-labelledby=\"btnGroupExport\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"exportExcel()\"><i class=\"fa-solid fa-file-excel\"></i> Excel</a></li>\r\n <ng-content select=\"[export]\"></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/*\r\n * Convert bytes into largest possible unit.\r\n * Takes an precision argument that defaults to 2.\r\n * Usage:\r\n * bytes | fileSize:precision\r\n * Example:\r\n * {{ 1024 | fileSize}}\r\n * formats to: 1 KB\r\n*/\r\n@Pipe({\r\n standalone: true,\r\n name: 'fileSize'\r\n})\r\nexport class ZekFileSizePipe implements PipeTransform {\r\n\r\n private units = [\r\n 'bytes',\r\n 'kB',\r\n 'MB',\r\n 'GB',\r\n 'TB',\r\n 'PB',\r\n 'EB',\r\n 'ZB',\r\n 'YB'\r\n ];\r\n\r\n transform(bytes: number | null | undefined = 0, precision: number | null | undefined = 0): string {\r\n if (typeof bytes === 'undefined' || bytes == null)\r\n bytes = 0;\r\n if (typeof precision === 'undefined' || precision == null)\r\n precision = 0;\r\n\r\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) return '?';\r\n\r\n let unit = 0;\r\n\r\n while (bytes >= 1024) {\r\n bytes /= 1024;\r\n unit++;\r\n }\r\n\r\n return bytes.toFixed(+ precision) + ' ' + this.units[unit];\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FileService } from '../../services/file.service';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { BooleanInput } from '../../components/types';\r\nimport { Convert } from '../../utils/convert';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n selector: 'zek-file-input',\r\n templateUrl: 'file-input.html',\r\n styleUrl: 'file-input.scss',\r\n providers: [FileService],\r\n host: {\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class ZekFileInput extends CoreUiComponent {\r\n // @Input() model!: string[] | null;\r\n @Output() readonly onUpload = new EventEmitter<Array<any>>();\r\n\r\n private readonly fileService = inject(FileService);\r\n\r\n private _uniqueId: string = `zek-file-input-${this.uniqueId}`;\r\n /** The unique ID for the tag. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n private _accept = '*';\r\n public get accept(): string {\r\n return this._accept;\r\n }\r\n @Input()\r\n set accept(v: string | null | undefined) {\r\n if (!v)\r\n this._accept = '*';\r\n else\r\n this._accept = v;\r\n }\r\n\r\n\r\n private _multiple = false;\r\n @Input()\r\n get multiple(): boolean {\r\n return this._multiple;\r\n }\r\n set multiple(v: BooleanInput) {\r\n this._multiple = Convert.toBooleanProperty(v);\r\n }\r\n\r\n // files: File[] | null = null;\r\n\r\n clickInput() {\r\n const el = document.getElementById(this.inputId);\r\n if (el) {\r\n el.click();\r\n }\r\n }\r\n\r\n async onFileInputChange(event: any) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const files = event?.target?.files;\r\n if (Array.isArray(!files)) return;\r\n\r\n const formData = new FormData();\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n formData.append('files', file, file.name);\r\n }\r\n this.fileService.save(formData).subscribe(data => {\r\n if (data?.success) {\r\n this.onUpload.emit(data.value);\r\n }\r\n })\r\n }\r\n}","<input type=\"file\" class=\"form-control\"\r\n name=\"{{inputId}}\"\r\n id=\"{{inputId}}\"\r\n [multiple]=\"multiple\" [accept]=\"accept\" [required]=\"required\" [disabled]=\"readonly\"\r\n #fileInput\r\n (change)=\"onFileInputChange($event)\" />","import { Component, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BooleanInput, CoreComponent } from '../../../components';\r\nimport { BootstrapHelper, ComponentType, Convert, handler, ObjectHelper, RandomHelper } from '../../../utils';\r\nimport { ValidEventArgs } from '../../../models/valid-event-args.model';\r\nimport { ModalSize } from '../../../models';\r\n\r\ndeclare let bootstrap: any;\r\n\r\n@Component({\r\n selector: 'zek-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekModal extends CoreComponent {\r\n protected readonly translate = inject(TranslateService);\r\n\r\n override async destroy() {\r\n await super.destroy();\r\n this._modal?.dispose();\r\n this._modal = null;\r\n\r\n if (this.hiddenHandler) {\r\n handler.removeListener(this.hiddenHandler);\r\n }\r\n if (this.shownHandler) {\r\n handler.removeListener(this.shownHandler);\r\n }\r\n }\r\n override init() {\r\n super.init()\r\n if (!this.okButtonText) {\r\n this.translate.get('Action.Ok').subscribe(text => {\r\n this.okButtonText = text;\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const modalEl = this.getModalElement();\r\n if (modalEl) {\r\n this.shownHandler = handler.addListener(modalEl, 'shown.bs.modal', () => {\r\n this.onShown.emit();\r\n });\r\n\r\n this.hiddenHandler = handler.addListener(modalEl, 'hidden.bs.modal', () => {\r\n this.onHidden.emit();\r\n });\r\n }\r\n }, 1);\r\n }\r\n\r\n private _uniqueId: string = `zek-modal-${this.uniqueId}`;\r\n /** The unique ID for the radio button. */\r\n @Input() id: string = this._uniqueId;\r\n modalId = `${this.id}-modal`;\r\n lableId = `${this.id}-lable`;\r\n cancelButtonId = `${this.id}-cancel-button`;\r\n okButtonId = `${this.id}-ok-button`;\r\n\r\n shownHandler?: number | null;\r\n hiddenHandler?: number | null;\r\n\r\n @Input() model: any;\r\n readonly elementId = RandomHelper.randomHex();\r\n\r\n\r\n private _showOk = true;\r\n @Input()\r\n get showOk(): boolean {\r\n return this._showOk;\r\n }\r\n set showOk(v: BooleanInput) {\r\n this._showOk = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _disabledOk = false;\r\n @Input()\r\n get disabledOk(): boolean {\r\n return this._disabledOk;\r\n }\r\n set disabledOk(v: BooleanInput) {\r\n this._disabledOk = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showCancel = true;\r\n @Input()\r\n get showCancel(): boolean {\r\n return this._showCancel;\r\n }\r\n set showCancel(v: BooleanInput) {\r\n this._showCancel = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _autoHide = true;\r\n @Input()\r\n get autoHide(): boolean {\r\n return this._autoHide;\r\n }\r\n set autoHide(v: BooleanInput) {\r\n this._autoHide = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() title?: string | null;\r\n\r\n @Input() text?: string | null;\r\n\r\n @Input() icon?: string | null;\r\n\r\n @Input() okButtonText?: string | null;\r\n\r\n @Output() onShown = new EventEmitter<void>();\r\n\r\n @Output() onHidden = new EventEmitter<void>();\r\n\r\n @Output() onOk = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<void>();\r\n\r\n @Input() componentType = ComponentType.Primary;\r\n\r\n\r\n\r\n private _size: ModalSize = '';\r\n @Input()\r\n get size() {\r\n return this._size;\r\n }\r\n set size(v: ModalSize) {\r\n this._size = v;\r\n }\r\n\r\n /**\r\n * @deprecated Please use size property\r\n */\r\n @Input()\r\n get large(): boolean {\r\n return this._size === 'lg';\r\n }\r\n set large(v: BooleanInput) {\r\n this._size = Convert.toBooleanProperty(v) ? 'lg' : '';\r\n }\r\n\r\n /**\r\n * @deprecated Please use size property\r\n */\r\n @Input()\r\n get xl(): boolean {\r\n return this._size === 'xl';\r\n }\r\n set xl(v: BooleanInput) {\r\n this._size = Convert.toBooleanProperty(v) ? 'xl' : '';\r\n }\r\n\r\n\r\n private _scrollable = false;\r\n @Input()\r\n get scrollable(): boolean {\r\n return this._scrollable;\r\n }\r\n set scrollable(v: BooleanInput) {\r\n this._scrollable = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _fullscreen = false;\r\n @Input()\r\n get fullscreen(): boolean {\r\n return this._fullscreen;\r\n }\r\n set fullscreen(v: BooleanInput) {\r\n this._fullscreen = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showHeader = true;\r\n @Input()\r\n get showHeader(): boolean {\r\n return this._showHeader;\r\n }\r\n set showHeader(v: BooleanInput) {\r\n this._showHeader = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showFooter = true;\r\n @Input()\r\n get showFooter(): boolean {\r\n return this._showFooter;\r\n }\r\n set showFooter(v: BooleanInput) {\r\n this._showFooter = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n\r\n @Output() onValidating = new EventEmitter<ValidEventArgs>(false);\r\n // @Input() xxl: boolean;\r\n\r\n private _modal: any;\r\n // public get modal(): any {\r\n // if (!this._modal) {\r\n // this.getModal();\r\n // }\r\n // return this._modal;\r\n // }\r\n // public set modal(v: any) {\r\n // this._modal = v;\r\n // }\r\n\r\n protected getModalElement() {\r\n return document.getElementById(this.modalId);\r\n }\r\n /**\r\n * Creates with method new bootstrap.Modal(modalId, { backdrop: 'static' });\r\n * @returns boostrap modal\r\n */\r\n protected createModal() {\r\n const modalEl = this.getModalElement();\r\n return new bootstrap.Modal(modalEl, { backdrop: 'static' });\r\n }\r\n\r\n\r\n\r\n\r\n cssButton() {\r\n return BootstrapHelper.cssButton(this.componentType);\r\n }\r\n\r\n // private isShown = false;\r\n show(model?: any) {\r\n if (!ObjectHelper.isDefined(model)) model = {};\r\n this.model = model;\r\n\r\n // this.modal?.show();\r\n\r\n\r\n if (!this._modal) {\r\n this._modal = this.createModal();\r\n }\r\n if (this._modal) {\r\n this._modal.show();\r\n // this.isShown = true;\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.onCancel.emit();\r\n this.hide();\r\n }\r\n hide() {\r\n // this.modal?.hide();\r\n\r\n // if (this.isShown) {\r\n // if (this._modal) {\r\n // this._modal.hide();\r\n // this.isShown = false;\r\n // }\r\n // } else {\r\n\r\n // }\r\n\r\n if (this._modal) {\r\n this._modal.hide();\r\n }\r\n else {\r\n const btn = document.getElementById(this.cancelButtonId);\r\n if (btn) {\r\n btn.click();\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n ok() {\r\n const event = new ValidEventArgs();\r\n this.onValidating.emit(event);\r\n if (!event.valid) return;\r\n\r\n if (this.autoHide)\r\n this.hide();\r\n\r\n this.onOk.emit(this.model);\r\n }\r\n\r\n\r\n keyDown(e: Event) {\r\n e.preventDefault();\r\n this.ok();\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n selector: 'zek-delete-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekDeleteModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-trash';\r\n this.translate.get('Action.Delete').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.DeleteQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Delete;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n selector: 'zek-approve-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekApproveModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-thumbs-up';\r\n this.translate.get('Action.Approve').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.ApproveQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Success;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n selector: 'zek-submit-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekSubmitModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-thumbs-up';\r\n this.translate.get('Action.Submit').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.SubmitQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Success;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n selector: 'zek-disapprove-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekDisapproveModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-thumbs-down';\r\n this.translate.get('Action.Disapprove').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.DisapproveQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Delete;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n selector: 'zek-restore-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekRestoreModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-rotate-right';\r\n this.translate.get('Action.Restore').subscribe((res: string) => this.title = res);\r\n this.translate.get('Action.RestoreQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Success;\r\n }\r\n}","<div (keydown.enter)=\"keyDown($event)\" class=\"modal fade\" data-bs-backdrop=\"static\" id=\"{{modalId}}\" tabindex=\"-1\" attr.aria-labelledby=\"{{lableId}}\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" [ngClass]=\"{\r\n 'modal-sm': size === 'sm',\r\n 'modal-lg': size === 'lg', \r\n 'modal-xl': size === 'xl'\r\n }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n <ng-content select=\"header\"></ng-content>\r\n <h5 class=\"modal-title\" id=\"{{lableId}}\">{{title}}</h5>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"cancel()\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n {{text}}\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"showFooter\">\r\n <ng-content select=\"footer\"></ng-content>\r\n <button [class.visually-hidden]=\"!showOk\" [disabled]=\"disabledOk\" type=\"button\" class=\"btn {{cssButton()}}\" id=\"{{okButtonId}}\"\r\n (click)=\"ok()\">\r\n <i *ngIf=\"icon\" class=\"{{ icon }}\"></i> {{ okButtonText }}\r\n </button>\r\n <button [class.visually-hidden]=\"!showCancel\" type=\"button\" class=\"btn btn-secondary\"\r\n (click)=\"cancel()\">\r\n <i class=\"fa-solid fa-ban\"></i> {{ 'Action.Cancel' | translate }}\r\n </button>\r\n <button type=\"button\" class=\"d-none\" id=\"{{cancelButtonId}}\" data-bs-dismiss=\"modal\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Output, EventEmitter } from '@angular/core';\r\nimport { ZekModal } from '../modal/modal.component';\r\n\r\n@Component({\r\n selector: 'zek-filter-modal',\r\n templateUrl: './filter-modal.component.html'\r\n})\r\nexport class ZekFilterModal extends ZekModal {\r\n @Output() onReset = new EventEmitter();\r\n\r\n reset() {\r\n this.onReset.emit();\r\n }\r\n}","<div (keydown.enter)=\"keyDown($event)\" class=\"modal fade\" data-bs-backdrop=\"static\" id=\"{{modalId}}\" tabindex=\"-1\" attr.aria-labelledby=\"{{lableId}}\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" [ngClass]=\"{\r\n 'modal-sm': size === 'sm',\r\n 'modal-lg': size === 'lg', \r\n 'modal-xl': size === 'xl'\r\n }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n <ng-content select=\"header\"></ng-content>\r\n <h5 class=\"modal-title\" id=\"{{lableId}}\">{{ 'Action.Filter' | translate }}</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n {{text}}\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"showFooter\">\r\n <ng-content select=\"footer\"></ng-content>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\"><i class=\"fa-solid fa-filter\"></i> {{ 'Action.Filter' | translate }}</button>\r\n <button *ngIf=\"showCancel\" type=\"button\" class=\"btn btn-secondary\" id=\"modal-cancel-button-{{elementId}}\" data-bs-dismiss=\"modal\"><i class=\"fa-solid fa-ban\"></i> {{ 'Action.Cancel' | translate }}</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"reset()\"><i class=\"fa-solid fa-xmark\"></i> {{ 'Action.Reset' | translate }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { ZekModal } from '../modal/modal.component';\r\n\r\n@Component({\r\n selector: 'zek-sum-modal',\r\n templateUrl: './sum-modal.component.html'\r\n})\r\nexport class ZekSumModal {\r\n @Input() model: any;\r\n @ViewChild('sumModal', { static: false }) private modal?: ZekModal;\r\n\r\n sum() {\r\n if (this.modal) {\r\n this.modal.show();\r\n }\r\n else {\r\n throw new Error('sumModal is null or undefined');\r\n }\r\n }\r\n}","<zek-modal #sumModal [showCancel]=\"false\" [title]=\"'Action.Sum' | translate\">\r\n <table class=\"table table-striped table-borderless table-hover\">\r\n <tbody>\r\n <tr *ngFor=\"let item of model\">\r\n <td class=\"w-75\">{{'Fields.'+item.key | translate}}</td>\r\n <td class=\"w-25\">\r\n <ng-container *ngIf=\"item.key != 'Count'; else elseBlock\">{{item.value | number:'1.2' }}</ng-container>\r\n <ng-template #elseBlock>{{item.value}}</ng-template>\r\n </td>\r\n <tr>\r\n </tbody>\r\n </table>\r\n</zek-modal>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { \r\n ZekModal,\r\n ZekDeleteModal,\r\n ZekApproveModal,\r\n ZekDisapproveModal,\r\n ZekRestoreModal,\r\n ZekSubmitModal\r\n} from './modal/modal.component';\r\nimport { ZekFilterModal } from './filter-modal/filter-modal.component';\r\nimport { ZekSumModal } from './sum-modal/sum-modal.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n declarations: [\r\n ZekModal,\r\n ZekDeleteModal,\r\n ZekApproveModal,\r\n ZekSubmitModal,\r\n ZekDisapproveModal,\r\n ZekRestoreModal,\r\n ZekFilterModal,\r\n ZekSumModal\r\n ],\r\n exports: [\r\n ZekModal,\r\n ZekDeleteModal,\r\n ZekApproveModal,\r\n ZekSubmitModal,\r\n ZekDisapproveModal,\r\n ZekRestoreModal,\r\n ZekFilterModal,\r\n ZekSumModal\r\n ]\r\n})\r\nexport class ZekModalModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'safe'\r\n})\r\nexport class ZekSafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n /**\r\n * Transform\r\n *\r\n * @param value: string\r\n * @param type: string html, style, script, url, resourceUrl\r\n */\r\n transform(value: string, type?: '' | 'html' | 'style' | 'script' | 'url' | 'resourceUrl' | null): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n case 'html':\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n case 'style':\r\n return this.sanitizer.bypassSecurityTrustStyle(value);\r\n case 'script':\r\n return this.sanitizer.bypassSecurityTrustScript(value);\r\n case 'url':\r\n return this.sanitizer.bypassSecurityTrustUrl(value);\r\n case 'resourceUrl':\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n default:\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n }\r\n}","import { Component, ViewChild } from '@angular/core';\r\n\r\nimport { ZekModal, ZekModalModule } from '../modal';\r\nimport { CoreComponent } from '../../components';\r\nimport { FileHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ZekSafePipe } from '../safe';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-file-viewer',\r\n templateUrl: './file-viewer.html',\r\n imports: [CommonModule, ZekModalModule, ZekSafePipe],\r\n providers: []\r\n})\r\nexport class ZekFileViewer<TModal extends ZekModal = ZekModal> extends CoreComponent {\r\n\r\n @ViewChild('viewModal', { static: true }) viewModal?: TModal | null;\r\n\r\n src?: string | null;\r\n\r\n show(url: string, extension?: string | null) {\r\n\r\n const ext = extension || FileHelper.getExtension(url);\r\n switch (ext) {\r\n case '.docx':\r\n case '.doc':\r\n this.src = 'https://docs.google.com/a/umd.edu/viewer?url=' + url + '&embedded=true';\r\n break;\r\n\r\n case '.xlsx':\r\n case '.xls':\r\n\r\n this.src = 'http://view.officeapps.live.com/op/view.aspx?src=' + url;\r\n break;\r\n\r\n // case '.jpg':\r\n // case '.jpeg':\r\n // case '.png':\r\n // case '.pdf':\r\n default:\r\n this.src = url;\r\n break;\r\n }\r\n\r\n\r\n // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" allowfullscreen=\"allowfullscreen\"\r\n // src=\"https://docs.google.com/spreadsheets/u/0/d/1Yv92dG0AOki6prNq5RwRSWTpdcidzFkakW9nMf0RaUQ/preview/sheet?gid=0\"></iframe> -->\r\n\r\n // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" \r\n // src=\"https://docs.google.com/a/umd.edu/viewer?url=https://github.com/poychang/blog.poychang.net/raw/master/assets/post-files/THIS-IS-WORD.docx&amp;embedded=true\">\r\n // </iframe> -->\r\n // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" \r\n // src=\" https://view.officeapps.live.com/op/embed.aspx?src=https://github.com/poychang/blog.poychang.net/raw/master/assets/post-files/THIS-IS-WORD.docx\">\r\n // </iframe> -->\r\n\r\n\r\n // this.src = 'http://view.officeapps.live.com/op/view.aspx?src=https://sample-videos.com/xls/Sample-Spreadsheet-50000-rows.xls';\r\n\r\n if (this.viewModal) {\r\n this.viewModal.show();\r\n }\r\n }\r\n}\r\n","<zek-modal #viewModal [fullscreen]=\"true\" [showHeader]=\"true\" [showFooter]=\"false\">\r\n <ng-container *ngIf=\"src\">\r\n <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"\r\n [src]=\"src | safe:'resourceUrl'\">\r\n </iframe>\r\n </ng-container>\r\n</zek-modal>","import { HtmlHelper } from \"../../utils\";\r\n\r\ndeclare let google: any;\r\n\r\n\r\ndeclare global {\r\n interface Window {\r\n onGoogleLibraryLoad: () => void;\r\n }\r\n}\r\n\r\nfunction loadScript(\r\n onLoaded: (google: any) => void,\r\n url?: string,\r\n nonce?: string\r\n): void {\r\n window.onGoogleLibraryLoad = () => {\r\n onLoaded(google);\r\n };\r\n\r\n const src = url || \"https://accounts.google.com/gsi/client\";\r\n HtmlHelper.loadScript(src, nonce, true, true);\r\n}\r\n\r\nexport const loader = { loadScript };","import { Directive, EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { loader } from './loader';\r\nimport { GOOGLE_CLIENT_ID } from \"../../tokens\";\r\nimport { CoreComponent, BooleanInput, NumberInput } from \"../../components\";\r\nimport { Convert } from \"../../utils\";\r\n\r\ndeclare let google: any;\r\n\r\nexport interface GoogleLoginConfig {\r\n client_id: string;\r\n}\r\nexport type GoogleLoginButtonTextInput =\r\n 'signin_with' | 'signup_with' | 'continue_with' | 'signin' | null | undefined;\r\n\r\n\r\n@Directive({\r\n selector: 'zek-google-login',\r\n host: {\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class ZekGoogleLoginButton extends CoreComponent {\r\n constructor(@Inject(GOOGLE_CLIENT_ID) private readonly client_id: string) {\r\n super();\r\n }\r\n\r\n private _uniqueId: string = `zek-google-button-container-${this.uniqueId}`;\r\n @Input() id: string = this._uniqueId;\r\n\r\n private _prompt = true;\r\n @Input() get prompt() {\r\n return this._prompt;\r\n }\r\n set prompt(v: BooleanInput) {\r\n this._prompt = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _autoSelect = false;\r\n @Input() get autoSelect() {\r\n return this._autoSelect;\r\n }\r\n set autoSelect(v: BooleanInput) {\r\n this._autoSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _cancelOnTapOutside = true;\r\n @Input() get cancelOnTapOutside() {\r\n return this._cancelOnTapOutside;\r\n }\r\n set cancelOnTapOutside(v: BooleanInput) {\r\n this._cancelOnTapOutside = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _width: NumberInput;\r\n @Input() get width() {\r\n return this._width;\r\n }\r\n set width(v: NumberInput) {\r\n this._width = v;\r\n }\r\n\r\n\r\n private _text: GoogleLoginButtonTextInput;\r\n @Input() get text() {\r\n return this._text;\r\n }\r\n set text(v: GoogleLoginButtonTextInput) {\r\n this._text = v;\r\n }\r\n\r\n\r\n\r\n @Output() onLoginResponse = new EventEmitter();\r\n @Output() onLogin = new EventEmitter();\r\n\r\n // private _type: 'standard' | 'icon';\r\n // public get type(): '' {\r\n // return this._type;\r\n // }\r\n // public set type(v: 'standard' | 'icon') {\r\n // this._type = v;\r\n // }\r\n\r\n\r\n\r\n\r\n // private static _loaded = false;\r\n // static async loadScript() {\r\n // if (this._loaded) return;\r\n // await HtmlHelper.loadScripts('https://accounts.google.com/gsi/client');\r\n // this._loaded = true;\r\n // }\r\n\r\n\r\n private google?: any;\r\n override async init() {\r\n super.init();\r\n // await GoogleLoginButton.loadScript();\r\n\r\n if (\"google\" in window) {\r\n this.google = google;\r\n this.initialize();\r\n } else {\r\n loader.loadScript(this.onLoadComplete);\r\n }\r\n }\r\n private onLoadComplete = (google: any) => {\r\n this.google = google;\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n this.google.accounts.id.initialize({\r\n client_id: this.client_id,\r\n callback: (response: any) => {\r\n this.handleCredentialResponse(response);\r\n },\r\n auto_select: this._autoSelect,\r\n cancel_on_tap_outside: this._cancelOnTapOutside,\r\n });\r\n\r\n setTimeout(() => {\r\n this.renderButton();\r\n this.autoPrompt();\r\n },);\r\n }\r\n renderButton() {\r\n const options: any = { theme: \"outline\", size: \"large\" };\r\n if (this._width)\r\n options.width = this._width;\r\n if (this._text)\r\n options.text = this._text\r\n\r\n this.google.accounts.id.renderButton(\r\n document.getElementById(this.id),\r\n // this._elementRef.nativeElement.parentElement,\r\n options // customization attributes\r\n );\r\n }\r\n autoPrompt() {\r\n if (this._prompt)\r\n this.google.accounts.id.prompt(); // also display the One Tap dialog\r\n }\r\n\r\n\r\n handleCredentialResponse(response: any) {\r\n this.onLoginResponse?.emit(response);\r\n this.onLogin?.emit(response.credential);\r\n\r\n // let payload = JwtHelper.decode(response.credential);\r\n // console.log(\"ID: \" + payload.sub);\r\n // console.log('Full Name: ' + payload.name);\r\n // console.log('Given Name: ' + payload.given_name);\r\n // console.log('Family Name: ' + payload.family_name);\r\n // console.log(\"Image URL: \" + payload.picture);\r\n // console.log(\"Email: \" + payload.email);\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { GoogleLoginConfig, ZekGoogleLoginButton } from './google-login-button';\r\nimport { GOOGLE_CLIENT_ID } from '../../tokens';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n ZekGoogleLoginButton\r\n ],\r\n exports: [\r\n ZekGoogleLoginButton\r\n ]\r\n})\r\nexport class ZekGoogleLoginModule {\r\n public static forRoot(config: GoogleLoginConfig): ModuleWithProviders<ZekGoogleLoginModule> {\r\n return {\r\n ngModule: ZekGoogleLoginModule,\r\n providers: [\r\n ZekGoogleLoginButton,\r\n {\r\n provide: GOOGLE_CLIENT_ID,\r\n useValue: config.client_id\r\n },\r\n ]\r\n };\r\n }\r\n\r\n\r\n public static forChild(config: GoogleLoginConfig) {\r\n return this.forRoot(config);\r\n }\r\n}","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../../components';\r\nimport { Convert } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-grid-toolbar',\r\n templateUrl: './grid-toolbar.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekGridToolbar {\r\n // constructor(private readonly router: Router) {\r\n // //private readonly viewContainerRef: ViewContainerRef,\r\n // }\r\n\r\n // getParentComponent(): any {\r\n // return this.viewContainerRef['_data'].componentView.component.viewContainerRef['_view'].component\r\n // }\r\n\r\n @Input() model: any;\r\n\r\n private _showEdit = true;\r\n @Input()\r\n get showEdit(): boolean {\r\n return this._showEdit;\r\n }\r\n set showEdit(v: BooleanInput) {\r\n this._showEdit = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _editEnabled = true;\r\n @Input()\r\n get editEnabled(): boolean {\r\n return this._editEnabled;\r\n }\r\n set editEnabled(v: BooleanInput) {\r\n this._editEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showDelete = true;\r\n @Input()\r\n get showDelete(): boolean {\r\n return this._showDelete;\r\n }\r\n set showDelete(v: BooleanInput) {\r\n this._showDelete = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _deleteEnabled = true;\r\n @Input()\r\n get deleteEnabled(): boolean {\r\n return this._deleteEnabled;\r\n }\r\n set deleteEnabled(v: BooleanInput) {\r\n this._deleteEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showRestore = false;\r\n @Input()\r\n get showRestore(): boolean {\r\n return this._showRestore;\r\n }\r\n set showRestore(v: BooleanInput) {\r\n this._showRestore = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _restoreEnabled = true;\r\n @Input()\r\n get restoreEnabled(): boolean {\r\n return this._restoreEnabled;\r\n }\r\n set restoreEnabled(v: BooleanInput) {\r\n this._restoreEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n @Input() approveText = 'Action.Approve';\r\n private _showApprove = false;\r\n @Input()\r\n get showApprove(): boolean {\r\n return this._showApprove;\r\n }\r\n set showApprove(v: BooleanInput) {\r\n this._showApprove = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _approveEnabled = false;\r\n @Input()\r\n get approveEnabled(): boolean {\r\n return this._approveEnabled;\r\n }\r\n set approveEnabled(v: BooleanInput) {\r\n this._approveEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() disapproveText = 'Action.Disapprove';\r\n private _showDisapprove = false;\r\n @Input()\r\n get showDisapprove(): boolean {\r\n return this._showDisapprove;\r\n }\r\n set showDisapprove(v: BooleanInput) {\r\n this._showDisapprove = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _disapproveEnabled = false;\r\n @Input()\r\n get disapproveEnabled(): boolean {\r\n return this._disapproveEnabled;\r\n }\r\n set disapproveEnabled(v: BooleanInput) {\r\n this._disapproveEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Output() onEdit = new EventEmitter<any>();\r\n edit() {\r\n //this.router.navigate([this.router.url, this.model]);\r\n this.onEdit.emit(this.model);\r\n }\r\n\r\n @Output() onDelete = new EventEmitter<any>();\r\n delete() {\r\n this.onDelete.emit(this.model)\r\n }\r\n\r\n @Output() onApprove = new EventEmitter<any>();\r\n approve() {\r\n this.onApprove.emit(this.model)\r\n }\r\n\r\n @Output() onDisapprove = new EventEmitter<any>();\r\n disapprove() {\r\n this.onDisapprove.emit(this.model)\r\n }\r\n\r\n @Output() onRestore = new EventEmitter<any>();\r\n restore() {\r\n this.onRestore.emit(this.model)\r\n }\r\n}\r\n","<div class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"Table action group\">\r\n <button *ngIf=\"showEdit\" (click)=\"edit()\" type=\"button\" class=\"btn btn-secondary\" title=\"{{ 'Action.Edit' | translate }}\" [disabled]=\"!editEnabled\">\r\n <i class=\"fa-solid fa-pencil\"></i>\r\n </button>\r\n <button *ngIf=\"showApprove\" (click)=\"approve()\" type=\"button\" class=\"btn btn-success\" title=\"{{ approveText | translate }}\" [disabled]=\"!approveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-up\"></i>\r\n </button>\r\n <button *ngIf=\"showDisapprove\" (click)=\"disapprove()\" type=\"button\" class=\"btn btn-danger\" title=\"{{ disapproveText | translate }}\" [disabled]=\"!disapproveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-down\"></i>\r\n </button>\r\n <button *ngIf=\"showDelete\" (click)=\"delete()\" type=\"button\" class=\"btn btn-danger\" title=\"{{ 'Action.Delete' | translate }}\" [disabled]=\"!deleteEnabled\">\r\n <i class=\"fa-solid fa-trash\"></i>\r\n </button>\r\n <button *ngIf=\"showRestore\" (click)=\"restore()\" type=\"button\" class=\"btn btn-success\" title=\"{{ 'Action.Restore' | translate }}\" [disabled]=\"!restoreEnabled\">\r\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\r\n </button>\r\n <ng-content></ng-content>\r\n</div>","import { Component } from \"@angular/core\";\r\nimport { ZekGridToolbar } from \"../grid-toolbar/grid-toolbar\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-grid-toolbar-bar',\r\n templateUrl: './grid-toolbar-bar.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekGridToolbarBar extends ZekGridToolbar {\r\n\r\n}","<button type=\"button\" class=\"btn btn-light btn-sm\" data-bs-toggle=\"dropdown\">\r\n <i class=\"fa-solid fa-ellipsis\"></i>\r\n</button>\r\n<ul class=\"dropdown-menu\">\r\n <li><button *ngIf=\"showEdit\" (click)=\"edit()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!editEnabled\">\r\n <i class=\"fa-solid fa-pencil\"></i> {{ 'Action.Edit' | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showApprove\" (click)=\"approve()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!approveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-up\"></i> {{ approveText | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showDisapprove\" (click)=\"disapprove()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!disapproveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-down\"></i> {{ disapproveText | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showDelete\" (click)=\"delete()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!deleteEnabled\">\r\n <i class=\"fa-solid fa-trash\"></i> {{ 'Action.Delete' | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showRestore\" (click)=\"restore()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!restoreEnabled\">\r\n <i class=\"fa-solid fa-clock-rotate-left\"></i> {{ 'Action.Restore' | translate }}\r\n </button></li>\r\n <ng-content></ng-content>\r\n</ul>","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BooleanInput } from '../../components';\r\n\r\nimport { PrintType } from '../../models/print.model';\r\nimport { Convert, UrlHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-list-toolbar',\r\n templateUrl: './list-toolbar.html',\r\n imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekListToolbar {\r\n constructor(private readonly router: Router) {\r\n }\r\n\r\n printType = PrintType;\r\n\r\n private _isFiltered = false;\r\n @Input()\r\n get isFiltered() {\r\n return this._isFiltered;\r\n }\r\n set isFiltered(v: BooleanInput) {\r\n this._isFiltered = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showCreate = true;\r\n @Input()\r\n get showCreate() {\r\n return this._showCreate;\r\n }\r\n set showCreate(v: BooleanInput) {\r\n this._showCreate = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n\r\n private _showFilter = true;\r\n @Input()\r\n get showFilter() {\r\n return this._showFilter;\r\n }\r\n set showFilter(v: BooleanInput) {\r\n this._showFilter = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showPrint = false;\r\n @Input()\r\n get showPrint() {\r\n return this._showPrint;\r\n }\r\n set showPrint(v: BooleanInput) {\r\n this._showPrint = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n\r\n private _showSum = false;\r\n @Input()\r\n get showSum() {\r\n return this._showSum;\r\n }\r\n set showSum(v: BooleanInput) {\r\n this._showSum = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showExport = false;\r\n @Input()\r\n get showExport(): boolean {\r\n return this._showExport;\r\n }\r\n set showExport(v: BooleanInput) {\r\n this._showExport = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n @Output() onRefresh = new EventEmitter<void>();\r\n @Output() onFilter = new EventEmitter<void>();\r\n @Output() onCreate = new EventEmitter<void>();\r\n @Output() onSum = new EventEmitter<void>();\r\n @Output() onPrint = new EventEmitter<PrintType>();\r\n @Output() onExport = new EventEmitter<number>();\r\n\r\n refresh() {\r\n this.onRefresh.emit();\r\n }\r\n\r\n create() {\r\n this.onCreate?.emit();\r\n }\r\n\r\n\r\n filter() {\r\n this.onFilter.emit();\r\n }\r\n\r\n\r\n print(printType?: PrintType) {\r\n this.onPrint.emit(printType);\r\n }\r\n\r\n\r\n sum() {\r\n this.onSum.emit();\r\n }\r\n\r\n exportExcel() {\r\n this.onExport.emit(1);\r\n }\r\n}","<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar\">\r\n <div class=\"btn-group me-2\" role=\"group\" aria-label=\"Action group\">\r\n <button *ngIf=\"showCreate\" type=\"button\" class=\"btn btn-primary\" (click)=\"create()\"><i class=\"fa-solid fa-plus\"></i> {{ 'Action.Create' | translate }}</button>\r\n </div>\r\n <div class=\"btn-group me-2\" role=\"group\" aria-label=\"Filter group\">\r\n <button *ngIf=\"showFilter\" type=\"button\" class=\"btn btn-secondary\" [ngClass]=\"{'btn-outline-success': isFiltered, 'btn-secondary': !isFiltered }\" (click)=\"filter()\" data-bs-toggle0=\"modal\" data-bs-backdrop0=\"static\" data-bs-target0=\"#filter-modal\"><i class=\"fa-solid fa-filter\"></i> {{ 'Action.Filter' | translate }}</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" title=\"{{ 'Action.Refresh' | translate }}\" (click)=\"refresh()\"><i class=\"fa-solid fa-rotate\"></i></button>\r\n </div>\r\n <div *ngIf=\"showPrint\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Print group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"print(printType.Pdf)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button>\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(printType.Show)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button></li>\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(printType.Pdf)\"><i class=\"fa-solid fa-file-pdf\"></i> {{ 'Action.Print' | translate }} PDF</button></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showSum\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Sum group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"sum()\"><i class=\"fa-solid fa-sigma\"></i> {{ 'Action.Sum' | translate }}</button>\r\n </div>\r\n <div *ngIf=\"showExport\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Export group\">\r\n <div class=\"btn-group\" role=\"group\">\r\n <button id=\"btn-group-export\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"fa-solid fa-download\"></i> {{ 'Action.Export' | translate }}</button>\r\n <ul class=\"dropdown-menu\" aria-labelledby=\"btn-group-export\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"exportExcel()\"><i class=\"fa-solid fa-file-excel\"></i> Excel</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class ZekLoadingService {\r\n private _pendingRequests = 0;\r\n private _loadingSubject$?: BehaviorSubject<boolean>\r\n private _onLoadingObservable?: Observable<boolean>;\r\n\r\n start() {\r\n this._pendingRequests++;\r\n this._loadingSubject$?.next(true);\r\n }\r\n end() {\r\n this._pendingRequests--;\r\n if (this._pendingRequests < 0)\r\n this._pendingRequests = 0;\r\n\r\n if (0 === this._pendingRequests) {\r\n this._loadingSubject$?.next(false);\r\n }\r\n }\r\n\r\n get onLoading() {\r\n if (!this._loadingSubject$) {\r\n this._loadingSubject$ = new BehaviorSubject<boolean>(false);\r\n this._onLoadingObservable = this._loadingSubject$.asObservable();\r\n }\r\n\r\n if (!this._onLoadingObservable)\r\n throw new Error(\"_onExecuteObservable is undefined\");\r\n\r\n return this._onLoadingObservable;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ZekLoadingInterceptor implements HttpInterceptor {\r\n constructor(private readonly _loading: ZekLoadingService) {\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n this._loading.start();\r\n\r\n return next.handle(request).pipe(\r\n finalize(() => {\r\n this._loading.end();\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport const ZekLoadingInterceptorProvider = [{\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: ZekLoadingInterceptor,\r\n multi: true\r\n}];","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ZekLoadingService } from './loading-interceptor';\r\n\r\n@Component({\r\n selector: 'zek-loading',\r\n styleUrls: ['./loading.css'],\r\n template: `\r\n<div *ngIf=\"show\" id=\"loading\" class=\"progress\">\r\n <div class=\"progress-bar progress-bar-striped progress-bar-animated bg-danger\" role=\"progressbar\" style=\"width:100%\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\r\n</div>\r\n`\r\n})\r\nexport class ZekLoading implements OnInit, OnDestroy {\r\n show = false;\r\n private subscription?: Subscription;\r\n constructor(private readonly _loading: ZekLoadingService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this._loading.onLoading.subscribe(x => {\r\n this.show = x\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ZekLoadingInterceptor, ZekLoadingInterceptorProvider } from './loading-interceptor';\r\nimport { ZekLoading } from './loading';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ],\r\n declarations: [\r\n ZekLoading\r\n ],\r\n providers: [\r\n ZekLoadingInterceptor,\r\n ZekLoadingInterceptorProvider,\r\n ],\r\n exports: [\r\n ZekLoading,\r\n ]\r\n})\r\nexport class ZekLoadingModule {\r\n}\r\n","export * from './loading.module';\r\nexport * from './loading';\r\n// export * from './loading-interceptor';","import { Directive, ElementRef, HostListener, input, Input } from \"@angular/core\";\r\nimport { BooleanInput, NumberInput } from \"../../components\";\r\nimport { Convert, MathHelper } from \"../../utils\";\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: \"[numeric]\",\r\n})\r\nexport class ZekNumericDirective {\r\n private _digits = 0;\r\n @Input()\r\n get digits() {\r\n return this._digits;\r\n }\r\n set digits(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) ?? 0, 0, 29);\r\n this._digits = tmp;\r\n }\r\n\r\n private _negative = false;\r\n @Input()\r\n get negative(): boolean {\r\n return this._negative;\r\n }\r\n set negative(v: BooleanInput) {\r\n this._negative = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private checkAllowNegative(value: string) {\r\n if (this._digits <= 0) {\r\n return String(value).match(new RegExp(/^-?\\d+$/));\r\n } else {\r\n const regExpString =\r\n \"^-?\\\\s*((\\\\d+(\\\\.\\\\d{0,\" +\r\n this._digits +\r\n \"})?)|((\\\\d*(\\\\.\\\\d{1,\" +\r\n this._digits +\r\n \"}))))\\\\s*$\";\r\n return String(value).match(new RegExp(regExpString));\r\n }\r\n }\r\n\r\n private check(value: string) {\r\n if (this._digits <= 0) {\r\n return String(value).match(new RegExp(/^\\d+$/));\r\n } else {\r\n const regExpString =\r\n \"^\\\\s*((\\\\d+(\\\\.\\\\d{0,\" +\r\n this._digits +\r\n \"})?)|((\\\\d*(\\\\.\\\\d{1,\" +\r\n this._digits +\r\n \"}))))\\\\s*$\";\r\n return String(value).match(new RegExp(regExpString));\r\n }\r\n }\r\n\r\n private run(oldValue: any) {\r\n setTimeout(() => {\r\n const currentValue: string = this.el.nativeElement.value;\r\n const allowNegative = this._negative;\r\n\r\n if (allowNegative) {\r\n if (\r\n ![\"\", \"-\"].includes(currentValue) &&\r\n !this.checkAllowNegative(currentValue)\r\n ) {\r\n this.el.nativeElement.value = oldValue;\r\n }\r\n } else {\r\n if (currentValue !== '' && !this.check(currentValue)) {\r\n this.el.nativeElement.value = oldValue;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n onKeyDown(event: KeyboardEvent) {\r\n this.run(this.el.nativeElement.value);\r\n }\r\n\r\n @HostListener(\"paste\", [\"$event\"])\r\n onPaste(event: ClipboardEvent) {\r\n this.run(this.el.nativeElement.value);\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-page-title',\r\n templateUrl: './page-title.component.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekPageTitle {\r\n @Input() icon?: string;\r\n\r\n @Input() title?: string;\r\n\r\n\r\n private _isEditPage = false;\r\n @Input()\r\n get isEditPage(): boolean {\r\n return this._isEditPage;\r\n }\r\n set isEditPage(v: BooleanInput) {\r\n this._isEditPage = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() modelId?: number | null;\r\n\r\n}","<h1 class=\"h2 pt-3 pb-2 mb-3 border-bottom\">\r\n <i *ngIf=\"icon\" class=\"{{icon}}\"></i><ng-container *ngIf=\"icon\">&nbsp;</ng-container>{{ title }}&nbsp;<ng-container *ngIf=\"isEditPage\">\r\n <small class=\"text-muted\" *ngIf=\"modelId && modelId > 0 else elseBlock\">[<ng-container>{{ 'Action.Edit' | translate }}</ng-container>]</small>\r\n <ng-template #elseBlock>\r\n <small class=\"text-muted\">[<ng-container>{{ 'Action.Create' | translate }}</ng-container>]</small>\r\n </ng-template>\r\n </ng-container>\r\n</h1>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BooleanInput } from '../../../components';\r\nimport { Pager } from '../../../models';\r\nimport { Convert } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-pager',\r\n templateUrl: './pager.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekPager {\r\n @Input() pager : Pager = new Pager();\r\n\r\n private _showPageSize = true;\r\n @Input()\r\n get showPageSize(): boolean {\r\n return this._showPageSize;\r\n }\r\n set showPageSize(v: BooleanInput) {\r\n this._showPageSize = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() pagerAlign = 'start';\r\n\r\n\r\n setPage(page: number) {\r\n // if (!this.pager) return;\r\n\r\n if (page === this.pager.pageNumber)\r\n return;\r\n this.onPageChange.emit(page);\r\n }\r\n setPageSize(pageSize: number) {\r\n // if (!this.pager) return;\r\n\r\n if (pageSize === this.pager.pageSize)\r\n return;\r\n this.onPageSizeChange.emit(pageSize);\r\n }\r\n\r\n @Output() onPageChange = new EventEmitter<number>();\r\n\r\n @Output() onPageSizeChange = new EventEmitter<number>();\r\n}","<div *ngIf=\"pager\" class=\"row\">\r\n <div [ngClass]=\"{ 'col-sm-8': showPageSize, 'col-sm-12': !showPageSize}\">\r\n <nav aria-label=\"Pagination\">\r\n <ul class=\"pagination\" [ngClass]=\"{ 'justify-content-center': pagerAlign === 'center', 'justify-content-end': pagerAlign === 'end'}\">\r\n <li [class.disabled]=\"pager.isFirstPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"pager.isFirstPage ? 'true' : null\" aria-label=\"First\">\r\n <span aria-hidden=\"true\">&laquo;&laquo;</span>\r\n </a>\r\n </li>\r\n <li [class.disabled]=\"!pager.hasPreviousPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(pager.pageNumber - 1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"!pager.hasPreviousPage ? 'true' : null\" aria-label=\"Previous\">\r\n <span aria-hidden=\"true\">&laquo;</span>\r\n </a>\r\n </li>\r\n <li *ngFor=\"let page of pager.pages\" [class.active]=\"page === pager.pageNumber\" class=\"page-item\"><a class=\"page-link\" (click)=\"setPage(page)\" href=\"javascript:void(0)\">{{page}}</a></li>\r\n <li [class.disabled]=\"!pager.hasNextPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(pager.pageNumber + 1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"!pager.hasNextPage ? 'true' : null\" aria-label=\"Next\">\r\n <span aria-hidden=\"true\">&raquo;</span>\r\n </a>\r\n </li>\r\n <li [class.disabled]=\"pager.isLastPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(pager.pageCount)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"pager.isLastPage ? 'true' : null\" aria-label=\"Last\">\r\n <span aria-hidden=\"true\">&raquo;&raquo;</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"col-sm-4\" *ngIf=\"showPageSize\">\r\n <div class=\"float-end\">\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"page-size-button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n {{pager.pageSize}}\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end\" aria-labelledby=\"page-size-button\">\r\n <li><h6 class=\"dropdown-header\">{{ 'Pagination.PageSize' | translate }}</h6></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 10\" (click)=\"setPageSize(10)\" href=\"javascript:void(0)\">10</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 20\" (click)=\"setPageSize(20)\" href=\"javascript:void(0)\">20</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 50\" (click)=\"setPageSize(50)\" href=\"javascript:void(0)\">50</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 100\" (click)=\"setPageSize(100)\" href=\"javascript:void(0)\">100</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 500\" (click)=\"setPageSize(500)\" href=\"javascript:void(0)\">500</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"float-end mt-2\">\r\n {{pager.firstItemOnPage}} - {{pager.lastItemOnPage}} of {{pager.totalItemCount}} &nbsp;\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone:true,\r\n selector: 'zek-field-validator, [zek-field-validator]',\r\n host: { '[class]': '\"invalid-tooltip\"' },\r\n templateUrl: './field-validator.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekFieldValidator {\r\n @Input() field: any;\r\n}","<ng-container *ngIf=\"field && field.invalid && field.errors && (field.dirty || field.touched || field.formDirective?.submitted)\">\r\n <ng-container *ngIf=\"field.errors.required\">{{ 'Validation.Required' | translate }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.minlength\">{{ 'Validation.MinLengthFormat' | translate:{ value: field.errors.minlength.requiredLength } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.maxlength\">{{ 'Validation.MaxLengthFormat' | translate:{ value: field.errors.maxlength.requiredLength } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.min\">{{ 'Validation.Min' | translate:{ value: field.errors.min.min } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.max\">{{ 'Validation.Max' | translate:{ value: field.errors.min.max } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.email\">{{ 'Validation.Pattern' | translate }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.pattern\">{{ 'Validation.Pattern' | translate }}</ng-container><!-- {{ field.errors.pattern.requiredPattern }} -->\r\n <ng-container *ngIf=\"field.errors.mismatch\">{{ 'Validation.Mismatch' | translate }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.server\">{{field.errors.server}}</ng-container>\r\n</ng-container>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ZekFieldValidator } from '../validator';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-password',\r\n templateUrl: './password.html',\r\n imports: [FormsModule, ZekFieldValidator]\r\n})\r\nexport class ZekPassword {\r\n @Input() name = 'Password';\r\n\r\n private _required = false;\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(v: BooleanInput) {\r\n this._required = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() minlength: number | string | null = null;\r\n @Input() maxlength: number | string | null = null;\r\n\r\n @Input() model?: string | null;\r\n @Output('modelChange') onChange = new EventEmitter();\r\n\r\n private _type = 'password';\r\n get type() {\r\n return this._type;\r\n }\r\n\r\n showHide() {\r\n this._type = this._type === 'password' ? 'text' : 'password';\r\n }\r\n}","<div class=\"input-group has-validation\">\r\n <input type=\"{{type}}\" class=\"form-control\" name=\"{{name}}\" id=\"{{name}}\" [attr.aria-describedby]=\"name+'-show'\"\r\n [required]=\"required\" [minlength]=\"minlength\" [maxlength]=\"maxlength\"\r\n [ngModel]=\"model\" (ngModelChange)=\"onChange.emit($event)\"\r\n #password=\"ngModel\"\r\n >\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" id=\"{{name}}-show\" (click)=\"showHide()\"><i class=\"fa-solid fa-eye\"></i></button>\r\n <div zek-field-validator [field]=\"password\"></div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput, NumberInput } from '../../components';\r\nimport { Convert, MathHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ntype Background = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'body' | 'white' | 'transparent';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-progress',\r\n templateUrl: './progress.html',\r\n styles: [':host { display: block; }'],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class ZekProgress {\r\n @Input()\r\n get value(): number {\r\n return this._value;\r\n }\r\n set value(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 0, 100);\r\n if (this._value !== tmp) {\r\n this._value = tmp;\r\n }\r\n }\r\n private _value: number = 0;\r\n\r\n\r\n @Input()\r\n get showValue(): boolean {\r\n return this._showValue;\r\n }\r\n set showValue(v: BooleanInput) {\r\n this._showValue = Convert.toBooleanProperty(v);\r\n }\r\n private _showValue = false;\r\n\r\n @Input()\r\n get showTitle(): boolean {\r\n return this._showTitle;\r\n }\r\n set showTitle(v: BooleanInput) {\r\n this._showTitle = Convert.toBooleanProperty(v);\r\n }\r\n private _showTitle = true;\r\n\r\n get _title() {\r\n return this._showTitle ? `${this._value} %` : null;\r\n }\r\n\r\n\r\n @Input()\r\n get striped(): boolean {\r\n return this._striped;\r\n }\r\n set striped(v: BooleanInput) {\r\n this._striped = Convert.toBooleanProperty(v);\r\n }\r\n private _striped = false;\r\n\r\n\r\n @Input()\r\n get animated(): boolean {\r\n return this._animated;\r\n }\r\n set animated(v: BooleanInput) {\r\n this._animated = Convert.toBooleanProperty(v);\r\n }\r\n private _animated = false;\r\n\r\n @Input()\r\n get label() {\r\n return this._label;\r\n }\r\n set label(v: string | null | undefined) {\r\n this._label = v ? v : null;\r\n }\r\n private _label: string | null = null;\r\n\r\n\r\n\r\n @Input()\r\n get height() {\r\n return this._height;\r\n }\r\n set height(v: NumberInput) {\r\n const tmp = Convert.toNumber(v) || 0;\r\n this._height = tmp > 0 ? tmp : null;\r\n }\r\n private _height: number | null = null;\r\n\r\n\r\n @Input()\r\n get background() {\r\n return this._background;\r\n }\r\n set background(v: Background) {\r\n this._background = v;\r\n }\r\n private _background: Background = 'primary';\r\n}","<div class=\"progress\" [style.height.px]=\"height\" [title]=\"_title\" >\r\n <div class=\"progress-bar bg-{{background}}\" role=\"progressbar\"\r\n [class.progress-bar-striped]=\"striped || animated\"\r\n [class.progress-bar-animated]=\"animated\"\r\n [style.width.%]=\"value\"\r\n [attr.aria-valuenow]=\"value\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\">\r\n <ng-container *ngIf=\"showValue\">{{value}}%</ng-container>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnInit, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput } from '../../components';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { Convert } from '../../utils';\r\n\r\n/**\r\n * Provider Expression that allows zek-radio to register as a ControlValueAccessor. This\r\n * allows it to support [(ngModel)] and ngControl.\r\n * @docs-private\r\n */\r\nconst ZEK_RADIO_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ZekRadio),\r\n multi: true,\r\n};\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-radio',\r\n templateUrl: './radio.html',\r\n host: {\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n // Note: under normal conditions focus shouldn't land on this element, however it may be\r\n // programmatically set, for example inside of a focus trap, in this case we want to forward\r\n // the focus to the native element.\r\n '(focus)': '_inputElement.nativeElement.focus()',\r\n\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ZEK_RADIO_CONTROL_VALUE_ACCESSOR],\r\n})\r\nexport class ZekRadio extends CoreUiComponent\r\n implements OnInit {\r\n constructor(\r\n private _changeDetector: ChangeDetectorRef,\r\n _renderer: Renderer2,\r\n _elementRef: ElementRef) {\r\n super(_renderer, _elementRef);\r\n }\r\n\r\n\r\n private _uniqueId: string = `zek-radio-${this.uniqueId}`;\r\n\r\n /** The unique ID for the radio button. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n /** Used to set the 'aria-label' attribute on the underlying input element. */\r\n @Input('aria-label') ariaLabel?: string | null;\r\n\r\n /** The 'aria-labelledby' attribute takes precedence as the element's text alternative. */\r\n @Input('aria-labelledby') ariaLabelledby?: string | null;\r\n\r\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\r\n @Input('aria-describedby') ariaDescribedby?: string | null;\r\n\r\n /** The native `<input type=radio>` element */\r\n @ViewChild('input') _inputElement?: ElementRef<HTMLInputElement> | null;\r\n\r\n\r\n\r\n private _inline = false;\r\n get inline() {\r\n return this._inline;\r\n }\r\n @Input()\r\n set inline(v: BooleanInput) {\r\n const newValue = Convert.toBooleanProperty(v);\r\n if (this._inline !== newValue) {\r\n this._inline = newValue;\r\n this.onInlineChanged();\r\n }\r\n }\r\n onInlineChanged() { }\r\n\r\n get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n\r\n /** The value from ngModel. */\r\n private modelValue: any;\r\n\r\n\r\n private _checked = false;\r\n @Input()\r\n get checked(): boolean {\r\n return this._checked;\r\n }\r\n set checked(value: BooleanInput) {\r\n const newCheckedState = Convert.toBooleanProperty(value);\r\n if (this._checked !== newCheckedState) {\r\n this._checked = newCheckedState;\r\n this._markForCheck();\r\n }\r\n }\r\n\r\n\r\n override writeValue(value: any): void {\r\n if (this.modelValue !== value) {\r\n this.modelValue = value;\r\n this.checked = this.modelValue === this._value;\r\n }\r\n\r\n }\r\n override onValueChanged() {\r\n if (!this.checked) {\r\n // Update checked when the value changed to match the radio group's value\r\n this.checked = this.modelValue === this._value;\r\n }\r\n }\r\n\r\n\r\n override onRequiredChanged(): void {\r\n this._markForCheck();\r\n }\r\n override onDisabledChanged() {\r\n this._markForCheck();\r\n }\r\n\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n private _markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n\r\n\r\n override init(): void {\r\n // Determine if it should be checked\r\n this.checked = this.modelValue === this._value;\r\n }\r\n\r\n\r\n /** Triggered when the radio button receives an interaction from the user. */\r\n override _onInputInteraction(event: Event) {\r\n // We always have to stop propagation on the change event.\r\n // Otherwise the change event, from the input element, will bubble up and\r\n // emit its event object to the `change` output.\r\n event.stopPropagation();\r\n\r\n if (!this.checked && !this.disabled) {\r\n const modelValueChanged = this.value !== this.modelValue;\r\n this.checked = true;\r\n this.modelValue = this._value;\r\n this._emitChangeEvent();\r\n\r\n if (modelValueChanged) {\r\n this._onChange(this._value);\r\n }\r\n }\r\n }\r\n}","<div class=\"form-check\" [class.form-check-inline]=\"inline\">\r\n <input #input class=\"form-check-input\" type=\"radio\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n (change)=\"_onInputInteraction($event)\">\r\n <label [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>","import { Directive, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[readonly],[readOnly]',\r\n host: {\r\n '[attr.readonly]': '_readOnly ? \"\" : null'\r\n }\r\n})\r\nexport class ZekReadOnlyDirective {\r\n private _readOnly = false;\r\n @Input()\r\n get readonly(): boolean {\r\n return this._readOnly;\r\n }\r\n set readonly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n}","import { HtmlHelper } from \"../../utils\";\r\nimport { ReCaptchaV2 } from \"./recaptcha.model\";\r\n\r\ndeclare var grecaptcha: ReCaptchaV2.ReCaptcha & {\r\n enterprise: ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\ndeclare global {\r\n interface Window {\r\n recaptchaloaded: () => void;\r\n }\r\n}\r\nfunction loadScript(\r\n siteKey: \"explicit\" | string,\r\n onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void,//ReCaptchaV2.ReCaptcha\r\n urlParams?: string,\r\n url?: string,\r\n nonce?: string\r\n): void {\r\n window.recaptchaloaded = () => {\r\n onLoaded(grecaptcha);\r\n };\r\n\r\n const baseUrl = url || \"https://www.google.com/recaptcha/api.js\";\r\n const params = urlParams || '';\r\n const src = `${baseUrl}?render=${siteKey}&onload=recaptchaloaded${params}`;\r\n\r\n HtmlHelper.loadScript(src, nonce, true, true);\r\n}\r\n\r\nexport const loader = { loadScript };","import { Inject, Injectable, NgZone, Optional } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { RECAPTCHA_SITE_KEY } from '../../tokens';\r\nimport { loader } from './loader';\r\nimport { ReCaptchaV2 } from './recaptcha.model';\r\n\r\ndeclare var grecaptcha: ReCaptchaV2.ReCaptcha & {\r\n enterprise: ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\n\r\nexport interface ReCaptchaConfig {\r\n siteKey: string;\r\n}\r\n\r\n\r\nexport interface OnExecuteData {\r\n /**\r\n * The name of the action that has been executed.\r\n */\r\n action: string;\r\n /**\r\n * The token that reCAPTCHA v3 provided when executing the action.\r\n */\r\n token: string;\r\n}\r\n\r\nexport interface OnExecuteErrorData {\r\n /**\r\n * The name of the action that has been executed.\r\n */\r\n action: string;\r\n /**\r\n * The error which was encountered\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: any;\r\n}\r\n\r\ntype ActionBacklogEntry = [string, Subject<string>];\r\n\r\n\r\n\r\n@Injectable()\r\nexport class ReCaptchaService {\r\n private readonly isBrowser = true;\r\n private readonly siteKey: string;\r\n private readonly zone: NgZone;\r\n\r\n private actionBacklog: ActionBacklogEntry[] | undefined;\r\n private grecaptcha?: ReCaptchaV2.ReCaptcha;\r\n private onExecuteSubject?: Subject<OnExecuteData>;\r\n private onExecuteErrorSubject?: Subject<OnExecuteErrorData>;\r\n private onExecuteObservable?: Observable<OnExecuteData>;\r\n private onExecuteErrorObservable?: Observable<OnExecuteErrorData>;\r\n\r\n constructor(\r\n zone: NgZone,\r\n @Optional() @Inject(RECAPTCHA_SITE_KEY) siteKey: string) {\r\n\r\n this.zone = zone;\r\n this.siteKey = siteKey;\r\n this.init();\r\n }\r\n\r\n public get onExecute(): Observable<OnExecuteData> {\r\n if (!this.onExecuteSubject) {\r\n this.onExecuteSubject = new Subject<OnExecuteData>();\r\n this.onExecuteObservable = this.onExecuteSubject.asObservable();\r\n }\r\n\r\n if (!this.onExecuteObservable)\r\n throw new Error(\"onExecuteObservable is undefined\");\r\n\r\n return this.onExecuteObservable;\r\n }\r\n\r\n public get onExecuteError(): Observable<OnExecuteErrorData> {\r\n if (!this.onExecuteErrorSubject) {\r\n this.onExecuteErrorSubject = new Subject<OnExecuteErrorData>();\r\n this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();\r\n }\r\n\r\n if (!this.onExecuteErrorObservable)\r\n throw new Error(\"onExecuteErrorObservable is undefined\");\r\n\r\n return this.onExecuteErrorObservable;\r\n }\r\n\r\n /**\r\n * Executes the provided `action` with reCAPTCHA v3 API.\r\n * Use the emitted token value for verification purposes on the backend.\r\n *\r\n * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at\r\n * https://developers.google.com/recaptcha/docs/v3.\r\n *\r\n * @param {string} action the action to execute\r\n * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.\r\n * The returned `Observable` completes immediately after emitting a value.\r\n */\r\n public execute(action: string): Observable<string> {\r\n const subject = new Subject<string>();\r\n if (this.isBrowser) {\r\n if (!this.grecaptcha) {\r\n // todo: add to array of later executions\r\n if (!this.actionBacklog) {\r\n this.actionBacklog = [];\r\n }\r\n\r\n this.actionBacklog.push([action, subject]);\r\n } else {\r\n this.executeActionWithSubject(action, subject);\r\n }\r\n }\r\n\r\n return subject.asObservable();\r\n }\r\n\r\n /** @internal */\r\n private executeActionWithSubject(action: string, subject: Subject<string>): void {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const onError = (error: any) => {\r\n this.zone.run(() => {\r\n subject.error(error);\r\n if (this.onExecuteErrorSubject) {\r\n // We don't know any better at this point, unfortunately, so have to resort to `any`\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.onExecuteErrorSubject.next({ action, error });\r\n }\r\n });\r\n };\r\n\r\n this.zone.runOutsideAngular(() => {\r\n try {\r\n if (this.grecaptcha)\r\n this.grecaptcha.execute(this.siteKey, { action }).then((token: string) => {\r\n this.zone.run(() => {\r\n subject.next(token);\r\n subject.complete();\r\n if (this.onExecuteSubject) {\r\n this.onExecuteSubject.next({ action, token });\r\n }\r\n });\r\n }, onError);\r\n } catch (e) {\r\n onError(e);\r\n }\r\n });\r\n }\r\n\r\n /** @internal */\r\n private init() {\r\n if (this.isBrowser) {\r\n if (\"grecaptcha\" in window) {\r\n this.grecaptcha = grecaptcha;\r\n } else {\r\n loader.loadScript(this.siteKey, this.onLoadComplete);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n private onLoadComplete = (grecaptcha: ReCaptchaV2.ReCaptcha) => {\r\n this.grecaptcha = grecaptcha;\r\n if (this.actionBacklog && this.actionBacklog.length > 0) {\r\n this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));\r\n this.actionBacklog = undefined;\r\n }\r\n }\r\n}","import { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { ReCaptchaConfig } from \"./index\";\r\nimport { RECAPTCHA_SITE_KEY } from \"../../tokens\";\r\nimport { ReCaptchaService } from \"./recaptcha.service\";\r\n\r\n//4.2.0\r\n@NgModule({\r\n providers: [ReCaptchaService]\r\n})\r\nexport class RecaptchaModule {\r\n public static forRoot(config: ReCaptchaConfig): ModuleWithProviders<RecaptchaModule> {\r\n return {\r\n ngModule: RecaptchaModule,\r\n providers: [\r\n ReCaptchaService,\r\n {\r\n provide: RECAPTCHA_SITE_KEY,\r\n useValue: config.siteKey\r\n },\r\n ]\r\n };\r\n }\r\n\r\n public static forChild(config: ReCaptchaConfig) {\r\n return this.forRoot(config);\r\n }\r\n}\r\n","import { Component, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput, CoreUiComponent } from '../../components';\r\nimport { ArrayHelper, Convert } from '../../utils';\r\nimport { KeyPairOption } from './model';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\nconst ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ZekSelectMultiple),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-select,[zek-select]',\r\n templateUrl: './select.html',\r\n providers: [ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR],\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n})\r\n\r\nexport class ZekSelectMultiple extends CoreUiComponent {\r\n constructor(renderer: Renderer2, elementRef: ElementRef) {\r\n super(renderer, elementRef);\r\n }\r\n\r\n private _uniqueId: string = `zek-select-${this.uniqueId}`;\r\n /** The unique ID for the radio button. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n @Input() valueField?: string | null;\r\n @Input() textField?: string | null;\r\n @Input() checkedTextField?: string | null;\r\n\r\n @Input() css: 'primary' | 'secondary' | 'success' | 'danger ' | 'warning' | 'info' | 'light' | 'dark' = 'primary';\r\n\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string | null | undefined) {\r\n if (value)\r\n this._placeholder = value;\r\n else\r\n this._placeholder = '';\r\n }\r\n private _placeholder = '';\r\n\r\n @Input()\r\n get label(): string {\r\n return this._label;\r\n }\r\n set label(value: string | null | undefined) {\r\n if (value)\r\n this._label = value;\r\n else\r\n this._label = '';\r\n }\r\n private _label = '';\r\n\r\n\r\n\r\n @Input()\r\n get multiple() {\r\n return this._multiple;\r\n }\r\n set multiple(value: BooleanInput) {\r\n this._multiple = Convert.toBooleanProperty(value);\r\n }\r\n private _multiple = true;\r\n\r\n\r\n private _selected: any[] = [];\r\n\r\n @Input()\r\n get data() {\r\n return this._data;\r\n }\r\n set data(value: any[] | null | undefined) {\r\n if (this._data !== value) {\r\n this._data = value;\r\n this.onDataChanged();\r\n }\r\n }\r\n private _data?: any[] | null = [];\r\n normalized: KeyPairOption[] = [];\r\n onDataChanged() {\r\n this._setSelectionByValue(this._value);\r\n if (this.isInitialized) {\r\n this._normalizeData();\r\n }\r\n }\r\n\r\n _text = '';\r\n\r\n\r\n\r\n override onValueChanged() {\r\n if (Array.isArray(this._data)) {\r\n this._setSelectionByValue(this._value);\r\n }\r\n }\r\n\r\n\r\n override init(): void {\r\n this._normalizeData();\r\n }\r\n\r\n\r\n private _normalizeData() {\r\n this.normalized = [];\r\n if (Array.isArray(this._data)) {\r\n if (this.valueField && this.textField) {\r\n for (const item of this._data) {\r\n this.normalized.push({ key: item[this.valueField], value: item[this.textField], checked: this._selected.includes(item), item: item });\r\n }\r\n } else {\r\n for (const item of this._data) {\r\n this.normalized.push({ key: item, value: item, checked: this._selected.includes(item), item });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the selected option based on a value. If no option can be\r\n * found with the designated value, the select trigger is cleared.\r\n */\r\n private _setSelectionByValue(value: any | any[]): void {\r\n this._selected = [];\r\n\r\n if (this.multiple && value) {\r\n if (!Array.isArray(value)) {\r\n throw new Error(\"value is not array\");\r\n }\r\n\r\n if (Array.isArray(this._data)) {\r\n let notUnique: any[] = [];\r\n if (this.valueField) {\r\n for (const currentValue of value) {\r\n const items = ArrayHelper.filterByKey(currentValue, this.valueField, this._data);\r\n notUnique = notUnique.concat(items);\r\n }\r\n } else {\r\n for (const currentValue of value) {\r\n const items = this._data.filter(x => x === currentValue);\r\n notUnique = notUnique.concat(items);\r\n }\r\n }\r\n\r\n this._selected = ArrayHelper.distinct(notUnique);\r\n }\r\n } else {\r\n if (Array.isArray(this._data)) {\r\n if (this.valueField) {\r\n this._selected = ArrayHelper.filterByKey(value, this.valueField, this._data);\r\n } else {\r\n this._selected = this._data.filter(x => x === value);\r\n }\r\n }\r\n }\r\n\r\n for (const norm of this.normalized) {\r\n norm.checked = this._selected.includes(norm.item);\r\n }\r\n this._initText();\r\n }\r\n\r\n\r\n\r\n\r\n toggleChecked(v: any) {\r\n if (v && !this.disabled && !this.readonly) {\r\n if (!v.checked) {\r\n v.checked = true;\r\n\r\n if (this.multiple) {\r\n const tmp = [];\r\n for (const item of this.normalized) {\r\n if (item.checked) {\r\n tmp.push(item.key);\r\n }\r\n }\r\n\r\n this.setNgModel(tmp);\r\n // this.value = tmp;\r\n }\r\n else {\r\n //this.value = v.key;\r\n this.setNgModel(v.key);\r\n }\r\n } else {\r\n v.checked = false;\r\n if (this.multiple) {\r\n if (Array.isArray(this._value)) {\r\n this.setNgModel((this._value as any[]).filter(x => x !== v.key));\r\n }\r\n } else {\r\n this.setNgModel(null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n private _initText() {\r\n const field = this.checkedTextField || this.textField || '';\r\n if (field) {\r\n this._text = this._selected.filter(x => x !== undefined && x !== null).map(x => x[field]).join(', ');\r\n } else {\r\n this._text = this._selected.join(', ');\r\n }\r\n }\r\n}\r\n","<div class=\"dropdown\" id=\"dropdown-{{id}}\">\r\n <button class=\"btn btn-{{css}} dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n {{label}} <ng-container *ngIf=\"!_text\">{{placeholder}}</ng-container> {{_text}}\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <ng-container *ngIf=\"normalized\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" *ngFor=\"let item of normalized\" (click)=\"toggleChecked(item)\">\r\n <span *ngIf=\"item.checked\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.checked\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item.value}}\r\n </a></li>\r\n </ng-container>\r\n </ul>\r\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { RandomHelper, StringHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-select2,[zek-select2]',\r\n templateUrl: './select2.html',\r\n styleUrls: ['./select2.css'],\r\n imports: [CommonModule, FormsModule]\r\n\r\n})\r\nexport class ZekSelect2 implements OnDestroy {\r\n filter?: string | null;\r\n text?: string | null;\r\n\r\n readonly elementId = RandomHelper.randomHex();\r\n\r\n private _data: Array<any> = [];\r\n @Input()\r\n get data(): Array<any> {\r\n return this._data;\r\n }\r\n set data(value: Array<any>) {\r\n if (this._data !== value) {\r\n this._data = value;\r\n this.findAndSetItem();\r\n this.filterData();\r\n }\r\n }\r\n filteredData: Array<any> = [];\r\n\r\n @Input() textField: any;\r\n @Input() valueField: any;\r\n @Input() placeholder: string = ''\r\n\r\n @Output() selectedItemChange = new EventEmitter<any>();\r\n private _selectedItem: any;\r\n get selectedItem(): any {\r\n return this._selectedItem;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n private _value: any;\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n set value(v: any) {\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.findAndSetItem();\r\n }\r\n }\r\n\r\n private findAndSetItem() {\r\n let foundItem = null;\r\n if (this._value === undefined || this._value === null || !this.data) {\r\n\r\n } else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n foundItem = this.data.find(x => x === this._value);\r\n } else {\r\n foundItem = this.data.find(x => x[this.valueField] === this._value);\r\n }\r\n\r\n this._selectedItem = foundItem;\r\n this.setText();\r\n }\r\n\r\n\r\n\r\n\r\n // private _dropdown: any;\r\n // public get dropdown(): any {\r\n // if (!this._dropdown) {\r\n // let el = document.getElementById('btn-' + this.elementId);\r\n // this._dropdown = new bootstrap.Dropdown(el);\r\n // }\r\n // return this._dropdown;\r\n // }\r\n // public set dropdown(v: any) {\r\n // this._dropdown = v;\r\n // }\r\n\r\n ngOnDestroy() {\r\n // this.dropdown?.dispose();\r\n // this.dropdown = null;\r\n }\r\n\r\n\r\n onTextChange(text: string) {\r\n this.filter = StringHelper.tryTrim(text);\r\n this.filterData();\r\n }\r\n\r\n private filterData() {\r\n if (this.filter && this.filter !== '') {\r\n const searchString = this.filter;\r\n if (this.textField === undefined || this.textField === null) {\r\n this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n } else {\r\n this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n }\r\n }\r\n else// if (this.filter === undefined || this.filter === null || this.filter === '') \r\n {\r\n this.filteredData = this.data;\r\n }\r\n }\r\n\r\n onFocus(e: FocusEvent) {\r\n // if (this.dropdown){\r\n // this.dropdown.show();\r\n // }\r\n // let dropdown = document.getElementById(`dropdown-menu-container-${this.elementId}`);\r\n // console.log(dropdown);\r\n\r\n // if (dropdown) {\r\n // console.log(dropdown.classList);\r\n\r\n // if (!dropdown.classList.contains('show')) {\r\n // let el = document.getElementById(`input-${this.elementId}`);\r\n // if (el) {\r\n // el.click();\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n\r\n // let inputId = 'input-' + this.elementId;\r\n // let el = document.getElementById(inputId);\r\n // if (el) {\r\n\r\n // if (!el.classList.contains('show')) {\r\n // this.dropdown?.show();\r\n // }\r\n\r\n // let menuId = '#dropdown-menu-' + this.elementId + ' ' + 'a';\r\n // el.addEventListener('keydown', function (e) {\r\n // if (e.key == 'ArrowDown') {\r\n // (document.querySelectorAll(menuId)[0] as any).focus();\r\n // }\r\n // });\r\n // }\r\n }\r\n inputUnfocused() {\r\n // this.expanded = false;\r\n }\r\n\r\n private setText() {\r\n if (this._selectedItem === undefined || this._selectedItem === null) {\r\n this.text = null;\r\n }\r\n else if (this.textField === undefined || this.textField === null) {\r\n this.text = this._selectedItem;\r\n } else {\r\n this.text = this._selectedItem[this.textField];\r\n }\r\n }\r\n\r\n selectItem(item: any) {\r\n\r\n if (this._selectedItem !== item) {\r\n this._selectedItem = item;\r\n this.selectedItemChange.emit(item);\r\n\r\n this.setText();\r\n\r\n //set value\r\n let v;\r\n if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n // this.value = v\r\n v = item;\r\n } else {\r\n // this.value = v[this.valueField];\r\n v = item[this.valueField];\r\n }\r\n\r\n //if value not equals then emit valueChange\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n [data]=\"data\"\r\n [filterable]=\"true\"\r\n (valueChange)=\"valueChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (open)=\"open()\"\r\n (close)=\"close()\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n</kendo-autocomplete> -->","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { RandomHelper, StringHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n//declare let bootstrap: any;\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-select2-multiple,[zek-select2-multiple]',\r\n templateUrl: './select2-multiple.html',\r\n imports: [CommonModule, FormsModule]\r\n})\r\n\r\nexport class ZekSelect2Multiple {\r\n filter?: string | null;\r\n text?: string | null;\r\n\r\n readonly elementId = RandomHelper.randomHex();\r\n\r\n private _data: Array<any> = [];\r\n @Input()\r\n get data(): Array<any> {\r\n return this._data;\r\n }\r\n set data(value: Array<any>) {\r\n if (this._data !== value) {\r\n this._data = value;\r\n this.findAndSetItems();\r\n this.filterData();\r\n }\r\n }\r\n filteredData: Array<any> = [];\r\n\r\n @Input() textField: any;\r\n @Input() selectedField: any;\r\n @Input() valueField: any;\r\n @Input() placeholder: string = ''\r\n\r\n @Output() selectedItemChange = new EventEmitter<any>();\r\n private _selectedItems: Array<any> = [];\r\n get selectedItems(): Array<any> {\r\n return this._selectedItems;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n private _value?: Array<any> | null;\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n set value(v: any) {\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.findAndSetItems();\r\n }\r\n }\r\n\r\n private findAndSetItems() {\r\n this._data?.forEach(x => x.selected = false);\r\n this._selectedItems = [];\r\n let foundItems: Array<any> = [];\r\n if (this._value === undefined || this._value === null || !this.data) {\r\n\r\n } else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n foundItems = this.data.filter(x => this._value?.includes(x));\r\n } else {\r\n foundItems = this.data.filter(x => this._value?.includes(x[this.valueField]));\r\n }\r\n\r\n if (foundItems.length > 0) {\r\n foundItems.forEach(x => x.selected = true);\r\n this._selectedItems = foundItems;\r\n }\r\n this.setText();\r\n }\r\n\r\n\r\n\r\n onTextChange(text: string) {\r\n this.filter = StringHelper.tryTrim(text);\r\n this.filterData();\r\n }\r\n\r\n private filterData() {\r\n if (this.filter && this.filter !== '') {\r\n const searchString = this.filter;\r\n if (typeof this.textField === 'undefined' || this.textField === null) {\r\n this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n } else {\r\n this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n }\r\n }\r\n else {\r\n this.filteredData = this.data;\r\n }\r\n }\r\n\r\n onFocus(e: FocusEvent) {\r\n this.filter = '';\r\n this.text = '';\r\n this.filterData();\r\n }\r\n inputUnfocused() {\r\n this.setText();\r\n }\r\n\r\n private setText() {\r\n const fieldName = this.selectedField || this.textField;\r\n\r\n if (StringHelper.isNullOrEmpty((fieldName))) {\r\n this.text = this._selectedItems.join(', ');\r\n } else {\r\n this.text = this._selectedItems.map(x => x[fieldName]).join(', ');\r\n }\r\n }\r\n\r\n selectItem(item: any) {\r\n item.selected = !item.selected;\r\n\r\n if (item.selected) {\r\n this._selectedItems.push(item);\r\n } else {\r\n this._selectedItems = this._selectedItems.filter(x => x !== item);\r\n }\r\n\r\n this.selectedItemChange.emit(item);\r\n this.setText();\r\n\r\n let v: Array<any> | null;\r\n if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n v = this._selectedItems ? this._selectedItems : null;\r\n } else {\r\n v = this._selectedItems ? this._selectedItems.map(x => x[this.valueField]) : null;\r\n }\r\n\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n\r\n\r\n}\r\n","<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item[textField]}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>","import { Directive, ElementRef, HostListener, Input, OnInit, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[zek-sort]'\r\n})\r\nexport class ZekSort implements AfterViewInit {\r\n private innerHtml: string = '';\r\n\r\n /**\r\n * name of sorting column\r\n */\r\n @Input() header: string | null = null;\r\n\r\n /**\r\n * Executes after 'sort' input changed\r\n */\r\n @Output() sortChange = new EventEmitter<string | null>();\r\n\r\n /**\r\n * Executes after 'asc' input changed\r\n */\r\n @Output() ascChange = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Executes after click on column\r\n */\r\n @Output() onChange = new EventEmitter();\r\n\r\n\r\n constructor(private el: ElementRef/*, renderer: Renderer, private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef */) {\r\n }\r\n\r\n // @Input() set myIf(shouldAdd: boolean) {\r\n // if (shouldAdd) {\r\n // // If condition is true add template to DOM\r\n // this.viewContainer.createEmbeddedView(this.templateRef);\r\n // } else {\r\n // // Else remove template from DOM\r\n // this.viewContainer.clear();\r\n // }\r\n // }\r\n\r\n\r\n ngAfterViewInit() {\r\n // Use renderer to render the element with styles\r\n //renderer.setElementStyle(el.nativeElement, 'display', 'none');\r\n\r\n this.innerHtml = this.el.nativeElement.innerHTML;\r\n this.initIcon();\r\n }\r\n\r\n initIcon() {\r\n if (!this.innerHtml) return;\r\n\r\n let tmpAsc = 0;\r\n if (!this.header || this.header !== this.sort) {\r\n tmpAsc = 1;\r\n } else if (this.asc) {\r\n tmpAsc = 2;\r\n } else {\r\n tmpAsc = 3;\r\n }\r\n\r\n this.el.nativeElement.innerHTML = (this.innerHtml || '')\r\n + '<span class=\"float-end' + (tmpAsc === 1 ? ' text-muted' : '') + '\">'\r\n + (tmpAsc === 1 ? '<i class=\"fa-solid fa-sort\"></i>' : '')\r\n + (tmpAsc === 2 ? '<i class=\"fa-solid fa-sort-up\"></i>' : '')\r\n + (tmpAsc === 3 ? '<i class=\"fa-solid fa-sort-down\"></i>' : '')\r\n + '</span>';\r\n }\r\n\r\n // @HostListener('click', ['$event.target']) onClick(btn) {\r\n // console.log('button', btn, 'number of clicks:', this.numberOfClicks++);\r\n // }\r\n @HostListener('click') onClick() {\r\n if (this.sort !== this.header) {\r\n this.sort = this.header;\r\n this.sortChange.emit(this.sort);\r\n this.asc = true;\r\n this.ascChange.emit(this.asc);\r\n\r\n } else {\r\n this.asc = !this.asc;\r\n this.ascChange.emit(this.asc);\r\n }\r\n\r\n this.onChange.emit();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n private _sort: string | null = null;\r\n get sort() {\r\n return this._sort;\r\n }\r\n @Input()\r\n set sort(value: string | null) {\r\n if (this._sort !== value) {\r\n this._sort = value;\r\n this.initIcon();\r\n }\r\n }\r\n\r\n\r\n private _asc = false;\r\n get asc() {\r\n return this._asc;\r\n }\r\n @Input()\r\n set asc(value: boolean) {\r\n if (this._asc !== value) {\r\n this._asc = value;\r\n this.initIcon();\r\n }\r\n }\r\n}","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { KeyPair } from '../../../models/key-pair.model';\r\nimport { RandomHelper } from '../../../utils';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-sort-button-group',\r\n templateUrl: './sort-button-group.html',\r\n imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekSortButtonGroup {\r\n elementName: string = '';\r\n\r\n /**\r\n * Executes after 'sort' input changed\r\n */\r\n @Output() sortChange = new EventEmitter<string | null>();\r\n\r\n /**\r\n * Executes after 'asc' input changed\r\n */\r\n @Output() ascChange = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Executes after click on column\r\n */\r\n @Output() onChange = new EventEmitter();\r\n\r\n sortField: any;\r\n private _sort: string | null = null;\r\n get sort(): string | null {\r\n return this._sort;\r\n }\r\n @Input()\r\n set sort(value: string | null) {\r\n if (this._sort !== value) {\r\n this._sort = value;\r\n }\r\n }\r\n\r\n\r\n private _asc = false;\r\n get asc() {\r\n return this._asc;\r\n }\r\n @Input()\r\n set asc(value: boolean) {\r\n if (this._asc !== value) {\r\n this._asc = value;\r\n }\r\n }\r\n\r\n @Input() sortFields: KeyPair[] | null = null;\r\n\r\n /**\r\n * Default constructor\r\n */\r\n constructor() {\r\n this.elementName = 'sort-button-group-' + RandomHelper.randomHex();\r\n }\r\n\r\n sortFieldClick(item: any) {\r\n if (!item || !item.key) return;\r\n\r\n this.sortField = item;\r\n if (this.sort !== item.key) {\r\n this.sort = item.key;\r\n this.sortChange.emit(this.sort);\r\n this.onChange.emit();\r\n }\r\n }\r\n\r\n ascDescClick() {\r\n this.asc = !this.asc;\r\n this.ascChange.emit(this.asc);\r\n this.onChange.emit();\r\n }\r\n}\r\n","<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div><i class=\"\"></i>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BooleanInput, CoreUiComponent, NumberInput } from '../../components';\r\nimport { Convert, MathHelper } from '../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n selector: 'zek-tag',\r\n templateUrl: 'tag.html',\r\n styleUrl: 'tag.scss',\r\n host: {\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class ZekTag extends CoreUiComponent {\r\n @Input() model!: string[] | null;\r\n @Output() readonly modelChange = new EventEmitter<string[]>();\r\n\r\n @Input()\r\n get max(): number {\r\n return this._max;\r\n }\r\n set max(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 0, 1000000000);\r\n if (this._max !== tmp) {\r\n this._max = tmp;\r\n }\r\n }\r\n _max: number = 1000000000;\r\n\r\n\r\n\r\n _maxlength: number | null = null;\r\n @Input()\r\n get maxlength(): number | null {\r\n return this._maxlength;\r\n }\r\n set maxlength(v: NumberInput) {\r\n const tmp = Convert.parseNumber(v);\r\n if (tmp !== null) {\r\n const num = MathHelper.clamp(tmp, 0, 1000000000);\r\n if (this._maxlength !== num) {\r\n this._maxlength = num;\r\n }\r\n }\r\n this._maxlength = tmp;\r\n }\r\n\r\n\r\n\r\n private _duplicate = false;\r\n @Input()\r\n get duplicate(): boolean {\r\n return this._duplicate;\r\n }\r\n set duplicate(v: BooleanInput) {\r\n this._duplicate = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n text: string | null = null;\r\n onKeyEnter(e: Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n\r\n if (this.add(this.text)) {\r\n this.text = null;\r\n }\r\n }\r\n\r\n private _uniqueId: string = `zek-tag-${this.uniqueId}`;\r\n /** The unique ID for the tag. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n add(text: string | null) {\r\n if (!text) return false;\r\n\r\n let emitModel = false;\r\n if (!this.model) {\r\n this.model = [];\r\n emitModel = true;\r\n }\r\n\r\n const maxlength = (this.maxlength || 0);\r\n if (maxlength > 0 && text.length > maxlength) {\r\n return false;\r\n }\r\n\r\n if (!this.duplicate && this.model.includes(text)) {\r\n return false;\r\n }\r\n\r\n if (this.model.length >= this.max) {\r\n return false\r\n }\r\n\r\n this.model.push(text);\r\n if (emitModel) this.modelChange.emit(this.model);\r\n return true;\r\n }\r\n\r\n remove(item: string) {\r\n if (!this.model) return;\r\n\r\n const index = this.model.indexOf(item);\r\n if (index !== -1) {\r\n this.model.splice(index, 1);\r\n }\r\n }\r\n}","<div class=\"d-flex flex-wrap align-items-center gap-1 form-control\">\r\n <ng-container *ngIf=\"model\">\r\n <button *ngFor=\"let item of model\" type=\"button\" (click)=\"remove(item)\" class=\"align-items-center gap-1 d-inline-flex py-0 border-0 btn btn-primary\">{{item}}<span class=\"d-inline-flex\" role=\"button\" tabindex=\"-1\"><i class=\"fa-solid fa-xmark\"></i></span></button>\r\n </ng-container>\r\n <div class=\"input-wrapper\"><span>i</span><input type=\"text\"\r\n [id]=\"inputId\"\r\n [name]=\"inputId\"\r\n [(ngModel)]=\"text\"\r\n [maxlength]=\"maxlength\"\r\n (keydown.enter)=\"onKeyEnter($event)\"></div>\r\n</div>","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n//import { toDate } from '../../extensions';\r\n\r\n@Pipe({\r\n name: 'time'\r\n})\r\nexport class TimePipe implements PipeTransform {\r\n constructor(private readonly _datePipe: DatePipe) {\r\n }\r\n\r\n transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n const dateTime: Date = new Date(value);\r\n let dateTimeString: string;\r\n if (this.isValidDate(dateTime)) {\r\n dateTimeString = dateTime.toString();\r\n } else {\r\n dateTimeString = `1970-01-01 ${value}`;\r\n }\r\n\r\n // Replace any dashes with slashes, as Safari and IE11 don't recognise dates with dashes in them.\r\n dateTimeString = dateTimeString.replace(/-/g, '/');\r\n if (!this.isValidDate(new Date(dateTimeString))) {\r\n return null;\r\n }\r\n\r\n const formattedTime = this._datePipe.transform(dateTimeString, format);\r\n return formattedTime;\r\n }\r\n\r\n\r\n private isValidDate(d: any): boolean {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n}\r\n/*export class TimePipe extends DatePipe implements PipeTransform {\r\n transform(value: Date | string | number, format?: string, timezone?: string, locale?: string): string | null;\r\n transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null;\r\n transform(value: Date | string | number | null | undefined, format?: string, timezone?: string, locale?: string): string | null {\r\n if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n const dateTime: Date = new Date(value);\r\n\r\n //const date = toDate(value);\r\n let dateTimeString: string;\r\n if (this.isValidDate(dateTime)) {\r\n dateTimeString = dateTime.toString();\r\n } else {\r\n dateTimeString = `1970-01-01 ${value}`;\r\n }\r\n\r\n dateTimeString = dateTimeString.replace(/-/g, '/');\r\n\r\n if (!this.isValidDate(new Date(dateTimeString))) {\r\n return null;\r\n }\r\n\r\n const formattedTime = super.transform(dateTimeString, format);\r\n\r\n return formattedTime;\r\n }\r\n\r\n\r\n private isValidDate(d: any): boolean {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n}*/","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\n\r\nimport { TimePipe } from './time.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n TimePipe,\r\n ],\r\n providers: [\r\n DatePipe\r\n ],\r\n exports: [TimePipe]\r\n})\r\nexport class TimeModule { }","import { Injectable, Input } from \"@angular/core\";\r\nimport { Subject, Subscription, timer } from \"rxjs\";\r\nimport { map, takeWhile, tap } from \"rxjs/operators\";\r\nimport { DateHelper } from \"../../utils\";\r\n\r\n@Injectable()\r\nexport class TimerService {\r\n @Input() seconds = 0;\r\n\r\n // running = false;\r\n \r\n private _count = 0;\r\n public get count() {\r\n return this._count;\r\n }\r\n \r\n private _left = 0;\r\n public get left() {\r\n return this._left;\r\n }\r\n\r\n expireDate: Date | null = null;\r\n private subscription: Subscription | null = null;\r\n //@Output() checkTime: EventEmitter<number> = new EventEmitter();\r\n\r\n tick = new Subject<number>();\r\n completed = new Subject<any>();\r\n // tickerInterval: any;\r\n // expired: Observable<number> = new Observable<number>();\r\n // initialCountValue: number = 0;\r\n\r\n\r\n startHour(hours: number, minutes: number, seconds: number) {\r\n this.start((hours ? hours * 60 * 60 : 0) + (minutes ? minutes * 60 : 0) + seconds);\r\n }\r\n startMinute(minutes: number, seconds: number) {\r\n this.start((minutes ? minutes * 60 : 0) + seconds);\r\n }\r\n start(seconds: number) {\r\n this.clear();\r\n\r\n this._left = seconds;\r\n this._count = seconds;\r\n this.expireDate = DateHelper.addSeconds(new Date(), seconds);\r\n\r\n //this.internalTick();//because run first tick value example 60 -> not 59\r\n const source = timer(0, 1000).pipe(\r\n //map(i => this.count - i),\r\n //takeWhile(i => i > 0),\r\n map(_i => this._left--),\r\n takeWhile(_i => this.left >= 0)\r\n //tap(s => this.checkTime.emit(s))\r\n );\r\n\r\n this.subscription = source.subscribe(() => {\r\n this.internalTick();\r\n });\r\n }\r\n clear() {\r\n this.subscription?.unsubscribe();\r\n this.subscription = null;\r\n this.expireDate = null;\r\n }\r\n\r\n\r\n internalTick() {\r\n if (this.tick) {\r\n this.tick.next(this._left);\r\n }\r\n\r\n if (this.left <= 0 && this.completed) {\r\n this.completed.next(null);\r\n }\r\n /*\r\n // get total seconds between the times\r\n let delta = Math.abs(date_future - date_now) / 1000;\r\n\r\n // calculate (and subtract) whole days\r\n let days = Math.floor(delta / 86400);\r\n delta -= days * 86400;\r\n\r\n // calculate (and subtract) whole hours\r\n let hours = Math.floor(delta / 3600) % 24;\r\n delta -= hours * 3600;\r\n\r\n // calculate (and subtract) whole minutes\r\n let minutes = Math.floor(delta / 60) % 60;\r\n delta -= minutes * 60;\r\n\r\n // what's left is seconds\r\n let seconds = delta % 60; // in theory the modulus is not required\r\n */\r\n }\r\n}","import { AfterViewInit, Directive, ElementRef } from \"@angular/core\";\r\nimport { CoreComponent } from \"../../components\";\r\n\r\ndeclare let bootstrap: any;\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[zek-toltip]'\r\n})\r\nexport class ZekTooltip extends CoreComponent implements AfterViewInit {\r\n private _tooltip: any;\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n override destroy() {\r\n this._tooltip?.dispose();\r\n this._tooltip = undefined;\r\n return super.destroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._tooltip = new bootstrap.Tooltip(this.el.nativeElement);\r\n }\r\n\r\n}","import { NgModule, Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n name: 'localToUtc',\r\n pure: true\r\n})\r\nexport class ZekLocalToUtcPipe implements PipeTransform {\r\n constructor(private readonly _datePipe: DatePipe) {\r\n }\r\n\r\n transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n const date = DateHelper.localToUtc(DateHelper.toDate(value))\r\n return this._datePipe.transform(date, format);\r\n }\r\n}\r\n@NgModule({\r\n declarations: [ZekLocalToUtcPipe],\r\n exports: [ZekLocalToUtcPipe],\r\n providers: [DatePipe]\r\n})\r\nexport class ZekLocalToUtcModule { }","import { NgModule, Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n name: 'utcToLocal'\r\n})\r\nexport class ZekUtcToLocalPipe implements PipeTransform {\r\n constructor(private readonly _datePipe: DatePipe) {\r\n }\r\n\r\n transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n const date = DateHelper.utcToLocal(DateHelper.toDate(value))\r\n return this._datePipe.transform(date, format);\r\n }\r\n}\r\n\r\n@NgModule({\r\n declarations: [ZekUtcToLocalPipe],\r\n exports: [ZekUtcToLocalPipe],\r\n providers: [DatePipe]\r\n})\r\nexport class ZekUtcToLocalModule { }","// import { AbstractControl, Validators, ValidatorFn, ValidationErrors } from '@angular/forms'\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\n\r\n// export const range = (range?: Array<number> | null): ValidatorFn => {\r\n// return (control: AbstractControl): { [key: string]: any } | null => {\r\n\r\n// if (!range) return null;\r\n// if (Validators.required(control)) return null;\r\n\r\n// let v: number = +control.value;\r\n// return v >= range[0] && v <= range[1] ? null : { actualValue: v, requiredValue: range, range: true };\r\n// };\r\n// };\r\n// export function blue(): ValidatorFn {\r\n// return (control: AbstractControl): { [key: string]: any } | null =>\r\n// control.value?.toLowerCase() === 'blue'\r\n// ? null : { wrongColor: control.value };\r\n// }\r\n\r\n\r\nfunction isEmptyInputValue(value: any): boolean {\r\n /**\r\n * Check if the object is a string or array before evaluating the length attribute.\r\n * This avoids falsely rejecting objects that contain a custom length attribute.\r\n * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\r\n */\r\n return typeof value === 'undefined' || value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\r\n}\r\n\r\n/**\r\n * Function that has `ValidatorFn` shape, but performs no operation.\r\n */\r\nexport function nullValidator(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n}\r\n\r\n\r\nexport class Validators {\r\n\r\n /**\r\n * @description\r\n * Validator that requires the control's value to be less than or equal to the provided number.\r\n *\r\n * @usageNotes\r\n *\r\n * ### Validate against a range 0 - 15\r\n *\r\n * ```typescript\r\n * const control = new FormControl(16, Validators.max([0,15]));\r\n *\r\n * console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}\r\n * ```\r\n *\r\n * @returns A validator function that returns an error map with the\r\n * `range` property if the validation check fails, otherwise `null`.\r\n *\r\n * @see `updateValueAndValidity()`\r\n *\r\n */\r\n static range(min: number, max: number): ValidatorFn {\r\n return rangeValidator([min, max]);\r\n }\r\n\r\n\r\n /**\r\n* @description\r\n* Validator that requires the control's value to be less than or equal to the provided number.\r\n*\r\n* @usageNotes\r\n*\r\n* ### Validate against a range 0 - 15\r\n*\r\n* ```typescript\r\n* const control = new FormControl(16, Validators.max([0,15]));\r\n*\r\n* console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}\r\n* ```\r\n*\r\n* @returns A validator function that returns an error map with the\r\n* `range` property if the validation check fails, otherwise `null`.\r\n*\r\n* @see `updateValueAndValidity()`\r\n*\r\n*/\r\n static match(value: string): ValidatorFn {\r\n return matchValidator(value);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Validator that requires the control's value to be between provided numbers.\r\n * See `Validators.range` for additional information.\r\n */\r\nexport function rangeValidator(range: Array<number>): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (isEmptyInputValue(control.value) || isEmptyInputValue(range) || range.length < 2) {\r\n return null; // don't validate empty values to allow optional controls\r\n }\r\n const value = parseFloat(control.value);\r\n const max = range[0];\r\n const min = range[1];\r\n if (!isNaN(value) && (value < min || value > max)) {\r\n return { 'range': { 'min': min, 'max': max, 'actual': control.value } };\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n\r\nexport function matchValidator(input: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (isEmptyInputValue(control.value)) {\r\n return null; // don't validate empty values to allow optional controls\r\n }\r\n\r\n const targetCtrl = control.get(input);\r\n let targetValue: any;\r\n if (!targetCtrl) {\r\n const el = document.getElementById(input) as any;\r\n if (el) {\r\n targetValue = el.value;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n targetValue = targetCtrl.value;\r\n }\r\n\r\n if (targetValue !== control.value) {\r\n return { 'mismatch': { 'requiredValue': targetValue, 'actual': control.value } };\r\n }\r\n return null;\r\n };\r\n}","\r\nimport { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn } from \"@angular/forms\";\r\nimport { matchValidator, nullValidator, rangeValidator } from \"./validator\";\r\n\r\nfunction toFloat(value: string | number): number {\r\n return typeof value === 'number' ? value : parseFloat(value);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nabstract class AbstractValidatorDirective implements Validator, OnChanges {\r\n private _validator: ValidatorFn = nullValidator;\r\n private _onChange!: () => void;\r\n\r\n /**\r\n * A flag that tracks whether this validator is enabled.\r\n *\r\n * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of\r\n * directive classes that extend this base class.\r\n * @internal\r\n */\r\n _enabled?: boolean;\r\n\r\n /**\r\n * Name of an input that matches directive selector attribute (e.g. `minlength` for\r\n * `MinLengthDirective`). An input with a given name might contain configuration information (like\r\n * `minlength='10'`) or a flag that indicates whether validator should be enabled (like\r\n * `[required]='false'`).\r\n *\r\n * @internal\r\n */\r\n abstract inputName: string;\r\n\r\n /**\r\n * Creates an instance of a validator (specific to a directive that extends this base class).\r\n *\r\n * @internal\r\n */\r\n abstract createValidator(input: unknown): ValidatorFn;\r\n\r\n /**\r\n * Performs the necessary input normalization based on a specific logic of a Directive.\r\n * For example, the function might be used to convert string-based representation of the\r\n * `minlength` input to an integer value that can later be used in the `Validators.minLength`\r\n * validator.\r\n *\r\n * @internal\r\n */\r\n abstract normalizeInput(input: unknown): unknown;\r\n\r\n /** @nodoc */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.inputName in changes) {\r\n const input = this.normalizeInput(changes[this.inputName].currentValue);\r\n this._enabled = this.enabled(input);\r\n this._validator = this._enabled ? this.createValidator(input) : nullValidator;\r\n if (this._onChange) {\r\n this._onChange();\r\n }\r\n }\r\n }\r\n\r\n /** @nodoc */\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this._validator(control);\r\n }\r\n\r\n /** @nodoc */\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * @description\r\n * Determines whether this validator should be active or not based on an input.\r\n * Base class implementation checks whether an input is defined (if the value is different from\r\n * `null` and `undefined`). Validator classes that extend this base class can override this\r\n * function with the logic specific to a particular validator directive.\r\n */\r\n enabled(input: unknown): boolean {\r\n return input != null /* both `null` and `undefined` */;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport const RANGE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeValidator),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: 'input[type=number][range][formControlName],input[type=number][range][formControl],input[type=number][range][ngModel]',\r\n providers: [RANGE_VALIDATOR],\r\n host: { '[attr.range]': '_enabled ? range : null' }\r\n})\r\nexport class RangeValidator extends AbstractValidatorDirective {\r\n @Input() range!: [number, number] | null;\r\n\r\n /** @internal */\r\n override inputName = 'range';\r\n /** @internal */\r\n override normalizeInput = (input: string | number): number => toFloat(input);\r\n /** @internal */\r\n override createValidator = (range: [number]): ValidatorFn => rangeValidator(range);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @description\r\n * Provider which adds `MatchValidator` to the `NG_VALIDATORS` multi-provider list.\r\n */\r\nexport const MATCH_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MatchValidator),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n selector: '[match][formControlName],match][formControl],[match][ngModel]',\r\n providers: [MATCH_VALIDATOR],\r\n host: { '[attr.match]': '_enabled ? match : null' }\r\n})\r\nexport class MatchValidator extends AbstractValidatorDirective {\r\n @Input() match!: string;\r\n\r\n /** @internal */\r\n override inputName = 'match';\r\n /** @internal */\r\n override normalizeInput = (input: string): string => input;\r\n /** @internal */\r\n override createValidator = (input: string): ValidatorFn => matchValidator(input);\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchValidator, RangeValidator } from './directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n RangeValidator,\r\n MatchValidator,\r\n ],\r\n exports: [\r\n RangeValidator,\r\n MatchValidator\r\n ]\r\n})\r\nexport class ValidatorsModule { }","import { Component, Input } from \"@angular/core\";\r\nimport { ZekSafePipe } from \"../../safe\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-wizard',\r\n templateUrl: './wizard.html',\r\n imports: [CommonModule, ZekSafePipe]\r\n})\r\nexport class ZekWizard {\r\n\r\n progress = 0;\r\n stepsArray: { step: number, progress: number }[] = [\r\n { step: 1, progress: 0 }\r\n ];\r\n\r\n private _steps: number = 1;\r\n @Input()\r\n get steps(): number {\r\n return this._steps;\r\n }\r\n set steps(v: number) {\r\n if (v < 1) v = 1;\r\n\r\n if (this._steps !== v) {\r\n this._steps = v;\r\n this.init();\r\n }\r\n }\r\n\r\n\r\n private _step: number = 1;\r\n @Input()\r\n get step(): number {\r\n return this._step;\r\n }\r\n set step(v: number) {\r\n if (v < 1) v = 1;\r\n else if (v > this.steps) v = this.steps;\r\n\r\n if (this._step !== v) {\r\n this._step = v;\r\n\r\n const found = this.stepsArray.find(x => x.step === this._step);\r\n if (found) {\r\n this.progress = found.progress;\r\n }\r\n }\r\n }\r\n\r\n\r\n private init() {\r\n this.stepsArray = [];\r\n this.stepsArray.push({ step: 1, progress: 0 });\r\n\r\n for (let i = 1; i < this.steps; i++) {\r\n this.stepsArray.push({ step: i + 1, progress: Math.round(100 / (this.steps - 1) * i) });\r\n }\r\n }\r\n\r\n previous() {\r\n this.step--;\r\n }\r\n next() {\r\n this.step++;\r\n }\r\n}","<div class=\"position-relative m-4\">\r\n <div class=\"progress\" style=\"height: 1px;\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [style.width.%]=\"progress\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\r\n </div>\r\n <!-- left: 33%!important -->\r\n <!-- [style.left.%]=\"item.progress\" -->\r\n <button *ngFor=\"let item of stepsArray\" [attr.style]=\"('width:2rem; height:2rem; left:' + item.progress + '%!important') | safe:'style'\" type=\"button\" class=\"position-absolute top-0 translate-middle btn btn-sm btn-primary rounded-pill\">{{ item.step }}</button>\r\n</div>","import { Component } from \"@angular/core\";\r\nimport { ZekWizard } from \"../wizard/wizard\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-wizard2',\r\n templateUrl: './wizard2.html',\r\n imports: [CommonModule]\r\n})\r\nexport class ZekWizard2 extends ZekWizard{\r\n\r\n}","<div class=\"m-2\">\r\n <button *ngFor=\"let item of stepsArray\"\r\n [class.btn-outline-secondary]=\"item.step >= steps\"\r\n [class.btn-primary]=\"item.step < steps\"\r\n type=\"button\"\r\n class=\"btn btn-sm mr me-2\"></button>\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { WebApiClient, WebApiConfig } from './services';\r\nimport { API_BASE_URL } from './tokens';\r\n\r\n@NgModule()\r\nexport class WebApiModule {\r\n public static forRoot(config: WebApiConfig): ModuleWithProviders<WebApiModule> {\r\n return {\r\n ngModule: WebApiModule,\r\n providers: [\r\n WebApiClient,\r\n {\r\n provide: API_BASE_URL,\r\n useValue: config.baseUrl\r\n },\r\n ]\r\n };\r\n }\r\n\r\n public static forChild(config: WebApiConfig) {\r\n return this.forRoot(config);\r\n }\r\n}","/*\r\n * Public API Surface of zek\r\n */\r\n\r\nexport * from \"./lib/components\";\r\nexport * from \"./lib/directives\";\r\nexport * from \"./lib/models\";\r\nexport * from \"./lib/modules\";\r\nexport * from \"./lib/services\";\r\nexport * from \"./lib/utils\";\r\n\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/zek.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlertService","i3","i1.WebApiClient","i2.HttpErrorHandler","i1","i2","i2.ZekModal","loadScript","loader","i1.ZekLoadingService"],"mappings":"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"}
1
+ {"version":3,"file":"zek.mjs","sources":["../../../projects/zek/src/lib/models/print.model.ts","../../../projects/zek/src/lib/utils/array-helper.ts","../../../projects/zek/src/lib/utils/base64-helper.ts","../../../projects/zek/src/lib/utils/bitwise-helper.ts","../../../projects/zek/src/lib/utils/bootstrap.helper.ts","../../../projects/zek/src/lib/utils/convert.ts","../../../projects/zek/src/lib/utils/css-helper.ts","../../../projects/zek/src/lib/utils/overlap-helper.ts","../../../projects/zek/src/lib/utils/time-helper.ts","../../../projects/zek/src/lib/utils/date-helper.ts","../../../projects/zek/src/lib/utils/error-helper.ts","../../../projects/zek/src/lib/utils/excel-helper.ts","../../../projects/zek/src/lib/utils/file.helper.ts","../../../projects/zek/src/lib/utils/object-helper.ts","../../../projects/zek/src/lib/utils/filter-helper.ts","../../../projects/zek/src/lib/utils/handler.ts","../../../projects/zek/src/lib/utils/html-helper.ts","../../../projects/zek/src/lib/utils/jwt-helper.ts","../../../projects/zek/src/lib/utils/math-helper.ts","../../../projects/zek/src/lib/utils/pager-helper.ts","../../../projects/zek/src/lib/utils/random-helper.ts","../../../projects/zek/src/lib/utils/storage-helper.ts","../../../projects/zek/src/lib/utils/string-helper.ts","../../../projects/zek/src/lib/utils/thenBy.ts","../../../projects/zek/src/lib/utils/interval-helper.ts","../../../projects/zek/src/lib/utils/tmp-helper.ts","../../../projects/zek/src/lib/utils/url-helper.ts","../../../projects/zek/src/lib/utils/validation-helper.ts","../../../projects/zek/src/lib/services/auth.service.ts","../../../projects/zek/src/lib/services/auth-guard.service.ts","../../../projects/zek/src/lib/services/base.service.ts","../../../projects/zek/src/lib/services/cache-helper.ts","../../../projects/zek/src/lib/services/crud.service.ts","../../../projects/zek/src/lib/services/alert.service.ts","../../../projects/zek/src/lib/services/http-error-handler.service.ts","../../../projects/zek/src/lib/tokens.ts","../../../projects/zek/src/lib/services/web.api.ts","../../../projects/zek/src/lib/services/file.service.ts","../../../projects/zek/src/lib/components/core.component.ts","../../../projects/zek/src/lib/components/base.component.ts","../../../projects/zek/src/lib/components/core-ui.component.ts","../../../projects/zek/src/lib/components/edit-base.component.ts","../../../projects/zek/src/lib/models/edit-base.model.ts","../../../projects/zek/src/lib/models/filter.model.ts","../../../projects/zek/src/lib/models/gender.model.ts","../../../projects/zek/src/lib/models/key-pair.model.ts","../../../projects/zek/src/lib/models/list-base.model.ts","../../../projects/zek/src/lib/models/month.model.ts","../../../projects/zek/src/lib/models/pager.model.ts","../../../projects/zek/src/lib/models/tree.model.ts","../../../projects/zek/src/lib/models/valid-event-args.model.ts","../../../projects/zek/src/lib/components/list-base.component.ts","../../../projects/zek/src/lib/directives/delayed-input.directive.ts","../../../projects/zek/src/lib/modules/age/age.pipe.ts","../../../projects/zek/src/lib/modules/alert/alert/alert.ts","../../../projects/zek/src/lib/modules/alert/alert/alert.html","../../../projects/zek/src/lib/modules/alert/toast/toast.ts","../../../projects/zek/src/lib/modules/alert/toast/toast.html","../../../projects/zek/src/lib/modules/alert/validation/validation.ts","../../../projects/zek/src/lib/modules/alert/validation/validation.html","../../../projects/zek/src/lib/modules/autocomplete/autocomplete.directive.ts","../../../projects/zek/src/lib/modules/bb/bb.component.ts","../../../projects/zek/src/lib/modules/bb/bb.component.html","../../../projects/zek/src/lib/modules/bb/bb-modal-toolbar.ts","../../../projects/zek/src/lib/modules/bb/bb-modal-toolbar.html","../../../projects/zek/src/lib/modules/bb/bb.module.ts","../../../projects/zek/src/lib/modules/bb/bb-modal-base.ts","../../../projects/zek/src/lib/modules/callback/callback.pipe.ts","../../../projects/zek/src/lib/modules/card/card/card.ts","../../../projects/zek/src/lib/modules/card/card/card.html","../../../projects/zek/src/lib/modules/countdown/countdown.ts","../../../projects/zek/src/lib/modules/countdown/countdown.html","../../../projects/zek/src/lib/modules/date-ago/date-ago.pipe.ts","../../../projects/zek/src/lib/modules/datepicker/date-value-accessor.ts","../../../projects/zek/src/lib/modules/datepicker/datepicker.module.ts","../../../projects/zek/src/lib/modules/edit-toolbar/edit-toolbar.ts","../../../projects/zek/src/lib/modules/edit-toolbar/edit-toolbar.html","../../../projects/zek/src/lib/modules/file/file-size.pipe.ts","../../../projects/zek/src/lib/modules/file-input/file-input.ts","../../../projects/zek/src/lib/modules/file-input/file-input.html","../../../projects/zek/src/lib/modules/modal/modal/modal.component.ts","../../../projects/zek/src/lib/modules/modal/modal/modal.component.html","../../../projects/zek/src/lib/modules/modal/filter-modal/filter-modal.component.ts","../../../projects/zek/src/lib/modules/modal/filter-modal/filter-modal.component.html","../../../projects/zek/src/lib/modules/modal/sum-modal/sum-modal.component.ts","../../../projects/zek/src/lib/modules/modal/sum-modal/sum-modal.component.html","../../../projects/zek/src/lib/modules/modal/modal.module.ts","../../../projects/zek/src/lib/modules/safe/safe.pipe.ts","../../../projects/zek/src/lib/modules/file-viewer/file-viewer.ts","../../../projects/zek/src/lib/modules/file-viewer/file-viewer.html","../../../projects/zek/src/lib/modules/google-login-button/loader.ts","../../../projects/zek/src/lib/modules/google-login-button/google-login-button.ts","../../../projects/zek/src/lib/modules/google-login-button/module.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.html","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.ts","../../../projects/zek/src/lib/modules/grid-toolbar/grid-toolbar-bar/grid-toolbar-bar.html","../../../projects/zek/src/lib/modules/list-toolbar/list-toolbar.ts","../../../projects/zek/src/lib/modules/list-toolbar/list-toolbar.html","../../../projects/zek/src/lib/modules/loading/loading-interceptor.ts","../../../projects/zek/src/lib/modules/loading/loading.ts","../../../projects/zek/src/lib/modules/loading/loading.module.ts","../../../projects/zek/src/lib/modules/loading/index.ts","../../../projects/zek/src/lib/modules/numeric/numeric.directive.ts","../../../projects/zek/src/lib/modules/page-title/page-title.component.ts","../../../projects/zek/src/lib/modules/page-title/page-title.component.html","../../../projects/zek/src/lib/modules/pager/pager/pager.ts","../../../projects/zek/src/lib/modules/pager/pager/pager.html","../../../projects/zek/src/lib/modules/validator/field-validator.ts","../../../projects/zek/src/lib/modules/validator/field-validator.html","../../../projects/zek/src/lib/modules/password/password.ts","../../../projects/zek/src/lib/modules/password/password.html","../../../projects/zek/src/lib/modules/progress/progress.ts","../../../projects/zek/src/lib/modules/progress/progress.html","../../../projects/zek/src/lib/modules/radio/radio.ts","../../../projects/zek/src/lib/modules/radio/radio.html","../../../projects/zek/src/lib/modules/readonly/readonly.directive.ts","../../../projects/zek/src/lib/modules/recaptcha/loader.ts","../../../projects/zek/src/lib/modules/recaptcha/recaptcha.service.ts","../../../projects/zek/src/lib/modules/recaptcha/recaptcha.module.ts","../../../projects/zek/src/lib/modules/select/select.ts","../../../projects/zek/src/lib/modules/select/select.html","../../../projects/zek/src/lib/modules/select2/select2.ts","../../../projects/zek/src/lib/modules/select2/select2.html","../../../projects/zek/src/lib/modules/select2-multiple/select2-multiple.ts","../../../projects/zek/src/lib/modules/select2-multiple/select2-multiple.html","../../../projects/zek/src/lib/modules/sort/sort.ts","../../../projects/zek/src/lib/modules/sort/sort-button-group/sort-button-group.ts","../../../projects/zek/src/lib/modules/sort/sort-button-group/sort-button-group.html","../../../projects/zek/src/lib/modules/tag/tag.ts","../../../projects/zek/src/lib/modules/tag/tag.html","../../../projects/zek/src/lib/modules/time/time.pipe.ts","../../../projects/zek/src/lib/modules/time/time.module.ts","../../../projects/zek/src/lib/modules/time/timer-service.ts","../../../projects/zek/src/lib/modules/tooltip/tooltip.ts","../../../projects/zek/src/lib/modules/utc-to-local/local-to-utc.pipe.ts","../../../projects/zek/src/lib/modules/utc-to-local/utc-to-local.pipe.ts","../../../projects/zek/src/lib/modules/validators/validator.ts","../../../projects/zek/src/lib/modules/validators/directive.ts","../../../projects/zek/src/lib/modules/validators/module.ts","../../../projects/zek/src/lib/modules/wizard/wizard/wizard.ts","../../../projects/zek/src/lib/modules/wizard/wizard/wizard.html","../../../projects/zek/src/lib/modules/wizard/wizard2/wizard2.ts","../../../projects/zek/src/lib/modules/wizard/wizard2/wizard2.html","../../../projects/zek/src/lib/zek.module.ts","../../../projects/zek/src/public-api.ts","../../../projects/zek/src/zek.ts"],"sourcesContent":["export enum PrintType {\r\n Show = 1,\r\n Pdf = 2\r\n}","// import { KeyPair } from \"../models/key-pair.model\";\r\n// import { Tree } from \"../models/tree.model\";\r\n\r\nimport { KeyPair, KeyPairEx, Tree } from \"../models\";\r\nimport { IFlattenTree, IFlattenTreeNode, INode, ITreeNode } from \"../models/tree\";\r\n\r\n\r\n\r\nexport class ArrayHelper {\r\n static insert(array: any[], index: number, item: any) {\r\n array.splice(index, 0, item);\r\n }\r\n\r\n\r\n /**\r\n * Remove item from array\r\n * @param array \r\n * @param item item to remove\r\n */\r\n static remove(array: any[], item: any) {\r\n const index = array.indexOf(item);\r\n if (index > -1) { // only splice array when item is found\r\n array.splice(index, 1); // 2nd parameter means remove one item only\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Remove all items from array\r\n * @param array \r\n * @param item item to remove\r\n */\r\n static removeAll(array: any[], item: any) {\r\n var i = 0;\r\n while (i < array.length) {\r\n if (array[i] === item) {\r\n array.splice(i, 1);\r\n } else {\r\n ++i;\r\n }\r\n }\r\n }\r\n\r\n\r\n static move(array: any[], fromIndex: number, toIndex: number) {\r\n\r\n const item = array[fromIndex];\r\n array.splice(fromIndex, 1);//remove item frrom array\r\n array.splice(toIndex, 0, item);//insert item into array\r\n return array;\r\n }\r\n\r\n static contains(value: any[], v: any) {\r\n for (let i = 0; i < value.length; i++) {\r\n if (value[i] === v) return true;\r\n }\r\n return false;\r\n }\r\n\r\n\r\n static isArray(value: any) {\r\n return Array.isArray(value) && value.length > 0;\r\n }\r\n // static distinct(value: any[]) {\r\n // var arr: any[] = [];\r\n // for (var i = 0; i < value.length; i++) {\r\n // let val = value[i];\r\n // if (!this.contains(arr, val)) {\r\n // arr.push(val);\r\n // }\r\n // }\r\n // return arr;\r\n // }\r\n\r\n static distinct(array: any[]) {\r\n const length = array.length;\r\n const result = []\r\n const seen = new Set();\r\n\r\n for (let index = 0; index < length; index++) {\r\n const value = array[index];\r\n if (seen.has(value)) continue;\r\n\r\n seen.add(value);\r\n result.push(value);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static filterByKey(filterValue: any, key: string, array: any[]) {\r\n if (typeof filterValue === 'undefined' || filterValue == null || (typeof key === 'string' && key.length === 0))\r\n return array;\r\n\r\n return array.filter(x => x !== undefined && x !== null && x[key] === filterValue);\r\n }\r\n\r\n\r\n\r\n static flatten(array: any, indent: number = 0) {\r\n let result: any[] = [];\r\n if (!Array.isArray(array)) {\r\n const flattenedItem = {\r\n ...array, // shallow copy the current item\r\n indent, // add the current indent level\r\n count: Array.isArray(array.children) ? array.children.length : 0 // set count based on children\r\n };\r\n\r\n delete flattenedItem.children;\r\n delete flattenedItem.childrenIds;\r\n result.push(flattenedItem);\r\n\r\n if (flattenedItem.count) {\r\n result.push(...this.flatten(array.children, indent + 1)); // Use spread operator for efficiency\r\n }\r\n\r\n return result;\r\n } else {\r\n\r\n for (const item of array) {\r\n result.push(...this.flatten(item, indent));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * @deprecated use flattenDropDownList2\r\n */\r\n static flattenDropDownList(tree: Tree | Tree[], indent: number = 0) {\r\n let result: IFlattenTree[] = [];\r\n // If the input is an array of trees, we process each one\r\n if (!Array.isArray(tree)) {\r\n // Add the current tree node to the result\r\n let item: IFlattenTree = {\r\n key: tree.key,\r\n value: '&emsp;'.repeat(indent) + tree.value,\r\n indent: indent,\r\n count: Array.isArray(tree.children) ? tree.children.length : 0\r\n } as IFlattenTree;\r\n result.push(item);\r\n // If there are children, recursively flatten them\r\n if (Array.isArray(tree.children)) {\r\n result.push(...this.flattenDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency\r\n }\r\n } else {\r\n for (const item of tree) {\r\n result.push(...this.flattenDropDownList(item, indent));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n static flattenTreeNodeDropDownList(tree: ITreeNode | ITreeNode[], indent: number = 0) {\r\n let result: IFlattenTreeNode[] = [];\r\n // If the input is an array of trees, we process each one\r\n if (!Array.isArray(tree)) {\r\n // Add the current tree node to the result\r\n let item: IFlattenTreeNode = {\r\n id: tree.id,\r\n name: '&emsp;'.repeat(indent) + tree.name,\r\n indent: indent,\r\n count: Array.isArray(tree.children) ? tree.children.length : 0\r\n } as IFlattenTree;\r\n result.push(item);\r\n // If there are children, recursively flatten them\r\n if (Array.isArray(tree.children)) {\r\n result.push(...this.flattenTreeNodeDropDownList(tree.children, indent + 1)); // Use spread operator for efficiency\r\n }\r\n } else {\r\n for (const item of tree) {\r\n result.push(...this.flattenTreeNodeDropDownList(item, indent));\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n\r\n private static enumToKeyPairBaseArray<T extends KeyPair<number, string>>(value: any): T[] {\r\n const keys = Object.keys(value);\r\n const slice = keys.length / 2;\r\n const result: T[] = [];\r\n // for (let i = 0; i < slice; i++) {\r\n // result.push({ key: +keys[i], value: keys[i + slice] } as T);\r\n // }\r\n for (let i = slice; i < keys.length; i++) {\r\n const name = keys[i];\r\n result.push({ key: + value[name], value: name } as T);\r\n }\r\n return result;\r\n //return Array.from(keys.slice(keys.length / 2), x => { key:x, value:'aaa' } as Object);\r\n }\r\n static enumToKeyPairArray(value: any): KeyPair<number, string>[] {\r\n return this.enumToKeyPairBaseArray<KeyPair<number, string>>(value);\r\n }\r\n static enumToKeyPairExArray(value: any): KeyPairEx<number, string>[] {\r\n return this.enumToKeyPairBaseArray<KeyPairEx<number, string>>(value);\r\n }\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Method to create a tree from a flat array of nodes\r\n * @param array \r\n * @param safe if tue and some nodes not have parent thand adds as a root node. if false than thoose nodes skipped.\r\n * @returns \r\n */\r\n static createTree(array: INode[], safe = true): ITreeNode[] {\r\n const tree: ITreeNode[] = [];\r\n\r\n // Map to store nodes by their id for easy access\r\n const map: { [key: number]: ITreeNode } = {};\r\n\r\n // Step 1: Loop over the array to build the nodes\r\n for (const item of array) {\r\n const node: ITreeNode = {\r\n id: item.id,\r\n parentId: item.parentId ?? null,\r\n name: item.name ?? null,\r\n children: null\r\n };\r\n map[node.id] = node;\r\n }\r\n\r\n for (const item of array) {\r\n const node = map[item.id];\r\n\r\n // Step 2: Check if it's a root or child and assign to parent or tree\r\n if (typeof node.parentId === 'undefined' || node.parentId === null) {\r\n // Root node, add directly to the tree\r\n tree.push(node);\r\n } else {\r\n // Non-root node, find its parent and add to its children\r\n let parentNode = map[node.parentId];\r\n if (parentNode) {\r\n if (!Array.isArray(parentNode.children))\r\n parentNode.children = [];\r\n parentNode.children.push(node);\r\n } else if (safe) {\r\n //if save=true and parent node not exists, then we add as a root node\r\n tree.push(node);\r\n }\r\n }\r\n }\r\n\r\n return tree;\r\n }\r\n\r\n}","export class Base64Helper {\r\n static utf8ToBase64String(str: string) {\r\n return btoa(unescape(encodeURIComponent(str)));\r\n }\r\n\r\n static base64StringToUtf8(str: string) {\r\n return decodeURIComponent(escape(atob(str)));\r\n }\r\n\r\n static base64StringToBlob(str: string, type?: string) {\r\n const byteString = atob(str);\r\n const int8Array = new Uint8Array(byteString.length);\r\n for (let i = 0; i < byteString.length; i++) {\r\n int8Array[i] = byteString.charCodeAt(i);\r\n }\r\n const blob = new Blob([int8Array], { type: type });\r\n return blob;\r\n }\r\n}\r\n","export class BitwiseHelper {\r\n static hasFlag(flags: number, flagToCheck: any): boolean {\r\n return (flags & flagToCheck) === flagToCheck;\r\n }\r\n\r\n static addFlags(flags: number, ...flagsToAdd: any[]): number {\r\n if (!flagsToAdd) return flags;\r\n\r\n flagsToAdd.forEach(flag => {\r\n flags |= flag;\r\n });\r\n\r\n return flags;\r\n }\r\n}","import { AlertType } from '../models/alert-type';\r\n\r\nexport enum ComponentType {\r\n Primary = 1,\r\n // Secondary,\r\n Success,\r\n Delete,\r\n //Danger,\r\n Warning,\r\n Info,\r\n // Light,\r\n // Dark,\r\n}\r\n\r\nexport enum Color {\r\n Primary = 1,\r\n Secondary = 2,\r\n Success = 3,\r\n Danger = 4,\r\n Warning = 5,\r\n Info = 6,\r\n Dark = 8,\r\n}\r\n\r\nexport class BootstrapHelper {\r\n static cssColor(color?: Color | null) {\r\n switch (color) {\r\n case Color.Primary:\r\n return 'bg-primary text-white'\r\n case Color.Secondary:\r\n return 'bg-secondary text-white';\r\n case Color.Success:\r\n return 'bg-success text-white';\r\n case Color.Danger:\r\n return 'bg-danger text-white';\r\n case Color.Warning:\r\n return 'bg-warning text-dark';\r\n case Color.Info:\r\n return 'bg-info text-dark';\r\n case Color.Dark:\r\n return 'bg-dark text-white';\r\n default:\r\n return '';\r\n }\r\n }\r\n static cssIcon(type: ComponentType): string | null {\r\n if (!type) {\r\n return null;\r\n }\r\n\r\n switch (type) {\r\n case ComponentType.Delete:\r\n return 'fa-solid fa-trash';\r\n\r\n // case ComponentType.Danger:\r\n case ComponentType.Warning:\r\n return 'fa-solid fa-triangle-exclamation';\r\n\r\n case ComponentType.Info:\r\n return 'fa-solid fa-circle-info';\r\n\r\n default:\r\n return 'fa-solid fa-check';\r\n }\r\n }\r\n\r\n static cssButton(type: ComponentType): string {\r\n switch (type) {\r\n case ComponentType.Primary:\r\n // case ComponentType.Secondary:\r\n case ComponentType.Success:\r\n // case ComponentType.Danger:\r\n case ComponentType.Warning:\r\n case ComponentType.Info:\r\n // case ComponentType.Light:\r\n // case ComponentType.Dark:\r\n return `btn-${ComponentType[type].toLowerCase()}`;\r\n\r\n case ComponentType.Delete:\r\n return 'btn-danger';\r\n default:\r\n return 'btn-secondary';\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n // static getAlertType(type?: string | null): AlertType | null {\r\n // if (!type) return null;\r\n\r\n // let v = StringHelper.firstUpper(type);\r\n // if (!v)\r\n // return null;\r\n\r\n // var enumValue = (<any>AlertType)[v];\r\n // if (!enumValue)\r\n // return null;\r\n\r\n\r\n // return enumValue;\r\n // }\r\n static cssAlert(type?: AlertType | null): string {\r\n switch (type) {\r\n case 'primary':\r\n return 'alert-primary';\r\n case 'secondary':\r\n return 'alert-secondary';\r\n case 'success':\r\n return 'alert-success';\r\n case 'danger':\r\n return 'alert-danger';\r\n case 'warning':\r\n return 'alert-warning';\r\n case 'info':\r\n return 'alert-info';\r\n case 'light':\r\n return 'alert-light';\r\n case 'dark':\r\n return 'alert-dark';\r\n default:\r\n return 'alert-secondary';\r\n }\r\n }\r\n static cssAlertIcon(type?: AlertType | null): string {\r\n switch (type) {\r\n case 'success':\r\n return 'fa-solid fa-circle-check';\r\n case 'danger':\r\n return 'fa-solid fa-circle-xmark';\r\n case 'warning':\r\n return 'fa-solid fa-circle-exclamation';\r\n case 'info':\r\n return 'fa-solid fa-circle-info';\r\n default:\r\n return '';\r\n }\r\n }\r\n}","export class Convert {\r\n static toBoolean(value: any) {\r\n if (typeof value !== 'undefined' && value !== null && value !== '') {\r\n switch (`${value}`.toUpperCase()) {\r\n case \"TRUE\":\r\n case \"YES\":\r\n case \"1\":\r\n case \"ON\":\r\n return true;\r\n\r\n default:\r\n return false;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n static toBooleanProperty(value: any): boolean {\r\n return value != null && `${value}` !== 'false';\r\n }\r\n\r\n static parseNumber(value: any) {\r\n if (typeof value === 'undefined' || value == null || (typeof value === 'string' && value.length === 0)) return null;\r\n const n = Number(value);\r\n return !isNaN(n) ? n : null;\r\n }\r\n static toNumber(value: any, defaultValue = 0) {\r\n return this.isNumber(value) ? Number(value) : defaultValue;\r\n }\r\n\r\n static isNumber(value: any): boolean {\r\n // parseFloat(value) handles most of the cases we're interested in (it treats null, empty string,\r\n // and other non-number values as NaN, where Number just uses 0) but it considers the string\r\n // '123hello' to be a valid number. Therefore we also check if Number(value) is NaN.\r\n return !isNaN(parseFloat(value as any)) && !isNaN(Number(value));\r\n }\r\n\r\n // static toNumber(value: any){\r\n // if (typeof value !== 'undefined' && value !== null && value !== '') {\r\n // return +value;\r\n // }\r\n\r\n // return 0;\r\n // }\r\n}","import { ArrayHelper } from './array-helper';\r\n\r\nexport class CssHelper {\r\n static addClass<T extends string | string[] | null | undefined>(clazz: T, addClasses?: string | string[] | null): T {\r\n if (!clazz || clazz === '' || clazz.length == 0) {\r\n return addClasses as T;\r\n }\r\n\r\n if (!addClasses || addClasses === '') {\r\n return clazz;\r\n }\r\n\r\n\r\n const arr = ArrayHelper.distinct(this.parseClassNames(clazz).concat(this.parseClassNames(addClasses)));\r\n\r\n return Array.isArray(clazz) ? arr as T : arr.join(' ') as T;\r\n }\r\n\r\n\r\n static removeClass<T extends string | string[] | null | undefined>(clazz: T, removeClasses?: string | string[] | null): T {\r\n if (!clazz || clazz === '') {\r\n return clazz;\r\n }\r\n\r\n if (!removeClasses || removeClasses === '' || removeClasses.length === 0) {\r\n return clazz;\r\n }\r\n\r\n const arrClasses = this.parseClassNames(clazz);\r\n const arrRemove = this.parseClassNames(removeClasses);\r\n\r\n const arr: any[] = [];\r\n for (var i = 0; i < arrClasses.length; i++) {\r\n const val = arrClasses[i];\r\n if (!ArrayHelper.contains(arrRemove, val)) {\r\n arr.push(val);\r\n }\r\n }\r\n return Array.isArray(clazz) ? arr as T : arr.join(' ') as T;\r\n }\r\n\r\n\r\n static parseClassNames(raw?: string | string[] | null) {\r\n if (Array.isArray(raw)) {\r\n return raw\r\n }\r\n\r\n if (typeof raw === 'string') {\r\n return raw.split(/\\s+/)\r\n }\r\n\r\n return []\r\n }\r\n}","export enum PeriodRelation {\r\n After,\r\n StartTouching,\r\n StartInside,\r\n InsideStartTouching,\r\n EnclosingStartTouching,\r\n Enclosing,\r\n EnclosingEndTouching,\r\n ExactMatch,\r\n Inside,\r\n InsideEndTouching,\r\n EndInside,\r\n EndTouching,\r\n Before,\r\n}\r\n\r\nexport class OverlapHelper {\r\n\r\n\r\n static getRelation(start1: Date, end1: Date, start2: Date, end2: Date): PeriodRelation {\r\n if (end2 < start1) {\r\n return PeriodRelation.After;\r\n }\r\n if (start2 > end1) {\r\n return PeriodRelation.Before;\r\n }\r\n if (start2 == start1 && end2 == end1) {\r\n return PeriodRelation.ExactMatch;\r\n }\r\n if (end2 == start1) {\r\n return PeriodRelation.StartTouching;\r\n }\r\n if (start2 == end1) {\r\n return PeriodRelation.EndTouching;\r\n }\r\n if (this.hasInside2(start1, end1, start2, end2)) {\r\n if (start2 == start1) {\r\n return PeriodRelation.EnclosingStartTouching;\r\n }\r\n return end2 == end1 ? PeriodRelation.EnclosingEndTouching : PeriodRelation.Enclosing;\r\n }\r\n const periodContainsMyStart = this.hasInside(start2, end2, start1);\r\n const periodContainsMyEnd = this.hasInside(start2, end2, end1);\r\n if (periodContainsMyStart && periodContainsMyEnd) {\r\n if (start2 == start1) {\r\n return PeriodRelation.InsideStartTouching;\r\n }\r\n return end2 == end1 ? PeriodRelation.InsideEndTouching : PeriodRelation.Inside;\r\n }\r\n if (periodContainsMyStart) {\r\n return PeriodRelation.StartInside;\r\n }\r\n if (periodContainsMyEnd) {\r\n return PeriodRelation.EndInside;\r\n }\r\n\r\n throw new Error(\"invalid period relation of '\" + start1 + \"-\" + end1 + \"' and '\" + start2 + \"-\" + end2 + \"'\");\r\n }\r\n\r\n static hasInside(start: Date, end: Date, date: Date): boolean {\r\n return date >= start && date <= end;\r\n }\r\n\r\n static hasInside2(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n return this.hasInside(start1, end1, start2) && this.hasInside(start1, end1, end2);\r\n }\r\n\r\n static intersects(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n return this.hasInside(start1, end1, start2) || this.hasInside(start1, end1, end2) || (start2 < start1 && end2 > end1);\r\n }\r\n\r\n static overlaps(start1: Date, end1: Date, start2: Date, end2: Date): boolean {\r\n const relation = this.getRelation(start1, end1, start2, end2);\r\n return relation != PeriodRelation.After &&\r\n relation != PeriodRelation.StartTouching &&\r\n relation != PeriodRelation.EndTouching &&\r\n relation != PeriodRelation.Before;\r\n }\r\n\r\n\r\n}","import { OverlapHelper } from \"./overlap-helper\";\r\n\r\nexport class TimeHelper {\r\n static parseTime(value: any): string | null {\r\n if (typeof value === 'undefined' || value == null || value === '') return null;\r\n return this.toTime(value);\r\n }\r\n static toTime(value: string): string {\r\n if (typeof value === 'string') {\r\n value = value.trim();\r\n\r\n if (/^(\\d{1,2}:\\d{1,2})$/.test(value)) {\r\n const [h, m] = value.split(':').map((val: string) => +val);\r\n return `${h < 10 ? '0' : ''}${h}:${m < 10 ? '0' : ''}${m}:00`;\r\n } else if (/^(\\d{1,2}:\\d{1,2}:\\d{1,2})$/.test(value)) {\r\n const [h, m, s] = value.split(':').map((val: string) => +val);\r\n return `${h < 10 ? '0' : ''}${h}:${m < 10 ? '0' : ''}${m}:${s < 10 ? '0' : ''}${s}`;\r\n }\r\n }\r\n return '';\r\n }\r\n\r\n \r\n\r\n\r\n static toDate(time: string | undefined | null): Date {\r\n const date = new Date(0);\r\n\r\n const tmp = this.parseTime(time);\r\n if (!tmp) return date;\r\n\r\n const timeDate = new Date('1970-01-01T' + time + 'Z');\r\n date.setTime(date.getTime() + timeDate.getTime());\r\n return date;\r\n }\r\n\r\n\r\n static intersects(start1: string, end1: string, start2: string, end2: string): boolean {\r\n const startDate1 = this.toDate(start1);\r\n const endDate1 = this.toDate(end1);\r\n const startDate2 = this.toDate(start2);\r\n const endDate2 = this.toDate(end2);\r\n\r\n return OverlapHelper.intersects(startDate1, endDate1, startDate2, endDate2);\r\n }\r\n\r\n static overlaps(start1: string, end1: string, start2: string, end2: string): boolean {\r\n const startDate1 = this.toDate(start1);\r\n const endDate1 = this.toDate(end1);\r\n const startDate2 = this.toDate(start2);\r\n const endDate2 = this.toDate(end2);\r\n\r\n return OverlapHelper.overlaps(startDate1, endDate1, startDate2, endDate2);\r\n }\r\n}","import { TimeHelper } from \"./time-helper\";\r\n\r\nexport class DateHelper {\r\n\r\n static equals(value1?: Date | null, value2?: Date | null) {\r\n const val1 = (value1 === undefined || value1 === null) ? null : value1;\r\n const val2 = (value2 === undefined || value2 === null) ? null : value2;\r\n\r\n\r\n if (val1 === val2) {\r\n return true;\r\n }\r\n\r\n if (!val1 || !val2) {\r\n return false;\r\n }\r\n\r\n return val1.getTime() === val2.getTime();\r\n }\r\n\r\n static getDates(start: Date, end: Date) {\r\n const dates = new Array<Date>();\r\n let date = new Date(start.valueOf());\r\n while (date <= end) {\r\n dates.push(new Date(date));\r\n date = this.addDays(date, 1);\r\n }\r\n return dates;\r\n }\r\n\r\n static dateOnly(value: Date) {\r\n const year = value.getFullYear();\r\n const month = value.getMonth();\r\n const day = value.getDate();\r\n const date = new Date(Date.UTC(year, month, day));\r\n\r\n return date;\r\n }\r\n static today() {\r\n return this.dateOnly(new Date());\r\n }\r\n\r\n static toISODateString(value: Date | string) {\r\n const date = this.parseDate(value);\r\n\r\n if (!date)\r\n return null;\r\n\r\n const year = date.getFullYear();\r\n // Add +1 to month since 0 is January\r\n const month = date.getMonth() + 1;\r\n const day = date.getDate();\r\n\r\n const str = `${year}-${month < 10 ? '0' : ''}${month}-${day < 10 ? '0' : ''}${day}`;\r\n return str;\r\n }\r\n\r\n static toISOTimeString(value: Date | string) {\r\n const date = DateHelper.parseDate(value);\r\n\r\n if (!date)\r\n return null;\r\n\r\n const hour = date.getHours();\r\n const minute = date.getMinutes();\r\n const second = date.getSeconds();\r\n\r\n const str = `${hour < 10 ? '0' : ''}${hour}:${minute < 10 ? '0' : ''}${minute}:${second < 10 ? '0' : ''}${second}`;\r\n return str;\r\n }\r\n \r\n static toTimeInput(value: Date | string) {\r\n const date = DateHelper.parseDate(value);\r\n\r\n if (!date)\r\n return null;\r\n\r\n const hour = date.getHours();\r\n const minute = date.getMinutes();\r\n\r\n const str = `${hour < 10 ? '0' : ''}${hour}:${minute < 10 ? '0' : ''}${minute}`;\r\n return str;\r\n }\r\n\r\n //** Offes seconds ( offsetmin * 60sec * 1000ms) */\r\n private static readonly _utcDiff = -new Date().getTimezoneOffset() * 60000;\r\n static utcToLocal(utc: Date) {\r\n return new Date(utc.getTime() + this._utcDiff);\r\n }\r\n static localToUtc(utc: Date) {\r\n return new Date(utc.getTime() - this._utcDiff);\r\n }\r\n\r\n static addTime(value: Date, time: string | undefined | null) {\r\n const tmp = TimeHelper.parseTime(time);\r\n if (!tmp) return value;\r\n\r\n const timeDate = new Date('1970-01-01T' + time + 'Z');\r\n const date = value;\r\n date.setTime(date.getTime() + timeDate.getTime());\r\n return date;\r\n }\r\n static addYears(v: Date, years: number): Date {\r\n if (!years) return v;\r\n\r\n const date = v;\r\n date.setFullYear(v.getFullYear() + years);\r\n return date;\r\n }\r\n static addMonths(v: Date, months: number) {\r\n if (!months) return v;\r\n\r\n const date = v;\r\n date.setMonth(date.getMonth() + months);\r\n return date;\r\n }\r\n static addDays(v: Date, days: number) {\r\n if (!days) return v;\r\n\r\n const date = v;\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n }\r\n static addHours(v: Date, hours: number) {\r\n if (!hours) return v;\r\n\r\n const date = new Date(v);\r\n //todo need to check if this line needs --> date = new Date(date.getTime());\r\n date.setHours(date.getHours() + hours);\r\n return date;\r\n }\r\n static addMinutes(v: Date, minutes: number) {\r\n if (!minutes) return v;\r\n\r\n const date = new Date(v);\r\n //todo need to check if this line needs --> date = new Date(date.getTime());\r\n date.setMinutes(date.getMinutes() + minutes);\r\n return date;\r\n }\r\n static addSeconds(v: Date, seconds: number) {\r\n if (!seconds) return v;\r\n\r\n const date = v;\r\n date.setSeconds(date.getSeconds() + seconds);\r\n\r\n return date;\r\n }\r\n static isToday(date: Date) {\r\n const today = new Date();\r\n return this.isSameDate(date, today);\r\n }\r\n static clone(date: Date) {\r\n return new Date(+date);\r\n }\r\n static isAnotherMonth(a: Date, b: Date) {\r\n return b && a.getMonth() !== b.getMonth();\r\n }\r\n static isWeekend(v: Date,): boolean {\r\n return v.getDay() === 0 || v.getDay() === 6;\r\n }\r\n static isSameDate(a: Date, b: Date) {\r\n return b && a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\r\n }\r\n\r\n\r\n static getAge(value?: Date | string | null, now?: Date | null) {\r\n if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n const date = this.toDate(value);\r\n\r\n const nowTime = now ? now.getTime() : Date.now();\r\n const timeDiff = nowTime - date.getTime();\r\n\r\n return Math.floor((timeDiff / 86400000) / 365.25);//86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour\r\n }\r\n static subtractMonths(endDate: Date, starDate: Date) {\r\n const start = starDate <= endDate ? starDate : endDate;\r\n const end = starDate <= endDate ? endDate : starDate;\r\n const plus = starDate <= endDate ? 1 : -1;\r\n\r\n let months = (end.getFullYear() - start.getFullYear()) * 12;\r\n months -= start.getMonth();\r\n months += end.getMonth();\r\n return months * plus;\r\n }\r\n\r\n static subtractDays(value: Date, date: Date) {\r\n if (!date)\r\n return null;\r\n\r\n date = this.toDate(date);\r\n const timeDiff = date.getTime() - value.getTime();\r\n return Math.floor(timeDiff / 86400000);//86400000 = (1000 * 60 * 60 * 24) = 1000 millisecond * 60second * 60minute * 24hour\r\n }\r\n static subtractHours(value: Date, date?: Date | null) {\r\n if (!date)\r\n return null;\r\n\r\n date = this.toDate(date);\r\n const timeDiff = date.getTime() - value.getTime();\r\n return Math.floor((timeDiff % 86400000) / 3600000);\r\n }\r\n static subtractMinutes(value: Date, date?: Date | null) {\r\n if (!date)\r\n return null;\r\n\r\n date = this.toDate(date);\r\n const timeDiff = date.getTime() - value.getTime();\r\n //\r\n return Math.floor(((timeDiff % 86400000) % 3600000) / 60000);\r\n }\r\n\r\n\r\n\r\n\r\n static ISO8601_DATE_REGEX =\r\n /^(\\d{4})-?(\\d\\d)-?(\\d\\d)(?:T(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:\\.(\\d+))?)?)?(Z|([+-])(\\d\\d):?(\\d\\d))?)?$/;\r\n // 1 2 3 4 5 6 7 8 9 10 11\r\n\r\n\r\n static parseDate(value: any): Date | null {\r\n if (typeof value === 'undefined' || value == null || value === '') return null;\r\n return this.toDate(value);\r\n }\r\n\r\n // export function toDate(value: string|number|Date): Date this function is imported from date pipe \r\n // packages/common/src/i18n/format_date.ts\r\n\r\n /***\r\n * Converts a value to date.\r\n *\r\n * Supported input formats:\r\n * - `Date`\r\n * - number: timestamp\r\n * - string: numeric (e.g. \"1234\"), ISO and date strings in a format supported by\r\n * [Date.parse()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse).\r\n * Note: ISO strings without time return a date without timeoffset.\r\n *\r\n * Throws if unable to convert to a date.\r\n */\r\n static toDate(value: string | number | Date): Date {\r\n if (this.isDate(value)) {\r\n return value;\r\n }\r\n\r\n if (typeof value === 'number' && !isNaN(value)) {\r\n return new Date(value);\r\n }\r\n\r\n if (typeof value === 'string') {\r\n value = value.trim();\r\n\r\n const parsedNb = parseFloat(value);\r\n\r\n // any string that only contains numbers, like \"1234\" but not like \"1234hello\"\r\n if (!isNaN(value as any - parsedNb)) {\r\n return new Date(parsedNb);\r\n }\r\n\r\n if (/^(\\d{4}-\\d{1,2}-\\d{1,2})$/.test(value)) {\r\n /* For ISO Strings without time the day, month and year must be extracted from the ISO String\r\n before Date creation to avoid time offset and errors in the new Date.\r\n If we only replace '-' with ',' in the ISO String (\"2015,01,01\"), and try to create a new\r\n date, some browsers (e.g. IE 9) will throw an invalid Date error.\r\n If we leave the '-' (\"2015-01-01\") and try to create a new Date(\"2015-01-01\") the timeoffset\r\n is applied.\r\n Note: ISO months are 0 for January, 1 for February, ... */\r\n const [y, m, d] = value.split('-').map((val: string) => +val);\r\n return new Date(y, m - 1, d);\r\n }\r\n\r\n let match: RegExpMatchArray | null;\r\n if (match = value.match(this.ISO8601_DATE_REGEX)) {\r\n return this.isoStringToDate(match);\r\n }\r\n }\r\n\r\n const date = new Date(value as any);\r\n if (!this.isDate(date)) {\r\n throw new Error(`Unable to convert \"${value}\" into a date`);\r\n }\r\n return date;\r\n }\r\n\r\n /**\r\n * Converts a date in ISO8601 to a Date.\r\n * Used instead of `Date.parse` because of browser discrepancies.\r\n */\r\n static isoStringToDate(match: RegExpMatchArray): Date {\r\n const date = new Date(0);\r\n let tzHour = 0;\r\n let tzMin = 0;\r\n\r\n // match[8] means that the string contains \"Z\" (UTC) or a timezone like \"+01:00\" or \"+0100\"\r\n const dateSetter = match[8] ? date.setUTCFullYear : date.setFullYear;\r\n const timeSetter = match[8] ? date.setUTCHours : date.setHours;\r\n\r\n // if there is a timezone defined like \"+01:00\" or \"+0100\"\r\n if (match[9]) {\r\n tzHour = Number(match[9] + match[10]);\r\n tzMin = Number(match[9] + match[11]);\r\n }\r\n dateSetter.call(date, Number(match[1]), Number(match[2]) - 1, Number(match[3]));\r\n const h = Number(match[4] || 0) - tzHour;\r\n const m = Number(match[5] || 0) - tzMin;\r\n const s = Number(match[6] || 0);\r\n const ms = Math.round(parseFloat('0.' + (match[7] || 0)) * 1000);\r\n timeSetter.call(date, h, m, s, ms);\r\n return date;\r\n }\r\n\r\n static isDate(value: any): value is Date {\r\n return value instanceof Date && !isNaN(value.valueOf());\r\n }\r\n}","import { KeyPair } from \"../models\";\r\n\r\nexport class ErrorHelper {\r\n static responseToKeyPairArray(response: any) {\r\n let error: any;\r\n if (typeof response.error === 'string' && response.error[0] === '{') {\r\n error = JSON.parse(response.error);\r\n } else {\r\n error = response.error;\r\n }\r\n\r\n return this.toKeyPairArray(error);\r\n }\r\n\r\n static toKeyPairArray(error: any) {\r\n if (typeof error === 'object') {\r\n const errors = error.traceId || error.success === false\r\n ? error.errors\r\n : error;\r\n\r\n const result: KeyPair<string | null | undefined, string | null | undefined>[] = [];\r\n const properties = Object.keys(errors);\r\n\r\n for (const property of properties) {\r\n const messages = errors[property];\r\n if (messages instanceof Array) {\r\n for (const message of messages) {\r\n result.push({ key: property, value: message });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n return null;\r\n }\r\n}","export class ExcelHelper {\r\n static getColumnName(columnNumber: number) {\r\n let dividend = columnNumber;\r\n let columnName = '';\r\n\r\n while (dividend > 0) {\r\n const modulo = Math.floor((dividend - 1) % 26); \r\n columnName = String.fromCharCode(65 + modulo) + columnName;\r\n dividend = Math.floor((dividend - modulo) / 26);\r\n }\r\n return columnName;\r\n }\r\n}","import { IFileString } from \"../models\";\r\n\r\nexport class FileHelper {\r\n static getExtension(path?: string | null) {\r\n if (path === undefined || path == null)\r\n return path;\r\n\r\n if (typeof path !== 'string') {\r\n throw new Error(\"path parameter is not string\");\r\n }\r\n\r\n const directorySeparatorChar = '\\\\';\r\n const altDirectorySeparatorChar = '/';\r\n const volumeSeparatorChar = ':';\r\n\r\n const length = path.length;\r\n for (let i = length; --i >= 0;) {\r\n const ch = path[i];\r\n if (ch === '.') {\r\n if (i !== length - 1)\r\n return path.substring(i, length);\r\n else\r\n return '';\r\n }\r\n if (ch == directorySeparatorChar || ch == altDirectorySeparatorChar || ch == volumeSeparatorChar)\r\n break;\r\n }\r\n\r\n return '';\r\n }\r\n\r\n\r\n static download(blob: Blob | null, fileName: string) {\r\n if (!blob) return;\r\n\r\n const nav = (window.navigator as any);\r\n if (nav && nav.msSaveOrOpenBlob) {\r\n nav.msSaveOrOpenBlob(blob, fileName);\r\n } else {\r\n const a = document.createElement('a');\r\n a.href = URL.createObjectURL(blob);\r\n a.download = fileName;\r\n a.target = '_blank';\r\n document.body.appendChild(a);\r\n a.click();\r\n document.body.removeChild(a);\r\n }\r\n }\r\n\r\n\r\n\r\n static fileToDataUrl(file: File) {\r\n return new Promise<IFileString>((resolve, reject) => {\r\n if (!file) {\r\n reject('file is null');\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n\r\n resolve({\r\n fileName: file.name,\r\n content: reader.result,\r\n } as IFileString);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n static fileToBase64String(file: File) {\r\n return new Promise<IFileString>((resolve, reject) => {\r\n if (!file) {\r\n reject('file is null');\r\n }\r\n\r\n const reader = new FileReader();\r\n reader.onloadend = () => {\r\n const dataUrl = reader.result as string;\r\n const index = dataUrl.indexOf(',');\r\n resolve({\r\n fileName: file.name,\r\n content: dataUrl.substring(index + 1),\r\n } as IFileString);\r\n };\r\n reader.readAsDataURL(file);\r\n });\r\n }\r\n}","\r\nexport class ObjectHelper {\r\n static isDefined(value: any) {\r\n return typeof value !== 'undefined' && value !== null;\r\n }\r\n\r\n static isObject(value: any) {\r\n return this.isDefined(value) && typeof value === 'object';\r\n }\r\n\r\n\r\n /**\r\n * Check if the object is a string or array before evaluating the length attribute.\r\n * This avoids falsely rejecting objects that contain a custom length attribute.\r\n * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\r\n */\r\n static isEmptyValue(value: any): boolean {\r\n return !this.isDefined(value) || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\r\n }\r\n\r\n\r\n static isEmpty(obj: any) {\r\n if (!this.isDefined(obj))\r\n return true;\r\n // if (typeof obj === 'undefined' || obj === null)\r\n // return true;\r\n for (const prop in obj) {\r\n const v = obj[prop];\r\n if (!this.isEmptyValue(v))\r\n return false;\r\n // if (typeof (obj[prop]) !== undefined && obj[prop] !== null && obj[prop] !== '') {\r\n // return false;\r\n // }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n\r\n /**\r\n * @deprecated The method should not be used. please use deleteNullFields\r\n */\r\n static deleteNullKeys(val: any) {\r\n this.deleteNullFields(val);\r\n }\r\n\r\n static deleteNullFields<T extends {}>(val: T) {\r\n if (!val) return;\r\n for (let key in val) {\r\n let tmp = val[key];\r\n if (tmp === undefined || tmp === null) {\r\n delete val[key];\r\n }\r\n }\r\n return val\r\n }\r\n\r\n static assignFields<T extends {}, U extends {}>(target: T, source: U): T {\r\n let t: any = target;\r\n let s: any = source;\r\n for (const key of Object.keys(target)) {\r\n let v = s[key];\r\n if (typeof v !== 'undefined') {\r\n t[key] = v;\r\n }\r\n }\r\n return target;\r\n }\r\n\r\n\r\n\r\n static deepCopy<T = any>(value: any): T {\r\n if (!this.isObject(value))\r\n return value;\r\n\r\n let output: any = {};\r\n if (Array.isArray(value)) {\r\n output = value.map(x => this.deepCopy(x));\r\n }\r\n else {\r\n Object.keys(value).forEach((key: any) => {\r\n const v = value[key];\r\n\r\n if (this.isObject(v)) {\r\n output[key] = this.deepCopy(v);\r\n\r\n } else {\r\n Object.assign(output, { [key]: v });\r\n }\r\n });\r\n }\r\n\r\n return output as T;\r\n }\r\n\r\n}","import { ObjectHelper } from \"./object-helper\";\r\n\r\nexport class FilterHelper {\r\n static isEmpty(obj: any) {\r\n if (typeof obj === 'undefined' || obj === null)\r\n return true;\r\n\r\n const tmp = Object.assign({}, obj);\r\n delete tmp.page;\r\n delete tmp.pageSize;\r\n delete tmp.sort;\r\n\r\n return ObjectHelper.isEmpty(tmp);\r\n }\r\n}","\r\nexport const handler = (function () {\r\n let i = 1;\r\n const listeners: any = {};\r\n\r\n return {\r\n addListener: function (element: HTMLElement | Window, event: string, handler: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions) {\r\n element.addEventListener(event, handler, options); \r\n listeners[i] = {\r\n element: element,\r\n event: event,\r\n handler: handler,\r\n options: options,\r\n };\r\n return i++;\r\n },\r\n removeListener: function (id: number) {\r\n if (id in listeners) {\r\n const h = listeners[id];\r\n \r\n h.element.removeEventListener(h.event, h.handler, h.options);\r\n delete listeners[id];\r\n }\r\n }\r\n };\r\n}());","export class HtmlHelper {\r\n static escapeHtml(source: string) {\r\n if (source == null) {\r\n source = '';\r\n }\r\n\r\n return source\r\n .replace(/&/g, '&amp;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#39;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;');\r\n }\r\n\r\n\r\n static addInput(type: string, name: string, id: string = name, force = false) {\r\n const node = document.createElement('input');\r\n node.type = type;\r\n node.name = name;\r\n node.id = id;\r\n\r\n document.getElementsByTagName('body')[0].appendChild(node);\r\n return node;\r\n }\r\n\r\n\r\n static loadScript(url: string, nonce?: string, async = true, defer = true) {\r\n const script = document.createElement('script');\r\n script.innerHTML = '';\r\n script.src = url;\r\n script.type = 'text/javascript';\r\n\r\n if (nonce) {\r\n script.nonce = nonce;\r\n }\r\n\r\n if (async) {\r\n script.async = true;\r\n }\r\n if (defer) {\r\n script.defer = true;\r\n }\r\n\r\n document.head.appendChild(script);\r\n //2022-02-24 document.getElementsByTagName('head')[0].appendChild(script);\r\n }\r\n static loadScripts(...scripts: string[]) {\r\n const promises: any[] = [];\r\n scripts.forEach((script) => promises.push(this.internalLoadScript(script)));\r\n return Promise.all(promises);\r\n }\r\n private static internalLoadScript(src: string) {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script') as any;\r\n script.src = src;\r\n script.type = 'text/javascript';\r\n if (script.readyState) { //IE\r\n script.onreadystatechange = () => {\r\n if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\r\n script.onreadystatechange = null;\r\n resolve({ script: src, loaded: true });\r\n }\r\n };\r\n } else { //Others\r\n script.onload = () => {\r\n resolve({ script: src, loaded: true });\r\n };\r\n }\r\n script.onerror = (error: any) => resolve({ script: src, loaded: false });\r\n document.getElementsByTagName('head')[0].appendChild(script);\r\n });\r\n }\r\n\r\n\r\n static loadCss(url: string) {\r\n const link = document.createElement('link');\r\n link.rel = 'stylesheet';\r\n link.type = 'text/css';\r\n link.href = url;\r\n document.getElementsByTagName('head')[0].appendChild(link);\r\n }\r\n\r\n}","export class JwtHelper {\r\n\r\n static decode(token: any) {\r\n const base64Url = token.split('.')[1]\r\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n const jsonPayload = decodeURIComponent(atob(base64).split('').map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n }).join(''));\r\n return JSON.parse(jsonPayload)\r\n }\r\n}","export class MathHelper {\r\n static round(value: number, decimals: number = 0): number {\r\n return Math.round(Number(value) * Math.pow(10, decimals)) / (Math.pow(10, decimals));\r\n }\r\n\r\n\r\n static clamp(v: number, min: number, max: number) {\r\n return Math.max(min, Math.min(max, v));\r\n }\r\n\r\n // static sum(...values: number[]) {\r\n // return values.reduce((acc, cur) => acc + cur, 0);\r\n // }\r\n static sum(...values: number[]) {\r\n let sum = 0;\r\n for (let i = 0; i < values.length; i++) {\r\n sum += values[i];\r\n }\r\n return sum;\r\n }\r\n}","import { Pager } from \"../models\";\r\n\r\nexport class PagerHelper {\r\n static get(totalItemCount: number | null | undefined, pageNumber: number | null | undefined = 1, pageSize: number | null | undefined = 10) {\r\n if (!totalItemCount) totalItemCount = 0;\r\n if (!pageNumber) pageNumber = 1;\r\n if (!pageSize) pageSize = 10;\r\n\r\n // calculate total pages\r\n const pageCount = Math.ceil(totalItemCount / pageSize);\r\n let startPage: number, endPage: number;\r\n if (pageCount <= 10) {\r\n // less than 10 total pages so show all\r\n startPage = 1;\r\n endPage = pageCount;\r\n } else {\r\n // more than 10 total pages so calculate start and end pages\r\n if (pageNumber <= 6) {\r\n startPage = 1;\r\n endPage = 10;\r\n } else if (pageNumber + 4 >= pageCount) {\r\n startPage = pageCount - 9;\r\n endPage = pageCount;\r\n } else {\r\n startPage = pageNumber - 5;\r\n endPage = pageNumber + 4;\r\n }\r\n }\r\n\r\n // calculate start and end item indexes\r\n const firstItemOnPage = (pageNumber - 1) * pageSize + 1;\r\n const lastItemOnPage = Math.min(firstItemOnPage + pageSize - 1, totalItemCount);\r\n\r\n const hasPreviousPage = pageNumber > 1;\r\n const hasNextPage = pageNumber < pageCount;\r\n const isFirstPage = pageNumber <= 1;\r\n const isLastPage = pageNumber >= pageCount;\r\n\r\n // create an array of pages to ng-repeat in the pager control\r\n //let pages = _.range(startPage, endPage + 1);\r\n const pages: number[] = [];\r\n for (let i = startPage; i <= endPage; i++) {\r\n pages.push(i);\r\n }\r\n\r\n // return object with all pager properties required by the view\r\n return {\r\n pageCount,\r\n totalItemCount,\r\n pageNumber,\r\n pageSize,\r\n hasPreviousPage,\r\n hasNextPage,\r\n isFirstPage,\r\n isLastPage,\r\n firstItemOnPage,\r\n lastItemOnPage,\r\n startPage: startPage,\r\n endPage: endPage,\r\n pages\r\n } as Pager;\r\n }\r\n}","export class RandomHelper {\r\n static randomHex(count: number = 2) {\r\n let out: string = '';\r\n for (let i: number = 0; i < count; i++) {\r\n // tslint:disable-next-line:no-bitwise\r\n out += (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n }\r\n return out;\r\n }\r\n\r\n static randomInt(min: number, max: number) {\r\n min = Math.ceil(min);\r\n max = Math.floor(max);\r\n\r\n return Math.floor(Math.random() * (max - min + 1)) + min;\r\n }\r\n}","export class StorageHelper {\r\n static set(key: string, value: any) {\r\n if (!key) { return; }\r\n\r\n if (!value) {\r\n localStorage.removeItem(key);\r\n return;\r\n }\r\n\r\n if (typeof value === \"object\") {\r\n value = JSON.stringify(value);\r\n }\r\n localStorage.setItem(key, value);\r\n }\r\n\r\n\r\n static get(key: string) {\r\n const str = localStorage.getItem(key);\r\n if (!str) { return null; }\r\n \r\n // assume it is an object that has been stringified\r\n if (str[0] === '{') {\r\n const v = JSON.parse(str);\r\n return v;\r\n }\r\n \r\n return str;\r\n }\r\n}","export class StringHelper {\r\n static firstUpper(v?: string | null) {\r\n if (!v || v.length < 1)\r\n return v;\r\n\r\n return v.charAt(0).toUpperCase() + v.slice(1);\r\n }\r\n\r\n static isNullOrEmpty(value?: string | null) {\r\n return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.length === 0);\r\n }\r\n static isNullOrWhiteSpace(value?: string | null) {\r\n return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.trim().length === 0);\r\n }\r\n static tryTrim(val: string | undefined | null) {\r\n if (!val)\r\n return val;\r\n return val.trim();\r\n }\r\n static ifNullEmpty(value?: string | null) {\r\n return typeof value === 'undefined' || value == null ? '' : value;\r\n }\r\n static join(val: string | undefined | null, separator: string, part: string | undefined | null) {\r\n if (this.isNullOrEmpty(val)) {\r\n return part;\r\n }\r\n if (this.isNullOrEmpty(part)) {\r\n return val;\r\n }\r\n\r\n return val + separator + part;\r\n }\r\n static trim(val: string | null, ch: string) {\r\n if (!val || !ch)\r\n return val;\r\n\r\n let start = 0,\r\n end = val.length;\r\n\r\n while (start < end && val[start] === ch)\r\n ++start;\r\n\r\n while (end > start && val[end - 1] === ch)\r\n --end;\r\n\r\n return (start > 0 || end < val.length) ? val.substring(start, end) : val;\r\n }\r\n static trimStart(val: string | null, ch: string) {\r\n if (!val || !ch)\r\n return val;\r\n\r\n let start = 0\r\n const end = val.length;\r\n\r\n while (start < end && val[start] === ch)\r\n ++start;\r\n\r\n return (start > 0) ? val.substring(start, end) : val;\r\n }\r\n static trimEnd(val: string | null, ch: string) {\r\n if (!val || !ch)\r\n return val;\r\n\r\n let start = 0,\r\n end = val.length;\r\n\r\n while (end > start && val[end - 1] === ch)\r\n --end;\r\n\r\n return (end < val.length) ? val.substring(start, end) : val;\r\n }\r\n\r\n /**\r\n * \r\n * @param val source string\r\n * @param chars trim any character\r\n * @returns \r\n */\r\n static trimAny(val: string | null, chars: string) {\r\n if (!val || !chars)\r\n return val;\r\n\r\n let start = 0,\r\n end = val.length;\r\n\r\n while (start < end && chars.indexOf(val[start]) >= 0)\r\n ++start;\r\n\r\n while (end > start && chars.indexOf(val[end - 1]) >= 0)\r\n --end;\r\n\r\n return (start > 0 || end < val.length) ? val.substring(start, end) : val;\r\n }\r\n\r\n static split(val: string | null | undefined, ...separator: string[]) {\r\n if (!val) return [];\r\n\r\n if (separator.length === 0)\r\n separator = [','];\r\n\r\n const regex = new RegExp(`(?:${separator.join('|')})`);\r\n return val.split(regex)\r\n .map(entry => entry.trim()) // Trim spaces\r\n .filter(entry => entry.length > 0); // Remove empty entries\r\n }\r\n\r\n}","export const firstBy = (function() {\r\n\r\n function identity(v: any){return v;}\r\n\r\n function ignoreCase(v: any){return typeof(v)===\"string\" ? v.toLowerCase() : v;}\r\n\r\n function makeCompareFunction(f: any, opt: any){\r\n opt = typeof(opt)===\"number\" ? {direction:opt} : opt||{};\r\n if(typeof(f)!=\"function\"){\r\n const prop = f;\r\n // make unary function\r\n f = function(v1: any){return !!v1[prop] ? v1[prop] : \"\";}\r\n }\r\n if(f.length === 1) {\r\n // f is a unary function mapping a single item to its sort score\r\n const uf = f;\r\n const preprocess = opt.ignoreCase?ignoreCase:identity;\r\n const cmp = opt.cmp || function(v1: any,v2: any) {return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;}\r\n f = function(v1: any,v2: any) {return cmp(preprocess(uf(v1)), preprocess(uf(v2)));}\r\n }\r\n if(opt.direction === -1) return function(v1: any,v2: any){return -f(v1,v2)};\r\n return f;\r\n }\r\n\r\n /* adds a secondary compare function to the target function (`this` context)\r\n which is applied in case the first one returns 0 (equal)\r\n returns a new compare function, which has a `thenBy` method as well */\r\n function tb(this: any, func: any, opt: any) {\r\n /* should get value false for the first call. This can be done by calling the \r\n exported function, or the firstBy property on it (for es6 module compatibility)\r\n */\r\n const x = (typeof(this) == \"function\" && !this.firstBy) ? this : false;\r\n const y = makeCompareFunction(func, opt);\r\n const f = x ? function(a: any, b: any) {\r\n return x(a,b) || y(a,b);\r\n }\r\n : y;\r\n f.thenBy = tb;\r\n return f;\r\n }\r\n tb.firstBy = tb;\r\n return tb;\r\n})();","\r\nexport interface ITimeout {\r\n id: number;\r\n callback: string;\r\n interval: number;\r\n createdAt: Date;\r\n}\r\n\r\nexport class IntervalHelper {\r\n private static _timeouts: ITimeout[] = [];\r\n\r\n static create(callback: Function, ms: number) {\r\n const id = setInterval(() => {\r\n callback();\r\n }, ms);\r\n\r\n const timeout = {\r\n id: +id,\r\n callback: callback.toString(),\r\n interval: ms,\r\n createdAt: new Date()\r\n } as ITimeout;\r\n this._timeouts.push(timeout);\r\n return timeout;\r\n }\r\n\r\n static clear(id: number) {\r\n const index = this._timeouts.findIndex(x => x.id === id);\r\n if (index !== -1) {\r\n clearInterval(id);\r\n this._timeouts.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n static clearAll() {\r\n for (const timeout of this._timeouts) {\r\n this.clear(timeout.id);\r\n }\r\n this._timeouts = [];\r\n }\r\n}","export class TmpHelper {\r\n private static _obj: any = {};\r\n\r\n static get(key: string, remove = true): any {\r\n if (!key) return;\r\n const v = this._obj[key];\r\n if (remove)\r\n this.remove(key);\r\n return v;\r\n }\r\n \r\n static set(key: string, value: any) {\r\n if (!key) return;\r\n this._obj[key] = value;\r\n }\r\n \r\n static clear() {\r\n this._obj = {};\r\n }\r\n static remove(key: string) {\r\n if (!key) return;\r\n delete this._obj[key]\r\n }\r\n}","import { StringHelper } from \"./string-helper\";\r\n\r\nexport class UrlHelper {\r\n static getController(url: string) {\r\n return url.substring(0, url.lastIndexOf('/') + 1);\r\n }\r\n\r\n static getAction(url: string) {\r\n const action = url.substring(url.lastIndexOf('/') + 1);\r\n const i = action.indexOf(';');\r\n return i === -1 ? action : action.substring(0, i);\r\n }\r\n\r\n static getNoParam(url: string) {\r\n const i1 = url.indexOf('?');\r\n const i2 = url.indexOf(';');\r\n if (i1 !== -1) {\r\n if (i2 !== -1) {\r\n const min = i1 < i2 ? i1 : i2;\r\n return url.substring(0, min)\r\n }\r\n return url.substring(0, i1)\r\n }\r\n if (i2 !== -1) {\r\n return url.substring(0, i2)\r\n }\r\n return url;\r\n }\r\n\r\n static combine(...parts: any[]) {\r\n let result = '';\r\n for (const part of parts) {\r\n if (typeof part === 'undefined' && part === null)\r\n continue;\r\n const str = `${part}`;\r\n result = this.combineEnsureSingleSeparator(result, str, '/');\r\n }\r\n return result;\r\n }\r\n\r\n private static combineEnsureSingleSeparator(a: string, b: string, separator: string = '') {\r\n if (!a) return b;\r\n if (!b) return a;\r\n return StringHelper.trimEnd(a, separator) + separator + StringHelper.trimStart(b, separator);\r\n }\r\n}","export class ValidationHelper {\r\n static readonly emailRegExp = /^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\r\n\r\n static isValidEmail(email?: string | null) {\r\n if (typeof email === 'undefined' || email == null || ((typeof email === 'string') && email.length === 0)) {\r\n return false;\r\n }\r\n\r\n return this.emailRegExp.test(email);\r\n }\r\n}","import { Injectable, } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\nimport { KeyPair, LoginToken, LoginUser } from '../models';\r\nimport { DateHelper, ObjectHelper, StorageHelper } from '../utils';\r\nimport { BitwiseHelper } from '../utils/bitwise-helper';\r\n\r\n@Injectable()\r\nexport class AuthService {\r\n static USER_KEY = 'user';\r\n static REFRESH_TOKEN_INTERVAL = 15 * 60 * 1000;\r\n\r\n private _auth = false;\r\n private _user: LoginUser | null = null;\r\n private _timerId: any;\r\n private _refreshTimerId: any;\r\n\r\n constructor() {\r\n const user = StorageHelper.get(AuthService.USER_KEY);\r\n if (user) {\r\n this._init(user);\r\n }\r\n }\r\n\r\n\r\n private get _isAuthenticated() {\r\n const expired = this.getExpired()\r\n return new Date() < expired;\r\n }\r\n\r\n\r\n\r\n get user() {\r\n return this._user;\r\n }\r\n get isAuthenticated() {\r\n return this._auth;\r\n }\r\n\r\n private _starTimer() {\r\n this._stopTimer();\r\n\r\n let interval = this.getExpired().getTime() - new Date().getTime() + 1000;\r\n if (interval < 1000)\r\n interval = 1000;\r\n if (interval > 0 && this._user) {\r\n this._timerId = setTimeout(() => {\r\n this._onTick();\r\n }, interval);\r\n }\r\n }\r\n private _stopTimer() {\r\n if (typeof this._timerId === 'number') {\r\n clearTimeout(this._timerId);\r\n }\r\n }\r\n\r\n private _onTick() {\r\n const newValue = this._isAuthenticated;\r\n if (this._auth !== newValue && !newValue) {\r\n this.logout();\r\n }\r\n }\r\n\r\n\r\n private _starRefreshTokenTimer() {\r\n this._stopRefreshTokenTimer();\r\n\r\n const interval = AuthService.REFRESH_TOKEN_INTERVAL;\r\n if (interval > 0 && this._user) {\r\n this._refreshTimerId = setInterval(() => {\r\n this.emitOnRefreshToken();\r\n }, interval);\r\n }\r\n }\r\n private _stopRefreshTokenTimer() {\r\n if (typeof this._refreshTimerId === 'number') {\r\n clearInterval(this._refreshTimerId);\r\n }\r\n }\r\n emitOnRefreshToken() {\r\n if (this._onRefreshTokenSubject) {\r\n this._onRefreshTokenSubject.next();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n emitOnSignedIn() {\r\n if (this._onSignedInSubject) {\r\n this._onSignedInSubject.next(this._auth);\r\n }\r\n }\r\n\r\n private _onSignedInSubject?: Subject<boolean>;//BehaviorSubject is for initial firt value = false\r\n private _onSignedInObservable?: Observable<boolean>;\r\n get onSignedIn(): Observable<boolean> {\r\n if (!this._onSignedInSubject) {\r\n this._onSignedInSubject = new Subject<boolean>();//(this.isAuthenticated);\r\n this._onSignedInObservable = this._onSignedInSubject.asObservable();\r\n }\r\n\r\n if (!this._onSignedInObservable)\r\n throw new Error(\"_onExecuteObservable is undefined\");\r\n\r\n return this._onSignedInObservable;\r\n }\r\n\r\n\r\n private _onRefreshTokenSubject?: Subject<void>;\r\n private _onRefreshTokenObservable?: Observable<void>;\r\n get onRefreshToken(): Observable<void> {\r\n if (!this._onRefreshTokenSubject) {\r\n this._onRefreshTokenSubject = new Subject<void>();\r\n this._onRefreshTokenObservable = this._onRefreshTokenSubject.asObservable();\r\n }\r\n\r\n if (!this._onRefreshTokenObservable)\r\n throw new Error(\"onRefreshTokenObservable is undefined\");\r\n\r\n return this._onRefreshTokenObservable;\r\n }\r\n\r\n\r\n\r\n login(user: LoginToken | LoginUser) {\r\n StorageHelper.set(AuthService.USER_KEY, user);\r\n this._init(user);\r\n }\r\n private _init(user: LoginToken | LoginUser) {\r\n if (user) {\r\n //convert string to local date/time\r\n user.expired = ObjectHelper.isDefined(user.expired) ? DateHelper.parseDate(user.expired) : user.expired;\r\n\r\n if (Array.isArray(user.roles)) {\r\n user.roles = user.roles.map(function (e: any) { return e ? e.toUpperCase() : e; });\r\n }\r\n }\r\n this._user = user as any;\r\n\r\n // if (!this._auth) {\r\n // this._auth = true;\r\n // this.emitOnSignedIn();\r\n // }\r\n this._auth = true;\r\n this.emitOnSignedIn();\r\n\r\n //restart timers for new timeouts\r\n this._starTimer();\r\n this._starRefreshTokenTimer();\r\n }\r\n\r\n logout() {\r\n StorageHelper.set(AuthService.USER_KEY, null);\r\n this._user = null;\r\n if (this._auth) {\r\n this._auth = false;\r\n this.emitOnSignedIn();\r\n }\r\n\r\n this._stopTimer();\r\n this._stopRefreshTokenTimer();\r\n }\r\n\r\n /**\r\n *\r\n * @returns user expiry date. if user is null returns min JS date\r\n */\r\n protected getExpired() {\r\n return this.user?.expired ?? new Date(0);\r\n }\r\n\r\n hasPermission(permission?: KeyPair<number, number> | number | null): boolean {\r\n if (!permission) {\r\n return true;\r\n }\r\n\r\n let key = 0;\r\n let value: number | null | undefined;\r\n if (typeof permission === 'number' || typeof permission === 'string') {\r\n key = +permission;\r\n }// else if (Array.isArray(permission)) {\r\n // }\r\n else if (typeof permission === 'object') {\r\n if (!permission.key)\r\n return true;\r\n\r\n key = permission.key;\r\n value = permission.value;\r\n }\r\n\r\n return this.hasPermissions([key], value);\r\n }\r\n\r\n\r\n hasPermissions(permissions?: Array<number>, value?: number | null): boolean {\r\n if (!permissions || permissions.length === 0) {\r\n return true;\r\n }\r\n\r\n const user = this.user;\r\n const userPermissions = user ? user.permissions : null;\r\n if (!userPermissions) {\r\n return false;\r\n }\r\n\r\n if (value) {\r\n for (let i = 0; i < permissions.length; i++) {\r\n const p = permissions[i];\r\n const found = userPermissions[p];\r\n if (found) {\r\n const hasPermission = BitwiseHelper.hasFlag(found, value);\r\n if (hasPermission)\r\n return true;\r\n }\r\n }\r\n } else {\r\n for (let i = 0; i < permissions.length; i++) {\r\n const p = permissions[i];\r\n const found = userPermissions[p];\r\n if (found)\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n hasDataPermission(data: any) {\r\n //if (data === undefined || data === null) return true;\r\n // const allowedRoles = data.roles;\r\n // let isInRole = this.isInRole(allowedRoles);\r\n\r\n const permission = data.permission;\r\n\r\n const hasPermission = this.hasPermission(permission);\r\n\r\n // return isInRole && hasPermission;\r\n return hasPermission;\r\n }\r\n}","import { inject } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router, CanActivateFn } from '@angular/router';\r\n\r\nimport { AuthService } from './auth.service';\r\n\r\n\r\nexport const zekAuthGuard: CanActivateFn = (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) => {\r\n const auth = inject(AuthService);\r\n const router = inject(Router);\r\n\r\n if (!auth.isAuthenticated) {\r\n router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\r\n return false;\r\n }\r\n\r\n return auth.hasDataPermission(route.data);\r\n}","import { WebApiClient } from \"./web.api\";\r\nimport { HttpErrorHandler, HandleError } from \"./http-error-handler.service\";\r\n\r\nexport class BaseService {\r\n protected readonly handleError: HandleError;\r\n constructor(\r\n protected readonly controller: string,\r\n protected readonly api: WebApiClient,\r\n httpErrorHandler: HttpErrorHandler) {\r\n this.handleError = httpErrorHandler.createHandleError(this.constructor.name);\r\n }\r\n}","import { Observable, of, tap } from \"rxjs\";\r\n\r\ninterface CacheContent {\r\n expiry: number;\r\n value: any;\r\n}\r\n\r\nexport class CacheHelper {\r\n private static _cache = new Map<string, CacheContent>();\r\n\r\n static get(key: string): Observable<any> | undefined {\r\n const data = this._cache.get(key);\r\n if (!data) {\r\n return undefined;\r\n }\r\n\r\n const now = new Date().getTime();\r\n if (now > data.expiry) {\r\n this._cache.delete(key);\r\n return undefined;\r\n }\r\n\r\n return of(data.value);\r\n }\r\n\r\n // Set data to cache\r\n static set(key: string, value: any, minutes: number = 5): Observable<any> {\r\n const expiry = new Date().getTime() + minutes * 60000;\r\n this._cache.set(key, { expiry, value });\r\n return of(value);\r\n }\r\n\r\n // Cache and return the Observable\r\n static getOrCreate(key: string, fallback: Observable<any>, minutes?: number): Observable<any> {\r\n const cached = this.get(key);\r\n if (cached) {\r\n return cached;\r\n } else {\r\n return fallback.pipe(\r\n tap(value => {\r\n this.set(key, value, minutes);\r\n })\r\n );\r\n }\r\n }\r\n}","import { catchError, Observable } from \"rxjs\";\r\n\r\nimport { HttpErrorHandler } from \"./http-error-handler.service\";\r\nimport { PagedList } from \"../models\";\r\nimport { BaseService } from \"./base.service\";\r\nimport { WebApiClient } from \"./web.api\";\r\nimport { UrlHelper } from \"../utils\";\r\n\r\nexport interface IService {\r\n getAll(filter: any): Observable<PagedList>;\r\n delete(id: any): Observable<any>;\r\n delete2(id: any, id2: any): Observable<any>;\r\n export(filter: any, fileTypeId: any): Observable<Blob | null>;\r\n sum(filter: any): Observable<any>;\r\n\r\n get(id: any): Observable<any>;\r\n get2(id: any, id2: any): Observable<any>;\r\n save(model: any): Observable<any>;\r\n restore(id: any): Observable<any>;\r\n approve(model: any): Observable<any>;\r\n disapprove(model: any): Observable<any>;\r\n batch(model: any): Observable<any>;\r\n}\r\nexport class CrudService extends BaseService implements IService {\r\n constructor(\r\n controller: string,\r\n api: WebApiClient,\r\n httpErrorHandler: HttpErrorHandler) {\r\n super(controller, api, httpErrorHandler);\r\n }\r\n\r\n get(id: any) {\r\n const url = UrlHelper.combine(`api/${this.controller}`, id);\r\n return this.api.get(url).pipe(catchError(this.handleError(this.get.name, null)));\r\n }\r\n get2(id: any, id2: any) {\r\n return this.api.get(`api/${this.controller}/${id}/${id2}`).pipe(catchError(this.handleError(this.get2.name, null)));\r\n }\r\n\r\n getAll(filter?: any): Observable<PagedList> {\r\n return this.api.get(`api/${this.controller}`, filter).pipe(catchError(this.handleError(this.getAll.name)));\r\n }\r\n sum(filter?: any) {\r\n return this.api.get(`api/${this.controller}/Sum`, filter).pipe(catchError(this.handleError(this.sum.name)));\r\n }\r\n\r\n save(model: any) {\r\n return !model.id\r\n ? this.api.post<any>(`api/${this.controller}`, model).pipe(catchError(this.handleError(this.save.name, null)))\r\n : this.api.put<any>(`api/${this.controller}/${model.id}`, model).pipe(catchError(this.handleError(this.save.name, null)));\r\n }\r\n\r\n delete(id: any) {\r\n return this.api.delete(`api/${this.controller}/${id}`).pipe(catchError(this.handleError(this.delete.name, null)));\r\n }\r\n delete2(id: any, id2: any) {\r\n return this.api.delete(`api/${this.controller}/${id}/${id2}`).pipe(catchError(this.handleError(this.delete2.name, null)));\r\n }\r\n\r\n restore(id: any) {\r\n return this.api.patch(`api/${this.controller}/${id}/Restore`).pipe(catchError(this.handleError(this.restore.name, null)));\r\n }\r\n\r\n approve(model: any) {\r\n return this.api.patch(`api/${this.controller}/Approve`, model).pipe(catchError(this.handleError(this.approve.name, null)));\r\n }\r\n disapprove(model: any) {\r\n return this.api.patch(`api/${this.controller}/Disapprove`, model).pipe(catchError(this.handleError(this.disapprove.name, null)));\r\n }\r\n\r\n batch(model: any) {\r\n return this.api.post(`api/${this.controller}/Batch`, model).pipe(catchError(this.handleError(this.batch.name, null)));\r\n }\r\n\r\n\r\n export(model: any, fileTypeId: any): Observable<Blob | null> {\r\n return this.api.getBlob(`api/${this.controller}/Export/${fileTypeId}`, model).pipe(catchError(this.handleError('export', null)));\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router, NavigationStart } from '@angular/router';\r\nimport { Subject } from 'rxjs';\r\nimport { AlertType } from '../models';\r\nimport { BootstrapHelper } from '../utils/bootstrap.helper';\r\n\r\nexport class BaseAlert {\r\n type?: AlertType | null;\r\n icon?: string | null;\r\n title?: string | null;\r\n css?: string | null;\r\n // id?: string;\r\n}\r\n\r\nexport class Alert extends BaseAlert {\r\n messages?: string[];\r\n}\r\n\r\nexport class Toast extends BaseAlert {\r\n message?: string | null;\r\n}\r\n\r\n@Injectable()\r\nexport class AlertService {\r\n private alertSubject = new Subject<any>();\r\n private toastSubject = new Subject<any>();\r\n private keepAfterRouteChange = false;\r\n // private id = 0;\r\n\r\n constructor(router: Router) {\r\n // clear alert messages on route change unless 'keepAfterRouteChange' flag is true\r\n router.events.subscribe(event => {\r\n if (event instanceof NavigationStart) {\r\n if (this.keepAfterRouteChange) {\r\n // only keep for a single route change\r\n this.keepAfterRouteChange = false;\r\n } else {\r\n // clear alert messages\r\n this.clear();\r\n }\r\n }\r\n });\r\n }\r\n\r\n add(alertType: AlertType, message: string, keepAfterRouteChange = false) {\r\n const messages = [];\r\n messages.push(message);\r\n this.addRange(alertType, messages, keepAfterRouteChange);\r\n }\r\n addRange(alertType: AlertType, messages: string[], keepAfterRouteChange = false) {\r\n this.keepAfterRouteChange = keepAfterRouteChange;\r\n this.alertSubject.next(<Alert>{ type: alertType, messages: messages });\r\n }\r\n clear() {\r\n this.alertSubject.next(null);\r\n }\r\n\r\n\r\n getAlert() {\r\n return this.alertSubject.asObservable();\r\n }\r\n getToast() {\r\n return this.toastSubject.asObservable();\r\n }\r\n\r\n\r\n success(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'success', icon);\r\n }\r\n error(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'danger', icon);\r\n }\r\n warning(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'warning', icon);\r\n }\r\n info(message: string, title?: string | null, icon?: string | null) {\r\n this.show(message, title, 'info', icon);\r\n }\r\n private show(message: string, title?: string | null, alertType?: AlertType | null, icon?: string | null) {\r\n // if (!icon) {\r\n // icon = BootstrapHelper.cssAlertIcon(alertType)\r\n // }\r\n\r\n this.toastSubject.next(<Toast>{ message, title, type: alertType, icon });//, id: `${this.id++}`\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Router } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AlertService } from './alert.service';\r\nimport { ObjectHelper } from '../utils/object-helper';\r\n\r\n/** Type of the handleError function returned by HttpErrorHandler.createHandleError */\r\nexport type HandleError = <T = any>(operation?: string, result?: T, show?: boolean) => (error: HttpErrorResponse) => Observable<T>;\r\nexport type HandleErrorResult = <T = any>(operation?: string, result?: T, show?: boolean) => (error: HttpErrorResponse) => Observable<T>;\r\n\r\n/** Handles HttpClient errors */\r\n@Injectable()\r\nexport class HttpErrorHandler {\r\n constructor(\r\n private readonly alert: AlertService,\r\n private readonly translate: TranslateService,\r\n private readonly router: Router) { }\r\n\r\n /** Create curried handleError function that already knows the service name */\r\n createHandleError = (serviceName = '') => <T>(operation = 'operation', result = {} as T, show = true) => this.handleError(serviceName, operation, result, show);\r\n createHandleErrorResult = (serviceName = '') => <T>(operation = 'operation', result = {} as T, show = true) => this.handleErrorResult(serviceName, operation, result, show);\r\n\r\n /**\r\n * Returns a function that handles Http operation failures.\r\n * This error handler lets the app continue to run as if no error occurred.\r\n * @param serviceName = name of the data service that attempted the operation\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n * @param show - optional value to show error\r\n */\r\n handleError<T>(serviceName = '', operation = 'operation', result = {} as T, show?: boolean) {\r\n return (response: HttpErrorResponse): Observable<T> => {\r\n console.error(response);\r\n\r\n if (show) {\r\n this.showError(serviceName, operation, response)\r\n }\r\n\r\n return of(result);\r\n };\r\n }\r\n\r\n\r\n\r\n /**\r\n * Returns a function that handles Http operation failures.\r\n * This error handler lets the app continue to run as if no error occurred.\r\n * @param serviceName = name of the data service that attempted the operation\r\n * @param operation - name of the operation that failed\r\n * @param result - optional value to return as the observable result\r\n * @param show - optional value to show error\r\n */\r\n handleErrorResult<T>(serviceName = '', operation = 'operation', result = {} as T, show?: boolean) {\r\n return (response: HttpErrorResponse): Observable<any> => {\r\n console.error(response);\r\n\r\n if (show) {\r\n this.showError(serviceName, operation, response)\r\n }\r\n\r\n\r\n let error: any; \r\n if (typeof response.error === 'string' && response.error[0] === '{') {\r\n error = JSON.parse(response.error);\r\n } else {\r\n error = response.error;\r\n }\r\n\r\n if (error instanceof ErrorEvent) {\r\n error = response.error.message;\r\n }\r\n\r\n return ObjectHelper.isDefined(error) ? of(error) : of(result);\r\n };\r\n }\r\n\r\n\r\n private showError(serviceName: string, operation: string, response: HttpErrorResponse) {\r\n switch (response.status) {\r\n case 0://No Connection\r\n this.alert.error(`Can't connect to api server.`);\r\n break;\r\n\r\n case 400://Bad Request\r\n let error: any;\r\n if (typeof response.error === 'string' && response.error[0] === '{') {\r\n error = JSON.parse(response.error);\r\n } else {\r\n error = response.error;\r\n }\r\n\r\n if (error instanceof ErrorEvent) {\r\n this.alert.error(`${serviceName}: ${operation} failed: ${response.error.message}`);\r\n } if (typeof error === 'string') {\r\n this.alert.error(response.error as string);\r\n } else if (typeof error === 'object') {\r\n const errors = error.traceId || error.success === false\r\n ? error.errors\r\n : error;\r\n\r\n const errorMessages: string[] = [];\r\n const properties = Object.getOwnPropertyNames(errors);\r\n\r\n for (const property of properties) {\r\n const messages = errors[property];\r\n if (messages instanceof Array) {\r\n for (const message of messages) {\r\n const messageKey = `Validation.${message}`;\r\n let translatedMessage = this.translate.instant(messageKey);\r\n // if translation not found then use message\r\n if (messageKey == translatedMessage) {\r\n translatedMessage = message;\r\n }\r\n\r\n if (property) {\r\n const propertyKey = `Fields.${property}`;\r\n let translatedProperty = this.translate.instant(`Fields.${property}`);\r\n // if translation not found then use property\r\n if (propertyKey == translatedProperty) {\r\n translatedProperty = property\r\n }\r\n errorMessages.push(translatedProperty + ' - ' + translatedMessage);\r\n }\r\n else {\r\n errorMessages.push(translatedMessage);\r\n }\r\n }\r\n }\r\n }\r\n this.alert.addRange('danger', errorMessages);\r\n }\r\n break;\r\n\r\n case 401://Unauthorized\r\n this.alert.error('Unauthorized');\r\n this.router.navigate(['/login']);\r\n break;\r\n\r\n case 403://Forbidden\r\n this.alert.error('Forbidden');\r\n break;\r\n\r\n case 404://Not Found\r\n this.alert.error('Not Found');\r\n break;\r\n\r\n case 402://Payment Required\r\n this.alert.error('License Payment Required');\r\n break;\r\n\r\n case 500://Internal Server Error\r\n this.alert.error('Internal Server Error');\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n}","import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const API_BASE_URL = new InjectionToken<string>('API_BASE_URL');\r\nexport const DATE_FORMAT = new InjectionToken<string>('DATE_FORMAT');\r\nexport const LANGUAGE = new InjectionToken<string>('LANGUAGE');\r\nexport const RECAPTCHA_SITE_KEY = new InjectionToken<string>('RECAPTCHA_SITE_KEY');\r\nexport const GOOGLE_CLIENT_ID = new InjectionToken<string>('GOOGLE_CLIENT_ID');","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams/*, HttpErrorResponse*/ } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n//import { of } from 'rxjs/observable/of';\r\n//import { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthService } from './auth.service';\r\n//import { deleteNullProperties } from '../utils';\r\n//import { HttpErrorHandler, HandleError } from './http-error-handler.service';\r\nimport { HttpParameterCodec } from '@angular/common/http';\r\nimport { API_BASE_URL } from '../tokens';\r\nimport { UrlHelper } from '../utils';\r\n\r\nexport interface WebApiConfig {\r\n baseUrl: string;\r\n}\r\n\r\n@Injectable()\r\nexport class WebApiClient {\r\n constructor(\r\n protected readonly http: HttpClient,\r\n protected readonly auth: AuthService,\r\n @Inject(API_BASE_URL) private readonly baseUrl: string) {\r\n }\r\n\r\n get<T = any>(url: string, params?: any): Observable<T> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get<T>(combinedUrl, { headers: this.getHeaders(), params: this.toHttpParams(params) });\r\n /*.catch(catchError(this.handleError(url)))\r\n .do((res: Response) => {\r\n // Handle success, maybe display notification\r\n }, (error: any) => {\r\n // Handle errors\r\n })\r\n .finally(() => {\r\n // Request completed\r\n });\r\n */\r\n }\r\n\r\n getString(url: string, params?: object): Observable<string | null> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'text', params: this.toHttpParams(params) });\r\n }\r\n getBytes(url: string, params?: any): Observable<ArrayBuffer> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'arraybuffer', params: this.toHttpParams(params) });\r\n }\r\n getBlob(url: string, params?: any): Observable<Blob> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.get(combinedUrl, { headers: this.getHeaders(), responseType: 'blob', params: this.toHttpParams(params) });\r\n }\r\n postBlob(url: string, body: any): Observable<Blob> {\r\n const combinedUrl = UrlHelper.combine(this.baseUrl, url);\r\n return this.http.post(combinedUrl, body, { headers: this.getHeaders(), responseType: 'blob' });\r\n }\r\n\r\n\r\n protected toHttpParams(obj: any) {\r\n if (!obj)\r\n return undefined;\r\n\r\n let params = new HttpParams({ encoder: new CustomHttpParamEncoder() });\r\n for (const key of Object.keys(obj)) {\r\n const field = obj[key];\r\n\r\n if (field === undefined || field === null || (typeof field === 'string' && field.length === 0))\r\n continue;\r\n\r\n const value = field;\r\n // if (typeof field === 'string' && field.length > 0) {\r\n // value = field.replace(/\\+/gi, '%2B');\r\n // }\r\n\r\n params = params.append(key, value);\r\n // if (field instanceof Array) {\r\n // field.forEach((item: any) => {\r\n // params = params.append(`${key}[]`, item);\r\n // });\r\n // } else {\r\n // params = params.append(key, field);\r\n // }\r\n }\r\n return params;\r\n\r\n\r\n //deleteNullProperties(obj);\r\n //comment because int[] not sending in c# it send \"1,2,3,4\"\r\n // return obj\r\n // ? Object.getOwnPropertyNames(obj).reduce((p, key) => p.set(key, obj[key]), new HttpParams())\r\n // : undefined;\r\n }\r\n\r\n //toKeyPairs(obj: any): KeyPair[] | undefined {\r\n // if (obj instanceof Object) {\r\n // const properties = Object.getOwnPropertyNames(obj);\r\n // const result = new Array<KeyPair>();\r\n // for (let property of properties) {\r\n // const value = obj[property];\r\n // result.push({ key: property, value: value });\r\n // }\r\n // return result;\r\n // }\r\n // return undefined;\r\n //}\r\n\r\n post<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.post<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n //.pipe(\r\n //catchError(this.handleError(url))\r\n //);\r\n }\r\n put<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.put<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n //.pipe(\r\n //catchError(this.handleError(url))\r\n //);\r\n }\r\n delete<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.request<T>('delete', UrlHelper.combine(this.baseUrl, url), { body, headers: this.getHeaders(body) });\r\n //return this.http.delete(environment.url + url, { headers: this.getHeaders() });\r\n //.pipe(\r\n //catchError(this.handleError(url))\r\n //);\r\n }\r\n patch<T = any>(url: string, body?: any | null): Observable<T> {\r\n return this.http.patch<T>(UrlHelper.combine(this.baseUrl, url), body, { headers: this.getHeaders(body) });\r\n }\r\n\r\n\r\n protected getHeaders(body?: any | null): HttpHeaders {\r\n let httpHeaders = new HttpHeaders();\r\n if (!(body instanceof FormData))\r\n httpHeaders = httpHeaders.set('Content-Type', 'application/json');\r\n const tmp = this.auth.user;\r\n const token = tmp ? tmp.token : undefined;\r\n if (token)\r\n httpHeaders = httpHeaders.set('Authorization', token);\r\n return httpHeaders;\r\n }\r\n\r\n\r\n\r\n //private getParams(params?: KeyPair[] | null) {\r\n // if (!params || params.length === 0) {\r\n // return undefined;\r\n // }\r\n // let httpParams = new HttpParams();\r\n // if (params) {\r\n // for (let param of params) {\r\n // httpParams = httpParams.set(param.key, param.value);\r\n // }\r\n // }\r\n // return httpParams;\r\n //}\r\n}\r\n\r\n\r\n\r\nexport class CustomHttpParamEncoder implements HttpParameterCodec {\r\n encodeKey(key: string): string {\r\n return encodeURIComponent(key);\r\n }\r\n encodeValue(value: string): string {\r\n return encodeURIComponent(value);\r\n }\r\n decodeKey(key: string): string {\r\n return decodeURIComponent(key);\r\n }\r\n decodeValue(value: string): string {\r\n return decodeURIComponent(value);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { catchError } from 'rxjs';\r\nimport { CrudService } from './crud.service';\r\nimport { WebApiClient } from './web.api';\r\nimport { HttpErrorHandler } from './http-error-handler.service';\r\nimport { IFileBase } from '../models';\r\n\r\n@Injectable()\r\nexport class FileService extends CrudService {\r\n constructor(api: WebApiClient, httpErrorHandler: HttpErrorHandler) {\r\n super('files', api, httpErrorHandler);\r\n }\r\n\r\n download(id: any, hash: any) {\r\n return this.api.getBlob(`api/${this.controller}`, { id, hash }).pipe(catchError(this.handleError(this.download.name, null)));\r\n }\r\n\r\n presignedUrl(id: any, hash: any) {\r\n return this.api.get(`api/${this.controller}/${id}/${hash}/presigned-url`).pipe(catchError(this.handleError(this.presignedUrl.name, null)));\r\n }\r\n\r\n downloadFile(file: IFileBase) {\r\n if (!file) return;\r\n this.presignedUrl(file.id, file.hash).subscribe(data => {\r\n if (data?.success) {\r\n window.open(data.value, '_blank');\r\n }\r\n });\r\n }\r\n}","import { OnInit, Directive, OnDestroy, Input } from '@angular/core';\r\n\r\nlet uniqueId = 0;\r\n\r\n@Directive()\r\nexport class CoreComponent implements OnInit, OnDestroy {\r\n loading = false;\r\n\r\n ngOnInit() {\r\n this.load();\r\n }\r\n ngOnDestroy() {\r\n this.destroy();\r\n }\r\n\r\n\r\n uniqueId = ++uniqueId;\r\n \r\n async load() {\r\n try {\r\n if (this.loading) return;\r\n\r\n this.loading = true;\r\n await this.init();\r\n await this.bindModel();\r\n await this.bindDictionary();\r\n await this.onBindingCompleted();\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n\r\n await this.onLoadCompleted();\r\n }\r\n init() { }\r\n bindModel() {\r\n this.onBindModelCompleted();\r\n }\r\n onBindModelCompleted() { }\r\n bindDictionary() { }\r\n onBindingCompleted() { }\r\n onLoadCompleted() { }\r\n\r\n async destroy() {\r\n }\r\n}","import { Input, Directive, inject, EventEmitter, Output } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { PrintType } from '../models/print.model';\r\nimport { WebApiClient } from '../services';\r\nimport { CoreComponent } from './core.component';\r\nimport { BooleanInput } from './types';\r\nimport { Convert, FileHelper, UrlHelper } from '../utils';\r\n\r\n@Directive()\r\nexport class BaseComponent<TModel = any> extends CoreComponent {\r\n protected readonly api = inject(WebApiClient);\r\n protected readonly route = inject(ActivatedRoute);\r\n protected readonly router = inject(Router);\r\n\r\n private _readOnly = false;\r\n @Input()\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n set readOnly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _url: string | null = null;\r\n protected get url(): string {\r\n if (!this._url)\r\n this._url = UrlHelper.getNoParam(this.router.url);\r\n return this._url;\r\n }\r\n\r\n @Input() model?: TModel | null;\r\n @Output() modelChange = new EventEmitter<TModel | null | undefined>();\r\n\r\n protected getParam(name: string) {\r\n return this.route.snapshot.paramMap.get(name);\r\n }\r\n protected getQueryParam(name: string) {\r\n return this.route.snapshot.queryParamMap.get(name);\r\n }\r\n\r\n reload() {\r\n this._redirectTo(this.router.url);\r\n }\r\n private _redirectTo(url: string) {\r\n this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {\r\n this.router.navigateByUrl(url);\r\n });\r\n }\r\n\r\n protected navigateReturnUrl() {\r\n const returnUrl = this.getQueryParam('returnUrl') || this.getParam('returnUrl');\r\n if (returnUrl) {\r\n this.router.navigateByUrl(returnUrl);\r\n // let urlTree = this.router.parseUrl(returnUrl);\r\n // const urlWithoutParams = urlTree.root.children[PRIMARY_OUTLET].segments.map(it => it.path).join('/')\r\n // this.router.navigate([urlWithoutParams, urlTree.root.children[PRIMARY_OUTLET].segments[urlTree.root.children[PRIMARY_OUTLET].segments.length - 1].parameters]);\r\n return;\r\n }\r\n\r\n this.router.navigate([this.router.url.substring(0, this.router.url.lastIndexOf('/'))]);\r\n }\r\n\r\n\r\n cancel() {\r\n this.navigateReturnUrl();\r\n }\r\n\r\n downloadFile(blob: Blob | null, fileName: string, type?: string | null) {\r\n FileHelper.download(blob, fileName);\r\n }\r\n print(id?: number | null, printType?: PrintType) {\r\n const split = this.url.split('/');\r\n if (split.length < 2) {\r\n return;\r\n }\r\n const template = split[1];\r\n // let api = inject(WebApiClient);\r\n\r\n let actionName: string;\r\n\r\n switch (printType) {\r\n case PrintType.Pdf:\r\n actionName = 'PrintPdfIdLink';\r\n break;\r\n\r\n default:\r\n actionName = 'ShowIdLink'\r\n break;\r\n }\r\n this.api.getString(`api/Reports/${actionName}`, { template, id }).subscribe(url => {\r\n if (url) {\r\n window.open(url, '_blank');\r\n }\r\n });\r\n }\r\n\r\n protected internalPrint(name: any, id: any, printType: PrintType = PrintType.Show) {\r\n this.api.get(`api/reports/presigned-url`, { name, id, type: printType }).subscribe(data => {\r\n if (data?.success) {\r\n window.open(data.value, '_blank');\r\n }\r\n });\r\n }\r\n}\r\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, Input, Output, Renderer2 } from \"@angular/core\";\r\nimport { ControlValueAccessor } from \"@angular/forms\";\r\nimport { Convert } from \"../utils\";\r\nimport { CancelArgs } from \"./args\";\r\nimport { CoreComponent } from \"./core.component\";\r\nimport { BooleanInput } from \"./types\";\r\n\r\n@Directive()\r\nexport class CoreUiComponent extends CoreComponent\r\n implements AfterContentInit, ControlValueAccessor {\r\n constructor(\r\n protected _renderer: Renderer2,\r\n protected _elementRef: ElementRef\r\n //private _changeDetector: ChangeDetectorRef\r\n ) {\r\n super();\r\n }\r\n\r\n /** The method to be called in order to update ngModel */\r\n _onChange: (value: any) => void = () => { };\r\n\r\n /**\r\n * onTouch function registered via registerOnTouch (ControlValueAccessor).\r\n * @docs-private\r\n */\r\n _onTouched: () => any = () => { };\r\n\r\n\r\n /**\r\n * Helper method that sets a property on a target element using the current Renderer\r\n * implementation.\r\n * @nodoc\r\n */\r\n protected setProperty(key: string, value: any): void {\r\n this._renderer.setProperty(this._elementRef.nativeElement, key, value);\r\n }\r\n\r\n @Output() readonly change: EventEmitter<any> = new EventEmitter<any>();\r\n @Output() readonly changing: EventEmitter<CancelArgs> = new EventEmitter<CancelArgs>();\r\n\r\n private _name: string = `zek-${++this.uniqueId}`;\r\n get name(): string {\r\n return this._name;\r\n }\r\n @Input()\r\n set name(value: string) {\r\n if (this._name !== value) {\r\n this._name = value;\r\n this.onNameChanged();\r\n }\r\n }\r\n onNameChanged() { }\r\n \r\n\r\n private _isInitialized = false;\r\n get isInitialized() {\r\n return this._isInitialized;\r\n }\r\n\r\n protected _value: any = null;\r\n get value(): any {\r\n return this._value;\r\n }\r\n @Input()\r\n set value(newValue: any) {\r\n if (this._value !== newValue) {\r\n const cancelEventArgs: CancelArgs = {\r\n oldValue: this._value,\r\n newValue: newValue\r\n };\r\n\r\n this.onValueChanging(cancelEventArgs);\r\n if (cancelEventArgs.cancel === true)\r\n return;\r\n\r\n // Set this before proceeding to ensure no circular loop occurs with selection.\r\n this._value = newValue;\r\n this.onValueChanged();\r\n }\r\n }\r\n onValueChanging(e: CancelArgs) {\r\n this.changing.emit(e);\r\n }\r\n onValueChanged() { }\r\n\r\n /**\r\n * Use this method for client side change\r\n * @param newValue \r\n */\r\n setNgModel(newValue: any) {\r\n if (!this.disabled) {\r\n if (this._value !== newValue) {\r\n this.value = newValue;\r\n this._emitChangeEvent();\r\n this._onChange(this._value);//write value to NgModel\r\n }\r\n }\r\n }\r\n\r\n private _readonly = false;\r\n /** Whether the component is disabled */\r\n get readonly(): boolean {\r\n return this._readonly;\r\n }\r\n @Input()\r\n set readonly(value: BooleanInput) {\r\n const v = Convert.toBooleanProperty(value);\r\n if (this._readonly !== v) {\r\n this._readonly = v;\r\n this.onReadOnlyChanged();\r\n }\r\n }\r\n onReadOnlyChanged() { }\r\n\r\n\r\n private _disabled = false;\r\n /** Whether the component is disabled */\r\n get disabled(): boolean {\r\n return this._disabled;\r\n }\r\n @Input()\r\n set disabled(value: BooleanInput) {\r\n const v = Convert.toBooleanProperty(value);\r\n if (this._disabled !== v) {\r\n this._disabled = v;\r\n this.onDisabledChanged();\r\n }\r\n }\r\n onDisabledChanged() { }\r\n\r\n\r\n private _required = false;\r\n /** Whether the component is required */\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n @Input()\r\n set required(value: BooleanInput) {\r\n const v = Convert.toBooleanProperty(value);\r\n if (this._required !== v) {\r\n this._required = v;\r\n this.onRequiredChanged();\r\n }\r\n }\r\n onRequiredChanged() { }\r\n\r\n\r\n _onInputInteraction(event: Event) {\r\n // We always have to stop propagation on the change event.\r\n // Otherwise the change event, from the input element, will bubble up and\r\n // emit its event object to the `change` output.\r\n event.stopPropagation();\r\n this.setNgModel((event.target as any).value);\r\n }\r\n\r\n /** Dispatch change event with current value. */\r\n _emitChangeEvent(): void {\r\n if (this._isInitialized) {\r\n this.change.emit(this._value);\r\n }\r\n }\r\n\r\n\r\n ngAfterContentInit() {\r\n // Mark this component as initialized in AfterContentInit because the initial value can\r\n // possibly be set by NgModel on component, and it is possible that the OnInit of the\r\n // NgModel occurs *after* the OnInit of the component.\r\n this._isInitialized = true;\r\n }\r\n\r\n\r\n /**\r\n * Sets the model value. Implemented as part of ControlValueAccessor.\r\n * (write from model to el.nativeElement)\r\n * @param value\r\n */\r\n writeValue(value: any) {\r\n this.value = value;\r\n //this._changeDetector.markForCheck();\r\n //this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n }\r\n\r\n /**\r\n * Registers a callback to be triggered when the model value changes.\r\n * Implemented as part of ControlValueAccessor.\r\n * @param fn Callback to be registered.\r\n */\r\n registerOnChange(fn: (_: any) => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback to be triggered when the control is touched.\r\n * Implemented as part of ControlValueAccessor.\r\n * @param fn Callback to be registered.\r\n */\r\n registerOnTouched(fn: any) {\r\n this._onTouched = fn;\r\n }\r\n\r\n\r\n /**\r\n * Sets the disabled state of the control. Implemented as a part of ControlValueAccessor.\r\n * @param isDisabled Whether the control should be disabled.\r\n */\r\n setDisabledState(isDisabled: boolean) {\r\n this.disabled = isDisabled;\r\n //this._changeDetector.markForCheck();\r\n //this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n}","import { ViewChild, Directive, inject } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\n\r\nimport { BaseComponent } from './base.component';\r\nimport { ApproveModel, IObjectConstructor, PrintType } from '../models';\r\nimport { ZekModal } from '../modules/modal/modal/modal.component';\r\nimport { AlertService } from '../services/alert.service';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { IService } from '../services';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n@Directive()\r\nexport class EditFormComponent<TModel = any> extends BaseComponent<TModel> {\r\n id?: number | null;\r\n id2?: number | null;\r\n @ViewChild('f', { static: false }) form?: NgForm;\r\n\r\n\r\n approveModel: ApproveModel = {};\r\n @ViewChild('approveModal', { static: false }) protected readonly approveModal?: ZekModal;\r\n @ViewChild('disapproveModal', { static: false }) protected readonly disapproveModal?: ZekModal;\r\n // @ViewChild('submitModal', { static: false }) protected readonly submitModal?: ModalComponent;\r\n\r\n override init() {\r\n super.init();\r\n const idParam = this.getParam('id') || this.getQueryParam('id');\r\n if (idParam)\r\n this.id = +idParam;\r\n\r\n const id2Param = this.getParam('id2') || this.getQueryParam('id2');\r\n if (id2Param)\r\n this.id2 = +id2Param;\r\n }\r\n\r\n override async bindModel() {\r\n if (this.id) {\r\n this.model = await this.getModel();\r\n }\r\n else {\r\n this.initCreate();\r\n }\r\n }\r\n\r\n protected initCreate() {\r\n this.model = {} as TModel;\r\n }\r\n\r\n protected getModel(): Promise<any> {\r\n throw 'Not implemented getModel';\r\n }\r\n\r\n onSubmit(f: NgForm) {\r\n this.save(f);\r\n }\r\n async save(f?: NgForm) {\r\n if (!f || f.valid) {\r\n return await this.internalSave(true);\r\n }\r\n\r\n return false;\r\n }\r\n protected internalSave(navigateToReturnUrl?: boolean): Promise<boolean> {\r\n throw 'Not implemented internalSave';\r\n }\r\n\r\n\r\n showApproveModal() {\r\n this.approveModel = {};\r\n if (this.approveModal) {\r\n this.approveModal.show();\r\n }\r\n else {\r\n throw new Error('approveModal is null or undefined');\r\n }\r\n }\r\n async approve() {\r\n if (this.id) {\r\n this.approveModel.ids = [this.id];\r\n const approved = await this.internalApprove(this.approveModel);\r\n if (approved) {\r\n this.load();\r\n }\r\n }\r\n }\r\n protected internalApprove(model?: any): Promise<boolean> {\r\n throw 'Not implemented internalApprove';\r\n }\r\n\r\n showDisapproveModal() {\r\n this.approveModel = {};\r\n if (this.disapproveModal) {\r\n this.disapproveModal.show();\r\n }\r\n else {\r\n throw new Error('disapproveModal is null or undefined');\r\n }\r\n }\r\n async disapprove() {\r\n if (this.id) {\r\n this.approveModel.ids = [this.id];\r\n const disapproved = await this.internalDisapprove(this.approveModel);\r\n if (disapproved) {\r\n this.load();\r\n }\r\n }\r\n }\r\n protected internalDisapprove(model?: any): Promise<boolean> {\r\n throw 'Not implemented internalDisapprove';\r\n }\r\n}\r\n\r\n@Directive()\r\nexport class EditBaseComponent<TModel = any> extends EditFormComponent<TModel> {\r\n constructor(readonly service: IService) {\r\n super();\r\n }\r\n\r\n readonly translate = inject(TranslateService);\r\n readonly alert = inject(AlertService);\r\n\r\n\r\n protected override async internalSave(navigateToReturnUrl?: boolean | null): Promise<boolean> {\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.service.save(this.model));\r\n let success = false;\r\n if (typeof data === 'number' && data > 0) {\r\n success = true;\r\n this.id = data;\r\n } else if (typeof data === 'object' && data?.success) {\r\n success = true;\r\n }\r\n\r\n if (success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.SaveSuccess'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n\r\n if (navigateToReturnUrl === true) {\r\n this.navigateReturnUrl();\r\n }\r\n\r\n return true;\r\n // if (navigateToReturnUrl) {\r\n // this.navigateReturnUrl();\r\n // } else if (!this.id) {//if insert\r\n // this.router.navigate([this.router.url.substring(0, this.router.url.length - 6), id]);\r\n // }\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.SaveError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n protected override async internalApprove(model?: any): Promise<boolean> {\r\n const data = await firstValueFrom(this.service.approve(model));\r\n if (data && data.length > 0) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Approved'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n return true;\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.ApproveError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n protected override async internalDisapprove(model?: any): Promise<boolean> {\r\n const data = await firstValueFrom(this.service.disapprove(model));\r\n if (data && data.length > 0) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Disapproved'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n return true;\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.DisapproveError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n protected async internalSubmit(model?: any): Promise<boolean> {\r\n const data = await firstValueFrom(this.service.approve(model));\r\n if (data && data.length > 0) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Submitted'));\r\n this.alert.success(message, null, 'fa-solid fa-floppy-disk');\r\n return true;\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.SubmitError'));\r\n this.alert.error(message, null, 'fa-solid fa-floppy-disk');\r\n return false;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n protected override async getModel() {\r\n if (this.id2)\r\n return await firstValueFrom(this.service.get2(this.id, this.id2));\r\n else\r\n return await firstValueFrom(this.service.get(this.id));\r\n }\r\n protected override initCreate() {\r\n this.model = {} as TModel;\r\n }\r\n\r\n override print(printType?: PrintType) {\r\n super.print(this.id, printType);\r\n }\r\n\r\n async restore() {\r\n const data = await firstValueFrom(this.service.restore(this.id))\r\n if (data?.success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Restored'));\r\n this.alert.success(message);\r\n this.load();\r\n }\r\n }\r\n export(fileTypeId: number) {\r\n this.service.export({ id: this.id }, fileTypeId).subscribe(data => {\r\n this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n });\r\n }\r\n}\r\n\r\n@Directive()\r\nexport class EditComponent<TModel> extends EditBaseComponent<TModel> {\r\n constructor(private readonly _ctorModel: IObjectConstructor<TModel>, service: IService) {\r\n super(service);\r\n }\r\n\r\n protected override initCreate() {\r\n this.model = new this._ctorModel();\r\n }\r\n}","export class EditBase {\r\n id?: number | null;\r\n\r\n isDeleted?: boolean | null;\r\n readOnly?: boolean | null;\r\n}","export class FilterBase {\r\n id?: number | null = null;\r\n isDeleted: boolean | null = null;\r\n quickSearch: string | null = null;\r\n\r\n page: number = 1;\r\n pageSize: number = 10;\r\n\r\n sort: string | null = null;\r\n asc = false;\r\n}","export enum Gender {\r\n Male = 1,\r\n Female = 2,\r\n}","export class KeyPair<TKey = any, TValue = any> {\r\n key?: TKey | null;\r\n value?: TValue | null;\r\n\r\n constructor(init?: Partial<KeyPair>) {\r\n if (init) {\r\n Object.assign(this, init);\r\n }\r\n }\r\n}\r\n\r\nexport class KeyPairEx<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n [key: string]: any\r\n}\r\n\r\nexport class KeyPairChecked<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n checked?: boolean | null;\r\n\r\n}\r\n\r\nexport class KeyPairRequired<TKey = any, TValue = any> extends KeyPair<TKey, TValue> {\r\n required?: boolean | null;\r\n}","export class ListBase {\r\n id?: number | null;\r\n isDeleted?: boolean | null;\r\n}","export enum Month\r\n{\r\n January = 1,\r\n February = 2,\r\n March = 3,\r\n April = 4,\r\n May = 5,\r\n June = 6,\r\n July = 7,\r\n August = 8,\r\n September = 9,\r\n October = 10,\r\n November = 11,\r\n December = 12\r\n}","export class Pager {\r\n totalItemCount = 0;\r\n pageCount = 1;\r\n pageNumber = 1;\r\n pageSize = 25;\r\n hasPreviousPage = false;\r\n hasNextPage = false;\r\n isFirstPage = false;\r\n isLastPage = false;\r\n firstItemOnPage = 0;\r\n lastItemOnPage = 0;\r\n pages: number[] = [];\r\n}\r\n\r\n\r\nexport class PagedList<T = any> {\r\n items: T[] = [];\r\n\r\n pager: Pager = new Pager();\r\n\r\n totalItemCount = 0;\r\n count = 0;\r\n pageNumber = 1;\r\n pageSize = 25;\r\n\r\n pageCount = 1;\r\n hasPreviousPage = false;\r\n hasNextPage = false;\r\n isFirstPage = false;\r\n isLastPage = false;\r\n firstItemOnPage = 0;\r\n lastItemOnPage = 0;\r\n}","import { KeyPairChecked } from './key-pair.model';\r\n\r\n/**\r\n * @deprecated use ITreeNode\r\n */\r\nexport class Tree extends KeyPairChecked<number, string> {\r\n parentId?: number | null;\r\n children?: Tree[] | null;\r\n childrenCount?: number | null;\r\n indent?: number | null;\r\n childrenIds?: number[] | null;\r\n}","export class ValidEventArgs {\r\n valid = true;\r\n}","import { ViewChild, Directive, inject, Input } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nimport { IService } from '../services';\r\nimport { BaseComponent } from './base.component';\r\nimport { ApproveModel, FilterBase, PagedList, Pager, PrintType } from '../models';\r\nimport { ZekModal } from '../modules/modal/modal/modal.component';\r\nimport { AlertService } from '../services/alert.service';\r\nimport { ArrayHelper, Convert, FilterHelper, PagerHelper, StorageHelper, StringHelper, UrlHelper } from '../utils';\r\nimport { firstValueFrom } from 'rxjs';\r\nimport { BooleanInput } from './types';\r\n// declare let bootstrap: any;\r\n\r\n@Directive()\r\nexport class ListBaseComponent<TService extends IService = IService, TPagedListItem = any> extends BaseComponent<PagedList<TPagedListItem>> {\r\n filter: any = new FilterBase();\r\n saveFilter = true;\r\n sortFields: any;\r\n protected internalFilter: any = new FilterBase();\r\n isFiltered = false;\r\n selectedIds: any[] = [];\r\n selectedItems: any[] = [];\r\n pager = new Pager();\r\n sumModel: any;\r\n tableId = 'table';\r\n\r\n private _initItems = true;\r\n get initItems(): boolean {\r\n return this._initItems;\r\n }\r\n @Input()\r\n set initItems(v: BooleanInput) {\r\n this._initItems = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @ViewChild('filterModal', { static: false }) protected readonly filterModal?: ZekModal | null;\r\n\r\n approveModel: ApproveModel = {};\r\n @ViewChild('approveModal', { static: false }) protected readonly approveModal?: ZekModal | null;\r\n protected approvedMesage = 'Alert.Approved';\r\n\r\n @ViewChild('disapproveModal', { static: false }) protected readonly disapproveModal?: ZekModal | null;\r\n protected disapprovedMesage = 'Alert.Disapproved';\r\n\r\n constructor(protected readonly service: TService) {\r\n super();\r\n }\r\n\r\n\r\n readonly translate = inject(TranslateService);\r\n readonly alert = inject(AlertService);\r\n\r\n\r\n\r\n\r\n\r\n\r\n override init() {\r\n super.init();\r\n\r\n this.reset();\r\n this.initDefaultFilter();\r\n this.initStoredFilter();\r\n this.assignFilter();\r\n }\r\n override async bindModel() {\r\n // this.selectedIds = [];\r\n this.model = await firstValueFrom(this.apiGetAll(this.internalFilter));\r\n if (this.model) {\r\n let totalCount = this.model.totalItemCount;\r\n if (!totalCount && this.model.pager) {\r\n totalCount = this.model.pager ? (this.model.pager.totalItemCount || 0) : 0;\r\n }\r\n this.pager = PagerHelper.get(totalCount, this.model.pageNumber, this.model.pageSize);\r\n this.onBindModelCompleted();\r\n }\r\n else {\r\n this.pager = new Pager();\r\n }\r\n //this.pagedList.pager = this.pager;\r\n }\r\n apiGetAll(filter: any) {\r\n return this.service.getAll(filter);\r\n }\r\n scrollTop() {\r\n const el = document.getElementById(this.tableId);\r\n el?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' });\r\n }\r\n override onBindModelCompleted() {\r\n if (this.initItems) {\r\n if (this.model && ArrayHelper.isArray(this.model.items) && ArrayHelper.isArray(this.selectedIds)) {\r\n for (const item of this.model.items) {\r\n const tmp = item as any;\r\n tmp.selected = this.selectedIds.includes(tmp.id);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n protected initDefaultFilter() {\r\n }\r\n private initStoredFilter() {\r\n const filterParam = this.getQueryParam('filter') || this.getParam('filter');\r\n\r\n if (filterParam) {\r\n const tmp = StorageHelper.get('filter');\r\n if (tmp && tmp.url && tmp.url === this.url && tmp.filter) {\r\n this.filter = Object.assign({}, tmp.filter);\r\n //we dont need this.assignFilter(); because after initStoredFilter(); will be assigned.\r\n } else {\r\n localStorage.removeItem('filter');\r\n }\r\n } else {\r\n localStorage.removeItem('filter');\r\n }\r\n }\r\n async changePage(page: number) {\r\n this.internalFilter.page = page;\r\n this.filter.page = page;\r\n await this.bindModel();\r\n this.autoSaveFilter();\r\n this.scrollTop();\r\n }\r\n changePageSize(pageSize: number) {\r\n this.internalFilter.pageSize = pageSize;\r\n this.filter.pageSize = pageSize;\r\n this.changePage(1);\r\n }\r\n showFilter() {\r\n this.filterModal?.show();\r\n }\r\n search() {\r\n this.assignFilter();\r\n\r\n // this.changePage(1);\r\n //can't use this because don't want to execute scrollTop\r\n this.internalFilter.page = 1;\r\n this.filter.page = 1;\r\n this.bindModel();\r\n this.autoSaveFilter();\r\n }\r\n protected assignFilter() {\r\n this.internalFilter = Object.assign({}, this.filter);\r\n this.isFiltered = !FilterHelper.isEmpty(this.internalFilter);\r\n }\r\n private autoSaveFilter() {\r\n if (this.saveFilter)\r\n this.internalSaveFilter()\r\n }\r\n private internalSaveFilter() {\r\n StorageHelper.set('filter', {\r\n url: this.url,\r\n filter: this.internalFilter\r\n });\r\n }\r\n reset() {\r\n this.filter = { page: 1, pageSize: 25 };\r\n this.assignFilter();\r\n }\r\n refresh() {\r\n this.bindModel();\r\n }\r\n\r\n\r\n create() {\r\n const url = UrlHelper.getNoParam(this.router.url);\r\n // this.router.navigate([url, 'create', { returnUrl: url + ';filter=1' }]);\r\n this.router.navigate([url, 'create'],\r\n { queryParams: { returnUrl: url + '?filter=1' } }\r\n );\r\n }\r\n async delete(id: any) {\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiDelete(id));\r\n if (data?.success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Deleted'));\r\n this.alert.error(message, null, 'fa-solid fa-trash')\r\n this.refresh();\r\n }\r\n }\r\n apiDelete(id: any) {\r\n return this.service.delete(id);\r\n }\r\n\r\n async delete2(id: any, id2: any) {\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiDelete2(id, id2))\r\n if (data?.success) {\r\n const message = await firstValueFrom(this.translate.get('Alert.Deleted'));\r\n this.alert.error(message, null, 'fa-solid fa-trash')\r\n this.refresh();\r\n }\r\n }\r\n apiDelete2(id: any, id2: any) {\r\n return this.service.delete2(id, id2);\r\n }\r\n\r\n edit(id: number) {\r\n // this.router.navigate([this.url, id],\r\n // { queryParams: { returnUrl: this.url + ';filter=1' } }\r\n // );\r\n\r\n this.router.navigate([this.url, id],\r\n { queryParams: { returnUrl: this.url + '?filter=1' } }\r\n );\r\n }\r\n edit2(id: number, id2: number) {\r\n // this.router.navigate([this.url, id, id2, { returnUrl: this.url + ';filter=1' }]);\r\n this.router.navigate([this.url, id, id2],\r\n { queryParams: { returnUrl: this.url + '?filter=1' } }\r\n );\r\n }\r\n select(item: any) {\r\n item.selected = !item.selected;\r\n const id = item.id;\r\n if (id) {\r\n if (item.selected) {\r\n if (!this.selectedIds.includes(id)) {\r\n this.selectedIds.push(id);\r\n this.selectedItems.push(item);\r\n }\r\n\r\n } else {\r\n this.selectedIds = this.selectedIds.filter(item => item !== id);\r\n this.selectedItems = this.selectedItems.filter(item => item.id !== id);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n showApproveModal(id: number) {\r\n if (!id || !this.approveModal) return;\r\n\r\n const tmp = { ids: [id] };\r\n this.approveModel = {};\r\n this.approveModal.show(tmp);\r\n }\r\n showApproveSelectedModal() {\r\n const tmp = { ids: this.getSelectedIds() };\r\n if (!tmp.ids || tmp.ids.length === 0 || !this.approveModal) return;\r\n\r\n this.approveModel = {};\r\n this.approveModal.show(tmp);\r\n }\r\n async approve(model: any) {\r\n if (!model) return;\r\n\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiApprove(model));\r\n if (!data || data.length === 0)\r\n return;\r\n\r\n const message = await firstValueFrom(this.translate.get(this.approvedMesage));\r\n this.alert.success(message, null, 'fa-solid fa-thumbs-up')\r\n this.refresh();\r\n }\r\n apiApprove(model: any) {\r\n return this.service.approve(model);\r\n }\r\n\r\n\r\n showDisapproveModal(id: number) {\r\n if (!id || !this.disapproveModal) return;\r\n\r\n const tmp = { ids: [id] };\r\n this.approveModel = {};\r\n this.disapproveModal.show(tmp);\r\n }\r\n showDisapproveSelectedModal() {\r\n const tmp = { ids: this.getSelectedIds() };\r\n if (!tmp.ids || tmp.ids.length === 0 || !this.disapproveModal) return;\r\n\r\n this.approveModel = {};\r\n this.disapproveModal.show(tmp);\r\n }\r\n async disapprove(model: any) {\r\n if (!model || !this.approveModel) return;\r\n\r\n if (typeof model === 'object') {\r\n model.status = this.approveModel.status;\r\n model.comment = StringHelper.tryTrim(this.approveModel.comment);\r\n if (!model.comment) delete model.comment;\r\n }\r\n\r\n this.alert.clear();\r\n const data = await firstValueFrom(this.apiDisapprove(model));\r\n if (!data || data.length === 0)\r\n return;\r\n\r\n const message = await firstValueFrom(this.translate.get(this.disapprovedMesage));\r\n this.alert.success(message, null, 'fa-solid fa-thumbs-down')\r\n this.refresh();\r\n }\r\n apiDisapprove(model: any) {\r\n return this.service.disapprove(model);\r\n }\r\n\r\n getSelectedIds() {\r\n return this.selectedIds;\r\n // if (!this.pagedList || !this.pagedList.items) return [];\r\n\r\n // let ids = [];\r\n // for (const item of this.pagedList.items) {\r\n // if (!item.selected || !item.id) continue;\r\n\r\n // ids.push(item.id);\r\n // }\r\n // return ids;\r\n }\r\n\r\n showSum() { }\r\n async sum() {\r\n this.sumModel = null;\r\n const data = await firstValueFrom(this.apiSum(this.internalFilter));\r\n if (data) {\r\n this.sumModel = data;\r\n this.showSum();\r\n } else {\r\n const message = await firstValueFrom(this.translate.get('Alert.SumError'));\r\n this.alert.error(message);\r\n }\r\n }\r\n apiSum(filter: any) {\r\n return this.service.sum(filter);\r\n }\r\n\r\n export(fileTypeId: number) {\r\n this.service.export(this.internalFilter, fileTypeId).subscribe(data => {\r\n this.downloadFile(data, 'export.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\r\n });\r\n }\r\n\r\n\r\n override print(printType?: PrintType) {\r\n if (!this.model || !this.model.items) return;\r\n\r\n const ids = this.getSelectedIds();\r\n for (const id of ids) {\r\n super.print(id, printType);\r\n }\r\n }\r\n}","import { Directive, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Convert, MathHelper } from '../utils';\r\nimport { NumberInput } from '../components';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[zek-delayed-input]'\r\n})\r\nexport class ZekDelayedInputDirective implements OnInit {//OnChanges\r\n\r\n private _inputSubject$ = new Subject<string>();\r\n @Output() delayedInput = new EventEmitter<string>();\r\n\r\n private _delay = 500;\r\n get delay(): number {\r\n return this._delay;\r\n }\r\n @Input()\r\n set delay(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v), 1, 3_600_000);\r\n if (this._delay !== tmp) {\r\n this._delay = tmp;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n this.initSubscription();\r\n }\r\n\r\n private initSubscription() {\r\n // Emit values after the specified debounce time\r\n this._inputSubject$.pipe(debounceTime(this.delay)).subscribe((value) => {\r\n this.delayedInput.emit(value);\r\n });\r\n }\r\n\r\n // ngOnChanges(changes: SimpleChanges) {\r\n // if (changes['delayTime']) {\r\n // // Reset the subscription when delayTime changes\r\n // this._inputSubject$ = new Subject<string>(); // Replace the Subject\r\n // this.initSubscription(); // Reinitialize with the new delayTime\r\n // }\r\n // }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n onInput(value: string) {\r\n this._inputSubject$.next(value); // Push new value to the Subject\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'age'\r\n})\r\nexport class AgePipe implements PipeTransform {\r\n transform(value: any, now?: any): number | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n \r\n const date = DateHelper.toDate(value);\r\n\r\n const timeDiff = (now ? DateHelper.toDate(now).getTime() : Date.now()) - date.getTime();\r\n return Math.floor((timeDiff / (1000 * 3600 * 24)) / 365.25);\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput, CoreComponent } from '../../../components';\r\nimport { AlertType } from '../../../models';\r\nimport { Convert } from '../../../utils';\r\nimport { BootstrapHelper } from '../../../utils/bootstrap.helper';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-alert',\r\n templateUrl: './alert.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule]\r\n})\r\nexport class ZekAlert extends CoreComponent {\r\n private _type: AlertType | null | undefined = 'info';\r\n @Input()\r\n get type(): AlertType | null | undefined {\r\n return this._type;\r\n }\r\n set type(v: AlertType | null | undefined) {\r\n if (v !== this._type) {\r\n this._type = v\r\n this.init();\r\n }\r\n }\r\n\r\n _showClose = true;\r\n @Input()\r\n get showClose(): boolean {\r\n return this._showClose;\r\n }\r\n set showClose(v: BooleanInput) {\r\n this._showClose = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() title?: string | null;\r\n\r\n\r\n override init() {\r\n this.cssAlert = BootstrapHelper.cssAlert(this._type);\r\n this.cssIcon = BootstrapHelper.cssAlertIcon(this._type);\r\n }\r\n\r\n cssAlert = '';\r\n cssIcon = '';\r\n}\r\n\r\n","<div class=\"alert {{cssAlert}} alert-dismissible fade show\" role=\"alert\">\r\n <button *ngIf=\"_showClose\" type=\"button\" class=\"btn-close\" data-bs-dismiss=\"alert\" aria-label=\"Close\"></button>\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1\" *ngIf=\"cssIcon\">\r\n <span class=\"flex-shrink-0\"><i class=\"{{cssIcon}}\"></i></span>\r\n </div>\r\n <div class=\"col-auto\">\r\n <div *ngIf=\"title\">\r\n <h5 class=\"alert-heading\">{{title}}</h5>\r\n </div>\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { BootstrapHelper, Convert, MathHelper } from '../../../utils';\r\n\r\nimport { AlertService, Toast } from '../../../services/alert.service';\r\nimport { NumberInput } from '../../../components';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-toast',\r\n styleUrls: ['./toast.css'],\r\n templateUrl: './toast.html',\r\n imports: [CommonModule]\r\n})\r\nexport class ZekToast implements OnInit, OnDestroy {\r\n @Input()\r\n get delay(): number {\r\n return this._delay;\r\n }\r\n set delay(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 10, 3600000);\r\n if (this._delay !== tmp) {\r\n this._delay = tmp;\r\n }\r\n }\r\n _delay: number = 3000;\r\n \r\n \r\n @Input() icon = true;\r\n\r\n toasts: any[] = [];\r\n private _subscription?: Subscription;\r\n private _timeout: any;\r\n\r\n constructor(private readonly alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this._subscription = this.alertService.getToast().subscribe((toast: Toast) => {\r\n if (!toast) {\r\n // clear alerts when an empty alert is received\r\n this.toasts = [];\r\n return;\r\n }\r\n\r\n // add toast to array\r\n this.cssInit(toast);\r\n this.toasts.unshift(toast);\r\n\r\n this._timeout = setTimeout(() => {\r\n this.remove(toast);\r\n // let toastEl = document.getElementById(`toast-${toast.id}`);\r\n // let t = new bootstrap.Toast(toastEl);\r\n // t.show();\r\n }, this._delay);\r\n\r\n\r\n // let toastElList = [].slice.call(document.querySelectorAll('.toast'))\r\n // let toastList = toastElList.map(function (toastEl) {\r\n // return new bootstrap.Toast(toastEl)\r\n // })\r\n // toastList.forEach(t => {\r\n // t.show();\r\n // });\r\n });\r\n\r\n\r\n\r\n }\r\n\r\n\r\n ngOnDestroy() {\r\n if (this._subscription) {\r\n this._subscription.unsubscribe();\r\n }\r\n this.clearTimeout();\r\n }\r\n\r\n\r\n clear() {\r\n this.alertService.clear();\r\n }\r\n remove(toast: Toast) {\r\n this.toasts = this.toasts.filter(x => x !== toast);\r\n }\r\n\r\n clearTimeout() {\r\n if (this._timeout) {\r\n clearTimeout(this._timeout);\r\n this._timeout = null;\r\n }\r\n }\r\n\r\n\r\n cssInit(toast: Toast) {\r\n if (!toast || !toast.type)\r\n return;\r\n\r\n\r\n if (this.icon && !toast.icon) {\r\n toast.icon = BootstrapHelper.cssAlertIcon(toast.type);\r\n }\r\n\r\n let v = toast as any;\r\n switch (toast.type) {\r\n case 'primary':\r\n v.css = 'bg-primary text-white';\r\n break;\r\n case 'success':\r\n v.css = 'bg-success text-white';\r\n // v.iconColor = 'text--accent-green';\r\n // v.borderColor = 'border--accent-green';\r\n break;\r\n case 'danger':\r\n v.css = 'bg-danger text-white';\r\n // v.iconColor = 'text--accent-red';\r\n // v.borderColor = 'border--accent-red';\r\n break;\r\n case 'warning':\r\n v.css = 'bg-warning text-dark';\r\n // v.iconColor = 'text--accent-yellow';\r\n // v.borderColor = 'border--accent-yellow';\r\n break;\r\n case 'info':\r\n v.css = 'bg-info text-white';\r\n // v.iconColor = 'text--accent-blue';\r\n // v.borderColor = 'border--accent-blue';\r\n break;\r\n case 'light':\r\n v.css = 'bg-light text-dark';\r\n break;\r\n case 'dark':\r\n v.css = 'bg-dark text-white';\r\n break;\r\n\r\n\r\n default:\r\n v.css = 'bg-secondary text-white';\r\n break;\r\n }\r\n }\r\n}\r\n\r\n","<div class=\"toast-container position-fixed top-0 end-0 p-3\">\r\n <div *ngFor=\"let toast of toasts\" class=\"toast fade show border-0 {{ toast.css }}\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" [attr.data-bs-delay]=\"_delay\">\r\n <div class=\"toast-header\">\r\n <span class=\"me-1\" *ngIf=\"icon && toast.icon\"><i class=\"{{ toast.icon }}\"></i></span>\r\n <strong class=\"me-auto\" *ngIf=\"toast.title\">{{ toast.title }}</strong>\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n <div class=\"toast-body\">\r\n {{ toast.message }}\r\n </div>\r\n </div>\r\n <!-- <div *ngFor=\"let toast of toasts\" class=\"toast fade show\" role=\"alert\" aria-live=\"assertive\" aria-atomic=\"true\" data-bs-delay=\"3000\">\r\n <div class=\"toast-body\">\r\n <div class=\"row\">\r\n <div class=\"col-auto pe-1 border-start border-8 {{toast.borderColor}}\">\r\n <span *ngIf=\"toast.icon\" class=\"icon flex-shrink-0 {{toast.iconColor}}\"><i class=\"{{toast.icon}}\"></i></span>\r\n </div>\r\n <div class=\"col\">\r\n <div *ngIf=\"toast.title\"><h5>{{toast.title}}</h5></div>\r\n {{ toast.message }}\r\n </div>\r\n <div class=\"col-auto p-0\">\r\n <button type=\"button\" class=\"btn-close ms-auto me-2\" data-bs-dismiss=\"toast\" aria-label=\"Close\" (click)=\"remove(toast)\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { AlertService, Alert } from '../../../services/alert.service';\r\nimport { BootstrapHelper } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-validation',\r\n templateUrl: './validation.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule]\r\n})\r\nexport class ZekValidation implements OnInit, OnDestroy {\r\n alerts: Alert[] = [];\r\n private subscription?: Subscription;\r\n\r\n constructor(private readonly alertService: AlertService) { }\r\n\r\n ngOnInit() {\r\n this.subscription = this.alertService.getAlert().subscribe((alert: Alert) => {\r\n if (!alert) {\r\n // clear alerts when an empty alert is received\r\n this.alerts = [];\r\n return;\r\n }\r\n // add alert to array\r\n this.alerts.push(alert);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n\r\n\r\n clear() {\r\n this.alertService.clear();\r\n }\r\n remove(alert: Alert) {\r\n this.alerts = this.alerts.filter(x => x !== alert);\r\n }\r\n\r\n cssIcon(alert: Alert) {\r\n if (!alert) {\r\n return;\r\n }\r\n\r\n if (alert.icon && alert.icon.length > 0)\r\n return alert.icon;\r\n\r\n\r\n if (!alert.type) {\r\n return;\r\n }\r\n\r\n return BootstrapHelper.cssAlertIcon(alert.type);\r\n }\r\n\r\n cssAlert(alert: Alert) {\r\n if (!alert) {\r\n return;\r\n }\r\n\r\n return BootstrapHelper.cssAlert(alert.type);\r\n }\r\n}","<div *ngFor=\"let alert of alerts\" class=\"alert {{ cssAlert(alert) }} alert-dismissible fade show mt-3\" role=\"alert\">\r\n <button (click)=\"remove(alert)\" type=\"button\" class=\"btn-close\" aria-label=\"Close\"></button>\r\n <div *ngFor=\"let message of alert.messages\">\r\n <i *ngIf=\"cssIcon(alert)\" class=\"{{ cssIcon(alert) }}\"></i>\r\n {{message}}\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { AfterViewInit, ElementRef } from '@angular/core';\r\nimport { Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: 'form'\r\n})\r\nexport class ZekAutoComplete implements AfterViewInit {\r\n constructor(private readonly el: ElementRef, private readonly router: Router) {\r\n\r\n }\r\n ngAfterViewInit() {\r\n if (this.router.url === '/login') {\r\n return;\r\n }\r\n\r\n this.el.nativeElement.setAttribute('autocomplete', 'off');\r\n }\r\n}","import { Component, Input, Output, EventEmitter, forwardRef } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput } from '../../components';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { KeyPair, ModalSize, PagedList } from '../../models';\r\nimport { Convert, ObjectHelper } from '../../utils';\r\ndeclare let bootstrap: any;\r\n\r\n/**\r\n * Provider Expression that allows bb to register as a ControlValueAccessor. This\r\n * allows it to support [(ngModel)] and ngControl.\r\n * @docs-private\r\n */\r\nconst ZEK_BB_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ZekButtonBrowse),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-bb',\r\n templateUrl: './bb.component.html',\r\n providers: [ZEK_BB_CONTROL_VALUE_ACCESSOR],\r\n})\r\nexport class ZekButtonBrowse extends CoreUiComponent {\r\n override destroy() {\r\n this._modal?.dispose();\r\n this._modal = null;\r\n return super.destroy();\r\n }\r\n\r\n private _uniqueId: string = `zek-bb-${this.uniqueId}`;\r\n /** The unique ID for the bb. */\r\n @Input() id: string = this._uniqueId;\r\n get modalId(): string {\r\n return `${this.id || this._uniqueId}-modal`;\r\n }\r\n filter: any = {};\r\n data: PagedList = new PagedList();\r\n\r\n\r\n private _type?: string | null;\r\n @Input()\r\n get type() {\r\n return this._type;\r\n }\r\n set type(v: string | null | undefined) {\r\n if (this._type !== v) {\r\n this._type = v;\r\n this.onValueChanged();//get and set input text\r\n }\r\n }\r\n\r\n private _text: string | null = null;\r\n @Input()\r\n get text(): string | null {\r\n return this._text;\r\n }\r\n set text(v: string | null) {\r\n if (this._text !== v) {\r\n this._text = v\r\n this.onTextChanged();\r\n }\r\n }\r\n onTextChanged() {\r\n this.onKeyPairChange.emit(new KeyPair({ key: this._value, value: this._text }))\r\n }\r\n\r\n\r\n\r\n private _readOnly = false;\r\n @Input()\r\n get readOnly(): boolean {\r\n return this._readOnly;\r\n }\r\n set readOnly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n private _hide = false;\r\n @Input()\r\n get hide(): boolean {\r\n return this._hide;\r\n }\r\n set hide(v: BooleanInput) {\r\n this._hide = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showInput = true;\r\n @Input()\r\n get showInput(): boolean {\r\n return this._showInput;\r\n }\r\n set showInput(v: BooleanInput) {\r\n this._showInput = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _multiSelect = false;\r\n @Input()\r\n get multiSelect(): boolean {\r\n return this._multiSelect;\r\n }\r\n set multiSelect(v: BooleanInput) {\r\n this._multiSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n @Output() onShowModal = new EventEmitter();\r\n @Output() onChooseAll = new EventEmitter();\r\n @Output() onKeyPairChange = new EventEmitter<KeyPair>();\r\n @Output() onBindText = new EventEmitter();\r\n\r\n private _modal: any;\r\n get modal(): any {\r\n if (!this._modal) {\r\n const modalEl = document.getElementById(this.modalId);\r\n this._modal = new bootstrap.Modal(modalEl, { backdrop: false });\r\n }\r\n return this._modal;\r\n }\r\n set modal(v: any) {\r\n this._modal = v;\r\n }\r\n\r\n\r\n private _size: ModalSize = '';\r\n @Input()\r\n get size() {\r\n return this._size;\r\n }\r\n set size(v: ModalSize) {\r\n this._size = v;\r\n }\r\n\r\n private _scrollable = false;\r\n @Input()\r\n get scrollable(): boolean {\r\n return this._scrollable;\r\n }\r\n set scrollable(v: BooleanInput) {\r\n this._scrollable = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _fullscreen = false;\r\n @Input()\r\n get fullscreen(): boolean {\r\n return this._fullscreen;\r\n }\r\n set fullscreen(v: BooleanInput) {\r\n this._fullscreen = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showHeader = true;\r\n @Input()\r\n get showHeader(): boolean {\r\n return this._showHeader;\r\n }\r\n set showHeader(v: BooleanInput) {\r\n this._showHeader = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n showModal() {\r\n if (!this.disabled && !this.readOnly) {\r\n this.onShowModal.emit(this.filter);\r\n\r\n this.data = new PagedList();\r\n if (this.modal)\r\n this.modal.show();\r\n }\r\n }\r\n close() {\r\n this._modal?.hide();\r\n }\r\n\r\n\r\n\r\n choose(value: any) {\r\n if (!this.disabled && !this.readOnly) {\r\n this.setNgModel(value);\r\n this.close();\r\n }\r\n }\r\n chooseAll(filter: any) {\r\n this.onChooseAll.emit(filter);\r\n this.close();\r\n }\r\n\r\n delete() {\r\n if (!this.readOnly) {//!this.disabled && \r\n this.setNgModel(null);\r\n }\r\n }\r\n\r\n _onKey(event: KeyboardEvent) {\r\n if (event.key === 'Delete') {\r\n this.delete();\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n override onValueChanged() {\r\n if (ObjectHelper.isDefined(this._value) && ObjectHelper.isDefined(this._type)) {\r\n this.bindText();\r\n } else {\r\n this.text = null;\r\n }\r\n }\r\n bindText() {\r\n this.onBindText.emit();\r\n }\r\n}","<div *ngIf=\"!hide && showInput\" class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [ngClass]=\"{ 'ng-valid required': !required || value, 'ng-invalid': required && !value }\" (keyup)=\"_onKey($event)\" title=\"ID = {{value}}\" [value]=\"text\" [attr.readonly]=\"true\">\r\n <button type=\"button\" [disabled]=\"disabled || readOnly\" class=\"btn btn-outline-secondary\" (click)=\"showModal()\">\r\n <i class=\"fa-solid fa-ellipsis\"></i>\r\n </button>\r\n <button type=\"button\" [disabled]=\"disabled || readOnly\" class=\"btn btn-outline-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><a class=\"dropdown-item\" (click)=\"delete()\" href=\"javascript:void(0)\"> <i class=\"fa-solid fa-trash\"></i> Delete <kbd>delete</kbd> </a></li>\r\n </ul>\r\n</div>\r\n<div *ngIf=\"!hide || disabled || readOnly\" class=\"modal fade\" [id]=\"modalId\" tabindex=\"-1\" aria-labelledby=\"bb-modal-label\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" [ngClass]=\"{\r\n 'modal-sm': size === 'sm',\r\n 'modal-lg': size === 'lg', \r\n 'modal-xl': size === 'xl'\r\n }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n <h5 class=\"modal-title\" id=\"{{modalId}}-label\">{{'Action.Choose' | translate }}</h5>\r\n <button type=\"button\" (click)=\"close()\" class=\"btn-close\" data-bs-dismiss2=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-bb-modal-toolbar',\r\n templateUrl: './bb-modal-toolbar.html',\r\n})\r\nexport class ZekButtonBrowseModalToolbar {\r\n\r\n @Output() onSearch = new EventEmitter();\r\n search() {\r\n this.onSearch.emit();\r\n }\r\n\r\n @Output() onReset = new EventEmitter();\r\n reset() {\r\n this.onReset.emit();\r\n }\r\n\r\n private _multiSelect = false;\r\n @Input()\r\n get multiSelect(): boolean {\r\n return this._multiSelect;\r\n }\r\n set multiSelect(v: BooleanInput) {\r\n this._multiSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Output() onChooseAll = new EventEmitter();\r\n chooseAll() {\r\n if (!this.multiSelect) return;\r\n this.onChooseAll.emit();\r\n }\r\n\r\n // @Output()\r\n // onCreate = new EventEmitter();\r\n // create() {\r\n // this.onCreate.emit();\r\n // }\r\n}","<ng-content select=\"[left]\"></ng-content>\r\n<button type=\"button\" (click)=\"search()\" class=\"btn btn-primary me-2\" id=\"bb-filter-button\" title=\"Filter\">\r\n <i class=\"fa-solid fa-filter\" aria-hidden=\"true\"></i>\r\n</button>\r\n<button type=\"button\" (click)=\"reset()\" class=\"btn btn-secondary me-2\" title=\"Reset\">\r\n <i class=\"fa-solid fa-xmark\" aria-hidden=\"true\"></i>\r\n</button>\r\n<button *ngIf=\"multiSelect\" type=\"button\" (click)=\"chooseAll()\" class=\"btn btn-secondary me-2\" title=\"Choose All\">\r\n <i class=\"fa-solid fa-hand-point-up\" aria-hidden=\"true\"></i>\r\n</button>\r\n<ng-content></ng-content>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { ZekButtonBrowse } from './bb.component';\r\nimport { ZekButtonBrowseModalToolbar } from './bb-modal-toolbar';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n TranslateModule,\r\n ],\r\n declarations: [\r\n ZekButtonBrowse,\r\n ZekButtonBrowseModalToolbar\r\n ],\r\n exports: [\r\n ZekButtonBrowse,\r\n ZekButtonBrowseModalToolbar\r\n ]\r\n})\r\nexport class ZekButtonBrowseModule { }","import { Directive, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { BooleanInput, CoreComponent } from \"../../components\";\r\nimport { PagedList } from \"../../models\";\r\nimport { Convert } from \"../../utils\";\r\n\r\n@Directive()\r\nexport class ZekButtonBrowseModalBase extends CoreComponent {\r\n @Input() type?: string | null;\r\n @Input() filter: any = {};\r\n @Input() data?: PagedList | null;\r\n\r\n private _multiSelect = false;\r\n @Input() get multiSelect() : boolean {\r\n return this._multiSelect;\r\n }\r\n set multiSelect(v: BooleanInput) {\r\n this._multiSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() value: any;\r\n\r\n @Output() onChoose = new EventEmitter();\r\n choose(value: any) {\r\n this.onChoose.emit(value);\r\n }\r\n\r\n @Output() onChooseAll = new EventEmitter();\r\n chooseAll() {\r\n this.onChooseAll.emit(this.filter);\r\n }\r\n\r\n onKeydown(e: Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.search();\r\n }\r\n\r\n bindData() { }\r\n async refresh() {\r\n try {\r\n this.loading = true;\r\n await this.bindData();\r\n }\r\n finally {\r\n this.loading = false;\r\n }\r\n\r\n }\r\n onPageChange(page: number) {\r\n this.filter.page = page;\r\n this.refresh();\r\n }\r\n onPageSizeChange(pageSize: number) {\r\n this.filter.pageSize = pageSize;\r\n this.onPageChange(1);\r\n }\r\n\r\n search() {\r\n this.onPageChange(1);\r\n }\r\n\r\n reset() {\r\n this.filter = {};\r\n }\r\n}","import { PipeTransform, Pipe } from '@angular/core';\r\n\r\n@Pipe({\r\n standalone:true,\r\n name: 'callback',\r\n pure: false//this pure need because we are changing filter model and pure=false is handling\r\n})\r\nexport class ZekCallbackPipe implements PipeTransform {\r\n transform(items: any[], callback: (item: any, filter?: any) => boolean, filter?: any): any {\r\n if (!items || !callback) {\r\n return items;\r\n }\r\n\r\n return filter\r\n ? items.filter(item => callback(item, filter))\r\n : items.filter(item => callback(item));\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, ElementRef, ViewChild, AfterViewInit, ChangeDetectorRef, Input } from '@angular/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-card',\r\n templateUrl: './card.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule]\r\n})\r\nexport class ZekCard implements AfterViewInit {\r\n /**\r\n *\r\n */\r\n constructor(private readonly cdRef: ChangeDetectorRef) {\r\n }\r\n\r\n @ViewChild('headerRef') private headerWrapper: ElementRef | undefined;\r\n @ViewChild('bodyRef') private bodyRef: ElementRef | undefined;\r\n // @ViewChild('contentRef') private contentRef: ElementRef | undefined;\r\n @ViewChild('footerRef') private footerRef: ElementRef | undefined;\r\n\r\n private _css = '';\r\n @Input()\r\n get css() {\r\n return this._css;\r\n }\r\n set css(value: string | null | undefined) {\r\n this._css = value || '';\r\n }\r\n showHeader = true;\r\n showBody = true;\r\n\r\n // showContent = true;\r\n showFooter = true;\r\n\r\n ngAfterViewInit() {\r\n this.showHeader = this.headerWrapper ? this.headerWrapper.nativeElement.childNodes.length > 0 : false;\r\n this.showBody = this.bodyRef ? this.bodyRef.nativeElement.children.length > 0 : false;\r\n // this.showContent = this.contentRef ? this.contentRef.nativeElement.children.length > 0 : false;\r\n this.showFooter = this.footerRef ? this.footerRef.nativeElement.childNodes.length > 0 : false;\r\n\r\n this.cdRef.detectChanges();\r\n }\r\n}","<div class=\"card {{css}}\">\r\n <div class=\"card-header\" #headerRef *ngIf=\"showHeader\">\r\n <ng-content select=\"[card-header]\"></ng-content>\r\n </div>\r\n <div class=\"card-body\" #bodyRef *ngIf=\"showBody\">\r\n <ng-content select=\"[card-body]\"></ng-content>\r\n </div>\r\n <ng-content></ng-content>\r\n <div class=\"card-footer\" #footerRef *ngIf=\"showFooter\">\r\n <ng-content select=\"[card-footer]\"></ng-content>\r\n </div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { interval, Observable, Subject, Subscription, timer } from 'rxjs';\r\nimport { CoreComponent } from '../../components';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [],\r\n selector: 'zek-countdown',\r\n templateUrl: 'countdown.html'\r\n})\r\nexport class ZekCountdown extends CoreComponent {\r\n override destroy() {\r\n stop();\r\n return super.destroy();\r\n }\r\n\r\n\r\n left = {\r\n days: 0,\r\n hours: 0,\r\n hh: '00',\r\n minutes: 0,\r\n mm: '00',\r\n seconds: 0,\r\n ss: '00'\r\n }\r\n date = new Date();\r\n\r\n\r\n private _interval$?: Observable<number> | null;\r\n private _subscription?: Subscription;\r\n\r\n\r\n // private _onTickSubject?: Subject<void>;\r\n // private _onTickObservable?: Observable<void>;\r\n // get onRefreshToken(): Observable<void> {\r\n // if (!this._onTickSubject) {\r\n // this._onTickSubject = new Subject<void>();\r\n // this._onTickObservable = this._onTickSubject.asObservable();\r\n // }\r\n\r\n // if (!this._onTickObservable)\r\n // throw new Error(\"_onTickObservable is undefined\");\r\n\r\n // return this._onTickObservable;\r\n // }\r\n\r\n override init() {\r\n this.start();\r\n this.tick();\r\n }\r\n\r\n private _targetDate: Date | null = null;\r\n private _targetTime: number | null = null;\r\n get targetDate(): Date | null {\r\n return this._targetDate;\r\n }\r\n @Input()\r\n set targetDate(v: Date | string | number | null | undefined) {\r\n this._targetDate = DateHelper.parseDate(v)\r\n this._targetTime = this._targetDate ? this._targetDate.getTime() : null;\r\n }\r\n\r\n\r\n start() {\r\n this._interval$ = interval(1000);\r\n this._subscription = this._interval$.subscribe(() => {\r\n this.emitTick();\r\n });\r\n }\r\n stop() {\r\n this._subscription?.unsubscribe();\r\n this._interval$ = null;\r\n\r\n // this._onTickSubject?.complete();\r\n // this._onTickSubject?.unsubscribe();\r\n }\r\n\r\n emitTick() {\r\n this.tick();\r\n // this._onTickSubject?.next();\r\n }\r\n\r\n\r\n\r\n reset() {\r\n this.left = {\r\n days: 0,\r\n hours: 0,\r\n hh: '00',\r\n minutes: 0,\r\n mm: '00',\r\n seconds: 0,\r\n ss: '00'\r\n }\r\n }\r\n\r\n tick() {\r\n this.reset();\r\n\r\n if (!this.targetDate || !this._targetTime) return;\r\n\r\n this.date = new Date();\r\n const now = this.date.getTime();\r\n\r\n const difference = this._targetTime - now;\r\n if (difference < 0) {\r\n this.stop();\r\n return\r\n }\r\n\r\n this.left.days = Math.floor(difference / (1000 * 60 * 60 * 24));\r\n\r\n this.left.hours = 23 - this.date.getHours();\r\n this.left.hh = (this.left.hours < 10 ? '0' : '') + this.left.hours;\r\n\r\n this.left.minutes = 60 - this.date.getMinutes();\r\n this.left.mm = (this.left.minutes < 10 ? '0' : '') + this.left.minutes;\r\n\r\n\r\n this.left.seconds = 60 - this.date.getSeconds();\r\n this.left.ss = (this.left.seconds < 10 ? '0' : '') + this.left.seconds;\r\n }\r\n}","{{left.days}}d - {{left.hh}}h - {{left.mm}}m - {{left.ss}}s","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'dateAgo',\r\n pure: true\r\n})\r\nexport class ZekDateAgoPipe implements PipeTransform {\r\n\r\n transform(value: any, args?: any): string | Date | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n const date = DateHelper.toDate(value);\r\n const seconds = Math.floor((+new Date() - +new Date(date)) / 1000);\r\n if (seconds < 29) // less than 30 seconds ago will show as 'Just now'\r\n return 'Just now';\r\n const intervals: { [key: string]: number } = {\r\n 'year': 31536000,\r\n 'month': 2592000,\r\n 'week': 604800,\r\n 'day': 86400,\r\n 'hour': 3600,\r\n 'minute': 60,\r\n 'second': 1\r\n };\r\n let counter;\r\n for (const i in intervals) {\r\n counter = Math.floor(seconds / intervals[i]);\r\n if (counter > 0)\r\n if (counter === 1) {\r\n return counter + ' ' + i + ' ago'; // singular (1 day ago)\r\n } else {\r\n return counter + ' ' + i + 's ago'; // plural (2 days ago)\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n}","import { Directive, ElementRef, OnDestroy, forwardRef, Inject } from '@angular/core'\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { DATE_FORMAT, LANGUAGE } from '../../tokens';\r\nimport { DateHelper } from '../../utils';\r\n\r\ndeclare let Datepicker: any;\r\n\r\nconst DATE_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateValueAccessor),\r\n multi: true,\r\n};\r\n\r\n\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[zek-date],input[type=date][formControlName],input[type=date][formControl],input[type=date][ngModel]',//,input[type=date][ngModel]\r\n providers: [DATE_VALUE_ACCESSOR],\r\n host: {\r\n //არაა საჭირო ეს ევენტი ისედაც მუშაობს'(change)': 'onChange($event.target.value)',\r\n //აღარ არის საჭირო რადგანაც ახა ვერსიაში updateOnBlur=true აკეთებს მაგას \"(keyup)\": \"onKeyUp($event)\",\r\n }\r\n})\r\nexport class DateValueAccessor implements ControlValueAccessor, OnDestroy {\r\n //@Input() ngModel: any;\r\n private datepicker?: any;\r\n private oldValue?: Date | null = null;\r\n\r\n constructor(private el: ElementRef,\r\n @Inject(DATE_FORMAT) format: string,\r\n @Inject(LANGUAGE) language: string,\r\n @Inject('env') env?: any | null) {\r\n\r\n if (env) {\r\n if (env.datepickerFormat) {\r\n format = env.datepickerFormat;\r\n }\r\n if (env.lang) {\r\n language = env.lang;\r\n }\r\n }\r\n\r\n if (el.nativeElement.type === 'date') {\r\n el.nativeElement.type = 'text'//change input type to text to override browser default date editor\r\n }\r\n this.el.nativeElement.setAttribute('autocomplete', 'off');\r\n\r\n this.datepicker = new Datepicker(el.nativeElement, {\r\n autohide: true,\r\n //beforeShowDay: this.beforeShowDay,\r\n buttonClass: 'btn',\r\n //clearBtn: true,\r\n\r\n //datesDisabled: []\r\n daysOfWeekHighlighted: [0, 6],\r\n format: format,\r\n language: language,\r\n\r\n //prevArrow: '«',\r\n //nextArrow: '»',\r\n //orientation: 'top auto', //left|right|auto for horizontal and top|bottom|auto\r\n todayBtn: true,\r\n //todayBtnMode: 0, //0\tfocus\tMove the focused date to the current date without changing the selection. 1 select\tSelect (or toggle the selection of) the current date\r\n todayHighlight: true,\r\n updateOnBlur: true,\r\n weekStart: 1,//0:Sunday – 6:Saturday\r\n });\r\n\r\n el.nativeElement.addEventListener('changeDate', (e: CustomEvent) => {\r\n this.onChangeDate(e);//execude \r\n });\r\n\r\n setTimeout(() => {\r\n const min = this.el.nativeElement.getAttribute('min');\r\n const max = this.el.nativeElement.getAttribute('max');\r\n\r\n const minDate = min ? DateHelper.toDate(min) : null;\r\n const maxDate = max ? DateHelper.toDate(max) : null;\r\n this.datepicker.setOptions({\r\n minDate: minDate,//String|Date|Number\r\n maxDate: maxDate,//String|Date|Number\r\n });\r\n }, 0);\r\n }\r\n\r\n // onKeyUp(e: any) {\r\n\r\n // if (e && e.target) {\r\n // let v = e.target.value;\r\n // if (v && v.length === 10 && (v.indexOf('.') > 1 || (v.indexOf('/') > 1 || v.indexOf('-') > 1))) {\r\n // var parsed = Datepicker.parseDate(v, environment.datepickerFormat, environment.lang);//parseDate(v);\r\n // var date = parseDate(parsed);\r\n\r\n // if (date) {\r\n // var ev = new KeyboardEvent('keydown', {\r\n // key: \"Enter\",//datepicke listens only by key parameter. other parameter don't need. check after update new version!!!\r\n // });\r\n // console.log(e.target.dispatchEvent(ev));\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n ngOnDestroy() {\r\n this.el.nativeElement.removeEventListener('changeDate', this.onChangeDate);\r\n\r\n if (this.datepicker && typeof this.datepicker.destroy === 'function') {\r\n this.datepicker.destroy()\r\n }\r\n }\r\n\r\n /**\r\n * Fires when user choose date in datepicker\r\n * @param e Custom event \r\n */\r\n onChangeDate(e: CustomEvent) {\r\n this.setDate(e.detail.date);\r\n }\r\n\r\n\r\n // private beforeShowDay(date: any) {\r\n // if (date.getMonth() == new Date().getMonth()) {\r\n // switch (date.getDate()) {\r\n // case 4:\r\n // return {\r\n // content: '<span data-bs-toggle=\"tooltip\" title=\"Example tooltip\">4</span>',\r\n // classes: 'bg-info'\r\n // };\r\n // case 8:\r\n // return false;\r\n // case 12:\r\n // return \"text-success\";\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n //set value into ngModel (when choose date in calendar)\r\n setDate(newValue?: Date | null) {\r\n //newValue = parseDate(newValue);\r\n\r\n if (this.isReadOnly()) {\r\n //if values not equals sets old value \r\n if (!DateHelper.equals(newValue, this.oldValue)) {\r\n if (this.oldValue) {\r\n this.datepicker.setDate(this.oldValue, { clear: true });//if read only don't change date (it just changes element value not ngModel)\r\n } else {\r\n this.datepicker.setDate({ clear: true });//if read only don't change date (it just changes element value not ngModel)\r\n }\r\n }\r\n return;\r\n }\r\n\r\n this.oldValue = newValue;\r\n\r\n if (newValue) {\r\n this.onChange(DateHelper.toISODateString(newValue));\r\n } else {\r\n this.onChange(null);\r\n }\r\n }\r\n\r\n\r\n\r\n private isReadOnly() {\r\n return this.el.nativeElement.disabled || this.el.nativeElement.readOnly;\r\n }\r\n\r\n\r\n\r\n //write from model to el.nativeElement\r\n writeValue(value: any) {\r\n const date = DateHelper.parseDate(value);\r\n this.oldValue = date;\r\n\r\n if (date) {\r\n this.datepicker.setDate(date, { clear: true });//to display in input\r\n } else {\r\n this.datepicker.setDate({ clear: true });\r\n }\r\n\r\n\r\n\r\n //this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n\r\n\r\n // let readOnly = this.isReadOnly();\r\n // if (readOnly) {\r\n // this.el.nativeElement.value = Datepicker.formatDate(date, this.datepicker.config.format);\r\n // }\r\n // else {\r\n // this.datepicker.setDate(date);\r\n // }\r\n }\r\n /*writeValue(date: Date) {\r\n // Create UTC Date, time is set to 00:00 in UTC time\r\n const utcDate: Date | null = date\r\n ? new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()))\r\n : null;\r\n this.renderer.setProperty(this.elementRef.nativeElement, 'valueAsDate', utcDate);\r\n }*/\r\n\r\n //@HostListener('input', ['$event.target.valueAsDate']) onChange = (_: any) => { };\r\n\r\n\r\n //@HostListener('input', [])\r\n onChange: (_: any) => void = () => { };\r\n registerOnChange(fn: (_: any) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n //@HostListener('blur', [])\r\n onTouched = () => { };\r\n registerOnTouched(fn: any) {\r\n this.onTouched = fn;\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { DATE_FORMAT, LANGUAGE } from '../../tokens';\r\nimport { DateValueAccessor } from './date-value-accessor';\r\n\r\nexport interface DatepickerConfig {\r\n dateFormat: string;\r\n language: string;\r\n}\r\n\r\n@NgModule({\r\n declarations: [DateValueAccessor],\r\n exports: [DateValueAccessor]\r\n})\r\nexport class DatepickerModule {\r\n public static forRoot(config: DatepickerConfig, environment?: any | null): ModuleWithProviders<DatepickerModule> {\r\n\r\n return {\r\n ngModule: DatepickerModule,\r\n providers: [\r\n DateValueAccessor,\r\n { provide: DATE_FORMAT, useValue: config.dateFormat },\r\n { provide: LANGUAGE, useValue: config.language },\r\n { provide: 'env', useValue: environment }\r\n ]\r\n };\r\n }\r\n\r\n public static forChild(config: DatepickerConfig, environment?: any | null) {\r\n return this.forRoot(config, environment);\r\n }\r\n}","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { PrintType } from '../../models/print.model';\r\nimport { Convert } from '../../utils';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-edit-toolbar',\r\n templateUrl: './edit-toolbar.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekEditToolbar {\r\n\r\n private _showSave = true;\r\n @Input()\r\n get showSave() {\r\n return this._showSave;\r\n }\r\n set showSave(v: BooleanInput) {\r\n this._showSave = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showCancel = true;\r\n @Input()\r\n get showCancel() {\r\n return this._showCancel;\r\n }\r\n set showCancel(v: BooleanInput) {\r\n this._showCancel = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n PrintType = PrintType;\r\n\r\n private _showExport = false;\r\n @Input()\r\n get showExport() {\r\n return this._showExport;\r\n }\r\n set showExport(v: BooleanInput) {\r\n this._showExport = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showPrint = false;\r\n @Input()\r\n get showPrint() {\r\n return this._showPrint;\r\n }\r\n set showPrint(v: BooleanInput) {\r\n this._showPrint = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _readOnly = false;\r\n @Input()\r\n get readOnly() : boolean {\r\n return this._readOnly;\r\n }\r\n set readOnly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Output() onSave = new EventEmitter();\r\n // save(navigateToReturnUrl: boolean) {\r\n // this.onSave.emit(navigateToReturnUrl);\r\n // }\r\n\r\n @Output() onCancel = new EventEmitter();\r\n cancel() {\r\n this.onCancel.emit();\r\n }\r\n\r\n // @Output()\r\n // onReset = new EventEmitter();\r\n // reset() {\r\n // this.onReset.emit();\r\n // }\r\n\r\n @Output() onPrint = new EventEmitter<PrintType>();\r\n print(printType?: PrintType) {\r\n this.onPrint.emit(printType);\r\n }\r\n\r\n\r\n @Output() onExport = new EventEmitter<number>();\r\n exportExcel() {\r\n this.onExport.emit(1);\r\n }\r\n}","<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Action toolbar\">\r\n <ng-content select=\"[left]\"></ng-content>\r\n <div *ngIf=\"showSave\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Save group\">\r\n <button type=\"submit\" class=\"btn btn-primary\" [disabled]=\"readOnly\"><i class=\"fa-solid fa-floppy-disk\"></i> {{ 'Action.Save' | translate }}</button>\r\n </div>\r\n <div *ngIf=\"showCancel\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Cancel group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancel()\"><i class=\"fa-solid fa-ban\"></i> {{ 'Action.Close' | translate }}</button>\r\n </div>\r\n <div *ngIf=\"showPrint\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Print group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"print(PrintType.Pdf)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button>\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <!-- dropdown-toggle-split -->\r\n <span class=\"visually-hidden\">Toggle Dropend</span>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(PrintType.Show)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button></li>\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(PrintType.Pdf)\"><i class=\"fa-solid fa-file-pdf\"></i> {{ 'Action.Print' | translate }} PDF</button></li>\r\n <ng-content select=\"[print]\"></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showExport\" class=\"btn-group\" role=\"group\" aria-label=\"Filter / Export group\">\r\n <div class=\"btn-group\" role=\"group\">\r\n <button id=\"btnGroupExport\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"fa-solid fa-download\"></i> {{ 'Action.Export' | translate }}</button>\r\n <ul class=\"dropdown-menu\" aria-labelledby=\"btnGroupExport\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"exportExcel()\"><i class=\"fa-solid fa-file-excel\"></i> Excel</a></li>\r\n <ng-content select=\"[export]\"></ng-content>\r\n </ul>\r\n </div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/*\r\n * Convert bytes into largest possible unit.\r\n * Takes an precision argument that defaults to 2.\r\n * Usage:\r\n * bytes | fileSize:precision\r\n * Example:\r\n * {{ 1024 | fileSize}}\r\n * formats to: 1 KB\r\n*/\r\n@Pipe({\r\n standalone: true,\r\n name: 'fileSize'\r\n})\r\nexport class ZekFileSizePipe implements PipeTransform {\r\n\r\n private units = [\r\n 'bytes',\r\n 'kB',\r\n 'MB',\r\n 'GB',\r\n 'TB',\r\n 'PB',\r\n 'EB',\r\n 'ZB',\r\n 'YB'\r\n ];\r\n\r\n transform(bytes: number | null | undefined = 0, precision: number | null | undefined = 0): string {\r\n if (typeof bytes === 'undefined' || bytes == null)\r\n bytes = 0;\r\n if (typeof precision === 'undefined' || precision == null)\r\n precision = 0;\r\n\r\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) return '?';\r\n\r\n let unit = 0;\r\n\r\n while (bytes >= 1024) {\r\n bytes /= 1024;\r\n unit++;\r\n }\r\n\r\n return bytes.toFixed(+ precision) + ' ' + this.units[unit];\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { FileService } from '../../services/file.service';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { BooleanInput } from '../../components/types';\r\nimport { Convert } from '../../utils/convert';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n selector: 'zek-file-input',\r\n templateUrl: 'file-input.html',\r\n styleUrl: 'file-input.scss',\r\n providers: [FileService],\r\n host: {\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class ZekFileInput extends CoreUiComponent {\r\n // @Input() model!: string[] | null;\r\n @Output() readonly onUpload = new EventEmitter<Array<any>>();\r\n\r\n private readonly fileService = inject(FileService);\r\n\r\n private _uniqueId: string = `zek-file-input-${this.uniqueId}`;\r\n /** The unique ID for the tag. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n private _accept = '*';\r\n public get accept(): string {\r\n return this._accept;\r\n }\r\n @Input()\r\n set accept(v: string | null | undefined) {\r\n if (!v)\r\n this._accept = '*';\r\n else\r\n this._accept = v;\r\n }\r\n\r\n\r\n private _multiple = false;\r\n @Input()\r\n get multiple(): boolean {\r\n return this._multiple;\r\n }\r\n set multiple(v: BooleanInput) {\r\n this._multiple = Convert.toBooleanProperty(v);\r\n }\r\n\r\n // files: File[] | null = null;\r\n\r\n clickInput() {\r\n const el = document.getElementById(this.inputId);\r\n if (el) {\r\n el.click();\r\n }\r\n }\r\n\r\n async onFileInputChange(event: any) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n\r\n const files = event?.target?.files;\r\n if (Array.isArray(!files)) return;\r\n\r\n const formData = new FormData();\r\n for (let i = 0; i < files.length; i++) {\r\n const file = files[i];\r\n formData.append('files', file, file.name);\r\n }\r\n this.fileService.save(formData).subscribe(data => {\r\n if (data?.success) {\r\n this.onUpload.emit(data.value);\r\n }\r\n })\r\n }\r\n}","<input type=\"file\" class=\"form-control\"\r\n name=\"{{inputId}}\"\r\n id=\"{{inputId}}\"\r\n [multiple]=\"multiple\" [accept]=\"accept\" [required]=\"required\" [disabled]=\"readonly\"\r\n #fileInput\r\n (change)=\"onFileInputChange($event)\" />","import { Component, Output, EventEmitter, Input, inject } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BooleanInput, CoreComponent } from '../../../components';\r\nimport { BootstrapHelper, ComponentType, Convert, handler, ObjectHelper, RandomHelper } from '../../../utils';\r\nimport { ValidEventArgs } from '../../../models/valid-event-args.model';\r\nimport { ModalSize } from '../../../models';\r\n\r\ndeclare let bootstrap: any;\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekModal extends CoreComponent {\r\n protected readonly translate = inject(TranslateService);\r\n\r\n override async destroy() {\r\n await super.destroy();\r\n this._modal?.dispose();\r\n this._modal = null;\r\n\r\n if (this.hiddenHandler) {\r\n handler.removeListener(this.hiddenHandler);\r\n }\r\n if (this.shownHandler) {\r\n handler.removeListener(this.shownHandler);\r\n }\r\n }\r\n override init() {\r\n super.init()\r\n if (!this.okButtonText) {\r\n this.translate.get('Action.Ok').subscribe(text => {\r\n this.okButtonText = text;\r\n });\r\n }\r\n\r\n setTimeout(() => {\r\n const modalEl = this.getModalElement();\r\n if (modalEl) {\r\n this.shownHandler = handler.addListener(modalEl, 'shown.bs.modal', () => {\r\n this.onShown.emit();\r\n });\r\n\r\n this.hiddenHandler = handler.addListener(modalEl, 'hidden.bs.modal', () => {\r\n this.onHidden.emit();\r\n });\r\n }\r\n }, 1);\r\n }\r\n\r\n private _uniqueId: string = `zek-modal-${this.uniqueId}`;\r\n /** The unique ID for the radio button. */\r\n @Input() id: string = this._uniqueId;\r\n modalId = `${this.id}-modal`;\r\n lableId = `${this.id}-lable`;\r\n cancelButtonId = `${this.id}-cancel-button`;\r\n okButtonId = `${this.id}-ok-button`;\r\n\r\n shownHandler?: number | null;\r\n hiddenHandler?: number | null;\r\n\r\n @Input() model: any;\r\n readonly elementId = RandomHelper.randomHex();\r\n\r\n\r\n private _showOk = true;\r\n @Input()\r\n get showOk(): boolean {\r\n return this._showOk;\r\n }\r\n set showOk(v: BooleanInput) {\r\n this._showOk = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _disabledOk = false;\r\n @Input()\r\n get disabledOk(): boolean {\r\n return this._disabledOk;\r\n }\r\n set disabledOk(v: BooleanInput) {\r\n this._disabledOk = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showCancel = true;\r\n @Input()\r\n get showCancel(): boolean {\r\n return this._showCancel;\r\n }\r\n set showCancel(v: BooleanInput) {\r\n this._showCancel = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _autoHide = true;\r\n @Input()\r\n get autoHide(): boolean {\r\n return this._autoHide;\r\n }\r\n set autoHide(v: BooleanInput) {\r\n this._autoHide = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() title?: string | null;\r\n\r\n @Input() text?: string | null;\r\n\r\n @Input() icon?: string | null;\r\n\r\n @Input() okButtonText?: string | null;\r\n\r\n @Output() onShown = new EventEmitter<void>();\r\n\r\n @Output() onHidden = new EventEmitter<void>();\r\n\r\n @Output() onOk = new EventEmitter<any>();\r\n @Output() onCancel = new EventEmitter<void>();\r\n\r\n @Input() componentType = ComponentType.Primary;\r\n\r\n\r\n\r\n private _size: ModalSize = '';\r\n @Input()\r\n get size() {\r\n return this._size;\r\n }\r\n set size(v: ModalSize) {\r\n this._size = v;\r\n }\r\n\r\n /**\r\n * @deprecated Please use size property\r\n */\r\n @Input()\r\n get large(): boolean {\r\n return this._size === 'lg';\r\n }\r\n set large(v: BooleanInput) {\r\n this._size = Convert.toBooleanProperty(v) ? 'lg' : '';\r\n }\r\n\r\n /**\r\n * @deprecated Please use size property\r\n */\r\n @Input()\r\n get xl(): boolean {\r\n return this._size === 'xl';\r\n }\r\n set xl(v: BooleanInput) {\r\n this._size = Convert.toBooleanProperty(v) ? 'xl' : '';\r\n }\r\n\r\n\r\n private _scrollable = false;\r\n @Input()\r\n get scrollable(): boolean {\r\n return this._scrollable;\r\n }\r\n set scrollable(v: BooleanInput) {\r\n this._scrollable = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _fullscreen = false;\r\n @Input()\r\n get fullscreen(): boolean {\r\n return this._fullscreen;\r\n }\r\n set fullscreen(v: BooleanInput) {\r\n this._fullscreen = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showHeader = true;\r\n @Input()\r\n get showHeader(): boolean {\r\n return this._showHeader;\r\n }\r\n set showHeader(v: BooleanInput) {\r\n this._showHeader = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showFooter = true;\r\n @Input()\r\n get showFooter(): boolean {\r\n return this._showFooter;\r\n }\r\n set showFooter(v: BooleanInput) {\r\n this._showFooter = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n\r\n @Output() onValidating = new EventEmitter<ValidEventArgs>(false);\r\n // @Input() xxl: boolean;\r\n\r\n private _modal: any;\r\n // public get modal(): any {\r\n // if (!this._modal) {\r\n // this.getModal();\r\n // }\r\n // return this._modal;\r\n // }\r\n // public set modal(v: any) {\r\n // this._modal = v;\r\n // }\r\n\r\n protected getModalElement() {\r\n return document.getElementById(this.modalId);\r\n }\r\n /**\r\n * Creates with method new bootstrap.Modal(modalId, { backdrop: 'static' });\r\n * @returns boostrap modal\r\n */\r\n protected createModal() {\r\n const modalEl = this.getModalElement();\r\n return new bootstrap.Modal(modalEl, { backdrop: 'static' });\r\n }\r\n\r\n\r\n\r\n\r\n cssButton() {\r\n return BootstrapHelper.cssButton(this.componentType);\r\n }\r\n\r\n // private isShown = false;\r\n show(model?: any) {\r\n if (!ObjectHelper.isDefined(model)) model = {};\r\n this.model = model;\r\n\r\n // this.modal?.show();\r\n\r\n\r\n if (!this._modal) {\r\n this._modal = this.createModal();\r\n }\r\n if (this._modal) {\r\n this._modal.show();\r\n // this.isShown = true;\r\n }\r\n }\r\n\r\n\r\n cancel() {\r\n this.onCancel.emit();\r\n this.hide();\r\n }\r\n hide() {\r\n // this.modal?.hide();\r\n\r\n // if (this.isShown) {\r\n // if (this._modal) {\r\n // this._modal.hide();\r\n // this.isShown = false;\r\n // }\r\n // } else {\r\n\r\n // }\r\n\r\n if (this._modal) {\r\n this._modal.hide();\r\n }\r\n else {\r\n const btn = document.getElementById(this.cancelButtonId);\r\n if (btn) {\r\n btn.click();\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n ok() {\r\n const event = new ValidEventArgs();\r\n this.onValidating.emit(event);\r\n if (!event.valid) return;\r\n\r\n if (this.autoHide)\r\n this.hide();\r\n\r\n this.onOk.emit(this.model);\r\n }\r\n\r\n\r\n keyDown(e: Event) {\r\n e.preventDefault();\r\n this.ok();\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-delete-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekDeleteModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-trash';\r\n this.translate.get('Action.Delete').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.DeleteQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Delete;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-approve-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekApproveModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-thumbs-up';\r\n this.translate.get('Action.Approve').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.ApproveQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Success;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-submit-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekSubmitModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-thumbs-up';\r\n this.translate.get('Action.Submit').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.SubmitQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Success;\r\n }\r\n}\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-disapprove-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekDisapproveModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-thumbs-down';\r\n this.translate.get('Action.Disapprove').subscribe((res: string) => this.title = res);\r\n this.translate.get('Alert.DisapproveQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Delete;\r\n }\r\n}\r\n\r\n\r\n/**\r\n * @deprecated Please use ZekModal\r\n */\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-restore-modal',\r\n templateUrl: './modal.component.html'\r\n})\r\nexport class ZekRestoreModal extends ZekModal {\r\n constructor() {\r\n super();\r\n this.icon = 'fa-solid fa-rotate-right';\r\n this.translate.get('Action.Restore').subscribe((res: string) => this.title = res);\r\n this.translate.get('Action.RestoreQuestion').subscribe((res: string) => this.text = res);\r\n this.componentType = ComponentType.Success;\r\n }\r\n}","<div (keydown.enter)=\"keyDown($event)\" class=\"modal fade\" data-bs-backdrop=\"static\" id=\"{{modalId}}\" tabindex=\"-1\" attr.aria-labelledby=\"{{lableId}}\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" [ngClass]=\"{\r\n 'modal-sm': size === 'sm',\r\n 'modal-lg': size === 'lg', \r\n 'modal-xl': size === 'xl'\r\n }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n <ng-content select=\"header\"></ng-content>\r\n <h5 class=\"modal-title\" id=\"{{lableId}}\">{{title}}</h5>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"cancel()\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n {{text}}\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"showFooter\">\r\n <ng-content select=\"footer\"></ng-content>\r\n <button [class.visually-hidden]=\"!showOk\" [disabled]=\"disabledOk\" type=\"button\" class=\"btn {{cssButton()}}\" id=\"{{okButtonId}}\"\r\n (click)=\"ok()\">\r\n <i *ngIf=\"icon\" class=\"{{ icon }}\"></i> {{ okButtonText }}\r\n </button>\r\n <button [class.visually-hidden]=\"!showCancel\" type=\"button\" class=\"btn btn-secondary\"\r\n (click)=\"cancel()\">\r\n <i class=\"fa-solid fa-ban\"></i> {{ 'Action.Cancel' | translate }}\r\n </button>\r\n <button type=\"button\" class=\"d-none\" id=\"{{cancelButtonId}}\" data-bs-dismiss=\"modal\"></button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Output, EventEmitter } from '@angular/core';\r\nimport { ZekModal } from '../modal/modal.component';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-filter-modal',\r\n templateUrl: './filter-modal.component.html'\r\n})\r\nexport class ZekFilterModal extends ZekModal {\r\n @Output() onReset = new EventEmitter();\r\n\r\n reset() {\r\n this.onReset.emit();\r\n }\r\n}","<div (keydown.enter)=\"keyDown($event)\" class=\"modal fade\" data-bs-backdrop=\"static\" id=\"{{modalId}}\" tabindex=\"-1\" attr.aria-labelledby=\"{{lableId}}\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog\" [ngClass]=\"{\r\n 'modal-sm': size === 'sm',\r\n 'modal-lg': size === 'lg', \r\n 'modal-xl': size === 'xl'\r\n }\" [class.modal-dialog-scrollable]=\"scrollable\" [class.modal-fullscreen]=\"fullscreen\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\" *ngIf=\"showHeader\">\r\n <ng-content select=\"header\"></ng-content>\r\n <h5 class=\"modal-title\" id=\"{{lableId}}\">{{ 'Action.Filter' | translate }}</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n {{text}}\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"showFooter\">\r\n <ng-content select=\"footer\"></ng-content>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"ok()\"><i class=\"fa-solid fa-filter\"></i> {{ 'Action.Filter' | translate }}</button>\r\n <button *ngIf=\"showCancel\" type=\"button\" class=\"btn btn-secondary\" id=\"modal-cancel-button-{{elementId}}\" data-bs-dismiss=\"modal\"><i class=\"fa-solid fa-ban\"></i> {{ 'Action.Cancel' | translate }}</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"reset()\"><i class=\"fa-solid fa-xmark\"></i> {{ 'Action.Reset' | translate }}</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { ZekModal } from '../modal/modal.component';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-sum-modal',\r\n templateUrl: './sum-modal.component.html'\r\n})\r\nexport class ZekSumModal {\r\n @Input() model: any;\r\n @ViewChild('sumModal', { static: false }) private modal?: ZekModal;\r\n\r\n sum() {\r\n if (this.modal) {\r\n this.modal.show();\r\n }\r\n else {\r\n throw new Error('sumModal is null or undefined');\r\n }\r\n }\r\n}","<zek-modal #sumModal [showCancel]=\"false\" [title]=\"'Action.Sum' | translate\">\r\n <table class=\"table table-striped table-borderless table-hover\">\r\n <tbody>\r\n <tr *ngFor=\"let item of model\">\r\n <td class=\"w-75\">{{'Fields.'+item.key | translate}}</td>\r\n <td class=\"w-25\">\r\n <ng-container *ngIf=\"item.key != 'Count'; else elseBlock\">{{item.value | number:'1.2' }}</ng-container>\r\n <ng-template #elseBlock>{{item.value}}</ng-template>\r\n </td>\r\n <tr>\r\n </tbody>\r\n </table>\r\n</zek-modal>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\nimport { \r\n ZekModal,\r\n ZekDeleteModal,\r\n ZekApproveModal,\r\n ZekDisapproveModal,\r\n ZekRestoreModal,\r\n ZekSubmitModal\r\n} from './modal/modal.component';\r\nimport { ZekFilterModal } from './filter-modal/filter-modal.component';\r\nimport { ZekSumModal } from './sum-modal/sum-modal.component';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n TranslateModule\r\n ],\r\n declarations: [\r\n ZekModal,\r\n ZekDeleteModal,\r\n ZekApproveModal,\r\n ZekSubmitModal,\r\n ZekDisapproveModal,\r\n ZekRestoreModal,\r\n ZekFilterModal,\r\n ZekSumModal\r\n ],\r\n exports: [\r\n ZekModal,\r\n ZekDeleteModal,\r\n ZekApproveModal,\r\n ZekSubmitModal,\r\n ZekDisapproveModal,\r\n ZekRestoreModal,\r\n ZekFilterModal,\r\n ZekSumModal\r\n ]\r\n})\r\nexport class ZekModalModule { }","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n standalone: true,\r\n name: 'safe'\r\n})\r\nexport class ZekSafePipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {\r\n }\r\n\r\n /**\r\n * Transform\r\n *\r\n * @param value: string\r\n * @param type: string html, style, script, url, resourceUrl\r\n */\r\n transform(value: string, type?: '' | 'html' | 'style' | 'script' | 'url' | 'resourceUrl' | null): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n case 'html':\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n case 'style':\r\n return this.sanitizer.bypassSecurityTrustStyle(value);\r\n case 'script':\r\n return this.sanitizer.bypassSecurityTrustScript(value);\r\n case 'url':\r\n return this.sanitizer.bypassSecurityTrustUrl(value);\r\n case 'resourceUrl':\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n default:\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n }\r\n }\r\n}","import { Component, ViewChild } from '@angular/core';\r\n\r\nimport { ZekModal, ZekModalModule } from '../modal';\r\nimport { CoreComponent } from '../../components';\r\nimport { FileHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { ZekSafePipe } from '../safe';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-file-viewer',\r\n templateUrl: './file-viewer.html',\r\n imports: [CommonModule, ZekModalModule, ZekSafePipe],\r\n providers: []\r\n})\r\nexport class ZekFileViewer<TModal extends ZekModal = ZekModal> extends CoreComponent {\r\n\r\n @ViewChild('viewModal', { static: true }) viewModal?: TModal | null;\r\n\r\n src?: string | null;\r\n\r\n show(url: string, extension?: string | null) {\r\n\r\n const ext = extension || FileHelper.getExtension(url);\r\n switch (ext) {\r\n case '.docx':\r\n case '.doc':\r\n this.src = 'https://docs.google.com/a/umd.edu/viewer?url=' + url + '&embedded=true';\r\n break;\r\n\r\n case '.xlsx':\r\n case '.xls':\r\n\r\n this.src = 'http://view.officeapps.live.com/op/view.aspx?src=' + url;\r\n break;\r\n\r\n // case '.jpg':\r\n // case '.jpeg':\r\n // case '.png':\r\n // case '.pdf':\r\n default:\r\n this.src = url;\r\n break;\r\n }\r\n\r\n\r\n // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" allowfullscreen=\"allowfullscreen\"\r\n // src=\"https://docs.google.com/spreadsheets/u/0/d/1Yv92dG0AOki6prNq5RwRSWTpdcidzFkakW9nMf0RaUQ/preview/sheet?gid=0\"></iframe> -->\r\n\r\n // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" \r\n // src=\"https://docs.google.com/a/umd.edu/viewer?url=https://github.com/poychang/blog.poychang.net/raw/master/assets/post-files/THIS-IS-WORD.docx&amp;embedded=true\">\r\n // </iframe> -->\r\n // <!-- <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\" \r\n // src=\" https://view.officeapps.live.com/op/embed.aspx?src=https://github.com/poychang/blog.poychang.net/raw/master/assets/post-files/THIS-IS-WORD.docx\">\r\n // </iframe> -->\r\n\r\n\r\n // this.src = 'http://view.officeapps.live.com/op/view.aspx?src=https://sample-videos.com/xls/Sample-Spreadsheet-50000-rows.xls';\r\n\r\n if (this.viewModal) {\r\n this.viewModal.show();\r\n }\r\n }\r\n}\r\n","<zek-modal #viewModal [fullscreen]=\"true\" [showHeader]=\"true\" [showFooter]=\"false\">\r\n <ng-container *ngIf=\"src\">\r\n <iframe id=\"office\" width=\"100%\" height=\"99%\" frameborder=\"0\" marginheight=\"0\" marginwidth=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"\r\n [src]=\"src | safe:'resourceUrl'\">\r\n </iframe>\r\n </ng-container>\r\n</zek-modal>","import { HtmlHelper } from \"../../utils\";\r\n\r\ndeclare let google: any;\r\n\r\n\r\ndeclare global {\r\n interface Window {\r\n onGoogleLibraryLoad: () => void;\r\n }\r\n}\r\n\r\nfunction loadScript(\r\n onLoaded: (google: any) => void,\r\n url?: string,\r\n nonce?: string\r\n): void {\r\n window.onGoogleLibraryLoad = () => {\r\n onLoaded(google);\r\n };\r\n\r\n const src = url || \"https://accounts.google.com/gsi/client\";\r\n HtmlHelper.loadScript(src, nonce, true, true);\r\n}\r\n\r\nexport const loader = { loadScript };","import { Directive, EventEmitter, Inject, Input, Output } from \"@angular/core\";\r\nimport { loader } from './loader';\r\nimport { GOOGLE_CLIENT_ID } from \"../../tokens\";\r\nimport { CoreComponent, BooleanInput, NumberInput } from \"../../components\";\r\nimport { Convert } from \"../../utils\";\r\n\r\ndeclare let google: any;\r\n\r\nexport interface GoogleLoginConfig {\r\n client_id: string;\r\n}\r\nexport type GoogleLoginButtonTextInput =\r\n 'signin_with' | 'signup_with' | 'continue_with' | 'signin' | null | undefined;\r\n\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'zek-google-login',\r\n host: {\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class ZekGoogleLoginButton extends CoreComponent {\r\n constructor(@Inject(GOOGLE_CLIENT_ID) private readonly client_id: string) {\r\n super();\r\n }\r\n\r\n private _uniqueId: string = `zek-google-button-container-${this.uniqueId}`;\r\n @Input() id: string = this._uniqueId;\r\n\r\n private _prompt = true;\r\n @Input() get prompt() {\r\n return this._prompt;\r\n }\r\n set prompt(v: BooleanInput) {\r\n this._prompt = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _autoSelect = false;\r\n @Input() get autoSelect() {\r\n return this._autoSelect;\r\n }\r\n set autoSelect(v: BooleanInput) {\r\n this._autoSelect = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _cancelOnTapOutside = true;\r\n @Input() get cancelOnTapOutside() {\r\n return this._cancelOnTapOutside;\r\n }\r\n set cancelOnTapOutside(v: BooleanInput) {\r\n this._cancelOnTapOutside = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _width: NumberInput;\r\n @Input() get width() {\r\n return this._width;\r\n }\r\n set width(v: NumberInput) {\r\n this._width = v;\r\n }\r\n\r\n\r\n private _text: GoogleLoginButtonTextInput;\r\n @Input() get text() {\r\n return this._text;\r\n }\r\n set text(v: GoogleLoginButtonTextInput) {\r\n this._text = v;\r\n }\r\n\r\n\r\n\r\n @Output() onLoginResponse = new EventEmitter();\r\n @Output() onLogin = new EventEmitter();\r\n\r\n // private _type: 'standard' | 'icon';\r\n // public get type(): '' {\r\n // return this._type;\r\n // }\r\n // public set type(v: 'standard' | 'icon') {\r\n // this._type = v;\r\n // }\r\n\r\n\r\n\r\n\r\n // private static _loaded = false;\r\n // static async loadScript() {\r\n // if (this._loaded) return;\r\n // await HtmlHelper.loadScripts('https://accounts.google.com/gsi/client');\r\n // this._loaded = true;\r\n // }\r\n\r\n\r\n private google?: any;\r\n override async init() {\r\n super.init();\r\n // await GoogleLoginButton.loadScript();\r\n\r\n if (\"google\" in window) {\r\n this.google = google;\r\n this.initialize();\r\n } else {\r\n loader.loadScript(this.onLoadComplete);\r\n }\r\n }\r\n private onLoadComplete = (google: any) => {\r\n this.google = google;\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n this.google.accounts.id.initialize({\r\n client_id: this.client_id,\r\n callback: (response: any) => {\r\n this.handleCredentialResponse(response);\r\n },\r\n auto_select: this._autoSelect,\r\n cancel_on_tap_outside: this._cancelOnTapOutside,\r\n });\r\n\r\n setTimeout(() => {\r\n this.renderButton();\r\n this.autoPrompt();\r\n },);\r\n }\r\n renderButton() {\r\n const options: any = { theme: \"outline\", size: \"large\" };\r\n if (this._width)\r\n options.width = this._width;\r\n if (this._text)\r\n options.text = this._text\r\n\r\n this.google.accounts.id.renderButton(\r\n document.getElementById(this.id),\r\n // this._elementRef.nativeElement.parentElement,\r\n options // customization attributes\r\n );\r\n }\r\n autoPrompt() {\r\n if (this._prompt)\r\n this.google.accounts.id.prompt(); // also display the One Tap dialog\r\n }\r\n\r\n\r\n handleCredentialResponse(response: any) {\r\n this.onLoginResponse?.emit(response);\r\n this.onLogin?.emit(response.credential);\r\n\r\n // let payload = JwtHelper.decode(response.credential);\r\n // console.log(\"ID: \" + payload.sub);\r\n // console.log('Full Name: ' + payload.name);\r\n // console.log('Given Name: ' + payload.given_name);\r\n // console.log('Family Name: ' + payload.family_name);\r\n // console.log(\"Image URL: \" + payload.picture);\r\n // console.log(\"Email: \" + payload.email);\r\n }\r\n}","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { GoogleLoginConfig, ZekGoogleLoginButton } from './google-login-button';\r\nimport { GOOGLE_CLIENT_ID } from '../../tokens';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n ZekGoogleLoginButton\r\n ],\r\n exports: [\r\n ZekGoogleLoginButton\r\n ]\r\n})\r\nexport class ZekGoogleLoginModule {\r\n public static forRoot(config: GoogleLoginConfig): ModuleWithProviders<ZekGoogleLoginModule> {\r\n return {\r\n ngModule: ZekGoogleLoginModule,\r\n providers: [\r\n ZekGoogleLoginButton,\r\n {\r\n provide: GOOGLE_CLIENT_ID,\r\n useValue: config.client_id\r\n },\r\n ]\r\n };\r\n }\r\n\r\n\r\n public static forChild(config: GoogleLoginConfig) {\r\n return this.forRoot(config);\r\n }\r\n}","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../../components';\r\nimport { Convert } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-grid-toolbar',\r\n templateUrl: './grid-toolbar.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekGridToolbar {\r\n // constructor(private readonly router: Router) {\r\n // //private readonly viewContainerRef: ViewContainerRef,\r\n // }\r\n\r\n // getParentComponent(): any {\r\n // return this.viewContainerRef['_data'].componentView.component.viewContainerRef['_view'].component\r\n // }\r\n\r\n @Input() model: any;\r\n\r\n private _showEdit = true;\r\n @Input()\r\n get showEdit(): boolean {\r\n return this._showEdit;\r\n }\r\n set showEdit(v: BooleanInput) {\r\n this._showEdit = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _editEnabled = true;\r\n @Input()\r\n get editEnabled(): boolean {\r\n return this._editEnabled;\r\n }\r\n set editEnabled(v: BooleanInput) {\r\n this._editEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showDelete = true;\r\n @Input()\r\n get showDelete(): boolean {\r\n return this._showDelete;\r\n }\r\n set showDelete(v: BooleanInput) {\r\n this._showDelete = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _deleteEnabled = true;\r\n @Input()\r\n get deleteEnabled(): boolean {\r\n return this._deleteEnabled;\r\n }\r\n set deleteEnabled(v: BooleanInput) {\r\n this._deleteEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _showRestore = false;\r\n @Input()\r\n get showRestore(): boolean {\r\n return this._showRestore;\r\n }\r\n set showRestore(v: BooleanInput) {\r\n this._showRestore = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _restoreEnabled = true;\r\n @Input()\r\n get restoreEnabled(): boolean {\r\n return this._restoreEnabled;\r\n }\r\n set restoreEnabled(v: BooleanInput) {\r\n this._restoreEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n @Input() approveText = 'Action.Approve';\r\n private _showApprove = false;\r\n @Input()\r\n get showApprove(): boolean {\r\n return this._showApprove;\r\n }\r\n set showApprove(v: BooleanInput) {\r\n this._showApprove = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private _approveEnabled = false;\r\n @Input()\r\n get approveEnabled(): boolean {\r\n return this._approveEnabled;\r\n }\r\n set approveEnabled(v: BooleanInput) {\r\n this._approveEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() disapproveText = 'Action.Disapprove';\r\n private _showDisapprove = false;\r\n @Input()\r\n get showDisapprove(): boolean {\r\n return this._showDisapprove;\r\n }\r\n set showDisapprove(v: BooleanInput) {\r\n this._showDisapprove = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _disapproveEnabled = false;\r\n @Input()\r\n get disapproveEnabled(): boolean {\r\n return this._disapproveEnabled;\r\n }\r\n set disapproveEnabled(v: BooleanInput) {\r\n this._disapproveEnabled = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Output() onEdit = new EventEmitter<any>();\r\n edit() {\r\n //this.router.navigate([this.router.url, this.model]);\r\n this.onEdit.emit(this.model);\r\n }\r\n\r\n @Output() onDelete = new EventEmitter<any>();\r\n delete() {\r\n this.onDelete.emit(this.model)\r\n }\r\n\r\n @Output() onApprove = new EventEmitter<any>();\r\n approve() {\r\n this.onApprove.emit(this.model)\r\n }\r\n\r\n @Output() onDisapprove = new EventEmitter<any>();\r\n disapprove() {\r\n this.onDisapprove.emit(this.model)\r\n }\r\n\r\n @Output() onRestore = new EventEmitter<any>();\r\n restore() {\r\n this.onRestore.emit(this.model)\r\n }\r\n}\r\n","<div class=\"btn-group btn-group-sm\" role=\"group\" aria-label=\"Table action group\">\r\n <button *ngIf=\"showEdit\" (click)=\"edit()\" type=\"button\" class=\"btn btn-secondary\" title=\"{{ 'Action.Edit' | translate }}\" [disabled]=\"!editEnabled\">\r\n <i class=\"fa-solid fa-pencil\"></i>\r\n </button>\r\n <button *ngIf=\"showApprove\" (click)=\"approve()\" type=\"button\" class=\"btn btn-success\" title=\"{{ approveText | translate }}\" [disabled]=\"!approveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-up\"></i>\r\n </button>\r\n <button *ngIf=\"showDisapprove\" (click)=\"disapprove()\" type=\"button\" class=\"btn btn-danger\" title=\"{{ disapproveText | translate }}\" [disabled]=\"!disapproveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-down\"></i>\r\n </button>\r\n <button *ngIf=\"showDelete\" (click)=\"delete()\" type=\"button\" class=\"btn btn-danger\" title=\"{{ 'Action.Delete' | translate }}\" [disabled]=\"!deleteEnabled\">\r\n <i class=\"fa-solid fa-trash\"></i>\r\n </button>\r\n <button *ngIf=\"showRestore\" (click)=\"restore()\" type=\"button\" class=\"btn btn-success\" title=\"{{ 'Action.Restore' | translate }}\" [disabled]=\"!restoreEnabled\">\r\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\r\n </button>\r\n <ng-content></ng-content>\r\n</div>","import { Component } from \"@angular/core\";\r\nimport { ZekGridToolbar } from \"../grid-toolbar/grid-toolbar\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { TranslateModule } from \"@ngx-translate/core\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-grid-toolbar-bar',\r\n templateUrl: './grid-toolbar-bar.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekGridToolbarBar extends ZekGridToolbar {\r\n\r\n}","<button type=\"button\" class=\"btn btn-light btn-sm\" data-bs-toggle=\"dropdown\">\r\n <i class=\"fa-solid fa-ellipsis\"></i>\r\n</button>\r\n<ul class=\"dropdown-menu\">\r\n <li><button *ngIf=\"showEdit\" (click)=\"edit()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!editEnabled\">\r\n <i class=\"fa-solid fa-pencil\"></i> {{ 'Action.Edit' | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showApprove\" (click)=\"approve()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!approveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-up\"></i> {{ approveText | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showDisapprove\" (click)=\"disapprove()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!disapproveEnabled\">\r\n <i class=\"fa-solid fa-thumbs-down\"></i> {{ disapproveText | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showDelete\" (click)=\"delete()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!deleteEnabled\">\r\n <i class=\"fa-solid fa-trash\"></i> {{ 'Action.Delete' | translate }}\r\n </button></li>\r\n <li><button *ngIf=\"showRestore\" (click)=\"restore()\" type=\"button\" class=\"dropdown-item\" [disabled]=\"!restoreEnabled\">\r\n <i class=\"fa-solid fa-clock-rotate-left\"></i> {{ 'Action.Restore' | translate }}\r\n </button></li>\r\n <ng-content></ng-content>\r\n</ul>","import { Component, Output, EventEmitter, Input } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { BooleanInput } from '../../components';\r\n\r\nimport { PrintType } from '../../models/print.model';\r\nimport { Convert, UrlHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-list-toolbar',\r\n templateUrl: './list-toolbar.html',\r\n imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekListToolbar {\r\n constructor(private readonly router: Router) {\r\n }\r\n\r\n printType = PrintType;\r\n\r\n private _isFiltered = false;\r\n @Input()\r\n get isFiltered() {\r\n return this._isFiltered;\r\n }\r\n set isFiltered(v: BooleanInput) {\r\n this._isFiltered = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showCreate = true;\r\n @Input()\r\n get showCreate() {\r\n return this._showCreate;\r\n }\r\n set showCreate(v: BooleanInput) {\r\n this._showCreate = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n\r\n private _showFilter = true;\r\n @Input()\r\n get showFilter() {\r\n return this._showFilter;\r\n }\r\n set showFilter(v: BooleanInput) {\r\n this._showFilter = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showPrint = false;\r\n @Input()\r\n get showPrint() {\r\n return this._showPrint;\r\n }\r\n set showPrint(v: BooleanInput) {\r\n this._showPrint = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n\r\n private _showSum = false;\r\n @Input()\r\n get showSum() {\r\n return this._showSum;\r\n }\r\n set showSum(v: BooleanInput) {\r\n this._showSum = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n private _showExport = false;\r\n @Input()\r\n get showExport(): boolean {\r\n return this._showExport;\r\n }\r\n set showExport(v: BooleanInput) {\r\n this._showExport = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n @Output() onRefresh = new EventEmitter<void>();\r\n @Output() onFilter = new EventEmitter<void>();\r\n @Output() onCreate = new EventEmitter<void>();\r\n @Output() onSum = new EventEmitter<void>();\r\n @Output() onPrint = new EventEmitter<PrintType>();\r\n @Output() onExport = new EventEmitter<number>();\r\n\r\n refresh() {\r\n this.onRefresh.emit();\r\n }\r\n\r\n create() {\r\n this.onCreate?.emit();\r\n }\r\n\r\n\r\n filter() {\r\n this.onFilter.emit();\r\n }\r\n\r\n\r\n print(printType?: PrintType) {\r\n this.onPrint.emit(printType);\r\n }\r\n\r\n\r\n sum() {\r\n this.onSum.emit();\r\n }\r\n\r\n exportExcel() {\r\n this.onExport.emit(1);\r\n }\r\n}","<div class=\"btn-toolbar\" role=\"toolbar\" aria-label=\"Toolbar\">\r\n <div class=\"btn-group me-2\" role=\"group\" aria-label=\"Action group\">\r\n <button *ngIf=\"showCreate\" type=\"button\" class=\"btn btn-primary\" (click)=\"create()\"><i class=\"fa-solid fa-plus\"></i> {{ 'Action.Create' | translate }}</button>\r\n </div>\r\n <div class=\"btn-group me-2\" role=\"group\" aria-label=\"Filter group\">\r\n <button *ngIf=\"showFilter\" type=\"button\" class=\"btn btn-secondary\" [ngClass]=\"{'btn-outline-success': isFiltered, 'btn-secondary': !isFiltered }\" (click)=\"filter()\" data-bs-toggle0=\"modal\" data-bs-backdrop0=\"static\" data-bs-target0=\"#filter-modal\"><i class=\"fa-solid fa-filter\"></i> {{ 'Action.Filter' | translate }}</button>\r\n <button type=\"button\" class=\"btn btn-secondary\" title=\"{{ 'Action.Refresh' | translate }}\" (click)=\"refresh()\"><i class=\"fa-solid fa-rotate\"></i></button>\r\n </div>\r\n <div *ngIf=\"showPrint\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Print group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"print(printType.Pdf)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button>\r\n <div class=\"btn-group\" role=\"group\">\r\n <button type=\"button\" class=\"btn btn-secondary dropdown-toggle dropdown-toggle-split\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(printType.Show)\"><i class=\"fa-solid fa-print\"></i> {{ 'Action.Print' | translate }}</button></li>\r\n <li><button type=\"button\" class=\"dropdown-item\" (click)=\"print(printType.Pdf)\"><i class=\"fa-solid fa-file-pdf\"></i> {{ 'Action.Print' | translate }} PDF</button></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showSum\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Sum group\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"sum()\"><i class=\"fa-solid fa-sigma\"></i> {{ 'Action.Sum' | translate }}</button>\r\n </div>\r\n <div *ngIf=\"showExport\" class=\"btn-group me-2\" role=\"group\" aria-label=\"Export group\">\r\n <div class=\"btn-group\" role=\"group\">\r\n <button id=\"btn-group-export\" type=\"button\" class=\"btn btn-secondary dropdown-toggle\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\"><i class=\"fa-solid fa-download\"></i> {{ 'Action.Export' | translate }}</button>\r\n <ul class=\"dropdown-menu\" aria-labelledby=\"btn-group-export\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"exportExcel()\"><i class=\"fa-solid fa-file-excel\"></i> Excel</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <ng-content></ng-content>\r\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\n\r\n@Injectable({providedIn:'root'})\r\nexport class ZekLoadingService {\r\n private _pendingRequests = 0;\r\n private _loadingSubject$?: BehaviorSubject<boolean>\r\n private _onLoadingObservable?: Observable<boolean>;\r\n\r\n start() {\r\n this._pendingRequests++;\r\n this._loadingSubject$?.next(true);\r\n }\r\n end() {\r\n this._pendingRequests--;\r\n if (this._pendingRequests < 0)\r\n this._pendingRequests = 0;\r\n\r\n if (0 === this._pendingRequests) {\r\n this._loadingSubject$?.next(false);\r\n }\r\n }\r\n\r\n get onLoading() {\r\n if (!this._loadingSubject$) {\r\n this._loadingSubject$ = new BehaviorSubject<boolean>(false);\r\n this._onLoadingObservable = this._loadingSubject$.asObservable();\r\n }\r\n\r\n if (!this._onLoadingObservable)\r\n throw new Error(\"_onExecuteObservable is undefined\");\r\n\r\n return this._onLoadingObservable;\r\n }\r\n}\r\n\r\n@Injectable()\r\nexport class ZekLoadingInterceptor implements HttpInterceptor {\r\n constructor(private readonly _loading: ZekLoadingService) {\r\n }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n this._loading.start();\r\n\r\n return next.handle(request).pipe(\r\n finalize(() => {\r\n this._loading.end();\r\n })\r\n );\r\n }\r\n}\r\n\r\nexport const ZekLoadingInterceptorProvider = [{\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: ZekLoadingInterceptor,\r\n multi: true\r\n}];","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { ZekLoadingService } from './loading-interceptor';\r\n\r\n@Component({\r\n standalone: false,\r\n selector: 'zek-loading',\r\n styleUrls: ['./loading.css'],\r\n template: `\r\n<div *ngIf=\"show\" id=\"loading\" class=\"progress\">\r\n <div class=\"progress-bar progress-bar-striped progress-bar-animated bg-danger\" role=\"progressbar\" style=\"width:100%\" aria-valuenow=\"100\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\r\n</div>\r\n`\r\n})\r\nexport class ZekLoading implements OnInit, OnDestroy {\r\n show = false;\r\n private subscription?: Subscription;\r\n constructor(private readonly _loading: ZekLoadingService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.subscription = this._loading.onLoading.subscribe(x => {\r\n this.show = x\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription?.unsubscribe();\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport { ZekLoadingInterceptor, ZekLoadingInterceptorProvider } from './loading-interceptor';\r\nimport { ZekLoading } from './loading';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n ],\r\n declarations: [\r\n ZekLoading\r\n ],\r\n providers: [\r\n ZekLoadingInterceptor,\r\n ZekLoadingInterceptorProvider,\r\n ],\r\n exports: [\r\n ZekLoading,\r\n ]\r\n})\r\nexport class ZekLoadingModule {\r\n}\r\n","export * from './loading.module';\r\nexport * from './loading';\r\n// export * from './loading-interceptor';","import { Directive, ElementRef, HostListener, input, Input } from \"@angular/core\";\r\nimport { BooleanInput, NumberInput } from \"../../components\";\r\nimport { Convert, MathHelper } from \"../../utils\";\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: \"[numeric]\",\r\n})\r\nexport class ZekNumericDirective {\r\n private _digits = 0;\r\n @Input()\r\n get digits() {\r\n return this._digits;\r\n }\r\n set digits(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) ?? 0, 0, 29);\r\n this._digits = tmp;\r\n }\r\n\r\n private _negative = false;\r\n @Input()\r\n get negative(): boolean {\r\n return this._negative;\r\n }\r\n set negative(v: BooleanInput) {\r\n this._negative = Convert.toBooleanProperty(v);\r\n }\r\n\r\n private checkAllowNegative(value: string) {\r\n if (this._digits <= 0) {\r\n return String(value).match(new RegExp(/^-?\\d+$/));\r\n } else {\r\n const regExpString =\r\n \"^-?\\\\s*((\\\\d+(\\\\.\\\\d{0,\" +\r\n this._digits +\r\n \"})?)|((\\\\d*(\\\\.\\\\d{1,\" +\r\n this._digits +\r\n \"}))))\\\\s*$\";\r\n return String(value).match(new RegExp(regExpString));\r\n }\r\n }\r\n\r\n private check(value: string) {\r\n if (this._digits <= 0) {\r\n return String(value).match(new RegExp(/^\\d+$/));\r\n } else {\r\n const regExpString =\r\n \"^\\\\s*((\\\\d+(\\\\.\\\\d{0,\" +\r\n this._digits +\r\n \"})?)|((\\\\d*(\\\\.\\\\d{1,\" +\r\n this._digits +\r\n \"}))))\\\\s*$\";\r\n return String(value).match(new RegExp(regExpString));\r\n }\r\n }\r\n\r\n private run(oldValue: any) {\r\n setTimeout(() => {\r\n const currentValue: string = this.el.nativeElement.value;\r\n const allowNegative = this._negative;\r\n\r\n if (allowNegative) {\r\n if (\r\n ![\"\", \"-\"].includes(currentValue) &&\r\n !this.checkAllowNegative(currentValue)\r\n ) {\r\n this.el.nativeElement.value = oldValue;\r\n }\r\n } else {\r\n if (currentValue !== '' && !this.check(currentValue)) {\r\n this.el.nativeElement.value = oldValue;\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n constructor(private el: ElementRef) { }\r\n\r\n @HostListener(\"keydown\", [\"$event\"])\r\n onKeyDown(event: KeyboardEvent) {\r\n this.run(this.el.nativeElement.value);\r\n }\r\n\r\n @HostListener(\"paste\", [\"$event\"])\r\n onPaste(event: ClipboardEvent) {\r\n this.run(this.el.nativeElement.value);\r\n }\r\n}","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-page-title',\r\n templateUrl: './page-title.component.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekPageTitle {\r\n @Input() icon?: string;\r\n\r\n @Input() title?: string;\r\n\r\n\r\n private _isEditPage = false;\r\n @Input()\r\n get isEditPage(): boolean {\r\n return this._isEditPage;\r\n }\r\n set isEditPage(v: BooleanInput) {\r\n this._isEditPage = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() modelId?: number | null;\r\n\r\n}","<h1 class=\"h2 pt-3 pb-2 mb-3 border-bottom\">\r\n <i *ngIf=\"icon\" class=\"{{icon}}\"></i><ng-container *ngIf=\"icon\">&nbsp;</ng-container>{{ title }}&nbsp;<ng-container *ngIf=\"isEditPage\">\r\n <small class=\"text-muted\" *ngIf=\"modelId && modelId > 0 else elseBlock\">[<ng-container>{{ 'Action.Edit' | translate }}</ng-container>]</small>\r\n <ng-template #elseBlock>\r\n <small class=\"text-muted\">[<ng-container>{{ 'Action.Create' | translate }}</ng-container>]</small>\r\n </ng-template>\r\n </ng-container>\r\n</h1>","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { BooleanInput } from '../../../components';\r\nimport { Pager } from '../../../models';\r\nimport { Convert } from '../../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-pager',\r\n templateUrl: './pager.html',\r\n styles: [':host { display: block; }'],\r\n imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekPager {\r\n @Input() pager : Pager = new Pager();\r\n\r\n private _showPageSize = true;\r\n @Input()\r\n get showPageSize(): boolean {\r\n return this._showPageSize;\r\n }\r\n set showPageSize(v: BooleanInput) {\r\n this._showPageSize = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() pagerAlign = 'start';\r\n\r\n\r\n setPage(page: number) {\r\n // if (!this.pager) return;\r\n\r\n if (page === this.pager.pageNumber)\r\n return;\r\n this.onPageChange.emit(page);\r\n }\r\n setPageSize(pageSize: number) {\r\n // if (!this.pager) return;\r\n\r\n if (pageSize === this.pager.pageSize)\r\n return;\r\n this.onPageSizeChange.emit(pageSize);\r\n }\r\n\r\n @Output() onPageChange = new EventEmitter<number>();\r\n\r\n @Output() onPageSizeChange = new EventEmitter<number>();\r\n}","<div *ngIf=\"pager\" class=\"row\">\r\n <div [ngClass]=\"{ 'col-sm-8': showPageSize, 'col-sm-12': !showPageSize}\">\r\n <nav aria-label=\"Pagination\">\r\n <ul class=\"pagination\" [ngClass]=\"{ 'justify-content-center': pagerAlign === 'center', 'justify-content-end': pagerAlign === 'end'}\">\r\n <li [class.disabled]=\"pager.isFirstPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"pager.isFirstPage ? 'true' : null\" aria-label=\"First\">\r\n <span aria-hidden=\"true\">&laquo;&laquo;</span>\r\n </a>\r\n </li>\r\n <li [class.disabled]=\"!pager.hasPreviousPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(pager.pageNumber - 1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"!pager.hasPreviousPage ? 'true' : null\" aria-label=\"Previous\">\r\n <span aria-hidden=\"true\">&laquo;</span>\r\n </a>\r\n </li>\r\n <li *ngFor=\"let page of pager.pages\" [class.active]=\"page === pager.pageNumber\" class=\"page-item\"><a class=\"page-link\" (click)=\"setPage(page)\" href=\"javascript:void(0)\">{{page}}</a></li>\r\n <li [class.disabled]=\"!pager.hasNextPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(pager.pageNumber + 1)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"!pager.hasNextPage ? 'true' : null\" aria-label=\"Next\">\r\n <span aria-hidden=\"true\">&raquo;</span>\r\n </a>\r\n </li>\r\n <li [class.disabled]=\"pager.isLastPage\" class=\"page-item\">\r\n <a class=\"page-link\" (click)=\"setPage(pager.pageCount)\" href=\"javascript:void(0)\" [attr.aria-disabled]=\"pager.isLastPage ? 'true' : null\" aria-label=\"Last\">\r\n <span aria-hidden=\"true\">&raquo;&raquo;</span>\r\n </a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n <div class=\"col-sm-4\" *ngIf=\"showPageSize\">\r\n <div class=\"float-end\">\r\n <div class=\"dropdown\">\r\n <button class=\"btn btn-secondary dropdown-toggle\" type=\"button\" id=\"page-size-button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n {{pager.pageSize}}\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end\" aria-labelledby=\"page-size-button\">\r\n <li><h6 class=\"dropdown-header\">{{ 'Pagination.PageSize' | translate }}</h6></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 10\" (click)=\"setPageSize(10)\" href=\"javascript:void(0)\">10</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 20\" (click)=\"setPageSize(20)\" href=\"javascript:void(0)\">20</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 50\" (click)=\"setPageSize(50)\" href=\"javascript:void(0)\">50</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 100\" (click)=\"setPageSize(100)\" href=\"javascript:void(0)\">100</a></li>\r\n <li><a class=\"dropdown-item\" [class.active]=\"pager.pageSize === 500\" (click)=\"setPageSize(500)\" href=\"javascript:void(0)\">500</a></li>\r\n </ul>\r\n </div>\r\n </div>\r\n <div class=\"float-end mt-2\">\r\n {{pager.firstItemOnPage}} - {{pager.lastItemOnPage}} of {{pager.totalItemCount}} &nbsp;\r\n </div>\r\n </div>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { Component, Input } from '@angular/core';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\n\r\n@Component({\r\n standalone:true,\r\n selector: 'zek-field-validator, [zek-field-validator]',\r\n host: { '[class]': '\"invalid-tooltip\"' },\r\n templateUrl: './field-validator.html',\r\n imports: [CommonModule, TranslateModule]\r\n})\r\nexport class ZekFieldValidator {\r\n @Input() field: any;\r\n}","<ng-container *ngIf=\"field && field.invalid && field.errors && (field.dirty || field.touched || field.formDirective?.submitted)\">\r\n <ng-container *ngIf=\"field.errors.required\">{{ 'Validation.Required' | translate }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.minlength\">{{ 'Validation.MinLengthFormat' | translate:{ value: field.errors.minlength.requiredLength } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.maxlength\">{{ 'Validation.MaxLengthFormat' | translate:{ value: field.errors.maxlength.requiredLength } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.min\">{{ 'Validation.Min' | translate:{ value: field.errors.min.min } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.max\">{{ 'Validation.Max' | translate:{ value: field.errors.min.max } }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.email\">{{ 'Validation.Pattern' | translate }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.pattern\">{{ 'Validation.Pattern' | translate }}</ng-container><!-- {{ field.errors.pattern.requiredPattern }} -->\r\n <ng-container *ngIf=\"field.errors.mismatch\">{{ 'Validation.Mismatch' | translate }}</ng-container>\r\n <ng-container *ngIf=\"field.errors.server\">{{field.errors.server}}</ng-container>\r\n</ng-container>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { ZekFieldValidator } from '../validator';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-password',\r\n templateUrl: './password.html',\r\n imports: [FormsModule, ZekFieldValidator]\r\n})\r\nexport class ZekPassword {\r\n @Input() name = 'Password';\r\n\r\n private _required = false;\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(v: BooleanInput) {\r\n this._required = Convert.toBooleanProperty(v);\r\n }\r\n\r\n @Input() minlength: number | string | null = null;\r\n @Input() maxlength: number | string | null = null;\r\n\r\n @Input() model?: string | null;\r\n @Output('modelChange') onChange = new EventEmitter();\r\n\r\n private _type = 'password';\r\n get type() {\r\n return this._type;\r\n }\r\n\r\n showHide() {\r\n this._type = this._type === 'password' ? 'text' : 'password';\r\n }\r\n}","<div class=\"input-group has-validation\">\r\n <input type=\"{{type}}\" class=\"form-control\" name=\"{{name}}\" id=\"{{name}}\" [attr.aria-describedby]=\"name+'-show'\"\r\n [required]=\"required\" [minlength]=\"minlength\" [maxlength]=\"maxlength\"\r\n [ngModel]=\"model\" (ngModelChange)=\"onChange.emit($event)\"\r\n #password=\"ngModel\"\r\n >\r\n <button class=\"btn btn-outline-secondary\" type=\"button\" id=\"{{name}}-show\" (click)=\"showHide()\"><i class=\"fa-solid fa-eye\"></i></button>\r\n <div zek-field-validator [field]=\"password\"></div>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { BooleanInput, NumberInput } from '../../components';\r\nimport { Convert, MathHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\n\r\ntype Background = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark' | 'body' | 'white' | 'transparent';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-progress',\r\n templateUrl: './progress.html',\r\n styles: [':host { display: block; }'],\r\n imports: [\r\n CommonModule\r\n ]\r\n})\r\nexport class ZekProgress {\r\n @Input()\r\n get value(): number {\r\n return this._value;\r\n }\r\n set value(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 0, 100);\r\n if (this._value !== tmp) {\r\n this._value = tmp;\r\n }\r\n }\r\n private _value: number = 0;\r\n\r\n\r\n @Input()\r\n get showValue(): boolean {\r\n return this._showValue;\r\n }\r\n set showValue(v: BooleanInput) {\r\n this._showValue = Convert.toBooleanProperty(v);\r\n }\r\n private _showValue = false;\r\n\r\n @Input()\r\n get showTitle(): boolean {\r\n return this._showTitle;\r\n }\r\n set showTitle(v: BooleanInput) {\r\n this._showTitle = Convert.toBooleanProperty(v);\r\n }\r\n private _showTitle = true;\r\n\r\n get _title() {\r\n return this._showTitle ? `${this._value} %` : null;\r\n }\r\n\r\n\r\n @Input()\r\n get striped(): boolean {\r\n return this._striped;\r\n }\r\n set striped(v: BooleanInput) {\r\n this._striped = Convert.toBooleanProperty(v);\r\n }\r\n private _striped = false;\r\n\r\n\r\n @Input()\r\n get animated(): boolean {\r\n return this._animated;\r\n }\r\n set animated(v: BooleanInput) {\r\n this._animated = Convert.toBooleanProperty(v);\r\n }\r\n private _animated = false;\r\n\r\n @Input()\r\n get label() {\r\n return this._label;\r\n }\r\n set label(v: string | null | undefined) {\r\n this._label = v ? v : null;\r\n }\r\n private _label: string | null = null;\r\n\r\n\r\n\r\n @Input()\r\n get height() {\r\n return this._height;\r\n }\r\n set height(v: NumberInput) {\r\n const tmp = Convert.toNumber(v) || 0;\r\n this._height = tmp > 0 ? tmp : null;\r\n }\r\n private _height: number | null = null;\r\n\r\n\r\n @Input()\r\n get background() {\r\n return this._background;\r\n }\r\n set background(v: Background) {\r\n this._background = v;\r\n }\r\n private _background: Background = 'primary';\r\n}","<div class=\"progress\" [style.height.px]=\"height\" [title]=\"_title\" >\r\n <div class=\"progress-bar bg-{{background}}\" role=\"progressbar\"\r\n [class.progress-bar-striped]=\"striped || animated\"\r\n [class.progress-bar-animated]=\"animated\"\r\n [style.width.%]=\"value\"\r\n [attr.aria-valuenow]=\"value\"\r\n aria-valuemin=\"0\"\r\n aria-valuemax=\"100\">\r\n <ng-container *ngIf=\"showValue\">{{value}}%</ng-container>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, forwardRef, Input, OnInit, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput } from '../../components';\r\nimport { CoreUiComponent } from '../../components/core-ui.component';\r\nimport { Convert } from '../../utils';\r\n\r\n/**\r\n * Provider Expression that allows zek-radio to register as a ControlValueAccessor. This\r\n * allows it to support [(ngModel)] and ngControl.\r\n * @docs-private\r\n */\r\nconst ZEK_RADIO_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ZekRadio),\r\n multi: true,\r\n};\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-radio',\r\n templateUrl: './radio.html',\r\n host: {\r\n '[attr.id]': 'id',\r\n '[attr.tabindex]': 'null',\r\n '[attr.aria-label]': 'null',\r\n '[attr.aria-labelledby]': 'null',\r\n '[attr.aria-describedby]': 'null',\r\n // Note: under normal conditions focus shouldn't land on this element, however it may be\r\n // programmatically set, for example inside of a focus trap, in this case we want to forward\r\n // the focus to the native element.\r\n '(focus)': '_inputElement.nativeElement.focus()',\r\n\r\n },\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n providers: [ZEK_RADIO_CONTROL_VALUE_ACCESSOR],\r\n})\r\nexport class ZekRadio extends CoreUiComponent\r\n implements OnInit {\r\n constructor(\r\n private _changeDetector: ChangeDetectorRef,\r\n _renderer: Renderer2,\r\n _elementRef: ElementRef) {\r\n super(_renderer, _elementRef);\r\n }\r\n\r\n\r\n private _uniqueId: string = `zek-radio-${this.uniqueId}`;\r\n\r\n /** The unique ID for the radio button. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n /** Used to set the 'aria-label' attribute on the underlying input element. */\r\n @Input('aria-label') ariaLabel?: string | null;\r\n\r\n /** The 'aria-labelledby' attribute takes precedence as the element's text alternative. */\r\n @Input('aria-labelledby') ariaLabelledby?: string | null;\r\n\r\n /** The 'aria-describedby' attribute is read after the element's label and field type. */\r\n @Input('aria-describedby') ariaDescribedby?: string | null;\r\n\r\n /** The native `<input type=radio>` element */\r\n @ViewChild('input') _inputElement?: ElementRef<HTMLInputElement> | null;\r\n\r\n\r\n\r\n private _inline = false;\r\n get inline() {\r\n return this._inline;\r\n }\r\n @Input()\r\n set inline(v: BooleanInput) {\r\n const newValue = Convert.toBooleanProperty(v);\r\n if (this._inline !== newValue) {\r\n this._inline = newValue;\r\n this.onInlineChanged();\r\n }\r\n }\r\n onInlineChanged() { }\r\n\r\n get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n\r\n /** The value from ngModel. */\r\n private modelValue: any;\r\n\r\n\r\n private _checked = false;\r\n @Input()\r\n get checked(): boolean {\r\n return this._checked;\r\n }\r\n set checked(value: BooleanInput) {\r\n const newCheckedState = Convert.toBooleanProperty(value);\r\n if (this._checked !== newCheckedState) {\r\n this._checked = newCheckedState;\r\n this._markForCheck();\r\n }\r\n }\r\n\r\n\r\n override writeValue(value: any): void {\r\n if (this.modelValue !== value) {\r\n this.modelValue = value;\r\n this.checked = this.modelValue === this._value;\r\n }\r\n\r\n }\r\n override onValueChanged() {\r\n if (!this.checked) {\r\n // Update checked when the value changed to match the radio group's value\r\n this.checked = this.modelValue === this._value;\r\n }\r\n }\r\n\r\n\r\n override onRequiredChanged(): void {\r\n this._markForCheck();\r\n }\r\n override onDisabledChanged() {\r\n this._markForCheck();\r\n }\r\n\r\n\r\n /**\r\n * Marks the radio button as needing checking for change detection.\r\n * This method is exposed because the parent radio group will directly\r\n * update bound properties of the radio button.\r\n */\r\n private _markForCheck() {\r\n // When group value changes, the button will not be notified. Use `markForCheck` to explicit\r\n // update radio button's status\r\n this._changeDetector.markForCheck();\r\n }\r\n\r\n\r\n override init(): void {\r\n // Determine if it should be checked\r\n this.checked = this.modelValue === this._value;\r\n }\r\n\r\n\r\n /** Triggered when the radio button receives an interaction from the user. */\r\n override _onInputInteraction(event: Event) {\r\n // We always have to stop propagation on the change event.\r\n // Otherwise the change event, from the input element, will bubble up and\r\n // emit its event object to the `change` output.\r\n event.stopPropagation();\r\n\r\n if (!this.checked && !this.disabled) {\r\n const modelValueChanged = this.value !== this.modelValue;\r\n this.checked = true;\r\n this.modelValue = this._value;\r\n this._emitChangeEvent();\r\n\r\n if (modelValueChanged) {\r\n this._onChange(this._value);\r\n }\r\n }\r\n }\r\n}","<div class=\"form-check\" [class.form-check-inline]=\"inline\">\r\n <input #input class=\"form-check-input\" type=\"radio\"\r\n [id]=\"inputId\"\r\n [checked]=\"checked\"\r\n [disabled]=\"disabled\"\r\n [attr.name]=\"name\"\r\n [attr.value]=\"value\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"ariaLabel\"\r\n [attr.aria-labelledby]=\"ariaLabelledby\"\r\n [attr.aria-describedby]=\"ariaDescribedby\"\r\n (change)=\"_onInputInteraction($event)\">\r\n <label [for]=\"inputId\">\r\n <ng-content></ng-content>\r\n </label>\r\n</div>","import { Directive, Input } from '@angular/core';\r\nimport { BooleanInput } from '../../components';\r\nimport { Convert } from '../../utils';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[readonly],[readOnly]',\r\n host: {\r\n '[attr.readonly]': '_readOnly ? \"\" : null'\r\n }\r\n})\r\nexport class ZekReadOnlyDirective {\r\n private _readOnly = false;\r\n @Input()\r\n get readonly(): boolean {\r\n return this._readOnly;\r\n }\r\n set readonly(v: BooleanInput) {\r\n this._readOnly = Convert.toBooleanProperty(v);\r\n }\r\n}","import { HtmlHelper } from \"../../utils\";\r\nimport { ReCaptchaV2 } from \"./recaptcha.model\";\r\n\r\ndeclare var grecaptcha: ReCaptchaV2.ReCaptcha & {\r\n enterprise: ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\ndeclare global {\r\n interface Window {\r\n recaptchaloaded: () => void;\r\n }\r\n}\r\nfunction loadScript(\r\n siteKey: \"explicit\" | string,\r\n onLoaded: (grecaptcha: ReCaptchaV2.ReCaptcha) => void,//ReCaptchaV2.ReCaptcha\r\n urlParams?: string,\r\n url?: string,\r\n nonce?: string\r\n): void {\r\n window.recaptchaloaded = () => {\r\n onLoaded(grecaptcha);\r\n };\r\n\r\n const baseUrl = url || \"https://www.google.com/recaptcha/api.js\";\r\n const params = urlParams || '';\r\n const src = `${baseUrl}?render=${siteKey}&onload=recaptchaloaded${params}`;\r\n\r\n HtmlHelper.loadScript(src, nonce, true, true);\r\n}\r\n\r\nexport const loader = { loadScript };","import { Inject, Injectable, NgZone, Optional } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { RECAPTCHA_SITE_KEY } from '../../tokens';\r\nimport { loader } from './loader';\r\nimport { ReCaptchaV2 } from './recaptcha.model';\r\n\r\ndeclare var grecaptcha: ReCaptchaV2.ReCaptcha & {\r\n enterprise: ReCaptchaV2.ReCaptcha;\r\n};\r\n\r\n\r\nexport interface ReCaptchaConfig {\r\n siteKey: string;\r\n}\r\n\r\n\r\nexport interface OnExecuteData {\r\n /**\r\n * The name of the action that has been executed.\r\n */\r\n action: string;\r\n /**\r\n * The token that reCAPTCHA v3 provided when executing the action.\r\n */\r\n token: string;\r\n}\r\n\r\nexport interface OnExecuteErrorData {\r\n /**\r\n * The name of the action that has been executed.\r\n */\r\n action: string;\r\n /**\r\n * The error which was encountered\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: any;\r\n}\r\n\r\ntype ActionBacklogEntry = [string, Subject<string>];\r\n\r\n\r\n\r\n@Injectable()\r\nexport class ReCaptchaService {\r\n private readonly isBrowser = true;\r\n private readonly siteKey: string;\r\n private readonly zone: NgZone;\r\n\r\n private actionBacklog: ActionBacklogEntry[] | undefined;\r\n private grecaptcha?: ReCaptchaV2.ReCaptcha;\r\n private onExecuteSubject?: Subject<OnExecuteData>;\r\n private onExecuteErrorSubject?: Subject<OnExecuteErrorData>;\r\n private onExecuteObservable?: Observable<OnExecuteData>;\r\n private onExecuteErrorObservable?: Observable<OnExecuteErrorData>;\r\n\r\n constructor(\r\n zone: NgZone,\r\n @Optional() @Inject(RECAPTCHA_SITE_KEY) siteKey: string) {\r\n\r\n this.zone = zone;\r\n this.siteKey = siteKey;\r\n this.init();\r\n }\r\n\r\n public get onExecute(): Observable<OnExecuteData> {\r\n if (!this.onExecuteSubject) {\r\n this.onExecuteSubject = new Subject<OnExecuteData>();\r\n this.onExecuteObservable = this.onExecuteSubject.asObservable();\r\n }\r\n\r\n if (!this.onExecuteObservable)\r\n throw new Error(\"onExecuteObservable is undefined\");\r\n\r\n return this.onExecuteObservable;\r\n }\r\n\r\n public get onExecuteError(): Observable<OnExecuteErrorData> {\r\n if (!this.onExecuteErrorSubject) {\r\n this.onExecuteErrorSubject = new Subject<OnExecuteErrorData>();\r\n this.onExecuteErrorObservable = this.onExecuteErrorSubject.asObservable();\r\n }\r\n\r\n if (!this.onExecuteErrorObservable)\r\n throw new Error(\"onExecuteErrorObservable is undefined\");\r\n\r\n return this.onExecuteErrorObservable;\r\n }\r\n\r\n /**\r\n * Executes the provided `action` with reCAPTCHA v3 API.\r\n * Use the emitted token value for verification purposes on the backend.\r\n *\r\n * For more information about reCAPTCHA v3 actions and tokens refer to the official documentation at\r\n * https://developers.google.com/recaptcha/docs/v3.\r\n *\r\n * @param {string} action the action to execute\r\n * @returns {Observable<string>} an `Observable` that will emit the reCAPTCHA v3 string `token` value whenever ready.\r\n * The returned `Observable` completes immediately after emitting a value.\r\n */\r\n public execute(action: string): Observable<string> {\r\n const subject = new Subject<string>();\r\n if (this.isBrowser) {\r\n if (!this.grecaptcha) {\r\n // todo: add to array of later executions\r\n if (!this.actionBacklog) {\r\n this.actionBacklog = [];\r\n }\r\n\r\n this.actionBacklog.push([action, subject]);\r\n } else {\r\n this.executeActionWithSubject(action, subject);\r\n }\r\n }\r\n\r\n return subject.asObservable();\r\n }\r\n\r\n /** @internal */\r\n private executeActionWithSubject(action: string, subject: Subject<string>): void {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n const onError = (error: any) => {\r\n this.zone.run(() => {\r\n subject.error(error);\r\n if (this.onExecuteErrorSubject) {\r\n // We don't know any better at this point, unfortunately, so have to resort to `any`\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.onExecuteErrorSubject.next({ action, error });\r\n }\r\n });\r\n };\r\n\r\n this.zone.runOutsideAngular(() => {\r\n try {\r\n if (this.grecaptcha)\r\n this.grecaptcha.execute(this.siteKey, { action }).then((token: string) => {\r\n this.zone.run(() => {\r\n subject.next(token);\r\n subject.complete();\r\n if (this.onExecuteSubject) {\r\n this.onExecuteSubject.next({ action, token });\r\n }\r\n });\r\n }, onError);\r\n } catch (e) {\r\n onError(e);\r\n }\r\n });\r\n }\r\n\r\n /** @internal */\r\n private init() {\r\n if (this.isBrowser) {\r\n if (\"grecaptcha\" in window) {\r\n this.grecaptcha = grecaptcha;\r\n } else {\r\n loader.loadScript(this.siteKey, this.onLoadComplete);\r\n }\r\n }\r\n }\r\n\r\n /** @internal */\r\n private onLoadComplete = (grecaptcha: ReCaptchaV2.ReCaptcha) => {\r\n this.grecaptcha = grecaptcha;\r\n if (this.actionBacklog && this.actionBacklog.length > 0) {\r\n this.actionBacklog.forEach(([action, subject]) => this.executeActionWithSubject(action, subject));\r\n this.actionBacklog = undefined;\r\n }\r\n }\r\n}","import { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { ReCaptchaConfig } from \"./index\";\r\nimport { RECAPTCHA_SITE_KEY } from \"../../tokens\";\r\nimport { ReCaptchaService } from \"./recaptcha.service\";\r\n\r\n//4.2.0\r\n@NgModule({\r\n providers: [ReCaptchaService]\r\n})\r\nexport class RecaptchaModule {\r\n public static forRoot(config: ReCaptchaConfig): ModuleWithProviders<RecaptchaModule> {\r\n return {\r\n ngModule: RecaptchaModule,\r\n providers: [\r\n ReCaptchaService,\r\n {\r\n provide: RECAPTCHA_SITE_KEY,\r\n useValue: config.siteKey\r\n },\r\n ]\r\n };\r\n }\r\n\r\n public static forChild(config: ReCaptchaConfig) {\r\n return this.forRoot(config);\r\n }\r\n}\r\n","import { Component, ElementRef, forwardRef, Input, Renderer2 } from '@angular/core';\r\nimport { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { BooleanInput, CoreUiComponent } from '../../components';\r\nimport { ArrayHelper, Convert } from '../../utils';\r\nimport { KeyPairOption } from './model';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\nconst ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR: any = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => ZekSelectMultiple),\r\n multi: true,\r\n};\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-select,[zek-select]',\r\n templateUrl: './select.html',\r\n providers: [ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR],\r\n imports: [\r\n CommonModule,\r\n FormsModule\r\n ],\r\n})\r\n\r\nexport class ZekSelectMultiple extends CoreUiComponent {\r\n constructor(renderer: Renderer2, elementRef: ElementRef) {\r\n super(renderer, elementRef);\r\n }\r\n\r\n private _uniqueId: string = `zek-select-${this.uniqueId}`;\r\n /** The unique ID for the radio button. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n @Input() valueField?: string | null;\r\n @Input() textField?: string | null;\r\n @Input() checkedTextField?: string | null;\r\n\r\n @Input() css: 'primary' | 'secondary' | 'success' | 'danger ' | 'warning' | 'info' | 'light' | 'dark' = 'primary';\r\n\r\n\r\n @Input()\r\n get placeholder(): string {\r\n return this._placeholder;\r\n }\r\n set placeholder(value: string | null | undefined) {\r\n if (value)\r\n this._placeholder = value;\r\n else\r\n this._placeholder = '';\r\n }\r\n private _placeholder = '';\r\n\r\n @Input()\r\n get label(): string {\r\n return this._label;\r\n }\r\n set label(value: string | null | undefined) {\r\n if (value)\r\n this._label = value;\r\n else\r\n this._label = '';\r\n }\r\n private _label = '';\r\n\r\n\r\n\r\n @Input()\r\n get multiple() {\r\n return this._multiple;\r\n }\r\n set multiple(value: BooleanInput) {\r\n this._multiple = Convert.toBooleanProperty(value);\r\n }\r\n private _multiple = true;\r\n\r\n\r\n private _selected: any[] = [];\r\n\r\n @Input()\r\n get data() {\r\n return this._data;\r\n }\r\n set data(value: any[] | null | undefined) {\r\n if (this._data !== value) {\r\n this._data = value;\r\n this.onDataChanged();\r\n }\r\n }\r\n private _data?: any[] | null = [];\r\n normalized: KeyPairOption[] = [];\r\n onDataChanged() {\r\n this._setSelectionByValue(this._value);\r\n if (this.isInitialized) {\r\n this._normalizeData();\r\n }\r\n }\r\n\r\n _text = '';\r\n\r\n\r\n\r\n override onValueChanged() {\r\n if (Array.isArray(this._data)) {\r\n this._setSelectionByValue(this._value);\r\n }\r\n }\r\n\r\n\r\n override init(): void {\r\n this._normalizeData();\r\n }\r\n\r\n\r\n private _normalizeData() {\r\n this.normalized = [];\r\n if (Array.isArray(this._data)) {\r\n if (this.valueField && this.textField) {\r\n for (const item of this._data) {\r\n this.normalized.push({ key: item[this.valueField], value: item[this.textField], checked: this._selected.includes(item), item: item });\r\n }\r\n } else {\r\n for (const item of this._data) {\r\n this.normalized.push({ key: item, value: item, checked: this._selected.includes(item), item });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sets the selected option based on a value. If no option can be\r\n * found with the designated value, the select trigger is cleared.\r\n */\r\n private _setSelectionByValue(value: any | any[]): void {\r\n this._selected = [];\r\n\r\n if (this.multiple && value) {\r\n if (!Array.isArray(value)) {\r\n throw new Error(\"value is not array\");\r\n }\r\n\r\n if (Array.isArray(this._data)) {\r\n let notUnique: any[] = [];\r\n if (this.valueField) {\r\n for (const currentValue of value) {\r\n const items = ArrayHelper.filterByKey(currentValue, this.valueField, this._data);\r\n notUnique = notUnique.concat(items);\r\n }\r\n } else {\r\n for (const currentValue of value) {\r\n const items = this._data.filter(x => x === currentValue);\r\n notUnique = notUnique.concat(items);\r\n }\r\n }\r\n\r\n this._selected = ArrayHelper.distinct(notUnique);\r\n }\r\n } else {\r\n if (Array.isArray(this._data)) {\r\n if (this.valueField) {\r\n this._selected = ArrayHelper.filterByKey(value, this.valueField, this._data);\r\n } else {\r\n this._selected = this._data.filter(x => x === value);\r\n }\r\n }\r\n }\r\n\r\n for (const norm of this.normalized) {\r\n norm.checked = this._selected.includes(norm.item);\r\n }\r\n this._initText();\r\n }\r\n\r\n\r\n\r\n\r\n toggleChecked(v: any) {\r\n if (v && !this.disabled && !this.readonly) {\r\n if (!v.checked) {\r\n v.checked = true;\r\n\r\n if (this.multiple) {\r\n const tmp = [];\r\n for (const item of this.normalized) {\r\n if (item.checked) {\r\n tmp.push(item.key);\r\n }\r\n }\r\n\r\n this.setNgModel(tmp);\r\n // this.value = tmp;\r\n }\r\n else {\r\n //this.value = v.key;\r\n this.setNgModel(v.key);\r\n }\r\n } else {\r\n v.checked = false;\r\n if (this.multiple) {\r\n if (Array.isArray(this._value)) {\r\n this.setNgModel((this._value as any[]).filter(x => x !== v.key));\r\n }\r\n } else {\r\n this.setNgModel(null);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n private _initText() {\r\n const field = this.checkedTextField || this.textField || '';\r\n if (field) {\r\n this._text = this._selected.filter(x => x !== undefined && x !== null).map(x => x[field]).join(', ');\r\n } else {\r\n this._text = this._selected.join(', ');\r\n }\r\n }\r\n}\r\n","<div class=\"dropdown\" id=\"dropdown-{{id}}\">\r\n <button class=\"btn btn-{{css}} dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n {{label}} <ng-container *ngIf=\"!_text\">{{placeholder}}</ng-container> {{_text}}\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <ng-container *ngIf=\"normalized\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" *ngFor=\"let item of normalized\" (click)=\"toggleChecked(item)\">\r\n <span *ngIf=\"item.checked\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.checked\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item.value}}\r\n </a></li>\r\n </ng-container>\r\n </ul>\r\n</div>","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { RandomHelper, StringHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-select2,[zek-select2]',\r\n templateUrl: './select2.html',\r\n styleUrls: ['./select2.css'],\r\n imports: [CommonModule, FormsModule]\r\n\r\n})\r\nexport class ZekSelect2 implements OnDestroy {\r\n filter?: string | null;\r\n text?: string | null;\r\n\r\n readonly elementId = RandomHelper.randomHex();\r\n\r\n private _data: Array<any> = [];\r\n @Input()\r\n get data(): Array<any> {\r\n return this._data;\r\n }\r\n set data(value: Array<any>) {\r\n if (this._data !== value) {\r\n this._data = value;\r\n this.findAndSetItem();\r\n this.filterData();\r\n }\r\n }\r\n filteredData: Array<any> = [];\r\n\r\n @Input() textField: any;\r\n @Input() valueField: any;\r\n @Input() placeholder: string = ''\r\n\r\n @Output() selectedItemChange = new EventEmitter<any>();\r\n private _selectedItem: any;\r\n get selectedItem(): any {\r\n return this._selectedItem;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n private _value: any;\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n set value(v: any) {\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.findAndSetItem();\r\n }\r\n }\r\n\r\n private findAndSetItem() {\r\n let foundItem = null;\r\n if (this._value === undefined || this._value === null || !this.data) {\r\n\r\n } else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n foundItem = this.data.find(x => x === this._value);\r\n } else {\r\n foundItem = this.data.find(x => x[this.valueField] === this._value);\r\n }\r\n\r\n this._selectedItem = foundItem;\r\n this.setText();\r\n }\r\n\r\n\r\n\r\n\r\n // private _dropdown: any;\r\n // public get dropdown(): any {\r\n // if (!this._dropdown) {\r\n // let el = document.getElementById('btn-' + this.elementId);\r\n // this._dropdown = new bootstrap.Dropdown(el);\r\n // }\r\n // return this._dropdown;\r\n // }\r\n // public set dropdown(v: any) {\r\n // this._dropdown = v;\r\n // }\r\n\r\n ngOnDestroy() {\r\n // this.dropdown?.dispose();\r\n // this.dropdown = null;\r\n }\r\n\r\n\r\n onTextChange(text: string) {\r\n this.filter = StringHelper.tryTrim(text);\r\n this.filterData();\r\n }\r\n\r\n private filterData() {\r\n if (this.filter && this.filter !== '') {\r\n const searchString = this.filter;\r\n if (this.textField === undefined || this.textField === null) {\r\n this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n } else {\r\n this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n }\r\n }\r\n else// if (this.filter === undefined || this.filter === null || this.filter === '') \r\n {\r\n this.filteredData = this.data;\r\n }\r\n }\r\n\r\n onFocus(e: FocusEvent) {\r\n // if (this.dropdown){\r\n // this.dropdown.show();\r\n // }\r\n // let dropdown = document.getElementById(`dropdown-menu-container-${this.elementId}`);\r\n // console.log(dropdown);\r\n\r\n // if (dropdown) {\r\n // console.log(dropdown.classList);\r\n\r\n // if (!dropdown.classList.contains('show')) {\r\n // let el = document.getElementById(`input-${this.elementId}`);\r\n // if (el) {\r\n // el.click();\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n\r\n // let inputId = 'input-' + this.elementId;\r\n // let el = document.getElementById(inputId);\r\n // if (el) {\r\n\r\n // if (!el.classList.contains('show')) {\r\n // this.dropdown?.show();\r\n // }\r\n\r\n // let menuId = '#dropdown-menu-' + this.elementId + ' ' + 'a';\r\n // el.addEventListener('keydown', function (e) {\r\n // if (e.key == 'ArrowDown') {\r\n // (document.querySelectorAll(menuId)[0] as any).focus();\r\n // }\r\n // });\r\n // }\r\n }\r\n inputUnfocused() {\r\n // this.expanded = false;\r\n }\r\n\r\n private setText() {\r\n if (this._selectedItem === undefined || this._selectedItem === null) {\r\n this.text = null;\r\n }\r\n else if (this.textField === undefined || this.textField === null) {\r\n this.text = this._selectedItem;\r\n } else {\r\n this.text = this._selectedItem[this.textField];\r\n }\r\n }\r\n\r\n selectItem(item: any) {\r\n\r\n if (this._selectedItem !== item) {\r\n this._selectedItem = item;\r\n this.selectedItemChange.emit(item);\r\n\r\n this.setText();\r\n\r\n //set value\r\n let v;\r\n if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n // this.value = v\r\n v = item;\r\n } else {\r\n // this.value = v[this.valueField];\r\n v = item[this.valueField];\r\n }\r\n\r\n //if value not equals then emit valueChange\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\n","<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{entry[textField]}}</a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let entry of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(entry)\" class=\"dropdown-item\">{{textField}}</a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>\r\n<!-- <kendo-autocomplete\r\n [data]=\"data\"\r\n [filterable]=\"true\"\r\n (valueChange)=\"valueChange($event)\"\r\n (filterChange)=\"filterChange($event)\"\r\n (open)=\"open()\"\r\n (close)=\"close()\"\r\n (focus)=\"focus()\"\r\n (blur)=\"blur()\">\r\n</kendo-autocomplete> -->","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\r\nimport { RandomHelper, StringHelper } from '../../utils';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\n//declare let bootstrap: any;\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-select2-multiple,[zek-select2-multiple]',\r\n templateUrl: './select2-multiple.html',\r\n imports: [CommonModule, FormsModule]\r\n})\r\n\r\nexport class ZekSelect2Multiple {\r\n filter?: string | null;\r\n text?: string | null;\r\n\r\n readonly elementId = RandomHelper.randomHex();\r\n\r\n private _data: Array<any> = [];\r\n @Input()\r\n get data(): Array<any> {\r\n return this._data;\r\n }\r\n set data(value: Array<any>) {\r\n if (this._data !== value) {\r\n this._data = value;\r\n this.findAndSetItems();\r\n this.filterData();\r\n }\r\n }\r\n filteredData: Array<any> = [];\r\n\r\n @Input() textField: any;\r\n @Input() selectedField: any;\r\n @Input() valueField: any;\r\n @Input() placeholder: string = ''\r\n\r\n @Output() selectedItemChange = new EventEmitter<any>();\r\n private _selectedItems: Array<any> = [];\r\n get selectedItems(): Array<any> {\r\n return this._selectedItems;\r\n }\r\n\r\n @Output() valueChange = new EventEmitter<any>();\r\n private _value?: Array<any> | null;\r\n @Input()\r\n get value() {\r\n return this._value;\r\n }\r\n set value(v: any) {\r\n if (this._value !== v) {\r\n this._value = v;\r\n this.findAndSetItems();\r\n }\r\n }\r\n\r\n private findAndSetItems() {\r\n this._data?.forEach(x => x.selected = false);\r\n this._selectedItems = [];\r\n let foundItems: Array<any> = [];\r\n if (this._value === undefined || this._value === null || !this.data) {\r\n\r\n } else if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n foundItems = this.data.filter(x => this._value?.includes(x));\r\n } else {\r\n foundItems = this.data.filter(x => this._value?.includes(x[this.valueField]));\r\n }\r\n\r\n if (foundItems.length > 0) {\r\n foundItems.forEach(x => x.selected = true);\r\n this._selectedItems = foundItems;\r\n }\r\n this.setText();\r\n }\r\n\r\n\r\n\r\n onTextChange(text: string) {\r\n this.filter = StringHelper.tryTrim(text);\r\n this.filterData();\r\n }\r\n\r\n private filterData() {\r\n if (this.filter && this.filter !== '') {\r\n const searchString = this.filter;\r\n if (typeof this.textField === 'undefined' || this.textField === null) {\r\n this.filteredData = this.data.filter(item => item.toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n } else {\r\n this.filteredData = this.data.filter(item => item[this.textField].toLowerCase().indexOf(searchString.toLowerCase()) !== -1);\r\n }\r\n }\r\n else {\r\n this.filteredData = this.data;\r\n }\r\n }\r\n\r\n onFocus(e: FocusEvent) {\r\n this.filter = '';\r\n this.text = '';\r\n this.filterData();\r\n }\r\n inputUnfocused() {\r\n this.setText();\r\n }\r\n\r\n private setText() {\r\n const fieldName = this.selectedField || this.textField;\r\n\r\n if (StringHelper.isNullOrEmpty((fieldName))) {\r\n this.text = this._selectedItems.join(', ');\r\n } else {\r\n this.text = this._selectedItems.map(x => x[fieldName]).join(', ');\r\n }\r\n }\r\n\r\n selectItem(item: any) {\r\n item.selected = !item.selected;\r\n\r\n if (item.selected) {\r\n this._selectedItems.push(item);\r\n } else {\r\n this._selectedItems = this._selectedItems.filter(x => x !== item);\r\n }\r\n\r\n this.selectedItemChange.emit(item);\r\n this.setText();\r\n\r\n let v: Array<any> | null;\r\n if (this.valueField === undefined || this.valueField === null || this.valueField === '') {\r\n v = this._selectedItems ? this._selectedItems : null;\r\n } else {\r\n v = this._selectedItems ? this._selectedItems.map(x => x[this.valueField]) : null;\r\n }\r\n\r\n this._value = v;\r\n this.valueChange.emit(v);\r\n }\r\n\r\n\r\n}\r\n","<div class=\"input-group position-relative\" id=\"dropdown-menu-container-{{elementId}}\">\r\n <input type=\"text\" class=\"form-control\" placeholder=\"{{placeholder}}\" data-bs-toggle=\"dropdown\" data-bs-auto-close=\"outside\" id=\"input-{{elementId}}\" [(ngModel)]=\"text\" (ngModelChange)=\"onTextChange($event)\" (focus)=\"onFocus($event)\" (blur)=\"inputUnfocused()\">\r\n <button class=\"btn btn-outline-secondary dropdown-toggle\" id=\"btn-{{elementId}}\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\" data-bs-reference=\"parent\"></button>\r\n <ul class=\"dropdown-menu dropdown-menu-start w-100 scrollable-menu\" id=\"dropdown-menu-{{elementId}}\">\r\n <ng-container *ngIf=\"textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item[textField]}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!textField\">\r\n <li *ngFor=\"let item of filteredData\">\r\n <a href=\"javascript:void(0)\" (click)=\"selectItem(item)\" class=\"dropdown-item\">\r\n <span *ngIf=\"item.selected\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.selected\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n</div>","import { Directive, ElementRef, HostListener, Input, OnInit, Output, EventEmitter, AfterViewInit } from '@angular/core';\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[zek-sort]'\r\n})\r\nexport class ZekSort implements AfterViewInit {\r\n private innerHtml: string = '';\r\n\r\n /**\r\n * name of sorting column\r\n */\r\n @Input() header: string | null = null;\r\n\r\n /**\r\n * Executes after 'sort' input changed\r\n */\r\n @Output() sortChange = new EventEmitter<string | null>();\r\n\r\n /**\r\n * Executes after 'asc' input changed\r\n */\r\n @Output() ascChange = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Executes after click on column\r\n */\r\n @Output() onChange = new EventEmitter();\r\n\r\n\r\n constructor(private el: ElementRef/*, renderer: Renderer, private templateRef: TemplateRef<any>, private viewContainer: ViewContainerRef */) {\r\n }\r\n\r\n // @Input() set myIf(shouldAdd: boolean) {\r\n // if (shouldAdd) {\r\n // // If condition is true add template to DOM\r\n // this.viewContainer.createEmbeddedView(this.templateRef);\r\n // } else {\r\n // // Else remove template from DOM\r\n // this.viewContainer.clear();\r\n // }\r\n // }\r\n\r\n\r\n ngAfterViewInit() {\r\n // Use renderer to render the element with styles\r\n //renderer.setElementStyle(el.nativeElement, 'display', 'none');\r\n\r\n this.innerHtml = this.el.nativeElement.innerHTML;\r\n this.initIcon();\r\n }\r\n\r\n initIcon() {\r\n if (!this.innerHtml) return;\r\n\r\n let tmpAsc = 0;\r\n if (!this.header || this.header !== this.sort) {\r\n tmpAsc = 1;\r\n } else if (this.asc) {\r\n tmpAsc = 2;\r\n } else {\r\n tmpAsc = 3;\r\n }\r\n\r\n this.el.nativeElement.innerHTML = (this.innerHtml || '')\r\n + '<span class=\"float-end' + (tmpAsc === 1 ? ' text-muted' : '') + '\">'\r\n + (tmpAsc === 1 ? '<i class=\"fa-solid fa-sort\"></i>' : '')\r\n + (tmpAsc === 2 ? '<i class=\"fa-solid fa-sort-up\"></i>' : '')\r\n + (tmpAsc === 3 ? '<i class=\"fa-solid fa-sort-down\"></i>' : '')\r\n + '</span>';\r\n }\r\n\r\n // @HostListener('click', ['$event.target']) onClick(btn) {\r\n // console.log('button', btn, 'number of clicks:', this.numberOfClicks++);\r\n // }\r\n @HostListener('click') onClick() {\r\n if (this.sort !== this.header) {\r\n this.sort = this.header;\r\n this.sortChange.emit(this.sort);\r\n this.asc = true;\r\n this.ascChange.emit(this.asc);\r\n\r\n } else {\r\n this.asc = !this.asc;\r\n this.ascChange.emit(this.asc);\r\n }\r\n\r\n this.onChange.emit();\r\n }\r\n\r\n\r\n\r\n\r\n\r\n private _sort: string | null = null;\r\n get sort() {\r\n return this._sort;\r\n }\r\n @Input()\r\n set sort(value: string | null) {\r\n if (this._sort !== value) {\r\n this._sort = value;\r\n this.initIcon();\r\n }\r\n }\r\n\r\n\r\n private _asc = false;\r\n get asc() {\r\n return this._asc;\r\n }\r\n @Input()\r\n set asc(value: boolean) {\r\n if (this._asc !== value) {\r\n this._asc = value;\r\n this.initIcon();\r\n }\r\n }\r\n}","import { Component, Input, Output, EventEmitter } from '@angular/core';\r\nimport { KeyPair } from '../../../models/key-pair.model';\r\nimport { RandomHelper } from '../../../utils';\r\nimport { TranslateModule } from '@ngx-translate/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-sort-button-group',\r\n templateUrl: './sort-button-group.html',\r\n imports: [CommonModule, TranslateModule],\r\n})\r\nexport class ZekSortButtonGroup {\r\n elementName: string = '';\r\n\r\n /**\r\n * Executes after 'sort' input changed\r\n */\r\n @Output() sortChange = new EventEmitter<string | null>();\r\n\r\n /**\r\n * Executes after 'asc' input changed\r\n */\r\n @Output() ascChange = new EventEmitter<boolean>();\r\n\r\n /**\r\n * Executes after click on column\r\n */\r\n @Output() onChange = new EventEmitter();\r\n\r\n sortField: any;\r\n private _sort: string | null = null;\r\n get sort(): string | null {\r\n return this._sort;\r\n }\r\n @Input()\r\n set sort(value: string | null) {\r\n if (this._sort !== value) {\r\n this._sort = value;\r\n }\r\n }\r\n\r\n\r\n private _asc = false;\r\n get asc() {\r\n return this._asc;\r\n }\r\n @Input()\r\n set asc(value: boolean) {\r\n if (this._asc !== value) {\r\n this._asc = value;\r\n }\r\n }\r\n\r\n @Input() sortFields: KeyPair[] | null = null;\r\n\r\n /**\r\n * Default constructor\r\n */\r\n constructor() {\r\n this.elementName = 'sort-button-group-' + RandomHelper.randomHex();\r\n }\r\n\r\n sortFieldClick(item: any) {\r\n if (!item || !item.key) return;\r\n\r\n this.sortField = item;\r\n if (this.sort !== item.key) {\r\n this.sort = item.key;\r\n this.sortChange.emit(this.sort);\r\n this.onChange.emit();\r\n }\r\n }\r\n\r\n ascDescClick() {\r\n this.asc = !this.asc;\r\n this.ascChange.emit(this.asc);\r\n this.onChange.emit();\r\n }\r\n}\r\n","<div class=\"btn-group me-3\" role=\"group\" aria-label=\"Sort group\">\r\n <button type=\"button\" class=\"btn btn-light\" (click)=\"ascDescClick()\">\r\n <span *ngIf=\"asc === undefined || asc === null\"><i class=\"fa-solid fa-sort fa-fw\"></i></span>\r\n <span *ngIf=\"asc === true\"><i class=\"fa-solid fa-arrow-down-z-a fa-fw\"></i></span>\r\n <span *ngIf=\"asc === false\"><i class=\"fa-solid fa-arrow-up-z-a fa-fw\"></i></span>\r\n </button>\r\n <button *ngIf=\"sortFields && sortFields.length > 0\" class=\"btn btn-light dropdown-toggle\" type=\"button\" id=\"{{elementName}}\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n <ng-container *ngIf=\"sortField; else elseFieldBlock\">{{ sortField.value | translate }}</ng-container>\r\n <ng-template #elseFieldBlock>{{ 'Action.Sort' | translate }}</ng-template>\r\n </button>\r\n <ul *ngIf=\"sortFields && sortFields.length > 0\" class=\"dropdown-menu\" [attr.aria-labelledby]=\"elementName\">\r\n <li><a *ngFor=\"let item of sortFields\" class=\"dropdown-item\" href=\"javascript:void(0)\" (click)=\"sortFieldClick(item)\">{{ (item.value) | translate }}</a></li>\r\n </ul>\r\n</div><i class=\"\"></i>","import { CommonModule } from '@angular/common';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BooleanInput, CoreUiComponent, NumberInput } from '../../components';\r\nimport { Convert, MathHelper } from '../../utils';\r\n\r\n@Component({\r\n standalone: true,\r\n imports: [CommonModule, FormsModule],\r\n selector: 'zek-tag',\r\n templateUrl: 'tag.html',\r\n styleUrl: 'tag.scss',\r\n host: {\r\n '[attr.id]': 'id',\r\n }\r\n})\r\nexport class ZekTag extends CoreUiComponent {\r\n @Input() model!: string[] | null;\r\n @Output() readonly modelChange = new EventEmitter<string[]>();\r\n\r\n @Input()\r\n get max(): number {\r\n return this._max;\r\n }\r\n set max(v: NumberInput) {\r\n const tmp = MathHelper.clamp(Convert.toNumber(v) || 0, 0, 1000000000);\r\n if (this._max !== tmp) {\r\n this._max = tmp;\r\n }\r\n }\r\n _max: number = 1000000000;\r\n\r\n\r\n\r\n _maxlength: number | null = null;\r\n @Input()\r\n get maxlength(): number | null {\r\n return this._maxlength;\r\n }\r\n set maxlength(v: NumberInput) {\r\n const tmp = Convert.parseNumber(v);\r\n if (tmp !== null) {\r\n const num = MathHelper.clamp(tmp, 0, 1000000000);\r\n if (this._maxlength !== num) {\r\n this._maxlength = num;\r\n }\r\n }\r\n this._maxlength = tmp;\r\n }\r\n\r\n\r\n\r\n private _duplicate = false;\r\n @Input()\r\n get duplicate(): boolean {\r\n return this._duplicate;\r\n }\r\n set duplicate(v: BooleanInput) {\r\n this._duplicate = Convert.toBooleanProperty(v);\r\n }\r\n\r\n\r\n\r\n text: string | null = null;\r\n onKeyEnter(e: Event) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n\r\n if (this.add(this.text)) {\r\n this.text = null;\r\n }\r\n }\r\n\r\n private _uniqueId: string = `zek-tag-${this.uniqueId}`;\r\n /** The unique ID for the tag. */\r\n @Input() id: string = this._uniqueId;\r\n\r\n get inputId(): string {\r\n return `${this.id || this._uniqueId}-input`;\r\n }\r\n\r\n add(text: string | null) {\r\n if (!text) return false;\r\n\r\n let emitModel = false;\r\n if (!this.model) {\r\n this.model = [];\r\n emitModel = true;\r\n }\r\n\r\n const maxlength = (this.maxlength || 0);\r\n if (maxlength > 0 && text.length > maxlength) {\r\n return false;\r\n }\r\n\r\n if (!this.duplicate && this.model.includes(text)) {\r\n return false;\r\n }\r\n\r\n if (this.model.length >= this.max) {\r\n return false\r\n }\r\n\r\n this.model.push(text);\r\n if (emitModel) this.modelChange.emit(this.model);\r\n return true;\r\n }\r\n\r\n remove(item: string) {\r\n if (!this.model) return;\r\n\r\n const index = this.model.indexOf(item);\r\n if (index !== -1) {\r\n this.model.splice(index, 1);\r\n }\r\n }\r\n}","<div class=\"d-flex flex-wrap align-items-center gap-1 form-control\">\r\n <ng-container *ngIf=\"model\">\r\n <button *ngFor=\"let item of model\" type=\"button\" (click)=\"remove(item)\" class=\"align-items-center gap-1 d-inline-flex py-0 border-0 btn btn-primary\">{{item}}<span class=\"d-inline-flex\" role=\"button\" tabindex=\"-1\"><i class=\"fa-solid fa-xmark\"></i></span></button>\r\n </ng-container>\r\n <div class=\"input-wrapper\"><span>i</span><input type=\"text\"\r\n [id]=\"inputId\"\r\n [name]=\"inputId\"\r\n [(ngModel)]=\"text\"\r\n [maxlength]=\"maxlength\"\r\n (keydown.enter)=\"onKeyEnter($event)\"></div>\r\n</div>","import { DatePipe } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\n//import { toDate } from '../../extensions';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'time'\r\n})\r\nexport class TimePipe implements PipeTransform {\r\n constructor(private readonly _datePipe: DatePipe) {\r\n }\r\n\r\n transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n const dateTime: Date = new Date(value);\r\n let dateTimeString: string;\r\n if (this.isValidDate(dateTime)) {\r\n dateTimeString = dateTime.toString();\r\n } else {\r\n dateTimeString = `1970-01-01 ${value}`;\r\n }\r\n\r\n // Replace any dashes with slashes, as Safari and IE11 don't recognise dates with dashes in them.\r\n dateTimeString = dateTimeString.replace(/-/g, '/');\r\n if (!this.isValidDate(new Date(dateTimeString))) {\r\n return null;\r\n }\r\n\r\n const formattedTime = this._datePipe.transform(dateTimeString, format);\r\n return formattedTime;\r\n }\r\n\r\n\r\n private isValidDate(d: any): boolean {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n}\r\n/*export class TimePipe extends DatePipe implements PipeTransform {\r\n transform(value: Date | string | number, format?: string, timezone?: string, locale?: string): string | null;\r\n transform(value: null | undefined, format?: string, timezone?: string, locale?: string): null;\r\n transform(value: Date | string | number | null | undefined, format?: string, timezone?: string, locale?: string): string | null {\r\n if (value === undefined || value === null || value === '' || value !== value) return null;\r\n\r\n const dateTime: Date = new Date(value);\r\n\r\n //const date = toDate(value);\r\n let dateTimeString: string;\r\n if (this.isValidDate(dateTime)) {\r\n dateTimeString = dateTime.toString();\r\n } else {\r\n dateTimeString = `1970-01-01 ${value}`;\r\n }\r\n\r\n dateTimeString = dateTimeString.replace(/-/g, '/');\r\n\r\n if (!this.isValidDate(new Date(dateTimeString))) {\r\n return null;\r\n }\r\n\r\n const formattedTime = super.transform(dateTimeString, format);\r\n\r\n return formattedTime;\r\n }\r\n\r\n\r\n private isValidDate(d: any): boolean {\r\n return d instanceof Date && !isNaN(d.getTime());\r\n }\r\n}*/","import { NgModule } from '@angular/core';\r\nimport { CommonModule, DatePipe } from '@angular/common';\r\n\r\nimport { TimePipe } from './time.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n TimePipe,\r\n ],\r\n providers: [\r\n DatePipe\r\n ],\r\n exports: [TimePipe]\r\n})\r\nexport class TimeModule { }","import { Injectable, Input } from \"@angular/core\";\r\nimport { Subject, Subscription, timer } from \"rxjs\";\r\nimport { map, takeWhile, tap } from \"rxjs/operators\";\r\nimport { DateHelper } from \"../../utils\";\r\n\r\n@Injectable()\r\nexport class TimerService {\r\n @Input() seconds = 0;\r\n\r\n // running = false;\r\n \r\n private _count = 0;\r\n public get count() {\r\n return this._count;\r\n }\r\n \r\n private _left = 0;\r\n public get left() {\r\n return this._left;\r\n }\r\n\r\n expireDate: Date | null = null;\r\n private subscription: Subscription | null = null;\r\n //@Output() checkTime: EventEmitter<number> = new EventEmitter();\r\n\r\n tick = new Subject<number>();\r\n completed = new Subject<any>();\r\n // tickerInterval: any;\r\n // expired: Observable<number> = new Observable<number>();\r\n // initialCountValue: number = 0;\r\n\r\n\r\n startHour(hours: number, minutes: number, seconds: number) {\r\n this.start((hours ? hours * 60 * 60 : 0) + (minutes ? minutes * 60 : 0) + seconds);\r\n }\r\n startMinute(minutes: number, seconds: number) {\r\n this.start((minutes ? minutes * 60 : 0) + seconds);\r\n }\r\n start(seconds: number) {\r\n this.clear();\r\n\r\n this._left = seconds;\r\n this._count = seconds;\r\n this.expireDate = DateHelper.addSeconds(new Date(), seconds);\r\n\r\n //this.internalTick();//because run first tick value example 60 -> not 59\r\n const source = timer(0, 1000).pipe(\r\n //map(i => this.count - i),\r\n //takeWhile(i => i > 0),\r\n map(_i => this._left--),\r\n takeWhile(_i => this.left >= 0)\r\n //tap(s => this.checkTime.emit(s))\r\n );\r\n\r\n this.subscription = source.subscribe(() => {\r\n this.internalTick();\r\n });\r\n }\r\n clear() {\r\n this.subscription?.unsubscribe();\r\n this.subscription = null;\r\n this.expireDate = null;\r\n }\r\n\r\n\r\n internalTick() {\r\n if (this.tick) {\r\n this.tick.next(this._left);\r\n }\r\n\r\n if (this.left <= 0 && this.completed) {\r\n this.completed.next(null);\r\n }\r\n /*\r\n // get total seconds between the times\r\n let delta = Math.abs(date_future - date_now) / 1000;\r\n\r\n // calculate (and subtract) whole days\r\n let days = Math.floor(delta / 86400);\r\n delta -= days * 86400;\r\n\r\n // calculate (and subtract) whole hours\r\n let hours = Math.floor(delta / 3600) % 24;\r\n delta -= hours * 3600;\r\n\r\n // calculate (and subtract) whole minutes\r\n let minutes = Math.floor(delta / 60) % 60;\r\n delta -= minutes * 60;\r\n\r\n // what's left is seconds\r\n let seconds = delta % 60; // in theory the modulus is not required\r\n */\r\n }\r\n}","import { AfterViewInit, Directive, ElementRef } from \"@angular/core\";\r\nimport { CoreComponent } from \"../../components\";\r\n\r\ndeclare let bootstrap: any;\r\n\r\n@Directive({\r\n standalone: true,\r\n selector: '[zek-toltip]'\r\n})\r\nexport class ZekTooltip extends CoreComponent implements AfterViewInit {\r\n private _tooltip: any;\r\n constructor(private el: ElementRef) {\r\n super();\r\n }\r\n\r\n override destroy() {\r\n this._tooltip?.dispose();\r\n this._tooltip = undefined;\r\n return super.destroy();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._tooltip = new bootstrap.Tooltip(this.el.nativeElement);\r\n }\r\n\r\n}","import { NgModule, Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'localToUtc',\r\n pure: true\r\n})\r\nexport class ZekLocalToUtcPipe implements PipeTransform {\r\n constructor(private readonly _datePipe: DatePipe) {\r\n }\r\n\r\n transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n const date = DateHelper.localToUtc(DateHelper.toDate(value))\r\n return this._datePipe.transform(date, format);\r\n }\r\n}\r\n@NgModule({\r\n declarations: [ZekLocalToUtcPipe],\r\n exports: [ZekLocalToUtcPipe],\r\n providers: [DatePipe]\r\n})\r\nexport class ZekLocalToUtcModule { }","import { NgModule, Pipe, PipeTransform } from '@angular/core';\r\nimport { DateHelper } from '../../utils';\r\nimport { DatePipe } from '@angular/common';\r\n\r\n@Pipe({\r\n standalone: false,\r\n name: 'utcToLocal'\r\n})\r\nexport class ZekUtcToLocalPipe implements PipeTransform {\r\n constructor(private readonly _datePipe: DatePipe) {\r\n }\r\n\r\n transform(value: Date | string | number | null | undefined, format?: string): string | null {\r\n if (typeof value === 'undefined' || value === null || value === '' || value !== value) return null;\r\n\r\n const date = DateHelper.utcToLocal(DateHelper.toDate(value))\r\n return this._datePipe.transform(date, format);\r\n }\r\n}\r\n\r\n@NgModule({\r\n declarations: [ZekUtcToLocalPipe],\r\n exports: [ZekUtcToLocalPipe],\r\n providers: [DatePipe]\r\n})\r\nexport class ZekUtcToLocalModule { }","// import { AbstractControl, Validators, ValidatorFn, ValidationErrors } from '@angular/forms'\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from \"@angular/forms\";\r\n\r\n// export const range = (range?: Array<number> | null): ValidatorFn => {\r\n// return (control: AbstractControl): { [key: string]: any } | null => {\r\n\r\n// if (!range) return null;\r\n// if (Validators.required(control)) return null;\r\n\r\n// let v: number = +control.value;\r\n// return v >= range[0] && v <= range[1] ? null : { actualValue: v, requiredValue: range, range: true };\r\n// };\r\n// };\r\n// export function blue(): ValidatorFn {\r\n// return (control: AbstractControl): { [key: string]: any } | null =>\r\n// control.value?.toLowerCase() === 'blue'\r\n// ? null : { wrongColor: control.value };\r\n// }\r\n\r\n\r\nfunction isEmptyInputValue(value: any): boolean {\r\n /**\r\n * Check if the object is a string or array before evaluating the length attribute.\r\n * This avoids falsely rejecting objects that contain a custom length attribute.\r\n * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.\r\n */\r\n return typeof value === 'undefined' || value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);\r\n}\r\n\r\n/**\r\n * Function that has `ValidatorFn` shape, but performs no operation.\r\n */\r\nexport function nullValidator(control: AbstractControl): ValidationErrors | null {\r\n return null;\r\n}\r\n\r\n\r\nexport class Validators {\r\n\r\n /**\r\n * @description\r\n * Validator that requires the control's value to be less than or equal to the provided number.\r\n *\r\n * @usageNotes\r\n *\r\n * ### Validate against a range 0 - 15\r\n *\r\n * ```typescript\r\n * const control = new FormControl(16, Validators.max([0,15]));\r\n *\r\n * console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}\r\n * ```\r\n *\r\n * @returns A validator function that returns an error map with the\r\n * `range` property if the validation check fails, otherwise `null`.\r\n *\r\n * @see `updateValueAndValidity()`\r\n *\r\n */\r\n static range(min: number, max: number): ValidatorFn {\r\n return rangeValidator([min, max]);\r\n }\r\n\r\n\r\n /**\r\n* @description\r\n* Validator that requires the control's value to be less than or equal to the provided number.\r\n*\r\n* @usageNotes\r\n*\r\n* ### Validate against a range 0 - 15\r\n*\r\n* ```typescript\r\n* const control = new FormControl(16, Validators.max([0,15]));\r\n*\r\n* console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}\r\n* ```\r\n*\r\n* @returns A validator function that returns an error map with the\r\n* `range` property if the validation check fails, otherwise `null`.\r\n*\r\n* @see `updateValueAndValidity()`\r\n*\r\n*/\r\n static match(value: string): ValidatorFn {\r\n return matchValidator(value);\r\n }\r\n}\r\n\r\n\r\n/**\r\n * Validator that requires the control's value to be between provided numbers.\r\n * See `Validators.range` for additional information.\r\n */\r\nexport function rangeValidator(range: Array<number>): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (isEmptyInputValue(control.value) || isEmptyInputValue(range) || range.length < 2) {\r\n return null; // don't validate empty values to allow optional controls\r\n }\r\n const value = parseFloat(control.value);\r\n const max = range[0];\r\n const min = range[1];\r\n if (!isNaN(value) && (value < min || value > max)) {\r\n return { 'range': { 'min': min, 'max': max, 'actual': control.value } };\r\n }\r\n\r\n return null;\r\n };\r\n}\r\n\r\n\r\nexport function matchValidator(input: string): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n if (isEmptyInputValue(control.value)) {\r\n return null; // don't validate empty values to allow optional controls\r\n }\r\n\r\n const targetCtrl = control.get(input);\r\n let targetValue: any;\r\n if (!targetCtrl) {\r\n const el = document.getElementById(input) as any;\r\n if (el) {\r\n targetValue = el.value;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n targetValue = targetCtrl.value;\r\n }\r\n\r\n if (targetValue !== control.value) {\r\n return { 'mismatch': { 'requiredValue': targetValue, 'actual': control.value } };\r\n }\r\n return null;\r\n };\r\n}","\r\nimport { Directive, forwardRef, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, ValidatorFn } from \"@angular/forms\";\r\nimport { matchValidator, nullValidator, rangeValidator } from \"./validator\";\r\n\r\nfunction toFloat(value: string | number): number {\r\n return typeof value === 'number' ? value : parseFloat(value);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n@Directive()\r\nabstract class AbstractValidatorDirective implements Validator, OnChanges {\r\n private _validator: ValidatorFn = nullValidator;\r\n private _onChange!: () => void;\r\n\r\n /**\r\n * A flag that tracks whether this validator is enabled.\r\n *\r\n * Marking it `internal` (vs `protected`), so that this flag can be used in host bindings of\r\n * directive classes that extend this base class.\r\n * @internal\r\n */\r\n _enabled?: boolean;\r\n\r\n /**\r\n * Name of an input that matches directive selector attribute (e.g. `minlength` for\r\n * `MinLengthDirective`). An input with a given name might contain configuration information (like\r\n * `minlength='10'`) or a flag that indicates whether validator should be enabled (like\r\n * `[required]='false'`).\r\n *\r\n * @internal\r\n */\r\n abstract inputName: string;\r\n\r\n /**\r\n * Creates an instance of a validator (specific to a directive that extends this base class).\r\n *\r\n * @internal\r\n */\r\n abstract createValidator(input: unknown): ValidatorFn;\r\n\r\n /**\r\n * Performs the necessary input normalization based on a specific logic of a Directive.\r\n * For example, the function might be used to convert string-based representation of the\r\n * `minlength` input to an integer value that can later be used in the `Validators.minLength`\r\n * validator.\r\n *\r\n * @internal\r\n */\r\n abstract normalizeInput(input: unknown): unknown;\r\n\r\n /** @nodoc */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (this.inputName in changes) {\r\n const input = this.normalizeInput(changes[this.inputName].currentValue);\r\n this._enabled = this.enabled(input);\r\n this._validator = this._enabled ? this.createValidator(input) : nullValidator;\r\n if (this._onChange) {\r\n this._onChange();\r\n }\r\n }\r\n }\r\n\r\n /** @nodoc */\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this._validator(control);\r\n }\r\n\r\n /** @nodoc */\r\n registerOnValidatorChange(fn: () => void): void {\r\n this._onChange = fn;\r\n }\r\n\r\n /**\r\n * @description\r\n * Determines whether this validator should be active or not based on an input.\r\n * Base class implementation checks whether an input is defined (if the value is different from\r\n * `null` and `undefined`). Validator classes that extend this base class can override this\r\n * function with the logic specific to a particular validator directive.\r\n */\r\n enabled(input: unknown): boolean {\r\n return input != null /* both `null` and `undefined` */;\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nexport const RANGE_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RangeValidator),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: 'input[type=number][range][formControlName],input[type=number][range][formControl],input[type=number][range][ngModel]',\r\n providers: [RANGE_VALIDATOR],\r\n host: { '[attr.range]': '_enabled ? range : null' }\r\n})\r\nexport class RangeValidator extends AbstractValidatorDirective {\r\n @Input() range!: [number, number] | null;\r\n\r\n /** @internal */\r\n override inputName = 'range';\r\n /** @internal */\r\n override normalizeInput = (input: string | number): number => toFloat(input);\r\n /** @internal */\r\n override createValidator = (range: [number]): ValidatorFn => rangeValidator(range);\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n/**\r\n * @description\r\n * Provider which adds `MatchValidator` to the `NG_VALIDATORS` multi-provider list.\r\n */\r\nexport const MATCH_VALIDATOR: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => MatchValidator),\r\n multi: true\r\n};\r\n\r\n@Directive({\r\n standalone: false,\r\n selector: '[match][formControlName],match][formControl],[match][ngModel]',\r\n providers: [MATCH_VALIDATOR],\r\n host: { '[attr.match]': '_enabled ? match : null' }\r\n})\r\nexport class MatchValidator extends AbstractValidatorDirective {\r\n @Input() match!: string;\r\n\r\n /** @internal */\r\n override inputName = 'match';\r\n /** @internal */\r\n override normalizeInput = (input: string): string => input;\r\n /** @internal */\r\n override createValidator = (input: string): ValidatorFn => matchValidator(input);\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatchValidator, RangeValidator } from './directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n RangeValidator,\r\n MatchValidator,\r\n ],\r\n exports: [\r\n RangeValidator,\r\n MatchValidator\r\n ]\r\n})\r\nexport class ValidatorsModule { }","import { Component, Input } from \"@angular/core\";\r\nimport { ZekSafePipe } from \"../../safe\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-wizard',\r\n templateUrl: './wizard.html',\r\n imports: [CommonModule, ZekSafePipe]\r\n})\r\nexport class ZekWizard {\r\n\r\n progress = 0;\r\n stepsArray: { step: number, progress: number }[] = [\r\n { step: 1, progress: 0 }\r\n ];\r\n\r\n private _steps: number = 1;\r\n @Input()\r\n get steps(): number {\r\n return this._steps;\r\n }\r\n set steps(v: number) {\r\n if (v < 1) v = 1;\r\n\r\n if (this._steps !== v) {\r\n this._steps = v;\r\n this.init();\r\n }\r\n }\r\n\r\n\r\n private _step: number = 1;\r\n @Input()\r\n get step(): number {\r\n return this._step;\r\n }\r\n set step(v: number) {\r\n if (v < 1) v = 1;\r\n else if (v > this.steps) v = this.steps;\r\n\r\n if (this._step !== v) {\r\n this._step = v;\r\n\r\n const found = this.stepsArray.find(x => x.step === this._step);\r\n if (found) {\r\n this.progress = found.progress;\r\n }\r\n }\r\n }\r\n\r\n\r\n private init() {\r\n this.stepsArray = [];\r\n this.stepsArray.push({ step: 1, progress: 0 });\r\n\r\n for (let i = 1; i < this.steps; i++) {\r\n this.stepsArray.push({ step: i + 1, progress: Math.round(100 / (this.steps - 1) * i) });\r\n }\r\n }\r\n\r\n previous() {\r\n this.step--;\r\n }\r\n next() {\r\n this.step++;\r\n }\r\n}","<div class=\"position-relative m-4\">\r\n <div class=\"progress\" style=\"height: 1px;\">\r\n <div class=\"progress-bar\" role=\"progressbar\" [style.width.%]=\"progress\" [attr.aria-valuenow]=\"progress\" aria-valuemin=\"0\" aria-valuemax=\"100\"></div>\r\n </div>\r\n <!-- left: 33%!important -->\r\n <!-- [style.left.%]=\"item.progress\" -->\r\n <button *ngFor=\"let item of stepsArray\" [attr.style]=\"('width:2rem; height:2rem; left:' + item.progress + '%!important') | safe:'style'\" type=\"button\" class=\"position-absolute top-0 translate-middle btn btn-sm btn-primary rounded-pill\">{{ item.step }}</button>\r\n</div>","import { Component } from \"@angular/core\";\r\nimport { ZekWizard } from \"../wizard/wizard\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'zek-wizard2',\r\n templateUrl: './wizard2.html',\r\n imports: [CommonModule]\r\n})\r\nexport class ZekWizard2 extends ZekWizard{\r\n\r\n}","<div class=\"m-2\">\r\n <button *ngFor=\"let item of stepsArray\"\r\n [class.btn-outline-secondary]=\"item.step >= steps\"\r\n [class.btn-primary]=\"item.step < steps\"\r\n type=\"button\"\r\n class=\"btn btn-sm mr me-2\"></button>\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { WebApiClient, WebApiConfig } from './services';\r\nimport { API_BASE_URL } from './tokens';\r\n\r\n@NgModule()\r\nexport class WebApiModule {\r\n public static forRoot(config: WebApiConfig): ModuleWithProviders<WebApiModule> {\r\n return {\r\n ngModule: WebApiModule,\r\n providers: [\r\n WebApiClient,\r\n {\r\n provide: API_BASE_URL,\r\n useValue: config.baseUrl\r\n },\r\n ]\r\n };\r\n }\r\n\r\n public static forChild(config: WebApiConfig) {\r\n return this.forRoot(config);\r\n }\r\n}","/*\r\n * Public API Surface of zek\r\n */\r\n\r\nexport * from \"./lib/components\";\r\nexport * from \"./lib/directives\";\r\nexport * from \"./lib/models\";\r\nexport * from \"./lib/modules\";\r\nexport * from \"./lib/services\";\r\nexport * from \"./lib/utils\";\r\n\r\nexport * from \"./lib/tokens\";\r\nexport * from \"./lib/zek.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AlertService","i3","i1.WebApiClient","i2.HttpErrorHandler","i1","i2","i2.ZekModal","loadScript","loader","i1.ZekLoadingService"],"mappings":"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"}