@messaia/cdk 0.0.0-CDK

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 (1078) hide show
  1. package/esm2020/lib/base/base.module.mjs +66 -0
  2. package/esm2020/lib/base/components/base.component.mjs +441 -0
  3. package/esm2020/lib/base/components/generic-form-base.component.mjs +602 -0
  4. package/esm2020/lib/base/components/generic-form.component.mjs +31 -0
  5. package/esm2020/lib/base/components/generic-list.component.mjs +539 -0
  6. package/esm2020/lib/base/components/generic-reactive-form.component.mjs +54 -0
  7. package/esm2020/lib/base/constants/common.mjs +24 -0
  8. package/esm2020/lib/base/enums/message-type.mjs +7 -0
  9. package/esm2020/lib/base/helpers/auth-helper.mjs +46 -0
  10. package/esm2020/lib/base/interceptors/base.interceptor.mjs +138 -0
  11. package/esm2020/lib/base/interceptors/caching-interceptor.mjs +68 -0
  12. package/esm2020/lib/base/interceptors/loading.interceptor.mjs +63 -0
  13. package/esm2020/lib/base/models/auth-user.mjs +3 -0
  14. package/esm2020/lib/base/public_api.mjs +2 -0
  15. package/esm2020/lib/base/services/file.service.mjs +18 -0
  16. package/esm2020/lib/base/services/loading-screen.service.mjs +47 -0
  17. package/esm2020/lib/base/services/print.service.mjs +40 -0
  18. package/esm2020/lib/chips/chips.module.mjs +63 -0
  19. package/esm2020/lib/chips/components/chips.component.mjs +419 -0
  20. package/esm2020/lib/chips/public_api.mjs +3 -0
  21. package/esm2020/lib/common/animations/collapse/collapse.animation.mjs +44 -0
  22. package/esm2020/lib/common/animations/common/interfaces.mjs +2 -0
  23. package/esm2020/lib/common/behaviors/constructor.mjs +2 -0
  24. package/esm2020/lib/common/behaviors/control-value-accesor.mixin.mjs +39 -0
  25. package/esm2020/lib/common/behaviors/disabled.mixin.mjs +24 -0
  26. package/esm2020/lib/common/common.module.mjs +121 -0
  27. package/esm2020/lib/common/constants/constants.mjs +2 -0
  28. package/esm2020/lib/common/directives/disable-control.directive.mjs +34 -0
  29. package/esm2020/lib/common/enums/salutation.mjs +7 -0
  30. package/esm2020/lib/common/functions/decorators.mjs +22 -0
  31. package/esm2020/lib/common/functions/functions.mjs +9 -0
  32. package/esm2020/lib/common/functions/utils.mjs +161 -0
  33. package/esm2020/lib/common/helpers/app-storage.mjs +53 -0
  34. package/esm2020/lib/common/helpers/dynamic-builder.mjs +49 -0
  35. package/esm2020/lib/common/models/action-menu-item.mjs +12 -0
  36. package/esm2020/lib/common/models/app-setting.mjs +10 -0
  37. package/esm2020/lib/common/models/audit-entity.mjs +18 -0
  38. package/esm2020/lib/common/models/audit-user.mjs +3 -0
  39. package/esm2020/lib/common/models/base-entity.mjs +18 -0
  40. package/esm2020/lib/common/models/entity.mjs +2 -0
  41. package/esm2020/lib/common/models/enum-item.mjs +2 -0
  42. package/esm2020/lib/common/models/key-value.mjs +3 -0
  43. package/esm2020/lib/common/models/save-action.mjs +7 -0
  44. package/esm2020/lib/common/pipes/data-source.pipe.mjs +15 -0
  45. package/esm2020/lib/common/pipes/enum.pipe.mjs +23 -0
  46. package/esm2020/lib/common/pipes/file-size.pipe.mjs +37 -0
  47. package/esm2020/lib/common/pipes/filter.pipe.mjs +23 -0
  48. package/esm2020/lib/common/pipes/first-letter.mjs +24 -0
  49. package/esm2020/lib/common/pipes/keys.mjs +18 -0
  50. package/esm2020/lib/common/pipes/month-name.pipe.mjs +27 -0
  51. package/esm2020/lib/common/pipes/only-number.mjs +53 -0
  52. package/esm2020/lib/common/pipes/order.pipe.mjs +183 -0
  53. package/esm2020/lib/common/pipes/placeholder.pipe.mjs +26 -0
  54. package/esm2020/lib/common/pipes/safe-html.pipe.mjs +31 -0
  55. package/esm2020/lib/common/pipes/time.pipe.mjs +20 -0
  56. package/esm2020/lib/common/pipes/titlecase.pipe.mjs +14 -0
  57. package/esm2020/lib/common/pipes/truncate.pipe.mjs +15 -0
  58. package/esm2020/lib/common/pipes/values.mjs +14 -0
  59. package/esm2020/lib/common/public_api.mjs +18 -0
  60. package/esm2020/lib/common/services/base.service.mjs +19 -0
  61. package/esm2020/lib/common/services/context-helper.mjs +4 -0
  62. package/esm2020/lib/common/services/enum.service.mjs +44 -0
  63. package/esm2020/lib/common/services/service-locator.mjs +24 -0
  64. package/esm2020/lib/dialogs/alert-dialog/alert-dialog.component.mjs +31 -0
  65. package/esm2020/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +37 -0
  66. package/esm2020/lib/dialogs/dialog.component.mjs +56 -0
  67. package/esm2020/lib/dialogs/dialogs.module.mjs +82 -0
  68. package/esm2020/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +40 -0
  69. package/esm2020/lib/dialogs/public_api.mjs +2 -0
  70. package/esm2020/lib/dialogs/services/dialog.service.mjs +136 -0
  71. package/esm2020/lib/file/file-input.component.mjs +327 -0
  72. package/esm2020/lib/file/file.module.mjs +39 -0
  73. package/esm2020/lib/file/public_api.mjs +2 -0
  74. package/esm2020/lib/form-validators/abstract/typed-form.mjs +3 -0
  75. package/esm2020/lib/form-validators/algorithm/luhn-algorithm.mjs +15 -0
  76. package/esm2020/lib/form-validators/const/app-validators.const.mjs +68 -0
  77. package/esm2020/lib/form-validators/const/app.const.mjs +17 -0
  78. package/esm2020/lib/form-validators/const/config-names.const.mjs +9 -0
  79. package/esm2020/lib/form-validators/const/config-required-fields.const.mjs +11 -0
  80. package/esm2020/lib/form-validators/const/decorators.const.mjs +23 -0
  81. package/esm2020/lib/form-validators/const/events.const.mjs +14 -0
  82. package/esm2020/lib/form-validators/const/html-elements.const.mjs +7 -0
  83. package/esm2020/lib/form-validators/const/iban-country-wise-regex.const.mjs +80 -0
  84. package/esm2020/lib/form-validators/const/index.mjs +6 -0
  85. package/esm2020/lib/form-validators/const/operators.const.mjs +7 -0
  86. package/esm2020/lib/form-validators/const/validation-alphabet-locale.const.mjs +9 -0
  87. package/esm2020/lib/form-validators/const/validator.const.mjs +8 -0
  88. package/esm2020/lib/form-validators/core/defaultContainer.mjs +243 -0
  89. package/esm2020/lib/form-validators/core/validator.interface.mjs +2 -0
  90. package/esm2020/lib/form-validators/core/validator.static.mjs +74 -0
  91. package/esm2020/lib/form-validators/decorators/allOf.decorator.mjs +10 -0
  92. package/esm2020/lib/form-validators/decorators/alpha.decorator.mjs +10 -0
  93. package/esm2020/lib/form-validators/decorators/alphaNumeric.decorator.mjs +10 -0
  94. package/esm2020/lib/form-validators/decorators/and.decorator.mjs +6 -0
  95. package/esm2020/lib/form-validators/decorators/ascii.decorator.mjs +6 -0
  96. package/esm2020/lib/form-validators/decorators/async.decorator.mjs +6 -0
  97. package/esm2020/lib/form-validators/decorators/base-decorator.function.mjs +7 -0
  98. package/esm2020/lib/form-validators/decorators/choice.decorator.mjs +10 -0
  99. package/esm2020/lib/form-validators/decorators/compare.decorator.mjs +6 -0
  100. package/esm2020/lib/form-validators/decorators/compose.decorator.mjs +6 -0
  101. package/esm2020/lib/form-validators/decorators/contains.decorator.mjs +10 -0
  102. package/esm2020/lib/form-validators/decorators/credit-card.decorator.mjs +10 -0
  103. package/esm2020/lib/form-validators/decorators/cusip.decorator.mjs +6 -0
  104. package/esm2020/lib/form-validators/decorators/custom.decorator.mjs +10 -0
  105. package/esm2020/lib/form-validators/decorators/dataUri.decorator.mjs +6 -0
  106. package/esm2020/lib/form-validators/decorators/date.decorator.mjs +10 -0
  107. package/esm2020/lib/form-validators/decorators/different.decorator.mjs +6 -0
  108. package/esm2020/lib/form-validators/decorators/digit.decorator.mjs +6 -0
  109. package/esm2020/lib/form-validators/decorators/email.decorator.mjs +6 -0
  110. package/esm2020/lib/form-validators/decorators/endsWith.decorator.mjs +10 -0
  111. package/esm2020/lib/form-validators/decorators/even.decorator.mjs +6 -0
  112. package/esm2020/lib/form-validators/decorators/extension.decorator.mjs +10 -0
  113. package/esm2020/lib/form-validators/decorators/factor.decorator.mjs +10 -0
  114. package/esm2020/lib/form-validators/decorators/file.decorator.mjs +10 -0
  115. package/esm2020/lib/form-validators/decorators/fileSize.decorator.mjs +10 -0
  116. package/esm2020/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +10 -0
  117. package/esm2020/lib/form-validators/decorators/greater-than.decorator.mjs +10 -0
  118. package/esm2020/lib/form-validators/decorators/grid.decorator.mjs +6 -0
  119. package/esm2020/lib/form-validators/decorators/hexColor.decorator.mjs +6 -0
  120. package/esm2020/lib/form-validators/decorators/image.decorator.mjs +10 -0
  121. package/esm2020/lib/form-validators/decorators/index.mjs +91 -0
  122. package/esm2020/lib/form-validators/decorators/json.decorator.mjs +6 -0
  123. package/esm2020/lib/form-validators/decorators/latLong.decorator.mjs +6 -0
  124. package/esm2020/lib/form-validators/decorators/latitude.decorator.mjs +6 -0
  125. package/esm2020/lib/form-validators/decorators/leapYear.decorator.mjs +6 -0
  126. package/esm2020/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +10 -0
  127. package/esm2020/lib/form-validators/decorators/less-than.decorator.mjs +10 -0
  128. package/esm2020/lib/form-validators/decorators/longitude.decorator.mjs +6 -0
  129. package/esm2020/lib/form-validators/decorators/lowercase.decorator.mjs +6 -0
  130. package/esm2020/lib/form-validators/decorators/mac.decorator.mjs +6 -0
  131. package/esm2020/lib/form-validators/decorators/mask.decorator.mjs +6 -0
  132. package/esm2020/lib/form-validators/decorators/maxDate.decorator.mjs +10 -0
  133. package/esm2020/lib/form-validators/decorators/maxLength.decorator.mjs +10 -0
  134. package/esm2020/lib/form-validators/decorators/maxNumber.decorator.mjs +10 -0
  135. package/esm2020/lib/form-validators/decorators/maxTime.decorator.mjs +10 -0
  136. package/esm2020/lib/form-validators/decorators/minDate.decorator.mjs +10 -0
  137. package/esm2020/lib/form-validators/decorators/minLength.decorator.mjs +10 -0
  138. package/esm2020/lib/form-validators/decorators/minNumber.decorator.mjs +10 -0
  139. package/esm2020/lib/form-validators/decorators/minTime.decorator.mjs +10 -0
  140. package/esm2020/lib/form-validators/decorators/model.decorator.mjs +7 -0
  141. package/esm2020/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +8 -0
  142. package/esm2020/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +8 -0
  143. package/esm2020/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +8 -0
  144. package/esm2020/lib/form-validators/decorators/noneOf.decorator.mjs +10 -0
  145. package/esm2020/lib/form-validators/decorators/not.decorator.mjs +6 -0
  146. package/esm2020/lib/form-validators/decorators/notEmpty.decorator.mjs +6 -0
  147. package/esm2020/lib/form-validators/decorators/numeric.decorator.mjs +10 -0
  148. package/esm2020/lib/form-validators/decorators/odd.decorator.mjs +6 -0
  149. package/esm2020/lib/form-validators/decorators/oneOf.decorator.mjs +10 -0
  150. package/esm2020/lib/form-validators/decorators/or.decorator.mjs +6 -0
  151. package/esm2020/lib/form-validators/decorators/password.decorator.mjs +10 -0
  152. package/esm2020/lib/form-validators/decorators/pattern.decorator.mjs +10 -0
  153. package/esm2020/lib/form-validators/decorators/port.decorator.mjs +6 -0
  154. package/esm2020/lib/form-validators/decorators/primeNumber.decorator.mjs +6 -0
  155. package/esm2020/lib/form-validators/decorators/prop-array.decorator.mjs +18 -0
  156. package/esm2020/lib/form-validators/decorators/prop-object.decorator.mjs +8 -0
  157. package/esm2020/lib/form-validators/decorators/prop.decorator.mjs +16 -0
  158. package/esm2020/lib/form-validators/decorators/range.decorator.mjs +10 -0
  159. package/esm2020/lib/form-validators/decorators/required.decorator.mjs +6 -0
  160. package/esm2020/lib/form-validators/decorators/requiredTrue.decorator.mjs +6 -0
  161. package/esm2020/lib/form-validators/decorators/rule.decorator.mjs +6 -0
  162. package/esm2020/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +8 -0
  163. package/esm2020/lib/form-validators/decorators/sanitize/escape.decorator.mjs +8 -0
  164. package/esm2020/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +8 -0
  165. package/esm2020/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +8 -0
  166. package/esm2020/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +8 -0
  167. package/esm2020/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +8 -0
  168. package/esm2020/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +8 -0
  169. package/esm2020/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +8 -0
  170. package/esm2020/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +8 -0
  171. package/esm2020/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +8 -0
  172. package/esm2020/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +8 -0
  173. package/esm2020/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +8 -0
  174. package/esm2020/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +8 -0
  175. package/esm2020/lib/form-validators/decorators/sanitize/toString.decorator.mjs +8 -0
  176. package/esm2020/lib/form-validators/decorators/sanitize/trim.decorator.mjs +8 -0
  177. package/esm2020/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +8 -0
  178. package/esm2020/lib/form-validators/decorators/startsWith.decorator.mjs +10 -0
  179. package/esm2020/lib/form-validators/decorators/time.decorator.mjs +10 -0
  180. package/esm2020/lib/form-validators/decorators/unique.decorator.mjs +6 -0
  181. package/esm2020/lib/form-validators/decorators/uppercase.decorator.mjs +6 -0
  182. package/esm2020/lib/form-validators/decorators/url.decorator.mjs +10 -0
  183. package/esm2020/lib/form-validators/directives/base-directive.mjs +43 -0
  184. package/esm2020/lib/form-validators/directives/control-host.directive.mjs +34 -0
  185. package/esm2020/lib/form-validators/directives/html-control-template.directive.mjs +20 -0
  186. package/esm2020/lib/form-validators/directives/rx-form.directive.mjs +134 -0
  187. package/esm2020/lib/form-validators/directives/template-validations/async-validation.directive.mjs +31 -0
  188. package/esm2020/lib/form-validators/directives/template-validations/base-validator.directive.mjs +42 -0
  189. package/esm2020/lib/form-validators/directives/template-validations/control-expression-process.mjs +26 -0
  190. package/esm2020/lib/form-validators/directives/template-validations/file-control.directive.mjs +91 -0
  191. package/esm2020/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +50 -0
  192. package/esm2020/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +277 -0
  193. package/esm2020/lib/form-validators/domain/disable-provider.mjs +93 -0
  194. package/esm2020/lib/form-validators/domain/element-processor/decimal.provider.mjs +59 -0
  195. package/esm2020/lib/form-validators/domain/element-processor/mask.provider.mjs +430 -0
  196. package/esm2020/lib/form-validators/domain/form-data.mjs +47 -0
  197. package/esm2020/lib/form-validators/enums/error-message-binding-strategy.mjs +11 -0
  198. package/esm2020/lib/form-validators/enums/index.mjs +5 -0
  199. package/esm2020/lib/form-validators/enums/ip-version.mjs +7 -0
  200. package/esm2020/lib/form-validators/enums/numeric-value-type.mjs +7 -0
  201. package/esm2020/lib/form-validators/enums/reset-type.mjs +10 -0
  202. package/esm2020/lib/form-validators/enums/url-validation-type.mjs +7 -0
  203. package/esm2020/lib/form-validators/models/config/alpha-config.mjs +2 -0
  204. package/esm2020/lib/form-validators/models/config/array-config.mjs +2 -0
  205. package/esm2020/lib/form-validators/models/config/base-config-fn.mjs +2 -0
  206. package/esm2020/lib/form-validators/models/config/base-config.mjs +2 -0
  207. package/esm2020/lib/form-validators/models/config/base-date-config.mjs +2 -0
  208. package/esm2020/lib/form-validators/models/config/choice-config.mjs +2 -0
  209. package/esm2020/lib/form-validators/models/config/compare-config.mjs +2 -0
  210. package/esm2020/lib/form-validators/models/config/component-config.mjs +2 -0
  211. package/esm2020/lib/form-validators/models/config/compose-config.mjs +2 -0
  212. package/esm2020/lib/form-validators/models/config/contains-config.mjs +2 -0
  213. package/esm2020/lib/form-validators/models/config/credit-card-config.mjs +2 -0
  214. package/esm2020/lib/form-validators/models/config/custom-config.mjs +2 -0
  215. package/esm2020/lib/form-validators/models/config/date-config.mjs +2 -0
  216. package/esm2020/lib/form-validators/models/config/default-config.mjs +2 -0
  217. package/esm2020/lib/form-validators/models/config/digit-config.mjs +2 -0
  218. package/esm2020/lib/form-validators/models/config/disable-config.mjs +2 -0
  219. package/esm2020/lib/form-validators/models/config/element-class-config.mjs +2 -0
  220. package/esm2020/lib/form-validators/models/config/email-config.mjs +2 -0
  221. package/esm2020/lib/form-validators/models/config/error-config.mjs +2 -0
  222. package/esm2020/lib/form-validators/models/config/extension-config.mjs +2 -0
  223. package/esm2020/lib/form-validators/models/config/factor-config.mjs +2 -0
  224. package/esm2020/lib/form-validators/models/config/field-config.mjs +2 -0
  225. package/esm2020/lib/form-validators/models/config/file-config.mjs +2 -0
  226. package/esm2020/lib/form-validators/models/config/hex-color-config.mjs +2 -0
  227. package/esm2020/lib/form-validators/models/config/iban-config.mjs +2 -0
  228. package/esm2020/lib/form-validators/models/config/image-config.mjs +2 -0
  229. package/esm2020/lib/form-validators/models/config/index.mjs +35 -0
  230. package/esm2020/lib/form-validators/models/config/ip-config.mjs +2 -0
  231. package/esm2020/lib/form-validators/models/config/logical-operator-config.mjs +2 -0
  232. package/esm2020/lib/form-validators/models/config/mask-config.mjs +2 -0
  233. package/esm2020/lib/form-validators/models/config/max-date-config.mjs +2 -0
  234. package/esm2020/lib/form-validators/models/config/message-config.mjs +2 -0
  235. package/esm2020/lib/form-validators/models/config/min-date-config.mjs +2 -0
  236. package/esm2020/lib/form-validators/models/config/model-config.mjs +2 -0
  237. package/esm2020/lib/form-validators/models/config/number-config.mjs +2 -0
  238. package/esm2020/lib/form-validators/models/config/numeric-config.mjs +2 -0
  239. package/esm2020/lib/form-validators/models/config/password-config.mjs +2 -0
  240. package/esm2020/lib/form-validators/models/config/pattern-config.mjs +2 -0
  241. package/esm2020/lib/form-validators/models/config/prop-config.mjs +2 -0
  242. package/esm2020/lib/form-validators/models/config/props-config.mjs +2 -0
  243. package/esm2020/lib/form-validators/models/config/range-config.mjs +2 -0
  244. package/esm2020/lib/form-validators/models/config/relational-operator-config.mjs +2 -0
  245. package/esm2020/lib/form-validators/models/config/required-config.mjs +2 -0
  246. package/esm2020/lib/form-validators/models/config/rule-config.mjs +2 -0
  247. package/esm2020/lib/form-validators/models/config/sanitize-config.mjs +2 -0
  248. package/esm2020/lib/form-validators/models/config/size-config.mjs +2 -0
  249. package/esm2020/lib/form-validators/models/config/string-comparison-config.mjs +2 -0
  250. package/esm2020/lib/form-validators/models/config/time-config.mjs +2 -0
  251. package/esm2020/lib/form-validators/models/config/todate-config.mjs +2 -0
  252. package/esm2020/lib/form-validators/models/config/unique-config.mjs +2 -0
  253. package/esm2020/lib/form-validators/models/config/url-config.mjs +2 -0
  254. package/esm2020/lib/form-validators/models/form-builder-configuration.mjs +8 -0
  255. package/esm2020/lib/form-validators/models/index.mjs +3 -0
  256. package/esm2020/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +2 -0
  257. package/esm2020/lib/form-validators/models/interface/auto-instance-config.interface.mjs +2 -0
  258. package/esm2020/lib/form-validators/models/interface/form-data-config.mjs +2 -0
  259. package/esm2020/lib/form-validators/models/interface/i-abstract-control.mjs +4 -0
  260. package/esm2020/lib/form-validators/models/interface/i-form-group.mjs +2 -0
  261. package/esm2020/lib/form-validators/models/interface/instance-argument.interface.mjs +2 -0
  262. package/esm2020/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +2 -0
  263. package/esm2020/lib/form-validators/models/interface/options.mjs +2 -0
  264. package/esm2020/lib/form-validators/models/password-validation.model.mjs +2 -0
  265. package/esm2020/lib/form-validators/models/prop-validation-config.mjs +2 -0
  266. package/esm2020/lib/form-validators/public_api.mjs +25 -0
  267. package/esm2020/lib/form-validators/reactive-form-validators/allOf.validator.mjs +22 -0
  268. package/esm2020/lib/form-validators/reactive-form-validators/alpha.validator.mjs +9 -0
  269. package/esm2020/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +9 -0
  270. package/esm2020/lib/form-validators/reactive-form-validators/and.validator.mjs +23 -0
  271. package/esm2020/lib/form-validators/reactive-form-validators/ascii.validator.mjs +9 -0
  272. package/esm2020/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +24 -0
  273. package/esm2020/lib/form-validators/reactive-form-validators/choice.validator.mjs +19 -0
  274. package/esm2020/lib/form-validators/reactive-form-validators/compare.validator.mjs +20 -0
  275. package/esm2020/lib/form-validators/reactive-form-validators/compose.validator.mjs +23 -0
  276. package/esm2020/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +63 -0
  277. package/esm2020/lib/form-validators/reactive-form-validators/contains.validator.mjs +15 -0
  278. package/esm2020/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +48 -0
  279. package/esm2020/lib/form-validators/reactive-form-validators/cusip.validator.mjs +38 -0
  280. package/esm2020/lib/form-validators/reactive-form-validators/custom.validator.mjs +23 -0
  281. package/esm2020/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +9 -0
  282. package/esm2020/lib/form-validators/reactive-form-validators/date.validator.mjs +8 -0
  283. package/esm2020/lib/form-validators/reactive-form-validators/different.validator.mjs +19 -0
  284. package/esm2020/lib/form-validators/reactive-form-validators/digit.validator.mjs +9 -0
  285. package/esm2020/lib/form-validators/reactive-form-validators/email.validator.mjs +9 -0
  286. package/esm2020/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +16 -0
  287. package/esm2020/lib/form-validators/reactive-form-validators/even.validator.mjs +15 -0
  288. package/esm2020/lib/form-validators/reactive-form-validators/extension.validator.mjs +40 -0
  289. package/esm2020/lib/form-validators/reactive-form-validators/factor.validator.mjs +37 -0
  290. package/esm2020/lib/form-validators/reactive-form-validators/file.validator.mjs +26 -0
  291. package/esm2020/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +32 -0
  292. package/esm2020/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +8 -0
  293. package/esm2020/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +8 -0
  294. package/esm2020/lib/form-validators/reactive-form-validators/grid.validator.mjs +31 -0
  295. package/esm2020/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +9 -0
  296. package/esm2020/lib/form-validators/reactive-form-validators/iban.validator.mjs +30 -0
  297. package/esm2020/lib/form-validators/reactive-form-validators/image.validator.mjs +48 -0
  298. package/esm2020/lib/form-validators/reactive-form-validators/index.mjs +66 -0
  299. package/esm2020/lib/form-validators/reactive-form-validators/ip.validator.mjs +35 -0
  300. package/esm2020/lib/form-validators/reactive-form-validators/json.validator.mjs +26 -0
  301. package/esm2020/lib/form-validators/reactive-form-validators/latLong.validator.mjs +18 -0
  302. package/esm2020/lib/form-validators/reactive-form-validators/latitude.validator.mjs +9 -0
  303. package/esm2020/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +16 -0
  304. package/esm2020/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +8 -0
  305. package/esm2020/lib/form-validators/reactive-form-validators/less-than.validator.mjs +8 -0
  306. package/esm2020/lib/form-validators/reactive-form-validators/longitude.validator.mjs +9 -0
  307. package/esm2020/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +15 -0
  308. package/esm2020/lib/form-validators/reactive-form-validators/mac.validator.mjs +9 -0
  309. package/esm2020/lib/form-validators/reactive-form-validators/mask.validator.mjs +13 -0
  310. package/esm2020/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +8 -0
  311. package/esm2020/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +16 -0
  312. package/esm2020/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +16 -0
  313. package/esm2020/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +8 -0
  314. package/esm2020/lib/form-validators/reactive-form-validators/minDate.validator.mjs +8 -0
  315. package/esm2020/lib/form-validators/reactive-form-validators/minLength.validator.mjs +16 -0
  316. package/esm2020/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +16 -0
  317. package/esm2020/lib/form-validators/reactive-form-validators/minTime.validator.mjs +8 -0
  318. package/esm2020/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +24 -0
  319. package/esm2020/lib/form-validators/reactive-form-validators/not.validator.mjs +23 -0
  320. package/esm2020/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +17 -0
  321. package/esm2020/lib/form-validators/reactive-form-validators/numeric.validator.mjs +20 -0
  322. package/esm2020/lib/form-validators/reactive-form-validators/odd.validator.mjs +16 -0
  323. package/esm2020/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +22 -0
  324. package/esm2020/lib/form-validators/reactive-form-validators/or.validator.mjs +23 -0
  325. package/esm2020/lib/form-validators/reactive-form-validators/password.validator.mjs +33 -0
  326. package/esm2020/lib/form-validators/reactive-form-validators/pattern.validator.mjs +17 -0
  327. package/esm2020/lib/form-validators/reactive-form-validators/port.validator.mjs +18 -0
  328. package/esm2020/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +26 -0
  329. package/esm2020/lib/form-validators/reactive-form-validators/range.validator.mjs +16 -0
  330. package/esm2020/lib/form-validators/reactive-form-validators/required.validator.mjs +17 -0
  331. package/esm2020/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +16 -0
  332. package/esm2020/lib/form-validators/reactive-form-validators/rule.validator.mjs +20 -0
  333. package/esm2020/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +16 -0
  334. package/esm2020/lib/form-validators/reactive-form-validators/time.validator.mjs +18 -0
  335. package/esm2020/lib/form-validators/reactive-form-validators/unique.validator.mjs +70 -0
  336. package/esm2020/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +15 -0
  337. package/esm2020/lib/form-validators/reactive-form-validators/url.validator.mjs +28 -0
  338. package/esm2020/lib/form-validators/services/base-form-builder.mjs +115 -0
  339. package/esm2020/lib/form-validators/services/entity.service.mjs +64 -0
  340. package/esm2020/lib/form-validators/services/form-control.mjs +349 -0
  341. package/esm2020/lib/form-validators/services/form-group.mjs +2 -0
  342. package/esm2020/lib/form-validators/services/reactive-form.module.mjs +52 -0
  343. package/esm2020/lib/form-validators/services/rx-form-array.mjs +100 -0
  344. package/esm2020/lib/form-validators/services/rx-form-builder.mjs +559 -0
  345. package/esm2020/lib/form-validators/services/rx-form-group.mjs +299 -0
  346. package/esm2020/lib/form-validators/services/typed-form-builder.mjs +23 -0
  347. package/esm2020/lib/form-validators/util/alphabet-regex.locale.mjs +29 -0
  348. package/esm2020/lib/form-validators/util/app-util.mjs +141 -0
  349. package/esm2020/lib/form-validators/util/check-length.mjs +10 -0
  350. package/esm2020/lib/form-validators/util/config-provider.mjs +35 -0
  351. package/esm2020/lib/form-validators/util/date-checker.function.mjs +52 -0
  352. package/esm2020/lib/form-validators/util/date-provider.mjs +97 -0
  353. package/esm2020/lib/form-validators/util/form-const.mjs +3 -0
  354. package/esm2020/lib/form-validators/util/form-provider.mjs +37 -0
  355. package/esm2020/lib/form-validators/util/index.mjs +7 -0
  356. package/esm2020/lib/form-validators/util/instance-provider.function.mjs +30 -0
  357. package/esm2020/lib/form-validators/util/ip-checker.mjs +18 -0
  358. package/esm2020/lib/form-validators/util/linq.mjs +147 -0
  359. package/esm2020/lib/form-validators/util/object-maker.mjs +38 -0
  360. package/esm2020/lib/form-validators/util/reactive-form-config.mjs +23 -0
  361. package/esm2020/lib/form-validators/util/regex-rules.mjs +37 -0
  362. package/esm2020/lib/form-validators/util/regex-validator.mjs +74 -0
  363. package/esm2020/lib/form-validators/util/relational-checker.function.mjs +85 -0
  364. package/esm2020/lib/form-validators/util/reset-form.mjs +56 -0
  365. package/esm2020/lib/form-validators/util/sanitizers.mjs +131 -0
  366. package/esm2020/lib/form-validators/util/time-checker.function.mjs +48 -0
  367. package/esm2020/lib/form-validators/util/type.mjs +2 -0
  368. package/esm2020/lib/form-validators/util/validator-value-checker.mjs +17 -0
  369. package/esm2020/lib/form-validators/validators-extension/allOf-validator.extension.mjs +11 -0
  370. package/esm2020/lib/form-validators/validators-extension/alpha-validator.extension.mjs +11 -0
  371. package/esm2020/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +11 -0
  372. package/esm2020/lib/form-validators/validators-extension/and-validator.extension.mjs +7 -0
  373. package/esm2020/lib/form-validators/validators-extension/ascii-validator.extension.mjs +7 -0
  374. package/esm2020/lib/form-validators/validators-extension/base-validator.function.mjs +33 -0
  375. package/esm2020/lib/form-validators/validators-extension/choice-validator.extension.mjs +11 -0
  376. package/esm2020/lib/form-validators/validators-extension/compare-validator.extension.mjs +7 -0
  377. package/esm2020/lib/form-validators/validators-extension/compose-validator.extension.mjs +7 -0
  378. package/esm2020/lib/form-validators/validators-extension/contains-validator.extension.mjs +11 -0
  379. package/esm2020/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +11 -0
  380. package/esm2020/lib/form-validators/validators-extension/cusip-validator.extension.mjs +7 -0
  381. package/esm2020/lib/form-validators/validators-extension/custom-validator.extension.mjs +11 -0
  382. package/esm2020/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +7 -0
  383. package/esm2020/lib/form-validators/validators-extension/date-validator.extension.mjs +11 -0
  384. package/esm2020/lib/form-validators/validators-extension/different-validator.extension.mjs +7 -0
  385. package/esm2020/lib/form-validators/validators-extension/digit-validator.extension.mjs +7 -0
  386. package/esm2020/lib/form-validators/validators-extension/email-validator.extension.mjs +7 -0
  387. package/esm2020/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +11 -0
  388. package/esm2020/lib/form-validators/validators-extension/even-validator.extension.mjs +7 -0
  389. package/esm2020/lib/form-validators/validators-extension/extension-validator.extension.mjs +10 -0
  390. package/esm2020/lib/form-validators/validators-extension/factor-validator.extension.mjs +11 -0
  391. package/esm2020/lib/form-validators/validators-extension/file-validator.extension.mjs +10 -0
  392. package/esm2020/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +10 -0
  393. package/esm2020/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +11 -0
  394. package/esm2020/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +11 -0
  395. package/esm2020/lib/form-validators/validators-extension/grid-validator.extension.mjs +7 -0
  396. package/esm2020/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +7 -0
  397. package/esm2020/lib/form-validators/validators-extension/iban-validator.extension.mjs +11 -0
  398. package/esm2020/lib/form-validators/validators-extension/image-validator.extension.mjs +10 -0
  399. package/esm2020/lib/form-validators/validators-extension/index.mjs +68 -0
  400. package/esm2020/lib/form-validators/validators-extension/ip-validator.extension.mjs +11 -0
  401. package/esm2020/lib/form-validators/validators-extension/json-validator.extension.mjs +7 -0
  402. package/esm2020/lib/form-validators/validators-extension/latLong-validator.extension.mjs +7 -0
  403. package/esm2020/lib/form-validators/validators-extension/latitude-validator.extension.mjs +7 -0
  404. package/esm2020/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +7 -0
  405. package/esm2020/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +11 -0
  406. package/esm2020/lib/form-validators/validators-extension/less-than-validator.extension.mjs +11 -0
  407. package/esm2020/lib/form-validators/validators-extension/longitude-validator.extension.mjs +7 -0
  408. package/esm2020/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +7 -0
  409. package/esm2020/lib/form-validators/validators-extension/mac-validator.extension.mjs +7 -0
  410. package/esm2020/lib/form-validators/validators-extension/mask-validator.extension.mjs +7 -0
  411. package/esm2020/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +11 -0
  412. package/esm2020/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +11 -0
  413. package/esm2020/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +11 -0
  414. package/esm2020/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +11 -0
  415. package/esm2020/lib/form-validators/validators-extension/minDate-validator.extension.mjs +11 -0
  416. package/esm2020/lib/form-validators/validators-extension/minLength-validator.extension.mjs +11 -0
  417. package/esm2020/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +11 -0
  418. package/esm2020/lib/form-validators/validators-extension/minTime-validator.extension.mjs +11 -0
  419. package/esm2020/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +11 -0
  420. package/esm2020/lib/form-validators/validators-extension/not-validator.extension.mjs +7 -0
  421. package/esm2020/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +7 -0
  422. package/esm2020/lib/form-validators/validators-extension/numeric-validator.extension.mjs +11 -0
  423. package/esm2020/lib/form-validators/validators-extension/odd-validator.extension.mjs +7 -0
  424. package/esm2020/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +11 -0
  425. package/esm2020/lib/form-validators/validators-extension/or-validator.extension.mjs +7 -0
  426. package/esm2020/lib/form-validators/validators-extension/password-validator.extension.mjs +11 -0
  427. package/esm2020/lib/form-validators/validators-extension/pattern-validator.extension.mjs +11 -0
  428. package/esm2020/lib/form-validators/validators-extension/port-validator.extension.mjs +7 -0
  429. package/esm2020/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +7 -0
  430. package/esm2020/lib/form-validators/validators-extension/range-validator.extension.mjs +11 -0
  431. package/esm2020/lib/form-validators/validators-extension/required-validator.extension.mjs +7 -0
  432. package/esm2020/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +7 -0
  433. package/esm2020/lib/form-validators/validators-extension/rxweb-validators.mjs +108 -0
  434. package/esm2020/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +11 -0
  435. package/esm2020/lib/form-validators/validators-extension/time-validator.extension.mjs +11 -0
  436. package/esm2020/lib/form-validators/validators-extension/unique-validator.extension.mjs +7 -0
  437. package/esm2020/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +7 -0
  438. package/esm2020/lib/form-validators/validators-extension/url-validator.extension.mjs +11 -0
  439. package/esm2020/lib/form-validators/validators-function/alpha-validation.function.mjs +37 -0
  440. package/esm2020/lib/form-validators/validators-function/regex-validation.function.mjs +16 -0
  441. package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +131 -0
  442. package/esm2020/lib/forms/constants/constants.mjs +2 -0
  443. package/esm2020/lib/forms/directives/mat-form-field-editor.directive.mjs +162 -0
  444. package/esm2020/lib/forms/directives/mat-form-field-readonly.directive.mjs +33 -0
  445. package/esm2020/lib/forms/enums/form-field-type.mjs +19 -0
  446. package/esm2020/lib/forms/forms.module.mjs +125 -0
  447. package/esm2020/lib/forms/functions/decorators.mjs +127 -0
  448. package/esm2020/lib/forms/functions/functions.mjs +10 -0
  449. package/esm2020/lib/forms/helpers/abstract-mat-form-field.mjs +251 -0
  450. package/esm2020/lib/forms/helpers/value-accessor-base.mjs +141 -0
  451. package/esm2020/lib/forms/models/form-field-definition.mjs +18 -0
  452. package/esm2020/lib/forms/models/form-field-group.mjs +11 -0
  453. package/esm2020/lib/forms/public_api.mjs +4 -0
  454. package/esm2020/lib/forms/validators/equal-validator.directive.mjs +79 -0
  455. package/esm2020/lib/forms/validators/native-element-injector.directive.mjs +32 -0
  456. package/esm2020/lib/forms/validators/unique-validator-directive.mjs +75 -0
  457. package/esm2020/lib/http/http.module.mjs +20 -0
  458. package/esm2020/lib/http/public_api.mjs +2 -0
  459. package/esm2020/lib/http/services/generic.service.mjs +319 -0
  460. package/esm2020/lib/layout/form-toolbar/form-toolbar.component.mjs +30 -0
  461. package/esm2020/lib/layout/form-toolbar-menu/form-toolbar-menu.component.mjs +17 -0
  462. package/esm2020/lib/layout/layout-card-over/layout-card-over.component.mjs +43 -0
  463. package/esm2020/lib/layout/layout-footer/layout-footer.component.mjs +34 -0
  464. package/esm2020/lib/layout/layout-manage-list/layout-manage-list.component.mjs +130 -0
  465. package/esm2020/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +108 -0
  466. package/esm2020/lib/layout/layout-nav/layout-nav.component.mjs +95 -0
  467. package/esm2020/lib/layout/layout-nav-list/layout-nav-list.component.mjs +123 -0
  468. package/esm2020/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +81 -0
  469. package/esm2020/lib/layout/layout-toggle.class.mjs +71 -0
  470. package/esm2020/lib/layout/layout.component.mjs +82 -0
  471. package/esm2020/lib/layout/layout.directives.mjs +81 -0
  472. package/esm2020/lib/layout/layout.module.mjs +146 -0
  473. package/esm2020/lib/layout/list-toolbar/list-toolbar.component.mjs +23 -0
  474. package/esm2020/lib/layout/list-toolbar-menu/list-toolbar-menu.component.mjs +17 -0
  475. package/esm2020/lib/layout/navigation-drawer/navigation-drawer.component.mjs +167 -0
  476. package/esm2020/lib/layout/public_api.mjs +2 -0
  477. package/esm2020/lib/media/directives/media-toggle.directive.mjs +115 -0
  478. package/esm2020/lib/media/media.module.mjs +37 -0
  479. package/esm2020/lib/media/public_api.mjs +2 -0
  480. package/esm2020/lib/media/services/media.service.mjs +108 -0
  481. package/esm2020/lib/menu/components/menu.component.mjs +52 -0
  482. package/esm2020/lib/menu/enums/menu-scope.mjs +6 -0
  483. package/esm2020/lib/menu/menu.module.mjs +50 -0
  484. package/esm2020/lib/menu/models/menu-item.mjs +3 -0
  485. package/esm2020/lib/menu/models/menu.mjs +3 -0
  486. package/esm2020/lib/menu/public_api.mjs +2 -0
  487. package/esm2020/lib/menu/services/menu-items.service.mjs +19 -0
  488. package/esm2020/lib/menu/services/menu.resolve.mjs +62 -0
  489. package/esm2020/lib/menu/services/menu.service.mjs +19 -0
  490. package/esm2020/lib/search/public_api.mjs +2 -0
  491. package/esm2020/lib/search/search.module.mjs +47 -0
  492. package/esm2020/lib/search/vd-search-box/vd-search-box.component.mjs +143 -0
  493. package/esm2020/lib/search/vd-search-input/vd-search-input.component.mjs +148 -0
  494. package/esm2020/lib/select/public_api.mjs +3 -0
  495. package/esm2020/lib/select/select.component.mjs +407 -0
  496. package/esm2020/lib/select/select.module.mjs +45 -0
  497. package/esm2020/lib/table/components/dynamic-table/dynamic-table.component.mjs +349 -0
  498. package/esm2020/lib/table/components/filter-clear.component.mjs +44 -0
  499. package/esm2020/lib/table/components/filter-date.component.mjs +151 -0
  500. package/esm2020/lib/table/components/filter-input.component.mjs +198 -0
  501. package/esm2020/lib/table/components/filter-select.component.mjs +334 -0
  502. package/esm2020/lib/table/directives/data-source-filter.directive.mjs +45 -0
  503. package/esm2020/lib/table/enums/table-column-type.mjs +14 -0
  504. package/esm2020/lib/table/functions/decorators.mjs +135 -0
  505. package/esm2020/lib/table/functions/functions.mjs +15 -0
  506. package/esm2020/lib/table/models/pagination.mjs +3 -0
  507. package/esm2020/lib/table/models/table-column.mjs +10 -0
  508. package/esm2020/lib/table/models/table-definition.mjs +17 -0
  509. package/esm2020/lib/table/models/table-menu-item.mjs +12 -0
  510. package/esm2020/lib/table/paginator-intl.mjs +44 -0
  511. package/esm2020/lib/table/public_api.mjs +3 -0
  512. package/esm2020/lib/table/table.data-source.mjs +212 -0
  513. package/esm2020/lib/table/table.module.mjs +139 -0
  514. package/esm2020/lib/table/table.static-data-source.mjs +131 -0
  515. package/esm2020/messaia-cdk.mjs +5 -0
  516. package/esm2020/public_api.mjs +18 -0
  517. package/fesm2015/messaia-cdk.mjs +16621 -0
  518. package/fesm2015/messaia-cdk.mjs.map +1 -0
  519. package/fesm2020/messaia-cdk.mjs +16538 -0
  520. package/fesm2020/messaia-cdk.mjs.map +1 -0
  521. package/lib/base/base.module.d.ts +25 -0
  522. package/lib/base/components/base.component.d.ts +258 -0
  523. package/lib/base/components/generic-form-base.component.d.ts +310 -0
  524. package/lib/base/components/generic-form.component.d.ts +32 -0
  525. package/lib/base/components/generic-list.component.d.ts +273 -0
  526. package/lib/base/components/generic-reactive-form.component.d.ts +47 -0
  527. package/lib/base/constants/common.d.ts +9 -0
  528. package/lib/base/enums/message-type.d.ts +5 -0
  529. package/lib/base/helpers/auth-helper.d.ts +26 -0
  530. package/lib/base/interceptors/base.interceptor.d.ts +40 -0
  531. package/lib/base/interceptors/caching-interceptor.d.ts +35 -0
  532. package/lib/base/interceptors/loading.interceptor.d.ts +30 -0
  533. package/lib/base/models/auth-user.d.ts +15 -0
  534. package/lib/base/public_api.d.ts +1 -0
  535. package/lib/base/services/file.service.d.ts +10 -0
  536. package/lib/base/services/loading-screen.service.d.ts +30 -0
  537. package/lib/base/services/print.service.d.ts +23 -0
  538. package/lib/chips/chips.module.d.ts +15 -0
  539. package/lib/chips/components/chips.component.d.ts +223 -0
  540. package/lib/chips/public_api.d.ts +2 -0
  541. package/lib/common/animations/collapse/collapse.animation.d.ts +21 -0
  542. package/lib/common/animations/common/interfaces.d.ts +5 -0
  543. package/lib/common/behaviors/constructor.d.ts +1 -0
  544. package/lib/common/behaviors/control-value-accesor.mixin.d.ts +16 -0
  545. package/lib/common/behaviors/disabled.mixin.d.ts +8 -0
  546. package/lib/common/common.module.d.ts +53 -0
  547. package/lib/common/constants/constants.d.ts +1 -0
  548. package/lib/common/directives/disable-control.directive.d.ts +16 -0
  549. package/lib/common/enums/salutation.d.ts +5 -0
  550. package/lib/common/functions/decorators.d.ts +12 -0
  551. package/lib/common/functions/functions.d.ts +6 -0
  552. package/lib/common/functions/utils.d.ts +73 -0
  553. package/lib/common/helpers/app-storage.d.ts +32 -0
  554. package/lib/common/helpers/dynamic-builder.d.ts +19 -0
  555. package/lib/common/models/action-menu-item.d.ts +15 -0
  556. package/lib/common/models/app-setting.d.ts +17 -0
  557. package/lib/common/models/audit-entity.d.ts +12 -0
  558. package/lib/common/models/audit-user.d.ts +5 -0
  559. package/lib/common/models/base-entity.d.ts +10 -0
  560. package/lib/common/models/entity.d.ts +3 -0
  561. package/lib/common/models/enum-item.d.ts +4 -0
  562. package/lib/common/models/key-value.d.ts +4 -0
  563. package/lib/common/models/save-action.d.ts +5 -0
  564. package/lib/common/pipes/data-source.pipe.d.ts +7 -0
  565. package/lib/common/pipes/enum.pipe.d.ts +12 -0
  566. package/lib/common/pipes/file-size.pipe.d.ts +13 -0
  567. package/lib/common/pipes/filter.pipe.d.ts +13 -0
  568. package/lib/common/pipes/first-letter.d.ts +12 -0
  569. package/lib/common/pipes/keys.d.ts +7 -0
  570. package/lib/common/pipes/month-name.pipe.d.ts +15 -0
  571. package/lib/common/pipes/only-number.d.ts +21 -0
  572. package/lib/common/pipes/order.pipe.d.ts +77 -0
  573. package/lib/common/pipes/placeholder.pipe.d.ts +13 -0
  574. package/lib/common/pipes/safe-html.pipe.d.ts +22 -0
  575. package/lib/common/pipes/time.pipe.d.ts +7 -0
  576. package/lib/common/pipes/titlecase.pipe.d.ts +7 -0
  577. package/lib/common/pipes/truncate.pipe.d.ts +7 -0
  578. package/lib/common/pipes/values.d.ts +7 -0
  579. package/lib/common/public_api.d.ts +17 -0
  580. package/lib/common/services/base.service.d.ts +10 -0
  581. package/lib/common/services/context-helper.d.ts +17 -0
  582. package/lib/common/services/enum.service.d.ts +23 -0
  583. package/lib/common/services/service-locator.d.ts +19 -0
  584. package/lib/common/styles/_common-theme.scss +27 -0
  585. package/lib/common/styles/_elevation.scss +147 -0
  586. package/lib/common/styles/_layout.scss +588 -0
  587. package/lib/common/styles/_rtl.scss +28 -0
  588. package/lib/common/styles/_styles.scss +12 -0
  589. package/lib/common/styles/_theme-functions.scss +27 -0
  590. package/lib/common/styles/_typography-functions.scss +35 -0
  591. package/lib/common/styles/_typography.scss +76 -0
  592. package/lib/common/styles/_variables.scss +98 -0
  593. package/lib/common/styles/colors/_colors-dark.scss +388 -0
  594. package/lib/common/styles/colors/_colors-light.scss +904 -0
  595. package/lib/common/styles/colors/_colors.scss +7 -0
  596. package/lib/common/styles/core/_button.scss +59 -0
  597. package/lib/common/styles/core/_card.scss +160 -0
  598. package/lib/common/styles/core/_content.scss +42 -0
  599. package/lib/common/styles/core/_core.scss +23 -0
  600. package/lib/common/styles/core/_divider.scss +14 -0
  601. package/lib/common/styles/core/_icons.scss +26 -0
  602. package/lib/common/styles/core/_list.scss +8 -0
  603. package/lib/common/styles/core/_sidenav.scss +20 -0
  604. package/lib/common/styles/core/_structure.scss +126 -0
  605. package/lib/common/styles/core/_toolbar.scss +31 -0
  606. package/lib/common/styles/core/_whiteframe.scss +111 -0
  607. package/lib/common/styles/font/_font.scss +92 -0
  608. package/lib/common/styles/material-icons.scss +3 -0
  609. package/lib/common/styles/platform.scss +11 -0
  610. package/lib/common/styles/utilities/_general.scss +81 -0
  611. package/lib/common/styles/utilities/_pad.scss +36 -0
  612. package/lib/common/styles/utilities/_pull.scss +36 -0
  613. package/lib/common/styles/utilities/_push.scss +36 -0
  614. package/lib/common/styles/utilities/_size.scss +24 -0
  615. package/lib/common/styles/utilities/_text.scss +87 -0
  616. package/lib/common/styles/utilities/_utilities.scss +15 -0
  617. package/lib/common/theming/_all-theme.scss +14 -0
  618. package/lib/common/typography/_all-typography.scss +33 -0
  619. package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +20 -0
  620. package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +24 -0
  621. package/lib/dialogs/dialog.component.d.ts +23 -0
  622. package/lib/dialogs/dialogs.module.d.ts +21 -0
  623. package/lib/dialogs/prompt-dialog/prompt-dialog.component.d.ts +25 -0
  624. package/lib/dialogs/public_api.d.ts +1 -0
  625. package/lib/dialogs/services/dialog.service.d.ts +96 -0
  626. package/lib/file/file-input.component.d.ts +191 -0
  627. package/lib/file/file.module.d.ts +13 -0
  628. package/lib/file/public_api.d.ts +1 -0
  629. package/lib/form-validators/abstract/typed-form.d.ts +4 -0
  630. package/lib/form-validators/algorithm/luhn-algorithm.d.ts +1 -0
  631. package/lib/form-validators/const/app-validators.const.d.ts +3 -0
  632. package/lib/form-validators/const/app.const.d.ts +16 -0
  633. package/lib/form-validators/const/config-names.const.d.ts +8 -0
  634. package/lib/form-validators/const/config-required-fields.const.d.ts +3 -0
  635. package/lib/form-validators/const/decorators.const.d.ts +3 -0
  636. package/lib/form-validators/const/events.const.d.ts +13 -0
  637. package/lib/form-validators/const/html-elements.const.d.ts +6 -0
  638. package/lib/form-validators/const/iban-country-wise-regex.const.d.ts +79 -0
  639. package/lib/form-validators/const/index.d.ts +5 -0
  640. package/lib/form-validators/const/operators.const.d.ts +3 -0
  641. package/lib/form-validators/const/validation-alphabet-locale.const.d.ts +3 -0
  642. package/lib/form-validators/const/validator.const.d.ts +7 -0
  643. package/lib/form-validators/core/defaultContainer.d.ts +19 -0
  644. package/lib/form-validators/core/validator.interface.d.ts +61 -0
  645. package/lib/form-validators/core/validator.static.d.ts +3 -0
  646. package/lib/form-validators/decorators/allOf.decorator.d.ts +3 -0
  647. package/lib/form-validators/decorators/alpha.decorator.d.ts +3 -0
  648. package/lib/form-validators/decorators/alphaNumeric.decorator.d.ts +3 -0
  649. package/lib/form-validators/decorators/and.decorator.d.ts +2 -0
  650. package/lib/form-validators/decorators/ascii.decorator.d.ts +2 -0
  651. package/lib/form-validators/decorators/async.decorator.d.ts +2 -0
  652. package/lib/form-validators/decorators/base-decorator.function.d.ts +1 -0
  653. package/lib/form-validators/decorators/choice.decorator.d.ts +3 -0
  654. package/lib/form-validators/decorators/compare.decorator.d.ts +2 -0
  655. package/lib/form-validators/decorators/compose.decorator.d.ts +2 -0
  656. package/lib/form-validators/decorators/contains.decorator.d.ts +3 -0
  657. package/lib/form-validators/decorators/credit-card.decorator.d.ts +3 -0
  658. package/lib/form-validators/decorators/cusip.decorator.d.ts +2 -0
  659. package/lib/form-validators/decorators/custom.decorator.d.ts +3 -0
  660. package/lib/form-validators/decorators/dataUri.decorator.d.ts +2 -0
  661. package/lib/form-validators/decorators/date.decorator.d.ts +3 -0
  662. package/lib/form-validators/decorators/different.decorator.d.ts +2 -0
  663. package/lib/form-validators/decorators/digit.decorator.d.ts +2 -0
  664. package/lib/form-validators/decorators/email.decorator.d.ts +2 -0
  665. package/lib/form-validators/decorators/endsWith.decorator.d.ts +3 -0
  666. package/lib/form-validators/decorators/even.decorator.d.ts +2 -0
  667. package/lib/form-validators/decorators/extension.decorator.d.ts +3 -0
  668. package/lib/form-validators/decorators/factor.decorator.d.ts +3 -0
  669. package/lib/form-validators/decorators/file.decorator.d.ts +3 -0
  670. package/lib/form-validators/decorators/fileSize.decorator.d.ts +3 -0
  671. package/lib/form-validators/decorators/greater-than-equal-to.decorator.d.ts +3 -0
  672. package/lib/form-validators/decorators/greater-than.decorator.d.ts +3 -0
  673. package/lib/form-validators/decorators/grid.decorator.d.ts +2 -0
  674. package/lib/form-validators/decorators/hexColor.decorator.d.ts +2 -0
  675. package/lib/form-validators/decorators/image.decorator.d.ts +3 -0
  676. package/lib/form-validators/decorators/index.d.ts +90 -0
  677. package/lib/form-validators/decorators/json.decorator.d.ts +2 -0
  678. package/lib/form-validators/decorators/latLong.decorator.d.ts +2 -0
  679. package/lib/form-validators/decorators/latitude.decorator.d.ts +2 -0
  680. package/lib/form-validators/decorators/leapYear.decorator.d.ts +2 -0
  681. package/lib/form-validators/decorators/less-than-equal-to.decorator.d.ts +3 -0
  682. package/lib/form-validators/decorators/less-than.decorator.d.ts +3 -0
  683. package/lib/form-validators/decorators/longitude.decorator.d.ts +2 -0
  684. package/lib/form-validators/decorators/lowercase.decorator.d.ts +2 -0
  685. package/lib/form-validators/decorators/mac.decorator.d.ts +2 -0
  686. package/lib/form-validators/decorators/mask.decorator.d.ts +2 -0
  687. package/lib/form-validators/decorators/maxDate.decorator.d.ts +3 -0
  688. package/lib/form-validators/decorators/maxLength.decorator.d.ts +3 -0
  689. package/lib/form-validators/decorators/maxNumber.decorator.d.ts +3 -0
  690. package/lib/form-validators/decorators/maxTime.decorator.d.ts +3 -0
  691. package/lib/form-validators/decorators/minDate.decorator.d.ts +3 -0
  692. package/lib/form-validators/decorators/minLength.decorator.d.ts +3 -0
  693. package/lib/form-validators/decorators/minNumber.decorator.d.ts +3 -0
  694. package/lib/form-validators/decorators/minTime.decorator.d.ts +3 -0
  695. package/lib/form-validators/decorators/model.decorator.d.ts +2 -0
  696. package/lib/form-validators/decorators/non-validation-decorators/disable.decorator.d.ts +2 -0
  697. package/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.d.ts +2 -0
  698. package/lib/form-validators/decorators/non-validation-decorators/error.decorator.d.ts +2 -0
  699. package/lib/form-validators/decorators/noneOf.decorator.d.ts +3 -0
  700. package/lib/form-validators/decorators/not.decorator.d.ts +2 -0
  701. package/lib/form-validators/decorators/notEmpty.decorator.d.ts +2 -0
  702. package/lib/form-validators/decorators/numeric.decorator.d.ts +3 -0
  703. package/lib/form-validators/decorators/odd.decorator.d.ts +2 -0
  704. package/lib/form-validators/decorators/oneOf.decorator.d.ts +3 -0
  705. package/lib/form-validators/decorators/or.decorator.d.ts +2 -0
  706. package/lib/form-validators/decorators/password.decorator.d.ts +3 -0
  707. package/lib/form-validators/decorators/pattern.decorator.d.ts +3 -0
  708. package/lib/form-validators/decorators/port.decorator.d.ts +2 -0
  709. package/lib/form-validators/decorators/primeNumber.decorator.d.ts +2 -0
  710. package/lib/form-validators/decorators/prop-array.decorator.d.ts +3 -0
  711. package/lib/form-validators/decorators/prop-object.decorator.d.ts +3 -0
  712. package/lib/form-validators/decorators/prop.decorator.d.ts +2 -0
  713. package/lib/form-validators/decorators/range.decorator.d.ts +3 -0
  714. package/lib/form-validators/decorators/required.decorator.d.ts +2 -0
  715. package/lib/form-validators/decorators/requiredTrue.decorator.d.ts +2 -0
  716. package/lib/form-validators/decorators/rule.decorator.d.ts +2 -0
  717. package/lib/form-validators/decorators/sanitize/blacklist.decorator.d.ts +1 -0
  718. package/lib/form-validators/decorators/sanitize/escape.decorator.d.ts +1 -0
  719. package/lib/form-validators/decorators/sanitize/ltrim.decorator.d.ts +1 -0
  720. package/lib/form-validators/decorators/sanitize/prefix.decorator.d.ts +1 -0
  721. package/lib/form-validators/decorators/sanitize/rtrim.decorator.d.ts +1 -0
  722. package/lib/form-validators/decorators/sanitize/sanitize.decorator.d.ts +2 -0
  723. package/lib/form-validators/decorators/sanitize/stripLow.decorator.d.ts +1 -0
  724. package/lib/form-validators/decorators/sanitize/suffix.decorator.d.ts +1 -0
  725. package/lib/form-validators/decorators/sanitize/toBoolean.decorator.d.ts +1 -0
  726. package/lib/form-validators/decorators/sanitize/toDate.decorator.d.ts +2 -0
  727. package/lib/form-validators/decorators/sanitize/toDouble.decorator.d.ts +1 -0
  728. package/lib/form-validators/decorators/sanitize/toFloat.decorator.d.ts +1 -0
  729. package/lib/form-validators/decorators/sanitize/toInt.decorator.d.ts +1 -0
  730. package/lib/form-validators/decorators/sanitize/toString.decorator.d.ts +1 -0
  731. package/lib/form-validators/decorators/sanitize/trim.decorator.d.ts +1 -0
  732. package/lib/form-validators/decorators/sanitize/whitelist.decorator.d.ts +1 -0
  733. package/lib/form-validators/decorators/startsWith.decorator.d.ts +3 -0
  734. package/lib/form-validators/decorators/time.decorator.d.ts +3 -0
  735. package/lib/form-validators/decorators/unique.decorator.d.ts +2 -0
  736. package/lib/form-validators/decorators/uppercase.decorator.d.ts +2 -0
  737. package/lib/form-validators/decorators/url.decorator.d.ts +3 -0
  738. package/lib/form-validators/directives/base-directive.d.ts +8 -0
  739. package/lib/form-validators/directives/control-host.directive.d.ts +11 -0
  740. package/lib/form-validators/directives/html-control-template.directive.d.ts +9 -0
  741. package/lib/form-validators/directives/rx-form.directive.d.ts +18 -0
  742. package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +9 -0
  743. package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +17 -0
  744. package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +18 -0
  745. package/lib/form-validators/directives/template-validations/file-control.directive.d.ts +29 -0
  746. package/lib/form-validators/directives/template-validations/image-file-control.directive.d.ts +17 -0
  747. package/lib/form-validators/directives/template-validations/rxformcontrol.directive.d.ts +89 -0
  748. package/lib/form-validators/domain/disable-provider.d.ts +15 -0
  749. package/lib/form-validators/domain/element-processor/decimal.provider.d.ts +17 -0
  750. package/lib/form-validators/domain/element-processor/mask.provider.d.ts +63 -0
  751. package/lib/form-validators/domain/form-data.d.ts +10 -0
  752. package/lib/form-validators/enums/error-message-binding-strategy.d.ts +9 -0
  753. package/lib/form-validators/enums/index.d.ts +4 -0
  754. package/lib/form-validators/enums/ip-version.d.ts +5 -0
  755. package/lib/form-validators/enums/numeric-value-type.d.ts +5 -0
  756. package/lib/form-validators/enums/reset-type.d.ts +8 -0
  757. package/lib/form-validators/enums/url-validation-type.d.ts +5 -0
  758. package/lib/form-validators/models/config/alpha-config.d.ts +5 -0
  759. package/lib/form-validators/models/config/array-config.d.ts +4 -0
  760. package/lib/form-validators/models/config/base-config-fn.d.ts +10 -0
  761. package/lib/form-validators/models/config/base-config.d.ts +7 -0
  762. package/lib/form-validators/models/config/base-date-config.d.ts +4 -0
  763. package/lib/form-validators/models/config/choice-config.d.ts +5 -0
  764. package/lib/form-validators/models/config/compare-config.d.ts +5 -0
  765. package/lib/form-validators/models/config/component-config.d.ts +3 -0
  766. package/lib/form-validators/models/config/compose-config.d.ts +5 -0
  767. package/lib/form-validators/models/config/contains-config.d.ts +4 -0
  768. package/lib/form-validators/models/config/credit-card-config.d.ts +5 -0
  769. package/lib/form-validators/models/config/custom-config.d.ts +5 -0
  770. package/lib/form-validators/models/config/date-config.d.ts +6 -0
  771. package/lib/form-validators/models/config/default-config.d.ts +4 -0
  772. package/lib/form-validators/models/config/digit-config.d.ts +3 -0
  773. package/lib/form-validators/models/config/disable-config.d.ts +3 -0
  774. package/lib/form-validators/models/config/element-class-config.d.ts +3 -0
  775. package/lib/form-validators/models/config/email-config.d.ts +3 -0
  776. package/lib/form-validators/models/config/error-config.d.ts +3 -0
  777. package/lib/form-validators/models/config/extension-config.d.ts +5 -0
  778. package/lib/form-validators/models/config/factor-config.d.ts +5 -0
  779. package/lib/form-validators/models/config/field-config.d.ts +4 -0
  780. package/lib/form-validators/models/config/file-config.d.ts +5 -0
  781. package/lib/form-validators/models/config/hex-color-config.d.ts +4 -0
  782. package/lib/form-validators/models/config/iban-config.d.ts +4 -0
  783. package/lib/form-validators/models/config/image-config.d.ts +7 -0
  784. package/lib/form-validators/models/config/index.d.ts +34 -0
  785. package/lib/form-validators/models/config/ip-config.d.ts +6 -0
  786. package/lib/form-validators/models/config/logical-operator-config.d.ts +5 -0
  787. package/lib/form-validators/models/config/mask-config.d.ts +6 -0
  788. package/lib/form-validators/models/config/max-date-config.d.ts +4 -0
  789. package/lib/form-validators/models/config/message-config.d.ts +3 -0
  790. package/lib/form-validators/models/config/min-date-config.d.ts +4 -0
  791. package/lib/form-validators/models/config/model-config.d.ts +4 -0
  792. package/lib/form-validators/models/config/number-config.d.ts +4 -0
  793. package/lib/form-validators/models/config/numeric-config.d.ts +8 -0
  794. package/lib/form-validators/models/config/password-config.d.ts +13 -0
  795. package/lib/form-validators/models/config/pattern-config.d.ts +6 -0
  796. package/lib/form-validators/models/config/prop-config.d.ts +14 -0
  797. package/lib/form-validators/models/config/props-config.d.ts +12 -0
  798. package/lib/form-validators/models/config/range-config.d.ts +5 -0
  799. package/lib/form-validators/models/config/relational-operator-config.d.ts +6 -0
  800. package/lib/form-validators/models/config/required-config.d.ts +3 -0
  801. package/lib/form-validators/models/config/rule-config.d.ts +4 -0
  802. package/lib/form-validators/models/config/sanitize-config.d.ts +3 -0
  803. package/lib/form-validators/models/config/size-config.d.ts +5 -0
  804. package/lib/form-validators/models/config/string-comparison-config.d.ts +4 -0
  805. package/lib/form-validators/models/config/time-config.d.ts +15 -0
  806. package/lib/form-validators/models/config/todate-config.d.ts +3 -0
  807. package/lib/form-validators/models/config/unique-config.d.ts +4 -0
  808. package/lib/form-validators/models/config/url-config.d.ts +5 -0
  809. package/lib/form-validators/models/form-builder-configuration.d.ts +28 -0
  810. package/lib/form-validators/models/index.d.ts +2 -0
  811. package/lib/form-validators/models/interface/array-prop-instance-config.interface.d.ts +5 -0
  812. package/lib/form-validators/models/interface/auto-instance-config.interface.d.ts +7 -0
  813. package/lib/form-validators/models/interface/form-data-config.d.ts +3 -0
  814. package/lib/form-validators/models/interface/i-abstract-control.d.ts +15 -0
  815. package/lib/form-validators/models/interface/i-form-group.d.ts +37 -0
  816. package/lib/form-validators/models/interface/instance-argument.interface.d.ts +3 -0
  817. package/lib/form-validators/models/interface/object-prop-instance-config.interface.d.ts +4 -0
  818. package/lib/form-validators/models/interface/options.d.ts +9 -0
  819. package/lib/form-validators/models/password-validation.model.d.ts +20 -0
  820. package/lib/form-validators/models/prop-validation-config.d.ts +78 -0
  821. package/lib/form-validators/public_api.d.ts +24 -0
  822. package/lib/form-validators/reactive-form-validators/allOf.validator.d.ts +3 -0
  823. package/lib/form-validators/reactive-form-validators/alpha.validator.d.ts +3 -0
  824. package/lib/form-validators/reactive-form-validators/alphaNumeric.validator.d.ts +3 -0
  825. package/lib/form-validators/reactive-form-validators/and.validator.d.ts +3 -0
  826. package/lib/form-validators/reactive-form-validators/ascii.validator.d.ts +3 -0
  827. package/lib/form-validators/reactive-form-validators/async/base.async.validator.d.ts +2 -0
  828. package/lib/form-validators/reactive-form-validators/choice.validator.d.ts +3 -0
  829. package/lib/form-validators/reactive-form-validators/compare.validator.d.ts +3 -0
  830. package/lib/form-validators/reactive-form-validators/compose.validator.d.ts +3 -0
  831. package/lib/form-validators/reactive-form-validators/conditional-change.validator.d.ts +2 -0
  832. package/lib/form-validators/reactive-form-validators/contains.validator.d.ts +3 -0
  833. package/lib/form-validators/reactive-form-validators/credit-card.validator.d.ts +3 -0
  834. package/lib/form-validators/reactive-form-validators/cusip.validator.d.ts +3 -0
  835. package/lib/form-validators/reactive-form-validators/custom.validator.d.ts +3 -0
  836. package/lib/form-validators/reactive-form-validators/dataUri.validator.d.ts +3 -0
  837. package/lib/form-validators/reactive-form-validators/date.validator.d.ts +3 -0
  838. package/lib/form-validators/reactive-form-validators/different.validator.d.ts +3 -0
  839. package/lib/form-validators/reactive-form-validators/digit.validator.d.ts +3 -0
  840. package/lib/form-validators/reactive-form-validators/email.validator.d.ts +3 -0
  841. package/lib/form-validators/reactive-form-validators/endsWith.validator.d.ts +3 -0
  842. package/lib/form-validators/reactive-form-validators/even.validator.d.ts +3 -0
  843. package/lib/form-validators/reactive-form-validators/extension.validator.d.ts +2 -0
  844. package/lib/form-validators/reactive-form-validators/factor.validator.d.ts +3 -0
  845. package/lib/form-validators/reactive-form-validators/file.validator.d.ts +2 -0
  846. package/lib/form-validators/reactive-form-validators/fileSize.validator.d.ts +2 -0
  847. package/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.d.ts +3 -0
  848. package/lib/form-validators/reactive-form-validators/greater-than.validator.d.ts +3 -0
  849. package/lib/form-validators/reactive-form-validators/grid.validator.d.ts +3 -0
  850. package/lib/form-validators/reactive-form-validators/hexcolor.validator.d.ts +3 -0
  851. package/lib/form-validators/reactive-form-validators/iban.validator.d.ts +3 -0
  852. package/lib/form-validators/reactive-form-validators/image.validator.d.ts +2 -0
  853. package/lib/form-validators/reactive-form-validators/index.d.ts +65 -0
  854. package/lib/form-validators/reactive-form-validators/ip.validator.d.ts +3 -0
  855. package/lib/form-validators/reactive-form-validators/json.validator.d.ts +3 -0
  856. package/lib/form-validators/reactive-form-validators/latLong.validator.d.ts +3 -0
  857. package/lib/form-validators/reactive-form-validators/latitude.validator.d.ts +3 -0
  858. package/lib/form-validators/reactive-form-validators/leapYear.validator.d.ts +3 -0
  859. package/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.d.ts +3 -0
  860. package/lib/form-validators/reactive-form-validators/less-than.validator.d.ts +3 -0
  861. package/lib/form-validators/reactive-form-validators/longitude.validator.d.ts +3 -0
  862. package/lib/form-validators/reactive-form-validators/lowercase.validator.d.ts +3 -0
  863. package/lib/form-validators/reactive-form-validators/mac.validator.d.ts +3 -0
  864. package/lib/form-validators/reactive-form-validators/mask.validator.d.ts +3 -0
  865. package/lib/form-validators/reactive-form-validators/maxDate.validator.d.ts +3 -0
  866. package/lib/form-validators/reactive-form-validators/maxLength.validator.d.ts +3 -0
  867. package/lib/form-validators/reactive-form-validators/maxNumber.validator.d.ts +3 -0
  868. package/lib/form-validators/reactive-form-validators/maxTime.validator.d.ts +3 -0
  869. package/lib/form-validators/reactive-form-validators/minDate.validator.d.ts +3 -0
  870. package/lib/form-validators/reactive-form-validators/minLength.validator.d.ts +3 -0
  871. package/lib/form-validators/reactive-form-validators/minNumber.validator.d.ts +3 -0
  872. package/lib/form-validators/reactive-form-validators/minTime.validator.d.ts +3 -0
  873. package/lib/form-validators/reactive-form-validators/noneOf.validator.d.ts +3 -0
  874. package/lib/form-validators/reactive-form-validators/not.validator.d.ts +3 -0
  875. package/lib/form-validators/reactive-form-validators/notEmpty.validator.d.ts +3 -0
  876. package/lib/form-validators/reactive-form-validators/numeric.validator.d.ts +3 -0
  877. package/lib/form-validators/reactive-form-validators/odd.validator.d.ts +3 -0
  878. package/lib/form-validators/reactive-form-validators/oneOf.validator.d.ts +3 -0
  879. package/lib/form-validators/reactive-form-validators/or.validator.d.ts +3 -0
  880. package/lib/form-validators/reactive-form-validators/password.validator.d.ts +3 -0
  881. package/lib/form-validators/reactive-form-validators/pattern.validator.d.ts +3 -0
  882. package/lib/form-validators/reactive-form-validators/port.validator.d.ts +3 -0
  883. package/lib/form-validators/reactive-form-validators/primeNumber.validator.d.ts +3 -0
  884. package/lib/form-validators/reactive-form-validators/range.validator.d.ts +3 -0
  885. package/lib/form-validators/reactive-form-validators/required.validator.d.ts +3 -0
  886. package/lib/form-validators/reactive-form-validators/requiredTrue.validator.d.ts +3 -0
  887. package/lib/form-validators/reactive-form-validators/rule.validator.d.ts +3 -0
  888. package/lib/form-validators/reactive-form-validators/startsWith.validator.d.ts +3 -0
  889. package/lib/form-validators/reactive-form-validators/time.validator.d.ts +3 -0
  890. package/lib/form-validators/reactive-form-validators/unique.validator.d.ts +3 -0
  891. package/lib/form-validators/reactive-form-validators/uppercase.validator.d.ts +3 -0
  892. package/lib/form-validators/reactive-form-validators/url.validator.d.ts +3 -0
  893. package/lib/form-validators/services/base-form-builder.d.ts +13 -0
  894. package/lib/form-validators/services/entity.service.d.ts +15 -0
  895. package/lib/form-validators/services/form-control.d.ts +99 -0
  896. package/lib/form-validators/services/form-group.d.ts +9 -0
  897. package/lib/form-validators/services/reactive-form.module.d.ts +24 -0
  898. package/lib/form-validators/services/rx-form-array.d.ts +38 -0
  899. package/lib/form-validators/services/rx-form-builder.d.ts +54 -0
  900. package/lib/form-validators/services/rx-form-group.d.ts +66 -0
  901. package/lib/form-validators/services/typed-form-builder.d.ts +14 -0
  902. package/lib/form-validators/util/alphabet-regex.locale.d.ts +28 -0
  903. package/lib/form-validators/util/app-util.d.ts +28 -0
  904. package/lib/form-validators/util/check-length.d.ts +1 -0
  905. package/lib/form-validators/util/config-provider.d.ts +1 -0
  906. package/lib/form-validators/util/date-checker.function.d.ts +7 -0
  907. package/lib/form-validators/util/date-provider.d.ts +9 -0
  908. package/lib/form-validators/util/form-const.d.ts +2 -0
  909. package/lib/form-validators/util/form-provider.d.ts +8 -0
  910. package/lib/form-validators/util/index.d.ts +6 -0
  911. package/lib/form-validators/util/instance-provider.function.d.ts +3 -0
  912. package/lib/form-validators/util/ip-checker.d.ts +2 -0
  913. package/lib/form-validators/util/linq.d.ts +15 -0
  914. package/lib/form-validators/util/object-maker.d.ts +7 -0
  915. package/lib/form-validators/util/reactive-form-config.d.ts +17 -0
  916. package/lib/form-validators/util/regex-rules.d.ts +3 -0
  917. package/lib/form-validators/util/regex-validator.d.ts +11 -0
  918. package/lib/form-validators/util/relational-checker.function.d.ts +2 -0
  919. package/lib/form-validators/util/reset-form.d.ts +21 -0
  920. package/lib/form-validators/util/sanitizers.d.ts +3 -0
  921. package/lib/form-validators/util/time-checker.function.d.ts +4 -0
  922. package/lib/form-validators/util/type.d.ts +3 -0
  923. package/lib/form-validators/util/validator-value-checker.d.ts +5 -0
  924. package/lib/form-validators/validators-extension/allOf-validator.extension.d.ts +4 -0
  925. package/lib/form-validators/validators-extension/alpha-validator.extension.d.ts +4 -0
  926. package/lib/form-validators/validators-extension/alphaNumeric-validator.extension.d.ts +4 -0
  927. package/lib/form-validators/validators-extension/and-validator.extension.d.ts +3 -0
  928. package/lib/form-validators/validators-extension/ascii-validator.extension.d.ts +3 -0
  929. package/lib/form-validators/validators-extension/base-validator.function.d.ts +3 -0
  930. package/lib/form-validators/validators-extension/choice-validator.extension.d.ts +4 -0
  931. package/lib/form-validators/validators-extension/compare-validator.extension.d.ts +3 -0
  932. package/lib/form-validators/validators-extension/compose-validator.extension.d.ts +3 -0
  933. package/lib/form-validators/validators-extension/contains-validator.extension.d.ts +4 -0
  934. package/lib/form-validators/validators-extension/credit-card-validator.extension.d.ts +4 -0
  935. package/lib/form-validators/validators-extension/cusip-validator.extension.d.ts +3 -0
  936. package/lib/form-validators/validators-extension/custom-validator.extension.d.ts +4 -0
  937. package/lib/form-validators/validators-extension/dataUri-validator.extension.d.ts +3 -0
  938. package/lib/form-validators/validators-extension/date-validator.extension.d.ts +4 -0
  939. package/lib/form-validators/validators-extension/different-validator.extension.d.ts +3 -0
  940. package/lib/form-validators/validators-extension/digit-validator.extension.d.ts +3 -0
  941. package/lib/form-validators/validators-extension/email-validator.extension.d.ts +3 -0
  942. package/lib/form-validators/validators-extension/endsWith-validator.extension.d.ts +4 -0
  943. package/lib/form-validators/validators-extension/even-validator.extension.d.ts +3 -0
  944. package/lib/form-validators/validators-extension/extension-validator.extension.d.ts +4 -0
  945. package/lib/form-validators/validators-extension/factor-validator.extension.d.ts +4 -0
  946. package/lib/form-validators/validators-extension/file-validator.extension.d.ts +4 -0
  947. package/lib/form-validators/validators-extension/fileSize-validator.extension.d.ts +4 -0
  948. package/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.d.ts +4 -0
  949. package/lib/form-validators/validators-extension/greater-than-validator.extension.d.ts +4 -0
  950. package/lib/form-validators/validators-extension/grid-validator.extension.d.ts +3 -0
  951. package/lib/form-validators/validators-extension/hexcolor-validator.extension.d.ts +3 -0
  952. package/lib/form-validators/validators-extension/iban-validator.extension.d.ts +4 -0
  953. package/lib/form-validators/validators-extension/image-validator.extension.d.ts +4 -0
  954. package/lib/form-validators/validators-extension/index.d.ts +67 -0
  955. package/lib/form-validators/validators-extension/ip-validator.extension.d.ts +4 -0
  956. package/lib/form-validators/validators-extension/json-validator.extension.d.ts +3 -0
  957. package/lib/form-validators/validators-extension/latLong-validator.extension.d.ts +3 -0
  958. package/lib/form-validators/validators-extension/latitude-validator.extension.d.ts +3 -0
  959. package/lib/form-validators/validators-extension/leapYear-validator.extension.d.ts +3 -0
  960. package/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.d.ts +4 -0
  961. package/lib/form-validators/validators-extension/less-than-validator.extension.d.ts +4 -0
  962. package/lib/form-validators/validators-extension/longitude-validator.extension.d.ts +3 -0
  963. package/lib/form-validators/validators-extension/lowercase-validator.extension.d.ts +3 -0
  964. package/lib/form-validators/validators-extension/mac-validator.extension.d.ts +3 -0
  965. package/lib/form-validators/validators-extension/mask-validator.extension.d.ts +3 -0
  966. package/lib/form-validators/validators-extension/maxDate-validator.extension.d.ts +4 -0
  967. package/lib/form-validators/validators-extension/maxLength-validator.extension.d.ts +4 -0
  968. package/lib/form-validators/validators-extension/maxNumber-validator.extension.d.ts +4 -0
  969. package/lib/form-validators/validators-extension/maxTime-validator.extension.d.ts +4 -0
  970. package/lib/form-validators/validators-extension/minDate-validator.extension.d.ts +4 -0
  971. package/lib/form-validators/validators-extension/minLength-validator.extension.d.ts +4 -0
  972. package/lib/form-validators/validators-extension/minNumber-validator.extension.d.ts +4 -0
  973. package/lib/form-validators/validators-extension/minTime-validator.extension.d.ts +4 -0
  974. package/lib/form-validators/validators-extension/noneOf-validator.extension.d.ts +4 -0
  975. package/lib/form-validators/validators-extension/not-validator.extension.d.ts +3 -0
  976. package/lib/form-validators/validators-extension/notEmpty-validator.extension.d.ts +3 -0
  977. package/lib/form-validators/validators-extension/numeric-validator.extension.d.ts +4 -0
  978. package/lib/form-validators/validators-extension/odd-validator.extension.d.ts +3 -0
  979. package/lib/form-validators/validators-extension/oneOf-validator.extension.d.ts +4 -0
  980. package/lib/form-validators/validators-extension/or-validator.extension.d.ts +3 -0
  981. package/lib/form-validators/validators-extension/password-validator.extension.d.ts +4 -0
  982. package/lib/form-validators/validators-extension/pattern-validator.extension.d.ts +4 -0
  983. package/lib/form-validators/validators-extension/port-validator.extension.d.ts +3 -0
  984. package/lib/form-validators/validators-extension/primeNumber-validator.extension.d.ts +3 -0
  985. package/lib/form-validators/validators-extension/range-validator.extension.d.ts +4 -0
  986. package/lib/form-validators/validators-extension/required-validator.extension.d.ts +3 -0
  987. package/lib/form-validators/validators-extension/requiredTrue-validator.extension.d.ts +3 -0
  988. package/lib/form-validators/validators-extension/rxweb-validators.d.ts +107 -0
  989. package/lib/form-validators/validators-extension/startsWith-validator.extension.d.ts +4 -0
  990. package/lib/form-validators/validators-extension/time-validator.extension.d.ts +4 -0
  991. package/lib/form-validators/validators-extension/unique-validator.extension.d.ts +3 -0
  992. package/lib/form-validators/validators-extension/uppercase-validator.extension.d.ts +3 -0
  993. package/lib/form-validators/validators-extension/url-validator.extension.d.ts +4 -0
  994. package/lib/form-validators/validators-function/alpha-validation.function.d.ts +3 -0
  995. package/lib/form-validators/validators-function/regex-validation.function.d.ts +4 -0
  996. package/lib/forms/components/generic-form/generic-form.component.d.ts +91 -0
  997. package/lib/forms/constants/constants.d.ts +1 -0
  998. package/lib/forms/directives/mat-form-field-editor.directive.d.ts +82 -0
  999. package/lib/forms/directives/mat-form-field-readonly.directive.d.ts +16 -0
  1000. package/lib/forms/enums/form-field-type.d.ts +17 -0
  1001. package/lib/forms/forms.module.d.ts +39 -0
  1002. package/lib/forms/functions/decorators.d.ts +14 -0
  1003. package/lib/forms/functions/functions.d.ts +7 -0
  1004. package/lib/forms/helpers/abstract-mat-form-field.d.ts +182 -0
  1005. package/lib/forms/helpers/value-accessor-base.d.ts +92 -0
  1006. package/lib/forms/models/form-field-definition.d.ts +39 -0
  1007. package/lib/forms/models/form-field-group.d.ts +12 -0
  1008. package/lib/forms/public_api.d.ts +3 -0
  1009. package/lib/forms/validators/equal-validator.directive.d.ts +20 -0
  1010. package/lib/forms/validators/native-element-injector.directive.d.ts +17 -0
  1011. package/lib/forms/validators/unique-validator-directive.d.ts +36 -0
  1012. package/lib/http/http.module.d.ts +8 -0
  1013. package/lib/http/public_api.d.ts +1 -0
  1014. package/lib/http/services/generic.service.d.ts +166 -0
  1015. package/lib/layout/_layout-theme.scss +89 -0
  1016. package/lib/layout/form-toolbar/form-toolbar.component.d.ts +23 -0
  1017. package/lib/layout/form-toolbar-menu/form-toolbar-menu.component.d.ts +10 -0
  1018. package/lib/layout/layout-card-over/layout-card-over.component.d.ts +31 -0
  1019. package/lib/layout/layout-footer/layout-footer.component.d.ts +17 -0
  1020. package/lib/layout/layout-manage-list/layout-manage-list.component.d.ts +100 -0
  1021. package/lib/layout/layout-manage-list/layout-manage-list.directives.d.ts +61 -0
  1022. package/lib/layout/layout-nav/layout-nav.component.d.ts +85 -0
  1023. package/lib/layout/layout-nav-list/layout-nav-list.component.d.ts +94 -0
  1024. package/lib/layout/layout-nav-list/layout-nav-list.directives.d.ts +25 -0
  1025. package/lib/layout/layout-toggle.class.d.ts +37 -0
  1026. package/lib/layout/layout.component.d.ts +56 -0
  1027. package/lib/layout/layout.directives.d.ts +25 -0
  1028. package/lib/layout/layout.module.d.ts +46 -0
  1029. package/lib/layout/list-toolbar/list-toolbar.component.d.ts +19 -0
  1030. package/lib/layout/list-toolbar-menu/list-toolbar-menu.component.d.ts +10 -0
  1031. package/lib/layout/navigation-drawer/navigation-drawer.component.d.ts +114 -0
  1032. package/lib/layout/public_api.d.ts +1 -0
  1033. package/lib/media/directives/media-toggle.directive.d.ts +44 -0
  1034. package/lib/media/media.module.d.ts +11 -0
  1035. package/lib/media/public_api.d.ts +1 -0
  1036. package/lib/media/services/media.service.d.ts +37 -0
  1037. package/lib/menu/components/menu.component.d.ts +28 -0
  1038. package/lib/menu/enums/menu-scope.d.ts +4 -0
  1039. package/lib/menu/menu.module.d.ts +19 -0
  1040. package/lib/menu/models/menu-item.d.ts +17 -0
  1041. package/lib/menu/models/menu.d.ts +14 -0
  1042. package/lib/menu/public_api.d.ts +1 -0
  1043. package/lib/menu/services/menu-items.service.d.ts +12 -0
  1044. package/lib/menu/services/menu.resolve.d.ts +39 -0
  1045. package/lib/menu/services/menu.service.d.ts +12 -0
  1046. package/lib/search/public_api.d.ts +1 -0
  1047. package/lib/search/search.module.d.ts +15 -0
  1048. package/lib/search/vd-search-box/vd-search-box.component.d.ts +60 -0
  1049. package/lib/search/vd-search-input/vd-search-input.component.d.ts +57 -0
  1050. package/lib/select/public_api.d.ts +2 -0
  1051. package/lib/select/select.component.d.ts +233 -0
  1052. package/lib/select/select.module.d.ts +13 -0
  1053. package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +202 -0
  1054. package/lib/table/components/filter-clear.component.d.ts +16 -0
  1055. package/lib/table/components/filter-date.component.d.ts +70 -0
  1056. package/lib/table/components/filter-input.component.d.ts +94 -0
  1057. package/lib/table/components/filter-select.component.d.ts +178 -0
  1058. package/lib/table/directives/data-source-filter.directive.d.ts +28 -0
  1059. package/lib/table/enums/table-column-type.d.ts +12 -0
  1060. package/lib/table/functions/decorators.d.ts +17 -0
  1061. package/lib/table/functions/functions.d.ts +8 -0
  1062. package/lib/table/models/pagination.d.ts +7 -0
  1063. package/lib/table/models/table-column.d.ts +59 -0
  1064. package/lib/table/models/table-definition.d.ts +24 -0
  1065. package/lib/table/models/table-menu-item.d.ts +8 -0
  1066. package/lib/table/paginator-intl.d.ts +27 -0
  1067. package/lib/table/public_api.d.ts +2 -0
  1068. package/lib/table/table.data-source.d.ts +140 -0
  1069. package/lib/table/table.module.d.ts +46 -0
  1070. package/lib/table/table.static-data-source.d.ts +88 -0
  1071. package/messaia-cdk.d.ts +5 -0
  1072. package/package.json +31 -0
  1073. package/public_api.d.ts +14 -0
  1074. package/src/lib/layout/README.md +119 -0
  1075. package/src/lib/layout/layout-card-over/README.md +36 -0
  1076. package/src/lib/layout/layout-manage-list/README.md +76 -0
  1077. package/src/lib/layout/layout-nav/README.md +40 -0
  1078. package/src/lib/layout/layout-nav-list/README.md +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaia-cdk.mjs","sources":["../../../projects/cdk/src/lib/common/directives/disable-control.directive.ts","../../../projects/cdk/src/lib/common/pipes/data-source.pipe.ts","../../../projects/cdk/src/lib/common/pipes/enum.pipe.ts","../../../projects/cdk/src/lib/common/pipes/file-size.pipe.ts","../../../projects/cdk/src/lib/common/pipes/filter.pipe.ts","../../../projects/cdk/src/lib/common/pipes/first-letter.ts","../../../projects/cdk/src/lib/common/pipes/keys.ts","../../../projects/cdk/src/lib/common/pipes/month-name.pipe.ts","../../../projects/cdk/src/lib/common/pipes/only-number.ts","../../../projects/cdk/src/lib/common/pipes/order.pipe.ts","../../../projects/cdk/src/lib/common/pipes/placeholder.pipe.ts","../../../projects/cdk/src/lib/common/pipes/safe-html.pipe.ts","../../../projects/cdk/src/lib/common/pipes/time.pipe.ts","../../../projects/cdk/src/lib/common/pipes/titlecase.pipe.ts","../../../projects/cdk/src/lib/common/functions/utils.ts","../../../projects/cdk/src/lib/common/pipes/truncate.pipe.ts","../../../projects/cdk/src/lib/common/pipes/values.ts","../../../projects/cdk/src/lib/common/behaviors/control-value-accesor.mixin.ts","../../../projects/cdk/src/lib/common/behaviors/disabled.mixin.ts","../../../projects/cdk/src/lib/common/constants/constants.ts","../../../projects/cdk/src/lib/common/enums/salutation.ts","../../../projects/cdk/src/lib/common/functions/decorators.ts","../../../projects/cdk/src/lib/common/functions/functions.ts","../../../projects/cdk/src/lib/common/helpers/app-storage.ts","../../../projects/cdk/src/lib/common/helpers/dynamic-builder.ts","../../../projects/cdk/src/lib/common/models/action-menu-item.ts","../../../projects/cdk/src/lib/common/models/app-setting.ts","../../../projects/cdk/src/lib/table/enums/table-column-type.ts","../../../projects/cdk/src/lib/table/models/table-column.ts","../../../projects/cdk/src/lib/table/models/table-definition.ts","../../../projects/cdk/src/lib/table/functions/decorators.ts","../../../projects/cdk/src/lib/form-validators/const/app.const.ts","../../../projects/cdk/src/lib/form-validators/const/events.const.ts","../../../projects/cdk/src/lib/form-validators/const/html-elements.const.ts","../../../projects/cdk/src/lib/form-validators/const/validation-alphabet-locale.const.ts","../../../projects/cdk/src/lib/form-validators/const/validator.const.ts","../../../projects/cdk/src/lib/form-validators/const/decorators.const.ts","../../../projects/cdk/src/lib/form-validators/util/linq.ts","../../../projects/cdk/src/lib/form-validators/core/validator.static.ts","../../../projects/cdk/src/lib/form-validators/core/defaultContainer.ts","../../../projects/cdk/src/lib/form-validators/decorators/prop.decorator.ts","../../../projects/cdk/src/lib/common/models/base-entity.ts","../../../projects/cdk/src/lib/common/models/audit-entity.ts","../../../projects/cdk/src/lib/common/models/audit-user.ts","../../../projects/cdk/src/lib/common/models/key-value.ts","../../../projects/cdk/src/lib/common/models/save-action.ts","../../../projects/cdk/src/lib/common/services/service-locator.ts","../../../projects/cdk/src/lib/http/services/generic.service.ts","../../../projects/cdk/src/lib/common/services/base.service.ts","../../../projects/cdk/src/lib/common/services/context-helper.ts","../../../projects/cdk/src/lib/common/services/enum.service.ts","../../../projects/cdk/src/lib/common/common.module.ts","../../../projects/cdk/src/lib/dialogs/dialog.component.ts","../../../projects/cdk/src/lib/dialogs/dialog.component.html","../../../projects/cdk/src/lib/dialogs/alert-dialog/alert-dialog.component.ts","../../../projects/cdk/src/lib/dialogs/alert-dialog/alert-dialog.component.html","../../../projects/cdk/src/lib/dialogs/confirm-dialog/confirm-dialog.component.ts","../../../projects/cdk/src/lib/dialogs/confirm-dialog/confirm-dialog.component.html","../../../projects/cdk/src/lib/dialogs/prompt-dialog/prompt-dialog.component.ts","../../../projects/cdk/src/lib/dialogs/prompt-dialog/prompt-dialog.component.html","../../../projects/cdk/src/lib/dialogs/services/dialog.service.ts","../../../projects/cdk/src/lib/media/services/media.service.ts","../../../projects/cdk/src/lib/base/constants/common.ts","../../../projects/cdk/src/lib/base/enums/message-type.ts","../../../projects/cdk/src/lib/base/models/auth-user.ts","../../../projects/cdk/src/lib/base/helpers/auth-helper.ts","../../../projects/cdk/src/lib/base/components/base.component.ts","../../../projects/cdk/src/lib/base/components/generic-form-base.component.ts","../../../projects/cdk/src/lib/base/components/generic-form.component.ts","../../../projects/cdk/src/lib/table/functions/functions.ts","../../../projects/cdk/src/lib/table/table.static-data-source.ts","../../../projects/cdk/src/lib/table/components/filter-input.component.ts","../../../projects/cdk/src/lib/table/components/filter-select.component.ts","../../../projects/cdk/src/lib/table/components/filter-date.component.ts","../../../projects/cdk/src/lib/table/table.data-source.ts","../../../projects/cdk/src/lib/table/components/filter-clear.component.ts","../../../projects/cdk/src/lib/table/directives/data-source-filter.directive.ts","../../../projects/cdk/src/lib/table/components/dynamic-table/dynamic-table.component.ts","../../../projects/cdk/src/lib/table/components/dynamic-table/dynamic-table.component.html","../../../projects/cdk/src/lib/base/components/generic-list.component.ts","../../../projects/cdk/src/lib/form-validators/models/form-builder-configuration.ts","../../../projects/cdk/src/lib/form-validators/abstract/typed-form.ts","../../../projects/cdk/src/lib/form-validators/util/regex-rules.ts","../../../projects/cdk/src/lib/form-validators/util/alphabet-regex.locale.ts","../../../projects/cdk/src/lib/form-validators/services/entity.service.ts","../../../projects/cdk/src/lib/form-validators/util/reactive-form-config.ts","../../../projects/cdk/src/lib/form-validators/util/object-maker.ts","../../../projects/cdk/src/lib/form-validators/services/rx-form-array.ts","../../../projects/cdk/src/lib/form-validators/enums/error-message-binding-strategy.ts","../../../projects/cdk/src/lib/form-validators/enums/ip-version.ts","../../../projects/cdk/src/lib/form-validators/enums/numeric-value-type.ts","../../../projects/cdk/src/lib/form-validators/enums/reset-type.ts","../../../projects/cdk/src/lib/form-validators/util/app-util.ts","../../../projects/cdk/src/lib/form-validators/util/instance-provider.function.ts","../../../projects/cdk/src/lib/form-validators/domain/disable-provider.ts","../../../projects/cdk/src/lib/form-validators/util/date-provider.ts","../../../projects/cdk/src/lib/form-validators/util/sanitizers.ts","../../../projects/cdk/src/lib/form-validators/services/form-control.ts","../../../projects/cdk/src/lib/form-validators/util/regex-validator.ts","../../../projects/cdk/src/lib/form-validators/domain/form-data.ts","../../../projects/cdk/src/lib/form-validators/util/reset-form.ts","../../../projects/cdk/src/lib/form-validators/services/rx-form-group.ts","../../../projects/cdk/src/lib/form-validators/util/form-provider.ts","../../../projects/cdk/src/lib/form-validators/const/config-names.const.ts","../../../projects/cdk/src/lib/form-validators/const/config-required-fields.const.ts","../../../projects/cdk/src/lib/form-validators/util/config-provider.ts","../../../projects/cdk/src/lib/form-validators/util/validator-value-checker.ts","../../../projects/cdk/src/lib/form-validators/validators-function/alpha-validation.function.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/alpha.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/alphaNumeric.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/compare.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/contains.validator.ts","../../../projects/cdk/src/lib/form-validators/algorithm/luhn-algorithm.ts","../../../projects/cdk/src/lib/form-validators/util/check-length.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/credit-card.validator.ts","../../../projects/cdk/src/lib/form-validators/validators-function/regex-validation.function.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/digit.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/email.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/hexcolor.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/lowercase.validator.ts","../../../projects/cdk/src/lib/form-validators/const/operators.const.ts","../../../projects/cdk/src/lib/form-validators/util/date-checker.function.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/maxDate.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/maxLength.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/maxNumber.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/minDate.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/minLength.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/minNumber.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/password.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/range.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/uppercase.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/required.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/pattern.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/time.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/url.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/json.validator.ts","../../../projects/cdk/src/lib/form-validators/util/relational-checker.function.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/greater-than.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/less-than.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/choice.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/different.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/numeric.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/even.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/odd.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/factor.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/leapYear.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/allOf.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/oneOf.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/noneOf.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/mac.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/ascii.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/dataUri.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/port.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/latLong.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/extension.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/fileSize.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/endsWith.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/startsWith.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/primeNumber.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/latitude.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/longitude.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/compose.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/rule.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/file.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/custom.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/unique.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/image.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/notEmpty.validator.ts","../../../projects/cdk/src/lib/form-validators/util/ip-checker.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/ip.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/cusip.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/grid.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/date.validator.ts","../../../projects/cdk/src/lib/form-validators/util/time-checker.function.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/minTime.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/maxTime.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/requiredTrue.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/mask.validator.ts","../../../projects/cdk/src/lib/form-validators/const/iban-country-wise-regex.const.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/iban.validator.ts","../../../projects/cdk/src/lib/form-validators/const/app-validators.const.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/async/base.async.validator.ts","../../../projects/cdk/src/lib/form-validators/decorators/base-decorator.function.ts","../../../projects/cdk/src/lib/form-validators/decorators/allOf.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/alpha.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/alphaNumeric.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/and.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/ascii.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/async.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/choice.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/compare.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/compose.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/contains.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/credit-card.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/cusip.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/custom.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/dataUri.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/date.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/different.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/digit.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/email.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/endsWith.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/even.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/extension.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/factor.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/file.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/fileSize.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/greater-than-equal-to.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/greater-than.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/grid.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/hexColor.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/image.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/json.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/latitude.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/latLong.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/leapYear.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/less-than-equal-to.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/less-than.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/longitude.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/lowercase.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/mac.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/mask.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/maxDate.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/maxLength.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/maxNumber.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/maxTime.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/minDate.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/minLength.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/minNumber.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/minTime.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/model.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/non-validation-decorators/disable.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/non-validation-decorators/error.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/noneOf.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/not.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/notEmpty.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/numeric.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/odd.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/oneOf.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/or.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/password.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/pattern.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/port.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/primeNumber.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/prop-array.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/prop-object.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/range.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/required.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/requiredTrue.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/rule.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/blacklist.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/escape.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/ltrim.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/prefix.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/rtrim.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/sanitize.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/stripLow.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/suffix.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/toBoolean.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/toDate.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/toDouble.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/toFloat.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/toInt.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/toString.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/trim.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/sanitize/whitelist.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/startsWith.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/time.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/unique.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/uppercase.decorator.ts","../../../projects/cdk/src/lib/form-validators/decorators/url.decorator.ts","../../../projects/cdk/src/lib/form-validators/directives/base-directive.ts","../../../projects/cdk/src/lib/form-validators/directives/html-control-template.directive.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/conditional-change.validator.ts","../../../projects/cdk/src/lib/form-validators/directives/rx-form.directive.ts","../../../projects/cdk/src/lib/form-validators/directives/template-validations/async-validation.directive.ts","../../../projects/cdk/src/lib/form-validators/directives/template-validations/file-control.directive.ts","../../../projects/cdk/src/lib/form-validators/directives/template-validations/image-file-control.directive.ts","../../../projects/cdk/src/lib/form-validators/domain/element-processor/decimal.provider.ts","../../../projects/cdk/src/lib/form-validators/domain/element-processor/mask.provider.ts","../../../projects/cdk/src/lib/form-validators/util/form-const.ts","../../../projects/cdk/src/lib/form-validators/directives/template-validations/control-expression-process.ts","../../../projects/cdk/src/lib/form-validators/directives/template-validations/base-validator.directive.ts","../../../projects/cdk/src/lib/form-validators/directives/template-validations/rxformcontrol.directive.ts","../../../projects/cdk/src/lib/form-validators/models/interface/i-abstract-control.ts","../../../projects/cdk/src/lib/form-validators/directives/control-host.directive.ts","../../../projects/cdk/src/lib/form-validators/services/base-form-builder.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/and.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/or.validator.ts","../../../projects/cdk/src/lib/form-validators/reactive-form-validators/not.validator.ts","../../../projects/cdk/src/lib/form-validators/services/rx-form-builder.ts","../../../projects/cdk/src/lib/form-validators/services/typed-form-builder.ts","../../../projects/cdk/src/lib/form-validators/services/reactive-form.module.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/base-validator.function.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/alpha-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/allOf-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/alphaNumeric-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/choice-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/compare-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/contains-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/credit-card-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/different-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/digit-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/email-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/even-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/factor-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/greater-than-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/hexcolor-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/json-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/leapYear-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/less-than-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/lowercase-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/mac-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/maxDate-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/maxLength-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/maxNumber-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/minDate-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/minLength-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/minNumber-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/noneOf-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/numeric-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/odd-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/oneOf-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/password-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/pattern-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/range-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/required-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/time-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/uppercase-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/url-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/ascii-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/dataUri-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/port-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/latLong-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/extension-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/fileSize-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/endsWith-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/startsWith-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/primeNumber-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/latitude-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/longitude-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/compose-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/file-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/custom-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/unique-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/image-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/notEmpty-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/ip-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/cusip-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/grid-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/date-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/and-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/or-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/not-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/minTime-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/maxTime-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/requiredTrue-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/mask-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/iban-validator.extension.ts","../../../projects/cdk/src/lib/form-validators/validators-extension/rxweb-validators.ts","../../../projects/cdk/src/lib/base/components/generic-reactive-form.component.ts","../../../projects/cdk/src/lib/base/interceptors/base.interceptor.ts","../../../projects/cdk/src/lib/base/interceptors/caching-interceptor.ts","../../../projects/cdk/src/lib/base/services/loading-screen.service.ts","../../../projects/cdk/src/lib/base/interceptors/loading.interceptor.ts","../../../projects/cdk/src/lib/base/services/file.service.ts","../../../projects/cdk/src/lib/base/services/print.service.ts","../../../projects/cdk/src/lib/base/base.module.ts","../../../projects/cdk/src/lib/forms/helpers/abstract-mat-form-field.ts","../../../projects/cdk/src/lib/chips/components/chips.component.ts","../../../projects/cdk/src/lib/chips/components/chips.component.html","../../../projects/cdk/src/lib/chips/chips.module.ts","../../../projects/cdk/src/lib/dialogs/dialogs.module.ts","../../../projects/cdk/src/lib/file/file-input.component.ts","../../../projects/cdk/src/lib/file/file.module.ts","../../../projects/cdk/src/lib/forms/enums/form-field-type.ts","../../../projects/cdk/src/lib/select/select.component.ts","../../../projects/cdk/src/lib/select/select.component.html","../../../projects/cdk/src/lib/forms/directives/mat-form-field-readonly.directive.ts","../../../projects/cdk/src/lib/forms/components/generic-form/generic-form.component.ts","../../../projects/cdk/src/lib/forms/components/generic-form/generic-form.component.html","../../../projects/cdk/src/lib/select/select.module.ts","../../../projects/cdk/src/lib/forms/directives/mat-form-field-editor.directive.ts","../../../projects/cdk/src/lib/forms/validators/equal-validator.directive.ts","../../../projects/cdk/src/lib/forms/validators/native-element-injector.directive.ts","../../../projects/cdk/src/lib/forms/validators/unique-validator-directive.ts","../../../projects/cdk/src/lib/forms/constants/constants.ts","../../../projects/cdk/src/lib/forms/models/form-field-definition.ts","../../../projects/cdk/src/lib/forms/models/form-field-group.ts","../../../projects/cdk/src/lib/forms/functions/functions.ts","../../../projects/cdk/src/lib/forms/functions/decorators.ts","../../../projects/cdk/src/lib/forms/helpers/value-accessor-base.ts","../../../projects/cdk/src/lib/forms/forms.module.ts","../../../projects/cdk/src/lib/http/http.module.ts","../../../projects/cdk/src/lib/menu/components/menu.component.ts","../../../projects/cdk/src/lib/menu/components/menu.component.html","../../../projects/cdk/src/lib/menu/services/menu.service.ts","../../../projects/cdk/src/lib/menu/enums/menu-scope.ts","../../../projects/cdk/src/lib/menu/models/menu.ts","../../../projects/cdk/src/lib/menu/models/menu-item.ts","../../../projects/cdk/src/lib/menu/services/menu-items.service.ts","../../../projects/cdk/src/lib/menu/services/menu.resolve.ts","../../../projects/cdk/src/lib/menu/menu.module.ts","../../../projects/cdk/src/lib/layout/form-toolbar-menu/form-toolbar-menu.component.ts","../../../projects/cdk/src/lib/layout/form-toolbar-menu/form-toolbar-menu.component.html","../../../projects/cdk/src/lib/layout/form-toolbar/form-toolbar.component.ts","../../../projects/cdk/src/lib/layout/form-toolbar/form-toolbar.component.html","../../../projects/cdk/src/lib/layout/layout-card-over/layout-card-over.component.ts","../../../projects/cdk/src/lib/layout/layout-card-over/layout-card-over.component.html","../../../projects/cdk/src/lib/layout/layout-footer/layout-footer.component.ts","../../../projects/cdk/src/lib/layout/layout-footer/layout-footer.component.html","../../../projects/cdk/src/lib/layout/layout-manage-list/layout-manage-list.component.ts","../../../projects/cdk/src/lib/layout/layout-manage-list/layout-manage-list.component.html","../../../projects/cdk/src/lib/layout/layout-toggle.class.ts","../../../projects/cdk/src/lib/layout/layout-manage-list/layout-manage-list.directives.ts","../../../projects/cdk/src/lib/layout/layout-nav-list/layout-nav-list.component.ts","../../../projects/cdk/src/lib/layout/layout-nav-list/layout-nav-list.component.html","../../../projects/cdk/src/lib/layout/layout-nav-list/layout-nav-list.directives.ts","../../../projects/cdk/src/lib/layout/layout.component.ts","../../../projects/cdk/src/lib/layout/layout.component.html","../../../projects/cdk/src/lib/layout/layout.directives.ts","../../../projects/cdk/src/lib/layout/layout-nav/layout-nav.component.ts","../../../projects/cdk/src/lib/layout/layout-nav/layout-nav.component.html","../../../projects/cdk/src/lib/layout/list-toolbar-menu/list-toolbar-menu.component.ts","../../../projects/cdk/src/lib/layout/list-toolbar-menu/list-toolbar-menu.component.html","../../../projects/cdk/src/lib/layout/list-toolbar/list-toolbar.component.ts","../../../projects/cdk/src/lib/layout/list-toolbar/list-toolbar.component.html","../../../projects/cdk/src/lib/common/animations/collapse/collapse.animation.ts","../../../projects/cdk/src/lib/layout/navigation-drawer/navigation-drawer.component.ts","../../../projects/cdk/src/lib/layout/navigation-drawer/navigation-drawer.component.html","../../../projects/cdk/src/lib/layout/layout.module.ts","../../../projects/cdk/src/lib/media/directives/media-toggle.directive.ts","../../../projects/cdk/src/lib/media/media.module.ts","../../../projects/cdk/src/lib/search/vd-search-input/vd-search-input.component.ts","../../../projects/cdk/src/lib/search/vd-search-input/vd-search-input.component.html","../../../projects/cdk/src/lib/search/vd-search-box/vd-search-box.component.ts","../../../projects/cdk/src/lib/search/vd-search-box/vd-search-box.component.html","../../../projects/cdk/src/lib/search/search.module.ts","../../../projects/cdk/src/lib/table/paginator-intl.ts","../../../projects/cdk/src/lib/table/models/pagination.ts","../../../projects/cdk/src/lib/table/models/table-menu-item.ts","../../../projects/cdk/src/lib/table/table.module.ts","../../../projects/cdk/src/public_api.ts","../../../projects/cdk/src/messaia-cdk.ts"],"sourcesContent":["import { Directive, Input } from '@angular/core';\r\nimport { FormControlDirective, FormControlName, NgControl } from '@angular/forms';\r\n\r\n@Directive({ selector: '[disableControl]' })\r\nexport class DisableControlDirective {\r\n\r\n /**\r\n * disableControl: boolean\r\n */\r\n @Input()\r\n set disableControl(condition: boolean) {\r\n const action = condition ? 'disable' : 'enable';\r\n if (this.ngControl instanceof FormControlName) {\r\n (this.ngControl as FormControlName).formDirective?.control?.controls[this.ngControl.name][action]();\r\n } else if (this.ngControl instanceof FormControlDirective) {\r\n this.ngControl?.control[action]();\r\n }\r\n }\r\n\r\n /**\r\n * Constructor\r\n * @param ngControl \r\n */\r\n constructor(private ngControl: NgControl) { }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\n@Pipe({ name: 'dataSource' })\r\nexport class DataSourcePipe implements PipeTransform {\r\n\ttransform(data: any[]): any {\r\n\t\treturn data ? new MatTableDataSource(data) : null;\r\n\t}\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n\tname: 'enum',\r\n\t/* Required to update the value when the promise is resolved */\r\n\tpure: false\r\n})\r\nexport class EnumPipe implements PipeTransform {\r\n\r\n\t/**\r\n\t * Converts enum value to string\r\n\t * @param value \r\n\t * @param enumType \r\n\t */\r\n\ttransform(value: number, enumType: any, prefix: string = '', suffix: string = ''): any {\r\n\t\treturn `${prefix}${enumType[value]}${suffix}`;\r\n\t}\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\ntype unit = 'bytes' | 'KB' | 'MB' | 'GB' | 'TB' | 'PB';\r\ntype unitPrecisionMap = { [u in unit]: number; };\r\n\r\nconst defaultPrecisionMap: unitPrecisionMap = {\r\n bytes: 0,\r\n KB: 0,\r\n MB: 1,\r\n GB: 1,\r\n TB: 2,\r\n PB: 2\r\n};\r\n\r\n@Pipe({ name: 'fileSize' })\r\nexport class FileSizePipe implements PipeTransform {\r\n private readonly units: unit[] = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\r\n\r\n transform(bytes: number = 0, precision: number | unitPrecisionMap = defaultPrecisionMap): string {\r\n if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) {\r\n return '?';\r\n }\r\n\r\n let unitIndex = 0;\r\n while (bytes >= 1024) {\r\n bytes /= 1024;\r\n unitIndex++;\r\n }\r\n\r\n const unit = this.units[unitIndex];\r\n\r\n if (typeof precision === 'number') {\r\n return `${bytes.toFixed(+precision)} ${unit}`;\r\n }\r\n\r\n return `${bytes.toFixed(precision[unit])} ${unit}`;\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: 'filter',\r\n pure: false\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n\r\n /**\r\n * Filters the specified array\r\n * @param items The array to filter\r\n * @param filterBy the term\r\n * @returns \r\n */\r\n transform(items: any[], filterBy: string): any {\r\n return items?.filter(item => item.id.indexOf(filterBy) !== -1);\r\n }\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n\tname: 'firstLetter',\r\n\t/* Required to update the value when the promise is resolved */\r\n\tpure: false\r\n})\r\nexport class FirstLetterPipe implements PipeTransform {\r\n\r\n\t/**\r\n\t * Converts enum value to string\r\n\t * @param value \r\n\t * @param uppercase \r\n\t */\r\n\ttransform(value: string, uppercase?: boolean): string {\r\n\t\tlet val = value && value.length > 1 ? value.substr(0, 1) : value;\r\n\t\treturn uppercase ? val.toUpperCase() : val;\r\n\t}\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'keys' })\r\nexport class KeysPipe implements PipeTransform {\r\n\ttransform(value, args: string[]): any {\r\n\t\tlet keys = [];\r\n\t\tfor (let key in value) {\r\n\t\t\tkeys.push({ key: key, value: value[key] });\r\n\t\t}\r\n\t\treturn keys;\r\n\t}\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\n\r\n@Pipe({\r\n name: 'monthName',\r\n pure: false\r\n})\r\nexport class MonthNamePipe implements PipeTransform {\r\n /**\r\n * Month names\r\n */\r\n private readonly monthNames: string[] = ['Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember'];\r\n\r\n /**\r\n * Gets month name\r\n * @param month \r\n */\r\n transform(month: number): string {\r\n return (month < 1 || month > 12) ? 'N/A' : this.monthNames[month - 1];\r\n }\r\n}","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\r\n\r\n//@dynamic\r\n@Directive({\r\n selector: '[onlyNumber]'\r\n})\r\nexport class OnlyNumberDirective {\r\n\r\n /**\r\n * constructor\r\n * @param element \r\n */\r\n constructor(private element: ElementRef) { }\r\n\r\n /**\r\n * onlyNumber: boolean\r\n */\r\n @Input()\r\n public onlyNumber: boolean;\r\n\r\n /**\r\n * Handles keydown events\r\n * @param event \r\n */\r\n @HostListener('keydown', ['$event']) onKeyDown(event) {\r\n let e = <KeyboardEvent>event;\r\n if (this.onlyNumber) {\r\n if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n /* Allow: Ctrl+A */\r\n (e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\r\n /* Allow: Ctrl+C */\r\n (e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\r\n /* Allow: Ctrl+V */\r\n (e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\r\n /* Allow: Ctrl+X */\r\n (e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\r\n /* Allow: home, end, left, right */\r\n (e.keyCode >= 35 && e.keyCode <= 39)) {\r\n /* let it happen, don't do anything */\r\n return;\r\n }\r\n\r\n /* Ensure that it is a number and stop the keypress */\r\n if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n e.preventDefault();\r\n }\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n//@dynamic\r\n@Pipe({\r\n\tname: 'orderBy',\r\n\tpure: false\r\n})\r\nexport class OrderPipe implements PipeTransform {\r\n\r\n\t/**\r\n\t * Check if a value is a string\r\n\t *\r\n\t * @param value\r\n\t */\r\n\tstatic isString(value: any) {\r\n\t\treturn typeof value === 'string' || value instanceof String;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts values ignoring the case\r\n\t *\r\n\t * @param a\r\n\t * @param b\r\n\t */\r\n\tstatic caseInsensitiveSort(a: any, b: any) {\r\n\t\tif (OrderPipe.isString(a) && OrderPipe.isString(b)) {\r\n\t\t\treturn a.localeCompare(b);\r\n\t\t}\r\n\t\treturn OrderPipe.defaultCompare(a, b);\r\n\t}\r\n\r\n\t/**\r\n\t * Default compare method\r\n\t * \r\n\t * @param a \r\n\t * @param b \r\n\t */\r\n\tstatic defaultCompare(a: any, b: any) {\r\n\t\tif (a === b) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\tif (a == null) {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\tif (b == null) {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\treturn a > b ? 1 : -1;\r\n\t}\r\n\r\n\t/**\r\n\t * Parse expression, split into items\r\n\t * @param expression\r\n\t */\r\n\tstatic parseExpression(expression: string): string[] {\r\n\t\texpression = expression.replace(/\\[(\\w+)\\]/g, '.$1');\r\n\t\texpression = expression.replace(/^\\./, '');\r\n\t\treturn expression.split('.');\r\n\t}\r\n\r\n\t/**\r\n\t * Get value by expression\r\n\t *\r\n\t * @param object\r\n\t * @param expression\r\n\t */\r\n\tstatic getValue(object: any, expression: string[]) {\r\n\t\tfor (let i = 0, n = expression.length; i < n; ++i) {\r\n\t\t\tconst k = expression[i];\r\n\t\t\tif (!(k in object)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tobject = object[k];\r\n\t\t}\r\n\r\n\t\treturn object;\r\n\t}\r\n\r\n\t/**\r\n\t * Set value by expression\r\n\t *\r\n\t * @param object\r\n\t * @param value\r\n\t * @param expression\r\n\t */\r\n\tstatic setValue(object: any, value: any, expression: string[]) {\r\n\t\tlet i;\r\n\t\tfor (i = 0; i < expression.length - 1; i++) {\r\n\t\t\tobject = object[expression[i]];\r\n\t\t}\r\n\r\n\t\tobject[expression[i]] = value;\r\n\t}\r\n\r\n\ttransform(value: any | any[], expression?: any, reverse?: boolean, isCaseInsensitive: boolean = false, comparator?: Function): any {\r\n\t\tif (!value) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(expression)) {\r\n\t\t\treturn this.multiExpressionTransform(value, expression, reverse, isCaseInsensitive, comparator);\r\n\t\t}\r\n\r\n\t\tif (Array.isArray(value)) {\r\n\t\t\treturn this.sortArray(value.slice(), expression, reverse, isCaseInsensitive, comparator);\r\n\t\t}\r\n\r\n\t\tif (typeof value === 'object') {\r\n\t\t\treturn this.transformObject(Object.assign({}, value), expression, reverse, isCaseInsensitive, comparator);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Sort array\r\n\t *\r\n\t * @param value\r\n\t * @param expression\r\n\t * @param reverse\r\n\t * @param isCaseInsensitive\r\n\t * @param comparator\r\n\t */\r\n\tprivate sortArray(value: any[], expression?: any, reverse?: boolean, isCaseInsensitive?: boolean, comparator?: Function): any[] {\r\n\t\tconst isDeepLink = expression && expression.indexOf('.') !== -1;\r\n\r\n\t\tif (isDeepLink) {\r\n\t\t\texpression = OrderPipe.parseExpression(expression);\r\n\t\t}\r\n\r\n\t\tlet compareFn: Function;\r\n\r\n\t\tif (comparator && typeof comparator === 'function') {\r\n\t\t\tcompareFn = comparator;\r\n\t\t} else {\r\n\t\t\tcompareFn = isCaseInsensitive ? OrderPipe.caseInsensitiveSort : OrderPipe.defaultCompare;\r\n\t\t}\r\n\r\n\t\tlet array: any[] = value.sort((a: any, b: any): number => {\r\n\t\t\tif (!expression) {\r\n\t\t\t\treturn compareFn(a, b);\r\n\t\t\t}\r\n\r\n\t\t\tif (!isDeepLink) {\r\n\t\t\t\tif (a && b) {\r\n\t\t\t\t\treturn compareFn(a[expression], b[expression]);\r\n\t\t\t\t}\r\n\t\t\t\treturn compareFn(a, b);\r\n\t\t\t}\r\n\r\n\t\t\treturn compareFn(OrderPipe.getValue(a, expression), OrderPipe.getValue(b, expression));\r\n\t\t});\r\n\r\n\t\tif (reverse) {\r\n\t\t\treturn array.reverse();\r\n\t\t}\r\n\r\n\t\treturn array;\r\n\t}\r\n\r\n\t/**\r\n\t * Transform Object\r\n\t *\r\n\t * @param value\r\n\t * @param expression\r\n\t * @param reverse\r\n\t * @param isCaseInsensitive\r\n\t * @param comparator\r\n\t */\r\n\tprivate transformObject(value: any | any[], expression?: any, reverse?: boolean, isCaseInsensitive?: boolean, comparator?: Function): any {\r\n\r\n\t\tlet parsedExpression = OrderPipe.parseExpression(expression);\r\n\t\tlet lastPredicate = parsedExpression.pop();\r\n\t\tlet oldValue = OrderPipe.getValue(value, parsedExpression);\r\n\r\n\t\tif (!Array.isArray(oldValue)) {\r\n\t\t\tparsedExpression.push(lastPredicate);\r\n\t\t\tlastPredicate = null;\r\n\t\t\toldValue = OrderPipe.getValue(value, parsedExpression);\r\n\t\t}\r\n\r\n\t\tif (!oldValue) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tOrderPipe.setValue(value, this.transform(oldValue, lastPredicate, reverse, isCaseInsensitive), parsedExpression);\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Apply multiple expressions\r\n\t *\r\n\t * @param value\r\n\t * @param expressions\r\n\t * @param reverse\r\n\t * @param isCaseInsensitive\r\n\t * @param comparator\r\n\t */\r\n\tprivate multiExpressionTransform(value: any, expressions: any[], reverse: boolean, isCaseInsensitive: boolean = false, comparator?: Function): any {\r\n\t\treturn expressions.reverse().reduce((result: any, expression: any) => {\r\n\t\t\treturn this.transform(result, expression, reverse, isCaseInsensitive, comparator);\r\n\t\t}, value);\r\n\t}\r\n}","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { NgModel } from \"@angular/forms\";\r\n\r\n@Pipe({\r\n name: 'placeholder',\r\n /* Required to update the value when the promise is resolved */\r\n pure: false\r\n})\r\nexport class PlaceholderPipe implements PipeTransform {\r\n\r\n\t/**\r\n\t * Gets placeholder of an input\r\n\t * @param value \r\n\t * @param placeholderType \r\n\t */\r\n transform(model: NgModel): string {\r\n if (model && model.valueAccessor && (<any>model.valueAccessor)._elementRef && (<any>model.valueAccessor)._elementRef.nativeElement) {\r\n return (<any>model.valueAccessor)._elementRef.nativeElement.placeholder;\r\n }\r\n\r\n return '';\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n/**\r\n * Generated class for the SafeHtmlPipe pipe.\r\n */\r\n@Pipe({ name: 'safeHtml' })\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n\r\n /**\r\n * Constructor\r\n * @param sanitizer \r\n */\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n /**\r\n * Bypass security and trust the given value to be safe HTML.\r\n * @param html \r\n * @returns \r\n */\r\n transform(html) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'time' })\r\nexport class TimePipe implements PipeTransform {\r\n transform(time: any): string {\r\n if (typeof time !== 'string') {\r\n return '';\r\n }\r\n\r\n if (new RegExp('^\\\\d{2}:\\\\d{2}').test(time)) {\r\n return time.match(/^(\\d{2}):(\\d{2})/ig)[0]\r\n }\r\n\r\n return time;\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'titlecase', pure: false })\r\nexport class TitleCase implements PipeTransform {\r\n\ttransform(input: string, length: number): string {\r\n\t\treturn input.length > 0 ? input.replace(/\\w\\S*/g, (txt => txt[0].toUpperCase() + txt.substr(1).toLowerCase())) : '';\r\n\t}\r\n}","import { HttpParams } from '@angular/common/http';\r\nimport { Directive } from '@angular/core';\r\n\r\n//@dynamic\r\n@Directive()\r\nexport class Utils {\r\n\r\n /**\r\n * Month names\r\n */\r\n public static germanMonthNames: { name: string, id: number }[] = [\r\n { name: 'Januar', id: 1 },\r\n { name: 'Februar', id: 2 },\r\n { name: 'März', id: 3 },\r\n { name: 'April', id: 4 },\r\n { name: 'Mai', id: 5 },\r\n { name: 'Juni', id: 6 },\r\n { name: 'Juli', id: 7 },\r\n { name: 'August', id: 8 },\r\n { name: 'September', id: 9 },\r\n { name: 'Oktober', id: 10 },\r\n { name: 'November', id: 11 },\r\n { name: 'Dezember', id: 12 }\r\n ];\r\n\r\n /**\r\n * Creates a range\r\n * @param size \r\n * @param startAt \r\n */\r\n public static range(start: number, stop: number, step: number): ReadonlyArray<number> {\r\n return Array.from({ length: (stop - start) / step + 1 }, (_, i) => start + (i * step))\r\n }\r\n\r\n /**\r\n * Removes empty values from the specified object\r\n * @param obj \r\n */\r\n public static removeEmptyValues(obj: any): any {\r\n return Object.entries(obj)\r\n .filter(([_, v]) => v != null)\r\n .reduce((acc, [k, v]) => ({ ...acc, [k]: v }), {});\r\n }\r\n\r\n /**\r\n * Gets number of days left in the specified month\r\n * @param date \r\n * @param monthOffset \r\n */\r\n public static daysLeftInMonth(date: Date, monthOffset = 0): number {\r\n var time = new Date(date.getTime());\r\n time.setMonth(date.getMonth() + monthOffset);\r\n time.setDate(0);\r\n return Math.max(0, time.getDate() > date.getDate() ? time.getDate() - date.getDate() : 0);\r\n }\r\n\r\n /**\r\n * Gets the value of the specifed object and property\r\n * @param object \r\n * @param property \r\n * @returns \r\n */\r\n public static getPropertyValue(object: Object, property: string): any {\r\n /* Property not found */\r\n if (!object || typeof object === 'undefined' || !property) {\r\n return null;\r\n }\r\n\r\n /* Index of next property split */\r\n var index = property.indexOf('.')\r\n\r\n /* Property split found; recursive call */\r\n if (index > -1) {\r\n return this.getPropertyValue(object[property.substring(0, index)], property.substr(index + 1));\r\n }\r\n\r\n /* No split; get property */\r\n return object[property];\r\n }\r\n\r\n /**\r\n * Sorts an array of object by the specified property\r\n * @param array \r\n * @param property \r\n * @returns \r\n */\r\n public static sortArray<T>(array: T[], property: string, reverse?: boolean) {\r\n let sortDir = reverse === true ? -1 : 1;\r\n return array = (array?.sort((a: T, b: T) => (a[property] > b[property]) ? sortDir : ((b[property] > a[property]) ? (sortDir * -1) : 0)) || []);\r\n }\r\n\r\n /**\r\n * Truncates a text\r\n * @param text \r\n * @param length \r\n * @returns \r\n */\r\n public static truncateText(text: string, length: number): string {\r\n /* If text is not a string, return an empty string */\r\n if (typeof text !== 'string') {\r\n return '';\r\n }\r\n\r\n /* Remove html tags */\r\n text = text.replace(/<\\/?[^>]+(>|$)/g, \"\");\r\n\r\n /* Truncate the string */\r\n let truncatedText: string = text.substr(0, length);\r\n\r\n /* Add ellipsis to the text */\r\n if (text.length > length) {\r\n truncatedText = `${truncatedText.trim()}...`;\r\n }\r\n\r\n return truncatedText;\r\n }\r\n\r\n /**\r\n * Convert Object to HttpParams\r\n * \r\n * @param body\r\n */\r\n public static toHttpParams(body: any): HttpParams {\r\n if (!body) {\r\n return new HttpParams();\r\n }\r\n\r\n Object.keys(body).forEach((key) => (body[key] == null || body[key] == '' || body[key] == 'undefined') && body[key] != 0 && delete body[key]);\r\n return new HttpParams({ fromObject: body });\r\n }\r\n\r\n /**\r\n * Cleans the objects\r\n * Removes empty properties\r\n * @param obj \r\n */\r\n public static cleanObject(obj: any): any {\r\n try {\r\n for (var propName in obj) {\r\n if (obj[propName] === null || obj[propName] === undefined || obj[propName] === \"\") {\r\n delete obj[propName];\r\n }\r\n }\r\n } catch (error) { }\r\n\r\n return obj;\r\n }\r\n\r\n /**\r\n * Gets the query params and the hash from the specified url\r\n * @param url \r\n * @returns \r\n */\r\n public static getUrlParts(url: string): { url: string, params: Object, hash: string } {\r\n try {\r\n /* Get urls parts */\r\n var urlHashParts = url?.split('#') ?? [];\r\n\r\n /* Get hash */\r\n var urlHash = urlHashParts[1] ?? null;\r\n\r\n /* Get query parts */\r\n var urlQueryParts = urlHashParts[0]?.split('?');\r\n\r\n /* Get query params as object */\r\n var urlParams: Object = urlQueryParts[1]?.split(\"&\").reduce((prev, curr) => {\r\n var p = curr.split(\"=\");\r\n prev[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);\r\n return prev;\r\n }, {}) ?? null;\r\n\r\n return { url: urlQueryParts[0], params: urlParams, hash: urlHash };\r\n } catch (error) {\r\n return { url: url, params: null, hash: null };\r\n }\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { Utils } from '../functions/utils';\r\n\r\n@Pipe({ name: 'truncate' })\r\nexport class TruncatePipe implements PipeTransform {\r\n transform(text: any, length: number): string {\r\n return Utils.truncateText(text, length);\r\n }\r\n}","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'values', pure: false })\r\nexport class ValuesPipe implements PipeTransform {\r\n\ttransform(value: any, args: any[] = null): any {\r\n\t\treturn Object.keys(value).map(key => value[key]);\r\n\t}\r\n}","import { ChangeDetectorRef } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\ntype Constructor<T> = new (...args: any[]) => T;\r\n\r\nconst noop: any = () => {\r\n // empty method\r\n};\r\n\r\nexport interface IControlValueAccessor extends ControlValueAccessor {\r\n value: any;\r\n valueChanges: Observable<any>;\r\n onChange: (_: any) => any;\r\n onTouched: () => any;\r\n}\r\n\r\nexport interface IHasChangeDetectorRef {\r\n _changeDetectorRef: ChangeDetectorRef;\r\n}\r\n\r\n/** Mixin to augment a component with ngModel support. */\r\nexport function mixinControlValueAccessor<T extends Constructor<IHasChangeDetectorRef>>\r\n (base: T, initialValue?: any): Constructor<IControlValueAccessor> & T {\r\n return class extends base {\r\n private _value: any = initialValue instanceof Array ? Object.assign([], initialValue) : initialValue;\r\n private _subjectValueChanges: Subject<any>;\r\n valueChanges: Observable<any>;\r\n\r\n constructor(...args: any[]) {\r\n super(...args); \r\n this._subjectValueChanges = new Subject<any>();\r\n this.valueChanges = this._subjectValueChanges.asObservable();\r\n }\r\n\r\n set value(v: any) {\r\n if (v !== this._value) {\r\n this._value = v;\r\n this.onChange(v);\r\n this._changeDetectorRef.markForCheck();\r\n this._subjectValueChanges.next(v);\r\n }\r\n }\r\n get value(): any {\r\n return this._value;\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n onChange = (_: any) => noop;\r\n onTouched = () => noop;\r\n\r\n };\r\n}\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Constructor } from './constructor';\r\n\r\n/** Interface to implement when applying the disabled mixin */\r\nexport interface ICanDisable {\r\n\tdisabled: boolean;\r\n\tonDisabledChange(v: boolean): void;\r\n}\r\n\r\n/** Mixin to augment a component or directive with a `disabled` property. */\r\nexport function mixinDisabled<T extends Constructor<{}>>(base: T): Constructor<ICanDisable> & T {\r\n\treturn class extends base {\r\n\t\tprivate _disabled: boolean = false;\r\n\r\n\t\tconstructor(...args: any[]) {\r\n\t\t\tsuper(...args);\r\n\t\t}\r\n\r\n\t\tget disabled(): boolean {\r\n\t\t\treturn this._disabled;\r\n\t\t}\r\n\t\tset disabled(value: boolean) {\r\n\t\t\tlet newValue: boolean = coerceBooleanProperty(value);\r\n\t\t\tif (this._disabled !== newValue) {\r\n\t\t\t\tthis._disabled = newValue;\r\n\t\t\t\tthis.onDisabledChange(this._disabled);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tonDisabledChange(v: boolean): void {\r\n\t\t\t/** NOT IMPLEMENTED, this needs to be overriden by subclasses if needed */\r\n\t\t}\r\n\t};\r\n}","export const headerMetadataKey = Symbol('vdHeader');","export enum Salutation {\r\n\tUnknown,\r\n\tFemale,\r\n\tMale\r\n}","import { headerMetadataKey } from \"../constants/constants\";\r\n\r\n/**\r\n * Property decorator to add display name to a property\r\n * @param name \r\n * @returns \r\n */\r\nexport function Display(name: string): Function {\r\n return function (target: any, propertyKey: string) {\r\n Reflect.defineMetadata(headerMetadataKey, name, target, propertyKey);\r\n };\r\n}\r\n\r\n/**\r\n * Class decorator to add endpoint to an entity\r\n * @param endpoint \r\n * @returns \r\n */\r\nexport function Api(endpoint: string): Function {\r\n return function (target: Function) {\r\n target.prototype.endpoint = endpoint;\r\n };\r\n}","\r\n/**\r\n * Gets endpoint from classes decorated with @Api\r\n * @param origin \r\n * @returns \r\n */\r\nexport function getEndpoint(origin: object): string {\r\n return origin['endpoint'] as string;\r\n}","import { Directive } from \"@angular/core\";\r\n\r\n//@dynamic\r\n@Directive()\r\nexport abstract class AppStorage {\r\n\r\n /**\r\n * Gets storage key\r\n * @param key \r\n */\r\n public static getKey = (key: string) => `${key}`;\r\n\r\n /**\r\n * Sets a string from localStorage\r\n * @param key The key of the item to store\r\n * @param value The value to store\r\n */\r\n public static setString = (key: string, value: string) => localStorage.setItem(AppStorage.getKey(key), value);\r\n\r\n /**\r\n * Gets a string from localStorage\r\n * @param key The key of the item\r\n */\r\n public static getString = (key: string): string => localStorage.getItem(AppStorage.getKey(key));\r\n\r\n /**\r\n * Sets an object from localStorage\r\n * @param key The key of the item to store\r\n * @param value The value to store\r\n */\r\n public static setObject = (key: string, value: any) => {\r\n try {\r\n AppStorage.setString(key, JSON.stringify(value));\r\n } catch (error) {\r\n console.warn(error);\r\n }\r\n }\r\n\r\n /**\r\n * Gets an object from localStorage\r\n * @param key The key of the item\r\n */\r\n public static getObject = (key: string): any => {\r\n try {\r\n return JSON.parse(AppStorage.getString(key));\r\n } catch (error) {\r\n console.warn(error);\r\n return null;\r\n }\r\n }\r\n}","import { CommonModule } from '@angular/common';\r\nimport { Compiler, Component, ComponentRef, Injectable, NgModule, ViewContainerRef } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class DynamicBuilder {\r\n\r\n /**\r\n * Constructor\r\n * @param componentFactoryResolver \r\n */\r\n constructor(private compiler: Compiler) { }\r\n\r\n /**\r\n * Compiles the specified html\r\n * @param viewContainerRef \r\n * @param template \r\n * @param data \r\n */\r\n public compileHtml(viewContainerRef: ViewContainerRef, template: string, data?: any): ComponentRef<any> {\r\n\r\n /* Create a dynamic component */\r\n var component = Component({ template: template })(class { });\r\n\r\n /* Destroys all views in this container */\r\n viewContainerRef.clear();\r\n\r\n /* Compile the given NgModule and all of its components */\r\n const module = this.compiler.compileModuleAndAllComponentsSync(NgModule({\r\n declarations: [component],\r\n exports: [component],\r\n entryComponents: [component],\r\n imports: [CommonModule]\r\n })(class { }));\r\n\r\n /* Retrieve the factory object that creates a component of the given type */\r\n const componentFactory = module.componentFactories.find((comp) => comp.componentType === component);\r\n\r\n /* Instantiate a single component and inserts its host view into this container */\r\n const componentRef = viewContainerRef.createComponent(componentFactory);\r\n\r\n /* Add properties to the component */\r\n Object.assign(componentRef.instance, data);\r\n\r\n /* Check this view and its children */\r\n componentRef.changeDetectorRef.detectChanges();\r\n\r\n return componentRef;\r\n }\r\n}","export class ActionMenuItem {\r\n title: string;\r\n icon?: string = 'radio_button_unchecked';\r\n iconFontSet?: string = 'material-icons-outlined';\r\n iconClass?: string;\r\n event?: Function;\r\n hide?: Function;\r\n disable?: Function;\r\n subItems?: ActionMenuItem[];\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<ActionMenuItem>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable()\r\nexport class AppSetting {\r\n production: boolean;\r\n debug: boolean;\r\n apiUrl: string;\r\n frontendUrl: string;\r\n projectName: string;\r\n copyright: string;\r\n authUrl: string;\r\n spaUrl: string;\r\n postLoginRoute: string;\r\n authClientId: string;\r\n authResponseType: string;\r\n authScope: string;\r\n}","export enum TableColumnType {\r\n None,\r\n Checkbox,\r\n Text,\r\n TextInput,\r\n Number,\r\n Select,\r\n Enum,\r\n Toggle,\r\n Date,\r\n Action\r\n}","import { TableColumnType } from \"../enums/table-column-type\";\r\n\r\nexport class TableColumn {\r\n public name: string;\r\n public sortBy?: string;\r\n public index?: number;\r\n public header?: string;\r\n public filter?: string;\r\n public type?: TableColumnType;\r\n public enumType?: any;\r\n public enumPrefix?: string;\r\n public endpoint?: string;\r\n public filterOptionText?: string;\r\n public options?: { id: any, name: string }[];\r\n public onlyNumber?: boolean;\r\n public content?: Function;\r\n public contentLength?: number;\r\n public event?: Function | string;\r\n public inputType?: string;\r\n public filterInputNumber?: boolean;\r\n public filterOperator?: string;\r\n public patchIncludes?: string[];\r\n public eventArgs?: any;\r\n public disable?: Function;\r\n public shortDate?: boolean;\r\n public arrowBefore?: boolean;\r\n public disabled?: boolean;\r\n public rowMenuItems?: { title: string, event?: Function, hide?: Function }[];\r\n public showGtXs?: boolean;\r\n public showGtSm?: boolean;\r\n public showGtMd?: boolean;\r\n public showGtLg?: boolean;\r\n public showGtXl?: boolean;\r\n public showGtXxl?: boolean;\r\n public width?: number;\r\n public widthUnit?: string;\r\n public minWidth?: number;\r\n public minWidthUnit?: string;\r\n public maxWidth?: number;\r\n public maxWidthUnit?: string;\r\n public sticky?: boolean;\r\n public stickyEnd?: boolean;\r\n public hide?: Function;\r\n public hidden?: boolean;\r\n public cellNgClass?: Function;\r\n public tooltip?: Function;\r\n public tooltipClass?: string;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TableColumn>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { TableColumn } from \"./table-column\";\r\nimport { TableMenuItem } from \"./table-menu-item\";\r\n\r\nexport class TableDefinition {\r\n public endpoint: string;\r\n public includes?: string[];\r\n public showAction?: boolean = true;\r\n public selectable?: boolean = true;\r\n public addable?: boolean = true;\r\n public editable?: boolean = true;\r\n public deletable?: boolean = true;\r\n public downloadable?: boolean;\r\n public duplicable?: boolean;\r\n public columns?: TableColumn[] = [];\r\n public hideColumns?: string[];\r\n public rowNgClass?: Function;\r\n public rowClick?: Function;\r\n public detailsTemplate?: string;\r\n public actions?: TableMenuItem[] = [];\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TableDefinition>) {\r\n Object.assign(this, init);\r\n }\r\n}","import \"reflect-metadata\";\r\nimport { headerMetadataKey } from \"../../common/constants/constants\";\r\nimport { Utils } from \"../../common/functions/utils\";\r\nimport { TableColumnType } from \"../enums/table-column-type\";\r\nimport { TableColumn } from \"../models/table-column\";\r\nimport { TableDefinition } from \"../models/table-definition\";\r\n\r\nexport const tableMetadataKey = Symbol('vdTable');\r\nexport const columnMetadataKey = Symbol('vdTableColumn');\r\n\r\nlet indexes: any = {};\r\n\r\n/**\r\n * Class decorator to create a mat-table\r\n * @param args \r\n * @returns \r\n */\r\nexport function Table(tableDefinition?: Partial<TableDefinition>): Function {\r\n return function (target: Function) {\r\n if (Object.getOwnPropertyDescriptor(target.prototype, 'tableDefinition') == null) {\r\n target.prototype.tableDefinition = tableDefinition;\r\n } else {\r\n target.prototype.tableDefinition = Object.assign(target.prototype.tableDefinition || {}, tableDefinition);\r\n }\r\n\r\n /* Add action menus from table definition, if any */\r\n let pTableDefinition = (target.prototype.tableDefinition as TableDefinition);\r\n var actions = pTableDefinition.actions;\r\n if (actions?.length > 0 && pTableDefinition.columns?.length > 0) {\r\n var actionColmun = pTableDefinition.columns?.find(x => x.name == 'action');\r\n if (actionColmun != null) {\r\n actionColmun.rowMenuItems = actionColmun.rowMenuItems || [];\r\n actions.forEach(y => actionColmun.rowMenuItems.push(y));\r\n } else {\r\n pTableDefinition.columns.push(new TableColumn({\r\n index: 2000,\r\n name: 'action',\r\n type: TableColumnType.Action,\r\n disabled: true,\r\n rowMenuItems: actions\r\n }));\r\n }\r\n }\r\n\r\n /* Set endpoint */\r\n target.prototype.endpoint = pTableDefinition.endpoint || target.prototype.endpoint;\r\n };\r\n}\r\n\r\n/**\r\n * Property decorator to create table columns\r\n * @param args \r\n * @returns \r\n */\r\nexport function Column(args?: Partial<TableColumn>): Function {\r\n return function (target: any, propertyKey: string) {\r\n /* Init args */\r\n args = Object.assign(args || {}, new TableColumn());\r\n\r\n /* Get property name */\r\n var propertyName = args.name || propertyKey;\r\n\r\n /* Get property type */\r\n var propertyType: string = Reflect.getMetadata(\"design:type\", target, propertyKey)?.name;\r\n\r\n /* Init index */\r\n indexes[target.endpoint] = indexes[target.endpoint] || 0;\r\n\r\n /* Create table column */\r\n var tableColumn = new TableColumn(Object.assign(args, <TableColumn>{\r\n name: args.name || propertyKey,\r\n header: args.header || Reflect.getMetadata(headerMetadataKey, target, propertyKey) || propertyName,\r\n filter: args.filter || propertyKey,\r\n content: args.content ? args.content : (row: any) => {\r\n /* Get content using property name */\r\n var content = Utils.getPropertyValue(row, propertyName);\r\n\r\n /* Truncate the text if content length is specified */\r\n if (tableColumn.contentLength > 0) {\r\n return Utils.truncateText(content, tableColumn.contentLength);\r\n }\r\n\r\n return content;\r\n },\r\n index: args.index || (indexes[target.endpoint]++)\r\n }));\r\n\r\n /* Set type to enum, if enum type is specified */\r\n if (tableColumn.enumType) {\r\n tableColumn.type ||= TableColumnType.Enum;\r\n }\r\n\r\n /* Set type to 'Select' if endpoint is specified */\r\n else if (tableColumn.endpoint || tableColumn.options) {\r\n tableColumn.type ||= TableColumnType.Select;\r\n }\r\n\r\n /* Otherwiese, set type depending on property type */\r\n else {\r\n switch (propertyType.toLowerCase()) {\r\n case 'number':\r\n tableColumn.inputType ||= 'number';\r\n tableColumn.type ||= TableColumnType.Number;\r\n break;\r\n\r\n case 'date':\r\n tableColumn.inputType ||= 'date';\r\n tableColumn.type ||= TableColumnType.Date;\r\n tableColumn.maxWidth ||= 80;\r\n tableColumn.arrowBefore = tableColumn.arrowBefore !== undefined ? tableColumn.arrowBefore : true;\r\n if (!tableColumn.showGtXs && !tableColumn.showGtMd && !tableColumn.showGtLg && !tableColumn.showGtXl) {\r\n tableColumn.showGtSm = true;\r\n }\r\n break;\r\n\r\n case 'boolean':\r\n tableColumn.type ||= TableColumnType.Toggle;\r\n tableColumn.options ||= [{ id: false, name: $localize`:@@no:No` }, { id: true, name: $localize`:@@yes:Yes` }];\r\n tableColumn.maxWidth ||= 70;\r\n if (!tableColumn.showGtXs && !tableColumn.showGtMd && !tableColumn.showGtLg && !tableColumn.showGtXl) {\r\n tableColumn.showGtSm = true;\r\n }\r\n break;\r\n\r\n default:\r\n tableColumn.type ||= TableColumnType.Text;\r\n break;\r\n }\r\n }\r\n\r\n if (tableColumn.maxWidth) {\r\n tableColumn.width ||= tableColumn.maxWidth;\r\n }\r\n\r\n /* Gets the own property descriptor of the specified object */\r\n if (Object.getOwnPropertyDescriptor(target, 'tableDefinition') == null) {\r\n target.tableDefinition = new TableDefinition();\r\n }\r\n\r\n /* Add the column to the list */\r\n target.tableDefinition.columns.push(tableColumn);\r\n\r\n /* Sort the columns by index */\r\n Utils.sortArray(target.tableDefinition.columns, 'index');\r\n\r\n /* Since target is now specific to, append properties defined in parent */\r\n let parentTarget = Object.getPrototypeOf(target);\r\n\r\n /* Add parent columns */\r\n parentTarget?.tableDefinition?.columns?.forEach((column: TableColumn) => {\r\n if (target.tableDefinition.columns.find((x: TableColumn) => x.name.trim() == column.name.trim()) == null) {\r\n target.tableDefinition.columns.push(column);\r\n }\r\n });\r\n };\r\n}","export const CONTROLS_ERROR: string = \"controlsError\";\r\nexport const VALUE_CHANGED_SYNC: string = \"valueChangedSync\";\r\nexport const FUNCTION_STRING: string = \"function\";\r\nexport const OBJECT_STRING: string = \"object\";\r\nexport const RX_WEB_VALIDATOR: string = \"rxwebValidator\";\r\nexport const NUMBER: string = \"number\";\r\nexport const BOOLEAN: string = \"boolean\";\r\nexport const CUSTOM: string = \"custom\";\r\nexport const TEMPLATE_VALIDATION_CONFIG: string = \"template-validation-config\";\r\nexport const CONDITIONAL_VALIDATOR: string = \"conditionalValidator\"\r\nexport const VALIDATOR_CONFIG: string = \"validatorConfig\";\r\nexport const THIS: string = \"this\";\r\nexport const RXCODE: string = \"-rxw-\";\r\nexport const MODEL: string = \"model\";\r\nexport const MODEL_INSTANCE: string = \"modelInstance\";\r\nexport const PATCH: string = \"patch\";","export const KEYPRESS: string = \"onkeypress\";\r\nexport const ONCHANGE: string = \"onchange\";\r\nexport const ONCLICK: string = \"onclick\";\r\nexport const ONKEYUP: string = \"onkeyup\";\r\nexport const ONBLUR: string = \"onblur\";\r\nexport const ONFOCUS: string = \"onfocus\";\r\nexport const ELEMENT_VALUE: string = \"value\";\r\nexport const BLUR: string = \"blur\";\r\nexport const FOCUS: string = \"focus\";\r\nexport const CHANGE: string = \"change\";\r\nexport const KEY_DOWN: string = \"keydown\";\r\nexport const KEY_PRESS: string = \"keypress\";\r\nexport const PASTE: string = \"paste\";","export const INPUT: string = \"INPUT\";\r\nexport const SELECT: string = \"SELECT\";\r\nexport const CHECKBOX: string = \"checkbox\";\r\nexport const RADIO: string = \"radio\";\r\nexport const FILE: string = \"file\";\r\nexport const TEXTAREA: string = \"textarea\";","export const ValidationAlphabetLocale: { [key: string]: string } = {\r\n 'danish': 'danish',\r\n 'french': 'french',\r\n 'german': 'german',\r\n 'greek': 'greek',\r\n 'spanish': 'spanish',\r\n 'russian': 'russian'\r\n}","export const INVALID: string = \"INVALID\";\r\nexport const PROPERTY: string = \"property\";\r\nexport const OBJECT_PROPERTY: string = \"objectProperty\";\r\nexport const ARRAY_PROPERTY: string = \"arrayProperty\"\r\nexport const STRING: string = \"string\";\r\nexport const MESSAGE: string = \"message\";\r\nexport const BLANK: string = \"\";","export const DECORATORS:{[key:string]:string} = {\r\n disabled:'disabled',\r\n error: 'error',\r\n trim:'trim',\r\n ltrim:'ltrim',\r\n rtrim:'rtrim',\r\n blacklist:'blacklist',\r\n stripLow:'stripLow',\r\n toBoolean:'toBoolean',\r\n toDate:'toDate',\r\n toDouble:'toDouble',\r\n toFloat:'toFloat',\r\n toInt:'toInt',\r\n string:'toString',\r\n whitelist: 'whitelist',\r\n escape: 'escape',\r\n prefix: 'prefix',\r\n suffix: 'suffix',\r\n sanitize: 'sanitize',\r\n elementClass: 'elementClass',\r\n updateOn:'updateOn'\r\n}","import { THIS } from \"../const/app.const\";\r\nexport class Linq {\r\n static functionCreator(expression): any {\r\n var functionSetter: any = [];\r\n var match = expression.match(/^\\s*\\(?\\s*([^)]*)\\s*\\)?\\s*=>(.*)/);\r\n var splitSelect = match[2].split(\",\");\r\n for (var i = 0; i < splitSelect.length; i++) {\r\n var equalToOperator = splitSelect[i].match(/^\\s*\\(?\\s*([^)]*)\\s*\\)?\\s*|===|!==|==|!=|>=|>|<=|<|(.*)/);\r\n if (equalToOperator !== null) {\r\n functionSetter = new Function(match[1], \"return \" + equalToOperator.input);\r\n } else {\r\n equalToOperator = splitSelect[i].match(/^\\s*\\(?\\s*([^)]*)\\s*\\)?\\s*=(.*)/);\r\n if (equalToOperator === null) {\r\n functionSetter = new Function(match[1], \"return \" + splitSelect.input);\r\n } else {\r\n functionSetter = new Function(match[1], \"return \" + equalToOperator.input);\r\n }\r\n }\r\n }\r\n if (splitSelect.length == 0)\r\n functionSetter = { accessFunction: new Function(match[1], \"return \" + match[2]) };\r\n return functionSetter;\r\n }\r\n static execute(jObject: { [key: string]: any }, config: any, parentObject: { [key: string]: any }, modelInstance: { [key: string]: any }, isDynamicConfig: boolean): boolean {\r\n let expressionFunction: Function | string = isDynamicConfig ? config.dynamicConfig : config.conditionalExpression;\r\n let lastParam = isDynamicConfig ? config : modelInstance;\r\n if (parentObject && typeof expressionFunction == \"string\")\r\n expressionFunction = Linq.functionCreator(expressionFunction);\r\n if (parentObject && expressionFunction)\r\n return modelInstance && modelInstance.constructor !== Object ? (<Function>expressionFunction).call(modelInstance, parentObject, jObject, lastParam) : (<Function>expressionFunction)(parentObject, jObject, lastParam);\r\n return true;\r\n }\r\n\r\n private static getConditionPath(texts: string[]): string {\r\n let path = \"\";\r\n for (var i = 1; i < texts.length; i++)\r\n path += (texts.length - 1) == i ? texts[i].trim() : `${texts[i].trim()}.`\r\n return path;\r\n }\r\n\r\n private static expressionParser(expression: any, isNonValidationExpression: boolean) {\r\n let splitExpressions = [];\r\n let columns = [];\r\n let expressionString = expression.toString();\r\n let expressionArguments = Linq.extractArguments(expressionString);\r\n if (expressionArguments.length > 0) {\r\n let splitTexts = [];\r\n expressionString.replace(/\\s/g, '').replace(new RegExp(/{|}/, \"g\"), \"\").split(new RegExp(/return|===|!==|==|!=|>=|>|<=|<|&&/)).forEach(t => {\r\n let texts = t.replace(/\\(|\\)/g, \"\").split(\"||\");\r\n for (let text of texts)\r\n splitTexts.push(text);\r\n });\r\n splitTexts.forEach(t => {\r\n expressionArguments.forEach((x, i) => {\r\n t = t.trim();\r\n if (t.startsWith(x + '.')) {\r\n var splitText = t.split('.');\r\n if (splitText.length == 2 || (splitText.length >= 2 && isNonValidationExpression))\r\n if (!isNonValidationExpression)\r\n columns.push({ propName: splitText[1].trim(), argumentIndex: i == 3 ? 0 : i == 2 ? 1 : i == 1 ? -1 : i });\r\n else\r\n columns.push({ propName: this.getConditionPath(splitText), argumentIndex: i == 3 ? 0 : i == 2 ? 1 : i == 1 ? -1 : i });\r\n else {\r\n var arrayProp = splitText[1].split('[');\r\n let jObject = {\r\n propName: splitText[splitText.length - 1].trim(),\r\n objectPropName: arrayProp[0],\r\n arrayIndex: arrayProp.length > 1 ? arrayProp[1].replace(\"]\", \"\") : undefined,\r\n argumentIndex: i === 3 ? 0 : i === 2 ? 1 : i\r\n }\r\n columns.push(jObject);\r\n }\r\n }\r\n })\r\n })\r\n }\r\n return columns;\r\n }\r\n\r\n private static extractArguments(splitText: string): string[] {\r\n let expressionArguments: string[] = [THIS];\r\n if (splitText[0].trim() !== \"(\" && !splitText.trim().startsWith(\"function\")) {\r\n let text = splitText[0].split(\"=>\")[0];\r\n expressionArguments.push(text.trim().replace(\"(\", \"\").replace(\")\", \"\"))\r\n } else {\r\n let splitTexts = splitText.match(/\\(([^)]+)\\)/g);\r\n if (splitTexts && splitTexts[0])\r\n splitTexts[0].split(\",\").forEach(t => expressionArguments.push(t.trim().replace(\"(\", \"\").replace(\")\", \"\")));\r\n }\r\n return expressionArguments;\r\n }\r\n\r\n static expressionColumns(expression: any, isNonValidationExpression: boolean = false) {\r\n var columns = [];\r\n let splitExpressions = [];\r\n if (typeof expression == \"string\") {\r\n expression.split(\"=>\")[1].split(\" && \").forEach(t => {\r\n t.split(\" || \").forEach(x => {\r\n splitExpressions.push(x.trim().split(' ')[0])\r\n })\r\n });\r\n splitExpressions.forEach(t => {\r\n var splitText = t.split('.');\r\n if (splitText.length == 2)\r\n columns.push({ propName: splitText[1].trim() });\r\n else {\r\n var arrayProp = splitText[1].split('[');\r\n let jObject = {\r\n propName: splitText[splitText.length - 1].trim(),\r\n objectPropName: arrayProp[0],\r\n arrayIndex: arrayProp.length > 1 ? arrayProp[1].replace(\"]\", \"\") : undefined\r\n }\r\n columns.push(jObject);\r\n }\r\n })\r\n }\r\n else {\r\n columns = Linq.expressionParser(expression, isNonValidationExpression);\r\n }\r\n return columns;\r\n }\r\n\r\n static dynamicConfigParser(expression: Function, propName: string): any[] {\r\n let controlNames = [];\r\n let expressionString = expression.toString();\r\n let expressionArguments = Linq.extractArguments(expressionString);\r\n let splitString: string[] = expressionString.replace(new RegExp(/\\r?\\n|\\r|;/g), ' ').replace(/[\"%()\\{}=\\\\?�`'#<>|,;:+-]+/g, \" \").split(/ /g);\r\n if (expressionArguments.length > 3)\r\n expressionArguments.splice(expressionArguments.length - 1, 1)\r\n expressionArguments.forEach(t => {\r\n splitString.filter(x => x != `${t}.${propName}` && x.startsWith(`${t}.`)).forEach(x => {\r\n let split = x.split('.');\r\n if (split.length == 2)\r\n controlNames.push({ propName: x.replace(`${t}.`, '') })\r\n else {\r\n var arrayProp = split[1].split('[');\r\n let jObject = {\r\n propName: split[split.length - 1].trim(),\r\n objectPropName: arrayProp[0],\r\n arrayIndex: arrayProp.length > 1 ? arrayProp[1].replace(\"]\", \"\") : undefined,\r\n }\r\n controlNames.push(jObject);\r\n }\r\n });\r\n });\r\n return controlNames;\r\n }\r\n}\r\n","export const AnnotationTypes: { [key: string]: string } = {\r\n\tnumeric: 'numeric',\r\n\trequired: 'required',\r\n\tminLength: 'minLength',\r\n\tmaxLength: 'maxLength',\r\n\tminNumber: 'minNumber',\r\n\tmaxNumber: 'maxNumber',\r\n\tpattern: 'pattern',\r\n\tpassword: 'password',\r\n\tcompare: 'compare',\r\n\tminDate: 'minDate',\r\n\tmaxDate: 'maxDate',\r\n\talpha: 'alpha',\r\n\talphaNumeric: 'alphaNumeric',\r\n\temail: 'email',\r\n\thexColor: 'hexColor',\r\n\tlowerCase: 'lowerCase',\r\n\turl: 'url',\r\n\tupperCase: 'upperCase',\r\n\tnested: 'nested',\r\n\tpropArray: 'propArray',\r\n\tpropObject: 'propObject',\r\n\tcontains: 'contains',\r\n\trange: 'range',\r\n\tcustom: 'custom',\r\n\tdigit: \"digit\",\r\n\tcreditCard: \"creditCard\",\r\n\ttime: \"time\",\r\n\tjson: \"json\",\r\n\tgreaterThan: \"greaterThan\",\r\n\tgreaterThanEqualTo: \"greaterThanEqualTo\",\r\n\tlessThan: \"lessThan\",\r\n\tlessThanEqualTo: \"lessThanEqualTo\",\r\n\tchoice: \"choice\",\r\n\tdifferent: \"different\",\r\n\teven: \"even\",\r\n\todd: \"odd\",\r\n\tfactor: \"factor\",\r\n\tleapYear: \"leapYear\",\r\n\tallOf: \"allOf\",\r\n\toneOf: \"oneOf\",\r\n\tnoneOf: \"noneOf\",\r\n\tmac: \"mac\",\r\n\tascii: \"ascii\",\r\n\tdataUri: \"dataUri\",\r\n\tport: \"port\",\r\n\tlatLong: \"latLong\",\r\n\textension: \"extension\",\r\n\tfileSize: \"fileSize\",\r\n\tendsWith: \"endsWith\",\r\n\tstartsWith: \"startsWith\",\r\n\tprimeNumber: \"primeNumber\",\r\n\tlatitude: \"latitude\",\r\n\tlongitude: \"longitude\",\r\n\tcompose: \"compose\",\r\n\trule: \"rule\",\r\n\tfile: \"file\",\r\n\timage: \"image\",\r\n\tunique: \"unique\",\r\n\tnotEmpty: \"notEmpty\",\r\n\tip: \"ip\",\r\n\tcusip: \"cusip\",\r\n\tgrid: \"grid\",\r\n\tdate: 'date',\r\n\tand: 'and',\r\n\tor: 'or',\r\n\tnot: 'not',\r\n\tminTime: 'minTime',\r\n\tmaxTime: 'maxTime',\r\n\trequiredTrue: 'requiredTrue',\r\n\tmask: 'mask',\r\n\tiban: 'iban'\r\n}\r\n","import { ARRAY_PROPERTY, OBJECT_PROPERTY, PROPERTY, RXCODE } from \"../const\";\r\nimport { DECORATORS } from \"../const/decorators.const\";\r\nimport { PropsConfig } from \"../models/config/props-config\";\r\nimport { Linq } from \"../util/linq\";\r\nimport { DecoratorConfiguration, InstanceContainer, PropertyInfo } from './validator.interface';\r\nimport { AnnotationTypes } from \"./validator.static\";\r\n\r\nexport const defaultContainer: {\r\n get<T>(instanceFunc: any): InstanceContainer,\r\n addAnnotation(instanceFunc: any, decoratorConfiguration: DecoratorConfiguration): void,\r\n addInstanceContainer(instanceFunc: any): void,\r\n addProperty(instanceFunc: any, propertyInfo: PropertyInfo): void,\r\n addChangeValidation(instance: InstanceContainer, propertyName: string, columns: any[]): void,\r\n init(target: any, parameterIndex: any, propertyKey: string, annotationType: string, config: any, isAsync: boolean): void,\r\n initPropertyObject(name: string, propertyType: string, entity: any, target: any, config?: any): void,\r\n modelIncrementCount: number,\r\n clearInstance(instance: any): void,\r\n setConditionalValueProp(instance: InstanceContainer, propName: string, refPropName: string): void,\r\n addDecoratorConfig(target: any, parameterIndex: any, propertyKey: string, config: any, decoratorType: string): void,\r\n setLogicalConditional(instance: any, annotationType: string, fieldName: string, propertyName: string): void,\r\n addSanitizer(target: any, parameterIndex: any, propertyKey: string, decoratorType: string, value?: any): void,\r\n addPropsConfig(target: any, configs: PropsConfig[]): void,\r\n isExperimental: boolean;\r\n} = new (class {\r\n isExperimental: boolean;\r\n private instances: InstanceContainer[] = [];\r\n modelIncrementCount: number = 0;\r\n get<T>(instanceFunc: any): InstanceContainer {\r\n let instance: InstanceContainer = this.instances.filter(instance => instance.instance === instanceFunc)[0];\r\n return instance;\r\n }\r\n\r\n getInstance(target: any, parameterIndex: any, propertyKey: string, decoratorType: string) {\r\n let isPropertyKey = (propertyKey != undefined);\r\n let instanceFunc = !isPropertyKey ? target : target.constructor\r\n let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];\r\n if (!instance)\r\n instance = this.addInstanceContainer(instanceFunc);\r\n return instance;\r\n }\r\n addPropsConfig(target: any, configs: PropsConfig[]) {\r\n let instanceContainer = this.instances.filter(instance => instance.instance == target)[0];\r\n if (instanceContainer) {\r\n for (let config of configs) {\r\n for (let prop of config.propNames) {\r\n let propertyInfo = instanceContainer.properties.filter(t => t.name == prop && (t.propertyType !== OBJECT_PROPERTY && t.propertyType !== ARRAY_PROPERTY))[0];\r\n if (propertyInfo) {\r\n this.addPropConfig(target, [propertyInfo], config)\r\n } else\r\n if (prop === \":all:\")\r\n this.addPropConfig(target, instanceContainer.properties.filter(t => t.propertyType !== OBJECT_PROPERTY && t.propertyType !== ARRAY_PROPERTY), config);\r\n }\r\n }\r\n } else if (configs === undefined)\r\n this.addInstanceContainer(target);\r\n\r\n }\r\n addPropConfig(target: any, properties: PropertyInfo[], config: PropsConfig) {\r\n for (var propertyInfo of properties) {\r\n let excludeProp: boolean = false;\r\n if (config.excludePropNames)\r\n excludeProp = config.excludePropNames.filter(t => t == propertyInfo.name)[0] !== undefined;\r\n if (!excludeProp) {\r\n if (config.validationConfig)\r\n for (let typeName in config.validationConfig) {\r\n this.init({ constructor: target }, 0, propertyInfo.name, typeName, config.validationConfig[typeName] === true ? undefined : config.validationConfig[typeName], false);\r\n }\r\n if (config.error)\r\n this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.error, DECORATORS.error)\r\n if (config.disable)\r\n this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.disable, DECORATORS.disabled)\r\n if (config.elementClass)\r\n this.addDecoratorConfig({ constructor: target }, 0, propertyInfo.name, config.elementClass, DECORATORS.elementClass)\r\n if (config.ignore)\r\n propertyInfo.ignore = config.ignore\r\n }\r\n }\r\n }\r\n addSanitizer(target: any, parameterIndex: any, propertyKey: string, decoratorType: string, value?: any) {\r\n let instance = this.getInstance(target, parameterIndex, propertyKey, decoratorType);\r\n if (instance) {\r\n if (!instance.sanitizers[propertyKey])\r\n instance.sanitizers[propertyKey] = [];\r\n instance.sanitizers[propertyKey].push({ name: decoratorType, config: value });\r\n }\r\n }\r\n\r\n addDecoratorConfig(target: any, parameterIndex: any, propertyKey: string, config: any, decoratorType: string): void {\r\n let isPropertyKey = (propertyKey != undefined);\r\n let instanceFunc = !isPropertyKey ? target : target.constructor\r\n let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];\r\n if (!instance)\r\n instance = this.addInstanceContainer(instanceFunc);\r\n instance.nonValidationDecorators[decoratorType].conditionalExpressions[propertyKey] = config.conditionalExpression;\r\n let columns = Linq.expressionColumns(config.conditionalExpression, true);\r\n columns.forEach(column => {\r\n if (column.argumentIndex !== -1) {\r\n let columnName = (!column.objectPropName) ? `${column.propName}${RXCODE}${column.argumentIndex}` : `${column.objectPropName}.${column.propName}${RXCODE}${column.argumentIndex}`;\r\n if (!instance.nonValidationDecorators[decoratorType].changeDetection[columnName])\r\n instance.nonValidationDecorators[decoratorType].changeDetection[columnName] = [];\r\n let disabledColumns = instance.nonValidationDecorators[decoratorType].changeDetection[columnName];\r\n if (disabledColumns.indexOf(columnName) === -1)\r\n disabledColumns.push(propertyKey);\r\n } else {\r\n if (!instance.nonValidationDecorators[decoratorType].controlProp[propertyKey])\r\n instance.nonValidationDecorators[decoratorType].controlProp[propertyKey] = {};\r\n instance.nonValidationDecorators[decoratorType].controlProp[propertyKey][column.propName.replace(\";\", \"\")] = true;\r\n }\r\n })\r\n }\r\n\r\n\r\n init(target: any, parameterIndex: any, propertyKey: string, annotationType: string, config: any, isAsync: boolean): void {\r\n var decoratorConfiguration: DecoratorConfiguration = {\r\n propertyIndex: parameterIndex,\r\n propertyName: propertyKey,\r\n annotationType: annotationType,\r\n config: config,\r\n isAsync: isAsync\r\n }\r\n let isPropertyKey = (propertyKey != undefined);\r\n this.addAnnotation(!isPropertyKey ? target : target.constructor, decoratorConfiguration);\r\n }\r\n\r\n initPropertyObject(name: string, propertyType: string, entity: any, target: any, config?: any) {\r\n var propertyInfo: PropertyInfo = {\r\n name: name,\r\n propertyType: propertyType,\r\n entity: entity,\r\n dataPropertyName: config ? config.name : undefined,\r\n entityProvider: config ? config.entityProvider : undefined\r\n }\r\n defaultContainer.addProperty(target.constructor, propertyInfo);\r\n }\r\n\r\n addInstanceContainer(instanceFunc: any): InstanceContainer {\r\n let instanceContainer: InstanceContainer = {\r\n instance: instanceFunc,\r\n propertyAnnotations: [],\r\n properties: [],\r\n nonValidationDecorators: {\r\n disabled: {\r\n conditionalExpressions: {},\r\n changeDetection: {},\r\n controlProp: {}\r\n }, error: {\r\n conditionalExpressions: {},\r\n changeDetection: {},\r\n controlProp: {}\r\n }, elementClass: {\r\n conditionalExpressions: {},\r\n changeDetection: {},\r\n controlProp: {}\r\n }\r\n },\r\n sanitizers: {}\r\n }\r\n this.instances.push(instanceContainer);\r\n return instanceContainer;\r\n }\r\n\r\n\r\n addProperty(instanceFunc: any, propertyInfo: PropertyInfo, isFromAnnotation: boolean = false): void {\r\n let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];\r\n if (instance) {\r\n this.addPropertyInfo(instance, propertyInfo, !isFromAnnotation);\r\n }\r\n else {\r\n instance = this.addInstanceContainer(instanceFunc);\r\n this.addPropertyInfo(instance, propertyInfo);\r\n }\r\n }\r\n\r\n addPropertyInfo(instance: InstanceContainer, propertyInfo: PropertyInfo, isAddProperty: boolean = false) {\r\n var property = this.getProperty(instance, propertyInfo);\r\n if (!property)\r\n instance.properties.push(propertyInfo);\r\n else if (isAddProperty)\r\n this.updateProperty(property, propertyInfo);\r\n }\r\n\r\n addAnnotation(instanceFunc: any, decoratorConfiguration: DecoratorConfiguration): void {\r\n this.addProperty(instanceFunc, { propertyType: PROPERTY, name: decoratorConfiguration.propertyName }, true);\r\n let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];\r\n if (instance)\r\n instance.propertyAnnotations.push(decoratorConfiguration);\r\n else {\r\n instance = this.addInstanceContainer(instanceFunc);\r\n instance.propertyAnnotations.push(decoratorConfiguration);\r\n }\r\n if (decoratorConfiguration.config && decoratorConfiguration.config.conditionalExpression) {\r\n let columns = Linq.expressionColumns(decoratorConfiguration.config.conditionalExpression);\r\n this.addChangeValidation(instance, decoratorConfiguration.propertyName, columns);\r\n }\r\n if (decoratorConfiguration.config && decoratorConfiguration.config.dynamicConfig) {\r\n let columns = Linq.dynamicConfigParser(decoratorConfiguration.config.dynamicConfig, decoratorConfiguration.propertyName);\r\n this.addChangeValidation(instance, decoratorConfiguration.propertyName, columns);\r\n }\r\n this.setConditionalColumns(instance, decoratorConfiguration);\r\n }\r\n\r\n setConditionalColumns(instance: any, decoratorConfiguration: DecoratorConfiguration) {\r\n if (instance && decoratorConfiguration.config) {\r\n if (decoratorConfiguration.annotationType == AnnotationTypes.and || decoratorConfiguration.annotationType == AnnotationTypes.or || decoratorConfiguration.annotationType == AnnotationTypes.not) {\r\n Object.keys(decoratorConfiguration.config.validation).forEach(t => {\r\n if (typeof decoratorConfiguration.config.validation[t] !== \"boolean\")\r\n this.setLogicalConditional(instance, t, decoratorConfiguration.config.validation[t].fieldName, decoratorConfiguration.propertyName)\r\n })\r\n } else\r\n this.setLogicalConditional(instance, decoratorConfiguration.annotationType, decoratorConfiguration.config.fieldName, decoratorConfiguration.propertyName);\r\n }\r\n }\r\n\r\n setLogicalConditional(instance: any, annotationType: string, fieldName: string, propertyName: string) {\r\n if (instance && ((annotationType == AnnotationTypes.compare || annotationType == AnnotationTypes.greaterThan || annotationType == AnnotationTypes.greaterThanEqualTo || annotationType == AnnotationTypes.lessThan || annotationType == AnnotationTypes.lessThanEqualTo || annotationType == AnnotationTypes.different || annotationType == AnnotationTypes.factor || annotationType == AnnotationTypes.minTime || annotationType == AnnotationTypes.maxTime) || (annotationType == AnnotationTypes.creditCard && fieldName) || ((annotationType == AnnotationTypes.minDate || annotationType == AnnotationTypes.maxDate) && fieldName))) {\r\n this.setConditionalValueProp(instance, fieldName, propertyName)\r\n }\r\n }\r\n setConditionalValueProp(instance: InstanceContainer, propName: string, refPropName: string) {\r\n if (propName) {\r\n let splitProps = propName.split ? propName.split('.') : '';\r\n if (splitProps.length < 2) {\r\n if (!instance.conditionalValidationProps)\r\n instance.conditionalValidationProps = {};\r\n if (!instance.conditionalValidationProps[propName])\r\n instance.conditionalValidationProps[propName] = [];\r\n if (instance.conditionalValidationProps[propName].indexOf(refPropName) == -1)\r\n instance.conditionalValidationProps[propName].push(refPropName);\r\n } else\r\n this.addChangeValidation(instance, refPropName, [{ argumentIndex: 1, objectPropName: splitProps[0], propName: splitProps[1], referencePropName: refPropName }])\r\n }\r\n }\r\n addChangeValidation(instance: InstanceContainer, propertyName: string, columns: any[]): void {\r\n if (instance) {\r\n if (!instance.conditionalValidationProps)\r\n instance.conditionalValidationProps = {};\r\n\r\n columns.forEach(t => {\r\n if (t.propName && !t.objectPropName) {\r\n if (!instance.conditionalValidationProps[t.propName])\r\n instance.conditionalValidationProps[t.propName] = [];\r\n if (instance.conditionalValidationProps[t.propName].indexOf(propertyName) == -1)\r\n instance.conditionalValidationProps[t.propName].push(propertyName);\r\n } else {\r\n if (t.propName && t.objectPropName) {\r\n if (!instance.conditionalObjectProps)\r\n instance.conditionalObjectProps = [];\r\n t.referencePropName = propertyName;\r\n instance.conditionalObjectProps.push(t);\r\n }\r\n }\r\n })\r\n }\r\n }\r\n\r\n clearInstance(instanceFunc: any) {\r\n let instance = this.instances.filter(instance => instance.instance === instanceFunc)[0];\r\n if (instance) {\r\n let indexOf = this.instances.indexOf(instance);\r\n this.instances.splice(indexOf, 1);\r\n }\r\n }\r\n\r\n getProperty(instance: InstanceContainer, propertyInfo: PropertyInfo) {\r\n return instance.properties.filter(t => t.name == propertyInfo.name)[0]\r\n }\r\n\r\n updateProperty(property: PropertyInfo, currentProperty: PropertyInfo) {\r\n property.dataPropertyName = currentProperty.dataPropertyName;\r\n property.defaultValue = currentProperty.defaultValue;\r\n }\r\n})();\r\n","import { PROPERTY } from \"../const\";\r\nimport { defaultContainer } from '../core/defaultContainer';\r\nimport { PropertyInfo } from '../core/validator.interface';\r\nimport { PropConfig } from \"../models/config/prop-config\";\r\nexport function prop(config?: PropConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n var propertyInfo: PropertyInfo = {\r\n name: propertyKey,\r\n propertyType: PROPERTY,\r\n dataPropertyName: config ? config.name : undefined,\r\n defaultValue: config ? config.defaultValue : undefined,\r\n ignore: config ? config.ignore : undefined,\r\n isPrimaryKey: config ? config.isPrimaryKey : undefined\r\n }\r\n defaultContainer.addProperty(target.constructor, propertyInfo);\r\n }\r\n}\r\n","import { prop } from \"../../form-validators/decorators/prop.decorator\";\r\nimport { Column } from \"../../table/functions/decorators\";\r\nimport { IEntity } from \"./entity\";\r\n\r\nexport abstract class BaseEntity implements IEntity {\r\n @Column({ index: 1100, header: $localize`:@@id:ID`, arrowBefore: true })\r\n @prop()\r\n id: number;\r\n version: number;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<BaseEntity>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { Column } from \"../../table/functions/decorators\";\r\nimport { BaseEntity } from \"./base-entity\";\r\n\r\nexport abstract class AuditEntity extends BaseEntity {\r\n createdBy: string;\r\n @Column({ index: 1000, header: $localize`:@@createdDate:Created date`, arrowBefore: true, showGtSm: true })\r\n createdDate: Date;\r\n updatedBy: string;\r\n updatedDate: Date;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<AuditEntity>) {\r\n super(init);\r\n Object.assign(this, init);\r\n }\r\n}","export class AuditUser {\r\n\tdisplayName: string;\r\n\temail: string;\r\n\tletter: string;\r\n}","export class KeyValue {\r\n\tkey: string;\r\n\tvalue: any;\r\n}","export enum SaveAction {\r\n\tSaveAndClose,\r\n\tSaveAndNew,\r\n\tSaveAndEdit\r\n}","import { InjectionToken, Injector, StaticProvider, Type } from \"@angular/core\";\r\n\r\n//@dynamic\r\nexport class ServiceLocator {\r\n\tstatic injector: Injector;\r\n\r\n\t/**\r\n\t * Retrieves an instance from the injector based on the provided token.\r\n\t * If not found:\r\n\t * - Throws {@link NoProviderError} if no `notFoundValue` that is not equal to\r\n\t * Injector.THROW_IF_NOT_FOUND is given\r\n\t * - Returns the `notFoundValue` otherwise\r\n\t */\r\n\tstatic getService<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T {\r\n\t\treturn ServiceLocator.injector.get(token);\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new injector instance that provides one or more dependencies,\r\n\t * according to a given type or types of `StaticProvider`.\r\n\t *\r\n\t * @param providers: An array of providers of the [StaticProvider type](api/core/StaticProvider).\r\n\t */\r\n\tstatic create(providers: StaticProvider[]): void {\r\n\t\tServiceLocator.injector = Injector.create({ providers: providers, parent: ServiceLocator.injector });\r\n\t}\r\n}","import { HttpClient, HttpErrorResponse, HttpEvent, HttpEventType, HttpHeaders, HttpRequest } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\nimport { Utils } from '../../common/functions/utils';\r\nimport { ServiceLocator } from '../../common/services/service-locator';\r\n\r\nexport class GenericService<T extends any> {\r\n\r\n\t/**\r\n\t * Http client\r\n\t */\r\n\tpublic http: HttpClient;\r\n\r\n\t/**\r\n\t * List of entities\r\n\t */\r\n\tpublic list: BehaviorSubject<any[]> = new BehaviorSubject(null);\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * \r\n\t * @param http \r\n\t */\r\n\tconstructor(public endpoint?: string) {\r\n\t\tthis.http = ServiceLocator.getService(HttpClient);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a single entity\r\n\t * \r\n\t * @param id The id of the entity or relative path\r\n\t * @param params Adds query params to the request\r\n\t * @param headers Adds headers to the request\r\n\t */\r\n\tpublic get<T>(id: string | number, params?: Object, headers?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http\r\n\t\t\t.get<T>(`${this.endpoint}/${id}`, { params: Utils.toHttpParams(params), headers: this.toHttpHeaders(headers) });\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('get')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Counts entities\r\n\t * \r\n\t * @param params Adds query params to the request\r\n\t * @param path A relative path to the action\r\n\t * @param headers Adds headers to the request\t \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic count(params?: Object, path?: string, headers?: Object, handleError: boolean = true): Observable<number> {\r\n\t\tlet request = this.http\r\n\t\t\t.get<any>(`${this.endpoint}${path ? path : '/count'}`, { params: Utils.toHttpParams(params), headers: this.toHttpHeaders(headers) });\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<any>('count')));\r\n\t\t}\r\n\r\n\t\treturn request.pipe(map(x => { return <number>x.value }));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets a list of entities\r\n\t * \r\n\t * @param params Adds query params to the request\r\n\t * @param headers Adds headers to the request\r\n\t * @param path A relative path to the action\r\n\t */\r\n\tpublic getList(params?: Object, path?: string, headers?: Object): Observable<any> {\r\n\t\treturn this.http\r\n\t\t\t.get(`${this.endpoint}${path ? path : ''}`, { params: Utils.toHttpParams(params), headers: this.toHttpHeaders(headers) })\r\n\t\t\t.pipe(catchError(this.handleError<T>('getList')));\r\n\t}\r\n\r\n\t/**\r\n\t * Loads data\r\n\t * @param params Adds query params to the request\r\n\t * @param path A relative path to the action\r\n\t * @param headers Adds headers to the request\r\n\t */\r\n\tpublic loadList(params?: Object, path?: string, headers?: Object): void {\r\n\t\tthis.getList(params, path, headers)\r\n\t\t\t.subscribe(x => this.list.next(x));\r\n\t}\r\n\r\n\t/**\r\n\t * Gets result list as Observable\r\n\t */\r\n\tpublic getListAsObservable(): Observable<any> {\r\n\t\treturn this.list.asObservable();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates an entity\r\n\t * \r\n\t * @param entity The entity to create\r\n\t * @param path A relative path to the action\r\n\t * @param httpOptions Additional http options, like headers and so on \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic create<T>(entity: any, path?: string, httpOptions?: Object, handleError: boolean = true): Observable<T> {\r\n\t\tlet request = this.http\r\n\t\t\t.post<T>(`${this.endpoint}${path ? path : ''}`, entity, httpOptions);\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('create')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates an entity\r\n\t * \r\n\t * @param entity The entity to update\r\n\t * @param path A relative path to the action\r\n\t * @param httpOptions Additional http options, like headers and so on \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic update(id: string | number, entity: any, path?: string, httpOptions?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http\r\n\t\t\t.put<T>(`${this.endpoint}${path ? path : ''}/${id}`, entity, httpOptions);\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('update')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Patches an entity\r\n\t * \r\n\t * @param id id The id of the item to patch\r\n\t * @param body The body\r\n\t * @param path A relative path to the action\r\n\t * @param httpOptions Additional http options, like headers and so on \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic patch(id: string | number, body: any, path?: string, httpOptions?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http\r\n\t\t\t.patch<T>(`${this.endpoint}${path ? path : ''}/${id}`, body, httpOptions);\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('patch')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Patches multiple entities\r\n\t * \r\n\t * @param ids The ids of the items to patch\r\n\t * @param body The body\r\n\t * @param path A relative path to the action\r\n\t * @param httpOptions Additional http options, like headers and so on \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic patchList(ids: string[] | number[], body: any, path?: string, httpOptions?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http\r\n\t\t\t.patch<T>(`${this.endpoint}${path ? path : ''}`, body, Object.assign(httpOptions || {}, { params: Utils.toHttpParams({ ids: ids }) }));\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('patch')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an entity.\r\n\t * \r\n\t * @param id The id of the item to delete\r\n\t * @param path A relative path to the action\r\n\t * @param httpOptions Additional http options, like headers and so on \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic delete(id: string | number, path?: string, httpOptions?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http\r\n\t\t\t.delete(`${this.endpoint}${path ? path : ''}/${id}`, httpOptions);\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('delete')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes multiple entities.\r\n\t * \r\n\t * @param ids The ids of the items to delete\r\n\t * @param path A relative path to the action\r\n\t * @param httpOptions Additional http options, like headers and so on \r\n\t * @param handleError Handle errors\r\n\t */\r\n\tpublic deleteList(ids: string[] | number[], path?: string, httpOptions?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http.delete(`${this.endpoint}${path ? path : ''}`, Object.assign(httpOptions || {}, { params: Utils.toHttpParams({ ids: ids }) }));\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe(catchError(this.handleError<T>('deleteList')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a file\r\n\t * \r\n\t * @param path A relative path to the action\r\n\t * @param params Some query params\r\n\t */\r\n\tpublic download(path: string, params?: Object, handleError: boolean = true): Observable<any> {\r\n\t\tlet request = this.http\r\n\t\t\t.get(`${this.endpoint}/${path ? path : 'download'}`, { params: Utils.toHttpParams(params), responseType: 'arraybuffer', observe: 'response' })\r\n\t\t\t.pipe(map(x => { return { data: x.body, filename: this.getFileNameFromHeaders(x.headers) } }));\r\n\r\n\t\t/* Handle error */\r\n\t\tif (handleError) {\r\n\t\t\trequest = request.pipe<any>(catchError(this.handleError<T>('download')));\r\n\t\t}\r\n\r\n\t\treturn request;\r\n\t}\r\n\r\n\t/**\r\n\t * Duplicates a record\r\n\t * @param id \r\n\t */\r\n\tpublic duplicate(id: number): Observable<any> {\r\n\t\treturn this.create(null, `/duplicate/${id}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads a file\r\n\t * \r\n\t * @param file The file to upload\r\n\t * @param path A relative path to the action\r\n\t */\r\n\tpublic upload(file: File, path: string = 'upload', extraData?: object): Observable<any> {\r\n\t\t/* Creates form data object */\r\n\t\tconst formData: FormData = new FormData();\r\n\r\n\t\t/* Add the file to the form data */\r\n\t\tformData.append('file', file, file.name);\r\n\r\n\t\t/* Iterate and set other form data */\r\n\t\tif (extraData) {\r\n\t\t\tfor (let key in extraData) {\r\n\t\t\t\tformData.append(key, extraData[key])\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Set true to reportProgress to enable tracking of progress events */\r\n\t\tconst req = new HttpRequest('POST', `${this.endpoint}/${path ? path : 'upload'}`, formData, {\r\n\t\t\treportProgress: true\r\n\t\t});\r\n\r\n\t\t/*\r\n\t\tThe `HttpClient.request` API produces a raw event stream\r\n\t\twhich includes start (sent), progress, and response events.\r\n\t\t*/\r\n\t\treturn this.http.request(req);\r\n\t};\r\n\r\n\t///#region Helpers\r\n\r\n\t/**\r\n\t * Convert Object to FromData\r\n\t * \r\n\t * @param body\r\n\t */\r\n\tprotected toFormData(body: Object): FormData {\r\n\t\tif (!body) {\r\n\t\t\treturn new FormData();\r\n\t\t}\r\n\r\n\t\treturn Object.getOwnPropertyNames(body)\r\n\t\t\t.filter(key => body[key] != null && body[key] != '')\r\n\t\t\t.reduce((p, key) => { p.append(key, body[key]); return p }, new FormData());\r\n\t}\r\n\r\n\t/**\r\n\t * Convert Object to HttpHeaders\r\n\t * \r\n\t * @param body\r\n\t */\r\n\tprotected toHttpHeaders(body: Object): HttpHeaders {\r\n\t\tif (!body) {\r\n\t\t\treturn new HttpHeaders();\r\n\t\t}\r\n\r\n\t\treturn Object.getOwnPropertyNames(body)\r\n\t\t\t.filter(key => body[key] != null && body[key] != '')\r\n\t\t\t.reduce((p, key) => p.set(key, body[key]), new HttpHeaders());\r\n\t}\r\n\r\n\t/**\r\n\t * Gets file name from Httpheaders: Content-Disposition\r\n\t * @param disposition \r\n\t */\r\n\tprotected getFileNameFromHeaders(headers: HttpHeaders): string {\r\n\t\tvar disposition = headers.get('content-disposition');\r\n\t\tif (disposition && disposition.indexOf('attachment') !== -1) {\r\n\t\t\tvar matches = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/.exec(disposition);\r\n\t\t\tif (matches != null && matches[1]) {\r\n\t\t\t\treturn matches[1].replace(/['\"]/g, '');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn \"\";\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a function that handles Http operation failures.\r\n\t * This error handler lets the app continue to run as if no error occurred.\r\n\t * @param operation - name of the operation that failed\r\n\t */\r\n\tprotected handleError<T>(operation = 'operation') {\r\n\t\treturn (error: HttpErrorResponse): Observable<T> => {\r\n\t\t\tconsole.log(error);\r\n\t\t\tconst message = (error.error instanceof ErrorEvent) ? error.error.message : `server returned code ${error.status} with body \"${error.error}\"`;\r\n\t\t\tthrow new Error(`${operation} failed: ${message}`);\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Return distinct message for sent, upload progress, & response events\r\n\t * \r\n\t * @param event The response event\r\n\t * @param file The file beeing uploaded\r\n\t */\r\n\tprotected getEventMessage(event: HttpEvent<any>, file: File) {\r\n\t\tswitch (event.type) {\r\n\t\t\t/* Upload started */\r\n\t\t\tcase HttpEventType.Sent:\r\n\t\t\t\treturn `Uploading file \"${file.name}\" of size ${file.size}.`;\r\n\r\n\t\t\t/* Compute and show the % done: */\r\n\t\t\tcase HttpEventType.UploadProgress:\r\n\t\t\t\tconst percentDone = Math.round(100 * event.loaded / event.total);\r\n\t\t\t\treturn `File \"${file.name}\" is ${percentDone}% uploaded.`;\r\n\r\n\t\t\t/* Upload completed */\r\n\t\t\tcase HttpEventType.Response:\r\n\t\t\t\treturn `File \"${file.name}\" was completely uploaded!`;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\treturn `File \"${file.name}\" surprising upload event: ${event.type}.`;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows upload progress.\r\n\t * \r\n\t * @param message \r\n\t */\r\n\tprotected showProgress(message: string) {\r\n\t\tconsole.debug(message);\r\n\t}\r\n\r\n\t//#endregion\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { GenericService } from \"../../http/services/generic.service\";\r\n\r\n//@dynamic\r\n@Injectable({ providedIn: 'root' })\r\nexport class BaseService extends GenericService<any>{\r\n /**\r\n * Constructor\r\n */\r\n constructor() {\r\n super('')\r\n }\r\n}","import { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { AppSetting } from \"../models/app-setting\";\r\n\r\n//@dynamic\r\nexport class ContextHelper {\r\n /**\r\n * Provides access to information about a route associated with a component \r\n * that is loaded in an outlet.\r\n */\r\n static activatedRoute: ActivatedRoute;\r\n\r\n /**\r\n * A service that provides navigation among views and URL manipulation capabilities.\r\n */\r\n static router: Router;\r\n\r\n /**\r\n * App settings\r\n */\r\n static appSetting: AppSetting;\r\n}","import { Injectable } from '@angular/core';\r\nimport { EnumItem } from '../models/enum-item';\r\nimport { KeyValue } from '../models/key-value';\r\n\r\n//@dynamic\r\n@Injectable()\r\nexport class EnumService {\r\n\r\n\t/**\r\n\t * Parses a string to an enum value\r\n\t * @param enumType The type of the enum\r\n\t * @param value The value to parse\r\n\t */\r\n\tpublic static parse<TEnum>(enumType: TEnum, value: string): any {\r\n\t\tlet keyValue = this.toKeyValue(enumType).filter(x => x.key.toLowerCase() == (value || '').toLowerCase())[0];\r\n\t\tif (keyValue) {\r\n\t\t\treturn keyValue.value;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Parses an enum to a list of key-value objects\r\n\t * @param enumType The type of the enum\r\n\t */\r\n\tpublic static toKeyValue<TEnum>(enumType: TEnum): Array<KeyValue> {\r\n\t\treturn Object.keys(enumType)\r\n\t\t\t.map(k => enumType[k])\r\n\t\t\t.filter(v => typeof v === \"string\")\r\n\t\t\t.map(x => {\r\n\t\t\t\treturn { key: x, value: enumType[x] } as KeyValue\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Converts enum type to Array<EnumItem>\r\n\t * @param enumType \r\n\t */\r\n\tpublic static toArray<TEnum>(enumType: TEnum, prefix: string = ''): EnumItem<TEnum>[] {\r\n\t\treturn Object.keys(enumType)\r\n\t\t\t.map(k => enumType[k])\r\n\t\t\t.filter(v => typeof v === \"string\")\r\n\t\t\t.map(key => ({ id: enumType[key], name: `${prefix}${key}` } as EnumItem<TEnum>));\r\n\t}\r\n}","import { Compiler, CompilerFactory, CompilerOptions, COMPILER_OPTIONS, NgModule, StaticProvider, ViewEncapsulation } from '@angular/core';\r\nimport { JitCompilerFactory } from '@angular/platform-browser-dynamic';\r\nimport { DisableControlDirective } from './directives/disable-control.directive';\r\nimport { DataSourcePipe } from './pipes/data-source.pipe';\r\nimport { EnumPipe } from './pipes/enum.pipe';\r\nimport { FileSizePipe } from './pipes/file-size.pipe';\r\nimport { FilterPipe } from './pipes/filter.pipe';\r\nimport { FirstLetterPipe } from './pipes/first-letter';\r\nimport { KeysPipe } from './pipes/keys';\r\nimport { MonthNamePipe } from './pipes/month-name.pipe';\r\nimport { OnlyNumberDirective } from './pipes/only-number';\r\nimport { OrderPipe } from './pipes/order.pipe';\r\nimport { PlaceholderPipe } from './pipes/placeholder.pipe';\r\nimport { SafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { TimePipe } from './pipes/time.pipe';\r\nimport { TitleCase } from './pipes/titlecase.pipe';\r\nimport { TruncatePipe } from './pipes/truncate.pipe';\r\nimport { ValuesPipe } from './pipes/values';\r\n\r\nexport { IControlValueAccessor, mixinControlValueAccessor } from './behaviors/control-value-accesor.mixin';\r\nexport { ICanDisable, mixinDisabled } from './behaviors/disabled.mixin';\r\nexport { headerMetadataKey } from './constants/constants';\r\nexport { Salutation } from './enums/salutation';\r\nexport { Api, Display } from './functions/decorators';\r\nexport { getEndpoint } from './functions/functions';\r\nexport { Utils } from './functions/utils';\r\nexport { AppStorage } from './helpers/app-storage';\r\nexport { DynamicBuilder } from './helpers/dynamic-builder';\r\nexport { ActionMenuItem } from './models/action-menu-item';\r\nexport { AppSetting } from './models/app-setting';\r\nexport { AuditEntity } from './models/audit-entity';\r\nexport { AuditUser } from './models/audit-user';\r\nexport { BaseEntity } from './models/base-entity';\r\nexport { IEntity } from './models/entity';\r\nexport { KeyValue } from './models/key-value';\r\nexport { SaveAction } from './models/save-action';\r\nexport { DataSourcePipe } from './pipes/data-source.pipe';\r\nexport { EnumPipe } from './pipes/enum.pipe';\r\nexport { FirstLetterPipe } from './pipes/first-letter';\r\nexport { KeysPipe } from './pipes/keys';\r\nexport { OrderPipe } from './pipes/order.pipe';\r\nexport { TitleCase } from './pipes/titlecase.pipe';\r\nexport { ValuesPipe } from './pipes/values';\r\nexport { BaseService } from './services/base.service';\r\nexport { ContextHelper } from './services/context-helper';\r\nexport { EnumService } from './services/enum.service';\r\nexport { ServiceLocator } from './services/service-locator';\r\n\r\nconst compilerOptions: CompilerOptions = {\r\n\tuseJit: true,\r\n\tdefaultEncapsulation: ViewEncapsulation.None\r\n};\r\n\r\nexport function createCompiler(compilerFactory: CompilerFactory) {\r\n\treturn compilerFactory.createCompiler([compilerOptions]);\r\n}\r\n\r\nexport const RUNTIME_COMPILER_PROVIDERS: StaticProvider[] = [\r\n\t{ provide: COMPILER_OPTIONS, useValue: { compilerOptions }, multi: true },\r\n\t{ provide: CompilerFactory, useClass: JitCompilerFactory, deps: [COMPILER_OPTIONS] },\r\n\t{ provide: Compiler, useFactory: createCompiler, deps: [CompilerFactory] }\r\n];\r\n\r\nconst COMMON_DECLARATIONS = [\r\n\tTitleCase,\r\n\tEnumPipe,\r\n\tOrderPipe,\r\n\tKeysPipe,\r\n\tValuesPipe,\r\n\tDataSourcePipe,\r\n\tFirstLetterPipe,\r\n\tDisableControlDirective,\r\n\tOnlyNumberDirective,\r\n\tFileSizePipe,\r\n\tFilterPipe,\r\n\tPlaceholderPipe,\r\n\tTruncatePipe,\r\n\tTimePipe,\r\n\tMonthNamePipe,\r\n\tSafeHtmlPipe\r\n];\r\n\r\n@NgModule({\r\n\timports: [],\r\n\texports: [COMMON_DECLARATIONS],\r\n\tdeclarations: [COMMON_DECLARATIONS],\r\n\tproviders: [...RUNTIME_COMPILER_PROVIDERS]\r\n})\r\nexport class VdCommonModule { }","import type { QueryList } from '@angular/core';\r\nimport { AfterContentInit, Component, ContentChildren, Directive } from '@angular/core';\r\n\r\n@Directive({ selector: 'vd-dialog-title' })\r\nexport class VdDialogTitleDirective { }\r\n\r\n@Directive({ selector: 'vd-dialog-content' })\r\nexport class VdDialogContentDirective { }\r\n\r\n@Directive({ selector: 'vd-dialog-actions' })\r\nexport class VdDialogActionsDirective { }\r\n\r\n@Component({\r\n\tselector: 'vd-dialog',\r\n\ttemplateUrl: './dialog.component.html',\r\n\tstyleUrls: ['./dialog.component.scss'],\r\n})\r\nexport class VdDialogComponent implements AfterContentInit {\r\n\r\n\t@ContentChildren(VdDialogTitleDirective) dialogTitle: QueryList<VdDialogTitleDirective>;\r\n\t@ContentChildren(VdDialogContentDirective) dialogContent: QueryList<VdDialogContentDirective>;\r\n\t@ContentChildren(VdDialogActionsDirective) dialogActions: QueryList<VdDialogActionsDirective>;\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tif (this.dialogTitle.length > 1) {\r\n\t\t\tthrow new Error('Duplicate vd-dialog-title component at in vd-dialog.');\r\n\t\t}\r\n\t\tif (this.dialogContent.length > 1) {\r\n\t\t\tthrow new Error('Duplicate vd-dialog-content component at in vd-dialog.');\r\n\t\t}\r\n\t\tif (this.dialogActions.length > 1) {\r\n\t\t\tthrow new Error('Duplicate vd-dialog-actions component at in vd-dialog.');\r\n\t\t}\r\n\t}\r\n}","<div class=\"vd-dialog-wrapper\">\r\n\t<h3 class=\"vd-dialog-title md-title\" *ngIf=\"dialogTitle.length > 0\">\r\n\t\t<ng-content select=\"vd-dialog-title\"></ng-content>\r\n\t</h3>\r\n\t<div class=\"vd-dialog-content\" *ngIf=\"dialogContent.length > 0\">\r\n\t\t<ng-content select=\"vd-dialog-content\"></ng-content>\r\n\t</div>\r\n\t<div class=\"vd-dialog-actions\" *ngIf=\"dialogActions.length > 0\" layout=\"row\">\r\n\t\t<span flex></span>\r\n\t\t<ng-content select=\"vd-dialog-actions\"></ng-content>\r\n\t</div>\r\n</div>","import { Component } from '@angular/core';\r\nimport '@angular/localize/init';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'vd-alert-dialog',\r\n\ttemplateUrl: './alert-dialog.component.html',\r\n\tstyleUrls: ['./alert-dialog.component.scss'],\r\n})\r\nexport class VdAlertDialogComponent {\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tcloseButton: string = $localize`:@@close:Close`;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param _dialogRef \r\n\t */\r\n\tconstructor(private _dialogRef: MatDialogRef<VdAlertDialogComponent>) { }\r\n\r\n\t/**\r\n\t * Closes the dialog window\r\n\t */\r\n\tclose(): void {\r\n\t\tthis._dialogRef.close();\r\n\t}\r\n}","<vd-dialog>\r\n\t<vd-dialog-title *ngIf=\"title\">{{title}}</vd-dialog-title>\r\n\t<vd-dialog-content class=\"md-subhead tc-grey-700\" [innerHtml]=\"message\"></vd-dialog-content>\r\n\t<vd-dialog-actions>\r\n\t\t<button mat-button color=\"accent\" (click)=\"close()\">{{closeButton}}</button>\r\n\t</vd-dialog-actions>\r\n</vd-dialog>","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'vd-confirm-dialog',\r\n\ttemplateUrl: './confirm-dialog.component.html',\r\n\tstyleUrls: ['./confirm-dialog.component.scss'],\r\n})\r\nexport class VdConfirmDialogComponent {\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tcancelButton: string = $localize`:@@cancel:Cancel`;\r\n\tacceptButton: string = $localize`:@@accept:Accept`;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param _dialogRef \r\n\t */\r\n\tconstructor(private _dialogRef: MatDialogRef<VdConfirmDialogComponent>) { }\r\n\r\n\t/**\r\n\t * Closes the dialog window\r\n\t */\r\n\tcancel(): void {\r\n\t\tthis._dialogRef.close(false);\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dialog window\r\n\t */\r\n\taccept(): void {\r\n\t\tthis._dialogRef.close(true);\r\n\t}\r\n}","<vd-dialog>\r\n\t<vd-dialog-title *ngIf=\"title\">{{title}}</vd-dialog-title>\r\n\t<vd-dialog-content class=\"md-subhead tc-grey-700\" [innerHtml]=\"message\"></vd-dialog-content>\r\n\t<vd-dialog-actions>\r\n\t\t<button mat-button #closeBtn (keydown.arrowright)=\"acceptBtn.focus()\" (click)=\"cancel()\">{{cancelButton}}</button>\r\n\t\t<button mat-button color=\"accent\" #acceptBtn (keydown.arrowleft)=\"closeBtn.focus()\" (click)=\"accept()\">{{acceptButton}}</button>\r\n\t</vd-dialog-actions>\r\n</vd-dialog>","import { Component } from '@angular/core';\r\nimport { MatDialogRef } from '@angular/material/dialog';\r\n\r\n@Component({\r\n\tselector: 'vd-prompt-dialog',\r\n\ttemplateUrl: './prompt-dialog.component.html',\r\n\tstyleUrls: ['./prompt-dialog.component.scss'],\r\n})\r\nexport class VdPromptDialogComponent {\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tvalue: string;\r\n\tcancelButton: string = $localize`:@@cancel:Cancel`;\r\n\tacceptButton: string = $localize`:@@accept:Accept`;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param _dialogRef \r\n\t */\r\n\tconstructor(private _dialogRef: MatDialogRef<VdPromptDialogComponent>) { }\r\n\r\n\t/**\r\n\t * Closes the dialog window\r\n\t */\r\n\tcancel(): void {\r\n\t\tthis._dialogRef.close(undefined);\r\n\t}\r\n\r\n\t/**\r\n\t * Closes the dialog window\r\n\t */\r\n\taccept(): void {\r\n\t\tthis._dialogRef.close(this.value);\r\n\t}\r\n}","<vd-dialog>\r\n\t<vd-dialog-title *ngIf=\"title\">{{title}}</vd-dialog-title>\r\n\t<vd-dialog-content layout=\"column\" class=\"md-subhead tc-grey-700\">\r\n\t\t<span [innerHtml]=\"message\"></span>\r\n\t\t<form #form=\"ngForm\" layout=\"row\" novalidate flex>\r\n\t\t\t<mat-form-field flex>\r\n\t\t\t\t<input matInput (keydown.enter)=\"$event.preventDefault(); form.valid && accept()\" [(ngModel)]=\"value\" name=\"value\" required />\r\n\t\t\t</mat-form-field>\r\n\t\t</form>\r\n\t</vd-dialog-content>\r\n\t<vd-dialog-actions>\r\n\t\t<button mat-button #closeBtn (keydown.arrowright)=\"acceptBtn.focus()\" (click)=\"cancel()\">{{cancelButton}}</button>\r\n\t\t<button mat-button color=\"accent\" #acceptBtn (keydown.arrowleft)=\"closeBtn.focus()\" [disabled]=\"!form.valid\" (click)=\"accept()\">{{acceptButton}}</button>\r\n\t</vd-dialog-actions>\r\n</vd-dialog>","import { ComponentType } from '@angular/cdk/portal';\r\nimport { Injectable, Optional, Provider, SkipSelf, ViewContainerRef } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig, MatDialogRef } from '@angular/material/dialog';\r\nimport { VdAlertDialogComponent } from '../alert-dialog/alert-dialog.component';\r\nimport { VdConfirmDialogComponent } from '../confirm-dialog/confirm-dialog.component';\r\nimport { VdPromptDialogComponent } from '../prompt-dialog/prompt-dialog.component';\r\n\r\nexport interface IDialogConfig {\r\n\ttitle?: string;\r\n\tmessage: string;\r\n\tviewContainerRef?: ViewContainerRef;\r\n\tdisableClose?: boolean;\r\n}\r\n\r\nexport interface IAlertConfig extends IDialogConfig {\r\n\tcloseButton?: string;\r\n}\r\n\r\nexport interface IConfirmConfig extends IDialogConfig {\r\n\tacceptButton?: string;\r\n\tcancelButton?: string;\r\n}\r\n\r\nexport interface IPromptConfig extends IConfirmConfig {\r\n\tvalue?: string;\r\n}\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class VdDialogService {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param dialogService \r\n\t */\r\n\tconstructor(public dialogService: MatDialog) { }\r\n\r\n\t/**\r\n\t * params:\r\n\t * - component: ComponentType<T>\r\n\t * - config: MdDialogConfig\r\n\t * Wrapper function over the open() method in MdDialog.\r\n\t * Opens a modal dialog containing the given component.\r\n\t */\r\n\tpublic open<T>(component: ComponentType<T>, config?: MatDialogConfig): MatDialogRef<T> {\r\n\t\treturn this.dialogService.open(component, config);\r\n\t}\r\n\r\n\t/**\r\n\t * Wrapper function over the closeAll() method in MdDialog.\r\n\t * Closes all of the currently-open dialogs.\r\n\t */\r\n\tpublic closeAll(): void {\r\n\t\tthis.dialogService.closeAll();\r\n\t}\r\n\r\n\t/**\r\n\t * params:\r\n\t * - config: IAlertConfig {\r\n\t * message: string;\r\n\t * title?: string;\r\n\t * viewContainerRef?: ViewContainerRef;\r\n\t * closeButton?: string;\r\n\t * }\r\n\t *\r\n\t * Opens an alert dialog with the provided config.\r\n\t * Returns an MdDialogRef<VdAlertDialogComponent> object.\r\n\t */\r\n\tpublic openAlert(config: IAlertConfig): MatDialogRef<VdAlertDialogComponent> {\r\n\t\tlet dialogConfig: MatDialogConfig = this._createConfig(config);\r\n\t\tlet dialogRef: MatDialogRef<VdAlertDialogComponent> = this.dialogService.open(VdAlertDialogComponent, dialogConfig);\r\n\r\n\t\tdialogRef.componentInstance.title = config.title;\r\n\t\tdialogRef.componentInstance.message = config.message;\r\n\r\n\t\tif (config.closeButton) {\r\n\t\t\tdialogRef.componentInstance.closeButton = config.closeButton;\r\n\t\t}\r\n\r\n\t\treturn dialogRef;\r\n\t}\r\n\r\n\t/**\r\n\t * params:\r\n\t * - config: IConfirmConfig {\r\n\t * message: string;\r\n\t * title?: string;\r\n\t * viewContainerRef?: ViewContainerRef;\r\n\t * acceptButton?: string;\r\n\t * cancelButton?: string;\r\n\t * }\r\n\t *\r\n\t * Opens a confirm dialog with the provided config.\r\n\t * Returns an MdDialogRef<VdConfirmDialogComponent> object.\r\n\t */\r\n\tpublic openConfirm(config: IConfirmConfig): MatDialogRef<VdConfirmDialogComponent> {\r\n\t\tlet dialogConfig: MatDialogConfig = this._createConfig(config);\r\n\t\tlet dialogRef: MatDialogRef<VdConfirmDialogComponent> = this.dialogService.open(VdConfirmDialogComponent, dialogConfig);\r\n\r\n\t\tdialogRef.componentInstance.title = config.title;\r\n\t\tdialogRef.componentInstance.message = config.message;\r\n\r\n\t\tif (config.acceptButton) {\r\n\t\t\tdialogRef.componentInstance.acceptButton = config.acceptButton;\r\n\t\t}\r\n\r\n\t\tif (config.cancelButton) {\r\n\t\t\tdialogRef.componentInstance.cancelButton = config.cancelButton;\r\n\t\t}\r\n\r\n\t\treturn dialogRef;\r\n\t}\r\n\r\n\t/**\r\n\t * params:\r\n\t * - config: IPromptConfig {\r\n\t * message: string;\r\n\t * title?: string;\r\n\t * value?: string;\r\n\t * viewContainerRef?: ViewContainerRef;\r\n\t * acceptButton?: string;\r\n\t * cancelButton?: string;\r\n\t * }\r\n\t *\r\n\t * Opens a prompt dialog with the provided config.\r\n\t * Returns an MdDialogRef<VdPromptDialogComponent> object.\r\n\t */\r\n\tpublic openPrompt(config: IPromptConfig): MatDialogRef<VdPromptDialogComponent> {\r\n\t\tlet dialogConfig: MatDialogConfig = this._createConfig(config);\r\n\t\tlet dialogRef: MatDialogRef<VdPromptDialogComponent> = this.dialogService.open(VdPromptDialogComponent, dialogConfig);\r\n\r\n\t\tdialogRef.componentInstance.title = config.title;\r\n\t\tdialogRef.componentInstance.message = config.message;\r\n\t\tdialogRef.componentInstance.value = config.value;\r\n\r\n\t\tif (config.acceptButton) {\r\n\t\t\tdialogRef.componentInstance.acceptButton = config.acceptButton;\r\n\t\t}\r\n\r\n\t\tif (config.cancelButton) {\r\n\t\t\tdialogRef.componentInstance.cancelButton = config.cancelButton;\r\n\t\t}\r\n\r\n\t\treturn dialogRef;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates configuration\r\n\t * @param config \r\n\t * @returns \r\n\t */\r\n\tprivate _createConfig(config: MatDialogConfig): MatDialogConfig {\r\n\t\tlet dialogConfig: MatDialogConfig = new MatDialogConfig();\r\n\t\tdialogConfig.viewContainerRef = config.viewContainerRef;\r\n\t\tdialogConfig.disableClose = config.disableClose;\r\n\t\treturn dialogConfig;\r\n\t}\r\n\r\n}\r\n\r\nexport function DIALOG_PROVIDER_FACTORY(\r\n\tparent: VdDialogService, dialog: MatDialog): VdDialogService {\r\n\treturn parent || new VdDialogService(dialog);\r\n}\r\n\r\nexport const DIALOG_PROVIDER: Provider = {\r\n\t// If there is already service available, use that. Otherwise, provide a new one.\r\n\tprovide: VdDialogService,\r\n\tdeps: [[new Optional(), new SkipSelf(), VdDialogService], MatDialog],\r\n\tuseFactory: DIALOG_PROVIDER_FACTORY,\r\n};","import { Injectable, NgZone, Optional, Provider, SkipSelf } from '@angular/core';\r\nimport { Observable, Subject, Subscription, fromEvent } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class VdMediaService {\r\n\r\n\tprivate _resizing: boolean = false;\r\n\tprivate _globalSubscription: Subscription;\r\n\tprivate _queryMap: Map<string, string> = new Map<string, string>();\r\n\tprivate _querySources: { [key: string]: Subject<boolean> } = {};\r\n\tprivate _queryObservables: { [key: string]: Observable<boolean> } = {};\r\n\r\n\tconstructor(private _ngZone: NgZone) {\r\n\t\tthis._queryMap.set('xs', '(max-width: 599px)');\r\n\t\tthis._queryMap.set('gt-xs', '(min-width: 600px)');\r\n\t\tthis._queryMap.set('sm', '(min-width: 600px) and (max-width: 959px)');\r\n\t\tthis._queryMap.set('gt-sm', '(min-width: 960px)');\r\n\t\tthis._queryMap.set('md', '(min-width: 960px) and (max-width: 1279px)');\r\n\t\tthis._queryMap.set('gt-md', '(min-width: 1280px)');\r\n\t\tthis._queryMap.set('lg', '(min-width: 1280px) and (max-width: 1919px)');\r\n\t\tthis._queryMap.set('gt-lg', '(min-width: 1920px)');\r\n\t\tthis._queryMap.set('xl', '(min-width: 1920px)');\r\n\t\tthis._queryMap.set('landscape', 'landscape');\r\n\t\tthis._queryMap.set('portrait', 'portrait');\r\n\t\tthis._queryMap.set('print', 'print');\r\n\r\n\t\tthis._resizing = false;\r\n\r\n\t\t// we make sure that the resize checking happend outside of angular since it happens often\r\n\t\tthis._globalSubscription = this._ngZone.runOutsideAngular(() => {\r\n\r\n\t\t\tsetTimeout(() => { this._onResize(); }, 100);\r\n\r\n\t\t\treturn fromEvent(window, 'resize').subscribe(() => {\r\n\t\t\t\t// way to prevent the resize event from triggering the match media if there is already one event running already.\r\n\t\t\t\tif (!this._resizing) {\r\n\t\t\t\t\tthis._resizing = true;\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tthis._onResize();\r\n\t\t\t\t\t\tthis._resizing = false;\r\n\t\t\t\t\t}, 100);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Deregisters a query so its stops being notified or used.\r\n\t */\r\n\tderegisterQuery(query: string): void {\r\n\t\tif (this._queryMap.get(query.toLowerCase())) {\r\n\t\t\tquery = this._queryMap.get(query.toLowerCase());\r\n\t\t}\r\n\t\tthis._querySources[query].unsubscribe();\r\n\t\tdelete this._querySources[query];\r\n\t\tdelete this._queryObservables[query];\r\n\t}\r\n\r\n\t/**\r\n\t * Used to evaluate whether a given media query is true or false given the \r\n\t * current device's screen / window size.\r\n\t */\r\n\tpublic query(query: string): boolean {\r\n\t\tif (this._queryMap.get(query.toLowerCase())) {\r\n\t\t\tquery = this._queryMap.get(query.toLowerCase());\r\n\t\t}\r\n\t\treturn this._ngZone.run(() => {\r\n\t\t\treturn matchMedia(query).matches;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Registers a media query and returns an [Observable] that will re-evaluate and\r\n\t * return if the given media query matches on window resize.\r\n\t * Note: don't forget to unsubscribe from [Observable] when finished watching.\r\n\t */\r\n\tpublic registerQuery(query: string): Observable<boolean> {\r\n\t\tif (this._queryMap.get(query.toLowerCase())) {\r\n\t\t\tquery = this._queryMap.get(query.toLowerCase());\r\n\t\t}\r\n\t\tif (!this._querySources[query]) {\r\n\t\t\tthis._querySources[query] = new Subject<boolean>();\r\n\t\t\tthis._queryObservables[query] = this._querySources[query].asObservable();\r\n\t\t}\r\n\t\treturn this._queryObservables[query];\r\n\t}\r\n\r\n\t/**\r\n\t * Trigger a match media event on all subscribed observables.\r\n\t */\r\n\tpublic broadcast(): void {\r\n\t\tthis._onResize();\r\n\t}\r\n\r\n\tprivate _onResize(): void {\r\n\t\tfor (let query in this._querySources) {\r\n\t\t\tthis._ngZone.run(() => {\r\n\t\t\t\tthis._matchMediaTrigger(query);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _matchMediaTrigger(query: string): void {\r\n\t\tthis._querySources[query].next(matchMedia(query).matches);\r\n\t}\r\n}\r\n\r\nexport function MEDIA_PROVIDER_FACTORY(parent: VdMediaService, ngZone: NgZone): VdMediaService {\r\n\treturn parent || new VdMediaService(ngZone);\r\n}\r\n\r\nexport const MEDIA_PROVIDER: Provider = {\r\n\t// If there is already a service available, use that. Otherwise, provide a new one.\r\n\tprovide: VdMediaService,\r\n\tdeps: [[new Optional(), new SkipSelf(), VdMediaService], NgZone],\r\n\tuseFactory: MEDIA_PROVIDER_FACTORY,\r\n};","export const Common = {\r\n\tallowedExtensions: [\r\n\t\t\".png\", \".gif\", \".jpg\", \".jpeg\", \".doc\", \".txt\", \".mp3\", \".mp4\", \".mpeg\", \".avi\", \".wav\",\r\n\t\t\".xls\", \".mpp\", \".pdf\", \".ppt\", \".tiff\", \".tif\", \".bmp\", \".docx\", \".xlsx\", \".csv\", \".pptx\",\r\n\t\t\".ps\", \".odt\", \".ods\", \".odp\", \".odg\", \".zip\", \".rar\", \".7z\", \".tar\"\r\n\t],\r\n\teditorPlugins: 'link code image preview advlist lists fullscreen imagetools',\r\n\teditorToolbar: 'undo redo | formatselect | bold italic strikethrough forecolor backcolor permanentpen formatpainter | link image media pageembed | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat | code',\r\n\tmonths: [\r\n\t\t{ name: 'Januar', id: 1 },\r\n\t\t{ name: 'Februar', id: 2 },\r\n\t\t{ name: 'März', id: 3 },\r\n\t\t{ name: 'April', id: 4 },\r\n\t\t{ name: 'Mai', id: 5 },\r\n\t\t{ name: 'Juni', id: 6 },\r\n\t\t{ name: 'Juli', id: 7 },\r\n\t\t{ name: 'August', id: 8 },\r\n\t\t{ name: 'September', id: 9 },\r\n\t\t{ name: 'Oktober', id: 10 },\r\n\t\t{ name: 'November', id: 11 },\r\n\t\t{ name: 'Dezember', id: 12 }\r\n\t]\r\n}","export enum MessageType {\r\n Success,\r\n Warning,\r\n Error,\r\n}","export class AuthUser {\r\n\tid: number;\r\n\tsub: number;\r\n\tname: string;\r\n\tdisplayName: string;\r\n\tletter: string;\r\n\temail: string;\r\n\trole: string;\r\n\tpermission: Array<string>;\r\n\taccess_token: string;\r\n\tisAuthenticated: boolean;\r\n\tpostLoginRoute: string;\r\n\tclientId: number;\r\n\tdepartmentId: number;\r\n}","import { AuthUser } from \"../models/auth-user\";\r\n\r\n//@dynamic\r\nexport class AuthHelper {\r\n\t/**\r\n\t * Authenticated user\r\n\t */\r\n\tpublic static user: AuthUser = new AuthUser();\r\n\r\n\t/**\r\n\t * Checks if the current user is authenticated\r\n\t */\r\n\tpublic static isAuthenticated(): boolean {\r\n\t\treturn this.user && this.user.sub > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the user has the specified permission\r\n\t * @param permission The permission to check\r\n\t */\r\n\tpublic static isPermitted(...permissions: string[]): boolean {\r\n\t\t/* Admins have full access */\r\n\t\tpermissions.push('Admin');\r\n\t\tpermissions.push('Administrator');\r\n\r\n\t\tif (this.user && Array.isArray(this.user.permission)) {\r\n\t\t\treturn permissions.some(permission => {\r\n\t\t\t\treturn this.user.permission.indexOf(permission) >= 0;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the current user has on of the specified roles\r\n\t * @param roles \r\n\t */\r\n\tpublic static hasRole(...roles: string[]): boolean {\r\n\t\treturn roles.some(role => {\r\n\t\t\treturn this.user && this.isString(this.user.role) && role && this.user.role.toLowerCase() === role.toLowerCase();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the specified variable is a string\r\n\t * @param str \r\n\t */\r\n\tpublic static isString(str: any) {\r\n\t\treturn typeof str === 'string' || str instanceof String;\r\n\t}\r\n}","import { Location } from '@angular/common';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { AfterViewInit, ChangeDetectorRef, Directive, ElementRef, OnInit, QueryList, Type, ViewChildren } from '@angular/core';\r\nimport { MatExpansionPanel } from '@angular/material/expansion';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { Title } from '@angular/platform-browser';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router, UrlSegment } from '@angular/router';\r\nimport { Observable, of } from 'rxjs';\r\nimport { ContextHelper } from '../../common/common.module';\r\nimport { AppSetting } from '../../common/models/app-setting';\r\nimport { ServiceLocator } from '../../common/services/service-locator';\r\nimport { VdDialogService } from '../../dialogs/services/dialog.service';\r\nimport { VdMediaService } from '../../media/services/media.service';\r\nimport { Menu } from '../../menu/models/menu';\r\nimport { Common } from '../constants/common';\r\nimport { MessageType } from '../enums/message-type';\r\nimport { AuthHelper } from '../helpers/auth-helper';\r\nimport { AuthUser } from '../models/auth-user';\r\n\r\n/**\r\n * A base list component for components with pagination support\r\n */\r\n// @dynamic\r\n@Directive()\r\nexport abstract class BaseComponent implements OnInit, AfterViewInit {\r\n\t/**\r\n\t * App settings\r\n\t */\r\n\tpublic appSetting: AppSetting;\r\n\r\n\t/**\r\n\t * Menu items\r\n\t */\r\n\tpublic menu: Menu;\r\n\r\n\t/**\r\n\t * The name of the project\r\n\t */\r\n\tpublic projectName: string;\r\n\r\n\t/**\r\n\t * The title of the current page\r\n\t */\r\n\tpublic title: string;\r\n\r\n\t/**\r\n\t * The subtitle of the current outlet\r\n\t */\r\n\tpublic subtitle: string = '';\r\n\r\n\t/**\r\n\t * If true, use some dummy data and show debug logs\r\n\t */\r\n\tpublic debug: boolean;\r\n\r\n\t/**\t \r\n\t * Loading status\r\n\t */\r\n\tpublic isLoading: boolean;\r\n\r\n\t/**\r\n\t * Saving status\r\n\t */\r\n\tpublic _isSaving: boolean;\r\n\tget isSaving(): boolean { return this._isSaving || this.isLoading; }\r\n\tset isSaving(isSaving: boolean) { this.isLoading = this._isSaving = isSaving; }\r\n\r\n\t/**\r\n\t * A flag eindicates that the editor is inited\r\n\t */\r\n\tpublic isEditorInitialzed: boolean;\r\n\r\n\t/**\r\n\t * Represents the request errors\r\n\t */\r\n\tpublic errors: Array<string> = new Array<string>();\r\n\r\n\t/**\r\n\t * Used to evaluate whether a given media query is true or false given the current device's screen / window size.\r\n\t */\r\n\tpublic media: VdMediaService;\r\n\r\n\t/**\r\n\t * Allowed file extensions\r\n\t */\r\n\tpublic allowedExtensions: string[] = Common.allowedExtensions;\r\n\r\n\t/**\r\n\t * tinyMCE plugins\r\n\t */\r\n\tpublic editorPlugins: string = Common.editorPlugins;\r\n\r\n\t/**\r\n\t * tinyMCE editor\r\n\t */\r\n\tpublic editorToolbar: string = Common.editorToolbar;\r\n\r\n\t/**\r\n\t * Editor configuration\r\n\t */\r\n\tpublic editorConfig: any = {};\r\n\r\n\t/**\r\n\t * Provides the navigation and url manipulation capabilities.\r\n\t */\r\n\tpublic router: Router;\r\n\r\n\t/**\r\n\t * urlHash: string\r\n\t */\r\n\tpublic urlHash: string = null;\r\n\r\n\t/**\r\n\t * Class name\r\n\t */\r\n\tpublic className: string;\r\n\r\n\t/**\r\n\t * Create permission\r\n\t */\r\n\tpublic canCreate: boolean;\r\n\r\n\t/**\r\n\t * Update permission\r\n\t */\r\n\tpublic canUpdate: boolean;\r\n\r\n\t/**\r\n\t * Current route\r\n\t */\r\n\tpublic currentRoute: string;\r\n\r\n\t/**\r\n\t * Current user object\r\n\t */\r\n\tpublic currentUser: AuthUser = AuthHelper.user;\r\n\r\n\t/**\r\n\t * A service that can be used to get and set the title of a current HTML document.\r\n\t */\r\n\tprotected titleService: Title;\r\n\r\n\t/**\r\n\t * A service to dispatch Material Design snack bar messages.\r\n\t */\r\n\tprotected snackBarService: MatSnackBar;\r\n\r\n\t/**\r\n\t * A service to show conirm and prompt dialogs.\r\n\t */\r\n\tprotected dialogService: VdDialogService;\r\n\r\n\t/**\r\n\t * location: Location\r\n\t */\r\n\tprotected location: Location;\r\n\r\n\t/**\r\n\t * If true, set url hash\r\n\t */\r\n\tprotected setUrlHash: boolean = true;\r\n\r\n\t/**\r\n\t * MatExpansionPanel ref\r\n\t */\r\n\t@ViewChildren(MatExpansionPanel, { read: ElementRef })\r\n\tprotected matExpansionPanelElementQueryList: QueryList<ElementRef>;\r\n\r\n\t/**\r\n\t * MatExpansionPanel ref\r\n\t */\r\n\t@ViewChildren(MatExpansionPanel)\r\n\tprotected matExpansionPanelQueryList: QueryList<MatExpansionPanel>;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(protected route: ActivatedRoute, protected changeDetectorRef: ChangeDetectorRef) {\r\n\t\tthis.titleService = this.getService(Title);\r\n\t\tthis.dialogService = this.getService(VdDialogService);\r\n\t\tthis.media = this.getService(VdMediaService);\r\n\t\tthis.snackBarService = this.getService(MatSnackBar);\r\n\t\tthis.router = this.getService(Router);\r\n\t\tthis.appSetting = this.getService(AppSetting);\r\n\t\tthis.location = this.getService(Location);\r\n\r\n\t\tContextHelper.activatedRoute = route;\r\n\t\tContextHelper.router = this.router;\r\n\t\tContextHelper.appSetting = this.appSetting;\r\n\r\n\t\tthis.initEditor();\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties \r\n\t * of a directive are initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\t/* Get menu items from route snapshot */\r\n\t\tvar mainRoute = this.getMainRoute(this.route.snapshot);\r\n\t\tif (mainRoute) {\r\n\t\t\tthis.menu = mainRoute.data.menu;\r\n\t\t}\r\n\r\n\t\t/* Set project name & debug mode */\r\n\t\tthis.projectName = this.appSetting.projectName;\r\n\t\tthis.debug = this.appSetting.debug;\r\n\r\n\t\t/* Get the hash from the url */\r\n\t\tthis.route.fragment.subscribe((fragment: string) => this.urlHash = fragment);\r\n\r\n\t\t/**\r\n\t\t * Check permissions\r\n\t\t */\r\n\t\tif (this.route.parent) {\r\n\t\t\tthis.route.parent.url.subscribe((url: UrlSegment[]) => {\r\n\t\t\t\tthis.className = url.length ? url[0].path.replace(/(.*)s$/, '$1').replace(/^./, (url[0].path[0] || '').toUpperCase()) : '';\r\n\t\t\t\tthis.canCreate = AuthHelper.isPermitted('Create', `Create${this.className}`);\r\n\t\t\t\tthis.canUpdate = AuthHelper.isPermitted('Update', `Update${this.className}`);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Set current route */\r\n\t\tthis.currentRoute = btoa(this.router.url);\r\n\r\n\t\t/**\r\n\t\t * Set page title\r\n\t\t */\r\n\t\tthis.router.events.subscribe(x => {\r\n\t\t\tif (x instanceof NavigationEnd) {\r\n\t\t\t\tthis.setTitles();\r\n\t\t\t\tthis.currentRoute = btoa(x.url);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after a component's view has been fully initialized.\r\n\t */\r\n\tngAfterViewInit(): void {\r\n\t\t/* Broadcast to all listener observables when loading the page */\r\n\t\tthis.media.broadcast();\r\n\r\n\t\t/* Set titles */\r\n\t\tthis.setTitles();\r\n\r\n\t\t/* \r\n\t\t * Force a new change detection cycle since change detections \r\n\t\t * have finished when `ngAfterViewInit` is executed\r\n\t\t */\r\n\t\tthis.changeDetectorRef.detectChanges();\r\n\r\n\t\t/* Listen for expansion panel changes */\r\n\t\tthis.onExpansionPanelChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Refreshs this page/component\r\n\t */\r\n\tpublic reloadPage(): void {\r\n\t\tlet currentUrl = this.router.url;\r\n\t\tthis.router.navigateByUrl('/', { replaceUrl: true }).then(() => this.router.navigateByUrl(currentUrl, { replaceUrl: true }));\r\n\t}\r\n\r\n\t/**\r\n\t * Listen for expansion panel changes\r\n\t */\r\n\tprotected onExpansionPanelChanges(): void {\r\n\t\t/* Listen for expansion panel changes */\r\n\t\tthis.matExpansionPanelQueryList?.changes.subscribe(_ => {\r\n\t\t\tthis.changeDetectorRef.detectChanges();\r\n\r\n\t\t\t/* Find the index of the panel with the specified element ID */\r\n\t\t\tthis.urlHash?.split('.')\r\n\t\t\t\t?.reduce((accumulator, currentValue, index) => accumulator.concat((index > 0 ? (accumulator.slice(-1).join('.') + '.') : '') + currentValue), [])\r\n\t\t\t\t?.forEach((hash: string) => {\r\n\t\t\t\t\tvar expansionPanelIndex = this.matExpansionPanelElementQueryList?.toArray()?.findIndex(x => x.nativeElement.id == hash);\r\n\t\t\t\t\tif (expansionPanelIndex >= 0) {\r\n\t\t\t\t\t\tthis.matExpansionPanelQueryList?.toArray()[expansionPanelIndex]?.open();\r\n\t\t\t\t\t\tthis.changeDetectorRef.detectChanges();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t/* Detect changes for opened panels */\r\n\t\t\tthis.matExpansionPanelQueryList?.forEach(y => {\r\n\t\t\t\ty.opened.subscribe(_ => {\r\n\t\t\t\t\tif (this.setUrlHash) {\r\n\t\t\t\t\t\t/* Get the id of the current opened panel */\r\n\t\t\t\t\t\tvar currentPanelId = y['_viewContainerRef']?.element?.nativeElement?.id;\r\n\r\n\t\t\t\t\t\t/* If the panel ID is set, set it as url segment (hash) */\r\n\t\t\t\t\t\tif (currentPanelId) {\r\n\t\t\t\t\t\t\tthis.router.navigate([], { fragment: currentPanelId, replaceUrl: true });\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t/* Otherwise remove the segment from the url */\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthis.router.navigate([], { replaceUrl: true });\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Detect changes */\r\n\t\t\t\t\tthis.changeDetectorRef.detectChanges();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t/* Notify expansion panel list changes */\r\n\t\tthis.matExpansionPanelQueryList.notifyOnChanges();\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves an instance from the injector based on the provided token.\r\n\t * If not found:\r\n\t * - Throws {@link NoProviderError} if no `notFoundValue` that is not equal to\r\n\t * Injector.THROW_IF_NOT_FOUND is given\r\n\t * - Returns the `notFoundValue` otherwise\r\n\t */\r\n\tprotected getService<T>(token: Type<T>): T {\r\n\t\treturn ServiceLocator.getService(token);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets base route\r\n\t * @param snapshot \r\n\t */\r\n\tprotected getMainRoute(snapshot: ActivatedRouteSnapshot): ActivatedRouteSnapshot {\r\n\t\tif (snapshot && !snapshot.data.menu) {\r\n\t\t\treturn this.getMainRoute(snapshot.parent);\r\n\t\t}\r\n\r\n\t\treturn snapshot;\r\n\t}\r\n\r\n\t/**\r\n\t\t * Shows a confirm dialog to delete an item \r\n\t\t */\r\n\tprotected showDeleteItemDialog(): Observable<any> {\r\n\t\treturn this.dialogService.openConfirm({\r\n\t\t\tmessage: $localize`:@@dialog.message.delete.one:Are you sure you want to delete this item?`,\r\n\t\t\ttitle: $localize`:@@dialog.title.delete:Confirm Delete`,\r\n\t\t\tcancelButton: $localize`:@@cancel:Cancel`,\r\n\t\t\tacceptButton: $localize`:@@delete:Delete`,\r\n\t\t}).afterClosed();\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a confirm dialog to delete multiple items\r\n\t */\r\n\tprotected showDeleteItemsDialog(): Observable<any> {\r\n\t\treturn this.dialogService.openConfirm({\r\n\t\t\tmessage: $localize`:@@dialog.message.delete.list:Are you sure you want to delete the selected items?`,\r\n\t\t\ttitle: $localize`:@@dialog.title.delete:Confirm Delete`,\r\n\t\t\tcancelButton: $localize`:@@cancel:Cancel`,\r\n\t\t\tacceptButton: $localize`:@@delete:Delete`,\r\n\t\t}).afterClosed();\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a confirm dialog to send some data\r\n\t * @param message The message to display\r\n\t * @param observabe The observable instance\r\n\t * @param successCallback A success callback\r\n\t * @param errorCallback An error callback\r\n\t */\r\n\tpublic showConfirmationDialog(message: string, observabe: Observable<any>, successCallback: Function = null, errorCallback: Function = null) {\r\n\t\tthis.dialogService\r\n\t\t\t.openConfirm({\r\n\t\t\t\tmessage: message,\r\n\t\t\t\ttitle: $localize`:@@dialog.title.confirm:Confirm`,\r\n\t\t\t\tcancelButton: $localize`:@@cancel:Cancel`,\r\n\t\t\t\tacceptButton: $localize`:@@ok:Ok`,\r\n\t\t\t})\r\n\t\t\t.afterClosed().subscribe((accept: boolean) => {\r\n\t\t\t\tif (accept) {\r\n\t\t\t\t\tobservabe.subscribe(x => {\r\n\t\t\t\t\t\tthis.showMessage($localize`:@@snackbar.send.success:Data sent successfully.`);\r\n\r\n\t\t\t\t\t\tif (successCallback) {\r\n\t\t\t\t\t\t\tsuccessCallback(x);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, errors => {\r\n\t\t\t\t\t\tthis.isSaving = false;\r\n\t\t\t\t\t\tif (errorCallback) {\r\n\t\t\t\t\t\t\terrorCallback(errors);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a message\r\n\t * @param message The message to display\r\n\t * @param type The type of the message\r\n\t */\r\n\tprotected showMessage(message?: string, type: MessageType = MessageType.Success): void {\r\n\t\tvar snackBarClass = 'primary';\r\n\t\tswitch (type) {\r\n\t\t\tcase MessageType.Success:\r\n\t\t\t\tsnackBarClass = 'primary';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase MessageType.Warning:\r\n\t\t\t\tsnackBarClass = 'warn';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase MessageType.Error:\r\n\t\t\t\tsnackBarClass = 'error';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.snackBarService.open(message || $localize`:@@snackbar.send.success:Data sent successfully.`, null, {\r\n\t\t\tduration: 3000,\r\n\t\t\tpanelClass: [snackBarClass]\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Initoalizes the tinymce editor\r\n\t */\r\n\tprotected initEditor(editorConfig: any = {}) {\r\n\t\tObject.assign(this.editorConfig, {\r\n\t\t\tsuffix: '.min',\r\n\t\t\tskin: false,\r\n\t\t\theight: '170px',\r\n\t\t\tcontent_css: false,\r\n\t\t\tplugins: this.editorPlugins,\r\n\t\t\ttoolbar: this.editorToolbar,\r\n\t\t\tpaste_as_text: true,\r\n\t\t\tlanguage: 'de',\r\n\t\t\tlanguage_url: '/assets/tinymce/langs/de.js',\r\n\t\t\tdocument_base_url: `${this.appSetting.apiUrl}file/`,\r\n\t\t\tautomatic_uploads: true,\r\n\t\t\trelative_urls: true,\r\n\t\t\tconvert_urls: false,\r\n\t\t\textended_valid_elements: 'span[id|class|style],+@[data-options]',\r\n\t\t\tallow_html_in_named_anchor: true\r\n\t\t}, editorConfig);\r\n\r\n\t\tthis.isEditorInitialzed = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Sets subtitle from curren menu\r\n\t */\r\n\tprotected setTitles(): void {\r\n\t\tif (this.menu) {\r\n\t\t\tthis.titleService.setTitle(this.menu.title);\r\n\t\t\tthis.title = this.titleService.getTitle();\r\n\r\n\t\t\tif (this.menu.items) {\r\n\t\t\t\tvar submenu = this.menu.items.filter(x => x.path == this.router.url)[0];\r\n\t\t\t\tif (submenu) {\r\n\t\t\t\t\tthis.subtitle = submenu.title;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Navigate based on the provided array of commands and a starting point.\r\n\t * @param commands \r\n\t */\r\n\tprotected navigate(commands: any[], queryParams?: any): void {\r\n\t\tthis.router.navigate(commands, { queryParams: Object.assign({ returnUrl: this.currentRoute }, queryParams || {}), relativeTo: this.route });\r\n\t}\r\n\r\n\t/**\r\n\t * Convert Object to HttpHeaders\r\n\t * \r\n\t * @param body\r\n\t */\r\n\tprotected toHttpHeaders(body: Object): HttpHeaders {\r\n\t\tif (!body) {\r\n\t\t\treturn new HttpHeaders();\r\n\t\t}\r\n\r\n\t\treturn Object.getOwnPropertyNames(body)\r\n\t\t\t.filter(key => body[key] != null && body[key] != '')\r\n\t\t\t.reduce((p, key) => p.set(key, body[key]), new HttpHeaders());\r\n\t}\r\n\r\n\t/**\r\n\t * Parses http response errors\r\n\t * @param errors \r\n\t */\r\n\tprotected parseErrors(errors: Object): void {\r\n\t\tthis.errors = [];\r\n\t\tthis.isLoading = false;\r\n\t\tthis.isSaving = false;\r\n\r\n\t\tif (errors) {\r\n\t\t\tObject.keys(errors).forEach(el => {\r\n\t\t\t\tlet error = errors[el];\r\n\t\t\t\tif (Array.isArray(error)) {\r\n\t\t\t\t\terror.forEach(err => {\r\n\t\t\t\t\t\tthis.errors.push(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (typeof error === \"string\") {\r\n\t\t\t\t\tthis.errors.push(error);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handle Http operation that failed.\r\n\t * Let the app continue.\r\n\t * @param operation - name of the operation that failed\r\n\t * @param result - optional value to return as the observable result\r\n\t */\r\n\tprotected handleError<T>(operation = 'operation', result?: T) {\r\n\t\treturn (error: any): Observable<T> => {\r\n\r\n\t\t\t/* Parse the error messages */\r\n\t\t\tthis.parseErrors(error);\r\n\r\n\t\t\t/* Log to console */\r\n\t\t\tthis.warn(`${operation} failed: ${error.message}`);\r\n\r\n\t\t\t/* Let the app keep running by returning an empty result */\r\n\t\t\treturn of(result as T);\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Log to console\r\n\t * @param message \r\n\t * @param optionalParams \r\n\t */\r\n\tprotected log(message: string, ...optionalParams: any[]) {\r\n\t\tif (this.debug) {\r\n\t\t\tconsole.log(message, optionalParams);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Log to console\r\n\t * @param message \r\n\t * @param optionalParams \r\n\t */\r\n\tprotected warn(message: string, ...optionalParams: any[]) {\r\n\t\tif (this.debug) {\r\n\t\t\tconsole.warn(message, optionalParams);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Cleans the objects\r\n\t * Removes empty properties\r\n\t * @param obj \r\n\t */\r\n\tprotected clean(obj: any): any {\r\n\t\ttry {\r\n\t\t\tfor (var propName in obj) {\r\n\t\t\t\tif (obj[propName] === null || obj[propName] === undefined || obj[propName] === \"\") {\r\n\t\t\t\t\tdelete obj[propName];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} catch (error) { }\r\n\r\n\t\treturn obj;\r\n\t}\r\n\r\n\t/**\r\n\t * Sanitizes the specified object\r\n\t * @param obj \r\n\t * @returns \r\n\t */\r\n\tprotected sanitizeObject(obj: any, ...ignore: string[]): any {\r\n\t\treturn Object.keys(obj)\r\n\t\t\t.filter(x => obj[x])\r\n\t\t\t.filter(x => !(ignore || []).map(x => x.toLowerCase()).includes(x.toLowerCase()))\r\n\t\t\t.reduce((result, key) => {\r\n\t\t\t\tresult[key] = isNaN(+obj[key]) ? obj[key] : +obj[key];\r\n\t\t\t\treturn result;\r\n\t\t\t}, {});\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if the user seleceted any text in the document\r\n\t * @returns \r\n\t */\r\n\tprotected isTextSelected = (): boolean => window?.getSelection()?.toString()?.length > 0\r\n}","import { StepperSelectionEvent } from '@angular/cdk/stepper';\r\nimport { ChangeDetectorRef, Directive, HostListener, ViewChild, ViewChildren } from '@angular/core';\r\nimport { AbstractControl, FormGroup, NgForm, ValidationErrors } from '@angular/forms';\r\nimport { MatStepper } from '@angular/material/stepper';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { map, Observable, tap } from 'rxjs';\r\nimport { Utils } from '../../common/functions/utils';\r\nimport { IEntity } from '../../common/models/entity';\r\nimport { SaveAction } from '../../common/models/save-action';\r\nimport { GenericService } from '../../http/services/generic.service';\r\nimport { TableMenuItem } from '../../table/models/table-menu-item';\r\nimport { BaseComponent } from './base.component';\r\n\r\n// @dynamic\r\n@Directive()\r\nexport abstract class GenericFormBaseComponent<TEntity extends IEntity, TService extends GenericService<TEntity>> extends BaseComponent {\r\n\t/**\r\n\t * The action of the form (add | edit)\r\n\t */\r\n\tpublic action: string = 'add';\r\n\r\n\t/**\r\n\t * A url to return to after save\r\n\t */\r\n\tpublic returnUrl: string;\r\n\r\n\t/**\r\n\t * Action = edit?\r\n\t */\r\n\tpublic isEditMode: boolean = false;\r\n\r\n\t/**\r\n\t * Save action\r\n\t */\r\n\tpublic SaveAction: typeof SaveAction = SaveAction;\r\n\r\n\t/**\r\n\t * Routes\r\n\t */\r\n\tpublic editSaveAndCloseRoute: string = '../../';\r\n\tpublic addSaveAndCloseRoute: string = '../';\r\n\tpublic addSaveAndEditRoute: string = '../edit/';\r\n\tpublic addSaveAndNewRoute: string = '../add';\r\n\tpublic listRoute: string = this.addSaveAndCloseRoute;\r\n\r\n\t/**\r\n\t * The id of the item to load\r\n\t */\r\n\tpublic id: number | string;\r\n\r\n\t/**\r\n\t * The current item to add or edit\r\n\t */\r\n\tpublic item: TEntity;\r\n\r\n\t/**\r\n\t * Represents the request errors\r\n\t */\r\n\tpublic errors: Array<string> = new Array<string>();\r\n\r\n\t/**\r\n\t * Includes\r\n\t */\r\n\tpublic includes: string[] = [];\r\n\r\n\t/**\r\n\t * Update includes\r\n\t */\r\n\tpublic updateIncludes: string[] = [];\r\n\r\n\t/**\r\n\t * Get params\r\n\t */\r\n\tpublic query: any = {};\r\n\r\n\t/**\r\n\t * The current date\r\n\t */\r\n\tpublic currentDate: Date = new Date();\r\n\r\n\t/**\r\n\t * Date & time mask\r\n\t */\r\n\tpublic dateTimeMask = [/[0-3]/, /[0-9]/, '.', /[0-1]/, /[0-9]/, '.', 2, 0, /[1-2]/, /[0-9]/, ' ', /[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n\r\n\t/**\r\n\t * Date mask\r\n\t */\r\n\tpublic dateMask = [/[0-3]/, /[0-9]/, '.', /[0-1]/, /[0-9]/, '.', 2, 0, /[1-2]/, /[0-9]/];\r\n\r\n\t/**\r\n\t * Time mask\r\n\t */\r\n\tpublic timeMask = [/[0-2]/, /[0-9]/, ':', /[0-5]/, /[0-9]/];\r\n\r\n\t/**\r\n\t * A pattern to validate dates\r\n\t */\r\n\tpublic datePattern: string = `(?:(?:31(\\\\/|-|\\\\.)(?:0?[13578]|1[02]))\\\\1|(?:(?:29|30)(\\\\/|-|\\\\.)(?:0?[1,3-9]|1[0-2])\\\\2))(?:(?:1[6-9]|[2-9]\\\\d)?\\\\d{2})$|^(?:29(\\\\/|-|\\\\.)0?2\\\\3(?:(?:(?:1[6-9]|[2-9]\\\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\\\d|2[0-8])(\\\\/|-|\\\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\\\4(?:(?:1[6-9]|[2-9]\\\\d)?\\\\d{2})`;\r\n\r\n\t/**\r\n\t * Phone prefix validation pattern\r\n\t */\r\n\tpublic phonePrefixPattern: string = '^(0\\\\d{2,6})$';\r\n\r\n\t/**\r\n\t * Phone number validation pattern\r\n\t */\r\n\tpublic phoneNumberPattern: string = '^(\\\\d{3,30})$';\r\n\r\n\t/**\r\n\t * Password validation pattern\r\n\t */\r\n\tpublic passwordPattern: string = '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[$@$!%*?&])[A-Za-z\\\\d$@$!%*?&]{6,}';\r\n\r\n\t/**\r\n\t * Defaults modules and toolbar\r\n\t */\r\n\tpublic editorOptions = {\r\n\t\tmodules: {\r\n\t\t\ttoolbar: [\r\n\t\t\t\t['bold', 'italic', 'underline'],\r\n\t\t\t\t[{ 'list': 'ordered' }, { 'list': 'bullet' }],\r\n\t\t\t\t[{ 'indent': '-1' }, { 'indent': '+1' }],\r\n\t\t\t\t[{ 'size': ['small', false, 'large', 'huge'] }],\r\n\t\t\t\t[{ 'header': [1, 2, 3, 4, 5, 6, false] }],\r\n\t\t\t\t[{ 'color': new Array<any>() }, { 'background': new Array<any>() }],\r\n\t\t\t\t['link', 'image']\r\n\t\t\t],\r\n\t\t\tclipboard: {\r\n\t\t\t\tmatchVisual: false\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * If true, show the menu 'Delete'\r\n\t */\r\n\tpublic deletable: boolean = true;\r\n\r\n\t/**\r\n\t * Toolbar menu items\r\n\t */\r\n\tpublic toolbarMenuItems: TableMenuItem[] = [];\r\n\r\n\t/**\r\n\t * MatStepper ref\r\n\t */\r\n\t@ViewChild(MatStepper)\r\n\tprotected matStepper: MatStepper;\r\n\r\n\t/**\r\n\t * A reference to the input element\r\n\t */\r\n\t@ViewChildren('focus')\r\n\tpublic input: any;\r\n\r\n\t/**\r\n\t * Form group\r\n\t */\r\n\tpublic form: NgForm | FormGroup;\r\n\r\n\t/**\r\n\t * Gets form value\r\n\t */\r\n\tpublic abstract get formValue(): TEntity | any;\r\n\r\n\t/**\r\n\t * panelId: string\r\n\t */\r\n\tprotected panelId: string = null;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param service \r\n\t */\r\n\tconstructor(\r\n\t\tpublic entityCtor: { new(): TEntity },\r\n\t\tprotected service: TService,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(route, changeDetectorRef);\r\n\t\tthis.listRoute = this.addSaveAndCloseRoute;\r\n\t}\r\n\r\n\t/**\r\n\t * Called after the constructor, initializing input properties, \r\n\t * and the first call to ngOnChanges.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tsuper.ngOnInit();\r\n\r\n\t\t/* Get id from the url */\r\n\t\tlet id = <any>this.route.snapshot.paramMap.get('id');\r\n\t\tif (id > 0) {\r\n\t\t\tthis.id = id;\r\n\t\t} else if (!this.id && this.route.snapshot?.data?.id) {\r\n\t\t\tthis.id = this.route.snapshot?.data?.id;\r\n\t\t}\r\n\r\n\t\t/* Set some variable for edit mode */\r\n\t\tif (this.id) {\r\n\t\t\tthis.action = 'edit';\r\n\t\t\tthis.isEditMode = true;\r\n\t\t\tthis.listRoute = this.editSaveAndCloseRoute;\r\n\t\t}\r\n\r\n\t\t/* Get the return url if any */\r\n\t\tthis.route.queryParams.subscribe(x => {\r\n\t\t\tthis.returnUrl = x.returnUrl ? decodeURIComponent(atob(x.returnUrl)) : null;\r\n\t\t\tthis.listRoute = this.returnUrl || this.listRoute;\r\n\t\t});\r\n\r\n\t\t/* Set panel ID from query */\r\n\t\tthis.panelId = this.route.snapshot.queryParams?.panelId;\r\n\t\tthis.subtitle ||= this.route.snapshot?.data?.subtitle;\r\n\r\n\t\t/* Assign query params into query object */\r\n\t\tlet ignoredParams: string[] = ['id', 'returnurl', 'panelId'];\r\n\t\tObject.assign(this.query,\r\n\t\t\tthis.sanitizeObject(this.route.snapshot.params || {}, ...ignoredParams),\r\n\t\t\tthis.sanitizeObject(this.route.snapshot.data?.query || {}, ...ignoredParams),\r\n\t\t\tthis.sanitizeObject(this.route.snapshot.queryParams || {}, ...ignoredParams)\r\n\t\t);\r\n\r\n\t\t/* Create a new instance of the TEntity */\r\n\t\tif (!this.isEditMode) {\r\n\t\t\tthis.item = Object.assign(this.newInstance(), this.query);\r\n\t\t\tthis.buildForm();\r\n\t\t}\r\n\r\n\t\t/* Add list mneu items */\r\n\t\tthis.addToolbarMenuItems();\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after a component's view has been fully initialized.\r\n\t */\r\n\tngAfterViewInit(): void {\r\n\t\tsuper.ngAfterViewInit();\r\n\r\n\t\t/* Set page title */\r\n\t\tthis.title = this.titleService.getTitle();\r\n\r\n\t\t/* Set focus */\r\n\t\tthis.focus();\r\n\r\n\t\t/* \r\n\t\t * Force a new change detection cycle since change detections \r\n\t\t * have finished when `ngAfterViewInit` is executed\r\n\t\t */\r\n\t\tthis.changeDetectorRef.detectChanges();\r\n\r\n\t\t/* Load item from server */\r\n\t\tthis.loadItem();\r\n\r\n\t\t/* Listen for stepper selection changes */\r\n\t\tthis.matStepper?.selectionChange?.subscribe((event: StepperSelectionEvent) => this.onAfterStepChange(event));\r\n\t}\r\n\r\n\t/**\r\n\t * Loads an item by ID\r\n\t */\r\n\tpublic loadItem(): void {\r\n\t\tif (this.isEditMode) {\r\n\t\t\tthis.isLoading = true;\r\n\t\t\tthis.changeDetectorRef.detectChanges();\r\n\t\t\tthis.loadItemAsync().subscribe({\r\n\t\t\t\tnext: (_) => this.isLoading = false,\r\n\t\t\t\terror: (error) => this.parseErrors(error)\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Loads an item by ID asyncly\r\n\t */\r\n\tpublic loadItemAsync(): Observable<TEntity> {\r\n\t\tif (this.id) {\r\n\t\t\treturn this.service.get(this.id, Object.assign(this.query || {}, { includes: this.includes }), { 'Disable-Cache': 'Yes' }).pipe(\r\n\t\t\t\tmap(x => Object.assign(this.newInstance(), x)),\r\n\t\t\t\ttap(x => {\r\n\t\t\t\t\t/* Set the loaded item */\r\n\t\t\t\t\tthis.item = Object.assign(this.newInstance(), <TEntity>x);\r\n\r\n\t\t\t\t\t/* Build the form */\r\n\t\t\t\t\tthis.buildForm();\r\n\r\n\t\t\t\t\t/* Trigger event afterItemLoaded */\r\n\t\t\t\t\tthis.onAfterItemLoaded();\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\treturn new Observable();\r\n\t}\r\n\r\n\t/**\r\n\t * Saves data into database.\r\n\t * @param action\r\n\t */\r\n\tpublic save(action: SaveAction = SaveAction.SaveAndClose, form: NgForm | FormGroup = null): void {\r\n\t\t/* Validate the form */\r\n\t\tthis.validateForm();\r\n\r\n\t\t/* Check if the form is valid */\r\n\t\tform = this.form || form;\r\n\t\tif (form && !this.isFormValid(form)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/* If we'ra in edit mode, update the record */\r\n\t\tif (this.isEditMode) {\r\n\t\t\t/* The data has not changed? */\r\n\t\t\tif (form && form.pristine) {\r\n\t\t\t\tthis.onAfterSubmit(action);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t/* A flag to prevent sending the form twice */\r\n\t\t\tthis.isSaving = true;\r\n\r\n\t\t\t/* Send the data to the server */\r\n\t\t\tthis.update({ params: Utils.toHttpParams({ includes: this.updateIncludes }) }).subscribe({\r\n\t\t\t\tnext: (response) => {\r\n\t\t\t\t\t/* Apply saved data to the form */\r\n\t\t\t\t\tthis.onAfterSubmit(action, response);\r\n\r\n\t\t\t\t\t/* If the user clicks 'apply' reload the page */\r\n\t\t\t\t\tif (action == SaveAction.SaveAndEdit) {\r\n\t\t\t\t\t\tthis.reloadPage();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: (error) => this.parseErrors(error)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Otherwise, create a new one */\r\n\t\telse {\r\n\t\t\t/* A flag to prevent sending the form twice */\r\n\t\t\tthis.isSaving = true;\r\n\r\n\t\t\t/* Send the data to the server */\r\n\t\t\tthis.create<TEntity>().subscribe({\r\n\t\t\t\tnext: (response) => {\r\n\t\t\t\t\tthis.id = response?.id;\r\n\t\t\t\t\tthis.onAfterSubmit(action, response);\r\n\r\n\t\t\t\t\tif (form) {\r\n\t\t\t\t\t\tObject.keys(form.controls).forEach(key => {\r\n\t\t\t\t\t\t\tlet ctr = form.controls[key];\r\n\t\t\t\t\t\t\tctr.markAsPristine();\r\n\t\t\t\t\t\t\tctr.markAsUntouched();\r\n\t\t\t\t\t\t\tctr.updateValueAndValidity();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: (error) => this.parseErrors(error)\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Saves data and navigates to edit view\r\n\t */\r\n\tpublic apply(): void {\r\n\t\tthis.save(SaveAction.SaveAndEdit);\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes the current record.\r\n\t */\r\n\tpublic delete(): void {\r\n\t\tthis.showDeleteItemDialog().subscribe((accept: boolean) => {\r\n\t\t\tif (accept) {\r\n\t\t\t\tthis.service.delete(this.id, null, { headers: this.toHttpHeaders({ 'Show-Message': 'yes' }) }).subscribe(response => {\r\n\t\t\t\t\tthis.back();\r\n\t\t\t\t}, error => {\r\n\t\t\t\t\tconsole.debug(error);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Builds a new form\r\n\t */\r\n\tprotected buildForm(): void { }\r\n\r\n\t/**\r\n\t * Validates the form\r\n\t * @param form \r\n\t */\r\n\tpublic validateForm(form: NgForm | FormGroup = null): void {\r\n\t\tvar form = form || this.form;\r\n\r\n\t\t/* Set the form as submitted */\r\n\t\tif (form && form instanceof FormGroup) {\r\n\t\t\t/* Set form as submitted */\r\n\t\t\tform['submitted'] = true;\r\n\r\n\t\t\t/* Update value and validity */\r\n\t\t\tform.updateValueAndValidity();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the form\r\n\t * @param form \r\n\t */\r\n\tpublic isFormValid(form: NgForm | FormGroup = null): boolean {\r\n\t\t/* Print some debug information */\r\n\t\tif (this.debug) {\r\n\t\t\tthis.debugForm(form);\r\n\t\t}\r\n\r\n\t\t/* If the form ist not valid.. */\r\n\t\tif (!form.valid) {\r\n\t\t\t/* Mark invalid controls as dirtty and touched */\r\n\t\t\tObject.keys(form.controls)\r\n\t\t\t\t.filter(x => !form.controls[x].valid)\r\n\t\t\t\t.forEach(key => this.invalidateControl(form.controls[key]));\r\n\r\n\t\t\t/* Show error messages */\r\n\t\t\t(async () => {\r\n\t\t\t\t/* Wait until 'mat-error' displayed */\r\n\t\t\t\tawait new Promise(y => setTimeout(y, 200));\r\n\r\n\t\t\t\t/* Parse the error messages */\r\n\t\t\t\tvar errors = Array<string>();\r\n\t\t\t\tObject.keys(form.controls)\r\n\t\t\t\t\t.filter(x => !form.controls[x].valid)\r\n\t\t\t\t\t.forEach(key => {\r\n\t\t\t\t\t\t/* Get error text */\r\n\t\t\t\t\t\tvar error = this.getElementError((form.controls[key] as any)?.nativeElement);\r\n\t\t\t\t\t\tif (error) {\r\n\t\t\t\t\t\t\terrors.push(error);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t/* Build error message */\r\n\t\t\t\tvar message = errors.length ? errors.slice(0, 3).join('\\n') : $localize`:@@snackbar.error.required-fields:All fields marked with an asterisk (*) are required.`;\r\n\r\n\t\t\t\t/* show a notice */\r\n\t\t\t\tthis.snackBarService.open(message, 'Ok', { duration: 3000, panelClass: ['error'] });\r\n\t\t\t\treturn false;\r\n\t\t\t})();\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Resets form controls\r\n\t * @param form \r\n\t * @returns \r\n\t */\r\n\tpublic resetForm(form: NgForm): void {\r\n\t\tif (!form) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tObject.keys(form.controls).forEach(key => {\r\n\t\t\tlet ctr = form.controls[key];\r\n\t\t\tctr.markAsPristine();\r\n\t\t\tctr.markAsUntouched();\r\n\t\t\tctr.updateValueAndValidity();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Invalidate controls recursively\r\n\t * @param control \r\n\t */\r\n\tprotected invalidateControl(control: AbstractControl): void {\r\n\t\t/* Check the control against null */\r\n\t\tif (!control) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t/* Check if the control is a group */\r\n\t\tlet formGroup = control as FormGroup;\r\n\t\tif (formGroup?.controls) {\r\n\t\t\tObject.keys(formGroup.controls)\r\n\t\t\t\t.filter(x => !formGroup.controls[x].valid)\r\n\t\t\t\t.forEach(x => this.invalidateControl(formGroup.controls[x]));\r\n\t\t} else {\r\n\t\t\tcontrol.markAsDirty();\r\n\t\t\tcontrol.markAsTouched();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows form errors\r\n\t * @param form \r\n\t */\r\n\tprotected debugForm(form: NgForm | FormGroup = null): void {\r\n\t\tconsole.log('Form:', form);\r\n\t\tObject.keys(form.controls).forEach(key => {\r\n\t\t\tconst controlErrors: ValidationErrors = form.controls[key].errors;\r\n\t\t\tif (controlErrors != null) {\r\n\t\t\t\tObject.keys(controlErrors).forEach(keyError => {\r\n\t\t\t\t\tconsole.log('Key control: ' + key + ', keyError: ' + keyError + ', err value: ', controlErrors[keyError]);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Add toolbar menu items\r\n\t */\r\n\tprotected addToolbarMenuItems(): void {\r\n\t\t/* Add 'Delete' menu item */\r\n\t\tif (this.deletable) {\r\n\t\t\tthis.toolbarMenuItems.push({\r\n\t\t\t\ttitle: $localize`:@@delete:Delete`,\r\n\t\t\t\ticon: 'delete_forever',\r\n\t\t\t\ticonClass: 'tc-orange-800',\r\n\t\t\t\tevent: () => this.delete(),\r\n\t\t\t\tdisable: () => !this.id,\r\n\t\t\t\thide: () => !this.canDelete()\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Loads the previous URL in the history list.\r\n\t * @param action\r\n\t */\r\n\tpublic back(action: SaveAction = SaveAction.SaveAndClose): void {\r\n\t\tif (action == SaveAction.SaveAndClose && this.returnUrl) {\r\n\t\t\tvar urlParts = Utils.getUrlParts(this.returnUrl);\r\n\t\t\tthis.router.navigate([urlParts.url], { queryParams: urlParts.params, fragment: urlParts.hash });\r\n\t\t} else {\r\n\t\t\tif (this.isEditMode) {\r\n\t\t\t\tif (action == SaveAction.SaveAndClose) {\r\n\t\t\t\t\tthis.location.back();\r\n\t\t\t\t} else if (action == SaveAction.SaveAndEdit) {\r\n\t\t\t\t\tthis.reloadPage();\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tif (action == SaveAction.SaveAndClose) {\r\n\t\t\t\t\tthis.location.back();\r\n\t\t\t\t} else if (action == SaveAction.SaveAndEdit && this.id > 0) {\r\n\t\t\t\t\tthis.router.navigate([`${this.addSaveAndEditRoute}${this.id}`], { relativeTo: this.route });\r\n\t\t\t\t} else if (action == SaveAction.SaveAndNew) {\r\n\t\t\t\t\tthis.afterReload();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new instance of the TEntity\r\n\t */\r\n\tprotected newInstance(): TEntity {\r\n\t\treturn this.item = new this.entityCtor();\r\n\t}\r\n\r\n\t/**\r\n\t * Creates the entity\r\n\t * @param httpOptions \r\n\t * @returns \r\n\t */\r\n\tprotected create<TEntity>(httpOptions?: Object): Observable<TEntity> {\r\n\t\tthis.onBeforeCreate();\r\n\t\treturn this.service.create<TEntity>(this.formValue, null, Object.assign(httpOptions || {}, { headers: this.toHttpHeaders({ 'Show-Message': 'yes' }) }), false);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the entity\r\n\t * @param httpOptions \r\n\t * @returns \r\n\t */\r\n\tprotected update(httpOptions?: Object): Observable<TEntity> {\r\n\t\tthis.onBeforeUpdate();\r\n\t\treturn this.service.update(this.id, Object.assign(this.item, this.formValue), null, Object.assign(httpOptions || {}, { headers: this.toHttpHeaders({ 'Show-Message': 'yes' }), }), false);\r\n\t}\r\n\r\n\t/**\r\n\t * Includes some navigations\r\n\t * @param inc \r\n\t * @param update \r\n\t */\r\n\tprotected include(inc: string, update: boolean = false) {\r\n\t\tthis.includes.push(inc);\r\n\t\tif (update) {\r\n\t\t\tthis.updateIncludes.push(inc);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Check if the item is deletable\r\n\t */\r\n\tprotected canDelete(): boolean { return !this.item?.hasOwnProperty('deletable') || this.item['deletable']; }\r\n\r\n\t/**\r\n\t * Event emitted when the selected step has changed.\r\n\t * @param $event \r\n\t */\r\n\tprotected onAfterStepChange($event: StepperSelectionEvent): void { }\r\n\r\n\t/**\r\n\t * Event emitted when the entity has been loaded.\r\n\t */\r\n\tprotected onAfterItemLoaded(): void { }\r\n\r\n\t/**\r\n\t * Event emitted before the form has built.\r\n\t */\r\n\tprotected onBeforeFormBuild(): void { }\r\n\r\n\t/**\r\n\t * Event emitted when the form has built.\r\n\t */\r\n\tprotected onAfterFormBuild(): void { }\r\n\r\n\t/**\r\n\t * Event emitted when the entity has been created.\r\n\t */\r\n\tprotected onBeforeCreate(): void { }\r\n\r\n\t/**\r\n\t * Event emitted when the entity has been updated.\r\n\t */\r\n\tprotected onBeforeUpdate(): void { }\r\n\r\n\t/**\r\n\t * Called before data submition\r\n\t */\r\n\tprotected beforeSubmit(_: SaveAction = SaveAction.SaveAndClose): void { }\r\n\r\n\t/**\r\n\t * Event emitted after data submition\r\n\t * @param action \r\n\t * @param response \r\n\t */\r\n\tprotected onAfterSubmit(action: SaveAction = SaveAction.SaveAndClose, response: any = null): void {\r\n\t\tthis.isSaving = false;\r\n\t\tthis.back(action);\r\n\t}\r\n\r\n\t/**\r\n\t * Called after page reloaded\r\n\t */\r\n\tprotected afterReload(): void {\r\n\t\tthis.item = Object.assign(this.newInstance(), this.query);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets focus to first input\r\n\t */\r\n\tprotected focus(): void {\r\n\t\tif (this.input && this.input.first && this.input.first.nativeElement) {\r\n\t\t\tthis.input.first.nativeElement.focus();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Gets element error\r\n\t * @param nativeElement \r\n\t */\r\n\tprotected getElementError(nativeElement: any): string {\r\n\t\t/* Get paranet element 'mat-form-field' */\r\n\t\tvar matFormField = nativeElement?.closest('.mat-form-field');\r\n\t\tif (!matFormField) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t/* Get child element 'mat-error' */\r\n\t\tvar matErrors = matFormField.querySelectorAll('.mat-error');\r\n\t\tif (!matErrors) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t/* Get child element 'mat-label' */\r\n\t\tvar matLabel = matFormField.querySelector('mat-label');\r\n\t\tif (!matLabel) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t/* Get error texts */\r\n\t\tvar errorsArray = Array.prototype.slice.call(matErrors)\r\n\t\t\t?.filter((x: any) => x.textContent)\r\n\t\t\t?.map((x: any) => x.textContent);\r\n\r\n\t\treturn `'${matLabel.textContent}': ${errorsArray?.join(', ')}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Responds to user-initiated events\r\n\t * @param event \r\n\t */\r\n\t@HostListener('document:keydown', ['$event'])\r\n\thandleKeyboardEvent(event: KeyboardEvent) {\r\n\t\tif (event.ctrlKey || event.metaKey) {\r\n\t\t\tswitch (event.key) {\r\n\t\t\t\tcase 's':\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthis.save(SaveAction.SaveAndClose);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'd':\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthis.save(SaveAction.SaveAndNew);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'e':\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthis.save(SaveAction.SaveAndEdit);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Cancel the form, if the user press the ESC key */\r\n\t\tif (event.keyCode == 27) {\r\n\t\t\tthis.back();\r\n\t\t}\r\n\t}\r\n}","import { ChangeDetectorRef, Directive } from '@angular/core';\r\nimport { NgForm } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { IEntity } from '../../common/models/entity';\r\nimport { GenericService } from '../../http/services/generic.service';\r\nimport { GenericFormBaseComponent } from './generic-form-base.component';\r\n\r\n// @dynamic\r\n@Directive()\r\nexport abstract class GenericFormComponent<TEntity extends IEntity, TService extends GenericService<TEntity>> extends GenericFormBaseComponent<TEntity, TService> {\r\n\r\n\t/**\r\n\t * Form group\r\n\t */\r\n\tpublic form: NgForm;\r\n\r\n\t/**\r\n\t * Gets form value\r\n\t */\r\n\tpublic get formValue(): TEntity | any { return this.item; };\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param service \r\n\t */\r\n\tconstructor(\r\n\t\tpublic entityCtor: { new(): TEntity },\r\n\t\tprotected service: TService,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef\r\n\t) {\r\n\t\tsuper(entityCtor, service, route, changeDetectorRef);\r\n\t\tthis.listRoute = this.addSaveAndCloseRoute;\r\n\t}\r\n}","import \"reflect-metadata\";\r\nimport { TableDefinition } from \"../models/table-definition\";\r\n\r\n/**\r\n * Gets classes decoarated with @Table\r\n * @param origin \r\n * @returns \r\n */\r\nexport function getTableDefinition(origin: object): TableDefinition {\r\n let tableDefinition = origin['tableDefinition'] as TableDefinition;\r\n if (tableDefinition?.columns) {\r\n tableDefinition.columns = tableDefinition?.columns.filter(x =>\r\n !x.hidden &&\r\n !tableDefinition.hideColumns?.some(y => y.trim() == x.name.trim())\r\n );\r\n }\r\n\r\n return tableDefinition;\r\n}","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Pagination } from './models/pagination';\r\n\r\n/**\r\n * A generic datasource for data-table\r\n */\r\nexport class TableStaticDataSource<TEntity> extends MatTableDataSource<TEntity> {\r\n\r\n\t/**\r\n\t * onDataLoaded: function($event)\r\n\t * Event emitted after the data is loaded\r\n\t */\r\n\tpublic _reloadChange = new BehaviorSubject<number>(0);\r\n\r\n\t/**\r\n\t * onDataLoaded: function($event)\r\n\t * Event emitted after the data is loaded\r\n\t */\r\n\tpublic onDataLoaded = new BehaviorSubject<Pagination<TEntity>>(null);\r\n\r\n\t/**\r\n\t * Used to power selecting one or more options from a list.\r\n\t */\r\n\tpublic selectionModel = new SelectionModel<TEntity>(true, []);\r\n\r\n\t/**\r\n\t * Gets reload token\r\n\t */\r\n\tget reloadToken(): number { return this._reloadChange.value; }\r\n\r\n\t/**\r\n\t * Used to add some field filters\r\n\t */\r\n\tpublic fieldFilters: any = {};\r\n\r\n\t/**\r\n\t * Used to add some field operators\r\n\t */\r\n\tpublic fieldOperators: any = {};\r\n\r\n\t/**\r\n\t * Used to add some static field filters\r\n\t */\r\n\tpublic staticFieldFilters: any = {};\r\n\r\n\t/**\r\n\t * The current page index.\r\n\t */\r\n\tpublic pageIndex: number = 0;\r\n\r\n\t/**\r\n\t * The current total number of items being paged\r\n\t */\r\n\tpublic total: number = 0;\r\n\r\n\t/**\r\n\t * The current page size\r\n\t */\r\n\tpublic pageSize: number = 15;\r\n\r\n\t/**\r\n\t * Number of pages\r\n\t */\r\n\tpublic pageCount: number = 0;\r\n\r\n\t/**\r\n\t * A flag to show loading process\r\n\t */\r\n\tpublic isLoading: boolean = false;\r\n\r\n\t/**\r\n\t * Reloads items\r\n\t * @param clearSelection \r\n\t */\r\n\tpublic reload(clearSelection: boolean = true): void {\r\n\t\tthis._reloadChange.next(Math.random());\r\n\r\n\t\tif (clearSelection) {\r\n\t\t\tthis.selectionModel.clear();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Used by the MatTable. Called when it connects to the data source.\r\n\t * @docs-private\r\n\t */\r\n\tconnect(): BehaviorSubject<TEntity[]> {\r\n\t\tthis._reloadChange.subscribe(x => {\r\n\t\t\t/* Remove empty filters */\r\n\t\t\tObject.keys(this.fieldFilters).forEach((key) => ((this.fieldFilters[key] == null || this.fieldFilters[key] == '' || this.fieldFilters[key] == 'undefined')) && this.fieldFilters[key] != 0 && delete this.fieldFilters[key]);\r\n\t\t\tObject.keys(this.staticFieldFilters).forEach((key) => ((this.staticFieldFilters[key] == null || this.staticFieldFilters[key] == '' || this.staticFieldFilters[key] == 'undefined')) && this.staticFieldFilters[key] != 0 && delete this.staticFieldFilters[key]);\r\n\r\n\t\t\tObject.keys(this.fieldFilters).forEach((key) => {\r\n\t\t\t\tthis.filterPredicate = (data: TEntity, filter: string) => !filter || `${data[key]}`.toLowerCase().includes(`${this.filter}`?.toLowerCase());\r\n\t\t\t\tthis.filter = this.fieldFilters[key];\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\treturn super.connect();\r\n\t}\r\n\r\n\t/**\r\n\t * Clears field filters\r\n\t */\r\n\tpublic clearFilters(newFilters: any = {}): void {\r\n\t\tif (this.paginator) {\r\n\t\t\tthis.paginator.pageIndex = 0;\r\n\t\t}\r\n\r\n\t\tthis.fieldFilters = newFilters || {};\r\n\t\tthis.filter = '';\r\n\t\tthis.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks, whether all items are selected\r\n\t */\r\n\tpublic isAllSelected(): boolean {\r\n\t\tif (this.selectionModel.isEmpty()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.selectionModel.selected.length === this.paginator?.length;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles selected items\r\n\t * @param checkbox \r\n\t * @param predicate\r\n\t */\r\n\tpublic toggleSelect(checkbox: MatCheckboxChange, predicate?: (value: TEntity, index: number, array: TEntity[]) => unknown) {\r\n\t\tif (this.selectionModel.hasValue()) {\r\n\t\t\tthis.selectionModel.clear();\r\n\t\t\tcheckbox.source.checked = false;\r\n\t\t} else {\r\n\t\t\tthis.data.filter(predicate ? predicate : x => x)\r\n\t\t\t\t.filter(x => !x['locked'])\r\n\t\t\t\t.forEach(data => this.selectionModel.select(data));\r\n\r\n\t\t\tif (this.selectionModel.selected.length !== this.paginator?.length) {\r\n\t\t\t\tcheckbox.source.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get selected Items\r\n\t */\r\n\tpublic getSelected = <TType>(key: string = 'id'): TType[] => this.selectionModel.selected.map(x => x[key]);\r\n}","import { CdkColumnDef } from '@angular/cdk/table';\r\nimport { Component, ElementRef, forwardRef, HostListener, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { fromEvent } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\n\r\n@Component({\r\n\tselector: 'mat-header-cell[filter-input],[mat-header-cell][filter-input]',\r\n\ttemplate: `\r\n\t\t<mat-form-field flex>\r\n\t\t\t<input matInput #filterElement ngControl=\"filterElement\" type=\"input\" [(ngModel)]=\"value\" [placeholder]=\"placeholder\" (search)=\"stopPropagation($event)\"\r\n\t\t\t(keyup.enter)=\"handleSearch($event)\"/>\r\n\t\t\t<button type=\"button\" mat-button matSuffix mat-icon-button aria-label=\"Clear\" *ngIf=\"value\" (click)=\"clearSearch()\">\r\n\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t</button>\r\n\t\t</mat-form-field>`,\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => FilterInputComponent),\r\n\t\t\tmulti: true\r\n\t\t}\r\n\t]\r\n})\r\nexport class FilterInputComponent implements OnInit, ControlValueAccessor {\r\n\r\n\t/**\r\n\t * A refernce to the input element\r\n\t */\r\n\t@ViewChild('filterElement', { static: true }) private _filter: ElementRef;\r\n\r\n\t/**\r\n\t * Field name\r\n\t */\r\n\t@Input() field: string = '';\r\n\r\n\t/**\r\n\t * Query operator\r\n\t */\r\n\t@Input() operator: string = '';\r\n\r\n\t/**\r\n\t * Only number\r\n\t */\r\n\t@Input() onlyNumber: boolean;\r\n\r\n\t/**\r\n\t * debounce?: number\r\n\t * Debounce timeout between keypresses. Defaults to 400.\r\n\t */\r\n\t@Input() debounce: number = 400;\r\n\r\n\t/**\r\n\t * placeholder?: string\r\n\t * Placeholder for the underlying input component.\r\n\t */\r\n\t@Input() placeholder: string = 'Filter...';\r\n\r\n\t/**\r\n\t * Setters and getters for the input value\r\n\t */\r\n\tget value(): any { return this.table.dataSource['fieldFilters'][this.field]?.replace(this.operator, '')?.trim(); };\r\n\tset value(v: any) {\r\n\t\tif (v !== this.table.dataSource['fieldFilters'][this.field]) {\r\n\t\t\tthis.table.dataSource['fieldFilters'][this.field] = v ? `${this.operator || ''}${v}` : '';\r\n\t\t\tthis.table.dataSource['paginator']['pageIndex'] = 0;\r\n\t\t\tthis.onChange(v);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param table\r\n\t * @param column\r\n\t */\r\n\tconstructor(private table: MatTable<any>, private column: CdkColumnDef) {\r\n\t\tthis.field = this.column.name.replace('filter.', '');\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties of a directive are initialized.\r\n\t */\r\n\tngOnInit() {\r\n\t\tfromEvent(this._filter.nativeElement, 'keyup')\r\n\t\t\t.pipe(\r\n\t\t\t\tdebounceTime(this.debounce),\r\n\t\t\t\tdistinctUntilChanged()\r\n\t\t\t).subscribe((value: string) => {\r\n\t\t\t\tif (value != undefined) {\r\n\t\t\t\t\tthis.reload();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Prevents the event from bubbling up the DOM tree, preventing any parent \r\n\t * handlers from being notified of the event.\r\n\t */\r\n\tstopPropagation(event: Event): void {\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\t/**\r\n\t * Call serch event\r\n\t */\r\n\thandleSearch(event: Event): void {\r\n\t\tthis.stopPropagation(event);\r\n\t\tthis.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Clears input box\r\n\t */\r\n\tclearSearch(): void {\r\n\t\tif (this.value != '') {\r\n\t\t\tthis.value = '';\r\n\t\t\tthis.reload();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Write a new value to the element.\r\n\t */\r\n\twriteValue(value: any) {\r\n\t\tthis.value = value;\r\n\t\tthis.onChange(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Set the function to be called when the control receives a change event.\r\n\t */\r\n\tregisterOnChange(fn: (_: any) => void): void { this.onChange = fn; }\r\n\r\n\t/**\r\n\t * Set the function to be called when the control receives a touch event.\r\n\t */\r\n\tregisterOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n\r\n\t/**\r\n\t * Called when the control receives a change event.\r\n\t */\r\n\tonChange = (_) => { };\r\n\r\n\t/**\r\n\t * Called when the control receives a touch event.\r\n\t */\r\n\tonTouched = () => { };\r\n\r\n\t/**\r\n\t * Handles keydown events\r\n\t * @param event \r\n\t */\r\n\t@HostListener('keydown', ['$event']) onKeyDown(event) {\r\n\t\tlet e = <KeyboardEvent>event;\r\n\t\tif (this.onlyNumber) {\r\n\t\t\tif ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||\r\n\t\t\t\t/* Allow: Ctrl+A */\r\n\t\t\t\t(e.keyCode === 65 && (e.ctrlKey || e.metaKey)) ||\r\n\t\t\t\t/* Allow: Ctrl+C */\r\n\t\t\t\t(e.keyCode === 67 && (e.ctrlKey || e.metaKey)) ||\r\n\t\t\t\t/* Allow: Ctrl+V */\r\n\t\t\t\t(e.keyCode === 86 && (e.ctrlKey || e.metaKey)) ||\r\n\t\t\t\t/* Allow: Ctrl+X */\r\n\t\t\t\t(e.keyCode === 88 && (e.ctrlKey || e.metaKey)) ||\r\n\t\t\t\t/* Allow: home, end, left, right */\r\n\t\t\t\t(e.keyCode >= 35 && e.keyCode <= 39)) {\r\n\t\t\t\t/* let it happen, don't do anything */\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t/* Ensure that it is a number and stop the keypress */\r\n\t\t\tif ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Reload data\r\n\t */\r\n\tprivate reload = () => this.table.dataSource['reload']();\r\n}","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { TemplatePortalDirective } from '@angular/cdk/portal';\r\nimport { CdkColumnDef } from '@angular/cdk/table';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Component, ContentChild, Directive, ElementRef, forwardRef, Injector, Input, OnInit, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { EnumService } from '../../common/services/enum.service';\r\n\r\n@Directive({ selector: '[vd-filter-option]ng-template' })\r\nexport class VdFilterOptionDirective extends TemplatePortalDirective {\r\n\tconstructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n\t\tsuper(templateRef, viewContainerRef);\r\n\t}\r\n}\r\n\r\n@Component({\r\n\tselector: 'mat-header-cell[filter-select],[mat-header-cell][filter-select]',\r\n\ttemplate: `\r\n\t\t<mat-form-field flex>\r\n\t\t\t<mat-select type=\"input\" [(ngModel)]=\"value\" [multiple]=\"multiple\" [placeholder]=\"placeholder\">\r\n\t\t\t\t<input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target?.value)\">\r\n\t\t\t\t<mat-option *ngIf=\"!multiple\" class=\"tc-grey-500\"></mat-option>\r\n\t\t\t\t<ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n\t\t\t\t\t<mat-option [value]=\"option[key]\">\r\n\t\t\t\t\t\t<span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option.name, select, option {option} other {{{option[text]}}}}</span>\r\n\t\t\t\t\t\t<ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate.templateRef\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n\t\t\t\t\t</mat-option>\r\n\t\t\t\t</ng-template>\r\n\t\t\t</mat-select>\r\n\t\t</mat-form-field>`,\r\n\tstyles: [`\r\n\t\t.vd-select-filter {\r\n\t\t\tposition: sticky;\r\n\t\t\ttop: 0;\r\n\t\t\tz-index: 100;\r\n\t\t\tfont-size: inherit;\r\n\t\t\tbox-shadow: none;\r\n\t\t\tborder-radius: 0;\r\n\t\t\tpadding: 11px 16px;\r\n\t\t\tbox-sizing: border-box;\r\n\t\t\tborder: none;\r\n\t\t\tborder-bottom: 1px solid #dcdcdc;\r\n\t\t\twidth: 100%;\r\n\t\t\tbackground-color: #f5f5f5;\r\n\t\t\toutline: none;\r\n\t\t}`\r\n\t],\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => FilterSelectComponent),\r\n\t\t\tmulti: true\r\n\t\t}\r\n\t]\r\n})\r\nexport class FilterSelectComponent implements OnInit, ControlValueAccessor {\r\n\t/**\r\n\t * VdChip template\r\n\t */\r\n\t@ContentChild(VdFilterOptionDirective)\r\n\tpublic optionTemplate: VdFilterOptionDirective;\r\n\r\n\t/** \r\n\t * The select element.\r\n\t */\r\n\t@ViewChild(MatSelect, { static: false })\r\n\tpublic selectEl: MatSelect;\r\n\r\n\t/** \r\n\t * The select element.\r\n\t */\r\n\t@ViewChild('filterInput', { static: false })\r\n\tpublic filterInput: ElementRef;\r\n\r\n\t/**\r\n\t * Represents a value that changes over time. \r\n\t * Observers can subscribe to the subject to receive pdf file changes\r\n\t */\r\n\tprivate _endpointChange = new BehaviorSubject(null);\r\n\r\n\t/**\r\n\t * Gets pdf endpoint\r\n\t */\r\n\tget endpoint(): any { return this._endpointChange.value; }\r\n\r\n\t/**\r\n\t * Sets pdf endpoint\r\n\t */\r\n\t@Input()\r\n\tset endpoint(endpoint: any) { this._endpointChange.next(Array.isArray(endpoint) ? endpoint.join('') : endpoint); }\r\n\r\n\t/**\r\n\t * _params: any\r\n\t */\r\n\tpublic _params: any = {};\r\n\r\n\t/**\r\n\t * params: any\r\n\t */\r\n\t@Input()\r\n\tget params() { return this._params; }\r\n\tset params(query: any) {\r\n\t\tthis._params = query;\r\n\r\n\t\t/* Remove empty params */\r\n\t\tObject.keys(this._params).forEach((key) => {\r\n\t\t\tif ((this._params[key] == null || this._params[key] == '' || this._params[key] == 'undefined')) {\r\n\t\t\t\tdelete this._params[key];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._endpointChange.next([this.endpoint, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * _projection: any\r\n\t */\r\n\tpublic _projection: string;\r\n\r\n\t/**\r\n\t * projection: any\r\n\t */\r\n\t@Input()\r\n\tget projection() { return this._projection; }\r\n\tset projection(projection: string) {\r\n\t\tthis._projection = projection;\r\n\t\tthis._endpointChange.next([this.endpoint, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * sortBy?\r\n\t */\r\n\t@Input()\r\n\tpublic sortBy: string;\r\n\r\n\t/**\r\n\t * Sorts options\r\n\t */\r\n\tpublic _sorted: boolean = true;\r\n\r\n\t/**\r\n\t * Sorts options\r\n\t */\r\n\t@Input()\r\n\tget sorted() { return this._sorted; }\r\n\tset sorted(multi) {\r\n\t\tthis._sorted = coerceBooleanProperty(multi);\r\n\t\tthis._endpointChange.next([this.endpoint, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * The name of the endpoint\r\n\t */\r\n\t@Input()\r\n\tprivate enum: any;\r\n\r\n\t/**\r\n\t * The key\r\n\t */\r\n\t@Input()\r\n\tpublic key: any = 'id';\r\n\r\n\t/**\r\n\t * The text\r\n\t */\r\n\t@Input()\r\n\tpublic text: any = 'name';\r\n\r\n\t/**\r\n\t * The prefix\r\n\t */\r\n\t@Input()\r\n\tpublic prefix: any = '';\r\n\r\n\t/**\r\n\t * multiple?\r\n\t */\r\n\t@Input()\r\n\tpublic multiple: boolean = false;\r\n\r\n\t/**\r\n\t * Option list\r\n\t */\r\n\tpublic _options: any;\r\n\r\n\t/**\r\n\t * Option list\r\n\t */\r\n\t@Input()\r\n\tget options() { return this._options; }\r\n\tset options(value) {\r\n\t\tthis.filteredOptions = this._options = value;\r\n\t}\r\n\t/**\r\n\t * filtered option list\r\n\t */\r\n\t@Input()\r\n\tpublic filteredOptions: any;\r\n\r\n\t/**\r\n\t * filterable?\r\n\t */\r\n\t@Input()\r\n\tpublic filterable: boolean = true;\r\n\r\n\t/**\r\n\t * Field name\r\n\t */\r\n\t@Input() field: string = '';\r\n\r\n\t/**\r\n\t * placeholder?: string\r\n\t * Placeholder for the underlying input component.\r\n\t */\r\n\t@Input() placeholder: string = 'Filter...';\r\n\r\n\t/**\r\n\t * cache?\r\n\t */\r\n\t@Input()\r\n\tpublic cache: boolean = true;\r\n\r\n\t/**\r\n\t * The http service from to get the data\r\n\t */\r\n\tprotected http: HttpClient = null;\r\n\r\n\t/**\r\n\t * Setters and getters for the select value\r\n\t */\r\n\tget value(): any { return this.table.dataSource['fieldFilters'][this.field]; };\r\n\tset value(v: any) {\r\n\t\tif (v != this.table.dataSource['fieldFilters'][this.field]) {\r\n\t\t\tthis.table.dataSource['fieldFilters'][this.field] = v;\r\n\t\t\tthis.table.dataSource['paginator']['pageIndex'] = 0;\r\n\t\t\tthis.table.dataSource['reload']();\r\n\t\t\tthis.onChange(v);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param injector\r\n\t * @param table \r\n\t * @param column\r\n\t */\r\n\tconstructor(private injector: Injector, private table: MatTable<any>, private column: CdkColumnDef) {\r\n\t\tthis.field = this.column.name.replace('filter.', '');\r\n\r\n\t\tif (!this.enum) {\r\n\t\t\tthis.http = injector.get(HttpClient);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties of a directive are initialized.\r\n\t */\r\n\tngOnInit() {\r\n\t\tif (this.enum) {\r\n\t\t\tthis.options = EnumService.toArray(this.enum, this.prefix);\r\n\t\t\tthis.filterable = false;\r\n\t\t} else if (this.endpoint) {\r\n\t\t\tthis._endpointChange.subscribe((endpoint: string) => {\r\n\t\t\t\tlet headers = new HttpHeaders();\r\n\t\t\t\tif (this.cache) {\r\n\t\t\t\t\theaders.set('Client-Cache', 'Yes');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Init params, if null */\r\n\t\t\t\tthis._params ||= {};\r\n\r\n\t\t\t\t/* Add projection, if any */\r\n\t\t\t\tif (this.projection) {\r\n\t\t\t\t\tthis._params.projection = this.projection;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Add sorting */\r\n\t\t\t\tvar url = new URLSearchParams(this.endpoint);\r\n\t\t\t\tif (!this._params.sortBy && !url.has('sortBy') && (this.sortBy || this.sorted)) {\r\n\t\t\t\t\tthis._params.sortBy = this.sortBy || this.text;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.http.get(this.endpoint, { params: this._params, headers: headers }).subscribe(x => {\r\n\t\t\t\t\tthis.options = x;\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A callback method that is invoked immediately after\r\n\t * Angular has completed initialization of a component's view.\r\n\t * It is invoked only once when the view is instantiated.\r\n\t *\r\n\t */\r\n\tngAfterViewInit(): void {\r\n\t\tthis.selectEl?.openedChange?.subscribe(x => {\r\n\t\t\tif (x && this.filterable) {\r\n\t\t\t\tthis.filterInput?.nativeElement.focus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Write a new value to the element.\r\n\t */\r\n\twriteValue(value: any) {\r\n\t\tthis.value = value;\r\n\t\tthis.onChange(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Handels filter event\r\n\t * @param searchText \r\n\t */\r\n\tpublic handleFilter(searchText: string): void {\r\n\t\tsearchText = searchText.toLowerCase();\r\n\t\tthis.filteredOptions = this.options.filter((x: any) => x[this.text]?.toLowerCase().search(searchText) > -1);\r\n\t}\r\n\r\n\t/**\r\n\t * Set the function to be called when the control receives a change event.\r\n\t */\r\n\tregisterOnChange(fn: (_: any) => void): void { this.onChange = fn; }\r\n\r\n\t/**\r\n\t * Set the function to be called when the control receives a touch event.\r\n\t */\r\n\tregisterOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n\r\n\t/**\r\n\t * Called when the control receives a change event.\r\n\t */\r\n\tonChange = (_) => { };\r\n\r\n\t/**\r\n\t * Called when the control receives a touch event.\r\n\t */\r\n\tonTouched = () => { };\r\n}","import { CdkColumnDef } from '@angular/cdk/table';\r\nimport { Component, forwardRef, Input } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { MatTable } from '@angular/material/table';\r\n\r\n@Component({\r\n\tselector: 'mat-header-cell[filter-date],[mat-header-cell][filter-date]',\r\n\ttemplate: `\r\n\t\t<mat-form-field flex>\r\n\t\t\t<input matInput [matDatepicker]=\"picker\" [ngModel]=\"value\" (ngModelChange)=\"handleSearch($event)\"\r\n\t\t\t(click)=\"picker.open()\" [placeholder]=\"placeholder\" (search)=\"handleSearch($event)\" (keyup.enter)=\"handleSearch($event)\"\r\n\t\t\treadonly>\r\n\t\t\t<button type=\"button\" mat-button matSuffix mat-icon-button aria-label=\"Clear\" *ngIf=\"value\" (click)=\"clearSearch()\">\r\n\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t</button>\r\n\t\t\t<mat-datepicker #picker></mat-datepicker>\r\n\t\t</mat-form-field>`,\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALUE_ACCESSOR,\r\n\t\t\tuseExisting: forwardRef(() => FilterDateComponent),\r\n\t\t\tmulti: true\r\n\t\t}\r\n\t]\r\n})\r\nexport class FilterDateComponent implements ControlValueAccessor {\r\n\r\n\t/**\r\n\t * Field name\r\n\t */\r\n\t@Input() field: string = '';\r\n\r\n\t/**\r\n\t * debounce?: number\r\n\t * Debounce timeout between keypresses. Defaults to 400.\r\n\t */\r\n\t@Input('debounce') debounce: number = 400;\r\n\r\n\t/**\r\n\t * placeholder?: string\r\n\t * Placeholder for the underlying input component.\r\n\t */\r\n\t@Input('placeholder') placeholder: string = 'Filter...';\r\n\r\n\t/**\r\n\t * Setters and getters for the input value\r\n\t */\r\n\tget value(): any { return this.table.dataSource['fieldFilters'][this.field]; };\r\n\tset value(v: any) {\r\n\t\tif (v !== this.table.dataSource['fieldFilters'][this.field]) {\r\n\t\t\tthis.table.dataSource['fieldFilters'][this.field] = v;\r\n\t\t\tthis.table.dataSource['paginator']['pageIndex'] = 0;\r\n\t\t\tthis.onChange(v);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param table \r\n\t */\r\n\tconstructor(private table: MatTable<any>, private column: CdkColumnDef) {\r\n\t\tthis.field = this.column.name.replace('filter.', '');\r\n\t}\r\n\r\n\t/**\r\n\t * Call serch event\r\n\t */\r\n\thandleSearch(date: any): void {\r\n\t\tif (date instanceof Date) {\r\n\t\t\tthis.value = `${date.getFullYear()}-${this.pad(date.getMonth() + 1, 2)}-${this.pad(date.getDate(), 2)}`;\r\n\t\t} else {\r\n\t\t\tthis.value = `${date.year()}-${this.pad(date.month() + 1, 2)}-${this.pad(date.date(), 2)}`;\r\n\t\t}\r\n\r\n\t\tthis.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Clears input box\r\n\t */\r\n\tclearSearch(): void {\r\n\t\tif (this.value != '') {\r\n\t\t\tthis.value = '';\r\n\t\t\tthis.reload();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Write a new value to the element.\r\n\t */\r\n\twriteValue(value: any) {\r\n\t\tthis.value = value;\r\n\t}\r\n\r\n\t/**\r\n\t * Set the function to be called when the control receives a change event.\r\n\t */\r\n\tregisterOnChange(fn: (_: any) => void): void { this.onChange = fn; }\r\n\r\n\t/**\r\n\t * Set the function to be called when the control receives a touch event.\r\n\t */\r\n\tregisterOnTouched(fn: () => void): void { this.onTouched = fn; }\r\n\r\n\t/**\r\n\t * Called when the control receives a change event.\r\n\t */\r\n\tonChange = (_) => { };\r\n\r\n\t/**\r\n\t * Called when the control receives a touch event.\r\n\t */\r\n\tonTouched = () => { };\r\n\r\n\t/**\r\n\t * Reload data\r\n\t */\r\n\tprivate reload = () => this.table.dataSource['reload']();\r\n\r\n\t/**\r\n\t * Adds leading zeros to a digit\r\n\t */\r\n\tprivate pad = (num, size) => { return ('0' + num).substr(-size) };\r\n}","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { DataSource } from '@angular/cdk/table';\r\nimport { MatCheckboxChange } from '@angular/material/checkbox';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { BehaviorSubject, merge, Observable, of as observableOf } from 'rxjs';\r\nimport { catchError, map, skip, switchMap } from 'rxjs/operators';\r\nimport { Utils } from '../common/functions/utils';\r\nimport { GenericService } from '../http/services/generic.service';\r\nimport { Pagination } from './models/pagination';\r\n\r\n/**\r\n * A generic datasource for data-table\r\n */\r\nexport class TableDataSource<TEntity, TService extends GenericService<TEntity>> extends DataSource<TEntity> {\r\n\r\n\t/**\r\n\t * Represents a value that changes over time. \r\n\t * Observers can subscribe to the subject to receive filter changes\r\n\t */\r\n\tprivate _filterChange = new BehaviorSubject('');\r\n\r\n\t/**\r\n\t * onDataLoaded: function($event)\r\n\t * Event emitted after the data is loaded\r\n\t */\r\n\tpublic _reloadChange = new BehaviorSubject<number>(0);\r\n\r\n\t/**\r\n\t * onDataLoaded: function($event)\r\n\t * Event emitted after the data is loaded\r\n\t */\r\n\tpublic onDataLoaded = new BehaviorSubject<Pagination<TEntity>>(null);\r\n\r\n\t/**\r\n\t * Used to power selecting one or more options from a list.\r\n\t */\r\n\tpublic selectionModel = new SelectionModel<TEntity>(true, []);\r\n\r\n\t/**\r\n\t * Gets filter\r\n\t */\r\n\tget filter(): string { return this._filterChange.value; }\r\n\r\n\t/**\r\n\t * Sets filter\r\n\t */\r\n\tset filter(filter: string) {\r\n\t\tif (this.paginator) {\r\n\t\t\tthis.paginator.pageIndex = 0;\r\n\t\t\tthis.pageIndex = 0;\r\n\t\t}\r\n\r\n\t\tthis._filterChange.next(filter);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets reload token\r\n\t */\r\n\tget reloadToken(): number { return this._reloadChange.value; }\r\n\r\n\t/**\r\n\t * The navigations to includes\r\n\t */\r\n\tpublic includes: Array<string> = [];\r\n\r\n\t/**\r\n\t * The columns to be projected\r\n\t */\r\n\tpublic projection: string;\r\n\r\n\t/**\r\n\t * The list of items\r\n\t */\r\n\tpublic items: TEntity[] = [];\r\n\r\n\t/**\r\n\t * Used to add some field filters\r\n\t */\r\n\tpublic fieldFilters: any = {};\r\n\r\n\t/**\r\n\t * Used to add some field operators\r\n\t */\r\n\tpublic fieldOperators: any = {};\r\n\r\n\t/**\r\n\t * Used to add some static field filters\r\n\t */\r\n\tpublic staticFieldFilters: any = {};\r\n\r\n\t/**\r\n\t * The current page index.\r\n\t */\r\n\tpublic pageIndex: number = 0;\r\n\r\n\t/**\r\n\t * The current total number of items being paged\r\n\t */\r\n\tpublic total: number = 0;\r\n\r\n\t/**\r\n\t * The current page size\r\n\t */\r\n\tpublic pageSize: number = 15;\r\n\r\n\t/**\r\n\t * Number of pages\r\n\t */\r\n\tpublic pageCount: number = 0;\r\n\r\n\t/**\r\n\t * A flag to show loading process\r\n\t */\r\n\tpublic isLoading: boolean = true;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param service \r\n\t * @param paginator \r\n\t * @param sort \r\n\t */\r\n\tconstructor(\r\n\t\tpublic service: TService,\r\n\t\tpublic paginator: MatPaginator,\r\n\t\tpublic sort: MatSort\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\t/**\r\n\t * Connects a collection viewer (such as a data-table) to this data source.\r\n\t * @param collectionViewer The component that exposes a view over the data provided by this\r\n\t * data source.\r\n\t * @returns Observable that emits a new value when the data changes.\r\n\t */\r\n\tconnect(): Observable<TEntity[]> {\r\n\t\t/* A list of fields to observe */\r\n\t\tconst displayDataChanges = [\r\n\t\t\tthis.sort?.sortChange,\r\n\t\t\tthis.paginator?.page || 1,\r\n\t\t\tthis._filterChange,\r\n\t\t\tthis._reloadChange\r\n\t\t];\r\n\r\n\t\t/* If the user changes the sort order, reset back to the first page */\r\n\t\tthis.sort.sortChange.subscribe(() => { this.paginator.pageIndex = 0; });\r\n\r\n\t\treturn merge(...displayDataChanges)\r\n\t\t\t.pipe(\r\n\t\t\t\tskip(1),\r\n\t\t\t\tswitchMap(() => {\r\n\t\t\t\t\t/* Flip flag to show that loading has begun */\r\n\t\t\t\t\tthis.isLoading = true;\r\n\r\n\t\t\t\t\t/* Remove empty filters */\r\n\t\t\t\t\tObject.keys(this.fieldFilters).forEach((key) => ((this.fieldFilters[key] == null || this.fieldFilters[key] == '' || this.fieldFilters[key] == 'undefined')) && this.fieldFilters[key] != 0 && delete this.fieldFilters[key]);\r\n\t\t\t\t\tObject.keys(this.staticFieldFilters).forEach((key) => ((this.staticFieldFilters[key] == null || this.staticFieldFilters[key] == '' || this.staticFieldFilters[key] == 'undefined')) && this.staticFieldFilters[key] != 0 && delete this.staticFieldFilters[key]);\r\n\r\n\t\t\t\t\t/* Load data and return it */\r\n\t\t\t\t\treturn this.service.getList(Object.assign({\r\n\t\t\t\t\t\tincludes: this.includes,\r\n\t\t\t\t\t\tprojection: this.projection,\r\n\t\t\t\t\t\tpage: this.paginator.pageIndex + 1,\r\n\t\t\t\t\t\tpageSize: this.paginator.pageSize,\r\n\t\t\t\t\t\tsearch: this.filter.toLowerCase(),\r\n\t\t\t\t\t\tsortBy: this.sort.active,\r\n\t\t\t\t\t\tsortOrder: this.sort.direction\r\n\t\t\t\t\t}, Utils.cleanObject(this.fieldFilters) || {}, this.staticFieldFilters), null, { 'CheckOut': 'Yes' });\r\n\t\t\t\t}),\r\n\t\t\t\tmap((result: any) => {\r\n\t\t\t\t\t/* Flip flag to show that loading has finished */\r\n\t\t\t\t\tthis.isLoading = false;\r\n\r\n\t\t\t\t\t/* Update pagination fields */\r\n\t\t\t\t\tthis.pageIndex = Math.max(Math.min(result.page - 1, result.pageCount - 1), 0);\r\n\t\t\t\t\tthis.total = result.total;\r\n\t\t\t\t\tthis.pageSize = result.pageSize;\r\n\t\t\t\t\tthis.pageCount = result.pageCount;\r\n\t\t\t\t\tthis.items = result.items;\r\n\r\n\t\t\t\t\t/* Raise onload event */\r\n\t\t\t\t\tthis.onDataLoaded.next(result);\r\n\r\n\t\t\t\t\treturn this.items;\r\n\t\t\t\t}),\r\n\t\t\t\tcatchError(() => {\r\n\t\t\t\t\t/* Flip flag to show that loading has finished */\r\n\t\t\t\t\tthis.isLoading = false;\r\n\r\n\t\t\t\t\treturn observableOf([]);\r\n\t\t\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Disconnects a collection viewer (such as a data-table) from this data source. Can be used\r\n\t * to perform any clean-up or tear-down operations when a view is being destroyed.\r\n\t *\r\n\t * @param collectionViewer The component that exposes a view over the data provided by this\r\n\t * data source.\r\n\t */\r\n\tdisconnect(): void { }\r\n\r\n\t/**\r\n\t * Reloads items\r\n\t * @param clearSelection \r\n\t */\r\n\tpublic reload(clearSelection: boolean = true): void {\r\n\t\tthis._reloadChange.next(Math.random());\r\n\r\n\t\tif (clearSelection) {\r\n\t\t\tthis.selectionModel.clear();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Clears field filters\r\n\t */\r\n\tpublic clearFilters(newFilters: any = {}): void {\r\n\t\tthis.fieldFilters = newFilters || {};\r\n\t\tthis.reload();\r\n\t}\r\n\r\n\t/**\r\n\t * Checks, whether all items are selected\r\n\t */\r\n\tpublic isAllSelected(): boolean {\r\n\t\tif (this.selectionModel.isEmpty()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn this.selectionModel.selected.length === this.total;\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles selected items\r\n\t * @param checkbox \r\n\t * @param predicate\r\n\t */\r\n\tpublic toggleSelect(checkbox: MatCheckboxChange, predicate?: (value: TEntity, index: number, array: TEntity[]) => unknown) {\r\n\t\tif (this.selectionModel.hasValue()) {\r\n\t\t\tthis.selectionModel.clear();\r\n\t\t\tcheckbox.source.checked = false;\r\n\t\t} else {\r\n\t\t\tthis.items.filter(predicate ? predicate : x => x)\r\n\t\t\t\t.filter(x => !x['locked'])\r\n\t\t\t\t.forEach(data => this.selectionModel.select(data));\r\n\r\n\t\t\tif (this.selectionModel.selected.length !== this.total) {\r\n\t\t\t\tcheckbox.source.checked = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Get selected Items\r\n\t */\r\n\tpublic getSelected = <TType>(key: string): TType[] => this.selectionModel.selected.map(x => x[key]);\r\n\r\n\t/**\r\n\t * Get selected Items\r\n\t */\r\n\tpublic getSelectedIds = (): number[] => this.getSelected<number>('id');\r\n}","import { Component } from '@angular/core';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { TableDataSource } from '../table.data-source';\r\nimport { TableStaticDataSource } from '../table.static-data-source';\r\n\r\n@Component({\r\n\tselector: 'mat-header-cell[filter-clear],[mat-header-cell][filter-clear]',\r\n\ttemplate: `\r\n\t\t<button type=\"button\" mat-icon-button (click)=\"clear()\">\r\n\t\t\t<mat-icon>backspace</mat-icon>\r\n\t\t</button>`,\r\n})\r\nexport class FilterClearComponent {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param table \t\r\n\t */\r\n\tconstructor(private table: MatTable<any>) { }\r\n\r\n\t/**\r\n\t * Clears filters\r\n\t */\r\n\tclear(): void {\r\n\t\tif (this.table.dataSource instanceof TableDataSource) {\r\n\t\t\t(<TableDataSource<any, any>>this.table.dataSource).clearFilters();\r\n\t\t} else if (this.table.dataSource instanceof TableStaticDataSource) {\r\n\t\t\t(<TableStaticDataSource<any>>this.table.dataSource).clearFilters();\r\n\t\t}\r\n\t}\r\n}","import { Directive, Input, OnInit } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { TableDataSource } from '../table.data-source';\r\n\r\n@Directive({\r\n\tselector: '[dataSourceFilter]'\r\n})\r\nexport class DataSourceFilterDirective implements OnInit {\r\n\t/**\r\n\t * DataSource instance\r\n\t */\r\n\t@Input()\r\n\tpublic dataSource: TableDataSource<any, any>;\r\n\r\n\t/**\r\n\t * Represents a value that changes over time. \r\n\t * Observers can subscribe to the subject to receive filter changes\r\n\t */\r\n\tprivate _queryChange = new BehaviorSubject(null);\r\n\r\n\t/**\r\n\t * Sets query\r\n\t */\r\n\t@Input()\r\n\tset dataSourceFilter(query: any) { this._queryChange.next(query); }\r\n\r\n\t/**\r\n\t * Gets query\r\n\t */\r\n\tget dataSourceFilter(): any { return this._queryChange.value; }\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties of a directive are initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tthis._queryChange.subscribe(() => {\r\n\r\n\t\t\t/* Update the filters */\r\n\t\t\tObject.assign(this.dataSource.staticFieldFilters || {}, this.dataSourceFilter != null ? this.dataSourceFilter : {});\r\n\r\n\t\t\t/* Reload data */\r\n\t\t\tthis.dataSource.reload();\r\n\t\t});\r\n\t}\r\n}","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, EventEmitter, HostListener, Input, OnInit, Output, QueryList, ViewChild, ViewChildren, ViewContainerRef } from '@angular/core';\r\nimport { MatMenuTrigger } from '@angular/material/menu';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { Utils } from '../../../common/functions/utils';\r\nimport { DynamicBuilder } from '../../../common/helpers/dynamic-builder';\r\nimport { TableColumnType } from '../../enums/table-column-type';\r\nimport { getTableDefinition } from '../../functions/functions';\r\nimport { TableColumn } from '../../models/table-column';\r\nimport { TableMenuItem } from '../../models/table-menu-item';\r\nimport { TableDataSource } from '../../table.data-source';\r\nimport { TableStaticDataSource } from '../../table.static-data-source';\r\n\r\n@Component({\r\n\tselector: 'vd-dynamic-table',\r\n\ttemplateUrl: 'dynamic-table.component.html',\r\n\tstyleUrls: ['dynamic-table.component.scss'],\r\n\tanimations: [\r\n\t\ttrigger('detailExpand', [\r\n\t\t\tstate('collapsed', style({ display: 'none' })),\r\n\t\t\tstate('expanded', style({ display: 'initial' })),\r\n\t\t\ttransition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\r\n\t\t]),\r\n\t],\r\n})\r\nexport class VdDynamicTableComponent implements OnInit {\r\n\t/**\r\n\t * detailsTemplate: ViewContainerRef\r\n\t */\r\n\t@ViewChild('table')\r\n\tpublic table: MatTable<any>;\r\n\r\n\t/**\r\n\t * detailsTemplate: ViewContainerRef\r\n\t */\r\n\t@ViewChildren('detailsTemplate', { read: ViewContainerRef })\r\n\tpublic detailsTemplateRef: QueryList<any>;\r\n\r\n\t/**\r\n\t * Data-table datasource\r\n\t */\r\n\t@Input()\r\n\tpublic dataSource: TableDataSource<any, any> | any;\r\n\r\n\t/**\r\n\t * Table data\r\n\t */\r\n\t@Input()\r\n\tset data(data: any) {\r\n\t\tthis.dataSource = new TableStaticDataSource(data);\r\n\t\tthis.dataSource.sort = this.matSort;\r\n\t\tthis.dataSource.paginator = this._paginator;\r\n\t\tthis.paginable = true;\r\n\t};\r\n\r\n\t/**\r\n\t * Class type\r\n\t */\r\n\t@Input()\r\n\tpublic classType: any;\r\n\r\n\t/**\r\n\t * dataSourceFilter: any\r\n\t */\r\n\t@Input()\r\n\tpublic dataSourceFilter: any = {};\r\n\r\n\t/**\r\n\t * filterable?\r\n\t */\r\n\t@Input()\r\n\tpublic filterable: boolean = true;\r\n\r\n\t/**\r\n\t * paginable?\r\n\t */\r\n\t@Input()\r\n\tpublic paginable: boolean = false;\r\n\r\n\t/**\r\n\t * Shows the column 'Checkbox'\r\n\t */\r\n\t@Input()\r\n\tpublic selectable: boolean = false;\r\n\r\n\t/**\r\n\t * Current sort column\r\n\t */\r\n\t@Input()\r\n\tpublic sortActive: string;\r\n\r\n\t/**\r\n\t * Current sort direction\r\n\t */\r\n\t@Input()\r\n\tpublic sortDirection: string;\r\n\r\n\t/**\r\n\t * Sticky header\r\n\t */\r\n\t@Input()\r\n\tpublic stickyHeader: boolean = true;\r\n\r\n\t/**\r\n\t * Sticky filter\r\n\t */\r\n\t@Input()\r\n\tpublic stickyFilter: boolean = true;\r\n\r\n\t/**\r\n\t * Row click event\r\n\t */\r\n\t@Output()\r\n\tpublic rowClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * rowNgClass: Function\r\n\t */\r\n\t@Input()\r\n\tpublic rowNgClass: Function;\r\n\r\n\t/**\r\n\t * detailsTemplate: Function\r\n\t */\r\n\t@Input()\r\n\tpublic detailsTemplate: string;\r\n\r\n\t/**\r\n\t * _readonly: boolean;\r\n\t */\r\n\tpublic _readonly: boolean = false;\r\n\r\n\t/**\r\n\t * readonly: boolean;\r\n\t */\r\n\t@Input()\r\n\tget readonly() { return this._readonly; }\r\n\tset readonly(readonly) {\r\n\t\tthis._readonly = coerceBooleanProperty(readonly);\r\n\t}\r\n\r\n\t/**\r\n\t * selectAllFilter: Function\r\n\t */\r\n\t@Input()\r\n\tpublic selectAllFilter: (value: any, index: number, array: any[]) => unknown;\r\n\r\n\t/**\r\n\t * A reference to MdSort attribute\r\n\t */\r\n\t@ViewChild(MatSort, { static: true })\r\n\tpublic matSort: MatSort;\r\n\r\n\t/**\r\n\t * _paginator: MatPaginator\r\n\t */\r\n\tprivate _paginator: MatPaginator;\r\n\r\n\t/**\r\n\t * paginator: MatPaginator\r\n\t */\r\n\t@ViewChild(MatPaginator)\r\n\tset paginator(paginator: MatPaginator) {\r\n\t\tif (paginator) {\r\n\t\t\tthis.dataSource.paginator = paginator;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * _columns: TableColumn[]\r\n\t */\r\n\tprivate _columns: TableColumn[] = [];\r\n\r\n\t/**\r\n\t * columns: Column[]\r\n\t */\r\n\t@Input()\r\n\tget columns(): TableColumn[] { return this._columns; };\r\n\tset columns(columns: TableColumn[]) {\r\n\t\tthis._columns = columns;\r\n\t};\r\n\r\n\t/**\r\n\t * Table row menu items\r\n\t */\r\n\t@Input()\r\n\tpublic rowMenuItems: TableMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Columns to exclude\r\n\t */\r\n\t@Input()\r\n\tpublic excludedColumns: string[] = [];\r\n\r\n\t/**\r\n\t * Reference to the MatMenuTrigger in the DOM\r\n\t */\r\n\t@ViewChildren(MatMenuTrigger)\r\n\tpublic rowContextMenuTriggers: QueryList<MatMenuTrigger>;\r\n\r\n\t/**\r\n\t * ColumnType: ColumnType\r\n\t */\r\n\tpublic ColumnType: typeof TableColumnType = TableColumnType;\r\n\r\n\t/**\r\n\t * Displayed columns\r\n\t */\r\n\tpublic displayedColumns: string[] = [];\r\n\r\n\t/**\r\n\t * Displayed filter columns\r\n\t */\r\n\tpublic displayedFilterColumns: string[] = [];\r\n\r\n\t/**\r\n\t * expandedRow: any\r\n\t */\r\n\tpublic expandedRow: any;\r\n\r\n\t/**\r\n\t * Page size options\r\n\t */\r\n\tpublic pageSizeOptions: Array<number> = [5, 10, 15, 20, 30, 50, 100, 200];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(private dynamicBuilder: DynamicBuilder) { }\r\n\r\n\t/**\r\n\t * A callback method that is invoked immediately after the\r\n\t * default change detector has checked the directive's\r\n\t * data-bound properties for the first time,\r\n\t * and before any of the view or content children have been checked.\r\n\t * It is invoked only once when the directive is instantiated.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tif (this.classType) {\r\n\t\t\tvar tableDefinition = getTableDefinition(new this.classType);\r\n\t\t\tif (tableDefinition) {\r\n\t\t\t\tthis.columns = [...tableDefinition.columns];\r\n\t\t\t\tif (this.rowMenuItems?.length > 0) {\r\n\t\t\t\t\t/* Check if the action column already exists */\r\n\t\t\t\t\tvar actionColmun = this._columns?.find(x => x.name == 'action');\r\n\r\n\t\t\t\t\t/* If so, just add the menu items to it */\r\n\t\t\t\t\tif (actionColmun != null) {\r\n\t\t\t\t\t\tactionColmun.rowMenuItems = [];\r\n\t\t\t\t\t\tthis.rowMenuItems.forEach(y => actionColmun.rowMenuItems.unshift(y));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Otherwise add a new one */\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tthis._columns.push(new TableColumn({\r\n\t\t\t\t\t\t\tindex: 2000,\r\n\t\t\t\t\t\t\tname: 'action',\r\n\t\t\t\t\t\t\ttype: TableColumnType.Action,\r\n\t\t\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\t\t\trowMenuItems: this.rowMenuItems\r\n\t\t\t\t\t\t}));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Add checkbox column */\r\n\t\t\t\tif (this.selectable) {\r\n\t\t\t\t\tthis.columns.unshift({ name: 'select', type: TableColumnType.Checkbox });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Build displayed columns & filter */\r\n\t\tthis.displayedColumns = this.columns?.filter(x => !this.excludedColumns?.includes(x.name))?.map(c => c.name);\r\n\t\tthis.displayedFilterColumns = this.columns?.filter(x => !this.excludedColumns?.includes(x.name))?.map(c => `filter.${(c.filter || c.name)}`);\r\n\t}\r\n\r\n\t/**\r\n\t * Counts visible action menus\r\n\t * @param row \r\n\t * @param column \r\n\t * @returns \r\n\t */\r\n\tpublic hasVisibleRowMenuItems(row: any, column: TableColumn) {\r\n\t\treturn column?.rowMenuItems?.filter(x => !x.hide || !x.hide(row))?.length > 0;\r\n\t}\r\n\r\n\t/**\r\n\t * A function to to compute the identity of items in an iterable.\r\n\t * @param index \r\n\t * @param item \r\n\t */\r\n\tpublic trackBy(index: number, item: any): string {\r\n\t\treturn `${item.id}`;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles row click event\r\n\t * @param index \r\n\t * @param row \r\n\t */\r\n\tpublic handleRowClick(index: any, row: any): void {\r\n\t\tif (this.detailsTemplate) {\r\n\t\t\tthis.expandedRow = this.expandedRow === row ? null : row;\r\n\t\t\tthis.dynamicBuilder.compileHtml(this.detailsTemplateRef.get(index), this.detailsTemplate, row);\r\n\t\t} else {\r\n\t\t\tthis.rowClick.emit(row);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method called when the user click with the right button\r\n\t * @param event MouseEvent, it contains the coordinates\r\n\t * @param item Our data contained in the row of the table\r\n\t */\r\n\tpublic handleRowRightClick(event: MouseEvent, item: any) {\r\n\t\tthis.rowContextMenuTriggers?.toArray()?.forEach(x => x.closeMenu());\r\n\t\tvar menuTrigger = this.rowContextMenuTriggers?.toArray()?.filter(x => x['_element']?.nativeElement?.getAttribute('id') == `menu-${item.id}`)[0];\r\n\t\tif (menuTrigger != null) {\r\n\t\t\t/* Avoids to show the visualization of the right-click menu of the browser */\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\t// /* Remove grey color from all rows */\r\n\t\t\t// (event.target as Element)?.closest('table')?.querySelectorAll('tr')?.forEach(x => x.classList?.remove('bgc-grey-100'));\r\n\r\n\t\t\t// /* Add grey color to the row to make hover effect */\r\n\t\t\t// (event.target as Element)?.closest('tr')?.classList.add('bgc-grey-100');\r\n\r\n\t\t\t/* Set the position of the menu */\r\n\t\t\tmenuTrigger['_element']?.nativeElement?.setAttribute('style', `position: fixed; left: ${event.clientX}px; top: ${event.clientY}px`);\r\n\r\n\t\t\t/* Pass to the menu the current object */\r\n\t\t\tmenuTrigger.menuData = { item: item }\r\n\r\n\t\t\t/* Open the menu */\r\n\t\t\tmenuTrigger.openMenu();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Patches an entity\r\n\t * @param row \r\n\t * @param fieldName \r\n\t * @param path \r\n\t */\r\n\tpublic patch(row: any, fields: Array<string>, value: any, includes: any): void {\r\n\t\t/* Get entity by ID */\r\n\t\tlet entity = this.dataSource.items?.filter(x => (<any>x).id === row.id)[0];\r\n\t\tif (entity) {\r\n\t\t\t/* Build patch methods */\r\n\t\t\tlet patches = fields.map(x => { return { op: 'replace', path: `/${x}`, value: value != undefined ? value : entity[x] }; });\r\n\r\n\t\t\t/* Send request */\r\n\t\t\tthis.dataSource.service\r\n\t\t\t\t.patch(row.id, patches, null, { headers: { 'Show-Message': 'Yes' }, params: includes ? Utils.toHttpParams({ includes: includes }) : null })\r\n\t\t\t\t.subscribe((_: any) => this.dataSource.reload());\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Renders rows based on the table's latest set of data, which was either provided directly as an\r\n\t * input or retrieved through an Observable stream (directly or from a DataSource).\r\n\t * Checks for differences in the data since the last diff to perform only the necessary\r\n\t * changes (add/remove/move rows).\r\n\t */\r\n\tpublic renderRows(): void {\r\n\t\tthis.table.renderRows();\r\n\t}\r\n\r\n\t/**\r\n\t * Responds to user-initiated events\r\n\t * @param event \r\n\t */\r\n\t@HostListener('document:contextmenu', ['$event'])\r\n\thandleContextMenuEvent(event: PointerEvent) {\r\n\t\t/* Avoids to show the visualization of the right-click menu of the browser */\r\n\t\tevent.preventDefault();\r\n\r\n\t\t/* Close all open menus */\r\n\t\tif ((event.target as any)?.classList?.contains('cdk-overlay-backdrop')) {\r\n\t\t\tthis.rowContextMenuTriggers?.toArray()?.forEach(x => x.closeMenu());\r\n\t\t}\r\n\t}\r\n}","<div class=\"loading-progress\">\r\n\t<mat-progress-bar mode=\"indeterminate\" *ngIf=\"dataSource?.isLoading\"></mat-progress-bar>\r\n</div>\r\n\r\n<!-- #region Data table -->\r\n<table mat-table #table [dataSource]=\"dataSource\" [dataSourceFilter]=\"dataSourceFilter\" [ngClass]=\"{'table-fixed': !detailsTemplate}\" [trackBy]=\"trackBy\" matSort matSortDisableClear [matSortActive]=\"sortActive||'id'\" [matSortDirection]=\"sortDirection\" multiTemplateDataRows>\r\n\t<ng-container [ngSwitch]=\"column.type\" *ngFor=\"let column of columns\">\r\n\t\t<!-- #region Checkbox for selection -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Checkbox\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef>\r\n\t\t\t\t<mat-checkbox (change)=\"$event ? dataSource.toggleSelect($event, selectAllFilter) : null\" [disabled]=\"!dataSource.paginator?.length\" [checked]=\"dataSource.selectionModel.hasValue() && dataSource.isAllSelected()\" [indeterminate]=\"dataSource.selectionModel.hasValue() && !dataSource.isAllSelected()\"></mat-checkbox>\r\n\t\t\t</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\">\r\n\t\t\t\t<mat-checkbox (click)=\"$event.stopPropagation()\" (change)=\"$event ? dataSource.selectionModel.toggle(row) : null\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row)))\" [checked]=\"dataSource.selectionModel.isSelected(row)\"></mat-checkbox>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Enum column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Enum\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span i18n=\"@@selection\">{column.content(row) | enum:column.enumType:column.enumPrefix, select, type {type} other {{{column.content(row) | enum:column.enumType:column.enumPrefix}}}}</span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Toggle column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Toggle\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" (click)=\"$event.stopPropagation()\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<mat-slide-toggle [(ngModel)]=\"row[column.name]\" (ngModelChange)=\"column.event?(column.eventArgs?column.event(row,column.eventArgs):column.event(row)):null\" [disabled]=\"readonly || (column.disable && column.disable(row))\" color=\"primary\"></mat-slide-toggle>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Date column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Date\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span *ngIf=\"!column.shortDate\">{{column.content(row) | date:'dd.MM.yyyy HH:mm:ss'}}</span>\r\n\t\t\t\t<span *ngIf=\"column.shortDate\">{{column.content(row) | date:'dd.MM.yyyy'}}</span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Action -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" (click)=\"$event.stopPropagation()\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<ng-container *ngIf=\"column.rowMenuItems?.length > 0\">\r\n\t\t\t\t\t<div id=\"menu-{{row.id}}\" style=\"visibility: hidden; position: fixed;\" #contextMenuTrigger=\"matMenuTrigger\" [matMenuTriggerFor]=\"menu\" *ngIf=\"!row.locked && hasVisibleRowMenuItems(row, column)\"></div>\r\n\t\t\t\t\t<button type=\"button\" mat-icon-button [mat-menu-trigger-for]=\"menu\" [disabled]=\"row.locked || !hasVisibleRowMenuItems(row, column)\">\r\n\t\t\t\t\t\t<mat-icon>more_vert</mat-icon>\r\n\t\t\t\t\t</button>\r\n\t\t\t\t\t<mat-menu x-position=\"before\" #menu=\"matMenu\">\r\n\t\t\t\t\t\t<ng-container *ngFor=\"let menuItem of column.rowMenuItems\">\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"!menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item (click)=\"menuItem.event?menuItem.event(row):null\" *ngIf=\"!menuItem.hide || !menuItem.hide(row)\" [disabled]=\"menuItem.disable && menuItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t<span>{{menuItem.title}}</span>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t<ng-container *ngIf=\"menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t<mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n\t\t\t\t\t\t\t\t\t<ng-container *ngFor=\"let menuSubItem of menuItem.subItems\">\r\n\t\t\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event(row):null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide(row)\" [disabled]=\"menuSubItem.disable && menuSubItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuSubItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t\t\t<span>{{menuSubItem.title}}</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t\t\t</mat-menu>\r\n\t\t\t\t\t\t\t\t<button type=\"button\" mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide(row)\" [disabled]=\"menuItem.disable && menuItem.disable(row)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n\t\t\t\t\t\t\t\t\t<span>{{menuItem.title}}</span>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t\t</ng-container>\r\n\t\t\t\t\t</mat-menu>\r\n\t\t\t\t</ng-container>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Text Input column -->\r\n\t\t<ng-container *ngSwitchCase=\"ColumnType.TextInput\" [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row; let rowIndex = index\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" (click)=\"$event.preventDefault();$event.stopPropagation();\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<mat-form-field appearance=\"outline\" layout=\"column\" layout-align=\"center start\">\r\n\t\t\t\t\t<input type=\"{{column.inputType}}\" matInput name=\"{{column.name}}{{rowIndex}}\" [(ngModel)]=\"row[column.name]\" [disabled]=\"readonly || (column.disabled || (column.disable && column.disable(row)))\" (ngModelChange)=\"patch(row, [column.name], row[column.name], column.patchIncludes)\" [ngModelOptions]=\"{updateOn: 'blur'}\" (keydown.enter)=\"$event.target.blur();false\">\r\n\t\t\t\t</mat-form-field>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Other column types -->\r\n\t\t<ng-container *ngSwitchDefault [cdkColumnDef]=\"column.name\" [sticky]=\"column.sticky\" [stickyEnd]=\"column.stickyEnd\">\r\n\t\t\t<th mat-header-cell *cdkHeaderCellDef [mat-sort-header]=\"column.sortBy || column.name\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [disabled]=\"column.disabled\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\" [arrowPosition]=\"column.arrowBefore?'before':'after'\">{{column.header}}</th>\r\n\t\t\t<td mat-cell *cdkCellDef=\"let row\" [matTooltip]=\"column.tooltip?column.tooltip(row):null\" [matTooltipClass]=\"column.tooltipClass\" [ngClass]=\"column.cellNgClass?column.cellNgClass(row):{'text-right': column.arrowBefore}\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\">\r\n\t\t\t\t<span *ngIf=\"column.content\" [innerHtml]=\"column.content(row)\"></span>\r\n\t\t\t</td>\r\n\t\t</ng-container>\r\n\t\t<!-- #endregion -->\r\n\t</ng-container>\r\n\r\n\t<!-- #region Filter row -->\r\n\t<ng-container *ngIf=\"dataSource && filterable\">\r\n\t\t<ng-container [ngSwitch]=\"column.type\" *ngFor=\"let column of columns\">\r\n\t\t\t<!-- #region No filter for checkbox -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.None || ColumnType.Checkbox\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Text filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Text\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region TextInput filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.TextInput\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Number filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Number\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-input [onlyNumber]=\"column.filterInputNumber\" [operator]=\"column.filterOperator\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Select filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Select\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [endpoint]=\"column.endpoint\" [options]=\"column.options\" [text]=\"column.filterOptionText || 'name'\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Enum filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Enum\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [enum]=\"column.enumType\" [prefix]=\"column.enumPrefix\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Toggle filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Toggle\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-select [options]=\"column.options\" [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Date filter -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Date\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-date [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\r\n\t\t\t<!-- #region Action filter (clear) -->\r\n\t\t\t<ng-container *ngSwitchCase=\"ColumnType.Action\" cdkColumnDef=\"filter.{{column.filter || column.name}}\">\r\n\t\t\t\t<th mat-header-cell *cdkHeaderCellDef filter-clear [ngStyle]=\"{maxWidth:column.maxWidth?(column.maxWidth+(column.maxWidthUnit || 'px')):null,minWidth:column.minWidth?(column.minWidth+(column.minWidthUnit || 'px')):null,width:column.width?(column.width+(column.widthUnit || 'px')):null}\" [attr.gt-xs]=\"column.showGtXs\" [attr.gt-sm]=\"column.showGtSm\" [attr.gt-md]=\"column.showGtMd\" [attr.gt-lg]=\"column.showGtLg\" [attr.gt-xl]=\"column.showGtXl\" [attr.gt-xxl]=\"column.showGtXxl\"></th>\r\n\t\t\t</ng-container>\r\n\t\t\t<!-- #endregion -->\r\n\t\t</ng-container>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Details column -->\r\n\t<ng-container cdkColumnDef=\"expandedDetail\">\r\n\t\t<td mat-cell *matCellDef=\"let row\" [attr.colspan]=\"displayedColumns.length\">\r\n\t\t\t<div class=\"row-detail\" [@detailExpand]=\"row == expandedRow ? 'expanded' : 'collapsed'\" #detailsTemplate></div>\r\n\t\t</td>\r\n\t</ng-container>\r\n\t<!-- #endregion -->\r\n\r\n\t<ng-container *ngIf=\"filterable\">\r\n\t\t<tr mat-header-row *cdkHeaderRowDef=\"displayedFilterColumns\"></tr>\r\n\t</ng-container>\r\n\t<tr mat-header-row *cdkHeaderRowDef=\"displayedColumns; sticky: stickyFilter\"></tr>\r\n\t<tr mat-row *cdkRowDef=\"let row; columns: displayedColumns; let index = dataIndex\" [ngClass]=\"rowNgClass?rowNgClass(row):null\" [class.expanded-row]=\"expandedRow === row\" (click)=\"handleRowClick(index, row)\" (contextmenu)=\"handleRowRightClick($event, row)\"></tr>\r\n\t<ng-container *ngIf=\"detailsTemplate\">\r\n\t\t<tr mat-row *cdkRowDef=\"let row; columns: ['expandedDetail']\" class=\"detail-row\" [ngClass]=\"rowNgClass?rowNgClass(row):null\"></tr>\r\n\t</ng-container>\r\n</table>\r\n<!-- #endregion -->\r\n\r\n<!-- #region Row shown when there is no matching data.-->\r\n<div class=\"mat-cell pad tc-grey-700 bgc-grey-200 txt-italic\" *ngIf=\"!dataSource.filteredData?.length && !dataSource.total\" i18n=\"@@noResultsFound\">No results were found.</div>\r\n<!-- #endregion -->\r\n\r\n<mat-paginator *ngIf=\"paginable\" [pageSizeOptions]=\"pageSizeOptions\" showFirstLastButtons=\"true\"></mat-paginator>","import { ChangeDetectorRef, Directive, HostListener, OnDestroy, ViewChild } from '@angular/core';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { saveAs } from 'file-saver';\r\nimport { Subscription } from 'rxjs';\r\nimport { getEndpoint } from '../../common/functions/functions';\r\nimport { Utils } from '../../common/functions/utils';\r\nimport { AppStorage } from '../../common/helpers/app-storage';\r\nimport { IEntity } from '../../common/models/entity';\r\nimport { GenericService } from '../../http/services/generic.service';\r\nimport { VdDynamicTableComponent } from '../../table/components/dynamic-table/dynamic-table.component';\r\nimport { TableColumnType } from '../../table/enums/table-column-type';\r\nimport { getTableDefinition } from '../../table/functions/functions';\r\nimport { TableColumn } from '../../table/models/table-column';\r\nimport { TableMenuItem } from '../../table/models/table-menu-item';\r\nimport { TableDataSource } from '../../table/table.data-source';\r\nimport { BaseComponent } from './base.component';\r\n\r\n/**\r\n * A base list component for components with pagination support\r\n */\r\n// @dynamic\r\n@Directive()\r\nexport abstract class GenericListComponent<TEntity extends IEntity | any, TService extends GenericService<TEntity>> extends BaseComponent implements OnDestroy {\r\n\t/**\r\n\t * List title\r\n\t */\r\n\tpublic subtitle: string = '';\r\n\r\n\t/**\r\n\t * A reference to MdPaginator element\r\n\t */\r\n\t@ViewChild(MatPaginator, { static: true })\r\n\tpublic paginator: MatPaginator;\r\n\r\n\t/**\r\n\t * A reference to MdSort attribute\r\n\t */\r\n\t@ViewChild(MatSort, { static: true })\r\n\tpublic sort: MatSort;\r\n\r\n\t/**\r\n\t * Page size options\r\n\t */\r\n\tpublic pageSizeOptions: Array<number> = [5, 10, 15, 20, 30, 50, 100, 200];\r\n\r\n\t/**\r\n\t * The navigations to includes\r\n\t */\r\n\tpublic includes: Array<string> = [];\r\n\r\n\t/**\r\n\t * The navigations to includes\r\n\t */\r\n\tpublic excludedColumns: Array<string> = [];\r\n\r\n\t/**\r\n\t * Get params\r\n\t */\r\n\tpublic query: any = {};\r\n\r\n\t/**\r\n\t * Data-table datasource\r\n\t */\r\n\tpublic dataSource: TableDataSource<TEntity, TService> | null;\r\n\r\n\t/**\r\n\t * Current sort column\r\n\t */\r\n\tpublic sortActive: string;\r\n\r\n\t/**\r\n\t * Current sort direction\r\n\t */\r\n\tpublic sortDirection: string;\r\n\r\n\t/**\r\n\t * An instance of the class to create the table for\r\n\t */\r\n\tpublic classInstance: any;\r\n\r\n\t/**\r\n\t * columns: TableColumn[] \r\n\t */\r\n\tpublic columns: (TableColumn | string)[] = [];\r\n\r\n\t/**\r\n\t * A reference to MdSort attribute\r\n\t */\r\n\t@ViewChild(VdDynamicTableComponent, { static: true })\r\n\tpublic dynamicTable: VdDynamicTableComponent;\r\n\r\n\t/**\r\n\t * The type of the dialog for creation\r\n\t */\r\n\tpublic addDialogType: any = null;\r\n\r\n\t/**\r\n\t * Shows the column 'Checkbox'\r\n\t */\r\n\tpublic selectable: boolean = true;\r\n\r\n\t/**\r\n\t * If true, show the button 'Add'\r\n\t */\r\n\tpublic addable: boolean = true;\r\n\r\n\t/**\r\n\t * If true, show the menu 'Edit'\r\n\t */\r\n\tpublic editable: boolean = true;\r\n\r\n\t/**\r\n\t * If true, show the menu 'Delete'\r\n\t */\r\n\tpublic deletable: boolean = true;\r\n\r\n\t/**\r\n\t * If true, show the menu 'Download'\r\n\t */\r\n\tpublic downloadable: boolean = false;\r\n\r\n\t/**\r\n\t * If true, show the menu 'Duplicate'\r\n\t */\r\n\tpublic duplicable: boolean = false;\r\n\r\n\t/**\r\n\t * rowNgClass: Function\r\n\t */\r\n\tpublic rowNgClass: Function = null;\r\n\r\n\t/**\r\n\t * rowClick: Function\r\n\t */\r\n\tpublic rowClick: Function = null;\r\n\r\n\t/**\r\n\t * detailsTemplate: Function\r\n\t */\r\n\tpublic detailsTemplate: string = null;\r\n\r\n\t/**\r\n\t * Toolbar menu items\r\n\t */\r\n\tpublic toolbarMenuItems: TableMenuItem[] = [];\r\n\r\n\t/**\r\n\t * Table row menu items\r\n\t */\r\n\tpublic rowMenuItems: TableMenuItem[] = [];\r\n\r\n\t/**\r\n\t * DataLoaded event subscription\r\n\t */\r\n\tprotected dataLoadedSubscription: Subscription;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param service \r\n\t */\r\n\tconstructor(\r\n\t\tpublic service: TService,\r\n\t\tprotected route: ActivatedRoute,\r\n\t\tprotected changeDetectorRef: ChangeDetectorRef,\r\n\t\tpublic classType?: { new(): TEntity }\r\n\t) {\r\n\t\tsuper(route, changeDetectorRef);\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties \r\n\t * of a directive are initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tsuper.ngOnInit();\r\n\r\n\t\t/* Read some params from routing data */\r\n\t\tthis.route.data.subscribe((data: any) => {\r\n\t\t\tObject.assign(this.query, data.query || {});\r\n\t\t\tthis.classType ||= data.classType;\r\n\r\n\t\t\tif (data.columns) {\r\n\t\t\t\tthis.columns = [...(data.columns || [])];\r\n\t\t\t}\r\n\r\n\t\t\tif (data.endpoint) {\r\n\t\t\t\tthis.service.endpoint = data.endpoint;\r\n\t\t\t}\r\n\r\n\t\t\tif (data.includes) {\r\n\t\t\t\tthis.includes = data.includes;\r\n\t\t\t}\r\n\r\n\t\t\tObject.keys(data).forEach(x => {\r\n\t\t\t\tif (this.hasOwnProperty(x) && x != 'columns') {\r\n\t\t\t\t\tthis[x] = data[x];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t/* Get columns from class */\r\n\t\tif (this.classType) {\r\n\t\t\tthis.classInstance = new this.classType();\r\n\r\n\t\t\t/* Get table definition */\r\n\t\t\tvar tableDefinition = getTableDefinition(this.classInstance);\r\n\r\n\t\t\tObject.keys(tableDefinition || {}).forEach(x => {\r\n\t\t\t\tif (this.hasOwnProperty(x)) {\r\n\t\t\t\t\tthis[x] = tableDefinition[x];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/* Get endpoint */\r\n\t\t\tconst endpoint = (getEndpoint(this.classInstance) || tableDefinition?.endpoint);\r\n\t\t\tif (endpoint) {\r\n\t\t\t\tthis.service.endpoint = endpoint;\r\n\t\t\t}\r\n\r\n\t\t\t/* Sort the columns by index */\r\n\t\t\tUtils.sortArray(tableDefinition.columns, 'index');\r\n\r\n\t\t\t/* Sort the columns by index */\r\n\t\t\tthis.columns = [...tableDefinition.columns];\r\n\r\n\t\t\t/* Handle events */\r\n\t\t\tthis.columns?.forEach((x: TableColumn) => {\r\n\t\t\t\tif (typeof x.event === 'string') {\r\n\t\t\t\t\tlet eventName: string = ((x.event) as string);\r\n\t\t\t\t\tx.event = (row: any) => (x.eventArgs ? this[eventName](row, x.eventArgs) : this[eventName](row));\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t/* Hide columns using route data */\r\n\t\t\tthis.route.data.subscribe((data: any) => {\r\n\t\t\t\tthis.columns = this.columns?.filter((x: TableColumn) => !x.hide || !x.hide(data));\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Hide excluded columns */\r\n\t\tthis.columns = this.columns?.filter((x: TableColumn) => !this.excludedColumns?.includes(x.name));\r\n\r\n\t\t/* Add list mneu items */\r\n\t\tthis.addToolbarMenuItems();\r\n\r\n\t\tif (this.dynamicTable) {\r\n\t\t\t/* Add menu items for each row */\r\n\t\t\tthis.addRowMenuItems();\r\n\r\n\t\t\t/* Check if the action column already exists */\r\n\t\t\tvar actionColmun = (this.columns as TableColumn[])?.find(x => x.name == 'action');\r\n\r\n\t\t\t/* If so, just add the menu items to it */\r\n\t\t\tif (actionColmun != null) {\r\n\t\t\t\tactionColmun.rowMenuItems = actionColmun.rowMenuItems || [];\r\n\t\t\t\tthis.rowMenuItems.forEach(y => actionColmun.rowMenuItems.unshift(y));\r\n\t\t\t}\r\n\r\n\t\t\t/* Otherwise add a new one */\r\n\t\t\telse {\r\n\t\t\t\tthis.columns.push(new TableColumn({\r\n\t\t\t\t\tindex: 2000,\r\n\t\t\t\t\tname: 'action',\r\n\t\t\t\t\ttype: TableColumnType.Action,\r\n\t\t\t\t\tdisabled: true,\r\n\t\t\t\t\trowMenuItems: this.rowMenuItems\r\n\t\t\t\t}));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Set query params into query object */\r\n\t\tthis.route.queryParams.subscribe(x => Object.assign(this.query, x || {}, { returnUrl: null }));\r\n\r\n\t\t/* Initilialize the data source with the current service, paginator and sort */\r\n\t\tthis.sort = this.dynamicTable?.matSort || (this.sort ? this.sort : new MatSort());\r\n\t\tthis.dataSource = new TableDataSource<TEntity, TService>(this.service!, this.paginator, this.sort);\r\n\r\n\t\t/* Set includes */\r\n\t\tthis.dataSource.includes = this.includes;\r\n\r\n\t\t/* Load query from browser storage */\r\n\t\tvar storredQuery = AppStorage.getObject(`${this.appSetting.projectName}.${this.router.url}`);\r\n\t\tif (storredQuery) {\r\n\t\t\tthis.dataSource.fieldFilters = this.clean(storredQuery.fieldFilters) || {};\r\n\t\t\tthis.sortActive = storredQuery.sortBy;\r\n\t\t\tthis.sortDirection = storredQuery.sortDirection;\r\n\t\t\tthis.dataSource.pageSize = storredQuery.pageSize;\r\n\t\t\tthis.dataSource.pageIndex = storredQuery.pageIndex;\r\n\t\t}\r\n\r\n\t\t/* Add some filter from router */\r\n\t\tif (this.query) {\r\n\t\t\tthis.dataSource.staticFieldFilters = this.query;\r\n\t\t}\r\n\r\n\t\t/* Remember the filters */\r\n\t\tthis.dataLoadedSubscription = this.dataSource.onDataLoaded.subscribe((result) => {\r\n\t\t\tif (result) {\r\n\t\t\t\tAppStorage.setObject(`${this.appSetting.projectName}.${this.router.url}`, {\r\n\t\t\t\t\tfieldFilters: this.dataSource.fieldFilters,\r\n\t\t\t\t\tsortBy: this.sort.active,\r\n\t\t\t\t\tsortDirection: this.sort.direction,\r\n\t\t\t\t\tpageSize: this.paginator.pageSize,\r\n\t\t\t\t\tpageIndex: this.paginator.pageIndex,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Reloads items\r\n\t */\r\n\tpublic loadList(resetSelection: boolean = true): void {\r\n\t\tthis.dataSource.reload(resetSelection);\r\n\t}\r\n\r\n\t/**\r\n\t * Search\r\n\t * @param filter \r\n\t */\r\n\tpublic search(filter: string): void {\r\n\t\tthis.dataSource.filter = filter;\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the add page.\r\n\t */\r\n\tpublic add(): void {\r\n\t\tif (this.addDialogType) {\r\n\t\t\tthis.dialogService.open(this.addDialogType, { width: '650px', data: this.classInstance })\r\n\t\t\t\t.afterClosed()\r\n\t\t\t\t.subscribe(() => this.loadList(false));\r\n\t\t} else {\r\n\t\t\tthis.router.navigate([`${this.router.url}/add`]);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Navigates to the edit page.\r\n\t * @param item The id of the item\r\n\t */\r\n\tpublic edit(item: TEntity): void {\r\n\t\tif (!this.isTextSelected()) {\r\n\t\t\tthis.router.navigate([`${this.router.url}/edit/${(item as IEntity).id}`]);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Patches the entity\r\n\t * Patches the entity\r\n\t * @param id The ID of the entity\r\n\t * @param fields The fields to patch\r\n\t * @param value The (optional) value to change\r\n\t * @param includes Includes some navigations\r\n\t */\r\n\tpublic patch(id: number, fields: Array<string>, value: any, includes: any): void {\r\n\t\tthis._patch(id, fields, value, includes, _ => this.loadList());\r\n\t}\r\n\r\n\t/**\r\n\t * Patches the entity\r\n\t * @param id The ID of the entity\r\n\t * @param fields The fields to patch\r\n\t * @param value The (optional) value to change\r\n\t * @param includes Includes some navigations\r\n\t * @param successCallback A callback function to e called on success\r\n\t */\r\n\tprotected _patch(id: number, fields: Array<string>, value: any, includes: any, successCallback: Function = null): void {\r\n\t\tthis.isSaving = true;\r\n\r\n\t\t/* Get entity by ID */\r\n\t\tlet entity = this.dataSource.items?.filter(x => (<any>x).id === id)[0];\r\n\t\tif (entity) {\r\n\t\t\t/* Build patch methods */\r\n\t\t\tlet patches = fields.map(x => { return { op: 'replace', path: `/${x}`, value: value != undefined ? value : entity[x] }; });\r\n\r\n\t\t\t/* Send request */\r\n\t\t\tthis.service\r\n\t\t\t\t.patch(id, patches, null, { headers: { 'Show-Message': 'Yes' }, params: includes ? Utils.toHttpParams({ includes: includes }) : null })\r\n\t\t\t\t.subscribe(x => {\r\n\t\t\t\t\tthis.isSaving = false;\r\n\r\n\t\t\t\t\t/* Invoke callback function, if any */\r\n\t\t\t\t\tif (successCallback) {\r\n\t\t\t\t\t\tsuccessCallback(x);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}, _ => this.isSaving = false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an item from the database.\r\n\t */\r\n\tpublic deleteItem(item: TEntity): void {\r\n\t\tthis.showDeleteItemDialog()\r\n\t\t\t.subscribe((accept: boolean) => {\r\n\t\t\t\tif (accept) {\r\n\t\t\t\t\tthis.service.delete((item as IEntity).id).subscribe({\r\n\t\t\t\t\t\tnext: (_) => this.loadList(true),\r\n\t\t\t\t\t\terror: (error) => this.log(error)\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Deletes an item from the database.\r\n\t */\r\n\tpublic deleteItems(): void {\r\n\t\tif (this.dataSource.selectionModel.hasValue()) {\r\n\t\t\tthis.showDeleteItemsDialog()\r\n\t\t\t\t.subscribe((accept: boolean) => {\r\n\t\t\t\t\tif (accept) {\r\n\t\t\t\t\t\tthis.service.deleteList(this.dataSource.getSelectedIds()).subscribe({\r\n\t\t\t\t\t\t\tnext: (_) => this.loadList(true),\r\n\t\t\t\t\t\t\terror: (error) => this.log(error)\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Toggles a property\r\n\t * @param item \r\n\t * @param property\r\n\t */\r\n\tpublic toggle(item: TEntity, property: string = 'enabled'): void {\r\n\t\tthis.service\r\n\t\t\t.patch((<any>item).id, [{ op: 'replace', path: `/${property}`, value: item[property] }])\r\n\t\t\t.subscribe(x => this.loadList());\r\n\t}\r\n\r\n\t/**\r\n\t * Uploads tarnsfers csv files\r\n\t * @param file The file to upload\r\n\t * @param reload If true, reload items\r\n\t */\r\n\tpublic upload(file: File, reload: boolean = true): void {\r\n\t\tthis.service.upload(file).subscribe({\r\n\t\t\tnext: (response) => {\r\n\t\t\t\tresponse = response.json();\r\n\r\n\t\t\t\t/* Reload list */\r\n\t\t\t\tif (reload) {\r\n\t\t\t\t\tthis.loadList();\r\n\t\t\t\t}\r\n\t\t\t}, error: (error) => this.log(error)\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Downloads a document\r\n\t * @param item \r\n\t */\r\n\tpublic download(item: TEntity, path: string = 'download'): void {\r\n\t\tthis.service.download(`${path}/${(item as IEntity).id}`).subscribe(x => {\r\n\t\t\tsaveAs(new Blob([x.data], {}), x.filename);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Duplicates a record\r\n\t * @param item \r\n\t */\r\n\tpublic duplicate(item: TEntity) {\r\n\t\tthis.service.duplicate((item as IEntity).id).subscribe(_ => this.loadList());\r\n\t}\r\n\r\n\t/**\r\n\t * This informs the table how to uniquely identify rows to \r\n\t * track how the data changes with each update.\r\n\t * @param index \r\n\t * @param item \r\n\t */\r\n\tpublic trackById(_: number, item: any) {\r\n\t\treturn item.id;\r\n\t}\r\n\r\n\t/**\r\n\t * Includes some navigations\r\n\t * @param inc \r\n\t */\r\n\tprotected include(...inc: string[]) {\r\n\t\tinc?.forEach(x => this.includes.push(x));\r\n\t}\r\n\r\n\t/**\r\n\t * Add toolbar menu items\r\n\t */\r\n\tprotected addToolbarMenuItems(): void {\r\n\t\t/* Add 'Delete selected' menu item */\r\n\t\tif (this.deletable) {\r\n\t\t\tthis.toolbarMenuItems.push({\r\n\t\t\t\ttitle: $localize`:@@deleteSelected:Delete selected`,\r\n\t\t\t\ticon: 'delete_forever',\r\n\t\t\t\ticonClass: 'tc-orange-800',\r\n\t\t\t\tevent: () => this.deleteItems(),\r\n\t\t\t\tdisable: () => !this.canExecuteMultipleOperations((x: TEntity) => this.canDeleteItem(x))\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Add row menu items\r\n\t */\r\n\tprotected addRowMenuItems(): void {\r\n\t\t/* Add checkbox column */\r\n\t\tif (this.selectable) {\r\n\t\t\tthis.columns.unshift({\r\n\t\t\t\tname: 'select',\r\n\t\t\t\ttype: TableColumnType.Checkbox,\r\n\t\t\t\tdisable: (row: TEntity) => !this.canSelectItem(row),\r\n\t\t\t\tcellNgClass: (row: TEntity) => this.selectRowNgClass(row)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Add duplicate menu */\r\n\t\tif (this.duplicable) {\r\n\t\t\tthis.rowMenuItems.unshift({\r\n\t\t\t\ttitle: $localize`:@@duplicate:Duplicate`,\r\n\t\t\t\ticon: 'file_copy',\r\n\t\t\t\tevent: (row: any) => this.duplicate(row),\r\n\t\t\t\thide: (row: TEntity) => !this.canDuplicateItem(row)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Add download menu */\r\n\t\tif (this.downloadable) {\r\n\t\t\tthis.rowMenuItems.unshift({\r\n\t\t\t\ttitle: $localize`:@@download:Download`,\r\n\t\t\t\ticon: 'file_download',\r\n\t\t\t\tevent: (row: any) => this.download(row),\r\n\t\t\t\thide: (row: TEntity) => !this.canDownloadItem(row)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Add delete menu */\r\n\t\tif (this.deletable) {\r\n\t\t\tthis.rowMenuItems.unshift({\r\n\t\t\t\ttitle: $localize`:@@delete:Delete`,\r\n\t\t\t\ticon: 'delete_forever',\r\n\t\t\t\ticonClass: 'tc-orange-800',\r\n\t\t\t\tevent: (row: any) => this.deleteItem(row),\r\n\t\t\t\thide: (row: TEntity) => !this.canDeleteItem(row)\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t/* Add edit menu */\r\n\t\tif (this.editable) {\r\n\t\t\tthis.rowMenuItems.unshift({\r\n\t\t\t\ttitle: $localize`:@@edit:Edit`,\r\n\t\t\t\ticon: 'edit_note',\r\n\t\t\t\ticonClass: 'tc-blue-400',\r\n\t\t\t\tevent: (row: any) => this.edit(row),\r\n\t\t\t\thide: (row: TEntity) => !this.canEditItem(row)\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Check if the item is selectable\r\n\t */\r\n\tprotected canSelectItem(entity: TEntity): boolean { return !entity?.hasOwnProperty('selectable') || entity['selectable']; }\r\n\r\n\t/**\r\n\t * Check if the item is deletable\r\n\t */\r\n\tprotected canDeleteItem(entity: TEntity): boolean { return !entity?.hasOwnProperty('deletable') || entity['deletable']; }\r\n\r\n\t/**\r\n\t * Check if the item is editable\r\n\t */\r\n\tprotected canEditItem(entity: TEntity): boolean { return !entity?.hasOwnProperty('editable') || entity['editable']; }\r\n\r\n\t/**\r\n\t * Check if the item is downloadable\r\n\t */\r\n\tprotected canDownloadItem(entity: TEntity): boolean { return !entity?.hasOwnProperty('downloadable') || entity['downloadable']; }\r\n\r\n\t/**\r\n\t * Check if the item is duplicable\r\n\t */\r\n\tprotected canDuplicateItem(entity: TEntity): boolean { return !entity?.hasOwnProperty('duplicable') || entity['duplicable']; }\r\n\r\n\t/**\r\n\t * Returns NgClass object for select column\r\n\t */\r\n\tprotected selectRowNgClass(_: TEntity): any { }\r\n\r\n\t/**\r\n\t * Check if the there any selected row\r\n\t * @returns \r\n\t */\r\n\tprotected hasSelectedRows(): boolean { return this.dataSource?.selectionModel?.hasValue() };\r\n\r\n\t/**\r\n\t * Checks if the user can perform multiple operations (Like 'delete selected').\r\n\t * @param action \r\n\t * @returns \r\n\t */\r\n\tprotected canExecuteMultipleOperations(action: Function = null): boolean {\r\n\t\treturn this.hasSelectedRows() && (action ? this.dataSource?.selectionModel?.selected?.every(x => action(x)) : true);\r\n\t}\r\n\r\n\t/**\r\n\t * Responds to user-initiated events\r\n\t * @param event \r\n\t */\r\n\t@HostListener('document:keydown', ['$event'])\r\n\thandleKeyboardEvent(event: KeyboardEvent) {\r\n\t\tif (event.ctrlKey || event.metaKey) {\r\n\t\t\tswitch (event.key) {\r\n\t\t\t\t/* Navigate to add page */\r\n\t\t\t\tcase 'a':\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tthis.add();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tswitch (event.key) {\r\n\t\t\t\t/* Navigate to previous page */\r\n\t\t\t\tcase 'PageUp':\r\n\t\t\t\t\tthis.paginator.previousPage();\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t/* Navigate to next page */\r\n\t\t\t\tcase 'PageDown':\r\n\t\t\t\t\tthis.paginator.nextPage();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A callback used for any custom cleanup that needs to occur \r\n\t * when the instance is destroyed.\r\n\t */\r\n\tngOnDestroy(): void {\r\n\t\tif (this.dataLoadedSubscription) {\r\n\t\t\tthis.dataLoadedSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}","import { PropValidationConfig } from \"./prop-validation-config\";\r\nimport {ValidatorFn, AbstractControlOptions } from '@angular/forms'\r\nimport { AutoInstanceConfig } from './interface/auto-instance-config.interface'\r\nimport { PropConfig } from \"./config/prop-config\"\r\nexport class FormBuilderConfiguration{\r\n constructor(formBuilderConfiguration?: FormBuilderConfiguration) {\r\n if (formBuilderConfiguration)\r\n for (var column in formBuilderConfiguration)\r\n this[column] = formBuilderConfiguration[column];\r\n }\r\n\r\n genericEntities?: { [key: string]: Function };\r\n\r\n applyAllProps?:ValidatorFn[];\r\n\r\n excludeProps?: string[];\r\n\r\n includeProps?: string[];\r\n\r\n ignoreUndefinedProps?:string[];\r\n\r\n propsConfig?: {[key:string]:PropConfig};\r\n\r\n dynamicValidation?: { [key: string]: PropValidationConfig }\r\n\r\n dynamicValidationConfigurationPropertyName?:string;\r\n\r\n autoInstanceConfig?: AutoInstanceConfig\r\n\r\n abstractControlOptions?: { [key: string]: 'change' | 'blur' | 'submit' }\r\n\r\n baseAbstractControlOptions?: { [key: string]: AbstractControlOptions }\r\n}\r\n\r\n","import { IFormGroup } from '../models/interface/i-form-group'\r\n\r\nexport abstract class TypedForm<T>{\r\n formGroup: IFormGroup<T>\r\n}","\r\nexport const RegExRule: { [key: string]: any } = {\r\n\r\n alpha: /^[a-zA-Z]+$/,\r\n\r\n alphaExits: /[a-zA-Z]/,\r\n\r\n alphaWithSpace: /^[a-zA-Z\\s]+$/,\r\n\r\n macId : /^([0-9a-fA-F][0-9a-fA-F]:){5}([0-9a-fA-F][0-9a-fA-F])$/,\r\n\r\n onlyDigit: /^[0-9]+$/,\r\n\r\n isDigitExits: /[0-9]/,\r\n\r\n lowerCase: /[a-z]/,\r\n\r\n upperCase: /[A-Z]/,\r\n\r\n specialCharacter: /[!@#$%^&*(),.?\":{}|<>]/,\r\n\r\n advancedEmail: /^[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 basicEmail: /^(([^<>()\\[\\]\\\\.,,:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n\r\n alphaNumeric: /^[0-9a-zA-Z]+$/,\r\n \r\n alphaNumericWithSpace: /^[0-9a-zA-Z\\s]+$/,\r\n\r\n hexColor: /^#?([0-9A-F]{3}|[0-9A-F]{6})$/i,\r\n\r\n strictHexColor: /^#?([0-9A-F]{3}|[0-9A-F]{6})$/i,\r\n\r\n float: /^(?:[-+]?(?:[0-9]+))?(?:\\.[0-9]*)?(?:[eE][\\+\\-]?(?:[0-9]+))?$/,\r\n\r\n decimal: /^[-+]?([0-9]+|\\.[0-9]+|[0-9]+\\.[0-9]+)$/,\r\n\r\n hexaDecimal: /^[0-9A-F]+$/i,\r\n\r\n date: /^(?:(?:31(\\/|-|\\.)(?:0?[13578]|1[02]))\\1|(?:(?:29|30)(\\/|-|\\.)(?:0?[1,3-9]|1[0-2])\\2))(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$|^(?:29(\\/|-|\\.)0?2\\3(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\\d|2[0-8])(\\/|-|\\.)(?:(?:0?[1-9])|(?:1[0-2]))\\4(?:(?:1[6-9]|[2-9]\\d)?\\d{2})$/,\r\n\r\n time: /^([01]?[0-9]|2[0-3]):[0-5][0-9]$/,\r\n\r\n timeWithSeconds: /^([01]?[0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/,\r\n\r\n url: /^(https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9][a-zA-Z0-9-]*[a-zA-Z0-9]\\.[^\\s]{2,}|https?:\\/\\/(?:www\\.|(?!www))[a-zA-Z0-9]\\.[^\\s]{2,}|www\\.[a-zA-Z0-9]\\.[^\\s]{2,})$/,\r\n\r\n localhostUrl: /^(https?:\\/\\/localhost\\:([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|localhost\\::([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])|https?:\\/\\/localhost\\::([1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))$/,\r\n\r\n interanetUrl: /^(https?:\\/\\/[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9])$/,\r\n\r\n ascii : /^[\\x00-\\x7F]+$/,\r\n\r\n dataUri:/^data:([a-z]+\\/[a-z0-9-+.]+(;[a-z0-9-.!#$%*+.{}|~`]+=[a-z0-9-.!#$%*+.{}|~`]+)*)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*?)$/i,\r\n\r\n lat : /^\\(?[+-]?(90(\\.0+)?|[1-8]?\\d(\\.\\d+)?)$/,\r\n\r\n long: /^\\s?[+-]?(180(\\.0+)?|1[0-7]\\d(\\.\\d+)?|\\d{1,2}(\\.\\d+)?)\\)?$/,\r\n\r\n ipV4: /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/,\r\n\r\n ipV6: /^((?:[a-fA-F\\d]{1,4}:){7}(?:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){6}(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|:[a-fA-F\\d]{1,4}|:)|(?:[a-fA-F\\d]{1,4}:){5}(?::(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(:[a-fA-F\\d]{1,4}){1,2}|:)|(?:[a-fA-F\\d]{1,4}:){4}(?:(:[a-fA-F\\d]{1,4}){0,1}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(:[a-fA-F\\d]{1,4}){1,3}|:)|(?:[a-fA-F\\d]{1,4}:){3}(?:(:[a-fA-F\\d]{1,4}){0,2}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(:[a-fA-F\\d]{1,4}){1,4}|:)|(?:[a-fA-F\\d]{1,4}:){2}(?:(:[a-fA-F\\d]{1,4}){0,3}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(:[a-fA-F\\d]{1,4}){1,5}|:)|(?:[a-fA-F\\d]{1,4}:){1}(?:(:[a-fA-F\\d]{1,4}){0,4}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(:[a-fA-F\\d]{1,4}){1,6}|:)|(?::((?::[a-fA-F\\d]{1,4}){0,5}:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)){3}|(?::[a-fA-F\\d]{1,4}){1,7}|:)))(%[0-9a-zA-Z]{1,})?$/,\r\n\r\n cidrV4: /^(3[0-2]|[12]?[0-9])$/,\r\n\r\n cidrV6: /^(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\r\n\r\n cusip: /^[0-9A-Z]{9}$/,\r\n\r\n grid:/^[GRID:]*([0-9A-Z]{2})[-\\s]*([0-9A-Z]{5})[-\\s]*([0-9A-Z]{10})[-\\s]*([0-9A-Z]{1})$/g\r\n}\r\n\r\n\r\n","export const alphabet = {\r\n 'danish': /^[A-ZÆØÅ]+$/,\r\n 'french': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/,\r\n 'german': /^[A-ZÄÖÜß]+$/,\r\n 'spanish': /^[a-zñáéíóúü]+$/i,\r\n 'russian': /^[А-ЯЁ]+$/,\r\n\r\n};\r\n\r\nexport const alphaWithWhitespace = {\r\n 'danish': /^[A-ZÆØÅ\\s]+$/,\r\n 'french': /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]+$/,\r\n 'german': /^[A-ZÄÖÜß\\s]+$/,\r\n 'spanish': /^[a-zñáéíóúü\\s]+$/i,\r\n 'russian': /^[А-ЯЁ\\s]+$/,\r\n\r\n};\r\n\r\nexport const alphanumeric = {\r\n 'danish': /^[0-9A-ZÆØÅ]+$/,\r\n 'french': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/,\r\n 'german': /^[0-9A-ZÄÖÜß]+$/,\r\n 'spanish': /^[0-9a-zñáéíóúü]+$/i,\r\n 'russian': /^[0-9А-ЯЁ]+$/,\r\n};\r\n\r\nexport const alphanumericWithWitespace = {\r\n 'danish': /^[0-9A-ZÆØÅ]+$/,\r\n 'french': /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]+$/,\r\n 'german': /^[0-9A-ZÄÖÜß]+$/,\r\n 'spanish': /^[0-9a-zñáéíóúü\\s]+$/i,\r\n 'russian': /^[0-9А-ЯЁ]+$/,\r\n};\r\n\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nfunction isObjectType(value:any) {\r\n return !(typeof value == \"string\" || typeof value === \"number\" || typeof value === \"boolean\" || value instanceof Date);\r\n}\r\n\r\nfunction isObject(value: any): boolean {\r\n return Object.prototype.toString.call(value) === '[object Object]';\r\n}\r\n\r\nexport function clone(jsonObject: { [key: string]: any }) {\r\n let jObject: any = {};\r\n if (isObjectType(jsonObject)) {\r\n for (var columnName in jsonObject) {\r\n if ((columnName != \"formGroup\")) {\r\n if (Array.isArray(jsonObject[columnName])) {\r\n jObject[columnName] = [];\r\n for (let row of jsonObject[columnName]) {\r\n if (isObject(row))\r\n jObject[columnName].push(clone(row))\r\n else\r\n jObject[columnName].push(row)\r\n }\r\n } else if (typeof jsonObject[columnName] == \"object\" && !(jsonObject[columnName] instanceof RegExp))\r\n jObject[columnName] = clone(jsonObject[columnName]);\r\n else\r\n jObject[columnName] = jsonObject[columnName]\r\n } \r\n }\r\n return jObject;\r\n }\r\n else\r\n return jsonObject;\r\n }\r\n\r\nexport function merge(firstObject: { [key: string]: any }, secondObject: { [key: string]: any }) {\r\n for (var columnName in secondObject) {\r\n if (Array.isArray(secondObject[columnName])) {\r\n if (!firstObject[columnName])\r\n firstObject[columnName] = [];\r\n for (let row of secondObject[columnName])\r\n firstObject[columnName].push(clone(row))\r\n } else if (typeof firstObject[columnName] == \"object\" && !(firstObject[columnName] instanceof RegExp))\r\n firstObject[columnName] = merge(firstObject[columnName], secondObject[columnName])\r\n else\r\n firstObject[columnName] = secondObject[columnName];\r\n }\r\n return firstObject;\r\n}\r\n\r\nexport function isMatched(jsonObject: { [key: string]: any }, compareObject: { [key: string]: any }) {\r\n let isModified: boolean = false;\r\n for (var columnName in compareObject) {\r\n if (Array.isArray(jsonObject[columnName])) {\r\n for (var i = 0; i < jsonObject[columnName].length; i++) {\r\n isModified = isMatched(jsonObject[columnName][i], compareObject[columnName][i])\r\n }\r\n } else if (typeof jsonObject[columnName] == \"object\" && !(jsonObject[columnName] instanceof RegExp))\r\n isModified = isMatched(jsonObject[columnName], compareObject[columnName]);\r\n else\r\n isModified = !(jsonObject[columnName] == compareObject[columnName]);\r\n if (isModified)\r\n break;\r\n }\r\n return isModified;\r\n}\r\n","\r\nexport class ReactiveFormConfig {\r\n static i18n: { language?: string, validationMessage?: () => any } = {};\r\n static number:{[key:string]:any} = {}\r\n static json: { [key: string]: any } = {};\r\n static autoInstancePush: boolean = false;\r\n static set(jObject: { [key: string]: any }): void {\r\n if (jObject)\r\n ReactiveFormConfig.json = jObject;\r\n }\r\n\r\n static get(path: string) : any {\r\n let jObject: { [key: string]: any }; \r\n if (ReactiveFormConfig.json) {\r\n let splitPath = path.split('.');\r\n for (let columnName of splitPath) {\r\n jObject = (!jObject) ? ReactiveFormConfig.json[columnName] : jObject[columnName];\r\n if (!jObject)\r\n break;\r\n }\r\n }\r\n return jObject;\r\n }\r\n}\r\n","import { ReactiveFormConfig } from \"./reactive-form-config\";\r\n\r\nexport class ObjectMaker{\r\n static language: string = \"\";\r\n static toJson(key: string, config: any, values: any) {\r\n ObjectMaker.setMessage();\r\n let message = config ? config.message : null;\r\n let messageKey = undefined;\r\n if(!message && config && config.messageKey)\r\n messageKey = config.messageKey;\r\n let messageText = (message) ? message : (ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.validationMessage && ReactiveFormConfig.json.validationMessage[messageKey || key])? ReactiveFormConfig.json.validationMessage[messageKey || key] : '';\r\n values.forEach((t ,index)=> {\r\n messageText = messageText.replace(`{{${index}}}`, t);\r\n });\r\n let jObject = {};\r\n jObject[key] = {\r\n message: messageText, refValues: values\r\n };\r\n if (config && config.isAddMessageKey)\r\n jObject[\"messageKey\"] = messageKey;\r\n return jObject;\r\n }\r\n static null() {\r\n return null;\r\n }\r\n\r\n static getPasswordMessage() {\r\n let messageKey = \"password\";\r\n return (ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.validationMessage && ReactiveFormConfig.json.validationMessage[messageKey]) ? ReactiveFormConfig.json.validationMessage[messageKey] : ''\r\n }\r\n\r\n static setMessage() {\r\n if (ReactiveFormConfig.i18n && ReactiveFormConfig.i18n.validationMessage && ObjectMaker.language !== ReactiveFormConfig.i18n.language) {\r\n if (!ReactiveFormConfig.json)\r\n ReactiveFormConfig.json = {};\r\n ReactiveFormConfig.json.validationMessage = ReactiveFormConfig.i18n.validationMessage();\r\n ObjectMaker.language = ReactiveFormConfig.i18n.language;\r\n }\r\n }\r\n}\r\n","import { FormArray } from \"@angular/forms\";\r\nimport { VALUE_CHANGED_SYNC, PATCH } from \"../const/app.const\";\r\nimport { isMatched, clone } from './entity.service'\r\nimport { ResetFormType } from \"../enums/reset-type\";\r\nimport { ObjectMaker } from '../util/object-maker'\r\nconst PROP_ARRAY: string = \"propArray\";\r\nexport class RxFormArray extends FormArray {\r\n private _baseValue: any[];\r\n private _isModified: boolean = false;\r\n private _modified: any[] = [];\r\n constructor(private arrayObject: any[], controls, validatorOrOpts?: any, asyncValidator?: any, private arrayConfig?: { allowMaxIndex?: number, messageKey?: string }) {\r\n super(controls, validatorOrOpts, asyncValidator);\r\n this.cloneObject(arrayObject);\r\n }\r\n\r\n get isModified() {\r\n return this._isModified;\r\n }\r\n\r\n push(control: any, options: {\r\n emitEvent?: boolean,\r\n isAddedInstance: boolean \r\n } = { isAddedInstance: false}) {\r\n let formGroup: any = this.root;\r\n if (this.arrayObject)\r\n if (control.modelInstance) {\r\n if (!options.isAddedInstance)\r\n this.arrayObject.push(control.modelInstance);\r\n else\r\n this.arrayObject[this.arrayObject.length] = control.modelInstance\r\n }\r\n \r\n super.push(control);\r\n if (formGroup[VALUE_CHANGED_SYNC])\r\n formGroup.valueChangedSync()\r\n this.patch()\r\n this.checkValidation()\r\n }\r\n\r\n patch() {\r\n this.checkModification();\r\n if (this.parent)\r\n this.parent[PATCH]();\r\n\r\n }\r\n\r\n resetForm(options?: {\r\n index: number,\r\n groupOption: {\r\n resetType?: ResetFormType,\r\n with?: string[],\r\n value?: { [key: string]: any }\r\n },\r\n pushFunction: (value: Object) => boolean;\r\n }) {\r\n if (options && options.index >= 0 && options.groupOption) {\r\n (<any>this.controls[options.index]).resetForm(options.groupOption)\r\n } else {\r\n for (var i = 0; i < this._baseValue.length; i++) {\r\n if (this.controls[i] !== undefined)\r\n (<any>this.controls[i]).resetForm({ value: this._baseValue[i] });\r\n else\r\n if (options && options.pushFunction) {\r\n let formGroup = options.pushFunction(this._baseValue[i]);\r\n this.push(formGroup);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n commit() {\r\n this._baseValue = []\r\n for (let formGroup of this.controls) {\r\n (<any>formGroup).commit();\r\n this._baseValue.push(clone(formGroup.value));\r\n }\r\n this.patch();\r\n }\r\n\r\n\r\n removeAt(index: number, options: { emitEvent?: boolean, isRemovedInstance?: boolean } = { isRemovedInstance: false }) {\r\n let formGroup: any = this.root;\r\n if (!options.isRemovedInstance)\r\n this.arrayObject.splice(index, 1);\r\n else {\r\n for (var i = index; i < this.arrayObject.length - 1; i++)\r\n this.arrayObject[i] = this.arrayObject[i + 1];\r\n this.arrayObject.pop();\r\n }\r\n\r\n\r\n super.removeAt(index,options);\r\n if (formGroup[VALUE_CHANGED_SYNC])\r\n formGroup.valueChangedSync()\r\n this.patch()\r\n this.checkValidation();\r\n }\r\n\r\n private checkValidation() {\r\n setTimeout(() => {\r\n if (this.arrayConfig != undefined && this.arrayConfig.allowMaxIndex && this.length > this.arrayConfig.allowMaxIndex)\r\n this.setErrors(ObjectMaker.toJson(PROP_ARRAY, this.arrayConfig, [this.length, this.arrayConfig.allowMaxIndex]));\r\n else if (this.errors && this.errors[PROP_ARRAY])\r\n delete this.errors[PROP_ARRAY];\r\n })\r\n }\r\n\r\n private checkModification() {\r\n this._isModified = !(this._baseValue.length == this.controls.length);\r\n if (!this._isModified)\r\n for (var i = 0; i < this.controls.length; i++) {\r\n this._isModified = isMatched(this._baseValue[i], this.controls[i].value)\r\n if (this._isModified)\r\n break;\r\n }\r\n }\r\n\r\n private cloneObject(value: any[]) {\r\n this._baseValue = [];\r\n for (let row of value) {\r\n this._baseValue.push(clone(row));\r\n }\r\n }\r\n\r\n\r\n}\r\n","export enum ErrorMessageBindingStrategy {\r\n None,\r\n OnSubmit,\r\n OnDirty,\r\n OnTouched,\r\n OnDirtyOrTouched,\r\n OnDirtyOrSubmit,\r\n OnTouchedOrSubmit\r\n}\r\n","export enum IpVersion {\r\n V4 = 1,\r\n V6,\r\n AnyOne\r\n}\r\n","export enum NumericValueType {\r\n PositiveNumber = 1,\r\n NegativeNumber,\r\n Both\r\n}\r\n","export enum ResetFormType {\r\n ControlsOnly = 1,\r\n FormGroupsOnly,\r\n FormArraysOnly,\r\n ControlsAndFormGroupsOnly,\r\n DefinedPropsOnly,\r\n All\r\n}\r\n","import { AbstractControl, FormGroup, FormArray } from \"@angular/forms\";\r\nimport { RxFormArray } from \"../services/rx-form-array\";\r\nimport {NumericValueType } from '../enums'\r\nimport { ReactiveFormConfig } from \"./reactive-form-config\";\r\nconst MODEL_INSTANCE_VALUE = \"modelInstanceValue\";\r\nexport class ApplicationUtil{\r\n static getParentObjectValue(control: AbstractControl) :{ [key:string]:any} {\r\n if (control.parent) {\r\n let parent = this.parentObjectValue(control.parent)\r\n return parent.value;\r\n }\r\n return {};\r\n }\r\n\r\n static getParentModelInstanceValue(control: AbstractControl): { [key: string]: any } {\r\n if (control.parent) {\r\n let parent = this.parentObjectValue(control.parent)\r\n return parent[MODEL_INSTANCE_VALUE];\r\n }\r\n return {};\r\n }\r\n\r\n static getRootFormGroup(control:AbstractControl):FormGroup{\r\n if (control.parent) {\r\n return this.getRootFormGroup(control.parent);\r\n }\r\n return <FormGroup>control;\r\n }\r\n\r\n private static getParentControl(control:AbstractControl){\r\n if (control.parent) {\r\n let parent = this.parentObjectValue(control.parent)\r\n return parent;\r\n }\r\n return control;\r\n }\r\n\r\n static getFormControlName(control:AbstractControl){\r\n let controlName:string = '';\r\n if(control.parent){\r\n for(var formControlName in control.parent.controls){\r\n if(control.parent.controls[formControlName] == control){\r\n controlName = formControlName;\r\n break;\r\n }\r\n }\r\n }\r\n return controlName;\r\n }\r\n\r\n static getParentFormArray(control:AbstractControl){\r\n if (control.parent && !(control.parent instanceof FormArray || control.parent instanceof RxFormArray)) {\r\n let parent = this.getParentFormArray(control.parent)\r\n return parent;\r\n }\r\n return control.parent;\r\n }\r\n\r\n static toLower(value){\r\n if (value)\r\n return String(value).toLowerCase().trim();\r\n return value;\r\n }\r\n\r\n static getControl(fieldName:string,formGroup:FormGroup){\r\n let splitText = fieldName.split('.');\r\n if(splitText.length > 1){\r\n var formControl:any = formGroup;\r\n splitText.forEach((name,index)=>{ formControl = formControl.controls[name]})\r\n return formControl;\r\n }else\r\n return formGroup.controls[fieldName];\r\n\r\n }\r\n\r\n static getFormControl(fieldName:string,control:AbstractControl){\r\n let splitText = fieldName.split('.');\r\n if(splitText.length > 1 && control.parent){\r\n var formControl:any = this.getParentControl(control);\r\n splitText.forEach((name,index)=>{ formControl = formControl.controls[name]})\r\n return formControl;\r\n }\r\n return (control.parent) ? control.parent.get([fieldName]) : undefined;\r\n }\r\n\r\n private static parentObjectValue(control: FormGroup | FormArray): FormGroup | FormArray {\r\n if (!control.parent)\r\n return control;\r\n else\r\n control = this.parentObjectValue(control.parent)\r\n return control\r\n }\r\n\r\n \r\n\r\n static isNumeric(value:any){\r\n return (value - parseFloat(value) + 1) >= 0;\r\n }\r\n\r\n static notEqualTo(primaryValue: any, secondaryValue: any) {\r\n let firstValue = (primaryValue === undefined || primaryValue === null) ? \"\" : primaryValue;\r\n let secondValue = (secondaryValue === undefined || secondaryValue === null) ? \"\" : secondaryValue;\r\n if(firstValue instanceof Date && secondValue instanceof Date)\r\n return +firstValue != +secondValue;\r\n return (firstValue != secondValue)\r\n }\r\n\r\n static numericValidation(allowDecimal:boolean, acceptValue:NumericValueType) {\r\n let decimalSymbol:string;\r\n if(ReactiveFormConfig && ReactiveFormConfig.number){\r\n decimalSymbol = (ReactiveFormConfig.json && ReactiveFormConfig.json.allowDecimalSymbol) ? ReactiveFormConfig.json.allowDecimalSymbol : ReactiveFormConfig.number.decimalSymbol;\r\n }else{\r\n decimalSymbol = \".\";\r\n }\r\n \r\n acceptValue = (acceptValue == undefined) ? NumericValueType.PositiveNumber : acceptValue;\r\n let regex = /^[0-9]+$/;\r\n switch(acceptValue){\r\n case NumericValueType.PositiveNumber:\r\n regex = (!allowDecimal) ? /^[0-9]+$/ : (decimalSymbol == \".\" || decimalSymbol == undefined) ? /^[0-9\\.]+$/ : /^[0-9\\,]+$/;\r\n break;\r\n case NumericValueType.NegativeNumber:\r\n regex = (!allowDecimal) ? /^[-][0-9]+$/ : (decimalSymbol == \".\" || decimalSymbol == undefined)? /^[-][0-9\\.]+$/ : /^[-][0-9\\,]+$/;\r\n break;\r\n case NumericValueType.Both :\r\n regex = (!allowDecimal) ? /^[-|+]?[0-9]+$/ : (decimalSymbol == \".\" || decimalSymbol == undefined) ? /^[-|+]?[0-9\\.]+$/ : /^[-|+]?[0-9\\,]+$/;\r\n break;\r\n }\r\n return regex;\r\n }\r\n\r\n static configureControl(control:any,config:any,type:string){\r\n if(!control.validatorConfig){\r\n let jObject= {};\r\n jObject[type] = config;\r\n Object.assign(control,{validatorConfig:jObject})\r\n } else\r\n control.validatorConfig[type] = config;\r\n }\r\n\r\n static lowerCaseWithTrim(value:string) {\r\n return typeof value === \"string\" ? value.toLowerCase().trim() : String(value).toLowerCase().trim();\r\n }\r\n\r\n /** Check if a value is an object */\r\n static isObject(value: any): boolean {\r\n return Object.prototype.toString.call(value) === '[object Object]';\r\n }\r\n\r\n /** Check if a value is an object */\r\n static isArray(value: any): boolean {\r\n return Array.isArray(value);\r\n }\r\n\r\n static cloneValue(value: any): any {\r\n return ApplicationUtil.isObject(value) ? ApplicationUtil.isArray(value) ? [...value] : {...value} : value;\r\n }\r\n}\r\n","import { InstanceContainer } from '../core/validator.interface';\r\nimport { defaultContainer } from '../core/defaultContainer';\r\nimport { clone, merge } from '../services/entity.service';\r\n\r\nexport function instanceProvider(instanceFunc: any, entityObject?: any): InstanceContainer {\r\n let instance: any = defaultContainer.get(instanceFunc);\r\n let prototype: any = entityObject ? entityObject.__proto__ : getInstance(instanceFunc, []).__proto__;\r\n if (prototype.__proto__) {\r\n let isLoop = false;\r\n do {\r\n isLoop = prototype.__proto__.constructor != Object;\r\n if (isLoop) {\r\n let extendClassInstance: any = defaultContainer.get(prototype.__proto__.constructor);\r\n instance = merge(clone(instance), clone(extendClassInstance))\r\n prototype = prototype.__proto__;\r\n }\r\n } while (isLoop)\r\n\r\n }\r\n return instance;\r\n}\r\n\r\n\r\nexport function getInstance(model: any, objectArguments: any[]) {\r\n let classInstance = Object.create(model.prototype)\r\n try{\r\n model.apply(classInstance, objectArguments);\r\n }catch(ex){\r\n ///resolution of issue https://github.com/rxweb/rxweb/issues/188\r\n classInstance = Reflect.construct(model,objectArguments);\r\n }\r\n return classInstance;\r\n}","import { AbstractControl, FormGroup } from \"@angular/forms\";\r\nimport { MODEL_INSTANCE, RXCODE } from \"../const/app.const\";\r\nimport { OBJECT_PROPERTY } from \"../const/validator.const\";\r\nimport { defaultContainer } from \"../core/defaultContainer\";\r\nimport { InstanceContainer } from \"../core/validator.interface\";\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\nimport { instanceProvider } from \"../util/instance-provider.function\";\r\n\r\nexport class DisableProvider {\r\n\r\n constructor(private decoratorType: string, private entityObject: { [key: string]: any }) { }\r\n\r\n getFormGroupName(currentFormGroup: FormGroup) {\r\n let keyName = '';\r\n if (currentFormGroup.parent)\r\n for (var controlName of Object.keys(currentFormGroup.parent.controls))\r\n if (currentFormGroup.parent.controls[controlName] == currentFormGroup) {\r\n keyName = controlName;\r\n break;\r\n }\r\n return keyName;\r\n }\r\n\r\n zeroArgumentProcess(control: AbstractControl, columnName: string) {\r\n let disabledColumns = [];\r\n this.getDisabledColumns(<FormGroup>control.parent, `${columnName}${RXCODE}0`, false).forEach(t => disabledColumns.push(t));\r\n let path = this.topControlPath(control, columnName);\r\n let splitPath = path.split(\".\");\r\n if (splitPath.length > 1) {\r\n let rootFormGroup = ApplicationUtil.getRootFormGroup(control);\r\n this.getDisabledColumns(rootFormGroup, `${path}${RXCODE}0`, true).forEach(t => disabledColumns.push(t));\r\n let controlPath: string = '';\r\n for (var i = 0; i < splitPath.length - 2; i++) {\r\n let controlName = splitPath[i];\r\n controlPath = `${path.replace(`${controlName}.`, '')}${RXCODE}-0`\r\n if (rootFormGroup.controls[controlName]) {\r\n this.getDisabledColumns(<FormGroup>rootFormGroup.controls[controlName], controlPath, true, controlName).forEach(t => disabledColumns.push(t));\r\n rootFormGroup = <FormGroup>rootFormGroup.controls[controlName];\r\n }\r\n }\r\n }\r\n return disabledColumns;\r\n }\r\n\r\n private getDisabledColumns(formGroup: FormGroup, columnName: string, isRoot: Boolean, pathName: string = \"\") {\r\n if (formGroup[MODEL_INSTANCE]) {\r\n let instanceContainer = instanceProvider(formGroup[MODEL_INSTANCE].constructor, this.entityObject);\r\n return this.getChangeDetectionColumns(instanceContainer, columnName, isRoot, pathName)\r\n } return [];\r\n }\r\n\r\n private getChangeDetectionColumns(instanceContainer: InstanceContainer, columnName: string, isRoot: Boolean, pathName: string = \"\") {\r\n let conditionalDisableControls = [];\r\n let columns = instanceContainer.nonValidationDecorators[this.decoratorType].changeDetection[columnName]\r\n if (columns) {\r\n columns.forEach(t => {\r\n conditionalDisableControls.push({ controlPath: pathName ? `${pathName}.${t}` : t, conditionalExpression: instanceContainer.nonValidationDecorators[this.decoratorType].conditionalExpressions[t], isRoot: isRoot })\r\n })\r\n }\r\n return conditionalDisableControls;\r\n }\r\n\r\n private topControlPath(control: AbstractControl | FormGroup, columnName: string) {\r\n if (control.parent) {\r\n let name = this.getFormGroupName((<FormGroup>control.parent))\r\n if (name) {\r\n columnName = `${name}.${columnName}`\r\n return this.topControlPath(control.parent, columnName)\r\n }\r\n }\r\n return columnName;\r\n }\r\n\r\n childControlDisabledExpression(formGroup: FormGroup, columnName: string, path: string = \"\"): any[] {\r\n let disabledColumns = [];\r\n if (formGroup[MODEL_INSTANCE]) {\r\n let instanceContainer = defaultContainer.get(formGroup[MODEL_INSTANCE].constructor);\r\n if (instanceContainer) {\r\n this.getChangeDetectionColumns(instanceContainer, columnName, true, path).forEach(t => disabledColumns.push(t));\r\n var props = instanceContainer.properties.filter(t => t.propertyType == OBJECT_PROPERTY)\r\n props.forEach(t => {\r\n if (formGroup.controls[t.name]) {\r\n let columns = this.getDisabledColumns(<FormGroup>formGroup.controls[t.name], columnName, true, path ? `${path}.${t.name}` : `${t.name}`)\r\n columns.forEach(x => disabledColumns.push(x));\r\n this.childControlDisabledExpression((<FormGroup>formGroup.controls[t.name]), columnName, path ? `${path}.${t.name}` : `${t.name}`).forEach(y => disabledColumns.push(y))\r\n }\r\n })\r\n }\r\n }\r\n return disabledColumns;\r\n }\r\n\r\n oneArgumentProcess(control: AbstractControl | FormGroup, columnName: string): any[] {\r\n let path = this.topControlPath(control, columnName);\r\n let rootFormGroup = ApplicationUtil.getRootFormGroup(control);\r\n let childColumns = this.childControlDisabledExpression(rootFormGroup, path);\r\n return childColumns;\r\n }\r\n}","import { ReactiveFormConfig } from \"./reactive-form-config\";\r\nimport { ApplicationUtil } from './app-util'\r\nconst ISO_DATE_REGEX = /^(?:[\\+-]?\\d{4}(?!\\d{2}\\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\\1(?:[12]\\d|0[1-9]|3[01]))?|W(?:[0-4]\\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))(?:[T\\s](?:(?:(?:[01]\\d|2[0-3])(?:(:?)[0-5]\\d)?|24\\:?00)(?:[\\.,]\\d+(?!:))?)?(?:\\2[0-5]\\d(?:[\\.,]\\d+)?)?(?:[zZ]|(?:[\\+-])(?:[01]\\d|2[0-3]):?(?:[0-5]\\d)?)?)?)?$/;\r\nexport class DateProvider {\r\n\r\n isDate(value: any): Boolean {\r\n return value instanceof Date && !isNaN(value.valueOf());\r\n }\r\n\r\n private getRegex(dateFormat: string): RegExp {\r\n var regExp: string;\r\n switch (dateFormat) {\r\n case 'ymd':\r\n regExp = \"^(?:[0-9]{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$\";\r\n break;\r\n case 'dmy':\r\n regExp = \"^(3[01]|[12][0-9]|0?[1-9])-(1[0-2]|0?[1-9])-(?:[0-9]{2})?[0-9]{2}$\";\r\n break;\r\n case 'mdy':\r\n regExp = \"^(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])-(?:[0-9]{2})?[0-9]{2}$\";\r\n break;\r\n }\r\n return new RegExp(regExp);\r\n }\r\n\r\n regex() {\r\n var regExp: RegExp;\r\n if (ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.internationalization && ReactiveFormConfig.json.internationalization.dateFormat && ReactiveFormConfig.json.internationalization.seperator)\r\n regExp = this.getRegex(ReactiveFormConfig.json.internationalization.dateFormat)\r\n else\r\n regExp = (ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.baseConfig && ReactiveFormConfig.json.baseConfig.dateFormat) ? this.getRegex(ReactiveFormConfig.json.baseConfig.dateFormat) : this.getRegex(\"mdy\");\r\n return regExp;\r\n }\r\n\r\n getDate(value: string | Date, isBaseFormat: boolean = false): Date {\r\n let year, month, day;\r\n if (!this.isDate(value)) {\r\n let seperator: string;\r\n let dateFormat: string;\r\n if (ISO_DATE_REGEX.test(<string>value)) {\r\n return new Date(value);\r\n } else {\r\n seperator = ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.baseConfig && ReactiveFormConfig.json.baseConfig.seperator ? ReactiveFormConfig.json.baseConfig.seperator : \"/\";\r\n dateFormat = ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.baseConfig && ReactiveFormConfig.json.baseConfig.dateFormat ? ReactiveFormConfig.json.baseConfig.dateFormat : \"mdy\";\r\n }\r\n\r\n if (!isBaseFormat && ReactiveFormConfig && ReactiveFormConfig.json && ReactiveFormConfig.json.internationalization && ReactiveFormConfig.json.internationalization.dateFormat && ReactiveFormConfig.json.internationalization.seperator) {\r\n seperator = ReactiveFormConfig.json.internationalization.seperator;\r\n dateFormat = ReactiveFormConfig.json.internationalization.dateFormat;\r\n }\r\n switch (dateFormat) {\r\n case 'ymd':\r\n [year, month, day] = (<String>value).split(seperator).map((val: string) => +val);\r\n break;\r\n case 'dmy':\r\n [day, month, year] = (<String>value).split(seperator).map((val: string) => +val);\r\n break;\r\n case 'mdy':\r\n [month, day, year] = (<String>value).split(seperator).map((val: string) => +val);\r\n break;\r\n }\r\n return new Date(year, month - 1, day);\r\n } else\r\n return <Date>value;\r\n }\r\n\r\n isValid(value: string | Date, config: any): Boolean {\r\n if (typeof value == \"string\") {\r\n // Fixed issue : https://github.com/rxweb/rxweb/issues/280 & feature request : https://github.com/rxweb/rxweb/issues/295\r\n if (config && config.allowISODate && ISO_DATE_REGEX.test(<string>value))\r\n return true;\r\n let seperator = '/'\r\n if (ReactiveFormConfig.json && ReactiveFormConfig.json.internationalization && ReactiveFormConfig.json.internationalization.seperator)\r\n seperator = ReactiveFormConfig.json.internationalization.seperator;\r\n if (value.split(seperator).length !== 3)\r\n return false;\r\n value = value.replace(seperator, '-').replace(seperator, '-');\r\n return this.regex().test(value);\r\n } else\r\n return this.isDate(value);\r\n }\r\n\r\n getConfigDateValue(config) {\r\n let date = config.value;\r\n if (config.value && typeof config.value == \"string\") {\r\n date = this.getDate(config.value, true);\r\n }\r\n return date;\r\n }\r\n\r\n getCompareDate(config: any, control: any) {\r\n let date = this.getConfigDateValue(config);\r\n if (config.fieldName) {\r\n let checkControl: any = ApplicationUtil.getFormControl(config.fieldName, control);\r\n if (checkControl && checkControl.value) {\r\n date = this.getDate(checkControl.value)\r\n }\r\n }\r\n return date;\r\n }\r\n}\r\n","import { DateProvider } from './date-provider'\r\nimport { ApplicationUtil } from './app-util';\r\nimport { SanitizeConfig } from '../models/config/sanitize-config'\r\nimport { ReactiveFormConfig } from \"./reactive-form-config\";\r\n\r\nfunction isNotBlank(value: any) {\r\n return (value !== undefined && value !== null && value !== \"\");\r\n}\r\nfunction trim(value: any) {\r\n if (isNotBlank(value))\r\n if (typeof value === \"string\")\r\n return value.trim();\r\n return value;\r\n};\r\n\r\nfunction ltrim(value: any) {\r\n if (isNotBlank(value))\r\n if (typeof value === \"string\")\r\n return value.replace(/^\\s+/g, '');\r\n return value;\r\n}\r\n\r\nfunction rtrim(value: any) {\r\n if (isNotBlank(value))\r\n if (typeof value === \"string\")\r\n return value.replace(/\\s+$/g, '');\r\n return value;\r\n}\r\n\r\nfunction blacklist(value: any, chars) {\r\n if (isNotBlank(value))\r\n if (typeof value === \"string\")\r\n return value.replace(new RegExp('[$' + chars + ']+', 'g'), '');\r\n return value;\r\n};\r\n\r\nfunction stripLow(value: any, keepNewLines: boolean) {\r\n let chars: String = keepNewLines === true ? '\\x00-\\x09\\x0B\\x0C\\x0E-\\x1F\\x7F' : '\\x00-\\x1F\\x7F';\r\n return blacklist(value, chars);\r\n}\r\n\r\nfunction toBoolean(value: any, strict: boolean) {\r\n if (isNotBlank(value)) {\r\n if (strict) {\r\n return value === '1' || value === 'true';\r\n }\r\n return value !== '0' && value !== 'false' && value !== '';\r\n }\r\n return value;\r\n}\r\n\r\nfunction toFloat(value: any) {\r\n if (isNotBlank(value)) {\r\n var decimalSymbol = '.';\r\n if (ReactiveFormConfig && ReactiveFormConfig.number) {\r\n decimalSymbol = (ReactiveFormConfig.json && ReactiveFormConfig.json.allowDecimalSymbol) ? ReactiveFormConfig.json.allowDecimalSymbol : ReactiveFormConfig.number.decimalSymbol;\r\n }\r\n if (decimalSymbol == ',' && typeof value == \"string\")\r\n value = value.replace(',', '.');\r\n if (ApplicationUtil.isNumeric(value))\r\n return parseFloat(value)\r\n }\r\n return null;\r\n}\r\nfunction toDouble(value: any) {\r\n return toFloat(value)\r\n}\r\n\r\nfunction toInt(value: any, radix: number) {\r\n if (isNotBlank(value))\r\n if (ApplicationUtil.isNumeric(value))\r\n return parseInt(value, radix || 10);\r\n return null;\r\n}\r\n\r\nfunction toString(value: any, radix: number) {\r\n if (isNotBlank(value))\r\n return String(value);\r\n return value;\r\n}\r\nfunction whitelist(value: any, chars: string) {\r\n if (isNotBlank(value))\r\n if (typeof value === \"string\")\r\n return value.replace(new RegExp(`[^${chars}]+`, 'g'), '');\r\n return value;\r\n}\r\n\r\nfunction toDate(value: any, config: any) {\r\n var dateProvider = new DateProvider();\r\n if (isNotBlank(value))\r\n if (typeof value === \"string\" && dateProvider.isValid(value, config)) {\r\n value = dateProvider.getDate(value);\r\n return value;\r\n }\r\n return null;\r\n}\r\n\r\nfunction escape(value: string) {\r\n if (isNotBlank(value))\r\n return (value.replace(/&/g, '&amp;')\r\n .replace(/\"/g, '&quot;')\r\n .replace(/'/g, '&#x27;')\r\n .replace(/</g, '&lt;')\r\n .replace(/>/g, '&gt;')\r\n .replace(/\\//g, '&#x2F;')\r\n .replace(/\\\\/g, '&#x5C;')\r\n .replace(/`/g, '&#96;'));\r\n return value;\r\n}\r\n\r\nfunction prefix(value: any, text: string) {\r\n if (isNotBlank(value))\r\n return `${text}${value}`;\r\n return value;\r\n}\r\n\r\nfunction suffix(value: any, text: string) {\r\n if (isNotBlank(value))\r\n return `${value}${text}`;\r\n return value;\r\n}\r\n\r\nfunction sanitize(value: any, config: SanitizeConfig) {\r\n return config.custom(value)\r\n}\r\n\r\nexport const SANITIZERS: { [key: string]: Function } = {\r\n\r\n trim: trim,\r\n\r\n ltrim: ltrim,\r\n\r\n rtrim: rtrim,\r\n\r\n blacklist: blacklist,\r\n\r\n stripLow: stripLow,\r\n\r\n toBoolean: toBoolean,\r\n\r\n toDouble: toDouble,\r\n\r\n toFloat: toFloat,\r\n\r\n toInt: toInt,\r\n\r\n 'toString': toString,\r\n\r\n whitelist: whitelist,\r\n\r\n toDate: toDate,\r\n\r\n escape: escape,\r\n\r\n prefix: prefix,\r\n\r\n suffix: suffix,\r\n\r\n sanitize: sanitize\r\n}","import { FormGroup, AbstractControl, FormControl, ValidatorFn, AsyncValidatorFn, AbstractControlOptions } from \"@angular/forms\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { MESSAGE, CONTROLS_ERROR, VALUE_CHANGED_SYNC } from '../const'\r\nimport { ApplicationUtil } from '../util/app-util'\r\nimport { DisableProvider } from '../domain/disable-provider';\r\nimport { RXCODE, MODEL_INSTANCE, PATCH } from \"../const/app.const\"\r\nimport { DECORATORS } from \"../const/decorators.const\";\r\nimport { defaultContainer } from \"../core/defaultContainer\";\r\nimport { SANITIZERS } from \"../util/sanitizers\"\r\nimport { DataSanitizer } from '../core/validator.interface'\r\nimport { ErrorMessageBindingStrategy } from \"../enums\";\r\nimport { ReactiveFormConfig } from \"../util/reactive-form-config\";\r\n\r\nconst DIRTY: string = \"dirty\";\r\nconst TOUCHED: string = \"touched\";\r\nconst UNTOUCHED: string = \"untouched\";\r\nconst PRISTINE: string = \"pristine\";\r\nconst PENDING: string = \"pending\";\r\n\r\nexport class RxFormControl extends FormControl {\r\n private _language: string;\r\n private keyName: string;\r\n private _errorMessage: string;\r\n private _errorMessages: string[] = [];\r\n private _disableProvider: DisableProvider;\r\n private _columns: string[];\r\n private _childColumns: any = [];\r\n private _parentColumns: { [key: string]: string[] };\r\n private _refDisableControls = [];\r\n private _refMessageControls = [];\r\n private _refClassNameControls = [];\r\n private _errorMessageBindingStrategy: ErrorMessageBindingStrategy;\r\n private _messageExpression: Function;\r\n private _classNameExpression: Function;\r\n private _isPassedExpression: Boolean = false;\r\n private _controlProp: { [key: string]: boolean };\r\n private _classNameControlProp: { [key: string]: boolean };\r\n private _baseValue: any;\r\n private _isModified: boolean;\r\n private _errors: any;\r\n private _dirty: boolean = false;\r\n private _validators: ValidatorFn[] ;\r\n private _asyncValidators: AsyncValidatorFn[] ;\r\n\r\n\r\n backEndErrors: { [key: string]: string } = {};\r\n updateOnElementClass: boolean | Function;\r\n preHook: Function;\r\n postHook: Function;\r\n\r\n\r\n get errorMessages(): string[] {\r\n if (!this._messageExpression) {\r\n if (this._errorMessages.length == 0 && this.errors)\r\n this.setControlErrorMessages();\r\n }\r\n else if (this._messageExpression && !this._isPassedExpression)\r\n return [];\r\n if (!this.errors && this._errorMessages.length > 0)\r\n this.setControlErrorMessages();\r\n if (this._language != this.getLanguage())\r\n this.setControlErrorMessages();\r\n return this._errorMessages;\r\n }\r\n\r\n get errorMessage(): string {\r\n if (!this._messageExpression) {\r\n if (this._errorMessage == undefined && this.errors)\r\n this.setControlErrorMessages();\r\n }\r\n else if (this._messageExpression && !this._isPassedExpression)\r\n return undefined;\r\n if (!this.errors && this._errorMessage)\r\n this.setControlErrorMessages();\r\n if (this._language != this.getLanguage())\r\n this.setControlErrorMessages();\r\n return this._errorMessage;\r\n }\r\n constructor(formState: any, validator: ValidatorFn | AbstractControlOptions | ValidatorFn[] | null, asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] | null, private entityObject: { [key: string]: any }, private baseObject: { [key: string]: any }, controlName: string, private _sanitizers: DataSanitizer[]) {\r\n super(formState, validator, asyncValidator)\r\n this.defineErrorsProperty();\r\n this._baseValue = formState === undefined ? null : this.getFormState(formState);\r\n this._isModified = false;\r\n this.keyName = controlName;\r\n this._validators = (validator as AbstractControlOptions).validators as ValidatorFn[];\r\n this._asyncValidators = (validator as AbstractControlOptions).asyncValidators as AsyncValidatorFn[];\r\n this._errorMessageBindingStrategy = ReactiveFormConfig.get(\"reactiveForm.errorMessageBindingStrategy\") as ErrorMessageBindingStrategy;\r\n if (this._sanitizers) {\r\n var floatSanitizer = this._sanitizers.filter(t => t.name == \"toFloat\")[0]\r\n if (floatSanitizer && this._baseValue && ReactiveFormConfig.number && ReactiveFormConfig.number.decimalSymbol == \",\") {\r\n let baseValue = String(this._baseValue);\r\n if (baseValue.indexOf('.') != -1) {\r\n this._baseValue = baseValue.replace(\".\", ReactiveFormConfig.number.decimalSymbol);\r\n super.setValue(this._baseValue);\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n private defineErrorsProperty() {\r\n Object.defineProperty(this,\"errors\", {\r\n configurable: true,\r\n get() {\r\n if (this._language && this._language != this.getLanguage() && this.validator) {\r\n this[\"errors\"] = this.validator(this)\r\n }\r\n return this._errors;},\r\n set(value) { this._errors = value; },\r\n })\r\n }\r\n\r\n private getFormState(value) {\r\n let baseValue = value\r\n if (Array.isArray(value)) {\r\n baseValue = [];\r\n value.forEach(t => baseValue.push(t));\r\n }\r\n return baseValue;\r\n }\r\n\r\n get isModified() {\r\n return this._isModified;\r\n }\r\n\r\n getValidators(): ValidatorFn[] {\r\n return this.getValidatorSource(this._validators);\r\n }\r\n\r\n getAsyncValidators(): AsyncValidatorFn[] {\r\n return this.getValidatorSource(this._asyncValidators); \r\n }\r\n\r\n private getValidatorSource(validators:any[]) {\r\n if (validators)\r\n return Array.isArray(validators) ? [...validators] : [validators]\r\n return [];\r\n }\r\n\r\n setValidators(newValidator: ValidatorFn | ValidatorFn[] | null) {\r\n this._validators = newValidator as ValidatorFn[];\r\n super.setValidators(newValidator);\r\n }\r\n\r\n setAsyncValidators(newValidator: AsyncValidatorFn | AsyncValidatorFn[] | null): void {\r\n this._asyncValidators = newValidator as AsyncValidatorFn[];\r\n super.setAsyncValidators(newValidator);\r\n }\r\n\r\n setValue(value: any, options?: {\r\n dirty?: boolean;\r\n updateChanged?: boolean;\r\n onlySelf?: boolean;\r\n emitEvent?: boolean;\r\n isThroughDynamic?: boolean;\r\n }): void {\r\n (<any>this.parent).changing = true;\r\n let parsedValue = this.getSanitizedValue(value)\r\n if (options && options.dirty)\r\n this.baseObject[this.keyName] = value;\r\n this.entityObject[this.keyName] = parsedValue;\r\n super.setValue(value, options);\r\n\r\n this.bindError();\r\n this.bindClassName();\r\n this.executeExpressions();\r\n this.callPatch();\r\n if (options && !options.updateChanged && this.root[VALUE_CHANGED_SYNC]) {\r\n this.root[VALUE_CHANGED_SYNC]();\r\n }\r\n (<any>this.parent).changing = false;\r\n }\r\n\r\n getControlValue() {\r\n return this.getSanitizedValue(this.value);\r\n }\r\n\r\n bindError() {\r\n if (this._messageExpression)\r\n this._isPassedExpression = this.executeExpression(this._messageExpression, this);\r\n this.setControlErrorMessages();\r\n var t: any = this;\r\n t[\"errors\"] = this.errors;\r\n }\r\n\r\n bindClassName() {\r\n if (this.updateOnElementClass && typeof this.updateOnElementClass === \"function\") {\r\n let className = this.executeExpression(this._classNameExpression, this);\r\n let updateElement = this.updateOnElementClass as Function;\r\n updateElement(className);\r\n }\r\n }\r\n\r\n\r\n setBackEndErrors(error: { [key: string]: string }) {\r\n Object.keys(error).forEach(key => this.backEndErrors[key] = error[key]);\r\n this.setControlErrorMessages();\r\n }\r\n\r\n clearBackEndErrors(errors?: { [key: string]: any }) {\r\n if (!errors)\r\n this.backEndErrors = {};\r\n else\r\n Object.keys(errors).forEach(t => delete this.backEndErrors[t]);\r\n this.setControlErrorMessages();\r\n }\r\n\r\n markAsTouched(opts?: {\r\n onlySelf?: boolean;\r\n }): void {\r\n let currentState = this.touched;\r\n super.markAsTouched(opts);\r\n if (currentState != this.touched)\r\n this.runControlPropChangeExpression([TOUCHED, UNTOUCHED])\r\n\r\n }\r\n\r\n markAsUntouched(opts?: {\r\n onlySelf?: boolean;\r\n }): void {\r\n let currentState = this.untouched;\r\n super.markAsUntouched(opts);\r\n if (currentState != this.untouched)\r\n this.runControlPropChangeExpression([UNTOUCHED, TOUCHED])\r\n }\r\n\r\n markAsDirty(opts?: {\r\n onlySelf?: boolean;\r\n }): void {\r\n let currentState = this._dirty;\r\n super.markAsDirty(opts);\r\n this._dirty = true;\r\n if (currentState != this._dirty)\r\n this.runControlPropChangeExpression([DIRTY])\r\n }\r\n\r\n markAsPristine(opts?: {\r\n onlySelf?: boolean;\r\n }): void {\r\n let currentState = this.pristine;\r\n super.markAsDirty(opts);\r\n if (currentState != this.pristine)\r\n this.runControlPropChangeExpression([PRISTINE])\r\n }\r\n\r\n markAsPending(opts?: {\r\n onlySelf?: boolean;\r\n emitEvent?: boolean;\r\n }): void {\r\n let currentState = this.pending;\r\n super.markAsDirty(opts);\r\n if (currentState != this.pending)\r\n this.runControlPropChangeExpression([PENDING])\r\n }\r\n\r\n runControlPropChangeExpression(propNames: string[]) {\r\n propNames.forEach(name => {\r\n if ((this._controlProp && this._messageExpression && this._controlProp[name]) || (!this._messageExpression && this.checkErrorMessageStrategy()))\r\n this.bindError();\r\n if (this._classNameControlProp && this._classNameControlProp[name])\r\n this.bindClassName();\r\n });\r\n }\r\n\r\n refresh() {\r\n this.getMessageExpression(<FormGroup>this.parent, this.keyName);\r\n this.bindConditionalControls(DECORATORS.disabled, \"_refDisableControls\");\r\n this.bindConditionalControls(DECORATORS.error, \"_refMessageControls\");\r\n this.bindConditionalControls(DECORATORS.elementClass, \"_refClassNameControls\");\r\n this.executeExpressions();\r\n this.bindError();\r\n }\r\n\r\n reset(value?: any) {\r\n if (value !== undefined)\r\n this.setValue(value);\r\n else\r\n this.setValue(this.getFormState(this._baseValue));\r\n this._dirty = false;\r\n }\r\n\r\n commit() {\r\n this._baseValue = this.value;\r\n this.callPatch();\r\n }\r\n\r\n private callPatch() {\r\n this._isModified = this.getValue(this._baseValue) != this.getValue(this.value);\r\n if (this.parent && this.parent[PATCH])\r\n this.parent[PATCH](this.keyName);\r\n }\r\n\r\n private checkErrorMessageStrategy() {\r\n let isBind: boolean = true;\r\n switch (this._errorMessageBindingStrategy) {\r\n case ErrorMessageBindingStrategy.OnSubmit:\r\n isBind = (<any>this.parent).submitted;\r\n break;\r\n case ErrorMessageBindingStrategy.OnDirty:\r\n isBind = this._dirty;\r\n break;\r\n case ErrorMessageBindingStrategy.OnTouched:\r\n isBind = this.touched;\r\n break;\r\n case ErrorMessageBindingStrategy.OnDirtyOrTouched:\r\n isBind = this._dirty || this.touched;\r\n break;\r\n case ErrorMessageBindingStrategy.OnDirtyOrSubmit:\r\n isBind = this._dirty || (<any>this.parent).submitted;\r\n break;\r\n case ErrorMessageBindingStrategy.OnTouchedOrSubmit:\r\n isBind = this.touched || (<any>this.parent).submitted;\r\n break;\r\n default:\r\n isBind = true;\r\n }\r\n return isBind;\r\n }\r\n\r\n private executeExpressions() {\r\n this.processExpression(\"_refDisableControls\", \"disabled\");\r\n this.processExpression(\"_refMessageControls\", \"bindError\");\r\n this.processExpression(\"_refClassNameControls\", \"bindClassName\");\r\n }\r\n\r\n private getMessageExpression(formGroup: FormGroup, keyName: string): void {\r\n if (formGroup[MODEL_INSTANCE]) {\r\n let instanceContainer = defaultContainer.get(formGroup[MODEL_INSTANCE].constructor);\r\n if (instanceContainer) {\r\n this._messageExpression = instanceContainer.nonValidationDecorators.error.conditionalExpressions[keyName]\r\n this._controlProp = instanceContainer.nonValidationDecorators.error.controlProp[this.keyName];\r\n this._classNameExpression = instanceContainer.nonValidationDecorators.elementClass.conditionalExpressions[keyName];\r\n this._classNameControlProp = instanceContainer.nonValidationDecorators.elementClass.controlProp[keyName];\r\n if (this._classNameExpression)\r\n this.updateOnElementClass = true;\r\n }\r\n\r\n }\r\n }\r\n\r\n private getSanitizedValue(value: any) {\r\n if (this._sanitizers) {\r\n for (let sanitizer of this._sanitizers) {\r\n value = SANITIZERS[sanitizer.name](value, sanitizer.config);\r\n }\r\n }\r\n return value;\r\n }\r\n\r\n private bindConditionalControls(decoratorType: string, refName: string) {\r\n this._disableProvider = new DisableProvider(decoratorType, this.entityObject);\r\n this[refName] = this._disableProvider.zeroArgumentProcess(this, this.keyName)\r\n this._disableProvider.oneArgumentProcess(this, `${this.keyName}${RXCODE}1`).forEach(t => this[refName].push(t))\r\n\r\n }\r\n\r\n private setControlErrorMessages() {\r\n if ((!this._messageExpression && this.checkErrorMessageStrategy()) || this._isPassedExpression) {\r\n this._errorMessages = [];\r\n if (this.errors) {\r\n Object.keys(this.errors).forEach(t => {\r\n if (this.parent) {\r\n this.parent[CONTROLS_ERROR][this.keyName] = this._errorMessage = this.getErrorMessage(this.errors, t);\r\n if (!this._errorMessage) {\r\n let errorObject = ObjectMaker.toJson(t, undefined, [this.errors[t][t]]);\r\n this.parent[CONTROLS_ERROR][this.keyName] = this._errorMessage = this.getErrorMessage(errorObject, t);\r\n }\r\n } else\r\n this._errorMessage = this.getErrorMessage(this.errors, t)\r\n this._errorMessages.push(this._errorMessage);\r\n })\r\n } else {\r\n this._errorMessage = undefined;\r\n if (this.parent) {\r\n this.parent[CONTROLS_ERROR][this.keyName] = undefined\r\n delete this.parent[CONTROLS_ERROR][this.keyName];\r\n }\r\n }\r\n let backEndErrors = Object.keys(this.backEndErrors);\r\n if (backEndErrors.length > 0)\r\n backEndErrors.forEach(t => { this._errorMessages.push(this._errorMessage = this.backEndErrors[t]); })\r\n } else {\r\n this._errorMessages = [];\r\n this._errorMessage = undefined;\r\n }\r\n this._language = this.getLanguage();\r\n \r\n }\r\n\r\n private getLanguage() {\r\n return (ReactiveFormConfig.i18n && ReactiveFormConfig.i18n.language) ? ReactiveFormConfig.i18n.language : undefined;\r\n }\r\n\r\n private getErrorMessage(errorObject: { [key: string]: string }, keyName: string) {\r\n if (errorObject[keyName][MESSAGE])\r\n return errorObject[keyName][MESSAGE];\r\n return;\r\n }\r\n\r\n\r\n\r\n private processExpression(propName: string, operationType: string) {\r\n if (this[propName])\r\n for (var controlInfo of this[propName]) {\r\n let control = controlInfo.isRoot ? ApplicationUtil.getControl(controlInfo.controlPath, ApplicationUtil.getRootFormGroup(this)) : ApplicationUtil.getFormControl(controlInfo.controlPath, this);\r\n if (control) {\r\n if (operationType == \"disabled\") {\r\n let result = this.executeExpression(controlInfo.conditionalExpression, control);\r\n if (result)\r\n control.disable()\r\n else\r\n control.enable();\r\n } else if (operationType == \"bindError\")\r\n control.bindError();\r\n else if (operationType == \"bindClassName\")\r\n control.bindClassName();\r\n\r\n }\r\n }\r\n }\r\n\r\n private executeExpression(expression: Function, control: AbstractControl): Boolean {\r\n return expression.call(control.parent[MODEL_INSTANCE], control, ApplicationUtil.getParentModelInstanceValue(this), control.parent[MODEL_INSTANCE])\r\n }\r\n\r\n private getValue(value: any) {\r\n return value !== undefined && value !== null && value !== \"\" ? value : \"\";\r\n }\r\n\r\n}\r\n","import { PasswordValidation } from \"../models/password-validation.model\";\r\nimport { RegExRule } from \"./regex-rules\";\r\n\r\nconst ALPHABET: string = \"alphabet\";\r\nconst DIGIT: string = \"digit\";\r\nconst CONTAINS: string = \"contains\";\r\nconst LOWERCASE: string = \"lowerCase\";\r\nconst UPPERCASE: string = \"upperCase\";\r\nconst SPECIAL_CHARACTER: string = \"specialCharacter\";\r\nconst MIN_LENGTH: string = \"minLength\";\r\nconst MAX_LENGTH: string = \"maxLength\";\r\n\r\n\r\nexport class RegexValidator {\r\n static isExits(value: any, regex: RegExp): boolean {\r\n return value.match(regex) != null;\r\n }\r\n static isValid(value: any, regex: RegExp): boolean {\r\n return regex.test(value);\r\n }\r\n\r\n static isNotBlank(value: any, isRemoveSpace: boolean = false): boolean {\r\n return !isRemoveSpace ?\r\n (value === 0) || (value !== undefined && value !== null && value !== \"\") :\r\n (value === 0) || (value !== undefined && value !== null && String(value).trim() !== \"\")\r\n }\r\n static isValidPassword(passwordValidation: PasswordValidation, value: string): { [key: string]: any } {\r\n let isValid = false;\r\n let jObject: { [key: string]: any } = {};\r\n let keyName = \"status\";\r\n let objectProperties = Object.getOwnPropertyNames(passwordValidation)\r\n for (let propertyName of objectProperties) {\r\n switch (propertyName) {\r\n case ALPHABET:\r\n isValid = RegexValidator.isExits(value, RegExRule.alphaExits);\r\n keyName = ALPHABET;\r\n break;\r\n case DIGIT:\r\n isValid = RegexValidator.isValid(value, RegExRule.isDigitExits);\r\n keyName = DIGIT;\r\n break;\r\n case CONTAINS:\r\n isValid = value.indexOf(passwordValidation[CONTAINS]) != -1;\r\n keyName = CONTAINS;\r\n break;\r\n case LOWERCASE:\r\n isValid = RegexValidator.isValid(value, RegExRule.lowerCase);\r\n keyName = LOWERCASE;\r\n break;\r\n case UPPERCASE:\r\n isValid = RegexValidator.isValid(value, RegExRule.upperCase);\r\n keyName = UPPERCASE;\r\n break;\r\n case SPECIAL_CHARACTER:\r\n isValid = RegexValidator.isExits(value, RegExRule.specialCharacter);\r\n keyName = SPECIAL_CHARACTER;\r\n break;\r\n case MIN_LENGTH:\r\n isValid = value.length >= passwordValidation[propertyName];\r\n keyName = MIN_LENGTH;\r\n break;\r\n case MAX_LENGTH:\r\n isValid = value.length <= passwordValidation[propertyName];\r\n keyName = MAX_LENGTH;\r\n break;\r\n }\r\n if (!isValid)\r\n break;\r\n }\r\n return { isValid: isValid, keyName: keyName }\r\n }\r\n\r\n static isZero(value: any) {\r\n return value == 0;\r\n }\r\n\r\n static commaRegex(): RegExp {\r\n return new RegExp(\",\", \"g\");\r\n }\r\n}\r\n","import { FormDataConfig } from '../models/interface/form-data-config';\r\nimport { RegexValidator } from '../util/regex-validator';\r\n\r\nconst OBJECT: string = \"object\";\r\nconst BOOLEAN: string = \"boolean\";\r\n\r\nexport class FormDataProvider {\r\n\r\n convertToFormData(jObject: { [key: string]: any }, options?: FormDataConfig): FormData {\r\n return this.convertFormData(jObject, undefined, undefined, options);\r\n }\r\n\r\n convertFormData(jObject: { [key: string]: any }, currentFormData?: FormData, parentKey?: string, options?: FormDataConfig): FormData {\r\n let formData = currentFormData || new FormData();\r\n let propName: string = '';\r\n for (var columnName in jObject) {\r\n propName = !parentKey ? columnName : `${parentKey}[${columnName}]`;\r\n if (Array.isArray(jObject[columnName])) {\r\n jObject[columnName].forEach((row, index) => {\r\n propName = `${columnName}[${index}]`;\r\n if (typeof row === OBJECT)\r\n this.convertFormData(row, formData, propName, options);\r\n else\r\n this.nonObjectValueBind(row, formData, propName, options);\r\n })\r\n } else if (jObject[columnName] !== null && !(jObject[columnName] instanceof Date) && typeof jObject[columnName] === OBJECT && !(jObject[columnName] instanceof File || jObject[columnName] instanceof FileList)) {\r\n this.convertFormData(jObject[columnName], formData, propName, options)\r\n } else {\r\n this.nonObjectValueBind(jObject[columnName], formData, propName, options);\r\n }\r\n }\r\n return formData;\r\n }\r\n\r\n nonObjectValueBind(value: any, formData: FormData, propName: string, options?: FormDataConfig) {\r\n if (typeof value === BOOLEAN) {\r\n let formValue: any = value ? true : false;\r\n formData.append(propName, formValue);\r\n } else if (value instanceof FileList) {\r\n for (var i = 0; i < value.length; i++) {\r\n formData.append(options && options.excludeImageIndex && value.length === 1 ? propName : `${propName}[${i}]`, value.item(i));\r\n }\r\n } else {\r\n if (RegexValidator.isNotBlank(value))\r\n formData.append(propName, value);\r\n }\r\n }\r\n\r\n}","import { FormControl, FormGroup, FormArray } from \"@angular/forms\"\r\nimport { ResetFormType } from \"../enums/reset-type\";\r\n\r\nexport function isResetControl(controlName:string,control: any, options?: {\r\n resetType?: ResetFormType,\r\n with?: string[],\r\n value?: { [key: string]: any }\r\n}) {\r\n let isReset: boolean = true;\r\n if (options) {\r\n isReset = false;\r\n if (options.resetType)\r\n switch (options.resetType) {\r\n case ResetFormType.ControlsOnly:\r\n isReset = control instanceof FormControl;\r\n break;\r\n case ResetFormType.ControlsAndFormGroupsOnly:\r\n isReset = control instanceof FormControl || control instanceof FormGroup;\r\n break;\r\n case ResetFormType.FormGroupsOnly:\r\n isReset = control instanceof FormGroup;\r\n break;\r\n case ResetFormType.FormArraysOnly:\r\n isReset = control instanceof FormArray;\r\n break;\r\n case ResetFormType.DefinedPropsOnly:\r\n isReset = options.value ? Object.keys(options.value).indexOf(controlName) != -1 : false;\r\n break;\r\n default:\r\n isReset = true;\r\n break;\r\n }\r\n if (!isReset && options.with) \r\n isReset = options.with.filter(x => x.split('.')[0] == controlName.split('.')[0])[0] !== undefined;\r\n if (!isReset && options.value && (options.resetType === undefined || options.resetType !== ResetFormType.DefinedPropsOnly))\r\n isReset = true;\r\n }\r\n return isReset;\r\n}\r\n\r\nexport function getNestedOptions(controlName: string, options?: {\r\n resetType?: ResetFormType,\r\n with?: string[],\r\n value?: { [key: string]: any }\r\n}) {\r\n if (options) {\r\n let jObjectOptions: {\r\n resetType?: ResetFormType,\r\n with?: string[],\r\n value?: { [key: string]: any }\r\n } = {};\r\n if (options.resetType)\r\n jObjectOptions.resetType = (options.resetType == ResetFormType.FormGroupsOnly || options.resetType == ResetFormType.FormArraysOnly) ? ResetFormType.ControlsOnly : options.resetType;\r\n if (options.with) {\r\n let nestedControls = options.with.filter(t => t.split('.')[0] == controlName);\r\n let controlNames = nestedControls.map(x => {\r\n let splitControls = x.split('.');\r\n splitControls.splice(0, 1);\r\n return splitControls.join('.');\r\n });\r\n jObjectOptions.with = controlNames;\r\n }\r\n if (options.value && options.value[controlName])\r\n jObjectOptions.value = options.value[controlName];\r\n jObjectOptions = Object.keys(jObjectOptions).length > 0 ? jObjectOptions : undefined;\r\n return jObjectOptions;\r\n }\r\n return undefined;\r\n}","import { FormGroup, FormArray, FormControl, AbstractControl, AsyncValidatorFn } from \"@angular/forms\";\r\nimport { RxFormControl } from \"./form-control\";\r\nimport { clone } from './entity.service';\r\nimport { RegexValidator } from '../util/regex-validator';\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { RxFormArray } from './rx-form-array';\r\nimport { FormDataProvider } from \"../domain/form-data\";\r\nimport { ResetFormType } from \"../enums/reset-type\";\r\nimport { isResetControl, getNestedOptions } from '../util/reset-form'\r\nimport { defaultContainer } from '../core/defaultContainer'\r\nimport { FormDataConfig } from \"../models/interface/form-data-config\";\r\nexport class RxFormGroup extends FormGroup {\r\n private baseObject: { [key: string]: any }\r\n private formDataProvider: FormDataProvider;\r\n private _submitted: boolean;\r\n private _modified: { [key: string]: any } = {};\r\n private _isModified: boolean = false;\r\n changing: boolean = false;\r\n constructor(private model: any, private entityObject: { [key: string]: any }, controls: {\r\n [key: string]: AbstractControl;\r\n }, validatorOrOpts?: any, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null) {\r\n super(controls, validatorOrOpts, asyncValidator);\r\n this.baseObject = {}\r\n for (var column in this.entityObject)\r\n this.baseObject[column] = this.entityObject[column]\r\n this.formDataProvider = new FormDataProvider();\r\n }\r\n\r\n bindPrimaryKey(modelInstance: any, jObject: { [key: string]: any }) {\r\n let instanceContainer = defaultContainer.get(modelInstance.constructor); \r\n if (instanceContainer)\r\n {\r\n let primaryKeyProp = instanceContainer.properties.filter(x => x.isPrimaryKey)[0];\r\n if (primaryKeyProp && this.modelInstance[primaryKeyProp.name])\r\n jObject[primaryKeyProp.name] = this.modelInstance[primaryKeyProp.name];\r\n }\r\n }\r\n\r\n get modifiedValue(): { [key: string]: any } {\r\n let jObject = {};\r\n if (Object.keys(this._modified).length > 0) {\r\n this.bindPrimaryKey(this.modelInstance, jObject)\r\n for (var columnName in this._modified) {\r\n if (this.controls[columnName] instanceof RxFormGroup)\r\n jObject[columnName] = (<RxFormGroup>this.controls[columnName]).modifiedValue;\r\n else if (this.controls[columnName] instanceof FormArray) {\r\n let formArray = this.controls[columnName] as FormArray;\r\n jObject[columnName] = [];\r\n for (var i = 0; i < this._modified[columnName].length; i++) {\r\n let modifiedValue = (<RxFormGroup>formArray.controls[i]).modifiedValue\r\n if (Object.keys(modifiedValue).length > 0)\r\n jObject[columnName].push(modifiedValue)\r\n }\r\n if (jObject[columnName].length == 0)\r\n delete jObject[columnName];\r\n } else\r\n jObject[columnName] = this._modified[columnName];\r\n }\r\n return jObject;\r\n }\r\n return this._modified;\r\n }\r\n\r\n get isModified() {\r\n return this._isModified;\r\n }\r\n\r\n patch(controlName?: string) {\r\n if (controlName) {\r\n let control = <RxFormControl>this.controls[controlName];\r\n this.processModified(controlName, control);\r\n } else {\r\n this.nestedFormsModification();\r\n }\r\n this._isModified = Object.keys(this._modified).length > 0;\r\n if (!this._isModified)\r\n this.nestedArrayIsModified();\r\n if (this.parent && (<RxFormGroup>this.parent).patch)\r\n (<RxFormGroup>this.parent).patch();\r\n }\r\n\r\n isDirty(): boolean {\r\n let isDirty: boolean = false;\r\n for (let name in this.value) {\r\n let currentValue = this.modelInstance[name];\r\n if (!(this.controls[name] instanceof FormGroup || this.controls[name] instanceof FormArray)) {\r\n isDirty = ApplicationUtil.notEqualTo(this.baseObject[name], currentValue);\r\n } else if (this.controls[name] instanceof RxFormGroup)\r\n isDirty = (<RxFormGroup>this.controls[name]).isDirty();\r\n else if (this.controls[name] instanceof FormArray) {\r\n for (let formGroup of (<FormArray>this.controls[name]).controls) {\r\n isDirty = (<RxFormGroup>formGroup).isDirty();\r\n }\r\n }\r\n if (isDirty)\r\n break;\r\n }\r\n return isDirty;\r\n };\r\n\r\n resetForm(options?: {\r\n resetType?: ResetFormType,\r\n with?: string[],\r\n value?: { [key: string]:any}\r\n }): void {\r\n for (let name in this.controls) {\r\n if (isResetControl(name, this.controls[name], options)) {\r\n if (this.controls[name] instanceof FormGroup)\r\n (<RxFormGroup>this.controls[name]).resetForm(getNestedOptions(name,options));\r\n else if (this.controls[name] instanceof FormArray) {\r\n (<RxFormArray>this.controls[name]).resetForm(options && options.value ? options.value[name] : undefined);\r\n } else {\r\n if (options && options.value && RegexValidator.isNotBlank(options.value[name]))\r\n this.controls[name].reset(options.value[name]);\r\n else\r\n this.controls[name].reset();\r\n }\r\n }\r\n }\r\n }\r\n\r\n commit() {\r\n for (let name in this.controls) {\r\n if (this.controls[name] instanceof FormGroup)\r\n (<RxFormGroup>this.controls[name]).commit();\r\n else if (this.controls[name] instanceof FormArray) {\r\n (<RxFormArray>this.controls[name]).commit();\r\n \r\n } else {\r\n (<RxFormControl>this.controls[name]).commit();\r\n }\r\n }\r\n }\r\n\r\n patchModelValue(value: {\r\n [key: string]: any;\r\n }, options?: {\r\n onlySelf?: boolean;\r\n emitEvent?: boolean;\r\n }): void {\r\n if (value) {\r\n for (let name in this.controls) {\r\n if (this.controls[name] instanceof RxFormGroup && value[name])\r\n (<RxFormGroup>this.controls[name]).patchModelValue(value[name], options);\r\n else if (this.controls[name] instanceof FormArray && Array.isArray(value[name])) {\r\n let index = 0;\r\n for (let formGroup of (<FormArray>this.controls[name]).controls) {\r\n if (value[name][index])\r\n (<RxFormGroup>formGroup).patchModelValue(value[name][index], options);\r\n index = index + 1;\r\n }\r\n } else\r\n if (value[name] !== undefined)\r\n this.controls[name].patchValue(value[name], options);\r\n }\r\n }\r\n }\r\n\r\n\r\n getErrorSummary(onlyMessage: boolean): { [key: string]: any } {\r\n let jObject: { [key: string]: any } = {};\r\n Object.keys(this.controls).forEach(columnName => {\r\n if (this.controls[columnName] instanceof FormGroup) {\r\n let error = (<RxFormGroup>this.controls[columnName]).getErrorSummary(false);\r\n if (Object.keys(error).length > 0)\r\n jObject[columnName] = error;\r\n }\r\n else if (this.controls[columnName] instanceof FormArray) {\r\n let index = 0;\r\n for (let formGroup of (<FormArray>this.controls[columnName]).controls) {\r\n let error = (<RxFormGroup>formGroup).getErrorSummary(false);\r\n if (Object.keys(error).length > 0) {\r\n error.index = index;\r\n if (!jObject[columnName])\r\n jObject[columnName] = [];\r\n jObject[columnName].push(error);\r\n }\r\n index++;\r\n }\r\n } else {\r\n if (this.controls[columnName].errors) {\r\n let error = this.controls[columnName].errors;\r\n if (onlyMessage)\r\n for (let validationName in error)\r\n jObject[columnName] = error[validationName].message;\r\n else\r\n jObject[columnName] = error;\r\n }\r\n }\r\n })\r\n return jObject;\r\n }\r\n\r\n valueChangedSync() {\r\n Object.keys(this.controls).forEach(columnName => {\r\n if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup) && !(this.entityObject[columnName] instanceof FormControl || this.entityObject[columnName] instanceof RxFormControl) && (<RxFormControl>this.controls[columnName]).getControlValue && ApplicationUtil.notEqualTo((<RxFormControl>this.controls[columnName]).getControlValue(), this.entityObject[columnName])) {\r\n this.controls[columnName].setValue(this.entityObject[columnName], { updateChanged: true });\r\n } else if ((this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray)) {\r\n for (let formGroup of (<FormArray>this.controls[columnName]).controls) {\r\n (<RxFormGroup>formGroup).valueChangedSync();\r\n }\r\n } else if ((this.controls[columnName] instanceof RxFormGroup)) {\r\n (<RxFormGroup>this.controls[columnName]).valueChangedSync();\r\n }\r\n })\r\n }\r\n\r\n refreshDisable() {\r\n Object.keys(this.controls).forEach(columnName => {\r\n if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup)) {\r\n (<RxFormControl>this.controls[columnName]).refresh();\r\n } else if ((this.controls[columnName] instanceof RxFormGroup)) {\r\n (<RxFormGroup>this.controls[columnName]).refreshDisable();\r\n }\r\n })\r\n\r\n }\r\n\r\n bindErrorMessages() {\r\n Object.keys(this.controls).forEach(columnName => {\r\n if (!(this.controls[columnName] instanceof FormArray || this.controls[columnName] instanceof RxFormArray) && !(this.controls[columnName] instanceof FormGroup || this.controls[columnName] instanceof RxFormGroup)) {\r\n (<RxFormControl>this.controls[columnName]).bindError();\r\n } else if ((this.controls[columnName] instanceof RxFormGroup)) {\r\n (<RxFormGroup>this.controls[columnName]).bindErrorMessages();\r\n }\r\n })\r\n }\r\n\r\n get submitted() {\r\n return this._submitted;\r\n }\r\n\r\n set submitted(value: boolean) {\r\n this._submitted = value;\r\n Object.keys(this.controls).forEach(columnName => {\r\n if (this.controls[columnName] instanceof FormArray) {\r\n let formArray = this.controls[columnName] as FormArray;\r\n for (let formGroup of formArray.controls)\r\n (<RxFormGroup>formGroup).submitted = value;\r\n } else if (this.controls[columnName] instanceof FormGroup) {\r\n (<RxFormGroup>this.controls[columnName]).submitted = value;\r\n } else\r\n (<RxFormControl>this.controls[columnName]).bindError();\r\n })\r\n }\r\n\r\n get modelInstanceValue() {\r\n return clone(this.entityObject);\r\n }\r\n\r\n get modelInstance() {\r\n return this.entityObject;\r\n }\r\n\r\n get controlsError(): { [key: string]: any } {\r\n return this.getErrorSummary(true);\r\n }\r\n\r\n toFormData(options?: FormDataConfig): FormData {\r\n return this.formDataProvider.convertToFormData(this.value, options);\r\n }\r\n\r\n private processModified(controlName:string,control: any) {\r\n if (control.isModified)\r\n this._modified[controlName] = control.value;\r\n else\r\n delete this._modified[controlName];\r\n this._isModified = Object.keys(this._modified).length > 0;\r\n }\r\n\r\n private nestedArrayIsModified() {\r\n for (var controlName in this.controls) {\r\n if (this.controls[controlName] instanceof RxFormArray)\r\n this._isModified = (<RxFormArray>this.controls[controlName]).isModified;\r\n if (this._isModified)\r\n break;\r\n }\r\n }\r\n\r\n setBackEndErrors(errors: { [key: string]: any }) {\r\n Object.keys(errors).forEach(controlName => {\r\n if (this.controls[controlName]) {\r\n if (this.controls[controlName] instanceof FormGroup)\r\n (<RxFormGroup>this.controls[controlName]).setBackEndErrors(errors[controlName])\r\n else\r\n (<RxFormControl>this.controls[controlName]).setBackEndErrors(errors[controlName]);\r\n }\r\n })\r\n }\r\n\r\n clearBackEndErrors(errors?: { [key: string]: any }) {\r\n let clearErrors = errors ? Object.keys(errors) : Object.keys(this.controls);\r\n clearErrors.forEach(controlName => {\r\n if (this.controls[controlName]) {\r\n if (this.controls[controlName] instanceof FormGroup)\r\n errors ? (<RxFormGroup>this.controls[controlName]).clearBackEndErrors(errors[controlName]) : (<RxFormGroup>this.controls[controlName]).clearBackEndErrors()\r\n else\r\n errors ? (<RxFormControl>this.controls[controlName]).clearBackEndErrors(errors[controlName]) : (<RxFormGroup>this.controls[controlName]).clearBackEndErrors()\r\n }\r\n })\r\n }\r\n\r\n private nestedFormsModification() {\r\n for (var controlName in this.controls) {\r\n if (this.controls[controlName] instanceof RxFormGroup) \r\n this.processModified(controlName, this.controls[controlName]);\r\n else if (this.controls[controlName] instanceof RxFormArray) {\r\n if ((<RxFormArray>this.controls[controlName]).isModified) {\r\n let formGroups = (<RxFormArray>this.controls[controlName]).controls;\r\n this._modified[controlName] = [];\r\n for (var formGroup of formGroups) {\r\n if ((<RxFormGroup>formGroup).isModified) {\r\n if (!this._modified[controlName])\r\n this._modified[controlName] = [];\r\n this._modified[controlName].push((<RxFormGroup>formGroup).modifiedValue)\r\n }\r\n\r\n }\r\n if (this._modified[controlName].length == 0)\r\n delete this._modified[controlName];\r\n } else if (this._modified[controlName])\r\n delete this._modified[controlName];\r\n }\r\n }\r\n }\r\n}\r\n","import { Linq } from './linq';\r\nimport { ApplicationUtil } from './app-util';\r\nimport {\r\n AbstractControl\r\n} from \"@angular/forms\";\r\n\r\nimport { RxFormGroup } from \"../services/rx-form-group\"\r\n\r\nexport class FormProvider {\r\n\r\n\r\n\r\n static ProcessRule(control: AbstractControl, config: any, isDynamicConfig: boolean = false): boolean | { [key: string]: any } {\r\n if (config && config.expressionProcessed)\r\n return true;\r\n const formGroupValue = ApplicationUtil.getParentObjectValue(control);\r\n const parentObject = (control.parent) ? ApplicationUtil.cloneValue(control.parent.value) : undefined;\r\n let modelInstance = undefined;\r\n if (control.parent && control.parent instanceof RxFormGroup)\r\n modelInstance = (<RxFormGroup>control.parent).modelInstance;\r\n if (parentObject) {\r\n this.updateFormControlValue(parentObject, control.parent.controls, control, config);\r\n this.forDisableUpdate(parentObject, config)\r\n }\r\n else if (config.conditionalExpression)\r\n return false;\r\n return Linq.execute(formGroupValue, config, parentObject, modelInstance, isDynamicConfig);\r\n }\r\n\r\n private static updateFormControlValue(parentObject: { [key: string]: any }, controls: any, control: AbstractControl, config: any) {\r\n for (var controlName in parentObject) {\r\n if (!(parentObject[controlName] instanceof Object))\r\n if (controls[controlName] === control) {\r\n parentObject[controlName] = control.value;\r\n break;\r\n }\r\n }\r\n }\r\n private static forDisableUpdate(parentObject, config) {\r\n if (config.disableConfig)\r\n Object.keys(config.disableConfig).forEach(column => {\r\n parentObject[column] = config.disableConfig[column];\r\n })\r\n }\r\n}\r\n","export const ARRAY_CONFIG: string = \"ArrayConfig\";\r\nexport const FIELD_CONFIG: string = \"FieldConfig\";\r\nexport const IP_CONFIG: string = \"IpConfig\";\r\nexport const NUMBER_CONFIG: string = \"NumberConfig\";\r\nexport const PASSWORD_CONFIG: string = \"PasswordConfig\";\r\nexport const PATTERN_CONFIG: string = \"PatternConfig\";\r\nexport const RANGE_CONFIG: string = \"RangeConfig\";\r\nexport const RELATIONAL_OPERATOR_CONFIG: string = \"RelationalOperatorConfig\";","import { ARRAY_CONFIG, FIELD_CONFIG, IP_CONFIG, NUMBER_CONFIG, PASSWORD_CONFIG, PATTERN_CONFIG, RANGE_CONFIG } from './config-names.const'\r\n\r\nexport const CONFIG_REQUIRED_FIELDS: { [key: string]: string[] } = {\r\n [ARRAY_CONFIG]: [\"matchValues\"],\r\n [FIELD_CONFIG]: [\"fieldName\"],\r\n [IP_CONFIG]: [\"version\"],\r\n [PASSWORD_CONFIG]: [\"validation\"],\r\n [NUMBER_CONFIG]: [\"value\"],\r\n [PATTERN_CONFIG]: [\"expression\"],\r\n [RANGE_CONFIG]: [\"minimumNumber\", \"maximumNumber\"],\r\n}","import {FormProvider} from \"./form-provider\"\r\nimport { AbstractControl } from \"@angular/forms\"\r\nimport { clone } from \"../services/entity.service\"\r\nimport { CONFIG_REQUIRED_FIELDS } from \"../const/config-required-fields.const\";\r\nexport function getConfigObject(config: any,control:any,configName:string = ''): any {\r\n return (config != undefined && config != true) ? configProvider(control,config,configName) : {};\r\n}\r\nfunction configProvider(control:AbstractControl,config:any,configName:string):any{\r\n if(config.dynamicConfig){\r\n let currentConfig = FormProvider.ProcessRule(control,clone(config),true)\r\n if(typeof currentConfig != \"boolean\"){\r\n currentConfig.conditionalExpression = config.conditionalExpression;\r\n currentConfig.dynamicConfig = config.dynamicConfig; \r\n Object.keys(config).forEach(t=>{\r\n if((t != \"conditionalExpression\" && t != \"dynamicConfig\") || currentConfig[t] === undefined){\r\n currentConfig[t] = config[t];\r\n }\r\n }) \r\n return currentConfig;\r\n }else\r\n return config;\r\n }\r\n return checkRequiredProps(config,configName);\r\n}\r\n\r\n\r\nfunction checkRequiredProps(config:any,configName:string){\r\n let props = CONFIG_REQUIRED_FIELDS[configName];\r\n if(configName){\r\n props.forEach(prop => {\r\n if(config[prop] === undefined)\r\n throw new Error(`Pass the property of '${prop}' with value in the ${configName}, otherwise it won't work.`);\r\n })\r\n }\r\n return config\r\n}","import { AbstractControl } from \"@angular/forms\";\r\nimport { FormProvider } from \"./form-provider\";\r\nimport { RegexValidator } from \"./regex-validator\";\r\n\r\nexport class ValidatorValueChecker {\r\n\r\n static pass(control: AbstractControl, config: any): boolean {\r\n if (FormProvider.ProcessRule(control, config))\r\n return RegexValidator.isNotBlank(control.value)\r\n else\r\n return false;\r\n }\r\n\r\n static passArrayValue(control: AbstractControl, config: any) {\r\n if (FormProvider.ProcessRule(control, config))\r\n return control.value instanceof Array;\r\n else\r\n return false;\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\nimport { AlphaConfig } from \"../models/config/alpha-config\";\r\nimport { alphabet, alphanumeric, alphanumericWithWitespace, alphaWithWhitespace } from \"../util/alphabet-regex.locale\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ReactiveFormConfig } from \"../util/reactive-form-config\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function alphaValidation(configModel: AlphaConfig, control: AbstractControl, regExps: RegExp[], key: string) {\r\n let config = getConfigObject(configModel, control);\r\n\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n regExps = getRegex(key, regExps, config);\r\n var isValid = (!config || !config.allowWhiteSpace) ?\r\n RegexValidator.isValid(control.value, regExps[0]) :\r\n RegexValidator.isValid(control.value, regExps[1]);\r\n if (!isValid)\r\n return ObjectMaker.toJson(key, config, [control.value]);\r\n }\r\n\r\n return ObjectMaker.null();\r\n}\r\n\r\nfunction getRegex(key: string, regExps: RegExp[], config: any) {\r\n switch (key) {\r\n case \"alpha\":\r\n var alphaLocale = config.locale ? config.locale : ReactiveFormConfig.json && ReactiveFormConfig.json.defaultValidationLocale && ReactiveFormConfig.json.defaultValidationLocale.alpha ? ReactiveFormConfig.json.defaultValidationLocale.alpha : \"\";\r\n return [\r\n alphaLocale && alphaLocale in alphabet ? alphabet[alphaLocale] : regExps[0],\r\n alphaLocale && alphaLocale in alphaWithWhitespace ? alphaWithWhitespace[alphaLocale] : regExps[1]\r\n ]\r\n break;\r\n case \"alphaNumeric\":\r\n var alphaNumericLocale = config.locale ? config.locale : ReactiveFormConfig.json && ReactiveFormConfig.json.defaultValidationLocale && ReactiveFormConfig.json.defaultValidationLocale.alphaNumeric ? ReactiveFormConfig.json.defaultValidationLocale.alphaNumeric : \"\";\r\n return [\r\n alphaNumericLocale && alphaNumericLocale in alphanumeric ? alphanumeric[alphaNumericLocale] : regExps[0],\r\n alphaNumericLocale && alphaNumericLocale in alphanumericWithWitespace ? alphanumericWithWitespace[alphaNumericLocale] : regExps[1]\r\n ]\r\n break;\r\n }\r\n}\r\n\r\n\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { AlphaConfig } from \"../models/config/alpha-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { alphaValidation } from \"../validators-function/alpha-validation.function\";\r\n\r\nexport function alphaValidator(configModel: AlphaConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return alphaValidation(configModel, control, [RegExRule.alpha, RegExRule.alphaWithSpace], AnnotationTypes.alpha);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { AlphaConfig } from \"../models/config/alpha-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { alphaValidation } from \"../validators-function/alpha-validation.function\";\r\n\r\n\r\nexport function alphaNumericValidator(configModel: AlphaConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return alphaValidation(configModel, control, [RegExRule.alphaNumeric, RegExRule.alphaNumericWithSpace], AnnotationTypes.alphaNumeric);\r\n }\r\n}\r\n","import { FormGroup, ValidatorFn } from \"@angular/forms\";\r\nimport { FIELD_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { CompareConfig } from \"../models/config/compare-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\n\r\nexport function compareValidator(configModel: CompareConfig): ValidatorFn {\r\n return (control: FormGroup): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, FIELD_CONFIG);\r\n const compareControl: any = ApplicationUtil.getFormControl(config.fieldName, control);\r\n const controlValue = control.value;\r\n const compareControlValue = (compareControl) ? compareControl.value : '';\r\n if (RegexValidator.isNotBlank(controlValue) || RegexValidator.isNotBlank(compareControlValue)) {\r\n if (!(compareControl && compareControl.value === controlValue))\r\n return ObjectMaker.toJson(AnnotationTypes.compare, config, [controlValue, compareControlValue]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function containsValidator(configModel: DefaultConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (control.value.indexOf(config.value) == -1)\r\n return ObjectMaker.toJson(AnnotationTypes.contains, config, [control.value, config.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","export function calculate(numbers: string) {\r\n let numberSum = 0;\r\n for (var i = 0; i < numbers.length; i++) numberSum += parseInt(numbers.substring(i, i + 1));\r\n\r\n let deltas = new Array(0, 1, 2, 3, 4, -4, -3, -2, -1, 0);\r\n for (var i = numbers.length - 1; i >= 0; i -= 2) {\r\n numberSum += deltas[parseInt(numbers.substring(i, i + 1))];\r\n }\r\n\r\n let mod = numberSum % 10;\r\n mod = 10 - mod;\r\n if (mod == 10)\r\n mod = 0;\r\n return mod;\r\n}","export function checkLength(length: number, checks: number[]): boolean {\r\n let isPassed = false;\r\n for (let check of checks) {\r\n isPassed = (check == length)\r\n if (isPassed)\r\n break;\r\n }\r\n return isPassed;\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { calculate } from '../algorithm/luhn-algorithm';\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { CreditCardConfig } from \"../models/config/credit-card-config\";\r\nimport { checkLength } from '../util/check-length';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\n\r\n\r\nexport function creditCardValidator(configModel: CreditCardConfig): ValidatorFn {\r\n let cardDigits: { [key: string]: number[] } = {\r\n AmericanExpress: [15],\r\n DinersClub: [14, 16, 19],\r\n Discover: [16, 19],\r\n JCB: [16, 19],\r\n Maestro: [12, 16, 19],\r\n MasterCard: [16],\r\n Visa: [13, 16, 19]\r\n }\r\n function validate(creditCardNumber: string) {\r\n var digit = parseInt(creditCardNumber.substring(creditCardNumber.length - 1, creditCardNumber.length));\r\n return calculate(creditCardNumber.substring(0, creditCardNumber.length - 1)) == parseInt(String(digit)) ? !0 : !1\r\n }\r\n\r\n function getCardProviderName(cardNumber: string) {\r\n var cardProviderName = \"\";\r\n return /^(5018|5020|5038|5612|5893|6304|6759|6761|6762|6763|0604|6390)\\d+$/.test(cardNumber) ? cardProviderName = \"Maestro\" : /^5[1-5]/.test(cardNumber) ? cardProviderName = \"MasterCard\" : /^4/.test(cardNumber) ? cardProviderName = \"Visa\" : /^3[47]/.test(cardNumber) ? cardProviderName = \"AmericanExpress\" : /^(?:2131|1800|35)/.test(cardNumber) ? cardProviderName = \"JCB\" : /^3(?:0[0-5]|[68])/.test(cardNumber) ? cardProviderName = \"DinersClub\" : /^6(?:011|5)/.test(cardNumber) && (cardProviderName = \"Discover\"), cardProviderName;\r\n }\r\n\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n const controlValue = control.value;\r\n let config = getConfigObject(configModel, control);\r\n const parentObject = (control.parent) ? control.parent.value : undefined;\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (RegexValidator.isNotBlank(controlValue)) {\r\n let isValid = false;\r\n let cardTypes = config.fieldName && parentObject[config.fieldName] ? [parentObject[config.fieldName]] : config.creditCardTypes\r\n let cardType: string = '';\r\n for (let creditCardType of cardTypes) {\r\n isValid = checkLength(controlValue.length, cardDigits[creditCardType]) && getCardProviderName(controlValue) == creditCardType && validate(controlValue);\r\n cardType = creditCardType;\r\n if (isValid)\r\n break;\r\n }\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.creditCard, config, [controlValue, cardType])\r\n }\r\n }\r\n return ObjectMaker.null();\r\n\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function regexValidation(configModel: BaseConfig, control: AbstractControl, regExp: RegExp, key: string) {\r\n let config = getConfigObject(configModel, control);\r\n return validate(config, control, regExp, key)\r\n}\r\n\r\nexport function validate(config: any, control: AbstractControl, regExp: RegExp, key: string) {\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!RegexValidator.isValid(control.value, regExp))\r\n return ObjectMaker.toJson(key, config, [control.value]);\r\n }\r\n\r\n return ObjectMaker.null();\r\n}","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DigitConfig } from \"../models/config/digit-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\n\r\nexport function digitValidator(configModel: DigitConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.onlyDigit, AnnotationTypes.digit)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { EmailConfig } from \"../models/config/email-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\nexport function emailValidator(configModel: EmailConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.basicEmail, AnnotationTypes.email)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { HexColorConfig } from \"../models/config/hex-color-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\nexport function hexColorValidator(configModel: HexColorConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.strictHexColor, AnnotationTypes.hexColor)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function lowercaseValidator(configModel: MessageConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(control.value === control.value.toLowerCase()))\r\n return ObjectMaker.toJson(AnnotationTypes.lowerCase, config, [control.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","export const OPERATORS: { [key: string]: string } = {\r\n lessThan: \"<\",\r\n greaterThan: \">\",\r\n lessThanEqualTo: \"<=\",\r\n greaterThanEqualTo: \">=\"\r\n}","import { AbstractControl } from \"@angular/forms\";\r\nimport { DateProvider } from \"./date-provider\";\r\nimport { FormProvider } from \"./form-provider\";\r\nimport { RegexValidator } from \"./regex-validator\";\r\nimport { ObjectMaker } from \"./object-maker\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport {OPERATORS} from \"../const/operators.const\"\r\nimport {getConfigObject} from \"../util/config-provider\";\r\nfunction runCondition(leftValue:Date,rightValue:Date,operator:string):boolean{\r\n let result:boolean = false;\r\n switch(operator){\r\n case OPERATORS.lessThan:\r\n case OPERATORS.greaterThan:\r\n result = leftValue > rightValue;\r\n break;\r\n case OPERATORS.lessThanEqualTo:\r\n case OPERATORS.greaterThanEqualTo:\r\n result = leftValue >= rightValue;\r\n break;\r\n }\r\n return result;\r\n}\r\n\r\nexport function dateChecker(control: AbstractControl,config:any,operationType:string): { [key: string]: any } {\r\n config = getConfigObject(config,control);\r\n var dateProvider = new DateProvider();\r\n if (FormProvider.ProcessRule(control,config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n if (dateProvider.isDate(control.value) || dateProvider.isValid(control.value,config)) {\r\n let checkDate = dateProvider.getCompareDate(config,control);\r\n let currentControlValue = dateProvider.getDate(control.value);\r\n let isValid = operationType == AnnotationTypes.minDate ? runCondition(currentControlValue,checkDate,config.operator || OPERATORS.greaterThanEqualTo): runCondition(checkDate,currentControlValue,config.operator || OPERATORS.lessThanEqualTo)\r\n if (!isValid)\r\n return ObjectMaker.toJson(operationType, config, [control.value])\r\n } else\r\n return ObjectMaker.toJson(operationType, config, [control.value])\r\n }\r\n }\r\n return ObjectMaker.null();\r\n}\r\n\r\nexport function validateDate(control: AbstractControl,config:any,operationType:string): { [key: string]: any } {\r\n config = getConfigObject(config,control);\r\n var dateProvider = new DateProvider();\r\n if (FormProvider.ProcessRule(control,config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n if (!dateProvider.isDate(control.value) && !dateProvider.isValid(control.value,config)) {\r\n return ObjectMaker.toJson(operationType, config, [control.value])\r\n }\r\n }\r\n}\r\n return ObjectMaker.null();\r\n}","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MaxDateConfig } from \"../models/config/max-date-config\";\r\nimport { dateChecker } from \"../util/date-checker.function\";\r\nexport function maxDateValidator(configModel: MaxDateConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return dateChecker(control, configModel, AnnotationTypes.maxDate);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { NUMBER_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function maxLengthValidator(configModel: NumberConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, NUMBER_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(control.value.length <= config.value))\r\n return ObjectMaker.toJson(AnnotationTypes.maxLength, config, [control.value, config.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { NUMBER_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function maxNumberValidator(configModel: NumberConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, NUMBER_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(parseFloat(control.value) <= config.value))\r\n return ObjectMaker.toJson(AnnotationTypes.maxNumber, config, [control.value, config.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MinDateConfig } from \"../models/config/min-date-config\";\r\nimport { dateChecker } from \"../util/date-checker.function\";\r\nexport function minDateValidator(configModel: MinDateConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return dateChecker(control, configModel, AnnotationTypes.minDate);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { NUMBER_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function minLengthValidator(configModel: NumberConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, NUMBER_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(String(control.value).length >= config.value))\r\n return ObjectMaker.toJson(AnnotationTypes.minLength, config, [control.value, config.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { NUMBER_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function minNumberValidator(configModel: NumberConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, NUMBER_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(parseFloat(control.value) >= config.value))\r\n return ObjectMaker.toJson(AnnotationTypes.minNumber, config, [control.value, config.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { PASSWORD_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { PasswordConfig } from \"../models/config/password-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nexport function passwordValidator(configModel: PasswordConfig): ValidatorFn {\r\n function getMessageObject(jObject: { [key: string]: any }, keyName: string) {\r\n if (!jObject.message && !jObject.messageKey) {\r\n let message = ObjectMaker.getPasswordMessage();\r\n jObject.message = message && typeof message == \"string\" ? message : ApplicationUtil.isObject(message) ? message[keyName] : \"\";\r\n if (!jObject.message)\r\n jObject.message = message[\"password\"];\r\n jObject.messageKey = \"\";\r\n }\r\n return jObject\r\n }\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, PASSWORD_CONFIG);\r\n let controlValue = control.value;\r\n if (RegexValidator.isNotBlank(controlValue)) {\r\n let validation = RegexValidator.isValidPassword(config.validation, controlValue);\r\n let jObject: any = {};\r\n jObject.message = (config.message && config.message[validation.keyName]) ? config.message[validation.keyName] : typeof config.message == \"string\" ? config.message : '';\r\n jObject.messageKey = (config.messageKey && config.messageKey[validation.keyName]) ? config.messageKey[validation.keyName] : typeof config.messageKey == \"string\" ? config.messageKey : \"\";\r\n jObject = getMessageObject(jObject, validation.keyName);\r\n if (!validation.isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.password, jObject, [controlValue])\r\n }\r\n return ObjectMaker.null();\r\n\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { RANGE_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RangeConfig } from \"../models/config/range-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function rangeValidator(configModel: RangeConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, RANGE_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!((control.value || control.value === 0) && parseFloat(control.value) >= config.minimumNumber && parseFloat(control.value) <= config.maximumNumber))\r\n return ObjectMaker.toJson(AnnotationTypes.range, config, [control.value, config.minimumNumber, config.maximumNumber])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function uppercaseValidator(configModel?: MessageConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(control.value === control.value.toUpperCase()))\r\n return ObjectMaker.toJson(AnnotationTypes.upperCase, config, [control.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RequiredConfig } from \"../models/config/required-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nexport function requiredValidator(configModel: RequiredConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (!RegexValidator.isNotBlank(control.value)) {\r\n return ObjectMaker.toJson(AnnotationTypes.required, config, [])\r\n }\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { PATTERN_CONFIG } from \"../const/config-names.const\";\r\nimport { PatternConfig } from \"../models/config/pattern-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\nexport function patternValidator(configModel: PatternConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, PATTERN_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n for (var pattern in config.expression)\r\n if (!(RegexValidator.isValid(control.value, config.expression[pattern])))\r\n return ObjectMaker.toJson(pattern, config, [control.value])\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { TimeConfig } from \"../models/config/time-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function timeValidator(configModel: TimeConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let isValid = config.allowSeconds ? RegexValidator.isValid(control.value, RegExRule.timeWithSeconds) : RegexValidator.isValid(control.value, RegExRule.time);\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.time, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { UrlConfig } from \"../models/config/url-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { validate } from \"../validators-function/regex-validation.function\";\r\n\r\n\r\nfunction urlValidation(configModel: UrlConfig, control: AbstractControl) {\r\n var regex = RegExRule.url;\r\n let config = getConfigObject(configModel, control);\r\n if (config && config.urlValidationType) {\r\n switch (config.urlValidationType) {\r\n case 1:\r\n regex = RegExRule.url;\r\n break;\r\n case 2:\r\n regex = RegExRule.localhostUrl;\r\n break;\r\n case 3:\r\n regex = RegExRule.interanetUrl;\r\n break;\r\n }\r\n }\r\n\r\n return validate(config, control, regex, AnnotationTypes.url)\r\n}\r\nexport function urlValidator(configModel: DefaultConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return urlValidation(configModel, control)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function jsonValidator(configModel: DefaultConfig): ValidatorFn {\r\n function process(value) {\r\n var result: boolean = false;\r\n try {\r\n var json = JSON.parse(value);\r\n result = !!json && typeof json === 'object'\r\n }\r\n catch (ex) {\r\n result = false;\r\n }\r\n return result;\r\n }\r\n\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!process(control.value))\r\n return ObjectMaker.toJson(AnnotationTypes.json, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\nimport { ApplicationUtil } from \"./app-util\";\r\nimport { FormProvider } from \"./form-provider\";\r\nimport { RegexValidator } from \"./regex-validator\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ObjectMaker } from \"./object-maker\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nconst operatorOpposite: { [key: string]: string } = {\r\n [AnnotationTypes.greaterThan]: AnnotationTypes.lessThan,\r\n [AnnotationTypes.lessThan]: AnnotationTypes.greaterThan,\r\n [AnnotationTypes.greaterThanEqualTo]: AnnotationTypes.lessThanEqualTo,\r\n [AnnotationTypes.lessThanEqualTo]: AnnotationTypes.greaterThanEqualTo,\r\n}\r\nexport function relationalCheck(control: AbstractControl, config: any, relationalOperatorName: string) {\r\n config = getConfigObject(config, control);\r\n const matchControl = config.fieldName ? ApplicationUtil.getFormControl(config.fieldName, control) : undefined;\r\n const matchControlValue = (matchControl) ? matchControl.value : config.value !== undefined ? config.value : '';\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (config.isArrayControl)\r\n return arrayControlValidation(control, config, relationalOperatorName)\r\n if (isValid(control, matchControlValue, relationalOperatorName) === false)\r\n return ObjectMaker.toJson(relationalOperatorName, config, [control.value, matchControlValue]);\r\n }\r\n return ObjectMaker.null();\r\n}\r\n\r\nfunction isValid(control, matchControlValue, relationalOperatorName) {\r\n if (RegexValidator.isNotBlank(control.value) && RegexValidator.isNotBlank(matchControlValue)) {\r\n let isValid = false;\r\n switch (relationalOperatorName) {\r\n case AnnotationTypes.greaterThan:\r\n isValid = parseFloat(control.value) > parseFloat(matchControlValue);\r\n break;\r\n case AnnotationTypes.lessThan:\r\n isValid = parseFloat(control.value) < parseFloat(matchControlValue)\r\n break;\r\n case AnnotationTypes.greaterThanEqualTo:\r\n isValid = parseFloat(control.value) >= parseFloat(matchControlValue)\r\n break;\r\n case AnnotationTypes.lessThanEqualTo:\r\n isValid = parseFloat(control.value) <= parseFloat(matchControlValue)\r\n break;\r\n }\r\n return isValid;\r\n }\r\n return null;\r\n}\r\nfunction setTimeFunc(invalidateControls: AbstractControl[]) {\r\n let timeOut = setTimeout(() => {\r\n invalidateControls.forEach(t => {\r\n t.updateValueAndValidity();\r\n })\r\n clearTimeout(timeOut);\r\n }, 200)\r\n}\r\nfunction arrayControlValidation(control, config, relationalOperatorName) {\r\n let formArray = ApplicationUtil.getParentFormArray(control);\r\n let parentFormGroup = control.parent ? control.parent : undefined;\r\n let oppositeOperator = operatorOpposite[relationalOperatorName];\r\n let updateValidityControls = [];\r\n if (formArray && parentFormGroup && formArray.controls.length > 1) {\r\n let indexOf = formArray.controls.indexOf(parentFormGroup);\r\n let fieldName = ApplicationUtil.getFormControlName(control);\r\n let valid = true;\r\n if (indexOf > 0)\r\n valid = validateControl(formArray, control, indexOf - 1, fieldName, oppositeOperator, relationalOperatorName, updateValidityControls)\r\n\r\n if (valid && formArray.controls.length > indexOf + 1) \r\n valid = validateControl(formArray, control, indexOf + 1, fieldName, relationalOperatorName, relationalOperatorName, updateValidityControls);\r\n\r\n if (updateValidityControls.length > 0)\r\n setTimeFunc(updateValidityControls);\r\n if (valid === false)\r\n return ObjectMaker.toJson(relationalOperatorName, config, [control.value])\r\n }\r\n return ObjectMaker.null();\r\n}\r\n\r\nfunction validateControl(formArray, control, indexOf, fieldName, oppositeOperator, relationalOperatorName, updateValidityControls) {\r\n let valid = false;\r\n let formGroup = formArray.controls[indexOf];\r\n if (formGroup && formGroup.controls) {\r\n let formControl = formGroup.controls[fieldName];\r\n valid = isValid(control, formControl.value, oppositeOperator);\r\n if (valid && formControl.errors && formControl.errors[relationalOperatorName])\r\n updateValidityControls.push(formControl);\r\n }\r\n return valid;\r\n}","import { FormGroup, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { relationalCheck } from \"../util/relational-checker.function\";\r\n\r\nexport function greaterThanValidator(configModel: RelationalOperatorConfig): ValidatorFn {\r\n return (control: FormGroup): { [key: string]: any } => {\r\n return relationalCheck(control, configModel, AnnotationTypes.greaterThan)\r\n }\r\n}\r\n","import { FormGroup, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { relationalCheck } from \"../util/relational-checker.function\";\r\n\r\n\r\nexport function greaterThanEqualToValidator(configModel: RelationalOperatorConfig): ValidatorFn {\r\n return (control: FormGroup): { [key: string]: any } => {\r\n return relationalCheck(control, configModel, AnnotationTypes.greaterThanEqualTo)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { relationalCheck } from \"../util/relational-checker.function\";\r\n\r\nexport function lessThanEqualToValidator(configModel: RelationalOperatorConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return relationalCheck(control, configModel, AnnotationTypes.lessThanEqualTo)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { relationalCheck } from \"../util/relational-checker.function\";\r\n\r\nexport function lessThanValidator(configModel: RelationalOperatorConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return relationalCheck(control, configModel, AnnotationTypes.lessThan)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ChoiceConfig } from \"../models/config/choice-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\n\r\nexport function choiceValidator(configModel: ChoiceConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (control.value instanceof Array) {\r\n config.minLength = (config.minLength == undefined) ? 0 : config.minLength;\r\n config.maxLength = (config.maxLength == undefined) ? 0 : config.maxLength;\r\n if ((((control.value.length) < config.minLength) || (config.maxLength !== 0 && control.value.length > config.maxLength)))\r\n return ObjectMaker.toJson(AnnotationTypes.choice, config, [control.value]);\r\n }\r\n } return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { FIELD_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DifferentConfig } from \"../models/config/compare-config\";\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function differentValidator(configModel: DifferentConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, FIELD_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n const differentControl = ApplicationUtil.getFormControl(config.fieldName, control);\r\n const differentControlValue = (differentControl) ? differentControl.value : '';\r\n if (!(differentControl && differentControl.value != control.value))\r\n return ObjectMaker.toJson(AnnotationTypes.different, config, [control.value, differentControlValue]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { VALIDATOR_CONFIG } from \"../const/app.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumericConfig } from \"../models/config/numeric-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function numericValidator(configModel: NumericConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (configModel && (!control[VALIDATOR_CONFIG] || !control[VALIDATOR_CONFIG][AnnotationTypes.numeric]))\r\n ApplicationUtil.configureControl(control, configModel, AnnotationTypes.numeric);\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!RegexValidator.isValid(control.value, ApplicationUtil.numericValidation(config.allowDecimal, config.acceptValue)))\r\n return ObjectMaker.toJson(AnnotationTypes.numeric, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function evenValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(control.value % 2 == 0))\r\n return ObjectMaker.toJson(AnnotationTypes.even, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function oddValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(!(control.value % 2 == 0)) || !ApplicationUtil.isNumeric(control.value))\r\n return ObjectMaker.toJson(AnnotationTypes.odd, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { FormGroup, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { FactorConfig } from \"../models/config/factor-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\n\r\nexport function factorValidator(configModel: FactorConfig): ValidatorFn {\r\n\r\n\tfunction positiveFactors(dividend, value) {\r\n\t\tlet isPositive = false;\r\n\t\tfor (var index = 1; index <= Math.floor(Math.sqrt(dividend)); index += 1) {\r\n\t\t\tif (dividend % index === 0) {\r\n\t\t\t\tif (index == value)\r\n\t\t\t\t\tisPositive = true;\r\n\t\t\t\tif (dividend / index !== index)\r\n\t\t\t\t\tif ((dividend / index) == value)\r\n\t\t\t\t\t\tisPositive = true;\r\n\t\t\t\tif (isPositive)\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn isPositive;\r\n\t}\r\n\r\n\treturn (control: FormGroup): { [key: string]: any } => {\r\n\t\tlet config = getConfigObject(configModel, control);\r\n\t\tconst dividendField: any = (control.parent && config.fieldName) ? ApplicationUtil.getFormControl(config.fieldName, control) : undefined\r\n\t\tconst dividend = (config.fieldName && dividendField) ? dividendField.value : config.dividend;\r\n\t\tif (FormProvider.ProcessRule(control, config)) {\r\n\t\t\tif (RegexValidator.isNotBlank(control.value) && dividend > 0) {\r\n\t\t\t\tif (!RegexValidator.isValid(control.value, RegExRule.onlyDigit) || !positiveFactors(dividend, parseInt(control.value)))\r\n\t\t\t\t\treturn ObjectMaker.toJson(AnnotationTypes.factor, config, [control.value]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn ObjectMaker.null();\r\n\t}\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function leapYearValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n var isValid = (control.value % 100 === 0) ? (control.value % 400 === 0) : (control.value % 4 === 0);\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.leapYear, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import {\r\n AbstractControl, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ARRAY_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function allOfValidator(configModel: ArrayConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, ARRAY_CONFIG);\r\n if (ValidatorValueChecker.passArrayValue(control, config)) {\r\n var testResult = false;\r\n for (let value of config.matchValues) {\r\n testResult = control.value.some((y) => y == value);\r\n if (!testResult)\r\n break;\r\n }\r\n if (!testResult)\r\n return ObjectMaker.toJson(AnnotationTypes.allOf, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { ARRAY_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function oneOfValidator(configModel: ArrayConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, ARRAY_CONFIG);\r\n if (ValidatorValueChecker.passArrayValue(control, config)) {\r\n var testResult = false;\r\n for (let value of config.matchValues) {\r\n testResult = control.value.some((y) => y == value);\r\n if (testResult)\r\n break;\r\n }\r\n if (!testResult)\r\n return ObjectMaker.toJson(AnnotationTypes.oneOf, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { ARRAY_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from \"../util/form-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\n\r\nexport function noneOfValidator(configModel: ArrayConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, ARRAY_CONFIG);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n var testResult = false;\r\n for (let value of config.matchValues) {\r\n let matchValue = ApplicationUtil.lowerCaseWithTrim(value);\r\n testResult = Array.isArray(control.value) ? control.value.some((y) => ApplicationUtil.lowerCaseWithTrim(y) === matchValue) : ApplicationUtil.lowerCaseWithTrim(control.value) === matchValue;\r\n if (testResult)\r\n break;\r\n }\r\n if (testResult)\r\n return ObjectMaker.toJson(AnnotationTypes.noneOf, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\n\r\nexport function macValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.macId, AnnotationTypes.mac)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\nexport function asciiValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.ascii, AnnotationTypes.ascii)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\n\r\nexport function dataUriValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.dataUri, AnnotationTypes.dataUri)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function portValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let isValid = RegexValidator.isValid(control.value, RegExRule.onlyDigit) && (control.value >= 0 && control.value <= 65535);\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.port, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function latLongValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let splitText = control.value.split(',')\r\n if (!(splitText.length > 1 && RegexValidator.isValid(splitText[0], RegExRule.lat) && RegexValidator.isValid(splitText[1], RegExRule.long)))\r\n return ObjectMaker.toJson(AnnotationTypes.latLong, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n\r\n","import { AbstractControl } from \"@angular/forms\";\r\nimport { VALIDATOR_CONFIG } from \"../const/app.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ExtensionConfig } from \"../models/config/extension-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\n\r\nexport function extensionValidator(configModel: ExtensionConfig): any {\r\n return (control: AbstractControl, files: FileList): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (!control[VALIDATOR_CONFIG] || !control[VALIDATOR_CONFIG][AnnotationTypes.extension])\r\n ApplicationUtil.configureControl(control, config, AnnotationTypes.extension);\r\n if (files && FormProvider.ProcessRule(control, config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n let testResult = true;\r\n let extension: string = '';\r\n for (var i = 0; i < files.length; i++) {\r\n let file = files.item(i);\r\n let splitText = file.name.split(\".\");\r\n extension = splitText[splitText.length - 1];\r\n let result = config.extensions.filter(t => { return extension.toLowerCase() == t.toLowerCase() })[0];\r\n if (!result && !configModel.isExcludeExtensions) {\r\n testResult = false;\r\n break;\r\n } else {\r\n if (result && configModel.isExcludeExtensions) {\r\n testResult = false;\r\n break;\r\n }\r\n }\r\n }\r\n if (!testResult)\r\n return ObjectMaker.toJson(AnnotationTypes.extension, config, [extension, config.extensions.join(\",\")]);\r\n }\r\n } return ObjectMaker.null();\r\n }\r\n}\r\n","import {\r\n AbstractControl\r\n} from \"@angular/forms\";\r\n\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { SizeConfig } from \"../models/config/size-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport {getConfigObject} from \"../util/config-provider\";\r\nimport { VALIDATOR_CONFIG } from \"../const/app.const\";\r\nexport function fileSizeValidator(configModel: SizeConfig): any {\r\n return (control: AbstractControl, files: FileList): { [key: string]: any } => {\r\n let config = getConfigObject(configModel,control);\r\n if (!control[VALIDATOR_CONFIG] || !control[VALIDATOR_CONFIG][AnnotationTypes.fileSize])\r\n ApplicationUtil.configureControl(control, config, AnnotationTypes.fileSize);\r\n if (files && FormProvider.ProcessRule(control, config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n let minFileSize = config.minSize ? config.minSize : 0;\r\n let testResult = false;\r\n let fileSize: number = 0;\r\n for (var i = 0; i < files.length; i++) {\r\n let file = files.item(i);\r\n fileSize = file.size;\r\n testResult = (!(fileSize >= minFileSize && fileSize <= config.maxSize));\r\n if (testResult)\r\n break;\r\n }\r\n if (testResult)\r\n return ObjectMaker.toJson(AnnotationTypes.fileSize, config, [fileSize, config.maxSize]);\r\n }\r\n } return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function endsWithValidator(configModel: DefaultConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n var endString = String(control.value).substr(control.value.length - config.value.length, config.value.length);\r\n if (endString != config.value)\r\n return ObjectMaker.toJson(AnnotationTypes.endsWith, config, [control.value, config.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { StringComparisonConfig } from \"../models/config/string-comparison-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function startsWithValidator(configModel: StringComparisonConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n var startString = String(control.value).substr(0, config.value.length);\r\n if ((config.isRestrict && String(startString).toLowerCase() == String(config.value).toLowerCase()) || (!config.isRestrict && startString != config.value))\r\n return ObjectMaker.toJson(AnnotationTypes.startsWith, config, [control.value, config.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function primeNumberValidator(configModel: BaseConfig): ValidatorFn {\r\n function isPrime(value) {\r\n let isPrimeNumber = value != 1;\r\n for (var i = 2; i < value; i++) {\r\n if (value % i == 0) {\r\n isPrimeNumber = false;\r\n break;\r\n }\r\n }\r\n return isPrimeNumber;\r\n }\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!ApplicationUtil.isNumeric(control.value) || !isPrime(control.value))\r\n return ObjectMaker.toJson(AnnotationTypes.primeNumber, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\n\r\nexport function latitudeValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.lat, AnnotationTypes.latitude)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { regexValidation } from \"../validators-function/regex-validation.function\";\r\n\r\nexport function longitudeValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return regexValidation(configModel, control, RegExRule.long, AnnotationTypes.longitude)\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ComposeConfig } from \"../models/config/compose-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\n\r\nexport function composeValidator(configModel: ComposeConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (config.validators) {\r\n let result = undefined;\r\n for (let validator of config.validators) {\r\n result = validator(control);\r\n if (result)\r\n break;\r\n }\r\n if (result)\r\n return (config.messageKey || config.message) ? ObjectMaker.toJson(config.messageKey || AnnotationTypes.compose, config, [control.value]) : result;\r\n }\r\n } return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { RuleConfig } from \"../models/config/rule-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\n\r\n\r\nexport function ruleValidator(configModel: RuleConfig, entity: any): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n let result = null;\r\n for (let rule of config.customRules) {\r\n result = rule(entity);\r\n if (result)\r\n break;\r\n }\r\n if (result)\r\n return result;\r\n } return ObjectMaker.null();\r\n }\r\n}\r\n","import {\r\n AbstractControl\r\n} from \"@angular/forms\";\r\n\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { FileConfig } from \"../models/config/file-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport {getConfigObject} from \"../util/config-provider\";\r\nimport { VALIDATOR_CONFIG } from \"../const/app.const\";\r\nexport function fileValidator(configModel: FileConfig): any {\r\n return (control: AbstractControl, files: FileList): { [key: string]: any } => {\r\n let config = getConfigObject(configModel,control); \r\n if (!control[VALIDATOR_CONFIG] || !control[VALIDATOR_CONFIG][AnnotationTypes.file])\r\n ApplicationUtil.configureControl(control, config, AnnotationTypes.file);\r\n if(files){\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n let minFiles = config.minFiles ? config.minFiles : 0;\r\n let maxFiles = config.maxFiles ? config.maxFiles : files.length;\r\n if (!(files.length > 0 && files[0] instanceof File && files.length >= minFiles && files.length <= maxFiles))\r\n return ObjectMaker.toJson(AnnotationTypes.file, config, [files.length, minFiles, maxFiles]);\r\n }\r\n }\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { CustomConfig } from \"../models/config/custom-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\n\r\n\r\nexport function customValidator(configModel: CustomConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n const formGroupValue = ApplicationUtil.getParentObjectValue(control);\r\n const parentObject = (control.parent) ? control.parent.value : undefined;\r\n let result = null;\r\n for (let rule of config.customRules) {\r\n result = rule(formGroupValue, parentObject, config.additionalValue);\r\n if (result)\r\n break;\r\n }\r\n if (result)\r\n return result;\r\n } return ObjectMaker.null();\r\n }\r\n}\r\n","import {\r\n ValidatorFn,\r\n AbstractControl,\r\n FormArray\r\n} from \"@angular/forms\";\r\n\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { UniqueConfig } from \"../models/config/unique-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport {getConfigObject} from \"../util/config-provider\";\r\nexport function uniqueValidator(configModel: UniqueConfig): ValidatorFn {\r\n var setTimeoutFunc = (invalidateControls: AbstractControl[], controlValues: any[]) => {\r\n let timeOut = setTimeout(() => {\r\n invalidateControls.forEach(t => {\r\n let isMatched = controlValues.filter(x => x == t.value)[0]\r\n if (!isMatched)\r\n t.updateValueAndValidity();\r\n })\r\n clearTimeout(timeOut);\r\n }, 200)\r\n }\r\n var additionalValidation = (config: UniqueConfig, fieldName: string, formGroup: AbstractControl, formArray: FormArray, currentValue: any) => {\r\n let indexOf = formArray.controls.indexOf(formGroup);\r\n let formArrayValue = [];\r\n if (indexOf != -1) {\r\n formArray.value.forEach((t, i) => {\r\n if (indexOf != i)\r\n formArrayValue.push(t)\r\n })\r\n return config.additionalValidation(currentValue, indexOf, fieldName, formGroup.value, formArrayValue);\r\n }\r\n return false;\r\n\r\n }\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel,control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n let formArray = ApplicationUtil.getParentFormArray(control);\r\n let parentFormGroup = control.parent ? control.parent : undefined;\r\n let invalidateControls: AbstractControl[] = [];\r\n let controlValues = [];\r\n if (formArray && parentFormGroup) {\r\n let currentValue = control.value;\r\n let fieldName = ApplicationUtil.getFormControlName(control);\r\n let isMatched = false;\r\n for (let formGroup of formArray.controls) {\r\n if (formGroup != parentFormGroup) {\r\n isMatched = (ApplicationUtil.toLower(formGroup.controls[fieldName].value) == ApplicationUtil.toLower(currentValue) && !(formGroup.controls[fieldName].errors && formGroup.controls[fieldName].errors[AnnotationTypes.unique]))\r\n if (formGroup.controls[fieldName].errors && formGroup.controls[fieldName].errors[AnnotationTypes.unique]) {\r\n var matchedControl = formArray.controls.filter(t => t.controls[fieldName] != formGroup.controls[fieldName] && ApplicationUtil.toLower(t.controls[fieldName].value) == ApplicationUtil.toLower(formGroup.controls[fieldName].value))[0];\r\n if (!matchedControl)\r\n invalidateControls.push(formGroup.controls[fieldName])\r\n }\r\n else\r\n controlValues.push(formGroup.controls[fieldName].value);\r\n }\r\n if (isMatched)\r\n break;\r\n }\r\n if (invalidateControls.length > 0)\r\n setTimeoutFunc(invalidateControls, controlValues);\r\n\r\n let validation = false;\r\n if (config.additionalValidation) {\r\n validation = additionalValidation(config, fieldName, parentFormGroup, formArray, currentValue);\r\n }\r\n if (isMatched && !validation)\r\n return ObjectMaker.toJson(AnnotationTypes.unique, config, [control.value])\r\n }\r\n }\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import {\r\n AbstractControl\r\n} from \"@angular/forms\";\r\n\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ImageConfig } from \"../models/config/image-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport {getConfigObject} from \"../util/config-provider\";\r\nimport { VALIDATOR_CONFIG } from \"../const/app.const\";\r\nexport function imageValidator(configModel: ImageConfig): any {\r\n return (control: AbstractControl, files: FileList): { [key: string]: any } => {\r\n let config = getConfigObject(configModel,control);\r\n if (!control[VALIDATOR_CONFIG] || !control[VALIDATOR_CONFIG][AnnotationTypes.image])\r\n ApplicationUtil.configureControl(control, config, AnnotationTypes.image);\r\n if (!files)\r\n return ObjectMaker.null();\r\n return new Promise((resolve, reject) => {\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n let testResult = false;\r\n for (var i = 0; i < files.length; i++) {\r\n let file = files.item(i);\r\n let type = file.type ? file.type.split('/') : [];\r\n testResult = type.length > 1 && type[0] == \"image\";\r\n if (!testResult)\r\n break;\r\n let image = new Image();\r\n config.minWidth = config.minWidth ? config.minWidth : 0;\r\n config.minHeight = config.minHeight ? config.minHeight : 0;\r\n image.onload = () => {\r\n testResult = (image.width >= config.minWidth && image.height >= config.minHeight) && (image.width <= config.maxWidth && image.height <= config.maxHeight);\r\n if (!testResult)\r\n resolve(ObjectMaker.toJson(AnnotationTypes.image, config, [image.width, image.height]));\r\n else\r\n resolve(ObjectMaker.null());\r\n }\r\n image.onerror = () => {\r\n resolve(ObjectMaker.toJson(AnnotationTypes.image, config, []));\r\n }\r\n image.src = URL.createObjectURL(file)\r\n }\r\n if (!testResult)\r\n resolve(ObjectMaker.toJson(AnnotationTypes.image, config, []));\r\n }\r\n } return ObjectMaker.null();\r\n })\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nexport function notEmptyValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (!RegexValidator.isNotBlank(control.value, true)) {\r\n return ObjectMaker.toJson(AnnotationTypes.notEmpty, config, [])\r\n }\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { RegexValidator } from \"./regex-validator\";\r\nimport { RegExRule } from \"./regex-rules\";\r\nexport function checkIpV4(value) {\r\n let isValid = RegexValidator.isValid(value, RegExRule.ipV4);\r\n if (isValid) {\r\n const splitDots = value.split('.');\r\n for (let ipNum of splitDots) {\r\n isValid = ipNum <= 255;\r\n if (!isValid)\r\n break;\r\n }\r\n }\r\n return isValid;\r\n}\r\n\r\n\r\nexport function checkIpV6(value) {\r\n return RegexValidator.isValid(value, RegExRule.ipV6);\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { IP_CONFIG } from \"../const/config-names.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { IpVersion } from '../enums';\r\nimport { IpConfig } from \"../models/config/ip-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { checkIpV4, checkIpV6 } from '../util/ip-checker';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function ipValidator(configModel: IpConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control, IP_CONFIG);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let values: string[] = config.isCidr ? control.value.split('/') : [control.value];\r\n var isValid = (config.version == IpVersion.V4) ?\r\n checkIpV4(values[0]) :\r\n (config.version == IpVersion.V6) ?\r\n checkIpV6(values[0]) :\r\n (checkIpV4(values[0]) || checkIpV6(values[0]))\r\n if (config.isCidr && isValid) {\r\n isValid = (values.length > 1) ?\r\n config.version == IpVersion.V4 ?\r\n RegexValidator.isValid(values[1], RegExRule.cidrV4) :\r\n config.version == IpVersion.V6 ?\r\n RegexValidator.isValid(values[1], RegExRule.cidrV6) :\r\n (RegexValidator.isValid(values[1], RegExRule.cidrV4) || RegexValidator.isValid(values[1], RegExRule.cidrV6)) :\r\n false;\r\n }\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.ip, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\n\r\nexport function cusipValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n var controlValue = control.value.toUpperCase();\r\n let isValid = RegexValidator.isValid(controlValue, RegExRule.cusip)\r\n if (isValid) {\r\n\r\n let numericValues = controlValue.split(\"\").map((value) => {\r\n var charCode = value.charCodeAt(0);\r\n return charCode >= \"A\".charCodeAt(0) && charCode <= \"Z\".charCodeAt(0) ? charCode - \"A\".charCodeAt(0) + 10 : value\r\n });\r\n let totalCount = 0;\r\n for (var i = 0; i < numericValues.length - 1; i++) {\r\n var numericValue = parseInt(numericValues[i], 10);\r\n if (i % 2 !== 0) {\r\n numericValue *= 2;\r\n }\r\n if (numericValue > 9) {\r\n numericValue -= 9;\r\n }\r\n totalCount += numericValue;\r\n }\r\n\r\n totalCount = (10 - (totalCount % 10)) % 10;\r\n isValid = totalCount == numericValues[numericValues.length - 1];\r\n }\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.cusip, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { RegExRule } from \"../util/regex-rules\";\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function gridValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let controlValue = control.value.toUpperCase();\r\n var isValid = RegexValidator.isValid(controlValue, RegExRule.grid)\r\n if (isValid) {\r\n controlValue = controlValue.replace(/\\s/g, '').replace(/-/g, '');\r\n if ('GRID:' === controlValue.substr(0, 5)) {\r\n controlValue = controlValue.substr(5);\r\n }\r\n let alphaNums = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';\r\n var alphaNumLength = alphaNums.length,\r\n length = controlValue.length,\r\n check = Math.floor(alphaNumLength / 2);\r\n for (var i = 0; i < length; i++) {\r\n check = (((check || alphaNumLength) * 2) % (alphaNumLength + 1) + alphaNums.indexOf(controlValue.charAt(i))) % alphaNumLength;\r\n }\r\n isValid = (check === 1);\r\n }\r\n if (!isValid)\r\n return ObjectMaker.toJson(AnnotationTypes.grid, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { validateDate } from \"../util/date-checker.function\";\r\nexport function dateValidator(configModel: BaseConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return validateDate(control, configModel, AnnotationTypes.date);\r\n }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\nimport { ApplicationUtil } from './app-util'\r\nimport { FormProvider } from \"./form-provider\";\r\nimport { RegexValidator } from \"./regex-validator\";\r\nimport { ObjectMaker } from \"./object-maker\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport {OPERATORS} from \"../const/operators.const\"\r\nimport {getConfigObject} from \"../util/config-provider\";\r\nimport { RegExRule } from \"./regex-rules\";\r\n\r\nfunction runCondition(leftValue: number, rightValue: number, operator: string): boolean {\r\n let result: boolean = false;\r\n switch (operator) {\r\n case OPERATORS.lessThan:\r\n case OPERATORS.greaterThan:\r\n result = leftValue > rightValue;\r\n break;\r\n case OPERATORS.lessThanEqualTo:\r\n case OPERATORS.greaterThanEqualTo:\r\n result = leftValue >= rightValue;\r\n break;\r\n }\r\n return result;\r\n}\r\n\r\nfunction isValid(control: AbstractControl, config: any) {\r\n return config.allowSeconds ? RegexValidator.isValid(control.value, RegExRule.timeWithSeconds) : RegexValidator.isValid(control.value, RegExRule.time);\r\n}\r\n\r\nfunction getTime(value: any) {\r\n let splitTime = (value) ? value.split(':') : [];\r\n return new Date(1970, 0, 1, splitTime[0] ? splitTime[0] : 0, splitTime[1] ? splitTime[1] : 0, splitTime[2] ? splitTime[2] : 0).getTime();\r\n}\r\n\r\nexport function timeChecker(control: AbstractControl,config:any,operationType:string): { [key: string]: any } {\r\n config = getConfigObject(config, control);\r\n if (FormProvider.ProcessRule(control,config)) {\r\n if (RegexValidator.isNotBlank(control.value)) {\r\n if (isValid(control,config)) {\r\n let crossFormControl = config.fieldName ? ApplicationUtil.getFormControl(config.fieldName, control) : undefined;\r\n let crossControlValue = crossFormControl ? getTime(crossFormControl.value) : getTime(config.value); \r\n let currentControlValue = getTime(control.value);\r\n let isValid = operationType == AnnotationTypes.minTime ? runCondition(currentControlValue, crossControlValue, config.operator || OPERATORS.greaterThanEqualTo) : runCondition(crossControlValue, currentControlValue, config.operator || OPERATORS.lessThanEqualTo)\r\n if (!isValid)\r\n return ObjectMaker.toJson(operationType, config, [control.value])\r\n } else\r\n return ObjectMaker.toJson(operationType, config, [control.value])\r\n }\r\n }\r\n return ObjectMaker.null();\r\n}","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MinTimeConfig } from \"../models/config/time-config\";\r\nimport { timeChecker } from \"../util/time-checker.function\";\r\n\r\nexport function minTimeValidator(configModel: MinTimeConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return timeChecker(control, configModel, AnnotationTypes.minTime);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MaxTimeConfig } from \"../models/config/time-config\";\r\nimport { timeChecker } from \"../util/time-checker.function\";\r\n\r\n\r\nexport function maxTimeValidator(configModel: MaxTimeConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n return timeChecker(control, configModel, AnnotationTypes.maxTime);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RequiredConfig } from \"../models/config/required-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { FormProvider } from '../util/form-provider';\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nexport function requiredTrueValidator(configModel: RequiredConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (FormProvider.ProcessRule(control, config)) {\r\n if (control.value !== true) {\r\n return ObjectMaker.toJson(AnnotationTypes.requiredTrue, config, [])\r\n }\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { VALIDATOR_CONFIG } from \"../const/app.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MaskConfig } from \"../models/config/mask-config\";\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { getConfigObject } from \"../util/config-provider\";\r\n\r\n\r\nexport function maskValidator(configModel: MaskConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (!control[VALIDATOR_CONFIG] || !control[VALIDATOR_CONFIG][AnnotationTypes.mask])\r\n ApplicationUtil.configureControl(control, config, AnnotationTypes.mask);\r\n return null;\r\n }\r\n}\r\n","export const IBAN_COUNTRY_CODE_REGEX = {\r\n AD: /^(AD[0-9]{2})\\d{8}[A-Z0-9]{12}$/,\r\n AE: /^(AE[0-9]{2})\\d{3}\\d{16}$/,\r\n AL: /^(AL[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\r\n AT: /^(AT[0-9]{2})\\d{16}$/,\r\n AZ: /^(AZ[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\r\n BA: /^(BA[0-9]{2})\\d{16}$/,\r\n BE: /^(BE[0-9]{2})\\d{12}$/,\r\n BG: /^(BG[0-9]{2})[A-Z]{4}\\d{6}[A-Z0-9]{8}$/,\r\n BH: /^(BH[0-9]{2})[A-Z]{4}[A-Z0-9]{14}$/,\r\n BR: /^(BR[0-9]{2})\\d{23}[A-Z]{1}[A-Z0-9]{1}$/,\r\n BY: /^(BY[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\r\n CH: /^(CH[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\r\n CR: /^(CR[0-9]{2})\\d{18}$/,\r\n CY: /^(CY[0-9]{2})\\d{8}[A-Z0-9]{16}$/,\r\n CZ: /^(CZ[0-9]{2})\\d{20}$/,\r\n DE: /^(DE[0-9]{2})\\d{18}$/,\r\n DK: /^(DK[0-9]{2})\\d{14}$/,\r\n DO: /^(DO[0-9]{2})[A-Z]{4}\\d{20}$/,\r\n EE: /^(EE[0-9]{2})\\d{16}$/,\r\n EG: /^(EG[0-9]{2})\\d{25}$/,\r\n ES: /^(ES[0-9]{2})\\d{20}$/,\r\n FI: /^(FI[0-9]{2})\\d{14}$/,\r\n FO: /^(FO[0-9]{2})\\d{14}$/,\r\n FR: /^(FR[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\r\n GB: /^(GB[0-9]{2})[A-Z]{4}\\d{14}$/,\r\n GE: /^(GE[0-9]{2})[A-Z0-9]{2}\\d{16}$/,\r\n GI: /^(GI[0-9]{2})[A-Z]{4}[A-Z0-9]{15}$/,\r\n GL: /^(GL[0-9]{2})\\d{14}$/,\r\n GR: /^(GR[0-9]{2})\\d{7}[A-Z0-9]{16}$/,\r\n GT: /^(GT[0-9]{2})[A-Z0-9]{4}[A-Z0-9]{20}$/,\r\n HR: /^(HR[0-9]{2})\\d{17}$/,\r\n HU: /^(HU[0-9]{2})\\d{24}$/,\r\n IE: /^(IE[0-9]{2})[A-Z0-9]{4}\\d{14}$/,\r\n IL: /^(IL[0-9]{2})\\d{19}$/,\r\n IQ: /^(IQ[0-9]{2})[A-Z]{4}\\d{15}$/,\r\n IR: /^(IR[0-9]{2})0\\d{2}0\\d{18}$/,\r\n IS: /^(IS[0-9]{2})\\d{22}$/,\r\n IT: /^(IT[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\r\n JO: /^(JO[0-9]{2})[A-Z]{4}\\d{22}$/,\r\n KW: /^(KW[0-9]{2})[A-Z]{4}[A-Z0-9]{22}$/,\r\n KZ: /^(KZ[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\r\n LB: /^(LB[0-9]{2})\\d{4}[A-Z0-9]{20}$/,\r\n LC: /^(LC[0-9]{2})[A-Z]{4}[A-Z0-9]{24}$/,\r\n LI: /^(LI[0-9]{2})\\d{5}[A-Z0-9]{12}$/,\r\n LT: /^(LT[0-9]{2})\\d{16}$/,\r\n LU: /^(LU[0-9]{2})\\d{3}[A-Z0-9]{13}$/,\r\n LV: /^(LV[0-9]{2})[A-Z]{4}[A-Z0-9]{13}$/,\r\n MC: /^(MC[0-9]{2})\\d{10}[A-Z0-9]{11}\\d{2}$/,\r\n MD: /^(MD[0-9]{2})[A-Z0-9]{20}$/,\r\n ME: /^(ME[0-9]{2})\\d{18}$/,\r\n MK: /^(MK[0-9]{2})\\d{3}[A-Z0-9]{10}\\d{2}$/,\r\n MR: /^(MR[0-9]{2})\\d{23}$/,\r\n MT: /^(MT[0-9]{2})[A-Z]{4}\\d{5}[A-Z0-9]{18}$/,\r\n MU: /^(MU[0-9]{2})[A-Z]{4}\\d{19}[A-Z]{3}$/,\r\n NL: /^(NL[0-9]{2})[A-Z]{4}\\d{10}$/,\r\n NO: /^(NO[0-9]{2})\\d{11}$/,\r\n PK: /^(PK[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\r\n PL: /^(PL[0-9]{2})\\d{24}$/,\r\n PS: /^(PS[0-9]{2})[A-Z0-9]{4}\\d{21}$/,\r\n PT: /^(PT[0-9]{2})\\d{21}$/,\r\n QA: /^(QA[0-9]{2})[A-Z]{4}[A-Z0-9]{21}$/,\r\n RO: /^(RO[0-9]{2})[A-Z]{4}[A-Z0-9]{16}$/,\r\n RS: /^(RS[0-9]{2})\\d{18}$/,\r\n SA: /^(SA[0-9]{2})\\d{2}[A-Z0-9]{18}$/,\r\n SC: /^(SC[0-9]{2})[A-Z]{4}\\d{20}[A-Z]{3}$/,\r\n SE: /^(SE[0-9]{2})\\d{20}$/,\r\n SI: /^(SI[0-9]{2})\\d{15}$/,\r\n SK: /^(SK[0-9]{2})\\d{20}$/,\r\n SM: /^(SM[0-9]{2})[A-Z]{1}\\d{10}[A-Z0-9]{12}$/,\r\n SV: /^(SV[0-9]{2})[A-Z0-9]{4}\\d{20}$/,\r\n TL: /^(TL[0-9]{2})\\d{19}$/,\r\n TN: /^(TN[0-9]{2})\\d{20}$/,\r\n TR: /^(TR[0-9]{2})\\d{5}[A-Z0-9]{17}$/,\r\n UA: /^(UA[0-9]{2})\\d{6}[A-Z0-9]{19}$/,\r\n VA: /^(VA[0-9]{2})\\d{18}$/,\r\n VG: /^(VG[0-9]{2})[A-Z0-9]{4}\\d{16}$/,\r\n XK: /^(XK[0-9]{2})\\d{16}$/,\r\n};","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { IBAN_COUNTRY_CODE_REGEX } from \"../const/iban-country-wise-regex.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { IBANConfig } from \"../models/config/iban-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\n\r\nfunction hasValidIbanFormat(value: string, countryCode: string) {\r\n const strippedStr = value.replace(/[\\s\\-]+/gi, '').toUpperCase();\r\n const isoCountryCode = countryCode || strippedStr.slice(0, 2).toUpperCase();\r\n\r\n return (isoCountryCode in IBAN_COUNTRY_CODE_REGEX) &&\r\n IBAN_COUNTRY_CODE_REGEX[isoCountryCode].test(strippedStr);\r\n}\r\n\r\nfunction hasValidIbanChecksum(str) {\r\n const strippedStr = str.replace(/[^A-Z0-9]+/gi, '').toUpperCase(); // Keep only digits and A-Z latin alphabetic\r\n const rearranged = strippedStr.slice(4) + strippedStr.slice(0, 4);\r\n const alphaCapsReplacedWithDigits = rearranged.replace(/[A-Z]/g, char => char.charCodeAt(0) - 55);\r\n\r\n const remainder = alphaCapsReplacedWithDigits.match(/\\d{1,7}/g)\r\n .reduce((acc, value) => Number(acc + value) % 97, '');\r\n\r\n return remainder === 1;\r\n}\r\n\r\nexport function ibanValidator(configModel: IBANConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config: IBANConfig = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n if (!(hasValidIbanFormat(control.value, config.countryCode) && hasValidIbanChecksum(control.value)))\r\n return ObjectMaker.toJson(AnnotationTypes.iban, config, [control.value, config.countryCode]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { allOfValidator, alphaNumericValidator, alphaValidator, asciiValidator, choiceValidator, compareValidator, composeValidator, containsValidator, creditCardValidator, cusipValidator, dataUriValidator, dateValidator, differentValidator, digitValidator, emailValidator, endsWithValidator, evenValidator, extensionValidator, factorValidator, fileSizeValidator, fileValidator, greaterThanEqualToValidator, greaterThanValidator, gridValidator, hexColorValidator, ibanValidator, imageValidator, ipValidator, jsonValidator, latitudeValidator, latLongValidator, leapYearValidator, lessThanEqualToValidator, lessThanValidator, longitudeValidator, lowercaseValidator, macValidator, maskValidator, maxDateValidator, maxLengthValidator, maxNumberValidator, maxTimeValidator, minDateValidator, minLengthValidator, minNumberValidator, minTimeValidator, noneOfValidator, notEmptyValidator, numericValidator, oddValidator, oneOfValidator, passwordValidator, patternValidator, portValidator, primeNumberValidator, rangeValidator, requiredTrueValidator, requiredValidator, ruleValidator, startsWithValidator, timeValidator, uniqueValidator, uppercaseValidator, urlValidator } from '../reactive-form-validators/index';\r\n\r\nexport const APP_VALIDATORS: { [key: string]: Function } = {\r\n\t\"alphaNumeric\": alphaNumericValidator,\r\n\t\"alpha\": alphaValidator,\r\n\t\"compare\": compareValidator,\r\n\t\"email\": emailValidator,\r\n\t\"hexColor\": hexColorValidator,\r\n\t\"lowerCase\": lowercaseValidator,\r\n\t\"maxDate\": maxDateValidator,\r\n\t\"maxNumber\": maxNumberValidator,\r\n\t\"minDate\": minDateValidator,\r\n\t\"minNumber\": minNumberValidator,\r\n\t\"contains\": containsValidator,\r\n\t\"upperCase\": uppercaseValidator,\r\n\t\"maxLength\": maxLengthValidator,\r\n\t\"minLength\": minLengthValidator,\r\n\t\"password\": passwordValidator,\r\n\t\"range\": rangeValidator,\r\n\t\"required\": requiredValidator,\r\n\t\"creditCard\": creditCardValidator,\r\n\t\"digit\": digitValidator,\r\n\t\"pattern\": patternValidator,\r\n\t\"time\": timeValidator,\r\n\t\"url\": urlValidator,\r\n\t\"json\": jsonValidator,\r\n\t\"greaterThan\": greaterThanValidator,\r\n\t\"greaterThanEqualTo\": greaterThanEqualToValidator,\r\n\t\"lessThan\": lessThanValidator,\r\n\t\"lessThanEqualTo\": lessThanEqualToValidator,\r\n\t\"choice\": choiceValidator,\r\n\t\"different\": differentValidator,\r\n\t\"numeric\": numericValidator,\r\n\t\"even\": evenValidator,\r\n\t\"odd\": oddValidator,\r\n\t\"factor\": factorValidator,\r\n\t\"leapYear\": leapYearValidator,\r\n\t\"allOf\": allOfValidator,\r\n\t\"oneOf\": oneOfValidator,\r\n\t\"noneOf\": noneOfValidator,\r\n\t\"mac\": macValidator,\r\n\t\"ascii\": asciiValidator,\r\n\t\"dataUri\": dataUriValidator,\r\n\t\"port\": portValidator,\r\n\t\"latLong\": latLongValidator,\r\n\t\"extension\": extensionValidator,\r\n\t\"fileSize\": fileSizeValidator,\r\n\t\"endsWith\": endsWithValidator,\r\n\t\"startsWith\": startsWithValidator,\r\n\t\"primeNumber\": primeNumberValidator,\r\n\t\"latitude\": latitudeValidator,\r\n\t\"longitude\": longitudeValidator,\r\n\t\"compose\": composeValidator,\r\n\t\"rule\": ruleValidator,\r\n\t\"file\": fileValidator,\r\n\t\"unique\": uniqueValidator,\r\n\t\"image\": imageValidator,\r\n\t\"notEmpty\": notEmptyValidator,\r\n\t\"ip\": ipValidator,\r\n\t\"cusip\": cusipValidator,\r\n\t\"grid\": gridValidator,\r\n\t\"date\": dateValidator,\r\n\t\"minTime\": minTimeValidator,\r\n\t\"maxTime\": maxTimeValidator,\r\n\t\"requiredTrue\": requiredTrueValidator,\r\n\t\"mask\": maskValidator,\r\n\t\"iban\": ibanValidator\r\n}\r\n","import { AbstractControl, AsyncValidatorFn } from \"@angular/forms\";\r\nimport { Observable, of } from \"rxjs\";\r\nimport { map } from 'rxjs/operators';\r\nimport { APP_VALIDATORS } from '../../const/app-validators.const';\r\nimport { FormProvider } from '../../util/form-provider';\r\n\r\nexport function baseAsyncValidator(configModel: any, validatorName: string): AsyncValidatorFn {\r\n return (control: AbstractControl): Observable<{ [key: string]: any }> => {\r\n configModel = configModel || {};\r\n if (configModel.validatorConfig) {\r\n if (FormProvider.ProcessRule(control, configModel)) {\r\n return (<Observable<any>>configModel.validatorConfig).pipe(map(resolveConfig(configModel, validatorName, control)));\r\n }\r\n return of(null);\r\n }\r\n else\r\n return of(resolveConfig(configModel, validatorName, control)(configModel));\r\n }\r\n}\r\n\r\n\r\nfunction resolveConfig(configModel: any, validatorName: string, control: AbstractControl) {\r\n return config => {\r\n let configClone = { ...configModel, ...config, ...{ expressionProcessed: true } };\r\n return APP_VALIDATORS[validatorName](configClone)(control)\r\n }\r\n}","import { defaultContainer } from '../core/defaultContainer';\r\n\r\nexport function baseDecoratorFunction(annotationType: string, config: any, isAsync: boolean = false) {\r\n return function (target: Object, propertyKey: string, descriptor?: number) {\r\n defaultContainer.init(target, descriptor, propertyKey, annotationType, config, isAsync)\r\n }\r\n}","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function allOf(config?: ArrayConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.allOf, config);\r\n}\r\nexport function allOfAsync(config?: ArrayConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.allOf, [baseAsyncValidator(config, AnnotationTypes.allOf)], true);\r\n}","import { AnnotationTypes } from '../core/validator.static';\r\nimport { AlphaConfig } from \"../models/config/alpha-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function alpha(config?: AlphaConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.alpha, config);\r\n}\r\n\r\nexport function alphaAsync(config?: AlphaConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.alpha, [baseAsyncValidator(config, AnnotationTypes.alpha)], true);\r\n}","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { AlphaConfig } from \"../models/config/alpha-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function alphaNumeric(config?: AlphaConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.alphaNumeric, config);\r\n}\r\n\r\nexport function alphaNumericAsync(config?: AlphaConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.alphaNumeric, [baseAsyncValidator(config, AnnotationTypes.alphaNumeric)], true);\r\n}","import { AnnotationTypes } from '../core/validator.static';\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function and(config?: LogicalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.and, config);\r\n}\r\n\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function ascii(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.ascii, config);\r\n}","import { AsyncValidatorFn } from \"@angular/forms\";\r\nimport { AnnotationTypes } from '../core/validator.static';\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function async(validators: AsyncValidatorFn[]) {\r\n return baseDecoratorFunction(AnnotationTypes.async, validators, true);\r\n}\r\n\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ChoiceConfig } from \"../models/config/choice-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function choice(config?: ChoiceConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.choice, config);\r\n}\r\nexport function choiceAsync(config?: ChoiceConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.choice, [baseAsyncValidator(config, AnnotationTypes.choice)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { CompareConfig } from \"../models/config/compare-config\";\r\nimport { baseDecoratorFunction } from './base-decorator.function';\r\n\r\nexport function compare(config: CompareConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.compare, config);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ComposeConfig } from \"../models/config/compose-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function compose(config?: ComposeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.compose, config);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { ContainsConfig } from \"../models/config/contains-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function contains(config: ContainsConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.contains, config);\r\n}\r\nexport function containsAsync(config?: ContainsConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.contains, [baseAsyncValidator(config, AnnotationTypes.contains)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { CreditCardConfig } from \"../models/config/credit-card-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function creditCard(config: CreditCardConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.creditCard, config);\r\n}\r\nexport function creditCardAsync(config?: CreditCardConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.creditCard, [baseAsyncValidator(config, AnnotationTypes.creditCard)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function cusip(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.cusip, config);\r\n}","import { AnnotationTypes } from '../core/validator.static';\r\nimport { CustomConfig } from \"../models/config/custom-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function custom(config?: CustomConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.custom, config);\r\n}\r\nexport function customAsync(config?: CustomConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.custom, [baseAsyncValidator(config, AnnotationTypes.custom)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function dataUri(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.dataUri, config)\r\n}","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseDateConfig } from \"../models/config/base-date-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function date(config?: BaseDateConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.date, config);\r\n}\r\n\r\nexport function dateAsync(config?: BaseDateConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.date, [baseAsyncValidator(config, AnnotationTypes.date)], true);\r\n}","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DifferentConfig } from \"../models/config/compare-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function different(config: DifferentConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.different, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DigitConfig } from \"../models/config/digit-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function digit(config?: DigitConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.digit, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { EmailConfig } from \"../models/config/email-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function email(config?: EmailConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.email, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function endsWith(config: DefaultConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.endsWith, config)\r\n}\r\nexport function endsWithAsync(config?: DefaultConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.endsWith, [baseAsyncValidator(config, AnnotationTypes.endsWith)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function even(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.even, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ExtensionConfig } from \"../models/config/extension-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function extension(config: ExtensionConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.extension, config)\r\n}\r\nexport function extensionAsync(config?: ExtensionConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.extension, [baseAsyncValidator(config, AnnotationTypes.extension)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { FactorConfig } from \"../models/config/factor-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function factor(config?: FactorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.factor, config)\r\n}\r\nexport function factorAsync(config?: FactorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.factor, [baseAsyncValidator(config, AnnotationTypes.factor)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { FileConfig } from \"../models/config/file-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function file(config?: FileConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.file, config)\r\n}\r\nexport function fileAsync(config?: FileConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.file, [baseAsyncValidator(config, AnnotationTypes.file)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { SizeConfig } from \"../models/config/size-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function fileSize(config: SizeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.fileSize, config)\r\n}\r\nexport function fileSizeAsync(config?: SizeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.fileSize, [baseAsyncValidator(config, AnnotationTypes.fileSize)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function greaterThanEqualTo(config: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.greaterThanEqualTo, config)\r\n}\r\nexport function greaterThanEqualToAsync(config?: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.greaterThanEqualTo, [baseAsyncValidator(config, AnnotationTypes.greaterThanEqualTo)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function greaterThan(config: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.greaterThan, config)\r\n}\r\nexport function greaterThanAsync(config?: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.greaterThan, [baseAsyncValidator(config, AnnotationTypes.greaterThan)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function grid(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.grid, config);\r\n}\r\n\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function hexColor(config?: MessageConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.hexColor, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ImageConfig } from \"../models/config/image-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function image(config?: ImageConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.image, config)\r\n}\r\nexport function imageAsync(config?: ImageConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.image, [baseAsyncValidator(config, AnnotationTypes.image)], true);\r\n}\r\n\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function json(config?: DefaultConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.json, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function latitude(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.latitude, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function latLong(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.latLong, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function leapYear(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.leapYear, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function lessThanEqualTo(config: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.lessThanEqualTo, config)\r\n}\r\nexport function lessThanEqualToAsync(config?: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.lessThanEqualTo, [baseAsyncValidator(config, AnnotationTypes.lessThanEqualTo)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function lessThan(config: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.lessThan, config)\r\n}\r\nexport function lessThanAsync(config?: RelationalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.lessThan, [baseAsyncValidator(config, AnnotationTypes.lessThan)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function longitude(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.longitude, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function lowerCase(config?: MessageConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.lowerCase, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function mac(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.mac, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { MaskConfig } from \"../models/config/mask-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function mask(config?: MaskConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.mask, config);\r\n}\r\n\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MaxDateConfig } from \"../models/config/max-date-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function maxDate(config: MaxDateConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxDate, config)\r\n}\r\nexport function maxDateAsync(config?: MaxDateConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxDate, [baseAsyncValidator(config, AnnotationTypes.maxDate)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function maxLength(config: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxLength, config)\r\n}\r\nexport function maxLengthAsync(config?: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxLength, [baseAsyncValidator(config, AnnotationTypes.maxLength)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function maxNumber(config: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxNumber, config)\r\n}\r\nexport function maxNumberAsync(config?: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxNumber, [baseAsyncValidator(config, AnnotationTypes.maxNumber)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MaxTimeConfig } from \"../models/config/time-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function maxTime(config: MaxTimeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxTime, config)\r\n}\r\nexport function maxTimeAsync(config?: MaxTimeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.maxTime, [baseAsyncValidator(config, AnnotationTypes.maxTime)], true);\r\n}\r\n\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MinDateConfig } from \"../models/config/min-date-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function minDate(config: MinDateConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minDate, config)\r\n}\r\nexport function minDateAsync(config?: MinDateConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minDate, [baseAsyncValidator(config, AnnotationTypes.minDate)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\nexport function minLength(config: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minLength, config)\r\n}\r\nexport function minLengthAsync(config?: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minLength, [baseAsyncValidator(config, AnnotationTypes.minLength)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\nexport function minNumber(config: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minNumber, config)\r\n}\r\nexport function minNumberAsync(config?: NumberConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minNumber, [baseAsyncValidator(config, AnnotationTypes.minNumber)], true);\r\n}","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MinTimeConfig } from \"../models/config/time-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function minTime(config: MinTimeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minTime, config)\r\n}\r\nexport function minTimeAsync(config?: MinTimeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.minTime, [baseAsyncValidator(config, AnnotationTypes.minTime)], true);\r\n}\r\n","import { defaultContainer } from '../core/defaultContainer';\r\nimport { PropsConfig } from '../models/config/props-config';\r\n\r\nexport function model(config?: PropsConfig[]) {\r\n return function (\r\n target: Object\r\n ) {\r\n defaultContainer.addPropsConfig(target, config)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\nimport { DisableConfig } from \"../../models/config/disable-config\";\r\n\r\nexport function disable(config?: DisableConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addDecoratorConfig(target, parameterIndex, propertyKey, config, DECORATORS.disabled)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\nimport { ElementClassConfig } from \"../../models/config/element-class-config\";\r\n\r\nexport function elementClass(config?: ElementClassConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addDecoratorConfig(target, parameterIndex, propertyKey, config, DECORATORS.elementClass)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\nimport { ErrorConfig } from \"../../models/config/error-config\";\r\n\r\nexport function error(config?: ErrorConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addDecoratorConfig(target, parameterIndex, propertyKey, config, DECORATORS.error)\r\n }\r\n}\r\n\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function noneOf(config?: ArrayConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.noneOf, config)\r\n}\r\nexport function noneOfAsync(config?: ArrayConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.noneOf, [baseAsyncValidator(config, AnnotationTypes.noneOf)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function not(config?: LogicalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.not, config);\r\n}\r\n\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function notEmpty(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.notEmpty, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { NumericConfig } from \"../models/config/numeric-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function numeric(config?: NumericConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.numeric, config)\r\n}\r\nexport function numericAsync(config?: NumericConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.numeric, [baseAsyncValidator(config, AnnotationTypes.numeric)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function odd(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.odd, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function oneOf(config?: ArrayConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.oneOf, config)\r\n}\r\nexport function oneOfAsync(config?: ArrayConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.oneOf, [baseAsyncValidator(config, AnnotationTypes.oneOf)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function or(config?: LogicalOperatorConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.or, config);\r\n}\r\n\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { PasswordConfig } from \"../models/config/password-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function password(config: PasswordConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.password, config)\r\n}\r\nexport function passwordAsync(config?: PasswordConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.password, [baseAsyncValidator(config, AnnotationTypes.password)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { PatternConfig } from \"../models/config/pattern-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function pattern(config: PatternConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.pattern, config)\r\n}\r\nexport function patternAsync(config?: PatternConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.pattern, [baseAsyncValidator(config, AnnotationTypes.pattern)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function port(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.port, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function primeNumber(config?: BaseConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.primeNumber, config)\r\n}\r\n","import { ARRAY_PROPERTY } from \"../const\";\r\nimport { defaultContainer } from '../core/defaultContainer';\r\nimport { PropertyInfo } from '../core/validator.interface';\r\nimport { PropArrayConfig } from \"../models/config/prop-config\";\r\nimport { Type } from \"../util/index\";\r\n\r\nexport function propArray<T>(entity?: Type<T>, config?: PropArrayConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n var propertyInfo: PropertyInfo = {\r\n name: propertyKey,\r\n propertyType: ARRAY_PROPERTY,\r\n entity: entity,\r\n dataPropertyName: config ? config.name : undefined,\r\n entityProvider: config ? config.entityProvider : undefined,\r\n arrayConfig: config ? {\r\n allowMaxIndex: config.allowMaxIndex, messageKey: config.messageKey, createBlank: config.createBlank\r\n } : undefined\r\n }\r\n defaultContainer.addProperty(target.constructor, propertyInfo);\r\n }\r\n}\r\n","import { OBJECT_PROPERTY } from \"../const\";\r\nimport { defaultContainer } from '../core/defaultContainer';\r\nimport { PropObjectConfig } from \"../models/config/prop-config\";\r\nimport { Type } from \"../util/type\";\r\n\r\nexport function propObject<T>(entity?: Type<T>, config?: PropObjectConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.initPropertyObject(propertyKey, OBJECT_PROPERTY, entity, target, config);\r\n }\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RangeConfig } from \"../models/config/range-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function range(config: RangeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.range, config)\r\n}\r\nexport function rangeAsync(config?: RangeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.range, [baseAsyncValidator(config, AnnotationTypes.range)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RequiredConfig } from \"../models/config/required-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function required(config?: RequiredConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.required, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { RequiredConfig } from \"../models/config/required-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function requiredTrue(config?: RequiredConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.requiredTrue, config)\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { RuleConfig } from \"../models/config/rule-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function rule(config?: RuleConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.rule, config)\r\n}\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function blacklist(chars: string) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.blacklist, chars)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function escape() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.escape)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function ltrim() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.ltrim)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function prefix(text: string) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.prefix, text);\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function rtrim() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.rtrim)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\nimport { SanitizeConfig } from '../../models/config/sanitize-config';\r\n\r\nexport function sanitize(config: SanitizeConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.sanitize, config)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function stripLow(keepNewLines?: boolean) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.stripLow, keepNewLines)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function suffix(text: string) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.suffix, text);\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function toBoolean(strict?: boolean) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.toBoolean, strict)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\nimport { ToDateConfig } from '../../models/config/todate-config';\r\n\r\nexport function toDate(config?: ToDateConfig) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.toDate, config)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function toDouble() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.toDouble)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function toFloat() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.toFloat)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function toInt(radix?: number) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.toInt, radix)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function toString() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.string)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function trim() {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.trim)\r\n }\r\n}\r\n\r\n","import { DECORATORS } from \"../../const/decorators.const\";\r\nimport { defaultContainer } from '../../core/defaultContainer';\r\n\r\nexport function whitelist(chars: string) {\r\n return function (\r\n target: Object,\r\n propertyKey: string, parameterIndex?: any\r\n ) {\r\n defaultContainer.addSanitizer(target, parameterIndex, propertyKey, DECORATORS.whitelist, chars)\r\n }\r\n}\r\n\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { StringComparisonConfig } from \"../models/config/string-comparison-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function startsWith(config: StringComparisonConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.startsWith, config)\r\n}\r\nexport function startsWithAsync(config?: StringComparisonConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.startsWith, [baseAsyncValidator(config, AnnotationTypes.startsWith)], true);\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { TimeConfig } from \"../models/config/time-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function time(config?: TimeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.time, config)\r\n}\r\nexport function timeAsync(config?: TimeConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.time, [baseAsyncValidator(config, AnnotationTypes.time)], true);\r\n}\r\n","import { AnnotationTypes } from '../core/validator.static';\r\nimport { UniqueConfig } from \"../models/config/unique-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function unique(config?: UniqueConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.unique, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function upperCase(config?: MessageConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.upperCase, config)\r\n}\r\n","import { AnnotationTypes } from \"../core/validator.static\";\r\nimport { UrlConfig } from \"../models/config/url-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nimport { baseDecoratorFunction } from \"./base-decorator.function\";\r\n\r\nexport function url(config?: UrlConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.url, config)\r\n}\r\nexport function urlAsync(config?: UrlConfig) {\r\n return baseDecoratorFunction(AnnotationTypes.url, [baseAsyncValidator(config, AnnotationTypes.url)], true);\r\n}\r\n","import { Directive, Input } from \"@angular/core\";\r\nimport { AbstractControl } from \"@angular/forms\";\r\nimport { OBJECT_PROPERTY, PROPERTY } from \"../const\";\r\nimport { TEMPLATE_VALIDATION_CONFIG } from '../const/app.const';\r\nimport { defaultContainer } from \"../core/defaultContainer\";\r\nimport { InstanceContainer, PropertyInfo } from '../core/validator.interface';\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\n\r\n@Directive()\r\nexport abstract class BaseDirective {\r\n @Input() model: any;\r\n\r\n applyValidations(controls: any, model: any = null) {\r\n if (this.model) {\r\n let modelConfig = defaultContainer.get(model || this.model.constructor);\r\n if (modelConfig) {\r\n modelConfig.properties.forEach(property => {\r\n if (controls[property.name]) {\r\n switch (property.propertyType) {\r\n case PROPERTY:\r\n this.setValidatorConfig(controls[property.name], modelConfig, property);\r\n break;\r\n case OBJECT_PROPERTY:\r\n this.applyValidations(controls[property.name].controls, property.entity);\r\n break;\r\n }\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n private setValidatorConfig(control: AbstractControl, modelConfig: InstanceContainer, property: PropertyInfo) {\r\n let annotations = modelConfig.propertyAnnotations.filter(t => t.propertyName == property.name);\r\n annotations.forEach(annotation => {\r\n if (!control[TEMPLATE_VALIDATION_CONFIG])\r\n control[TEMPLATE_VALIDATION_CONFIG] = {};\r\n ApplicationUtil.configureControl(control, annotation.config ? annotation.config : \"\", annotation.annotationType)\r\n })\r\n }\r\n}\r\n","import { Directive, Input, TemplateRef } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[htmlControlTemplate]'\r\n})\r\nexport class HtmlControlTemplateDirective {\r\n templateRef: TemplateRef<any>;\r\n\r\n @Input('htmlControlTemplate') type: string;\r\n\r\n constructor(templateRef: TemplateRef<any>) {\r\n this.templateRef = templateRef;\r\n };\r\n}\r\n","import { AbstractControl, FormArray, ValidatorFn } from \"@angular/forms\";\r\nimport { ApplicationUtil } from \"../util/app-util\";\r\nimport { FormProvider } from \"../util/form-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\n\r\nconst DISABLED_EXPRESSION: string = \"disableExpression\";\r\nexport function conditionalChangeValidator(conditionalValidationProps: string[]): ValidatorFn {\r\n var timeOuts: number[] = [];\r\n var oldValue: string = undefined;\r\n var setTimeOut = (control: AbstractControl, config: any) => {\r\n if (control[DISABLED_EXPRESSION])\r\n runDisabledExpression(control, config);\r\n var timeOut = setTimeout(t => {\r\n clearTimeout(timeOut);\r\n control.updateValueAndValidity({ onlySelf: true })\r\n }, 100)\r\n }\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let value = control.value;\r\n if (control.parent && oldValue != value) {\r\n const rootFormGroup = ApplicationUtil.getRootFormGroup(control);\r\n const parentFormGroup = control.parent;\r\n oldValue = value;\r\n timeOuts = [];\r\n let controlName = ApplicationUtil.getFormControlName(control);\r\n let disabledConfig = { [controlName]: value };\r\n conditionalValidationProps.forEach(t => {\r\n let a = control;\r\n if (t.indexOf(\"[]\") != -1) {\r\n var splitText = t.split(\"[]\");\r\n var formArray = <FormArray>rootFormGroup.get([splitText[0]]);\r\n if (formArray)\r\n formArray.controls.forEach(formGroup => {\r\n var abstractControl = formGroup.get(splitText[1]);\r\n if (abstractControl) {\r\n setTimeOut(abstractControl, disabledConfig);\r\n }\r\n })\r\n } else {\r\n\r\n let splitText = t.split('.');\r\n if (splitText.length > 1) {\r\n var control = null;\r\n t.split('.').forEach((name, index) => { control = (index == 0) ? rootFormGroup.controls[name] : control.controls[name]; })\r\n }\r\n else {\r\n control = parentFormGroup.controls[t];\r\n }\r\n\r\n if (control) {\r\n\r\n setTimeOut(control, disabledConfig);\r\n }\r\n }\r\n })\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\nfunction runDisabledExpression(control, config) {\r\n let isDisabled = FormProvider.ProcessRule(control, { conditionalExpression: control[DISABLED_EXPRESSION], disableConfig: config });\r\n if (isDisabled && !control.disabled)\r\n control.disable();\r\n else if (control.disabled)\r\n control.enable();\r\n}\r\n","import { AfterContentInit, Directive, Input, OnDestroy } from \"@angular/core\";\r\nimport { FormArray, FormGroup } from \"@angular/forms\";\r\nimport { CONDITIONAL_VALIDATOR, MODEL } from '../const/app.const';\r\nimport { defaultContainer } from \"../core/defaultContainer\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { conditionalChangeValidator } from '../reactive-form-validators/conditional-change.validator';\r\nimport { Linq } from \"../util/linq\";\r\nimport { BaseDirective } from \"./base-directive\";\r\n\r\n@Directive({\r\n selector: '[formGroup],[rxwebForm]',\r\n})\r\nexport class RxwebFormDirective extends BaseDirective implements AfterContentInit, OnDestroy {\r\n private clearTimeoutNumber: any = 0;\r\n private validationRule: any = {};\r\n @Input() formGroup: FormGroup;\r\n @Input('rxwebForm') ngForm;\r\n\r\n ngAfterContentInit(): void {\r\n if (this.formGroup && !this.formGroup[MODEL] && this.formGroup.parent == null) {\r\n this.expressionProcessor(this.formGroup.controls);\r\n this.setConditionalValidator(this.formGroup.controls)\r\n } else if (this.formGroup && !this.formGroup[MODEL] && this.formGroup.parent instanceof FormArray) {\r\n this.expressionProcessor(this.formGroup.controls);\r\n this.setConditionalValidator(this.formGroup.controls)\r\n }\r\n else if (this.ngForm) {\r\n this.configureModelValidations();\r\n }\r\n }\r\n\r\n private configureModelValidations() {\r\n this.clearTimeoutNumber = setTimeout(() => {\r\n clearTimeout(this.clearTimeoutNumber);\r\n this.applyValidations(this.ngForm.form.controls);\r\n this.expressionProcessor(this.ngForm.form.controls);\r\n this.setConditionalValidator(this.ngForm.form.controls)\r\n this.updateValueAndValidity(this.ngForm.form.controls);\r\n }, 500)\r\n }\r\n\r\n private updateValueAndValidity(controls: any) {\r\n Object.keys(controls).forEach(key => {\r\n if (controls[key] instanceof FormGroup)\r\n this.updateValueAndValidity(controls[key].controls);\r\n else if (controls[key] instanceof FormArray)\r\n this.updateValueAndValidity(controls[key].controls);\r\n else\r\n controls[key].updateValueAndValidity();\r\n })\r\n }\r\n\r\n private expressionProcessor(controls: { [key: string]: any }, rootFieldName: string = \"\") {\r\n Object.keys(controls).forEach(fieldName => {\r\n let formControl: any = controls[fieldName];\r\n if (formControl.validatorConfig) {\r\n Object.keys(AnnotationTypes).forEach(validatorName => {\r\n if (formControl.validatorConfig[validatorName] && formControl.validatorConfig[validatorName].disableExpression) {\r\n formControl[\"disableExpression\"] = formControl.validatorConfig[validatorName].disableExpression;\r\n let columns = Linq.expressionColumns(formControl.validatorConfig[validatorName].disableExpression);\r\n defaultContainer.addChangeValidation(this.validationRule, rootFieldName + fieldName, columns);\r\n }\r\n if (formControl.validatorConfig[validatorName] && formControl.validatorConfig[validatorName].conditionalExpression) {\r\n let columns = Linq.expressionColumns(formControl.validatorConfig[validatorName].conditionalExpression);\r\n defaultContainer.addChangeValidation(this.validationRule, rootFieldName + fieldName, columns);\r\n }\r\n if (formControl.validatorConfig[validatorName] && formControl.validatorConfig[validatorName].dynamicConfig) {\r\n let columns = Linq.dynamicConfigParser(formControl.validatorConfig[validatorName].dynamicConfig, fieldName);\r\n defaultContainer.addChangeValidation(this.validationRule, rootFieldName + fieldName, columns);\r\n }\r\n if (formControl.validatorConfig[validatorName] && (validatorName == AnnotationTypes.and || validatorName == AnnotationTypes.or || validatorName == AnnotationTypes.not)) {\r\n Object.keys(formControl.validatorConfig[validatorName].validation).forEach(t => {\r\n if (typeof formControl.validatorConfig[validatorName].validation[t] !== \"boolean\")\r\n defaultContainer.setLogicalConditional(this.validationRule, t, formControl.validatorConfig[validatorName].validation[t].fieldName, fieldName)\r\n })\r\n } else if (formControl.validatorConfig[validatorName] && ((validatorName == AnnotationTypes.compare || validatorName == AnnotationTypes.greaterThan || validatorName == AnnotationTypes.greaterThanEqualTo || validatorName == AnnotationTypes.lessThan || validatorName == AnnotationTypes.lessThanEqualTo || validatorName == AnnotationTypes.different || validatorName == AnnotationTypes.factor || validatorName == AnnotationTypes.minTime || validatorName == AnnotationTypes.maxTime) || (validatorName == AnnotationTypes.creditCard && formControl.validatorConfig[validatorName].fieldName) || ((validatorName == AnnotationTypes.minDate || validatorName == AnnotationTypes.maxDate) && formControl.validatorConfig[validatorName].fieldName))) {\r\n defaultContainer.setConditionalValueProp(this.validationRule, formControl.validatorConfig[validatorName].fieldName, fieldName)\r\n }\r\n })\r\n } else if (formControl instanceof FormGroup) {\r\n this.expressionProcessor(formControl.controls, `${fieldName}.`);\r\n } else if (formControl instanceof FormArray) {\r\n if (formControl.controls)\r\n formControl.controls.forEach((t: any, i) => {\r\n if (t.controls)\r\n this.expressionProcessor(t.controls, `${fieldName}[]`);\r\n })\r\n }\r\n\r\n })\r\n }\r\n\r\n private setConditionalValidator(controls) {\r\n Object.keys(controls).forEach(fieldName => {\r\n if (this.validationRule.conditionalValidationProps && this.validationRule.conditionalValidationProps[fieldName]) {\r\n controls[fieldName][CONDITIONAL_VALIDATOR] = conditionalChangeValidator(this.validationRule.conditionalValidationProps[fieldName]);\r\n } else if (controls[fieldName] instanceof FormGroup && this.validationRule.conditionalObjectProps) {\r\n var fields = this.validationRule.conditionalObjectProps.filter(t => t.objectPropName == fieldName);\r\n let nestedFormGroup = controls[fieldName] as FormGroup;\r\n let propWiseConditionalControls: { [key: string]: string[] } = {};\r\n fields.forEach(x => {\r\n if (!propWiseConditionalControls[x.propName])\r\n propWiseConditionalControls[x.propName] = [];\r\n propWiseConditionalControls[x.propName].push(x.referencePropName);\r\n });\r\n Object.keys(propWiseConditionalControls).forEach(key => {\r\n nestedFormGroup.controls[key][CONDITIONAL_VALIDATOR] = conditionalChangeValidator(propWiseConditionalControls[key]);\r\n })\r\n\r\n } else if (controls[fieldName] instanceof FormArray) {\r\n //fix https://github.com/rxweb/rxweb/issues/274\r\n controls[fieldName].controls.forEach((t, i) => {\r\n if (t.controls == undefined)\r\n this.setConditionalValidator({ [i]: t });\r\n else\r\n this.setConditionalValidator(t.controls);\r\n });\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n\r\n }\r\n}\r\n","import { Directive, forwardRef, Input } from '@angular/core';\r\nimport { AbstractControl, AsyncValidator, NG_ASYNC_VALIDATORS, ValidationErrors } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\n@Directive({\r\n selector: '[ngModel],[formControlName],[formControl]',\r\n providers: [{\r\n provide: NG_ASYNC_VALIDATORS,\r\n useExisting: forwardRef(() => AsyncValidationDirective),\r\n multi: true\r\n }]\r\n})\r\nexport class AsyncValidationDirective implements AsyncValidator {\r\n @Input() async: any;\r\n\r\n validate(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\r\n if (this.async)\r\n return this.async(control);\r\n return of(null);\r\n }\r\n}\r\n","import { Directive, ElementRef, forwardRef, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, NG_VALUE_ACCESSOR, Validator } from '@angular/forms';\r\nimport { APP_VALIDATORS } from \"../../const/app-validators.const\";\r\nimport { ExtensionConfig, FileConfig, SizeConfig } from '../../models/config';\r\n\r\nconst VALIDATOR_CONFIG = \"validatorConfig\";\r\nconst FILE_VALIDATOR_NAMES: string[] = [\"extension\", \"fileSize\", \"file\"];\r\n\r\n@Directive({\r\n selector: \"input[type=file]\",\r\n host: {\r\n \"(change)\": \"onChangeCall($event.target)\",\r\n \"(blur)\": \"onTouched()\"\r\n },\r\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: FileControlDirective, multi: true }, {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => FileControlDirective),\r\n multi: true\r\n }]\r\n})\r\nexport class FileControlDirective implements Validator {\r\n files: any;\r\n element: any\r\n isProcessed: boolean = false;\r\n\r\n\r\n private validators: Function[] = [];\r\n\r\n onChange = (_) => { };\r\n onTouched = () => { };\r\n\r\n onChangeCall(element: HTMLInputElement) {\r\n let files = element.files;\r\n if (this.writeFile)\r\n this.onChange(files);\r\n else {\r\n if (files.length > 0)\r\n this.onChange(element.value);\r\n else\r\n this.onChange(undefined);\r\n }\r\n }\r\n\r\n writeValue(value) { }\r\n registerOnChange(invocation: any) { this.onChange = invocation; }\r\n registerOnTouched(invocation: any) { this.onTouched = invocation; }\r\n\r\n @Input() writeFile: boolean;\r\n @Input() set extension(config: ExtensionConfig) {\r\n this.pushValidator(FILE_VALIDATOR_NAMES[0], config)\r\n }\r\n @Input() set fileSize(config: SizeConfig) {\r\n this.pushValidator(FILE_VALIDATOR_NAMES[1], config)\r\n }\r\n\r\n @Input() set file(config: FileConfig) {\r\n this.pushValidator(FILE_VALIDATOR_NAMES[2], config)\r\n }\r\n\r\n constructor(private elementRef: ElementRef) {\r\n this.element = elementRef.nativeElement as Node;\r\n }\r\n\r\n setConfig(control: AbstractControl) {\r\n FILE_VALIDATOR_NAMES.forEach(t => {\r\n if (!this[t] && control[VALIDATOR_CONFIG] && control[VALIDATOR_CONFIG][t])\r\n this[t] = control[VALIDATOR_CONFIG][t];\r\n })\r\n this.isProcessed = true;\r\n }\r\n\r\n pushValidator(validatorName: string, config: ExtensionConfig | SizeConfig | FileConfig) {\r\n if (config)\r\n this.validators.push(APP_VALIDATORS[validatorName](config))\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n if (!this.isProcessed)\r\n this.setConfig(control);\r\n var result = null;\r\n for (var validator of this.validators) {\r\n result = validator(control, this.element.files);\r\n if (result)\r\n break;\r\n }\r\n return result\r\n }\r\n}\r\n","import { Directive, ElementRef, forwardRef, Input } from '@angular/core';\r\nimport { AbstractControl, AsyncValidator, NG_ASYNC_VALIDATORS, ValidationErrors } from '@angular/forms';\r\nimport { Observable, of } from 'rxjs';\r\nimport { APP_VALIDATORS } from \"../../const/app-validators.const\";\r\nimport { ImageConfig } from '../../models/config';\r\n\r\nconst VALIDATOR_CONFIG = \"validatorConfig\";\r\n\r\n@Directive({\r\n\tselector: \"input[type=file]\",\r\n\tproviders: [{\r\n\t\tprovide: NG_ASYNC_VALIDATORS,\r\n\t\tuseExisting: forwardRef(() => ImageFileControlDirective),\r\n\t\tmulti: true\r\n\t}]\r\n})\r\nexport class ImageFileControlDirective implements AsyncValidator {\r\n\telement: any\r\n\tisProcessed: boolean = false;\r\n\r\n\tprivate imageValidation: Function;\r\n\r\n\t@Input() set image(config: ImageConfig) {\r\n\t\tthis.imageValidation = APP_VALIDATORS.image(config);\r\n\t}\r\n\r\n\tconstructor(private elementRef: ElementRef) {\r\n\t\tthis.element = elementRef.nativeElement as Node;\r\n\t}\r\n\r\n\tsetConfig(control: AbstractControl) {\r\n\t\tlet image = \"image\";\r\n\t\tif (!this[image] && control[VALIDATOR_CONFIG] && control[VALIDATOR_CONFIG][image])\r\n\t\t\tthis[image] = control[VALIDATOR_CONFIG][image];\r\n\t\tthis.isProcessed = true;\r\n\t}\r\n\r\n\tvalidate(control: AbstractControl): Promise<ValidationErrors | null> | Observable<ValidationErrors | null> {\r\n\t\tif (!this.isProcessed)\r\n\t\t\tthis.setConfig(control);\r\n\t\tif (this.imageValidation) {\r\n\t\t\treturn this.imageValidation(control, this.element.files);\r\n\t\t}\r\n\t\treturn of(null);\r\n\t}\r\n}\r\n","import { DecimalPipe, getLocaleNumberSymbol, NumberSymbol } from \"@angular/common\";\r\nimport { Inject, Injectable, LOCALE_ID } from \"@angular/core\";\r\nimport { BLANK } from \"../../const\";\r\nimport { ReactiveFormConfig } from \"../../util/reactive-form-config\";\r\nimport { RegexValidator } from '../../util/regex-validator';\r\n\r\n@Injectable()\r\nexport class DecimalProvider {\r\n private decimalSeperator: string = \".\";\r\n private groupSeperator: string = \",\";\r\n private allowDecimalSymbol: string;\r\n constructor(\r\n private decimalPipe: DecimalPipe, @Inject(LOCALE_ID) private localeId: string\r\n ) {\r\n this.decimalSeperator = getLocaleNumberSymbol(localeId, NumberSymbol.Decimal);;\r\n this.groupSeperator = getLocaleNumberSymbol(localeId, NumberSymbol.Group);\r\n this.setSymbolInConfig();\r\n }\r\n\r\n replacer(value: any): any {\r\n value = String(value);\r\n if (!this.isSetConfig)\r\n this.bindConfig();\r\n value = value.split(this.groupSeperator).join(BLANK);\r\n if (this.allowDecimalSymbol)\r\n value = value.replace(this.decimalSeperator, this.allowDecimalSymbol)\r\n var splitValue = value.split(this.decimalSeperator);\r\n value = (splitValue.length > 1 && splitValue[1] && RegexValidator.isZero(splitValue[1])) ? splitValue[0] : value;\r\n return value;\r\n }\r\n\r\n transFormDecimal(value: any, digitsInfo: string): string {\r\n value = String(value);\r\n if (!value) {\r\n return value;\r\n }\r\n return this.decimalPipe.transform(value.replace(ReactiveFormConfig.number.groupSymbol, \"\").replace(this.decimalSeperator, \".\"), digitsInfo, this.localeId);\r\n }\r\n\r\n private setSymbolInConfig() {\r\n ReactiveFormConfig.number = { decimalSymbol: this.decimalSeperator, groupSymbol: this.groupSeperator };\r\n }\r\n\r\n bindConfig() {\r\n if (ReactiveFormConfig.json) {\r\n if (ReactiveFormConfig.json.localeId)\r\n this.localeId = ReactiveFormConfig.json.localeId;\r\n if (ReactiveFormConfig.json.allowDecimalSymbol)\r\n this.allowDecimalSymbol = ReactiveFormConfig.json.allowDecimalSymbol;\r\n }\r\n this.isSetConfig = true;\r\n }\r\n\r\n private isSetConfig: boolean = false;\r\n}\r\n","import { Renderer2 } from \"@angular/core\";\r\nimport { FormControl } from \"@angular/forms\";\r\nimport { BLUR, FOCUS, KEY_DOWN, KEY_PRESS, PASTE } from \"../../const\";\r\nimport { AnnotationTypes } from \"../../core/validator.static\";\r\nimport { MaskConfig } from \"../../models/config/mask-config\";\r\nimport { getConfigObject } from \"../../util/config-provider\";\r\nimport { FormProvider } from \"../../util/form-provider\";\r\nimport { ObjectMaker } from \"../../util/object-maker\";\r\nimport { RegexValidator } from \"../../util/regex-validator\";\r\n\r\nexport class MaskProvider {\r\n\r\n private eventListeners: any[] = [];\r\n\r\n oldValue: string = '';\r\n\r\n type: string = 'text';\r\n\r\n slotChar: string = '_';\r\n\r\n autoClear: boolean = false;\r\n\r\n value: any;\r\n\r\n defs: any;\r\n\r\n tests: any[];\r\n\r\n partialPosition: any;\r\n\r\n firstNonMaskPos: number;\r\n\r\n lastRequiredNonMaskPos: any;\r\n\r\n len: number;\r\n\r\n oldVal: string;\r\n\r\n buffer: any;\r\n\r\n defaultBuffer: string;\r\n\r\n focusText: string;\r\n\r\n caretTimeoutId: any;\r\n\r\n androidChrome: boolean;\r\n\r\n focus: boolean;\r\n\r\n filled: boolean;\r\n\r\n minLength: number;\r\n\r\n constructor(private input: HTMLInputElement, private mask: string, private renderer: Renderer2, private formControl: FormControl, private config: MaskConfig) {\r\n this.bind();\r\n }\r\n\r\n bind() {\r\n if (RegexValidator.isNotBlank(this.formControl.value))\r\n this.input.value = this.formControl.value;\r\n this.tests = [];\r\n this.partialPosition = this.mask.length;\r\n this.len = this.mask.length;\r\n this.firstNonMaskPos = null;\r\n this.defs = {\r\n '9': '[0-9]',\r\n 'a': '[A-Za-z]',\r\n '*': '[A-Za-z0-9]'\r\n };\r\n\r\n\r\n this.androidChrome = false;\r\n\r\n let maskTokens = this.mask.split('');\r\n for (let i = 0; i < maskTokens.length; i++) {\r\n let c = maskTokens[i];\r\n if (c == '?') {\r\n this.len--;\r\n this.partialPosition = i;\r\n }\r\n else if (this.defs[c]) {\r\n this.tests.push(new RegExp(this.defs[c]));\r\n if (this.firstNonMaskPos === null) {\r\n this.firstNonMaskPos = this.tests.length - 1;\r\n }\r\n if (i < this.partialPosition) {\r\n this.lastRequiredNonMaskPos = this.tests.length - 1;\r\n }\r\n }\r\n else {\r\n this.tests.push(null);\r\n }\r\n }\r\n this.minLength = this.config.minLength ? this.lastRequiredNonMaskPos - (this.lastRequiredNonMaskPos - this.config.minLength) : this.lastRequiredNonMaskPos;\r\n this.buffer = [];\r\n for (let i = 0; i < maskTokens.length; i++) {\r\n let c = maskTokens[i];\r\n if (c != '?') {\r\n if (this.defs[c])\r\n this.buffer.push(this.getPlaceholder(i));\r\n else\r\n this.buffer.push(c);\r\n }\r\n }\r\n this.defaultBuffer = this.buffer.join('');\r\n this.focusText = this.input.value;\r\n this.bindEvents();\r\n this.checkVal();\r\n }\r\n\r\n bindEvents() {\r\n this.eventListeners.push(this.renderer.listen(this.input, FOCUS, this.onFocus.bind(this)));\r\n this.eventListeners.push(this.renderer.listen(this.input, BLUR, this.onBlur.bind(this)));\r\n this.eventListeners.push(this.renderer.listen(this.input, KEY_DOWN, this.onKeyDown.bind(this)));\r\n this.eventListeners.push(this.renderer.listen(this.input, KEY_PRESS, this.onKeyPress.bind(this)));\r\n this.eventListeners.push(this.renderer.listen(this.input, \"input\", this.onInput.bind(this)));\r\n this.eventListeners.push(this.renderer.listen(this.input, PASTE, this.handleInputChange.bind(this)));\r\n }\r\n isInvalid: boolean = false;\r\n validate() {\r\n if ((this.input.value && this.oldValue != this.input.value)) {\r\n this.checkVal(true);\r\n this.isCompleted(null, true);\r\n this.oldValue = this.input.value\r\n }\r\n let config = getConfigObject(this.config, this.formControl);\r\n if (RegexValidator.isNotBlank(this.getUnmaskedValue()) && FormProvider.ProcessRule(this.formControl, config)) {\r\n if (this.isInvalid) {\r\n return ObjectMaker.toJson(AnnotationTypes.mask, config, [this.formControl.value]);\r\n }\r\n\r\n }\r\n return ObjectMaker.null();\r\n }\r\n\r\n writeValue(value: any): void {\r\n this.value = value;\r\n\r\n if (this.input) {\r\n if (this.value == undefined || this.value == null) {\r\n this.input.value = '';\r\n }\r\n this.checkVal();\r\n }\r\n\r\n this.updateFilledState();\r\n }\r\n\r\n caret(first?: number, last?: number) {\r\n let range, begin, end;\r\n\r\n if (!this.input.offsetParent || this.input !== document.activeElement) {\r\n return;\r\n }\r\n\r\n if (typeof first == 'number') {\r\n begin = first;\r\n end = (typeof last === 'number') ? last : begin;\r\n if (this.input.setSelectionRange) {\r\n this.input.setSelectionRange(begin, end);\r\n }\r\n else if (this.input['createTextRange']) {\r\n range = this.input['createTextRange']();\r\n range.collapse(true);\r\n range.moveEnd('character', end);\r\n range.moveStart('character', begin);\r\n range.select();\r\n }\r\n }\r\n else {\r\n if (this.input.setSelectionRange) {\r\n begin = this.input.selectionStart;\r\n end = this.input.selectionEnd;\r\n }\r\n else if (document['selection'] && document['selection'].createRange) {\r\n range = document['selection'].createRange();\r\n begin = 0 - range.duplicate().moveStart('character', -100000);\r\n end = begin + range.text.length;\r\n }\r\n\r\n return { begin: begin, end: end };\r\n }\r\n }\r\n\r\n isCompleted(lastRequiredNonMaskPos?: number, isNotRunValidator?: boolean): boolean {\r\n let completed: boolean;\r\n lastRequiredNonMaskPos = lastRequiredNonMaskPos || this.lastRequiredNonMaskPos;\r\n for (let i = this.firstNonMaskPos; i <= lastRequiredNonMaskPos; i++) {\r\n if (this.tests[i] && this.buffer[i] === this.getPlaceholder(i)) {\r\n return false;\r\n }\r\n }\r\n this.isInvalid = false;\r\n if (!isNotRunValidator)\r\n this.formControl.updateValueAndValidity();\r\n return true;\r\n }\r\n\r\n getPlaceholder(i: number) {\r\n if (i < this.slotChar.length) {\r\n return this.slotChar.charAt(i);\r\n }\r\n return this.slotChar.charAt(0);\r\n }\r\n\r\n seekNext(pos) {\r\n while (++pos < this.len && !this.tests[pos]);\r\n return pos;\r\n }\r\n\r\n seekPrev(pos) {\r\n while (--pos >= 0 && !this.tests[pos]);\r\n return pos;\r\n }\r\n\r\n shiftL(begin: number, end: number) {\r\n let i, j;\r\n\r\n if (begin < 0) {\r\n return;\r\n }\r\n\r\n for (i = begin, j = this.seekNext(end); i < this.len; i++) {\r\n if (this.tests[i]) {\r\n if (j < this.len && this.tests[i].test(this.buffer[j])) {\r\n this.buffer[i] = this.buffer[j];\r\n this.buffer[j] = this.getPlaceholder(j);\r\n } else {\r\n break;\r\n }\r\n\r\n j = this.seekNext(j);\r\n }\r\n }\r\n this.writeBuffer();\r\n this.caret(Math.max(this.firstNonMaskPos, begin));\r\n }\r\n\r\n shiftR(pos) {\r\n let i, c, j, t;\r\n\r\n for (i = pos, c = this.getPlaceholder(pos); i < this.len; i++) {\r\n if (this.tests[i]) {\r\n j = this.seekNext(i);\r\n t = this.buffer[i];\r\n this.buffer[i] = c;\r\n if (j < this.len && this.tests[j].test(t)) {\r\n c = t;\r\n } else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n handleAndroidInput(e) {\r\n var curVal = this.input.value;\r\n var pos = this.caret();\r\n if (this.oldVal && this.oldVal.length && this.oldVal.length > curVal.length) {\r\n this.checkVal(true);\r\n while (pos.begin > 0 && !this.tests[pos.begin - 1])\r\n pos.begin--;\r\n if (pos.begin === 0) {\r\n while (pos.begin < this.firstNonMaskPos && !this.tests[pos.begin])\r\n pos.begin++;\r\n }\r\n this.caret(pos.begin, pos.begin);\r\n } else {\r\n var pos2 = this.checkVal(true);\r\n while (pos.begin < this.len && !this.tests[pos.begin])\r\n pos.begin++;\r\n\r\n this.caret(pos.begin, pos.begin);\r\n }\r\n\r\n if (this.isCompleted()) {\r\n this.isInvalid = false;\r\n } else {\r\n this.isInvalid = true;\r\n this.formControl.updateValueAndValidity();\r\n }\r\n }\r\n\r\n onBlur(e) {\r\n\r\n\r\n this.focus = false;\r\n this.checkVal();\r\n this.updateModel(e);\r\n this.updateFilledState();\r\n if (this.input.value != this.focusText) {\r\n let event = document.createEvent('HTMLEvents');\r\n event.initEvent('change', true, false);\r\n this.input.dispatchEvent(event);\r\n let maskedValue = this.input.value;\r\n this.formControl.setValue(this.config.valueWithMask ? maskedValue : this.getUnmaskedValue());\r\n this.input.value = maskedValue;\r\n }\r\n }\r\n\r\n onKeyDown(e) {\r\n let k = e.which || e.keyCode,\r\n pos,\r\n begin,\r\n end;\r\n let iPhone = false;\r\n this.oldVal = this.input.value;\r\n let controlValid = this.config.minLength ? this.isCompleted(this.minLength + 1) : false;\r\n if (k === 8 || k === 46 || (iPhone && k === 127)) {\r\n pos = this.caret();\r\n begin = pos.begin;\r\n end = pos.end;\r\n\r\n\r\n if (end - begin === 0) {\r\n begin = k !== 46 ? this.seekPrev(begin) : (end = this.seekNext(begin - 1));\r\n end = k === 46 ? this.seekNext(end) : end;\r\n }\r\n\r\n this.clearBuffer(begin, end);\r\n this.shiftL(begin, end - 1);\r\n this.setControlValue(e, false, controlValid);\r\n this.updateModel(e);\r\n e.preventDefault();\r\n } else if (k === 13) {\r\n this.onBlur(e);\r\n this.setControlValue(e, false, controlValid);\r\n this.updateModel(e);\r\n } else if (k === 27) {\r\n this.input.value = this.focusText;\r\n this.caret(0, this.checkVal());\r\n this.updateModel(e);\r\n this.setControlValue(e, false, controlValid);\r\n e.preventDefault();\r\n\r\n }\r\n\r\n }\r\n\r\n onKeyPress(e) {\r\n var k = e.which || e.keyCode,\r\n pos = this.caret(),\r\n p,\r\n c,\r\n next,\r\n completed;\r\n if (e.ctrlKey || e.altKey || e.metaKey || k < 32) {\r\n return;\r\n } else if (k && k !== 13) {\r\n if (pos.end - pos.begin !== 0) {\r\n this.clearBuffer(pos.begin, pos.end);\r\n this.shiftL(pos.begin, pos.end - 1);\r\n }\r\n\r\n p = this.seekNext(pos.begin - 1);\r\n if (p < this.len) {\r\n c = String.fromCharCode(k);\r\n if (this.tests[p].test(c)) {\r\n this.shiftR(p);\r\n\r\n this.buffer[p] = c;\r\n this.writeBuffer();\r\n next = this.seekNext(p);\r\n\r\n\r\n this.caret(next);\r\n if (pos.begin <= this.lastRequiredNonMaskPos) {\r\n completed = this.isCompleted();\r\n }\r\n }\r\n }\r\n e.preventDefault();\r\n }\r\n\r\n this.updateModel(e);\r\n if (completed === undefined)\r\n completed = this.isCompleted()\r\n this.setControlValue(e, completed, this.config.minLength ? this.isCompleted(this.minLength) : false);\r\n }\r\n internalProcess: boolean = false;\r\n clearBuffer(start, end) {\r\n let i;\r\n for (i = start; i < end && i < this.len; i++) {\r\n if (this.tests[i]) {\r\n this.buffer[i] = this.getPlaceholder(i);\r\n }\r\n }\r\n }\r\n\r\n writeBuffer() {\r\n this.input.value = this.buffer.join('');\r\n }\r\n\r\n checkVal(allow?: boolean) {\r\n let test = this.input.value,\r\n lastMatch = -1,\r\n i,\r\n c,\r\n pos;\r\n\r\n for (i = 0, pos = 0; i < this.len; i++) {\r\n if (this.tests[i]) {\r\n this.buffer[i] = this.getPlaceholder(i);\r\n while (pos++ < test.length) {\r\n c = test.charAt(pos - 1);\r\n if (this.tests[i].test(c)) {\r\n this.buffer[i] = c;\r\n lastMatch = i;\r\n break;\r\n }\r\n }\r\n if (pos > test.length) {\r\n this.clearBuffer(i + 1, this.len);\r\n break;\r\n }\r\n } else {\r\n if (this.buffer[i] === test.charAt(pos)) {\r\n pos++;\r\n }\r\n if (i < this.partialPosition) {\r\n lastMatch = i;\r\n }\r\n }\r\n }\r\n if (allow) {\r\n this.writeBuffer();\r\n } else if ((lastMatch + 1 < this.partialPosition) && (!this.config.minLength || !(lastMatch >= this.minLength))) {\r\n if (this.autoClear || this.buffer.join('') === this.defaultBuffer) {\r\n this.isInvalid = true\r\n } else {\r\n this.isInvalid = true\r\n this.writeBuffer();\r\n }\r\n } else {\r\n this.writeBuffer();\r\n this.input.value = this.input.value.substring(0, lastMatch + 1);\r\n }\r\n return (this.partialPosition ? i : this.firstNonMaskPos);\r\n }\r\n\r\n onFocus(event) {\r\n\r\n this.focus = true;\r\n\r\n clearTimeout(this.caretTimeoutId);\r\n let pos;\r\n\r\n this.focusText = this.input.value;\r\n\r\n pos = this.checkVal();\r\n\r\n this.caretTimeoutId = setTimeout(() => {\r\n if (this.input !== document.activeElement) {\r\n return;\r\n }\r\n this.writeBuffer();\r\n if (pos == this.mask.replace(\"?\", \"\").length) {\r\n this.caret(0, pos);\r\n } else {\r\n this.caret(pos);\r\n }\r\n this.updateFilledState();\r\n }, 10);\r\n }\r\n\r\n onInput(event) {\r\n if (this.androidChrome)\r\n this.handleAndroidInput(event);\r\n else\r\n this.handleInputChange(event);\r\n }\r\n setControlValue(e, isValid, isValidControl?: boolean) {\r\n this.isInvalid = isValidControl ? !isValidControl : !isValid;\r\n let value = this.input.value;\r\n let controlValue = '';\r\n if (!this.isInvalid)\r\n controlValue = this.config.valueWithMask ? value : this.getUnmaskedValue()\r\n this.formControl.setValue(controlValue);\r\n this.oldValue = this.input.value = value;\r\n if (!isValid)\r\n this.onFocus(e);\r\n }\r\n\r\n handleInputChange(event) {\r\n setTimeout(() => {\r\n var pos = this.checkVal(true);\r\n this.caret(pos);\r\n this.updateModel(event);\r\n this.setControlValue(event, this.isCompleted());\r\n }, 0);\r\n }\r\n\r\n getUnmaskedValue() {\r\n let unmaskedBuffer = [];\r\n for (let i = 0; i < this.buffer.length; i++) {\r\n let c = this.buffer[i];\r\n if (this.tests[i] && c != this.getPlaceholder(i)) {\r\n unmaskedBuffer.push(c);\r\n }\r\n }\r\n return unmaskedBuffer.join('');\r\n }\r\n\r\n updateModel(e) {\r\n }\r\n\r\n updateFilledState() {\r\n this.filled = this.input && this.input.value != '';\r\n }\r\n\r\n onDestroy() {\r\n let eventCount = this.eventListeners.length;\r\n for (var i = 0; i < eventCount; i++) {\r\n this.eventListeners[0]();\r\n this.eventListeners.splice(0, 1);\r\n }\r\n this.eventListeners = [];\r\n }\r\n}","export const SIMPLE_EMAIL_VALIDATION: string = \"simple-email-validation\";\r\n\r\nexport const ADVANCED_EMAIL_VALIDATION: string = \"advanced-email-validation\";\r\n\r\n","import { Directive, Input } from \"@angular/core\";\r\nimport { AbstractControl, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { VALIDATOR_CONFIG } from \"../../const/app.const\";\r\n\r\n@Directive()\r\nexport abstract class ControlExpressionProcess {\r\n\r\n protected validator: ValidatorFn;\r\n protected conditionalValidator: ValidatorFn;\r\n protected controlConfig: { [key: string]: any } = {};\r\n\r\n @Input() name: string;\r\n\r\n @Input() formControlName: string;\r\n\r\n isProcessed: boolean = false;\r\n protected controls: { [key: string]: FormControl };\r\n\r\n setModelConfig(control: AbstractControl) {\r\n this.isProcessed = true;\r\n if (this.controlConfig && this.controlConfig.validatorConfig) {\r\n control[VALIDATOR_CONFIG] = this.controlConfig.validatorConfig;\r\n this.controlConfig = undefined;\r\n }\r\n }\r\n}\r\n","import { Directive, Input } from \"@angular/core\";\r\nimport { AbstractControl, FormControl, ValidatorFn } from '@angular/forms';\r\nimport { CHANGE, CHECKBOX, FILE, INPUT, RADIO, SELECT, TEXTAREA } from \"../../const\";\r\nimport { MaskProvider } from '../../domain/element-processor/mask.provider';\r\nimport { ControlExpressionProcess } from './control-expression-process';\r\n\r\n@Directive()\r\nexport class BaseValidator extends ControlExpressionProcess {\r\n @Input() formControl: FormControl | AbstractControl;\r\n\r\n protected validators: ValidatorFn[] = [];\r\n protected element: any;\r\n protected eventName: string;\r\n protected maskProvider: MaskProvider;\r\n\r\n validation(control: AbstractControl): { [key: string]: any } {\r\n let result = null;\r\n for (let validator of this.validators) {\r\n result = validator(control);\r\n if (result)\r\n break;\r\n }\r\n if (!result && this.maskProvider)\r\n result = this.maskProvider.validate();\r\n return result;\r\n }\r\n\r\n\r\n protected setEventName() {\r\n var eventName: string = '';\r\n switch (this.element.tagName) {\r\n case INPUT:\r\n case TEXTAREA:\r\n eventName = (this.element.type == CHECKBOX || this.element.type == RADIO || this.element.type == FILE) ? CHANGE : INPUT;\r\n break;\r\n case SELECT:\r\n eventName = CHANGE;\r\n break;\r\n }\r\n this.eventName = eventName.toLowerCase();\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Directive, ElementRef, forwardRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { AbstractControl, FormControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { BLANK, BLUR, ELEMENT_VALUE, FOCUS } from \"../../const\";\r\nimport { APP_VALIDATORS } from '../../const/app-validators.const';\r\nimport { CONDITIONAL_VALIDATOR, TEMPLATE_VALIDATION_CONFIG, VALIDATOR_CONFIG } from '../../const/app.const';\r\nimport { DecimalProvider } from \"../../domain/element-processor/decimal.provider\";\r\nimport { MaskProvider } from '../../domain/element-processor/mask.provider';\r\nimport { AlphaConfig, BaseConfig, CompareConfig, ComposeConfig, ContainsConfig, CreditCardConfig, DateConfig, DefaultConfig, DifferentConfig, DigitConfig, EmailConfig, ExtensionConfig, FactorConfig, MessageConfig, NumberConfig, NumericConfig, PasswordConfig, RangeConfig, RelationalOperatorConfig, RequiredConfig, RuleConfig, SizeConfig, TimeConfig, UniqueConfig } from '../../models/config';\r\nimport { RxFormControl } from \"../../services/form-control\";\r\nimport { RegexValidator } from '../../util';\r\nimport { ApplicationUtil } from '../../util/app-util';\r\nimport { BaseValidator } from './base-validator.directive';\r\n\r\nconst NGMODEL_BINDING: any = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => RxFormControlDirective),\r\n multi: true\r\n};\r\n\r\nconst ALLOW_VALIDATOR_WITHOUT_CONFIG = ['required', 'notEmpty', 'alpha', 'alphaNumeric', 'ascii', 'dataUri', 'digit', 'email', 'even', 'hexColor', 'json', 'latitude', 'latLong', 'leapYear', 'longitude', 'lowerCase', 'mac', 'odd', 'port', 'primeNumber', 'time', 'upperCase', 'url', 'unique', 'cusip', 'gird'];\r\nconst NUMERIC: string = \"numeric\";\r\nconst IS_FORMAT: string = \"isFormat\";\r\nconst DIGITS_INFO: string = \"digitsInfo\";\r\n\r\n@Directive({\r\n selector: '[ngModel],[formControlName],[formControl]',\r\n providers: [NGMODEL_BINDING],\r\n})\r\nexport class RxFormControlDirective extends BaseValidator implements OnInit, OnDestroy, Validator {\r\n private eventListeners: any[] = [];\r\n private isNumericSubscribed: boolean = false;\r\n private isFocusCalled: boolean = false;\r\n private isMasked: boolean = false;\r\n\r\n\r\n set validationControls(value: { [key: string]: FormControl }) {\r\n this.controls = value;\r\n }\r\n\r\n get validationControls() {\r\n return this.controls;\r\n }\r\n\r\n @Input() rxalpha: AlphaConfig;\r\n @Input() rxalphaNumeric: AlphaConfig;\r\n @Input() rxascii: BaseConfig;\r\n @Input() rxcompare: CompareConfig;\r\n @Input() rxcompose: ComposeConfig;\r\n @Input() rxcontains: ContainsConfig;\r\n @Input() rxcreditCard: CreditCardConfig;\r\n @Input() rxdataUri: BaseConfig;\r\n @Input() rxdifferent: DifferentConfig;\r\n @Input() rxdigit: DigitConfig;\r\n @Input() rxemail: EmailConfig;\r\n @Input() rxendsWith: DefaultConfig;\r\n @Input() rxeven: BaseConfig;\r\n @Input() rxextension: ExtensionConfig;\r\n @Input() rxfactor: FactorConfig;\r\n @Input() rxfileSize: SizeConfig;\r\n @Input() rxgreaterThanEqualTo: RelationalOperatorConfig;\r\n @Input() rxgreaterThan: RelationalOperatorConfig;\r\n @Input() rxhexColor: MessageConfig;\r\n @Input() rxjson: DefaultConfig;\r\n @Input() rxlatitude: BaseConfig;\r\n @Input() rxlatLong: BaseConfig;\r\n @Input() rxleapYear: BaseConfig;\r\n @Input() rxlessThan: RelationalOperatorConfig;\r\n @Input() rxlessThanEqualTo: RelationalOperatorConfig;\r\n @Input() rxlongitude: BaseConfig;\r\n @Input() rxlowerCase: MessageConfig;\r\n @Input() rxmac: BaseConfig;\r\n @Input() rxmaxDate: DateConfig;\r\n @Input() rxmaxLength: NumberConfig;\r\n @Input() rxmaxNumber: NumberConfig;\r\n @Input() rxminDate: DateConfig;\r\n @Input() rxminLength: NumberConfig;\r\n @Input() rxminNumber: NumberConfig;\r\n @Input() rxnumeric: NumericConfig;\r\n @Input() rxodd: BaseConfig;\r\n @Input() rxpassword: PasswordConfig;\r\n @Input() rxport: BaseConfig;\r\n @Input() rxprimeNumber: BaseConfig;\r\n @Input() rxrequired: RequiredConfig;\r\n @Input() rxrange: RangeConfig;\r\n @Input() rxrule: RuleConfig;\r\n @Input() rxstartsWith: DefaultConfig;\r\n @Input() rxtime: TimeConfig;\r\n @Input() rxupperCase: MessageConfig;\r\n @Input() rxurl: DefaultConfig;\r\n @Input() rxunique: UniqueConfig;\r\n @Input() rxnotEmpty: BaseConfig;\r\n @Input() rxcusip: BaseConfig;\r\n @Input() rxgrid: BaseConfig;\r\n @Input() rxdate: BaseConfig;\r\n\r\n\r\n\r\n constructor(private elementRef: ElementRef,\r\n private renderer: Renderer2, private decimalProvider: DecimalProvider) {\r\n super();\r\n this.element = elementRef.nativeElement as Node;\r\n this.setEventName();\r\n }\r\n\r\n ngOnInit() {\r\n let validators = [];\r\n Object.keys(APP_VALIDATORS).forEach(validatorName => {\r\n if ((this[`rx${validatorName}`]) || (ALLOW_VALIDATOR_WITHOUT_CONFIG.indexOf(validatorName) != -1 && this[`rx${validatorName}`] == BLANK)) {\r\n validators.push(APP_VALIDATORS[validatorName](this[`rx${validatorName}`]));\r\n if (this.name && !(this.formControlName && this.formControl)) {\r\n ApplicationUtil.configureControl(this.controlConfig, this[`rx${validatorName}`], validatorName);\r\n }\r\n\r\n }\r\n })\r\n if (validators.length > 0)\r\n this.validators = validators\r\n if (this.rxnumeric && (this.rxnumeric.isFormat || this.rxnumeric.digitsInfo)) {\r\n this.bindNumericElementEvent();\r\n }\r\n\r\n }\r\n\r\n\r\n blurEvent() {\r\n if (!(this.formControl && this.formControl.errors && this.formControl.errors.numeric)) {\r\n if (this.formControl.value !== null && this.formControl.value !== undefined) {\r\n let value = this.decimalProvider.transFormDecimal(this.formControl.value, this.rxnumeric.digitsInfo);\r\n value = (!this.rxnumeric.isFormat) ? this.decimalProvider.replacer(value) : value;\r\n this.setValueOnElement(value);\r\n }\r\n this.isFocusCalled = false;\r\n }\r\n }\r\n\r\n bindNumericElementEvent(config?: NumericConfig) {\r\n if (config)\r\n this.rxnumeric = config;\r\n let listener = this.renderer.listen(this.element, BLUR, this.blurEvent.bind(this));\r\n this.eventListeners.push(listener)\r\n listener = this.renderer.listen(this.element, FOCUS, (event) => {\r\n this.isFocusCalled = true;\r\n if (!(this.formControl && this.formControl.errors && this.formControl.errors.numeric) && this.formControl.value != null) {\r\n let value = this.decimalProvider.replacer(this.element.value);\r\n this.setValueOnElement(value);\r\n }\r\n });\r\n this.eventListeners.push(listener)\r\n }\r\n\r\n bindValueChangeEvent() {\r\n if (this.eventName != BLANK) {\r\n let listener = this.renderer.listen(this.element, this.eventName, () => {\r\n Object.keys(this.validationControls).forEach(fieldName => {\r\n this.validationControls[fieldName].updateValueAndValidity();\r\n })\r\n });\r\n this.eventListeners.push(listener);\r\n }\r\n }\r\n\r\n subscribeNumericFormatter() {\r\n if (this.formControl[VALIDATOR_CONFIG] && this.formControl[VALIDATOR_CONFIG][NUMERIC] && (this.formControl[VALIDATOR_CONFIG][NUMERIC][IS_FORMAT] || this.formControl[VALIDATOR_CONFIG][NUMERIC][DIGITS_INFO])) {\r\n if (!this.isNumericSubscribed) {\r\n this.bindNumericElementEvent(this.formControl[VALIDATOR_CONFIG][NUMERIC]);\r\n this.isNumericSubscribed = true;\r\n }\r\n if (!this.isFocusCalled && RegexValidator.isNotBlank(this.formControl.value)) {\r\n this.blurEvent();\r\n }\r\n }\r\n\r\n }\r\n\r\n subscribeMaskValidator() {\r\n if (this.formControl[VALIDATOR_CONFIG] && this.formControl[VALIDATOR_CONFIG][\"mask\"] && !this.isMasked) {\r\n let config = this.formControl[VALIDATOR_CONFIG][\"mask\"];\r\n this.maskProvider = new MaskProvider(this.element, config.mask, this.renderer, this.formControl as FormControl, config);\r\n this.isMasked = true;\r\n }\r\n }\r\n\r\n private setValueOnElement(value: any) {\r\n this.renderer.setProperty(this.element, ELEMENT_VALUE, value);\r\n }\r\n\r\n private setTemplateValidators(control: AbstractControl) {\r\n for (let validatorName in control[VALIDATOR_CONFIG]) {\r\n this[validatorName] = control[VALIDATOR_CONFIG][validatorName];\r\n }\r\n delete control[TEMPLATE_VALIDATION_CONFIG];\r\n delete control[VALIDATOR_CONFIG]\r\n this.ngOnInit();\r\n }\r\n\r\n private updateOnElementClass(element: HTMLElement) {\r\n var previousClassName: string = '';\r\n return function (className: string) {\r\n if (previousClassName)\r\n element.classList.remove(previousClassName);\r\n if (className)\r\n element.classList.add(className)\r\n previousClassName = className;\r\n }\r\n }\r\n\r\n private setValidatorConfig(control: AbstractControl) {\r\n if (!this.formControl) {\r\n this.formControl = control;\r\n let rxFormControl = this.formControl as RxFormControl;\r\n if (rxFormControl.updateOnElementClass)\r\n rxFormControl.updateOnElementClass = this.updateOnElementClass(this.element);\r\n }\r\n\r\n this.subscribeMaskValidator();\r\n this.subscribeNumericFormatter();\r\n if (control[TEMPLATE_VALIDATION_CONFIG])\r\n this.setTemplateValidators(control);\r\n if (control[CONDITIONAL_VALIDATOR]) {\r\n this.conditionalValidator = control[CONDITIONAL_VALIDATOR];\r\n delete control[CONDITIONAL_VALIDATOR];\r\n }\r\n\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } {\r\n this.setValidatorConfig(control);\r\n if (this.conditionalValidator)\r\n this.conditionalValidator(control);\r\n if (!this.isProcessed)\r\n this.setModelConfig(control);\r\n return ((this.validators && this.validators.length > 0) || this.maskProvider) ? this.validation(control) : null;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.controls = undefined;\r\n let eventCount = this.eventListeners.length;\r\n for (var i = 0; i < eventCount; i++) {\r\n this.eventListeners[0]();\r\n this.eventListeners.splice(0, 1);\r\n }\r\n this.eventListeners = [];\r\n if (this.maskProvider)\r\n this.maskProvider.onDestroy();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn, AsyncValidatorFn} from \"@angular/forms\"\r\n\r\nexport abstract class IAbstractControl extends AbstractControl {\r\n errorMessages: string[];\r\n\r\n errorMessage: string;\r\n \r\n bindError: () => void;\r\n\r\n refresh: () => void;\r\n\r\n setBackEndErrors: (errors: { [key: string]: any }) => void;\r\n\r\n clearBackEndErrors: (errors?: { [key: string]: any }) => void;\r\n\r\n getValidators: () => ValidatorFn[]; \r\n\r\n getAsyncValidators: () => AsyncValidatorFn[];\r\n }","import { Directive, EmbeddedViewRef, Input, OnDestroy, ViewContainerRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[controlHost]'\r\n})\r\nexport class ControlHostDirective implements OnDestroy {\r\n view: EmbeddedViewRef<any>;\r\n\r\n constructor(public viewContainerRef: ViewContainerRef) { }\r\n\r\n @Input('controlHost') set portal(context: any) {\r\n if (context.templateRef) {\r\n if (this.view) {\r\n this.view.destroy();\r\n this.view = undefined;\r\n }\r\n this.view = this.viewContainerRef.createEmbeddedView(context.templateRef, context);\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.view)\r\n this.view.destroy();\r\n if (this.viewContainerRef)\r\n this.viewContainerRef.clear();\r\n }\r\n}\r\n","import { FormBuilderConfiguration } from '../models/form-builder-configuration'\r\nimport { AutoInstanceConfig } from '../models/interface/auto-instance-config.interface'\r\nimport { defaultContainer } from '../core/defaultContainer';\r\nimport { InstanceContainer,PropertyInfo} from '../core/validator.interface';\r\nimport { ARRAY_PROPERTY, OBJECT_PROPERTY, PROPERTY } from \"../const\"\r\nimport { RegexValidator } from '../util/regex-validator';\r\nimport { SANITIZERS } from \"../util/sanitizers\"\r\nimport { instanceProvider, getInstance } from \"../util/instance-provider.function\"\r\n\r\nexport class BaseFormBuilder {\r\n constructor() {\r\n }\r\n\r\n protected createInstance() {\r\n let instance = {};\r\n defaultContainer.modelIncrementCount = defaultContainer.modelIncrementCount + 1;\r\n let modelName = `RxWebModel${defaultContainer.modelIncrementCount}`\r\n instance.constructor = Function(`\"use strict\";return(function ${modelName}(){ })`)()\r\n return instance;\r\n }\r\n\r\n protected createClassObject(model: any, formBuilderConfiguration: FormBuilderConfiguration, classInstance?: any) {\r\n let instanceContainer = defaultContainer.get(model);\r\n let autoInstanceConfig: AutoInstanceConfig = formBuilderConfiguration ? formBuilderConfiguration.autoInstanceConfig : undefined;\r\n if (!autoInstanceConfig) {\r\n return classInstance && typeof classInstance != \"function\" ? classInstance : getInstance(model, []);\r\n } else {\r\n classInstance = classInstance && typeof classInstance != \"function\" ? classInstance : getInstance(model, autoInstanceConfig.arguments || [])\r\n if (autoInstanceConfig.objectPropInstanceConfig && autoInstanceConfig.objectPropInstanceConfig.length > 0) {\r\n autoInstanceConfig.objectPropInstanceConfig.forEach(t => {\r\n let objectProperty = instanceContainer.properties.filter(property => property.name == t.propertyName && property.propertyType == OBJECT_PROPERTY)[0];\r\n if (objectProperty) {\r\n let data =classInstance[t.propertyName];\r\n classInstance[t.propertyName] = getInstance(objectProperty.entity, t.arguments || []);\r\n if (data)\r\n this.setObjectValue(data, classInstance[t.propertyName]);\r\n }\r\n })\r\n }\r\n if (autoInstanceConfig.arrayPropInstanceConfig && autoInstanceConfig.arrayPropInstanceConfig.length > 0) {\r\n autoInstanceConfig.arrayPropInstanceConfig.forEach(t => {\r\n let property = instanceContainer.properties.filter(property => property.name == t.propertyName && property.propertyType == ARRAY_PROPERTY)[0];\r\n if (property) {\r\n let data = classInstance[t.propertyName];\r\n classInstance[t.propertyName] = [];\r\n for (var i = 0; i < t.rowItems; i++) {\r\n let instance = getInstance(property.entity, t.arguments || []);\r\n if (data && data[i])\r\n this.setObjectValue(data[i], instance);\r\n classInstance[t.propertyName].push(instance)\r\n }\r\n }\r\n })\r\n }\r\n return classInstance;\r\n }\r\n }\r\n\r\n protected updateObject(model: any, entityObject: any, formBuilderConfiguration: FormBuilderConfiguration) {\r\n let instanceContainer = instanceProvider(model);\r\n let classInstance = getInstance(model, []);\r\n if (instanceContainer) {\r\n instanceContainer.properties.forEach(t => {\r\n let entity = ((t.propertyType == OBJECT_PROPERTY || t.propertyType == ARRAY_PROPERTY) && t.entity) ? t.entity : (formBuilderConfiguration && formBuilderConfiguration.genericEntities) ? formBuilderConfiguration.genericEntities[t.name] : undefined;\r\n if (!entity && t.entityProvider)\r\n entity = t.entityProvider.call(entityObject);\r\n switch (t.propertyType) {\r\n case PROPERTY:\r\n classInstance[t.name] = this.getValue(entityObject, t, formBuilderConfiguration)\r\n break;\r\n case OBJECT_PROPERTY:\r\n let objectValue = this.getValue(entityObject, t, formBuilderConfiguration);\r\n if (objectValue) \r\n classInstance[t.name] = this.updateObject(entity, objectValue, formBuilderConfiguration)\r\n break;\r\n case ARRAY_PROPERTY:\r\n let arrayObjectValue = this.getValue(entityObject, t, formBuilderConfiguration);\r\n if (arrayObjectValue && Array.isArray(arrayObjectValue)) {\r\n classInstance[t.name] = [];\r\n for (let row of arrayObjectValue) {\r\n let instanceObject = this.updateObject(entity, row, formBuilderConfiguration)\r\n classInstance[t.name].push(instanceObject);\r\n }\r\n }\r\n break;\r\n }\r\n })\r\n }\r\n return classInstance;\r\n }\r\n\r\n\r\n protected instaceProvider(instanceFunc: any, entityObject: any): InstanceContainer {\r\n return instanceProvider(instanceFunc, entityObject);\r\n }\r\n\r\n protected getDefaultValue(propertyInfo: PropertyInfo, value: any, formBuilderConfiguration: FormBuilderConfiguration) {\r\n let defaultValue = (formBuilderConfiguration && formBuilderConfiguration.propsConfig && formBuilderConfiguration.propsConfig[propertyInfo.name] && formBuilderConfiguration.propsConfig[propertyInfo.name].defaultValue && !RegexValidator.isNotBlank(value)) ? formBuilderConfiguration.propsConfig[propertyInfo.name].defaultValue : (propertyInfo.defaultValue != undefined && !RegexValidator.isNotBlank(value)) ?\r\n propertyInfo.defaultValue :\r\n value\r\n return defaultValue;\r\n }\r\n\r\n protected sanitizeValue(instanceContainer: InstanceContainer, propertyName: string, value: any, entityObject: any, baseObject: any) {\r\n if (instanceContainer.sanitizers && instanceContainer.sanitizers[propertyName]) {\r\n for (let sanitizer of instanceContainer.sanitizers[propertyName])\r\n value = SANITIZERS[sanitizer.name](value,sanitizer.config);\r\n }\r\n if (entityObject[propertyName] !== undefined && entityObject[propertyName] !== value)\r\n entityObject[propertyName] = value;\r\n if (baseObject[propertyName] !== undefined && baseObject[propertyName] !== value)\r\n baseObject[propertyName] = value;\r\n return value;\r\n }\r\n\r\n private getValue(entityObject: { [key: string]: any }, propertyInfo: PropertyInfo, formBuilderConfiguration: FormBuilderConfiguration) {\r\n let propValue = (propertyInfo.dataPropertyName) ? entityObject[propertyInfo.dataPropertyName] : entityObject[propertyInfo.name];\r\n return this.getDefaultValue(propertyInfo,propValue,formBuilderConfiguration);\r\n }\r\n\r\n private setObjectValue(entityObject: { [key: string]: any }, classInstance: any) {\r\n for (var column in entityObject) {\r\n classInstance[column] = entityObject[column];\r\n }\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { APP_VALIDATORS } from \"../const/app-validators.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function andValidator(configModel: LogicalOperatorConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let validatorNames = Object.keys(config.validation);\r\n let failed: boolean = false;\r\n for (var validatorName of validatorNames) {\r\n failed = typeof config.validation[validatorName] == \"boolean\" ? APP_VALIDATORS[validatorName]()(control) : APP_VALIDATORS[validatorName](config.validation[validatorName])(control);\r\n if (failed)\r\n break;\r\n }\r\n if (failed)\r\n return ObjectMaker.toJson(AnnotationTypes.and, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { APP_VALIDATORS } from \"../const/app-validators.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function orValidator(configModel: LogicalOperatorConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let validatorNames = Object.keys(config.validation);\r\n let failed: boolean = false;\r\n for (var validatorName of validatorNames) {\r\n failed = typeof config.validation[validatorName] == \"boolean\" ? APP_VALIDATORS[validatorName]()(control) : APP_VALIDATORS[validatorName](config.validation[validatorName])(control);\r\n if (!failed)\r\n break;\r\n }\r\n if (failed)\r\n return ObjectMaker.toJson(AnnotationTypes.or, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from \"@angular/forms\";\r\nimport { APP_VALIDATORS } from \"../const/app-validators.const\";\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { getConfigObject } from \"../util/config-provider\";\r\nimport { ObjectMaker } from \"../util/object-maker\";\r\nimport { ValidatorValueChecker } from \"../util/validator-value-checker\";\r\n\r\nexport function notValidator(configModel: LogicalOperatorConfig): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n let config = getConfigObject(configModel, control);\r\n if (ValidatorValueChecker.pass(control, config)) {\r\n let validatorNames = Object.keys(config.validation);\r\n let failed: boolean = false;\r\n for (var validatorName of validatorNames) {\r\n failed = typeof config.validation[validatorName] == \"boolean\" ? APP_VALIDATORS[validatorName]()(control) : APP_VALIDATORS[validatorName](config.validation[validatorName])(control);\r\n if (!failed)\r\n break;\r\n }\r\n if (!failed)\r\n return ObjectMaker.toJson(AnnotationTypes.not, config, [control.value]);\r\n }\r\n return ObjectMaker.null();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\"\r\nimport { FormGroup, FormArray, FormControl, ValidatorFn, AsyncValidatorFn, FormBuilder, AbstractControlOptions } from \"@angular/forms\"\r\nimport { Type } from \"../util\"\r\nimport { BaseFormBuilder } from './base-form-builder';\r\n\r\nimport { ReactiveFormConfig } from '../util/reactive-form-config'\r\nimport { defaultContainer } from '../core/defaultContainer';\r\nimport { DecoratorConfiguration, InstanceContainer, PropertyInfo } from '../core/validator.interface';\r\n\r\nimport { FormBuilderConfiguration } from \"../models\"\r\nimport { ARRAY_PROPERTY, OBJECT_PROPERTY, PROPERTY, FUNCTION_STRING, OBJECT_STRING, RX_WEB_VALIDATOR, NUMBER, BOOLEAN, STRING, MODEL } from \"../const\"\r\nimport { PropValidationConfig } from \"../models/prop-validation-config\";\r\n\r\nimport { AnnotationTypes } from \"../core/validator.static\";\r\nimport { conditionalChangeValidator } from \"../reactive-form-validators/conditional-change.validator\";\r\nimport { Linq } from '../util/linq'\r\nimport { APP_VALIDATORS } from '../const/app-validators.const'\r\nimport { RxFormControl } from './form-control';\r\nimport { RxFormGroup } from './rx-form-group'\r\nimport { RxFormArray } from './rx-form-array';\r\nimport { andValidator } from '../reactive-form-validators/and.validator'\r\nimport { orValidator } from '../reactive-form-validators/or.validator'\r\nimport { notValidator } from '../reactive-form-validators/not.validator'\r\nimport { AppFormGroup } from '../models/interface/i-form-group'\r\nimport { RegexValidator } from \"../util/regex-validator\";\r\nimport { getInstance } from \"../util/instance-provider.function\";\r\nimport { IAbstractControl } from \"../models/interface/i-abstract-control\"\r\nconst LOGICAL_VALIDATORS: { [key: string]: Function } = { and: andValidator, or: orValidator, not: notValidator }\r\nconst ASYNC: string = \"async\"\r\nconst ENTITY_OBJECT: string = \"entityObject\";\r\n@Injectable()\r\nexport class RxFormBuilder extends BaseFormBuilder {\r\n private nestedProp: string;\r\n private conditionalObjectProps: any[] = [];\r\n private conditionalValidationInstance: any = {};\r\n private builderConfigurationConditionalObjectProps: any[] = [];\r\n private formGroupPropOtherValidator: { [key: string]: any } = {};\r\n private currentFormGroupPropOtherValidator: { [key: string]: any } = {};\r\n private isNested: boolean = false;\r\n private isGroupCalled: boolean = false;\r\n private isNestedBinding: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n\r\n\r\n private getInstanceContainer(instanceFunc: any, entityObject: any): InstanceContainer {\r\n return this.instaceProvider(instanceFunc, entityObject);\r\n }\r\n\r\n private setValue(formGroup: FormGroup, object: any): void {\r\n for (var col in object) {\r\n var control = formGroup.get([col]);\r\n control.setValue(object[col]);\r\n control.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private extractExpressions(fomrBuilderConfiguration: FormBuilderConfiguration): { [key: string]: string[] } {\r\n if (fomrBuilderConfiguration && fomrBuilderConfiguration.dynamicValidation) {\r\n for (var property in fomrBuilderConfiguration.dynamicValidation) {\r\n for (var decorator in fomrBuilderConfiguration.dynamicValidation[property]) {\r\n if (fomrBuilderConfiguration.dynamicValidation[property][decorator].conditionalExpression) {\r\n let columns = Linq.expressionColumns(fomrBuilderConfiguration.dynamicValidation[property][decorator].conditionalExpression);\r\n defaultContainer.addChangeValidation(this.conditionalValidationInstance, property, columns);\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n private addAsyncValidation(property: PropertyInfo, propertyValidators: DecoratorConfiguration[], propValidationConfig: PropValidationConfig) {\r\n let asyncValidators = [];\r\n if (propertyValidators) {\r\n for (let propertyValidator of propertyValidators) {\r\n if (propertyValidator.isAsync)\r\n propertyValidator.config.forEach(t => { asyncValidators.push(t) });\r\n }\r\n }\r\n if (propValidationConfig && propValidationConfig[ASYNC]) {\r\n propValidationConfig[ASYNC].forEach(t => { asyncValidators.push(t) })\r\n }\r\n return asyncValidators;\r\n }\r\n\r\n private addFormControl(property: PropertyInfo, propertyValidators: DecoratorConfiguration[], propValidationConfig: PropValidationConfig, instance: InstanceContainer, entity: any) {\r\n let validators = [];\r\n let columns = [];\r\n if ((instance.conditionalValidationProps && instance.conditionalValidationProps[property.name]) || (this.conditionalValidationInstance.conditionalValidationProps && this.conditionalValidationInstance.conditionalValidationProps[property.name])) {\r\n let props = [];\r\n if ((instance.conditionalValidationProps && instance.conditionalValidationProps[property.name]))\r\n instance.conditionalValidationProps[property.name].forEach(t => props.push(t))\r\n if (this.conditionalValidationInstance.conditionalValidationProps && this.conditionalValidationInstance.conditionalValidationProps[property.name])\r\n this.conditionalValidationInstance.conditionalValidationProps[property.name].forEach(t => props.push(t));\r\n validators.push(conditionalChangeValidator(props));\r\n }\r\n if (this.conditionalObjectProps.length > 0 || this.builderConfigurationConditionalObjectProps.length > 0) {\r\n let propConditions = [];\r\n if (this.conditionalObjectProps)\r\n propConditions = this.conditionalObjectProps.filter(t => t.propName == property.name);\r\n if (this.builderConfigurationConditionalObjectProps)\r\n this.builderConfigurationConditionalObjectProps.filter(t => t.propName == property.name).forEach(t => propConditions.push(t));\r\n propConditions.forEach(t => {\r\n if (t.referencePropName && columns.indexOf(t.referencePropName) == -1)\r\n columns.push(t.referencePropName);\r\n })\r\n if (columns.length > 0)\r\n validators.push(conditionalChangeValidator(columns));\r\n }\r\n for (let propertyValidator of propertyValidators) {\r\n if (!propertyValidator.isAsync)\r\n switch (propertyValidator.annotationType) {\r\n case AnnotationTypes.rule:\r\n validators.push(APP_VALIDATORS[propertyValidator.annotationType](propertyValidator.config, entity))\r\n break;\r\n case AnnotationTypes.and:\r\n case AnnotationTypes.or:\r\n case AnnotationTypes.not:\r\n validators.push(LOGICAL_VALIDATORS[propertyValidator.annotationType](propertyValidator.config))\r\n break;\r\n default:\r\n validators.push(APP_VALIDATORS[propertyValidator.annotationType](propertyValidator.config))\r\n break;\r\n }\r\n }\r\n if (propValidationConfig)\r\n this.additionalValidation(validators, propValidationConfig);\r\n if (this.currentFormGroupPropOtherValidator[property.name])\r\n this.currentFormGroupPropOtherValidator[property.name].forEach(t => { validators.push(t); })\r\n return validators;\r\n }\r\n\r\n private additionalValidation(validations: any[], propValidationConfig: PropValidationConfig | any) {\r\n for (var col in AnnotationTypes) {\r\n if (propValidationConfig[AnnotationTypes[col]] && col != \"custom\") {\r\n validations.push(APP_VALIDATORS[AnnotationTypes[col]](propValidationConfig[AnnotationTypes[col]]));\r\n }\r\n else if (col == AnnotationTypes.custom && propValidationConfig[AnnotationTypes[col]])\r\n validations.push(propValidationConfig[col]);\r\n }\r\n }\r\n\r\n private getEntity<T>(object: T, formBuilderConfiguration: FormBuilderConfiguration, propertyName: string, isSameObjectConstructor: boolean = false) {\r\n if (formBuilderConfiguration && formBuilderConfiguration.genericEntities && formBuilderConfiguration.genericEntities[propertyName])\r\n return formBuilderConfiguration.genericEntities[propertyName];\r\n return isSameObjectConstructor ? object.constructor : undefined;\r\n }\r\n\r\n private getObjectPropertyInstance(object: { [key: string]: any }, propertyInfo: PropertyInfo, formBuilderConfiguration: FormBuilderConfiguration) {\r\n if (propertyInfo.propertyType == OBJECT_PROPERTY && object[propertyInfo.name])\r\n return object[propertyInfo.name].constructor;\r\n else if (propertyInfo.propertyType == ARRAY_PROPERTY && object[propertyInfo.name] && object[propertyInfo.name].length > 0)\r\n return object[propertyInfo.name][0].constructor;\r\n return this.getEntity(object, formBuilderConfiguration, propertyInfo.name)\r\n\r\n }\r\n\r\n private checkObjectPropAdditionalValidation<T>(instanceContainer: InstanceContainer, object: T, formBuilderConfiguration: FormBuilderConfiguration) {\r\n var props = instanceContainer.properties.filter(t => t.propertyType == OBJECT_PROPERTY || t.propertyType == ARRAY_PROPERTY)\r\n props.forEach(t => {\r\n let entity = t.entity;\r\n if (!t.entity)\r\n entity = this.getObjectPropertyInstance(object, t, formBuilderConfiguration)\r\n if (entity) {\r\n let instance = this.getInstanceContainer(entity, null);\r\n if (instance && instance.conditionalValidationProps) {\r\n for (var key in instance.conditionalValidationProps) {\r\n var prop = instanceContainer.properties.filter(t => t.name == key)[0];\r\n if (prop) {\r\n if (!instanceContainer.conditionalValidationProps)\r\n instanceContainer.conditionalValidationProps = {};\r\n if (!instanceContainer.conditionalValidationProps[key])\r\n instanceContainer.conditionalValidationProps[key] = [];\r\n instance.conditionalValidationProps[key].forEach(x => {\r\n if (t.propertyType != ARRAY_PROPERTY)\r\n instanceContainer.conditionalValidationProps[key].push([t.name, x].join('.'))\r\n else\r\n instanceContainer.conditionalValidationProps[key].push([t.name, x].join('[]'))\r\n })\r\n }\r\n }\r\n }\r\n\r\n }\r\n })\r\n }\r\n\r\n private getObject(model: any | { [key: string]: any }, entityObject?: { [key: string]: any } | FormBuilderConfiguration, formBuilderConfiguration?: FormBuilderConfiguration): { [key: string]: any } {\r\n let json: { [key: string]: any } = {};\r\n\r\n if (typeof model == FUNCTION_STRING)\r\n json.model = model;\r\n\r\n if (typeof model == FUNCTION_STRING && (entityObject instanceof FormBuilderConfiguration)) {\r\n json.entityObject = this.createClassObject(json.model, entityObject)\r\n }\r\n if (entityObject && !(entityObject instanceof FormBuilderConfiguration))\r\n json.entityObject = entityObject;\r\n\r\n if (entityObject instanceof FormBuilderConfiguration && !formBuilderConfiguration)\r\n json.formBuilderConfiguration = entityObject;\r\n else if (!(entityObject instanceof FormBuilderConfiguration) && formBuilderConfiguration) {\r\n json.formBuilderConfiguration = formBuilderConfiguration;\r\n json.entityObject = this.createClassObject(json.model, json.formBuilderConfiguration, json.entityObject)\r\n }\r\n\r\n\r\n if (!entityObject) {\r\n if (typeof model == OBJECT_STRING)\r\n json.model = model.constructor;\r\n json.entityObject = this.createClassObject(json.model, json.formBuilderConfiguration, model)\r\n } else if (model && (entityObject instanceof FormBuilderConfiguration) && (typeof model == OBJECT_STRING)) {\r\n json[MODEL] = model.constructor;\r\n json[ENTITY_OBJECT] = this.createClassObject(json.model, json.formBuilderConfiguration, model)\r\n }\r\n return json;\r\n }\r\n\r\n\r\n\r\n control(value?: any, validators?: ValidatorFn[], asyncValidators?: AsyncValidatorFn[]): IAbstractControl {\r\n return new RxFormControl(value, validators, asyncValidators, {}, {}, '', []);\r\n }\r\n\r\n array(values: [{ [key: string]: any }], validatorConfig?: FormBuilderConfiguration) {\r\n let formArray = this.group({ temp: values }, validatorConfig).get(\"temp\") as FormArray;\r\n var formBuilder = new FormBuilder();\r\n return formBuilder.array(formArray.controls);\r\n }\r\n\r\n group(groupObject: { [key: string]: any }, validatorConfig?: FormBuilderConfiguration): FormGroup {\r\n let modelInstance = super.createInstance();\r\n let entityObject = {};\r\n this.formGroupPropOtherValidator = {};\r\n this.currentFormGroupPropOtherValidator = this.formGroupPropOtherValidator;\r\n this.createValidatorFormGroup(groupObject, entityObject, modelInstance, validatorConfig);\r\n this.currentFormGroupPropOtherValidator = this.formGroupPropOtherValidator;\r\n this.isGroupCalled = true;\r\n let formGroup = this.formGroup(modelInstance.constructor, entityObject, validatorConfig);\r\n this.isGroupCalled = false;\r\n this.formGroupPropOtherValidator = {};\r\n this.currentFormGroupPropOtherValidator = this.formGroupPropOtherValidator;\r\n this.formGroupPropOtherValidator = {};\r\n return formGroup;\r\n }\r\n\r\n private applyAllPropValidator(propName: string, validatorConfig: FormBuilderConfiguration, modelInstance: any) {\r\n if (validatorConfig && validatorConfig.applyAllProps) {\r\n if (!(validatorConfig.excludeProps && validatorConfig.excludeProps.length > 0 && validatorConfig.excludeProps.indexOf(propName) == -1)) {\r\n validatorConfig.applyAllProps.forEach((t: any) => {\r\n if (t.name == RX_WEB_VALIDATOR) {\r\n t(propName, modelInstance)\r\n } else {\r\n if (!this.currentFormGroupPropOtherValidator[propName])\r\n this.currentFormGroupPropOtherValidator[propName] = [];\r\n this.currentFormGroupPropOtherValidator[propName].push(t)\r\n }\r\n })\r\n }\r\n }\r\n }\r\n\r\n private dynamicValidationPropCheck(propName: string, validatorConfig: FormBuilderConfiguration) {\r\n return (validatorConfig == undefined) ? true : (!validatorConfig.dynamicValidationConfigurationPropertyName) ? true : validatorConfig.dynamicValidationConfigurationPropertyName == propName ? false : true;\r\n }\r\n\r\n private isNotObject(value) {\r\n return value instanceof Date || value === null || typeof value != OBJECT_STRING;\r\n }\r\n\r\n private createValidatorFormGroup(groupObject: { [key: string]: any }, entityObject: { [key: string]: any }, modelInstance: any, validatorConfig: FormBuilderConfiguration) {\r\n for (var propName in groupObject) {\r\n\r\n var prop = groupObject[propName];\r\n if (prop instanceof Array && prop.length > 0 && this.isNotObject(prop[0])) {\r\n let propValidators = (prop.length > 1 && prop[1] instanceof Array) ? prop[1] : (prop.length == 2) ? [prop[1]] : [];\r\n let propertyAdded: boolean = false;\r\n for (var i = 0; i < propValidators.length; i++) {\r\n if (propValidators[i].name == RX_WEB_VALIDATOR) {\r\n propValidators[i](propName, modelInstance);\r\n propertyAdded = true;\r\n }\r\n else {\r\n if (!this.currentFormGroupPropOtherValidator[propName])\r\n this.currentFormGroupPropOtherValidator[propName] = [];\r\n this.currentFormGroupPropOtherValidator[propName].push(propValidators[i])\r\n }\r\n }\r\n if (!propertyAdded)\r\n defaultContainer.initPropertyObject(propName, PROPERTY, undefined, typeof modelInstance == OBJECT_STRING ? modelInstance : { constructor: modelInstance });\r\n this.applyAllPropValidator(propName, validatorConfig, modelInstance)\r\n } else if (prop === null || prop === undefined || typeof prop == STRING || typeof prop == NUMBER || typeof prop == BOOLEAN || prop instanceof Date) {\r\n defaultContainer.initPropertyObject(propName, PROPERTY, undefined, typeof modelInstance == OBJECT_STRING ? modelInstance : { constructor: modelInstance });\r\n this.applyAllPropValidator(propName, validatorConfig, modelInstance)\r\n } else if (prop instanceof Array) {\r\n if (prop instanceof FormArray) {\r\n entityObject[propName] = prop;\r\n } else {\r\n let propModelInstance = super.createInstance();\r\n if (typeof modelInstance == \"function\")\r\n modelInstance.constructor = modelInstance;\r\n defaultContainer.initPropertyObject(propName, ARRAY_PROPERTY, propModelInstance.constructor, modelInstance);\r\n entityObject[propName] = [];\r\n for (let row of prop) {\r\n let jObject = {};\r\n entityObject[propName].push(jObject)\r\n this.createValidatorFormGroup(row, jObject, propModelInstance.constructor, validatorConfig);\r\n }\r\n\r\n }\r\n\r\n } else if (typeof prop == OBJECT_STRING && !(prop instanceof FormControl || prop instanceof RxFormControl)) {\r\n\r\n let formGroup: any = (prop instanceof FormArray) ? prop.controls[0] : prop\r\n if (!formGroup.model && (prop instanceof FormGroup || prop instanceof RxFormGroup)) {\r\n formGroup = this.group(formGroup.controls);\r\n }\r\n if (prop instanceof FormGroup || prop instanceof RxFormGroup) {\r\n entityObject[propName] = prop;\r\n defaultContainer.initPropertyObject(propName, OBJECT_PROPERTY, formGroup.model, modelInstance);\r\n } else if (prop instanceof FormArray) {\r\n entityObject[propName] = prop;\r\n defaultContainer.initPropertyObject(propName, ARRAY_PROPERTY, formGroup.model, modelInstance);\r\n } else {\r\n if (this.dynamicValidationPropCheck(propName, validatorConfig)) {\r\n this.formGroupPropOtherValidator[propName] = {};\r\n this.currentFormGroupPropOtherValidator = this.formGroupPropOtherValidator[propName];\r\n let propModelInstance = super.createInstance();\r\n entityObject[propName] = {};\r\n entityObject[propName].constructor = propModelInstance.constructor;\r\n defaultContainer.initPropertyObject(propName, OBJECT_PROPERTY, entityObject[propName].constructor, modelInstance.constructor == Function ? { constructor: modelInstance } : modelInstance);\r\n let objectValidationConfig = this.getValidatorConfig(validatorConfig, groupObject, propName + \".\")\r\n this.createValidatorFormGroup(groupObject[propName], entityObject[propName], entityObject[propName].constructor, objectValidationConfig);\r\n } else entityObject[propName] = groupObject[propName];\r\n }\r\n\r\n }\r\n if (typeof prop == STRING || typeof prop == NUMBER || typeof prop == BOOLEAN || prop instanceof Date) {\r\n entityObject[propName] = prop\r\n }\r\n else if ((prop && prop.length > 0 && this.isNotObject(prop[0]) && !(prop instanceof FormControl || prop instanceof RxFormControl) && !(prop instanceof FormArray))) {\r\n entityObject[propName] = prop[0]\r\n } else if (prop instanceof FormArray) {\r\n entityObject[propName] = prop\r\n } else if (prop instanceof FormControl || prop instanceof RxFormControl) {\r\n entityObject[propName] = prop\r\n defaultContainer.initPropertyObject(propName, PROPERTY, undefined, modelInstance.constructor ? modelInstance : { constructor: modelInstance });\r\n }\r\n }\r\n }\r\n\r\n private getValidatorConfig(validatorConfig: FormBuilderConfiguration, entityObject: any, rootPropertyName: string, arrayPropertyName?: string): any {\r\n let excludeProps = [];\r\n let includeProps = [];\r\n let ignoreUndefinedProps = [];\r\n\r\n if (!validatorConfig) return {};\r\n\r\n const validationProps = this.getObjectForProperty(validatorConfig.dynamicValidation, rootPropertyName, arrayPropertyName);\r\n const abstractControlOptions = this.getObjectForProperty(validatorConfig.abstractControlOptions, rootPropertyName, arrayPropertyName);\r\n\r\n if (validatorConfig.excludeProps)\r\n excludeProps = this.getProps(validatorConfig.excludeProps, rootPropertyName);\r\n if (validatorConfig.includeProps)\r\n includeProps = this.getProps(validatorConfig.includeProps, rootPropertyName);\r\n if (validatorConfig.ignoreUndefinedProps)\r\n ignoreUndefinedProps = this.getProps(validatorConfig.ignoreUndefinedProps, rootPropertyName, true);\r\n if (!Object.keys(abstractControlOptions).length && rootPropertyName.endsWith('.') && validatorConfig.abstractControlOptions && validatorConfig.abstractControlOptions[rootPropertyName.substring(0, rootPropertyName.length - 1)])\r\n abstractControlOptions['global'] = validatorConfig.abstractControlOptions[rootPropertyName.substring(0, rootPropertyName.length - 1)];\r\n\r\n const dynamicValidation = (validatorConfig.dynamicValidationConfigurationPropertyName && entityObject[validatorConfig.dynamicValidationConfigurationPropertyName]) ? entityObject[validatorConfig.dynamicValidationConfigurationPropertyName] : validationProps;\r\n return { ignoreUndefinedProps: ignoreUndefinedProps, includeProps: includeProps, dynamicValidation: dynamicValidation, excludeProps: excludeProps, abstractControlOptions: abstractControlOptions }\r\n }\r\n\r\n private getObjectForProperty<T>(rootObject: { [key: string]: T }, rootPropertyName: string, arrayPropertyName?: string): { [key: string]: T } {\r\n const result: { [key: string]: T } = {};\r\n\r\n for (let propName in rootObject) {\r\n if (!propName.startsWith(rootPropertyName) && (!arrayPropertyName || !propName.startsWith(arrayPropertyName)))\r\n continue;\r\n let splitProp = propName.split(\".\", 2)[1];\r\n if (!splitProp)\r\n continue;\r\n result[splitProp] = rootObject[propName];\r\n }\r\n\r\n return result;\r\n }\r\n\r\n private getProps(properties: string[], rootPropertyName: string, isIgnoreProp: boolean = false) {\r\n let props: string[] = [];\r\n for (let prop of properties) {\r\n if (prop.indexOf(rootPropertyName) != -1) {\r\n let splitProps = prop.split(\".\");\r\n if (splitProps.length == 2) {\r\n props.push(splitProps[1]);\r\n } else if (splitProps.length > 2) {\r\n splitProps.splice(0, 1);\r\n props.push(splitProps.join(\".\"))\r\n }\r\n }\r\n }\r\n if (isIgnoreProp && properties.filter(x => x == rootPropertyName.replace('.', '')).length == 1)\r\n props.push(':self:');\r\n\r\n return props;\r\n }\r\n\r\n formGroup<T>(model: Type<T> | { [key: string]: any }, entityObject?: { [key: string]: any } | FormBuilderConfiguration, formBuilderConfiguration?: FormBuilderConfiguration): RxFormGroup | FormGroup | AppFormGroup<T> {\r\n let json = this.getObject(model, entityObject, formBuilderConfiguration);\r\n model = json.model;\r\n entityObject = json.entityObject;\r\n if (entityObject.constructor != model && !this.isGroupCalled) {\r\n entityObject = json.entityObject = this.updateObject(model, json.entityObject, formBuilderConfiguration);\r\n }\r\n formBuilderConfiguration = json.formBuilderConfiguration;\r\n if (formBuilderConfiguration)\r\n this.extractExpressions(formBuilderConfiguration);\r\n let instanceContainer: InstanceContainer = this.getInstanceContainer(model, entityObject);\r\n this.checkObjectPropAdditionalValidation(instanceContainer, entityObject, formBuilderConfiguration);\r\n let formGroupObject = {};\r\n let extendedProperties = {};\r\n let formChildGroup = undefined;\r\n let formArrayGroup = undefined;\r\n var additionalValidations: { [key: string]: PropValidationConfig } = {};\r\n instanceContainer.properties.forEach(property => {\r\n let isIncludeProp = true;\r\n if (formBuilderConfiguration) {\r\n if (formBuilderConfiguration.excludeProps && formBuilderConfiguration.excludeProps.length > 0)\r\n isIncludeProp = formBuilderConfiguration.excludeProps.indexOf(property.name) == -1\r\n if (formBuilderConfiguration.dynamicValidation)\r\n additionalValidations = formBuilderConfiguration.dynamicValidation;\r\n if (formBuilderConfiguration.includeProps && formBuilderConfiguration.includeProps.length > 0)\r\n isIncludeProp = formBuilderConfiguration.includeProps.indexOf(property.name) != -1\r\n if (formBuilderConfiguration.ignoreUndefinedProps && formBuilderConfiguration.ignoreUndefinedProps.length > 0) {\r\n isIncludeProp = !(property.propertyType == PROPERTY && !RegexValidator.isNotBlank(json.entityObject[property.name]) && (formBuilderConfiguration.ignoreUndefinedProps.indexOf(property.name) !== -1 || formBuilderConfiguration.ignoreUndefinedProps.indexOf(\":self:\") !== -1));\r\n }\r\n\r\n }\r\n\r\n if (property.ignore)\r\n isIncludeProp = !property.ignore.call(json.entityObject, json.entityObject);\r\n if (isIncludeProp) {\r\n switch (property.propertyType) {\r\n case PROPERTY:\r\n if (!(entityObject[property.name] instanceof FormControl || entityObject[property.name] instanceof RxFormControl)) {\r\n let propertyValidators = instanceContainer.propertyAnnotations.filter(t => t.propertyName == property.name);\r\n let sanitizeValue = super.sanitizeValue(instanceContainer, property.name, super.getDefaultValue(property, entityObject[property.name], formBuilderConfiguration), json.entityObject, Object.assign({}, json.entityObject));\r\n if (entityObject[property.name] === undefined && sanitizeValue)\r\n entityObject[property.name] = sanitizeValue;\r\n let validators = this.addFormControl(property, propertyValidators, additionalValidations[property.name], instanceContainer, entityObject);\r\n let abstractControlOptions: AbstractControlOptions = { validators: validators, asyncValidators: this.addAsyncValidation(property, propertyValidators, additionalValidations[property.name]) };\r\n abstractControlOptions = this.getAbstractControlOptions(property.name, formBuilderConfiguration, abstractControlOptions)\r\n if (property.updateOn && !abstractControlOptions.updateOn)\r\n abstractControlOptions.updateOn = property.updateOn;\r\n formGroupObject[property.name] = new RxFormControl(sanitizeValue, abstractControlOptions, [], json.entityObject, Object.assign({}, json.entityObject), property.name, instanceContainer.sanitizers[property.name]);\r\n this.isNested = false;\r\n } else\r\n formGroupObject[property.name] = super.getDefaultValue(property, entityObject[property.name], formBuilderConfiguration);\r\n extendedProperties[property.name] = true;\r\n break;\r\n case OBJECT_PROPERTY:\r\n let objectValue = entityObject[property.name];\r\n if (objectValue && objectValue instanceof Object && !(objectValue instanceof FormGroup || objectValue instanceof RxFormGroup)) {\r\n this.isNestedBinding = this.isNested = true;\r\n if (instanceContainer && instanceContainer.conditionalObjectProps)\r\n this.conditionalObjectProps = instanceContainer.conditionalObjectProps.filter(t => t.objectPropName == property.name)\r\n if (this.conditionalValidationInstance && this.conditionalValidationInstance.conditionalObjectProps)\r\n this.builderConfigurationConditionalObjectProps = this.conditionalValidationInstance.conditionalObjectProps.filter(t => t.objectPropName == property.name);\r\n if (this.formGroupPropOtherValidator[property.name])\r\n this.currentFormGroupPropOtherValidator = this.formGroupPropOtherValidator[property.name];\r\n let objectValidationConfig = this.getValidatorConfig(formBuilderConfiguration, objectValue, `${property.name}.`)\r\n let entity = property.entityProvider ? property.entityProvider.call(entityObject) : undefined;\r\n formGroupObject[property.name] = this.formGroup(entity || property.entity || this.getEntity(objectValue, formBuilderConfiguration, property.name, true), objectValue, objectValidationConfig);\r\n this.conditionalObjectProps = [];\r\n this.builderConfigurationConditionalObjectProps = [];\r\n this.isNestedBinding = this.isNested = false;\r\n } else if (objectValue instanceof FormGroup || objectValue instanceof RxFormGroup)\r\n formGroupObject[property.name] = objectValue;\r\n break;\r\n case ARRAY_PROPERTY:\r\n let arrayObjectValue = entityObject[property.name];\r\n if (arrayObjectValue && arrayObjectValue instanceof Array && !(arrayObjectValue instanceof FormArray)) {\r\n this.isNestedBinding = this.isNested = true;\r\n var formArrayGroup = [];\r\n let index = 0;\r\n let entity = property.entityProvider ? property.entityProvider.call(entityObject) : undefined;\r\n let objectValidationConfig = null;\r\n for (let subObject of arrayObjectValue) {\r\n if (instanceContainer && instanceContainer.conditionalObjectProps)\r\n this.conditionalObjectProps = instanceContainer.conditionalObjectProps.filter(t => t.objectPropName == property.name && t.arrayIndex == index)\r\n if (this.conditionalValidationInstance && this.conditionalValidationInstance.conditionalObjectProps)\r\n this.builderConfigurationConditionalObjectProps = this.conditionalValidationInstance.conditionalObjectProps.filter(t => t.objectPropName == property.name && t.arrayIndex == index);\r\n if (this.formGroupPropOtherValidator[property.name])\r\n this.currentFormGroupPropOtherValidator = this.formGroupPropOtherValidator[property.name];\r\n objectValidationConfig = this.getValidatorConfig(formBuilderConfiguration, subObject, `${property.name}.`, `${property.name}[${index}].`)\r\n formArrayGroup.push(this.formGroup(entity || property.entity || this.getEntity(subObject, formBuilderConfiguration, property.name, true), subObject, objectValidationConfig));\r\n index++;\r\n this.conditionalObjectProps = [];\r\n this.builderConfigurationConditionalObjectProps = [];\r\n }\r\n let abstractControlOptions = this.getAbstractControlOptions(property.name, formBuilderConfiguration , { })\r\n formGroupObject[property.name] = new RxFormArray(arrayObjectValue, formArrayGroup, abstractControlOptions, null, property.arrayConfig);\r\n if (ReactiveFormConfig.autoInstancePush) {\r\n arrayObjectValue.push = (instance: any[]): number => { let formGroup = this.formGroup(instance.constructor, instance, objectValidationConfig); formGroupObject[property.name].push(formGroup, { isAddedInstance: true }); return 0; };\r\n arrayObjectValue.splice = (start, deleteCount): any[] => {\r\n let end = (start + deleteCount) - 1;\r\n for (var i = start; i <= end; i++) {\r\n formGroupObject[property.name].removeAt(i, { isRemovedInstance: true })\r\n }\r\n return [];\r\n };\r\n }\r\n this.isNestedBinding = this.isNested = false;\r\n } else if (arrayObjectValue instanceof FormArray)\r\n formGroupObject[property.name] = arrayObjectValue;\r\n else if (property.arrayConfig && property.arrayConfig.createBlank)\r\n formGroupObject[property.name] = new RxFormArray([], [], null, null, property.arrayConfig)\r\n break;\r\n }\r\n }\r\n\r\n })\r\n if (!this.isNested) {\r\n this.conditionalValidationInstance = {};\r\n this.builderConfigurationConditionalObjectProps = [];\r\n }\r\n let abstractControlOptions: AbstractControlOptions = {\r\n validators: [],\r\n asyncValidators: [],\r\n updateOn: formBuilderConfiguration && formBuilderConfiguration.abstractControlOptions && formBuilderConfiguration.abstractControlOptions['global']\r\n ? formBuilderConfiguration.abstractControlOptions['global']\r\n : undefined\r\n };\r\n abstractControlOptions = this.getAbstractControlOptions(\"global\", formBuilderConfiguration, abstractControlOptions);\r\n let formGroup = new RxFormGroup(json.model, json.entityObject, formGroupObject, abstractControlOptions);\r\n if (defaultContainer.isExperimental) {\r\n json.entityObject[\"formGroup\"] = formGroup;\r\n this.overrideProperties(formGroup, json.entityObject, extendedProperties);\r\n }\r\n if (!this.isNestedBinding && !this.isGroupCalled)\r\n formGroup.refreshDisable();\r\n return formGroup;\r\n\r\n }\r\n\r\n private overrideProperties(formGroup: RxFormGroup, entityObject: any, properties: { [key: string]: boolean }) {\r\n Object.keys(properties).forEach(t => {\r\n this.overrideProp(entityObject, t, formGroup);\r\n })\r\n }\r\n private getAbstractControlOptions(name: string, formBuilderConfiguration: FormBuilderConfiguration, abstractControlOptions: AbstractControlOptions) {\r\n if (formBuilderConfiguration && formBuilderConfiguration.abstractControlOptions && formBuilderConfiguration.abstractControlOptions[name])\r\n abstractControlOptions.updateOn = formBuilderConfiguration.abstractControlOptions[name];\r\n\r\n const controlOptions = formBuilderConfiguration ? formBuilderConfiguration.baseAbstractControlOptions : null;\r\n if (controlOptions && controlOptions[name]) {\r\n if (controlOptions[name].updateOn)\r\n abstractControlOptions.updateOn = controlOptions[name].updateOn;\r\n if (controlOptions[name].validators) {\r\n if (Array.isArray(controlOptions[name].validators))\r\n (<ValidatorFn[]>controlOptions[name].validators).forEach(validator => (<ValidatorFn[]>abstractControlOptions.validators).push(validator))\r\n else\r\n (<ValidatorFn[]>abstractControlOptions.validators).push(<ValidatorFn>controlOptions[name].validators);\r\n }\r\n\r\n if (controlOptions[name].asyncValidators) {\r\n if (Array.isArray(controlOptions[name].asyncValidators))\r\n (<ValidatorFn[]>controlOptions[name].asyncValidators).forEach(validator => (<ValidatorFn[]>abstractControlOptions.asyncValidators).push(validator))\r\n else\r\n (<ValidatorFn[]>abstractControlOptions.asyncValidators).push(<ValidatorFn>controlOptions[name].validators);\r\n }\r\n }\r\n return abstractControlOptions;\r\n }\r\n private overrideProp(entityObject: any, propName: string, formGroup: RxFormGroup) {\r\n let descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(entityObject), propName);\r\n let value = entityObject[propName];\r\n let oldValue = null;\r\n Object.defineProperty(entityObject, propName, {\r\n get: () => { return descriptor ? descriptor.get.call(entityObject) : value },\r\n set: (v) => {\r\n value = v;\r\n if (oldValue != v) {\r\n if (descriptor)\r\n descriptor.set.call(entityObject, v);\r\n if (!formGroup.changing && formGroup.controls[propName]) {\r\n formGroup.controls[propName].setValue(v);\r\n }\r\n }\r\n oldValue = v;\r\n }\r\n })\r\n }\r\n}\r\n","import { FormBuilder, FormGroup, AbstractControlOptions } from \"@angular/forms\";\r\nimport { RxFormBuilder } from \"./rx-form-builder\";\r\nimport { FUNCTION_STRING } from \"../const/app.const\"\r\nimport { Options } from \"../models/interface/options\"\r\nimport { RxFormGroup } from \"./rx-form-group\";\r\nimport { IFormGroup } from \"../models/interface/i-form-group\";\r\nimport { Injectable } from \"@angular/core\";\r\n@Injectable()\r\nexport class TypedFormBuilder {\r\n private formBuilder: FormBuilder;\r\n private rxFormBuilder: RxFormBuilder;\r\n constructor() {\r\n this.formBuilder = new FormBuilder();\r\n this.rxFormBuilder = new RxFormBuilder();\r\n }\r\n\r\n group<T>(controlsConfig: {\r\n [key: string]: any;\r\n }, options?: AbstractControlOptions | {\r\n [key: string]: any;\r\n } | null): FormGroup | T {\r\n let paramOptions = <Options>options || <any>{};\r\n if (typeof controlsConfig == FUNCTION_STRING)\r\n return !(paramOptions && paramOptions.isInstance) ? this.rxFormBuilder.formGroup(controlsConfig, paramOptions.data, paramOptions.config) as IFormGroup<T> : (<RxFormGroup>this.rxFormBuilder.formGroup(controlsConfig, paramOptions.data, paramOptions.config)).modelInstance as T;\r\n return this.formBuilder.group(controlsConfig,options);\r\n }\r\n}","import { CommonModule, DecimalPipe } from \"@angular/common\";\r\nimport { ModuleWithProviders, NgModule } from \"@angular/core\";\r\nimport { FormBuilder, FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { defaultContainer } from \"../core/defaultContainer\";\r\nimport { ControlHostDirective } from '../directives/control-host.directive';\r\nimport { HtmlControlTemplateDirective } from '../directives/html-control-template.directive';\r\nimport { RxwebFormDirective } from \"../directives/rx-form.directive\";\r\nimport { AsyncValidationDirective } from \"../directives/template-validations/async-validation.directive\";\r\nimport { FileControlDirective } from \"../directives/template-validations/file-control.directive\";\r\nimport { ImageFileControlDirective } from \"../directives/template-validations/image-file-control.directive\";\r\nimport { RxFormControlDirective } from \"../directives/template-validations/rxformcontrol.directive\";\r\nimport { DecimalProvider } from \"../domain/element-processor/decimal.provider\";\r\nimport { ReactiveFormConfig } from \"../util/reactive-form-config\";\r\nimport { RxFormBuilder } from \"./rx-form-builder\";\r\nimport { TypedFormBuilder } from \"./typed-form-builder\";\r\n@NgModule({\r\n declarations: [RxwebFormDirective, HtmlControlTemplateDirective, ControlHostDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective, AsyncValidationDirective],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule],\r\n providers: [RxFormBuilder, DecimalProvider, DecimalPipe],\r\n exports: [AsyncValidationDirective, RxwebFormDirective, HtmlControlTemplateDirective, RxFormControlDirective, FileControlDirective, ImageFileControlDirective]\r\n})\r\nexport class RxReactiveFormsModule {\r\n static forRoot(): ModuleWithProviders<RxReactiveFormsModule> { return { ngModule: RxReactiveFormsModule, providers: [] }; }\r\n}\r\n\r\n// Experimental\r\n@NgModule({\r\n declarations: [],\r\n imports: [CommonModule, FormsModule, ReactiveFormsModule, RxReactiveFormsModule.forRoot()],\r\n providers: [{ provide: FormBuilder, useClass: TypedFormBuilder }, TypedFormBuilder],\r\n exports: [ReactiveFormsModule, FormsModule, ReactiveFormsModule]\r\n})\r\nexport class ReactiveTypedFormsModule {\r\n constructor() {\r\n defaultContainer.isExperimental = true;\r\n ReactiveFormConfig.autoInstancePush = true;\r\n }\r\n static forRoot(): ModuleWithProviders<ReactiveTypedFormsModule> { return { ngModule: ReactiveTypedFormsModule, providers: [] }; }\r\n}\r\n","import {\r\n ValidatorFn, AsyncValidatorFn\r\n} from \"@angular/forms\";\r\nimport { defaultContainer } from \"../core/defaultContainer\"\r\nimport { STRING } from '../const/validator.const';\r\nimport { ApplicationUtil } from '../util/app-util';\r\nimport { RX_WEB_VALIDATOR } from \"../const\";\r\nimport { Observable } from \"rxjs\";\r\n\r\nexport function baseValidator(config: any, type: any, validator: Function): ValidatorFn {\r\n var rxwebValidator = (control: any, target?: object): { [key: string]: any } => {\r\n if (typeof control == STRING)\r\n defaultContainer.init(target, 0, control, type, config,false);\r\n else{\r\n if (config && (!control.validatorConfig || !control.validatorConfig[type]))\r\n ApplicationUtil.configureControl(control, config, type);\r\n return validator(control);\r\n }\r\n return null\r\n }\r\n Object.defineProperty(rxwebValidator, \"name\", { value: RX_WEB_VALIDATOR });\r\n return rxwebValidator;\r\n}\r\n\r\nexport function baseAsyncValidatorExtension(config: any, type: any, validator: Function): AsyncValidatorFn {\r\n var rxwebValidator = (control: any, target?: object): Observable<{ [key: string]: any }> => {\r\n if (typeof control == STRING)\r\n defaultContainer.init(target, 0, control, type, config, true);\r\n else {\r\n if (config && (!control.validatorConfig || !control.validatorConfig[type]))\r\n ApplicationUtil.configureControl(control, config, type);\r\n return validator(control);\r\n }\r\n return null\r\n }\r\n Object.defineProperty(rxwebValidator, \"name\", { value: RX_WEB_VALIDATOR });\r\n return rxwebValidator;\r\n}\r\n","import {\r\n ValidatorFn, AsyncValidatorFn\r\n} from \"@angular/forms\";\r\nimport { AlphaConfig } from \"../models/config/alpha-config\";\r\nimport { alphaValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension} from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nexport function alphaValidatorExtension(config?: AlphaConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.alpha, alphaValidator(config))\r\n}\r\n\r\nexport function alphaAsyncValidatorExtension(config?: AlphaConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.alpha, baseAsyncValidator(config, AnnotationTypes.alpha));\r\n}\r\n","import {\r\n ValidatorFn, AsyncValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { allOfValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function allOfValidatorExtension(config?: ArrayConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.allOf, allOfValidator(config))\r\n}\r\nexport function allOfAsyncValidatorExtension(config?: ArrayConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.allOf, baseAsyncValidator(config, AnnotationTypes.allOf));\r\n}","import {\r\n AsyncValidatorFn , ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { AlphaConfig } from '../models/config/alpha-config';\r\nimport { alphaNumericValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function alphaNumericValidatorExtension(config?: AlphaConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.alphaNumeric, alphaNumericValidator(config))\r\n}\r\nexport function alphaNumericAsyncValidatorExtension(config?: AlphaConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.alphaNumeric, baseAsyncValidator(config, AnnotationTypes.alphaNumeric));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ChoiceConfig } from \"../models/config/choice-config\";\r\nimport { choiceValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function choiceValidatorExtension(config?: ChoiceConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.choice, choiceValidator(config))\r\n}\r\nexport function choiceAsyncValidatorExtension(config?: ChoiceConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.choice, baseAsyncValidator(config, AnnotationTypes.choice));\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { CompareConfig } from \"../models/config/compare-config\";\r\nimport { compareValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function compareValidatorExtension(config?: CompareConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.compare, compareValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ContainsConfig } from \"../models/config/contains-config\";\r\nimport { containsValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function containsValidatorExtension(config?: ContainsConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.contains, containsValidator(config))\r\n}\r\nexport function containsAsyncValidatorExtension(config?: ContainsConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.contains, baseAsyncValidator(config, AnnotationTypes.contains));\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { CreditCardConfig } from \"../models/config/credit-card-config\";\r\nimport { creditCardValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function creditCardValidatorExtension(config?: CreditCardConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.creditCard, creditCardValidator(config))\r\n}\r\nexport function creditCardAsyncValidatorExtension(config?: CreditCardConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.creditCard, baseAsyncValidator(config, AnnotationTypes.creditCard));\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { DifferentConfig } from \"../models/config/compare-config\";\r\nimport { differentValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function differentValidatorExtension(config?: DifferentConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.different, differentValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { DigitConfig } from \"../models/config/digit-config\";\r\nimport { digitValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function digitValidatorExtension(config?: DigitConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.digit, digitValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { EmailConfig } from \"../models/config/email-config\";\r\nimport { emailValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function emailValidatorExtension(config?: EmailConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.email, emailValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { evenValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function evenValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.even, evenValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { FactorConfig } from \"../models/config/factor-config\";\r\nimport { factorValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function factorValidatorExtension(config?: FactorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.factor, factorValidator(config))\r\n}\r\nexport function factorAsyncValidatorExtension(config?: FactorConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.factor, baseAsyncValidator(config, AnnotationTypes.factor));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { greaterThanEqualToValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function greaterThanEqualToValidatorExtension(config?: RelationalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.greaterThanEqualTo, greaterThanEqualToValidator(config))\r\n}\r\nexport function greaterThanEqualToAsyncValidatorExtension(config?: RelationalOperatorConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.greaterThanEqualTo, baseAsyncValidator(config, AnnotationTypes.greaterThanEqualTo));\r\n}"," import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { greaterThanValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function greaterThanValidatorExtension(config?: RelationalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.greaterThan, greaterThanValidator(config))\r\n}\r\nexport function greaterThanAsyncValidatorExtension(config?: RelationalOperatorConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.greaterThan, baseAsyncValidator(config, AnnotationTypes.greaterThan));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { HexColorConfig } from \"../models/config/hex-color-config\";\r\nimport { hexColorValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function hexColorValidatorExtension(config?: HexColorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.hexColor, hexColorValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { DefaultConfig } from \"../models/config/default-config\";\r\nimport { jsonValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function jsonValidatorExtension(config?: DefaultConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.json, jsonValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { leapYearValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function leapYearValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.leapYear, leapYearValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { lessThanEqualToValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function lessThanEqualToValidatorExtension(config?: RelationalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.lessThanEqualTo, lessThanEqualToValidator(config))\r\n}\r\nexport function lessThanEqualToAsyncValidatorExtension(config?: RelationalOperatorConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.lessThanEqualTo, baseAsyncValidator(config, AnnotationTypes.lessThanEqualTo));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { RelationalOperatorConfig } from \"../models/config/relational-operator-config\";\r\nimport { lessThanValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function lessThanValidatorExtension(config?: RelationalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.lessThan, lessThanValidator(config))\r\n}\r\nexport function lessThanAsyncValidatorExtension(config?: RelationalOperatorConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.lessThan, baseAsyncValidator(config, AnnotationTypes.lessThan));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { lowercaseValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function lowerCaseValidatorExtension(config?: MessageConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.lowerCase, lowercaseValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { macValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function macValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.mac, macValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MaxDateConfig } from \"../models/config/max-date-config\";\r\nimport { maxDateValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function maxDateValidatorExtension(config?: MaxDateConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.maxDate, maxDateValidator(config))\r\n}\r\nexport function maxDateAsyncValidatorExtension(config?: MaxDateConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.maxDate, baseAsyncValidator(config, AnnotationTypes.maxDate));\r\n}","import {\r\n ValidatorFn, AsyncValidatorFn\r\n} from \"@angular/forms\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { maxLengthValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function maxLengthValidatorExtension(config?: NumberConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.maxLength, maxLengthValidator(config))\r\n}\r\nexport function maxLengthAsyncValidatorExtension(config?: NumberConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.maxLength, baseAsyncValidator(config, AnnotationTypes.maxLength));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { maxNumberValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function maxNumberValidatorExtension(config?: NumberConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.maxNumber, maxNumberValidator(config))\r\n}\r\nexport function maxNumberAsyncValidatorExtension(config?: NumberConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.maxNumber, baseAsyncValidator(config, AnnotationTypes.maxNumber));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MinDateConfig } from \"../models/config/min-date-config\";\r\nimport { minDateValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function minDateValidatorExtension(config?: MinDateConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.minDate, minDateValidator(config))\r\n}\r\nexport function minDateAsyncValidatorExtension(config?: MinDateConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.minDate, baseAsyncValidator(config, AnnotationTypes.minDate));\r\n}","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { minLengthValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function minLengthValidatorExtension(config?: NumberConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.minLength, minLengthValidator(config))\r\n}\r\nexport function minLengthAsyncValidatorExtension(config?: NumberConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.minLength, baseAsyncValidator(config, AnnotationTypes.minLength));\r\n}","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { NumberConfig } from \"../models/config/number-config\";\r\nimport { minNumberValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function minNumberValidatorExtension(config?: NumberConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.minNumber, minNumberValidator(config))\r\n}\r\nexport function minNumberAsyncValidatorExtension(config?: NumberConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.minNumber, baseAsyncValidator(config, AnnotationTypes.minNumber));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { noneOfValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function noneOfValidatorExtension(config?: ArrayConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.noneOf, noneOfValidator(config))\r\n}\r\nexport function noneOfAsyncValidatorExtension(config?: ArrayConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.noneOf, baseAsyncValidator(config, AnnotationTypes.noneOf));\r\n}","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { NumericConfig } from \"../models/config/numeric-config\";\r\nimport { numericValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function numericValidatorExtension(config?: NumericConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.numeric, numericValidator(config))\r\n}\r\nexport function numericAsyncValidatorExtension(config?: NumericConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.numeric, baseAsyncValidator(config, AnnotationTypes.numeric));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { oddValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function oddValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.odd, oddValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ArrayConfig } from \"../models/config/array-config\";\r\nimport { oneOfValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function oneOfValidatorExtension(config?: ArrayConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.oneOf, oneOfValidator(config))\r\n}\r\nexport function oneOfAsyncValidatorExtension(config?: ArrayConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.oneOf, baseAsyncValidator(config, AnnotationTypes.oneOf));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { PasswordConfig } from \"../models/config/password-config\";\r\nimport { passwordValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function passwordcValidatorExtension(config: PasswordConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.password, passwordValidator(config))\r\n}\r\nexport function passwordAsyncValidatorExtension(config?: PasswordConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.password, baseAsyncValidator(config, AnnotationTypes.password));\r\n}","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { PatternConfig } from \"../models/config/pattern-config\";\r\nimport { patternValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function patternValidatorExtension(config?: PatternConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.pattern, patternValidator(config))\r\n}\r\nexport function patternAsyncValidatorExtension(config?: PatternConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.pattern, baseAsyncValidator(config, AnnotationTypes.pattern));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { RangeConfig } from \"../models/config/range-config\";\r\nimport { rangeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function rangeValidatorExtension(config?: RangeConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.range, rangeValidator(config))\r\n}\r\nexport function rangeAsyncValidatorExtension(config?: RangeConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.range, baseAsyncValidator(config, AnnotationTypes.range));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { requiredValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function requiredValidatorExtension(config?: MessageConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.required, requiredValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { TimeConfig } from \"../models/config/time-config\";\r\nimport { timeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function timeValidatorExtension(config?: TimeConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.time, timeValidator(config))\r\n}\r\nexport function timeAsyncValidatorExtension(config?: TimeConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.time, baseAsyncValidator(config, AnnotationTypes.time));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { uppercaseValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function upperCaseValidatorExtension(config?: MessageConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.upperCase, uppercaseValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { urlValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { UrlConfig } from \"../models/config/url-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function urlValidatorExtension(config?: UrlConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.url, urlValidator(config))\r\n}\r\nexport function urlAsyncValidatorExtension(config?: UrlConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.url, baseAsyncValidator(config, AnnotationTypes.url));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { asciiValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function asciiValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.ascii, asciiValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig} from \"../models/config/base-config\";\r\nimport { dataUriValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function dataUriValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.dataUri, dataUriValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig} from \"../models/config/base-config\";\r\nimport { portValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function portValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.port, portValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig} from \"../models/config/base-config\";\r\nimport { latLongValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function latLongValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.latLong, latLongValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ExtensionConfig} from \"../models/config/extension-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function extensionValidatorExtension(config: ExtensionConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.extension, (control) => { return null })\r\n}\r\nexport function extensionAsyncValidatorExtension(config?: ExtensionConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.extension, baseAsyncValidator(config, AnnotationTypes.extension));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { SizeConfig } from \"../models/config/size-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function fileSizeValidatorExtension(config: SizeConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.fileSize, (control) => { return null })\r\n}\r\nexport function fileSizeAsyncValidatorExtension(config?: SizeConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.fileSize, baseAsyncValidator(config, AnnotationTypes.fileSize));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { DefaultConfig} from \"../models/config/default-config\";\r\nimport { endsWithValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function endsWithValidatorExtension(config: DefaultConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.endsWith, endsWithValidator(config))\r\n}\r\nexport function endsWithAsyncValidatorExtension(config?: DefaultConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.endsWith, baseAsyncValidator(config, AnnotationTypes.endsWith));\r\n}","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { startsWithValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { StringComparisonConfig } from \"../models/config/string-comparison-config\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function startsWithValidatorExtension(config: StringComparisonConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.startsWithWith, startsWithValidator(config))\r\n}\r\nexport function startsWithAsyncValidatorExtension(config?: StringComparisonConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.startsWithWith, baseAsyncValidator(config, AnnotationTypes.startsWith));\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { primeNumberValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function primeNumberValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.primeNumber, primeNumberValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { latitudeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function latitudeValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.latitude, latitudeValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { longitudeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function longitudeValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.longitude, longitudeValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ComposeConfig } from \"../models/config/compose-config\";\r\nimport { composeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function composeValidatorExtension(config?: ComposeConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.compose, composeValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { FileConfig } from \"../models/config/file-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function fileValidatorExtension(config: FileConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.file, (control) => { return null })\r\n}\r\nexport function fileAsyncValidatorExtension(config?: FileConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.file, baseAsyncValidator(config, AnnotationTypes.file));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { CustomConfig } from \"../models/config/custom-config\";\r\nimport { customValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function customValidatorExtension(config?: CustomConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.custom, customValidator(config))\r\n}\r\nexport function customAsyncValidatorExtension(config?: CustomConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.custom, baseAsyncValidator(config, AnnotationTypes.custom));\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { UniqueConfig} from \"../models/config/unique-config\";\r\nimport { uniqueValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function uniqueValidatorExtension(config?: UniqueConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.unique, uniqueValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { ImageConfig } from \"../models/config/image-config\";\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function imageValidatorExtension(config: ImageConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.image, (control) => { return null })\r\n}\r\nexport function imageAsyncValidatorExtension(config?: ImageConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.image, baseAsyncValidator(config, AnnotationTypes.image));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { notEmptyValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function notEmptyValidatorExtension(config?: MessageConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.notEmpty, notEmptyValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { IpConfig } from \"../models/config/ip-config\";\r\nimport { ipValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nexport function ipValidatorExtension(config?: IpConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.ip, ipValidator(config))\r\n}\r\nexport function ipAsyncValidatorExtension(config?: IpConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.ip, baseAsyncValidator(config, AnnotationTypes.ip));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig} from \"../models/config/base-config\";\r\nimport { cusipValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\nexport function cusipValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.cusip, cusipValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseConfig } from \"../models/config/base-config\";\r\nimport { gridValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\nexport function gridValidatorExtension(config?: BaseConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.grid, gridValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn,ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { BaseDateConfig } from \"../models/config/base-date-config\";\r\nimport { dateValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function dateValidatorExtension(config?: BaseDateConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.date, dateValidator(config))\r\n}\r\nexport function dateAsyncValidatorExtension(config?: BaseDateConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.date, baseAsyncValidator(config, AnnotationTypes.date));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { andValidator } from '../reactive-form-validators/and.validator'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\nexport function andValidatorExtension(config?: LogicalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.and, andValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { orValidator } from '../reactive-form-validators/or.validator'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\nexport function orValidatorExtension(config?: LogicalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.or, orValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { LogicalOperatorConfig } from \"../models/config/logical-operator-config\";\r\nimport { notValidator } from '../reactive-form-validators/not.validator'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\nexport function notValidatorExtension(config?: LogicalOperatorConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.not, notValidator(config))\r\n}\r\n","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MinTimeConfig } from \"../models/config/time-config\";\r\nimport { minTimeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function minTimeValidatorExtension(config?: MinTimeConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.minTime, minTimeValidator(config))\r\n}\r\nexport function minTimeAsyncValidatorExtension(config?: MinTimeConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.minTime, baseAsyncValidator(config, AnnotationTypes.minTime));\r\n}","import {\r\n AsyncValidatorFn, ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MaxTimeConfig } from \"../models/config/time-config\";\r\nimport { maxTimeValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension } from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\n\r\nexport function maxTimeValidatorExtension(config?: MaxTimeConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.maxTime, maxTimeValidator(config))\r\n}\r\nexport function maxTimeAsyncValidatorExtension(config?: MaxTimeConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.maxTime, baseAsyncValidator(config, AnnotationTypes.maxTime));\r\n}","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { MessageConfig } from \"../models/config/message-config\";\r\nimport { requiredTrueValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\n\r\nexport function requiredTrueValidatorExtension(config?: MessageConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.requiredTrue, requiredTrueValidator(config))\r\n}\r\n","import {\r\n ValidatorFn\r\n} from \"@angular/forms\";\r\nimport { maskValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator } from \"./base-validator.function\";\r\nimport { MaskConfig } from \"../models/config/mask-config\";\r\nexport function maskValidatorExtension(config?: MaskConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.mask, maskValidator(config))\r\n}\r\n","import {\r\n ValidatorFn, AsyncValidatorFn\r\n} from \"@angular/forms\";\r\nimport { IBANConfig } from \"../models/config/iban-config\";\r\nimport { ibanValidator } from '../reactive-form-validators/index'\r\nimport { AnnotationTypes } from \"../core/validator.static\"\r\nimport { baseValidator, baseAsyncValidatorExtension} from \"./base-validator.function\";\r\nimport { baseAsyncValidator } from \"../reactive-form-validators/async/base.async.validator\";\r\nexport function ibanValidatorExtension(config?: IBANConfig): ValidatorFn {\r\n return baseValidator(config, AnnotationTypes.iban, ibanValidator(config))\r\n}\r\n\r\nexport function ibanAsyncValidatorExtension(config?: IBANConfig): AsyncValidatorFn {\r\n return baseAsyncValidatorExtension(config, AnnotationTypes.iban, baseAsyncValidator(config, AnnotationTypes.iban));\r\n}\r\n","import {\r\n alphaValidatorExtension, allOfValidatorExtension, alphaNumericValidatorExtension, choiceValidatorExtension, compareValidatorExtension,\r\n containsValidatorExtension, creditCardValidatorExtension, differentValidatorExtension, digitValidatorExtension, emailValidatorExtension, evenValidatorExtension, factorValidatorExtension,\r\n greaterThanEqualToValidatorExtension, greaterThanValidatorExtension, hexColorValidatorExtension, jsonValidatorExtension, leapYearValidatorExtension, lessThanEqualToValidatorExtension,\r\n lessThanValidatorExtension, lowerCaseValidatorExtension, macValidatorExtension, maxDateValidatorExtension, maxLengthValidatorExtension, maxNumberValidatorExtension, minDateValidatorExtension,\r\n minLengthValidatorExtension, minNumberValidatorExtension, noneOfValidatorExtension, numericValidatorExtension, oddValidatorExtension, oneOfValidatorExtension, passwordcValidatorExtension,\r\n patternValidatorExtension, rangeValidatorExtension, requiredValidatorExtension, timeValidatorExtension, upperCaseValidatorExtension, urlValidatorExtension,\r\n asciiValidatorExtension,\r\n dataUriValidatorExtension,\r\n portValidatorExtension,\r\n latLongValidatorExtension,\r\n extensionValidatorExtension,\r\n fileSizeValidatorExtension,\r\n endsWithValidatorExtension,\r\n startsWithValidatorExtension,\r\n primeNumberValidatorExtension,\r\n latitudeValidatorExtension,\r\n longitudeValidatorExtension,\r\n composeValidatorExtension,\r\n fileValidatorExtension,\r\n customValidatorExtension,\r\n uniqueValidatorExtension,\r\n imageValidatorExtension,\r\n notEmptyValidatorExtension,\r\n ipValidatorExtension,\r\n cusipValidatorExtension,\r\n gridValidatorExtension,\r\n dateValidatorExtension,\r\n andValidatorExtension,\r\n orValidatorExtension,\r\n notValidatorExtension,\r\n maxTimeValidatorExtension,\r\n minTimeValidatorExtension,\r\n requiredTrueValidatorExtension,\r\n maskValidatorExtension, alphaAsyncValidatorExtension,\r\n allOfAsyncValidatorExtension, alphaNumericAsyncValidatorExtension, choiceAsyncValidatorExtension, containsAsyncValidatorExtension,\r\n creditCardAsyncValidatorExtension, customAsyncValidatorExtension, dateAsyncValidatorExtension, endsWithAsyncValidatorExtension,\r\n extensionAsyncValidatorExtension, factorAsyncValidatorExtension, fileAsyncValidatorExtension, fileSizeAsyncValidatorExtension,\r\n greaterThanEqualToAsyncValidatorExtension, imageAsyncValidatorExtension, ipAsyncValidatorExtension, lessThanAsyncValidatorExtension,\r\n lessThanEqualToAsyncValidatorExtension, maxDateAsyncValidatorExtension, maxLengthAsyncValidatorExtension, maxNumberAsyncValidatorExtension,\r\n maxTimeAsyncValidatorExtension, minDateAsyncValidatorExtension, minLengthAsyncValidatorExtension, minNumberAsyncValidatorExtension,\r\n minTimeAsyncValidatorExtension, noneOfAsyncValidatorExtension, numericAsyncValidatorExtension, oneOfAsyncValidatorExtension,\r\n passwordAsyncValidatorExtension, patternAsyncValidatorExtension, rangeAsyncValidatorExtension, startsWithAsyncValidatorExtension, urlAsyncValidatorExtension,\r\n greaterThanAsyncValidatorExtension,\r\n timeAsyncValidatorExtension,\r\n ibanValidatorExtension,\r\n ibanAsyncValidatorExtension\r\n\r\n} from './index'\r\n\r\nexport class RxwebValidators {\r\n\r\n static readonly alpha = alphaValidatorExtension;\r\n static readonly allOf = allOfValidatorExtension;\r\n static readonly alphaNumeric = alphaNumericValidatorExtension;\r\n static readonly choice = choiceValidatorExtension;\r\n static readonly compare = compareValidatorExtension;\r\n static readonly contains = containsValidatorExtension;\r\n static readonly creditCard = creditCardValidatorExtension;\r\n static readonly different = differentValidatorExtension;\r\n static readonly digit = digitValidatorExtension\r\n static readonly email = emailValidatorExtension;\r\n static readonly even = evenValidatorExtension;\r\n static readonly factor = factorValidatorExtension;\r\n static readonly greaterThanEqualTo = greaterThanEqualToValidatorExtension;\r\n static readonly greaterThan = greaterThanValidatorExtension;\r\n static readonly hexColor = hexColorValidatorExtension;\r\n static readonly json = jsonValidatorExtension;\r\n static readonly leapYear = leapYearValidatorExtension;\r\n static readonly lessThanEqualTo = lessThanEqualToValidatorExtension;\r\n static readonly lessThan = lessThanValidatorExtension;\r\n static readonly lowerCase = lowerCaseValidatorExtension;\r\n static readonly mac = macValidatorExtension;\r\n static readonly maxDate = maxDateValidatorExtension;\r\n static readonly maxLength = maxLengthValidatorExtension;\r\n static readonly maxNumber = maxNumberValidatorExtension;\r\n static readonly minDate = minDateValidatorExtension;\r\n static readonly minLength = minLengthValidatorExtension;\r\n static readonly minNumber = minNumberValidatorExtension;\r\n static readonly noneOf = noneOfValidatorExtension;\r\n static readonly numeric = numericValidatorExtension;\r\n static readonly odd = oddValidatorExtension;\r\n static readonly oneOf = oneOfValidatorExtension;\r\n static readonly password = passwordcValidatorExtension;\r\n static readonly pattern = patternValidatorExtension;\r\n static readonly range = rangeValidatorExtension;\r\n static readonly required = requiredValidatorExtension;\r\n static readonly time = timeValidatorExtension;\r\n static readonly upperCase = upperCaseValidatorExtension;\r\n static readonly url = urlValidatorExtension;\r\n static readonly ascii = asciiValidatorExtension;\r\n static readonly dataUri = dataUriValidatorExtension;\r\n static readonly port = portValidatorExtension;\r\n static readonly latLong = latLongValidatorExtension;\r\n static readonly extension = extensionValidatorExtension;\r\n static readonly fileSize = fileSizeValidatorExtension;\r\n static readonly endsWith = endsWithValidatorExtension;\r\n static readonly startsWith = startsWithValidatorExtension;\r\n static readonly primeNumber = primeNumberValidatorExtension;\r\n static readonly latitude = latitudeValidatorExtension;\r\n static readonly longitude = longitudeValidatorExtension;\r\n static readonly compose = composeValidatorExtension;\r\n static readonly file = fileValidatorExtension;\r\n static readonly custom = customValidatorExtension;\r\n static readonly unique = uniqueValidatorExtension;\r\n static readonly image = imageValidatorExtension;\r\n static readonly notEmpty = notEmptyValidatorExtension;\r\n static readonly ip = ipValidatorExtension;\r\n static readonly cusip = cusipValidatorExtension;\r\n static readonly grid = gridValidatorExtension;\r\n static readonly date = dateValidatorExtension;\r\n static readonly and = andValidatorExtension;\r\n static readonly or = orValidatorExtension;\r\n static readonly not = notValidatorExtension;\r\n static readonly minTime = minTimeValidatorExtension;\r\n static readonly maxTime = maxTimeValidatorExtension;\r\n static readonly requiredTrue = requiredTrueValidatorExtension;\r\n static readonly mask = maskValidatorExtension;\r\n static readonly iban = ibanValidatorExtension;\r\n static readonly alphaAsync = alphaAsyncValidatorExtension;\r\n static readonly alphaNumericAsync = alphaNumericAsyncValidatorExtension;\r\n static readonly allOfAsync = allOfAsyncValidatorExtension;\r\n static readonly choiceAsync = choiceAsyncValidatorExtension;\r\n static readonly containsAsync = containsAsyncValidatorExtension;\r\n static readonly creditCardAsync = creditCardAsyncValidatorExtension;\r\n static readonly customAsync = customAsyncValidatorExtension;\r\n static readonly dateAsync = dateAsyncValidatorExtension;\r\n static readonly endsWithAsync = endsWithAsyncValidatorExtension;\r\n static readonly extensionAsync = extensionAsyncValidatorExtension;\r\n static readonly factorAsync = factorAsyncValidatorExtension;\r\n static readonly fileSizeAsync = fileSizeAsyncValidatorExtension;\r\n static readonly fileAsync = fileAsyncValidatorExtension;\r\n static readonly greaterThanEqualToAsync = greaterThanEqualToAsyncValidatorExtension;\r\n static readonly greaterThanAsync = greaterThanAsyncValidatorExtension;\r\n static readonly imageAsync = imageAsyncValidatorExtension;\r\n static readonly ipAsync = ipAsyncValidatorExtension;\r\n static readonly lessThanEqualToAsync = lessThanEqualToAsyncValidatorExtension;\r\n static readonly lessThanAsync = lessThanAsyncValidatorExtension;\r\n static readonly maxDateAsync = maxDateAsyncValidatorExtension;\r\n static readonly maxLengthAsync = maxLengthAsyncValidatorExtension;\r\n static readonly maxNumberAsync = maxNumberAsyncValidatorExtension;\r\n static readonly maxTimeAsync = maxTimeAsyncValidatorExtension;\r\n static readonly minDateAsync = minDateAsyncValidatorExtension;\r\n static readonly minLengthAsync = minLengthAsyncValidatorExtension;\r\n static readonly minNumberAsync = minNumberAsyncValidatorExtension;\r\n static readonly minTimeAsync = minTimeAsyncValidatorExtension;\r\n static readonly noneOfAsync = noneOfAsyncValidatorExtension;\r\n static readonly numericAsync = numericAsyncValidatorExtension;\r\n static readonly oneOfAsync = oneOfAsyncValidatorExtension;\r\n static readonly passwordAsync = passwordAsyncValidatorExtension;\r\n static readonly patternAsync = patternAsyncValidatorExtension;\r\n static readonly rangeAsync = rangeAsyncValidatorExtension;\r\n static readonly startsWithAsync = startsWithAsyncValidatorExtension;\r\n static readonly timeAsync = timeAsyncValidatorExtension;\r\n static readonly urlAsync = urlAsyncValidatorExtension;\r\n static readonly ibanAsync = ibanAsyncValidatorExtension;\r\n}","import { ChangeDetectorRef, Directive, Type } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { IEntity, ServiceLocator } from '../../common/common.module';\r\nimport { FormBuilderConfiguration } from '../../form-validators/models';\r\nimport { RxFormBuilder, RxFormGroup } from '../../form-validators/public_api';\r\nimport { GenericService } from '../../http/http.module';\r\nimport { GenericFormBaseComponent } from './generic-form-base.component';\r\n\r\n// @dynamic\r\n@Directive()\r\nexport abstract class GenericReactiveFormComponent<TEntity extends IEntity, TService extends GenericService<TEntity>> extends GenericFormBaseComponent<TEntity, TService> {\r\n\r\n /**\r\n * Form group\r\n */\r\n public form: FormGroup;\r\n\r\n /**\r\n * Form builder\r\n */\r\n protected formBuilder: RxFormBuilder;\r\n\r\n /**\r\n * formBuilderConfig: FormBuilderConfiguration\r\n */\r\n protected formBuilderConfig: FormBuilderConfiguration = new FormBuilderConfiguration();\r\n\r\n /**\r\n * Gets form value\r\n */\r\n public get formValue(): TEntity | any { return this.form.value; };\r\n\r\n /**\r\n * Constructor\r\n * @param service \r\n */\r\n constructor(\r\n public entityCtor: Type<TEntity>,\r\n protected service: TService,\r\n protected route: ActivatedRoute,\r\n protected changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n super(entityCtor, service, route, changeDetectorRef);\r\n this.formBuilder = ServiceLocator.getService(RxFormBuilder);\r\n }\r\n\r\n /**\r\n * Builds a new form\r\n */\r\n protected buildForm(): void {\r\n this.onBeforeFormBuild();\r\n this.form = <RxFormGroup>this.formBuilder.formGroup(this.item, this.formBuilderConfig);\r\n this.onAfterFormBuild();\r\n }\r\n\r\n /**\r\n * Shows form errors\r\n * @param form \r\n */\r\n protected debugForm(form: FormGroup = null): void {\r\n super.debugForm(form);\r\n console.log((this.form as RxFormGroup).getErrorSummary(false));\r\n }\r\n}","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { Observable } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { AppSetting } from '../../common/models/app-setting';\r\n\r\n/**\r\n * Pass untouched request through to the next request handler.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class BaseInterceptor implements HttpInterceptor {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(private appSetting: AppSetting, private snackBar: MatSnackBar) { }\r\n\r\n\t/**\r\n\t * Intercept an outgoing `HttpRequest` and optionally transform it or the\r\n\t * response.\r\n\t *\r\n\t * Typically an interceptor will transform the outgoing request before returning\r\n\t * `next.handle(transformedReq)`. An interceptor may choose to transform the\r\n\t * response event stream as well, by applying additional Rx operators on the stream\r\n\t * returned by `next.handle()`.\r\n\t *\r\n\t * More rarely, an interceptor may choose to completely handle the request itself,\r\n\t * and compose a new event stream instead of invoking `next.handle()`. This is\r\n\t * acceptable behavior, but keep in mind further interceptors will be skipped entirely.\r\n\t *\r\n\t * It is also rare but valid for an interceptor to return multiple responses on the\r\n\t * event stream for a single request.\r\n\t */\r\n\tintercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\t\t/* Clone the request and set the base url */\r\n\t\tconst authReq = req.clone({\r\n\t\t\turl: req.url.startsWith('http') || req.url.startsWith('./assets') ? req.url : `${this.appSetting.apiUrl}${req.url}`,\r\n\t\t\theaders: req.method == 'GET' ? req.headers.set('CheckIn', 'Yes') : req.headers\r\n\t\t});\r\n\r\n\t\t/* Send cloned request with header to the next handler */\r\n\t\treturn next.handle(authReq).pipe(\r\n\t\t\ttap(\r\n\t\t\t\t/* Succeeds when there is a response; ignore other events */\r\n\t\t\t\tevent => {\r\n\t\t\t\t\tif (event instanceof HttpResponse) {\r\n\t\t\t\t\t\tif (req.headers.get('Show-Message')) {\r\n\t\t\t\t\t\t\t/* Show a success message for POST requests */\r\n\t\t\t\t\t\t\tif (req.method == 'POST') {\r\n\t\t\t\t\t\t\t\tthis.snackBar.open($localize`:@@snackbar.create.success:Data saved successfully.`, null, {\r\n\t\t\t\t\t\t\t\t\tduration: 3000,\r\n\t\t\t\t\t\t\t\t\tpanelClass: ['primary']\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Show a success message for PUT or PATCH requests */\r\n\t\t\t\t\t\t\tif (['PUT', 'PATCH'].indexOf(req.method) >= 0) {\r\n\t\t\t\t\t\t\t\tthis.snackBar.open($localize`:@@snackbar.update.success:Changes saved successfully.`, null, {\r\n\t\t\t\t\t\t\t\t\tduration: 3000,\r\n\t\t\t\t\t\t\t\t\tpanelClass: ['primary']\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t\t\t\t/* Show a success message for PUT or PATCH requests */\r\n\t\t\t\t\t\t\tif (['DELETE'].indexOf(req.method) >= 0) {\r\n\t\t\t\t\t\t\t\tthis.snackBar.open($localize`:@@snackbar.delete.success:Record(s) deleted successfully.`, null, {\r\n\t\t\t\t\t\t\t\t\tduration: 3000,\r\n\t\t\t\t\t\t\t\t\tpanelClass: ['primary']\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t/* Show warnings from headers, if any */\r\n\t\t\t\t\t\t\tvar warning = event.headers.get(\"Warning\");\r\n\t\t\t\t\t\t\tif (warning) {\r\n\t\t\t\t\t\t\t\tthis.snackBar.open(warning, \"OK\", { duration: 6000, panelClass: ['warn'] });\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t/* Operation failed; error is an HttpErrorResponse */\r\n\t\t\t\terror => {\r\n\t\t\t\t\t/* Status: 400 - Bad Request (i.e. validation errors) */\r\n\t\t\t\t\tif (error.status == 400) {\r\n\t\t\t\t\t\tlet message = this.parseErrors(error.error);\r\n\t\t\t\t\t\tif (message) {\r\n\t\t\t\t\t\t\tthis.snackBar.open(message, \"OK\", { duration: 8000, panelClass: ['error'] })\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Status: 403 - Not permitted */\r\n\t\t\t\t\tif (error.status == 403) {\r\n\t\t\t\t\t\tthis.snackBar.open($localize`:@@snackbar.error.not-allowed:You are not allowed to perform this request.`, null, {\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\tpanelClass: ['error']\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Status: 404 - Bad request, show some error messages */\r\n\t\t\t\t\tif (error.status == 404) {\r\n\t\t\t\t\t\tthis.snackBar.open($localize`:@@snackbar.error.not-found:The resource could not be found.`, null, {\r\n\t\t\t\t\t\t\tduration: 6000,\r\n\t\t\t\t\t\t\tpanelClass: ['error']\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Custom error message */\r\n\t\t\t\t\tif (error.status == 452) {\r\n\t\t\t\t\t\tthis.snackBar.open(error.text(), null, { duration: 6000, panelClass: ['error'] });\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* Internal server error */\r\n\t\t\t\t\tif (error.status == 500) {\r\n\t\t\t\t\t\tthis.snackBar.open(error.text(), null, { duration: 6000, panelClass: ['error'] });\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\t/**\r\n\t * Parses http response errors\r\n\t * @param error \r\n\t */\r\n\tprotected parseErrors(error: Object): string {\r\n\t\tlet errors: string[] = [];\r\n\t\tif (error) {\r\n\t\t\tObject.keys(error).forEach(el => {\r\n\t\t\t\tlet err = error[el];\r\n\t\t\t\tif (Array.isArray(err)) {\r\n\t\t\t\t\terr.forEach(err => {\r\n\t\t\t\t\t\terrors.push(err);\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (typeof err === \"string\") {\r\n\t\t\t\t\terrors.push(err);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn errors.join('\\n');\r\n\t}\r\n}","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, of } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n/**\r\n * Pass untouched request through to the next request handler.\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class CachingInterceptor implements HttpInterceptor {\r\n\t/**\r\n\t * Cache container\r\n\t */\r\n\tprivate cache = new Map<string, HttpResponse<any>>();\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() { }\r\n\r\n\t/**\r\n\t * Intercept an outgoing `HttpRequest` and optionally transform it or the\r\n\t * response.\r\n\t *\r\n\t * Typically an interceptor will transform the outgoing request before returning\r\n\t * `next.handle(transformedReq)`. An interceptor may choose to transform the\r\n\t * response event stream as well, by applying additional Rx operators on the stream\r\n\t * returned by `next.handle()`.\r\n\t *\r\n\t * More rarely, an interceptor may choose to completely handle the request itself,\r\n\t * and compose a new event stream instead of invoking `next.handle()`. This is\r\n\t * acceptable behavior, but keep in mind further interceptors will be skipped entirely.\r\n\t *\r\n\t * It is also rare but valid for an interceptor to return multiple responses on the\r\n\t * event stream for a single request.\r\n\t */\r\n\tintercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\t\t/* Before doing anything, it's important to only cache GET requests. */\r\n\t\tif (req.method !== 'GET' || req.responseType.toLowerCase() === 'arraybuffer') {\r\n\t\t\tthis.cache.clear();\r\n\t\t\treturn next.handle(req);\r\n\t\t}\r\n\r\n\t\t/* First, check the cache to see if this request exists. */\r\n\t\tconst cachedResponse = this.cache.get(req.urlWithParams);\r\n\t\tif (cachedResponse && req.headers.get('Client-Cache')) {\r\n\t\t\t/*\r\n\t\t\tA cached response exists. Serve it instead of forwarding \r\n\t\t\tthe request to the next handler.\r\n\t\t\t*/\r\n\t\t\treturn of(cachedResponse.clone());\r\n\t\t}\r\n\r\n\t\t/* No cached response exists. Go to the network, and cache the response when it arrives. */\r\n\t\treturn next.handle(req).pipe(\r\n\t\t\ttap(\r\n\t\t\t\t/* Succeeds when there is a response; ignore other events */\r\n\t\t\t\tevent => {\r\n\t\t\t\t\t/* Remember, there may be other events besides just the response. */\r\n\t\t\t\t\tif (event instanceof HttpResponse && req.headers.get('Client-Cache')) {\r\n\t\t\t\t\t\t/* Update the cache. */\r\n\t\t\t\t\t\tthis.cache.set(req.urlWithParams, event.clone());\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t)\r\n\t\t);\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class LoadingScreenService {\r\n\r\n /**\r\n * _loading: boolean\r\n */\r\n private _loading: boolean = false;\r\n\r\n /**\r\n * loadingStatus: Subject<any>\r\n */\r\n public loadingStatus: Subject<any> = new Subject();\r\n\r\n /**\r\n * Gets the loading\r\n */\r\n get loading(): boolean {\r\n return this._loading;\r\n }\r\n\r\n /**\r\n * Sets the loading\r\n */\r\n set loading(value) {\r\n this._loading = value;\r\n this.loadingStatus.next(value);\r\n }\r\n\r\n /**\r\n * Starts the loding\r\n */\r\n public startLoading() {\r\n this.loading = true;\r\n }\r\n\r\n /**\r\n * Stops the loading\r\n */\r\n public stopLoading() {\r\n this.loading = false;\r\n }\r\n}","import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { finalize } from \"rxjs/operators\";\r\nimport { LoadingScreenService } from \"../services/loading-screen.service\";\r\n\r\n@Injectable()\r\nexport class LoadingScreenInterceptor implements HttpInterceptor {\r\n\r\n /**\r\n * activeRequests: number\r\n */\r\n activeRequests: number = 0;\r\n\r\n /**\r\n * URLs for which the loading screen should not be enabled\r\n */\r\n skippUrls = ['/authrefresh'];\r\n\r\n /**\r\n * Constructor\r\n * @param loadingScreenService \r\n */\r\n constructor(private loadingScreenService: LoadingScreenService) { }\r\n\r\n /**\r\n * Identifies and handles a given HTTP request.\r\n * @param req The outgoing request object to handle.\r\n * @param next The next interceptor in the chain, or the backend\r\n * if no interceptors remain in the chain.\r\n * @returns An observable of the event stream.\r\n */\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n let displayLoadingScreen = true;\r\n\r\n /* Skip loading screen for folowed urls */\r\n for (const skippUrl of this.skippUrls) {\r\n if (new RegExp(skippUrl).test(request.url)) {\r\n displayLoadingScreen = false;\r\n break;\r\n }\r\n }\r\n\r\n if (displayLoadingScreen) {\r\n if (this.activeRequests === 0) {\r\n this.loadingScreenService.startLoading();\r\n }\r\n\r\n /* Count the active requests */\r\n this.activeRequests++;\r\n\r\n /* handle the request */\r\n return next.handle(request).pipe(\r\n finalize(() => {\r\n this.activeRequests--;\r\n if (this.activeRequests === 0) {\r\n this.loadingScreenService.stopLoading();\r\n }\r\n })\r\n )\r\n } else {\r\n return next.handle(request);\r\n }\r\n };\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '../../http/services/generic.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FileService extends GenericService<any> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('file');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PrintService {\r\n isPrinting = false;\r\n\r\n /**\r\n * Constructor\r\n * @param router \r\n */\r\n constructor(private router: Router) { }\r\n\r\n /**\r\n * Print document\r\n * @param documentName \r\n * @param documentData \r\n */\r\n printDocument(documentName: string, documentData: string[]) {\r\n this.isPrinting = true;\r\n this.router.navigate(['/', { outlets: { 'print': ['print', documentName, documentData.join()] } }]);\r\n }\r\n\r\n /**\r\n * On data ready\r\n */\r\n onDataReady() {\r\n setTimeout(() => {\r\n window.print();\r\n this.isPrinting = false;\r\n this.router.navigate([{ outlets: { print: null } }]);\r\n });\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { BaseComponent } from './components/base.component';\r\nimport { GenericFormBaseComponent } from './components/generic-form-base.component';\r\nimport { GenericFormComponent } from './components/generic-form.component';\r\nimport { GenericListComponent } from './components/generic-list.component';\r\nimport { GenericReactiveFormComponent } from './components/generic-reactive-form.component';\r\nimport { Common } from './constants/common';\r\nimport { MessageType } from './enums/message-type';\r\nimport { AuthHelper } from './helpers/auth-helper';\r\nimport { BaseInterceptor } from './interceptors/base.interceptor';\r\nimport { CachingInterceptor } from './interceptors/caching-interceptor';\r\nimport { LoadingScreenInterceptor } from './interceptors/loading.interceptor';\r\nimport { AuthUser } from './models/auth-user';\r\nimport { FileService } from './services/file.service';\r\nimport { LoadingScreenService } from './services/loading-screen.service';\r\nimport { PrintService } from './services/print.service';\r\n\r\nexport {\r\n\tAuthUser,\r\n\tMessageType,\r\n\tAuthHelper,\r\n\tBaseComponent,\r\n\tGenericListComponent,\r\n\tGenericFormComponent,\r\n\tGenericFormBaseComponent,\r\n\tGenericReactiveFormComponent,\r\n\tCommon,\r\n\tBaseInterceptor,\r\n\tCachingInterceptor,\r\n\tLoadingScreenInterceptor,\r\n\tFileService,\r\n\tLoadingScreenService,\r\n\tPrintService\r\n};\r\n\r\nconst DECLARATIONS = [];\r\n\r\nconst MATRIAL_DECLARATIONS = []\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatDialogModule,\r\n\t\tMATRIAL_DECLARATIONS\r\n\t],\r\n\tproviders: [\r\n\t\t{ provide: HTTP_INTERCEPTORS, useClass: BaseInterceptor, multi: true },\r\n\t\t{ provide: HTTP_INTERCEPTORS, useClass: CachingInterceptor, multi: true },\r\n\t\t{ provide: HTTP_INTERCEPTORS, useClass: LoadingScreenInterceptor, multi: true },\r\n\t],\r\n\tdeclarations: [\r\n\t\tDECLARATIONS\r\n\t],\r\n\texports: [\r\n\t\tDECLARATIONS\r\n\t]\r\n})\r\nexport class VdBaseModule { }","import { FocusMonitor } from \"@angular/cdk/a11y\";\r\nimport { coerceBooleanProperty } from \"@angular/cdk/coercion\";\r\nimport { Directive, DoCheck, ElementRef, HostBinding, HostListener, Input, OnDestroy } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormGroupDirective, NgControl, NgForm } from \"@angular/forms\";\r\nimport { ErrorStateMatcher, mixinErrorState } from \"@angular/material/core\";\r\nimport { MatFormFieldControl } from \"@angular/material/form-field\";\r\n\r\n/**\r\n * _AbstractMatFormField class\r\n */\r\nclass _AbstractMatFormField {\r\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher, public _parentForm: NgForm, public _parentFormGroup: FormGroupDirective, public ngControl: NgControl) { }\r\n}\r\n\r\n/**\r\n * AbstractMatFormField class\r\n */\r\n@Directive()\r\nexport abstract class AbstractMatFormField<T> extends mixinErrorState(_AbstractMatFormField) implements DoCheck, OnDestroy, ControlValueAccessor, MatFormFieldControl<T> {\r\n\r\n /**\r\n * The value of the control.\r\n */\r\n protected _value: T;\r\n\r\n /**\r\n * Sets the value\r\n */\r\n public set value(value: T) {\r\n this._value = value;\r\n if (this.onChange) {\r\n this.onChange(value);\r\n }\r\n }\r\n\r\n /**\r\n * Gets the value\r\n */\r\n public get value(): T {\r\n return this._value;\r\n }\r\n\r\n /**\r\n * The placeholder for this control.\r\n */\r\n public _placeholder: string = \"\";\r\n\r\n /**\r\n * Sets the placeholder\r\n */\r\n @Input()\r\n public set placeholder(placeholder: string) {\r\n this._placeholder = placeholder;\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Gets the placeholder\r\n */\r\n public get placeholder() {\r\n return this._placeholder;\r\n }\r\n\r\n /**\r\n * Whether the control is required.\r\n */\r\n public _required: boolean = false;\r\n\r\n /**\r\n * Sets the required\r\n * @param required\r\n */\r\n @Input()\r\n public set required(required: any) {\r\n this._required = coerceBooleanProperty(required);\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Gets the required\r\n */\r\n public get required() {\r\n return this._required;\r\n }\r\n\r\n /**\r\n * Readonly\r\n */\r\n public _readonly: boolean;\r\n\r\n /**\r\n * Multiple select option\r\n */\r\n @Input()\r\n get readonly() { return this._readonly; }\r\n set readonly(readonly) {\r\n this._readonly = coerceBooleanProperty(readonly);\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Whether the control is disabled.\r\n */\r\n public _disabled: boolean = false;\r\n\r\n /**\r\n * Gets the control is disabled.\r\n * @param disabled\r\n */\r\n @Input()\r\n public set disabled(disabled: any) {\r\n this._disabled = coerceBooleanProperty(disabled);\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * Sets the disabled.\r\n * @param disabled\r\n */\r\n public get disabled() {\r\n if (this.ngControl?.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n\r\n return this._disabled;\r\n }\r\n\r\n /**\r\n * Gets the empty value\r\n */\r\n public get empty(): boolean {\r\n return !this._value;\r\n }\r\n\r\n /**\r\n * Whether the `MatFormField` label should try to float.\r\n */\r\n public get shouldLabelFloat(): boolean {\r\n return this.focused || !this.empty;\r\n }\r\n\r\n /**\r\n * The element ID\r\n */\r\n private static nextId: number = 0;\r\n\r\n /**\r\n * The element ID\r\n */\r\n @HostBinding()\r\n public id: string = `${this.controlType}-${AbstractMatFormField.nextId++}`;\r\n\r\n /**\r\n * Used to indicate the IDs of the elements that describe the object.\r\n */\r\n @HostBinding(\"attr.aria-describedBy\")\r\n public describedBy: string = \"\";\r\n\r\n /**\r\n * Constructor\r\n * @param controlType \r\n * @param ngControl \r\n * @param _parentForm \r\n * @param _parentFormGroup \r\n * @param _defaultErrorStateMatcher \r\n * @param _focusMonitor \r\n * @param _elementRef \r\n */\r\n constructor(public readonly controlType: string, public readonly ngControl: NgControl, public readonly _parentForm: NgForm, public readonly _parentFormGroup: FormGroupDirective, public readonly _defaultErrorStateMatcher: ErrorStateMatcher, protected readonly _focusMonitor: FocusMonitor, protected readonly _elementRef: ElementRef) {\r\n super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl);\r\n\r\n if (this.ngControl) {\r\n this.ngControl.valueAccessor = this;\r\n }\r\n\r\n _focusMonitor.monitor(this._elementRef.nativeElement, true).subscribe(origin => {\r\n this.focused = !!origin;\r\n this.stateChanges.next();\r\n });\r\n }\r\n\r\n /**\r\n * Registers a function called when the control value changes.\r\n */\r\n public registerOnChange(fn: (_: T) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n /**\r\n * Registers a callback function that is called by the forms API on initialization\r\n * to update the form model on blur.\r\n * @param fn \r\n */\r\n public registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n /**\r\n * Writes a new value to the element.\r\n * @param value \r\n */\r\n public writeValue(value: T): void {\r\n this.value = value;\r\n }\r\n\r\n /**\r\n * Sets the list of element IDs that currently describe this control.\r\n * @param ids \r\n */\r\n public setDescribedByIds(ids: string[]): void {\r\n this.describedBy = ids.join(\" \");\r\n }\r\n\r\n /**\r\n * Whether the control is focused.\r\n */\r\n public focused = false;\r\n\r\n /**\r\n * Whether the control is focused.\r\n */\r\n @HostListener(\"focusout\") onBlur() {\r\n this.focused = false;\r\n if (this.onTouched) {\r\n this.onTouched();\r\n }\r\n\r\n this.stateChanges.next();\r\n }\r\n\r\n /**\r\n * Sets focus of the control\r\n */\r\n public abstract focus(): void;\r\n\r\n /**\r\n * Handles a click on the control's container.\r\n */\r\n public onContainerClick(): void {\r\n if (!this.focused) {\r\n this.focus();\r\n }\r\n }\r\n\r\n /**\r\n * The registered callback function called when an input \r\n * event occurs on the input element.\r\n */\r\n protected onChange?: (value: T) => void;\r\n\r\n /**\r\n * The registered callback function called when a blur \r\n * event occurs on the input element.\r\n */\r\n protected onTouched?: () => void;\r\n\r\n /**\r\n * A callback method that performs change-detection, invoked\r\n * after the default change-detector runs.\r\n * See `KeyValueDiffers` and `IterableDiffers` for implementing\r\n * custom change checking for collections.\r\n *\r\n */\r\n public ngDoCheck(): void {\r\n if (this.ngControl) {\r\n this.updateErrorState();\r\n }\r\n }\r\n\r\n /**\r\n * A lifecycle method called before the directive's instance\r\n * is destroyed. For internal use only.\r\n */\r\n public ngOnDestroy(): void {\r\n this.stateChanges.complete();\r\n this._focusMonitor.stopMonitoring(this._elementRef.nativeElement);\r\n }\r\n}","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { CdkPortal } from '@angular/cdk/portal';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Component, ContentChild, Directive, ElementRef, EventEmitter, Injector, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormControl, FormGroupDirective, NgControl, NgForm } from '@angular/forms';\r\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { debounceTime, skip } from 'rxjs/operators';\r\nimport { Utils } from '../../common/functions/utils';\r\nimport { AbstractMatFormField } from '../../forms/helpers/abstract-mat-form-field';\r\n\r\n/**\r\n * VdChipDirective class\r\n */\r\n@Directive({ selector: '[vd-chip]ng-template' })\r\nexport class VdChipDirective extends CdkPortal {\r\n\tconstructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n\t\tsuper(templateRef, viewContainerRef);\r\n\t}\r\n}\r\n\r\n/**\r\n * VdAutocompleteOptionDirective class\r\n */\r\n@Directive({ selector: '[vd-autocomplete-option]ng-template' })\r\nexport class VdAutocompleteOptionDirective extends CdkPortal {\r\n\tconstructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n\t\tsuper(templateRef, viewContainerRef);\r\n\t}\r\n}\r\n\r\n/**\r\n * VdChipsComponent class\r\n */\r\n@Component({\r\n\tselector: 'vd-chips',\r\n\ttemplateUrl: './chips.component.html',\r\n\tstyleUrls: ['./chips.component.scss'],\r\n\tproviders: [\r\n\t\t{ provide: MatFormFieldControl, useExisting: VdChipsComponent }\r\n\t]\r\n})\r\nexport class VdChipsComponent extends AbstractMatFormField<any> {\r\n\r\n\t/**\r\n\t * The http service from to get the data\r\n\t */\r\n\tprotected http: HttpClient = null;\r\n\r\n\t/** \r\n\t * The select element.\r\n\t */\r\n\t@ViewChild(MatInput, { static: true })\r\n\tpublic chipInput: MatInput;\r\n\r\n\t/**\r\n\t * Represents a value that changes over time. \r\n\t * Observers can subscribe to the subject to receive pdf file changes\r\n\t */\r\n\tprivate _endpointChange = new BehaviorSubject(null);\r\n\r\n\t/**\r\n\t * Set up reactive formcontrol\r\n\t */\r\n\tpublic autoCompleteChipList: FormControl = new FormControl();\r\n\r\n\t/**\r\n\t * The list of filtered options\r\n\t */\r\n\tpublic filteredOptions: any[];\r\n\r\n\t/**\r\n\t * searchOperators: string[]\r\n\t */\r\n\tpublic searchOperators: string[] = [\"!=\", \"!\", \"<>\", \">=\", \">\", \"<=\", \"<\", \"^\", \"$\", \"~\"];\r\n\r\n\t/**\r\n\t * The list of chips\r\n\t */\r\n\t@Input()\r\n\tpublic chips = [];\r\n\r\n\t/**\r\n\t * VdChip template\r\n\t */\r\n\t@ContentChild(VdChipDirective)\r\n\tpublic chipTemplate: VdChipDirective;\r\n\r\n\t/**\r\n\t * AutocompleteOption template\r\n\t */\r\n\t@ContentChild(VdAutocompleteOptionDirective)\r\n\tpublic autocompleteOptionTemplate: VdAutocompleteOptionDirective;\r\n\r\n\t/**\r\n\t * _endpoint: string\r\n\t */\r\n\tpublic _endpoint: string;\r\n\r\n\t/**\r\n\t * Gets or sets endpoint\r\n\t */\r\n\t@Input()\r\n\tget endpoint(): any { return this._endpoint; }\r\n\tset endpoint(endpoint: any) {\r\n\t\tthis._endpoint = endpoint;\r\n\t\tthis.clear();\r\n\t\tthis._endpointChange.next([this.endpoint, this.path, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * _params: any\r\n\t */\r\n\tpublic _params: any;\r\n\r\n\t/**\r\n\t * Gets or sets params\r\n\t */\r\n\t@Input()\r\n\tget params() { return this._params; }\r\n\tset params(query) {\r\n\t\tthis._params = query;\r\n\t\tthis.clear();\r\n\t\tthis._endpointChange.next([this.endpoint, this.path, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * _projection: any\r\n\t */\r\n\tpublic _projection: string;\r\n\r\n\t/**\r\n\t * projection: any\r\n\t */\r\n\t@Input()\r\n\tget projection() { return this._projection; }\r\n\tset projection(projection: string) {\r\n\t\tthis._projection = projection;\r\n\t\tthis.clear();\r\n\t\tthis._endpointChange.next([this.endpoint, this.path, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * _path: any\r\n\t */\r\n\tpublic _path: any = '';\r\n\r\n\t/**\r\n\t * Gets or sets path\r\n\t */\r\n\t@Input()\r\n\tget path() { return this._path; }\r\n\tset path(path) {\r\n\t\tthis._path = path;\r\n\t\tthis.clear();\r\n\t\tthis._endpointChange.next([this.endpoint, this.path, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the disabled.\r\n\t * @param disabled\r\n\t */\r\n\tpublic get disabled() {\r\n\t\tif (this._readonly) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn super.disabled;\r\n\t}\r\n\r\n\t/**\r\n\t * key: string\r\n\t */\r\n\t@Input()\r\n\tpublic key: string = 'id';\r\n\r\n\t/**\r\n\t * searchField: string\r\n\t */\r\n\t@Input()\r\n\tpublic searchField: string = 'search';\r\n\r\n\t/**\r\n\t * searchFields: string\r\n\t */\r\n\t@Input()\r\n\tpublic searchFields: string[] = [];\r\n\r\n\t/**\r\n\t * termMinlength: number\r\n\t */\r\n\t@Input()\r\n\tpublic termMinlength: number = 2;\r\n\r\n\t/**\r\n\t * limit: number\r\n\t */\r\n\t@Input()\r\n\tpublic limit: number = 30;\r\n\r\n\t/**\r\n\t * debounce?: number\r\n\t * Debounce timeout between keypresses. Defaults to 400.\r\n\t */\r\n\t@Input('debounce') debounce: number = 400;\r\n\r\n\t/**\r\n\t * initSelect?: function\r\n\t */\r\n\t@Output()\r\n\tpublic initSelect: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * selected?: function\r\n\t */\r\n\t@Output()\r\n\tpublic selected: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * cleared?: function\r\n\t */\r\n\t@Output()\r\n\tpublic cleared: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * launch?: function\r\n\t */\r\n\t@Output('launch') onLaunch: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * chipFocus?: function\r\n\t * Method to be executed when a chip is focused.\r\n\t * Sends chip value as event.\r\n\t */\r\n\t@Output()\r\n\tpublic chipFocus: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/** \r\n\t * Whether the select has a value.\r\n\t */\r\n\tget empty(): boolean { return this.chips.length <= 0; }\r\n\r\n\t/**\r\n\t * Default chip\r\n\t */\r\n\t@Input()\r\n\tget default() { return this.chips[0]; }\r\n\tset default(_chip) {\r\n\t\tif (_chip) {\r\n\t\t\t/* Add chip for selected option */\r\n\t\t\tthis.chips = [_chip];\r\n\r\n\t\t\t/* \tSet the value (ngModel) */\r\n\t\t\tthis.value = _chip[this.key];\r\n\r\n\t\t\t/* Diabled the input, allow only one chip */\r\n\t\t\tthis.autoCompleteChipList.disable();\r\n\r\n\t\t\t/* Reset the autocomplete input text value */\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Whether the `MatFormField` label should try to float.\r\n\t */\r\n\tpublic get shouldLabelFloat(): boolean {\r\n\t\treturn super.shouldLabelFloat || !this.chipInput?.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * loading: boolean\r\n\t */\r\n\tpublic loading: boolean;\r\n\r\n\t/**\r\n\t * emptyResult: boolean\r\n\t */\r\n\tpublic emptyResult: boolean;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param ngControl \r\n\t * @param parentForm \r\n\t * @param parentFormGroup \r\n\t * @param defaultErrorStateMatcher \r\n\t * @param focusMonitor \r\n\t * @param elementRef \r\n\t */\r\n\tconstructor(protected injector: Injector, @Optional() @Self() ngControl: NgControl, @Optional() parentForm: NgForm, @Optional() parentFormGroup: FormGroupDirective, defaultErrorStateMatcher: ErrorStateMatcher, focusMonitor: FocusMonitor, elementRef: ElementRef) {\r\n\t\tsuper(\"app-vd-chips\", ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, focusMonitor, elementRef);\r\n\t\tthis.http = injector.get(HttpClient);\r\n\t}\r\n\r\n\t/**\r\n\t * From ControlValueAccessor interface\r\n\t * @param value \r\n\t */\r\n\twriteValue(value: any) {\r\n\t\t/* Set the value */\r\n\t\tthis._value = value;\r\n\r\n\t\t/* Clear the chips list */\r\n\t\tthis.chips = [];\r\n\r\n\t\tif (value && this.chips?.length <= 0) {\r\n\t\t\tthis.loading = true;\r\n\t\t\tlet _params: any = {};\r\n\r\n\t\t\t/* Add includes, if any */\r\n\t\t\tif (this._params?.includes) {\r\n\t\t\t\t_params.includes = this._params.includes;\r\n\t\t\t}\r\n\r\n\t\t\t/* Add projection, if any */\r\n\t\t\tif (this.projection) {\r\n\t\t\t\t_params.projection = this.projection;\r\n\t\t\t}\r\n\r\n\t\t\t/* Get base url */\r\n\t\t\tvar urlParts = this.endpoint.split('?');\r\n\t\t\tthis.http.get(`${urlParts[0]}/${value}${urlParts.length > 1 ? `?${urlParts[1]}` : ''}`, { params: Utils.cleanObject(_params) }).subscribe(x => {\r\n\t\t\t\tthis.loading = false;\r\n\r\n\t\t\t\t/* Add chip for selected option */\r\n\t\t\t\tthis.chips.push(x);\r\n\r\n\t\t\t\t/* Emit selected event */\r\n\t\t\t\tthis.initSelect.emit(x);\r\n\r\n\t\t\t\t/* Diabled the input, allow only one chip */\r\n\t\t\t\tthis.autoCompleteChipList.disable();\r\n\t\t\t}, _ => this.loading = false);\r\n\t\t} else {\r\n\t\t\tthis.clear(false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets control focus\r\n\t */\r\n\tpublic focus(): void {\r\n\t\tthis.chipInput?.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties of a \r\n\t * directive are initialized.\r\n\t */\r\n\tngOnInit() {\r\n\t\tthis.autoCompleteChipList.valueChanges\r\n\t\t\t.pipe(debounceTime(this.debounce))\r\n\t\t\t.subscribe(v => this.filterOptions(v));\r\n\r\n\t\tthis.ngControl?.valueChanges?.pipe(skip(1)).subscribe((value: string) => {\r\n\t\t\tif (!value) {\r\n\t\t\t\tthis.chips = [];\r\n\t\t\t\tthis._value = \"\";\r\n\t\t\t\tthis.autoCompleteChipList.setValue(\"\");\r\n\t\t\t\tthis.autoCompleteChipList.enable();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Adds a chip\r\n\t * @param event \r\n\t * @param input \r\n\t */\r\n\tpublic addChip(event: MatAutocompleteSelectedEvent, input: any): void {\r\n\t\t/* Define selection constant */\r\n\t\tconst selection = event.option.value;\r\n\r\n\t\t/* Add chip for selected option */\r\n\t\tthis.chips.push(selection);\r\n\r\n\t\t/* Emit selected event */\r\n\t\tthis.selected.emit(selection);\r\n\r\n\t\t/* \tSet the value (ngModel) */\r\n\t\tthis.value = selection[this.key];\r\n\r\n\t\t/* Diabled the input, allow only one chip */\r\n\t\tthis.autoCompleteChipList.disable();\r\n\r\n\t\t/* Reset the autocomplete input text value */\r\n\t\tif (input) {\r\n\t\t\tinput.value = '';\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Removes all chips\r\n\t */\r\n\tpublic clear(triggerStateChanges: boolean = true): void {\r\n\t\t/* Remove key from chips array */\r\n\t\tthis.value = null;\r\n\t\tthis.chips = [];\r\n\r\n\t\t/* Mark the control as touched */\r\n\t\tif (this.ngControl.control) {\r\n\t\t\tthis.ngControl.control.markAsTouched();\r\n\t\t}\r\n\r\n\t\t/* Reset the value (ngModel) */\r\n\t\tthis.autoCompleteChipList.setValue(\"\");\r\n\r\n\t\tif (triggerStateChanges) {\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\r\n\t\t/* Enable the input */\r\n\t\tthis.autoCompleteChipList.enable();\r\n\t}\r\n\r\n\t/**\r\n\t * Filters options\r\n\t * @param text \r\n\t */\r\n\tprivate filterOptions(text: string) {\r\n\t\tthis.filteredOptions = [];\r\n\t\tif (this.endpoint && typeof text === 'string' && text.length >= this.termMinlength) {\r\n\t\t\t/* Init params if null */\r\n\t\t\tthis._params = this._params || {};\r\n\r\n\t\t\t/* Add search word to the params */\r\n\t\t\tif (this.searchField && this.searchFields.length <= 0) {\r\n\t\t\t\tvar result = new RegExp(`(\\\\${this.searchOperators.join('|\\\\')})?(.*)`).exec(this.searchField);\r\n\t\t\t\tthis._params[result[2]] = `${result[1] ? result[1] : ''}${text}`;\r\n\t\t\t}\r\n\r\n\t\t\t/* Add search word to the params */\r\n\t\t\tthis.searchFields?.map(x => x.trim())?.forEach(x => {\r\n\t\t\t\tvar result = new RegExp(`(\\\\${this.searchOperators.join('|\\\\')})?(.*)`).exec(x);\r\n\t\t\t\tthis._params[result[2]] = `${result[1] ? result[1] : ''}${text}`;\r\n\t\t\t});\r\n\r\n\t\t\t/* Add limit to the params */\r\n\t\t\tthis._params.limit = this.limit;\r\n\r\n\t\t\t/* Add projection, if any */\r\n\t\t\tif (this.projection) {\r\n\t\t\t\tthis._params.projection = this.projection;\r\n\t\t\t}\r\n\r\n\t\t\t/* Get results from server */\r\n\t\t\tthis.loading = true;\r\n\t\t\tthis.http.get(`${this.endpoint}${this.path || ''}`, { params: Utils.cleanObject(this._params) })\r\n\t\t\t\t.subscribe((x: any[]) => {\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\tthis.filteredOptions = x;\r\n\t\t\t\t\tthis.emptyResult = !x || !x.length;\r\n\t\t\t\t}, _ => this.loading = false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles launch button click\r\n\t */\r\n\tpublic handleLaunchClicked(): void {\r\n\t\tif (this.chips?.length > 0) {\r\n\t\t\tthis.onLaunch.emit(this.chips[0]);\r\n\t\t}\r\n\t}\r\n}","<mat-chip-list #chipList [required]=\"required\" [disabled]=\"readonly\">\r\n\t<!-- #region Chips -->\r\n\t<ng-template let-chip let-first=\"first\" let-index=\"index\" ngFor [ngForOf]=\"chips\">\r\n\t\t<mat-basic-chip [selectable]=\"!readonly\" [removable]=\"!readonly\" (removed)=\"cleared.observers.length?cleared.emit(value):clear()\" disableRipple>\r\n\t\t\t<span class=\"vd-chip-content\">\r\n\t\t\t\t<span *ngIf=\"!chipTemplate?.templateRef\">\r\n\t\t\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ chip }}</span>\r\n\t\t\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: chip }\"></ng-template>\r\n\t\t\t\t</span>\r\n\t\t\t\t<ng-template *ngIf=\"chipTemplate?.templateRef\" [ngTemplateOutlet]=\"chipTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ chip: chip }\"></ng-template>\r\n\t\t\t</span>\r\n\t\t\t<mat-icon *ngIf=\"onLaunch?.observers?.length > 0\" class=\"vd-chip-launch\" [ngClass]=\"{'removable': !readonly}\" (click)=\"$event.stopPropagation(); handleLaunchClicked()\">launch</mat-icon>\r\n\t\t\t<mat-icon matChipRemove *ngIf=\"!readonly\">backspace</mat-icon>\r\n\t\t</mat-basic-chip>\r\n\t</ng-template>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Search box -->\r\n\t<input matInput [hidden]=\"value && !empty\" placeholder=\"{{placeholder}}\" [readonly]=\"readonly\" [matChipInputFor]=\"chipList\" [matAutocomplete]=\"auto\" [formControl]=\"autoCompleteChipList\" #chipInput />\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Progress -->\r\n\t<mat-spinner diameter=\"18\" *ngIf=\"loading\"></mat-spinner>\r\n\t<!-- #endregion -->\r\n</mat-chip-list>\r\n\r\n<!-- #region Autocomplete -->\r\n<mat-autocomplete #auto=\"matAutocomplete\" (optionSelected)=\"addChip($event, chipInput)\">\r\n\t<ng-template let-item let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n\t\t<mat-option [value]=\"item\">\r\n\t\t\t<span *ngIf=\"!autocompleteOptionTemplate?.templateRef\">{{ item }}</span>\r\n\t\t\t<ng-template *ngIf=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutlet]=\"autocompleteOptionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: item }\"></ng-template>\r\n\t\t</mat-option>\r\n\t</ng-template>\r\n</mat-autocomplete>\r\n<!-- #endregion -->","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { VdAutocompleteOptionDirective, VdChipDirective, VdChipsComponent } from './components/chips.component';\r\n\r\nconst DECLARATIONS = [\r\n\tVdChipsComponent,\r\n\tVdAutocompleteOptionDirective,\r\n\tVdChipDirective\r\n];\r\n\r\nconst MATRIAL_DECLARATIONS = [\r\n\tMatChipsModule,\r\n\tMatIconModule,\r\n\tMatInputModule,\r\n\tMatSelectModule,\r\n\tMatAutocompleteModule,\r\n\tMatProgressSpinnerModule\r\n]\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMATRIAL_DECLARATIONS\r\n\t],\r\n\tdeclarations: [\r\n\t\tDECLARATIONS\r\n\t],\r\n\texports: [\r\n\t\tDECLARATIONS\r\n\t]\r\n})\r\nexport class VdChipsModule { }","import { CommonModule } from '@angular/common';\r\nimport { NgModule, Type } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { VdAlertDialogComponent } from './alert-dialog/alert-dialog.component';\r\nimport { VdConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';\r\nimport { VdDialogActionsDirective, VdDialogComponent, VdDialogContentDirective, VdDialogTitleDirective } from './dialog.component';\r\nimport { VdPromptDialogComponent } from './prompt-dialog/prompt-dialog.component';\r\nimport { DIALOG_PROVIDER } from './services/dialog.service';\r\n\r\nexport { IAlertConfig, IConfirmConfig, IPromptConfig, VdDialogService } from './services/dialog.service';\r\nexport { VdDialogComponent, VdDialogTitleDirective, VdAlertDialogComponent, VdConfirmDialogComponent, VdPromptDialogComponent, VdDialogActionsDirective, VdDialogContentDirective };\r\n\r\nconst VD_DIALOGS: Type<any>[] = [\r\n\tVdAlertDialogComponent,\r\n\tVdConfirmDialogComponent,\r\n\tVdPromptDialogComponent,\r\n\tVdDialogComponent,\r\n\tVdDialogTitleDirective,\r\n\tVdDialogActionsDirective,\r\n\tVdDialogContentDirective,\r\n];\r\n\r\nconst VD_DIALOGS_ENTRY_COMPONENTS: Type<any>[] = [\r\n\tVdAlertDialogComponent,\r\n\tVdConfirmDialogComponent,\r\n\tVdPromptDialogComponent,\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tFormsModule,\r\n\t\tCommonModule,\r\n\t\tMatDialogModule,\r\n\t\tMatInputModule,\r\n\t\tMatButtonModule\r\n\t],\r\n\tdeclarations: [\r\n\t\tVD_DIALOGS,\r\n\t],\r\n\texports: [\r\n\t\tVD_DIALOGS,\r\n\t],\r\n\tproviders: [\r\n\t\tDIALOG_PROVIDER\r\n\t],\r\n\tentryComponents: [\r\n\t\tVD_DIALOGS_ENTRY_COMPONENTS,\r\n\t],\r\n})\r\nexport class VdDialogsModule { }","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, OnDestroy, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\n\r\nconst noop = () => { };\r\nlet nextUniqueId = 0;\r\n\r\n@Component({\r\n\tselector: '[vd-file-input]',\r\n\ttemplate: `\r\n\t\t<div layout=\"row\" flex>\r\n\t\t\t<input matInput #fileElement [(ngModel)]=\"value\" (click)=\"fileInput.click()\" readonly=\"true\" [placeholder]=\"placeholder\" [disabled]=\"disabled\" [required]=\"required\">\r\n\t\t\t<input hidden type=\"file\" [accept]=\"accept\" #fileInput (change)=\"handleSelect($event.target.files)\" />\r\n\t\t\t<div class=\"btn-suffix\">\r\n\t\t\t\t<button type=\"button\" mat-button *ngIf=\"!value\" matSuffix mat-icon-button (click)=\"fileInput.click()\">\r\n\t\t\t\t\t<mat-icon>file_upload</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button type=\"button\" mat-button *ngIf=\"value\" matSuffix mat-icon-button (click)=\"clear()\">\r\n\t\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>`,\r\n\tstyles: [`\r\n\t\t.btn-suffix .mat-button {\r\n\t\t\tposition: absolute;\r\n\t\t\tright: 0;\r\n\t\t\ttop: 0;\r\n\t\t}`\r\n\t],\r\n\tproviders: [\r\n\t\t{ provide: MatFormFieldControl, useExisting: VdFileInputComponent }\r\n\t]\r\n})\r\nexport class VdFileInputComponent implements MatFormFieldControl<any>, ControlValueAccessor, OnDestroy {\r\n\r\n\t/** \r\n\t * A name for this control that can be used by `vd-file-input`.\r\n\t */\r\n\tpublic controlType = 'vd-file-input';\r\n\r\n\t/**\r\n\t * Because the <mat-form-field> uses the OnPush change detection strategy, we need \r\n\t * to let it know when something happens in the form field control that may require \r\n\t * the form field to run change detection. We do this via the stateChanges property. \r\n\t * So far the only thing the form field needs to know about is when the value changes. \r\n\t * We'll need to emit on the stateChanges stream when that happens, and as we continue \r\n\t * flushing out these properties we'll likely find more places we need to emit. We \r\n\t * should also make sure to complete stateChanges when our component is destroyed.\r\n\t */\r\n\tpublic stateChanges = new Subject<void>();\r\n\r\n\t/** \r\n\t * The placeholder displayed in the trigger of the select.\r\n\t */\r\n\tprivate _placeholder: string;\r\n\r\n\t/**\r\n\t * This property is used to indicate whether the input is focused.\r\n\t */\r\n\tpublic _focused: boolean = false;\r\n\r\n\t/**\r\n\t * This property tells the form field when it should be in the disabled state.\r\n\t */\r\n\tpublic _disabled: boolean = false;\r\n\r\n\t/**\r\n\t * This property is used to indicate whether the input is required.\r\n\t */\r\n\tpublic _required: boolean = false;\r\n\r\n\t/**\r\n\t * This property is used to indicate whether the input support multiple files.\r\n\t */\r\n\tpublic _multiple: boolean = false;\r\n\r\n\t/**\r\n\t * This property allows someone to set or get the value of our control.\r\n\t */\r\n\tpublic _value: string;\r\n\r\n\t/**\r\n\t * accept?: string\r\n\t * Sets files accepted when opening the file browser dialog.\r\n\t * Same as 'accept' attribute in <input/> element.\r\n\t */\r\n\t@Input('accept') accept: string;\r\n\r\n\t/**\r\n\t * select?: function\r\n\t * Event emitted a file is selected\r\n\t * Emits a [File | FileList] object.\r\n\t */\r\n\t@Output('select') onSelect: EventEmitter<File | FileList> = new EventEmitter<File | FileList>();\r\n\r\n\t/**\r\n\t* clear?: function\r\n\t* Event emitted a file is cleared\r\n\t*/\r\n\t@Output('clear') onClear: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/** \r\n\t * The input element\r\n\t */\r\n\t@ViewChild('fileElement', { static: true }) _inputElement: ElementRef;\r\n\tget inputElement(): HTMLInputElement {\r\n\t\treturn this._inputElement.nativeElement;\r\n\t}\r\n\r\n\t/** \r\n\t * The native `<input type=\"file\"> element\r\n\t */\r\n\t@ViewChild('fileInput', { static: true }) _fileInputElement: ElementRef;\r\n\tget fileInputElement(): HTMLInputElement {\r\n\t\treturn this._fileInputElement.nativeElement;\r\n\t}\r\n\r\n\t/**\r\n\t * Setters and getters for the input value.\r\n\t * Its type should be the same type we used for the type parameter when we \r\n\t * implemented MatFormFieldControl. Since our component already has a value \r\n\t * property, we don't need to do anything for this one.\r\n\t */\r\n\tget value(): string { return this._value };\r\n\tset value(v: string) {\r\n\t\tif (v !== this._value) {\r\n\t\t\tthis._value = v;\r\n\t\t\tthis.onChangeCallback(v);\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/** \r\n\t * Whether the input is focused.\r\n\t */\r\n\tget focused() { return this._inputElement.nativeElement.focused; }\r\n\r\n\t/** \r\n\t * Whether the input has a value.\r\n\t */\r\n\tget empty(): boolean { return !this.value; }\r\n\r\n\t/** \r\n\t * Placeholder to be shown if no value has been selected.\r\n\t * Since the value of the placeholder may change over time, we need to make sure to \r\n\t * trigger change detection in the parent form field by emitting on the stateChanges \r\n\t * stream when the placeholder changes.\r\n\t */\r\n\t@Input()\r\n\tget placeholder() { return this._placeholder; }\r\n\tset placeholder(value: string) {\r\n\t\tthis._placeholder = value;\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Whether the input is required.\r\n\t * Again, we'll want to make sure we run change detection if the required state changes.\r\n\t */\r\n\t@Input()\r\n\tget required() { return this._required; }\r\n\tset required(req) {\r\n\t\tthis._required = coerceBooleanProperty(req);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Whether the input is multiple.\r\n\t * Again, we'll want to make sure we run change detection if the required state changes.\r\n\t */\r\n\t@Input()\r\n\tget multiple() { return this._multiple; }\r\n\tset multiple(req) {\r\n\t\tthis._multiple = coerceBooleanProperty(req);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/**\r\n\t * In addition to reporting the right state to the form field, we need to \r\n\t * set the disabled state on the individual inputs that make up our component.\r\n\t */\r\n\t@Input()\r\n\tget disabled() { return this._disabled; }\r\n\tset disabled(dis) {\r\n\t\tthis._disabled = coerceBooleanProperty(dis);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t@Input() get errorState() {\r\n\t\treturn this.ngControl.errors !== null && this.ngControl.touched;\r\n\t}\r\n\r\n\t/**\r\n\t * This property should return the ID of an element in the component's template \r\n\t * that we want the <mat-form-field> to associate all of its labels and hints with. \r\n\t * In this case, we'll use the host element and just generate a unique ID for it.\r\n\t */\r\n\t@HostBinding() id = `vd-file-input-${nextUniqueId++}`;\r\n\r\n\t/**\r\n\t * This property is used to indicate whether the label should be in the floating position.\r\n\t * We'll use the same logic as matInput and float the placeholder when the input is focused\r\n\t * or non-empty. Since the placeholder will be overlapping our control when when it's not \r\n\t * floating, we should hide the – characters when it's not floating.\r\n\t */\r\n\t@HostBinding('class.floating')\r\n\tget shouldLabelFloat() {\r\n\t\treturn this.focused || !this.empty;\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param _merchantService \r\n\t */\r\n\tconstructor(public ngControl: NgControl, private fm: FocusMonitor, private _elementRef: ElementRef, private _renderer: Renderer2, private _changeDetectorRef: ChangeDetectorRef) {\r\n\t\tngControl.valueAccessor = this;\r\n\t\tfm.monitor(_elementRef.nativeElement, true).subscribe(origin => {\r\n\t\t\tthis._focused = !!origin;\r\n\t\t\tthis.stateChanges.next();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t* Method executed when a file is selected.\r\n\t*/\r\n\thandleSelect(files: FileList): void {\r\n\t\tlet file = files[0];\r\n\t\tif (file) {\r\n\t\t\tthis.writeValue(file.name);\r\n\t\t\tthis.onSelect.emit(file);\r\n\t\t} else {\r\n\t\t\tthis.writeValue(null);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t* Used to clear the selected files from the [VdFileInputComponent].\r\n\t*/\r\n\tclear(): void {\r\n\t\tthis.writeValue(null);\r\n\t\tthis._renderer.setProperty(this.inputElement, 'value', null);\r\n\t\tthis.onClear.emit(null);\r\n\t}\r\n\r\n\t/** Method executed when the disabled value changes */\r\n\tonDisabledChange(v: boolean): void {\r\n\t\tif (v) {\r\n\t\t\tthis.clear();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t* Implemented as part of ControlValueAccessor.\r\n\t*/\r\n\twriteValue(value: any): void {\r\n\t\tthis.value = value;\r\n\r\n\t\tif (this.ngControl && this.ngControl.control) {\r\n\t\t\tthis.ngControl.control.markAsTouched();\r\n\t\t\tthis.ngControl.control.markAsDirty();\r\n\t\t}\r\n\r\n\t\tthis._changeDetectorRef.markForCheck();\r\n\r\n\t\tif (!value) {\r\n\t\t\tthis.fileInputElement.value = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * From ControlValueAccessor interface\r\n\t * @param fn \r\n\t */\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.onChangeCallback = fn;\r\n\t}\r\n\r\n /**\r\n\t * From ControlValueAccessor interface\r\n\t * @param fn \r\n\t */\r\n\tregisterOnTouched(fn: any) {\r\n\t\tthis.onTouchedCallback = fn;\r\n\t}\r\n\r\n\t/**\r\n\t * Placeholders for the callbacks which are later providesd \r\n\t * by the Control Value Accessor\r\n\t */\r\n\tprivate onChangeCallback: (_: any) => void = noop;\r\n\tprivate onTouchedCallback: () => void = noop;\r\n\r\n\t/**\r\n\t * This method is used by the <mat-form-field> to specify the IDs that \r\n\t * should be used for the aria-describedby attribute of your component. \r\n\t * The method has one parameter, the list of IDs, we just need to apply\r\n\t * the given IDs to our host element.\r\n\t */\r\n\t@HostBinding('attr.aria-describedby') describedBy = '';\r\n\tsetDescribedByIds(ids: string[]) {\r\n\t\tthis.describedBy = ids.join(' ');\r\n\t}\r\n\r\n\t/**\r\n\t * This method will be called when the form field is clicked on. \r\n\t * It allows the component to hook in and handle that click however it wants. \r\n\t * The method has one parameter, the MouseEvent for the click. In our case we'll \r\n\t * just focus the first <input> if the user isn't about to click an <input> anyways.\r\n\t * @param event \r\n\t */\r\n\tonContainerClick(event: MouseEvent) {\r\n\t\tthis.inputElement.focus();\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called when a directive, pipe or service is destroyed.\r\n\t */\r\n\tngOnDestroy() {\r\n\t\tthis.stateChanges.complete();\r\n\t\tthis.fm.stopMonitoring(this._elementRef.nativeElement);\r\n\t}\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { VdFileInputComponent } from './file-input.component';\r\n\r\nexport { VdFileInputComponent } from './file-input.component';\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tMatInputModule,\r\n\t\tMatIconModule,\r\n\t\tMatButtonModule\r\n\t],\r\n\tdeclarations: [VdFileInputComponent],\r\n\texports: [VdFileInputComponent]\r\n})\r\nexport class VdFileModule { }","export enum FormFieldType {\r\n Text,\r\n TextArea,\r\n Checkbox,\r\n Radio,\r\n Enum,\r\n Select,\r\n VdSelect,\r\n VdChips,\r\n Date,\r\n Toggle,\r\n Editor,\r\n Code,\r\n File,\r\n Autocomplete,\r\n Custom = 100\r\n}","import { FocusMonitor } from '@angular/cdk/a11y';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { CdkPortal } from '@angular/cdk/portal';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { AfterViewInit, Component, ContentChild, Directive, ElementRef, EventEmitter, Injector, Input, Optional, Output, Self, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';\r\nimport { FormGroupDirective, NgControl, NgForm } from '@angular/forms';\r\nimport { ErrorStateMatcher } from '@angular/material/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { MatSelect } from '@angular/material/select';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { EnumService } from '../common/common.module';\r\nimport { AbstractMatFormField } from '../forms/helpers/abstract-mat-form-field';\r\n\r\n/**\r\n * VdSelectOptionDirective class\r\n */\r\n@Directive({ selector: '[vd-select-option]ng-template' })\r\nexport class VdSelectOptionDirective extends CdkPortal {\r\n\t/**\r\n\t * Constructor\r\n\t * @param templateRef \r\n\t * @param viewContainerRef \r\n\t */\r\n\tconstructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n\t\tsuper(templateRef, viewContainerRef);\r\n\t}\r\n}\r\n\r\n/**\r\n * VdSelectComponent class\r\n */\r\n@Component({\r\n\tselector: 'vd-select',\r\n\ttemplateUrl: 'select.component.html',\r\n\tstyleUrls: ['select.component.scss'],\r\n\tproviders: [{ provide: MatFormFieldControl, useExisting: VdSelectComponent }]\r\n})\r\nexport class VdSelectComponent extends AbstractMatFormField<any> implements AfterViewInit {\r\n\r\n\t/**\r\n\t * The http service from to get the data\r\n\t */\r\n\tprotected http: HttpClient = null;\r\n\r\n\t/**\r\n\t * VdChip template\r\n\t */\r\n\t@ContentChild(VdSelectOptionDirective)\r\n\tpublic optionTemplate: VdSelectOptionDirective;\r\n\r\n\t/** \r\n\t * The select element.\r\n\t */\r\n\t@ViewChild(MatSelect, { static: false })\r\n\tpublic selectEl: MatSelect;\r\n\r\n\t/** \r\n\t * The select element.\r\n\t */\r\n\t@ViewChild('filterInput', { static: false })\r\n\tpublic filterInput: ElementRef;\r\n\r\n\t/**\r\n\t * Multiple select option\r\n\t */\r\n\tpublic _multiple: boolean = false;\r\n\r\n\t/**\r\n\t * Multiple select option\r\n\t */\r\n\t@Input()\r\n\tget multiple() { return this._multiple; }\r\n\tset multiple(multi) {\r\n\t\tthis._multiple = coerceBooleanProperty(multi);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/**\r\n\t * Gets the control is disabled.\r\n\t * @param disabled\r\n\t */\r\n\t@Input()\r\n\tpublic set disabled(disabled: any) {\r\n\t\tthis._disabled = coerceBooleanProperty(disabled);\r\n\t\tif (this.focused) {\r\n\t\t\tthis.focused = false;\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets the disabled.\r\n\t * @param disabled\r\n\t */\r\n\tpublic get disabled() {\r\n\t\tif (this._readonly) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn super.disabled;\r\n\t}\r\n\r\n\t/**\r\n\t * Sorts options\r\n\t */\r\n\tpublic _sorted: boolean = true;\r\n\r\n\t/**\r\n\t * Sorts options\r\n\t */\r\n\t@Input()\r\n\tget sorted() { return this._sorted; }\r\n\tset sorted(multi) {\r\n\t\tthis._sorted = coerceBooleanProperty(multi);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\t/**\r\n\t * textPrefix?: any\r\n\t */\r\n\t@Input()\r\n\tpublic textPrefix: string = '';\r\n\r\n\t/** \r\n\t * Whether the select has a value.\r\n\t */\r\n\tget empty(): boolean {\r\n\t\treturn this._readonly ? !this.currentValue : !this.selectEl?._selectionModel || this.selectEl?._selectionModel?.isEmpty();\r\n\t}\r\n\r\n\t/**\r\n\t * Represents a value that changes over time. \r\n\t * Observers can subscribe to the subject to receive pdf file changes\r\n\t */\r\n\tprivate _endpointChange = new BehaviorSubject(null);\r\n\r\n\t/**\r\n\t * _endpoint: string\r\n\t */\r\n\tpublic _endpoint: string;\r\n\r\n\t/**\r\n\t * Gets pdf endpoint\r\n\t */\r\n\t@Input()\r\n\tget endpoint(): string { return this._endpoint; }\r\n\tset endpoint(endpoint: string) {\r\n\t\tthis._endpoint = endpoint;\r\n\t\tthis._endpointChange.next([this.endpoint, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * _params: any\r\n\t */\r\n\tpublic _params: any = {};\r\n\r\n\t/**\r\n\t * params: any\r\n\t */\r\n\t@Input()\r\n\tget params() { return this._params; }\r\n\tset params(query: any) {\r\n\t\tthis._params = query;\r\n\r\n\t\t/* Remove empty params */\r\n\t\tObject.keys(this._params).forEach((key) => {\r\n\t\t\tif ((this._params[key] == null || this._params[key] == '' || this._params[key] == 'undefined')) {\r\n\t\t\t\tdelete this._params[key];\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis._endpointChange.next([this.endpoint, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * _projection: any\r\n\t */\r\n\tpublic _projection: string;\r\n\r\n\t/**\r\n\t * projection: any\r\n\t */\r\n\t@Input()\r\n\tget projection() { return this._projection; }\r\n\tset projection(projection: string) {\r\n\t\tthis._projection = projection;\r\n\t\tthis._endpointChange.next([this.endpoint, this.params, this.projection]);\r\n\t}\r\n\r\n\t/**\r\n\t * Gets current value\r\n\t */\r\n\tget currentValue(): any {\r\n\t\tif (this.multiple) {\r\n\t\t\treturn this.options?.filter((x: any) => (this._value || []).includes(x[this.key]));\r\n\t\t}\r\n\r\n\t\treturn this.options?.filter((x: any) => x[this.key] == this._value)[0];\r\n\t}\r\n\r\n\t/**\r\n\t * The name of the endpoint\r\n\t */\r\n\t@Input()\r\n\tprivate enum: any;\r\n\r\n\t/**\r\n\t * The key\r\n\t */\r\n\t@Input()\r\n\tpublic key: any = 'id';\r\n\r\n\t/**\r\n\t * The text\r\n\t */\r\n\t@Input()\r\n\tpublic text: any = 'name';\r\n\r\n\t/**\r\n\t * The prefix\r\n\t */\r\n\t@Input()\r\n\tpublic prefix: any = '';\r\n\r\n\t/**\r\n\t * Option list\r\n\t */\r\n\t@Input()\r\n\tpublic options: any;\r\n\r\n\t/**\r\n\t * filtered option list\r\n\t */\r\n\t@Input()\r\n\tpublic filteredOptions: any;\r\n\r\n\t/**\r\n\t * filterable?\r\n\t */\r\n\t@Input()\r\n\tpublic filterable: boolean = true;\r\n\r\n\t/**\r\n\t * cache?\r\n\t */\r\n\t@Input()\r\n\tpublic cache: boolean = true;\r\n\r\n\t/**\r\n\t * sortBy?\r\n\t */\r\n\t@Input()\r\n\tpublic sortBy: string;\r\n\r\n\t/**\r\n\t * change?: function\r\n\t */\r\n\t@Output('change') onValueChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * itemChange?: function\r\n\t */\r\n\t@Output('itemChange') onItemChange: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * selected?: function\r\n\t */\r\n\t@Output('selected') onSelected: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * itemSelected?: function\r\n\t */\r\n\t@Output('itemSelected') onItemSelected: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * launch?: function\r\n\t */\r\n\t@Output('launch') onLaunch: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * searchField?: function\r\n\t */\r\n\t@Input() searchField: (x: any) => string;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param ngControl \r\n\t * @param parentForm \r\n\t * @param parentFormGroup \r\n\t * @param defaultErrorStateMatcher \r\n\t * @param focusMonitor \r\n\t * @param elementRef \r\n\t */\r\n\tconstructor(protected injector: Injector, @Optional() @Self() ngControl: NgControl, @Optional() parentForm: NgForm, @Optional() parentFormGroup: FormGroupDirective, defaultErrorStateMatcher: ErrorStateMatcher, focusMonitor: FocusMonitor, elementRef: ElementRef) {\r\n\t\tsuper(\"app-vd-select\", ngControl, parentForm, parentFormGroup, defaultErrorStateMatcher, focusMonitor, elementRef);\r\n\t\tif (!this.enum) {\r\n\t\t\tthis.http = injector.get(HttpClient);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after a component's \r\n\t * view has been fully initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tif (this.enum) {\r\n\t\t\tthis.filterable = false;\r\n\t\t\tthis.filteredOptions = this.options = EnumService.toArray(this.enum, this.prefix);\r\n\r\n\t\t\tif (Array.isArray(this.options)) {\r\n\t\t\t\tthis.handleItemSelected(this.value);\r\n\t\t\t}\r\n\t\t} else if (!this.options) {\r\n\t\t\tthis._endpointChange.pipe(distinctUntilChanged()).pipe(debounceTime(1)).subscribe(_ => {\r\n\t\t\t\tlet headers = new HttpHeaders();\r\n\t\t\t\tif (this.cache) {\r\n\t\t\t\t\theaders.set('Client-Cache', 'Yes');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Init params, if null */\r\n\t\t\t\tthis._params ||= {};\r\n\r\n\t\t\t\t/* Add projection, if any */\r\n\t\t\t\tif (this.projection) {\r\n\t\t\t\t\tthis._params.projection = this.projection;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Add sorting */\r\n\t\t\t\tif (!this._params.sortBy && (this.sortBy || this.sorted)) {\r\n\t\t\t\t\tthis._params.sortBy = this.sortBy || this.text;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t/* Get result from server */\r\n\t\t\t\tthis.http.get(this.endpoint, { params: this._params, headers: headers }).subscribe(x => {\r\n\t\t\t\t\tthis.filteredOptions = this.options = x;\r\n\r\n\t\t\t\t\tif (Array.isArray(this.options)) {\r\n\t\t\t\t\t\tthis.handleItemSelected(this.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A callback method that is invoked immediately after\r\n\t * Angular has completed initialization of a component's view.\r\n\t * It is invoked only once when the view is instantiated.\r\n\t *\r\n\t */\r\n\tngAfterViewInit(): void {\r\n\t\tthis.selectEl?.openedChange?.subscribe(x => {\r\n\t\t\tif (x && this.filterable) {\r\n\t\t\t\tthis.filterInput?.nativeElement.focus();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Sets control focus\r\n\t */\r\n\tpublic focus(): void {\r\n\t\tthis.selectEl?.focus();\r\n\t\tthis.selectEl?.open();\r\n\t}\r\n\r\n\t/**\r\n\t * From ControlValueAccessor interface\r\n\t * @param value \r\n\t */\r\n\twriteValue(value: any) {\r\n\t\tsuper.writeValue(value);\r\n\t\tthis.onSelected.emit(value);\r\n\r\n\t\tif (Array.isArray(this.options)) {\r\n\t\t\tthis.handleItemSelected(this.value);\r\n\t\t}\r\n\r\n\t\tif (!this.value) {\r\n\t\t\tthis.selectEl?.writeValue(null);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Method executed when an option changes\r\n\t */\r\n\tpublic handleChange($event: any): void {\r\n\t\tthis.onValueChange.emit($event);\r\n\t\tthis.handleItemChange($event.value);\r\n\t}\r\n\r\n\t/**\r\n\t * Handles item changes\r\n\t * @param value \r\n\t */\r\n\tpublic handleItemSelected(value: any): void {\r\n\t\tif (this.multiple) {\r\n\t\t\tthis.onItemSelected.emit(this.options.filter((x: any) => (value || []).includes(x[this.key])));\r\n\t\t} else {\r\n\t\t\tthis.onItemSelected.emit(this.options.filter((x: any) => x[this.key] == value)[0]);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles item changes\r\n\t * @param value \r\n\t */\r\n\tpublic handleItemChange(value: any): void {\r\n\t\tif (this.multiple) {\r\n\t\t\tthis.onItemChange.emit(this.options.filter((x: any) => (value || []).includes(x[this.key])));\r\n\t\t} else {\r\n\t\t\tthis.onItemChange.emit(this.options.filter((x: any) => x[this.key] == value)[0]);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles launch button click\r\n\t * @param value \r\n\t */\r\n\tpublic handleLaunchClicked(value: any): void {\r\n\t\tif (this.multiple) {\r\n\t\t\tthis.onLaunch.emit(this.options.filter((x: any) => (value || []).includes(x[this.key])));\r\n\t\t} else {\r\n\t\t\tthis.onLaunch.emit(this.options.filter((x: any) => x[this.key] == value)[0]);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handels filter event\r\n\t * @param searchText \r\n\t */\r\n\tpublic handleFilter(searchText: string): void {\r\n\t\tif (this.searchField) {\r\n\t\t\tthis.filteredOptions = this.options.filter((x: any) => this.searchField(x)?.toLowerCase().search(searchText.toLowerCase()) > -1);\r\n\t\t} else {\r\n\t\t\tthis.filteredOptions = this.options.filter((x: any) => x[this.text]?.toLowerCase().search(searchText.toLowerCase()) > -1);\r\n\t\t}\r\n\t}\r\n}","<mat-select [placeholder]=\"placeholder\" i18n-placeholder [(ngModel)]=\"value\" #select=\"matSelect\" (selectionChange)=\"handleChange($event)\" *ngIf=\"!readonly\" [multiple]=\"multiple\" [disabled]=\"disabled\" flex>\r\n <input #filterInput *ngIf=\"filterable\" type=\"text\" placeholder=\"Filter...\" class=\"vd-select-filter\" (keyup)=\"handleFilter($event.target.value)\">\r\n <mat-select-trigger *ngIf=\"onLaunch?.observers?.length > 0\">\r\n <span>{{select.selected?select.selected['viewValue']:''}}</span>\r\n <mat-icon class=\"vd-select-launch\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </mat-select-trigger>\r\n <mat-option class=\"tc-grey-500\" *ngIf=\"!multiple\" i18n=\"@@pleaseSelect\">--- Please Select ---</mat-option>\r\n <ng-template let-option let-first=\"first\" ngFor [ngForOf]=\"filteredOptions\">\r\n <mat-option [value]=\"option[key]\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\" i18n=\"@@selection\">{option[text], select, option {option} other {{{option[text]}}}}</span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: option }\"></ng-template>\r\n </mat-option>\r\n </ng-template>\r\n</mat-select>\r\n\r\n<div *ngIf=\"readonly\">\r\n <div *ngIf=\"currentValue\">\r\n <div class=\"readonly-value\">\r\n <span *ngIf=\"!optionTemplate?.templateRef\">\r\n <span *ngIf=\"!multiple\" i18n=\"@@selection\">{currentValue[text], select, option {option} other {{{currentValue[text]}}}}</span>\r\n <ng-container *ngIf=\"multiple\">\r\n <span *ngFor=\"let optionValue of currentValue; let last = last\">\r\n <span i18n=\"@@selection\">{optionValue[text], select, option {option} other {{{optionValue[text]}}}}</span>\r\n <span *ngIf=\"!last\">,&nbsp;</span>\r\n </span>\r\n </ng-container>\r\n </span>\r\n <ng-template *ngIf=\"optionTemplate?.templateRef\" [ngTemplateOutlet]=\"optionTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ option: currentValue }\"></ng-template>\r\n </div>\r\n <mat-icon *ngIf=\"onLaunch?.observers?.length > 0\" class=\"vd-select-launch-readonly\" (click)=\"$event.stopPropagation(); handleLaunchClicked(value)\">launch</mat-icon>\r\n </div>\r\n <div *ngIf=\"!currentValue\">&nbsp;</div>\r\n</div>","import { Directive } from '@angular/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\nimport { MatInput } from '@angular/material/input';\r\n\r\n@Directive({\r\n selector: 'mat-form-field',\r\n host: { '[class.mat-form-field-readonly]': 'isReadonlyInput()' }\r\n})\r\nexport class MatFormFieldReadonlyDirective {\r\n\r\n /**\r\n * Constructor\r\n * @param matFormField \r\n */\r\n constructor(private matFormField: MatFormField) { }\r\n\r\n /**\r\n * Checks if the control is readonly\r\n */\r\n public isReadonlyInput(): boolean {\r\n if (this.matFormField?._control instanceof MatInput) {\r\n return this.matFormField._control.readonly;\r\n }\r\n\r\n return false;\r\n }\r\n}","import { CdkPortal } from '@angular/cdk/portal';\r\nimport { Component, ContentChild, Directive, Input, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { FormFieldType } from '../../enums/form-field-type';\r\nimport { FormFieldDefinition } from '../../models/form-field-definition';\r\nimport { FormFieldGroup } from '../../models/form-field-group';\r\n\r\n/**\r\n * VdEditorDirective class\r\n */\r\n@Directive({ selector: '[vd-editor]ng-template' })\r\nexport class VdEditorDirective extends CdkPortal {\r\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n super(templateRef, viewContainerRef);\r\n }\r\n}\r\n\r\n/**\r\n * VdCodeDirective class\r\n */\r\n@Directive({ selector: '[vd-code]ng-template' })\r\nexport class VdCodeDirective extends CdkPortal {\r\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n super(templateRef, viewContainerRef);\r\n }\r\n}\r\n\r\n/**\r\n * VdFileDirective class\r\n */\r\n@Directive({ selector: '[vd-file]ng-template' })\r\nexport class VdFileDirective extends CdkPortal {\r\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n super(templateRef, viewContainerRef);\r\n }\r\n}\r\n\r\n/**\r\n * VdCustomDirective class\r\n */\r\n@Directive({ selector: '[vd-custom]ng-template' })\r\nexport class VdCustomDirective extends CdkPortal {\r\n constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef) {\r\n super(templateRef, viewContainerRef);\r\n }\r\n}\r\n\r\n@Component({\r\n selector: 'vd-generic-form',\r\n templateUrl: './generic-form.component.html',\r\n styleUrls: ['./generic-form.component.scss']\r\n})\r\nexport class VdGenericFormComponent implements OnInit {\r\n /**\r\n * form: FormGroup\r\n */\r\n @Input()\r\n public formGroup: FormGroup;\r\n\r\n /**\r\n * fieldGroups: FormFieldGroup[]\r\n */\r\n @Input()\r\n public fieldGroups: FormFieldGroup[];\r\n\r\n /**\r\n * Group name\r\n */\r\n @Input()\r\n public groupName: string;\r\n\r\n /**\r\n * fieldRows: FormFieldDefinition[]\r\n */\r\n public fieldRows: [FormFieldDefinition[]];\r\n\r\n /**\r\n * FormFieldType: typeof FormFieldType\r\n */\r\n public FormFieldType: typeof FormFieldType = FormFieldType;\r\n\r\n /**\r\n * Editor template\r\n */\r\n @ContentChild(VdEditorDirective)\r\n public editorTemplate: VdEditorDirective;\r\n\r\n /**\r\n * Code template\r\n */\r\n @ContentChild(VdCodeDirective)\r\n public codeTemplate: VdCodeDirective;\r\n\r\n /**\r\n * File template\r\n */\r\n @ContentChild(VdFileDirective)\r\n public fileTemplate: VdFileDirective;\r\n\r\n /**\r\n * Custom template\r\n */\r\n @ContentChild(VdCustomDirective)\r\n public customTemplate: VdCustomDirective;\r\n\r\n /**\r\n * Filterd options for autocomplete\r\n */\r\n public autocompleteFilteredOptions: {} = {};\r\n\r\n /**\r\n * A callback method that is invoked immediately after the\r\n * default change detector has checked the directive's\r\n * data-bound properties for the first time,\r\n * and before any of the view or content children have been checked.\r\n * It is invoked only once when the directive is instantiated.\r\n */\r\n ngOnInit(): void {\r\n this.fieldRows = this.fieldGroups\r\n ?.filter(x => x.name?.trim() == this.groupName?.trim())[0]\r\n ?.groups;\r\n\r\n this.fieldRows?.filter(x => x.some(y => y.type == FormFieldType.Autocomplete))[0]?.forEach(x => {\r\n var control = this.formGroup.controls[x.name];\r\n if (control) {\r\n this.autocompleteFilteredOptions[x.name] = !control.value?.length ? x.options : x.options?.filter(option => option.name.toLowerCase().includes(control.value.toLowerCase()));\r\n control.valueChanges.subscribe(y => {\r\n this.autocompleteFilteredOptions[x.name] = x.options?.filter(option => option.name.toLowerCase().includes(y.toLowerCase()));\r\n });\r\n }\r\n });\r\n }\r\n}","<div *ngIf=\"formGroup && fieldRows\" [formGroup]=\"formGroup\">\r\n <!-- #region Fields -->\r\n <div layout-gt-sm=\"row\" layout=\"column\" *ngFor=\"let fields of fieldRows\">\r\n <ng-container *ngFor=\"let field of fields\" [ngSwitch]=\"field.type\">\r\n <!-- #region Error handling -->\r\n <ng-template #fieldErrors>\r\n <div *ngFor=\"let errorMessage of formGroup.controls[field.name]['errorMessages']\">{{errorMessage}}</div>\r\n </ng-template>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Text input -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Text\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input [type]=\"field.inputType\" [minlength]=\"field.minLength||null\" [maxlength]=\"field.maxLength||null\" matInput [formControlName]=\"field.name\">\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Text area -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.TextArea\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <textarea matInput [formControlName]=\"field.name\" rows=\"field.rows||2\"></textarea>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Enum -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Enum\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [enum]=\"field.enumType\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" flex></vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdSelect -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdSelect\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-select [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [projection]=\"field.projection\" [key]=\"field.optionValue\" [text]=\"field.optionText\" [multiple]=\"field.multiple\" flex></vd-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region VdChips -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.VdChips\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <vd-chips #vdChip [formControlName]=\"field.name\" [endpoint]=\"field.endpoint\" [searchField]=\"field.searchField\" [projection]=\"field.projection\" [key]=\"field.optionValue\" flex>\r\n <ng-template vd-chip let-chip=\"chip\" *ngIf=\"field.chipTemplate\">\r\n <div [outerHTML]=\"field.chipTemplate(chip)\"></div>\r\n </ng-template>\r\n <ng-template vd-autocomplete-option let-option=\"option\" *ngIf=\"field.autocompleteTemplate\">\r\n <div [outerHTML]=\"field.autocompleteTemplate(option)\"></div>\r\n </ng-template>\r\n </vd-chips>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-hint *ngIf=\"vdChip.emptyResult\" class=\"tc-red-400\" i18n=\"@@noResultsFound\">No results found</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Select -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Select\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <mat-select [formControlName]=\"field.name\" [multiple]=\"field.multiple\" flex>\r\n <mat-option *ngFor=\"let option of field.options\" [value]=\"option.id\">{{option.name}}</mat-option>\r\n </mat-select>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Autocomplete -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Autocomplete\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input type=\"text\" matInput [formControlName]=\"field.name\" [matAutocomplete]=\"auto\" autocomplete=\"false\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of autocompleteFilteredOptions[field.name]\" [value]=\"option.id\">\r\n {{option.name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Date -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <mat-form-field *ngSwitchCase=\"FormFieldType.Date\" [attr.flex]=\"field.flex||0\" layout-margin appearance=\"outline\">\r\n <mat-label>{{field.header}}</mat-label>\r\n <input matInput [formControlName]=\"field.name\" autocomplete=\"off\" [matDatepicker]=\"datePicker\">\r\n <mat-datepicker-toggle matSuffix [for]=\"datePicker\"></mat-datepicker-toggle>\r\n <mat-datepicker #datePicker></mat-datepicker>\r\n <mat-hint *ngIf=\"field.hint\">{{field.hint}}</mat-hint>\r\n <mat-error>\r\n <ng-container *ngTemplateOutlet=\"fieldErrors\"></ng-container>\r\n </mat-error>\r\n </mat-form-field>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Checkbox -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <div *ngSwitchCase=\"FormFieldType.Checkbox\" layout-margin appearance=\"outline\" class=\"pad-bottom-xs\">\r\n <mat-checkbox [formControlName]=\"field.name\">{{field.header}}</mat-checkbox>\r\n </div>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Editor -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <ng-container *ngSwitchCase=\"FormFieldType.Editor\">\r\n <ng-template *ngIf=\"editorTemplate?.templateRef\" [ngTemplateOutlet]=\"editorTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Code -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <ng-container *ngSwitchCase=\"FormFieldType.Code\">\r\n <ng-template *ngIf=\"codeTemplate?.templateRef\" [ngTemplateOutlet]=\"codeTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region File -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <ng-container *ngSwitchCase=\"FormFieldType.File\">\r\n <ng-template *ngIf=\"fileTemplate?.templateRef\" [ngTemplateOutlet]=\"fileTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n\r\n <!-- #region Custom -->\r\n <ng-container *ngIf=\"!field.hide || !field.hide(formGroup?.value)\">\r\n <ng-container *ngSwitchCase=\"FormFieldType.Custom\">\r\n <ng-template *ngIf=\"customTemplate?.templateRef\" [ngTemplateOutlet]=\"customTemplate?.templateRef\" [ngTemplateOutletContext]=\"{ field: field, formGroup: formGroup }\"></ng-template>\r\n </ng-container>\r\n </ng-container>\r\n <!-- #endregion -->\r\n </ng-container>\r\n </div>\r\n <!-- #endregion -->\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { VdSelectComponent, VdSelectOptionDirective } from './select.component';\r\n\r\nexport { VdSelectComponent } from './select.component';\r\n\r\nconst EXPORTED_DECLARATIONS = [\r\n\tVdSelectComponent,\r\n\tVdSelectOptionDirective\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tMatSelectModule,\r\n\t\tMatIconModule,\r\n\t\tMatButtonModule\r\n\t],\r\n\texports: [EXPORTED_DECLARATIONS],\r\n\tdeclarations: [EXPORTED_DECLARATIONS]\r\n})\r\nexport class VdSelectModule { }","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { AutofillMonitor } from '@angular/cdk/text-field';\r\nimport { Directive, DoCheck, ElementRef, EventEmitter, HostListener, Inject, Input, NgZone, Optional, Output, Self } from '@angular/core';\r\nimport { FormGroupDirective, NgControl, NgForm, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CanUpdateErrorState, ErrorStateMatcher, mixinErrorState } from '@angular/material/core';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { EditorComponent } from '@tinymce/tinymce-angular';\r\nimport { Subject } from 'rxjs';\r\nimport { Editor } from 'tinymce';\r\n\r\nlet nextUniqueId: number = 0;\r\n\r\nclass EditorControlBase {\r\n /**\r\n * Constructor\r\n * @param _defaultErrorStateMatcher \r\n * @param _parentForm \r\n * @param _parentFormGroup \r\n * @param ngControl \r\n */\r\n constructor(public _defaultErrorStateMatcher: ErrorStateMatcher, public _parentForm: NgForm, public _parentFormGroup: FormGroupDirective, public ngControl: NgControl) { }\r\n}\r\n\r\nexport interface EditorChange {\r\n textContent: string;\r\n displayContent: string;\r\n}\r\n\r\nconst _EditorInputMixinBase = mixinErrorState(EditorControlBase);\r\n\r\n@Directive({\r\n selector: '[tinyMatFormControl]',\r\n providers: [{ provide: MatFormFieldControl, useExisting: MatFormFieldEditorDirective }],\r\n host: {\r\n '[attr.id]': 'id',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[attr.aria-invalid]': 'errorState',\r\n '[attr.aria-required]': 'required.toString()',\r\n },\r\n})\r\nexport class MatFormFieldEditorDirective extends _EditorInputMixinBase implements MatFormFieldControl<any>, CanUpdateErrorState, DoCheck {\r\n\r\n /**\r\n * _disabled: boolean\r\n */\r\n private _disabled = false;\r\n\r\n @Input()\r\n get disabled(): boolean {\r\n if (this.ngControl && this.ngControl.disabled !== null) {\r\n return this.ngControl.disabled;\r\n }\r\n return this._disabled;\r\n }\r\n set disabled(value: boolean) {\r\n this._disabled = coerceBooleanProperty(value);\r\n\r\n // Browsers may not fire the blur event if the input is disabled too quickly.\r\n // Reset from here to ensure that the element doesn't become stuck.\r\n if (this.focused) {\r\n this.focused = false;\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n /**\r\n * _id: string\r\n */\r\n private _id: string;\r\n\r\n @Input()\r\n get id(): string { return this._id; }\r\n set id(value: string) { this._id = value || this.uid; }\r\n\r\n\r\n /**\r\n * This input just provides the placeholder to the mat-form-field.\r\n * Placeholder setup will still have to be done according to the\r\n * TinyMCE placeholder plugin being used.\r\n */\r\n @Input() placeholder: string;\r\n\r\n private _required = false;\r\n\r\n @Input()\r\n get required(): boolean {\r\n return this._required;\r\n }\r\n set required(value: boolean) {\r\n this._required = coerceBooleanProperty(value);\r\n }\r\n\r\n @Input()\r\n get value(): string {\r\n return this.editor ? this.editor.getContent() : null;\r\n }\r\n set value(value: string) {\r\n if (value !== this.value && this.editor) {\r\n this.editor.setContent(value);\r\n this.stateChanges.next();\r\n }\r\n }\r\n\r\n @Output() editorChange = new EventEmitter<EditorChange>();\r\n\r\n empty: boolean = false;\r\n\r\n focused: boolean = false;\r\n\r\n controlType: string = 'tinymce-editor';\r\n\r\n readonly stateChanges: Subject<void> = new Subject<void>();\r\n\r\n ariaDescribedby: string | null;\r\n\r\n shouldLabelFloat: boolean = true;\r\n\r\n autofilled: boolean = false;\r\n\r\n private uid = `tinymce-mat-form-control-${nextUniqueId++}`;\r\n\r\n private editor: Editor;\r\n\r\n private editorElement: HTMLElement;\r\n\r\n @Input() errorStateMatcher: ErrorStateMatcher;\r\n\r\n constructor(\r\n private elementRef: ElementRef<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement>,\r\n @Optional() @Self() public ngControl: NgControl,\r\n @Optional() parentForm: NgForm,\r\n @Optional() parentFormGroup: FormGroupDirective,\r\n errorStateMatcher: ErrorStateMatcher,\r\n @Self() @Inject(NG_VALUE_ACCESSOR) private valueAccessor: EditorComponent,\r\n private platform: Platform,\r\n private autofillMonitor: AutofillMonitor,\r\n private ngZone: NgZone\r\n ) {\r\n super(errorStateMatcher, parentForm, parentFormGroup, ngControl);\r\n }\r\n\r\n ngDoCheck(): void {\r\n if (this.ngControl) {\r\n this.updateErrorState();\r\n }\r\n }\r\n\r\n @HostListener('onInit', ['$event'])\r\n onEditorInit({ editor }: { editor: Editor }) {\r\n // Cache a copy of the editor so that we have access to it\r\n // elsewhere. This won't be necessary once the '_editor'\r\n // property on EditorComponent has a public getter. This was\r\n // added in TINY-3772, but it's not published to npm yet.\r\n this.editor = editor;\r\n\r\n // Cache the editor element so that we can focus it on container clicks\r\n this.editorElement = editor.getElement() as HTMLElement;\r\n\r\n if (this.platform.isBrowser) {\r\n this.autofillMonitor.monitor(this.editorElement).subscribe((event) => {\r\n this.autofilled = event.isAutofilled;\r\n this.stateChanges.next();\r\n });\r\n }\r\n }\r\n\r\n setDescribedByIds(ids: string[]) {\r\n this.ariaDescribedby = ids.join(' ');\r\n }\r\n\r\n onContainerClick() {\r\n if (!this.focused && this.editorElement) {\r\n this.editorElement.focus();\r\n }\r\n }\r\n}","import { Attribute, Directive, forwardRef } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\n@Directive({\r\n\tselector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',\r\n\tproviders: [\r\n\t\t{\r\n\t\t\tprovide: NG_VALIDATORS,\r\n\t\t\tuseExisting: forwardRef(() => EqualValidator),\r\n\t\t\tmulti: true\r\n\t\t}\r\n\t]\r\n})\r\nexport class EqualValidator implements Validator {\r\n\t/*\r\n\t * Constructor\r\n\t * @param validateEqual \r\n\t * @param reverse \r\n\t */\r\n\tconstructor(@Attribute('validateEqual') public validateEqual: string, @Attribute('reverse') public reverse: string) { }\r\n\r\n\t/**\r\n\t * Is reverse\r\n\t */\r\n\tprivate get isReverse() {\r\n\t\tif (!this.reverse) return false;\r\n\t\treturn this.reverse === 'true' ? true : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks the equality of the values\r\n\t * @param c \r\n\t */\r\n\tvalidate(c: AbstractControl): { [key: string]: any } {\r\n\t\t/* Self value (e.g. retype password) */\r\n\t\tlet v = c.value;\r\n\r\n\t\t/* Control value (e.g. password) */\r\n\t\tlet e = c.root.get(this.validateEqual);\r\n\r\n\t\t/* Value not equal */\r\n\t\tif (e && v !== e.value && !this.isReverse) {\r\n\t\t\treturn {\r\n\t\t\t\tvalidateEqual: false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/* Value equal and reverse */\r\n\t\tif (e && v === e.value && this.isReverse) {\r\n\t\t\tdelete e.errors['validateEqual'];\r\n\t\t\tif (!Object.keys(e.errors).length) e.setErrors(null);\r\n\t\t}\r\n\r\n\t\t/* Value not equal and reverse */\r\n\t\tif (e && v !== e.value && this.isReverse) {\r\n\t\t\te.setErrors({\r\n\t\t\t\tvalidateEqual: false\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}","import { Directive, ElementRef, Optional } from \"@angular/core\";\r\nimport { NgControl, NgModel } from \"@angular/forms\";\r\n\r\n@Directive({ selector: '[ngModel]' })\r\nexport class NativeElementInjectorDirective {\r\n\r\n /**\r\n * Constructor\r\n * @param el \r\n * @param control \r\n * @param model \r\n */\r\n constructor(private el: ElementRef, private control: NgControl, @Optional() private model: NgModel) {\r\n if (!!model) {\r\n (<any>model.control).nativeElement = el.nativeElement;\r\n } else {\r\n (<any>control).nativeElement = el.nativeElement;\r\n }\r\n }\r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Attribute, Directive, Input } from \"@angular/core\";\r\nimport { AbstractControl, NG_ASYNC_VALIDATORS, Validator } from \"@angular/forms\";\r\nimport { map } from \"rxjs/operators\";\r\nimport { Utils } from \"../../common/functions/utils\";\r\n\r\n@Directive({\r\n selector: '[unique]',\r\n providers: [{ provide: NG_ASYNC_VALIDATORS, useExisting: UniqueValidatorDirective, multi: true }]\r\n})\r\nexport class UniqueValidatorDirective implements Validator {\r\n\r\n /**\r\n * uniqueProperty: string\r\n */\r\n @Input()\r\n public uniqueProperty: string;\r\n\r\n /**\r\n * uniqueId: number\r\n */\r\n @Input()\r\n public uniqueId: number;\r\n\r\n /**\r\n * uniqueParams: any\r\n */\r\n @Input()\r\n public uniqueParams: any = {};\r\n\r\n /**\r\n * invert: number\r\n */\r\n @Input()\r\n public invert: boolean;\r\n\r\n /**\r\n * Constructor\r\n */\r\n constructor(private http: HttpClient, @Attribute('unique') public unique: string) { }\r\n\r\n /**\r\n * Method that performs synchronous validation against the provided control.\r\n * @param control \r\n */\r\n validate(control: AbstractControl): { [key: string]: any } | null {\r\n if (!control.value || !control.dirty) {\r\n return new Promise(resolve => resolve(null));\r\n }\r\n\r\n /* Init params */\r\n this.uniqueParams ||= {};\r\n this.uniqueParams.id ||= this.uniqueId;\r\n this.uniqueParams[this.uniqueProperty] = control.value;\r\n\r\n return new Promise(resolve =>\r\n this.http.get(this.unique, { params: Utils.cleanObject(this.uniqueParams) })\r\n .pipe(map((x: any) => x.value))\r\n .subscribe((value: boolean) => {\r\n if (!this.invert) {\r\n if (value) {\r\n resolve(null);\r\n } else {\r\n resolve({ notUnique: true });\r\n }\r\n } else {\r\n if (!value) {\r\n resolve(null);\r\n } else {\r\n resolve({ notUnique: true });\r\n }\r\n }\r\n }));\r\n }\r\n}","export const formFieldGroupMetadataKey = Symbol('vdFormFieldGroup');","import { FormFieldType } from \"../enums/form-field-type\";\r\n\r\nexport class FormFieldDefinition {\r\n public row: number;\r\n public groupName?: string;\r\n public groupHeader?: string = $localize`:@@details:Details`;\r\n public name?: string;\r\n public header?: string;\r\n public hint?: string;\r\n public type?: FormFieldType;\r\n public inputType?: string = 'text';\r\n public enumType?: any;\r\n public endpoint?: string;\r\n public searchField?: string = 'search';\r\n public projection?: string;\r\n public multiple?: boolean = false;\r\n public optionValue?: string = 'id';\r\n public optionText?: string = 'name';\r\n public chipText?: string = 'name';\r\n public chipTemplate?: Function;\r\n public autocompleteText?: string = 'name';\r\n public autocompleteTemplate?: Function;\r\n public options?: { id: any, name: string }[];\r\n public filePath?: string;\r\n public isPublicFile?: boolean;\r\n public fileExtensions?: string[];\r\n public flex?: number;\r\n public rows?: number;\r\n public minLength?: number;\r\n public maxLength?: number;\r\n public hide?: Function;\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<FormFieldDefinition>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { FormFieldDefinition } from \"./form-field-definition\";\r\n\r\nexport class FormFieldGroup {\r\n public name: string;\r\n public header?: string;\r\n public fields: FormFieldDefinition[] = [];\r\n public groups: [FormFieldDefinition[]];\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<FormFieldGroup>) {\r\n Object.assign(this, init);\r\n }\r\n}","import { formFieldGroupMetadataKey } from \"../constants/constants\";\r\nimport { FormFieldGroup } from \"../models/form-field-group\";\r\n\r\n/**\r\n * Gets poperties decoarated with @FormField grouped by row\r\n * @param origin \r\n * @returns \r\n */\r\nexport function getFormGroups(origin: object): FormFieldGroup[] {\r\n return Reflect.getMetadata(formFieldGroupMetadataKey, origin) as FormFieldGroup[];\r\n}","import { Type } from \"@angular/core\";\r\nimport { headerMetadataKey } from \"../../common/constants/constants\";\r\nimport { formFieldGroupMetadataKey } from \"../constants/constants\";\r\nimport { FormFieldType } from \"../enums/form-field-type\";\r\nimport { FormFieldDefinition } from \"../models/form-field-definition\";\r\nimport { FormFieldGroup } from \"../models/form-field-group\";\r\nimport { getFormGroups } from \"./functions\";\r\n\r\n/**\r\n * Property decorator to create form fields\r\n * @param args \r\n * @returns \r\n */\r\nexport function FormField(args: Partial<FormFieldDefinition>): Function {\r\n return function (target: any, propertyKey: string) {\r\n /* Get property name */\r\n var propertyName = args.name || propertyKey;\r\n\r\n /* Get property type */\r\n var propertyType: string = Reflect.getMetadata(\"design:type\", target, propertyKey)?.name;\r\n\r\n /* Create table column */\r\n var formField = new FormFieldDefinition(Object.assign(args, <FormFieldDefinition>{\r\n name: args.name || propertyKey,\r\n header: args.header || Reflect.getMetadata(headerMetadataKey, target, propertyKey) || propertyName,\r\n autocompleteTemplate: args.autocompleteTemplate || ((option: any) => option[formField.autocompleteText]),\r\n chipTemplate: args.chipTemplate || ((chip: any) => chip[formField.chipText])\r\n }));\r\n\r\n /* Type enum */\r\n if (formField.enumType) {\r\n formField.type ||= FormFieldType.Enum;\r\n }\r\n\r\n /* Type VdSelect */\r\n else if (formField.endpoint) {\r\n formField.type ||= FormFieldType.VdSelect;\r\n }\r\n\r\n /* Type Select */\r\n else if (formField.options) {\r\n formField.type ||= FormFieldType.Select;\r\n }\r\n\r\n /* Type TextArea */\r\n else if (formField.rows) {\r\n formField.type ||= FormFieldType.TextArea;\r\n }\r\n\r\n /* Type File */\r\n else if (formField.filePath) {\r\n formField.type ||= FormFieldType.File;\r\n }\r\n\r\n /* Other types */\r\n else {\r\n switch (propertyType.toLowerCase()) {\r\n case 'number':\r\n formField.type ||= FormFieldType.Text;\r\n formField.inputType ||= 'number';\r\n break;\r\n\r\n case 'date':\r\n formField.type ||= FormFieldType.Date;\r\n break;\r\n\r\n case 'boolean':\r\n formField.type ||= FormFieldType.Checkbox;\r\n break;\r\n\r\n default:\r\n formField.type ||= FormFieldType.Text;\r\n break;\r\n }\r\n }\r\n\r\n /* Get existing table groups */\r\n let formFieldGroups: FormFieldGroup[] = Reflect.getMetadata(formFieldGroupMetadataKey, target) || [];\r\n\r\n /* Get the group */\r\n var group = formFieldGroups.filter(x => x.name?.trim() == formField.groupName?.trim())[0];\r\n\r\n /* The group already exists, add the new form field */\r\n if (group) {\r\n group.fields.push(formField);\r\n }\r\n\r\n /* Create a new group */\r\n else {\r\n group = new FormFieldGroup({ name: formField.groupName || null, header: formField.groupHeader, fields: [formField] });\r\n formFieldGroups.push(group);\r\n }\r\n\r\n /* Sort the fields by row */\r\n group.fields = group.fields?.sort((a, b) => (a.row || 0 > b.row || 0) ? 1 : ((b.row || 0 > a.row || 0) ? -1 : 0)) || [];\r\n\r\n /* Group the fields */\r\n group.groups = Object.values((group.fields).reduce(function (r, a) {\r\n r[a.row] = r[a.row] || [];\r\n r[a.row].push(a);\r\n return r;\r\n }, Object.create(null))) as [FormFieldDefinition[]];\r\n\r\n /* Add new table column */\r\n Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);\r\n };\r\n}\r\n\r\n/**\r\n * Property decorator to create form fields\r\n * @param args \r\n * @returns \r\n */\r\nexport function FormGroup<T>(type: Type<T>, header: string, name?: string): Function {\r\n return function (target: any, propertyKey: string) {\r\n /* Set proprety name as group name, if empty */\r\n name ||= propertyKey;\r\n\r\n /* Get from groups */\r\n var groups = getFormGroups(Reflect.construct(type, []));\r\n\r\n /* Get all fields */\r\n var fields = groups.map(x => x.fields).reduce((a, b) => a.concat(b), []) || [];\r\n\r\n /* Get existing table groups */\r\n let formFieldGroups: FormFieldGroup[] = Reflect.getMetadata(formFieldGroupMetadataKey, target) || [];\r\n\r\n /* Get the group */\r\n var group = formFieldGroups.filter(x => x.name?.trim() == name?.trim())[0];\r\n\r\n /* The group already exist, add the fields to it */\r\n if (group) {\r\n fields.forEach(x => x.groupName = name);\r\n group.fields.push(...fields);\r\n }\r\n\r\n /* Create the new group */\r\n else {\r\n group = new FormFieldGroup({ name: name, header: header, fields: fields });\r\n formFieldGroups.push(group);\r\n }\r\n\r\n /* Sort the fields by row */\r\n group.fields = group?.fields?.sort((a, b) => (a.row || 0 > b.row || 0) ? 1 : ((b.row || 0 > a.row || 0) ? -1 : 0)) || [];\r\n\r\n /* Group the fields */\r\n group.groups = Object.values((group.fields).reduce(function (r, a) {\r\n r[a.row] = r[a.row] || [];\r\n r[a.row].push(a);\r\n return r;\r\n }, Object.create(null))) as [FormFieldDefinition[]];\r\n\r\n /* Add new table column */\r\n Reflect.defineMetadata(formFieldGroupMetadataKey, formFieldGroups, target);\r\n };\r\n}","import { Directive, HostBinding, OnDestroy } from '@angular/core';\r\nimport { ControlValueAccessor } from '@angular/forms';\r\nimport { MatFormFieldControl } from '@angular/material/form-field';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive()\r\nexport class ValueAccessorBase<T> extends MatFormFieldControl<any> implements ControlValueAccessor, OnDestroy {\r\n\t/**\r\n\t * Inner model value\r\n\t */\r\n\tprotected innerValue: T;\r\n\r\n\t// /**\r\n\t// * This property indicates whether the associated NgControl is in an error state\r\n\t// */\r\n\t// @Input()\r\n\t// get errorState() { return false; }\r\n\r\n\tprivate changed = new Array<(value: T) => void>();\r\n\tprivate touched = new Array<() => void>();\r\n\r\n\t/**\r\n\t * Because the <mat-form-field> uses the OnPush change detection strategy, we need \r\n\t * to let it know when something happens in the form field control that may require \r\n\t * the form field to run change detection. We do this via the stateChanges property. \r\n\t * So far the only thing the form field needs to know about is when the value changes. \r\n\t * We'll need to emit on the stateChanges stream when that happens, and as we continue \r\n\t * flushing out these properties we'll likely find more places we need to emit. We \r\n\t * should also make sure to complete stateChanges when our component is destroyed.\r\n\t */\r\n\tpublic stateChanges = new Subject<void>();\r\n\r\n\t/**\r\n\t * This property allows us to tell the <mat-form-field> what to use as a placeholder.\r\n\t */\r\n\tprivate _placeholder: string;\r\n\r\n\t/**\r\n\t * This property is used to indicate whether the input is required.\r\n\t */\r\n\tprivate _required = false;\r\n\r\n\t/**\r\n\t * This property tells the form field when it should be in the disabled state.\r\n\t */\r\n\tprivate _disabled = false;\r\n\r\n\t/**\r\n\t * This property allows the form field control to specify the @angular/forms control \r\n\t * that is bound to this component. Since we haven't set up our component to act as \r\n\t * a ControlValueAccessor, we'll just set this to null in our component.\r\n\t */\r\n\tpublic ngControl = null;\r\n\r\n\t// /**\r\n\t// * Gets or sets the value\r\n\t// */\r\n\t// get value(): T { return this.innerValue; }\r\n\t// set value(value: T) {\r\n\t// \tif (this.innerValue !== value) {\r\n\t// \t\tthis.innerValue = value;\r\n\t// \t\tthis.changed.forEach(f => f(value));\r\n\t// \t\tthis.stateChanges.next();\r\n\t// \t}\r\n\t// }\r\n\r\n\t// /**\r\n\t// * Since the value of the placeholder may change over time, we need to make sure to trigger change \r\n\t// * detection in the parent form field by emitting on the stateChanges stream when the placeholder changes.\r\n\t// */\r\n\t// @Input()\r\n\t// get placeholder(): string { return this._placeholder; }\r\n\t// set placeholder(value: string) { this._placeholder = value; this.stateChanges.next(); }\r\n\r\n\t// /**\r\n\t// * Since the value of the required may change over time, we need to make sure to trigger change \r\n\t// * detection in the parent form field by emitting on the stateChanges stream when the required changes.\r\n\t// */\r\n\t// @Input()\r\n\t// get required(): boolean { return this._required; }\r\n\t// set required(value: boolean) { this._required = coerceBooleanProperty(value); this.stateChanges.next(); }\r\n\r\n\t// /**\r\n\t// * Since the value of the disabled may change over time, we need to make sure to trigger change \r\n\t// * detection in the parent form field by emitting on the stateChanges stream when the disabled changes.\r\n\t// */\r\n\t// @Input()\r\n\t// get disabled(): boolean { return this._disabled; }\r\n\t// set disabled(value: boolean) { this._disabled = coerceBooleanProperty(value); this.stateChanges.next(); }\r\n\r\n\t/**\r\n\t * //TODO ???\r\n\t */\r\n\ttouch() {\r\n\t\tthis.touched.forEach(f => f());\r\n\t}\r\n\r\n\t/**\r\n\t * Writes a new value to the element.\r\n\t *\r\n\t * This method will be called by the forms API to write to the view when programmatic\r\n\t * (model -> view) changes are requested.\r\n\t *\r\n\t * Example implementation of `writeValue`:\r\n\t *\r\n\t * ```ts\r\n\t * writeValue(value: any): void {\r\n\t * this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);\r\n\t * }\r\n\t * ```\r\n\t */\r\n\twriteValue(value: T) {\r\n\t\tthis.innerValue = value;\r\n\t}\r\n\r\n\t/**\r\n\t * From ControlValueAccessor interface\r\n\t * @param fn \r\n\t */\r\n\tregisterOnChange(fn: any) {\r\n\t\tthis.changed.push(fn);\r\n\t}\r\n\r\n\t/**\r\n\t * From ControlValueAccessor interface\r\n\t * @param fn \r\n\t */\r\n\tregisterOnTouched(fn: any) {\r\n\t\tthis.touched.push(fn);\r\n\t}\r\n\r\n\t/**\r\n\t * This method is used by the <mat-form-field> to specify the IDs that \r\n\t * should be used for the aria-describedby attribute of your component. \r\n\t * The method has one parameter, the list of IDs, we just need to apply\r\n\t * the given IDs to our host element.\r\n\t */\r\n\t@HostBinding('attr.aria-describedby') describedBy = '';\r\n\tsetDescribedByIds(ids: string[]) { this.describedBy = ids.join(' '); }\r\n\r\n\t/**\r\n\t * This method will be called when the form field is clicked on. \r\n\t * It allows the component to hook in and handle that click however it wants. \r\n\t * The method has one parameter, the MouseEvent for the click. In our case we'll \r\n\t * just focus the first <input> if the user isn't about to click an <input> anyways.\r\n\t * @param event \r\n\t */\r\n\tonContainerClick(event: MouseEvent) {\r\n\t}\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called when a directive, pipe or service is destroyed.\r\n\t */\r\n\tngOnDestroy() {\r\n\t\tthis.stateChanges.complete();\r\n\t}\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { VdChipsModule } from '../chips/chips.module';\r\nimport { VdCommonModule } from '../common/public_api';\r\nimport { VdSelectModule } from '../select/select.module';\r\nimport { VdCodeDirective, VdCustomDirective, VdEditorDirective, VdFileDirective, VdGenericFormComponent } from './components/generic-form/generic-form.component';\r\nimport { MatFormFieldEditorDirective } from './directives/mat-form-field-editor.directive';\r\nimport { MatFormFieldReadonlyDirective } from './directives/mat-form-field-readonly.directive';\r\nimport { EqualValidator } from './validators/equal-validator.directive';\r\nimport { NativeElementInjectorDirective } from './validators/native-element-injector.directive';\r\nimport { UniqueValidatorDirective } from './validators/unique-validator-directive';\r\n\r\nexport { formFieldGroupMetadataKey } from './constants/constants';\r\nexport { FormFieldType } from './enums/form-field-type';\r\nexport { FormField, FormGroup } from './functions/decorators';\r\nexport { getFormGroups } from './functions/functions';\r\nexport { AbstractMatFormField } from './helpers/abstract-mat-form-field';\r\nexport { ValueAccessorBase } from './helpers/value-accessor-base';\r\nexport { FormFieldDefinition } from './models/form-field-definition';\r\nexport { FormFieldGroup } from './models/form-field-group';\r\nexport { EqualValidator } from './validators/equal-validator.directive';\r\nexport {\r\n\tNativeElementInjectorDirective,\r\n\tUniqueValidatorDirective,\r\n\tMatFormFieldEditorDirective\r\n};\r\n\r\nconst DECLARATIONS = [\r\n\tEqualValidator,\r\n\tUniqueValidatorDirective,\r\n\tNativeElementInjectorDirective,\r\n\tMatFormFieldReadonlyDirective,\r\n\tMatFormFieldEditorDirective,\r\n\tVdEditorDirective,\r\n\tVdCodeDirective,\r\n\tVdFileDirective,\r\n\tVdCustomDirective,\r\n\tVdGenericFormComponent\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tVdCommonModule,\r\n\t\tVdSelectModule,\r\n\t\tVdChipsModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatSelectModule,\r\n\t\tMatIconModule,\r\n\t\tMatInputModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatSlideToggleModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatNativeDateModule,\r\n\t\tMatAutocompleteModule\r\n\t],\r\n\tdeclarations: [DECLARATIONS],\r\n\texports: [DECLARATIONS]\r\n})\r\nexport class VdFormsModule { }","import { HttpClientModule } from '@angular/common/http';\r\nimport { NgModule } from '@angular/core';\r\n\r\nexport { GenericService } from './services/generic.service';\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tHttpClientModule,\r\n\t],\r\n})\r\nexport class VdHttpModule { }","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { MenuItem } from '../models/menu-item';\r\n\r\n@Component({\r\n\tselector: 'vd-menu',\r\n\ttemplateUrl: './menu.component.html',\r\n\tstyleUrls: ['./menu.component.scss']\r\n})\r\nexport class VdMenuComponent {\r\n\r\n\t/**\r\n\t * Menu items\r\n\t */\r\n\t@Input() items: MenuItem[] = [];\r\n\r\n\t/**\r\n\t * This will add the classes only when the url matches the link exactly.\r\n\t */\r\n\t@Input() activeExact: boolean = false;\r\n\r\n\t/**\r\n\t * Items with avatars\r\n\t */\r\n\t@Input() avatar: boolean;\r\n\r\n\t/**\r\n\t* click?: function\r\n\t* Event emitted when a menu item is clicked.\r\n\t*/\r\n\t@Output('click') onClick: EventEmitter<any> = new EventEmitter<any>();\r\n\r\n\t/**\r\n\t * Event emitted when a meni item is clicked.\r\n\t */\r\n\tpublic itemClicked($event): void {\r\n\t\tif ($event instanceof EventEmitter) {\r\n\t\t\t$event.emit();\r\n\t\t} else {\r\n\t\t\tthis.onClick.emit($event)\r\n\t\t}\r\n\t}\r\n}","<mat-nav-list>\r\n\t<ng-template let-item let-last=\"last\" ngFor [ngForOf]=\"items\">\r\n\t\t<a mat-list-item *ngIf=\"item.enabled\" [routerLink]=\"item.path\" [routerLinkActive]=\"['active']\" [routerLinkActiveOptions]=\"{exact:item.activeExact}\" (click)=\"itemClicked(item.event?item.event:$event)\">\r\n\t\t\t<mat-icon *ngIf=\"!avatar\" mat-list-icon>{{item.icon}}</mat-icon>\r\n\t\t\t<span *ngIf=\"!avatar\">{{item.title}}</span>\r\n\t\t\t<mat-icon *ngIf=\"avatar\" matListAvatar>{{item.icon}}</mat-icon>\r\n\t\t\t<h3 *ngIf=\"avatar\" matLine>{{item.title}}</h3>\r\n\t\t\t<p *ngIf=\"avatar && item.description\" matLine> {{item.description}} </p>\r\n\t\t</a>\r\n\t\t<mat-divider *ngIf=\"item.divider && !avatar\"></mat-divider>\r\n\t\t<mat-divider [inset]=\"avatar\" *ngIf=\"!item.divider && avatar && !last\"></mat-divider>\r\n\t</ng-template>\r\n</mat-nav-list>","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '../../http/http.module';\r\nimport { Menu } from '../models/menu';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MenuService extends GenericService<Menu> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param _http \r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('menu');\r\n\t}\r\n}","export enum MenuScope {\r\n\tSite,\r\n\tAdmin\r\n}","import { IEntity } from '../../common/models/entity';\r\nimport { MenuItem } from './menu-item';\r\n\r\nexport class Menu implements IEntity {\r\n\tid: number;\r\n\tname: string;\r\n\ttitle: string;\r\n\tscope: string;\r\n\tlanguage: string;\r\n\tdescription: string;\r\n\ticon: string;\r\n\titems: MenuItem[];\r\n\troleIds: number[];\r\n\tenabled: boolean;\r\n}","import { IEntity } from '../../common/models/entity';\r\nimport { MenuScope } from '../enums/menu-scope';\r\n\r\nexport class MenuItem implements IEntity {\r\n\tid: number;\r\n\tscope: MenuScope;\r\n\tname: string;\r\n\ttitle: string;\r\n\tpath: string;\r\n\tactiveExact: boolean;\r\n\ticon: string;\r\n\tdivider: boolean;\r\n\tparams: any;\r\n\tmenuId: number;\r\n\tparentId: number;\r\n\troleIds: number[];\r\n\tenabled: boolean;\r\n}","import { Injectable } from '@angular/core';\r\nimport { GenericService } from '../../http/http.module';\r\nimport { MenuItem } from '../models/menu-item';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MenuItemService extends GenericService<MenuItem> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param _http \r\n\t */\r\n\tconstructor() {\r\n\t\tsuper('menuitem');\r\n\t}\r\n}","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, Resolve, Router, RouterStateSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { Menu } from '../models/menu';\r\nimport { MenuService } from './menu.service';\r\n\r\n/**\r\n * Menu resolve service\r\n */\r\n@Injectable()\r\nexport class MenuResolve implements Resolve<any> {\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param menuService \r\n\t */\r\n\tconstructor(private menuService: MenuService) { }\r\n\r\n\t/**\r\n\t * Resolves menu items\r\n\t * @param route \r\n\t */\r\n\tresolve(route: ActivatedRouteSnapshot): Observable<Menu> {\r\n\t\treturn this.menuService.getList(route.data || {}, null, { cache: 'yes' });\r\n\t}\r\n}\r\n\r\n/**\r\n * Submenu resolve service\r\n */\r\n@Injectable()\r\nexport class SubMenuResolve implements Resolve<any> {\r\n\r\n\tconstructor(private router: Router, private route3: ActivatedRoute) { }\r\n\r\n\t/**\r\n\t * Resolves menu items\r\n\t * @param route \r\n\t * @param state \r\n\t */\r\n\tresolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): any[] {\r\n\t\t/* Get menu from route data */\r\n\t\tlet menu: Menu = route?.parent?.data?.menu || state?.root?.firstChild?.data?.menu;\r\n\r\n\t\t/* Check menu items in route data */\r\n\t\tif (menu) {\r\n\t\t\tvar adminMenu = menu[0];\r\n\t\t\tif (adminMenu && adminMenu.items) {\r\n\t\t\t\treturn adminMenu.items.filter((x: any) => x.path == `/${route.url[0].path}`)[0];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn [];\r\n\t}\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { RouterModule } from '@angular/router';\r\nimport { VdMenuComponent } from './components/menu.component';\r\nimport { MenuService } from './services/menu.service';\r\n\r\nexport { VdMenuComponent } from './components/menu.component';\r\nexport { MenuScope } from './enums/menu-scope';\r\nexport { Menu } from './models/menu';\r\nexport { MenuItem } from './models/menu-item';\r\nexport { MenuItemService } from './services/menu-items.service';\r\nexport { MenuResolve, SubMenuResolve } from './services/menu.resolve';\r\nexport { MenuService };\r\n\r\nconst DECLARATIONS = [\r\n\tVdMenuComponent\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tRouterModule,\r\n\t\tMatIconModule,\r\n\t\tMatListModule\r\n\t],\r\n\tdeclarations: [\r\n\t\tDECLARATIONS\r\n\t],\r\n\texports: [\r\n\t\tDECLARATIONS\r\n\t],\r\n\tproviders: [MenuService]\r\n})\r\nexport class VdMenuModule { }","import { Component, Input } from '@angular/core';\r\nimport { ActionMenuItem } from '../../common/models/action-menu-item';\r\n\r\n@Component({\r\n selector: 'vd-form-toolbar-menu',\r\n templateUrl: './form-toolbar-menu.component.html'\r\n})\r\nexport class VdFormToolbarMenuComponent {\r\n\r\n /**\r\n * A list of menu items\r\n */\r\n @Input()\r\n public menuItems: ActionMenuItem[];\r\n}","<div layout=\"row\" layout-align=\"start center\" flex>\r\n <button mat-icon-button [mat-menu-trigger-for]=\"toolbarMenu\" *ngIf=\"menuItems?.length\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu x-position=\"before\" #toolbarMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menuItems\">\r\n <ng-container *ngIf=\"!menuItem.subItems\">\r\n <button type=\"button\" mat-menu-item (click)=\"menuItem.event?menuItem.event():null\" *ngIf=\"!menuItem.hide || !menuItem.hide()\" [disabled]=\"menuItem.disable && menuItem.disable()\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.subItems\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.subItems\">\r\n <button type=\"button\" mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event():null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide()\" [disabled]=\"menuSubItem.disable && menuSubItem.disable()\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuSubItem.iconClass\">{{menuSubItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuSubItem.title}}</span>\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <button type=\"button\" mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide()\" [disabled]=\"menuItem.disable && menuItem.disable()\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { ActionMenuItem } from '../../common/models/action-menu-item';\r\n\r\n@Component({\r\n selector: 'vd-form-toolbar',\r\n templateUrl: './form-toolbar.component.html'\r\n})\r\nexport class VdFormToolbarComponent {\r\n /**\r\n * Toolbar title\r\n */\r\n @Input()\r\n public subtitle: string;\r\n\r\n /**\r\n * A list of menu items\r\n */\r\n @Input()\r\n public menuItems: ActionMenuItem[];\r\n\r\n /**\r\n * Loading flag\r\n */\r\n @Input()\r\n public loading: boolean;\r\n\r\n /**\r\n * Reload event handler\r\n */\r\n @Output()\r\n public reload: EventEmitter<any> = new EventEmitter<any>();\r\n}","<div layout=\"row\" layout-align=\"start center\" flex>\r\n <button mat-icon-button *ngIf=\"reload?.observed\" (click)=\"reload.emit($event)\">\r\n <mat-icon *ngIf=\"!loading\">sync</mat-icon>\r\n <mat-progress-spinner *ngIf=\"loading\" color=\"accent\" class=\"mat-icon\" diameter=\"24\" mode=\"indeterminate\"> </mat-progress-spinner>\r\n </button>\r\n <vd-form-toolbar-menu [menuItems]=\"menuItems\"></vd-form-toolbar-menu>\r\n</div>","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n\tselector: 'vd-layout-card-over',\r\n\tstyleUrls: ['./layout-card-over.component.scss'],\r\n\ttemplateUrl: './layout-card-over.component.html',\r\n})\r\nexport class VdLayoutCardOverComponent {\r\n\r\n\t/**\r\n\t * cardTitle?: string\r\n\t *\r\n\t * Title set in card.\r\n\t */\r\n\t@Input('cardTitle') cardTitle: string;\r\n\r\n\t/**\r\n\t * cardSubtitle?: string\r\n\t *\r\n\t * Subtitle set in card.\r\n\t */\r\n\t@Input('cardSubtitle') cardSubtitle: string;\r\n\r\n\t/**\r\n\t * cardWidth?: string\r\n\t *\r\n\t * Card flex width in %.\r\n\t * Defaults to 70%.\r\n\t */\r\n\t@Input('cardWidth') cardWidth: number = 70;\r\n\r\n\t/**\r\n\t * color?: string\r\n\t *\r\n\t * toolbar color option: primary | accent | warn.\r\n\t * If [color] is not set, primary is used.\r\n\t */\r\n\t@Input('color') color: string = 'primary';\r\n\r\n}\r\n","<mat-toolbar [color]=\"color\"></mat-toolbar>\r\n<div class=\"vd-layout-card-over-wrapper\">\r\n\t<div class=\"vd-layout-card-over\" [style.max-width.%]=\"cardWidth\" [style.flex]=\"'1 1 ' + cardWidth + '%'\" [style.-ms-flex]=\"'1 1 ' + cardWidth + '%'\"\r\n\t [style.-webkit-box-flex]=\"1\">\r\n\t\t<mat-card>\r\n\t\t\t<mat-card-title *ngIf=\"cardTitle\">{{cardTitle}}</mat-card-title>\r\n\t\t\t<mat-card-subtitle *ngIf=\"cardSubtitle\">{{cardSubtitle}}</mat-card-subtitle>\r\n\t\t\t<mat-divider *ngIf=\"cardTitle || cardSubtitle\"></mat-divider>\r\n\t\t\t<ng-content></ng-content>\r\n\t\t</mat-card>\r\n\t\t<ng-content select=\"[vd-after-card]\"></ng-content>\r\n\t</div>\r\n</div>","import { Component, ElementRef, Input, Renderer2 } from '@angular/core';\r\n\r\n@Component({\r\n\t/* tslint:disable-next-line */\r\n\tselector: 'vd-layout-footer,vd-layout-footer-inner',\r\n\tstyleUrls: ['./layout-footer.component.scss'],\r\n\ttemplateUrl: './layout-footer.component.html',\r\n})\r\nexport class VdLayoutFooterComponent {\r\n\r\n\tprivate _color: 'primary' | 'accent' | 'warn';\r\n\r\n\t/**\r\n\t * color?: string\r\n\t *\r\n\t * Optional color option: primary | accent | warn.\r\n\t */\r\n\t@Input('color')\r\n\tset color(color: 'primary' | 'accent' | 'warn') {\r\n\t\tif (color) {\r\n\t\t\tthis._renderer.removeClass(this._elementRef.nativeElement, 'mat-' + this._color);\r\n\t\t\tthis._color = color;\r\n\t\t\tthis._renderer.addClass(this._elementRef.nativeElement, 'mat-' + this._color);\r\n\t\t}\r\n\t}\r\n\tget color(): 'primary' | 'accent' | 'warn' {\r\n\t\treturn this._color;\r\n\t}\r\n\r\n\tconstructor(private _renderer: Renderer2,\r\n\t\tprivate _elementRef: ElementRef) {\r\n\t\tthis._renderer.addClass(this._elementRef.nativeElement, 'vd-layout-footer');\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { MatDrawerToggleResult, MatSidenav } from '@angular/material/sidenav';\r\nimport { VdMediaService } from '../../media/services/media.service';\r\nimport { MenuItem } from '../../menu/models/menu-item';\r\nimport { ILayoutTogglable } from '../layout-toggle.class';\r\n\r\n@Component({\r\n\tselector: 'vd-layout-manage-list',\r\n\tstyleUrls: ['./layout-manage-list.component.scss'],\r\n\ttemplateUrl: './layout-manage-list.component.html',\r\n})\r\nexport class VdLayoutManageListComponent implements ILayoutTogglable, OnInit {\r\n\r\n\t/**\r\n\t * sidenav: MatSidenav\r\n\t */\r\n\t@ViewChild(MatSidenav, { static: true })\r\n\tpublic sidenav: MatSidenav;\r\n\r\n\t/**\r\n\t * title: string\r\n\t * Content title\r\n\t */\r\n\t@Input()\r\n\tpublic title: string;\r\n\r\n\t/**\r\n\t * closable: boolean\r\n\t * If false, hide close button\r\n\t */\r\n\t@Input()\r\n\tpublic closable: boolean = true;\r\n\r\n\t/**\r\n\t * menuItems: MenuItem[]\r\n\t */\r\n\t@Input()\r\n\tpublic menuItems: MenuItem[];\r\n\r\n\t/**\r\n\t * mode?: 'side', 'push' or 'over'\r\n\t *\r\n\t * The mode or styling of the sidenav.\r\n\t * Defaults to \"side\".\r\n\t * See \"MatSidenav\" documentation for more info.\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input()\r\n\tpublic mode: 'side' | 'push' | 'over' = 'side';\r\n\r\n\t/**\r\n\t * overGt?: string\r\n\t */\r\n\t@Input()\r\n\tpublic sideGt: string = 'sm';\r\n\r\n\t/**\r\n\t * opened?: boolean\r\n\t *\r\n\t * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\r\n\t * Defaults to \"true\".\r\n\t *\r\n\t * See \"MatSidenav\" documentation for more info.\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input()\r\n\tpublic opened: boolean = false;\r\n\r\n\t/**\r\n\t * opened?: string\r\n\t *\r\n\t * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\r\n\t * Defaults to \"true\".\r\n\t */\r\n\t@Input()\r\n\tpublic openedGt: string = 'sm';\r\n\r\n\t/**\r\n\t * sidenavWidth?: string\r\n\t *\r\n\t * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\r\n\t * Defaults to \"257px\".\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input()\r\n\tpublic sidenavWidth: string = '257px';\r\n\r\n\t/**\r\n\t * sidenavGtXsWidth?: number\r\n\t */\r\n\t@Input()\r\n\tpublic sidenavGtXsWidth: number = 257;\r\n\r\n\t/**\r\n\t * Checks if `ESC` should close the sidenav\r\n\t * Should only close it for `push` and `over` modes\r\n\t */\r\n\tget disableClose(): boolean { return this.mode === 'side'; }\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor(private media: VdMediaService) { }\r\n\r\n\t/**\r\n\t * Lifecycle hook that is called after data-bound properties \r\n\t * of a directive are initialized.\r\n\t */\r\n\tngOnInit(): void {\r\n\t\tif (this.openedGt) {\r\n\t\t\tthis.media.registerQuery(`gt-${this.openedGt}`).subscribe((x: boolean) => this.opened = x);\r\n\t\t}\r\n\r\n\t\tif (this.sideGt) {\r\n\t\t\tthis.media.registerQuery(`gt-${this.sideGt}`).subscribe((x: boolean) => this.mode = x ? 'side' : 'over');\r\n\t\t}\r\n\r\n\t\tif (this.sidenavGtXsWidth > 0) {\r\n\t\t\tthis.media.registerQuery(`gt-xs`).subscribe((x: boolean) => this.sidenavWidth = x ? `${this.sidenavGtXsWidth}px` : '100%');\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy toggle method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic toggle(): Promise<MatDrawerToggleResult> { return this.sidenav.toggle(!this.sidenav.opened); }\r\n\r\n\t/**\r\n\t * Proxy open method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic open(): Promise<MatDrawerToggleResult> { return this.sidenav.open(); }\r\n\r\n\t/**\r\n\t * Proxy close method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic close(): Promise<MatDrawerToggleResult> { return this.sidenav.close(); }\r\n}","<mat-sidenav-container fullscreen class=\"vd-layout-manage-list\">\r\n\t<!-- #region Side nav -->\r\n\t<mat-sidenav #sidenav position=\"start\" [mode]=\"mode\" [opened]=\"opened\" [disableClose]=\"disableClose\" [style.max-width]=\"sidenavWidth\" [style.min-width]=\"sidenavWidth\">\r\n\t\t<!-- #region Nav list toolbar -->\r\n\t\t<mat-toolbar dense *ngIf=\"title\">\r\n\t\t\t<span>{{title}}</span>\r\n\t\t\t<span flex></span>\r\n\t\t\t<button mat-icon-button (click)=\"close()\" *ngIf=\"closable\">\r\n\t\t\t\t<mat-icon>arrow_back</mat-icon>\r\n\t\t\t</button>\r\n\t\t</mat-toolbar>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Custom title toolbar -->\r\n\t\t<ng-content select=\"mat-toolbar[vd-sidenav-content]\"></ng-content>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<div class=\"vd-layout-manage-list-sidenav\" cdkScrollable>\r\n\t\t\t<ng-content select=\"[vd-sidenav-content]\"></ng-content>\r\n\t\t\t<ng-content select=\"vd-menu\"></ng-content>\r\n\t\t\t<vd-menu [items]=\"menuItems\" *ngIf=\"menuItems\"></vd-menu>\r\n\t\t</div>\r\n\t</mat-sidenav>\r\n\t<!-- #endregion -->\r\n\r\n\t<!-- #region Main content -->\r\n\t<div class=\"vd-layout-manage-list-main\">\r\n\t\t<!-- #region Toolbar projection -->\r\n\t\t<ng-content select=\"mat-toolbar\"></ng-content>\r\n\t\t<ng-content select=\"vd-list-toolbar\"></ng-content>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Scrollable content -->\r\n\t\t<div class=\"vd-layout-manage-list-content\" cdkScrollable>\r\n\t\t\t<ng-content></ng-content>\r\n\t\t</div>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Footer content -->\r\n\t\t<ng-content select=\"vd-layout-footer-inner\"></ng-content>\r\n\t\t<!-- #endregion -->\r\n\t</div>\r\n\t<!-- #endregion -->\r\n</mat-sidenav-container>","import { AfterViewInit, Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2 } from '@angular/core';\r\nimport { MatDrawerToggleResult, MatSidenav } from '@angular/material/sidenav';\r\nimport { Subscription } from 'rxjs';\r\n\r\nexport interface ILayoutTogglable {\r\n\topened: boolean;\r\n\tsidenav: MatSidenav;\r\n\ttoggle(): Promise<MatDrawerToggleResult>;\r\n\topen(): Promise<MatDrawerToggleResult>;\r\n\tclose(): Promise<MatDrawerToggleResult>;\r\n}\r\n\r\n@Directive()\r\nexport abstract class LayoutToggle implements AfterViewInit, OnDestroy {\r\n\r\n\tprivate _toggleSubs: Subscription;\r\n\r\n\tprivate _initialized: boolean = false;\r\n\tprivate _disabled: boolean = false;\r\n\tprivate _hideWhenOpened: boolean = false;\r\n\r\n\tset disabled(disabled: boolean) {\r\n\t\tthis._disabled = disabled;\r\n\t}\r\n\r\n\t/**\r\n\t * hideWhenOpened?: boolean\r\n\t * When this is set to true, the host will be hidden when\r\n\t * the sidenav is opened.\r\n\t */\r\n\t@Input('hideWhenOpened')\r\n\tset hideWhenOpened(hideWhenOpened: boolean) {\r\n\t\tthis._hideWhenOpened = hideWhenOpened;\r\n\t\tif (this._initialized) {\r\n\t\t\tthis._toggleVisibility();\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(protected _layout: ILayoutTogglable,\r\n\t\tprivate _renderer: Renderer2,\r\n\t\tprivate _elementRef: ElementRef) {\r\n\t\tthis._renderer.addClass(this._elementRef.nativeElement, 'vd-layout-menu-button');\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis._initialized = true;\r\n\t\tthis._toggleSubs = this._layout.sidenav._animationStarted.subscribe(() => {\r\n\t\t\tthis._toggleVisibility();\r\n\t\t});\r\n\t\t// execute toggleVisibility since the onOpenStart and onCloseStart\r\n\t\t// methods might not be executed always when the element is rendered\r\n\t\tthis._toggleVisibility();\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this._toggleSubs) {\r\n\t\t\tthis._toggleSubs.unsubscribe();\r\n\t\t\tthis._toggleSubs = null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Listens to host click event to trigger the layout toggle\r\n\t */\r\n\t@HostListener('click', ['$event'])\r\n\tclickListener(event: Event): void {\r\n\t\tevent.preventDefault();\r\n\t\tif (!this._disabled) {\r\n\t\t\tthis.onClick();\r\n\t\t}\r\n\t}\r\n\r\n\tabstract onClick(): void;\r\n\r\n\tprivate _toggleVisibility(): void {\r\n\t\tif (this._layout.sidenav.opened && this._hideWhenOpened) {\r\n\t\t\tthis._renderer.setStyle(this._elementRef.nativeElement, 'display', 'none');\r\n\t\t} else {\r\n\t\t\tthis._renderer.setStyle(this._elementRef.nativeElement, 'display', '');\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","import { Directive, ElementRef, forwardRef, Inject, Input, Renderer2 } from '@angular/core';\r\nimport { LayoutToggle } from '../layout-toggle.class';\r\nimport { VdLayoutManageListComponent } from './layout-manage-list.component';\r\n\r\n@Directive({ selector: '[vdLayoutManageListToggle]' })\r\nexport class VdLayoutManageListToggleDirective extends LayoutToggle {\r\n\r\n\t/**\r\n\t * Sets vdLayoutManageListToggle\r\n\t */\r\n\t@Input()\r\n\tset vdLayoutManageListToggle(vdLayoutManageListToggle: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutManageListToggle === '' || vdLayoutManageListToggle);\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param layout \r\n\t * @param renderer \r\n\t * @param elementRef \r\n\t */\r\n\tconstructor(\r\n\t\t@Inject(forwardRef(() => VdLayoutManageListComponent)) layout: VdLayoutManageListComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef\r\n\t) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the list\r\n\t */\r\n\tpublic onClick(): void {\r\n\t\tthis._layout.toggle();\r\n\t}\r\n}\r\n\r\n@Directive({ selector: '[vdLayoutManageListClose]' })\r\nexport class VdLayoutManageListCloseDirective extends LayoutToggle {\r\n\r\n\t/**\r\n\t * Sets vdLayoutManageListClose\r\n\t */\r\n\t@Input()\r\n\tset vdLayoutManageListClose(vdLayoutManageListClose: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutManageListClose === '' || vdLayoutManageListClose);\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param layout \r\n\t * @param renderer \r\n\t * @param elementRef \r\n\t */\r\n\tconstructor(\r\n\t\t@Inject(forwardRef(() => VdLayoutManageListComponent)) layout: VdLayoutManageListComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef\r\n\t) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the list\r\n\t */\r\n\tpublic onClick(): void {\r\n\t\tthis._layout.close();\r\n\t}\r\n}\r\n\r\n@Directive({ selector: '[vdLayoutManageListOpen]' })\r\nexport class VdLayoutManageListOpenDirective extends LayoutToggle {\r\n\r\n\t/**\r\n\t * Sets vdLayoutManageListOpen\r\n\t */\r\n\t@Input()\r\n\tset vdLayoutManageListOpen(vdLayoutManageListOpen: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutManageListOpen === '' || vdLayoutManageListOpen);\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param layout \r\n\t * @param renderer \r\n\t * @param elementRef \r\n\t */\r\n\tconstructor(\r\n\t\t@Inject(forwardRef(() => VdLayoutManageListComponent)) layout: VdLayoutManageListComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef\r\n\t) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\t/**\r\n\t * Opens the list\r\n\t */\r\n\tpublic onClick(): void {\r\n\t\tthis._layout.open();\r\n\t}\r\n}\r\n","import { Component, Input, Optional, ViewChild } from '@angular/core';\r\nimport { MatDrawerToggleResult } from '@angular/material/sidenav';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { Router } from '@angular/router';\r\nimport { ILayoutTogglable } from '../layout-toggle.class';\r\n\r\n@Component({\r\n\tselector: 'vd-layout-nav-list',\r\n\tstyleUrls: ['./layout-nav-list.component.scss'],\r\n\ttemplateUrl: './layout-nav-list.component.html',\r\n})\r\nexport class VdLayoutNavListComponent implements ILayoutTogglable {\r\n\r\n\t@ViewChild(MatSidenav, { static: true }) sidenav: MatSidenav;\r\n\r\n\t/**\r\n\t * toolbarTitle?: string\r\n\t *\r\n\t * Title set in toolbar.\r\n\t */\r\n\t@Input('toolbarTitle') toolbarTitle: string;\r\n\r\n\t/**\r\n\t * icon?: string\r\n\t * icon name to be displayed before the title\r\n\t */\r\n\t@Input('icon') icon: string;\r\n\r\n\t/**\r\n\t * logo?: string\r\n\t *\r\n\t * logo icon name to be displayed before the title.\r\n\t * If [icon] is set, then this will not be shown.\r\n\t */\r\n\t@Input('logo') logo: string;\r\n\r\n\t/**\r\n\t * color?: string\r\n\t *\r\n\t * toolbar color option: primary | accent | warn.\r\n\t * If [color] is not set, primary is used.\r\n\t */\r\n\t@Input('color') color: string = 'primary';\r\n\r\n\t/**\r\n\t * mode?: 'side', 'push' or 'over'\r\n\t *\r\n\t * The mode or styling of the sidenav.\r\n\t * Defaults to \"side\".\r\n\t * See \"MatSidenav\" documentation for more info.\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input('mode') mode: 'side' | 'push' | 'over' = 'side';\r\n\r\n\t/**\r\n\t * opened?: boolean\r\n\t * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\r\n\t * Defaults to \"true\".\r\n\t *\r\n\t * See \"MatSidenav\" documentation for more info.\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input('opened') opened: boolean = true;\r\n\r\n\t/**\r\n\t * sidenavWidth?: string\r\n\t *\r\n\t * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\r\n\t * Defaults to \"350px\".\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input('sidenavWidth') sidenavWidth: string = '350px';\r\n\r\n\t/**\r\n\t * navigationRoute?: string\r\n\t *\r\n\t * option to set the combined route for the icon, logo, and toolbarTitle.\r\n\t */\r\n\t@Input('navigationRoute') navigationRoute: string;\r\n\r\n\t/**\r\n\t * Checks if `ESC` should close the sidenav\r\n\t * Should only close it for `push` and `over` modes\r\n\t */\r\n\tget disableClose(): boolean {\r\n\t\treturn this.mode === 'side';\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if router was injected.\r\n\t */\r\n\tget routerEnabled(): boolean {\r\n\t\treturn !!this._router && !!this.navigationRoute;\r\n\t}\r\n\r\n\tconstructor(@Optional() private _router: Router) { }\r\n\r\n\thandleNavigationClick(): void {\r\n\t\tif (this.routerEnabled) {\r\n\t\t\tthis._router.navigateByUrl(this.navigationRoute);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy toggle method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic toggle(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this.sidenav.toggle(!this.sidenav.opened);\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy open method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic open(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this.sidenav.open();\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy close method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic close(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this.sidenav.close();\r\n\t}\r\n\r\n}\r\n","<div class=\"vd-layout-nav-list-wrapper\">\r\n\t<mat-sidenav-container fullscreen class=\"vd-layout-nav-list\">\r\n\t\t<mat-sidenav #sidenav position=\"start\" [mode]=\"mode\" [opened]=\"opened\" [disableClose]=\"disableClose\" [style.max-width]=\"sidenavWidth\"\r\n\t\t [style.min-width]=\"sidenavWidth\">\r\n\t\t\t<mat-toolbar [color]=\"color\">\r\n\t\t\t\t<ng-content select=\"[vd-menu-button]\"></ng-content>\r\n\t\t\t\t<span *ngIf=\"icon || logo || toolbarTitle\" class=\"vd-layout-nav-list-toolbar-content\" [class.cursor-pointer]=\"routerEnabled\"\r\n\t\t\t\t (click)=\"handleNavigationClick()\">\r\n\t\t\t\t\t<mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\r\n\t\t\t\t\t<mat-icon *ngIf=\"logo && !icon\" class=\"mat-icon-logo\" [svgIcon]=\"logo\"></mat-icon>\r\n\t\t\t\t\t<span *ngIf=\"toolbarTitle\">{{toolbarTitle}}</span>\r\n\t\t\t\t</span>\r\n\t\t\t\t<ng-content select=\"[vd-sidenav-toolbar-content]\"></ng-content>\r\n\t\t\t</mat-toolbar>\r\n\t\t\t<div class=\"vd-layout-nav-list-content\" cdkScrollable>\r\n\t\t\t\t<ng-content select=\"[vd-sidenav-content]\"></ng-content>\r\n\t\t\t</div>\r\n\t\t</mat-sidenav>\r\n\t\t<div class=\"vd-layout-nav-list-main\">\r\n\t\t\t<mat-toolbar [color]=\"color\">\r\n\t\t\t\t<ng-content select=\"[vd-toolbar-content]\"></ng-content>\r\n\t\t\t</mat-toolbar>\r\n\t\t\t<div class=\"vd-layout-nav-list-content\" cdkScrollable>\r\n\t\t\t\t<ng-content></ng-content>\r\n\t\t\t</div>\r\n\t\t\t<ng-content select=\"vd-layout-footer-inner\"></ng-content>\r\n\t\t</div>\r\n\t</mat-sidenav-container>\r\n</div>\r\n<ng-content select=\"vd-layout-footer\"></ng-content>","import { Directive, ElementRef, Inject, Input, Renderer2, forwardRef } from '@angular/core';\r\nimport { LayoutToggle } from '../layout-toggle.class';\r\nimport { VdLayoutNavListComponent } from './layout-nav-list.component';\r\n\r\n@Directive({\r\n\tselector: '[vdLayoutNavListToggle]',\r\n})\r\nexport class VdLayoutNavListToggleDirective extends LayoutToggle {\r\n\r\n\t@Input('vdLayoutNavListToggle')\r\n\tset vdLayoutNavListToggle(vdLayoutNavListToggle: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutNavListToggle === '' || vdLayoutNavListToggle);\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutNavListComponent)) layout: VdLayoutNavListComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\tonClick(): void {\r\n\t\tthis._layout.toggle();\r\n\t}\r\n}\r\n\r\n@Directive({\r\n\tselector: '[vdLayoutNavListClose]',\r\n})\r\nexport class VdLayoutNavListCloseDirective extends LayoutToggle {\r\n\r\n\t@Input('vdLayoutNavListClose')\r\n\tset vdLayoutNavListClose(vdLayoutNavListClose: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutNavListClose === '' || vdLayoutNavListClose);\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutNavListComponent)) layout: VdLayoutNavListComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\tonClick(): void {\r\n\t\tthis._layout.close();\r\n\t}\r\n}\r\n\r\n@Directive({\r\n\tselector: '[vdLayoutNavListOpen]',\r\n})\r\nexport class VdLayoutNavListOpenDirective extends LayoutToggle {\r\n\r\n\t@Input('vdLayoutNavListOpen')\r\n\tset vdLayoutNavListOpen(vdLayoutNavListOpen: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutNavListOpen === '' || vdLayoutNavListOpen);\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutNavListComponent)) layout: VdLayoutNavListComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\tonClick(): void {\r\n\t\tthis._layout.open();\r\n\t}\r\n}\r\n","import { Component, Input, ViewChild } from '@angular/core';\r\nimport { MatDrawerToggleResult } from '@angular/material/sidenav';\r\nimport { MatSidenav } from '@angular/material/sidenav';\r\nimport { ILayoutTogglable } from './layout-toggle.class';\r\n\r\n@Component({\r\n\tselector: 'vd-layout',\r\n\tstyleUrls: ['./layout.component.scss'],\r\n\ttemplateUrl: './layout.component.html',\r\n})\r\nexport class VdLayoutComponent implements ILayoutTogglable {\r\n\r\n\t@ViewChild(MatSidenav, { static: true }) sidenav: MatSidenav;\r\n\r\n\t/**\r\n\t * mode?: 'side', 'push' or 'over'\r\n\t *\r\n\t * The mode or styling of the sidenav.\r\n\t * Defaults to \"over\".\r\n\t * See \"MatSidenav\" documentation for more info.\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input('mode') mode: 'side' | 'push' | 'over' = 'over';\r\n\r\n\t/**\r\n\t * opened?: boolean\r\n\t *\r\n\t * Whether or not the sidenav is opened. Use this binding to open/close the sidenav.\r\n\t * Defaults to \"false\".\r\n\t *\r\n\t * See \"MatSidenav\" documentation for more info.\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input('opened') opened: boolean = false;\r\n\r\n\t/**\r\n\t * sidenavWidth?: string\r\n\t *\r\n\t * Sets the \"width\" of the sidenav in either \"px\" or \"%\"\r\n\t * Defaults to \"320px\".\r\n\t *\r\n\t * https://github.com/angular/material2/tree/master/src/lib/sidenav\r\n\t */\r\n\t@Input('sidenavWidth') sidenavWidth: string = '320px';\r\n\r\n\t/**\r\n\t * Checks if `ESC` should close the sidenav\r\n\t * Should only close it for `push` and `over` modes\r\n\t */\r\n\tget disableClose(): boolean {\r\n\t\treturn this.mode === 'side';\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy toggle method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic toggle(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this.sidenav.toggle(!this.sidenav.opened);\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy open method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic open(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this.sidenav.open();\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy close method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic close(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this.sidenav.close();\r\n\t}\r\n\r\n}\r\n","<mat-sidenav-container fullscreen>\r\n\t<mat-sidenav #sidenav class=\"vd-layout-sidenav\" [mode]=\"mode\" [opened]=\"opened\" [style.max-width]=\"sidenavWidth\" [style.min-width]=\"sidenavWidth\"\r\n\t [disableClose]=\"disableClose\">\r\n\t\t<ng-content select=\"vd-navigation-drawer\"></ng-content>\r\n\t\t<ng-content select=\"[vd-sidenav-content]\"></ng-content>\r\n\t</mat-sidenav>\r\n\t<ng-content></ng-content>\r\n</mat-sidenav-container>","import { Directive, ElementRef, Inject, Input, Renderer2, forwardRef } from '@angular/core';\r\nimport { LayoutToggle } from './layout-toggle.class';\r\nimport { VdLayoutComponent } from './layout.component';\r\n\r\n@Directive({\r\n\tselector: '[vdLayoutToggle]',\r\n})\r\nexport class VdLayoutToggleDirective extends LayoutToggle {\r\n\r\n\t@Input('vdLayoutToggle')\r\n\tset vdLayoutToggle(vdLayoutToggle: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutToggle === '' || vdLayoutToggle);\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutComponent)) layout: VdLayoutComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\tonClick(): void {\r\n\t\tthis._layout.toggle();\r\n\t}\r\n}\r\n\r\n@Directive({\r\n\tselector: '[vdLayoutClose]',\r\n})\r\nexport class VdLayoutCloseDirective extends LayoutToggle {\r\n\r\n\t@Input('vdLayoutClose')\r\n\tset vdLayoutClose(vdLayoutClose: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutClose === '' || vdLayoutClose);\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutComponent)) layout: VdLayoutComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\tonClick(): void {\r\n\t\tthis._layout.close();\r\n\t}\r\n}\r\n\r\n@Directive({\r\n\tselector: '[vdLayoutOpen]',\r\n})\r\nexport class VdLayoutOpenDirective extends LayoutToggle {\r\n\r\n\t@Input('vdLayoutOpen')\r\n\tset vdLayoutClose(vdLayoutOpen: boolean) {\r\n\t\tthis.disabled = !(<any>vdLayoutOpen === '' || vdLayoutOpen);\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutComponent)) layout: VdLayoutComponent,\r\n\t\trenderer: Renderer2,\r\n\t\telementRef: ElementRef) {\r\n\t\tsuper(layout, renderer, elementRef);\r\n\t}\r\n\r\n\tonClick(): void {\r\n\t\tthis._layout.open();\r\n\t}\r\n}\r\n","import { Component, EventEmitter, Input, Optional, Output } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Utils } from '../../common/functions/utils';\r\nimport { MenuItem } from '../../menu/models/menu-item';\r\n\r\n@Component({\r\n\tselector: 'vd-layout-nav',\r\n\tstyleUrls: ['./layout-nav.component.scss'],\r\n\ttemplateUrl: './layout-nav.component.html',\r\n})\r\nexport class VdLayoutNavComponent {\r\n\r\n\t/**\r\n\t * toolbarTitle?: string\r\n\t *\r\n\t * Title set in toolbar.\r\n\t */\r\n\t@Input()\r\n\tpublic toolbarTitle: string;\r\n\r\n\t/**\r\n\t * editMode?: boolean\r\n\t */\r\n\t@Input()\r\n\tpublic editMode?: boolean;\r\n\r\n\t/**\r\n\t * menuItems: MenuItem[]\r\n\t */\r\n\t@Input()\r\n\tpublic menuItems: MenuItem[];\r\n\r\n\t/**\r\n\t * reload: EventEmitter<any>\r\n\t */\r\n\t@Output()\r\n\tpublic reload: EventEmitter<any> = new EventEmitter<any>()\r\n\r\n\t/**\r\n\t * icon?: string\r\n\t *\r\n\t * icon name to be displayed before the title\r\n\t */\r\n\t@Input()\r\n\tpublic icon: string;\r\n\r\n\t/**\r\n\t * logo?: string\r\n\t *\r\n\t * logo icon name to be displayed before the title.\r\n\t * If [icon] is set, then this will not be shown.\r\n\t */\r\n\t@Input()\r\n\tpublic logo: string;\r\n\r\n\t/**\r\n\t * color?: string\r\n\t *\r\n\t * toolbar color option: primary | accent | warn.\r\n\t * If [color] is not set, primary is used.\r\n\t */\r\n\t@Input()\r\n\tpublic color: string = 'primary';\r\n\r\n\t/**\r\n\t * hideToggle?: boolean\r\n\t *\r\n\t * Hides toggle button\r\n\t */\r\n\t@Input()\r\n\tpublic hideToggle: boolean = false;\r\n\r\n\t/**\r\n\t * backNavigationRoute?: string\r\n\t */\r\n\t@Input()\r\n\tpublic backNavigationRoute: string;\r\n\r\n\t/**\r\n\t * Checks if router was injected.\r\n\t */\r\n\tget backNavigationRouteEnabled(): boolean { return !!this.router && !!this.backNavigationRoute; }\r\n\r\n\t/**\r\n\t * navigationRoute?: string\r\n\t *\r\n\t * option to set the combined route for the icon, logo, and toolbarTitle.\r\n\t */\r\n\t@Input()\r\n\tpublic navigationRoute: string;\r\n\r\n\t/**\r\n\t * Checks if router was injected.\r\n\t */\r\n\tget routerEnabled(): boolean { return !!this.router && !!this.navigationRoute; }\r\n\r\n\t/**\r\n\t * Constructor\r\n\t * @param router \r\n\t */\r\n\tconstructor(@Optional() private router: Router, @Optional() protected route: ActivatedRoute) { }\r\n\r\n\t/**\r\n\t * Handles click event on back navigation title\r\n\t */\r\n\tpublic handleBackNavigationClick(): void {\r\n\t\tif (this.backNavigationRouteEnabled) {\r\n\t\t\tvar urlParts = Utils.getUrlParts(this.backNavigationRoute);\r\n\t\t\tthis.router.navigate([urlParts.url], { queryParams: urlParts.params, fragment: urlParts.hash, relativeTo: this.route });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Handles click event on navigation title\r\n\t */\r\n\tpublic handleNavigationClick(): void {\r\n\t\tif (this.routerEnabled) {\r\n\t\t\tthis.router.navigateByUrl(this.navigationRoute);\r\n\t\t}\r\n\t}\r\n}","<div class=\"vd-layout-nav-wrapper\">\r\n\t<mat-toolbar [color]=\"color\">\r\n\t\t<!-- #region Toggle buton -->\r\n\t\t<button mat-icon-button vd-menu-button vdLayoutToggle *ngIf=\"!hideToggle\">\r\n\t\t\t<mat-icon>menu</mat-icon>\r\n\t\t</button>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Back button -->\r\n\t\t<button mat-icon-button vd-menu-button *ngIf=\"backNavigationRouteEnabled\" (click)=\"handleBackNavigationClick()\">\r\n\t\t\t<mat-icon>arrow_back</mat-icon>\r\n\t\t</button>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Custom buttons -->\r\n\t\t<ng-content select=\"[vd-menu-button]\"></ng-content>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Logo with home link -->\r\n\t\t<span *ngIf=\"icon || logo || toolbarTitle\" [class.cursor-pointer]=\"routerEnabled\" (click)=\"handleNavigationClick()\" class=\"vd-layout-nav-toolbar-content\">\r\n\t\t\t<mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\r\n\t\t\t<mat-icon *ngIf=\"logo && !icon\" class=\"mat-icon-logo\" [svgIcon]=\"logo\"></mat-icon>\r\n\t\t\t<span *ngIf=\"toolbarTitle\">{{toolbarTitle}}</span>&nbsp;\r\n\t\t\t<span i18n=\"@@add\" *ngIf=\"editMode == false\">Add</span>\r\n\t\t\t<span i18n=\"@@edit\" *ngIf=\"editMode == true\">Edit</span>\r\n\t\t</span>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<!-- #region Custom content -->\r\n\t\t<ng-content select=\"[vd-toolbar-content]\"></ng-content>\r\n\t\t<!-- #endregion -->\r\n\r\n\t\t<span flex></span>\r\n\r\n\t\t<!-- #region Actions -->\r\n\t\t<vd-form-toolbar *ngIf=\"editMode==true\" [menuItems]=\"menuItems\" (reload)=\"reload?.emit($event)\"></vd-form-toolbar>\r\n\t\t<!-- #endregion-->\r\n\r\n\t\t<!-- #region Custom right content -->\r\n\t\t<ng-content select=\"[vd-toolbar-content-right]\"></ng-content>\r\n\t\t<!-- #endregion -->\r\n\t</mat-toolbar>\r\n\t<div class=\"vd-layout-nav-content\" cdkScrollable>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n\t<ng-content select=\"vd-layout-footer\"></ng-content>\r\n</div>","import { Component, Input } from '@angular/core';\r\nimport { ActionMenuItem } from '../../common/common.module';\r\n\r\n@Component({\r\n selector: 'vd-list-toolbar-menu',\r\n templateUrl: './list-toolbar-menu.component.html'\r\n})\r\nexport class VdListToolbarMenuComponent {\r\n\r\n /**\r\n * A list of menu items\r\n */\r\n @Input()\r\n public menuItems: ActionMenuItem[];\r\n}","<div layout=\"row\" layout-align=\"start center\" flex>\r\n <button mat-icon-button [mat-menu-trigger-for]=\"toolbarMenu\" *ngIf=\"menuItems?.length\">\r\n <mat-icon>more_vert</mat-icon>\r\n </button>\r\n <mat-menu x-position=\"before\" #toolbarMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuItem of menuItems\">\r\n <ng-container *ngIf=\"!menuItem.subItems\">\r\n <button type=\"button\" mat-menu-item (click)=\"menuItem.event?menuItem.event():null\" *ngIf=\"!menuItem.hide || !menuItem.hide()\" [disabled]=\"menuItem.disable && menuItem.disable()\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </button>\r\n </ng-container>\r\n <ng-container *ngIf=\"menuItem.subItems\">\r\n <mat-menu x-position=\"before\" #subMenu=\"matMenu\">\r\n <ng-container *ngFor=\"let menuSubItem of menuItem.subItems\">\r\n <button type=\"button\" mat-menu-item (click)=\"menuSubItem.event?menuSubItem.event():null\" *ngIf=\"!menuSubItem.hide || !menuSubItem.hide()\" [disabled]=\"menuSubItem.disable && menuSubItem.disable()\">\r\n <mat-icon fontSet=\"{{menuSubItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuSubItem.iconClass\">{{menuSubItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuSubItem.title}}</span>\r\n </button>\r\n </ng-container>\r\n </mat-menu>\r\n <button type=\"button\" mat-menu-item [matMenuTriggerFor]=\"subMenu\" *ngIf=\"!menuItem.hide || !menuItem.hide()\" [disabled]=\"menuItem.disable && menuItem.disable()\">\r\n <mat-icon fontSet=\"{{menuItem.iconFontSet || 'material-icons-outlined'}}\" [class]=\"menuItem.iconClass\">{{menuItem.icon || 'radio_button_unchecked'}}</mat-icon>\r\n <span>{{menuItem.title}}</span>\r\n </button>\r\n </ng-container>\r\n </ng-container>\r\n </mat-menu>\r\n</div>","import { DataSource } from '@angular/cdk/table';\r\nimport { Component, Input } from '@angular/core';\r\nimport { ActionMenuItem } from '../../common/models/action-menu-item';\r\n\r\n@Component({\r\n selector: 'vd-list-toolbar',\r\n templateUrl: './list-toolbar.component.html'\r\n})\r\nexport class VdListToolbarComponent {\r\n /**\r\n * Data source\r\n */\r\n @Input()\r\n public dataSource: DataSource<any> | any;\r\n\r\n /**\r\n * Toolbar title\r\n */\r\n @Input()\r\n public subtitle: string;\r\n\r\n /**\r\n * A list of menu items\r\n */\r\n @Input()\r\n public menuItems: ActionMenuItem[];\r\n}","<mat-toolbar dense>\r\n <div layout=\"row\" layout-align=\"start center\" flex>\r\n <button mat-icon-button vdLayoutManageListOpen [hideWhenOpened]=\"true\">\r\n <mat-icon>menu</mat-icon>\r\n </button>\r\n <span>{{subtitle}}</span>\r\n <span flex></span>\r\n <button mat-icon-button (click)=\"dataSource.reload()\" *ngIf=\"dataSource\">\r\n <mat-icon>sync</mat-icon>\r\n </button>\r\n <vd-list-toolbar-menu [menuItems]=\"menuItems\"></vd-list-toolbar-menu>\r\n </div>\r\n</mat-toolbar>","import { AUTO_STYLE, AnimationTriggerMetadata, animate, animateChild, group, query, state, style, transition, trigger } from '@angular/animations';\r\nimport { IAnimationOptions } from '../common/interfaces';\r\n\r\nexport interface ICollapseAnimation extends IAnimationOptions {\r\n\teaseOnClose?: string;\r\n\teaseOnOpen?: string;\r\n}\r\n\r\n/**\r\n* Function VdCollapseAnimation\r\n*\r\n* params:\r\n* * anchor: Name of the anchor that will attach to a dom element in the components template that will contain the animation. Defaults to vdCollapse.\r\n* * duration: Duration the animation will run in milliseconds. Defaults to 150 ms.\r\n* * delay: Delay before the animation will run in milliseconds. Defaults to 0 ms.\r\n* * easeOnClose: Animation accelerates and decelerates when closing. Defaults to ease-in.\r\n* * easeOnOpen: Animation accelerates and decelerates when opening. Defaults to ease-out.\r\n*\r\n* Returns an [AnimationTriggerMetadata] object with states for a collapse/expand animation.\r\n*\r\n* usage: [@vdCollapse]=\"true|false\"\r\n*/\r\nexport function VdCollapseAnimation(collapseOptions: ICollapseAnimation = {}): AnimationTriggerMetadata {\r\n\treturn trigger(collapseOptions.anchor || 'vdCollapse', [\r\n\t\tstate('1', style({\r\n\t\t\theight: '0',\r\n\t\t\tdisplay: 'none',\r\n\t\t})),\r\n\t\tstate('0', style({\r\n\t\t\theight: AUTO_STYLE,\r\n\t\t\tdisplay: AUTO_STYLE,\r\n\t\t})),\r\n\t\ttransition('0 => 1', [\r\n\t\t\tgroup([\r\n\t\t\t\tquery('@*', animateChild(), { optional: true }),\r\n\t\t\t\tanimate((collapseOptions.duration || 150) + 'ms ' +\r\n\t\t\t\t\t(collapseOptions.delay || 0) + 'ms ' +\r\n\t\t\t\t\t(collapseOptions.easeOnClose || 'ease-in')),\r\n\t\t\t]),\r\n\t\t]),\r\n\t\ttransition('1 => 0', [\r\n\t\t\tgroup([\r\n\t\t\t\tquery('@*', animateChild(), { optional: true }),\r\n\t\t\t\tanimate((collapseOptions.duration || 150) + 'ms ' +\r\n\t\t\t\t\t(collapseOptions.delay || 0) + 'ms ' +\r\n\t\t\t\t\t(collapseOptions.easeOnOpen || 'ease-out')),\r\n\t\t\t]),\r\n\t\t]),\r\n\t]);\r\n}","import type { QueryList } from '@angular/core';\r\nimport { Component, ContentChildren, Directive, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, SecurityContext } from '@angular/core';\r\nimport { MatDrawerToggleResult } from '@angular/material/sidenav';\r\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { VdCollapseAnimation } from '../../common/animations/collapse/collapse.animation';\r\nimport { VdLayoutComponent } from '../layout.component';\r\n\r\n@Directive({\r\n\tselector: '[vd-navigation-drawer-menu]',\r\n})\r\nexport class VdNavigationDrawerMenuDirective {\r\n\r\n}\r\n\r\n@Directive({\r\n\tselector: '[vd-navigation-drawer-toolbar]',\r\n})\r\nexport class VdNavigationDrawerToolbarDirective {\r\n\r\n}\r\n\r\n@Component({\r\n\tselector: 'vd-navigation-drawer',\r\n\tstyleUrls: ['./navigation-drawer.component.scss'],\r\n\ttemplateUrl: './navigation-drawer.component.html',\r\n\tanimations: [VdCollapseAnimation()],\r\n})\r\nexport class VdNavigationDrawerComponent implements OnInit, OnDestroy {\r\n\r\n\tprivate _closeSubscription: Subscription;\r\n\tprivate _menuToggled: boolean = false;\r\n\tprivate _backgroundImage: SafeStyle;\r\n\r\n\tget menuToggled(): boolean {\r\n\t\treturn this._menuToggled;\r\n\t}\r\n\r\n\t@ContentChildren(VdNavigationDrawerMenuDirective) _drawerMenu: QueryList<VdNavigationDrawerMenuDirective>;\r\n\r\n\t@ContentChildren(VdNavigationDrawerToolbarDirective) _toolbar: QueryList<VdNavigationDrawerToolbarDirective>;\r\n\r\n\t/**\r\n\t * Checks if there is a [VdNavigationDrawerMenuDirective] has content.\r\n\t */\r\n\tget isMenuAvailable(): boolean {\r\n\t\treturn this._drawerMenu ? this._drawerMenu.length > 0 : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if there is a [VdNavigationDrawerToolbarDirective] has content.\r\n\t */\r\n\tget isCustomToolbar(): boolean {\r\n\t\treturn this._toolbar ? this._toolbar.length > 0 : false;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if there is a background image for the toolbar.\r\n\t */\r\n\tget isBackgroundAvailable(): boolean {\r\n\t\treturn !!this._backgroundImage;\r\n\t}\r\n\r\n\t/**\r\n\t * sidenavTitle?: string\r\n\t * Title set in sideNav.\r\n\t */\r\n\t@Input('sidenavTitle') sidenavTitle: string;\r\n\r\n\t/**\r\n\t * icon?: string\r\n\t *\r\n\t * icon name to be displayed before the title\r\n\t */\r\n\t@Input('icon') icon: string;\r\n\r\n\t/**\r\n\t * logo?: string\r\n\t *\r\n\t * logo icon name to be displayed before the title.\r\n\t * If [icon] is set, then this will not be shown.\r\n\t */\r\n\t@Input('logo') logo: string;\r\n\r\n\t/**\r\n\t * color?: string\r\n\t *\r\n\t * toolbar color option: primary | accent | warn.\r\n\t * If [color] is not set, default is used.\r\n\t */\r\n\t@Input('color') color: string;\r\n\r\n\t/**\r\n\t * navigationRoute?: string\r\n\t *\r\n\t * option to set the combined route for the icon, logo, and sidenavTitle.\r\n\t */\r\n\t@Input('navigationRoute') navigationRoute: string;\r\n\r\n\t/**\r\n\t * backgroundUrl?: SafeResourceUrl\r\n\t *\r\n\t * image to be displayed as the background of the toolbar.\r\n\t * URL used will be sanitized, but it should be always from a trusted source to avoid XSS.\r\n\t */\r\n\t@Input('backgroundUrl')\r\n\t// TODO angular complains with warnings if this is type [SafeResourceUrl].. so we will make it <any> until its fixed.\r\n\t// https://github.com/webpack/webpack/issues/2977\r\n\tset backgroundUrl(backgroundUrl: any) {\r\n\t\tif (backgroundUrl) {\r\n\t\t\tlet sanitizedUrl: string | null = this._sanitize.sanitize(SecurityContext.RESOURCE_URL, backgroundUrl);\r\n\t\t\tthis._backgroundImage = this._sanitize.sanitize(SecurityContext.STYLE, 'url(' + sanitizedUrl + ')');\r\n\t\t}\r\n\t}\r\n\tget backgroundImage(): SafeStyle {\r\n\t\treturn this._backgroundImage;\r\n\t}\r\n\r\n\t/**\r\n\t * name?: string\r\n\t *\r\n\t * string to be displayed as part of the navigation drawer sublabel.\r\n\t * if [email] is not set, then [name] will be the toggle menu text.\r\n\t */\r\n\t@Input('name') name: string;\r\n\r\n\t/**\r\n\t * email?: string\r\n\t *\r\n\t * string to be displayed as part of the navigation drawer sublabel in the [toggle] menu text.\r\n\t * if [email] and [name] are not set, then the toggle menu is not rendered.\r\n\t */\r\n\t@Input('email') email: string;\r\n\r\n\t/**\r\n\t * Checks if router was injected.\r\n\t */\r\n\tget routerEnabled(): boolean {\r\n\t\treturn !!this._router && !!this.navigationRoute;\r\n\t}\r\n\r\n\tconstructor(@Inject(forwardRef(() => VdLayoutComponent)) private _layout: VdLayoutComponent,\r\n\t\t@Optional() private _router: Router,\r\n\t\tprivate _sanitize: DomSanitizer) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis._closeSubscription = this._layout.sidenav.openedChange.subscribe((opened: boolean) => {\r\n\t\t\tif (!opened) {\r\n\t\t\t\tthis._menuToggled = false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this._closeSubscription) {\r\n\t\t\tthis._closeSubscription.unsubscribe();\r\n\t\t\tthis._closeSubscription = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleMenu(): void {\r\n\t\tif (this.isMenuAvailable) {\r\n\t\t\tthis._menuToggled = !this._menuToggled;\r\n\t\t}\r\n\t}\r\n\r\n\thandleNavigationClick(): void {\r\n\t\tif (this.routerEnabled) {\r\n\t\t\tthis._router.navigateByUrl(this.navigationRoute);\r\n\t\t\tthis.close();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy toggle method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic toggle(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this._layout.toggle();\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy open method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic open(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this._layout.open();\r\n\t}\r\n\r\n\t/**\r\n\t * Proxy close method to access sidenav from outside (from vd-layout template).\r\n\t */\r\n\tpublic close(): Promise<MatDrawerToggleResult> {\r\n\t\treturn this._layout.close();\r\n\t}\r\n}\r\n","<mat-toolbar [color]=\"color\" [style.background-image]=\"backgroundImage\" [class.vd-toolbar-background]=\"!!isBackgroundAvailable\"\r\n class=\"vd-nagivation-drawer-toolbar\">\r\n\t<ng-content select=\"[vd-navigation-drawer-toolbar]\"></ng-content>\r\n\t<ng-container *ngIf=\"!isCustomToolbar\">\r\n\t\t<div *ngIf=\"icon || logo || sidenavTitle\" class=\"vd-navigation-drawer-toolbar-content\" [class.cursor-pointer]=\"routerEnabled\"\r\n\t\t (click)=\"handleNavigationClick()\">\r\n\t\t\t<mat-icon *ngIf=\"icon\">{{icon}}</mat-icon>\r\n\t\t\t<mat-icon *ngIf=\"logo && !icon\" class=\"mat-icon-logo\" [svgIcon]=\"logo\"></mat-icon>\r\n\t\t\t<span *ngIf=\"sidenavTitle\" class=\"vd-navigation-drawer-title\">{{sidenavTitle}}</span>\r\n\t\t</div>\r\n\t\t<div class=\"vd-navigation-drawer-name\" *ngIf=\"email && name\">{{name}}</div>\r\n\t\t<div class=\"vd-navigation-drawer-menu-toggle\" href *ngIf=\"email || name\" (click)=\"toggleMenu()\">\r\n\t\t\t<span class=\"vd-navigation-drawer-label\">{{email || name}}</span>\r\n\t\t\t<button mat-icon-button class=\"vd-navigation-drawer-menu-button\" *ngIf=\"isMenuAvailable\">\r\n\t\t\t\t<mat-icon *ngIf=\"!menuToggled\">arrow_drop_down</mat-icon>\r\n\t\t\t\t<mat-icon *ngIf=\"menuToggled\">arrow_drop_up</mat-icon>\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</ng-container>\r\n</mat-toolbar>\r\n<div class=\"vd-navigation-drawer-content\" [@vdCollapse]=\"menuToggled\">\r\n\t<ng-content></ng-content>\r\n</div>\r\n<div class=\"vd-navigation-drawer-menu-content\" [@vdCollapse]=\"!menuToggled\">\r\n\t<ng-content select=\"[vd-navigation-drawer-menu]\"></ng-content>\r\n</div>","import { ScrollingModule } from '@angular/cdk/scrolling';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule, Type } from '@angular/core';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { VdMenuModule } from '../menu/menu.module';\r\nimport { VdFormToolbarMenuComponent } from './form-toolbar-menu/form-toolbar-menu.component';\r\nimport { VdFormToolbarComponent } from './form-toolbar/form-toolbar.component';\r\nimport { VdLayoutCardOverComponent } from './layout-card-over/layout-card-over.component';\r\nimport { VdLayoutFooterComponent } from './layout-footer/layout-footer.component';\r\nimport { VdLayoutManageListComponent } from './layout-manage-list/layout-manage-list.component';\r\nimport { VdLayoutManageListCloseDirective, VdLayoutManageListOpenDirective, VdLayoutManageListToggleDirective } from './layout-manage-list/layout-manage-list.directives';\r\nimport { VdLayoutNavListComponent } from './layout-nav-list/layout-nav-list.component';\r\nimport { VdLayoutNavListCloseDirective, VdLayoutNavListOpenDirective, VdLayoutNavListToggleDirective } from './layout-nav-list/layout-nav-list.directives';\r\nimport { VdLayoutNavComponent } from './layout-nav/layout-nav.component';\r\nimport { VdLayoutComponent } from './layout.component';\r\nimport { VdLayoutCloseDirective, VdLayoutOpenDirective, VdLayoutToggleDirective } from './layout.directives';\r\nimport { VdListToolbarMenuComponent } from './list-toolbar-menu/list-toolbar-menu.component';\r\nimport { VdListToolbarComponent } from './list-toolbar/list-toolbar.component';\r\nimport { VdNavigationDrawerComponent, VdNavigationDrawerMenuDirective, VdNavigationDrawerToolbarDirective } from './navigation-drawer/navigation-drawer.component';\r\n\r\nconst VD_LAYOUTS: Type<any>[] = [\r\n\tVdLayoutComponent,\r\n\tVdLayoutToggleDirective,\r\n\tVdLayoutCloseDirective,\r\n\tVdLayoutOpenDirective,\r\n\r\n\tVdLayoutNavComponent,\r\n\r\n\tVdLayoutNavListComponent,\r\n\tVdLayoutNavListToggleDirective,\r\n\tVdLayoutNavListCloseDirective,\r\n\tVdLayoutNavListOpenDirective,\r\n\r\n\tVdLayoutCardOverComponent,\r\n\r\n\tVdLayoutManageListComponent,\r\n\tVdLayoutManageListToggleDirective,\r\n\tVdLayoutManageListCloseDirective,\r\n\tVdLayoutManageListOpenDirective,\r\n\r\n\tVdLayoutFooterComponent,\r\n\r\n\tVdNavigationDrawerComponent,\r\n\tVdNavigationDrawerMenuDirective,\r\n\tVdNavigationDrawerToolbarDirective,\r\n\r\n\tVdFormToolbarComponent,\r\n\tVdFormToolbarMenuComponent,\r\n\tVdListToolbarComponent,\r\n\tVdListToolbarMenuComponent\r\n];\r\n\r\nexport {\r\n\tVdLayoutComponent,\r\n\tVdLayoutToggleDirective,\r\n\tVdLayoutCloseDirective,\r\n\tVdLayoutOpenDirective,\r\n\tVdLayoutNavComponent,\r\n\tVdLayoutNavListComponent,\r\n\tVdLayoutNavListToggleDirective,\r\n\tVdLayoutNavListCloseDirective,\r\n\tVdLayoutNavListOpenDirective,\r\n\tVdLayoutCardOverComponent,\r\n\tVdLayoutManageListComponent,\r\n\tVdLayoutManageListToggleDirective,\r\n\tVdLayoutManageListCloseDirective,\r\n\tVdLayoutManageListOpenDirective,\r\n\tVdLayoutFooterComponent,\r\n\tVdNavigationDrawerComponent,\r\n\tVdNavigationDrawerMenuDirective,\r\n\tVdNavigationDrawerToolbarDirective,\r\n\tVdFormToolbarComponent,\r\n\tVdFormToolbarMenuComponent,\r\n\tVdListToolbarComponent,\r\n\tVdListToolbarMenuComponent\r\n};\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tScrollingModule,\r\n\t\tMatSidenavModule,\r\n\t\tMatToolbarModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n\t\tMatCardModule,\r\n\t\tMatListModule,\r\n\t\tMatMenuModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tVdMenuModule\r\n\t],\r\n\tdeclarations: [\r\n\t\tVD_LAYOUTS,\r\n\t],\r\n\texports: [\r\n\t\tVD_LAYOUTS,\r\n\t],\r\n})\r\nexport class VdLayoutModule {\r\n\r\n}\r\n","import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { VdMediaService } from '../services/media.service';\r\n\r\n@Directive({\r\n\tselector: '[vdMediaToggle]',\r\n})\r\nexport class VdMediaToggleDirective implements OnInit, OnDestroy {\r\n\r\n\tprivate _subscription: Subscription;\r\n\tprivate _query: string;\r\n\tprivate _matches: boolean = false;\r\n\tprivate _attributes: { [key: string]: string } = {};\r\n\tprivate _styles: { [key: string]: string } = {};\r\n\tprivate _classes: string[] = [];\r\n\r\n\t/**\r\n\t * vdMediaToggle: string\r\n\t * Media query used to evaluate screen/window size.\r\n\t * Toggles attributes, classes and styles if media query is matched.\r\n\t */\r\n\t@Input('vdMediaToggle')\r\n\tset query(query: string) {\r\n\t\tif (!query) {\r\n\t\t\tthrow new Error('Query needed for [vdMediaToggle] directive.');\r\n\t\t}\r\n\t\tthis._query = query;\r\n\t}\r\n\r\n\t/**\r\n\t * mediaAttributes: {[key: string]: string}\r\n\t * Attributes to be toggled when media query matches.\r\n\t */\r\n\t@Input('mediaAttributes')\r\n\tset attributes(attributes: any) {\r\n\t\tthis._attributes = attributes;\r\n\t}\r\n\r\n\t/**\r\n\t * mediaClasses: string[]\r\n\t * CSS Classes to be toggled when media query matches.\r\n\t */\r\n\t@Input('mediaClasses')\r\n\tset classes(classes: string[]) {\r\n\t\tthis._classes = classes;\r\n\t}\r\n\r\n\t/**\r\n\t * mediaStyles: {[key: string]: string}\r\n\t * CSS Styles to be toggled when media query matches.\r\n\t */\r\n\t@Input('mediaStyles')\r\n\tset styles(styles: any) {\r\n\t\tthis._styles = styles;\r\n\t}\r\n\r\n\tconstructor(private _renderer: Renderer2, private _elementRef: ElementRef, private _mediaService: VdMediaService) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis._mediaChange(this._mediaService.query(this._query));\r\n\t\tthis._subscription = this._mediaService.registerQuery(this._query).subscribe((matches: boolean) => {\r\n\t\t\tthis._mediaChange(matches);\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tif (this._subscription) {\r\n\t\t\tthis._subscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _mediaChange(matches: boolean): void {\r\n\t\tthis._matches = matches;\r\n\t\tthis._changeAttributes();\r\n\t\tthis._changeClasses();\r\n\t\tthis._changeStyles();\r\n\t}\r\n\r\n\tprivate _changeAttributes(): void {\r\n\t\tfor (let attr in this._attributes) {\r\n\t\t\tif (this._matches) {\r\n\t\t\t\tthis._renderer.setAttribute(this._elementRef.nativeElement, attr, this._attributes[attr]);\r\n\t\t\t} else {\r\n\t\t\t\tthis._renderer.removeAttribute(this._elementRef.nativeElement, attr);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate _changeClasses(): void {\r\n\t\tthis._classes.forEach((className: string) => {\r\n\t\t\tif (this._matches) {\r\n\t\t\t\tthis._renderer.addClass(this._elementRef.nativeElement, className);\r\n\t\t\t} else {\r\n\t\t\t\tthis._renderer.removeClass(this._elementRef.nativeElement, className);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate _changeStyles(): void {\r\n\t\tfor (let style in this._styles) {\r\n\t\t\tif (this._matches) {\r\n\t\t\t\tthis._renderer.setStyle(this._elementRef.nativeElement, style, this._styles[style]);\r\n\t\t\t} else {\r\n\t\t\t\tthis._renderer.removeStyle(this._elementRef.nativeElement, style);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}","import { CommonModule } from '@angular/common';\r\nimport { NgModule, Type } from '@angular/core';\r\nimport { VdMediaToggleDirective } from './directives/media-toggle.directive';\r\nimport { MEDIA_PROVIDER } from './services/media.service';\r\n\r\nexport { VdMediaService } from './services/media.service';\r\n\r\nconst VD_MEDIA: Type<any>[] = [\r\n\tVdMediaToggleDirective,\r\n];\r\n\r\nexport { VdMediaToggleDirective };\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t],\r\n\tdeclarations: [\r\n\t\tVD_MEDIA,\r\n\t],\r\n\texports: [\r\n\t\tVD_MEDIA,\r\n\t],\r\n\tproviders: [\r\n\t\tMEDIA_PROVIDER,\r\n\t],\r\n})\r\nexport class VdMediaModule { }","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Dir } from '@angular/cdk/bidi';\r\nimport { Component, EventEmitter, Input, OnInit, Optional, Output, ViewChild } from '@angular/core';\r\nimport { MatInput } from '@angular/material/input';\r\nimport { debounceTime, skip } from 'rxjs/operators';\r\n\r\n@Component({\r\n\tselector: 'vd-search-input',\r\n\ttemplateUrl: './vd-search-input.component.html',\r\n\tstyleUrls: ['./vd-search-input.component.scss'],\r\n\tanimations: [\r\n\t\ttrigger('searchState', [\r\n\t\t\tstate('hide-left', style({\r\n\t\t\t\ttransform: 'translateX(-150%)',\r\n\t\t\t\tdisplay: 'none',\r\n\t\t\t})),\r\n\t\t\tstate('hide-right', style({\r\n\t\t\t\ttransform: 'translateX(150%)',\r\n\t\t\t\tdisplay: 'none',\r\n\t\t\t})),\r\n\t\t\tstate('show', style({\r\n\t\t\t\ttransform: 'translateX(0%)',\r\n\t\t\t\tdisplay: 'block',\r\n\t\t\t})),\r\n\t\t\ttransition('* => show', animate('200ms ease-in')),\r\n\t\t\ttransition('show => *', animate('200ms ease-out')),\r\n\t\t]),\r\n\t],\r\n})\r\nexport class VdSearchInputComponent implements OnInit {\r\n\r\n\t@ViewChild(MatInput, { static: true }) private _input: MatInput;\r\n\r\n\tvalue: string;\r\n\r\n\t/**\r\n\t* showUnderline?: boolean\r\n\t* Sets if the input underline should be visible. Defaults to 'false'.\r\n\t*/\r\n\t@Input('showUnderline') showUnderline: boolean = false;\r\n\r\n\t/**\r\n\t* debounce?: number\r\n\t* Debounce timeout between keypresses. Defaults to 400.\r\n\t*/\r\n\t@Input('debounce') debounce: number = 400;\r\n\r\n\t/**\r\n\t* placeholder?: string\r\n\t* Placeholder for the underlying input component.\r\n\t*/\r\n\t@Input('placeholder') placeholder: string;\r\n\r\n\t/**\r\n\t* searchDebounce: function($event)\r\n\t* Event emitted after the [debounce] timeout.\r\n\t*/\r\n\t@Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t* search: function($event)\r\n\t* Event emitted after the key enter has been pressed.\r\n\t*/\r\n\t@Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t* clear: function()\r\n\t* Event emitted after the clear icon has been clicked.\r\n\t*/\r\n\t@Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t/**\r\n\t* blur: function()\r\n\t* Event emitted after the blur event has been called in underlying input.\r\n\t*/\r\n\t@Output('blur') onBlur: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\tget isRTL(): boolean {\r\n\t\tif (this._dir) {\r\n\t\t\treturn this._dir.dir === 'rtl';\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tconstructor(@Optional() private _dir: Dir) {\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis._input.ngControl.valueChanges.pipe(\r\n\t\t\tdebounceTime(this.debounce),\r\n\t\t\tskip(1), // skip first change when value is set to undefined\r\n\t\t).subscribe((value: string) => {\r\n\t\t\tthis._searchTermChanged(value);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t* Method to focus to underlying input.\r\n\t*/\r\n\tfocus(): void {\r\n\t\tthis._input.focus();\r\n\t}\r\n\r\n\thandleBlur(): void {\r\n\t\tthis.onBlur.emit(undefined);\r\n\t}\r\n\r\n\tstopPropagation(event: Event): void {\r\n\t\tevent.stopPropagation();\r\n\t}\r\n\r\n\thandleSearch(event: Event): void {\r\n\t\tthis.stopPropagation(event);\r\n\t\tthis.onSearch.emit(this.value);\r\n\t}\r\n\r\n\tclearSearch(): void {\r\n\t\tthis.value = '';\r\n\t\tthis.onClear.emit(undefined);\r\n\t}\r\n\r\n\tprivate _searchTermChanged(value: string): void {\r\n\t\tthis.onSearchDebounce.emit(value);\r\n\t}\r\n}","<div class=\"vd-search-input\" layout=\"row\" layout-align=\"end center\">\r\n\t<mat-form-field [class.mat-hide-underline]=\"!showUnderline\" floatPlaceholder=\"never\" flex appearance=\"legacy\">\r\n\t\t<input matInput #searchElement type=\"search\" [(ngModel)]=\"value\" [placeholder]=\"placeholder\" (blur)=\"handleBlur()\" (search)=\"stopPropagation($event)\" (keyup.enter)=\"handleSearch($event)\" />\r\n\t</mat-form-field>\r\n\t<button mat-icon-button type=\"button\" [@searchState]=\"(searchElement.value ? 'show' : (isRTL ? 'hide-left' : 'hide-right'))\" (click)=\"clearSearch()\" flex=\"none\">\r\n\t\t<mat-icon>cancel</mat-icon>\r\n\t</button>\r\n</div>","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\r\nimport { VdSearchInputComponent } from '../vd-search-input/vd-search-input.component';\r\n\r\n@Component({\r\n\tselector: 'vd-search-box',\r\n\ttemplateUrl: './vd-search-box.component.html',\r\n\tstyleUrls: ['./vd-search-box.component.scss'],\r\n\tanimations: [\r\n\t\ttrigger('inputState', [\r\n\t\t\tstate('false', style({\r\n\t\t\t\twidth: '0%',\r\n\t\t\t\t'margin-left': '0px',\r\n\t\t\t\t'margin-right': '0px',\r\n\t\t\t})),\r\n\t\t\tstate('true', style({\r\n\t\t\t\twidth: '100%',\r\n\t\t\t\t'margin-left': '*',\r\n\t\t\t\t'margin-right': '*',\r\n\t\t\t})),\r\n\t\t\ttransition('0 => 1', animate('200ms ease-in')),\r\n\t\t\ttransition('1 => 0', animate('200ms ease-out')),\r\n\t\t]),\r\n\t],\r\n})\r\nexport class VdSearchBoxComponent {\r\n\r\n\tprivate _searchVisible: boolean = false;\r\n\t@ViewChild(VdSearchInputComponent, { static: true }) private _searchInput: VdSearchInputComponent;\r\n\r\n\tset value(value: any) {\r\n\t\tthis._searchInput.value = value;\r\n\t}\r\n\tget value(): any {\r\n\t\treturn this._searchInput.value;\r\n\t}\r\n\r\n\tget searchVisible(): boolean {\r\n\t\treturn this._searchVisible;\r\n\t}\r\n\r\n\t/**\r\n\t* backIcon?: string\r\n\t* The icon used to close the search toggle, only shown when [alwaysVisible] is false.\r\n\t* Defaults to 'search' icon.\r\n\t*/\r\n\t@Input('backIcon') backIcon: string = 'search';\r\n\r\n\t/**\r\n\t* showUnderline?: boolean\r\n\t* Sets if the input underline should be visible. Defaults to 'false'.\r\n\t*/\r\n\t@Input('showUnderline') showUnderline: boolean = false;\r\n\r\n\t/**\r\n\t* debounce?: number\r\n\t* Debounce timeout between keypresses. Defaults to 400.\r\n\t*/\r\n\t@Input('debounce') debounce: number = 400;\r\n\r\n\t/**\r\n\t* alwaysVisible?: boolean\r\n\t* Sets if the input should always be visible. Defaults to 'false'.\r\n\t*/\r\n\t@Input('alwaysVisible') alwaysVisible: boolean = false;\r\n\r\n\t/**\r\n\t* placeholder?: string\r\n\t* Placeholder for the underlying input component.\r\n\t*/\r\n\t@Input('placeholder') placeholder: string;\r\n\r\n\t/**\r\n\t* searchDebounce: function($event)\r\n\t* Event emitted after the [debounce] timeout.\r\n\t*/\r\n\t@Output('searchDebounce') onSearchDebounce: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t* search: function($event)\r\n\t* Event emitted after the key enter has been pressed.\r\n\t*/\r\n\t@Output('search') onSearch: EventEmitter<string> = new EventEmitter<string>();\r\n\r\n\t/**\r\n\t* clear: function()\r\n\t* Event emitted after the clear icon has been clicked.\r\n\t*/\r\n\t@Output('clear') onClear: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n\t/**\r\n\t* Method executed when the search icon is clicked.\r\n\t*/\r\n\tsearchClicked(): void {\r\n\t\tif (this.alwaysVisible || !this._searchVisible) {\r\n\t\t\tthis._searchInput.focus();\r\n\t\t}\r\n\t\tthis.toggleVisibility();\r\n\t}\r\n\r\n\ttoggleVisibility(): void {\r\n\t\tthis._searchVisible = !this._searchVisible;\r\n\t}\r\n\r\n\thandleSearchDebounce(value: string): void {\r\n\t\tthis.onSearchDebounce.emit(value);\r\n\t}\r\n\r\n\thandleSearch(value: string): void {\r\n\t\tthis.onSearch.emit(value);\r\n\t}\r\n\r\n\thandleClear(): void {\r\n\t\tthis.onClear.emit(undefined);\r\n\t}\r\n\r\n}","<div class=\"vd-search-box\" layout=\"row\" layout-align=\"end center\">\r\n\t<button mat-icon-button type=\"button\" class=\"vd-search-icon\" flex=\"none\" (click)=\"searchClicked()\">\r\n\t\t <mat-icon *ngIf=\"searchVisible && !alwaysVisible\">{{backIcon}}</mat-icon>\r\n\t\t <mat-icon *ngIf=\"!searchVisible || alwaysVisible\">search</mat-icon>\r\n\t\t</button>\r\n\t<vd-search-input #searchInput [@inputState]=\"alwaysVisible || searchVisible\" [debounce]=\"debounce\" [showUnderline]=\"showUnderline\"\r\n\t [placeholder]=\"placeholder\" (searchDebounce)=\"handleSearchDebounce($event)\" (search)=\"handleSearch($event)\" (clear)=\"handleClear(); toggleVisibility()\">\r\n\t</vd-search-input>\r\n</div>","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { VdSearchBoxComponent } from './vd-search-box/vd-search-box.component';\r\nimport { VdSearchInputComponent } from './vd-search-input/vd-search-input.component';\r\n\r\nexport { VdSearchBoxComponent } from './vd-search-box/vd-search-box.component';\r\nexport { VdSearchInputComponent } from './vd-search-input/vd-search-input.component';\r\n\r\nconst DECLARATIONS = [\r\n\tVdSearchInputComponent,\r\n\tVdSearchBoxComponent\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tMatButtonModule,\r\n\t\tMatIconModule,\r\n\t\tMatInputModule,\r\n\t],\r\n\texports: [DECLARATIONS],\r\n\tdeclarations: [DECLARATIONS]\r\n})\r\nexport class VdSearchModule { }","import { Injectable } from '@angular/core';\r\nimport { MatPaginatorIntl } from '@angular/material/paginator';\r\n\r\n/**\r\n * To modify the labels and text displayed, create a new instance of MdPaginatorIntl and\r\n * include it in a custom provider\r\n */\r\n@Injectable()\r\nexport class PaginatorIntl extends MatPaginatorIntl {\r\n\t/** \r\n\t * A label for the page size selector\r\n\t */\r\n\titemsPerPageLabel = '';\r\n\r\n\t/** \r\n\t * A label for the button that increments the current page\r\n\t */\r\n\tnextPageLabel = '';\r\n\r\n\t/** \r\n\t * A label for the button that decrements the current page\r\n\t */\r\n\tpreviousPageLabel = '';\r\n\r\n\t/** \r\n\t * A label for the range of items within the current page \r\n\t * and the length of the whole list\r\n\t */\r\n\tgetRangeLabel = (page: number, pageSize: number, length: number) => {\r\n\t\tif (length == 0 || pageSize == 0) {\r\n\t\t\treturn `0 / ${length}`;\r\n\t\t}\r\n\r\n\t\tlength = Math.max(length, 0);\r\n\t\tconst startIndex = page * pageSize;\r\n\r\n\t\t/* If the start index exceeds the list length, do not try and fix the end index to the end */\r\n\t\tconst endIndex = startIndex < length ? Math.min(startIndex + pageSize, length) : startIndex + pageSize;\r\n\r\n\t\treturn `${startIndex + 1} - ${endIndex} / ${length}`;\r\n\t}\r\n}","export class Pagination<TModel> {\r\n\tpage: number;\r\n\tpageSize: number;\r\n\tpageCount: number;\r\n\ttotal: number;\r\n\titems: TModel[];\r\n}","import { ActionMenuItem } from \"../../common/models/action-menu-item\";\r\n\r\nexport class TableMenuItem extends ActionMenuItem {\r\n\r\n /**\r\n * constructor\r\n * @param init \r\n */\r\n public constructor(init?: Partial<TableMenuItem>) {\r\n super(init);\r\n Object.assign(this, init);\r\n }\r\n}","import { CdkTableModule } from '@angular/cdk/table';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatPaginatorIntl, MatPaginatorModule } from '@angular/material/paginator';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { VdCommonModule } from '../common/common.module';\r\nimport { VdDynamicTableComponent } from './components/dynamic-table/dynamic-table.component';\r\nimport { FilterClearComponent } from './components/filter-clear.component';\r\nimport { FilterDateComponent } from './components/filter-date.component';\r\nimport { FilterInputComponent } from './components/filter-input.component';\r\nimport { FilterSelectComponent, VdFilterOptionDirective } from './components/filter-select.component';\r\nimport { DataSourceFilterDirective } from './directives/data-source-filter.directive';\r\nimport { PaginatorIntl } from './paginator-intl';\r\n\r\nexport { TableColumnType } from './enums/table-column-type';\r\nexport { Column, Table } from './functions/decorators';\r\nexport { getTableDefinition } from './functions/functions';\r\nexport { Pagination } from './models/pagination';\r\nexport { TableColumn } from './models/table-column';\r\nexport { TableDefinition } from './models/table-definition';\r\nexport { TableMenuItem } from './models/table-menu-item';\r\nexport { TableDataSource } from './table.data-source';\r\nexport { TableStaticDataSource } from './table.static-data-source';\r\nexport {\r\n\tVdDynamicTableComponent,\r\n\tFilterClearComponent,\r\n\tFilterDateComponent,\r\n\tFilterInputComponent,\r\n\tDataSourceFilterDirective\r\n};\r\n\r\nconst DECLARATIONS = [\r\n\tFilterInputComponent,\r\n\tFilterSelectComponent,\r\n\tFilterClearComponent,\r\n\tFilterDateComponent,\r\n\tDataSourceFilterDirective,\r\n\tVdFilterOptionDirective,\r\n\tVdDynamicTableComponent\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tVdCommonModule,\r\n\t\tFormsModule,\r\n\t\tMatButtonModule,\r\n\t\tMatFormFieldModule,\r\n\t\tMatSelectModule,\r\n\t\tMatIconModule,\r\n\t\tMatInputModule,\r\n\t\tMatDatepickerModule,\r\n\t\tMatTableModule,\r\n\t\tMatSortModule,\r\n\t\tCdkTableModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatButtonModule,\r\n\t\tMatMenuModule,\r\n\t\tMatSlideToggleModule,\r\n\t\tMatPaginatorModule,\r\n\t\tMatTooltipModule,\r\n\t\tMatToolbarModule,\r\n\t],\r\n\texports: [DECLARATIONS],\r\n\tdeclarations: [DECLARATIONS],\r\n\tproviders: [\r\n\t\t{ provide: MatPaginatorIntl, useClass: PaginatorIntl }\r\n\t]\r\n})\r\nexport class VdTableModule { }","/*\r\n * Public API Surface of cdk\r\n */\r\n\r\nexport * from './lib/base/public_api';\r\nexport * from './lib/chips/public_api';\r\nexport * from './lib/common/public_api';\r\nexport * from './lib/dialogs/public_api';\r\nexport * from './lib/file/public_api';\r\nexport * from './lib/form-validators/public_api';\r\nexport * from './lib/forms/public_api';\r\nexport * from './lib/http/public_api';\r\nexport * from './lib/layout/public_api';\r\nexport * from './lib/media/public_api';\r\nexport * from './lib/menu/public_api';\r\nexport * from './lib/search/public_api';\r\nexport * from './lib/select/public_api';\r\nexport * from './lib/table/public_api';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["noop","BOOLEAN","VALIDATOR_CONFIG","map","FormGroup","merge","observableOf","trim","ltrim","rtrim","blacklist","stripLow","toBoolean","toFloat","toDouble","toInt","toString","whitelist","toDate","escape","prefix","suffix","sanitize","runCondition","isValid","tap","DECLARATIONS","MATRIAL_DECLARATIONS","nextUniqueId"],"mappings":"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"}