@softheon/armature 15.21.2 → 17.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/README.md +142 -18
  2. package/assets/styles/_utility.scss +35 -0
  3. package/assets/styles/material-overrides.scss +0 -1
  4. package/assets/styles/sof-styles.scss +8 -7
  5. package/{esm2020 → esm2022}/lib/alert-banner/alert-banner-api.mjs +9 -9
  6. package/{esm2020 → esm2022}/lib/alert-banner/alert-banner.module.mjs +41 -41
  7. package/{esm2020 → esm2022}/lib/alert-banner/components/alert-banner/alert-banner.component.mjs +83 -83
  8. package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-config.mjs +1 -1
  9. package/{esm2020 → esm2022}/lib/alert-banner/models/alert-banner-context.mjs +1 -1
  10. package/{esm2020 → esm2022}/lib/alert-banner/models/constants.mjs +15 -15
  11. package/{esm2020 → esm2022}/lib/alert-banner/services/alert-banner.service.mjs +44 -44
  12. package/esm2022/lib/armature.module.mjs +176 -0
  13. package/{esm2020 → esm2022}/lib/base-components/base-component-api.mjs +14 -14
  14. package/{esm2020 → esm2022}/lib/base-components/base-component.module.mjs +123 -123
  15. package/{esm2020 → esm2022}/lib/base-components/sof-alert/sof-alert.component.mjs +79 -79
  16. package/{esm2020 → esm2022}/lib/base-components/sof-badge/sof-badge.component.mjs +49 -49
  17. package/esm2022/lib/base-components/sof-banner/sof-banner.component.mjs +49 -0
  18. package/{esm2020 → esm2022}/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.mjs +188 -188
  19. package/{esm2020 → esm2022}/lib/base-components/sof-confirm-address/sof-confirm-address.component.mjs +59 -59
  20. package/esm2022/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +58 -0
  21. package/esm2022/lib/base-components/sof-modal/sof-modal.component.mjs +57 -0
  22. package/esm2022/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +79 -0
  23. package/{esm2020 → esm2022}/lib/base-components/sof-radio-card/sof-radio-card.component.mjs +35 -35
  24. package/{esm2020 → esm2022}/lib/base-components/sof-simple-alert/sof-simple-alert.component.mjs +49 -49
  25. package/esm2022/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +40 -0
  26. package/{esm2020 → esm2022}/lib/component-save-print/components/component-save-print/component-save-print.component.mjs +91 -91
  27. package/{esm2020 → esm2022}/lib/component-save-print/services/component-save-print.service.mjs +30 -30
  28. package/esm2022/lib/component-save-print/sof-ar-component-save-print.module.mjs +29 -0
  29. package/{esm2020 → esm2022}/lib/core/client-generated/api/session.service.mjs +242 -242
  30. package/{esm2020 → esm2022}/lib/core/client-generated/configuration.mjs +58 -58
  31. package/{esm2020 → esm2022}/lib/core/client-generated/encoder.mjs +16 -16
  32. package/{esm2020 → esm2022}/lib/core/client-generated/model/applicationUserModel.mjs +19 -19
  33. package/{esm2020 → esm2022}/lib/core/client-generated/model/assertedUserModel.mjs +1 -1
  34. package/{esm2020 → esm2022}/lib/core/client-generated/model/brandingModel.mjs +1 -1
  35. package/{esm2020 → esm2022}/lib/core/client-generated/model/errorModel.mjs +12 -12
  36. package/{esm2020 → esm2022}/lib/core/client-generated/model/folderLink.mjs +12 -12
  37. package/{esm2020 → esm2022}/lib/core/client-generated/model/identityProfile.mjs +1 -1
  38. package/{esm2020 → esm2022}/lib/core/client-generated/model/models.mjs +19 -19
  39. package/{esm2020 → esm2022}/lib/core/client-generated/model/oAuthModel.mjs +12 -12
  40. package/{esm2020 → esm2022}/lib/core/client-generated/model/preferencesRow.mjs +12 -12
  41. package/{esm2020 → esm2022}/lib/core/client-generated/model/rolesRow.mjs +12 -12
  42. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionGetResponseModel.mjs +1 -1
  43. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostRequestModel.mjs +1 -1
  44. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPostResponseModel.mjs +1 -1
  45. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutRequestModel.mjs +1 -1
  46. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionPutResponseModel.mjs +1 -1
  47. package/{esm2020 → esm2022}/lib/core/client-generated/model/sessionResponseModel.mjs +1 -1
  48. package/{esm2020 → esm2022}/lib/core/client-generated/model/settingsProfile.mjs +1 -1
  49. package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteColorsModel.mjs +12 -12
  50. package/{esm2020 → esm2022}/lib/core/client-generated/model/themePaletteModel.mjs +1 -1
  51. package/{esm2020 → esm2022}/lib/core/client-generated/model/trackingModel.mjs +12 -12
  52. package/{esm2020 → esm2022}/lib/core/client-generated/model/validationRecordsRow.mjs +12 -12
  53. package/{esm2020 → esm2022}/lib/core/client-generated/variables.mjs +8 -8
  54. package/{esm2020 → esm2022}/lib/core/components/app-template/app-template.component.mjs +250 -250
  55. package/{esm2020 → esm2022}/lib/core/functions/guid.mjs +10 -10
  56. package/{esm2020 → esm2022}/lib/core/functions/naming-convention.mjs +32 -32
  57. package/{esm2020 → esm2022}/lib/core/functions/route-to-pre-login-route.mjs +12 -12
  58. package/{esm2020 → esm2022}/lib/core/initializer/abstract-startup-service.mjs +3 -3
  59. package/{esm2020 → esm2022}/lib/core/initializer/initializer.service.mjs +286 -286
  60. package/{esm2020 → esm2022}/lib/core/interceptors/armature-auth-token-append.interceptor.mjs +73 -73
  61. package/{esm2020 → esm2022}/lib/core/models/base-config.mjs +1 -1
  62. package/{esm2020 → esm2022}/lib/core/models/constants.mjs +12 -12
  63. package/{esm2020 → esm2022}/lib/core/models/data-store-config.mjs +3 -3
  64. package/{esm2020 → esm2022}/lib/core/models/header-config.mjs +1 -1
  65. package/{esm2020 → esm2022}/lib/core/models/http-verbs.mjs +8 -8
  66. package/{esm2020 → esm2022}/lib/core/models/navigation-config.mjs +1 -1
  67. package/{esm2020 → esm2022}/lib/core/models/oidc-auth-settings.mjs +1 -1
  68. package/{esm2020 → esm2022}/lib/core/models/route-path.mjs +6 -6
  69. package/{esm2020 → esm2022}/lib/core/models/session-config.mjs +3 -3
  70. package/{esm2020 → esm2022}/lib/core/models/styles.mjs +1 -1
  71. package/{esm2020 → esm2022}/lib/core/models/subdomain-config.mjs +1 -1
  72. package/{esm2020 → esm2022}/lib/core/models/typed-session.mjs +3 -3
  73. package/{esm2020 → esm2022}/lib/core/models/user-entity-service-config.mjs +11 -11
  74. package/{esm2020 → esm2022}/lib/core/services/authorization.service.mjs +175 -175
  75. package/{esm2020 → esm2022}/lib/core/services/banner.service.mjs +43 -43
  76. package/{esm2020 → esm2022}/lib/core/services/base-config.service.mjs +32 -32
  77. package/{esm2020 → esm2022}/lib/core/services/custom-auth-config.service.mjs +3 -3
  78. package/{esm2020 → esm2022}/lib/core/services/default-config.service.mjs +19 -19
  79. package/{esm2020 → esm2022}/lib/core/services/session.service.mjs +385 -385
  80. package/{esm2020 → esm2022}/lib/core/services/user-entity.service.mjs +140 -140
  81. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/api.mjs +3 -3
  82. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/api/cache.service.mjs +213 -213
  83. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/configuration.mjs +58 -58
  84. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/encoder.mjs +16 -16
  85. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/cacheExpirationType.mjs +15 -15
  86. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.mjs +1 -1
  87. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/models.mjs +4 -4
  88. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.mjs +12 -12
  89. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.mjs +12 -12
  90. package/{esm2020 → esm2022}/lib/distributed-cache/client-generated/variables.mjs +8 -8
  91. package/{esm2020 → esm2022}/lib/distributed-cache/distributed-cache-api.mjs +7 -7
  92. package/esm2022/lib/distributed-cache/distributed-cache.module.mjs +38 -0
  93. package/{esm2020 → esm2022}/lib/distributed-cache/models/constants.mjs +2 -2
  94. package/{esm2020 → esm2022}/lib/distributed-cache/models/policy-person.mjs +8 -8
  95. package/{esm2020 → esm2022}/lib/distributed-cache/services/server-cache.service.mjs +48 -48
  96. package/{esm2020 → esm2022}/lib/error/components/error-common/error-common.component.mjs +25 -25
  97. package/{esm2020 → esm2022}/lib/error/error-api.mjs +6 -6
  98. package/{esm2020 → esm2022}/lib/error/error.module.mjs +31 -31
  99. package/{esm2020 → esm2022}/lib/error/models/error-common-config.mjs +7 -7
  100. package/esm2022/lib/faq/components/faq/faq.component.mjs +40 -0
  101. package/{esm2020 → esm2022}/lib/faq/faq-api.mjs +7 -7
  102. package/{esm2020 → esm2022}/lib/faq/faq.module.mjs +41 -41
  103. package/{esm2020 → esm2022}/lib/faq/models/faq-config.mjs +3 -3
  104. package/{esm2020 → esm2022}/lib/faq/models/faq.mjs +7 -7
  105. package/esm2022/lib/feedback-tool/components/feedback-tool/feedback-tool.component.mjs +81 -0
  106. package/esm2022/lib/feedback-tool/feedback-tool-api.mjs +5 -0
  107. package/esm2022/lib/feedback-tool/feedback-tool.module.mjs +44 -0
  108. package/esm2022/lib/footer/components/footer/footer.component.mjs +25 -0
  109. package/{esm2020 → esm2022}/lib/footer/components/site-map/site-map.component.mjs +25 -25
  110. package/{esm2020 → esm2022}/lib/footer/footer-api.mjs +9 -9
  111. package/{esm2020 → esm2022}/lib/footer/footer.module.mjs +45 -45
  112. package/{esm2020 → esm2022}/lib/footer/models/enum/site-map-direction.mjs +14 -14
  113. package/{esm2020 → esm2022}/lib/footer/models/footer-config.mjs +3 -3
  114. package/{esm2020 → esm2022}/lib/footer/models/site-map-models.mjs +1 -1
  115. package/{esm2020 → esm2022}/lib/forms/components/sof-address/sof-address.component.mjs +110 -110
  116. package/{esm2020 → esm2022}/lib/forms/directives/alphanumeric/alphanumeric.directive.mjs +78 -78
  117. package/{esm2020 → esm2022}/lib/forms/directives/input-trim/input-trim.directive.mjs +110 -110
  118. package/{esm2020 → esm2022}/lib/forms/directives/letters-characters/letters-characters.directive.mjs +87 -87
  119. package/{esm2020 → esm2022}/lib/forms/directives/letters-only/letters-only.directive.mjs +85 -85
  120. package/{esm2020 → esm2022}/lib/forms/directives/numbers-only/numbers-only.directive.mjs +55 -55
  121. package/{esm2020 → esm2022}/lib/forms/forms-api.mjs +19 -19
  122. package/{esm2020 → esm2022}/lib/forms/forms.module.mjs +87 -87
  123. package/{esm2020 → esm2022}/lib/forms/models/address.mjs +1 -1
  124. package/esm2022/lib/forms/models/constants.mjs +10 -0
  125. package/{esm2020 → esm2022}/lib/forms/models/county.mjs +1 -1
  126. package/{esm2020 → esm2022}/lib/forms/models/enums/states.mjs +65 -65
  127. package/{esm2020 → esm2022}/lib/forms/pipes/phone-format.pipe.mjs +33 -33
  128. package/{esm2020 → esm2022}/lib/forms/services/alert.service.mjs +167 -167
  129. package/esm2022/lib/header/components/header/header.component.mjs +161 -0
  130. package/{esm2020 → esm2022}/lib/header/components/mobile-header-menu/mobile-header-menu.component.mjs +39 -39
  131. package/{esm2020 → esm2022}/lib/header/header-api.mjs +11 -11
  132. package/{esm2020 → esm2022}/lib/header/header.module.mjs +85 -85
  133. package/{esm2020 → esm2022}/lib/header/models/header-auth.settings.mjs +31 -31
  134. package/{esm2020 → esm2022}/lib/header/models/header-language.settings.mjs +1 -1
  135. package/{esm2020 → esm2022}/lib/header/models/header-theme.settings.mjs +1 -1
  136. package/{esm2020 → esm2022}/lib/header/models/header.settings.mjs +1 -1
  137. package/{esm2020 → esm2022}/lib/header/models/mobile-header-nav.settings.mjs +1 -1
  138. package/esm2022/lib/navigation/components/navigation/navigation.component.mjs +556 -0
  139. package/{esm2020 → esm2022}/lib/navigation/models/nav-theme.settings.mjs +1 -1
  140. package/{esm2020 → esm2022}/lib/navigation/models/nav.settings.mjs +1 -1
  141. package/{esm2020 → esm2022}/lib/navigation/models/navigation.mjs +1 -1
  142. package/{esm2020 → esm2022}/lib/navigation/navigation-api.mjs +8 -8
  143. package/{esm2020 → esm2022}/lib/navigation/navigation.module.mjs +126 -126
  144. package/{esm2020 → esm2022}/lib/oauth/models/constants.mjs +5 -5
  145. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementAssertionModel.mjs +1 -1
  146. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementRefreshRequestModel.mjs +1 -1
  147. package/{esm2020 → esm2022}/lib/oauth/models/generated/accountManagementResponseModel.mjs +1 -1
  148. package/{esm2020 → esm2022}/lib/oauth/models/generated/coverageDetail.mjs +18 -18
  149. package/{esm2020 → esm2022}/lib/oauth/models/generated/finance.mjs +12 -12
  150. package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModel.mjs +12 -12
  151. package/{esm2020 → esm2022}/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.mjs +1 -1
  152. package/{esm2020 → esm2022}/lib/oauth/models/generated/person.mjs +12 -12
  153. package/{esm2020 → esm2022}/lib/oauth/models/generated/policy.mjs +1 -1
  154. package/{esm2020 → esm2022}/lib/oauth/models/generated/refreshResponseModel.mjs +12 -12
  155. package/{esm2020 → esm2022}/lib/oauth/models/hybrid-saml-oauth-config.mjs +3 -3
  156. package/{esm2020 → esm2022}/lib/oauth/oauth-api.mjs +14 -14
  157. package/{esm2020 → esm2022}/lib/oauth/oauth.module.mjs +29 -29
  158. package/{esm2020 → esm2022}/lib/oauth/services/hybrid-saml-oauth.service.mjs +201 -201
  159. package/{esm2020 → esm2022}/lib/rbac/directives/rbac-action.directive.mjs +50 -50
  160. package/{esm2020 → esm2022}/lib/rbac/models/access-token-claims.mjs +22 -22
  161. package/{esm2020 → esm2022}/lib/rbac/models/constants.mjs +3 -3
  162. package/{esm2020 → esm2022}/lib/rbac/models/decoded-access-token.mjs +68 -68
  163. package/{esm2020 → esm2022}/lib/rbac/models/rbac-config.mjs +3 -3
  164. package/{esm2020 → esm2022}/lib/rbac/models/role-access.mjs +9 -9
  165. package/{esm2020 → esm2022}/lib/rbac/rbac-api.mjs +14 -14
  166. package/{esm2020 → esm2022}/lib/rbac/rbac.module.mjs +51 -51
  167. package/{esm2020 → esm2022}/lib/rbac/services/ar-role-nav.service.mjs +104 -104
  168. package/{esm2020 → esm2022}/lib/rbac/services/oauth2-role.service.mjs +114 -114
  169. package/{esm2020 → esm2022}/lib/rbac/services/role-nav.service.mjs +3 -3
  170. package/{esm2020 → esm2022}/lib/rbac/services/tokens.mjs +3 -3
  171. package/{esm2020 → esm2022}/lib/resize-panels/components/resize-panels/resize-panels.component.mjs +156 -156
  172. package/{esm2020 → esm2022}/lib/resize-panels/models/resize-event.mjs +1 -1
  173. package/{esm2020 → esm2022}/lib/resize-panels/resize-panels-api.mjs +4 -4
  174. package/{esm2020 → esm2022}/lib/resize-panels/resize-panels.module.mjs +23 -23
  175. package/{esm2020 → esm2022}/lib/rum/models/arm-error.mjs +28 -28
  176. package/{esm2020 → esm2022}/lib/rum/models/rum-config.mjs +3 -3
  177. package/{esm2020 → esm2022}/lib/rum/rum-api.mjs +9 -9
  178. package/{esm2020 → esm2022}/lib/rum/rum.module.mjs +48 -48
  179. package/{esm2020 → esm2022}/lib/rum/services/rum.service.mjs +115 -115
  180. package/{esm2020 → esm2022}/lib/rum/services/shared-error.service.mjs +45 -45
  181. package/{esm2020 → esm2022}/lib/rum/services/softheon-error-handler.service.mjs +76 -76
  182. package/{esm2020 → esm2022}/lib/saml/components/redirect-saml/redirect-saml.component.mjs +79 -79
  183. package/{esm2020 → esm2022}/lib/saml/models/i-saml-request.mjs +1 -1
  184. package/{esm2020 → esm2022}/lib/saml/models/i-saml-response.mjs +1 -1
  185. package/{esm2020 → esm2022}/lib/saml/models/redirect-saml-request.mjs +3 -3
  186. package/{esm2020 → esm2022}/lib/saml/models/sso-gateway-model.mjs +3 -3
  187. package/{esm2020 → esm2022}/lib/saml/saml-api.mjs +14 -14
  188. package/{esm2020 → esm2022}/lib/saml/saml.module.mjs +43 -43
  189. package/{esm2020 → esm2022}/lib/saml/services/entry/abstract-saml-entry.service.mjs +3 -3
  190. package/{esm2020 → esm2022}/lib/saml/services/entry/sso-gateway-entry.service.mjs +36 -36
  191. package/{esm2020 → esm2022}/lib/saml/services/send-off/abstract-saml.service.mjs +3 -3
  192. package/{esm2020 → esm2022}/lib/saml/services/send-off/saml.service.mjs +39 -39
  193. package/{esm2020 → esm2022}/lib/sof-pipe/constants/constants.mjs +16 -16
  194. package/{esm2020 → esm2022}/lib/sof-pipe/models/sof-date-pipe-format.mjs +1 -1
  195. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.mjs +39 -39
  196. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-date/sof-date.pipe.mjs +59 -59
  197. package/{esm2020 → esm2022}/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.mjs +28 -28
  198. package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.api.mjs +8 -8
  199. package/{esm2020 → esm2022}/lib/sof-pipe/sof-pipe.module.mjs +39 -39
  200. package/{esm2020 → esm2022}/lib/theming/directives/css-override.directive.mjs +69 -69
  201. package/{esm2020 → esm2022}/lib/theming/models/css-override.mjs +10 -10
  202. package/{esm2020 → esm2022}/lib/theming/services/theme.service.mjs +169 -169
  203. package/{esm2020 → esm2022}/lib/theming/theme-api.mjs +5 -5
  204. package/{esm2020 → esm2022}/lib/theming/theme.module.mjs +31 -31
  205. package/{esm2020 → esm2022}/public-api.mjs +52 -51
  206. package/{esm2020 → esm2022}/softheon-armature.mjs +4 -4
  207. package/fesm2022/softheon-armature.mjs +7439 -0
  208. package/fesm2022/softheon-armature.mjs.map +1 -0
  209. package/index.d.ts +5 -5
  210. package/lib/alert-banner/alert-banner-api.d.ts +7 -7
  211. package/lib/alert-banner/alert-banner.module.d.ts +11 -11
  212. package/lib/alert-banner/components/alert-banner/alert-banner.component.d.ts +40 -40
  213. package/lib/alert-banner/models/alert-banner-config.d.ts +20 -20
  214. package/lib/alert-banner/models/alert-banner-context.d.ts +18 -18
  215. package/lib/alert-banner/models/constants.d.ts +15 -15
  216. package/lib/alert-banner/services/alert-banner.service.d.ts +28 -28
  217. package/lib/armature.module.d.ts +46 -46
  218. package/lib/base-components/base-component-api.d.ts +13 -13
  219. package/lib/base-components/base-component.module.d.ts +35 -35
  220. package/lib/base-components/sof-alert/sof-alert.component.d.ts +40 -40
  221. package/lib/base-components/sof-badge/sof-badge.component.d.ts +26 -26
  222. package/lib/base-components/sof-banner/sof-banner.component.d.ts +34 -34
  223. package/lib/base-components/sof-button-toggle-group/sof-button-toggle-group.component.d.ts +100 -100
  224. package/lib/base-components/sof-confirm-address/sof-confirm-address.component.d.ts +61 -61
  225. package/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.d.ts +28 -28
  226. package/lib/base-components/sof-modal/sof-modal.component.d.ts +51 -51
  227. package/lib/base-components/sof-progress-bar/sof-progress-bar.component.d.ts +40 -40
  228. package/lib/base-components/sof-radio-card/sof-radio-card.component.d.ts +20 -20
  229. package/lib/base-components/sof-simple-alert/sof-simple-alert.component.d.ts +29 -29
  230. package/lib/base-components/sof-star-rating/sof-star-rating.component.d.ts +25 -25
  231. package/lib/component-save-print/components/component-save-print/component-save-print.component.d.ts +46 -46
  232. package/lib/component-save-print/services/component-save-print.service.d.ts +18 -18
  233. package/lib/component-save-print/sof-ar-component-save-print.module.d.ts +9 -9
  234. package/lib/core/client-generated/api/session.service.d.ts +94 -94
  235. package/lib/core/client-generated/configuration.d.ts +48 -48
  236. package/lib/core/client-generated/encoder.d.ts +10 -10
  237. package/lib/core/client-generated/model/applicationUserModel.d.ts +54 -54
  238. package/lib/core/client-generated/model/assertedUserModel.d.ts +25 -25
  239. package/lib/core/client-generated/model/brandingModel.d.ts +33 -33
  240. package/lib/core/client-generated/model/errorModel.d.ts +24 -24
  241. package/lib/core/client-generated/model/folderLink.d.ts +34 -34
  242. package/lib/core/client-generated/model/identityProfile.d.ts +82 -82
  243. package/lib/core/client-generated/model/models.d.ts +19 -19
  244. package/lib/core/client-generated/model/oAuthModel.d.ts +28 -28
  245. package/lib/core/client-generated/model/preferencesRow.d.ts +15 -15
  246. package/lib/core/client-generated/model/rolesRow.d.ts +17 -17
  247. package/lib/core/client-generated/model/sessionGetResponseModel.d.ts +23 -23
  248. package/lib/core/client-generated/model/sessionPostRequestModel.d.ts +39 -39
  249. package/lib/core/client-generated/model/sessionPostResponseModel.d.ts +23 -23
  250. package/lib/core/client-generated/model/sessionPutRequestModel.d.ts +39 -39
  251. package/lib/core/client-generated/model/sessionPutResponseModel.d.ts +23 -23
  252. package/lib/core/client-generated/model/sessionResponseModel.d.ts +43 -43
  253. package/lib/core/client-generated/model/settingsProfile.d.ts +21 -21
  254. package/lib/core/client-generated/model/themePaletteColorsModel.d.ts +72 -72
  255. package/lib/core/client-generated/model/themePaletteModel.d.ts +65 -65
  256. package/lib/core/client-generated/model/trackingModel.d.ts +24 -24
  257. package/lib/core/client-generated/model/validationRecordsRow.d.ts +17 -17
  258. package/lib/core/client-generated/variables.d.ts +8 -8
  259. package/lib/core/components/app-template/app-template.component.d.ts +61 -61
  260. package/lib/core/functions/guid.d.ts +4 -4
  261. package/lib/core/functions/naming-convention.d.ts +6 -6
  262. package/lib/core/functions/route-to-pre-login-route.d.ts +6 -6
  263. package/lib/core/initializer/abstract-startup-service.d.ts +5 -5
  264. package/lib/core/initializer/initializer.service.d.ts +79 -79
  265. package/lib/core/interceptors/armature-auth-token-append.interceptor.d.ts +31 -31
  266. package/lib/core/models/base-config.d.ts +18 -18
  267. package/lib/core/models/constants.d.ts +13 -13
  268. package/lib/core/models/data-store-config.d.ts +27 -27
  269. package/lib/core/models/header-config.d.ts +9 -9
  270. package/lib/core/models/http-verbs.d.ts +10 -10
  271. package/lib/core/models/navigation-config.d.ts +14 -14
  272. package/lib/core/models/oidc-auth-settings.d.ts +11 -11
  273. package/lib/core/models/route-path.d.ts +5 -5
  274. package/lib/core/models/session-config.d.ts +18 -18
  275. package/lib/core/models/styles.d.ts +11 -11
  276. package/lib/core/models/subdomain-config.d.ts +7 -7
  277. package/lib/core/models/typed-session.d.ts +17 -17
  278. package/lib/core/models/user-entity-service-config.d.ts +14 -14
  279. package/lib/core/services/authorization.service.d.ts +54 -54
  280. package/lib/core/services/banner.service.d.ts +31 -31
  281. package/lib/core/services/base-config.service.d.ts +21 -21
  282. package/lib/core/services/custom-auth-config.service.d.ts +6 -6
  283. package/lib/core/services/default-config.service.d.ts +8 -8
  284. package/lib/core/services/session.service.d.ts +127 -127
  285. package/lib/core/services/user-entity.service.d.ts +47 -47
  286. package/lib/distributed-cache/client-generated/api/api.d.ts +3 -3
  287. package/lib/distributed-cache/client-generated/api/cache.service.d.ts +72 -72
  288. package/lib/distributed-cache/client-generated/configuration.d.ts +48 -48
  289. package/lib/distributed-cache/client-generated/encoder.d.ts +10 -10
  290. package/lib/distributed-cache/client-generated/model/cacheExpirationType.d.ts +19 -19
  291. package/lib/distributed-cache/client-generated/model/createCacheEntryRequestModel.d.ts +33 -33
  292. package/lib/distributed-cache/client-generated/model/models.d.ts +4 -4
  293. package/lib/distributed-cache/client-generated/model/retrieveCacheEntryResponseModel.d.ts +20 -20
  294. package/lib/distributed-cache/client-generated/model/updateCacheEntryRequestModel.d.ts +20 -20
  295. package/lib/distributed-cache/client-generated/variables.d.ts +8 -8
  296. package/lib/distributed-cache/distributed-cache-api.d.ts +7 -7
  297. package/lib/distributed-cache/distributed-cache.module.d.ts +8 -8
  298. package/lib/distributed-cache/models/constants.d.ts +2 -2
  299. package/lib/distributed-cache/models/policy-person.d.ts +19 -19
  300. package/lib/distributed-cache/services/server-cache.service.d.ts +72 -72
  301. package/lib/error/components/error-common/error-common.component.d.ts +14 -14
  302. package/lib/error/error-api.d.ts +4 -4
  303. package/lib/error/error.module.d.ts +11 -11
  304. package/lib/error/models/error-common-config.d.ts +21 -21
  305. package/lib/faq/components/faq/faq.component.d.ts +19 -19
  306. package/lib/faq/faq-api.d.ts +5 -5
  307. package/lib/faq/faq.module.d.ts +15 -15
  308. package/lib/faq/models/faq-config.d.ts +13 -13
  309. package/lib/faq/models/faq.d.ts +9 -9
  310. package/lib/feedback-tool/components/feedback-tool/feedback-tool.component.d.ts +62 -0
  311. package/lib/feedback-tool/feedback-tool-api.d.ts +3 -0
  312. package/lib/feedback-tool/feedback-tool.module.d.ts +14 -0
  313. package/lib/footer/components/footer/footer.component.d.ts +14 -14
  314. package/lib/footer/components/site-map/site-map.component.d.ts +13 -13
  315. package/lib/footer/footer-api.d.ts +7 -7
  316. package/lib/footer/footer.module.d.ts +14 -14
  317. package/lib/footer/models/enum/site-map-direction.d.ts +13 -13
  318. package/lib/footer/models/footer-config.d.ts +7 -7
  319. package/lib/footer/models/site-map-models.d.ts +41 -41
  320. package/lib/forms/components/sof-address/sof-address.component.d.ts +53 -53
  321. package/lib/forms/directives/alphanumeric/alphanumeric.directive.d.ts +31 -31
  322. package/lib/forms/directives/input-trim/input-trim.directive.d.ts +58 -58
  323. package/lib/forms/directives/letters-characters/letters-characters.directive.d.ts +27 -27
  324. package/lib/forms/directives/letters-only/letters-only.directive.d.ts +27 -27
  325. package/lib/forms/directives/numbers-only/numbers-only.directive.d.ts +22 -22
  326. package/lib/forms/forms-api.d.ts +14 -14
  327. package/lib/forms/forms.module.d.ts +21 -21
  328. package/lib/forms/models/address.d.ts +14 -14
  329. package/lib/forms/models/constants.d.ts +9 -9
  330. package/lib/forms/models/county.d.ts +13 -13
  331. package/lib/forms/models/enums/states.d.ts +64 -64
  332. package/lib/forms/pipes/phone-format.pipe.d.ts +10 -10
  333. package/lib/forms/services/alert.service.d.ts +60 -60
  334. package/lib/header/components/header/header.component.d.ts +120 -120
  335. package/lib/header/components/mobile-header-menu/mobile-header-menu.component.d.ts +26 -26
  336. package/lib/header/header-api.d.ts +9 -9
  337. package/lib/header/header.module.d.ts +20 -20
  338. package/lib/header/models/header-auth.settings.d.ts +30 -30
  339. package/lib/header/models/header-language.settings.d.ts +10 -10
  340. package/lib/header/models/header-theme.settings.d.ts +19 -19
  341. package/lib/header/models/header.settings.d.ts +53 -53
  342. package/lib/header/models/mobile-header-nav.settings.d.ts +11 -11
  343. package/lib/navigation/components/navigation/navigation.component.d.ts +200 -200
  344. package/lib/navigation/models/nav-theme.settings.d.ts +25 -25
  345. package/lib/navigation/models/nav.settings.d.ts +64 -64
  346. package/lib/navigation/models/navigation.d.ts +40 -40
  347. package/lib/navigation/navigation-api.d.ts +6 -6
  348. package/lib/navigation/navigation.module.d.ts +25 -25
  349. package/lib/oauth/models/constants.d.ts +6 -6
  350. package/lib/oauth/models/generated/accountManagementAssertionModel.d.ts +49 -49
  351. package/lib/oauth/models/generated/accountManagementRefreshRequestModel.d.ts +21 -21
  352. package/lib/oauth/models/generated/accountManagementResponseModel.d.ts +45 -45
  353. package/lib/oauth/models/generated/coverageDetail.d.ts +67 -67
  354. package/lib/oauth/models/generated/finance.d.ts +36 -36
  355. package/lib/oauth/models/generated/iSsoResponseModel.d.ts +44 -44
  356. package/lib/oauth/models/generated/iSsoResponseModelAccountManagementAssertionModel.d.ts +45 -45
  357. package/lib/oauth/models/generated/person.d.ts +53 -53
  358. package/lib/oauth/models/generated/policy.d.ts +51 -51
  359. package/lib/oauth/models/generated/refreshResponseModel.d.ts +20 -20
  360. package/lib/oauth/models/hybrid-saml-oauth-config.d.ts +14 -14
  361. package/lib/oauth/oauth-api.d.ts +12 -12
  362. package/lib/oauth/oauth.module.d.ts +9 -9
  363. package/lib/oauth/services/hybrid-saml-oauth.service.d.ts +59 -59
  364. package/lib/rbac/directives/rbac-action.directive.d.ts +27 -27
  365. package/lib/rbac/models/access-token-claims.d.ts +18 -18
  366. package/lib/rbac/models/constants.d.ts +4 -4
  367. package/lib/rbac/models/decoded-access-token.d.ts +43 -43
  368. package/lib/rbac/models/rbac-config.d.ts +15 -15
  369. package/lib/rbac/models/role-access.d.ts +7 -7
  370. package/lib/rbac/rbac-api.d.ts +11 -11
  371. package/lib/rbac/rbac.module.d.ts +19 -19
  372. package/lib/rbac/services/ar-role-nav.service.d.ts +25 -25
  373. package/lib/rbac/services/oauth2-role.service.d.ts +51 -51
  374. package/lib/rbac/services/role-nav.service.d.ts +12 -12
  375. package/lib/rbac/services/tokens.d.ts +3 -3
  376. package/lib/resize-panels/components/resize-panels/resize-panels.component.d.ts +64 -64
  377. package/lib/resize-panels/models/resize-event.d.ts +6 -6
  378. package/lib/resize-panels/resize-panels-api.d.ts +4 -4
  379. package/lib/resize-panels/resize-panels.module.d.ts +9 -9
  380. package/lib/rum/models/arm-error.d.ts +27 -27
  381. package/lib/rum/models/rum-config.d.ts +9 -9
  382. package/lib/rum/rum-api.d.ts +7 -7
  383. package/lib/rum/rum.module.d.ts +14 -14
  384. package/lib/rum/services/rum.service.d.ts +47 -47
  385. package/lib/rum/services/shared-error.service.d.ts +27 -27
  386. package/lib/rum/services/softheon-error-handler.service.d.ts +32 -32
  387. package/lib/saml/components/redirect-saml/redirect-saml.component.d.ts +41 -41
  388. package/lib/saml/models/i-saml-request.d.ts +4 -4
  389. package/lib/saml/models/i-saml-response.d.ts +4 -4
  390. package/lib/saml/models/redirect-saml-request.d.ts +24 -24
  391. package/lib/saml/models/sso-gateway-model.d.ts +17 -17
  392. package/lib/saml/saml-api.d.ts +11 -11
  393. package/lib/saml/saml.module.d.ts +9 -9
  394. package/lib/saml/services/entry/abstract-saml-entry.service.d.ts +16 -16
  395. package/lib/saml/services/entry/sso-gateway-entry.service.d.ts +22 -22
  396. package/lib/saml/services/send-off/abstract-saml.service.d.ts +20 -20
  397. package/lib/saml/services/send-off/saml.service.d.ts +32 -32
  398. package/lib/sof-pipe/constants/constants.d.ts +8 -8
  399. package/lib/sof-pipe/models/sof-date-pipe-format.d.ts +7 -7
  400. package/lib/sof-pipe/pipes/sof-blank/sof-blank.pipe.d.ts +19 -19
  401. package/lib/sof-pipe/pipes/sof-date/sof-date.pipe.d.ts +21 -21
  402. package/lib/sof-pipe/pipes/sof-ssn/sof-ssn.pipe.d.ts +12 -12
  403. package/lib/sof-pipe/sof-pipe.api.d.ts +7 -7
  404. package/lib/sof-pipe/sof-pipe.module.d.ts +10 -10
  405. package/lib/theming/directives/css-override.directive.d.ts +20 -20
  406. package/lib/theming/models/css-override.d.ts +15 -15
  407. package/lib/theming/services/theme.service.d.ts +48 -48
  408. package/lib/theming/theme-api.d.ts +5 -5
  409. package/lib/theming/theme.module.d.ts +9 -9
  410. package/package.json +17 -23
  411. package/public-api.d.ts +49 -48
  412. package/esm2020/lib/armature.module.mjs +0 -176
  413. package/esm2020/lib/base-components/sof-banner/sof-banner.component.mjs +0 -49
  414. package/esm2020/lib/base-components/sof-image-checkbox/sof-image-checkbox.component.mjs +0 -58
  415. package/esm2020/lib/base-components/sof-modal/sof-modal.component.mjs +0 -58
  416. package/esm2020/lib/base-components/sof-progress-bar/sof-progress-bar.component.mjs +0 -79
  417. package/esm2020/lib/base-components/sof-star-rating/sof-star-rating.component.mjs +0 -40
  418. package/esm2020/lib/component-save-print/sof-ar-component-save-print.module.mjs +0 -32
  419. package/esm2020/lib/distributed-cache/distributed-cache.module.mjs +0 -38
  420. package/esm2020/lib/faq/components/faq/faq.component.mjs +0 -40
  421. package/esm2020/lib/footer/components/footer/footer.component.mjs +0 -25
  422. package/esm2020/lib/forms/models/constants.mjs +0 -10
  423. package/esm2020/lib/header/components/header/header.component.mjs +0 -161
  424. package/esm2020/lib/navigation/components/navigation/navigation.component.mjs +0 -556
  425. package/fesm2015/softheon-armature.mjs +0 -7275
  426. package/fesm2015/softheon-armature.mjs.map +0 -1
  427. package/fesm2020/softheon-armature.mjs +0 -7332
  428. package/fesm2020/softheon-armature.mjs.map +0 -1
