@keycloakify/angular 20.1.8 → 20.1.9

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 (81) hide show
  1. package/README.md +4 -4
  2. package/bin/187.index.js +2 -2
  3. package/bin/{559.index.js → 247.index.js} +161 -34
  4. package/bin/index.js +1 -1
  5. package/fesm2022/keycloakify-angular-account-directives-kc-class.mjs +3 -3
  6. package/fesm2022/keycloakify-angular-account-pages-account.mjs +7 -6
  7. package/fesm2022/keycloakify-angular-account-pages-account.mjs.map +1 -1
  8. package/fesm2022/keycloakify-angular-account-pages-applications.mjs +3 -3
  9. package/fesm2022/keycloakify-angular-account-pages-federatedIdentity.mjs +3 -3
  10. package/fesm2022/keycloakify-angular-account-pages-log.mjs +3 -3
  11. package/fesm2022/keycloakify-angular-account-pages-password.mjs +3 -3
  12. package/fesm2022/keycloakify-angular-account-pages-sessions.mjs +3 -3
  13. package/fesm2022/keycloakify-angular-account-pages-totp.mjs +3 -3
  14. package/fesm2022/keycloakify-angular-account-services-account-resource-injector.mjs +3 -3
  15. package/fesm2022/keycloakify-angular-account-services-i18n.mjs +3 -3
  16. package/fesm2022/keycloakify-angular-account-template.mjs +3 -3
  17. package/fesm2022/keycloakify-angular-lib-directives-attributes.mjs +3 -3
  18. package/fesm2022/keycloakify-angular-lib-pipes-input-type.mjs +3 -3
  19. package/fesm2022/keycloakify-angular-lib-pipes-is-array-with-empty-object.mjs +3 -3
  20. package/fesm2022/keycloakify-angular-lib-pipes-kc-sanitize.mjs +3 -3
  21. package/fesm2022/keycloakify-angular-lib-pipes-to-array.mjs +3 -3
  22. package/fesm2022/keycloakify-angular-lib-pipes-to-number.mjs +3 -3
  23. package/fesm2022/keycloakify-angular-lib-services-resource-injector.mjs +3 -3
  24. package/fesm2022/keycloakify-angular-login-components-add-remove-buttons-multi-valued-attribute.mjs +3 -3
  25. package/fesm2022/keycloakify-angular-login-components-field-errors.mjs +3 -3
  26. package/fesm2022/keycloakify-angular-login-components-group-label.mjs +3 -3
  27. package/fesm2022/keycloakify-angular-login-components-input-field-by-type.mjs +3 -3
  28. package/fesm2022/keycloakify-angular-login-components-input-tag-selects.mjs +3 -3
  29. package/fesm2022/keycloakify-angular-login-components-input-tag.mjs +3 -3
  30. package/fesm2022/keycloakify-angular-login-components-logout-other-sessions.mjs +3 -3
  31. package/fesm2022/keycloakify-angular-login-components-password-wrapper.mjs +3 -3
  32. package/fesm2022/keycloakify-angular-login-components-select-tag.mjs +3 -3
  33. package/fesm2022/keycloakify-angular-login-components-textarea-tag.mjs +3 -3
  34. package/fesm2022/keycloakify-angular-login-components-user-profile-form-fields.mjs +3 -3
  35. package/fesm2022/keycloakify-angular-login-directives-kc-class.mjs +3 -3
  36. package/fesm2022/keycloakify-angular-login-pages-code.mjs +3 -3
  37. package/fesm2022/keycloakify-angular-login-pages-delete-account-confirm.mjs +3 -3
  38. package/fesm2022/keycloakify-angular-login-pages-delete-credential.mjs +3 -3
  39. package/fesm2022/keycloakify-angular-login-pages-error.mjs +3 -3
  40. package/fesm2022/keycloakify-angular-login-pages-frontchannel-logout.mjs +3 -3
  41. package/fesm2022/keycloakify-angular-login-pages-idp-review-user-profile.mjs +3 -3
  42. package/fesm2022/keycloakify-angular-login-pages-info.mjs +3 -3
  43. package/fesm2022/keycloakify-angular-login-pages-login-config-totp.mjs +3 -3
  44. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm-override.mjs +3 -3
  45. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-confirm.mjs +3 -3
  46. package/fesm2022/keycloakify-angular-login-pages-login-idp-link-email.mjs +3 -3
  47. package/fesm2022/keycloakify-angular-login-pages-login-oauth-grant.mjs +3 -3
  48. package/fesm2022/keycloakify-angular-login-pages-login-oauth2-device-verify-user-code.mjs +3 -3
  49. package/fesm2022/keycloakify-angular-login-pages-login-otp.mjs +3 -3
  50. package/fesm2022/keycloakify-angular-login-pages-login-page-expired.mjs +3 -3
  51. package/fesm2022/keycloakify-angular-login-pages-login-passkeys-conditional-authenticate.mjs +3 -3
  52. package/fesm2022/keycloakify-angular-login-pages-login-password.mjs +3 -3
  53. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-config.mjs +3 -3
  54. package/fesm2022/keycloakify-angular-login-pages-login-recovery-authn-code-input.mjs +3 -3
  55. package/fesm2022/keycloakify-angular-login-pages-login-reset-otp.mjs +3 -3
  56. package/fesm2022/keycloakify-angular-login-pages-login-reset-password.mjs +3 -3
  57. package/fesm2022/keycloakify-angular-login-pages-login-update-password.mjs +3 -3
  58. package/fesm2022/keycloakify-angular-login-pages-login-update-profile.mjs +3 -3
  59. package/fesm2022/keycloakify-angular-login-pages-login-username.mjs +3 -3
  60. package/fesm2022/keycloakify-angular-login-pages-login-verify-email.mjs +3 -3
  61. package/fesm2022/keycloakify-angular-login-pages-login-x509-info.mjs +3 -3
  62. package/fesm2022/keycloakify-angular-login-pages-login.mjs +3 -3
  63. package/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs +7 -6
  64. package/fesm2022/keycloakify-angular-login-pages-logout-confirm.mjs.map +1 -1
  65. package/fesm2022/keycloakify-angular-login-pages-register.mjs +3 -3
  66. package/fesm2022/keycloakify-angular-login-pages-saml-post-form.mjs +3 -3
  67. package/fesm2022/keycloakify-angular-login-pages-select-authenticator.mjs +3 -3
  68. package/fesm2022/keycloakify-angular-login-pages-terms.mjs +3 -3
  69. package/fesm2022/keycloakify-angular-login-pages-update-email.mjs +3 -3
  70. package/fesm2022/keycloakify-angular-login-pages-webauthn-authenticate.mjs +3 -3
  71. package/fesm2022/keycloakify-angular-login-pages-webauthn-error.mjs +3 -3
  72. package/fesm2022/keycloakify-angular-login-pages-webauthn-register.mjs +3 -3
  73. package/fesm2022/keycloakify-angular-login-services-i18n.mjs +3 -3
  74. package/fesm2022/keycloakify-angular-login-services-login-resource-injector.mjs +3 -3
  75. package/fesm2022/keycloakify-angular-login-services-user-profile-form.mjs +3 -3
  76. package/fesm2022/keycloakify-angular-login-template.mjs +3 -3
  77. package/package.json +5 -5
  78. package/src/account/pages/account/account.component.html +5 -1
  79. package/src/account/pages/account/account.component.ts +2 -1
  80. package/src/login/pages/logout-confirm/logout-confirm.component.html +5 -1
  81. package/src/login/pages/logout-confirm/logout-confirm.component.ts +2 -1
