@keycloakify/angular 0.0.1-rc.17 → 0.0.1-rc.19

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 (350) hide show
  1. package/account/containers/template/template.component.d.ts +18 -5
  2. package/account/pages/account/account.component.d.ts +3 -2
  3. package/account/pages/applications/applications.component.d.ts +3 -2
  4. package/account/pages/federatedIdentity/federatedIdentity.component.d.ts +3 -2
  5. package/account/pages/log/log.component.d.ts +3 -2
  6. package/account/pages/password/password.component.d.ts +3 -2
  7. package/account/pages/sessions/sessions.component.d.ts +3 -2
  8. package/account/pages/totp/totp.component.d.ts +3 -2
  9. package/esm2022/account/containers/template/template.component.mjs +42 -9
  10. package/esm2022/account/directives/kc-class/kc-class.directive.mjs +3 -3
  11. package/esm2022/account/pages/account/account.component.mjs +8 -7
  12. package/esm2022/account/pages/applications/applications.component.mjs +8 -7
  13. package/esm2022/account/pages/federatedIdentity/federatedIdentity.component.mjs +8 -7
  14. package/esm2022/account/pages/log/log.component.mjs +8 -7
  15. package/esm2022/account/pages/password/password.component.mjs +9 -7
  16. package/esm2022/account/pages/sessions/sessions.component.mjs +8 -7
  17. package/esm2022/account/pages/totp/totp.component.mjs +8 -7
  18. package/esm2022/account/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -1
  19. package/esm2022/account/services/account-resource-injector/account-resource-injector.service.mjs +3 -3
  20. package/esm2022/account/services/i18n/i18n.service.mjs +3 -3
  21. package/esm2022/lib/directives/attributes/attributes.directive.mjs +3 -3
  22. package/esm2022/lib/pipes/input-type/input-type.pipe.mjs +3 -3
  23. package/esm2022/lib/pipes/is-array-with-empty-object/is-array-with-empty-object.pipe.mjs +3 -3
  24. package/esm2022/lib/pipes/kc-sanitize/kc-sanitize.pipe.mjs +3 -3
  25. package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  26. package/esm2022/lib/pipes/to-number/to-number.pipe.mjs +3 -3
  27. package/esm2022/lib/services/resource-injector/resource-injector.service.mjs +3 -3
  28. package/esm2022/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.mjs +5 -5
  29. package/esm2022/login/components/field-errors/field-errors.component.mjs +6 -6
  30. package/esm2022/login/components/group-label/group-label.component.mjs +3 -3
  31. package/esm2022/login/components/input-field-by-type/input-field-by-type.component.mjs +6 -6
  32. package/esm2022/login/components/input-tag/input-tag.component.mjs +6 -6
  33. package/esm2022/login/components/input-tag-selects/input-tag-selects.component.mjs +3 -3
  34. package/esm2022/login/components/logout-other-sessions/logout-other-sessions.component.mjs +3 -3
  35. package/esm2022/login/components/password-wrapper/password-wrapper.component.mjs +6 -6
  36. package/esm2022/login/components/select-tag/select-tag.component.mjs +3 -3
  37. package/esm2022/login/components/textarea-tag/textarea-tag.component.mjs +3 -3
  38. package/esm2022/login/components/user-profile-form-fields/user-profile-form-fields.component.mjs +6 -6
  39. package/esm2022/login/containers/template/template.component.mjs +83 -15
  40. package/esm2022/login/directives/kc-class/kc-class.directive.mjs +5 -5
  41. package/esm2022/login/pages/code/code.component.mjs +16 -10
  42. package/esm2022/login/pages/delete-account-confirm/delete-account-confirm.component.mjs +14 -8
  43. package/esm2022/login/pages/delete-credential/delete-credential.component.mjs +12 -11
  44. package/esm2022/login/pages/error/error.component.mjs +16 -10
  45. package/esm2022/login/pages/frontchannel-logout/frontchannel-logout.component.mjs +14 -12
  46. package/esm2022/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +14 -13
  47. package/esm2022/login/pages/info/info.component.mjs +13 -12
  48. package/esm2022/login/pages/login/login.component.mjs +15 -14
  49. package/esm2022/login/pages/login-config-totp/login-config-totp.component.mjs +14 -13
  50. package/esm2022/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.mjs +13 -16
  51. package/esm2022/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.mjs +13 -16
  52. package/esm2022/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +12 -15
  53. package/esm2022/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +13 -15
  54. package/esm2022/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.mjs +12 -11
  55. package/esm2022/login/pages/login-otp/login-otp.component.mjs +13 -12
  56. package/esm2022/login/pages/login-page-expired/login-page-expired.component.mjs +12 -11
  57. package/esm2022/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +13 -8
  58. package/esm2022/login/pages/login-password/login-password.component.mjs +15 -13
  59. package/esm2022/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.mjs +14 -13
  60. package/esm2022/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +14 -13
  61. package/esm2022/login/pages/login-reset-otp/login-reset-otp.component.mjs +13 -12
  62. package/esm2022/login/pages/login-reset-password/login-reset-password.component.mjs +13 -12
  63. package/esm2022/login/pages/login-update-password/login-update-password.component.mjs +13 -12
  64. package/esm2022/login/pages/login-update-profile/login-update-profile.component.mjs +13 -12
  65. package/esm2022/login/pages/login-username/login-username.component.mjs +14 -13
  66. package/esm2022/login/pages/login-verify-email/login-verify-email.component.mjs +12 -11
  67. package/esm2022/login/pages/login-x509-info/login-x509-info.component.mjs +12 -11
  68. package/esm2022/login/pages/logout-confirm/logout-confirm.component.mjs +12 -15
  69. package/esm2022/login/pages/register/register.component.mjs +16 -15
  70. package/esm2022/login/pages/saml-post-form/saml-post-form.component.mjs +16 -17
  71. package/esm2022/login/pages/select-authenticator/select-authenticator.component.mjs +13 -12
  72. package/esm2022/login/pages/terms/terms.component.mjs +12 -11
  73. package/esm2022/login/pages/update-email/update-email.component.mjs +14 -17
  74. package/esm2022/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +12 -11
  75. package/esm2022/login/pages/webauthn-error/webauthn-error.component.mjs +13 -12
  76. package/esm2022/login/pages/webauthn-register/webauthn-register.component.mjs +12 -11
  77. package/esm2022/login/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -1
  78. package/esm2022/login/services/i18n/i18n.service.mjs +3 -3
  79. package/esm2022/login/services/login-resource-injector/login-resource-injector.service.mjs +3 -3
  80. package/esm2022/login/services/submit/submit.service.mjs +4 -4
  81. package/esm2022/login/services/user-profile-form/user-profile-form.service.mjs +3 -3
  82. package/fesm2022/keycloakify-angular-account-containers-template.mjs +42 -9
  83. package/fesm2022/keycloakify-angular-account-containers-template.mjs.map +1 -1
  84. package/fesm2022/keycloakify-angular-account-directives-kc-class.mjs +3 -3
  85. package/fesm2022/keycloakify-angular-account-pages-account.mjs +7 -6
  86. package/fesm2022/keycloakify-angular-account-pages-account.mjs.map +1 -1
  87. package/fesm2022/keycloakify-angular-account-pages-applications.mjs +7 -6
  88. package/fesm2022/keycloakify-angular-account-pages-applications.mjs.map +1 -1
  89. package/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs +7 -6
  90. package/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs.map +1 -1
  91. package/fesm2022/keycloakify-angular-account-pages-log.mjs +7 -6
  92. package/fesm2022/keycloakify-angular-account-pages-log.mjs.map +1 -1
  93. package/fesm2022/keycloakify-angular-account-pages-password.mjs +8 -6
  94. package/fesm2022/keycloakify-angular-account-pages-password.mjs.map +1 -1
  95. package/fesm2022/keycloakify-angular-account-pages-sessions.mjs +7 -6
  96. package/fesm2022/keycloakify-angular-account-pages-sessions.mjs.map +1 -1
  97. package/fesm2022/keycloakify-angular-account-pages-totp.mjs +7 -6
  98. package/fesm2022/keycloakify-angular-account-pages-totp.mjs.map +1 -1
  99. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs +1 -0
  100. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs.map +1 -1
  101. package/fesm2022/keycloakify-angular-account-services-account-resource-injector.mjs +3 -3
  102. package/fesm2022/keycloakify-angular-account-services-i18n.mjs +3 -3
  103. package/fesm2022/keycloakify-angular-lib-directives-attributes.mjs +3 -3
  104. package/fesm2022/keycloakify-angular-lib-pipes-input-type.mjs +3 -3
  105. package/fesm2022/keycloakify-angular-lib-pipes-is-array-with-empty-object.mjs +3 -3
  106. package/fesm2022/keycloakify-angular-lib-pipes-kc-sanitize.mjs +3 -3
  107. package/fesm2022/keycloakify-angular-lib-pipes-to-array.mjs +3 -3
  108. package/fesm2022/keycloakify-angular-lib-pipes-to-number.mjs +3 -3
  109. package/fesm2022/keycloakify-angular-lib-services-resource-injector.mjs +3 -3
  110. package/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs +4 -4
  111. package/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs.map +1 -1
  112. package/fesm2022/keycloakify-angular-login-components-field-errors.mjs +5 -5
  113. package/fesm2022/keycloakify-angular-login-components-field-errors.mjs.map +1 -1
  114. package/fesm2022/keycloakify-angular-login-components-group-label.mjs +3 -3
  115. package/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs +5 -5
  116. package/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs.map +1 -1
  117. package/fesm2022/keycloakify-angular-login-components-input-tag-selects.mjs +3 -3
  118. package/fesm2022/keycloakify-angular-login-components-input-tag.mjs +5 -5
  119. package/fesm2022/keycloakify-angular-login-components-input-tag.mjs.map +1 -1
  120. package/fesm2022/keycloakify-angular-login-components-logout-other-sessions.mjs +3 -3
  121. package/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs +5 -5
  122. package/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs.map +1 -1
  123. package/fesm2022/keycloakify-angular-login-components-select-tag.mjs +3 -3
  124. package/fesm2022/keycloakify-angular-login-components-textarea-tag.mjs +3 -3
  125. package/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs +5 -5
  126. package/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs.map +1 -1
  127. package/fesm2022/keycloakify-angular-login-containers-template.mjs +83 -15
  128. package/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -1
  129. package/fesm2022/keycloakify-angular-login-directives-kc-class.mjs +4 -4
  130. package/fesm2022/keycloakify-angular-login-directives-kc-class.mjs.map +1 -1
  131. package/fesm2022/keycloakify-angular-login-pages-code.mjs +15 -9
  132. package/fesm2022/keycloakify-angular-login-pages-code.mjs.map +1 -1
  133. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs +13 -7
  134. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs.map +1 -1
  135. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +11 -10
  136. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs.map +1 -1
  137. package/fesm2022/keycloakify-angular-login-pages-error.mjs +15 -9
  138. package/fesm2022/keycloakify-angular-login-pages-error.mjs.map +1 -1
  139. package/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs +13 -11
  140. package/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs.map +1 -1
  141. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +13 -12
  142. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs.map +1 -1
  143. package/fesm2022/keycloakify-angular-login-pages-info.mjs +12 -11
  144. package/fesm2022/keycloakify-angular-login-pages-info.mjs.map +1 -1
  145. package/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs +13 -12
  146. package/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs.map +1 -1
  147. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs +12 -15
  148. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs.map +1 -1
  149. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs +12 -15
  150. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs.map +1 -1
  151. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +11 -14
  152. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs.map +1 -1
  153. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +12 -14
  154. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs.map +1 -1
  155. package/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs +11 -10
  156. package/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs.map +1 -1
  157. package/fesm2022/keycloakify-angular-login-pages-login-otp.mjs +12 -11
  158. package/fesm2022/keycloakify-angular-login-pages-login-otp.mjs.map +1 -1
  159. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +11 -10
  160. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs.map +1 -1
  161. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +12 -7
  162. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs.map +1 -1
  163. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs +14 -12
  164. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs.map +1 -1
  165. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs +13 -12
  166. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs.map +1 -1
  167. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +13 -12
  168. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs.map +1 -1
  169. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +12 -11
  170. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs.map +1 -1
  171. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +12 -11
  172. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs.map +1 -1
  173. package/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs +12 -11
  174. package/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs.map +1 -1
  175. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +12 -11
  176. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs.map +1 -1
  177. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs +13 -12
  178. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -1
  179. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +11 -10
  180. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs.map +1 -1
  181. package/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs +11 -10
  182. package/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs.map +1 -1
  183. package/fesm2022/keycloakify-angular-login-pages-login.mjs +14 -13
  184. package/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -1
  185. package/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs +11 -14
  186. package/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs.map +1 -1
  187. package/fesm2022/keycloakify-angular-login-pages-register.mjs +15 -14
  188. package/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -1
  189. package/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs +15 -16
  190. package/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs.map +1 -1
  191. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +12 -11
  192. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs.map +1 -1
  193. package/fesm2022/keycloakify-angular-login-pages-terms.mjs +11 -10
  194. package/fesm2022/keycloakify-angular-login-pages-terms.mjs.map +1 -1
  195. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs +13 -16
  196. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs.map +1 -1
  197. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +11 -10
  198. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs.map +1 -1
  199. package/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs +12 -11
  200. package/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs.map +1 -1
  201. package/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs +11 -10
  202. package/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs.map +1 -1
  203. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs +1 -0
  204. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs.map +1 -1
  205. package/fesm2022/keycloakify-angular-login-services-i18n.mjs +3 -3
  206. package/fesm2022/keycloakify-angular-login-services-login-resource-injector.mjs +3 -3
  207. package/fesm2022/keycloakify-angular-login-services-submit.mjs +3 -3
  208. package/fesm2022/keycloakify-angular-login-services-submit.mjs.map +1 -1
  209. package/fesm2022/keycloakify-angular-login-services-user-profile-form.mjs +3 -3
  210. package/login/containers/template/template.component.d.ts +25 -9
  211. package/login/directives/kc-class/kc-class.directive.d.ts +1 -1
  212. package/login/pages/code/code.component.d.ts +12 -3
  213. package/login/pages/delete-account-confirm/delete-account-confirm.component.d.ts +11 -2
  214. package/login/pages/delete-credential/delete-credential.component.d.ts +9 -5
  215. package/login/pages/error/error.component.d.ts +11 -2
  216. package/login/pages/frontchannel-logout/frontchannel-logout.component.d.ts +9 -5
  217. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +10 -7
  218. package/login/pages/info/info.component.d.ts +9 -5
  219. package/login/pages/login/login.component.d.ts +10 -6
  220. package/login/pages/login-config-totp/login-config-totp.component.d.ts +9 -5
  221. package/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.d.ts +8 -7
  222. package/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.d.ts +8 -7
  223. package/login/pages/login-idp-link-email/login-idp-link-email.component.d.ts +8 -7
  224. package/login/pages/login-oauth-grant/login-oauth-grant.component.d.ts +8 -7
  225. package/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.d.ts +9 -5
  226. package/login/pages/login-otp/login-otp.component.d.ts +9 -5
  227. package/login/pages/login-page-expired/login-page-expired.component.d.ts +9 -5
  228. package/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.d.ts +11 -3
  229. package/login/pages/login-password/login-password.component.d.ts +10 -5
  230. package/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.d.ts +9 -5
  231. package/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.d.ts +9 -5
  232. package/login/pages/login-reset-otp/login-reset-otp.component.d.ts +9 -5
  233. package/login/pages/login-reset-password/login-reset-password.component.d.ts +9 -5
  234. package/login/pages/login-update-password/login-update-password.component.d.ts +9 -5
  235. package/login/pages/login-update-profile/login-update-profile.component.d.ts +9 -6
  236. package/login/pages/login-username/login-username.component.d.ts +10 -6
  237. package/login/pages/login-verify-email/login-verify-email.component.d.ts +9 -5
  238. package/login/pages/login-x509-info/login-x509-info.component.d.ts +9 -5
  239. package/login/pages/logout-confirm/logout-confirm.component.d.ts +8 -7
  240. package/login/pages/register/register.component.d.ts +11 -8
  241. package/login/pages/saml-post-form/saml-post-form.component.d.ts +10 -7
  242. package/login/pages/select-authenticator/select-authenticator.component.d.ts +9 -5
  243. package/login/pages/terms/terms.component.d.ts +9 -5
  244. package/login/pages/update-email/update-email.component.d.ts +9 -9
  245. package/login/pages/webauthn-authenticate/webauthn-authenticate.component.d.ts +10 -6
  246. package/login/pages/webauthn-error/webauthn-error.component.d.ts +9 -5
  247. package/login/pages/webauthn-register/webauthn-register.component.d.ts +10 -6
  248. package/package.json +8 -8
  249. package/src/account/containers/template/template.component.html +16 -11
  250. package/src/account/containers/template/template.component.ts +54 -7
  251. package/src/account/pages/account/account.component.html +139 -143
  252. package/src/account/pages/account/account.component.ts +4 -3
  253. package/src/account/pages/applications/applications.component.html +128 -136
  254. package/src/account/pages/applications/applications.component.ts +4 -3
  255. package/src/account/pages/federatedIdentity/federatedIdentity.component.html +84 -88
  256. package/src/account/pages/federatedIdentity/federatedIdentity.component.ts +4 -3
  257. package/src/account/pages/log/log.component.html +35 -39
  258. package/src/account/pages/log/log.component.ts +4 -3
  259. package/src/account/pages/password/password.component.html +109 -113
  260. package/src/account/pages/password/password.component.ts +6 -3
  261. package/src/account/pages/sessions/sessions.component.html +52 -56
  262. package/src/account/pages/sessions/sessions.component.ts +4 -3
  263. package/src/account/pages/totp/totp.component.html +234 -238
  264. package/src/account/pages/totp/totp.component.ts +4 -3
  265. package/src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts +1 -0
  266. package/src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html +2 -2
  267. package/src/login/components/field-errors/field-errors.component.html +1 -1
  268. package/src/login/components/input-field-by-type/input-field-by-type.component.html +6 -6
  269. package/src/login/components/input-tag/input-tag.component.html +2 -2
  270. package/src/login/components/password-wrapper/password-wrapper.component.html +2 -2
  271. package/src/login/components/user-profile-form-fields/user-profile-form-fields.component.html +7 -11
  272. package/src/login/containers/template/template.component.html +29 -15
  273. package/src/login/containers/template/template.component.ts +100 -12
  274. package/src/login/directives/kc-class/kc-class.directive.ts +1 -2
  275. package/src/login/pages/code/code.component.html +19 -23
  276. package/src/login/pages/code/code.component.ts +18 -6
  277. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.html +41 -45
  278. package/src/login/pages/delete-account-confirm/delete-account-confirm.component.ts +16 -4
  279. package/src/login/pages/delete-credential/delete-credential.component.html +29 -31
  280. package/src/login/pages/delete-credential/delete-credential.component.ts +16 -9
  281. package/src/login/pages/error/error.component.html +20 -22
  282. package/src/login/pages/error/error.component.ts +17 -5
  283. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.html +25 -34
  284. package/src/login/pages/frontchannel-logout/frontchannel-logout.component.ts +17 -9
  285. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +29 -38
  286. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +18 -12
  287. package/src/login/pages/info/info.component.html +39 -48
  288. package/src/login/pages/info/info.component.ts +17 -10
  289. package/src/login/pages/login/login.component.html +184 -194
  290. package/src/login/pages/login/login.component.ts +20 -12
  291. package/src/login/pages/login-config-totp/login-config-totp.component.html +181 -190
  292. package/src/login/pages/login-config-totp/login-config-totp.component.ts +16 -10
  293. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.html +27 -37
  294. package/src/login/pages/login-idp-link-confirm/login-idp-link-confirm.component.ts +15 -14
  295. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.html +26 -36
  296. package/src/login/pages/login-idp-link-confirm-override/login-idp-link-confirm-override.component.ts +15 -14
  297. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +24 -34
  298. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.ts +15 -14
  299. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +75 -84
  300. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.ts +15 -14
  301. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.html +49 -58
  302. package/src/login/pages/login-oauth2-device-verify-user-code/login-oauth2-device-verify-user-code.component.ts +15 -9
  303. package/src/login/pages/login-otp/login-otp.component.html +89 -98
  304. package/src/login/pages/login-otp/login-otp.component.ts +16 -9
  305. package/src/login/pages/login-page-expired/login-page-expired.component.html +26 -33
  306. package/src/login/pages/login-page-expired/login-page-expired.component.ts +15 -9
  307. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +181 -188
  308. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.ts +15 -5
  309. package/src/login/pages/login-password/login-password.component.html +73 -80
  310. package/src/login/pages/login-password/login-password.component.ts +17 -9
  311. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.html +136 -145
  312. package/src/login/pages/login-recovery-authn-code-config/login-recovery-authn-code-config.component.ts +17 -9
  313. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +60 -68
  314. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.ts +16 -9
  315. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +53 -60
  316. package/src/login/pages/login-reset-otp/login-reset-otp.component.ts +15 -8
  317. package/src/login/pages/login-reset-password/login-reset-password.component.html +77 -86
  318. package/src/login/pages/login-reset-password/login-reset-password.component.ts +16 -9
  319. package/src/login/pages/login-update-password/login-update-password.component.html +98 -108
  320. package/src/login/pages/login-update-password/login-update-password.component.ts +15 -8
  321. package/src/login/pages/login-update-profile/login-update-profile.component.html +44 -53
  322. package/src/login/pages/login-update-profile/login-update-profile.component.ts +17 -10
  323. package/src/login/pages/login-username/login-username.component.html +138 -148
  324. package/src/login/pages/login-username/login-username.component.ts +16 -9
  325. package/src/login/pages/login-verify-email/login-verify-email.component.html +17 -25
  326. package/src/login/pages/login-verify-email/login-verify-email.component.ts +15 -9
  327. package/src/login/pages/login-x509-info/login-x509-info.component.html +85 -94
  328. package/src/login/pages/login-x509-info/login-x509-info.component.ts +15 -9
  329. package/src/login/pages/logout-confirm/logout-confirm.component.html +39 -49
  330. package/src/login/pages/logout-confirm/logout-confirm.component.ts +15 -14
  331. package/src/login/pages/register/register.component.html +100 -110
  332. package/src/login/pages/register/register.component.ts +19 -12
  333. package/src/login/pages/saml-post-form/saml-post-form.component.html +39 -48
  334. package/src/login/pages/saml-post-form/saml-post-form.component.ts +19 -13
  335. package/src/login/pages/select-authenticator/select-authenticator.component.html +36 -44
  336. package/src/login/pages/select-authenticator/select-authenticator.component.ts +16 -9
  337. package/src/login/pages/terms/terms.component.html +25 -34
  338. package/src/login/pages/terms/terms.component.ts +16 -9
  339. package/src/login/pages/update-email/update-email.component.html +44 -53
  340. package/src/login/pages/update-email/update-email.component.ts +16 -15
  341. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +134 -145
  342. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.ts +16 -9
  343. package/src/login/pages/webauthn-error/webauthn-error.component.html +45 -55
  344. package/src/login/pages/webauthn-error/webauthn-error.component.ts +16 -9
  345. package/src/login/pages/webauthn-register/webauthn-register.component.html +65 -75
  346. package/src/login/pages/webauthn-register/webauthn-register.component.ts +16 -9
  347. package/src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts +1 -0
  348. package/src/login/services/submit/submit.service.ts +1 -1
  349. package/src/tsconfig.lib.json +0 -12
  350. package/src/tsconfig.lib.prod.json +0 -10
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-account-providers-keycloakify-angular.mjs","sources":["../../src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts","../../src/account/providers/keycloakify-angular/keycloakify-angular-account-providers-keycloakify-angular.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER, LOCALE_ID, makeEnvironmentProviders } from '@angular/core';\nimport { I18nService } from '@keycloakify/angular/account/services/i18n';\nimport { ACCOUNT_CLASSES } from '@keycloakify/angular/account/tokens/classes';\nimport { ACCOUNT_I18N } from '@keycloakify/angular/account/tokens/i18n';\nimport { KC_ACCOUNT_CONTEXT } from '@keycloakify/angular/account/tokens/kc-context';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { type KcContextLike } from 'keycloakify/account/i18n/noJsx';\nimport type { ClassKey } from 'keycloakify/account/lib/kcClsx';\nimport type { KcContext } from '@keycloakify/angular/account/KcContext';\n\nexport type KeycloakifyAngularAccountConfig = {\n doUseDefaultCss?: boolean;\n classes?: { [key in ClassKey]?: string };\n getI18n: (params: { kcContext: KcContextLike }) => {\n i18n: unknown;\n prI18n_currentLanguage: Promise<unknown> | undefined;\n };\n};\n\nexport const provideKeycloakifyAngularAccount = (\n config: KeycloakifyAngularAccountConfig\n) =>\n makeEnvironmentProviders([\n {\n provide: KC_ACCOUNT_CONTEXT,\n // @ts-ignore\n useValue: window.kcContext\n },\n {\n provide: LOCALE_ID,\n useFactory: (document: Document) => {\n return document.documentElement.lang ?? 'en';\n },\n deps: [DOCUMENT]\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: (i18nService: I18nService, kcContext: KcContext) => async () => {\n const getI18n = config.getI18n;\n\n const { i18n, prI18n_currentLanguage } = getI18n({\n kcContext\n });\n let i18nPromise = new Promise<typeof i18n>(resolve => resolve(i18n));\n if (prI18n_currentLanguage) {\n i18nPromise = prI18n_currentLanguage;\n }\n return i18nPromise.then(i18n => {\n i18nService.i18n = i18n;\n return true;\n });\n },\n deps: [I18nService, KC_ACCOUNT_CONTEXT]\n },\n {\n provide: ACCOUNT_I18N,\n useFactory: (i18nService: I18nService) => i18nService.i18n,\n deps: [I18nService]\n },\n { provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },\n { provide: ACCOUNT_CLASSES, useValue: config?.classes ?? {} }\n ]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAoBa,MAAA,gCAAgC,GAAG,CAC5C,MAAuC,KAEvC,wBAAwB,CAAC;AACrB,IAAA;AACI,QAAA,OAAO,EAAE,kBAAkB;;QAE3B,QAAQ,EAAE,MAAM,CAAC,SAAS;AAC7B,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AAC/B,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC;SAChD;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,WAAwB,EAAE,SAAoB,KAAK,YAAW;AACvE,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAE/B,YAAA,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;gBAC7C,SAAS;AACZ,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,WAAW,GAAG,IAAI,OAAO,CAAc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,sBAAsB,EAAE;gBACxB,WAAW,GAAG,sBAAsB,CAAC;aACxC;AACD,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAG;AAC3B,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAI,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1C,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,CAAC,WAAwB,KAAK,WAAW,CAAC,IAAI;QAC1D,IAAI,EAAE,CAAC,WAAW,CAAC;AACtB,KAAA;IACD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,IAAI,IAAI,EAAE;IACvE,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE;AAChE,CAAA;;AC/DL;;AAEG;;;;"}
1
+ {"version":3,"file":"keycloakify-angular-account-providers-keycloakify-angular.mjs","sources":["../../src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts","../../src/account/providers/keycloakify-angular/keycloakify-angular-account-providers-keycloakify-angular.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport { APP_INITIALIZER, LOCALE_ID, makeEnvironmentProviders } from '@angular/core';\nimport { I18nService } from '@keycloakify/angular/account/services/i18n';\nimport { ACCOUNT_CLASSES } from '@keycloakify/angular/account/tokens/classes';\nimport { ACCOUNT_I18N } from '@keycloakify/angular/account/tokens/i18n';\nimport { KC_ACCOUNT_CONTEXT } from '@keycloakify/angular/account/tokens/kc-context';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { type KcContextLike } from 'keycloakify/account/i18n/noJsx';\nimport type { ClassKey } from 'keycloakify/account/lib/kcClsx';\nimport type { KcContext } from '@keycloakify/angular/account/KcContext';\n\nexport type KeycloakifyAngularAccountConfig = {\n doUseDefaultCss?: boolean;\n classes?: { [key in ClassKey]?: string };\n getI18n: (params: { kcContext: KcContextLike }) => {\n i18n: unknown;\n prI18n_currentLanguage: Promise<unknown> | undefined;\n };\n};\n\nexport const provideKeycloakifyAngularAccount = (\n config: KeycloakifyAngularAccountConfig\n) =>\n makeEnvironmentProviders([\n {\n provide: KC_ACCOUNT_CONTEXT,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n useValue: window.kcContext\n },\n {\n provide: LOCALE_ID,\n useFactory: (document: Document) => {\n return document.documentElement.lang ?? 'en';\n },\n deps: [DOCUMENT]\n },\n {\n provide: APP_INITIALIZER,\n multi: true,\n useFactory: (i18nService: I18nService, kcContext: KcContext) => async () => {\n const getI18n = config.getI18n;\n\n const { i18n, prI18n_currentLanguage } = getI18n({\n kcContext\n });\n let i18nPromise = new Promise<typeof i18n>(resolve => resolve(i18n));\n if (prI18n_currentLanguage) {\n i18nPromise = prI18n_currentLanguage;\n }\n return i18nPromise.then(i18n => {\n i18nService.i18n = i18n;\n return true;\n });\n },\n deps: [I18nService, KC_ACCOUNT_CONTEXT]\n },\n {\n provide: ACCOUNT_I18N,\n useFactory: (i18nService: I18nService) => i18nService.i18n,\n deps: [I18nService]\n },\n { provide: USE_DEFAULT_CSS, useValue: config?.doUseDefaultCss ?? true },\n { provide: ACCOUNT_CLASSES, useValue: config?.classes ?? {} }\n ]);\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;;AAoBa,MAAA,gCAAgC,GAAG,CAC5C,MAAuC,KAEvC,wBAAwB,CAAC;AACrB,IAAA;AACI,QAAA,OAAO,EAAE,kBAAkB;;;QAG3B,QAAQ,EAAE,MAAM,CAAC,SAAS;AAC7B,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,CAAC,QAAkB,KAAI;AAC/B,YAAA,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,IAAI,CAAC;SAChD;QACD,IAAI,EAAE,CAAC,QAAQ,CAAC;AACnB,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,eAAe;AACxB,QAAA,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,CAAC,WAAwB,EAAE,SAAoB,KAAK,YAAW;AACvE,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AAE/B,YAAA,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC;gBAC7C,SAAS;AACZ,aAAA,CAAC,CAAC;AACH,YAAA,IAAI,WAAW,GAAG,IAAI,OAAO,CAAc,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YACrE,IAAI,sBAAsB,EAAE;gBACxB,WAAW,GAAG,sBAAsB,CAAC;aACxC;AACD,YAAA,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAG;AAC3B,gBAAA,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,gBAAA,OAAO,IAAI,CAAC;AAChB,aAAC,CAAC,CAAC;SACN;AACD,QAAA,IAAI,EAAE,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1C,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,CAAC,WAAwB,KAAK,WAAW,CAAC,IAAI;QAC1D,IAAI,EAAE,CAAC,WAAW,CAAC;AACtB,KAAA;IACD,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,eAAe,IAAI,IAAI,EAAE;IACvE,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,IAAI,EAAE,EAAE;AAChE,CAAA;;AChEL;;AAEG;;;;"}
@@ -26,10 +26,10 @@ class AccountResourceInjectorService {
26
26
  insertAdditionalScripts(scripts) {
27
27
  scripts.map(script => this.resourceInjectorService.createScript(script));
28
28
  }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AccountResourceInjectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AccountResourceInjectorService, providedIn: 'root' }); }
29
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AccountResourceInjectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
30
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AccountResourceInjectorService, providedIn: 'root' }); }
31
31
  }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AccountResourceInjectorService, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AccountResourceInjectorService, decorators: [{
33
33
  type: Injectable,
34
34
  args: [{
35
35
  providedIn: 'root'
@@ -3,10 +3,10 @@ import { Injectable } from '@angular/core';
3
3
 
4
4
  /** INTERNAL: DO NOT IMPORT THIS */
5
5
  class I18nService {
6
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: I18nService, providedIn: 'root' }); }
6
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: I18nService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
7
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: I18nService, providedIn: 'root' }); }
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: I18nService, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: I18nService, decorators: [{
10
10
  type: Injectable,
11
11
  args: [{ providedIn: 'root' }]
12
12
  }] });