@@ -1,110 +1,110 @@
1
- import { Directive, ElementRef, HostListener, Inject, Input, Optional, Renderer2 } from "@angular/core";
2
- import { COMPOSITION_BUFFER_MODE, NG_VALUE_ACCESSOR } from "@angular/forms";
3
- import * as i0 from "@angular/core";
4
- export class InputTrimDirective {
5
- get _type() {
6
- return this._sourceElementRef.nativeElement.type || "text";
7
- }
8
- /**
9
- * Updates the value on the blur event.
10
- */
11
- onBlur(event, value) {
12
- this.updateValue(event, value.trim());
13
- this.onTouched();
14
- }
15
- /**
16
- * Updates the value on the input event.
17
- */
18
- onInput(event, value) {
19
- this.updateValue(event, value);
20
- }
21
- /**
22
- * Constructs the directive
23
- * @param renderer The renderer
24
- * @param ElementRef The elementRef
25
- * @param compositionMode The composition mode
26
- */
27
- constructor(renderer, elementRef, compositionMode) {
28
- this.onChange = (_) => { };
29
- this.onTouched = () => { };
30
- this._sourceRenderer = renderer;
31
- this._sourceElementRef = elementRef;
32
- }
33
- registerOnChange(fn) { this.onChange = fn; }
34
- registerOnTouched(fn) { this.onTouched = fn; }
35
- /**
36
- * Writes a new value to the element based on the type of input element.
37
- * @param value new value
38
- */
39
- writeValue(value) {
40
- this._value = value === "" ? "" : value || null;
41
- this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, "value", this._value);
42
- if (this._type !== "text") {
43
- this._sourceRenderer.setAttribute(this._sourceElementRef.nativeElement, "value", this._value);
44
- }
45
- }
46
- /**
47
- * Sets state disabled.
48
- * @param isDisabled boolean value for state
49
- */
50
- setDisabledState(isDisabled) {
51
- this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, 'disabled', isDisabled);
52
- }
53
- /**
54
- * Writes the cursor position
55
- * @param cursorPosition the cursor current position
56
- * @param hasTypedSymbol
57
- */
58
- setCursorPointer(cursorPosition, hasTypedSymbol) {
59
- if (hasTypedSymbol && ["text", "search", "url", "tel", "password"].indexOf(this._type) >= 0) {
60
- this._sourceElementRef.nativeElement.setSelectionRange(cursorPosition, cursorPosition);
61
- }
62
- }
63
- /**
64
- * Trims an input value, and sets it to the model and element.
65
- * @param value input value
66
- * @param event input event
67
- */
68
- updateValue(event, value) {
69
- if (this._value == value) {
70
- value = this.trim !== "" && event !== this.trim ? value : value.trim();
71
- }
72
- const previous = this._value;
73
- const cursorPosition = this._sourceElementRef.nativeElement.selectionStart;
74
- this.writeValue(value);
75
- if ((this._value || previous) && this._value.trim() !== previous) {
76
- this.onChange(this._value);
77
- }
78
- const hasTypedSymbol = value && previous && value !== previous;
79
- this.setCursorPointer(cursorPosition, hasTypedSymbol);
80
- }
81
- }
82
- InputTrimDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InputTrimDirective, deps: [{ token: Renderer2 }, { token: ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
83
- InputTrimDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: InputTrimDirective, selector: "input[trim], textarea[trim]", inputs: { trim: "trim" }, host: { listeners: { "blur": "onBlur($event.type,$event.target.value)", "input": "onInput($event.type,$event.target.value)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputTrimDirective, multi: true }], ngImport: i0 });
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: InputTrimDirective, decorators: [{
85
- type: Directive,
86
- args: [{
87
- selector: "input[trim], textarea[trim]",
88
- providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputTrimDirective, multi: true }]
89
- }]
90
- }], ctorParameters: function () { return [{ type: i0.Renderer2, decorators: [{
91
- type: Inject,
92
- args: [Renderer2]
93
- }] }, { type: i0.ElementRef, decorators: [{
94
- type: Inject,
95
- args: [ElementRef]
96
- }] }, { type: undefined, decorators: [{
97
- type: Optional
98
- }, {
99
- type: Inject,
100
- args: [COMPOSITION_BUFFER_MODE]
101
- }] }]; }, propDecorators: { trim: [{
102
- type: Input
103
- }], onBlur: [{
104
- type: HostListener,
105
- args: ["blur", ["$event.type", "$event.target.value"]]
106
- }], onInput: [{
107
- type: HostListener,
108
- args: ["input", ["$event.type", "$event.target.value"]]
109
- }] } });
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2Zvcm1zL2RpcmVjdGl2ZXMvaW5wdXQtdHJpbS9pbnB1dC10cmltLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNbEcsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixJQUFZLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztJQUM3RCxDQUFDO0lBZ0JEOztPQUVHO0lBRUgsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFFSCxPQUFPLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQU1EOzs7OztPQUtHO0lBQ0gsWUFDcUIsUUFBbUIsRUFDbEIsVUFBc0IsRUFDRyxlQUF3QjtRQWJ2RSxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUUxQixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBYW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFB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LFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzFGOzswQkFpREksTUFBTTsyQkFBQyxTQUFTOzswQkFDaEIsTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7NENBM0NwQyxJQUFJO3NCQUFaLEtBQUs7Z0JBaUJOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUM7Z0JBVTVELE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENPTVBPU0lUSU9OX0JVRkZFUl9NT0RFLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcImlucHV0W3RyaW1dLCB0ZXh0YXJlYVt0cmltXVwiLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJbnB1dFRyaW1EaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRyaW1EaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIHByaXZhdGUgZ2V0IF90eXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnR5cGUgfHwgXCJ0ZXh0XCI7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgYSB2YWx1ZSBvZiB0aGUgdHJpbSBhdHRyaWJ1dGUgaWYgaXQgd2FzIHNldC5cclxuICBASW5wdXQoKSB0cmltOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEtlZXAgdGhlIHZhbHVlIG9mIGlucHV0IGVsZW1lbnQgaW4gYSBjYWNoZS5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcclxuXHJcbiAgLy8gU291cmNlIHNlcnZpY2VzIHRvIG1vZGlmeSBlbGVtZW50cy5cclxuICBwcml2YXRlIF9zb3VyY2VSZW5kZXJlcjogUmVuZGVyZXIyO1xyXG4gIHByaXZhdGUgX3NvdXJjZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgdmFsdWUgb24gdGhlIGJsdXIgZXZlbnQuXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcihcImJsdXJcIiwgW1wiJGV2ZW50LnR5cGVcIiwgXCIkZXZlbnQudGFyZ2V0LnZhbHVlXCJdKVxyXG4gIG9uQmx1cihldmVudDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCB2YWx1ZS50cmltKCkpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBldmVudC5cclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKFwiaW5wdXRcIiwgW1wiJGV2ZW50LnR5cGVcIiwgXCIkZXZlbnQudGFyZ2V0LnZhbHVlXCJdKVxyXG4gIG9uSW5wdXQoZXZlbnQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGRpcmVjdGl2ZVxyXG4gICAqIEBwYXJhbSByZW5kZXJlciBUaGUgcmVuZGVyZXJcclxuICAgKiBAcGFyYW0gRWxlbWVudFJlZiBUaGUgZWxlbWVudFJlZlxyXG4gICAqIEBwYXJhbSBjb21wb3NpdGlvbk1vZGUgVGhlIGNvbXBvc2l0aW9uIG1vZGVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUmVuZGVyZXIyKSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgQEluamVjdChFbGVtZW50UmVmKSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDT01QT1NJVElPTl9CVUZGRVJfTU9ERSkgY29tcG9zaXRpb25Nb2RlOiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zb3VyY2VSZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gICAgdGhpcy5fc291cmNlRWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7dGhpcy5vbkNoYW5nZSA9IGZuO31cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHt0aGlzLm9uVG91Y2hlZCA9IGZuO31cclxuXHJcbiAgLyoqXHJcbiAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50IGJhc2VkIG9uIHRoZSB0eXBlIG9mIGlucHV0IGVsZW1lbnQuXHJcbiAgICogQHBhcmFtIHZhbHVlIG5ldyB2YWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlID09PSBcIlwiID8gXCJcIiA6IHZhbHVlIHx8IG51bGw7XHJcbiAgICB0aGlzLl9zb3VyY2VSZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9zb3VyY2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwidmFsdWVcIiwgdGhpcy5fdmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBcInRleHRcIikge1xyXG4gICAgICB0aGlzLl9zb3VyY2VSZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fc291cmNlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcInZhbHVlXCIsIHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc3RhdGUgZGlzYWJsZWQuXHJcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgYm9vbGVhbiB2YWx1ZSBmb3Igc3RhdGVcclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3NvdXJjZVJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX3NvdXJjZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyB0aGUgY3Vyc29yIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIGN1cnNvclBvc2l0aW9uIHRoZSBjdXJzb3IgY3VycmVudCBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBoYXNUeXBlZFN5bWJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Q3Vyc29yUG9pbnRlcihjdXJzb3JQb3NpdGlvbjogYW55LCBoYXNUeXBlZFN5bWJvbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGhhc1R5cGVkU3ltYm9sICYmIFtcInRleHRcIiwgXCJzZWFyY2hcIiwgXCJ1cmxcIiwgXCJ0ZWxcIiwgXCJwYXNzd29yZFwiXS5pbmRleE9mKHRoaXMuX3R5cGUpID49IDApIHtcclxuICAgICAgdGhpcy5fc291cmNlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmltcyBhbiBpbnB1dCB2YWx1ZSwgYW5kIHNldHMgaXQgdG8gdGhlIG1vZGVsIGFuZCBlbGVtZW50LlxyXG4gICAqIEBwYXJhbSB2YWx1ZSBpbnB1dCB2YWx1ZVxyXG4gICAqIEBwYXJhbSBldmVudCBpbnB1dCBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoZXZlbnQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLl92YWx1ZSA9PSB2YWx1ZSl7XHJcbiAgICAgIHZhbHVlID0gdGhpcy50cmltICE9PSBcIlwiICYmIGV2ZW50ICE9PSB0aGlzLnRyaW0gPyB2YWx1ZSA6IHZhbHVlLnRyaW0oKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSB0aGlzLl9zb3VyY2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICBcclxuICAgIGlmICgodGhpcy5fdmFsdWUgfHwgcHJldmlvdXMpICYmIHRoaXMuX3ZhbHVlLnRyaW0oKSAhPT0gcHJldmlvdXMpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBoYXNUeXBlZFN5bWJvbCA9IHZhbHVlICYmIHByZXZpb3VzICYmIHZhbHVlICE9PSBwcmV2aW91cztcclxuICAgIFxyXG4gICAgdGhpcy5zZXRDdXJzb3JQb2ludGVyKGN1cnNvclBvc2l0aW9uLCBoYXNUeXBlZFN5bWJvbCk7XHJcbiAgfVxyXG59Il19
1
+ import { Directive, ElementRef, HostListener, Inject, Input, Optional, Renderer2 } from "@angular/core";
2
+ import { COMPOSITION_BUFFER_MODE, NG_VALUE_ACCESSOR } from "@angular/forms";
3
+ import * as i0 from "@angular/core";
4
+ export class InputTrimDirective {
5
+ get _type() {
6
+ return this._sourceElementRef.nativeElement.type || "text";
7
+ }
8
+ /**
9
+ * Updates the value on the blur event.
10
+ */
11
+ onBlur(event, value) {
12
+ this.updateValue(event, value.trim());
13
+ this.onTouched();
14
+ }
15
+ /**
16
+ * Updates the value on the input event.
17
+ */
18
+ onInput(event, value) {
19
+ this.updateValue(event, value);
20
+ }
21
+ /**
22
+ * Constructs the directive
23
+ * @param renderer The renderer
24
+ * @param ElementRef The elementRef
25
+ * @param compositionMode The composition mode
26
+ */
27
+ constructor(renderer, elementRef, compositionMode) {
28
+ this.onChange = (_) => { };
29
+ this.onTouched = () => { };
30
+ this._sourceRenderer = renderer;
31
+ this._sourceElementRef = elementRef;
32
+ }
33
+ registerOnChange(fn) { this.onChange = fn; }
34
+ registerOnTouched(fn) { this.onTouched = fn; }
35
+ /**
36
+ * Writes a new value to the element based on the type of input element.
37
+ * @param value new value
38
+ */
39
+ writeValue(value) {
40
+ this._value = value === "" ? "" : value || null;
41
+ this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, "value", this._value);
42
+ if (this._type !== "text") {
43
+ this._sourceRenderer.setAttribute(this._sourceElementRef.nativeElement, "value", this._value);
44
+ }
45
+ }
46
+ /**
47
+ * Sets state disabled.
48
+ * @param isDisabled boolean value for state
49
+ */
50
+ setDisabledState(isDisabled) {
51
+ this._sourceRenderer.setProperty(this._sourceElementRef.nativeElement, 'disabled', isDisabled);
52
+ }
53
+ /**
54
+ * Writes the cursor position
55
+ * @param cursorPosition the cursor current position
56
+ * @param hasTypedSymbol
57
+ */
58
+ setCursorPointer(cursorPosition, hasTypedSymbol) {
59
+ if (hasTypedSymbol && ["text", "search", "url", "tel", "password"].indexOf(this._type) >= 0) {
60
+ this._sourceElementRef.nativeElement.setSelectionRange(cursorPosition, cursorPosition);
61
+ }
62
+ }
63
+ /**
64
+ * Trims an input value, and sets it to the model and element.
65
+ * @param value input value
66
+ * @param event input event
67
+ */
68
+ updateValue(event, value) {
69
+ if (this._value == value) {
70
+ value = this.trim !== "" && event !== this.trim ? value : value.trim();
71
+ }
72
+ const previous = this._value;
73
+ const cursorPosition = this._sourceElementRef.nativeElement.selectionStart;
74
+ this.writeValue(value);
75
+ if ((this._value || previous) && this._value.trim() !== previous) {
76
+ this.onChange(this._value);
77
+ }
78
+ const hasTypedSymbol = value && previous && value !== previous;
79
+ this.setCursorPointer(cursorPosition, hasTypedSymbol);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: InputTrimDirective, deps: [{ token: Renderer2 }, { token: ElementRef }, { token: COMPOSITION_BUFFER_MODE, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
82
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: InputTrimDirective, selector: "input[trim], textarea[trim]", inputs: { trim: "trim" }, host: { listeners: { "blur": "onBlur($event.type,$event.target.value)", "input": "onInput($event.type,$event.target.value)" } }, providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputTrimDirective, multi: true }], ngImport: i0 }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: InputTrimDirective, decorators: [{
85
+ type: Directive,
86
+ args: [{
87
+ selector: "input[trim], textarea[trim]",
88
+ providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputTrimDirective, multi: true }]
89
+ }]
90
+ }], ctorParameters: () => [{ type: i0.Renderer2, decorators: [{
91
+ type: Inject,
92
+ args: [Renderer2]
93
+ }] }, { type: i0.ElementRef, decorators: [{
94
+ type: Inject,
95
+ args: [ElementRef]
96
+ }] }, { type: undefined, decorators: [{
97
+ type: Optional
98
+ }, {
99
+ type: Inject,
100
+ args: [COMPOSITION_BUFFER_MODE]
101
+ }] }], propDecorators: { trim: [{
102
+ type: Input
103
+ }], onBlur: [{
104
+ type: HostListener,
105
+ args: ["blur", ["$event.type", "$event.target.value"]]
106
+ }], onInput: [{
107
+ type: HostListener,
108
+ args: ["input", ["$event.type", "$event.target.value"]]
109
+ }] } });
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHJpbS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcm1hdHVyZS9zcmMvbGliL2Zvcm1zL2RpcmVjdGl2ZXMvaW5wdXQtdHJpbS9pbnB1dC10cmltLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hHLE9BQU8sRUFBRSx1QkFBdUIsRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFNbEcsTUFBTSxPQUFPLGtCQUFrQjtJQUU3QixJQUFZLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQztJQUM3RCxDQUFDO0lBZ0JEOztPQUVHO0lBRUgsTUFBTSxDQUFDLEtBQWEsRUFBRSxLQUFhO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFFSCxPQUFPLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztJQU1EOzs7OztPQUtHO0lBQ0gsWUFDcUIsUUFBbUIsRUFDbEIsVUFBc0IsRUFDRyxlQUF3QjtRQWJ2RSxhQUFRLEdBQUcsQ0FBQyxDQUFNLEVBQUUsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUUxQixjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBYW5CLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFB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LFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtvQkFDdkMsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxvQkFBb0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQzFGOzswQkFpREksTUFBTTsyQkFBQyxTQUFTOzswQkFDaEIsTUFBTTsyQkFBQyxVQUFVOzswQkFDakIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx1QkFBdUI7eUNBM0NwQyxJQUFJO3NCQUFaLEtBQUs7Z0JBaUJOLE1BQU07c0JBREwsWUFBWTt1QkFBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUM7Z0JBVTVELE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0LCBJbnB1dCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IENPTVBPU0lUSU9OX0JVRkZFUl9NT0RFLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiBcImlucHV0W3RyaW1dLCB0ZXh0YXJlYVt0cmltXVwiLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJbnB1dFRyaW1EaXJlY3RpdmUsIG11bHRpOiB0cnVlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFRyaW1EaXJlY3RpdmUgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG4gIHByaXZhdGUgZ2V0IF90eXBlKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnR5cGUgfHwgXCJ0ZXh0XCI7XHJcbiAgfVxyXG5cclxuICAvLyBHZXQgYSB2YWx1ZSBvZiB0aGUgdHJpbSBhdHRyaWJ1dGUgaWYgaXQgd2FzIHNldC5cclxuICBASW5wdXQoKSB0cmltOiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEtlZXAgdGhlIHZhbHVlIG9mIGlucHV0IGVsZW1lbnQgaW4gYSBjYWNoZS5cclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBwcml2YXRlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcclxuXHJcbiAgLy8gU291cmNlIHNlcnZpY2VzIHRvIG1vZGlmeSBlbGVtZW50cy5cclxuICBwcml2YXRlIF9zb3VyY2VSZW5kZXJlcjogUmVuZGVyZXIyO1xyXG4gIHByaXZhdGUgX3NvdXJjZUVsZW1lbnRSZWY6IEVsZW1lbnRSZWY7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyB0aGUgdmFsdWUgb24gdGhlIGJsdXIgZXZlbnQuXHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcihcImJsdXJcIiwgW1wiJGV2ZW50LnR5cGVcIiwgXCIkZXZlbnQudGFyZ2V0LnZhbHVlXCJdKVxyXG4gIG9uQmx1cihldmVudDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKGV2ZW50LCB2YWx1ZS50cmltKCkpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIHZhbHVlIG9uIHRoZSBpbnB1dCBldmVudC5cclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKFwiaW5wdXRcIiwgW1wiJGV2ZW50LnR5cGVcIiwgXCIkZXZlbnQudGFyZ2V0LnZhbHVlXCJdKVxyXG4gIG9uSW5wdXQoZXZlbnQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVWYWx1ZShldmVudCwgdmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuXHJcbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGRpcmVjdGl2ZVxyXG4gICAqIEBwYXJhbSByZW5kZXJlciBUaGUgcmVuZGVyZXJcclxuICAgKiBAcGFyYW0gRWxlbWVudFJlZiBUaGUgZWxlbWVudFJlZlxyXG4gICAqIEBwYXJhbSBjb21wb3NpdGlvbk1vZGUgVGhlIGNvbXBvc2l0aW9uIG1vZGVcclxuICAgKi9cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIEBJbmplY3QoUmVuZGVyZXIyKSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgQEluamVjdChFbGVtZW50UmVmKSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChDT01QT1NJVElPTl9CVUZGRVJfTU9ERSkgY29tcG9zaXRpb25Nb2RlOiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICB0aGlzLl9zb3VyY2VSZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gICAgdGhpcy5fc291cmNlRWxlbWVudFJlZiA9IGVsZW1lbnRSZWY7XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7dGhpcy5vbkNoYW5nZSA9IGZuO31cclxuXHJcbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHt0aGlzLm9uVG91Y2hlZCA9IGZuO31cclxuXHJcbiAgLyoqXHJcbiAgICogV3JpdGVzIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50IGJhc2VkIG9uIHRoZSB0eXBlIG9mIGlucHV0IGVsZW1lbnQuXHJcbiAgICogQHBhcmFtIHZhbHVlIG5ldyB2YWx1ZVxyXG4gICAqL1xyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlID09PSBcIlwiID8gXCJcIiA6IHZhbHVlIHx8IG51bGw7XHJcbiAgICB0aGlzLl9zb3VyY2VSZW5kZXJlci5zZXRQcm9wZXJ0eSh0aGlzLl9zb3VyY2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIFwidmFsdWVcIiwgdGhpcy5fdmFsdWUpO1xyXG5cclxuICAgIGlmICh0aGlzLl90eXBlICE9PSBcInRleHRcIikge1xyXG4gICAgICB0aGlzLl9zb3VyY2VSZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5fc291cmNlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBcInZhbHVlXCIsIHRoaXMuX3ZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNldHMgc3RhdGUgZGlzYWJsZWQuXHJcbiAgICogQHBhcmFtIGlzRGlzYWJsZWQgYm9vbGVhbiB2YWx1ZSBmb3Igc3RhdGVcclxuICAgKi9cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuX3NvdXJjZVJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuX3NvdXJjZUVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc2FibGVkJywgaXNEaXNhYmxlZCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIFdyaXRlcyB0aGUgY3Vyc29yIHBvc2l0aW9uXHJcbiAgICogQHBhcmFtIGN1cnNvclBvc2l0aW9uIHRoZSBjdXJzb3IgY3VycmVudCBwb3NpdGlvblxyXG4gICAqIEBwYXJhbSBoYXNUeXBlZFN5bWJvbFxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0Q3Vyc29yUG9pbnRlcihjdXJzb3JQb3NpdGlvbjogYW55LCBoYXNUeXBlZFN5bWJvbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGhhc1R5cGVkU3ltYm9sICYmIFtcInRleHRcIiwgXCJzZWFyY2hcIiwgXCJ1cmxcIiwgXCJ0ZWxcIiwgXCJwYXNzd29yZFwiXS5pbmRleE9mKHRoaXMuX3R5cGUpID49IDApIHtcclxuICAgICAgdGhpcy5fc291cmNlRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnNldFNlbGVjdGlvblJhbmdlKGN1cnNvclBvc2l0aW9uLCBjdXJzb3JQb3NpdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBUcmltcyBhbiBpbnB1dCB2YWx1ZSwgYW5kIHNldHMgaXQgdG8gdGhlIG1vZGVsIGFuZCBlbGVtZW50LlxyXG4gICAqIEBwYXJhbSB2YWx1ZSBpbnB1dCB2YWx1ZVxyXG4gICAqIEBwYXJhbSBldmVudCBpbnB1dCBldmVudFxyXG4gICAqL1xyXG4gIHByaXZhdGUgdXBkYXRlVmFsdWUoZXZlbnQ6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLl92YWx1ZSA9PSB2YWx1ZSl7XHJcbiAgICAgIHZhbHVlID0gdGhpcy50cmltICE9PSBcIlwiICYmIGV2ZW50ICE9PSB0aGlzLnRyaW0gPyB2YWx1ZSA6IHZhbHVlLnRyaW0oKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcmV2aW91cyA9IHRoaXMuX3ZhbHVlO1xyXG4gICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSB0aGlzLl9zb3VyY2VFbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQ7XHJcbiAgICBcclxuICAgIHRoaXMud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICBcclxuICAgIGlmICgodGhpcy5fdmFsdWUgfHwgcHJldmlvdXMpICYmIHRoaXMuX3ZhbHVlLnRyaW0oKSAhPT0gcHJldmlvdXMpIHtcclxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjb25zdCBoYXNUeXBlZFN5bWJvbCA9IHZhbHVlICYmIHByZXZpb3VzICYmIHZhbHVlICE9PSBwcmV2aW91cztcclxuICAgIFxyXG4gICAgdGhpcy5zZXRDdXJzb3JQb2ludGVyKGN1cnNvclBvc2l0aW9uLCBoYXNUeXBlZFN5bWJvbCk7XHJcbiAgfVxyXG59Il19
@@ -1,87 +1,87 @@
1
- import { Directive, HostListener, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- /**
4
- * The letters and special characters directive
5
- */
6
- export class LettersCharactersDirective {
7
- /**
8
- * Constructs the directive
9
- * @param el The element
10
- */
11
- constructor(el) {
12
- this.el = el;
13
- }
14
- /**
15
- * Only allows letter and special character inputs
16
- * @param event Key Event
17
- */
18
- onKeyDown(event) {
19
- const e = event;
20
- if (this.sofArLettersAndSpecialCharacters) {
21
- if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||
22
- // Allow: Ctrl+A
23
- (e.keyCode === 65 && e.ctrlKey) ||
24
- // Allow: Ctrl+C
25
- (e.keyCode === 67 && e.ctrlKey) ||
26
- // Allow: Ctrl+X
27
- (e.keyCode === 88 && e.ctrlKey) ||
28
- // Allow: spaces
29
- (e.keyCode === 32) ||
30
- // Allow: - (minus sign) on numpad or alphabet keyboard key
31
- (e.keyCode === 109 || e.keyCode === 189) ||
32
- // Allow: apostrophes
33
- (e.keyCode === 48) ||
34
- // Allow: home, end, left, right
35
- (e.keyCode >= 35 && e.keyCode <= 39)) {
36
- // let it happen, don't do anything
37
- return;
38
- }
39
- // Ensure that it is a letter and stop the keypress if its not a letter
40
- if (e.keyCode < 65 || e.keyCode > 90) {
41
- e.preventDefault();
42
- }
43
- }
44
- }
45
- /**
46
- * Allow user to copy and paste letters except special characters
47
- * @param event the event
48
- */
49
- allowPaste(event) {
50
- event.preventDefault();
51
- let pasteData = event.clipboardData.getData('text/plain');
52
- pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\[\];:"<>,.?\/\\|_+=]*/g, '');
53
- const inputElement = event.target;
54
- const start = inputElement.selectionStart;
55
- const end = inputElement.selectionEnd;
56
- const originalValue = inputElement.value;
57
- const newValue = [
58
- originalValue.slice(0, start),
59
- pasteData,
60
- originalValue.slice(end)
61
- ].join('');
62
- inputElement.value = newValue;
63
- inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;
64
- const evt = new Event('input', {
65
- bubbles: true,
66
- cancelable: true
67
- });
68
- inputElement.dispatchEvent(evt);
69
- }
70
- }
71
- LettersCharactersDirectivefac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LettersCharactersDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
72
- LettersCharactersDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: LettersCharactersDirective, selector: "[sofArLettersAndSpecialCharacters]", inputs: { sofArLettersAndSpecialCharacters: "sofArLettersAndSpecialCharacters" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "allowPaste($event)" } }, ngImport: i0 });
73
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LettersCharactersDirective, decorators: [{
74
- type: Directive,
75
- args: [{
76
- selector: '[sofArLettersAndSpecialCharacters]'
77
- }]
78
- }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { sofArLettersAndSpecialCharacters: [{
79
- type: Input
80
- }], onKeyDown: [{
81
- type: HostListener,
82
- args: ['keydown', ['$event']]
83
- }], allowPaste: [{
84
- type: HostListener,
85
- args: ['paste', ['$event']]
86
- }] } });
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvZm9ybXMvZGlyZWN0aXZlcy9sZXR0ZXJzLWNoYXJhY3RlcnMvbGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNFOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQzs7O09BR0c7SUFDSCxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFJLENBQUM7SUFHdkM7OztPQUdHO0lBQ2tDLFNBQVMsQ0FBQyxLQUFLO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLEtBQXNCLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDekMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsZ0JBQWdCO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLGdCQUFnQjtnQkFDaEIsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUMvQixnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLDJEQUEyRDtnQkFDM0QsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQztnQkFDeEMscUJBQXFCO2dCQUNyQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNsQixnQ0FBZ0M7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDdEMsbUNBQW1DO2dCQUNuQyxPQUFPO2FBQ1I7WUFDRCx1RUFBdUU7WUFDdkUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRTtnQkFDcEMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ2dDLFVBQVUsQ0FBQyxLQUFxQjtRQUNqRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFekMsTUFBTSxRQUFRLEdBQUc7WUFDZixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDN0IsU0FBUztZQUNULGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ3pCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRVgsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDOUIsWUFBWSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBRW5GLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUM3QixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7dUhBdkVVLDBCQUEwQjsyR0FBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztpQkFDL0M7aUdBSWlCLGdDQUFnQztzQkFBL0MsS0FBSztnQkFhK0IsU0FBUztzQkFBN0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0NBLFVBQVU7c0JBQTVDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVGhlIGxldHRlcnMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycyBkaXJlY3RpdmVcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NvZkFyTGV0dGVyc0FuZFNwZWNpYWxDaGFyYWN0ZXJzXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIExldHRlcnNDaGFyYWN0ZXJzRGlyZWN0aXZlIHtcclxuXHJcbiAgLyoqIFRydWUgaWYgbGV0dGVycyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFsbG93ZWQgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc29mQXJMZXR0ZXJzQW5kU3BlY2lhbENoYXJhY3RlcnM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGRpcmVjdGl2ZVxyXG4gICAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT25seSBhbGxvd3MgbGV0dGVyIGFuZCBzcGVjaWFsIGNoYXJhY3RlciBpbnB1dHNcclxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IEV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihldmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgZSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XHJcbiAgICBpZiAodGhpcy5zb2ZBckxldHRlcnNBbmRTcGVjaWFsQ2hhcmFjdGVycykge1xyXG4gICAgICBpZiAoWzQ2LCA4LCA5LCAyNywgMTMsIDExMCwgMTkwXS5pbmRleE9mKGUua2V5Q29kZSkgIT09IC0xIHx8XHJcbiAgICAgICAgLy8gQWxsb3c6IEN0cmwrQVxyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDY1ICYmIGUuY3RybEtleSkgfHxcclxuICAgICAgICAvLyBBbGxvdzogQ3RybCtDXHJcbiAgICAgICAgKGUua2V5Q29kZSA9PT0gNjcgJiYgZS5jdHJsS2V5KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBDdHJsK1hcclxuICAgICAgICAoZS5rZXlDb2RlID09PSA4OCAmJiBlLmN0cmxLZXkpIHx8XHJcbiAgICAgICAgLy8gQWxsb3c6IHNwYWNlc1xyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDMyKSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiAtIChtaW51cyBzaWduKSBvbiBudW1wYWQgb3IgYWxwaGFiZXQga2V5Ym9hcmQga2V5XHJcbiAgICAgICAgKGUua2V5Q29kZSA9PT0gMTA5IHx8IGUua2V5Q29kZSA9PT0gMTg5KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBhcG9zdHJvcGhlc1xyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDQ4KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBob21lLCBlbmQsIGxlZnQsIHJpZ2h0XHJcbiAgICAgICAgKGUua2V5Q29kZSA+PSAzNSAmJiBlLmtleUNvZGUgPD0gMzkpKSB7XHJcbiAgICAgICAgLy8gbGV0IGl0IGhhcHBlbiwgZG9uJ3QgZG8gYW55dGhpbmdcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgYSBsZXR0ZXIgYW5kIHN0b3AgdGhlIGtleXByZXNzIGlmIGl0cyBub3QgYSBsZXR0ZXJcclxuICAgICAgaWYgKGUua2V5Q29kZSA8IDY1IHx8IGUua2V5Q29kZSA+IDkwKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyB1c2VyIHRvIGNvcHkgYW5kIHBhc3RlIGxldHRlcnMgZXhjZXB0IHNwZWNpYWwgY2hhcmFjdGVyc1xyXG4gICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pIGFsbG93UGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgbGV0IHBhc3RlRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xyXG4gICAgcGFzdGVEYXRhID0gcGFzdGVEYXRhLnJlcGxhY2UoL1swLTl+YCFAIyQlXiYqKCl7fVxcW1xcXTs6XCI8PiwuP1xcL1xcXFx8Xys9XSovZywgJycpO1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBzdGFydCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIGNvbnN0IGVuZCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQ7XHJcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gW1xyXG4gICAgICBvcmlnaW5hbFZhbHVlLnNsaWNlKDAsIHN0YXJ0KSxcclxuICAgICAgcGFzdGVEYXRhLFxyXG4gICAgICBvcmlnaW5hbFZhbHVlLnNsaWNlKGVuZClcclxuICAgIF0uam9pbignJyk7XHJcblxyXG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kID0gc3RhcnQgKyBwYXN0ZURhdGEubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGV2dCA9IG5ldyBFdmVudCgnaW5wdXQnLCB7XHJcbiAgICAgIGJ1YmJsZXM6IHRydWUsXHJcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgaW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICB9XHJcbn1cclxuIl19
1
+ import { Directive, HostListener, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ /**
4
+ * The letters and special characters directive
5
+ */
6
+ export class LettersCharactersDirective {
7
+ /**
8
+ * Constructs the directive
9
+ * @param el The element
10
+ */
11
+ constructor(el) {
12
+ this.el = el;
13
+ }
14
+ /**
15
+ * Only allows letter and special character inputs
16
+ * @param event Key Event
17
+ */
18
+ onKeyDown(event) {
19
+ const e = event;
20
+ if (this.sofArLettersAndSpecialCharacters) {
21
+ if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||
22
+ // Allow: Ctrl+A
23
+ (e.keyCode === 65 && e.ctrlKey) ||
24
+ // Allow: Ctrl+C
25
+ (e.keyCode === 67 && e.ctrlKey) ||
26
+ // Allow: Ctrl+X
27
+ (e.keyCode === 88 && e.ctrlKey) ||
28
+ // Allow: spaces
29
+ (e.keyCode === 32) ||
30
+ // Allow: - (minus sign) on numpad or alphabet keyboard key
31
+ (e.keyCode === 109 || e.keyCode === 189) ||
32
+ // Allow: apostrophes
33
+ (e.keyCode === 48) ||
34
+ // Allow: home, end, left, right
35
+ (e.keyCode >= 35 && e.keyCode <= 39)) {
36
+ // let it happen, don't do anything
37
+ return;
38
+ }
39
+ // Ensure that it is a letter and stop the keypress if its not a letter
40
+ if (e.keyCode < 65 || e.keyCode > 90) {
41
+ e.preventDefault();
42
+ }
43
+ }
44
+ }
45
+ /**
46
+ * Allow user to copy and paste letters except special characters
47
+ * @param event the event
48
+ */
49
+ allowPaste(event) {
50
+ event.preventDefault();
51
+ let pasteData = event.clipboardData.getData('text/plain');
52
+ pasteData = pasteData.replace(/[0-9~`!@#$%^&*(){}\[\];:"<>,.?\/\\|_+=]*/g, '');
53
+ const inputElement = event.target;
54
+ const start = inputElement.selectionStart;
55
+ const end = inputElement.selectionEnd;
56
+ const originalValue = inputElement.value;
57
+ const newValue = [
58
+ originalValue.slice(0, start),
59
+ pasteData,
60
+ originalValue.slice(end)
61
+ ].join('');
62
+ inputElement.value = newValue;
63
+ inputElement.selectionStart = inputElement.selectionEnd = start + pasteData.length;
64
+ const evt = new Event('input', {
65
+ bubbles: true,
66
+ cancelable: true
67
+ });
68
+ inputElement.dispatchEvent(evt);
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LettersCharactersDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
71
+ static { thisdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.1.2", type: LettersCharactersDirective, selector: "[sofArLettersAndSpecialCharacters]", inputs: { sofArLettersAndSpecialCharacters: "sofArLettersAndSpecialCharacters" }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "allowPaste($event)" } }, ngImport: i0 }); }
72
+ }
73
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: LettersCharactersDirective, decorators: [{
74
+ type: Directive,
75
+ args: [{
76
+ selector: '[sofArLettersAndSpecialCharacters]'
77
+ }]
78
+ }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { sofArLettersAndSpecialCharacters: [{
79
+ type: Input
80
+ }], onKeyDown: [{
81
+ type: HostListener,
82
+ args: ['keydown', ['$event']]
83
+ }], allowPaste: [{
84
+ type: HostListener,
85
+ args: ['paste', ['$event']]
86
+ }] } });
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FybWF0dXJlL3NyYy9saWIvZm9ybXMvZGlyZWN0aXZlcy9sZXR0ZXJzLWNoYXJhY3RlcnMvbGV0dGVycy1jaGFyYWN0ZXJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNFOztHQUVHO0FBSUgsTUFBTSxPQUFPLDBCQUEwQjtJQUtyQzs7O09BR0c7SUFDSCxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtJQUFJLENBQUM7SUFHdkM7OztPQUdHO0lBQ2tDLFNBQVMsQ0FBQyxLQUFLO1FBQ2xELE1BQU0sQ0FBQyxHQUFHLEtBQXNCLENBQUM7UUFDakMsSUFBSSxJQUFJLENBQUMsZ0NBQWdDLEVBQUU7WUFDekMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4RCxnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQztnQkFDL0IsZ0JBQWdCO2dCQUNoQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQy9CLGdCQUFnQjtnQkFDaEIsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO2dCQUMvQixnQkFBZ0I7Z0JBQ2hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLDJEQUEyRDtnQkFDM0QsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxLQUFLLEdBQUcsQ0FBQztnQkFDeEMscUJBQXFCO2dCQUNyQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxDQUFDO2dCQUNsQixnQ0FBZ0M7Z0JBQ2hDLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDdEMsbUNBQW1DO2dCQUNuQyxPQUFPO2FBQ1I7WUFDRCx1RUFBdUU7WUFDdkUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsRUFBRTtnQkFDcEMsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2FBQ3BCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ2dDLFVBQVUsQ0FBQyxLQUFxQjtRQUNqRSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDMUQsU0FBUyxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsMkNBQTJDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDL0UsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7UUFDdEQsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLGNBQWMsQ0FBQztRQUMxQyxNQUFNLEdBQUcsR0FBRyxZQUFZLENBQUMsWUFBWSxDQUFDO1FBQ3RDLE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFFekMsTUFBTSxRQUFRLEdBQUc7WUFDZixhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7WUFDN0IsU0FBUztZQUNULGFBQWEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1NBQ3pCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRVgsWUFBWSxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUM7UUFDOUIsWUFBWSxDQUFDLGNBQWMsR0FBRyxZQUFZLENBQUMsWUFBWSxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBRW5GLE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUM3QixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQzs4R0F2RVUsMEJBQTBCO2tHQUExQiwwQkFBMEI7OzJGQUExQiwwQkFBMEI7a0JBSHRDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9DQUFvQztpQkFDL0M7K0VBSWlCLGdDQUFnQztzQkFBL0MsS0FBSztnQkFhK0IsU0FBUztzQkFBN0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBZ0NBLFVBQVU7c0JBQTVDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG4vKipcclxuICogVGhlIGxldHRlcnMgYW5kIHNwZWNpYWwgY2hhcmFjdGVycyBkaXJlY3RpdmVcclxuICovXHJcbkBEaXJlY3RpdmUoe1xyXG4gIHNlbGVjdG9yOiAnW3NvZkFyTGV0dGVyc0FuZFNwZWNpYWxDaGFyYWN0ZXJzXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIExldHRlcnNDaGFyYWN0ZXJzRGlyZWN0aXZlIHtcclxuXHJcbiAgLyoqIFRydWUgaWYgbGV0dGVycyBhbmQgc3BlY2lhbCBjaGFyYWN0ZXJzIGFsbG93ZWQgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgc29mQXJMZXR0ZXJzQW5kU3BlY2lhbENoYXJhY3RlcnM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgdGhlIGRpcmVjdGl2ZVxyXG4gICAqIEBwYXJhbSBlbCBUaGUgZWxlbWVudFxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZWw6IEVsZW1lbnRSZWYpIHsgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogT25seSBhbGxvd3MgbGV0dGVyIGFuZCBzcGVjaWFsIGNoYXJhY3RlciBpbnB1dHNcclxuICAgKiBAcGFyYW0gZXZlbnQgS2V5IEV2ZW50XHJcbiAgICovXHJcbiAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihldmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgZSA9IGV2ZW50IGFzIEtleWJvYXJkRXZlbnQ7XHJcbiAgICBpZiAodGhpcy5zb2ZBckxldHRlcnNBbmRTcGVjaWFsQ2hhcmFjdGVycykge1xyXG4gICAgICBpZiAoWzQ2LCA4LCA5LCAyNywgMTMsIDExMCwgMTkwXS5pbmRleE9mKGUua2V5Q29kZSkgIT09IC0xIHx8XHJcbiAgICAgICAgLy8gQWxsb3c6IEN0cmwrQVxyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDY1ICYmIGUuY3RybEtleSkgfHxcclxuICAgICAgICAvLyBBbGxvdzogQ3RybCtDXHJcbiAgICAgICAgKGUua2V5Q29kZSA9PT0gNjcgJiYgZS5jdHJsS2V5KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBDdHJsK1hcclxuICAgICAgICAoZS5rZXlDb2RlID09PSA4OCAmJiBlLmN0cmxLZXkpIHx8XHJcbiAgICAgICAgLy8gQWxsb3c6IHNwYWNlc1xyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDMyKSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiAtIChtaW51cyBzaWduKSBvbiBudW1wYWQgb3IgYWxwaGFiZXQga2V5Ym9hcmQga2V5XHJcbiAgICAgICAgKGUua2V5Q29kZSA9PT0gMTA5IHx8IGUua2V5Q29kZSA9PT0gMTg5KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBhcG9zdHJvcGhlc1xyXG4gICAgICAgIChlLmtleUNvZGUgPT09IDQ4KSB8fFxyXG4gICAgICAgIC8vIEFsbG93OiBob21lLCBlbmQsIGxlZnQsIHJpZ2h0XHJcbiAgICAgICAgKGUua2V5Q29kZSA+PSAzNSAmJiBlLmtleUNvZGUgPD0gMzkpKSB7XHJcbiAgICAgICAgLy8gbGV0IGl0IGhhcHBlbiwgZG9uJ3QgZG8gYW55dGhpbmdcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgLy8gRW5zdXJlIHRoYXQgaXQgaXMgYSBsZXR0ZXIgYW5kIHN0b3AgdGhlIGtleXByZXNzIGlmIGl0cyBub3QgYSBsZXR0ZXJcclxuICAgICAgaWYgKGUua2V5Q29kZSA8IDY1IHx8IGUua2V5Q29kZSA+IDkwKSB7XHJcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbGxvdyB1c2VyIHRvIGNvcHkgYW5kIHBhc3RlIGxldHRlcnMgZXhjZXB0IHNwZWNpYWwgY2hhcmFjdGVyc1xyXG4gICAqIEBwYXJhbSBldmVudCB0aGUgZXZlbnRcclxuICAgKi9cclxuICBASG9zdExpc3RlbmVyKCdwYXN0ZScsIFsnJGV2ZW50J10pIGFsbG93UGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgbGV0IHBhc3RlRGF0YSA9IGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dC9wbGFpbicpO1xyXG4gICAgcGFzdGVEYXRhID0gcGFzdGVEYXRhLnJlcGxhY2UoL1swLTl+YCFAIyQlXiYqKCl7fVxcW1xcXTs6XCI8PiwuP1xcL1xcXFx8Xys9XSovZywgJycpO1xyXG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICBjb25zdCBzdGFydCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25TdGFydDtcclxuICAgIGNvbnN0IGVuZCA9IGlucHV0RWxlbWVudC5zZWxlY3Rpb25FbmQ7XHJcbiAgICBjb25zdCBvcmlnaW5hbFZhbHVlID0gaW5wdXRFbGVtZW50LnZhbHVlO1xyXG5cclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gW1xyXG4gICAgICBvcmlnaW5hbFZhbHVlLnNsaWNlKDAsIHN0YXJ0KSxcclxuICAgICAgcGFzdGVEYXRhLFxyXG4gICAgICBvcmlnaW5hbFZhbHVlLnNsaWNlKGVuZClcclxuICAgIF0uam9pbignJyk7XHJcblxyXG4gICAgaW5wdXRFbGVtZW50LnZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPSBpbnB1dEVsZW1lbnQuc2VsZWN0aW9uRW5kID0gc3RhcnQgKyBwYXN0ZURhdGEubGVuZ3RoO1xyXG5cclxuICAgIGNvbnN0IGV2dCA9IG5ldyBFdmVudCgnaW5wdXQnLCB7XHJcbiAgICAgIGJ1YmJsZXM6IHRydWUsXHJcbiAgICAgIGNhbmNlbGFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gICAgaW5wdXRFbGVtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KTtcclxuICB9XHJcbn1cclxuIl19