package/README.md CHANGED
@@ -28,9 +28,9 @@
28
28
  -
29
29
  <a href="https://docs.keycloakify.dev">Documentation</a>
30
30
  -
31
- <a href="https://github.com/keycloakify/keycloakify-starter-angular-vite">Starter Project Vite</a>
31
+ <a href="https://github.com/keycloakify/keycloakify-starter-angular-vite">Starter Project Analogjs + Vite</a>
32
32
  -
33
- <a href="https://github.com/keycloakify/keycloakify-starter-angular-webpack">Starter Project native Angular</a>
33
+ <a href="https://github.com/keycloakify/keycloakify-starter-angular">Starter Project Vanilla Angular + ESBuild</a>
34
34
  </p>
35
35
  </p>
36
36
 
@@ -50,8 +50,8 @@ See [getting started](https://docs.keycloakify.dev/).
50
50
 
51
51
  ```bash
52
52
  git clone https://github.com/keycloakify/keycloakify-angular
53
- git clone https://github.com/keycloakify/keycloakify-angular-starter-vite
54
- git clone https://github.com/keycloakify/keycloakify-angular-starter-webpack
53
+ git clone https://github.com/keycloakify/keycloakify-starter-angular-vite
54
+ git clone https://github.com/keycloakify/keycloakify-starter-angular
55
55
 
56
56
  cd keycloakify-angular
57
57
  yarn install
package/bin/187.index.js CHANGED
@@ -22,8 +22,8 @@ var external_path_ = __webpack_require__(928);
22
22
  var external_fs_ = __webpack_require__(896);
23
23
  // EXTERNAL MODULE: ./node_modules/tsafe/esm/assert.mjs + 1 modules
24
24
  var assert = __webpack_require__(966);
25
- // EXTERNAL MODULE: ./node_modules/zod/v4/classic/external.js + 67 modules
26
- var external = __webpack_require__(535);
25
+ // EXTERNAL MODULE: ./node_modules/zod/v4/classic/external.js + 68 modules
26
+ var external = __webpack_require__(455);
27
27
  // EXTERNAL MODULE: ./node_modules/tsafe/esm/id.mjs
28
28
  var id = __webpack_require__(94);
29
29
  // EXTERNAL MODULE: ./node_modules/tsafe/esm/is.mjs
@@ -1,5 +1,5 @@
1
- export const id = 559;
2
- export const ids = [559];
1
+ export const id = 247;
2
+ export const ids = [247];
3
3
  export const modules = {
4
4
 
5
5
  /***/ 94:
@@ -48,7 +48,7 @@ function symToStr(wrap) {
48
48
 
49
49
  /***/ }),
50
50
 
51
- /***/ 535:
51
+ /***/ 455:
52
52
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
53
53
 
54
54
 
@@ -769,11 +769,7 @@ function flattenError(error, mapper = (issue) => issue.message) {
769
769
  }
770
770
  return { formErrors, fieldErrors };
771
771
  }
772
- function formatError(error, _mapper) {
773
- const mapper = _mapper ||
774
- function (issue) {
775
- return issue.message;
776
- };
772
+ function formatError(error, mapper = (issue) => issue.message) {
777
773
  const fieldErrors = { _errors: [] };
778
774
  const processError = (error) => {
779
775
  for (const issue of error.issues) {
@@ -811,11 +807,7 @@ function formatError(error, _mapper) {
811
807
  processError(error);
812
808
  return fieldErrors;
813
809
  }
814
- function treeifyError(error, _mapper) {
815
- const mapper = _mapper ||
816
- function (issue) {
817
- return issue.message;
818
- };
810
+ function treeifyError(error, mapper = (issue) => issue.message) {
819
811
  const result = { errors: [] };
820
812
  const processError = (error, path = []) => {
821
813
  var _a, _b;
@@ -1762,7 +1754,7 @@ class Doc {
1762
1754
  const version = {
1763
1755
  major: 4,
1764
1756
  minor: 1,
1765
- patch: 8,
1757
+ patch: 12,
1766
1758
  };
1767
1759
 
1768
1760
  ;// CONCATENATED MODULE: ./node_modules/zod/v4/core/schemas.js
@@ -2537,6 +2529,20 @@ function handleCatchall(proms, input, payload, ctx, def, inst) {
2537
2529
  const $ZodObject = /*@__PURE__*/ $constructor("$ZodObject", (inst, def) => {
2538
2530
  // requires cast because technically $ZodObject doesn't extend
2539
2531
  $ZodType.init(inst, def);
2532
+ // const sh = def.shape;
2533
+ const desc = Object.getOwnPropertyDescriptor(def, "shape");
2534
+ if (!desc?.get) {
2535
+ const sh = def.shape;
2536
+ Object.defineProperty(def, "shape", {
2537
+ get: () => {
2538
+ const newSh = { ...sh };
2539
+ Object.defineProperty(def, "shape", {
2540
+ value: newSh,
2541
+ });
2542
+ return newSh;
2543
+ },
2544
+ });
2545
+ }
2540
2546
  const _normalized = cached(() => normalizeDef(def));
2541
2547
  defineLazy(inst._zod, "propValues", () => {
2542
2548
  const shape = def.shape;
@@ -4109,6 +4115,136 @@ const be_error = () => {
4109
4115
  };
4110
4116
  }
4111
4117
 
4118
+ ;// CONCATENATED MODULE: ./node_modules/zod/v4/locales/bg.js
4119
+
4120
+ const parsedType = (data) => {
4121
+ const t = typeof data;
4122
+ switch (t) {
4123
+ case "number": {
4124
+ return Number.isNaN(data) ? "NaN" : "число";
4125
+ }
4126
+ case "object": {
4127
+ if (Array.isArray(data)) {
4128
+ return "масив";
4129
+ }
4130
+ if (data === null) {
4131
+ return "null";
4132
+ }
4133
+ if (Object.getPrototypeOf(data) !== Object.prototype && data.constructor) {
4134
+ return data.constructor.name;
4135
+ }
4136
+ }
4137
+ }
4138
+ return t;
4139
+ };
4140
+ const bg_error = () => {
4141
+ const Sizable = {
4142
+ string: { unit: "символа", verb: "да съдържа" },
4143
+ file: { unit: "байта", verb: "да съдържа" },
4144
+ array: { unit: "елемента", verb: "да съдържа" },
4145
+ set: { unit: "елемента", verb: "да съдържа" },
4146
+ };
4147
+ function getSizing(origin) {
4148
+ return Sizable[origin] ?? null;
4149
+ }
4150
+ const Nouns = {
4151
+ regex: "вход",
4152
+ email: "имейл адрес",
4153
+ url: "URL",
4154
+ emoji: "емоджи",
4155
+ uuid: "UUID",
4156
+ uuidv4: "UUIDv4",
4157
+ uuidv6: "UUIDv6",
4158
+ nanoid: "nanoid",
4159
+ guid: "GUID",
4160
+ cuid: "cuid",
4161
+ cuid2: "cuid2",
4162
+ ulid: "ULID",
4163
+ xid: "XID",
4164
+ ksuid: "KSUID",
4165
+ datetime: "ISO време",
4166
+ date: "ISO дата",
4167
+ time: "ISO време",
4168
+ duration: "ISO продължителност",
4169
+ ipv4: "IPv4 адрес",
4170
+ ipv6: "IPv6 адрес",
4171
+ cidrv4: "IPv4 диапазон",
4172
+ cidrv6: "IPv6 диапазон",
4173
+ base64: "base64-кодиран низ",
4174
+ base64url: "base64url-кодиран низ",
4175
+ json_string: "JSON низ",
4176
+ e164: "E.164 номер",
4177
+ jwt: "JWT",
4178
+ template_literal: "вход",
4179
+ };
4180
+ return (issue) => {
4181
+ switch (issue.code) {
4182
+ case "invalid_type":
4183
+ return `Невалиден вход: очакван ${issue.expected}, получен ${parsedType(issue.input)}`;
4184
+ case "invalid_value":
4185
+ if (issue.values.length === 1)
4186
+ return `Невалиден вход: очакван ${util.stringifyPrimitive(issue.values[0])}`;
4187
+ return `Невалидна опция: очаквано едно от ${util.joinValues(issue.values, "|")}`;
4188
+ case "too_big": {
4189
+ const adj = issue.inclusive ? "<=" : "<";
4190
+ const sizing = getSizing(issue.origin);
4191
+ if (sizing)
4192
+ return `Твърде голямо: очаква се ${issue.origin ?? "стойност"} да съдържа ${adj}${issue.maximum.toString()} ${sizing.unit ?? "елемента"}`;
4193
+ return `Твърде голямо: очаква се ${issue.origin ?? "стойност"} да бъде ${adj}${issue.maximum.toString()}`;
4194
+ }
4195
+ case "too_small": {
4196
+ const adj = issue.inclusive ? ">=" : ">";
4197
+ const sizing = getSizing(issue.origin);
4198
+ if (sizing) {
4199
+ return `Твърде малко: очаква се ${issue.origin} да съдържа ${adj}${issue.minimum.toString()} ${sizing.unit}`;
4200
+ }
4201
+ return `Твърде малко: очаква се ${issue.origin} да бъде ${adj}${issue.minimum.toString()}`;
4202
+ }
4203
+ case "invalid_format": {
4204
+ const _issue = issue;
4205
+ if (_issue.format === "starts_with") {
4206
+ return `Невалиден низ: трябва да започва с "${_issue.prefix}"`;
4207
+ }
4208
+ if (_issue.format === "ends_with")
4209
+ return `Невалиден низ: трябва да завършва с "${_issue.suffix}"`;
4210
+ if (_issue.format === "includes")
4211
+ return `Невалиден низ: трябва да включва "${_issue.includes}"`;
4212
+ if (_issue.format === "regex")
4213
+ return `Невалиден низ: трябва да съвпада с ${_issue.pattern}`;
4214
+ let invalid_adj = "Невалиден";
4215
+ if (_issue.format === "emoji")
4216
+ invalid_adj = "Невалидно";
4217
+ if (_issue.format === "datetime")
4218
+ invalid_adj = "Невалидно";
4219
+ if (_issue.format === "date")
4220
+ invalid_adj = "Невалидна";
4221
+ if (_issue.format === "time")
4222
+ invalid_adj = "Невалидно";
4223
+ if (_issue.format === "duration")
4224
+ invalid_adj = "Невалидна";
4225
+ return `${invalid_adj} ${Nouns[_issue.format] ?? issue.format}`;
4226
+ }
4227
+ case "not_multiple_of":
4228
+ return `Невалидно число: трябва да бъде кратно на ${issue.divisor}`;
4229
+ case "unrecognized_keys":
4230
+ return `Неразпознат${issue.keys.length > 1 ? "и" : ""} ключ${issue.keys.length > 1 ? "ове" : ""}: ${util.joinValues(issue.keys, ", ")}`;
4231
+ case "invalid_key":
4232
+ return `Невалиден ключ в ${issue.origin}`;
4233
+ case "invalid_union":
4234
+ return "Невалиден вход";
4235
+ case "invalid_element":
4236
+ return `Невалидна стойност в ${issue.origin}`;
4237
+ default:
4238
+ return `Невалиден вход`;
4239
+ }
4240
+ };
4241
+ };
4242
+ /* harmony default export */ function bg() {
4243
+ return {
4244
+ localeError: bg_error(),
4245
+ };
4246
+ }
4247
+
4112
4248
  ;// CONCATENATED MODULE: ./node_modules/zod/v4/locales/ca.js
4113
4249
 
4114
4250
  const ca_error = () => {
@@ -4619,7 +4755,7 @@ const de_error = () => {
4619
4755
 
4620
4756
  ;// CONCATENATED MODULE: ./node_modules/zod/v4/locales/en.js
4621
4757
 
4622
- const parsedType = (data) => {
4758
+ const en_parsedType = (data) => {
4623
4759
  const t = typeof data;
4624
4760
  switch (t) {
4625
4761
  case "number": {
@@ -4682,7 +4818,7 @@ const en_error = () => {
4682
4818
  return (issue) => {
4683
4819
  switch (issue.code) {
4684
4820
  case "invalid_type":
4685
- return `Invalid input: expected ${issue.expected}, received ${parsedType(issue.input)}`;
4821
+ return `Invalid input: expected ${issue.expected}, received ${en_parsedType(issue.input)}`;
4686
4822
  case "invalid_value":
4687
4823
  if (issue.values.length === 1)
4688
4824
  return `Invalid input: expected ${stringifyPrimitive(issue.values[0])}`;
@@ -9287,6 +9423,7 @@ const yo_error = () => {
9287
9423
 
9288
9424
 
9289
9425
 
9426
+
9290
9427
 
9291
9428
 
9292
9429
  ;// CONCATENATED MODULE: ./node_modules/zod/v4/core/registries.js
@@ -11314,15 +11451,12 @@ const ZodType = /*@__PURE__*/ $constructor("ZodType", (inst, def) => {
11314
11451
  Object.defineProperty(inst, "_def", { value: def });
11315
11452
  // base methods
11316
11453
  inst.check = (...checks) => {
11317
- return inst.clone({
11318
- ...def,
11454
+ return inst.clone(mergeDefs(def, {
11319
11455
  checks: [
11320
11456
  ...(def.checks ?? []),
11321
11457
  ...checks.map((ch) => typeof ch === "function" ? { _zod: { check: ch, def: { check: "custom" }, onattach: [] } } : ch),
11322
11458
  ],
11323
- }
11324
- // { parent: true }
11325
- );
11459
+ }));
11326
11460
  };
11327
11461
  inst.clone = (def, params) => clone(inst, def, params);
11328
11462
  inst.brand = () => inst;
@@ -11821,7 +11955,9 @@ function keyof(schema) {
11821
11955
  const ZodObject = /*@__PURE__*/ $constructor("ZodObject", (inst, def) => {
11822
11956
  $ZodObjectJIT.init(inst, def);
11823
11957
  ZodType.init(inst, def);
11824
- defineLazy(inst, "shape", () => def.shape);
11958
+ defineLazy(inst, "shape", () => {
11959
+ return def.shape;
11960
+ });
11825
11961
  inst.keyof = () => schemas_enum(Object.keys(inst._zod.def.shape));
11826
11962
  inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });
11827
11963
  inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });
@@ -11843,10 +11979,7 @@ const ZodObject = /*@__PURE__*/ $constructor("ZodObject", (inst, def) => {
11843
11979
  function object(shape, params) {
11844
11980
  const def = {
11845
11981
  type: "object",
11846
- get shape() {
11847
- assignProp(this, "shape", shape ? objectClone(shape) : {});
11848
- return this.shape;
11849
- },
11982
+ shape: shape ?? {},
11850
11983
  ...normalizeParams(params),
11851
11984
  };
11852
11985
  return new ZodObject(def);
@@ -11855,10 +11988,7 @@ function object(shape, params) {
11855
11988
  function strictObject(shape, params) {
11856
11989
  return new ZodObject({
11857
11990
  type: "object",
11858
- get shape() {
11859
- util.assignProp(this, "shape", util.objectClone(shape));
11860
- return this.shape;
11861
- },
11991
+ shape,
11862
11992
  catchall: never(),
11863
11993
  ...util.normalizeParams(params),
11864
11994
  });
@@ -11867,10 +11997,7 @@ function strictObject(shape, params) {
11867
11997
  function looseObject(shape, params) {
11868
11998
  return new ZodObject({
11869
11999
  type: "object",
11870
- get shape() {
11871
- util.assignProp(this, "shape", util.objectClone(shape));
11872
- return this.shape;
11873
- },
12000
+ shape,
11874
12001
  catchall: unknown(),
11875
12002
  ...util.normalizeParams(params),
11876
12003
  });
package/bin/index.js CHANGED
@@ -1162,7 +1162,7 @@ const { buildContext, commandName } = readParams({ apiVersion: 'v1' });
1162
1162
  return;
1163
1163
  case 'initialize-account-theme':
1164
1164
  {
1165
- const { command } = await Promise.all(/* import() */[__nccwpck_require__.e(559), __nccwpck_require__.e(187)]).then(__nccwpck_require__.bind(__nccwpck_require__, 187));
1165
+ const { command } = await Promise.all(/* import() */[__nccwpck_require__.e(247), __nccwpck_require__.e(187)]).then(__nccwpck_require__.bind(__nccwpck_require__, 187));
1166
1166
  command({ buildContext });
1167
1167
  }
1168
1168
  return;
@@ -119,10 +119,10 @@ class KcClassDirective {
119
119
  });
120
120
  }
121
121
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: KcClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.0", type: KcClassDirective, isStandalone: true, selector: "[kcClass]", inputs: { klass: ["class", "klass"], ngClass: "ngClass", kcClass: "kcClass" }, ngImport: i0 }); }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: KcClassDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
123
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.4", type: KcClassDirective, isStandalone: true, selector: "[kcClass]", inputs: { klass: ["class", "klass"], ngClass: "ngClass", kcClass: "kcClass" }, ngImport: i0 }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: KcClassDirective, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: KcClassDirective, decorators: [{
126
126
  type: Directive,
127
127
  args: [{ selector: '[kcClass]' }]
128
128
  }], propDecorators: { klass: [{
@@ -6,6 +6,7 @@ import { KcClassDirective } from '@keycloakify/angular/account/directives/kc-cla
6
6
  import { ACCOUNT_CLASSES } from '@keycloakify/angular/account/tokens/classes';
7
7
  import { ACCOUNT_I18N } from '@keycloakify/angular/account/tokens/i18n';
8
8
  import { KC_ACCOUNT_CONTEXT } from '@keycloakify/angular/account/tokens/kc-context';
9
+ import { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';
9
10
  import { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';
10
11
 
11
12
  class AccountComponent extends ComponentReference {
@@ -20,22 +21,22 @@ class AccountComponent extends ComponentReference {
20
21
  };
21
22
  this.active = 'account';
22
23
  }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AccountComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: AccountComponent, isStandalone: true, selector: "kc-account", providers: [
24
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AccountComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
25
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: AccountComponent, isStandalone: true, selector: "kc-account", providers: [
25
26
  {
26
27
  provide: ComponentReference,
27
28
  useExisting: forwardRef(() => AccountComponent)
28
29
  }
29
- ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let realm = kcContext.realm;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let account = kcContext.account;\n@let referrer = kcContext.referrer;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('editAccountHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\"> <span class=\"required\">*</span> {{ i18n.msgStr('requiredFields') }} </span>\n </div>\n</div>\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.accountUrl\"\n>\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n @if (!realm.registrationEmailAsUsername) {\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('username') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"username\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('username') }}\n </label>\n @if (realm.editUsernameAllowed) {\n <span class=\"required\">*</span>\n }\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n [disabled]=\"!realm.editUsernameAllowed\"\n [defaultValue]=\"account.username ?? ''\"\n />\n </div>\n </div>\n }\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('email') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"email\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('email') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"email\"\n name=\"email\"\n autofocus\n [defaultValue]=\"account.email ?? ''\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('firstName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"firstName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('firstName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"firstName\"\n name=\"firstName\"\n [defaultValue]=\"account.firstName\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('lastName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"lastName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('lastName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"lastName\"\n name=\"lastName\"\n [defaultValue]=\"account.lastName ?? ''\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n @if (referrer) {\n <a [href]=\"referrer?.url\">{{ i18n.msgStr('backToApplication') }}</a>\n }\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Cancel\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
30
+ ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let realm = kcContext.realm;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let account = kcContext.account;\n@let referrer = kcContext.referrer;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('editAccountHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\"> <span class=\"required\">*</span> {{ i18n.msgStr('requiredFields') }} </span>\n </div>\n</div>\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.accountUrl\"\n>\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n @if (!realm.registrationEmailAsUsername) {\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('username') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"username\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('username') }}\n </label>\n @if (realm.editUsernameAllowed) {\n <span class=\"required\">*</span>\n }\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n [disabled]=\"!realm.editUsernameAllowed\"\n [defaultValue]=\"account.username ?? ''\"\n />\n </div>\n </div>\n }\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('email') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"email\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('email') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"email\"\n name=\"email\"\n autofocus\n [defaultValue]=\"account.email ?? ''\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('firstName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"firstName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('firstName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"firstName\"\n name=\"firstName\"\n [defaultValue]=\"account.firstName\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('lastName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"lastName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('lastName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"lastName\"\n name=\"lastName\"\n [defaultValue]=\"account.lastName ?? ''\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n @if (referrer) {\n <a\n [href]=\"referrer!.url\"\n [innerHTML]=\"i18n.msgStr('backToApplication') | kcSanitize: 'html'\"\n >\n </a>\n }\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Cancel\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KcSanitizePipe, name: "kcSanitize" }] }); }
30
31
  }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: AccountComponent, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: AccountComponent, decorators: [{
32
33
  type: Component,
33
- args: [{ imports: [KcClassDirective, NgClass], selector: 'kc-account', providers: [
34
+ args: [{ imports: [NgClass, KcClassDirective, KcSanitizePipe], selector: 'kc-account', providers: [
34
35
  {
35
36
  provide: ComponentReference,
36
37
  useExisting: forwardRef(() => AccountComponent)
37
38
  }
38
- ], template: "@let url = kcContext.url;\n@let realm = kcContext.realm;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let account = kcContext.account;\n@let referrer = kcContext.referrer;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('editAccountHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\"> <span class=\"required\">*</span> {{ i18n.msgStr('requiredFields') }} </span>\n </div>\n</div>\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.accountUrl\"\n>\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n @if (!realm.registrationEmailAsUsername) {\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('username') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"username\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('username') }}\n </label>\n @if (realm.editUsernameAllowed) {\n <span class=\"required\">*</span>\n }\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n [disabled]=\"!realm.editUsernameAllowed\"\n [defaultValue]=\"account.username ?? ''\"\n />\n </div>\n </div>\n }\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('email') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"email\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('email') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"email\"\n name=\"email\"\n autofocus\n [defaultValue]=\"account.email ?? ''\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('firstName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"firstName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('firstName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"firstName\"\n name=\"firstName\"\n [defaultValue]=\"account.firstName\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('lastName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"lastName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('lastName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"lastName\"\n name=\"lastName\"\n [defaultValue]=\"account.lastName ?? ''\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n @if (referrer) {\n <a [href]=\"referrer?.url\">{{ i18n.msgStr('backToApplication') }}</a>\n }\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Cancel\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
39
+ ], template: "@let url = kcContext.url;\n@let realm = kcContext.realm;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let account = kcContext.account;\n@let referrer = kcContext.referrer;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('editAccountHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\"> <span class=\"required\">*</span> {{ i18n.msgStr('requiredFields') }} </span>\n </div>\n</div>\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.accountUrl\"\n>\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n @if (!realm.registrationEmailAsUsername) {\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('username') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"username\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('username') }}\n </label>\n @if (realm.editUsernameAllowed) {\n <span class=\"required\">*</span>\n }\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n [disabled]=\"!realm.editUsernameAllowed\"\n [defaultValue]=\"account.username ?? ''\"\n />\n </div>\n </div>\n }\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('email') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"email\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('email') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"email\"\n name=\"email\"\n autofocus\n [defaultValue]=\"account.email ?? ''\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('firstName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"firstName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('firstName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"firstName\"\n name=\"firstName\"\n [defaultValue]=\"account.firstName\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('lastName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"lastName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('lastName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"lastName\"\n name=\"lastName\"\n [defaultValue]=\"account.lastName ?? ''\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n @if (referrer) {\n <a\n [href]=\"referrer!.url\"\n [innerHTML]=\"i18n.msgStr('backToApplication') | kcSanitize: 'html'\"\n >\n </a>\n }\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Cancel\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n" }]
39
40
  }] });
40
41
 
41
42
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"keycloakify-angular-account-pages-account.mjs","sources":["../../src/account/pages/account/account.component.ts","../../src/account/pages/account/account.component.html","../../src/account/pages/account/keycloakify-angular-account-pages-account.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { ComponentReference } from '@keycloakify/angular/account/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/account/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/account/i18n';\nimport type { KcContext } from '@keycloakify/angular/account/KcContext';\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 { ClassKey } from 'keycloakify/account';\n\n@Component({\n imports: [KcClassDirective, NgClass],\n selector: 'kc-account',\n templateUrl: 'account.component.html',\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => AccountComponent)\n }\n ]\n})\nexport class AccountComponent extends ComponentReference {\n i18n = inject<I18n>(ACCOUNT_I18N);\n kcContext = inject<Extract<KcContext, { pageId: 'account.ftl' }>>(KC_ACCOUNT_CONTEXT);\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(ACCOUNT_CLASSES);\n override additionalClasses: Partial<Record<ClassKey, string>> = {\n kcBodyClass: `${this.classes?.kcBodyClass} user`\n };\n active = 'account';\n}\n","@let url = kcContext.url;\n@let realm = kcContext.realm;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let account = kcContext.account;\n@let referrer = kcContext.referrer;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('editAccountHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\"> <span class=\"required\">*</span> {{ i18n.msgStr('requiredFields') }} </span>\n </div>\n</div>\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.accountUrl\"\n>\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n @if (!realm.registrationEmailAsUsername) {\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('username') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"username\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('username') }}\n </label>\n @if (realm.editUsernameAllowed) {\n <span class=\"required\">*</span>\n }\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n [disabled]=\"!realm.editUsernameAllowed\"\n [defaultValue]=\"account.username ?? ''\"\n />\n </div>\n </div>\n }\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('email') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"email\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('email') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"email\"\n name=\"email\"\n autofocus\n [defaultValue]=\"account.email ?? ''\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('firstName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"firstName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('firstName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"firstName\"\n name=\"firstName\"\n [defaultValue]=\"account.firstName\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('lastName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"lastName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('lastName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"lastName\"\n name=\"lastName\"\n [defaultValue]=\"account.lastName ?? ''\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n @if (referrer) {\n <a [href]=\"referrer?.url\">{{ i18n.msgStr('backToApplication') }}</a>\n }\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Cancel\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;AAuBM,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AAXxD,IAAA,WAAA,GAAA;;AAYI,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAO,YAAY,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAgD,kBAAkB,CAAC;AAC5E,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,eAAe,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAoC,eAAe,CAAC;AACpE,QAAA,IAAA,CAAA,iBAAiB,GAAsC;AAC5D,YAAA,WAAW,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,EAAE,WAAW,CAAO,KAAA;SACnD;QACD,IAAM,CAAA,MAAA,GAAG,SAAS;AACrB;8GATY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAPd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB;AACjD;AACJ,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBL,m4JAiKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDpJc,gBAAgB,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAU1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;AACG,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,gBAAgB,EAAE,OAAO,CAAC,EAAA,QAAA,EAC1B,YAAY,EAEX,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB;AACjD;AACJ,qBAAA,EAAA,QAAA,EAAA,m4JAAA,EAAA;;;AErBL;;AAEG;;;;"}
1
+ {"version":3,"file":"keycloakify-angular-account-pages-account.mjs","sources":["../../src/account/pages/account/account.component.ts","../../src/account/pages/account/account.component.html","../../src/account/pages/account/keycloakify-angular-account-pages-account.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { Component, forwardRef, inject } from '@angular/core';\nimport { ComponentReference } from '@keycloakify/angular/account/classes/component-reference';\nimport { KcClassDirective } from '@keycloakify/angular/account/directives/kc-class';\nimport type { I18n } from '@keycloakify/angular/account/i18n';\nimport type { KcContext } from '@keycloakify/angular/account/KcContext';\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 { KcSanitizePipe } from '@keycloakify/angular/lib/pipes/kc-sanitize';\nimport { USE_DEFAULT_CSS } from '@keycloakify/angular/lib/tokens/use-default-css';\nimport type { ClassKey } from 'keycloakify/account';\n\n@Component({\n imports: [NgClass, KcClassDirective, KcSanitizePipe],\n selector: 'kc-account',\n templateUrl: 'account.component.html',\n providers: [\n {\n provide: ComponentReference,\n useExisting: forwardRef(() => AccountComponent)\n }\n ]\n})\nexport class AccountComponent extends ComponentReference {\n i18n = inject<I18n>(ACCOUNT_I18N);\n kcContext = inject<Extract<KcContext, { pageId: 'account.ftl' }>>(KC_ACCOUNT_CONTEXT);\n override doUseDefaultCss = inject<boolean>(USE_DEFAULT_CSS);\n override classes = inject<Partial<Record<ClassKey, string>>>(ACCOUNT_CLASSES);\n override additionalClasses: Partial<Record<ClassKey, string>> = {\n kcBodyClass: `${this.classes?.kcBodyClass} user`\n };\n active = 'account';\n}\n","@let url = kcContext.url;\n@let realm = kcContext.realm;\n@let messagesPerField = kcContext.messagesPerField;\n@let stateChecker = kcContext.stateChecker;\n@let account = kcContext.account;\n@let referrer = kcContext.referrer;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('editAccountHtmlTitle') }}</h2>\n </div>\n <div class=\"col-md-2 subtitle\">\n <span class=\"subtitle\"> <span class=\"required\">*</span> {{ i18n.msgStr('requiredFields') }} </span>\n </div>\n</div>\n<form\n class=\"form-horizontal\"\n method=\"post\"\n [action]=\"url.accountUrl\"\n>\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n @if (!realm.registrationEmailAsUsername) {\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('username') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"username\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('username') }}\n </label>\n @if (realm.editUsernameAllowed) {\n <span class=\"required\">*</span>\n }\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"username\"\n name=\"username\"\n [disabled]=\"!realm.editUsernameAllowed\"\n [defaultValue]=\"account.username ?? ''\"\n />\n </div>\n </div>\n }\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('email') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"email\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('email') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"email\"\n name=\"email\"\n autofocus\n [defaultValue]=\"account.email ?? ''\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('firstName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"firstName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('firstName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"firstName\"\n name=\"firstName\"\n [defaultValue]=\"account.firstName\"\n />\n </div>\n </div>\n\n <div\n class=\"form-group\"\n [ngClass]=\"{ 'has-error': messagesPerField.existsError('lastName') }\"\n >\n <div class=\"col-sm-2 col-md-2\">\n <label\n for=\"lastName\"\n class=\"control-label\"\n >\n {{ i18n.msgStr('lastName') }}\n </label>\n <span class=\"required\">*</span>\n </div>\n\n <div class=\"col-sm-10 col-md-10\">\n <input\n type=\"text\"\n class=\"form-control\"\n id=\"lastName\"\n name=\"lastName\"\n [defaultValue]=\"account.lastName ?? ''\"\n />\n </div>\n </div>\n\n <div class=\"form-group\">\n <div\n id=\"kc-form-buttons\"\n class=\"col-md-offset-2 col-md-10 submit\"\n >\n <div>\n @if (referrer) {\n <a\n [href]=\"referrer!.url\"\n [innerHTML]=\"i18n.msgStr('backToApplication') | kcSanitize: 'html'\"\n >\n </a>\n }\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Save\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doSave') }}\n </button>\n <button\n type=\"submit\"\n name=\"submitAction\"\n value=\"Cancel\"\n [kcClass]=\"['kcButtonClass', 'kcButtonPrimaryClass', 'kcButtonLargeClass']\"\n >\n {{ i18n.msgStr('doCancel') }}\n </button>\n </div>\n </div>\n </div>\n</form>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAwBM,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;AAXxD,IAAA,WAAA,GAAA;;AAYI,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAO,YAAY,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAgD,kBAAkB,CAAC;AAC5E,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAU,eAAe,CAAC;AAClD,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAoC,eAAe,CAAC;AACpE,QAAA,IAAA,CAAA,iBAAiB,GAAsC;AAC5D,YAAA,WAAW,EAAE,CAAG,EAAA,IAAI,CAAC,OAAO,EAAE,WAAW,CAAO,KAAA;SACnD;QACD,IAAM,CAAA,MAAA,GAAG,SAAS;AACrB;8GATY,gBAAgB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAPd,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,kBAAkB;AAC3B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,gBAAgB;AACjD;AACJ,SAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBL,igKAqKA,EDvJc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EAAE,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,0FAAE,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAU1C,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAX5B,SAAS;8BACG,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAA,QAAA,EAC1C,YAAY,EAEX,SAAA,EAAA;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,kBAAkB;AAC3B,4BAAA,WAAW,EAAE,UAAU,CAAC,sBAAsB;AACjD;AACJ,qBAAA,EAAA,QAAA,EAAA,igKAAA,EAAA;;;AEtBL;;AAEG;;;;"}
@@ -18,15 +18,15 @@ class ApplicationsComponent extends ComponentReference {
18
18
  this.classes = inject(ACCOUNT_CLASSES);
19
19
  this.active = 'applications';
20
20
  }
21
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ApplicationsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: ApplicationsComponent, isStandalone: true, selector: "kc-applications", providers: [
21
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ApplicationsComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
22
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: ApplicationsComponent, isStandalone: true, selector: "kc-applications", providers: [
23
23
  {
24
24
  provide: ComponentReference,
25
25
  useExisting: forwardRef(() => ApplicationsComponent)
26
26
  }
27
27
  ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let stateChecker = kcContext.stateChecker;\n@let applications = kcContext.applications?.applications;\n\n<div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('applicationsHtmlTitle') }}</h2>\n </div>\n\n <form\n method=\"post\"\n [action]=\"url.applicationsUrl\"\n >\n <input\n type=\"hidden\"\n id=\"stateChecker\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n id=\"referrer\"\n name=\"referrer\"\n [value]=\"stateChecker\"\n />\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('application') }}</td>\n <td>{{ i18n.msgStr('availableRoles') }}</td>\n <td>{{ i18n.msgStr('grantedPermissions') }}</td>\n <td>{{ i18n.msgStr('additionalGrants') }}</td>\n <td>{{ i18n.msgStr('action') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (application of applications ?? []; track application) {\n <tr>\n <td>\n @if (application.effectiveUrl) {\n <a [href]=\"application.effectiveUrl\">\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n </a>\n } @else {\n @if (application.client.name) {\n {{ i18n.advancedMsgStr(application.client.name) }}\n } @else {\n {{ application.client.clientId }}\n }\n }\n </td>\n\n <td>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n @for (role of application.realmRolesAvailable; track role; let last = $last) {\n <span>\n @if (role.description) {\n {{ i18n.advancedMsgStr(role.description) }}\n } @else {\n {{ i18n.advancedMsgStr(role.name) }}\n }\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n }\n @if (application.resourceRolesAvailable) {\n @for (resource of application.resourceRolesAvailable | keyvalue; track resource.key) {\n <span>\n @if (!(application.realmRolesAvailable | isArrayWithEmptyObject)) {\n ,&nbsp;\n }\n @for (\n clientRole of application.resourceRolesAvailable[resource.key];\n track clientRole;\n let roleLast = $last\n ) {\n <span>\n {{\n i18n.advancedMsgStr(clientRole.roleDescription ? clientRole.roleDescription : clientRole.roleName)\n }}\n {{ i18n.msgStr('inResource') }}\n <strong>\n {{\n clientRole.clientName ? i18n.advancedMsgStr(clientRole.clientName) : clientRole.clientId\n }}</strong\n >\n @if (!roleLast) {\n ,&nbsp;\n }\n </span>\n }\n </span>\n }\n }\n </td>\n\n <td>\n @if (application.client.consentRequired) {\n @for (claim of application.clientScopesGranted; track claim; let last = $last) {\n {{ i18n.advancedMsgStr(claim) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n } @else {\n <strong>{{ i18n.msgStr('fullAccess') }}</strong>\n }\n </td>\n\n <td>\n @for (grant of application.additionalGrants; track grant; let last = $last) {\n {{ i18n.advancedMsgStr(grant) }}\n @if (!last) {\n ,&nbsp;\n }\n }\n </td>\n\n <td>\n @if (\n (application.client.consentRequired && application.clientScopesGranted.length > 0) ||\n application.additionalGrants.length > 0\n ) {\n <button\n type=\"submit\"\n name=\"clientId\"\n [kcClass]=\"['kcButtonPrimaryClass', 'kcButtonClass']\"\n [id]=\"'revoke-' + application.client.clientId\"\n [value]=\"application.client.id\"\n >\n {{ i18n.msgStr('revoke') }}\n </button>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: IsArrayWithEmptyObjectPipe, name: "isArrayWithEmptyObject" }] }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: ApplicationsComponent, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ApplicationsComponent, decorators: [{
30
30
  type: Component,
31
31
  args: [{ imports: [KcClassDirective, NgClass, KeyValuePipe, IsArrayWithEmptyObjectPipe], selector: 'kc-applications', providers: [
32
32
  {
@@ -17,15 +17,15 @@ class FederatedIdentityComponent extends ComponentReference {
17
17
  this.classes = inject(ACCOUNT_CLASSES);
18
18
  this.active = 'social';
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: FederatedIdentityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: FederatedIdentityComponent, isStandalone: true, selector: "kc-federated-identity", providers: [
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FederatedIdentityComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: FederatedIdentityComponent, isStandalone: true, selector: "kc-federated-identity", providers: [
22
22
  {
23
23
  provide: ComponentReference,
24
24
  useExisting: forwardRef(() => FederatedIdentityComponent)
25
25
  }
26
26
  ], usesInheritance: true, ngImport: i0, template: "@let url = kcContext.url;\n@let federatedIdentity = kcContext.federatedIdentity;\n@let stateChecker = kcContext.stateChecker;\n\n<div class=\"main-layout social\">\n <div class=\"row\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('federatedIdentitiesHtmlTitle') }}</h2>\n </div>\n </div>\n <div id=\"federated-identities\">\n @for (identity of federatedIdentity.identities; track identity) {\n <div class=\"row margin-bottom\">\n <div class=\"col-sm-2 col-md-2\">\n <label\n class=\"control-label\"\n [for]=\"identity.providerId\"\n >\n {{ identity.displayName }}\n </label>\n </div>\n <div class=\"col-sm-5 col-md-5\">\n <input\n disabled\n class=\"form-control\"\n [value]=\"identity.userName\"\n />\n </div>\n <div class=\"col-sm-5 col-md-5\">\n @if (identity.connected) {\n @if (federatedIdentity.removeLinkPossible) {\n <form\n method=\"post\"\n class=\"form-inline\"\n [action]=\"url.socialUrl\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"remove\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n class=\"btn btn-default\"\n [id]=\"'remove-link-' + identity.providerId\"\n >\n {{ i18n.msgStr('doRemove') }}\n </button>\n </form>\n }\n } @else {\n <form\n method=\"post\"\n class=\"form-inline\"\n [action]=\"url.socialUrl\"\n >\n <input\n type=\"hidden\"\n name=\"stateChecker\"\n [value]=\"stateChecker\"\n />\n <input\n type=\"hidden\"\n name=\"action\"\n value=\"add\"\n />\n <input\n type=\"hidden\"\n name=\"providerId\"\n [value]=\"identity.providerId\"\n />\n <button\n class=\"btn btn-default\"\n [id]=\"'add-link-' + identity.providerId\"\n >\n {{ i18n.msgStr('doAdd') }}\n </button>\n </form>\n }\n </div>\n </div>\n }\n </div>\n</div>\n" }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: FederatedIdentityComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FederatedIdentityComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{ imports: [KcClassDirective, NgClass], selector: 'kc-federated-identity', providers: [
31
31
  {
@@ -17,15 +17,15 @@ class LogComponent extends ComponentReference {
17
17
  this.classes = inject(ACCOUNT_CLASSES);
18
18
  this.active = 'log';
19
19
  }
20
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: LogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: LogComponent, isStandalone: true, selector: "kc-log", providers: [
20
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: LogComponent, isStandalone: true, selector: "kc-log", providers: [
22
22
  {
23
23
  provide: ComponentReference,
24
24
  useExisting: forwardRef(() => LogComponent)
25
25
  }
26
26
  ], usesInheritance: true, ngImport: i0, template: "@let log = kcContext.log;\n\n<div [kcClass]=\"'kcContentWrapperClass'\">\n <div class=\"col-md-10\">\n <h2>{{ i18n.msgStr('accountLogHtmlTitle') }}</h2>\n </div>\n\n <table class=\"table table-striped table-bordered\">\n <thead>\n <tr>\n <td>{{ i18n.msgStr('date') }}</td>\n <td>{{ i18n.msgStr('event') }}</td>\n <td>{{ i18n.msgStr('ip') }}</td>\n <td>{{ i18n.msgStr('client') }}</td>\n <td>{{ i18n.msgStr('details') }}</td>\n </tr>\n </thead>\n\n <tbody>\n @for (event of log.events; track event) {\n <tr>\n <td>{{ event.date ? (event.date | date) : '' }}</td>\n <td>{{ event.event }}</td>\n <td>{{ event.ipAddress }}</td>\n <td>{{ event.client || '' }}</td>\n <td>\n @for (detail of event.details; track detail; let last = $last) {\n <span>\n {{ detail.key }} = {{ detail.value }}\n @if (!last) {\n ,&nbsp;\n }\n </span>\n }\n </td>\n </tr>\n }\n </tbody>\n </table>\n</div>\n", dependencies: [{ kind: "directive", type: KcClassDirective, selector: "[kcClass]", inputs: ["class", "ngClass", "kcClass"] }, { kind: "pipe", type: DatePipe, name: "date" }] }); }
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: i0, type: LogComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: LogComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{ imports: [KcClassDirective, NgClass, DatePipe], selector: 'kc-log', providers: [
31
31
  {