@@ -17,10 +17,10 @@ class AttributesDirective {
17
17
  }
18
18
  });
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AttributesDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: AttributesDirective, isStandalone: true, selector: "[kcAttributes]", inputs: { kcAttributes: { classPropertyName: "kcAttributes", publicName: "kcAttributes", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AttributesDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
21
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.7", type: AttributesDirective, isStandalone: true, selector: "[kcAttributes]", inputs: { kcAttributes: { classPropertyName: "kcAttributes", publicName: "kcAttributes", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
22
22
  }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AttributesDirective, decorators: [{
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AttributesDirective, decorators: [{
24
24
  type: Directive,
25
25
  args: [{ selector: '[kcAttributes]', standalone: true }]
26
26
  }], ctorParameters: () => [] });
@@ -8,10 +8,10 @@ class InputTypePipe {
8
8
  }
9
9
  return inputType ?? 'text';
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, isStandalone: true, name: "inputType" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: InputTypePipe, isStandalone: true, name: "inputType" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTypePipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputTypePipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{
17
17
  name: 'inputType',
@@ -8,10 +8,10 @@ class IsArrayWithEmptyObjectPipe {
8
8
  typeof variable[0] === 'object' &&
9
9
  Object.keys(variable[0]).length === 0);
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IsArrayWithEmptyObjectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: IsArrayWithEmptyObjectPipe, isStandalone: true, name: "isArrayWithEmptyObject" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IsArrayWithEmptyObjectPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: IsArrayWithEmptyObjectPipe, isStandalone: true, name: "isArrayWithEmptyObject" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: IsArrayWithEmptyObjectPipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: IsArrayWithEmptyObjectPipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{
17
17
  name: 'isArrayWithEmptyObject',
@@ -20,10 +20,10 @@ class KcSanitizePipe {
20
20
  throw new Error(`Invalid safe type specified: ${type}`);
21
21
  }
22
22
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, isStandalone: true, name: "kcSanitize" }); }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: KcSanitizePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: KcSanitizePipe, isStandalone: true, name: "kcSanitize" }); }
25
25
  }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: KcSanitizePipe, decorators: [{
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: KcSanitizePipe, decorators: [{
27
27
  type: Pipe,
28
28
  args: [{ name: 'kcSanitize', standalone: true }]
29
29
  }] });
