@keycloakify/angular 0.0.1-rc.23 → 0.0.1-rc.25

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 (118) hide show
  1. package/README.md +2 -0
  2. package/account/providers/keycloakify-angular/keycloakify-angular.providers.d.ts +2 -0
  3. package/bin/338.index.js +15 -1
  4. package/bin/758.index.js +15 -1
  5. package/bin/925.index.js +13 -2
  6. package/esm2022/account/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -4
  7. package/esm2022/login/containers/template/template.component.mjs +11 -5
  8. package/esm2022/login/login.mjs +1 -1
  9. package/esm2022/login/pages/code/code.component.mjs +3 -3
  10. package/esm2022/login/pages/delete-credential/delete-credential.component.mjs +3 -3
  11. package/esm2022/login/pages/error/error.component.mjs +3 -3
  12. package/esm2022/login/pages/idp-review-user-profile/idp-review-user-profile.component.mjs +7 -7
  13. package/esm2022/login/pages/info/info.component.mjs +3 -3
  14. package/esm2022/login/pages/login/login.component.mjs +3 -3
  15. package/esm2022/login/pages/login-idp-link-email/login-idp-link-email.component.mjs +3 -3
  16. package/esm2022/login/pages/login-oauth-grant/login-oauth-grant.component.mjs +3 -3
  17. package/esm2022/login/pages/login-page-expired/login-page-expired.component.mjs +3 -3
  18. package/esm2022/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.mjs +3 -3
  19. package/esm2022/login/pages/login-password/login-password.component.mjs +3 -3
  20. package/esm2022/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.mjs +3 -3
  21. package/esm2022/login/pages/login-reset-otp/login-reset-otp.component.mjs +3 -3
  22. package/esm2022/login/pages/login-reset-password/login-reset-password.component.mjs +3 -3
  23. package/esm2022/login/pages/login-update-profile/login-update-profile.component.mjs +7 -7
  24. package/esm2022/login/pages/login-username/login-username.component.mjs +3 -3
  25. package/esm2022/login/pages/login-verify-email/login-verify-email.component.mjs +3 -3
  26. package/esm2022/login/pages/register/register.component.mjs +7 -7
  27. package/esm2022/login/pages/select-authenticator/select-authenticator.component.mjs +3 -3
  28. package/esm2022/login/pages/update-email/update-email.component.mjs +7 -7
  29. package/esm2022/login/pages/webauthn-authenticate/webauthn-authenticate.component.mjs +3 -3
  30. package/esm2022/login/providers/keycloakify-angular/keycloakify-angular.providers.mjs +2 -4
  31. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs +1 -3
  32. package/fesm2022/keycloakify-angular-account-providers-keycloakify-angular.mjs.map +1 -1
  33. package/fesm2022/keycloakify-angular-login-containers-template.mjs +10 -4
  34. package/fesm2022/keycloakify-angular-login-containers-template.mjs.map +1 -1
  35. package/fesm2022/keycloakify-angular-login-pages-code.mjs +2 -2
  36. package/fesm2022/keycloakify-angular-login-pages-code.mjs.map +1 -1
  37. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +2 -2
  38. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs.map +1 -1
  39. package/fesm2022/keycloakify-angular-login-pages-error.mjs +2 -2
  40. package/fesm2022/keycloakify-angular-login-pages-error.mjs.map +1 -1
  41. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +6 -6
  42. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs.map +1 -1
  43. package/fesm2022/keycloakify-angular-login-pages-info.mjs +2 -2
  44. package/fesm2022/keycloakify-angular-login-pages-info.mjs.map +1 -1
  45. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +2 -2
  46. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs.map +1 -1
  47. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +2 -2
  48. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs.map +1 -1
  49. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +2 -2
  50. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs.map +1 -1
  51. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +2 -2
  52. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs.map +1 -1
  53. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs +2 -2
  54. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs.map +1 -1
  55. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +2 -2
  56. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs.map +1 -1
  57. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +2 -2
  58. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs.map +1 -1
  59. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +2 -2
  60. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs.map +1 -1
  61. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +6 -6
  62. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs.map +1 -1
  63. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs +2 -2
  64. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs.map +1 -1
  65. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +2 -2
  66. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs.map +1 -1
  67. package/fesm2022/keycloakify-angular-login-pages-login.mjs +2 -2
  68. package/fesm2022/keycloakify-angular-login-pages-login.mjs.map +1 -1
  69. package/fesm2022/keycloakify-angular-login-pages-register.mjs +7 -7
  70. package/fesm2022/keycloakify-angular-login-pages-register.mjs.map +1 -1
  71. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +2 -2
  72. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs.map +1 -1
  73. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs +6 -6
  74. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs.map +1 -1
  75. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +2 -2
  76. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs.map +1 -1
  77. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs +1 -3
  78. package/fesm2022/keycloakify-angular-login-providers-keycloakify-angular.mjs.map +1 -1
  79. package/login/containers/template/template.component.d.ts +4 -2
  80. package/login/login.d.ts +1 -0
  81. package/login/pages/idp-review-user-profile/idp-review-user-profile.component.d.ts +4 -2
  82. package/login/pages/login-update-profile/login-update-profile.component.d.ts +4 -2
  83. package/login/pages/register/register.component.d.ts +4 -2
  84. package/login/pages/update-email/update-email.component.d.ts +4 -2
  85. package/login/providers/keycloakify-angular/keycloakify-angular.providers.d.ts +2 -0
  86. package/package.json +1 -1
  87. package/src/account/providers/keycloakify-angular/keycloakify-angular.providers.ts +2 -3
  88. package/src/bin/eject-page.ts +21 -3
  89. package/src/bin/update-kc-gen.ts +15 -1
  90. package/src/login/containers/template/template.component.html +1 -0
  91. package/src/login/containers/template/template.component.ts +6 -0
  92. package/src/login/login.ts +1 -0
  93. package/src/login/pages/code/code.component.html +1 -0
  94. package/src/login/pages/delete-credential/delete-credential.component.html +26 -26
  95. package/src/login/pages/error/error.component.html +16 -17
  96. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.html +1 -1
  97. package/src/login/pages/idp-review-user-profile/idp-review-user-profile.component.ts +4 -3
  98. package/src/login/pages/info/info.component.html +2 -2
  99. package/src/login/pages/login/login.component.html +3 -1
  100. package/src/login/pages/login-idp-link-email/login-idp-link-email.component.html +2 -0
  101. package/src/login/pages/login-oauth-grant/login-oauth-grant.component.html +1 -0
  102. package/src/login/pages/login-page-expired/login-page-expired.component.html +23 -24
  103. package/src/login/pages/login-passkeys-conditional-authenticate/login-passkeys-conditional-authenticate.component.html +166 -165
  104. package/src/login/pages/login-password/login-password.component.html +68 -69
  105. package/src/login/pages/login-recovery-authn-code-input/login-recovery-authn-code-input.component.html +55 -57
  106. package/src/login/pages/login-reset-otp/login-reset-otp.component.html +48 -49
  107. package/src/login/pages/login-reset-password/login-reset-password.component.html +1 -0
  108. package/src/login/pages/login-update-profile/login-update-profile.component.html +1 -1
  109. package/src/login/pages/login-update-profile/login-update-profile.component.ts +3 -2
  110. package/src/login/pages/login-username/login-username.component.html +5 -3
  111. package/src/login/pages/login-verify-email/login-verify-email.component.html +1 -1
  112. package/src/login/pages/register/register.component.html +2 -2
  113. package/src/login/pages/register/register.component.ts +3 -2
  114. package/src/login/pages/select-authenticator/select-authenticator.component.html +32 -32
  115. package/src/login/pages/update-email/update-email.component.html +1 -1
  116. package/src/login/pages/update-email/update-email.component.ts +3 -2
  117. package/src/login/pages/webauthn-authenticate/webauthn-authenticate.component.html +1 -0
  118. package/src/login/providers/keycloakify-angular/keycloakify-angular.providers.ts +2 -3