@@ -9,10 +9,10 @@ class ToArrayPipe {
9
9
  }
10
10
  return emptyWhenString ? [] : [value];
11
11
  }
12
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
13
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" }); }
14
14
  }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToArrayPipe, decorators: [{
15
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ToArrayPipe, decorators: [{
16
16
  type: Pipe,
17
17
  args: [{
18
18
  name: 'toArray',
@@ -8,10 +8,10 @@ class ToNumberPipe {
8
8
  throw new Error('number is NaN');
9
9
  return number;
10
10
  }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, isStandalone: true, name: "toNumber" }); }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ToNumberPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
12
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.7", ngImport: i0, type: ToNumberPipe, isStandalone: true, name: "toNumber" }); }
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ToNumberPipe, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ToNumberPipe, decorators: [{
15
15
  type: Pipe,
16
16
  args: [{
17
17
  name: 'toNumber',
@@ -43,10 +43,10 @@ class ResourceInjectorService {
43
43
  script.id = id;
44
44
  this.renderer.appendChild(document.head, script);
45
45
  }
46
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ResourceInjectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
47
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ResourceInjectorService, providedIn: 'root' }); }
46
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ResourceInjectorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
47
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ResourceInjectorService, providedIn: 'root' }); }
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: ResourceInjectorService, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: ResourceInjectorService, decorators: [{
50
50
  type: Injectable,
51
51
  args: [{
52
52
  providedIn: 'root'
@@ -97,12 +97,12 @@ class AddRemoveButtonsMultiValuedAttributeComponent {
97
97
  })();
98
98
  return { hasRemove, hasAdd };
99
99
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AddRemoveButtonsMultiValuedAttributeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: AddRemoveButtonsMultiValuedAttributeComponent, isStandalone: true, selector: "kc-add-remove-buttons-multi-valued-attribute", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, fieldIndex: { classPropertyName: "fieldIndex", publicName: "fieldIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, ngImport: i0, template: "@let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);\n@if (hasRemove()) {\n <button\n [id]=\"'kc-remove-' + idPostfix\"\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n (click)=\"onRemove()\"\n >\n {{ i18n.msgStr('remove') }}\n </button>\n @if (hasAdd()) {\n &nbsp;|&nbsp;\n }\n}\n@if (hasAdd()) {\n <button\n [id]=\"'kc-add-' + idPostfix\"\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n (click)=\"onAdd()\"\n >\n {{ i18n.msgStr('addValue') }}\n </button>\n}\n", styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AddRemoveButtonsMultiValuedAttributeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
101
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: AddRemoveButtonsMultiValuedAttributeComponent, isStandalone: true, selector: "kc-add-remove-buttons-multi-valued-attribute", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, fieldIndex: { classPropertyName: "fieldIndex", publicName: "fieldIndex", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, ngImport: i0, template: "@let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);\n@if (hasRemove()) {\n <button\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n [id]=\"'kc-remove-' + idPostfix\"\n (click)=\"onRemove()\"\n >\n {{ i18n.msgStr('remove') }}\n </button>\n @if (hasAdd()) {\n &nbsp;|&nbsp;\n }\n}\n@if (hasAdd()) {\n <button\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n [id]=\"'kc-add-' + idPostfix\"\n (click)=\"onAdd()\"\n >\n {{ i18n.msgStr('addValue') }}\n </button>\n}\n", styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AddRemoveButtonsMultiValuedAttributeComponent, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: AddRemoveButtonsMultiValuedAttributeComponent, decorators: [{
104
104
  type: Component,
105
- args: [{ standalone: true, imports: [], selector: 'kc-add-remove-buttons-multi-valued-attribute', changeDetection: ChangeDetectionStrategy.OnPush, template: "@let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);\n@if (hasRemove()) {\n <button\n [id]=\"'kc-remove-' + idPostfix\"\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n (click)=\"onRemove()\"\n >\n {{ i18n.msgStr('remove') }}\n </button>\n @if (hasAdd()) {\n &nbsp;|&nbsp;\n }\n}\n@if (hasAdd()) {\n <button\n [id]=\"'kc-add-' + idPostfix\"\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n (click)=\"onAdd()\"\n >\n {{ i18n.msgStr('addValue') }}\n </button>\n}\n", styles: [":host{display:contents}\n"] }]
105
+ args: [{ standalone: true, imports: [], selector: 'kc-add-remove-buttons-multi-valued-attribute', changeDetection: ChangeDetectionStrategy.OnPush, template: "@let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);\n@if (hasRemove()) {\n <button\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n [id]=\"'kc-remove-' + idPostfix\"\n (click)=\"onRemove()\"\n >\n {{ i18n.msgStr('remove') }}\n </button>\n @if (hasAdd()) {\n &nbsp;|&nbsp;\n }\n}\n@if (hasAdd()) {\n <button\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n [id]=\"'kc-add-' + idPostfix\"\n (click)=\"onAdd()\"\n >\n {{ i18n.msgStr('addValue') }}\n </button>\n}\n", styles: [":host{display:contents}\n"] }]
106
106
  }] });
107
107
 
108
108
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs","sources":["../../src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts","../../src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html","../../src/login/components/add-remove-buttons-multi-valued-attribute/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { type FormAction } from '@keycloakify/angular/login/services/user-profile-form';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { type Attribute } from 'keycloakify/login/KcContext';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\n\n@Component({\n standalone: true,\n styles: [\n `\n :host {\n display: contents;\n }\n `\n ],\n imports: [],\n selector: 'kc-add-remove-buttons-multi-valued-attribute',\n templateUrl: 'add-remove-buttons-multi-valued-attribute.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AddRemoveButtonsMultiValuedAttributeComponent {\n i18n = inject<I18n>(LOGIN_I18N);\n attribute = input<Attribute>();\n values = input<string[]>();\n fieldIndex = input<number>();\n dispatchFormAction = output<FormAction>();\n\n hasRemove = computed(() => {\n const attribute = this.attribute();\n const values = this.values();\n const fieldIndex = this.fieldIndex();\n if (attribute && values && fieldIndex) {\n return this.getButtonToDisplayForMultivaluedAttributeField({\n attribute,\n values,\n fieldIndex\n }).hasRemove;\n }\n return false;\n });\n hasAdd = computed(() => {\n const attribute = this.attribute();\n const values = this.values();\n const fieldIndex = this.fieldIndex();\n if (attribute && values && fieldIndex) {\n return this.getButtonToDisplayForMultivaluedAttributeField({\n attribute,\n values,\n fieldIndex\n }).hasAdd;\n }\n return false;\n });\n\n onAdd() {\n this.dispatchFormAction.emit({\n action: 'update',\n name: this.attribute()?.name ?? '',\n valueOrValues: [...(this.values() ?? []), '']\n });\n }\n\n onRemove() {\n this.dispatchFormAction.emit({\n action: 'update',\n name: this.attribute()?.name ?? '',\n valueOrValues: (this.values() ?? []).filter((_, i) => i !== this.fieldIndex())\n });\n }\n\n private getButtonToDisplayForMultivaluedAttributeField(params: { attribute: Attribute; values: string[]; fieldIndex: number }) {\n const { attribute, values, fieldIndex } = params;\n\n const hasRemove = (() => {\n if (values.length === 1) {\n return false;\n }\n\n const minCount = (() => {\n const { multivalued } = attribute.validators;\n\n if (multivalued === undefined) {\n return undefined;\n }\n\n const minStr = multivalued.min;\n\n if (minStr === undefined) {\n return undefined;\n }\n\n return parseInt(`${minStr}`);\n })();\n\n if (minCount === undefined) {\n return true;\n }\n\n if (values.length === minCount) {\n return false;\n }\n\n return true;\n })();\n\n const hasAdd = (() => {\n if (fieldIndex + 1 !== values.length) {\n return false;\n }\n\n const maxCount = (() => {\n const { multivalued } = attribute.validators;\n\n if (multivalued === undefined) {\n return undefined;\n }\n\n const maxStr = multivalued.max;\n\n if (maxStr === undefined) {\n return undefined;\n }\n\n return parseInt(`${maxStr}`);\n })();\n\n if (maxCount === undefined) {\n return true;\n }\n\n return values.length !== maxCount;\n })();\n\n return { hasRemove, hasAdd };\n }\n}\n","@let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);\n@if (hasRemove()) {\n <button\n [id]=\"'kc-remove-' + idPostfix\"\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n (click)=\"onRemove()\"\n >\n {{ i18n.msgStr('remove') }}\n </button>\n @if (hasAdd()) {\n &nbsp;|&nbsp;\n }\n}\n@if (hasAdd()) {\n <button\n [id]=\"'kc-add-' + idPostfix\"\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n (click)=\"onAdd()\"\n >\n {{ i18n.msgStr('addValue') }}\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs","sources":["../../src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.ts","../../src/login/components/add-remove-buttons-multi-valued-attribute/add-remove-buttons-multi-valued-attribute.component.html","../../src/login/components/add-remove-buttons-multi-valued-attribute/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, inject, input, output } from '@angular/core';\nimport { type FormAction } from '@keycloakify/angular/login/services/user-profile-form';\nimport { LOGIN_I18N } from '@keycloakify/angular/login/tokens/i18n';\nimport { type Attribute } from 'keycloakify/login/KcContext';\nimport type { I18n } from '@keycloakify/angular/login/i18n';\n\n@Component({\n standalone: true,\n styles: [\n `\n :host {\n display: contents;\n }\n `\n ],\n imports: [],\n selector: 'kc-add-remove-buttons-multi-valued-attribute',\n templateUrl: 'add-remove-buttons-multi-valued-attribute.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AddRemoveButtonsMultiValuedAttributeComponent {\n i18n = inject<I18n>(LOGIN_I18N);\n attribute = input<Attribute>();\n values = input<string[]>();\n fieldIndex = input<number>();\n dispatchFormAction = output<FormAction>();\n\n hasRemove = computed(() => {\n const attribute = this.attribute();\n const values = this.values();\n const fieldIndex = this.fieldIndex();\n if (attribute && values && fieldIndex) {\n return this.getButtonToDisplayForMultivaluedAttributeField({\n attribute,\n values,\n fieldIndex\n }).hasRemove;\n }\n return false;\n });\n hasAdd = computed(() => {\n const attribute = this.attribute();\n const values = this.values();\n const fieldIndex = this.fieldIndex();\n if (attribute && values && fieldIndex) {\n return this.getButtonToDisplayForMultivaluedAttributeField({\n attribute,\n values,\n fieldIndex\n }).hasAdd;\n }\n return false;\n });\n\n onAdd() {\n this.dispatchFormAction.emit({\n action: 'update',\n name: this.attribute()?.name ?? '',\n valueOrValues: [...(this.values() ?? []), '']\n });\n }\n\n onRemove() {\n this.dispatchFormAction.emit({\n action: 'update',\n name: this.attribute()?.name ?? '',\n valueOrValues: (this.values() ?? []).filter((_, i) => i !== this.fieldIndex())\n });\n }\n\n private getButtonToDisplayForMultivaluedAttributeField(params: { attribute: Attribute; values: string[]; fieldIndex: number }) {\n const { attribute, values, fieldIndex } = params;\n\n const hasRemove = (() => {\n if (values.length === 1) {\n return false;\n }\n\n const minCount = (() => {\n const { multivalued } = attribute.validators;\n\n if (multivalued === undefined) {\n return undefined;\n }\n\n const minStr = multivalued.min;\n\n if (minStr === undefined) {\n return undefined;\n }\n\n return parseInt(`${minStr}`);\n })();\n\n if (minCount === undefined) {\n return true;\n }\n\n if (values.length === minCount) {\n return false;\n }\n\n return true;\n })();\n\n const hasAdd = (() => {\n if (fieldIndex + 1 !== values.length) {\n return false;\n }\n\n const maxCount = (() => {\n const { multivalued } = attribute.validators;\n\n if (multivalued === undefined) {\n return undefined;\n }\n\n const maxStr = multivalued.max;\n\n if (maxStr === undefined) {\n return undefined;\n }\n\n return parseInt(`${maxStr}`);\n })();\n\n if (maxCount === undefined) {\n return true;\n }\n\n return values.length !== maxCount;\n })();\n\n return { hasRemove, hasAdd };\n }\n}\n","@let idPostfix = attribute()?.name ?? '' + '-' + (fieldIndex() ?? 0 + 1);\n@if (hasRemove()) {\n <button\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n [id]=\"'kc-remove-' + idPostfix\"\n (click)=\"onRemove()\"\n >\n {{ i18n.msgStr('remove') }}\n </button>\n @if (hasAdd()) {\n &nbsp;|&nbsp;\n }\n}\n@if (hasAdd()) {\n <button\n type=\"button\"\n class=\"pf-c-button pf-m-inline pf-m-link\"\n [id]=\"'kc-add-' + idPostfix\"\n (click)=\"onAdd()\"\n >\n {{ i18n.msgStr('addValue') }}\n </button>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -14,22 +14,22 @@ class FieldErrorsComponent extends ComponentReference {
14
14
  this.doUseDefaultCss = inject(USE_DEFAULT_CSS);
15
15
  this.classes = inject(LOGIN_CLASSES);
16
16
  }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FieldErrorsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: FieldErrorsComponent, isStandalone: true, selector: "kc-field-errors", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null }, fieldIndex: { classPropertyName: "fieldIndex", publicName: "fieldIndex", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FieldErrorsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: FieldErrorsComponent, isStandalone: true, selector: "kc-field-errors", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null }, fieldIndex: { classPropertyName: "fieldIndex", publicName: "fieldIndex", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
19
19
  {
20
20
  provide: ComponentReference,
21
21
  useExisting: forwardRef(() => FieldErrorsComponent)
22
22
  }
23
- ], usesInheritance: true, ngImport: i0, template: "@let index = fieldIndex();\n<span\n [id]=\"'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n>\n @for (error of displayableErrors(); track error; let i = $index) {\n @if (error.fieldIndex === index) {\n <span [innerHTML]=\"error.errorMessage\"></span>\n @if (displayableErrors()?.length ?? 0 - 1 !== i) {\n <br />\n }\n }\n }\n</span>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
23
+ ], usesInheritance: true, ngImport: i0, template: "@let index = fieldIndex();\n<span\n aria-live=\"polite\"\n [id]=\"'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n>\n @for (error of displayableErrors(); track error; let i = $index) {\n @if (error.fieldIndex === index) {\n <span [innerHTML]=\"error.errorMessage\"></span>\n @if (displayableErrors()?.length ?? 0 - 1 !== i) {\n <br />\n }\n }\n }\n</span>\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: FieldErrorsComponent, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: FieldErrorsComponent, decorators: [{
26
26
  type: Component,
27
27
  args: [{ standalone: true, imports: [KcClassDirective], selector: 'kc-field-errors', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
28
28
  {
29
29
  provide: ComponentReference,
30
30
  useExisting: forwardRef(() => FieldErrorsComponent)
31
31
  }
32
- ], template: "@let index = fieldIndex();\n<span\n [id]=\"'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n>\n @for (error of displayableErrors(); track error; let i = $index) {\n @if (error.fieldIndex === index) {\n <span [innerHTML]=\"error.errorMessage\"></span>\n @if (displayableErrors()?.length ?? 0 - 1 !== i) {\n <br />\n }\n }\n }\n</span>\n", styles: [":host{display:contents}\n"] }]
32
+ ], template: "@let index = fieldIndex();\n<span\n aria-live=\"polite\"\n [id]=\"'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n>\n @for (error of displayableErrors(); track error; let i = $index) {\n @if (error.fieldIndex === index) {\n <span [innerHTML]=\"error.errorMessage\"></span>\n @if (displayableErrors()?.length ?? 0 - 1 !== i) {\n <br />\n }\n }\n }\n</span>\n", styles: [":host{display:contents}\n"] }]
33
33
  }] });
34
34
 
35
35
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-components-field-errors.mjs","sources":["../../src/login/components/field-errors/field-errors.component.ts","../../src/login/components/field-errors/field-errors.component.html","../../src/login/components/field-errors/keycloakify-angular-login-components-field-errors.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport { type FormFieldError } from '@keycloakify/angular/login/services/user-profile-form';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { type Attribute } from 'keycloakify/login/KcContext';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n standalone: true,\n styles: [\n `\n :host {\n display: contents;\n }\n `\n ],\n imports: [KcClassDirective],\n selector: 'kc-field-errors',\n templateUrl: 'field-errors.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => FieldErrorsComponent)\n }\n ]\n})\nexport class FieldErrorsComponent extends ComponentReference {\n attribute = input<Attribute>();\n displayableErrors = input<FormFieldError[]>();\n fieldIndex = input<number>();\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n}\n","@let index = fieldIndex();\n<span\n [id]=\"'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n aria-live=\"polite\"\n>\n @for (error of displayableErrors(); track error; let i = $index) {\n @if (error.fieldIndex === index) {\n <span [innerHTML]=\"error.errorMessage\"></span>\n @if (displayableErrors()?.length ?? 0 - 1 !== i) {\n <br />\n }\n }\n }\n</span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AA6BM,MAAO,oBAAqB,SAAQ,kBAAkB,CAAA;AApB5D,IAAA,WAAA,GAAA;;QAqBI,IAAS,CAAA,SAAA,GAAG,KAAK,EAAa,CAAC;QAC/B,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAoB,CAAC;QAC9C,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU,CAAC;AACpB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,eAAe,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAoC,aAAa,CAAC,CAAC;AAC/E,KAAA;8GANY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAPlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACtD,aAAA;SACJ,EC3BL,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6fAeA,mFDGc,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAWjB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;iCACM,IAAI,EAAA,OAAA,EAQP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB,iBAAiB,EAEV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACtD,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,6fAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;;AE3BL;;AAEG;;;;"}
1
+ {"version":3,"file":"keycloakify-angular-login-components-field-errors.mjs","sources":["../../src/login/components/field-errors/field-errors.component.ts","../../src/login/components/field-errors/field-errors.component.html","../../src/login/components/field-errors/keycloakify-angular-login-components-field-errors.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, forwardRef, inject, input } from '@angular/core';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';\nimport { type FormFieldError } from '@keycloakify/angular/login/services/user-profile-form';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { type Attribute } from 'keycloakify/login/KcContext';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n standalone: true,\n styles: [\n `\n :host {\n display: contents;\n }\n `\n ],\n imports: [KcClassDirective],\n selector: 'kc-field-errors',\n templateUrl: 'field-errors.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => FieldErrorsComponent)\n }\n ]\n})\nexport class FieldErrorsComponent extends ComponentReference {\n attribute = input<Attribute>();\n displayableErrors = input<FormFieldError[]>();\n fieldIndex = input<number>();\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n}\n","@let index = fieldIndex();\n<span\n aria-live=\"polite\"\n [id]=\"'input-error-' + attribute.name + (index === undefined ? '' : '-' + index)\"\n [kcClass]=\"'kcInputErrorMessageClass'\"\n>\n @for (error of displayableErrors(); track error; let i = $index) {\n @if (error.fieldIndex === index) {\n <span [innerHTML]=\"error.errorMessage\"></span>\n @if (displayableErrors()?.length ?? 0 - 1 !== i) {\n <br />\n }\n }\n }\n</span>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AA6BM,MAAO,oBAAqB,SAAQ,kBAAkB,CAAA;AApB5D,IAAA,WAAA,GAAA;;QAqBI,IAAS,CAAA,SAAA,GAAG,KAAK,EAAa,CAAC;QAC/B,IAAiB,CAAA,iBAAA,GAAG,KAAK,EAAoB,CAAC;QAC9C,IAAU,CAAA,UAAA,GAAG,KAAK,EAAU,CAAC;AACpB,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,eAAe,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAoC,aAAa,CAAC,CAAC;AAC/E,KAAA;8GANY,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAPlB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,oBAAoB,CAAC;AACtD,aAAA;SACJ,EC3BL,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,6fAeA,mFDGc,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAWjB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApBhC,SAAS;iCACM,IAAI,EAAA,OAAA,EAQP,CAAC,gBAAgB,CAAC,EAAA,QAAA,EACjB,iBAAiB,EAEV,eAAA,EAAA,uBAAuB,CAAC,MAAM,EACpC,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,0BAA0B,CAAC;AACtD,yBAAA;AACJ,qBAAA,EAAA,QAAA,EAAA,6fAAA,EAAA,MAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,CAAA;;;AE3BL;;AAEG;;;;"}
@@ -24,15 +24,15 @@ class GroupLabelComponent extends ComponentReference {
24
24
  return '';
25
25
  });