@@ -61,14 +61,23 @@ export async function command(params: { buildContext: BuildContext }) {
61
61
  console.log(chalk.cyan('Select the page you want to customize:'));
62
62
 
63
63
  const templateValue = 'template.ftl (Layout common to every page)';
64
+ const userProfileFormFieldsValue =
65
+ 'user-profile-commons.ftl (Renders the form of the register.ftl, login-update-profile.ftl, update-email.ftl and idp-review-user-profile.ftl)';
64
66
 
65
67
  const { value: pageIdOrComponent } = await cliSelect<
66
- LoginThemePageId | AccountThemePageId | typeof templateValue
68
+ | LoginThemePageId
69
+ | AccountThemePageId
70
+ | typeof templateValue
71
+ | typeof userProfileFormFieldsValue
67
72
  >({
68
73
  values: (() => {
69
74
  switch (themeType) {
70
75
  case 'login':
71
- return [templateValue, ...LOGIN_THEME_PAGE_IDS];
76
+ return [
77
+ templateValue,
78
+ userProfileFormFieldsValue,
79
+ ...LOGIN_THEME_PAGE_IDS
80
+ ];
72
81
  case 'account':
73
82
  return [templateValue, ...ACCOUNT_THEME_PAGE_IDS];
74
83
  }
@@ -85,6 +94,10 @@ export async function command(params: { buildContext: BuildContext }) {
85
94
  return pathJoin('containers', 'template');
86
95
  }
87
96
 
97
+ if (pageIdOrComponent === userProfileFormFieldsValue) {
98
+ return pathJoin('components', 'user-profile-form-fields');
99
+ }
100
+
88
101
  return pathJoin('pages', pageIdOrComponent.replace(/\.ftl$/, ''));
89
102
  })();
90
103
 
@@ -213,7 +226,10 @@ export async function command(params: { buildContext: BuildContext }) {
213
226
  }
214
227
 
215
228
  edit_KcPage: {
216
- if (pageIdOrComponent !== templateValue) {
229
+ if (
230
+ pageIdOrComponent !== templateValue &&
231
+ pageIdOrComponent !== userProfileFormFieldsValue
232
+ ) {
217
233
  break edit_KcPage;
218
234
  }
219
235
 
@@ -281,6 +297,7 @@ export async function command(params: { buildContext: BuildContext }) {
281
297
  `+ return {`,
282
298
  `+ PageComponent: (await import('./${componentDirRelativeToThemeTypePath.split(pathSep).join('/')}')).${kebabCaseToCamelCase(capitalize(pageId).replace(/\.ftl$/, ''))}Component,`,
283
299
  `+ TemplateComponent,`,
300
+ ...(themeType === 'login' ? [`+ UserProfileFormFieldsComponent,`] : []),
284
301
  ...(themeType === 'login' ? [`+ doMakeUserConfirmPassword,`] : []),
285
302
  `+ doUseDefaultCss,`,
286
303
  `+ classes,`,
@@ -290,6 +307,7 @@ export async function command(params: { buildContext: BuildContext }) {
290
307
  ` return {`,
291
308
  ` PageComponent: await getDefaultPageComponent(pageId),`,
292
309
  ` TemplateComponent,`,
310
+ ...(themeType === 'login' ? [` UserProfileFormFieldsComponent,`] : []),
293
311
  ...(themeType === 'login' ? [` doMakeUserConfirmPassword,`] : []),
294
312
  ` doUseDefaultCss,`,
295
313
  ` classes,`,
@@ -88,7 +88,10 @@ export function command(params: { buildContext: BuildContext }) {
88
88
  ` doUseDefaultCss,`,
89
89
  ` classes,`,
90
90
  ...(themeType === 'login'
91
- ? [` doMakeUserConfirmPassword,`]
91
+ ? [
92
+ ` UserProfileFormFieldsComponent,`,
93
+ ` doMakeUserConfirmPassword,`
94
+ ]
92
95
  : []),
93
96
  ` },`,
94
97
  ` ] = await Promise.all([`,
@@ -100,6 +103,7 @@ export function command(params: { buildContext: BuildContext }) {
100
103
  ` const appRef = await bootstrapApplication({`,
101
104
  ` KcRootComponent: TemplateComponent,`,
102
105
  ` kcProvider: provideKeycloakifyAngular({`,
106
+ ` kcContext,`,
103
107
  ` classes,`,
104
108
  ` getI18n,`,
105
109
  ` doUseDefaultCss,`,
@@ -113,6 +117,16 @@ export function command(params: { buildContext: BuildContext }) {
113
117
  ` if ("page" in componentRef.instance) {`,
114
118
  ` componentRef.setInput("page", PageComponent);`,
115
119
  ` }`,
120
+ ...(themeType === 'login'
121
+ ? [
122
+ ` if ("userProfileFormFields" in componentRef.instance) {`,
123
+ ` componentRef.setInput(`,
124
+ ` "userProfileFormFields",`,
125
+ ` UserProfileFormFieldsComponent`,
126
+ ` );`,
127
+ ` }`
128
+ ]
129
+ : []),
116
130
  ` });`,
117
131
  ` }`,
118
132
  ` break;`
@@ -163,6 +163,7 @@
163
163
  @if (!!pageRef) {
164
164
  <kc-dynamic-page-injector
165
165
  [page]="pageRef"
166
+ [userProfileFormFields]="userProfileFormFields()"
166
167
  (componentCreated)="onComponentCreated($event)"
167
168
  />
168
169
  }
@@ -37,14 +37,19 @@ import { Observable } from 'rxjs';
37
37
  })
38
38
  export class DynamicPageInjectorComponent {
39
39
  page = input<Type<unknown>>();
40
+ userProfileFormFields = input<Type<unknown>>();
40
41
  componentCreated = output<object>();
41
42
  #vcr = inject<ViewContainerRef>(ViewContainerRef);
42
43
  constructor() {
43
44
  effect(
44
45
  () => {
45
46
  const page = this.page();
47
+ const userProfileFormFields = this.userProfileFormFields();
46
48
  if (!page) return;
47
49
  const compRef = this.#vcr.createComponent(page);
50
+ if ('userProfileFormFields' in (compRef.instance as object) && userProfileFormFields) {
51
+ compRef.setInput('userProfileFormFields', userProfileFormFields);
52
+ }
48
53
  this.componentCreated.emit(compRef.instance as object);
49
54
  },
50
55
  { allowSignalWrites: true }
@@ -85,6 +90,7 @@ export class TemplateComponent extends ComponentReference implements OnInit {
85
90
  isReadyToRender$: Observable<boolean>;
86
91
 
87
92
  page = input<Type<unknown>>();
93
+ userProfileFormFields = input<Type<unknown>>();
88
94
  headerNode: Signal<TemplateRef<HTMLElement>> | undefined;
89
95
  infoNode: Signal<TemplateRef<HTMLElement>> | undefined;
90
96
  socialProvidersNode: Signal<TemplateRef<HTMLElement>> | undefined;
@@ -10,5 +10,6 @@ export type KcPage = {
10
10
  TemplateComponent: Type<unknown>;
11
11
  doUseDefaultCss: boolean;
12
12
  classes: { [key in ClassKey]?: string };
13
+ UserProfileFormFieldsComponent: Type<unknown>;
13
14
  doMakeUserConfirmPassword: boolean;
14
15
  };
@@ -1,6 +1,7 @@
1
1
  @let code = kcContext.code;
2
2
 
3
3
  <ng-template #headerNode>
4
+ @let code = kcContext.code;
4
5
  @if (code.success) {
5
6
  {{ i18n.msgStr('codeSuccessTitle') }}
6
7
  } @else {
@@ -1,33 +1,33 @@
1
1
  @let url = kcContext.url;
2
2
  @let credentialLabel = kcContext.credentialLabel;
3
3
  <ng-template #headerNode>
4
+ @let credentialLabel = kcContext.credentialLabel;
4
5
  {{ i18n.msgStr('deleteCredentialTitle', credentialLabel) }}
5
6
  </ng-template>
6
- <ng-container content>
7
- <div id="kc-delete-text">
8
- {{ i18n.msgStr('deleteCredentialMessage', credentialLabel) }}
9
- </div>
10
7
 
11
- <form
12
- class="form-actions"
13
- method="post"
14
- [action]="url.loginAction"
15
- >
16
- <input
17
- name="accept"
18
- id="kc-accept"
19
- type="submit"
20
- [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
21
- [value]="i18n.msgStr('doConfirmDelete')"
22
- />
8
+ <div id="kc-delete-text">
9
+ {{ i18n.msgStr('deleteCredentialMessage', credentialLabel) }}
10
+ </div>
23
11
 
24
- <input
25
- name="cancel-aia"
26
- id="kc-decline"
27
- type="submit"
28
- [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
29
- [value]="i18n.msgStr('doCancel')"
30
- />
31
- </form>
32
- <div class="clearfix"></div>
33
- </ng-container>
12
+ <form
13
+ class="form-actions"
14
+ method="post"
15
+ [action]="url.loginAction"
16
+ >
17
+ <input
18
+ name="accept"
19
+ id="kc-accept"
20
+ type="submit"
21
+ [kcClass]="['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']"
22
+ [value]="i18n.msgStr('doConfirmDelete')"
23
+ />
24
+
25
+ <input
26
+ name="cancel-aia"
27
+ id="kc-decline"
28
+ type="submit"
29
+ [kcClass]="['kcButtonClass', 'kcButtonDefaultClass', 'kcButtonLargeClass']"
30
+ [value]="i18n.msgStr('doCancel')"
31
+ />
32
+ </form>
33
+ <div class="clearfix"></div>
@@ -4,20 +4,19 @@
4
4
  <ng-template #headerNode>
5
5
  {{ i18n.msgStr('errorTitle') }}
6
6
  </ng-template>
7
- <ng-container content>
8
- <div id="kc-error-message">
9
- <p
10
- class="instruction"
11
- [innerHTML]="message.summary | kcSanitize: 'html'"
12
- ></p>
13
- @if (!skipLink && !!client?.baseUrl) {
14
- <p>
15
- <a
16
- id="backToApplication"
17
- [href]="client.baseUrl"
18
- [innerHTML]="i18n.msgStr('backToApplication') | kcSanitize: 'html'"
19
- ></a>
20
- </p>
21
- }
22
- </div>
23
- </ng-container>
7
+
8
+ <div id="kc-error-message">
9
+ <p
10
+ class="instruction"
11
+ [innerHTML]="message.summary | kcSanitize: 'html'"
12
+ ></p>
13
+ @if (!skipLink && !!client?.baseUrl) {
14
+ <p>
15
+ <a
16
+ id="backToApplication"
17
+ [href]="client.baseUrl"
18
+ [innerHTML]="i18n.msgStr('backToApplication') | kcSanitize: 'html'"
19
+ ></a>
20
+ </p>
21
+ }
22
+ </div>
@@ -9,7 +9,7 @@
9
9
  [kcClass]="'kcFormClass'"
10
10
  [action]="url.loginAction"
11
11
  >
12
- <kc-user-profile-form-fields />
12
+ <ng-container [ngComponentOutlet]="userProfileFormFields() ?? null" />
13
13
  <div [kcClass]="'kcFormGroupClass'">
14
14
  <div
15
15
  id="kc-form-options"
@@ -1,9 +1,9 @@
1
1
  import { NgComponentOutlet } from '@angular/common';
2
- import { ChangeDetectionStrategy, Component, forwardRef, inject, signal, type TemplateRef, viewChild } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, forwardRef, inject, input, signal, type TemplateRef, Type, viewChild } from '@angular/core';
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';
5
5
  import { ComponentReference } from '@keycloakify/angular/login/classes/component-reference';
6
- import { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields';
6
+ import type { UserProfileFormFieldsComponent } from '@keycloakify/angular/login/components/user-profile-form-fields';
7
7
  import { KcClassDirective } from '@keycloakify/angular/login/directives/kc-class';
8
8
  import type { I18n } from '@keycloakify/angular/login/i18n';
9
9
  import type { KcContext } from '@keycloakify/angular/login/KcContext';
@@ -15,7 +15,7 @@ import type { ClassKey } from 'keycloakify/login/lib/kcClsx';
15
15
 
16
16
  @Component({
17
17
  standalone: true,
18
- imports: [KcClassDirective, NgComponentOutlet, UserProfileFormFieldsComponent],
18
+ imports: [KcClassDirective, NgComponentOutlet],
19
19
  selector: 'kc-idp-review-user-profile',
20
20
  templateUrl: 'idp-review-user-profile.component.html',
21
21
  changeDetection: ChangeDetectionStrategy.OnPush,
@@ -45,6 +45,7 @@ export class IdpReviewUserProfileComponent extends ComponentReference {
45
45
  infoNode? = viewChild<TemplateRef<HTMLElement>>('infoNode');
46
46
  socialProvidersNode? = viewChild<TemplateRef<HTMLElement>>('socialProvidersNode');
47
47
 
48
+ userProfileFormFields = input<Type<UserProfileFormFieldsComponent>>();
48
49
  isFormSubmittable = signal(false);
49
50
 
50
51
  constructor() {
@@ -2,10 +2,10 @@
2
2
  @let actionUri = kcContext.actionUri;
3
3
  @let pageRedirectUri = kcContext.pageRedirectUri;
4
4
  @let client = kcContext.client;
5
- @let messageHeader = kcContext.messageHeader;
6
- @let message = kcContext.message;
7
5
 
8
6
  <ng-template #headerNode>
7
+ @let messageHeader = kcContext.messageHeader;
8
+ @let message = kcContext.message;
9
9
  <span [innerHTML]="messageHeader ?? i18n.advancedMsgStr(message.summary) | kcSanitize: 'html'"> </span>
10
10
  </ng-template>
11
11
  <div id="kc-info-message">
@@ -1,5 +1,4 @@
1
1
  @let realm = kcContext.realm;
2
- @let social = kcContext.social;
3
2
  @let usernameHidden = kcContext.usernameHidden;
4
3
  @let auth = kcContext.auth;
5
4
  @let messagesPerField = kcContext.messagesPerField;
@@ -10,6 +9,7 @@
10
9
  {{ i18n.msgStr('loginAccountTitle') }}
11
10
  </ng-template>
12
11
  <ng-template #infoNode>
12
+ @let url = kcContext.url;
13
13
  <div id="kc-registration-container">
14
14
  <div id="kc-registration">
15
15
  <span>
@@ -25,6 +25,8 @@
25
25
  </div>
26
26
  </ng-template>
27
27
  <ng-template #socialProvidersNode>
28
+ @let realm = kcContext.realm;
29
+ @let social = kcContext.social;
28
30
  @if (!!realm?.password && !!social?.providers?.length) {
29
31
  <div
30
32
  id="kc-social-providers"
@@ -2,7 +2,9 @@
2
2
  @let brokerContext = kcContext.brokerContext;
3
3
  @let realm = kcContext.realm;
4
4
  @let url = kcContext.url;
5
+
5
6
  <ng-template #headerNode>
7
+ @let idpAlias = kcContext.idpAlias;
6
8
  {{ i18n.msgStr('emailLinkIdpTitle', idpAlias) }}
7
9
  </ng-template>
8
10
  <p
@@ -3,6 +3,7 @@
3
3
  @let url = kcContext.url;
4
4
 
5
5
  <ng-template #headerNode>
6
+ @let client = kcContext.client;
6
7
  @if (client.attributes['logoUri']) {
7
8
  <img
8
9
  alt=""
@@ -1,28 +1,27 @@
1
1
  @let url = kcContext.url;
2
2
 
3
- <ng-container #headerNode>
3
+ <ng-template #headerNode>
4
4
  {{ i18n.msgStr('pageExpiredTitle') }}
5
- </ng-container>
6
- <ng-container content>
7
- <p
8
- id="instruction1"
9
- class="instruction"
5
+ </ng-template>
6
+
7
+ <p
8
+ id="instruction1"
9
+ class="instruction"
10
+ >
11
+ {{ i18n.msgStr('pageExpiredMsg1') }}
12
+ <a
13
+ id="loginRestartLink"
14
+ [href]="url.loginRestartFlowUrl"
15
+ >
16
+ {{ i18n.msgStr('doClickHere') }}
17
+ </a>
18
+ .<br />
19
+ {{ i18n.msgStr('pageExpiredMsg2') }}
20
+ <a
21
+ id="loginContinueLink"
22
+ [href]="url.loginAction"
10
23
  >
11
- {{ i18n.msgStr('pageExpiredMsg1') }}
12
- <a
13
- id="loginRestartLink"
14
- [href]="url.loginRestartFlowUrl"
15
- >
16
- {{ i18n.msgStr('doClickHere') }}
17
- </a>
18
- .<br />
19
- {{ i18n.msgStr('pageExpiredMsg2') }}
20
- <a
21
- id="loginContinueLink"
22
- [href]="url.loginAction"
23
- >
24
- {{ i18n.msgStr('doClickHere') }}
25
- </a>
26
- .
27
- </p>
28
- </ng-container>
24
+ {{ i18n.msgStr('doClickHere') }}
25
+ </a>
26
+ .
27
+ </p>