26
26
  }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: GroupLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: GroupLabelComponent, isStandalone: true, selector: "kc-group-label", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: GroupLabelComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
28
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: GroupLabelComponent, isStandalone: true, selector: "kc-group-label", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, groupName: { classPropertyName: "groupName", publicName: "groupName", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
29
29
  {
30
30
  provide: ComponentReference,
31
31
  useExisting: forwardRef(() => GroupLabelComponent)
32
32
  }
33
33
  ], usesInheritance: true, ngImport: i0, template: "@let attr = attribute();\n@let groupName = groupNameRef();\n@if (attr && groupName !== '') {\n <div\n [kcClass]=\"'kcFormGroupClass'\"\n [kcAttributes]=\"attr.group?.html5DataAnnotations\"\n >\n @let groupDisplayHeader = attr.group?.displayHeader ?? '';\n @let groupHeaderText = groupDisplayHeader !== '' ? groupDisplayHeader : (attr.group?.name ?? '');\n <div [kcClass]=\"'kcContentWrapperClass'\">\n <label\n [id]=\"'header-' + attr.group?.name\"\n [kcClass]=\"'kcFormGroupHeader'\"\n >\n {{ i18n.advancedMsgStr(groupHeaderText) }}\n </label>\n </div>\n @let groupDisplayDescription = attr.group?.displayDescription ?? '';\n @if (groupDisplayDescription !== '') {\n <div [kcClass]=\"'kcLabelWrapperClass'\">\n <label\n [id]=\"'description-' + attr.group?.name\"\n [kcClass]=\"'kcLabelClass'\"\n >\n {{ i18n.advancedMsgStr(groupDisplayDescription) }}\n </label>\n </div>\n }\n </div>\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "directive", type: AttributesDirective, selector: "[kcAttributes]", inputs: ["kcAttributes"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
34
34
  }
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: GroupLabelComponent, decorators: [{
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: GroupLabelComponent, decorators: [{
36
36
  type: Component,
37
37
  args: [{ standalone: true, imports: [KcClassDirective, AttributesDirective], selector: 'kc-group-label', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
38
38
  {
@@ -27,22 +27,22 @@ class InputFieldByTypeComponent extends ComponentReference {
27
27
  };
28
28
  });
29
29
  }
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputFieldByTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: InputFieldByTypeComponent, isStandalone: true, selector: "kc-input-field-by-type", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, valueOrValues: { classPropertyName: "valueOrValues", publicName: "valueOrValues", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, providers: [
30
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputFieldByTypeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
31
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: InputFieldByTypeComponent, isStandalone: true, selector: "kc-input-field-by-type", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, valueOrValues: { classPropertyName: "valueOrValues", publicName: "valueOrValues", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, providers: [
32
32
  {
33
33
  provide: ComponentReference,
34
34
  useExisting: forwardRef(() => InputFieldByTypeComponent)
35
35
  }
36
- ], usesInheritance: true, ngImport: i0, template: "@let attr = attribute();\n@if (attr) {\n @let type = attr.annotations.inputType;\n @switch (type) {\n @case ('textarea') {\n <kc-textarea-tag\n [attribute]=\"attribute()\"\n [value]=\"$any(valueOrValues())\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-textarea-tag>\n }\n @case (type === 'select' || type === 'multiselect' ? type : '') {\n <kc-select-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-select-tag>\n }\n @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {\n <kc-input-tag-selects\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag-selects>\n }\n @default {\n @let values = valueOrValues();\n <!-- if valueOrValues is string skip -->\n @if (values && (values | toArray: true).length) {\n @for (value of values; track value; let i = $index) {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [fieldIndex]=\"i\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n }\n } @else {\n @if (attr.name === 'password' || attr.name === 'password-confirm') {\n <kc-password-wrapper [passwordInputId]=\"attr.name\">\n <kc-input-tag\n [attribute]=\"attributePassword()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n </kc-password-wrapper>\n } @else {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n }\n }\n }\n }\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "pipe", type: ToArrayPipe, name: "toArray" }, { kind: "component", type: TextareaTagComponent, selector: "kc-textarea-tag", inputs: ["attribute", "value", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: SelectTagComponent, selector: "kc-select-tag", inputs: ["attribute", "valueOrValues", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: InputTagSelectsComponent, selector: "kc-input-tag-selects", inputs: ["attribute", "valueOrValues", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: InputTagComponent, selector: "kc-input-tag", inputs: ["attribute", "valueOrValues", "fieldIndex", "values", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: PasswordWrapperComponent, selector: "kc-password-wrapper", inputs: ["passwordInputId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
36
+ ], usesInheritance: true, ngImport: i0, template: "@let attr = attribute();\n@if (attr) {\n @let type = attr.annotations.inputType;\n @switch (type) {\n @case ('textarea') {\n <kc-textarea-tag\n [attribute]=\"attribute()\"\n [value]=\"$any(valueOrValues())\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @case (type === 'select' || type === 'multiselect' ? type : '') {\n <kc-select-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {\n <kc-input-tag-selects\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @default {\n @let values = valueOrValues();\n <!-- if valueOrValues is string skip -->\n @if (values && (values | toArray: true).length) {\n @for (value of values; track value; let i = $index) {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [fieldIndex]=\"i\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n } @else {\n @if (attr.name === 'password' || attr.name === 'password-confirm') {\n <kc-password-wrapper [passwordInputId]=\"attr.name\">\n <kc-input-tag\n [attribute]=\"attributePassword()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n </kc-password-wrapper>\n } @else {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n }\n }\n }\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "pipe", type: ToArrayPipe, name: "toArray" }, { kind: "component", type: TextareaTagComponent, selector: "kc-textarea-tag", inputs: ["attribute", "value", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: SelectTagComponent, selector: "kc-select-tag", inputs: ["attribute", "valueOrValues", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: InputTagSelectsComponent, selector: "kc-input-tag-selects", inputs: ["attribute", "valueOrValues", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: InputTagComponent, selector: "kc-input-tag", inputs: ["attribute", "valueOrValues", "fieldIndex", "values", "displayableErrors"], outputs: ["dispatchFormAction"] }, { kind: "component", type: PasswordWrapperComponent, selector: "kc-password-wrapper", inputs: ["passwordInputId"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
37
37
  }
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputFieldByTypeComponent, decorators: [{
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputFieldByTypeComponent, decorators: [{
39
39
  type: Component,
40
40
  args: [{ standalone: true, imports: [ToArrayPipe, TextareaTagComponent, SelectTagComponent, InputTagSelectsComponent, InputTagComponent, PasswordWrapperComponent], selector: 'kc-input-field-by-type', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
41
41
  {
42
42
  provide: ComponentReference,
43
43
  useExisting: forwardRef(() => InputFieldByTypeComponent)
44
44
  }
45
- ], template: "@let attr = attribute();\n@if (attr) {\n @let type = attr.annotations.inputType;\n @switch (type) {\n @case ('textarea') {\n <kc-textarea-tag\n [attribute]=\"attribute()\"\n [value]=\"$any(valueOrValues())\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-textarea-tag>\n }\n @case (type === 'select' || type === 'multiselect' ? type : '') {\n <kc-select-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-select-tag>\n }\n @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {\n <kc-input-tag-selects\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag-selects>\n }\n @default {\n @let values = valueOrValues();\n <!-- if valueOrValues is string skip -->\n @if (values && (values | toArray: true).length) {\n @for (value of values; track value; let i = $index) {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [fieldIndex]=\"i\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n }\n } @else {\n @if (attr.name === 'password' || attr.name === 'password-confirm') {\n <kc-password-wrapper [passwordInputId]=\"attr.name\">\n <kc-input-tag\n [attribute]=\"attributePassword()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n </kc-password-wrapper>\n } @else {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n }\n }\n }\n }\n}\n", styles: [":host{display:contents}\n"] }]
45
+ ], template: "@let attr = attribute();\n@if (attr) {\n @let type = attr.annotations.inputType;\n @switch (type) {\n @case ('textarea') {\n <kc-textarea-tag\n [attribute]=\"attribute()\"\n [value]=\"$any(valueOrValues())\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @case (type === 'select' || type === 'multiselect' ? type : '') {\n <kc-select-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {\n <kc-input-tag-selects\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @default {\n @let values = valueOrValues();\n <!-- if valueOrValues is string skip -->\n @if (values && (values | toArray: true).length) {\n @for (value of values; track value; let i = $index) {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [fieldIndex]=\"i\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n } @else {\n @if (attr.name === 'password' || attr.name === 'password-confirm') {\n <kc-password-wrapper [passwordInputId]=\"attr.name\">\n <kc-input-tag\n [attribute]=\"attributePassword()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n </kc-password-wrapper>\n } @else {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n }\n }\n }\n}\n", styles: [":host{display:contents}\n"] }]
46
46
  }] });
47
47
 
48
48
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-login-components-input-field-by-type.mjs","sources":["../../src/login/components/input-field-by-type/input-field-by-type.component.ts","../../src/login/components/input-field-by-type/input-field-by-type.component.html","../../src/login/components/input-field-by-type/keycloakify-angular-login-components-input-field-by-type.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, output } from '@angular/core';\nimport { ToArrayPipe } from '@keycloakify/angular/lib/pipes/to-array';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { InputTagComponent } from '@keycloakify/angular/login/components/input-tag';\nimport { InputTagSelectsComponent } from '@keycloakify/angular/login/components/input-tag-selects';\nimport { PasswordWrapperComponent } from '@keycloakify/angular/login/components/password-wrapper';\nimport { SelectTagComponent } from '@keycloakify/angular/login/components/select-tag';\nimport { TextareaTagComponent } from '@keycloakify/angular/login/components/textarea-tag';\nimport { FormAction, FormFieldError } from '@keycloakify/angular/login/services/user-profile-form';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { type Attribute } from 'keycloakify/login/KcContext';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n standalone: true,\n styles: [\n `\n :host {\n display: contents;\n }\n `\n ],\n imports: [ToArrayPipe, TextareaTagComponent, SelectTagComponent, InputTagSelectsComponent, InputTagComponent, PasswordWrapperComponent],\n selector: 'kc-input-field-by-type',\n templateUrl: 'input-field-by-type.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => InputFieldByTypeComponent)\n }\n ]\n})\nexport class InputFieldByTypeComponent extends ComponentReference {\n attribute = input<Attribute>();\n valueOrValues = input<string | string[]>();\n displayableErrors = input<FormFieldError[]>();\n dispatchFormAction = output<FormAction>();\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n attributePassword = computed<Attribute>(() => {\n const attribute: Attribute = this.attribute() ?? ({} as Attribute);\n return {\n ...attribute,\n annotations: { ...(attribute.annotations ?? {}), inputType: 'password' }\n };\n });\n}\n","@let attr = attribute();\n@if (attr) {\n @let type = attr.annotations.inputType;\n @switch (type) {\n @case ('textarea') {\n <kc-textarea-tag\n [attribute]=\"attribute()\"\n [value]=\"$any(valueOrValues())\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-textarea-tag>\n }\n @case (type === 'select' || type === 'multiselect' ? type : '') {\n <kc-select-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-select-tag>\n }\n @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {\n <kc-input-tag-selects\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag-selects>\n }\n @default {\n @let values = valueOrValues();\n <!-- if valueOrValues is string skip -->\n @if (values && (values | toArray: true).length) {\n @for (value of values; track value; let i = $index) {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [fieldIndex]=\"i\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n }\n } @else {\n @if (attr.name === 'password' || attr.name === 'password-confirm') {\n <kc-password-wrapper [passwordInputId]=\"attr.name\">\n <kc-input-tag\n [attribute]=\"attributePassword()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n </kc-password-wrapper>\n } @else {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-input-tag>\n }\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keycloakify-angular-login-components-input-field-by-type.mjs","sources":["../../src/login/components/input-field-by-type/input-field-by-type.component.ts","../../src/login/components/input-field-by-type/input-field-by-type.component.html","../../src/login/components/input-field-by-type/keycloakify-angular-login-components-input-field-by-type.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, forwardRef, inject, input, output } from '@angular/core';\nimport { ToArrayPipe } from '@keycloakify/angular/lib/pipes/to-array';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';\nimport { InputTagComponent } from '@keycloakify/angular/login/components/input-tag';\nimport { InputTagSelectsComponent } from '@keycloakify/angular/login/components/input-tag-selects';\nimport { PasswordWrapperComponent } from '@keycloakify/angular/login/components/password-wrapper';\nimport { SelectTagComponent } from '@keycloakify/angular/login/components/select-tag';\nimport { TextareaTagComponent } from '@keycloakify/angular/login/components/textarea-tag';\nimport { FormAction, FormFieldError } from '@keycloakify/angular/login/services/user-profile-form';\nimport { LOGIN_CLASSES } from '@keycloakify/angular/login/tokens/classes';\nimport { type Attribute } from 'keycloakify/login/KcContext';\nimport type { ClassKey } from 'keycloakify/login/lib/kcClsx';\n\n@Component({\n standalone: true,\n styles: [\n `\n :host {\n display: contents;\n }\n `\n ],\n imports: [ToArrayPipe, TextareaTagComponent, SelectTagComponent, InputTagSelectsComponent, InputTagComponent, PasswordWrapperComponent],\n selector: 'kc-input-field-by-type',\n templateUrl: 'input-field-by-type.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => InputFieldByTypeComponent)\n }\n ]\n})\nexport class InputFieldByTypeComponent extends ComponentReference {\n attribute = input<Attribute>();\n valueOrValues = input<string | string[]>();\n displayableErrors = input<FormFieldError[]>();\n dispatchFormAction = output<FormAction>();\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(LOGIN_CLASSES);\n\n attributePassword = computed<Attribute>(() => {\n const attribute: Attribute = this.attribute() ?? ({} as Attribute);\n return {\n ...attribute,\n annotations: { ...(attribute.annotations ?? {}), inputType: 'password' }\n };\n });\n}\n","@let attr = attribute();\n@if (attr) {\n @let type = attr.annotations.inputType;\n @switch (type) {\n @case ('textarea') {\n <kc-textarea-tag\n [attribute]=\"attribute()\"\n [value]=\"$any(valueOrValues())\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @case (type === 'select' || type === 'multiselect' ? type : '') {\n <kc-select-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @case (type === 'select-radiobuttons' || type === 'multiselect-checkboxes' ? type : '') {\n <kc-input-tag-selects\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n @default {\n @let values = valueOrValues();\n <!-- if valueOrValues is string skip -->\n @if (values && (values | toArray: true).length) {\n @for (value of values; track value; let i = $index) {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [fieldIndex]=\"i\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n } @else {\n @if (attr.name === 'password' || attr.name === 'password-confirm') {\n <kc-password-wrapper [passwordInputId]=\"attr.name\">\n <kc-input-tag\n [attribute]=\"attributePassword()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n </kc-password-wrapper>\n } @else {\n <kc-input-tag\n [attribute]=\"attribute()\"\n [valueOrValues]=\"valueOrValues()\"\n [displayableErrors]=\"displayableErrors()\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n }\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -98,15 +98,15 @@ class InputTagSelectsComponent extends ComponentReference {
98
98
  fieldIndex: undefined
99
99
  });
100
100
  }
101
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTagSelectsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: InputTagSelectsComponent, isStandalone: true, selector: "kc-input-tag-selects", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, valueOrValues: { classPropertyName: "valueOrValues", publicName: "valueOrValues", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, providers: [
101
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputTagSelectsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: InputTagSelectsComponent, isStandalone: true, selector: "kc-input-tag-selects", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, valueOrValues: { classPropertyName: "valueOrValues", publicName: "valueOrValues", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, providers: [
103
103
  {
104
104
  provide: ComponentReference,
105
105
  useExisting: forwardRef(() => InputTagSelectsComponent)
106
106
  }
107
107
  ], usesInheritance: true, ngImport: i0, template: "@let inputType = context()?.inputType;\n@let classInput = context()?.classInput;\n@let classLabel = context()?.classLabel;\n@let classDiv = context()?.classDiv;\n@let attr = attribute();\n@if (attr) {\n @for (option of options(); track option) {\n <div [kcClass]=\"classDiv\">\n <input\n [type]=\"inputType\"\n [id]=\"attr.name + '-' + option\"\n [name]=\"attr.name\"\n [value]=\"option\"\n [kcClass]=\"classInput\"\n [attr.aria-invalid]=\"!!displayableErrors()?.length\"\n [disabled]=\"attr.readOnly\"\n [checked]=\"checked(option)\"\n (change)=\"onChange($event, option)\"\n (blur)=\"onBlur()\"\n />\n <label\n [for]=\"attr.name + '-' + option\"\n [kcClass]=\"[classLabel!, attr.readOnly ? 'kcInputClassRadioCheckboxLabelDisabled' : $any('')]\"\n >\n {{ i18n.advancedMsgStr(option) }}\n </label>\n </div>\n }\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
108
108
  }
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTagSelectsComponent, decorators: [{
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputTagSelectsComponent, decorators: [{
110
110
  type: Component,
111
111
  args: [{ standalone: true, imports: [KcClassDirective], selector: 'kc-input-tag-selects', changeDetection: ChangeDetectionStrategy.OnPush, providers: [
112
112
  {
@@ -63,15 +63,15 @@ class InputTagComponent extends ComponentReference {
63
63
  fieldIndex: this.fieldIndex()
64
64
  });
65
65
  }
66
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTagComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: InputTagComponent, isStandalone: true, selector: "kc-input-tag", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, valueOrValues: { classPropertyName: "valueOrValues", publicName: "valueOrValues", isSignal: true, isRequired: false, transformFunction: null }, fieldIndex: { classPropertyName: "fieldIndex", publicName: "fieldIndex", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, providers: [
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputTagComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.7", type: InputTagComponent, isStandalone: true, selector: "kc-input-tag", inputs: { attribute: { classPropertyName: "attribute", publicName: "attribute", isSignal: true, isRequired: false, transformFunction: null }, valueOrValues: { classPropertyName: "valueOrValues", publicName: "valueOrValues", isSignal: true, isRequired: false, transformFunction: null }, fieldIndex: { classPropertyName: "fieldIndex", publicName: "fieldIndex", isSignal: true, isRequired: false, transformFunction: null }, values: { classPropertyName: "values", publicName: "values", isSignal: true, isRequired: false, transformFunction: null }, displayableErrors: { classPropertyName: "displayableErrors", publicName: "displayableErrors", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dispatchFormAction: "dispatchFormAction" }, providers: [
68
68
  {
69
69
  provide: ComponentReference,
70
70
  useExisting: forwardRef(() => InputTagComponent)
71
71
  }
72
- ], usesInheritance: true, ngImport: i0, template: "@let attr = attribute();\n@let index = fieldIndex();\n@if (attr) {\n <input\n [type]=\"attr.annotations.inputType | inputType\"\n [id]=\"attr.name\"\n [name]=\"attr.name\"\n [value]=\"value()\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"index && displayableErrors()?.[index] !== undefined\"\n [disabled]=\"attr.readOnly\"\n [autocomplete]=\"attr.autocomplete\"\n [placeholder]=\"i18n.advancedMsgStr(attr.annotations.inputTypePlaceholder ?? '')\"\n [attr.pattern]=\"attr.annotations.inputTypePattern\"\n [attr.size]=\"\n !attr.annotations.inputTypeSize\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber) === 0\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber)\n \"\n [attr.maxlength]=\"!attr.annotations.inputTypeMaxlength ? undefined : (attr.annotations.inputTypeMaxlength | toNumber)\"\n [attr.minlength]=\"!attr.annotations.inputTypeMinlength ? undefined : (attr.annotations.inputTypeMinlength | toNumber)\"\n [attr.max]=\"attr.annotations.inputTypeMax\"\n [attr.min]=\"attr.annotations.inputTypeMin\"\n [attr.step]=\"attr.annotations.inputTypeStep\"\n [kcAttributes]=\"attr.html5DataAnnotations\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur()\"\n />\n @if (index !== undefined) {\n @let values = valueOrValues() ?? [] | toArray;\n <kc-field-errors\n [attribute]=\"attr\"\n [displayableErrors]=\"displayableErrors()\"\n [fieldIndex]=\"index\"\n ></kc-field-errors>\n <kc-add-remove-buttons-multi-valued-attribute\n [attribute]=\"attr\"\n [values]=\"values\"\n [fieldIndex]=\"index\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-add-remove-buttons-multi-valued-attribute>\n }\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "pipe", type: InputTypePipe, name: "inputType" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: ToNumberPipe, name: "toNumber" }, { kind: "directive", type: AttributesDirective, selector: "[kcAttributes]", inputs: ["kcAttributes"] }, { kind: "pipe", type: ToArrayPipe, name: "toArray" }, { kind: "component", type: FieldErrorsComponent, selector: "kc-field-errors", inputs: ["attribute", "displayableErrors", "fieldIndex"] }, { kind: "component", type: AddRemoveButtonsMultiValuedAttributeComponent, selector: "kc-add-remove-buttons-multi-valued-attribute", inputs: ["attribute", "values", "fieldIndex"], outputs: ["dispatchFormAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
72
+ ], usesInheritance: true, ngImport: i0, template: "@let attr = attribute();\n@let index = fieldIndex();\n@if (attr) {\n <input\n [type]=\"attr.annotations.inputType | inputType\"\n [id]=\"attr.name\"\n [name]=\"attr.name\"\n [value]=\"value()\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"index && displayableErrors()?.[index] !== undefined\"\n [disabled]=\"attr.readOnly\"\n [autocomplete]=\"attr.autocomplete\"\n [placeholder]=\"i18n.advancedMsgStr(attr.annotations.inputTypePlaceholder ?? '')\"\n [attr.pattern]=\"attr.annotations.inputTypePattern\"\n [attr.size]=\"\n !attr.annotations.inputTypeSize\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber) === 0\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber)\n \"\n [attr.maxlength]=\"!attr.annotations.inputTypeMaxlength ? undefined : (attr.annotations.inputTypeMaxlength | toNumber)\"\n [attr.minlength]=\"!attr.annotations.inputTypeMinlength ? undefined : (attr.annotations.inputTypeMinlength | toNumber)\"\n [attr.max]=\"attr.annotations.inputTypeMax\"\n [attr.min]=\"attr.annotations.inputTypeMin\"\n [attr.step]=\"attr.annotations.inputTypeStep\"\n [kcAttributes]=\"attr.html5DataAnnotations\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur()\"\n />\n @if (index !== undefined) {\n @let values = valueOrValues() ?? [] | toArray;\n <kc-field-errors\n [attribute]=\"attr\"\n [displayableErrors]=\"displayableErrors()\"\n [fieldIndex]=\"index\"\n />\n <kc-add-remove-buttons-multi-valued-attribute\n [attribute]=\"attr\"\n [values]=\"values\"\n [fieldIndex]=\"index\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n}\n", styles: [":host{display:contents}\n"], dependencies: [{ kind: "pipe", type: InputTypePipe, name: "inputType" }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: ToNumberPipe, name: "toNumber" }, { kind: "directive", type: AttributesDirective, selector: "[kcAttributes]", inputs: ["kcAttributes"] }, { kind: "pipe", type: ToArrayPipe, name: "toArray" }, { kind: "component", type: FieldErrorsComponent, selector: "kc-field-errors", inputs: ["attribute", "displayableErrors", "fieldIndex"] }, { kind: "component", type: AddRemoveButtonsMultiValuedAttributeComponent, selector: "kc-add-remove-buttons-multi-valued-attribute", inputs: ["attribute", "values", "fieldIndex"], outputs: ["dispatchFormAction"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
73
73
  }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: InputTagComponent, decorators: [{
74
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.7", ngImport: i0, type: InputTagComponent, decorators: [{
75
75
  type: Component,
76
76
  args: [{ standalone: true, imports: [
77
77
  InputTypePipe,
@@ -86,7 +86,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
86
86
  provide: ComponentReference,
87
87
  useExisting: forwardRef(() => InputTagComponent)
88
88
  }
89
- ], template: "@let attr = attribute();\n@let index = fieldIndex();\n@if (attr) {\n <input\n [type]=\"attr.annotations.inputType | inputType\"\n [id]=\"attr.name\"\n [name]=\"attr.name\"\n [value]=\"value()\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"index && displayableErrors()?.[index] !== undefined\"\n [disabled]=\"attr.readOnly\"\n [autocomplete]=\"attr.autocomplete\"\n [placeholder]=\"i18n.advancedMsgStr(attr.annotations.inputTypePlaceholder ?? '')\"\n [attr.pattern]=\"attr.annotations.inputTypePattern\"\n [attr.size]=\"\n !attr.annotations.inputTypeSize\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber) === 0\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber)\n \"\n [attr.maxlength]=\"!attr.annotations.inputTypeMaxlength ? undefined : (attr.annotations.inputTypeMaxlength | toNumber)\"\n [attr.minlength]=\"!attr.annotations.inputTypeMinlength ? undefined : (attr.annotations.inputTypeMinlength | toNumber)\"\n [attr.max]=\"attr.annotations.inputTypeMax\"\n [attr.min]=\"attr.annotations.inputTypeMin\"\n [attr.step]=\"attr.annotations.inputTypeStep\"\n [kcAttributes]=\"attr.html5DataAnnotations\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur()\"\n />\n @if (index !== undefined) {\n @let values = valueOrValues() ?? [] | toArray;\n <kc-field-errors\n [attribute]=\"attr\"\n [displayableErrors]=\"displayableErrors()\"\n [fieldIndex]=\"index\"\n ></kc-field-errors>\n <kc-add-remove-buttons-multi-valued-attribute\n [attribute]=\"attr\"\n [values]=\"values\"\n [fieldIndex]=\"index\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n ></kc-add-remove-buttons-multi-valued-attribute>\n }\n}\n", styles: [":host{display:contents}\n"] }]
89
+ ], template: "@let attr = attribute();\n@let index = fieldIndex();\n@if (attr) {\n <input\n [type]=\"attr.annotations.inputType | inputType\"\n [id]=\"attr.name\"\n [name]=\"attr.name\"\n [value]=\"value()\"\n [kcClass]=\"'kcInputClass'\"\n [attr.aria-invalid]=\"index && displayableErrors()?.[index] !== undefined\"\n [disabled]=\"attr.readOnly\"\n [autocomplete]=\"attr.autocomplete\"\n [placeholder]=\"i18n.advancedMsgStr(attr.annotations.inputTypePlaceholder ?? '')\"\n [attr.pattern]=\"attr.annotations.inputTypePattern\"\n [attr.size]=\"\n !attr.annotations.inputTypeSize\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber) === 0\n ? undefined\n : (attr.annotations.inputTypeSize | toNumber)\n \"\n [attr.maxlength]=\"!attr.annotations.inputTypeMaxlength ? undefined : (attr.annotations.inputTypeMaxlength | toNumber)\"\n [attr.minlength]=\"!attr.annotations.inputTypeMinlength ? undefined : (attr.annotations.inputTypeMinlength | toNumber)\"\n [attr.max]=\"attr.annotations.inputTypeMax\"\n [attr.min]=\"attr.annotations.inputTypeMin\"\n [attr.step]=\"attr.annotations.inputTypeStep\"\n [kcAttributes]=\"attr.html5DataAnnotations\"\n (change)=\"onChange($event)\"\n (blur)=\"onBlur()\"\n />\n @if (index !== undefined) {\n @let values = valueOrValues() ?? [] | toArray;\n <kc-field-errors\n [attribute]=\"attr\"\n [displayableErrors]=\"displayableErrors()\"\n [fieldIndex]=\"index\"\n />\n <kc-add-remove-buttons-multi-valued-attribute\n [attribute]=\"attr\"\n [values]=\"values\"\n [fieldIndex]=\"index\"\n (dispatchFormAction)=\"dispatchFormAction.emit($event)\"\n />\n }\n}\n", styles: [":host{display:contents}\n"] }]
90
90
  }] });
91
91
 
92
92
  /**