@authup/client-web-kit 1.0.0-beta.44 → 1.0.0-beta.46

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 (143) hide show
  1. package/dist/components/entities/client/AClientForm.vue.d.ts +276 -41
  2. package/dist/components/entities/client/AClientForm.vue.d.ts.map +1 -1
  3. package/dist/components/entities/client/AClients.d.ts.map +1 -1
  4. package/dist/components/entities/client-scope/AClientScopes.d.ts.map +1 -1
  5. package/dist/components/entities/identity-provider/AIdentityProviderBasicFields.vue.d.ts +118 -323
  6. package/dist/components/entities/identity-provider/AIdentityProviderBasicFields.vue.d.ts.map +1 -1
  7. package/dist/components/entities/identity-provider/AIdentityProviderForm.vue.d.ts +283 -3087
  8. package/dist/components/entities/identity-provider/AIdentityProviderForm.vue.d.ts.map +1 -1
  9. package/dist/components/entities/identity-provider/AIdentityProviderLdapConnectionFields.vue.d.ts +3 -358
  10. package/dist/components/entities/identity-provider/AIdentityProviderLdapConnectionFields.vue.d.ts.map +1 -1
  11. package/dist/components/entities/identity-provider/AIdentityProviderLdapCredentialsFields.vue.d.ts +3 -255
  12. package/dist/components/entities/identity-provider/AIdentityProviderLdapCredentialsFields.vue.d.ts.map +1 -1
  13. package/dist/components/entities/identity-provider/AIdentityProviderLdapForm.vue.d.ts +146 -1554
  14. package/dist/components/entities/identity-provider/AIdentityProviderLdapForm.vue.d.ts.map +1 -1
  15. package/dist/components/entities/identity-provider/AIdentityProviderLdapGroupFields.vue.d.ts +3 -258
  16. package/dist/components/entities/identity-provider/AIdentityProviderLdapGroupFields.vue.d.ts.map +1 -1
  17. package/dist/components/entities/identity-provider/AIdentityProviderLdapUserFields.vue.d.ts +3 -257
  18. package/dist/components/entities/identity-provider/AIdentityProviderLdapUserFields.vue.d.ts.map +1 -1
  19. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2ClientFields.vue.d.ts +3 -245
  20. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2ClientFields.vue.d.ts.map +1 -1
  21. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2Discovery.vue.d.ts +0 -237
  22. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2Discovery.vue.d.ts.map +1 -1
  23. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2EndpointFields.vue.d.ts +3 -3
  24. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2EndpointFields.vue.d.ts.map +1 -1
  25. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2Form.vue.d.ts +142 -1415
  26. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2Form.vue.d.ts.map +1 -1
  27. package/dist/components/entities/identity-provider/AIdentityProviders.d.ts.map +1 -1
  28. package/dist/components/entities/identity-provider/index.d.ts +3 -3
  29. package/dist/components/entities/identity-provider/index.d.ts.map +1 -1
  30. package/dist/components/entities/identity-provider-role/AIdentityProviderRoleAssignment.vue.d.ts +2 -1
  31. package/dist/components/entities/identity-provider-role/AIdentityProviderRoleAssignment.vue.d.ts.map +1 -1
  32. package/dist/components/entities/identity-provider-role/AIdentityProviderRoleAssignments.vue.d.ts +1 -1
  33. package/dist/components/entities/identity-provider-role/AIdentityProviderRoleAssignments.vue.d.ts.map +1 -1
  34. package/dist/components/entities/permission/APermissionForm.vue.d.ts +118 -478
  35. package/dist/components/entities/permission/APermissionForm.vue.d.ts.map +1 -1
  36. package/dist/components/entities/permission/APermissions.d.ts.map +1 -1
  37. package/dist/components/entities/permission/index.d.ts +1 -1
  38. package/dist/components/entities/permission/index.d.ts.map +1 -1
  39. package/dist/components/entities/permission-policy/APermissionPolicyAssignments.vue.d.ts +1 -0
  40. package/dist/components/entities/permission-policy/APermissionPolicyAssignments.vue.d.ts.map +1 -1
  41. package/dist/components/entities/policy/APolicies.d.ts.map +1 -1
  42. package/dist/components/entities/policy/APolicyBasicForm.vue.d.ts +136 -0
  43. package/dist/components/entities/policy/APolicyBasicForm.vue.d.ts.map +1 -1
  44. package/dist/components/entities/policy/APolicyDetailNav.vue.d.ts +1 -0
  45. package/dist/components/entities/policy/APolicyDetailNav.vue.d.ts.map +1 -1
  46. package/dist/components/entities/policy/APolicyForm.vue.d.ts +136 -0
  47. package/dist/components/entities/policy/APolicyForm.vue.d.ts.map +1 -1
  48. package/dist/components/entities/policy/APolicyInlineInfo.vue.d.ts +1 -0
  49. package/dist/components/entities/policy/APolicyInlineInfo.vue.d.ts.map +1 -1
  50. package/dist/components/entities/policy/attribute-names/AAttributeNamesPolicyForm.vue.d.ts +1 -37
  51. package/dist/components/entities/policy/attribute-names/AAttributeNamesPolicyForm.vue.d.ts.map +1 -1
  52. package/dist/components/entities/policy/composite/ACompositePolicyForm.vue.d.ts.map +1 -1
  53. package/dist/components/entities/policy/date/ADatePolicyForm.vue.d.ts +2 -0
  54. package/dist/components/entities/policy/date/ADatePolicyForm.vue.d.ts.map +1 -1
  55. package/dist/components/entities/policy/identity/AIdentityPolicyForm.vue.d.ts +1 -37
  56. package/dist/components/entities/policy/identity/AIdentityPolicyForm.vue.d.ts.map +1 -1
  57. package/dist/components/entities/policy/realm-match/ARealmMatchPolicyForm.vue.d.ts +1 -37
  58. package/dist/components/entities/policy/realm-match/ARealmMatchPolicyForm.vue.d.ts.map +1 -1
  59. package/dist/components/entities/policy/time/ATimePolicyForm.vue.d.ts +2 -0
  60. package/dist/components/entities/policy/time/ATimePolicyForm.vue.d.ts.map +1 -1
  61. package/dist/components/entities/realm/ARealmForm.vue.d.ts +120 -316
  62. package/dist/components/entities/realm/ARealmForm.vue.d.ts.map +1 -1
  63. package/dist/components/entities/realm/ARealms.d.ts.map +1 -1
  64. package/dist/components/entities/realm/index.d.ts +1 -1
  65. package/dist/components/entities/realm/index.d.ts.map +1 -1
  66. package/dist/components/entities/robot/ARobotForm.vue.d.ts +242 -386
  67. package/dist/components/entities/robot/ARobotForm.vue.d.ts.map +1 -1
  68. package/dist/components/entities/robot/ARobots.d.ts.map +1 -1
  69. package/dist/components/entities/robot/index.d.ts +1 -1
  70. package/dist/components/entities/robot/index.d.ts.map +1 -1
  71. package/dist/components/entities/role/ARoleForm.vue.d.ts +120 -402
  72. package/dist/components/entities/role/ARoleForm.vue.d.ts.map +1 -1
  73. package/dist/components/entities/role/ARoles.d.ts.map +1 -1
  74. package/dist/components/entities/role/index.d.ts +1 -1
  75. package/dist/components/entities/role/index.d.ts.map +1 -1
  76. package/dist/components/entities/scope/AScopeForm.vue.d.ts +120 -409
  77. package/dist/components/entities/scope/AScopeForm.vue.d.ts.map +1 -1
  78. package/dist/components/entities/scope/AScopes.d.ts.map +1 -1
  79. package/dist/components/entities/scope/index.d.ts +1 -1
  80. package/dist/components/entities/scope/index.d.ts.map +1 -1
  81. package/dist/components/entities/user/AUserForm.vue.d.ts +117 -496
  82. package/dist/components/entities/user/AUserForm.vue.d.ts.map +1 -1
  83. package/dist/components/entities/user/AUserPasswordForm.vue.d.ts +0 -385
  84. package/dist/components/entities/user/AUserPasswordForm.vue.d.ts.map +1 -1
  85. package/dist/components/entities/user/AUsers.d.ts.map +1 -1
  86. package/dist/components/entities/user/index.d.ts +2 -2
  87. package/dist/components/entities/user/index.d.ts.map +1 -1
  88. package/dist/components/utility/ANameInput.vue.d.ts +151 -0
  89. package/dist/components/utility/ANameInput.vue.d.ts.map +1 -0
  90. package/dist/components/utility/ASecretInput.vue.d.ts +156 -0
  91. package/dist/components/utility/ASecretInput.vue.d.ts.map +1 -0
  92. package/dist/components/utility/AToggleButton.vue.d.ts +0 -27
  93. package/dist/components/utility/AToggleButton.vue.d.ts.map +1 -1
  94. package/dist/components/utility/LanguageSwitcherDropdown.d.ts.map +1 -1
  95. package/dist/components/utility/entity/AEntityDelete.d.ts.map +1 -1
  96. package/dist/components/utility/form-input-list/AFormInputList.vue.d.ts +2 -37
  97. package/dist/components/utility/form-input-list/AFormInputList.vue.d.ts.map +1 -1
  98. package/dist/components/utility/form-input-list/AFormInputListItem.vue.d.ts.map +1 -1
  99. package/dist/components/utility/index.d.ts +2 -0
  100. package/dist/components/utility/index.d.ts.map +1 -1
  101. package/dist/components/utility/title/ATitle.d.ts.map +1 -1
  102. package/dist/components/utility/translation/index.d.ts +0 -1
  103. package/dist/components/utility/translation/index.d.ts.map +1 -1
  104. package/dist/components/workflows/Login.vue.d.ts +2 -0
  105. package/dist/components/workflows/Login.vue.d.ts.map +1 -1
  106. package/dist/components/workflows/authorize/Authorize.vue.d.ts +5 -0
  107. package/dist/components/workflows/authorize/Authorize.vue.d.ts.map +1 -1
  108. package/dist/components/workflows/authorize/AuthorizeForm.vue.d.ts +4 -0
  109. package/dist/components/workflows/authorize/AuthorizeForm.vue.d.ts.map +1 -1
  110. package/dist/components/workflows/authorize/AuthorizeScopes.vue.d.ts +2 -0
  111. package/dist/components/workflows/authorize/AuthorizeScopes.vue.d.ts.map +1 -1
  112. package/dist/core/form/defaults.d.ts.map +1 -1
  113. package/dist/core/translator/helpers.d.ts +25 -6
  114. package/dist/core/translator/helpers.d.ts.map +1 -1
  115. package/dist/core/translator/index.d.ts +0 -1
  116. package/dist/core/translator/index.d.ts.map +1 -1
  117. package/dist/core/translator/install.d.ts +7 -6
  118. package/dist/core/translator/install.d.ts.map +1 -1
  119. package/dist/core/translator/singleton.d.ts +12 -0
  120. package/dist/core/translator/singleton.d.ts.map +1 -1
  121. package/dist/index.mjs +2232 -843
  122. package/dist/index.mjs.map +1 -1
  123. package/package.json +27 -25
  124. package/dist/components/utility/translation/ATranslationDefault.vue.d.ts +0 -43
  125. package/dist/components/utility/translation/ATranslationDefault.vue.d.ts.map +0 -1
  126. package/dist/core/translator/constants.d.ts +0 -61
  127. package/dist/core/translator/constants.d.ts.map +0 -1
  128. package/dist/core/translator/de/client.d.ts +0 -3
  129. package/dist/core/translator/de/client.d.ts.map +0 -1
  130. package/dist/core/translator/de/default.d.ts +0 -3
  131. package/dist/core/translator/de/default.d.ts.map +0 -1
  132. package/dist/core/translator/de/index.d.ts +0 -4
  133. package/dist/core/translator/de/index.d.ts.map +0 -1
  134. package/dist/core/translator/de/vuecs.d.ts +0 -3
  135. package/dist/core/translator/de/vuecs.d.ts.map +0 -1
  136. package/dist/core/translator/en/client.d.ts +0 -3
  137. package/dist/core/translator/en/client.d.ts.map +0 -1
  138. package/dist/core/translator/en/default.d.ts +0 -3
  139. package/dist/core/translator/en/default.d.ts.map +0 -1
  140. package/dist/core/translator/en/index.d.ts +0 -4
  141. package/dist/core/translator/en/index.d.ts.map +0 -1
  142. package/dist/core/translator/en/vuecs.d.ts +0 -3
  143. package/dist/core/translator/en/vuecs.d.ts.map +0 -1
package/dist/index.mjs CHANGED
@@ -1,10 +1,11 @@
1
1
  import { createValidup, getSeverity, useValidup } from "@validup/vue";
2
2
  import { Container, OptionalValue, ValidupError, defineIssueItem } from "validup";
3
3
  import { ClientValidator, EntityDefaultEventName, EntityType, IdentityProviderPreset, IdentityProviderProtocol, IdentityProviderValidator, PermissionValidator, PolicyValidator, REALM_MASTER_NAME, RealmValidator, RobotValidator, RoleValidator, ScopeValidator, UserValidator, buildEntityChannelName, buildUserFakeEmail, getIdentityProviderProtocolForPreset, isUserFakeEmail } from "@authup/core-kit";
4
- import { Fragment, Suspense, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentInstance, guardReactiveProps, h, hasInjectionContext, inject as inject$1, isReactive, isRef, mergeProps, nextTick, normalizeClass, normalizeProps, onMounted, onUnmounted, openBlock, provide as provide$1, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, toRef, unref, watch, withCtx, withModifiers } from "vue";
4
+ import { Fragment, Suspense, Teleport, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, getCurrentInstance, guardReactiveProps, h, hasInjectionContext, inject as inject$1, isReactive, isRef, mergeProps, nextTick, normalizeClass, normalizeProps, onMounted, onUnmounted, openBlock, provide as provide$1, reactive, ref, renderList, renderSlot, resolveComponent, resolveDynamicComponent, toDisplayString, toRaw, toRef, unref, useId, watch, withCtx, withModifiers } from "vue";
5
5
  import { VCFormCheckbox, VCFormGroup, VCFormInput, VCFormSelect, VCFormSwitch, VCFormTextarea, useSubmitButton } from "@vuecs/forms";
6
6
  import { createValidator } from "@validup/zod";
7
7
  import { IFieldValidation, install as install$1, useTranslationsForComposable as useTranslationsForComposable$1, useTranslationsForField as useTranslationsForField$1 } from "@ilingo/validup-vue";
8
+ import { CATALOGS, LOCALES, TranslatorTranslationActionKey, TranslatorTranslationClientKey, TranslatorTranslationCommonKey, TranslatorTranslationEntityKey, TranslatorTranslationFieldKey, TranslatorTranslationNamespace, TranslatorTranslationVuecsKey } from "@authup/i18n";
8
9
  import { Client, ClientAuthenticationHook, ClientAuthenticationHookEventName, CookieName } from "@authup/core-http-kit";
9
10
  import { defineStore, storeToRefs as storeToRefs$1 } from "pinia";
10
11
  import { BuiltInPolicyType, PermissionEvaluator, PermissionMemoryProvider, PolicyData, PolicyEngine, TimePolicyInterval, isIntervalForDayOfMonth, isIntervalForDayOfWeek, isIntervalForDayOfYear } from "@authup/access";
@@ -12,12 +13,12 @@ import { OAuth2Error, deserializeOAuth2Scope, isOpenIDProviderMetadata } from "@
12
13
  import { useCookies } from "@vueuse/integrations/useCookies";
13
14
  import { extend } from "@vuecs/core";
14
15
  import { VCButton } from "@vuecs/button";
15
- import { injectLocale, install as install$2, useTranslation as useTranslation$1 } from "@ilingo/vue";
16
- import { MemoryStore, defineCatalog, defineLocale, defineNamespace, defineTranslations } from "ilingo";
16
+ import { injectIlingo, injectLocale, install as install$2, useTranslation as useTranslation$1 } from "@ilingo/vue";
17
+ import { MemoryStore } from "ilingo";
17
18
  import { createMerger, isObject, merge } from "smob";
18
19
  import { SortDirection } from "rapiq";
19
20
  import { ClientManager, EventNameSuffix, buildEventFullName } from "@authup/core-realtime-kit";
20
- import { DecisionStrategy, ValidatorGroup, base64URLEncode, createNanoID, extendObject, hasOwnProperty, isBCryptHash, isObject as isObject$1 } from "@authup/kit";
21
+ import { DecisionStrategy, ValidatorGroup, base64URLEncode, extendObject, generateName, generateSecret, hasOwnProperty, isBCryptHash, isObject as isObject$1 } from "@authup/kit";
21
22
  import { VCPagination } from "@vuecs/pagination";
22
23
  import { VCList, VCListBody, VCListEmpty, VCListItem, VCListLoading } from "@vuecs/list";
23
24
  //#region \0rolldown/runtime.js
@@ -3088,8 +3089,8 @@ var _plugin_vue_export_helper_default = (sfc, props) => {
3088
3089
  };
3089
3090
  //#endregion
3090
3091
  //#region src/components/utility/form-input-list/AFormInputListItem.vue
3091
- const _hoisted_1$25 = ["disabled"];
3092
- function _sfc_render$54(_ctx, _cache, $props, $setup, $data, $options) {
3092
+ const _hoisted_1$37 = ["disabled"];
3093
+ function _sfc_render$72(_ctx, _cache, $props, $setup, $data, $options) {
3093
3094
  const _component_VCIcon = resolveComponent("VCIcon");
3094
3095
  const _component_VCFormInput = resolveComponent("VCFormInput");
3095
3096
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
@@ -3106,7 +3107,7 @@ function _sfc_render$54(_ctx, _cache, $props, $setup, $data, $options) {
3106
3107
  type: "button",
3107
3108
  class: "btn btn-xs btn-warning",
3108
3109
  onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.handleDeleted && _ctx.handleDeleted(...args), ["prevent"]))
3109
- }, [createVNode(_component_VCIcon, { name: "fa6-solid:minus" })], 8, _hoisted_1$25)]),
3110
+ }, [createVNode(_component_VCIcon, { name: "fa6-solid:minus" })], 8, _hoisted_1$37)]),
3110
3111
  _: 1
3111
3112
  }, 8, [
3112
3113
  "modelValue",
@@ -3118,7 +3119,7 @@ function _sfc_render$54(_ctx, _cache, $props, $setup, $data, $options) {
3118
3119
  _: 1
3119
3120
  }, 8, ["field"]);
3120
3121
  }
3121
- var AFormInputListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AFormInputListItem_vue_vue_type_script_lang_default, [["render", _sfc_render$54]]);
3122
+ var AFormInputListItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AFormInputListItem_vue_vue_type_script_lang_default, [["render", _sfc_render$72]]);
3122
3123
  //#endregion
3123
3124
  //#region src/core/inject.ts
3124
3125
  function inject(key, instance) {
@@ -3773,72 +3774,6 @@ function buildFormSubmit(input) {
3773
3774
  }, () => label);
3774
3775
  }
3775
3776
  //#endregion
3776
- //#region src/core/translator/constants.ts
3777
- /**
3778
- * Catalog namespace names registered by `installTranslator`. Mirrors
3779
- * ilingo 6's catalog terminology — namespaces are the dotted root paths
3780
- * under each locale.
3781
- *
3782
- * The `validup` namespace (validation-message catalogs for `IssueCode`
3783
- * keys) is registered automatically by `@ilingo/validup-vue`'s install
3784
- * and is **not** part of this enum.
3785
- */
3786
- let TranslatorTranslationNamespace = /* @__PURE__ */ function(TranslatorTranslationNamespace) {
3787
- TranslatorTranslationNamespace["DEFAULT"] = "default";
3788
- TranslatorTranslationNamespace["CLIENT"] = "authupClient";
3789
- TranslatorTranslationNamespace["VUECS"] = "vuecs";
3790
- return TranslatorTranslationNamespace;
3791
- }({});
3792
- let TranslatorTranslationVuecsKey = /* @__PURE__ */ function(TranslatorTranslationVuecsKey) {
3793
- TranslatorTranslationVuecsKey["NO_MORE"] = "noMore";
3794
- return TranslatorTranslationVuecsKey;
3795
- }({});
3796
- let TranslatorTranslationClientKey = /* @__PURE__ */ function(TranslatorTranslationClientKey) {
3797
- TranslatorTranslationClientKey["NAME_HINT"] = "nameHint";
3798
- TranslatorTranslationClientKey["DESCRIPTION_HINT"] = "descriptionHint";
3799
- TranslatorTranslationClientKey["REDIRECT_URI_HINT"] = "redirectURIHint";
3800
- TranslatorTranslationClientKey["IS_CONFIDENTIAL"] = "isConfidential";
3801
- TranslatorTranslationClientKey["IS_ACTIVE"] = "isActive";
3802
- TranslatorTranslationClientKey["HASH_SECRET"] = "hashSecret";
3803
- return TranslatorTranslationClientKey;
3804
- }({});
3805
- let TranslatorTranslationDefaultKey = /* @__PURE__ */ function(TranslatorTranslationDefaultKey) {
3806
- TranslatorTranslationDefaultKey["ADD"] = "add";
3807
- TranslatorTranslationDefaultKey["CREATE"] = "create";
3808
- TranslatorTranslationDefaultKey["DELETE"] = "delete";
3809
- TranslatorTranslationDefaultKey["GENERATE"] = "generate";
3810
- TranslatorTranslationDefaultKey["UPDATE"] = "update";
3811
- TranslatorTranslationDefaultKey["ACTIVE"] = "active";
3812
- TranslatorTranslationDefaultKey["INACTIVE"] = "inactive";
3813
- TranslatorTranslationDefaultKey["LOCKED"] = "locked";
3814
- TranslatorTranslationDefaultKey["NOT_LOCKED"] = "notLocked";
3815
- TranslatorTranslationDefaultKey["VALUE_IS_REGEX"] = "valueIsRegex";
3816
- TranslatorTranslationDefaultKey["CLIENT"] = "client";
3817
- TranslatorTranslationDefaultKey["CLIENTS"] = "clients";
3818
- TranslatorTranslationDefaultKey["CLIENT_SCOPES"] = "clientScopes";
3819
- TranslatorTranslationDefaultKey["DISPLAY_NAME"] = "displayName";
3820
- TranslatorTranslationDefaultKey["EMAIL"] = "email";
3821
- TranslatorTranslationDefaultKey["EXTERNAL_ID"] = "externalId";
3822
- TranslatorTranslationDefaultKey["HASHED"] = "hashed";
3823
- TranslatorTranslationDefaultKey["OVERVIEW"] = "overview";
3824
- TranslatorTranslationDefaultKey["IDENTITY_PROVIDERS"] = "identityProviders";
3825
- TranslatorTranslationDefaultKey["NAME"] = "name";
3826
- TranslatorTranslationDefaultKey["DECISION_STRATEGY"] = "decisionStrategy";
3827
- TranslatorTranslationDefaultKey["DESCRIPTION"] = "description";
3828
- TranslatorTranslationDefaultKey["PERMISSIONS"] = "permissions";
3829
- TranslatorTranslationDefaultKey["POLICY"] = "policy";
3830
- TranslatorTranslationDefaultKey["POLICIES"] = "policies";
3831
- TranslatorTranslationDefaultKey["REALM"] = "realm";
3832
- TranslatorTranslationDefaultKey["ROBOTS"] = "robots";
3833
- TranslatorTranslationDefaultKey["REALMS"] = "realms";
3834
- TranslatorTranslationDefaultKey["ROLES"] = "roles";
3835
- TranslatorTranslationDefaultKey["SCOPES"] = "scopes";
3836
- TranslatorTranslationDefaultKey["SECRET"] = "secret";
3837
- TranslatorTranslationDefaultKey["REDIRECT_URIS"] = "redirectUris";
3838
- TranslatorTranslationDefaultKey["USERS"] = "users";
3839
- return TranslatorTranslationDefaultKey;
3840
- }({});
3841
- //#endregion
3842
3777
  //#region src/core/translator/singleton.ts
3843
3778
  function injectTranslatorLocale() {
3844
3779
  return injectLocale();
@@ -3847,6 +3782,24 @@ function useTranslation(input) {
3847
3782
  return useTranslation$1(input);
3848
3783
  }
3849
3784
  /**
3785
+ * Imperative counterpart to {@see useTranslation} for non-reactive,
3786
+ * event-time lookups — toast bodies built when a mutation resolves, or
3787
+ * nav-label resolution inside the async `Navigation.reduce()` pipeline,
3788
+ * where a render-time `Ref` is the wrong shape. Captures the injected
3789
+ * ilingo instance + locale `Ref` at call site (so it must run in
3790
+ * `setup()`), then returns a translate function that reads the current
3791
+ * `locale.value` on each invocation. Missing keys resolve to the bare
3792
+ * key value rather than `undefined`.
3793
+ */
3794
+ function useTranslator() {
3795
+ const ilingo = injectIlingo();
3796
+ const locale = injectLocale();
3797
+ return async (ctx) => await ilingo.get({
3798
+ ...ctx,
3799
+ locale: locale.value
3800
+ }) ?? ctx.key;
3801
+ }
3802
+ /**
3850
3803
  * Translate the visible errors of a `@validup/vue` `FieldState` to
3851
3804
  * localized messages. Successor to the previous
3852
3805
  * `useTranslationsForBaseValidation` — reads `fieldState.$errors`
@@ -3867,116 +3820,29 @@ function useTranslationsForComposable(composable) {
3867
3820
  //#endregion
3868
3821
  //#region src/core/translator/helpers.ts
3869
3822
  /**
3870
- * Resolve a batch of translations under a single namespace. Returns a
3871
- * keyed map of `Ref<string>`s, one per element.
3823
+ * Resolve a batch of translations spanning any number of namespaces.
3824
+ * Each element supplies its own `namespace`; the result is a reactive
3825
+ * keyed map of unwrapped strings — access as `map.key` (no `.value`) in
3826
+ * script, interpolation, and attribute bindings alike. The output key is
3827
+ * the element's `key`.
3872
3828
  */
3873
- function useTranslationsForNamespace(namespace, elements) {
3829
+ function useTranslations(elements) {
3874
3830
  const output = {};
3875
- for (const element of elements) output[element.key] = useTranslation({
3831
+ for (const element of elements) output[element.key] = useTranslation(element);
3832
+ return reactive(output);
3833
+ }
3834
+ /**
3835
+ * Single-namespace sugar over {@see useTranslations}: applies one shared
3836
+ * `namespace` to every element. Retained for batches that live entirely
3837
+ * in one namespace (e.g. the `authupApp` chrome labels).
3838
+ */
3839
+ function useTranslationsForNamespace(namespace, elements) {
3840
+ return useTranslations(elements.map((element) => ({
3876
3841
  ...element,
3877
3842
  namespace
3878
- });
3879
- return output;
3843
+ })));
3880
3844
  }
3881
3845
  //#endregion
3882
- //#region src/core/translator/de/client.ts
3883
- const TranslatorTranslationClientGerman = {
3884
- ["nameHint"]: "Etwas, das Benutzer erkennen und vertrauen werden",
3885
- ["descriptionHint"]: "Dies wird allen Benutzern dieser Anwendung angezeigt",
3886
- ["redirectURIHint"]: "URI-Muster, zu dem ein Browser nach einem erfolgreichen Login weiterleiten kann",
3887
- ["isConfidential"]: "Ist vertraulich?",
3888
- ["isActive"]: "Ist aktiv?",
3889
- ["hashSecret"]: "Geheimnis hashen?"
3890
- };
3891
- //#endregion
3892
- //#region src/core/translator/de/default.ts
3893
- const TranslatorTranslationDefaultGerman = {
3894
- ["add"]: "hinzufügen",
3895
- ["create"]: "erstellen",
3896
- ["delete"]: "löschen",
3897
- ["generate"]: "generieren",
3898
- ["update"]: "aktualisieren",
3899
- ["active"]: "aktiv",
3900
- ["inactive"]: "inaktiv",
3901
- ["locked"]: "gesperrt",
3902
- ["notLocked"]: "nicht gesperrt",
3903
- ["valueIsRegex"]: "Wert ist regex pattern?",
3904
- ["client"]: "Client",
3905
- ["clients"]: "Clients",
3906
- ["clientScopes"]: "Client-Bereiche",
3907
- ["displayName"]: "Anzeigename",
3908
- ["email"]: "E-Mail",
3909
- ["externalId"]: "externe ID",
3910
- ["hashed"]: "gehasht",
3911
- ["overview"]: "Überblick",
3912
- ["identityProviders"]: "Identitätsanbieter",
3913
- ["name"]: "Name",
3914
- ["decisionStrategy"]: "Entscheidungsstrategie",
3915
- ["description"]: "Beschreibung",
3916
- ["permissions"]: "Berechtigungen",
3917
- ["policy"]: "Richtlinie",
3918
- ["policies"]: "Richtlinien",
3919
- ["realm"]: "Organisation",
3920
- ["realms"]: "Organisationen",
3921
- ["roles"]: "Rollen",
3922
- ["scopes"]: "Bereiche",
3923
- ["secret"]: "Geheimnis",
3924
- ["redirectUris"]: "Weiterleitungs-URIs",
3925
- ["users"]: "Benutzer"
3926
- };
3927
- //#endregion
3928
- //#region src/core/translator/de/vuecs.ts
3929
- const TranslatorTranslationVuecsGerman = { ["noMore"]: "Keine weiteren {{name}} verfügbar" };
3930
- //#endregion
3931
- //#region src/core/translator/en/client.ts
3932
- const TranslatorTranslationClientEnglish = {
3933
- ["nameHint"]: "Something users will recognize and trust",
3934
- ["descriptionHint"]: "Displayed to all users of this application",
3935
- ["redirectURIHint"]: "URI pattern a browser can redirect to after a successful login",
3936
- ["isConfidential"]: "Is confidential?",
3937
- ["isActive"]: "Is active?",
3938
- ["hashSecret"]: "Hash secret?"
3939
- };
3940
- //#endregion
3941
- //#region src/core/translator/en/default.ts
3942
- const TranslatorTranslationDefaultEnglish = {
3943
- ["add"]: "add",
3944
- ["create"]: "create",
3945
- ["delete"]: "delete",
3946
- ["generate"]: "generate",
3947
- ["update"]: "update",
3948
- ["active"]: "active",
3949
- ["inactive"]: "inactive",
3950
- ["locked"]: "locked",
3951
- ["notLocked"]: "not locked",
3952
- ["valueIsRegex"]: "Value is regex pattern?",
3953
- ["client"]: "update",
3954
- ["clients"]: "clients",
3955
- ["clientScopes"]: "client scopes",
3956
- ["displayName"]: "display name",
3957
- ["email"]: "email",
3958
- ["externalId"]: "external id",
3959
- ["hashed"]: "hashed",
3960
- ["overview"]: "overview",
3961
- ["identityProviders"]: "identity providers",
3962
- ["name"]: "name",
3963
- ["decisionStrategy"]: "decision strategy",
3964
- ["description"]: "description",
3965
- ["policy"]: "policy",
3966
- ["policies"]: "policies",
3967
- ["permissions"]: "permissions",
3968
- ["realm"]: "realm",
3969
- ["realms"]: "realms",
3970
- ["roles"]: "roles",
3971
- ["scopes"]: "scopes",
3972
- ["secret"]: "secret",
3973
- ["redirectUris"]: "redirect uri(s)",
3974
- ["users"]: "users"
3975
- };
3976
- //#endregion
3977
- //#region src/core/translator/en/vuecs.ts
3978
- const TranslatorTranslationVuecsEnglish = { ["noMore"]: "No more {{name}} available" };
3979
- //#endregion
3980
3846
  //#region src/core/translator/install.ts
3981
3847
  /**
3982
3848
  * Three-stage install:
@@ -3991,12 +3857,13 @@ const TranslatorTranslationVuecsEnglish = { ["noMore"]: "No more {{name}} availa
3991
3857
  * rather than globally — keeps the form's `components: {}` registry as
3992
3858
  * the single source of truth for what's used in its template.
3993
3859
  *
3994
- * Authup-specific catalogs (`authupClient`, `default`, `vuecs`) ship
3995
- * through the same `MemoryStore` — the descriptor-tree shape required
3996
- * by ilingo 6 is built via `defineCatalog` / `defineLocale` /
3997
- * `defineNamespace` / `defineTranslations` so the type system tracks
3998
- * the namespace tree and a misspelled namespace name is a compile
3999
- * error.
3860
+ * Authup-specific catalogs (`authupEntity`, `authupField`,
3861
+ * `authupAction`, `authupCommon`, `authupClient`, `authupApp`,
3862
+ * `vuecs`, `authupError`) ship through the same `MemoryStore`. The authored
3863
+ * translations live in the framework-agnostic `@authup/i18n` package,
3864
+ * which already exports them as an ilingo `CatalogNode` (`CATALOGS`)
3865
+ * the canonical ingestion format — so this install just hands it to the
3866
+ * store directly with no per-consumer reconstruction.
4000
3867
  *
4001
3868
  * Zod-driven validators flow through `@validup/zod`'s
4002
3869
  * `createValidator()`, which maps each `ZodIssue` to a specific validup
@@ -4014,15 +3881,7 @@ const TranslatorTranslationVuecsEnglish = { ["noMore"]: "No more {{name}} availa
4014
3881
  */
4015
3882
  function installTranslator(app, options = {}) {
4016
3883
  install$2(app, {
4017
- store: new MemoryStore({ data: defineCatalog([defineLocale("en", [
4018
- defineNamespace("authupClient", [defineTranslations(TranslatorTranslationClientEnglish)]),
4019
- defineNamespace("default", [defineTranslations(TranslatorTranslationDefaultEnglish)]),
4020
- defineNamespace("vuecs", [defineTranslations(TranslatorTranslationVuecsEnglish)])
4021
- ]), defineLocale("de", [
4022
- defineNamespace("authupClient", [defineTranslations(TranslatorTranslationClientGerman)]),
4023
- defineNamespace("default", [defineTranslations(TranslatorTranslationDefaultGerman)]),
4024
- defineNamespace("vuecs", [defineTranslations(TranslatorTranslationVuecsGerman)])
4025
- ])]) }),
3884
+ store: new MemoryStore({ data: CATALOGS }),
4026
3885
  locale: options.locale
4027
3886
  });
4028
3887
  install$1(app);
@@ -4043,12 +3902,12 @@ function installTranslator(app, options = {}) {
4043
3902
  function buildSubmitButtonDefaults() {
4044
3903
  return {
4045
3904
  createText: useTranslation({
4046
- namespace: "default",
4047
- key: "create"
3905
+ namespace: TranslatorTranslationNamespace.ACTION,
3906
+ key: TranslatorTranslationActionKey.CREATE
4048
3907
  }),
4049
3908
  updateText: useTranslation({
4050
- namespace: "default",
4051
- key: "update"
3909
+ namespace: TranslatorTranslationNamespace.ACTION,
3910
+ key: TranslatorTranslationActionKey.UPDATE
4052
3911
  }),
4053
3912
  createIcon: "fa6-solid:plus",
4054
3913
  updateIcon: "fa6-solid:floppy-disk",
@@ -4274,54 +4133,9 @@ function extractValidupResultsFromChild(composable, name, keys) {
4274
4133
  return output;
4275
4134
  }
4276
4135
  //#endregion
4277
- //#region src/components/utility/translation/ATranslationDefault.vue?vue&type=script&lang.ts
4278
- var ATranslationDefault_vue_vue_type_script_lang_default = defineComponent({
4279
- components: { ATranslation: defineComponent({
4280
- props: {
4281
- group: {
4282
- type: String,
4283
- required: true
4284
- },
4285
- name: {
4286
- type: String,
4287
- required: true
4288
- }
4289
- },
4290
- setup(props, { slots }) {
4291
- const translation = useTranslation({
4292
- namespace: props.group,
4293
- key: props.name
4294
- });
4295
- return () => {
4296
- if (hasNormalizedSlot("default", slots)) return normalizeSlot("default", { data: translation.value }, slots);
4297
- return [translation.value];
4298
- };
4299
- }
4300
- }) },
4301
- props: { name: {
4302
- type: String,
4303
- required: true
4304
- } },
4305
- setup() {
4306
- return { TranslatorTranslationNamespace };
4307
- }
4308
- });
4309
- //#endregion
4310
- //#region src/components/utility/translation/ATranslationDefault.vue
4311
- function _sfc_render$53(_ctx, _cache, $props, $setup, $data, $options) {
4312
- const _component_ATranslation = resolveComponent("ATranslation");
4313
- return openBlock(), createBlock(_component_ATranslation, {
4314
- group: _ctx.TranslatorTranslationNamespace.DEFAULT,
4315
- name: _ctx.name
4316
- }, null, 8, ["group", "name"]);
4317
- }
4318
- //#endregion
4319
4136
  //#region src/components/utility/form-input-list/AFormInputList.vue?vue&type=script&lang.ts
4320
4137
  var AFormInputList_vue_vue_type_script_lang_default = defineComponent({
4321
- components: {
4322
- ATranslationDefault: /* @__PURE__ */ _plugin_vue_export_helper_default(ATranslationDefault_vue_vue_type_script_lang_default, [["render", _sfc_render$53]]),
4323
- AFormInputListItem: AFormInputListItem_default
4324
- },
4138
+ components: { AFormInputListItem: AFormInputListItem_default },
4325
4139
  props: {
4326
4140
  names: {
4327
4141
  type: Array,
@@ -4338,6 +4152,10 @@ var AFormInputList_vue_vue_type_script_lang_default = defineComponent({
4338
4152
  },
4339
4153
  emits: ["changed"],
4340
4154
  setup(props, setup) {
4155
+ const translationsAction = useTranslations([{
4156
+ namespace: TranslatorTranslationNamespace.ACTION,
4157
+ key: TranslatorTranslationActionKey.ADD
4158
+ }]);
4341
4159
  let counter = 0;
4342
4160
  const items = ref([]);
4343
4161
  const add = (item) => {
@@ -4375,34 +4193,30 @@ var AFormInputList_vue_vue_type_script_lang_default = defineComponent({
4375
4193
  canDrop,
4376
4194
  handleDeleted,
4377
4195
  handleUpdated,
4378
- items
4196
+ items,
4197
+ translationsAction
4379
4198
  };
4380
4199
  }
4381
4200
  });
4382
4201
  //#endregion
4383
4202
  //#region src/components/utility/form-input-list/AFormInputList.vue
4384
- const _hoisted_1$24 = { class: "flex flex-col gap-2" };
4385
- const _hoisted_2$14 = { class: "flex flex-row" };
4386
- const _hoisted_3$12 = { class: "self-end" };
4387
- const _hoisted_4$10 = { class: "ms-auto" };
4388
- const _hoisted_5$8 = ["disabled"];
4389
- const _hoisted_6$7 = { class: "flex flex-col gap-1" };
4390
- function _sfc_render$52(_ctx, _cache, $props, $setup, $data, $options) {
4203
+ const _hoisted_1$36 = { class: "flex flex-col gap-2" };
4204
+ const _hoisted_2$19 = { class: "flex flex-row" };
4205
+ const _hoisted_3$15 = { class: "self-end" };
4206
+ const _hoisted_4$13 = { class: "ms-auto" };
4207
+ const _hoisted_5$12 = ["disabled"];
4208
+ const _hoisted_6$10 = { class: "flex flex-col gap-1" };
4209
+ function _sfc_render$71(_ctx, _cache, $props, $setup, $data, $options) {
4391
4210
  const _component_VCIcon = resolveComponent("VCIcon");
4392
- const _component_ATranslationDefault = resolveComponent("ATranslationDefault");
4393
4211
  const _component_AFormInputListItem = resolveComponent("AFormInputListItem");
4394
- return openBlock(), createElementBlock("div", _hoisted_1$24, [
4395
- createElementVNode("div", _hoisted_2$14, [createElementVNode("div", _hoisted_3$12, [renderSlot(_ctx.$slots, "label", {}, () => [_cache[1] || (_cache[1] = createTextVNode(" Names ", -1))])]), createElementVNode("div", _hoisted_4$10, [createElementVNode("button", {
4212
+ return openBlock(), createElementBlock("div", _hoisted_1$36, [
4213
+ createElementVNode("div", _hoisted_2$19, [createElementVNode("div", _hoisted_3$15, [renderSlot(_ctx.$slots, "label", {}, () => [_cache[1] || (_cache[1] = createTextVNode(" Names ", -1))])]), createElementVNode("div", _hoisted_4$13, [createElementVNode("button", {
4396
4214
  class: "btn btn-xs btn-primary",
4397
4215
  type: "button",
4398
4216
  disabled: !_ctx.canAdd,
4399
4217
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.add(), ["prevent"]))
4400
- }, [
4401
- createVNode(_component_VCIcon, { name: "fa6-solid:plus" }),
4402
- _cache[2] || (_cache[2] = createTextVNode()),
4403
- createVNode(_component_ATranslationDefault, { name: "add" })
4404
- ], 8, _hoisted_5$8)])]),
4405
- createElementVNode("div", _hoisted_6$7, [_ctx.items.length === 0 ? renderSlot(_ctx.$slots, "noItems", { key: 0 }, () => [_cache[3] || (_cache[3] = createElementVNode("div", { class: "alert alert-sm alert-info" }, " The form list has no items yet ", -1))]) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
4218
+ }, [createVNode(_component_VCIcon, { name: "fa6-solid:plus" }), createTextVNode(" " + toDisplayString(_ctx.translationsAction.add), 1)], 8, _hoisted_5$12)])]),
4219
+ createElementVNode("div", _hoisted_6$10, [_ctx.items.length === 0 ? renderSlot(_ctx.$slots, "noItems", { key: 0 }, () => [_cache[2] || (_cache[2] = createElementVNode("div", { class: "alert alert-sm alert-info" }, " The form list has no items yet ", -1))]) : createCommentVNode("v-if", true), (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.items, (item) => {
4406
4220
  return renderSlot(_ctx.$slots, "default", {
4407
4221
  key: item.id,
4408
4222
  item,
@@ -4428,7 +4242,7 @@ function _sfc_render$52(_ctx, _cache, $props, $setup, $data, $options) {
4428
4242
  renderSlot(_ctx.$slots, "hint")
4429
4243
  ]);
4430
4244
  }
4431
- var AFormInputList_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AFormInputList_vue_vue_type_script_lang_default, [["render", _sfc_render$52]]);
4245
+ var AFormInputList_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AFormInputList_vue_vue_type_script_lang_default, [["render", _sfc_render$71]]);
4432
4246
  //#endregion
4433
4247
  //#region src/components/utility/pagination/module.ts
4434
4248
  function buildPagination(ctx) {
@@ -5172,7 +4986,7 @@ function defineEntityManager(ctx) {
5172
4986
  }
5173
4987
  //#endregion
5174
4988
  //#region src/components/utility/toggle-button/AToggleButton.vue?vue&type=script&lang.ts
5175
- var AToggleButton_vue_vue_type_script_lang_default = defineComponent({
4989
+ var AToggleButton_vue_vue_type_script_lang_default$1 = defineComponent({
5176
4990
  props: {
5177
4991
  value: {
5178
4992
  type: Boolean,
@@ -5194,8 +5008,8 @@ var AToggleButton_vue_vue_type_script_lang_default = defineComponent({
5194
5008
  });
5195
5009
  //#endregion
5196
5010
  //#region src/components/utility/toggle-button/AToggleButton.vue
5197
- const _hoisted_1$23 = ["aria-label", "disabled"];
5198
- function _sfc_render$51(_ctx, _cache, $props, $setup, $data, $options) {
5011
+ const _hoisted_1$35 = ["aria-label", "disabled"];
5012
+ function _sfc_render$70(_ctx, _cache, $props, $setup, $data, $options) {
5199
5013
  const _component_VCIcon = resolveComponent("VCIcon");
5200
5014
  return openBlock(), createElementBlock("button", {
5201
5015
  type: "button",
@@ -5210,9 +5024,9 @@ function _sfc_render$51(_ctx, _cache, $props, $setup, $data, $options) {
5210
5024
  }, [createVNode(_component_VCIcon, {
5211
5025
  "aria-hidden": "true",
5212
5026
  name: _ctx.isBusy ? "fa6-solid:question" : _ctx.value ? "fa6-solid:minus" : "fa6-solid:plus"
5213
- }, null, 8, ["name"])], 10, _hoisted_1$23);
5027
+ }, null, 8, ["name"])], 10, _hoisted_1$35);
5214
5028
  }
5215
- var AToggleButton_default$1 = /*#__PURE__*/ _plugin_vue_export_helper_default(AToggleButton_vue_vue_type_script_lang_default, [["render", _sfc_render$51]]);
5029
+ var AToggleButton_default$1 = /*#__PURE__*/ _plugin_vue_export_helper_default(AToggleButton_vue_vue_type_script_lang_default$1, [["render", _sfc_render$70]]);
5216
5030
  //#endregion
5217
5031
  //#region src/components/utility/toggle-button/module.ts
5218
5032
  function renderToggleButton(options) {
@@ -5429,8 +5243,8 @@ const AEntityDelete = defineComponent({
5429
5243
  }
5430
5244
  });
5431
5245
  const translation = useTranslation({
5432
- namespace: "default",
5433
- key: "delete"
5246
+ namespace: TranslatorTranslationNamespace.ACTION,
5247
+ key: TranslatorTranslationActionKey.DELETE
5434
5248
  });
5435
5249
  const render = () => {
5436
5250
  let tag = "button";
@@ -5505,8 +5319,8 @@ const ATitle = defineComponent({
5505
5319
  slots: Object,
5506
5320
  setup(props, { slots }) {
5507
5321
  const translation = useTranslation({
5508
- namespace: "default",
5509
- key: "overview"
5322
+ namespace: TranslatorTranslationNamespace.COMMON,
5323
+ key: TranslatorTranslationCommonKey.OVERVIEW
5510
5324
  });
5511
5325
  return () => buildTitle({
5512
5326
  slots,
@@ -5526,14 +5340,14 @@ const LanguageSwitcherDropdown = defineComponent({
5526
5340
  async setup(props) {
5527
5341
  const opened = ref(false);
5528
5342
  const locale = injectLocale();
5529
- const locales = ["de", "en"];
5530
- const elements = computed(() => {
5531
- const output = [];
5532
- for (const locale_ of locales) output.push({
5533
- value: locale_,
5534
- active: locale.value === locale_
5535
- });
5536
- return output;
5343
+ const elements = computed(() => LOCALES.map((descriptor) => ({
5344
+ value: descriptor.code,
5345
+ label: descriptor.nativeName,
5346
+ active: locale.value === descriptor.code
5347
+ })));
5348
+ const activeCode = computed(() => {
5349
+ const match = LOCALES.find((descriptor) => descriptor.code === locale.value);
5350
+ return match ? match.code : locale.value;
5537
5351
  });
5538
5352
  const setLocale = (input) => {
5539
5353
  locale.value = input;
@@ -5545,7 +5359,7 @@ const LanguageSwitcherDropdown = defineComponent({
5545
5359
  event.preventDefault();
5546
5360
  opened.value = !opened.value;
5547
5361
  }
5548
- }, [locale.value]), h("div", { class: [
5362
+ }, [activeCode.value]), h("div", { class: [
5549
5363
  "dropdown-menu",
5550
5364
  "dropdown-menu-end",
5551
5365
  opened.value ? "show" : ""
@@ -5555,7 +5369,7 @@ const LanguageSwitcherDropdown = defineComponent({
5555
5369
  setLocale(element.value);
5556
5370
  },
5557
5371
  class: ["dropdown-item", element.active ? "active" : ""]
5558
- }, [element.value])))]);
5372
+ }, [element.label])))]);
5559
5373
  }
5560
5374
  });
5561
5375
  //#endregion
@@ -5588,6 +5402,175 @@ const AFormSubmit = defineComponent({
5588
5402
  }
5589
5403
  });
5590
5404
  //#endregion
5405
+ //#region src/components/utility/ANameInput.vue?vue&type=script&lang.ts
5406
+ /**
5407
+ * Name input with an attached "regenerate" button rendered inside the
5408
+ * `VCFormInput` group append slot. Clicking the button emits a freshly
5409
+ * generated, slug-safe entity name (e.g. `brave-otter-1a2b3c`) through the
5410
+ * same `update:modelValue` channel as typing, so callers can bind it with
5411
+ * `v-model` or `:model-value` + `@update:model-value` exactly like a plain
5412
+ * `<VCFormInput>`.
5413
+ *
5414
+ * When `disabled` is set (built-in / name-locked / master entities) the append
5415
+ * button is omitted and a plain disabled input is rendered.
5416
+ */
5417
+ var ANameInput_vue_vue_type_script_lang_default = defineComponent({
5418
+ name: "ANameInput",
5419
+ components: { VCFormInput },
5420
+ props: {
5421
+ modelValue: {
5422
+ type: String,
5423
+ default: ""
5424
+ },
5425
+ disabled: {
5426
+ type: Boolean,
5427
+ default: false
5428
+ },
5429
+ label: {
5430
+ type: String,
5431
+ default: void 0
5432
+ }
5433
+ },
5434
+ emits: ["update:modelValue"],
5435
+ setup(props, { emit }) {
5436
+ const translationsDefault = useTranslations([{
5437
+ namespace: TranslatorTranslationNamespace.ACTION,
5438
+ key: TranslatorTranslationActionKey.GENERATE
5439
+ }]);
5440
+ const buttonLabel = computed(() => props.label ?? translationsDefault.generate);
5441
+ const onUpdate = (value) => {
5442
+ emit("update:modelValue", value);
5443
+ };
5444
+ const generate = () => {
5445
+ emit("update:modelValue", generateName());
5446
+ };
5447
+ return {
5448
+ buttonLabel,
5449
+ onUpdate,
5450
+ generate
5451
+ };
5452
+ }
5453
+ });
5454
+ //#endregion
5455
+ //#region src/components/utility/ANameInput.vue
5456
+ const _hoisted_1$34 = ["aria-label", "title"];
5457
+ function _sfc_render$69(_ctx, _cache, $props, $setup, $data, $options) {
5458
+ const _component_VCIcon = resolveComponent("VCIcon");
5459
+ const _component_VCFormInput = resolveComponent("VCFormInput");
5460
+ return openBlock(), createBlock(_component_VCFormInput, {
5461
+ "model-value": _ctx.modelValue ?? "",
5462
+ disabled: _ctx.disabled,
5463
+ group: !_ctx.disabled,
5464
+ "onUpdate:modelValue": _ctx.onUpdate
5465
+ }, createSlots({ _: 2 }, [!_ctx.disabled ? {
5466
+ name: "groupAppend",
5467
+ fn: withCtx(({ class: appendClass }) => [createElementVNode("button", {
5468
+ type: "button",
5469
+ class: normalizeClass([appendClass, "cursor-pointer transition-colors hover:bg-bg-elevated"]),
5470
+ "aria-label": _ctx.buttonLabel,
5471
+ title: _ctx.buttonLabel,
5472
+ onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.generate && _ctx.generate(...args), ["prevent"]))
5473
+ }, [createVNode(_component_VCIcon, {
5474
+ "aria-hidden": "true",
5475
+ name: "fa6-solid:arrows-rotate"
5476
+ })], 10, _hoisted_1$34)]),
5477
+ key: "0"
5478
+ } : void 0]), 1032, [
5479
+ "model-value",
5480
+ "disabled",
5481
+ "group",
5482
+ "onUpdate:modelValue"
5483
+ ]);
5484
+ }
5485
+ var ANameInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ANameInput_vue_vue_type_script_lang_default, [["render", _sfc_render$69]]);
5486
+ //#endregion
5487
+ //#region src/components/utility/ASecretInput.vue?vue&type=script&lang.ts
5488
+ /**
5489
+ * Secret input with an attached "regenerate" button rendered inside the
5490
+ * `VCFormInput` group append slot. Clicking the button emits a freshly
5491
+ * generated, cryptographically strong secret through the same
5492
+ * `update:modelValue` channel as typing, so callers can bind it with
5493
+ * `v-model` or `:model-value` + `@update:model-value` exactly like a plain
5494
+ * `<VCFormInput>`.
5495
+ *
5496
+ * Mirrors `ANameInput` so name and secret fields share the same
5497
+ * input + group-append layout. When `disabled` is set the append button is
5498
+ * omitted and a plain disabled input is rendered.
5499
+ *
5500
+ * The button generates client-side only (a user click), so it never affects
5501
+ * SSR. Callers must likewise generate the initial value client-side (e.g. in
5502
+ * `onMounted`) — a secret must not be derived from a hydration-stable seed.
5503
+ */
5504
+ var ASecretInput_vue_vue_type_script_lang_default = defineComponent({
5505
+ name: "ASecretInput",
5506
+ components: { VCFormInput },
5507
+ props: {
5508
+ modelValue: {
5509
+ type: String,
5510
+ default: ""
5511
+ },
5512
+ disabled: {
5513
+ type: Boolean,
5514
+ default: false
5515
+ },
5516
+ label: {
5517
+ type: String,
5518
+ default: void 0
5519
+ }
5520
+ },
5521
+ emits: ["update:modelValue"],
5522
+ setup(props, { emit }) {
5523
+ const translationsDefault = useTranslations([{
5524
+ namespace: TranslatorTranslationNamespace.ACTION,
5525
+ key: TranslatorTranslationActionKey.GENERATE
5526
+ }]);
5527
+ const buttonLabel = computed(() => props.label ?? translationsDefault.generate);
5528
+ const onUpdate = (value) => {
5529
+ emit("update:modelValue", value);
5530
+ };
5531
+ const generate = () => {
5532
+ emit("update:modelValue", generateSecret());
5533
+ };
5534
+ return {
5535
+ buttonLabel,
5536
+ onUpdate,
5537
+ generate
5538
+ };
5539
+ }
5540
+ });
5541
+ //#endregion
5542
+ //#region src/components/utility/ASecretInput.vue
5543
+ const _hoisted_1$33 = ["aria-label", "title"];
5544
+ function _sfc_render$68(_ctx, _cache, $props, $setup, $data, $options) {
5545
+ const _component_VCIcon = resolveComponent("VCIcon");
5546
+ const _component_VCFormInput = resolveComponent("VCFormInput");
5547
+ return openBlock(), createBlock(_component_VCFormInput, {
5548
+ "model-value": _ctx.modelValue ?? "",
5549
+ disabled: _ctx.disabled,
5550
+ group: !_ctx.disabled,
5551
+ "onUpdate:modelValue": _ctx.onUpdate
5552
+ }, createSlots({ _: 2 }, [!_ctx.disabled ? {
5553
+ name: "groupAppend",
5554
+ fn: withCtx(({ class: appendClass }) => [createElementVNode("button", {
5555
+ type: "button",
5556
+ class: normalizeClass([appendClass, "cursor-pointer transition-colors hover:bg-bg-elevated"]),
5557
+ "aria-label": _ctx.buttonLabel,
5558
+ title: _ctx.buttonLabel,
5559
+ onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.generate && _ctx.generate(...args), ["prevent"]))
5560
+ }, [createVNode(_component_VCIcon, {
5561
+ "aria-hidden": "true",
5562
+ name: "fa6-solid:arrows-rotate"
5563
+ })], 10, _hoisted_1$33)]),
5564
+ key: "0"
5565
+ } : void 0]), 1032, [
5566
+ "model-value",
5567
+ "disabled",
5568
+ "group",
5569
+ "onUpdate:modelValue"
5570
+ ]);
5571
+ }
5572
+ var ASecretInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ASecretInput_vue_vue_type_script_lang_default, [["render", _sfc_render$68]]);
5573
+ //#endregion
5591
5574
  //#region src/components/utility/AToggleButton.vue?vue&type=script&lang.ts
5592
5575
  /**
5593
5576
  * Tri-state toggle button used in entity pickers' #itemActions slot
@@ -5601,7 +5584,7 @@ const AFormSubmit = defineComponent({
5601
5584
  * `utility/toggle-button/module.ts` and the inline copies in
5602
5585
  * ARobotForm.vue / AUserForm.vue.
5603
5586
  */
5604
- const AToggleButton = defineComponent({
5587
+ var AToggleButton_vue_vue_type_script_lang_default = defineComponent({
5605
5588
  name: "AToggleButton",
5606
5589
  props: {
5607
5590
  value: {
@@ -5628,13 +5611,13 @@ const AToggleButton = defineComponent({
5628
5611
  });
5629
5612
  //#endregion
5630
5613
  //#region src/components/utility/AToggleButton.vue
5631
- const _hoisted_1$22 = [
5614
+ const _hoisted_1$32 = [
5632
5615
  "aria-label",
5633
5616
  "aria-busy",
5634
5617
  "aria-pressed",
5635
5618
  "disabled"
5636
5619
  ];
5637
- function _sfc_render$50(_ctx, _cache, $props, $setup, $data, $options) {
5620
+ function _sfc_render$67(_ctx, _cache, $props, $setup, $data, $options) {
5638
5621
  const _component_VCIcon = resolveComponent("VCIcon");
5639
5622
  return openBlock(), createElementBlock("button", {
5640
5623
  type: "button",
@@ -5651,9 +5634,9 @@ function _sfc_render$50(_ctx, _cache, $props, $setup, $data, $options) {
5651
5634
  }, [createVNode(_component_VCIcon, {
5652
5635
  "aria-hidden": "true",
5653
5636
  name: _ctx.isBusy ? "fa6-solid:question" : _ctx.value ? "fa6-solid:minus" : "fa6-solid:plus"
5654
- }, null, 8, ["name"])], 10, _hoisted_1$22);
5637
+ }, null, 8, ["name"])], 10, _hoisted_1$32);
5655
5638
  }
5656
- var AToggleButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AToggleButton, [["render", _sfc_render$50]]);
5639
+ var AToggleButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AToggleButton_vue_vue_type_script_lang_default, [["render", _sfc_render$67]]);
5657
5640
  //#endregion
5658
5641
  //#region src/components/entities/client/AClient.ts
5659
5642
  const AClient = defineComponent({
@@ -5724,9 +5707,10 @@ function usePermissionCheck(ctx) {
5724
5707
  }
5725
5708
  //#endregion
5726
5709
  //#region src/components/entities/realm/ARealmForm.vue?vue&type=script&lang.ts
5727
- const ARealmForm = defineComponent({
5710
+ var ARealmForm_vue_vue_type_script_lang_default = defineComponent({
5728
5711
  components: {
5729
5712
  AFormSubmit,
5713
+ ANameInput: ANameInput_default,
5730
5714
  VCFormGroup,
5731
5715
  VCFormInput,
5732
5716
  VCFormTextarea,
@@ -5740,6 +5724,7 @@ const ARealmForm = defineComponent({
5740
5724
  emits: defineEntityVEmitOptions(),
5741
5725
  setup(props, ctx) {
5742
5726
  const busy = ref(false);
5727
+ const nameSeed = useId();
5743
5728
  const form = reactive({
5744
5729
  name: "",
5745
5730
  display_name: "",
@@ -5753,15 +5738,10 @@ const ARealmForm = defineComponent({
5753
5738
  const isEditing = useIsEditing(manager.data);
5754
5739
  const v = useValidup(new RealmValidator(), form, { group: computed(() => isEditing.value ? ValidatorGroup.UPDATE : ValidatorGroup.CREATE) });
5755
5740
  const updatedAt = useUpdatedAt(props.entity);
5756
- const isNameEmpty = computed(() => !form.name || form.name.length === 0);
5757
5741
  const isMaster = computed(() => manager.data.value && manager.data.value.name === REALM_MASTER_NAME);
5758
- const isCreating = computed(() => !manager.data.value || !manager.data.value.id);
5759
- const generateName = () => {
5760
- form.name = createNanoID();
5761
- };
5762
5742
  function initForm() {
5763
5743
  assignFormProperties(form, manager.data.value);
5764
- if (form.name.length === 0) generateName();
5744
+ if (form.name.length === 0) form.name = generateName(nameSeed);
5765
5745
  }
5766
5746
  watch(updatedAt, (val, oldVal) => {
5767
5747
  if (val && val !== oldVal) {
@@ -5778,22 +5758,98 @@ const ARealmForm = defineComponent({
5778
5758
  busy,
5779
5759
  v,
5780
5760
  isEditing,
5781
- isNameEmpty,
5782
5761
  isMaster,
5783
- isCreating,
5784
- translationsDefault: useTranslationsForNamespace("default", [
5785
- { key: "generate" },
5786
- { key: "name" },
5787
- { key: "displayName" },
5788
- { key: "description" },
5789
- { key: "realm" }
5762
+ translationsDefault: useTranslations([
5763
+ {
5764
+ namespace: TranslatorTranslationNamespace.FIELD,
5765
+ key: TranslatorTranslationFieldKey.NAME
5766
+ },
5767
+ {
5768
+ namespace: TranslatorTranslationNamespace.FIELD,
5769
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
5770
+ },
5771
+ {
5772
+ namespace: TranslatorTranslationNamespace.FIELD,
5773
+ key: TranslatorTranslationFieldKey.DESCRIPTION
5774
+ },
5775
+ {
5776
+ namespace: TranslatorTranslationNamespace.ENTITY,
5777
+ key: TranslatorTranslationEntityKey.REALM,
5778
+ count: 1
5779
+ }
5790
5780
  ]),
5791
- generateName,
5792
5781
  submit
5793
5782
  };
5794
5783
  }
5795
5784
  });
5796
5785
  //#endregion
5786
+ //#region src/components/entities/realm/ARealmForm.vue
5787
+ function _sfc_render$66(_ctx, _cache, $props, $setup, $data, $options) {
5788
+ const _component_ANameInput = resolveComponent("ANameInput");
5789
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
5790
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
5791
+ const _component_VCFormInput = resolveComponent("VCFormInput");
5792
+ const _component_VCFormTextarea = resolveComponent("VCFormTextarea");
5793
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
5794
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
5795
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
5796
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
5797
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
5798
+ default: withCtx(() => [createVNode(_component_ANameInput, {
5799
+ modelValue: _ctx.v.fields.name.$model.value,
5800
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event,
5801
+ disabled: _ctx.isMaster
5802
+ }, null, 8, [
5803
+ "modelValue",
5804
+ "onUpdate:modelValue",
5805
+ "disabled"
5806
+ ])]),
5807
+ _: 2
5808
+ }, 1032, ["validation"])]),
5809
+ _: 1
5810
+ }, 8, ["field"]),
5811
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
5812
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
5813
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
5814
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
5815
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
5816
+ "onUpdate:modelValue": (next) => {
5817
+ _ctx.v.fields.display_name.$model.value = next;
5818
+ }
5819
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
5820
+ _: 2
5821
+ }, 1032, ["validation"])]),
5822
+ _: 1
5823
+ }, 8, ["field"]),
5824
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.description }, {
5825
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
5826
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.description), 1)]),
5827
+ default: withCtx(() => [createVNode(_component_VCFormTextarea, {
5828
+ "model-value": _ctx.v.fields.description.$model.value ?? "",
5829
+ rows: 4,
5830
+ "onUpdate:modelValue": (next) => {
5831
+ _ctx.v.fields.description.$model.value = next;
5832
+ }
5833
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
5834
+ _: 2
5835
+ }, 1032, ["validation"])]),
5836
+ _: 1
5837
+ }, 8, ["field"]),
5838
+ createVNode(_component_AFormSubmit, {
5839
+ "is-busy": _ctx.busy,
5840
+ "is-editing": _ctx.isEditing,
5841
+ "is-invalid": _ctx.v.$invalid.value,
5842
+ onSubmit: _ctx.submit
5843
+ }, null, 8, [
5844
+ "is-busy",
5845
+ "is-editing",
5846
+ "is-invalid",
5847
+ "onSubmit"
5848
+ ])
5849
+ ], 32);
5850
+ }
5851
+ var ARealmForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARealmForm_vue_vue_type_script_lang_default, [["render", _sfc_render$66]]);
5852
+ //#endregion
5797
5853
  //#region src/components/entities/realm/ARealms.ts
5798
5854
  const ARealms = defineComponent({
5799
5855
  props: defineEntityCollectionVProps(),
@@ -5805,13 +5861,15 @@ const ARealms = defineComponent({
5805
5861
  props,
5806
5862
  setup: ctx
5807
5863
  });
5864
+ const translationsName = useTranslation({
5865
+ namespace: TranslatorTranslationNamespace.ENTITY,
5866
+ key: TranslatorTranslationEntityKey.REALM,
5867
+ count: 2
5868
+ });
5808
5869
  const translation = useTranslation({
5809
- namespace: "vuecs",
5810
- key: "noMore",
5811
- data: { name: useTranslation({
5812
- namespace: "default",
5813
- key: "realms"
5814
- }) }
5870
+ namespace: TranslatorTranslationNamespace.VUECS,
5871
+ key: TranslatorTranslationVuecsKey.NO_MORE,
5872
+ data: { name: translationsName }
5815
5873
  });
5816
5874
  return () => render({ noMore: { content: translation.value } });
5817
5875
  }
@@ -5836,6 +5894,8 @@ const ARealmPicker = defineComponent({
5836
5894
  var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5837
5895
  components: {
5838
5896
  AFormSubmit,
5897
+ ANameInput: ANameInput_default,
5898
+ ASecretInput: ASecretInput_default,
5839
5899
  ARealmPicker,
5840
5900
  AFormInputList: AFormInputList_default,
5841
5901
  IFieldValidation
@@ -5856,6 +5916,7 @@ var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5856
5916
  },
5857
5917
  emits: defineEntityVEmitOptions(),
5858
5918
  setup(props, ctx) {
5919
+ const nameSeed = useId();
5859
5920
  const form = reactive({
5860
5921
  active: true,
5861
5922
  name: "",
@@ -5880,7 +5941,6 @@ var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5880
5941
  const updatedAt = useUpdatedAt(props.entity);
5881
5942
  const isNameFixed = computed(() => !!props.name && props.name.length > 0);
5882
5943
  const realmId = computed(() => manager.data.value ? manager.data.value.realm_id : storeRefs.realmId.value);
5883
- const generateSecret = () => createNanoID("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_!.", 32);
5884
5944
  const isSecretHashed = computed(() => {
5885
5945
  if (!manager.data.value || manager.data.value.secret !== form.secret) return false;
5886
5946
  return isBCryptHash(form.secret);
@@ -5888,9 +5948,12 @@ var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5888
5948
  function initForm() {
5889
5949
  if (props.name) form.name = props.name;
5890
5950
  assignFormProperties(form, manager.data.value);
5951
+ if (form.name.length === 0) form.name = generateName(nameSeed);
5891
5952
  form.realm_id = realmId.value ?? "";
5892
- if (form.secret.length === 0) form.secret = generateSecret();
5893
5953
  }
5954
+ onMounted(() => {
5955
+ if (form.is_confidential && form.secret.length === 0) form.secret = generateSecret();
5956
+ });
5894
5957
  watch(computed(() => form.is_confidential), (val, oldValue) => {
5895
5958
  if (val === oldValue) return;
5896
5959
  if (val) form.secret = manager.data.value?.secret || generateSecret();
@@ -5908,22 +5971,40 @@ var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5908
5971
  await manager.createOrUpdate(form);
5909
5972
  assignFormProperties(form, manager.data.value);
5910
5973
  };
5911
- const translationsClient = useTranslationsForNamespace("authupClient", [
5912
- { key: "nameHint" },
5913
- { key: "descriptionHint" },
5914
- { key: "redirectURIHint" },
5915
- { key: "isConfidential" },
5916
- { key: "isActive" },
5917
- { key: "hashSecret" }
5974
+ const translationsClient = useTranslationsForNamespace(TranslatorTranslationNamespace.CLIENT, [
5975
+ { key: TranslatorTranslationClientKey.NAME_HINT },
5976
+ { key: TranslatorTranslationClientKey.DESCRIPTION_HINT },
5977
+ { key: TranslatorTranslationClientKey.REDIRECT_URI_HINT },
5978
+ { key: TranslatorTranslationClientKey.IS_CONFIDENTIAL },
5979
+ { key: TranslatorTranslationClientKey.IS_ACTIVE },
5980
+ { key: TranslatorTranslationClientKey.HASH_SECRET }
5918
5981
  ]);
5919
- const translationsDefault = useTranslationsForNamespace("default", [
5920
- { key: "generate" },
5921
- { key: "name" },
5922
- { key: "displayName" },
5923
- { key: "description" },
5924
- { key: "realm" },
5925
- { key: "redirectUris" },
5926
- { key: "secret" }
5982
+ const translationsDefault = useTranslations([
5983
+ {
5984
+ namespace: TranslatorTranslationNamespace.FIELD,
5985
+ key: TranslatorTranslationFieldKey.NAME
5986
+ },
5987
+ {
5988
+ namespace: TranslatorTranslationNamespace.FIELD,
5989
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
5990
+ },
5991
+ {
5992
+ namespace: TranslatorTranslationNamespace.FIELD,
5993
+ key: TranslatorTranslationFieldKey.DESCRIPTION
5994
+ },
5995
+ {
5996
+ namespace: TranslatorTranslationNamespace.ENTITY,
5997
+ key: TranslatorTranslationEntityKey.REALM,
5998
+ count: 1
5999
+ },
6000
+ {
6001
+ namespace: TranslatorTranslationNamespace.FIELD,
6002
+ key: TranslatorTranslationFieldKey.REDIRECT_URIS
6003
+ },
6004
+ {
6005
+ namespace: TranslatorTranslationNamespace.FIELD,
6006
+ key: TranslatorTranslationFieldKey.SECRET
6007
+ }
5927
6008
  ]);
5928
6009
  const redirectUris = computed(() => {
5929
6010
  const value = v.fields.redirect_uri.$model.value;
@@ -5938,7 +6019,6 @@ var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5938
6019
  isBusy: manager.busy.value,
5939
6020
  isEditing,
5940
6021
  isSecretHashed,
5941
- generateSecret,
5942
6022
  redirectUris,
5943
6023
  submit
5944
6024
  };
@@ -5946,29 +6026,30 @@ var AClientForm_vue_vue_type_script_lang_default = defineComponent({
5946
6026
  });
5947
6027
  //#endregion
5948
6028
  //#region src/components/entities/client/AClientForm.vue
5949
- const _hoisted_1$21 = { class: "row" };
5950
- const _hoisted_2$13 = { class: "col" };
5951
- const _hoisted_3$11 = {
6029
+ const _hoisted_1$31 = { class: "row" };
6030
+ const _hoisted_2$18 = { class: "col" };
6031
+ const _hoisted_3$14 = {
5952
6032
  key: 0,
5953
6033
  class: "text-error-600 font-bold"
5954
6034
  };
5955
- const _hoisted_4$9 = ["onClick"];
5956
- const _hoisted_5$7 = { class: "row" };
5957
- const _hoisted_6$6 = { class: "col" };
5958
- const _hoisted_7$3 = { class: "col" };
6035
+ const _hoisted_4$12 = { class: "row" };
6036
+ const _hoisted_5$11 = { class: "col" };
6037
+ const _hoisted_6$9 = { class: "col" };
6038
+ const _hoisted_7$4 = { class: "col" };
5959
6039
  const _hoisted_8$2 = { class: "col" };
5960
- const _hoisted_9$1 = { class: "col" };
5961
- function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6040
+ function _sfc_render$65(_ctx, _cache, $props, $setup, $data, $options) {
5962
6041
  const _component_VCFormInput = resolveComponent("VCFormInput");
5963
6042
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
6043
+ const _component_ANameInput = resolveComponent("ANameInput");
5964
6044
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
5965
6045
  const _component_VCIcon = resolveComponent("VCIcon");
6046
+ const _component_ASecretInput = resolveComponent("ASecretInput");
5966
6047
  const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
5967
6048
  const _component_ARealmPicker = resolveComponent("ARealmPicker");
5968
6049
  const _component_AFormInputList = resolveComponent("AFormInputList");
5969
6050
  const _component_VCFormTextarea = resolveComponent("VCFormTextarea");
5970
6051
  const _component_AFormSubmit = resolveComponent("AFormSubmit");
5971
- return openBlock(), createElementBlock("div", _hoisted_1$21, [createElementVNode("div", _hoisted_2$13, [
6052
+ return openBlock(), createElementBlock("div", _hoisted_1$31, [createElementVNode("div", _hoisted_2$18, [
5972
6053
  _ctx.data ? (openBlock(), createBlock(_component_VCFormGroup, { key: 0 }, {
5973
6054
  label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" ID ", -1)])]),
5974
6055
  default: withCtx(() => [createVNode(_component_VCFormInput, {
@@ -5981,7 +6062,7 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
5981
6062
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
5982
6063
  label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
5983
6064
  hint: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsClient.nameHint), 1)]),
5984
- default: withCtx(() => [createVNode(_component_VCFormInput, {
6065
+ default: withCtx(() => [createVNode(_component_ANameInput, {
5985
6066
  modelValue: _ctx.v.fields.name.$model.value,
5986
6067
  "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event,
5987
6068
  disabled: _ctx.isNameFixed
@@ -6014,21 +6095,14 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6014
6095
  }, 8, ["field"]),
6015
6096
  createVNode(_component_IFieldValidation, { field: _ctx.v.fields.secret }, {
6016
6097
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6017
- label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.secret) + " ", 1), _ctx.isSecretHashed ? (openBlock(), createElementBlock("span", _hoisted_3$11, [createVNode(_component_VCIcon, { name: "fa6-solid:triangle-exclamation" })])) : createCommentVNode("v-if", true)]),
6018
- default: withCtx(() => [createVNode(_component_VCFormInput, {
6098
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.secret) + " ", 1), _ctx.isSecretHashed ? (openBlock(), createElementBlock("span", _hoisted_3$14, [createVNode(_component_VCIcon, { name: "fa6-solid:triangle-exclamation" })])) : createCommentVNode("v-if", true)]),
6099
+ default: withCtx(() => [createVNode(_component_ASecretInput, {
6019
6100
  "model-value": _ctx.v.fields.secret.$model.value ?? "",
6020
6101
  disabled: !_ctx.v.fields.is_confidential.$model.value,
6021
6102
  "onUpdate:modelValue": (next) => {
6022
6103
  _ctx.v.fields.secret.$model.value = next;
6023
6104
  }
6024
- }, {
6025
- groupAppend: withCtx(() => [createElementVNode("button", {
6026
- class: "btn",
6027
- type: "button",
6028
- onClick: withModifiers(() => _ctx.v.fields.secret.$model.value = _ctx.generateSecret(), ["prevent"])
6029
- }, [createVNode(_component_VCIcon, { name: "fa6-solid:arrows-rotate" })], 8, _hoisted_4$9)]),
6030
- _: 2
6031
- }, 1032, [
6105
+ }, null, 8, [
6032
6106
  "model-value",
6033
6107
  "disabled",
6034
6108
  "onUpdate:modelValue"
@@ -6037,14 +6111,14 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6037
6111
  }, 1032, ["validation"])]),
6038
6112
  _: 1
6039
6113
  }, 8, ["field"]),
6040
- createElementVNode("div", _hoisted_5$7, [
6041
- createElementVNode("div", _hoisted_6$6, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.is_confidential }, {
6114
+ createElementVNode("div", _hoisted_4$12, [
6115
+ createElementVNode("div", _hoisted_5$11, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.is_confidential }, {
6042
6116
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6043
6117
  default: withCtx(() => [createVNode(_component_VCFormSwitch, {
6044
6118
  modelValue: _ctx.v.fields.is_confidential.$model.value,
6045
6119
  "onUpdate:modelValue": ($event) => _ctx.v.fields.is_confidential.$model.value = $event,
6046
6120
  label: true,
6047
- "label-content": _ctx.translationsClient.isConfidential.value
6121
+ "label-content": _ctx.translationsClient.isConfidential
6048
6122
  }, null, 8, [
6049
6123
  "modelValue",
6050
6124
  "onUpdate:modelValue",
@@ -6054,13 +6128,13 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6054
6128
  }, 1032, ["validation"])]),
6055
6129
  _: 1
6056
6130
  }, 8, ["field"])]),
6057
- createElementVNode("div", _hoisted_7$3, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.secret_hashed }, {
6131
+ createElementVNode("div", _hoisted_6$9, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.secret_hashed }, {
6058
6132
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6059
6133
  default: withCtx(() => [createVNode(_component_VCFormSwitch, {
6060
6134
  modelValue: _ctx.v.fields.secret_hashed.$model.value,
6061
6135
  "onUpdate:modelValue": ($event) => _ctx.v.fields.secret_hashed.$model.value = $event,
6062
6136
  label: true,
6063
- "label-content": _ctx.translationsClient.hashSecret.value
6137
+ "label-content": _ctx.translationsClient.hashSecret
6064
6138
  }, null, 8, [
6065
6139
  "modelValue",
6066
6140
  "onUpdate:modelValue",
@@ -6070,13 +6144,13 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6070
6144
  }, 1032, ["validation"])]),
6071
6145
  _: 1
6072
6146
  }, 8, ["field"])]),
6073
- createElementVNode("div", _hoisted_8$2, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.active }, {
6147
+ createElementVNode("div", _hoisted_7$4, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.active }, {
6074
6148
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6075
6149
  default: withCtx(() => [createVNode(_component_VCFormSwitch, {
6076
6150
  modelValue: _ctx.v.fields.active.$model.value,
6077
6151
  "onUpdate:modelValue": ($event) => _ctx.v.fields.active.$model.value = $event,
6078
6152
  label: true,
6079
- "label-content": _ctx.translationsClient.isActive.value
6153
+ "label-content": _ctx.translationsClient.isActive
6080
6154
  }, null, 8, [
6081
6155
  "modelValue",
6082
6156
  "onUpdate:modelValue",
@@ -6103,7 +6177,7 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6103
6177
  }, 1032, ["validation"])]),
6104
6178
  _: 1
6105
6179
  }, 8, ["field"])) : createCommentVNode("v-if", true)
6106
- ]), createElementVNode("div", _hoisted_9$1, [
6180
+ ]), createElementVNode("div", _hoisted_8$2, [
6107
6181
  createVNode(_component_AFormInputList, {
6108
6182
  names: _ctx.redirectUris,
6109
6183
  onChanged: _cache[0] || (_cache[0] = (value) => {
@@ -6146,7 +6220,7 @@ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
6146
6220
  ])])
6147
6221
  ])]);
6148
6222
  }
6149
- var AClientForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientForm_vue_vue_type_script_lang_default, [["render", _sfc_render$49]]);
6223
+ var AClientForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientForm_vue_vue_type_script_lang_default, [["render", _sfc_render$65]]);
6150
6224
  //#endregion
6151
6225
  //#region src/components/entities/client/AClients.ts
6152
6226
  const AClients = defineComponent({
@@ -6159,13 +6233,15 @@ const AClients = defineComponent({
6159
6233
  props,
6160
6234
  setup: ctx
6161
6235
  });
6236
+ const translationName = useTranslation({
6237
+ namespace: TranslatorTranslationNamespace.ENTITY,
6238
+ key: TranslatorTranslationEntityKey.CLIENT,
6239
+ count: 2
6240
+ });
6162
6241
  const translation = useTranslation({
6163
- namespace: "vuecs",
6164
- key: "noMore",
6165
- data: { name: useTranslation({
6166
- namespace: "default",
6167
- key: "clients"
6168
- }) }
6242
+ namespace: TranslatorTranslationNamespace.VUECS,
6243
+ key: TranslatorTranslationVuecsKey.NO_MORE,
6244
+ data: { name: translationName }
6169
6245
  });
6170
6246
  return () => render({ noMore: { content: translation.value } });
6171
6247
  }
@@ -6239,8 +6315,9 @@ function decisionStrategyHint(value) {
6239
6315
  default: return "No strategy selected. Defaults to unanimous (all policies must evaluate positively).";
6240
6316
  }
6241
6317
  }
6242
- const APermissionForm = defineComponent({
6318
+ var APermissionForm_vue_vue_type_script_lang_default = defineComponent({
6243
6319
  components: {
6320
+ ANameInput: ANameInput_default,
6244
6321
  ARealmPicker,
6245
6322
  AFormSubmit,
6246
6323
  VCFormGroup,
@@ -6253,6 +6330,7 @@ const APermissionForm = defineComponent({
6253
6330
  emits: defineEntityVEmitOptions(),
6254
6331
  setup(props, ctx) {
6255
6332
  const busy = ref(false);
6333
+ const nameSeed = useId();
6256
6334
  const form = reactive({
6257
6335
  name: "",
6258
6336
  display_name: "",
@@ -6280,6 +6358,7 @@ const APermissionForm = defineComponent({
6280
6358
  const isBuiltIn = computed(() => !!(manager.data.value && manager.data.value.built_in));
6281
6359
  function initForm() {
6282
6360
  assignFormProperties(form, manager.data.value);
6361
+ if (form.name.length === 0) form.name = generateName(nameSeed);
6283
6362
  if (realmId.value) form.realm_id = realmId.value;
6284
6363
  }
6285
6364
  watch(updatedAt, (val, oldVal) => {
@@ -6302,12 +6381,28 @@ const APermissionForm = defineComponent({
6302
6381
  busy.value = false;
6303
6382
  }
6304
6383
  };
6305
- const translationsDefault = useTranslationsForNamespace("default", [
6306
- { key: "name" },
6307
- { key: "displayName" },
6308
- { key: "description" },
6309
- { key: "decisionStrategy" },
6310
- { key: "realm" }
6384
+ const translationsDefault = useTranslations([
6385
+ {
6386
+ namespace: TranslatorTranslationNamespace.FIELD,
6387
+ key: TranslatorTranslationFieldKey.NAME
6388
+ },
6389
+ {
6390
+ namespace: TranslatorTranslationNamespace.FIELD,
6391
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
6392
+ },
6393
+ {
6394
+ namespace: TranslatorTranslationNamespace.FIELD,
6395
+ key: TranslatorTranslationFieldKey.DESCRIPTION
6396
+ },
6397
+ {
6398
+ namespace: TranslatorTranslationNamespace.FIELD,
6399
+ key: TranslatorTranslationFieldKey.DECISION_STRATEGY
6400
+ },
6401
+ {
6402
+ namespace: TranslatorTranslationNamespace.ENTITY,
6403
+ key: TranslatorTranslationEntityKey.REALM,
6404
+ count: 1
6405
+ }
6311
6406
  ]);
6312
6407
  return {
6313
6408
  busy,
@@ -6323,108 +6418,224 @@ const APermissionForm = defineComponent({
6323
6418
  }
6324
6419
  });
6325
6420
  //#endregion
6326
- //#region src/components/entities/permission/APermissions.ts
6327
- const APermissions = defineComponent({
6328
- props: defineEntityCollectionVProps(),
6329
- emits: defineEntityCollectionVEmitOptions(),
6330
- slots: Object,
6331
- setup(props, setup) {
6332
- const { render } = defineEntityCollectionManager({
6333
- type: `${EntityType.PERMISSION}`,
6334
- props,
6335
- setup
6336
- });
6337
- const translation = useTranslation({
6338
- namespace: "vuecs",
6339
- key: "noMore",
6340
- data: { name: useTranslation({
6341
- namespace: "default",
6342
- key: "permissions"
6343
- }) }
6344
- });
6345
- return () => render({ noMore: { content: translation.value } });
6346
- }
6347
- });
6348
- //#endregion
6349
- //#region src/components/entities/policy/APolicies.ts
6350
- const APolicies = defineComponent({
6351
- props: defineEntityCollectionVProps(),
6352
- emits: defineEntityCollectionVEmitOptions(),
6353
- slots: Object,
6354
- setup(props, setup) {
6355
- const { render } = defineEntityCollectionManager({
6356
- type: `${EntityType.POLICY}`,
6357
- props,
6358
- setup
6359
- });
6360
- const translation = useTranslation({
6361
- namespace: "vuecs",
6362
- key: "noMore",
6363
- data: { name: useTranslation({
6364
- namespace: "default",
6365
- key: "policies"
6366
- }) }
6367
- });
6368
- return () => render({ noMore: { content: translation.value } });
6369
- }
6370
- });
6371
- //#endregion
6372
- //#region src/components/entities/policy/APolicyTypeBadge.vue?vue&type=script&lang.ts
6373
- const typeLabels = {
6374
- [BuiltInPolicyType.COMPOSITE]: "Composite",
6375
- [BuiltInPolicyType.DATE]: "Date",
6376
- [BuiltInPolicyType.TIME]: "Time",
6377
- [BuiltInPolicyType.ATTRIBUTE_NAMES]: "Attr Names",
6378
- [BuiltInPolicyType.ATTRIBUTES]: "Attributes",
6379
- [BuiltInPolicyType.REALM_MATCH]: "Realm Match",
6380
- [BuiltInPolicyType.IDENTITY]: "Identity",
6381
- [BuiltInPolicyType.PERMISSION_BINDING]: "Perm Binding"
6382
- };
6383
- var APolicyTypeBadge_vue_vue_type_script_lang_default = defineComponent({
6384
- props: { type: {
6385
- type: String,
6386
- required: true
6387
- } },
6388
- setup() {
6389
- return { typeLabels };
6390
- }
6391
- });
6392
- //#endregion
6393
- //#region src/components/entities/policy/APolicyTypeBadge.vue
6394
- const _hoisted_1$20 = { class: "badge bg-info-500" };
6395
- function _sfc_render$48(_ctx, _cache, $props, $setup, $data, $options) {
6396
- return openBlock(), createElementBlock("span", _hoisted_1$20, toDisplayString(_ctx.typeLabels[_ctx.type] || _ctx.type), 1);
6397
- }
6398
- var APolicyTypeBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyTypeBadge_vue_vue_type_script_lang_default, [["render", _sfc_render$48]]);
6399
- //#endregion
6400
- //#region src/components/entities/policy/APolicyDetailNav.vue?vue&type=script&lang.ts
6401
- var APolicyDetailNav_vue_vue_type_script_lang_default = defineComponent({
6421
+ //#region src/components/entities/permission/APermissionForm.vue
6422
+ const _hoisted_1$30 = { class: "alert alert-sm alert-info mt-1 mb-0" };
6423
+ function _sfc_render$64(_ctx, _cache, $props, $setup, $data, $options) {
6424
+ const _component_ANameInput = resolveComponent("ANameInput");
6425
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
6426
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
6427
+ const _component_VCFormInput = resolveComponent("VCFormInput");
6428
+ const _component_VCFormTextarea = resolveComponent("VCFormTextarea");
6429
+ const _component_VCFormSelect = resolveComponent("VCFormSelect");
6430
+ const _component_ARealmPicker = resolveComponent("ARealmPicker");
6431
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
6432
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
6433
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
6434
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6435
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
6436
+ default: withCtx(() => [createVNode(_component_ANameInput, {
6437
+ modelValue: _ctx.v.fields.name.$model.value,
6438
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event,
6439
+ disabled: _ctx.isBuiltIn
6440
+ }, null, 8, [
6441
+ "modelValue",
6442
+ "onUpdate:modelValue",
6443
+ "disabled"
6444
+ ])]),
6445
+ _: 2
6446
+ }, 1032, ["validation"])]),
6447
+ _: 1
6448
+ }, 8, ["field"]),
6449
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
6450
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6451
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
6452
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
6453
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
6454
+ "onUpdate:modelValue": (next) => {
6455
+ _ctx.v.fields.display_name.$model.value = next;
6456
+ }
6457
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
6458
+ _: 2
6459
+ }, 1032, ["validation"])]),
6460
+ _: 1
6461
+ }, 8, ["field"]),
6462
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.description }, {
6463
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6464
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.description), 1)]),
6465
+ default: withCtx(() => [createVNode(_component_VCFormTextarea, {
6466
+ "model-value": _ctx.v.fields.description.$model.value ?? "",
6467
+ rows: 4,
6468
+ "onUpdate:modelValue": (next) => {
6469
+ _ctx.v.fields.description.$model.value = next;
6470
+ }
6471
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
6472
+ _: 2
6473
+ }, 1032, ["validation"])]),
6474
+ _: 1
6475
+ }, 8, ["field"]),
6476
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.decision_strategy }, {
6477
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6478
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.decisionStrategy), 1)]),
6479
+ default: withCtx(() => [createVNode(_component_VCFormSelect, {
6480
+ modelValue: _ctx.v.fields.decision_strategy.$model.value,
6481
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.decision_strategy.$model.value = $event,
6482
+ options: _ctx.decisionStrategyOptions,
6483
+ placeholder: "-- None (default: unanimous) --"
6484
+ }, null, 8, [
6485
+ "modelValue",
6486
+ "onUpdate:modelValue",
6487
+ "options"
6488
+ ]), createElementVNode("div", _hoisted_1$30, toDisplayString(_ctx.decisionStrategyHint), 1)]),
6489
+ _: 2
6490
+ }, 1032, ["validation"])]),
6491
+ _: 1
6492
+ }, 8, ["field"]),
6493
+ !_ctx.realmId && !_ctx.isEditing ? (openBlock(), createBlock(_component_IFieldValidation, {
6494
+ key: 0,
6495
+ field: _ctx.v.fields.realm_id
6496
+ }, {
6497
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
6498
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.realm), 1)]),
6499
+ default: withCtx(() => [createVNode(_component_ARealmPicker, {
6500
+ value: _ctx.v.fields.realm_id.$model.value,
6501
+ multiple: false,
6502
+ onChange: (input) => {
6503
+ _ctx.v.fields.realm_id.$model.value = input.length > 0 ? input[0] ?? "" : "";
6504
+ }
6505
+ }, null, 8, ["value", "onChange"])]),
6506
+ _: 2
6507
+ }, 1032, ["validation"])]),
6508
+ _: 1
6509
+ }, 8, ["field"])) : createCommentVNode("v-if", true),
6510
+ createVNode(_component_AFormSubmit, {
6511
+ "is-busy": _ctx.busy,
6512
+ "is-editing": _ctx.isEditing,
6513
+ "is-invalid": _ctx.v.$invalid.value,
6514
+ onSubmit: _ctx.submit
6515
+ }, null, 8, [
6516
+ "is-busy",
6517
+ "is-editing",
6518
+ "is-invalid",
6519
+ "onSubmit"
6520
+ ])
6521
+ ], 32);
6522
+ }
6523
+ var APermissionForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionForm_vue_vue_type_script_lang_default, [["render", _sfc_render$64]]);
6524
+ //#endregion
6525
+ //#region src/components/entities/permission/APermissions.ts
6526
+ const APermissions = defineComponent({
6527
+ props: defineEntityCollectionVProps(),
6528
+ emits: defineEntityCollectionVEmitOptions(),
6529
+ slots: Object,
6530
+ setup(props, setup) {
6531
+ const { render } = defineEntityCollectionManager({
6532
+ type: `${EntityType.PERMISSION}`,
6533
+ props,
6534
+ setup
6535
+ });
6536
+ const translationName = useTranslation({
6537
+ namespace: TranslatorTranslationNamespace.ENTITY,
6538
+ key: TranslatorTranslationEntityKey.PERMISSION,
6539
+ count: 2
6540
+ });
6541
+ const translation = useTranslation({
6542
+ namespace: TranslatorTranslationNamespace.VUECS,
6543
+ key: TranslatorTranslationVuecsKey.NO_MORE,
6544
+ data: { name: translationName }
6545
+ });
6546
+ return () => render({ noMore: { content: translation.value } });
6547
+ }
6548
+ });
6549
+ //#endregion
6550
+ //#region src/components/entities/policy/APolicies.ts
6551
+ const APolicies = defineComponent({
6552
+ props: defineEntityCollectionVProps(),
6553
+ emits: defineEntityCollectionVEmitOptions(),
6554
+ slots: Object,
6555
+ setup(props, setup) {
6556
+ const { render } = defineEntityCollectionManager({
6557
+ type: `${EntityType.POLICY}`,
6558
+ props,
6559
+ setup
6560
+ });
6561
+ const translationName = useTranslation({
6562
+ namespace: TranslatorTranslationNamespace.ENTITY,
6563
+ key: TranslatorTranslationEntityKey.POLICY,
6564
+ count: 2
6565
+ });
6566
+ const translation = useTranslation({
6567
+ namespace: TranslatorTranslationNamespace.VUECS,
6568
+ key: TranslatorTranslationVuecsKey.NO_MORE,
6569
+ data: { name: translationName }
6570
+ });
6571
+ return () => render({ noMore: { content: translation.value } });
6572
+ }
6573
+ });
6574
+ //#endregion
6575
+ //#region src/components/entities/policy/APolicyTypeBadge.vue?vue&type=script&lang.ts
6576
+ const typeLabels = {
6577
+ [BuiltInPolicyType.COMPOSITE]: "Composite",
6578
+ [BuiltInPolicyType.DATE]: "Date",
6579
+ [BuiltInPolicyType.TIME]: "Time",
6580
+ [BuiltInPolicyType.ATTRIBUTE_NAMES]: "Attr Names",
6581
+ [BuiltInPolicyType.ATTRIBUTES]: "Attributes",
6582
+ [BuiltInPolicyType.REALM_MATCH]: "Realm Match",
6583
+ [BuiltInPolicyType.IDENTITY]: "Identity",
6584
+ [BuiltInPolicyType.PERMISSION_BINDING]: "Perm Binding"
6585
+ };
6586
+ var APolicyTypeBadge_vue_vue_type_script_lang_default = defineComponent({
6587
+ props: { type: {
6588
+ type: String,
6589
+ required: true
6590
+ } },
6591
+ setup() {
6592
+ return { typeLabels };
6593
+ }
6594
+ });
6595
+ //#endregion
6596
+ //#region src/components/entities/policy/APolicyTypeBadge.vue
6597
+ const _hoisted_1$29 = { class: "badge bg-info-500" };
6598
+ function _sfc_render$63(_ctx, _cache, $props, $setup, $data, $options) {
6599
+ return openBlock(), createElementBlock("span", _hoisted_1$29, toDisplayString(_ctx.typeLabels[_ctx.type] || _ctx.type), 1);
6600
+ }
6601
+ var APolicyTypeBadge_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyTypeBadge_vue_vue_type_script_lang_default, [["render", _sfc_render$63]]);
6602
+ //#endregion
6603
+ //#region src/components/entities/policy/APolicyDetailNav.vue?vue&type=script&lang.ts
6604
+ var APolicyDetailNav_vue_vue_type_script_lang_default = defineComponent({
6402
6605
  props: { policyId: {
6403
6606
  type: String,
6404
6607
  required: true
6405
6608
  } },
6406
6609
  emits: ["click"],
6407
6610
  setup(props, { emit }) {
6611
+ const viewPolicyDetails = useTranslation({
6612
+ namespace: TranslatorTranslationNamespace.CLIENT,
6613
+ key: TranslatorTranslationClientKey.VIEW_POLICY_DETAILS
6614
+ });
6408
6615
  const handleClick = (e) => {
6409
6616
  e.preventDefault();
6410
6617
  emit("click", props.policyId);
6411
6618
  };
6412
- return { handleClick };
6619
+ return {
6620
+ handleClick,
6621
+ viewPolicyDetails
6622
+ };
6413
6623
  }
6414
6624
  });
6415
6625
  //#endregion
6416
6626
  //#region src/components/entities/policy/APolicyDetailNav.vue
6417
- function _sfc_render$47(_ctx, _cache, $props, $setup, $data, $options) {
6627
+ const _hoisted_1$28 = ["title", "aria-label"];
6628
+ function _sfc_render$62(_ctx, _cache, $props, $setup, $data, $options) {
6418
6629
  const _component_VCIcon = resolveComponent("VCIcon");
6419
6630
  return openBlock(), createElementBlock("button", {
6420
6631
  type: "button",
6421
6632
  class: "btn btn-xs btn-outline-info",
6422
- title: "View policy details",
6423
- "aria-label": "View policy details",
6633
+ title: _ctx.viewPolicyDetails,
6634
+ "aria-label": _ctx.viewPolicyDetails,
6424
6635
  onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleClick && _ctx.handleClick(...args))
6425
- }, [createVNode(_component_VCIcon, { name: "fa6-solid:eye" })]);
6636
+ }, [createVNode(_component_VCIcon, { name: "fa6-solid:eye" })], 8, _hoisted_1$28);
6426
6637
  }
6427
- var APolicyDetailNav_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyDetailNav_vue_vue_type_script_lang_default, [["render", _sfc_render$47]]);
6638
+ var APolicyDetailNav_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyDetailNav_vue_vue_type_script_lang_default, [["render", _sfc_render$62]]);
6428
6639
  //#endregion
6429
6640
  //#region src/components/entities/policy/APolicyInlineInfo.vue?vue&type=script&lang.ts
6430
6641
  var APolicyInlineInfo_vue_vue_type_script_lang_default = defineComponent({
@@ -6446,23 +6657,23 @@ var APolicyInlineInfo_vue_vue_type_script_lang_default = defineComponent({
6446
6657
  });
6447
6658
  //#endregion
6448
6659
  //#region src/components/entities/policy/APolicyInlineInfo.vue
6449
- const _hoisted_1$19 = {
6660
+ const _hoisted_1$27 = {
6450
6661
  key: 0,
6451
6662
  class: "badge bg-warning-500"
6452
6663
  };
6453
- function _sfc_render$46(_ctx, _cache, $props, $setup, $data, $options) {
6664
+ function _sfc_render$61(_ctx, _cache, $props, $setup, $data, $options) {
6454
6665
  const _component_APolicyTypeBadge = resolveComponent("APolicyTypeBadge");
6455
6666
  const _component_APolicyDetailNav = resolveComponent("APolicyDetailNav");
6456
6667
  return openBlock(), createElementBlock(Fragment, null, [
6457
6668
  createVNode(_component_APolicyTypeBadge, { type: _ctx.entity.type }, null, 8, ["type"]),
6458
- _ctx.entity.invert ? (openBlock(), createElementBlock("span", _hoisted_1$19, "Inverted")) : createCommentVNode("v-if", true),
6669
+ _ctx.entity.invert ? (openBlock(), createElementBlock("span", _hoisted_1$27, "Inverted")) : createCommentVNode("v-if", true),
6459
6670
  createVNode(_component_APolicyDetailNav, {
6460
6671
  "policy-id": _ctx.entity.id,
6461
6672
  onClick: _ctx.handleDetail
6462
6673
  }, null, 8, ["policy-id", "onClick"])
6463
6674
  ], 64);
6464
6675
  }
6465
- var APolicyInlineInfo_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyInlineInfo_vue_vue_type_script_lang_default, [["render", _sfc_render$46]]);
6676
+ var APolicyInlineInfo_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyInlineInfo_vue_vue_type_script_lang_default, [["render", _sfc_render$61]]);
6466
6677
  //#endregion
6467
6678
  //#region src/components/entities/policy/APolicySummary.vue?vue&type=script&lang.ts
6468
6679
  var APolicySummary_vue_vue_type_script_lang_default = defineComponent({
@@ -6474,36 +6685,36 @@ var APolicySummary_vue_vue_type_script_lang_default = defineComponent({
6474
6685
  });
6475
6686
  //#endregion
6476
6687
  //#region src/components/entities/policy/APolicySummary.vue
6477
- const _hoisted_1$18 = { class: "flex flex-row gap-2 mb-2" };
6478
- const _hoisted_2$12 = { class: "flex flex-row gap-2 mb-2" };
6479
- const _hoisted_3$10 = {
6688
+ const _hoisted_1$26 = { class: "flex flex-row gap-2 mb-2" };
6689
+ const _hoisted_2$17 = { class: "flex flex-row gap-2 mb-2" };
6690
+ const _hoisted_3$13 = {
6480
6691
  key: 0,
6481
6692
  class: "flex flex-row gap-2 mb-2"
6482
6693
  };
6483
- const _hoisted_4$8 = {
6694
+ const _hoisted_4$11 = {
6484
6695
  key: 1,
6485
6696
  class: "flex flex-row gap-2 mb-2"
6486
6697
  };
6487
- const _hoisted_5$6 = {
6698
+ const _hoisted_5$10 = {
6488
6699
  key: 2,
6489
6700
  class: "flex flex-row gap-2 mb-2"
6490
6701
  };
6491
- const _hoisted_6$5 = {
6702
+ const _hoisted_6$8 = {
6492
6703
  key: 3,
6493
6704
  class: "flex flex-row gap-2 mb-2"
6494
6705
  };
6495
- function _sfc_render$45(_ctx, _cache, $props, $setup, $data, $options) {
6706
+ function _sfc_render$60(_ctx, _cache, $props, $setup, $data, $options) {
6496
6707
  const _component_APolicyTypeBadge = resolveComponent("APolicyTypeBadge");
6497
6708
  return openBlock(), createElementBlock("div", null, [
6498
- createElementVNode("div", _hoisted_1$18, [_cache[0] || (_cache[0] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Name", -1)), createElementVNode("div", null, toDisplayString(_ctx.entity.name), 1)]),
6499
- createElementVNode("div", _hoisted_2$12, [_cache[1] || (_cache[1] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Type", -1)), createElementVNode("div", null, [createVNode(_component_APolicyTypeBadge, { type: _ctx.entity.type }, null, 8, ["type"])])]),
6500
- _ctx.entity.display_name ? (openBlock(), createElementBlock("div", _hoisted_3$10, [_cache[2] || (_cache[2] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Display Name", -1)), createElementVNode("div", null, toDisplayString(_ctx.entity.display_name), 1)])) : createCommentVNode("v-if", true),
6501
- _ctx.entity.description ? (openBlock(), createElementBlock("div", _hoisted_4$8, [_cache[3] || (_cache[3] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Description", -1)), createElementVNode("div", null, toDisplayString(_ctx.entity.description), 1)])) : createCommentVNode("v-if", true),
6502
- _ctx.entity.invert ? (openBlock(), createElementBlock("div", _hoisted_5$6, [..._cache[4] || (_cache[4] = [createElementVNode("strong", { style: { "min-width": "120px" } }, "Invert", -1), createElementVNode("div", null, [createElementVNode("span", { class: "badge bg-warning-500" }, "Yes")], -1)])])) : createCommentVNode("v-if", true),
6503
- _ctx.entity.built_in ? (openBlock(), createElementBlock("div", _hoisted_6$5, [..._cache[5] || (_cache[5] = [createElementVNode("strong", { style: { "min-width": "120px" } }, "Built-in", -1), createElementVNode("div", null, [createElementVNode("span", { class: "badge bg-bg-elevated" }, "Yes")], -1)])])) : createCommentVNode("v-if", true)
6709
+ createElementVNode("div", _hoisted_1$26, [_cache[0] || (_cache[0] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Name", -1)), createElementVNode("div", null, toDisplayString(_ctx.entity.name), 1)]),
6710
+ createElementVNode("div", _hoisted_2$17, [_cache[1] || (_cache[1] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Type", -1)), createElementVNode("div", null, [createVNode(_component_APolicyTypeBadge, { type: _ctx.entity.type }, null, 8, ["type"])])]),
6711
+ _ctx.entity.display_name ? (openBlock(), createElementBlock("div", _hoisted_3$13, [_cache[2] || (_cache[2] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Display Name", -1)), createElementVNode("div", null, toDisplayString(_ctx.entity.display_name), 1)])) : createCommentVNode("v-if", true),
6712
+ _ctx.entity.description ? (openBlock(), createElementBlock("div", _hoisted_4$11, [_cache[3] || (_cache[3] = createElementVNode("strong", { style: { "min-width": "120px" } }, "Description", -1)), createElementVNode("div", null, toDisplayString(_ctx.entity.description), 1)])) : createCommentVNode("v-if", true),
6713
+ _ctx.entity.invert ? (openBlock(), createElementBlock("div", _hoisted_5$10, [..._cache[4] || (_cache[4] = [createElementVNode("strong", { style: { "min-width": "120px" } }, "Invert", -1), createElementVNode("div", null, [createElementVNode("span", { class: "badge bg-warning-500" }, "Yes")], -1)])])) : createCommentVNode("v-if", true),
6714
+ _ctx.entity.built_in ? (openBlock(), createElementBlock("div", _hoisted_6$8, [..._cache[5] || (_cache[5] = [createElementVNode("strong", { style: { "min-width": "120px" } }, "Built-in", -1), createElementVNode("div", null, [createElementVNode("span", { class: "badge bg-bg-elevated" }, "Yes")], -1)])])) : createCommentVNode("v-if", true)
6504
6715
  ]);
6505
6716
  }
6506
- var APolicySummary_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicySummary_vue_vue_type_script_lang_default, [["render", _sfc_render$45]]);
6717
+ var APolicySummary_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicySummary_vue_vue_type_script_lang_default, [["render", _sfc_render$60]]);
6507
6718
  //#endregion
6508
6719
  //#region src/components/entities/permission-policy-binding/APermissionPolicyBindingButton.ts
6509
6720
  const APermissionPolicyBindingButton = defineComponent({
@@ -6725,11 +6936,11 @@ var AClientPermissionAssignment_vue_vue_type_script_lang_default = defineCompone
6725
6936
  });
6726
6937
  //#endregion
6727
6938
  //#region src/components/entities/client-permission/AClientPermissionAssignment.vue
6728
- const _hoisted_1$17 = { class: "flex gap-1" };
6729
- function _sfc_render$44(_ctx, _cache, $props, $setup, $data, $options) {
6939
+ const _hoisted_1$25 = { class: "flex gap-1" };
6940
+ function _sfc_render$59(_ctx, _cache, $props, $setup, $data, $options) {
6730
6941
  const _component_AToggleButton = resolveComponent("AToggleButton");
6731
6942
  const _component_APermissionPolicyBindingButton = resolveComponent("APermissionPolicyBindingButton");
6732
- return openBlock(), createElementBlock("span", _hoisted_1$17, [createVNode(_component_AToggleButton, {
6943
+ return openBlock(), createElementBlock("span", _hoisted_1$25, [createVNode(_component_AToggleButton, {
6733
6944
  value: !!_ctx.manager.data.value,
6734
6945
  "is-busy": _ctx.manager.busy.value,
6735
6946
  onChanged: _ctx.handleChanged
@@ -6748,7 +6959,7 @@ function _sfc_render$44(_ctx, _cache, $props, $setup, $data, $options) {
6748
6959
  "onUpdated"
6749
6960
  ])) : createCommentVNode("v-if", true)]);
6750
6961
  }
6751
- var AClientPermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientPermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$44]]);
6962
+ var AClientPermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientPermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$59]]);
6752
6963
  //#endregion
6753
6964
  //#region src/components/entities/client-permission/AClientPermissionAssignments.vue?vue&type=script&lang.ts
6754
6965
  var AClientPermissionAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -6766,7 +6977,7 @@ var AClientPermissionAssignments_vue_vue_type_script_lang_default = defineCompon
6766
6977
  });
6767
6978
  //#endregion
6768
6979
  //#region src/components/entities/client-permission/AClientPermissionAssignments.vue
6769
- function _sfc_render$43(_ctx, _cache, $props, $setup, $data, $options) {
6980
+ function _sfc_render$58(_ctx, _cache, $props, $setup, $data, $options) {
6770
6981
  const _component_AClientPermissionAssignment = resolveComponent("AClientPermissionAssignment");
6771
6982
  const _component_APermissions = resolveComponent("APermissions");
6772
6983
  return openBlock(), createBlock(_component_APermissions, null, createSlots({
@@ -6783,11 +6994,12 @@ function _sfc_render$43(_ctx, _cache, $props, $setup, $data, $options) {
6783
6994
  };
6784
6995
  })]), 1024);
6785
6996
  }
6786
- var AClientPermissionAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientPermissionAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$43]]);
6997
+ var AClientPermissionAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientPermissionAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$58]]);
6787
6998
  //#endregion
6788
6999
  //#region src/components/entities/role/ARoleForm.vue?vue&type=script&lang.ts
6789
- const ARoleForm = defineComponent({
7000
+ var ARoleForm_vue_vue_type_script_lang_default = defineComponent({
6790
7001
  components: {
7002
+ ANameInput: ANameInput_default,
6791
7003
  ARealmPicker,
6792
7004
  AFormSubmit,
6793
7005
  VCFormGroup,
@@ -6802,6 +7014,7 @@ const ARoleForm = defineComponent({
6802
7014
  emits: defineEntityVEmitOptions(),
6803
7015
  setup(props, ctx) {
6804
7016
  const busy = ref(false);
7017
+ const nameSeed = useId();
6805
7018
  const form = reactive({
6806
7019
  name: "",
6807
7020
  display_name: "",
@@ -6823,6 +7036,7 @@ const ARoleForm = defineComponent({
6823
7036
  const updatedAt = useUpdatedAt(props.entity);
6824
7037
  function initForm() {
6825
7038
  assignFormProperties(form, manager.data.value);
7039
+ if (form.name.length === 0) form.name = generateName(nameSeed);
6826
7040
  }
6827
7041
  watch(updatedAt, (val, oldVal) => {
6828
7042
  if (val && val !== oldVal) {
@@ -6840,17 +7054,109 @@ const ARoleForm = defineComponent({
6840
7054
  v,
6841
7055
  isEditing,
6842
7056
  realmId,
6843
- translationsDefault: useTranslationsForNamespace("default", [
6844
- { key: "name" },
6845
- { key: "displayName" },
6846
- { key: "description" },
6847
- { key: "realm" }
7057
+ translationsDefault: useTranslations([
7058
+ {
7059
+ namespace: TranslatorTranslationNamespace.FIELD,
7060
+ key: TranslatorTranslationFieldKey.NAME
7061
+ },
7062
+ {
7063
+ namespace: TranslatorTranslationNamespace.FIELD,
7064
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
7065
+ },
7066
+ {
7067
+ namespace: TranslatorTranslationNamespace.FIELD,
7068
+ key: TranslatorTranslationFieldKey.DESCRIPTION
7069
+ },
7070
+ {
7071
+ namespace: TranslatorTranslationNamespace.ENTITY,
7072
+ key: TranslatorTranslationEntityKey.REALM,
7073
+ count: 1
7074
+ }
6848
7075
  ]),
6849
7076
  submit
6850
7077
  };
6851
7078
  }
6852
7079
  });
6853
7080
  //#endregion
7081
+ //#region src/components/entities/role/ARoleForm.vue
7082
+ function _sfc_render$57(_ctx, _cache, $props, $setup, $data, $options) {
7083
+ const _component_ANameInput = resolveComponent("ANameInput");
7084
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
7085
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
7086
+ const _component_VCFormInput = resolveComponent("VCFormInput");
7087
+ const _component_VCFormTextarea = resolveComponent("VCFormTextarea");
7088
+ const _component_ARealmPicker = resolveComponent("ARealmPicker");
7089
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
7090
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
7091
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
7092
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7093
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
7094
+ default: withCtx(() => [createVNode(_component_ANameInput, {
7095
+ modelValue: _ctx.v.fields.name.$model.value,
7096
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event
7097
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
7098
+ _: 2
7099
+ }, 1032, ["validation"])]),
7100
+ _: 1
7101
+ }, 8, ["field"]),
7102
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
7103
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7104
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
7105
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7106
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
7107
+ "onUpdate:modelValue": (next) => {
7108
+ _ctx.v.fields.display_name.$model.value = next;
7109
+ }
7110
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7111
+ _: 2
7112
+ }, 1032, ["validation"])]),
7113
+ _: 1
7114
+ }, 8, ["field"]),
7115
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.description }, {
7116
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7117
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.description), 1)]),
7118
+ default: withCtx(() => [createVNode(_component_VCFormTextarea, {
7119
+ "model-value": _ctx.v.fields.description.$model.value ?? "",
7120
+ rows: 6,
7121
+ "onUpdate:modelValue": (next) => {
7122
+ _ctx.v.fields.description.$model.value = next;
7123
+ }
7124
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7125
+ _: 2
7126
+ }, 1032, ["validation"])]),
7127
+ _: 1
7128
+ }, 8, ["field"]),
7129
+ !_ctx.realmId && !_ctx.isEditing ? (openBlock(), createBlock(_component_IFieldValidation, {
7130
+ key: 0,
7131
+ field: _ctx.v.fields.realm_id
7132
+ }, {
7133
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7134
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.realm), 1)]),
7135
+ default: withCtx(() => [createVNode(_component_ARealmPicker, {
7136
+ value: _ctx.v.fields.realm_id.$model.value,
7137
+ onChange: (input) => {
7138
+ _ctx.v.fields.realm_id.$model.value = input.length > 0 ? input[0] ?? "" : "";
7139
+ }
7140
+ }, null, 8, ["value", "onChange"])]),
7141
+ _: 2
7142
+ }, 1032, ["validation"])]),
7143
+ _: 1
7144
+ }, 8, ["field"])) : createCommentVNode("v-if", true),
7145
+ createVNode(_component_AFormSubmit, {
7146
+ "is-busy": _ctx.busy,
7147
+ "is-editing": _ctx.isEditing,
7148
+ "is-invalid": _ctx.v.$invalid.value,
7149
+ onSubmit: _ctx.submit
7150
+ }, null, 8, [
7151
+ "is-busy",
7152
+ "is-editing",
7153
+ "is-invalid",
7154
+ "onSubmit"
7155
+ ])
7156
+ ], 32);
7157
+ }
7158
+ var ARoleForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARoleForm_vue_vue_type_script_lang_default, [["render", _sfc_render$57]]);
7159
+ //#endregion
6854
7160
  //#region src/components/entities/role/ARoles.ts
6855
7161
  const ARoles = defineComponent({
6856
7162
  props: defineEntityCollectionVProps(),
@@ -6862,13 +7168,15 @@ const ARoles = defineComponent({
6862
7168
  props,
6863
7169
  setup: ctx
6864
7170
  });
7171
+ const translationName = useTranslation({
7172
+ namespace: TranslatorTranslationNamespace.ENTITY,
7173
+ key: TranslatorTranslationEntityKey.ROLE,
7174
+ count: 2
7175
+ });
6865
7176
  const translation = useTranslation({
6866
- namespace: "vuecs",
6867
- key: "noMore",
6868
- data: { name: useTranslation({
6869
- namespace: "default",
6870
- key: "roles"
6871
- }) }
7177
+ namespace: TranslatorTranslationNamespace.VUECS,
7178
+ key: TranslatorTranslationVuecsKey.NO_MORE,
7179
+ data: { name: translationName }
6872
7180
  });
6873
7181
  return () => render({ noMore: { content: translation.value } });
6874
7182
  }
@@ -6939,7 +7247,7 @@ var AClientRoleAssignment_vue_vue_type_script_lang_default = defineComponent({
6939
7247
  });
6940
7248
  //#endregion
6941
7249
  //#region src/components/entities/client-role/AClientRoleAssignment.vue
6942
- function _sfc_render$42(_ctx, _cache, $props, $setup, $data, $options) {
7250
+ function _sfc_render$56(_ctx, _cache, $props, $setup, $data, $options) {
6943
7251
  const _component_AToggleButton = resolveComponent("AToggleButton");
6944
7252
  return openBlock(), createBlock(_component_AToggleButton, {
6945
7253
  value: !!_ctx.manager.data.value,
@@ -6951,7 +7259,7 @@ function _sfc_render$42(_ctx, _cache, $props, $setup, $data, $options) {
6951
7259
  "onChanged"
6952
7260
  ]);
6953
7261
  }
6954
- var AClientRoleAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientRoleAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$42]]);
7262
+ var AClientRoleAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientRoleAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$56]]);
6955
7263
  //#endregion
6956
7264
  //#region src/components/entities/client-role/AClientRoleAssignments.vue?vue&type=script&lang.ts
6957
7265
  var AClientRoleAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -6975,7 +7283,7 @@ var AClientRoleAssignments_vue_vue_type_script_lang_default = defineComponent({
6975
7283
  });
6976
7284
  //#endregion
6977
7285
  //#region src/components/entities/client-role/AClientRoleAssignments.vue
6978
- function _sfc_render$41(_ctx, _cache, $props, $setup, $data, $options) {
7286
+ function _sfc_render$55(_ctx, _cache, $props, $setup, $data, $options) {
6979
7287
  const _component_AClientRoleAssignment = resolveComponent("AClientRoleAssignment");
6980
7288
  const _component_ARoles = resolveComponent("ARoles");
6981
7289
  return openBlock(), createBlock(_component_ARoles, { query: _ctx.query }, createSlots({
@@ -6992,7 +7300,7 @@ function _sfc_render$41(_ctx, _cache, $props, $setup, $data, $options) {
6992
7300
  };
6993
7301
  })]), 1032, ["query"]);
6994
7302
  }
6995
- var AClientRoleAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientRoleAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$41]]);
7303
+ var AClientRoleAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientRoleAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$55]]);
6996
7304
  //#endregion
6997
7305
  //#region src/components/entities/client-scope/AClientScope.ts
6998
7306
  const AClientScope = defineComponent({
@@ -7025,21 +7333,23 @@ const AClientScopes = defineComponent({
7025
7333
  props,
7026
7334
  setup: ctx
7027
7335
  });
7336
+ const translationClientScopes = useTranslation({
7337
+ namespace: TranslatorTranslationNamespace.FIELD,
7338
+ key: TranslatorTranslationFieldKey.CLIENT_SCOPES
7339
+ });
7028
7340
  const translation = useTranslation({
7029
- namespace: "vuecs",
7030
- key: "noMore",
7031
- data: { name: useTranslation({
7032
- namespace: "default",
7033
- key: "clientScopes"
7034
- }) }
7341
+ namespace: TranslatorTranslationNamespace.VUECS,
7342
+ key: TranslatorTranslationVuecsKey.NO_MORE,
7343
+ data: { name: translationClientScopes }
7035
7344
  });
7036
7345
  return () => render({ noMore: { content: translation.value } });
7037
7346
  }
7038
7347
  });
7039
7348
  //#endregion
7040
7349
  //#region src/components/entities/scope/AScopeForm.vue?vue&type=script&lang.ts
7041
- const AScopeForm = defineComponent({
7350
+ var AScopeForm_vue_vue_type_script_lang_default = defineComponent({
7042
7351
  components: {
7352
+ ANameInput: ANameInput_default,
7043
7353
  ARealmPicker,
7044
7354
  AFormSubmit,
7045
7355
  VCFormGroup,
@@ -7057,6 +7367,7 @@ const AScopeForm = defineComponent({
7057
7367
  emits: defineEntityVEmitOptions(),
7058
7368
  setup(props, ctx) {
7059
7369
  const busy = ref(false);
7370
+ const nameSeed = useId();
7060
7371
  const form = reactive({
7061
7372
  name: "",
7062
7373
  display_name: "",
@@ -7083,6 +7394,7 @@ const AScopeForm = defineComponent({
7083
7394
  function initForm() {
7084
7395
  if (props.name) form.name = props.name;
7085
7396
  assignFormProperties(form, manager.data.value);
7397
+ if (form.name.length === 0) form.name = generateName(nameSeed);
7086
7398
  }
7087
7399
  watch(updatedAt, (val, oldVal) => {
7088
7400
  if (val && val !== oldVal) {
@@ -7101,17 +7413,114 @@ const AScopeForm = defineComponent({
7101
7413
  isEditing,
7102
7414
  realmId,
7103
7415
  isNameFixed,
7104
- translationsDefault: useTranslationsForNamespace("default", [
7105
- { key: "name" },
7106
- { key: "displayName" },
7107
- { key: "description" },
7108
- { key: "realm" }
7416
+ translationsDefault: useTranslations([
7417
+ {
7418
+ namespace: TranslatorTranslationNamespace.FIELD,
7419
+ key: TranslatorTranslationFieldKey.NAME
7420
+ },
7421
+ {
7422
+ namespace: TranslatorTranslationNamespace.FIELD,
7423
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
7424
+ },
7425
+ {
7426
+ namespace: TranslatorTranslationNamespace.FIELD,
7427
+ key: TranslatorTranslationFieldKey.DESCRIPTION
7428
+ },
7429
+ {
7430
+ namespace: TranslatorTranslationNamespace.ENTITY,
7431
+ key: TranslatorTranslationEntityKey.REALM,
7432
+ count: 1
7433
+ }
7109
7434
  ]),
7110
7435
  submit
7111
7436
  };
7112
7437
  }
7113
7438
  });
7114
7439
  //#endregion
7440
+ //#region src/components/entities/scope/AScopeForm.vue
7441
+ function _sfc_render$54(_ctx, _cache, $props, $setup, $data, $options) {
7442
+ const _component_ANameInput = resolveComponent("ANameInput");
7443
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
7444
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
7445
+ const _component_VCFormInput = resolveComponent("VCFormInput");
7446
+ const _component_VCFormTextarea = resolveComponent("VCFormTextarea");
7447
+ const _component_ARealmPicker = resolveComponent("ARealmPicker");
7448
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
7449
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
7450
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
7451
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7452
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
7453
+ default: withCtx(() => [createVNode(_component_ANameInput, {
7454
+ modelValue: _ctx.v.fields.name.$model.value,
7455
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event,
7456
+ disabled: _ctx.isNameFixed
7457
+ }, null, 8, [
7458
+ "modelValue",
7459
+ "onUpdate:modelValue",
7460
+ "disabled"
7461
+ ])]),
7462
+ _: 2
7463
+ }, 1032, ["validation"])]),
7464
+ _: 1
7465
+ }, 8, ["field"]),
7466
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
7467
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7468
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
7469
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7470
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
7471
+ "onUpdate:modelValue": (next) => {
7472
+ _ctx.v.fields.display_name.$model.value = next;
7473
+ }
7474
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7475
+ _: 2
7476
+ }, 1032, ["validation"])]),
7477
+ _: 1
7478
+ }, 8, ["field"]),
7479
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.description }, {
7480
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7481
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.description), 1)]),
7482
+ default: withCtx(() => [createVNode(_component_VCFormTextarea, {
7483
+ "model-value": _ctx.v.fields.description.$model.value ?? "",
7484
+ rows: 7,
7485
+ "onUpdate:modelValue": (next) => {
7486
+ _ctx.v.fields.description.$model.value = next;
7487
+ }
7488
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7489
+ _: 2
7490
+ }, 1032, ["validation"])]),
7491
+ _: 1
7492
+ }, 8, ["field"]),
7493
+ !_ctx.realmId && !_ctx.isNameFixed && !_ctx.isEditing ? (openBlock(), createBlock(_component_IFieldValidation, {
7494
+ key: 0,
7495
+ field: _ctx.v.fields.realm_id
7496
+ }, {
7497
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7498
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.realm), 1)]),
7499
+ default: withCtx(() => [createVNode(_component_ARealmPicker, {
7500
+ value: _ctx.v.fields.realm_id.$model.value,
7501
+ onChange: (input) => {
7502
+ _ctx.v.fields.realm_id.$model.value = input.length > 0 ? input[0] ?? "" : "";
7503
+ }
7504
+ }, null, 8, ["value", "onChange"])]),
7505
+ _: 2
7506
+ }, 1032, ["validation"])]),
7507
+ _: 1
7508
+ }, 8, ["field"])) : createCommentVNode("v-if", true),
7509
+ createVNode(_component_AFormSubmit, {
7510
+ "is-busy": _ctx.busy,
7511
+ "is-editing": _ctx.isEditing,
7512
+ "is-invalid": _ctx.v.$invalid.value,
7513
+ onSubmit: _ctx.submit
7514
+ }, null, 8, [
7515
+ "is-busy",
7516
+ "is-editing",
7517
+ "is-invalid",
7518
+ "onSubmit"
7519
+ ])
7520
+ ], 32);
7521
+ }
7522
+ var AScopeForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AScopeForm_vue_vue_type_script_lang_default, [["render", _sfc_render$54]]);
7523
+ //#endregion
7115
7524
  //#region src/components/entities/scope/AScopes.ts
7116
7525
  const AScopes = defineComponent({
7117
7526
  props: defineEntityCollectionVProps(),
@@ -7123,13 +7532,15 @@ const AScopes = defineComponent({
7123
7532
  props,
7124
7533
  setup: ctx
7125
7534
  });
7535
+ const translationName = useTranslation({
7536
+ namespace: TranslatorTranslationNamespace.ENTITY,
7537
+ key: TranslatorTranslationEntityKey.SCOPE,
7538
+ count: 2
7539
+ });
7126
7540
  const translation = useTranslation({
7127
- namespace: "vuecs",
7128
- key: "noMore",
7129
- data: { name: useTranslation({
7130
- namespace: "default",
7131
- key: "scopes"
7132
- }) }
7541
+ namespace: TranslatorTranslationNamespace.VUECS,
7542
+ key: TranslatorTranslationVuecsKey.NO_MORE,
7543
+ data: { name: translationName }
7133
7544
  });
7134
7545
  return () => render({ noMore: { content: translation.value } });
7135
7546
  }
@@ -7200,7 +7611,7 @@ var AClientScopeAssignment_vue_vue_type_script_lang_default = defineComponent({
7200
7611
  });
7201
7612
  //#endregion
7202
7613
  //#region src/components/entities/client-scope/AClientScopeAssignment.vue
7203
- function _sfc_render$40(_ctx, _cache, $props, $setup, $data, $options) {
7614
+ function _sfc_render$53(_ctx, _cache, $props, $setup, $data, $options) {
7204
7615
  const _component_AToggleButton = resolveComponent("AToggleButton");
7205
7616
  return openBlock(), createBlock(_component_AToggleButton, {
7206
7617
  value: !!_ctx.manager.data.value,
@@ -7212,7 +7623,7 @@ function _sfc_render$40(_ctx, _cache, $props, $setup, $data, $options) {
7212
7623
  "onChanged"
7213
7624
  ]);
7214
7625
  }
7215
- var AClientScopeAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientScopeAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$40]]);
7626
+ var AClientScopeAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientScopeAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$53]]);
7216
7627
  //#endregion
7217
7628
  //#region src/components/entities/client-scope/AClientScopeAssignments.vue?vue&type=script&lang.ts
7218
7629
  var AClientScopeAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -7230,7 +7641,7 @@ var AClientScopeAssignments_vue_vue_type_script_lang_default = defineComponent({
7230
7641
  });
7231
7642
  //#endregion
7232
7643
  //#region src/components/entities/client-scope/AClientScopeAssignments.vue
7233
- function _sfc_render$39(_ctx, _cache, $props, $setup, $data, $options) {
7644
+ function _sfc_render$52(_ctx, _cache, $props, $setup, $data, $options) {
7234
7645
  const _component_AClientScopeAssignment = resolveComponent("AClientScopeAssignment");
7235
7646
  const _component_AScopes = resolveComponent("AScopes");
7236
7647
  return openBlock(), createBlock(_component_AScopes, null, createSlots({
@@ -7247,7 +7658,7 @@ function _sfc_render$39(_ctx, _cache, $props, $setup, $data, $options) {
7247
7658
  };
7248
7659
  })]), 1024);
7249
7660
  }
7250
- var AClientScopeAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientScopeAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$39]]);
7661
+ var AClientScopeAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AClientScopeAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$52]]);
7251
7662
  //#endregion
7252
7663
  //#region src/components/entities/identity-provider/AIdentityProvider.ts
7253
7664
  const AIdentityProvider = defineComponent({
@@ -7270,8 +7681,9 @@ const AIdentityProvider = defineComponent({
7270
7681
  });
7271
7682
  //#endregion
7272
7683
  //#region src/components/entities/identity-provider/AIdentityProviderBasicFields.vue?vue&type=script&lang.ts
7273
- const AIdentityProviderBasicFields = defineComponent({
7684
+ var AIdentityProviderBasicFields_vue_vue_type_script_lang_default = defineComponent({
7274
7685
  components: {
7686
+ ANameInput: ANameInput_default,
7275
7687
  VCFormGroup,
7276
7688
  VCFormInput,
7277
7689
  VCFormSwitch,
@@ -7280,6 +7692,7 @@ const AIdentityProviderBasicFields = defineComponent({
7280
7692
  props: { entity: { type: Object } },
7281
7693
  emits: ["updated"],
7282
7694
  setup(props, setup) {
7695
+ const nameSeed = useId();
7283
7696
  const form = reactive({
7284
7697
  name: "",
7285
7698
  display_name: "",
@@ -7291,9 +7704,6 @@ const AIdentityProviderBasicFields = defineComponent({
7291
7704
  group: computed(() => isEditing.value ? ValidatorGroup.UPDATE : ValidatorGroup.CREATE)
7292
7705
  });
7293
7706
  const isNameEmpty = computed(() => !form.name || form.name.length === 0);
7294
- function generateId() {
7295
- form.name = createNanoID();
7296
- }
7297
7707
  const update = () => {
7298
7708
  setup.emit("updated", {
7299
7709
  data: form,
@@ -7302,35 +7712,87 @@ const AIdentityProviderBasicFields = defineComponent({
7302
7712
  };
7303
7713
  function assign(data = {}) {
7304
7714
  assignFormProperties(form, data);
7305
- if (isNameEmpty.value) generateId();
7715
+ if (isNameEmpty.value) form.name = generateName(nameSeed);
7306
7716
  }
7307
7717
  setup.expose({ assign });
7308
7718
  onChange(useUpdatedAt(props.entity), () => assign(props.entity));
7309
7719
  assign(props.entity);
7310
- const translationsDefault = useTranslationsForNamespace("default", [
7311
- { key: "displayName" },
7312
- { key: "name" },
7313
- { key: "description" }
7720
+ const translationsDefault = useTranslations([
7721
+ {
7722
+ namespace: TranslatorTranslationNamespace.FIELD,
7723
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
7724
+ },
7725
+ {
7726
+ namespace: TranslatorTranslationNamespace.FIELD,
7727
+ key: TranslatorTranslationFieldKey.NAME
7728
+ },
7729
+ {
7730
+ namespace: TranslatorTranslationNamespace.FIELD,
7731
+ key: TranslatorTranslationFieldKey.DESCRIPTION
7732
+ }
7314
7733
  ]);
7315
7734
  const onEnabledChange = (value) => {
7316
7735
  v.fields.enabled.$model.value = value;
7317
7736
  update();
7318
7737
  };
7319
- const onGenerate = () => {
7320
- generateId();
7738
+ const onNameUpdate = (value) => {
7739
+ form.name = value;
7321
7740
  update();
7322
7741
  };
7323
7742
  return {
7324
7743
  v,
7325
7744
  translationsDefault,
7326
- onGenerate,
7745
+ onNameUpdate,
7327
7746
  onEnabledChange
7328
7747
  };
7329
7748
  }
7330
7749
  });
7331
7750
  //#endregion
7751
+ //#region src/components/entities/identity-provider/AIdentityProviderBasicFields.vue
7752
+ const _hoisted_1$24 = { class: "mt-3" };
7753
+ function _sfc_render$51(_ctx, _cache, $props, $setup, $data, $options) {
7754
+ const _component_ANameInput = resolveComponent("ANameInput");
7755
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
7756
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
7757
+ const _component_VCFormInput = resolveComponent("VCFormInput");
7758
+ const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
7759
+ return openBlock(), createElementBlock("div", null, [
7760
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
7761
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7762
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
7763
+ default: withCtx(() => [createVNode(_component_ANameInput, {
7764
+ "model-value": _ctx.v.fields.name.$model.value,
7765
+ "onUpdate:modelValue": _ctx.onNameUpdate
7766
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7767
+ _: 2
7768
+ }, 1032, ["validation"])]),
7769
+ _: 1
7770
+ }, 8, ["field"]),
7771
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
7772
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7773
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
7774
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7775
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
7776
+ "onUpdate:modelValue": (next) => {
7777
+ _ctx.v.fields.display_name.$model.value = next;
7778
+ }
7779
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7780
+ _: 2
7781
+ }, 1032, ["validation"])]),
7782
+ _: 1
7783
+ }, 8, ["field"]),
7784
+ createElementVNode("div", _hoisted_1$24, [createVNode(_component_VCFormSwitch, {
7785
+ "model-value": _ctx.v.fields.enabled.$model.value,
7786
+ label: true,
7787
+ "label-content": "Enabled?",
7788
+ "onUpdate:modelValue": _ctx.onEnabledChange
7789
+ }, null, 8, ["model-value", "onUpdate:modelValue"])])
7790
+ ]);
7791
+ }
7792
+ var AIdentityProviderBasicFields_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderBasicFields_vue_vue_type_script_lang_default, [["render", _sfc_render$51]]);
7793
+ //#endregion
7332
7794
  //#region src/components/entities/identity-provider/AIdentityProviderLdapConnectionFields.vue?vue&type=script&lang.ts
7333
- const AIdentityProviderLdapConnectionFields = defineComponent({
7795
+ var AIdentityProviderLdapConnectionFields_vue_vue_type_script_lang_default = defineComponent({
7334
7796
  components: {
7335
7797
  VCFormGroup,
7336
7798
  VCFormInput,
@@ -7374,8 +7836,68 @@ const AIdentityProviderLdapConnectionFields = defineComponent({
7374
7836
  }
7375
7837
  });
7376
7838
  //#endregion
7839
+ //#region src/components/entities/identity-provider/AIdentityProviderLdapConnectionFields.vue
7840
+ function _sfc_render$50(_ctx, _cache, $props, $setup, $data, $options) {
7841
+ const _component_VCFormInput = resolveComponent("VCFormInput");
7842
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
7843
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
7844
+ const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
7845
+ return openBlock(), createElementBlock("div", null, [
7846
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.url }, {
7847
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7848
+ label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" URL ", -1)])]),
7849
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7850
+ modelValue: _ctx.v.fields.url.$model.value,
7851
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.url.$model.value = $event,
7852
+ placeholder: "<scheme>://<address>:<port>"
7853
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
7854
+ _: 2
7855
+ }, 1032, ["validation"])]),
7856
+ _: 1
7857
+ }, 8, ["field"]),
7858
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.timeout }, {
7859
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7860
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" Timeout ", -1)])]),
7861
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7862
+ "model-value": String(_ctx.v.fields.timeout.$model.value),
7863
+ type: "number",
7864
+ "onUpdate:modelValue": _ctx.onTimeoutChange
7865
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
7866
+ _: 2
7867
+ }, 1032, ["validation"])]),
7868
+ _: 1
7869
+ }, 8, ["field"]),
7870
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.start_tls }, {
7871
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7872
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" StartTLS ", -1)])]),
7873
+ default: withCtx(() => [createVNode(_component_VCFormSwitch, {
7874
+ modelValue: _ctx.v.fields.start_tls.$model.value,
7875
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.start_tls.$model.value = $event,
7876
+ label: true,
7877
+ "label-content": "Enable StartTLS process?"
7878
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
7879
+ _: 2
7880
+ }, 1032, ["validation"])]),
7881
+ _: 1
7882
+ }, 8, ["field"]),
7883
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.base_dn }, {
7884
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7885
+ label: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Base DN ", -1)])]),
7886
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7887
+ modelValue: _ctx.v.fields.base_dn.$model.value,
7888
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.base_dn.$model.value = $event,
7889
+ placeholder: "e.g. dc=example,dc=com"
7890
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
7891
+ _: 2
7892
+ }, 1032, ["validation"])]),
7893
+ _: 1
7894
+ }, 8, ["field"])
7895
+ ]);
7896
+ }
7897
+ var AIdentityProviderLdapConnectionFields_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderLdapConnectionFields_vue_vue_type_script_lang_default, [["render", _sfc_render$50]]);
7898
+ //#endregion
7377
7899
  //#region src/components/entities/identity-provider/AIdentityProviderLdapCredentialsFields.vue?vue&type=script&lang.ts
7378
- const AIdentityProviderLdapCredentialsFields = defineComponent({
7900
+ var AIdentityProviderLdapCredentialsFields_vue_vue_type_script_lang_default = defineComponent({
7379
7901
  components: {
7380
7902
  VCFormGroup,
7381
7903
  VCFormInput,
@@ -7409,8 +7931,51 @@ const AIdentityProviderLdapCredentialsFields = defineComponent({
7409
7931
  }
7410
7932
  });
7411
7933
  //#endregion
7934
+ //#region src/components/entities/identity-provider/AIdentityProviderLdapCredentialsFields.vue
7935
+ function _sfc_render$49(_ctx, _cache, $props, $setup, $data, $options) {
7936
+ const _component_VCFormInput = resolveComponent("VCFormInput");
7937
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
7938
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
7939
+ const _component_VCIcon = resolveComponent("VCIcon");
7940
+ return openBlock(), createElementBlock("div", null, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.user }, {
7941
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7942
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" User ", -1)])]),
7943
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7944
+ modelValue: _ctx.v.fields.user.$model.value,
7945
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.user.$model.value = $event
7946
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
7947
+ _: 2
7948
+ }, 1032, ["validation"])]),
7949
+ _: 1
7950
+ }, 8, ["field"]), createVNode(_component_IFieldValidation, { field: _ctx.v.fields.password }, {
7951
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
7952
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Password ", -1)])]),
7953
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
7954
+ modelValue: _ctx.v.fields.password.$model.value,
7955
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.password.$model.value = $event,
7956
+ type: _ctx.passwordShow ? "text" : "password",
7957
+ autocomplete: "current-password"
7958
+ }, {
7959
+ groupAppend: withCtx(() => [createElementVNode("button", {
7960
+ class: "btn",
7961
+ type: "button",
7962
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.passwordShow = !_ctx.passwordShow, ["prevent"]))
7963
+ }, [createVNode(_component_VCIcon, { name: _ctx.passwordShow ? "fa6-solid:eye-slash" : "fa6-solid:eye" }, null, 8, ["name"])])]),
7964
+ _: 1
7965
+ }, 8, [
7966
+ "modelValue",
7967
+ "onUpdate:modelValue",
7968
+ "type"
7969
+ ])]),
7970
+ _: 2
7971
+ }, 1032, ["validation"])]),
7972
+ _: 1
7973
+ }, 8, ["field"])]);
7974
+ }
7975
+ var AIdentityProviderLdapCredentialsFields_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderLdapCredentialsFields_vue_vue_type_script_lang_default, [["render", _sfc_render$49]]);
7976
+ //#endregion
7412
7977
  //#region src/components/entities/identity-provider/AIdentityProviderLdapGroupFields.vue?vue&type=script&lang.ts
7413
- const AIdentityProviderLdapGroupFields = defineComponent({
7978
+ var AIdentityProviderLdapGroupFields_vue_vue_type_script_lang_default = defineComponent({
7414
7979
  components: {
7415
7980
  VCFormGroup,
7416
7981
  VCFormInput,
@@ -7444,8 +8009,85 @@ const AIdentityProviderLdapGroupFields = defineComponent({
7444
8009
  }
7445
8010
  });
7446
8011
  //#endregion
8012
+ //#region src/components/entities/identity-provider/AIdentityProviderLdapGroupFields.vue
8013
+ function _sfc_render$48(_ctx, _cache, $props, $setup, $data, $options) {
8014
+ const _component_VCFormInput = resolveComponent("VCFormInput");
8015
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
8016
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
8017
+ return openBlock(), createElementBlock("div", null, [
8018
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.group_filter }, {
8019
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8020
+ label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Filter ", -1)])]),
8021
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8022
+ modelValue: _ctx.v.fields.group_filter.$model.value,
8023
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.group_filter.$model.value = $event,
8024
+ placeholder: "(member={{dn}})"
8025
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8026
+ _: 2
8027
+ }, 1032, ["validation"])]),
8028
+ _: 1
8029
+ }, 8, ["field"]),
8030
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.group_base_dn }, {
8031
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8032
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" Base DN ", -1)])]),
8033
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8034
+ modelValue: _ctx.v.fields.group_base_dn.$model.value,
8035
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.group_base_dn.$model.value = $event
8036
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8037
+ _: 2
8038
+ }, 1032, ["validation"])]),
8039
+ _: 1
8040
+ }, 8, ["field"]),
8041
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.group_class }, {
8042
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8043
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Class ", -1)])]),
8044
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8045
+ modelValue: _ctx.v.fields.group_class.$model.value,
8046
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.group_class.$model.value = $event
8047
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8048
+ _: 2
8049
+ }, 1032, ["validation"])]),
8050
+ _: 1
8051
+ }, 8, ["field"]),
8052
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.group_name_attribute }, {
8053
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8054
+ label: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Name Attribute ", -1)])]),
8055
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8056
+ modelValue: _ctx.v.fields.group_name_attribute.$model.value,
8057
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.group_name_attribute.$model.value = $event
8058
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8059
+ _: 2
8060
+ }, 1032, ["validation"])]),
8061
+ _: 1
8062
+ }, 8, ["field"]),
8063
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.group_member_attribute }, {
8064
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8065
+ label: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode(" Member Attribute ", -1)])]),
8066
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8067
+ modelValue: _ctx.v.fields.group_member_attribute.$model.value,
8068
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.group_member_attribute.$model.value = $event
8069
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8070
+ _: 2
8071
+ }, 1032, ["validation"])]),
8072
+ _: 1
8073
+ }, 8, ["field"]),
8074
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.group_member_user_attribute }, {
8075
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8076
+ label: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode(" Member User Attribute ", -1)])]),
8077
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8078
+ modelValue: _ctx.v.fields.group_member_user_attribute.$model.value,
8079
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.group_member_user_attribute.$model.value = $event
8080
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8081
+ _: 2
8082
+ }, 1032, ["validation"])]),
8083
+ _: 1
8084
+ }, 8, ["field"])
8085
+ ]);
8086
+ }
8087
+ var AIdentityProviderLdapGroupFields_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderLdapGroupFields_vue_vue_type_script_lang_default, [["render", _sfc_render$48]]);
8088
+ //#endregion
7447
8089
  //#region src/components/entities/identity-provider/AIdentityProviderLdapUserFields.vue?vue&type=script&lang.ts
7448
- const AIdentityProviderLdapUserFields = defineComponent({
8090
+ var AIdentityProviderLdapUserFields_vue_vue_type_script_lang_default = defineComponent({
7449
8091
  components: {
7450
8092
  VCFormGroup,
7451
8093
  VCFormInput,
@@ -7478,6 +8120,72 @@ const AIdentityProviderLdapUserFields = defineComponent({
7478
8120
  }
7479
8121
  });
7480
8122
  //#endregion
8123
+ //#region src/components/entities/identity-provider/AIdentityProviderLdapUserFields.vue
8124
+ function _sfc_render$47(_ctx, _cache, $props, $setup, $data, $options) {
8125
+ const _component_VCFormInput = resolveComponent("VCFormInput");
8126
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
8127
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
8128
+ return openBlock(), createElementBlock("div", null, [
8129
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.user_filter }, {
8130
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8131
+ label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Filter ", -1)])]),
8132
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8133
+ modelValue: _ctx.v.fields.user_filter.$model.value,
8134
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.user_filter.$model.value = $event,
8135
+ placeholder: "(|({name_attribute}={{input}})({mail_attribute}={{input}}))"
8136
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8137
+ _: 2
8138
+ }, 1032, ["validation"])]),
8139
+ _: 1
8140
+ }, 8, ["field"]),
8141
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.user_base_dn }, {
8142
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8143
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" Base DN ", -1)])]),
8144
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8145
+ modelValue: _ctx.v.fields.user_base_dn.$model.value,
8146
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.user_base_dn.$model.value = $event
8147
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8148
+ _: 2
8149
+ }, 1032, ["validation"])]),
8150
+ _: 1
8151
+ }, 8, ["field"]),
8152
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.user_name_attribute }, {
8153
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8154
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Name Attribute ", -1)])]),
8155
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8156
+ modelValue: _ctx.v.fields.user_name_attribute.$model.value,
8157
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.user_name_attribute.$model.value = $event
8158
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8159
+ _: 2
8160
+ }, 1032, ["validation"])]),
8161
+ _: 1
8162
+ }, 8, ["field"]),
8163
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.user_mail_attribute }, {
8164
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8165
+ label: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Mail Attribute ", -1)])]),
8166
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8167
+ modelValue: _ctx.v.fields.user_mail_attribute.$model.value,
8168
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.user_mail_attribute.$model.value = $event
8169
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8170
+ _: 2
8171
+ }, 1032, ["validation"])]),
8172
+ _: 1
8173
+ }, 8, ["field"]),
8174
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.user_display_name_attribute }, {
8175
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8176
+ label: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode(" DisplayName Attribute ", -1)])]),
8177
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8178
+ modelValue: _ctx.v.fields.user_display_name_attribute.$model.value,
8179
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.user_display_name_attribute.$model.value = $event
8180
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8181
+ _: 2
8182
+ }, 1032, ["validation"])]),
8183
+ _: 1
8184
+ }, 8, ["field"])
8185
+ ]);
8186
+ }
8187
+ var AIdentityProviderLdapUserFields_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderLdapUserFields_vue_vue_type_script_lang_default, [["render", _sfc_render$47]]);
8188
+ //#endregion
7481
8189
  //#region src/components/entities/identity-provider/protocol/utils.ts
7482
8190
  const elements$1 = {
7483
8191
  [IdentityProviderProtocol.OAUTH2]: {
@@ -7513,14 +8221,14 @@ const AIdentityProviderProtocol = defineComponent({
7513
8221
  });
7514
8222
  //#endregion
7515
8223
  //#region src/components/entities/identity-provider/AIdentityProviderLdapForm.vue?vue&type=script&lang.ts
7516
- const AIdentityProviderLdapForm = defineComponent({
8224
+ var AIdentityProviderLdapForm_vue_vue_type_script_lang_default = defineComponent({
7517
8225
  components: {
7518
8226
  AFormSubmit,
7519
- AIdentityProviderBasicFields,
7520
- AIdentityProviderLdapConnectionFields,
7521
- AIdentityProviderLdapCredentialsFields,
7522
- AIdentityProviderLdapGroupFields,
7523
- AIdentityProviderLdapUserFields,
8227
+ AIdentityProviderBasicFields: AIdentityProviderBasicFields_default,
8228
+ AIdentityProviderLdapConnectionFields: AIdentityProviderLdapConnectionFields_default,
8229
+ AIdentityProviderLdapCredentialsFields: AIdentityProviderLdapCredentialsFields_default,
8230
+ AIdentityProviderLdapGroupFields: AIdentityProviderLdapGroupFields_default,
8231
+ AIdentityProviderLdapUserFields: AIdentityProviderLdapUserFields_default,
7524
8232
  AIdentityProviderProtocol
7525
8233
  },
7526
8234
  props: {
@@ -7581,6 +8289,53 @@ const AIdentityProviderLdapForm = defineComponent({
7581
8289
  }
7582
8290
  });
7583
8291
  //#endregion
8292
+ //#region src/components/entities/identity-provider/AIdentityProviderLdapForm.vue
8293
+ const _hoisted_1$23 = { class: "mb-3" };
8294
+ const _hoisted_2$16 = { class: "row" };
8295
+ const _hoisted_3$12 = { class: "col" };
8296
+ const _hoisted_4$10 = { class: "col" };
8297
+ const _hoisted_5$9 = { class: "row" };
8298
+ const _hoisted_6$7 = { class: "col" };
8299
+ const _hoisted_7$3 = { class: "col" };
8300
+ function _sfc_render$46(_ctx, _cache, $props, $setup, $data, $options) {
8301
+ const _component_VCIcon = resolveComponent("VCIcon");
8302
+ const _component_AIdentityProviderProtocol = resolveComponent("AIdentityProviderProtocol");
8303
+ const _component_AIdentityProviderBasicFields = resolveComponent("AIdentityProviderBasicFields");
8304
+ const _component_AIdentityProviderLdapCredentialsFields = resolveComponent("AIdentityProviderLdapCredentialsFields");
8305
+ const _component_AIdentityProviderLdapConnectionFields = resolveComponent("AIdentityProviderLdapConnectionFields");
8306
+ const _component_AIdentityProviderLdapUserFields = resolveComponent("AIdentityProviderLdapUserFields");
8307
+ const _component_AIdentityProviderLdapGroupFields = resolveComponent("AIdentityProviderLdapGroupFields");
8308
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
8309
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
8310
+ !_ctx.data ? (openBlock(), createBlock(_component_AIdentityProviderProtocol, {
8311
+ id: _ctx.ldapProtocol,
8312
+ key: _ctx.ldapProtocol
8313
+ }, {
8314
+ default: withCtx((element) => [createElementVNode("div", null, [createElementVNode("h4", _hoisted_1$23, [createVNode(_component_VCIcon, {
8315
+ name: element.icon,
8316
+ class: "pe-1"
8317
+ }, null, 8, ["name"]), createTextVNode(" " + toDisplayString(element.name), 1)])])]),
8318
+ _: 1
8319
+ }, 8, ["id"])) : createCommentVNode("v-if", true),
8320
+ createElementVNode("div", _hoisted_2$16, [createElementVNode("div", _hoisted_3$12, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:wrench" }), _cache[1] || (_cache[1] = createTextVNode(" Basic ", -1))]), createVNode(_component_AIdentityProviderBasicFields, { entity: _ctx.data }, null, 8, ["entity"])]), createElementVNode("div", _hoisted_4$10, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:lock" }), _cache[2] || (_cache[2] = createTextVNode(" Security ", -1))]), createVNode(_component_AIdentityProviderLdapCredentialsFields, { entity: _ctx.data }, null, 8, ["entity"])])]),
8321
+ createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:vihara" }), _cache[3] || (_cache[3] = createTextVNode(" Connection ", -1))]),
8322
+ createVNode(_component_AIdentityProviderLdapConnectionFields, { entity: _ctx.data }, null, 8, ["entity"]),
8323
+ createElementVNode("div", _hoisted_5$9, [createElementVNode("div", _hoisted_6$7, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:user" }), _cache[4] || (_cache[4] = createTextVNode(" User ", -1))]), createVNode(_component_AIdentityProviderLdapUserFields, { entity: _ctx.data }, null, 8, ["entity"])]), createElementVNode("div", _hoisted_7$3, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:masks-theater" }), _cache[5] || (_cache[5] = createTextVNode(" Group ", -1))]), createVNode(_component_AIdentityProviderLdapGroupFields, { entity: _ctx.data }, null, 8, ["entity"])])]),
8324
+ createVNode(_component_AFormSubmit, {
8325
+ "is-busy": _ctx.busy,
8326
+ "is-editing": _ctx.isEditing,
8327
+ "is-invalid": _ctx.isInvalid,
8328
+ onSubmit: _ctx.submit
8329
+ }, null, 8, [
8330
+ "is-busy",
8331
+ "is-editing",
8332
+ "is-invalid",
8333
+ "onSubmit"
8334
+ ])
8335
+ ], 32);
8336
+ }
8337
+ var AIdentityProviderLdapForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderLdapForm_vue_vue_type_script_lang_default, [["render", _sfc_render$46]]);
8338
+ //#endregion
7584
8339
  //#region src/components/entities/identity-provider/preset/utils.ts
7585
8340
  const elements = {
7586
8341
  [IdentityProviderPreset.FACEBOOK]: {
@@ -7665,16 +8420,16 @@ var AIdentityProviderPicker_vue_vue_type_script_lang_default = defineComponent({
7665
8420
  });
7666
8421
  //#endregion
7667
8422
  //#region src/components/entities/identity-provider/AIdentityProviderPicker.vue
7668
- const _hoisted_1$16 = { class: "flex flex-col gap-2" };
7669
- const _hoisted_2$11 = { class: "flex flex-row gap-2 flex-wrap" };
7670
- const _hoisted_3$9 = ["onClick"];
7671
- const _hoisted_4$7 = { class: "flex flex-row gap-2 flex-wrap" };
7672
- const _hoisted_5$5 = ["onClick"];
7673
- function _sfc_render$38(_ctx, _cache, $props, $setup, $data, $options) {
8423
+ const _hoisted_1$22 = { class: "flex flex-col gap-2" };
8424
+ const _hoisted_2$15 = { class: "flex flex-row gap-2 flex-wrap" };
8425
+ const _hoisted_3$11 = ["onClick"];
8426
+ const _hoisted_4$9 = { class: "flex flex-row gap-2 flex-wrap" };
8427
+ const _hoisted_5$8 = ["onClick"];
8428
+ function _sfc_render$45(_ctx, _cache, $props, $setup, $data, $options) {
7674
8429
  const _component_VCIcon = resolveComponent("VCIcon");
7675
8430
  const _component_AIdentityProviderProtocol = resolveComponent("AIdentityProviderProtocol");
7676
8431
  const _component_AIdentityProviderPreset = resolveComponent("AIdentityProviderPreset");
7677
- return openBlock(), createElementBlock("div", _hoisted_1$16, [createElementVNode("div", null, [_cache[0] || (_cache[0] = createElementVNode("h6", null, "Protocols", -1)), createElementVNode("div", _hoisted_2$11, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.protocols, (item, key) => {
8432
+ return openBlock(), createElementBlock("div", _hoisted_1$22, [createElementVNode("div", null, [_cache[0] || (_cache[0] = createElementVNode("h6", null, "Protocols", -1)), createElementVNode("div", _hoisted_2$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.protocols, (item, key) => {
7678
8433
  return openBlock(), createBlock(_component_AIdentityProviderProtocol, {
7679
8434
  key,
7680
8435
  id: item
@@ -7685,10 +8440,10 @@ function _sfc_render$38(_ctx, _cache, $props, $setup, $data, $options) {
7685
8440
  }, [createElementVNode("div", null, [createVNode(_component_VCIcon, {
7686
8441
  class: "text-2xl",
7687
8442
  name: props.icon
7688
- }, null, 8, ["name"])]), createElementVNode("div", null, toDisplayString(props.name), 1)], 10, _hoisted_3$9)]),
8443
+ }, null, 8, ["name"])]), createElementVNode("div", null, toDisplayString(props.name), 1)], 10, _hoisted_3$11)]),
7689
8444
  _: 2
7690
8445
  }, 1032, ["id"]);
7691
- }), 128))])]), createElementVNode("div", null, [_cache[1] || (_cache[1] = createElementVNode("h6", null, "Presets", -1)), createElementVNode("div", _hoisted_4$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.presets, (item, key) => {
8446
+ }), 128))])]), createElementVNode("div", null, [_cache[1] || (_cache[1] = createElementVNode("h6", null, "Presets", -1)), createElementVNode("div", _hoisted_4$9, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.presets, (item, key) => {
7692
8447
  return openBlock(), createBlock(_component_AIdentityProviderPreset, {
7693
8448
  key,
7694
8449
  id: item
@@ -7699,15 +8454,15 @@ function _sfc_render$38(_ctx, _cache, $props, $setup, $data, $options) {
7699
8454
  }, [createElementVNode("div", null, [createVNode(_component_VCIcon, {
7700
8455
  class: "text-2xl",
7701
8456
  name: props.icon
7702
- }, null, 8, ["name"])]), createElementVNode("div", null, toDisplayString(props.name), 1)], 10, _hoisted_5$5)]),
8457
+ }, null, 8, ["name"])]), createElementVNode("div", null, toDisplayString(props.name), 1)], 10, _hoisted_5$8)]),
7703
8458
  _: 2
7704
8459
  }, 1032, ["id"]);
7705
8460
  }), 128))])])]);
7706
8461
  }
7707
- var AIdentityProviderPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderPicker_vue_vue_type_script_lang_default, [["render", _sfc_render$38], ["__scopeId", "data-v-cb0d0718"]]);
8462
+ var AIdentityProviderPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderPicker_vue_vue_type_script_lang_default, [["render", _sfc_render$45], ["__scopeId", "data-v-cb0d0718"]]);
7708
8463
  //#endregion
7709
8464
  //#region src/components/entities/identity-provider/AIdentityProviderOAuth2ClientFields.vue?vue&type=script&lang.ts
7710
- const AIdentityProviderOAuth2ClientFields = defineComponent({
8465
+ var AIdentityProviderOAuth2ClientFields_vue_vue_type_script_lang_default = defineComponent({
7711
8466
  components: {
7712
8467
  VCFormGroup,
7713
8468
  VCFormInput,
@@ -7734,6 +8489,49 @@ const AIdentityProviderOAuth2ClientFields = defineComponent({
7734
8489
  }
7735
8490
  });
7736
8491
  //#endregion
8492
+ //#region src/components/entities/identity-provider/AIdentityProviderOAuth2ClientFields.vue
8493
+ function _sfc_render$44(_ctx, _cache, $props, $setup, $data, $options) {
8494
+ const _component_VCFormInput = resolveComponent("VCFormInput");
8495
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
8496
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
8497
+ const _component_VCIcon = resolveComponent("VCIcon");
8498
+ return openBlock(), createElementBlock("div", null, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.client_id }, {
8499
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8500
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" Client ID ", -1)])]),
8501
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8502
+ modelValue: _ctx.v.fields.client_id.$model.value,
8503
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.client_id.$model.value = $event
8504
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
8505
+ _: 2
8506
+ }, 1032, ["validation"])]),
8507
+ _: 1
8508
+ }, 8, ["field"]), createVNode(_component_IFieldValidation, { field: _ctx.v.fields.client_secret }, {
8509
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8510
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Client Secret ", -1)])]),
8511
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8512
+ modelValue: _ctx.v.fields.client_secret.$model.value,
8513
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.client_secret.$model.value = $event,
8514
+ type: _ctx.secretShow ? "text" : "password",
8515
+ autocomplete: "new-password"
8516
+ }, {
8517
+ groupAppend: withCtx(() => [createElementVNode("button", {
8518
+ class: "btn",
8519
+ type: "button",
8520
+ onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.secretShow = !_ctx.secretShow, ["prevent"]))
8521
+ }, [createVNode(_component_VCIcon, { name: _ctx.secretShow ? "fa6-solid:eye-slash" : "fa6-solid:eye" }, null, 8, ["name"])])]),
8522
+ _: 1
8523
+ }, 8, [
8524
+ "modelValue",
8525
+ "onUpdate:modelValue",
8526
+ "type"
8527
+ ])]),
8528
+ _: 2
8529
+ }, 1032, ["validation"])]),
8530
+ _: 1
8531
+ }, 8, ["field"])]);
8532
+ }
8533
+ var AIdentityProviderOAuth2ClientFields_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderOAuth2ClientFields_vue_vue_type_script_lang_default, [["render", _sfc_render$44]]);
8534
+ //#endregion
7737
8535
  //#region src/components/entities/identity-provider/AIdentityProviderOAuth2Discovery.vue?vue&type=script&lang.ts
7738
8536
  var DiscoveryUrlValidator = class extends Container {
7739
8537
  initialize() {
@@ -7741,56 +8539,99 @@ var DiscoveryUrlValidator = class extends Container {
7741
8539
  this.mount("url", { optional: true }, createValidator(url()));
7742
8540
  }
7743
8541
  };
8542
+ var AIdentityProviderOAuth2Discovery_vue_vue_type_script_lang_default = defineComponent({
8543
+ components: {
8544
+ VCFormGroup,
8545
+ VCFormInput,
8546
+ IFieldValidation
8547
+ },
8548
+ emits: ["lookup", "failed"],
8549
+ setup(_, setup) {
8550
+ const busy = ref(false);
8551
+ const form = reactive({ url: "" });
8552
+ const v = useValidup(new DiscoveryUrlValidator(), form, { detached: true });
8553
+ const lookupValid = ref(false);
8554
+ const message = ref(null);
8555
+ const apiClient = new Client();
8556
+ const lookup = async () => {
8557
+ if (busy.value || v.fields.url.$invalid.value) return;
8558
+ busy.value = true;
8559
+ message.value = null;
8560
+ lookupValid.value = false;
8561
+ try {
8562
+ const response = await apiClient.get(form.url);
8563
+ if (isOpenIDProviderMetadata(response.data)) {
8564
+ setup.emit("lookup", response.data);
8565
+ lookupValid.value = true;
8566
+ }
8567
+ } catch (e) {
8568
+ lookupValid.value = false;
8569
+ if (e instanceof Error) {
8570
+ message.value = `Lookup failed with: ${e.message}`;
8571
+ setup.emit("failed", e);
8572
+ }
8573
+ } finally {
8574
+ busy.value = false;
8575
+ }
8576
+ };
8577
+ return {
8578
+ v,
8579
+ message,
8580
+ lookupValid,
8581
+ isDisabled: computed(() => busy.value || !form.url || v.$invalid.value),
8582
+ lookup
8583
+ };
8584
+ }
8585
+ });
8586
+ //#endregion
8587
+ //#region src/components/entities/identity-provider/AIdentityProviderOAuth2Discovery.vue
8588
+ const _hoisted_1$21 = {
8589
+ key: 0,
8590
+ class: "alert alert-sm alert-warning"
8591
+ };
8592
+ const _hoisted_2$14 = ["disabled"];
8593
+ function _sfc_render$43(_ctx, _cache, $props, $setup, $data, $options) {
8594
+ const _component_VCFormInput = resolveComponent("VCFormInput");
8595
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
8596
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
8597
+ const _component_VCIcon = resolveComponent("VCIcon");
8598
+ return openBlock(), createElementBlock("div", null, [
8599
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.url }, {
8600
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8601
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" Discovery ", -1)])]),
8602
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8603
+ modelValue: _ctx.v.fields.url.$model.value,
8604
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.url.$model.value = $event,
8605
+ class: normalizeClass({ "is-valid": _ctx.lookupValid }),
8606
+ placeholder: "https://example.com/.well-known/openid-configuration"
8607
+ }, null, 8, [
8608
+ "modelValue",
8609
+ "onUpdate:modelValue",
8610
+ "class"
8611
+ ])]),
8612
+ _: 2
8613
+ }, 1032, ["validation"])]),
8614
+ _: 1
8615
+ }, 8, ["field"]),
8616
+ _ctx.message ? (openBlock(), createElementBlock("div", _hoisted_1$21, toDisplayString(_ctx.message), 1)) : createCommentVNode("v-if", true),
8617
+ createElementVNode("button", {
8618
+ type: "button",
8619
+ class: "btn btn-xs btn-primary mb-1",
8620
+ disabled: _ctx.isDisabled,
8621
+ onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.lookup && _ctx.lookup(...args), ["prevent"]))
8622
+ }, [createVNode(_component_VCIcon, {
8623
+ name: "fa6-solid:magnifying-glass",
8624
+ class: "pe-1"
8625
+ }), _cache[2] || (_cache[2] = createTextVNode(" Lookup ", -1))], 8, _hoisted_2$14)
8626
+ ]);
8627
+ }
7744
8628
  //#endregion
7745
8629
  //#region src/components/entities/identity-provider/AIdentityProviderOAuth2EndpointFields.vue?vue&type=script&lang.ts
7746
8630
  var AIdentityProviderOAuth2EndpointFields_vue_vue_type_script_lang_default = defineComponent({
7747
8631
  components: {
7748
8632
  VCFormGroup,
7749
8633
  VCFormInput,
7750
- AIdentityProviderOAuth2Discovery: defineComponent({
7751
- components: {
7752
- VCFormGroup,
7753
- VCFormInput,
7754
- IFieldValidation
7755
- },
7756
- emits: ["lookup", "failed"],
7757
- setup(_, setup) {
7758
- const busy = ref(false);
7759
- const form = reactive({ url: "" });
7760
- const v = useValidup(new DiscoveryUrlValidator(), form, { detached: true });
7761
- const lookupValid = ref(false);
7762
- const message = ref(null);
7763
- const apiClient = new Client();
7764
- const lookup = async () => {
7765
- if (busy.value || v.fields.url.$invalid.value) return;
7766
- busy.value = true;
7767
- message.value = null;
7768
- lookupValid.value = false;
7769
- try {
7770
- const response = await apiClient.get(form.url);
7771
- if (isOpenIDProviderMetadata(response.data)) {
7772
- setup.emit("lookup", response.data);
7773
- lookupValid.value = true;
7774
- }
7775
- } catch (e) {
7776
- lookupValid.value = false;
7777
- if (e instanceof Error) {
7778
- message.value = `Lookup failed with: ${e.message}`;
7779
- setup.emit("failed", e);
7780
- }
7781
- } finally {
7782
- busy.value = false;
7783
- }
7784
- };
7785
- return {
7786
- v,
7787
- message,
7788
- lookupValid,
7789
- isDisabled: computed(() => busy.value || !form.url || v.$invalid.value),
7790
- lookup
7791
- };
7792
- }
7793
- }),
8634
+ AIdentityProviderOAuth2Discovery: /* @__PURE__ */ _plugin_vue_export_helper_default(AIdentityProviderOAuth2Discovery_vue_vue_type_script_lang_default, [["render", _sfc_render$43]]),
7794
8635
  IFieldValidation
7795
8636
  },
7796
8637
  props: {
@@ -7829,7 +8670,7 @@ var AIdentityProviderOAuth2EndpointFields_vue_vue_type_script_lang_default = def
7829
8670
  });
7830
8671
  //#endregion
7831
8672
  //#region src/components/entities/identity-provider/AIdentityProviderOAuth2EndpointFields.vue
7832
- function _sfc_render$37(_ctx, _cache, $props, $setup, $data, $options) {
8673
+ function _sfc_render$42(_ctx, _cache, $props, $setup, $data, $options) {
7833
8674
  const _component_AIdentityProviderOAuth2Discovery = resolveComponent("AIdentityProviderOAuth2Discovery");
7834
8675
  const _component_VCFormInput = resolveComponent("VCFormInput");
7835
8676
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
@@ -7888,12 +8729,12 @@ function _sfc_render$37(_ctx, _cache, $props, $setup, $data, $options) {
7888
8729
  }
7889
8730
  //#endregion
7890
8731
  //#region src/components/entities/identity-provider/AIdentityProviderOAuth2Form.vue?vue&type=script&lang.ts
7891
- const AIdentityProviderOAuth2Form = defineComponent({
8732
+ var AIdentityProviderOAuth2Form_vue_vue_type_script_lang_default = defineComponent({
7892
8733
  components: {
7893
8734
  AFormSubmit,
7894
- AIdentityProviderBasicFields,
7895
- AIdentityProviderOAuth2ClientFields,
7896
- AIdentityProviderOAuth2EndpointFields: /* @__PURE__ */ _plugin_vue_export_helper_default(AIdentityProviderOAuth2EndpointFields_vue_vue_type_script_lang_default, [["render", _sfc_render$37]]),
8735
+ AIdentityProviderBasicFields: AIdentityProviderBasicFields_default,
8736
+ AIdentityProviderOAuth2ClientFields: AIdentityProviderOAuth2ClientFields_default,
8737
+ AIdentityProviderOAuth2EndpointFields: /* @__PURE__ */ _plugin_vue_export_helper_default(AIdentityProviderOAuth2EndpointFields_vue_vue_type_script_lang_default, [["render", _sfc_render$42]]),
7897
8738
  AIdentityProviderPreset,
7898
8739
  AIdentityProviderProtocol,
7899
8740
  VCFormGroup,
@@ -7995,11 +8836,78 @@ const AIdentityProviderOAuth2Form = defineComponent({
7995
8836
  }
7996
8837
  });
7997
8838
  //#endregion
8839
+ //#region src/components/entities/identity-provider/AIdentityProviderOAuth2Form.vue
8840
+ const _hoisted_1$20 = { class: "mb-3" };
8841
+ const _hoisted_2$13 = { class: "mb-3" };
8842
+ const _hoisted_3$10 = { class: "row" };
8843
+ const _hoisted_4$8 = { class: "col" };
8844
+ const _hoisted_5$7 = { class: "col" };
8845
+ function _sfc_render$41(_ctx, _cache, $props, $setup, $data, $options) {
8846
+ const _component_VCIcon = resolveComponent("VCIcon");
8847
+ const _component_AIdentityProviderPreset = resolveComponent("AIdentityProviderPreset");
8848
+ const _component_AIdentityProviderProtocol = resolveComponent("AIdentityProviderProtocol");
8849
+ const _component_VCFormInput = resolveComponent("VCFormInput");
8850
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
8851
+ const _component_AIdentityProviderBasicFields = resolveComponent("AIdentityProviderBasicFields");
8852
+ const _component_AIdentityProviderOAuth2ClientFields = resolveComponent("AIdentityProviderOAuth2ClientFields");
8853
+ const _component_AIdentityProviderOAuth2EndpointFields = resolveComponent("AIdentityProviderOAuth2EndpointFields");
8854
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
8855
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
8856
+ !_ctx.data ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [_ctx.presetEff ? (openBlock(), createBlock(_component_AIdentityProviderPreset, {
8857
+ id: _ctx.presetEff,
8858
+ key: _ctx.presetEff
8859
+ }, {
8860
+ default: withCtx((element) => [createElementVNode("div", null, [createElementVNode("h4", _hoisted_1$20, [createVNode(_component_VCIcon, {
8861
+ name: element.icon,
8862
+ class: "pe-1"
8863
+ }, null, 8, ["name"]), createTextVNode(" " + toDisplayString(element.name), 1)])])]),
8864
+ _: 1
8865
+ }, 8, ["id"])) : _ctx.protocolEff ? (openBlock(), createBlock(_component_AIdentityProviderProtocol, {
8866
+ id: _ctx.protocolEff,
8867
+ key: _ctx.protocolEff
8868
+ }, {
8869
+ default: withCtx((element) => [createElementVNode("div", null, [createElementVNode("h4", _hoisted_2$13, [createVNode(_component_VCIcon, {
8870
+ name: element.icon,
8871
+ class: "pe-1"
8872
+ }, null, 8, ["name"]), createTextVNode(" " + toDisplayString(element.name), 1)])])]),
8873
+ _: 1
8874
+ }, 8, ["id"])) : createCommentVNode("v-if", true)], 64)) : createCommentVNode("v-if", true),
8875
+ _ctx.isEditing ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:circle-info" }), _cache[1] || (_cache[1] = createTextVNode(" Details ", -1))]), createVNode(_component_VCFormGroup, null, {
8876
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Redirect URL ", -1)])]),
8877
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
8878
+ "model-value": _ctx.authorizeUri,
8879
+ disabled: true
8880
+ }, null, 8, ["model-value"])]),
8881
+ _: 1
8882
+ })], 64)) : createCommentVNode("v-if", true),
8883
+ createElementVNode("div", _hoisted_3$10, [createElementVNode("div", _hoisted_4$8, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:wrench" }), _cache[3] || (_cache[3] = createTextVNode(" Basic ", -1))]), createVNode(_component_AIdentityProviderBasicFields, {
8884
+ ref: "basicFieldsRef",
8885
+ entity: _ctx.data
8886
+ }, null, 8, ["entity"])]), createElementVNode("div", _hoisted_5$7, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:lock" }), _cache[4] || (_cache[4] = createTextVNode(" Security ", -1))]), createVNode(_component_AIdentityProviderOAuth2ClientFields, { entity: _ctx.data }, null, 8, ["entity"])])]),
8887
+ !_ctx.presetEff ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createElementVNode("h6", null, [createVNode(_component_VCIcon, { name: "fa6-solid:vihara" }), _cache[5] || (_cache[5] = createTextVNode(" Endpoints ", -1))]), createVNode(_component_AIdentityProviderOAuth2EndpointFields, {
8888
+ entity: _ctx.data,
8889
+ discovery: _ctx.oidcEnabled
8890
+ }, null, 8, ["entity", "discovery"])], 64)) : createCommentVNode("v-if", true),
8891
+ createVNode(_component_AFormSubmit, {
8892
+ "is-busy": _ctx.busy,
8893
+ "is-editing": _ctx.isEditing,
8894
+ "is-invalid": _ctx.isInvalid,
8895
+ onSubmit: _ctx.submit
8896
+ }, null, 8, [
8897
+ "is-busy",
8898
+ "is-editing",
8899
+ "is-invalid",
8900
+ "onSubmit"
8901
+ ])
8902
+ ], 32);
8903
+ }
8904
+ var AIdentityProviderOAuth2Form_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderOAuth2Form_vue_vue_type_script_lang_default, [["render", _sfc_render$41]]);
8905
+ //#endregion
7998
8906
  //#region src/components/entities/identity-provider/AIdentityProviderForm.vue?vue&type=script&lang.ts
7999
- const AIdentityProviderForm = defineComponent({
8907
+ var AIdentityProviderForm_vue_vue_type_script_lang_default = defineComponent({
8000
8908
  components: {
8001
- AIdentityProviderLdapForm,
8002
- AIdentityProviderOAuth2Form,
8909
+ AIdentityProviderLdapForm: AIdentityProviderLdapForm_default,
8910
+ AIdentityProviderOAuth2Form: AIdentityProviderOAuth2Form_default,
8003
8911
  AIdentityProviderPicker: AIdentityProviderPicker_default
8004
8912
  },
8005
8913
  props: {
@@ -8070,6 +8978,62 @@ const AIdentityProviderForm = defineComponent({
8070
8978
  }
8071
8979
  });
8072
8980
  //#endregion
8981
+ //#region src/components/entities/identity-provider/AIdentityProviderForm.vue
8982
+ const _hoisted_1$19 = {
8983
+ key: 3,
8984
+ class: "alert alert-warning alert-sm"
8985
+ };
8986
+ function _sfc_render$40(_ctx, _cache, $props, $setup, $data, $options) {
8987
+ const _component_AIdentityProviderPicker = resolveComponent("AIdentityProviderPicker");
8988
+ const _component_AIdentityProviderOAuth2Form = resolveComponent("AIdentityProviderOAuth2Form");
8989
+ const _component_AIdentityProviderLdapForm = resolveComponent("AIdentityProviderLdapForm");
8990
+ return openBlock(), createElementBlock("div", null, [!_ctx.localEntity ? (openBlock(), createBlock(_component_AIdentityProviderPicker, {
8991
+ key: 0,
8992
+ protocol: _ctx.protocol ?? void 0,
8993
+ preset: _ctx.preset ?? void 0,
8994
+ onPick: _ctx.onPick
8995
+ }, null, 8, [
8996
+ "protocol",
8997
+ "preset",
8998
+ "onPick"
8999
+ ])) : createCommentVNode("v-if", true), _ctx.isOAuth(_ctx.protocol) ? (openBlock(), createBlock(_component_AIdentityProviderOAuth2Form, {
9000
+ key: 1,
9001
+ entity: _ctx.localEntity,
9002
+ "realm-id": _ctx.realmId,
9003
+ protocol: _ctx.protocol,
9004
+ preset: _ctx.preset,
9005
+ onCreated: _ctx.onChildCreated,
9006
+ onUpdated: _ctx.onChildUpdated,
9007
+ onDeleted: _ctx.onChildDeleted,
9008
+ onFailed: _ctx.onChildFailed
9009
+ }, null, 8, [
9010
+ "entity",
9011
+ "realm-id",
9012
+ "protocol",
9013
+ "preset",
9014
+ "onCreated",
9015
+ "onUpdated",
9016
+ "onDeleted",
9017
+ "onFailed"
9018
+ ])) : _ctx.isLdap(_ctx.protocol) ? (openBlock(), createBlock(_component_AIdentityProviderLdapForm, {
9019
+ key: 2,
9020
+ entity: _ctx.localEntity,
9021
+ "realm-id": _ctx.realmId,
9022
+ onCreated: _ctx.onChildCreated,
9023
+ onUpdated: _ctx.onChildUpdated,
9024
+ onDeleted: _ctx.onChildDeleted,
9025
+ onFailed: _ctx.onChildFailed
9026
+ }, null, 8, [
9027
+ "entity",
9028
+ "realm-id",
9029
+ "onCreated",
9030
+ "onUpdated",
9031
+ "onDeleted",
9032
+ "onFailed"
9033
+ ])) : _ctx.protocol || _ctx.preset ? (openBlock(), createElementBlock("div", _hoisted_1$19, toDisplayString(_ctx.preset ?? _ctx.protocol) + " is not supported yet :/ ", 1)) : createCommentVNode("v-if", true)]);
9034
+ }
9035
+ var AIdentityProviderForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderForm_vue_vue_type_script_lang_default, [["render", _sfc_render$40]]);
9036
+ //#endregion
8073
9037
  //#region src/components/entities/identity-provider/AIdentityProviders.ts
8074
9038
  const AIdentityProviders = defineComponent({
8075
9039
  props: defineEntityCollectionVProps(),
@@ -8081,13 +9045,15 @@ const AIdentityProviders = defineComponent({
8081
9045
  props,
8082
9046
  setup: ctx
8083
9047
  });
9048
+ const translationName = useTranslation({
9049
+ namespace: TranslatorTranslationNamespace.ENTITY,
9050
+ key: TranslatorTranslationEntityKey.IDENTITY_PROVIDER,
9051
+ count: 2
9052
+ });
8084
9053
  const translation = useTranslation({
8085
- namespace: "vuecs",
8086
- key: "noMore",
8087
- data: { name: useTranslation({
8088
- namespace: "default",
8089
- key: "identityProviders"
8090
- }) }
9054
+ namespace: TranslatorTranslationNamespace.VUECS,
9055
+ key: TranslatorTranslationVuecsKey.NO_MORE,
9056
+ data: { name: translationName }
8091
9057
  });
8092
9058
  return () => render({ noMore: { content: translation.value } });
8093
9059
  }
@@ -8107,7 +9073,7 @@ var AIdentityProviderIcon_vue_vue_type_script_lang_default = defineComponent({
8107
9073
  });
8108
9074
  //#endregion
8109
9075
  //#region src/components/entities/identity-provider/AIdentityProviderIcon.vue
8110
- function _sfc_render$36(_ctx, _cache, $props, $setup, $data, $options) {
9076
+ function _sfc_render$39(_ctx, _cache, $props, $setup, $data, $options) {
8111
9077
  const _component_VCIcon = resolveComponent("VCIcon");
8112
9078
  const _component_AIdentityProviderPreset = resolveComponent("AIdentityProviderPreset");
8113
9079
  const _component_AIdentityProviderProtocol = resolveComponent("AIdentityProviderProtocol");
@@ -8131,7 +9097,7 @@ function _sfc_render$36(_ctx, _cache, $props, $setup, $data, $options) {
8131
9097
  _: 1
8132
9098
  }, 8, ["id"])) : createCommentVNode("v-if", true);
8133
9099
  }
8134
- var AIdentityProviderIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderIcon_vue_vue_type_script_lang_default, [["render", _sfc_render$36]]);
9100
+ var AIdentityProviderIcon_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderIcon_vue_vue_type_script_lang_default, [["render", _sfc_render$39]]);
8135
9101
  //#endregion
8136
9102
  //#region src/components/entities/identity-provider-role/AIdentityProviderRoleAssignment.vue?vue&type=script&lang.ts
8137
9103
  var RoleMappingAttributesValidator = class extends Container {
@@ -8171,7 +9137,10 @@ var AIdentityProviderRoleAssignment_vue_vue_type_script_lang_default = defineCom
8171
9137
  value_is_regex: false
8172
9138
  });
8173
9139
  const v = useValidup(new RoleMappingAttributesValidator(), form);
8174
- const translationsDefault = useTranslationsForNamespace("default", [{ key: "valueIsRegex" }]);
9140
+ const translationsDefault = useTranslations([{
9141
+ namespace: TranslatorTranslationNamespace.FIELD,
9142
+ key: TranslatorTranslationFieldKey.VALUE_IS_REGEX
9143
+ }]);
8175
9144
  const manager = defineEntityManager({
8176
9145
  type: `${EntityType.IDENTITY_PROVIDER_ROLE_MAPPING}`,
8177
9146
  setup,
@@ -8210,23 +9179,23 @@ var AIdentityProviderRoleAssignment_vue_vue_type_script_lang_default = defineCom
8210
9179
  });
8211
9180
  //#endregion
8212
9181
  //#region src/components/entities/identity-provider-role/AIdentityProviderRoleAssignment.vue
8213
- const _hoisted_1$15 = { class: "flex flex-col" };
8214
- const _hoisted_2$10 = { class: "flex flex-row" };
8215
- const _hoisted_3$8 = { class: "me-2" };
8216
- const _hoisted_4$6 = { class: "ms-auto" };
8217
- const _hoisted_5$4 = ["disabled"];
8218
- const _hoisted_6$4 = {
9182
+ const _hoisted_1$18 = { class: "flex flex-col" };
9183
+ const _hoisted_2$12 = { class: "flex flex-row" };
9184
+ const _hoisted_3$9 = { class: "me-2" };
9185
+ const _hoisted_4$7 = { class: "ms-auto" };
9186
+ const _hoisted_5$6 = ["disabled"];
9187
+ const _hoisted_6$6 = {
8219
9188
  key: 0,
8220
9189
  class: "mt-2"
8221
9190
  };
8222
- function _sfc_render$35(_ctx, _cache, $props, $setup, $data, $options) {
9191
+ function _sfc_render$38(_ctx, _cache, $props, $setup, $data, $options) {
8223
9192
  const _component_VCIcon = resolveComponent("VCIcon");
8224
9193
  const _component_VCFormInput = resolveComponent("VCFormInput");
8225
9194
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
8226
9195
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
8227
9196
  const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
8228
- return openBlock(), createElementBlock("div", _hoisted_1$15, [createElementVNode("div", _hoisted_2$10, [
8229
- createElementVNode("div", _hoisted_3$8, [createElementVNode("button", {
9197
+ return openBlock(), createElementBlock("div", _hoisted_1$18, [createElementVNode("div", _hoisted_2$12, [
9198
+ createElementVNode("div", _hoisted_3$9, [createElementVNode("button", {
8230
9199
  class: "btn btn-xs btn-dark",
8231
9200
  onClick: _cache[0] || (_cache[0] = withModifiers(($event) => _ctx.toggleDisplay(), ["prevent"]))
8232
9201
  }, [createVNode(_component_VCIcon, { name: _ctx.display ? "fa6-solid:chevron-up" : "fa6-solid:chevron-down" }, null, 8, ["name"])])]),
@@ -8234,7 +9203,7 @@ function _sfc_render$35(_ctx, _cache, $props, $setup, $data, $options) {
8234
9203
  class: "mb-0",
8235
9204
  onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.toggleDisplay(), ["prevent"]))
8236
9205
  }, toDisplayString(_ctx.role.name), 1)]),
8237
- createElementVNode("div", _hoisted_4$6, [createElementVNode("button", {
9206
+ createElementVNode("div", _hoisted_4$7, [createElementVNode("button", {
8238
9207
  class: normalizeClass(["btn btn-xs", {
8239
9208
  "btn-primary": !_ctx.manager.data.value,
8240
9209
  "btn-dark": !!_ctx.manager.data.value
@@ -8245,8 +9214,8 @@ function _sfc_render$35(_ctx, _cache, $props, $setup, $data, $options) {
8245
9214
  class: "btn btn-xs btn-danger ms-1",
8246
9215
  disabled: _ctx.manager.busy.value,
8247
9216
  onClick: _cache[3] || (_cache[3] = (...args) => _ctx.handleDelete && _ctx.handleDelete(...args))
8248
- }, [createVNode(_component_VCIcon, { name: "fa6-solid:trash" })], 8, _hoisted_5$4)) : createCommentVNode("v-if", true)])
8249
- ]), _ctx.display ? (openBlock(), createElementBlock("div", _hoisted_6$4, [
9217
+ }, [createVNode(_component_VCIcon, { name: "fa6-solid:trash" })], 8, _hoisted_5$6)) : createCommentVNode("v-if", true)])
9218
+ ]), _ctx.display ? (openBlock(), createElementBlock("div", _hoisted_6$6, [
8250
9219
  createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
8251
9220
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, {
8252
9221
  label: true,
@@ -8284,7 +9253,7 @@ function _sfc_render$35(_ctx, _cache, $props, $setup, $data, $options) {
8284
9253
  default: withCtx(() => [createVNode(_component_VCFormSwitch, {
8285
9254
  modelValue: _ctx.v.fields.value_is_regex.$model.value,
8286
9255
  "onUpdate:modelValue": ($event) => _ctx.v.fields.value_is_regex.$model.value = $event,
8287
- "label-content": _ctx.translationsDefault.valueIsRegex.value
9256
+ "label-content": _ctx.translationsDefault.valueIsRegex
8288
9257
  }, null, 8, [
8289
9258
  "modelValue",
8290
9259
  "onUpdate:modelValue",
@@ -8296,7 +9265,7 @@ function _sfc_render$35(_ctx, _cache, $props, $setup, $data, $options) {
8296
9265
  }, 8, ["field"])
8297
9266
  ])) : createCommentVNode("v-if", true)]);
8298
9267
  }
8299
- var AIdentityProviderRoleAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderRoleAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$35]]);
9268
+ var AIdentityProviderRoleAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderRoleAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$38]]);
8300
9269
  //#endregion
8301
9270
  //#region src/components/entities/identity-provider-role/AIdentityProviderRoleAssignments.vue?vue&type=script&lang.ts
8302
9271
  var AIdentityProviderRoleAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -8314,7 +9283,7 @@ var AIdentityProviderRoleAssignments_vue_vue_type_script_lang_default = defineCo
8314
9283
  });
8315
9284
  //#endregion
8316
9285
  //#region src/components/entities/identity-provider-role/AIdentityProviderRoleAssignments.vue
8317
- function _sfc_render$34(_ctx, _cache, $props, $setup, $data, $options) {
9286
+ function _sfc_render$37(_ctx, _cache, $props, $setup, $data, $options) {
8318
9287
  const _component_AIdentityProviderRoleAssignment = resolveComponent("AIdentityProviderRoleAssignment");
8319
9288
  const _component_ARoles = resolveComponent("ARoles");
8320
9289
  return openBlock(), createBlock(_component_ARoles, { "header-title": false }, createSlots({
@@ -8333,7 +9302,7 @@ function _sfc_render$34(_ctx, _cache, $props, $setup, $data, $options) {
8333
9302
  };
8334
9303
  })]), 1024);
8335
9304
  }
8336
- var AIdentityProviderRoleAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderRoleAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$34]]);
9305
+ var AIdentityProviderRoleAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityProviderRoleAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$37]]);
8337
9306
  //#endregion
8338
9307
  //#region src/components/entities/policy/attribute-names/AAttributeNamesPolicyForm.vue?vue&type=script&lang.ts
8339
9308
  var AAttributeNamesPolicyForm_vue_vue_type_script_lang_default = defineComponent({
@@ -8361,7 +9330,7 @@ var AAttributeNamesPolicyForm_vue_vue_type_script_lang_default = defineComponent
8361
9330
  });
8362
9331
  //#endregion
8363
9332
  //#region src/components/entities/policy/attribute-names/AAttributeNamesPolicyForm.vue
8364
- function _sfc_render$33(_ctx, _cache, $props, $setup, $data, $options) {
9333
+ function _sfc_render$36(_ctx, _cache, $props, $setup, $data, $options) {
8365
9334
  const _component_AFormInputList = resolveComponent("AFormInputList");
8366
9335
  return openBlock(), createBlock(_component_AFormInputList, {
8367
9336
  names: _ctx.v.fields.names.$model.value,
@@ -8369,7 +9338,7 @@ function _sfc_render$33(_ctx, _cache, $props, $setup, $data, $options) {
8369
9338
  onChanged: _ctx.handleUpdated
8370
9339
  }, null, 8, ["names", "onChanged"]);
8371
9340
  }
8372
- var AAttributeNamesPolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AAttributeNamesPolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$33]]);
9341
+ var AAttributeNamesPolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AAttributeNamesPolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$36]]);
8373
9342
  //#endregion
8374
9343
  //#region src/components/entities/policy/APolicyParentAssignment.ts
8375
9344
  const APolicyParentAssignment = defineComponent({
@@ -8521,8 +9490,8 @@ var ACompositePolicyForm_vue_vue_type_script_lang_default = defineComponent({
8521
9490
  });
8522
9491
  //#endregion
8523
9492
  //#region src/components/entities/policy/composite/ACompositePolicyForm.vue
8524
- const _hoisted_1$14 = { class: "alert alert-sm alert-info mt-1 mb-0" };
8525
- function _sfc_render$32(_ctx, _cache, $props, $setup, $data, $options) {
9493
+ const _hoisted_1$17 = { class: "alert alert-sm alert-info mt-1 mb-0" };
9494
+ function _sfc_render$35(_ctx, _cache, $props, $setup, $data, $options) {
8526
9495
  const _component_VCFormSelect = resolveComponent("VCFormSelect");
8527
9496
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
8528
9497
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
@@ -8532,17 +9501,14 @@ function _sfc_render$32(_ctx, _cache, $props, $setup, $data, $options) {
8532
9501
  label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Decision Strategy ", -1)])]),
8533
9502
  default: withCtx(() => [createVNode(_component_VCFormSelect, {
8534
9503
  modelValue: _ctx.v.fields.decision_strategy.$model.value,
8535
- "onUpdate:modelValue": ($event) => _ctx.v.fields.decision_strategy.$model.value = $event,
9504
+ "onUpdate:modelValue": [($event) => _ctx.v.fields.decision_strategy.$model.value = $event, _ctx.handleDecisionStrategyUpdated],
8536
9505
  options: _ctx.decisionStrategyOptions,
8537
- "option-default": true,
8538
- "option-default-value": "-- None (default: unanimous) --",
8539
- onChange: _ctx.handleDecisionStrategyUpdated
9506
+ placeholder: "-- None (default: unanimous) --"
8540
9507
  }, null, 8, [
8541
9508
  "modelValue",
8542
9509
  "onUpdate:modelValue",
8543
- "options",
8544
- "onChange"
8545
- ]), createElementVNode("div", _hoisted_1$14, toDisplayString(_ctx.decisionStrategyHint), 1)]),
9510
+ "options"
9511
+ ]), createElementVNode("div", _hoisted_1$17, toDisplayString(_ctx.decisionStrategyHint), 1)]),
8546
9512
  _: 2
8547
9513
  }, 1032, ["validation"])]),
8548
9514
  _: 1
@@ -8565,7 +9531,7 @@ function _sfc_render$32(_ctx, _cache, $props, $setup, $data, $options) {
8565
9531
  _: 1
8566
9532
  }, 8, ["field"])]);
8567
9533
  }
8568
- var ACompositePolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ACompositePolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$32]]);
9534
+ var ACompositePolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ACompositePolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$35]]);
8569
9535
  //#endregion
8570
9536
  //#region src/components/entities/policy/date/ADatePolicyForm.vue?vue&type=script&lang.ts
8571
9537
  var ADatePolicyForm_vue_vue_type_script_lang_default = defineComponent({
@@ -8582,6 +9548,13 @@ var ADatePolicyForm_vue_vue_type_script_lang_default = defineComponent({
8582
9548
  end: ""
8583
9549
  });
8584
9550
  const v = useValidup(new Container(), form, { name: "type" });
9551
+ const translationsDefault = useTranslations([{
9552
+ namespace: TranslatorTranslationNamespace.FIELD,
9553
+ key: TranslatorTranslationFieldKey.START
9554
+ }, {
9555
+ namespace: TranslatorTranslationNamespace.FIELD,
9556
+ key: TranslatorTranslationFieldKey.END
9557
+ }]);
8585
9558
  function assign(data = {}) {
8586
9559
  assignFormProperties(form, data);
8587
9560
  }
@@ -8596,19 +9569,20 @@ var ADatePolicyForm_vue_vue_type_script_lang_default = defineComponent({
8596
9569
  };
8597
9570
  return {
8598
9571
  handleUpdated,
8599
- v
9572
+ v,
9573
+ translationsDefault
8600
9574
  };
8601
9575
  }
8602
9576
  });
8603
9577
  //#endregion
8604
9578
  //#region src/components/entities/policy/date/ADatePolicyForm.vue
8605
- function _sfc_render$31(_ctx, _cache, $props, $setup, $data, $options) {
9579
+ function _sfc_render$34(_ctx, _cache, $props, $setup, $data, $options) {
8606
9580
  const _component_VCFormInput = resolveComponent("VCFormInput");
8607
9581
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
8608
9582
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
8609
9583
  return openBlock(), createElementBlock("div", null, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.start }, {
8610
9584
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8611
- label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Start ", -1)])]),
9585
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.start), 1)]),
8612
9586
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8613
9587
  modelValue: _ctx.v.fields.start.$model.value,
8614
9588
  "onUpdate:modelValue": ($event) => _ctx.v.fields.start.$model.value = $event,
@@ -8624,7 +9598,7 @@ function _sfc_render$31(_ctx, _cache, $props, $setup, $data, $options) {
8624
9598
  _: 1
8625
9599
  }, 8, ["field"]), createVNode(_component_IFieldValidation, { field: _ctx.v.fields.end }, {
8626
9600
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8627
- label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" End ", -1)])]),
9601
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.end), 1)]),
8628
9602
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8629
9603
  modelValue: _ctx.v.fields.end.$model.value,
8630
9604
  "onUpdate:modelValue": ($event) => _ctx.v.fields.end.$model.value = $event,
@@ -8640,7 +9614,7 @@ function _sfc_render$31(_ctx, _cache, $props, $setup, $data, $options) {
8640
9614
  _: 1
8641
9615
  }, 8, ["field"])]);
8642
9616
  }
8643
- var ADatePolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ADatePolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$31]]);
9617
+ var ADatePolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ADatePolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$34]]);
8644
9618
  //#endregion
8645
9619
  //#region src/components/entities/policy/identity/AIdentityPolicyForm.vue?vue&type=script&lang.ts
8646
9620
  var AIdentityPolicyForm_vue_vue_type_script_lang_default = defineComponent({
@@ -8668,7 +9642,7 @@ var AIdentityPolicyForm_vue_vue_type_script_lang_default = defineComponent({
8668
9642
  });
8669
9643
  //#endregion
8670
9644
  //#region src/components/entities/policy/identity/AIdentityPolicyForm.vue
8671
- function _sfc_render$30(_ctx, _cache, $props, $setup, $data, $options) {
9645
+ function _sfc_render$33(_ctx, _cache, $props, $setup, $data, $options) {
8672
9646
  const _component_AFormInputList = resolveComponent("AFormInputList");
8673
9647
  return openBlock(), createBlock(_component_AFormInputList, {
8674
9648
  names: _ctx.v.fields.types.$model.value,
@@ -8679,7 +9653,7 @@ function _sfc_render$30(_ctx, _cache, $props, $setup, $data, $options) {
8679
9653
  _: 1
8680
9654
  }, 8, ["names", "onChanged"]);
8681
9655
  }
8682
- var AIdentityPolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityPolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$30]]);
9656
+ var AIdentityPolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AIdentityPolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$33]]);
8683
9657
  //#endregion
8684
9658
  //#region src/components/entities/policy/realm-match/ARealmMatchPolicyForm.vue?vue&type=script&lang.ts
8685
9659
  var ARealmMatchPolicyForm_vue_vue_type_script_lang_default = defineComponent({
@@ -8727,18 +9701,18 @@ var ARealmMatchPolicyForm_vue_vue_type_script_lang_default = defineComponent({
8727
9701
  });
8728
9702
  //#endregion
8729
9703
  //#region src/components/entities/policy/realm-match/ARealmMatchPolicyForm.vue
8730
- const _hoisted_1$13 = { class: "row" };
8731
- const _hoisted_2$9 = { class: "col-7" };
8732
- const _hoisted_3$7 = { class: "col-5" };
8733
- const _hoisted_4$5 = ["for"];
8734
- const _hoisted_5$3 = ["for"];
8735
- const _hoisted_6$3 = ["for"];
8736
- function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
9704
+ const _hoisted_1$16 = { class: "row" };
9705
+ const _hoisted_2$11 = { class: "col-7" };
9706
+ const _hoisted_3$8 = { class: "col-5" };
9707
+ const _hoisted_4$6 = ["for"];
9708
+ const _hoisted_5$5 = ["for"];
9709
+ const _hoisted_6$5 = ["for"];
9710
+ function _sfc_render$32(_ctx, _cache, $props, $setup, $data, $options) {
8737
9711
  const _component_AFormInputList = resolveComponent("AFormInputList");
8738
9712
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
8739
9713
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
8740
9714
  const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
8741
- return openBlock(), createElementBlock("div", _hoisted_1$13, [createElementVNode("div", _hoisted_2$9, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.attribute_name }, {
9715
+ return openBlock(), createElementBlock("div", _hoisted_1$16, [createElementVNode("div", _hoisted_2$11, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.attribute_name }, {
8742
9716
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8743
9717
  default: withCtx(() => [createVNode(_component_AFormInputList, {
8744
9718
  names: _ctx.v.fields.attribute_name.$model.value,
@@ -8747,7 +9721,7 @@ function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
8747
9721
  _: 2
8748
9722
  }, 1032, ["validation"])]),
8749
9723
  _: 1
8750
- }, 8, ["field"])]), createElementVNode("div", _hoisted_3$7, [
9724
+ }, 8, ["field"])]), createElementVNode("div", _hoisted_3$8, [
8751
9725
  createVNode(_component_IFieldValidation, { field: _ctx.v.fields.attribute_name_strict }, {
8752
9726
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8753
9727
  default: withCtx(() => [createVNode(_component_VCFormSwitch, {
@@ -8756,7 +9730,7 @@ function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
8756
9730
  label: true,
8757
9731
  onChange: _ctx.handleUpdated
8758
9732
  }, {
8759
- label: withCtx((iProps) => [createElementVNode("label", { for: iProps.id }, " Only match if the attribute is strict equal to the name? ", 8, _hoisted_4$5)]),
9733
+ label: withCtx((iProps) => [createElementVNode("label", { for: iProps.id }, " Only match if the attribute is strict equal to the name? ", 8, _hoisted_4$6)]),
8760
9734
  _: 1
8761
9735
  }, 8, [
8762
9736
  "modelValue",
@@ -8779,7 +9753,7 @@ function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
8779
9753
  createTextVNode(" Determines if resources with null realm-id/name value should match all identity realms.", -1),
8780
9754
  createElementVNode("br", null, null, -1),
8781
9755
  createTextVNode(" If true, any identity realm can access resources with null realm-id/name values. ", -1)
8782
- ])], 8, _hoisted_5$3)]),
9756
+ ])], 8, _hoisted_5$5)]),
8783
9757
  _: 1
8784
9758
  }, 8, [
8785
9759
  "modelValue",
@@ -8802,7 +9776,7 @@ function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
8802
9776
  createTextVNode(" Specifies whether the master realm of an identity should match all realm-id/name attributes, including null.", -1),
8803
9777
  createElementVNode("br", null, null, -1),
8804
9778
  createTextVNode(" If true, the master realm can access any resource regardless of its realm value. ", -1)
8805
- ])], 8, _hoisted_6$3)]),
9779
+ ])], 8, _hoisted_6$5)]),
8806
9780
  _: 1
8807
9781
  }, 8, [
8808
9782
  "modelValue",
@@ -8815,7 +9789,7 @@ function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
8815
9789
  }, 8, ["field"])
8816
9790
  ])]);
8817
9791
  }
8818
- var ARealmMatchPolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARealmMatchPolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$29]]);
9792
+ var ARealmMatchPolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARealmMatchPolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$32]]);
8819
9793
  //#endregion
8820
9794
  //#region src/components/entities/policy/time/ATimePolicyForm.vue?vue&type=script&lang.ts
8821
9795
  var ATimePolicyForm_vue_vue_type_script_lang_default = defineComponent({
@@ -8841,6 +9815,32 @@ var ATimePolicyForm_vue_vue_type_script_lang_default = defineComponent({
8841
9815
  value: el
8842
9816
  }));
8843
9817
  const v = useValidup(new Container(), form, { name: "type" });
9818
+ const translationsDefault = useTranslations([
9819
+ {
9820
+ namespace: TranslatorTranslationNamespace.FIELD,
9821
+ key: TranslatorTranslationFieldKey.START
9822
+ },
9823
+ {
9824
+ namespace: TranslatorTranslationNamespace.FIELD,
9825
+ key: TranslatorTranslationFieldKey.END
9826
+ },
9827
+ {
9828
+ namespace: TranslatorTranslationNamespace.FIELD,
9829
+ key: TranslatorTranslationFieldKey.INTERVAL
9830
+ },
9831
+ {
9832
+ namespace: TranslatorTranslationNamespace.FIELD,
9833
+ key: TranslatorTranslationFieldKey.DAY_OF_WEEK
9834
+ },
9835
+ {
9836
+ namespace: TranslatorTranslationNamespace.FIELD,
9837
+ key: TranslatorTranslationFieldKey.DAY_OF_MONTH
9838
+ },
9839
+ {
9840
+ namespace: TranslatorTranslationNamespace.FIELD,
9841
+ key: TranslatorTranslationFieldKey.DAY_OF_YEAR
9842
+ }
9843
+ ]);
8844
9844
  function assign(data = {}) {
8845
9845
  assignFormProperties(form, data);
8846
9846
  }
@@ -8869,18 +9869,19 @@ var ATimePolicyForm_vue_vue_type_script_lang_default = defineComponent({
8869
9869
  displayIntervalForDayOfMonth,
8870
9870
  displayIntervalForDayOfYear,
8871
9871
  intervalOptions,
8872
- v
9872
+ v,
9873
+ translationsDefault
8873
9874
  };
8874
9875
  }
8875
9876
  });
8876
9877
  //#endregion
8877
9878
  //#region src/components/entities/policy/time/ATimePolicyForm.vue
8878
- const _hoisted_1$12 = { class: "row" };
8879
- const _hoisted_2$8 = { class: "col" };
8880
- const _hoisted_3$6 = { class: "col" };
8881
- const _hoisted_4$4 = { class: "row" };
8882
- const _hoisted_5$2 = { class: "col" };
8883
- const _hoisted_6$2 = {
9879
+ const _hoisted_1$15 = { class: "row" };
9880
+ const _hoisted_2$10 = { class: "col" };
9881
+ const _hoisted_3$7 = { class: "col" };
9882
+ const _hoisted_4$5 = { class: "row" };
9883
+ const _hoisted_5$4 = { class: "col" };
9884
+ const _hoisted_6$4 = {
8884
9885
  key: 0,
8885
9886
  class: "col"
8886
9887
  };
@@ -8892,14 +9893,14 @@ const _hoisted_8$1 = {
8892
9893
  key: 2,
8893
9894
  class: "col"
8894
9895
  };
8895
- function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
9896
+ function _sfc_render$31(_ctx, _cache, $props, $setup, $data, $options) {
8896
9897
  const _component_VCFormInput = resolveComponent("VCFormInput");
8897
9898
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
8898
9899
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
8899
9900
  const _component_VCFormSelect = resolveComponent("VCFormSelect");
8900
- return openBlock(), createElementBlock("div", null, [createElementVNode("div", _hoisted_1$12, [createElementVNode("div", _hoisted_2$8, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.start }, {
9901
+ return openBlock(), createElementBlock("div", null, [createElementVNode("div", _hoisted_1$15, [createElementVNode("div", _hoisted_2$10, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.start }, {
8901
9902
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8902
- label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Start ", -1)])]),
9903
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.start), 1)]),
8903
9904
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8904
9905
  modelValue: _ctx.v.fields.start.$model.value,
8905
9906
  "onUpdate:modelValue": ($event) => _ctx.v.fields.start.$model.value = $event,
@@ -8913,9 +9914,9 @@ function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
8913
9914
  _: 2
8914
9915
  }, 1032, ["validation"])]),
8915
9916
  _: 1
8916
- }, 8, ["field"])]), createElementVNode("div", _hoisted_3$6, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.end }, {
9917
+ }, 8, ["field"])]), createElementVNode("div", _hoisted_3$7, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.end }, {
8917
9918
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8918
- label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" End ", -1)])]),
9919
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.end), 1)]),
8919
9920
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8920
9921
  modelValue: _ctx.v.fields.end.$model.value,
8921
9922
  "onUpdate:modelValue": ($event) => _ctx.v.fields.end.$model.value = $event,
@@ -8929,29 +9930,27 @@ function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
8929
9930
  _: 2
8930
9931
  }, 1032, ["validation"])]),
8931
9932
  _: 1
8932
- }, 8, ["field"])])]), createElementVNode("div", _hoisted_4$4, [
8933
- createElementVNode("div", _hoisted_5$2, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.interval }, {
9933
+ }, 8, ["field"])])]), createElementVNode("div", _hoisted_4$5, [
9934
+ createElementVNode("div", _hoisted_5$4, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.interval }, {
8934
9935
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8935
- label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Interval ", -1)])]),
9936
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.interval), 1)]),
8936
9937
  default: withCtx(() => [createVNode(_component_VCFormSelect, {
8937
9938
  modelValue: _ctx.v.fields.interval.$model.value,
8938
- "onUpdate:modelValue": ($event) => _ctx.v.fields.interval.$model.value = $event,
9939
+ "onUpdate:modelValue": [($event) => _ctx.v.fields.interval.$model.value = $event, _ctx.handleIntervalUpdated],
8939
9940
  options: _ctx.intervalOptions,
8940
- "option-default": true,
8941
- onChange: _ctx.handleIntervalUpdated
9941
+ placeholder: "-- None --"
8942
9942
  }, null, 8, [
8943
9943
  "modelValue",
8944
9944
  "onUpdate:modelValue",
8945
- "options",
8946
- "onChange"
9945
+ "options"
8947
9946
  ])]),
8948
9947
  _: 2
8949
9948
  }, 1032, ["validation"])]),
8950
9949
  _: 1
8951
9950
  }, 8, ["field"])]),
8952
- _ctx.displayIntervalForDayOfWeek ? (openBlock(), createElementBlock("div", _hoisted_6$2, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.day_of_week }, {
9951
+ _ctx.displayIntervalForDayOfWeek ? (openBlock(), createElementBlock("div", _hoisted_6$4, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.day_of_week }, {
8953
9952
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8954
- label: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Day of Week ", -1)])]),
9953
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.dayOfWeek), 1)]),
8955
9954
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8956
9955
  modelValue: _ctx.v.fields.day_of_week.$model.value,
8957
9956
  "onUpdate:modelValue": ($event) => _ctx.v.fields.day_of_week.$model.value = $event,
@@ -8969,7 +9968,7 @@ function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
8969
9968
  }, 8, ["field"])])) : createCommentVNode("v-if", true),
8970
9969
  _ctx.displayIntervalForDayOfMonth ? (openBlock(), createElementBlock("div", _hoisted_7$2, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.day_of_month }, {
8971
9970
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8972
- label: withCtx(() => [..._cache[4] || (_cache[4] = [createTextVNode(" Day of Month ", -1)])]),
9971
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.dayOfMonth), 1)]),
8973
9972
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8974
9973
  modelValue: _ctx.v.fields.day_of_month.$model.value,
8975
9974
  "onUpdate:modelValue": ($event) => _ctx.v.fields.day_of_month.$model.value = $event,
@@ -8987,7 +9986,7 @@ function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
8987
9986
  }, 8, ["field"])])) : createCommentVNode("v-if", true),
8988
9987
  _ctx.displayIntervalForDayOfYear ? (openBlock(), createElementBlock("div", _hoisted_8$1, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.day_of_year }, {
8989
9988
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
8990
- label: withCtx(() => [..._cache[5] || (_cache[5] = [createTextVNode(" Day of Year ", -1)])]),
9989
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.dayOfYear), 1)]),
8991
9990
  default: withCtx(() => [createVNode(_component_VCFormInput, {
8992
9991
  modelValue: _ctx.v.fields.day_of_year.$model.value,
8993
9992
  "onUpdate:modelValue": ($event) => _ctx.v.fields.day_of_year.$model.value = $event,
@@ -9005,7 +10004,7 @@ function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
9005
10004
  }, 8, ["field"])])) : createCommentVNode("v-if", true)
9006
10005
  ])]);
9007
10006
  }
9008
- var ATimePolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ATimePolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$28]]);
10007
+ var ATimePolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ATimePolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$31]]);
9009
10008
  //#endregion
9010
10009
  //#region src/components/entities/policy/APolicy.ts
9011
10010
  const APolicy = defineComponent({
@@ -9063,23 +10062,24 @@ var APolicyTypePicker_vue_vue_type_script_lang_default = defineComponent({
9063
10062
  });
9064
10063
  //#endregion
9065
10064
  //#region src/components/entities/policy/APolicyTypePicker.vue
9066
- const _hoisted_1$11 = { class: "flex flex-col gap-2" };
9067
- const _hoisted_2$7 = { class: "flex flex-row gap-2 flex-wrap" };
9068
- const _hoisted_3$5 = ["onClick"];
9069
- function _sfc_render$27(_ctx, _cache, $props, $setup, $data, $options) {
9070
- return openBlock(), createElementBlock("div", _hoisted_1$11, [createElementVNode("div", null, [_cache[0] || (_cache[0] = createElementVNode("h6", null, "Type", -1)), createElementVNode("div", _hoisted_2$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (item, key) => {
10065
+ const _hoisted_1$14 = { class: "flex flex-col gap-2" };
10066
+ const _hoisted_2$9 = { class: "flex flex-row gap-2 flex-wrap" };
10067
+ const _hoisted_3$6 = ["onClick"];
10068
+ function _sfc_render$30(_ctx, _cache, $props, $setup, $data, $options) {
10069
+ return openBlock(), createElementBlock("div", _hoisted_1$14, [createElementVNode("div", null, [_cache[0] || (_cache[0] = createElementVNode("h6", null, "Type", -1)), createElementVNode("div", _hoisted_2$9, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.options, (item, key) => {
9071
10070
  return openBlock(), createElementBlock("div", {
9072
10071
  key,
9073
10072
  class: normalizeClass([{ "active": item.value === _ctx.option }, "flex flex-col gap-1 text-center a-picker-item"]),
9074
10073
  onClick: withModifiers(($event) => _ctx.pick(`${item.value}`), ["prevent"])
9075
- }, [createElementVNode("div", null, toDisplayString(item.value), 1)], 10, _hoisted_3$5);
10074
+ }, [createElementVNode("div", null, toDisplayString(item.value), 1)], 10, _hoisted_3$6);
9076
10075
  }), 128))])])]);
9077
10076
  }
9078
- var APolicyTypePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyTypePicker_vue_vue_type_script_lang_default, [["render", _sfc_render$27], ["__scopeId", "data-v-51b5a9d2"]]);
10077
+ var APolicyTypePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyTypePicker_vue_vue_type_script_lang_default, [["render", _sfc_render$30], ["__scopeId", "data-v-51b5a9d2"]]);
9079
10078
  //#endregion
9080
10079
  //#region src/components/entities/policy/APolicyBasicForm.vue?vue&type=script&lang.ts
9081
10080
  var APolicyBasicForm_vue_vue_type_script_lang_default = defineComponent({
9082
10081
  components: {
10082
+ ANameInput: ANameInput_default,
9083
10083
  ARealmPicker,
9084
10084
  VCFormInput,
9085
10085
  VCFormSwitch,
@@ -9097,6 +10097,7 @@ var APolicyBasicForm_vue_vue_type_script_lang_default = defineComponent({
9097
10097
  emits: ["updated"],
9098
10098
  setup(props, setup) {
9099
10099
  const entity = toRef(props, "entity");
10100
+ const nameSeed = useId();
9100
10101
  const form = reactive({
9101
10102
  name: "",
9102
10103
  invert: false,
@@ -9125,6 +10126,7 @@ var APolicyBasicForm_vue_vue_type_script_lang_default = defineComponent({
9125
10126
  setup.expose({ assign });
9126
10127
  onChange(useUpdatedAt(props.entity), () => assign(props.entity));
9127
10128
  assign(props.entity);
10129
+ if (form.name.length === 0) form.name = generateName(nameSeed);
9128
10130
  watch(() => props.type, (value) => {
9129
10131
  form.type = value ?? "";
9130
10132
  }, { immediate: true });
@@ -9145,33 +10147,32 @@ var APolicyBasicForm_vue_vue_type_script_lang_default = defineComponent({
9145
10147
  });
9146
10148
  //#endregion
9147
10149
  //#region src/components/entities/policy/APolicyBasicForm.vue
9148
- const _hoisted_1$10 = { class: "row" };
9149
- const _hoisted_2$6 = { class: "col" };
9150
- const _hoisted_3$4 = ["for"];
9151
- const _hoisted_4$3 = {
10150
+ const _hoisted_1$13 = { class: "row" };
10151
+ const _hoisted_2$8 = { class: "col" };
10152
+ const _hoisted_3$5 = ["for"];
10153
+ const _hoisted_4$4 = {
9152
10154
  key: 0,
9153
10155
  class: "col"
9154
- };
9155
- function _sfc_render$26(_ctx, _cache, $props, $setup, $data, $options) {
9156
- const _component_VCFormInput = resolveComponent("VCFormInput");
10156
+ };
10157
+ function _sfc_render$29(_ctx, _cache, $props, $setup, $data, $options) {
10158
+ const _component_ANameInput = resolveComponent("ANameInput");
9157
10159
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
9158
10160
  const _component_IFieldValidation = resolveComponent("IFieldValidation");
10161
+ const _component_VCFormInput = resolveComponent("VCFormInput");
9159
10162
  const _component_VCFormTextarea = resolveComponent("VCFormTextarea");
9160
10163
  const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
9161
10164
  const _component_ARealmPicker = resolveComponent("ARealmPicker");
9162
- return openBlock(), createElementBlock("div", _hoisted_1$10, [createElementVNode("div", _hoisted_2$6, [
10165
+ return openBlock(), createElementBlock("div", _hoisted_1$13, [createElementVNode("div", _hoisted_2$8, [
9163
10166
  createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
9164
10167
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
9165
10168
  label: withCtx(() => [..._cache[0] || (_cache[0] = [createTextVNode(" Name ", -1)])]),
9166
- default: withCtx(() => [createVNode(_component_VCFormInput, {
9167
- modelValue: _ctx.v.fields.name.$model.value,
9168
- "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event,
9169
- onChange: _ctx.handleUpdated
9170
- }, null, 8, [
9171
- "modelValue",
9172
- "onUpdate:modelValue",
9173
- "onChange"
9174
- ])]),
10169
+ default: withCtx(() => [createVNode(_component_ANameInput, {
10170
+ "model-value": _ctx.v.fields.name.$model.value,
10171
+ "onUpdate:modelValue": (next) => {
10172
+ _ctx.v.fields.name.$model.value = next;
10173
+ _ctx.handleUpdated();
10174
+ }
10175
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
9175
10176
  _: 2
9176
10177
  }, 1032, ["validation"])]),
9177
10178
  _: 1
@@ -9221,7 +10222,7 @@ function _sfc_render$26(_ctx, _cache, $props, $setup, $data, $options) {
9221
10222
  label: true,
9222
10223
  onChange: _ctx.handleUpdated
9223
10224
  }, {
9224
- label: withCtx((iProps) => [createElementVNode("label", { for: iProps.id }, " Invert? ", 8, _hoisted_3$4)]),
10225
+ label: withCtx((iProps) => [createElementVNode("label", { for: iProps.id }, " Invert? ", 8, _hoisted_3$5)]),
9225
10226
  _: 1
9226
10227
  }, 8, [
9227
10228
  "modelValue",
@@ -9232,7 +10233,7 @@ function _sfc_render$26(_ctx, _cache, $props, $setup, $data, $options) {
9232
10233
  }, 1032, ["validation"])]),
9233
10234
  _: 1
9234
10235
  }, 8, ["field"])
9235
- ]), !_ctx.realmId && !_ctx.isEditing ? (openBlock(), createElementBlock("div", _hoisted_4$3, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.realm_id }, {
10236
+ ]), !_ctx.realmId && !_ctx.isEditing ? (openBlock(), createElementBlock("div", _hoisted_4$4, [createVNode(_component_IFieldValidation, { field: _ctx.v.fields.realm_id }, {
9236
10237
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
9237
10238
  label: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Realm ", -1)])]),
9238
10239
  default: withCtx(() => [createVNode(_component_ARealmPicker, {
@@ -9252,7 +10253,7 @@ var APolicyForm_vue_vue_type_script_lang_default = defineComponent({
9252
10253
  components: {
9253
10254
  AFormSubmit,
9254
10255
  APolicyTypePicker: APolicyTypePicker_default,
9255
- APolicyBasicForm: /* @__PURE__ */ _plugin_vue_export_helper_default(APolicyBasicForm_vue_vue_type_script_lang_default, [["render", _sfc_render$26]])
10256
+ APolicyBasicForm: /* @__PURE__ */ _plugin_vue_export_helper_default(APolicyBasicForm_vue_vue_type_script_lang_default, [["render", _sfc_render$29]])
9256
10257
  },
9257
10258
  props: {
9258
10259
  entity: { type: Object },
@@ -9310,11 +10311,11 @@ var APolicyForm_vue_vue_type_script_lang_default = defineComponent({
9310
10311
  });
9311
10312
  //#endregion
9312
10313
  //#region src/components/entities/policy/APolicyForm.vue
9313
- const _hoisted_1$9 = { class: "flex flex-col" };
9314
- function _sfc_render$25(_ctx, _cache, $props, $setup, $data, $options) {
10314
+ const _hoisted_1$12 = { class: "flex flex-col" };
10315
+ function _sfc_render$28(_ctx, _cache, $props, $setup, $data, $options) {
9315
10316
  const _component_APolicyBasicForm = resolveComponent("APolicyBasicForm");
9316
10317
  const _component_AFormSubmit = resolveComponent("AFormSubmit");
9317
- return openBlock(), createElementBlock("div", _hoisted_1$9, [
10318
+ return openBlock(), createElementBlock("div", _hoisted_1$12, [
9318
10319
  _cache[0] || (_cache[0] = createElementVNode("h6", null, "General", -1)),
9319
10320
  createVNode(_component_APolicyBasicForm, {
9320
10321
  entity: _ctx.data,
@@ -9340,7 +10341,7 @@ function _sfc_render$25(_ctx, _cache, $props, $setup, $data, $options) {
9340
10341
  ])])
9341
10342
  ]);
9342
10343
  }
9343
- var APolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$25]]);
10344
+ var APolicyForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APolicyForm_vue_vue_type_script_lang_default, [["render", _sfc_render$28]]);
9344
10345
  //#endregion
9345
10346
  //#region src/components/entities/permission-client/APermissionClientAssignments.vue?vue&type=script&lang.ts
9346
10347
  var APermissionClientAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -9358,7 +10359,7 @@ var APermissionClientAssignments_vue_vue_type_script_lang_default = defineCompon
9358
10359
  });
9359
10360
  //#endregion
9360
10361
  //#region src/components/entities/permission-client/APermissionClientAssignments.vue
9361
- function _sfc_render$24(_ctx, _cache, $props, $setup, $data, $options) {
10362
+ function _sfc_render$27(_ctx, _cache, $props, $setup, $data, $options) {
9362
10363
  const _component_AClientPermissionAssignment = resolveComponent("AClientPermissionAssignment");
9363
10364
  const _component_AClients = resolveComponent("AClients");
9364
10365
  return openBlock(), createBlock(_component_AClients, null, createSlots({
@@ -9375,7 +10376,7 @@ function _sfc_render$24(_ctx, _cache, $props, $setup, $data, $options) {
9375
10376
  };
9376
10377
  })]), 1024);
9377
10378
  }
9378
- var APermissionClientAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionClientAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$24]]);
10379
+ var APermissionClientAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionClientAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$27]]);
9379
10380
  //#endregion
9380
10381
  //#region src/components/entities/permission-policy/APermissionPolicyAssignment.vue?vue&type=script&lang.ts
9381
10382
  var APermissionPolicyAssignment_vue_vue_type_script_lang_default = defineComponent({
@@ -9422,7 +10423,7 @@ var APermissionPolicyAssignment_vue_vue_type_script_lang_default = defineCompone
9422
10423
  });
9423
10424
  //#endregion
9424
10425
  //#region src/components/entities/permission-policy/APermissionPolicyAssignment.vue
9425
- function _sfc_render$23(_ctx, _cache, $props, $setup, $data, $options) {
10426
+ function _sfc_render$26(_ctx, _cache, $props, $setup, $data, $options) {
9426
10427
  const _component_AToggleButton = resolveComponent("AToggleButton");
9427
10428
  return openBlock(), createBlock(_component_AToggleButton, {
9428
10429
  value: !!_ctx.manager.data.value,
@@ -9434,7 +10435,7 @@ function _sfc_render$23(_ctx, _cache, $props, $setup, $data, $options) {
9434
10435
  "onChanged"
9435
10436
  ]);
9436
10437
  }
9437
- var APermissionPolicyAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionPolicyAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$23]]);
10438
+ var APermissionPolicyAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionPolicyAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$26]]);
9438
10439
  //#endregion
9439
10440
  //#region src/components/entities/permission-policy/APermissionPolicyAssignments.vue?vue&type=script&lang.ts
9440
10441
  var APermissionPolicyAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -9467,14 +10468,14 @@ var APermissionPolicyAssignments_vue_vue_type_script_lang_default = defineCompon
9467
10468
  });
9468
10469
  //#endregion
9469
10470
  //#region src/components/entities/permission-policy/APermissionPolicyAssignments.vue
9470
- const _hoisted_1$8 = { class: "ms-auto" };
9471
- const _hoisted_2$5 = ["aria-labelledby"];
9472
- const _hoisted_3$3 = { class: "modal-content" };
9473
- const _hoisted_4$2 = { class: "modal-header" };
9474
- const _hoisted_5$1 = ["id"];
9475
- const _hoisted_6$1 = { class: "modal-body" };
10471
+ const _hoisted_1$11 = { class: "ms-auto" };
10472
+ const _hoisted_2$7 = ["aria-labelledby"];
10473
+ const _hoisted_3$4 = { class: "modal-content" };
10474
+ const _hoisted_4$3 = { class: "modal-header" };
10475
+ const _hoisted_5$3 = ["id"];
10476
+ const _hoisted_6$3 = { class: "modal-body" };
9476
10477
  const _hoisted_7$1 = { class: "modal-footer" };
9477
- function _sfc_render$22(_ctx, _cache, $props, $setup, $data, $options) {
10478
+ function _sfc_render$25(_ctx, _cache, $props, $setup, $data, $options) {
9478
10479
  const _component_APolicyInlineInfo = resolveComponent("APolicyInlineInfo");
9479
10480
  const _component_APermissionPolicyAssignment = resolveComponent("APermissionPolicyAssignment");
9480
10481
  const _component_APolicies = resolveComponent("APolicies");
@@ -9486,7 +10487,7 @@ function _sfc_render$22(_ctx, _cache, $props, $setup, $data, $options) {
9486
10487
  entity: data,
9487
10488
  onDetail: _cache[0] || (_cache[0] = ($event) => _ctx.detailPolicy = $event)
9488
10489
  }, null, 8, ["entity"]),
9489
- createElementVNode("div", _hoisted_1$8, [(openBlock(), createBlock(_component_APermissionPolicyAssignment, {
10490
+ createElementVNode("div", _hoisted_1$11, [(openBlock(), createBlock(_component_APermissionPolicyAssignment, {
9490
10491
  key: data.id,
9491
10492
  "permission-id": _ctx.entityId,
9492
10493
  "policy-id": data.id
@@ -9514,25 +10515,25 @@ function _sfc_render$22(_ctx, _cache, $props, $setup, $data, $options) {
9514
10515
  class: "modal-dialog",
9515
10516
  role: "document",
9516
10517
  onClick: _cache[4] || (_cache[4] = withModifiers(() => {}, ["stop"]))
9517
- }, [createElementVNode("div", _hoisted_3$3, [
9518
- createElementVNode("div", _hoisted_4$2, [createElementVNode("h5", {
10518
+ }, [createElementVNode("div", _hoisted_3$4, [
10519
+ createElementVNode("div", _hoisted_4$3, [createElementVNode("h5", {
9519
10520
  id: `policy-detail-modal-${_ctx.detailPolicy.id}`,
9520
10521
  class: "modal-title"
9521
- }, toDisplayString(_ctx.detailPolicy.name), 9, _hoisted_5$1), createElementVNode("button", {
10522
+ }, toDisplayString(_ctx.detailPolicy.name), 9, _hoisted_5$3), createElementVNode("button", {
9522
10523
  type: "button",
9523
10524
  class: "btn-close",
9524
10525
  "aria-label": "Close",
9525
10526
  onClick: _cache[2] || (_cache[2] = ($event) => _ctx.detailPolicy = null)
9526
10527
  })]),
9527
- createElementVNode("div", _hoisted_6$1, [createVNode(_component_APolicySummary, { entity: _ctx.detailPolicy }, null, 8, ["entity"])]),
10528
+ createElementVNode("div", _hoisted_6$3, [createVNode(_component_APolicySummary, { entity: _ctx.detailPolicy }, null, 8, ["entity"])]),
9528
10529
  createElementVNode("div", _hoisted_7$1, [createElementVNode("button", {
9529
10530
  type: "button",
9530
10531
  class: "btn btn-secondary btn-xs",
9531
10532
  onClick: _cache[3] || (_cache[3] = ($event) => _ctx.detailPolicy = null)
9532
10533
  }, " Close ")])
9533
- ])])], 8, _hoisted_2$5)])) : createCommentVNode("v-if", true)]);
10534
+ ])])], 8, _hoisted_2$7)])) : createCommentVNode("v-if", true)]);
9534
10535
  }
9535
- var APermissionPolicyAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionPolicyAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$22]]);
10536
+ var APermissionPolicyAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionPolicyAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$25]]);
9536
10537
  //#endregion
9537
10538
  //#region src/components/entities/robot-permission/ARobotPermissionAssignment.vue?vue&type=script&lang.ts
9538
10539
  var ARobotPermissionAssignment_vue_vue_type_script_lang_default = defineComponent({
@@ -9587,11 +10588,11 @@ var ARobotPermissionAssignment_vue_vue_type_script_lang_default = defineComponen
9587
10588
  });
9588
10589
  //#endregion
9589
10590
  //#region src/components/entities/robot-permission/ARobotPermissionAssignment.vue
9590
- const _hoisted_1$7 = { class: "flex gap-1" };
9591
- function _sfc_render$21(_ctx, _cache, $props, $setup, $data, $options) {
10591
+ const _hoisted_1$10 = { class: "flex gap-1" };
10592
+ function _sfc_render$24(_ctx, _cache, $props, $setup, $data, $options) {
9592
10593
  const _component_AToggleButton = resolveComponent("AToggleButton");
9593
10594
  const _component_APermissionPolicyBindingButton = resolveComponent("APermissionPolicyBindingButton");
9594
- return openBlock(), createElementBlock("span", _hoisted_1$7, [createVNode(_component_AToggleButton, {
10595
+ return openBlock(), createElementBlock("span", _hoisted_1$10, [createVNode(_component_AToggleButton, {
9595
10596
  value: !!_ctx.manager.data.value,
9596
10597
  "is-busy": _ctx.manager.busy.value,
9597
10598
  onChanged: _ctx.handleChanged
@@ -9610,7 +10611,7 @@ function _sfc_render$21(_ctx, _cache, $props, $setup, $data, $options) {
9610
10611
  "onUpdated"
9611
10612
  ])) : createCommentVNode("v-if", true)]);
9612
10613
  }
9613
- var ARobotPermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARobotPermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$21]]);
10614
+ var ARobotPermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARobotPermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$24]]);
9614
10615
  //#endregion
9615
10616
  //#region src/components/entities/robot/ARobot.ts
9616
10617
  const ARobot = defineComponent({
@@ -9633,10 +10634,12 @@ const ARobot = defineComponent({
9633
10634
  });
9634
10635
  //#endregion
9635
10636
  //#region src/components/entities/robot/ARobotForm.vue?vue&type=script&lang.ts
9636
- const ARobotForm = defineComponent({
10637
+ var ARobotForm_vue_vue_type_script_lang_default = defineComponent({
9637
10638
  components: {
9638
10639
  ARealms,
9639
10640
  AFormSubmit,
10641
+ ANameInput: ANameInput_default,
10642
+ ASecretInput: ASecretInput_default,
9640
10643
  AToggleButton: AToggleButton_default,
9641
10644
  VCFormGroup,
9642
10645
  VCFormInput,
@@ -9659,6 +10662,7 @@ const ARobotForm = defineComponent({
9659
10662
  emits: defineEntityVEmitOptions(),
9660
10663
  setup(props, ctx) {
9661
10664
  const busy = ref(false);
10665
+ const nameSeed = useId();
9662
10666
  const form = reactive({
9663
10667
  name: "",
9664
10668
  display_name: "",
@@ -9676,15 +10680,15 @@ const ARobotForm = defineComponent({
9676
10680
  const isNameFixed = computed(() => !!props.name && props.name.length > 0);
9677
10681
  const isRealmLocked = computed(() => !!props.realmId);
9678
10682
  const isSecretHashed = computed(() => manager.data.value && manager.data.value.secret === form.secret && form.secret.startsWith("$"));
9679
- const generateSecret = () => {
9680
- form.secret = createNanoID(64);
9681
- };
9682
10683
  function initForm() {
9683
10684
  assignFormProperties(form, manager.data.value);
9684
10685
  if (props.name) form.name = props.name;
9685
10686
  if (props.realmId) form.realm_id = props.realmId;
9686
- if (form.secret.length === 0) generateSecret();
10687
+ if (form.name.length === 0) form.name = generateName(nameSeed);
9687
10688
  }
10689
+ onMounted(() => {
10690
+ if (form.secret.length === 0) form.secret = generateSecret();
10691
+ });
9688
10692
  watch(updatedAt, (val, oldVal) => {
9689
10693
  if (val && val !== oldVal) {
9690
10694
  manager.data.value = props.entity;
@@ -9704,13 +10708,27 @@ const ARobotForm = defineComponent({
9704
10708
  busy.value = false;
9705
10709
  }
9706
10710
  };
9707
- const translationsDefault = useTranslationsForNamespace("default", [
9708
- { key: "generate" },
9709
- { key: "hashed" },
9710
- { key: "name" },
9711
- { key: "displayName" },
9712
- { key: "description" },
9713
- { key: "secret" }
10711
+ const translationsDefault = useTranslations([
10712
+ {
10713
+ namespace: TranslatorTranslationNamespace.FIELD,
10714
+ key: TranslatorTranslationFieldKey.HASHED
10715
+ },
10716
+ {
10717
+ namespace: TranslatorTranslationNamespace.FIELD,
10718
+ key: TranslatorTranslationFieldKey.NAME
10719
+ },
10720
+ {
10721
+ namespace: TranslatorTranslationNamespace.FIELD,
10722
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
10723
+ },
10724
+ {
10725
+ namespace: TranslatorTranslationNamespace.FIELD,
10726
+ key: TranslatorTranslationFieldKey.DESCRIPTION
10727
+ },
10728
+ {
10729
+ namespace: TranslatorTranslationNamespace.FIELD,
10730
+ key: TranslatorTranslationFieldKey.SECRET
10731
+ }
9714
10732
  ]);
9715
10733
  return {
9716
10734
  busy,
@@ -9722,12 +10740,112 @@ const ARobotForm = defineComponent({
9722
10740
  isSecretHashed,
9723
10741
  data: manager.data,
9724
10742
  translationsDefault,
9725
- generateSecret,
9726
10743
  submit
9727
10744
  };
9728
10745
  }
9729
10746
  });
9730
10747
  //#endregion
10748
+ //#region src/components/entities/robot/ARobotForm.vue
10749
+ const _hoisted_1$9 = {
10750
+ key: 0,
10751
+ class: "text-error-600 font-bold ps-1"
10752
+ };
10753
+ const _hoisted_2$6 = {
10754
+ key: 0,
10755
+ class: "col"
10756
+ };
10757
+ function _sfc_render$23(_ctx, _cache, $props, $setup, $data, $options) {
10758
+ const _component_VCFormInput = resolveComponent("VCFormInput");
10759
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
10760
+ const _component_ANameInput = resolveComponent("ANameInput");
10761
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
10762
+ const _component_VCIcon = resolveComponent("VCIcon");
10763
+ const _component_ASecretInput = resolveComponent("ASecretInput");
10764
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
10765
+ const _component_AToggleButton = resolveComponent("AToggleButton");
10766
+ const _component_ARealms = resolveComponent("ARealms");
10767
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [createElementVNode("div", { class: normalizeClass(!_ctx.isRealmLocked ? "row" : "") }, [createElementVNode("div", { class: normalizeClass(!_ctx.isRealmLocked ? "col" : "") }, [
10768
+ _ctx.data ? (openBlock(), createBlock(_component_VCFormGroup, { key: 0 }, {
10769
+ label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" ID ", -1)])]),
10770
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
10771
+ "model-value": _ctx.data.id,
10772
+ disabled: true
10773
+ }, null, 8, ["model-value"])]),
10774
+ _: 1
10775
+ })) : createCommentVNode("v-if", true),
10776
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
10777
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
10778
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
10779
+ default: withCtx(() => [createVNode(_component_ANameInput, {
10780
+ modelValue: _ctx.v.fields.name.$model.value,
10781
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event,
10782
+ disabled: _ctx.isNameFixed
10783
+ }, null, 8, [
10784
+ "modelValue",
10785
+ "onUpdate:modelValue",
10786
+ "disabled"
10787
+ ])]),
10788
+ _: 2
10789
+ }, 1032, ["validation"])]),
10790
+ _: 1
10791
+ }, 8, ["field"]),
10792
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
10793
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
10794
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
10795
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
10796
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
10797
+ "onUpdate:modelValue": (next) => {
10798
+ _ctx.v.fields.display_name.$model.value = next;
10799
+ }
10800
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
10801
+ _: 2
10802
+ }, 1032, ["validation"])]),
10803
+ _: 1
10804
+ }, 8, ["field"]),
10805
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.secret }, {
10806
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
10807
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.secret), 1), _ctx.isSecretHashed ? (openBlock(), createElementBlock("span", _hoisted_1$9, [createTextVNode(toDisplayString(_ctx.translationsDefault.hashed) + " ", 1), createVNode(_component_VCIcon, {
10808
+ name: "fa6-solid:triangle-exclamation",
10809
+ class: "ps-1"
10810
+ })])) : createCommentVNode("v-if", true)]),
10811
+ default: withCtx(() => [createVNode(_component_ASecretInput, {
10812
+ "model-value": _ctx.v.fields.secret.$model.value ?? "",
10813
+ "onUpdate:modelValue": (next) => {
10814
+ _ctx.v.fields.secret.$model.value = next;
10815
+ }
10816
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
10817
+ _: 2
10818
+ }, 1032, ["validation"])]),
10819
+ _: 1
10820
+ }, 8, ["field"]),
10821
+ createVNode(_component_AFormSubmit, {
10822
+ "is-busy": _ctx.busy,
10823
+ "is-editing": _ctx.isEditing,
10824
+ "is-invalid": _ctx.v.$invalid.value,
10825
+ onSubmit: _ctx.submit
10826
+ }, null, 8, [
10827
+ "is-busy",
10828
+ "is-editing",
10829
+ "is-invalid",
10830
+ "onSubmit"
10831
+ ])
10832
+ ], 2), !_ctx.isRealmLocked ? (openBlock(), createElementBlock("div", _hoisted_2$6, [createVNode(_component_ARealms, null, {
10833
+ itemActions: withCtx((pickerProps) => [createVNode(_component_AToggleButton, {
10834
+ value: _ctx.form.realm_id === pickerProps.data.id,
10835
+ "is-busy": pickerProps.busy,
10836
+ onChanged: (value) => {
10837
+ _ctx.form.realm_id = value ? pickerProps.data.id : "";
10838
+ }
10839
+ }, null, 8, [
10840
+ "value",
10841
+ "is-busy",
10842
+ "onChanged"
10843
+ ])]),
10844
+ _: 1
10845
+ })])) : createCommentVNode("v-if", true)], 2)], 32);
10846
+ }
10847
+ var ARobotForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARobotForm_vue_vue_type_script_lang_default, [["render", _sfc_render$23]]);
10848
+ //#endregion
9731
10849
  //#region src/components/entities/robot/ARobots.ts
9732
10850
  const ARobots = defineComponent({
9733
10851
  props: defineEntityCollectionVProps(),
@@ -9739,13 +10857,15 @@ const ARobots = defineComponent({
9739
10857
  props,
9740
10858
  setup: ctx
9741
10859
  });
10860
+ const translationName = useTranslation({
10861
+ namespace: TranslatorTranslationNamespace.ENTITY,
10862
+ key: TranslatorTranslationEntityKey.ROBOT,
10863
+ count: 2
10864
+ });
9742
10865
  const translation = useTranslation({
9743
- namespace: "vuecs",
9744
- key: "noMore",
9745
- data: { name: useTranslation({
9746
- namespace: "default",
9747
- key: "robots"
9748
- }) }
10866
+ namespace: TranslatorTranslationNamespace.VUECS,
10867
+ key: TranslatorTranslationVuecsKey.NO_MORE,
10868
+ data: { name: translationName }
9749
10869
  });
9750
10870
  return () => render({ noMore: { content: translation.value } });
9751
10871
  }
@@ -9767,7 +10887,7 @@ var APermissionRobotAssignments_vue_vue_type_script_lang_default = defineCompone
9767
10887
  });
9768
10888
  //#endregion
9769
10889
  //#region src/components/entities/permission-robot/APermissionRobotAssignments.vue
9770
- function _sfc_render$20(_ctx, _cache, $props, $setup, $data, $options) {
10890
+ function _sfc_render$22(_ctx, _cache, $props, $setup, $data, $options) {
9771
10891
  const _component_ARobotPermissionAssignment = resolveComponent("ARobotPermissionAssignment");
9772
10892
  const _component_ARobots = resolveComponent("ARobots");
9773
10893
  return openBlock(), createBlock(_component_ARobots, null, createSlots({
@@ -9784,7 +10904,7 @@ function _sfc_render$20(_ctx, _cache, $props, $setup, $data, $options) {
9784
10904
  };
9785
10905
  })]), 1024);
9786
10906
  }
9787
- var APermissionRobotAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionRobotAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$20]]);
10907
+ var APermissionRobotAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionRobotAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$22]]);
9788
10908
  //#endregion
9789
10909
  //#region src/components/entities/role-permission/ARolePermissionAssignment.vue?vue&type=script&lang.ts
9790
10910
  var ARolePermissionAssignment_vue_vue_type_script_lang_default = defineComponent({
@@ -9839,11 +10959,11 @@ var ARolePermissionAssignment_vue_vue_type_script_lang_default = defineComponent
9839
10959
  });
9840
10960
  //#endregion
9841
10961
  //#region src/components/entities/role-permission/ARolePermissionAssignment.vue
9842
- const _hoisted_1$6 = { class: "flex gap-1" };
9843
- function _sfc_render$19(_ctx, _cache, $props, $setup, $data, $options) {
10962
+ const _hoisted_1$8 = { class: "flex gap-1" };
10963
+ function _sfc_render$21(_ctx, _cache, $props, $setup, $data, $options) {
9844
10964
  const _component_AToggleButton = resolveComponent("AToggleButton");
9845
10965
  const _component_APermissionPolicyBindingButton = resolveComponent("APermissionPolicyBindingButton");
9846
- return openBlock(), createElementBlock("span", _hoisted_1$6, [createVNode(_component_AToggleButton, {
10966
+ return openBlock(), createElementBlock("span", _hoisted_1$8, [createVNode(_component_AToggleButton, {
9847
10967
  value: !!_ctx.manager.data.value,
9848
10968
  "is-busy": _ctx.manager.busy.value,
9849
10969
  onChanged: _ctx.handleChanged
@@ -9862,7 +10982,7 @@ function _sfc_render$19(_ctx, _cache, $props, $setup, $data, $options) {
9862
10982
  "onUpdated"
9863
10983
  ])) : createCommentVNode("v-if", true)]);
9864
10984
  }
9865
- var ARolePermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARolePermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$19]]);
10985
+ var ARolePermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARolePermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$21]]);
9866
10986
  //#endregion
9867
10987
  //#region src/components/entities/role-permission/ARolePermissionAssignments.vue?vue&type=script&lang.ts
9868
10988
  var ARolePermissionAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -9880,7 +11000,7 @@ var ARolePermissionAssignments_vue_vue_type_script_lang_default = defineComponen
9880
11000
  });
9881
11001
  //#endregion
9882
11002
  //#region src/components/entities/role-permission/ARolePermissionAssignments.vue
9883
- function _sfc_render$18(_ctx, _cache, $props, $setup, $data, $options) {
11003
+ function _sfc_render$20(_ctx, _cache, $props, $setup, $data, $options) {
9884
11004
  const _component_ARolePermissionAssignment = resolveComponent("ARolePermissionAssignment");
9885
11005
  const _component_APermissions = resolveComponent("APermissions");
9886
11006
  return openBlock(), createBlock(_component_APermissions, null, createSlots({
@@ -9897,7 +11017,7 @@ function _sfc_render$18(_ctx, _cache, $props, $setup, $data, $options) {
9897
11017
  };
9898
11018
  })]), 1024);
9899
11019
  }
9900
- var ARolePermissionAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARolePermissionAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$18]]);
11020
+ var ARolePermissionAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(ARolePermissionAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$20]]);
9901
11021
  //#endregion
9902
11022
  //#region src/components/entities/permission-role/APermissionRoleAssignments.vue?vue&type=script&lang.ts
9903
11023
  var APermissionRoleAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -9915,7 +11035,7 @@ var APermissionRoleAssignments_vue_vue_type_script_lang_default = defineComponen
9915
11035
  });
9916
11036
  //#endregion
9917
11037
  //#region src/components/entities/permission-role/APermissionRoleAssignments.vue
9918
- function _sfc_render$17(_ctx, _cache, $props, $setup, $data, $options) {
11038
+ function _sfc_render$19(_ctx, _cache, $props, $setup, $data, $options) {
9919
11039
  const _component_ARolePermissionAssignment = resolveComponent("ARolePermissionAssignment");
9920
11040
  const _component_ARoles = resolveComponent("ARoles");
9921
11041
  return openBlock(), createBlock(_component_ARoles, null, createSlots({
@@ -9932,7 +11052,7 @@ function _sfc_render$17(_ctx, _cache, $props, $setup, $data, $options) {
9932
11052
  };
9933
11053
  })]), 1024);
9934
11054
  }
9935
- var APermissionRoleAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionRoleAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$17]]);
11055
+ var APermissionRoleAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(APermissionRoleAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$19]]);
9936
11056
  //#endregion
9937
11057
  //#region src/components/entities/user-permission/AUserPermissionAssignment.vue?vue&type=script&lang.ts
9938
11058
  var AUserPermissionAssignment_vue_vue_type_script_lang_default = defineComponent({
@@ -9987,11 +11107,11 @@ var AUserPermissionAssignment_vue_vue_type_script_lang_default = defineComponent
9987
11107
  });
9988
11108
  //#endregion
9989
11109
  //#region src/components/entities/user-permission/AUserPermissionAssignment.vue
9990
- const _hoisted_1$5 = { class: "flex gap-1" };
9991
- function _sfc_render$16(_ctx, _cache, $props, $setup, $data, $options) {
11110
+ const _hoisted_1$7 = { class: "flex gap-1" };
11111
+ function _sfc_render$18(_ctx, _cache, $props, $setup, $data, $options) {
9992
11112
  const _component_AToggleButton = resolveComponent("AToggleButton");
9993
11113
  const _component_APermissionPolicyBindingButton = resolveComponent("APermissionPolicyBindingButton");
9994
- return openBlock(), createElementBlock("span", _hoisted_1$5, [createVNode(_component_AToggleButton, {
11114
+ return openBlock(), createElementBlock("span", _hoisted_1$7, [createVNode(_component_AToggleButton, {
9995
11115
  value: !!_ctx.manager.data.value,
9996
11116
  "is-busy": _ctx.manager.busy.value,
9997
11117
  onChanged: _ctx.handleChanged
@@ -10010,7 +11130,7 @@ function _sfc_render$16(_ctx, _cache, $props, $setup, $data, $options) {
10010
11130
  "onUpdated"
10011
11131
  ])) : createCommentVNode("v-if", true)]);
10012
11132
  }
10013
- var AUserPermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AUserPermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$16]]);
11133
+ var AUserPermissionAssignment_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AUserPermissionAssignment_vue_vue_type_script_lang_default, [["render", _sfc_render$18]]);
10014
11134
  //#endregion
10015
11135
  //#region src/components/entities/user-permission/AUserPermissionAssignments.vue?vue&type=script&lang.ts
10016
11136
  var AUserPermissionAssignments_vue_vue_type_script_lang_default = defineComponent({
@@ -10028,7 +11148,7 @@ var AUserPermissionAssignments_vue_vue_type_script_lang_default = defineComponen
10028
11148
  });
10029
11149
  //#endregion
10030
11150
  //#region src/components/entities/user-permission/AUserPermissionAssignments.vue
10031
- function _sfc_render$15(_ctx, _cache, $props, $setup, $data, $options) {
11151
+ function _sfc_render$17(_ctx, _cache, $props, $setup, $data, $options) {
10032
11152
  const _component_AUserPermissionAssignment = resolveComponent("AUserPermissionAssignment");
10033
11153
  const _component_APermissions = resolveComponent("APermissions");
10034
11154
  return openBlock(), createBlock(_component_APermissions, null, createSlots({
@@ -10045,7 +11165,7 @@ function _sfc_render$15(_ctx, _cache, $props, $setup, $data, $options) {
10045
11165
  };
10046
11166
  })]), 1024);
10047
11167
  }
10048
- var AUserPermissionAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AUserPermissionAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$15]]);
11168
+ var AUserPermissionAssignments_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AUserPermissionAssignments_vue_vue_type_script_lang_default, [["render", _sfc_render$17]]);
10049
11169
  //#endregion
10050
11170
  //#region src/components/entities/user/AUser.ts
10051
11171
  const AUser = defineComponent({
@@ -10068,10 +11188,11 @@ const AUser = defineComponent({
10068
11188
  });
10069
11189
  //#endregion
10070
11190
  //#region src/components/entities/user/AUserForm.vue?vue&type=script&lang.ts
10071
- const AUserForm = defineComponent({
11191
+ var AUserForm_vue_vue_type_script_lang_default = defineComponent({
10072
11192
  components: {
10073
11193
  ARealms,
10074
11194
  AFormSubmit,
11195
+ ANameInput: ANameInput_default,
10075
11196
  AToggleButton: AToggleButton_default,
10076
11197
  VCFormGroup,
10077
11198
  VCFormInput,
@@ -10095,6 +11216,7 @@ const AUserForm = defineComponent({
10095
11216
  emits: defineEntityVEmitOptions(),
10096
11217
  setup(props, ctx) {
10097
11218
  const busy = ref(false);
11219
+ const nameSeed = useId();
10098
11220
  const form = reactive({
10099
11221
  active: true,
10100
11222
  name: "",
@@ -10116,6 +11238,10 @@ const AUserForm = defineComponent({
10116
11238
  function initForm() {
10117
11239
  if (!!manager.data.value && typeof manager.data.value.name_locked !== "undefined") form.name_locked = manager.data.value.name_locked;
10118
11240
  assignFormProperties(form, manager.data.value);
11241
+ if (form.name.length === 0) {
11242
+ form.name = generateName(nameSeed);
11243
+ if (!form.email || isUserFakeEmail(form.email)) form.email = buildUserFakeEmail(form.name);
11244
+ }
10119
11245
  if (props.realmId) form.realm_id = props.realmId;
10120
11246
  }
10121
11247
  watch(updatedAt, (val, oldVal) => {
@@ -10145,15 +11271,39 @@ const AUserForm = defineComponent({
10145
11271
  v,
10146
11272
  isEditing,
10147
11273
  showRealmPicker,
10148
- translationsDefault: useTranslationsForNamespace("default", [
10149
- { key: "active" },
10150
- { key: "inactive" },
10151
- { key: "displayName" },
10152
- { key: "email" },
10153
- { key: "locked" },
10154
- { key: "notLocked" },
10155
- { key: "name" },
10156
- { key: "description" }
11274
+ translationsDefault: useTranslations([
11275
+ {
11276
+ namespace: TranslatorTranslationNamespace.COMMON,
11277
+ key: TranslatorTranslationCommonKey.ACTIVE
11278
+ },
11279
+ {
11280
+ namespace: TranslatorTranslationNamespace.COMMON,
11281
+ key: TranslatorTranslationCommonKey.INACTIVE
11282
+ },
11283
+ {
11284
+ namespace: TranslatorTranslationNamespace.FIELD,
11285
+ key: TranslatorTranslationFieldKey.DISPLAY_NAME
11286
+ },
11287
+ {
11288
+ namespace: TranslatorTranslationNamespace.FIELD,
11289
+ key: TranslatorTranslationFieldKey.EMAIL
11290
+ },
11291
+ {
11292
+ namespace: TranslatorTranslationNamespace.COMMON,
11293
+ key: TranslatorTranslationCommonKey.LOCKED
11294
+ },
11295
+ {
11296
+ namespace: TranslatorTranslationNamespace.COMMON,
11297
+ key: TranslatorTranslationCommonKey.NOT_LOCKED
11298
+ },
11299
+ {
11300
+ namespace: TranslatorTranslationNamespace.FIELD,
11301
+ key: TranslatorTranslationFieldKey.NAME
11302
+ },
11303
+ {
11304
+ namespace: TranslatorTranslationNamespace.FIELD,
11305
+ key: TranslatorTranslationFieldKey.DESCRIPTION
11306
+ }
10157
11307
  ]),
10158
11308
  onNameChange,
10159
11309
  submit
@@ -10161,6 +11311,120 @@ const AUserForm = defineComponent({
10161
11311
  }
10162
11312
  });
10163
11313
  //#endregion
11314
+ //#region src/components/entities/user/AUserForm.vue
11315
+ const _hoisted_1$6 = {
11316
+ key: 0,
11317
+ class: "row"
11318
+ };
11319
+ const _hoisted_2$5 = { class: "col" };
11320
+ const _hoisted_3$3 = ["for"];
11321
+ const _hoisted_4$2 = {
11322
+ key: 0,
11323
+ class: "col"
11324
+ };
11325
+ const _hoisted_5$2 = ["for"];
11326
+ const _hoisted_6$2 = { key: 0 };
11327
+ function _sfc_render$16(_ctx, _cache, $props, $setup, $data, $options) {
11328
+ const _component_ANameInput = resolveComponent("ANameInput");
11329
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
11330
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
11331
+ const _component_VCFormInput = resolveComponent("VCFormInput");
11332
+ const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
11333
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
11334
+ const _component_AToggleButton = resolveComponent("AToggleButton");
11335
+ const _component_ARealms = resolveComponent("ARealms");
11336
+ return openBlock(), createElementBlock("form", { onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [createElementVNode("div", { class: normalizeClass(_ctx.showRealmPicker ? "grid grid-cols-1 md:grid-cols-2 gap-2" : "") }, [createElementVNode("div", null, [
11337
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
11338
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
11339
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
11340
+ default: withCtx(() => [createVNode(_component_ANameInput, {
11341
+ "model-value": _ctx.v.fields.name.$model.value,
11342
+ disabled: _ctx.form.name_locked,
11343
+ "onUpdate:modelValue": _ctx.onNameChange
11344
+ }, null, 8, [
11345
+ "model-value",
11346
+ "disabled",
11347
+ "onUpdate:modelValue"
11348
+ ])]),
11349
+ _: 2
11350
+ }, 1032, ["validation"])]),
11351
+ _: 1
11352
+ }, 8, ["field"]),
11353
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.display_name }, {
11354
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
11355
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.displayName), 1)]),
11356
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
11357
+ "model-value": _ctx.v.fields.display_name.$model.value ?? "",
11358
+ "onUpdate:modelValue": (next) => {
11359
+ _ctx.v.fields.display_name.$model.value = next;
11360
+ }
11361
+ }, null, 8, ["model-value", "onUpdate:modelValue"])]),
11362
+ _: 2
11363
+ }, 1032, ["validation"])]),
11364
+ _: 1
11365
+ }, 8, ["field"]),
11366
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.email }, {
11367
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
11368
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.email), 1)]),
11369
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
11370
+ modelValue: _ctx.v.fields.email.$model.value,
11371
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.email.$model.value = $event,
11372
+ type: "email",
11373
+ placeholder: "...@..."
11374
+ }, null, 8, ["modelValue", "onUpdate:modelValue"])]),
11375
+ _: 2
11376
+ }, 1032, ["validation"])]),
11377
+ _: 1
11378
+ }, 8, ["field"]),
11379
+ _ctx.$props.canManage ? (openBlock(), createElementBlock("div", _hoisted_1$6, [createElementVNode("div", _hoisted_2$5, [createVNode(_component_VCFormSwitch, {
11380
+ modelValue: _ctx.form.active,
11381
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.form.active = $event),
11382
+ label: true
11383
+ }, {
11384
+ label: withCtx(({ id, class: labelClass }) => [createElementVNode("label", {
11385
+ for: id,
11386
+ class: normalizeClass([labelClass, _ctx.form.active ? "text-success-600" : "text-error-600"])
11387
+ }, toDisplayString(_ctx.form.active ? _ctx.translationsDefault.active : _ctx.translationsDefault.inactive), 11, _hoisted_3$3)]),
11388
+ _: 1
11389
+ }, 8, ["modelValue"])]), _ctx.$props.entity ? (openBlock(), createElementBlock("div", _hoisted_4$2, [createVNode(_component_VCFormSwitch, {
11390
+ modelValue: _ctx.form.name_locked,
11391
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.form.name_locked = $event),
11392
+ label: true
11393
+ }, {
11394
+ label: withCtx(({ id, class: labelClass }) => [createElementVNode("label", {
11395
+ for: id,
11396
+ class: normalizeClass([labelClass, _ctx.form.name_locked ? "text-success-600" : "text-warning-600"])
11397
+ }, toDisplayString(_ctx.form.name_locked ? _ctx.translationsDefault.locked : _ctx.translationsDefault.notLocked), 11, _hoisted_5$2)]),
11398
+ _: 1
11399
+ }, 8, ["modelValue"])])) : createCommentVNode("v-if", true)])) : createCommentVNode("v-if", true),
11400
+ createVNode(_component_AFormSubmit, {
11401
+ "is-busy": _ctx.busy,
11402
+ "is-editing": _ctx.isEditing,
11403
+ "is-invalid": _ctx.v.$invalid.value,
11404
+ onSubmit: _ctx.submit
11405
+ }, null, 8, [
11406
+ "is-busy",
11407
+ "is-editing",
11408
+ "is-invalid",
11409
+ "onSubmit"
11410
+ ])
11411
+ ]), _ctx.showRealmPicker ? (openBlock(), createElementBlock("div", _hoisted_6$2, [createVNode(_component_ARealms, null, {
11412
+ itemActions: withCtx((pickerProps) => [createVNode(_component_AToggleButton, {
11413
+ value: _ctx.form.realm_id === pickerProps.data.id,
11414
+ "is-busy": pickerProps.busy,
11415
+ onChanged: (value) => {
11416
+ _ctx.form.realm_id = value ? pickerProps.data.id : "";
11417
+ }
11418
+ }, null, 8, [
11419
+ "value",
11420
+ "is-busy",
11421
+ "onChanged"
11422
+ ])]),
11423
+ _: 1
11424
+ })])) : createCommentVNode("v-if", true)], 2)], 32);
11425
+ }
11426
+ var AUserForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AUserForm_vue_vue_type_script_lang_default, [["render", _sfc_render$16]]);
11427
+ //#endregion
10164
11428
  //#region src/components/entities/user/AUsers.ts
10165
11429
  const AUsers = defineComponent({
10166
11430
  props: defineEntityCollectionVProps(),
@@ -10172,13 +11436,15 @@ const AUsers = defineComponent({
10172
11436
  props,
10173
11437
  setup: ctx
10174
11438
  });
11439
+ const translationName = useTranslation({
11440
+ namespace: TranslatorTranslationNamespace.ENTITY,
11441
+ key: TranslatorTranslationEntityKey.USER,
11442
+ count: 2
11443
+ });
10175
11444
  const translation = useTranslation({
10176
- namespace: "vuecs",
10177
- key: "noMore",
10178
- data: { name: useTranslation({
10179
- namespace: "default",
10180
- key: "users"
10181
- }) }
11445
+ namespace: TranslatorTranslationNamespace.VUECS,
11446
+ key: TranslatorTranslationVuecsKey.NO_MORE,
11447
+ data: { name: translationName }
10182
11448
  });
10183
11449
  return () => render({ noMore: { content: translation.value } });
10184
11450
  }
@@ -10204,7 +11470,7 @@ var UserPasswordValidator = class extends Container {
10204
11470
  this.mount("password_repeat", sameAsPassword);
10205
11471
  }
10206
11472
  };
10207
- const AUserPasswordForm = defineComponent({
11473
+ var AUserPasswordForm_vue_vue_type_script_lang_default = defineComponent({
10208
11474
  components: {
10209
11475
  VCFormGroup,
10210
11476
  VCFormInput,
@@ -10252,6 +11518,77 @@ const AUserPasswordForm = defineComponent({
10252
11518
  }
10253
11519
  });
10254
11520
  //#endregion
11521
+ //#region src/components/entities/user/AUserPasswordForm.vue
11522
+ const _hoisted_1$5 = ["for"];
11523
+ function _sfc_render$15(_ctx, _cache, $props, $setup, $data, $options) {
11524
+ const _component_VCFormInput = resolveComponent("VCFormInput");
11525
+ const _component_VCFormGroup = resolveComponent("VCFormGroup");
11526
+ const _component_IFieldValidation = resolveComponent("IFieldValidation");
11527
+ const _component_VCFormSwitch = resolveComponent("VCFormSwitch");
11528
+ const _component_AFormSubmit = resolveComponent("AFormSubmit");
11529
+ return openBlock(), createElementBlock("form", {
11530
+ class: "flex flex-col gap-3",
11531
+ onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"]))
11532
+ }, [
11533
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.password }, {
11534
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
11535
+ label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Password ", -1)])]),
11536
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
11537
+ modelValue: _ctx.v.fields.password.$model.value,
11538
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.password.$model.value = $event,
11539
+ type: _ctx.passwordShow ? "text" : "password",
11540
+ autocomplete: "new-password"
11541
+ }, null, 8, [
11542
+ "modelValue",
11543
+ "onUpdate:modelValue",
11544
+ "type"
11545
+ ])]),
11546
+ _: 2
11547
+ }, 1032, ["validation"])]),
11548
+ _: 1
11549
+ }, 8, ["field"]),
11550
+ createVNode(_component_IFieldValidation, { field: _ctx.v.fields.password_repeat }, {
11551
+ default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
11552
+ label: withCtx(() => [..._cache[3] || (_cache[3] = [createTextVNode(" Password repeat ", -1)])]),
11553
+ default: withCtx(() => [createVNode(_component_VCFormInput, {
11554
+ modelValue: _ctx.v.fields.password_repeat.$model.value,
11555
+ "onUpdate:modelValue": ($event) => _ctx.v.fields.password_repeat.$model.value = $event,
11556
+ type: _ctx.passwordShow ? "text" : "password",
11557
+ autocomplete: "new-password"
11558
+ }, null, 8, [
11559
+ "modelValue",
11560
+ "onUpdate:modelValue",
11561
+ "type"
11562
+ ])]),
11563
+ _: 2
11564
+ }, 1032, ["validation"])]),
11565
+ _: 1
11566
+ }, 8, ["field"]),
11567
+ createElementVNode("div", null, [createVNode(_component_VCFormSwitch, {
11568
+ modelValue: _ctx.passwordShow,
11569
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.passwordShow = $event),
11570
+ label: true
11571
+ }, {
11572
+ label: withCtx(({ id, class: labelClass }) => [createCommentVNode(" Render `<label for=id>` ourselves so clicking the text\n toggles the switch (matches the implicit behavior of\n passing labelContent as a string prop, which the\n component wraps in <label for=id> internally). "), createElementVNode("label", {
11573
+ for: id,
11574
+ class: normalizeClass(labelClass)
11575
+ }, " Password " + toDisplayString(_ctx.passwordShow ? "hide" : "show"), 11, _hoisted_1$5)]),
11576
+ _: 1
11577
+ }, 8, ["modelValue"])]),
11578
+ createElementVNode("div", null, [createVNode(_component_AFormSubmit, {
11579
+ "is-busy": _ctx.busy,
11580
+ "is-editing": true,
11581
+ "is-invalid": _ctx.v.$invalid.value,
11582
+ onSubmit: _ctx.submit
11583
+ }, null, 8, [
11584
+ "is-busy",
11585
+ "is-invalid",
11586
+ "onSubmit"
11587
+ ])])
11588
+ ], 32);
11589
+ }
11590
+ var AUserPasswordForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AUserPasswordForm_vue_vue_type_script_lang_default, [["render", _sfc_render$15]]);
11591
+ //#endregion
10255
11592
  //#region src/components/entities/permission-user/APermissionUserAssignments.vue?vue&type=script&lang.ts
10256
11593
  var APermissionUserAssignments_vue_vue_type_script_lang_default = defineComponent({
10257
11594
  components: {
@@ -10653,10 +11990,10 @@ var entities_exports = /* @__PURE__ */ __exportAll({
10653
11990
  ADatePolicyForm: () => ADatePolicyForm_default,
10654
11991
  AIdentityPolicyForm: () => AIdentityPolicyForm_default,
10655
11992
  AIdentityProvider: () => AIdentityProvider,
10656
- AIdentityProviderForm: () => AIdentityProviderForm,
11993
+ AIdentityProviderForm: () => AIdentityProviderForm_default,
10657
11994
  AIdentityProviderIcon: () => AIdentityProviderIcon_default,
10658
- AIdentityProviderLdapForm: () => AIdentityProviderLdapForm,
10659
- AIdentityProviderOAuth2Form: () => AIdentityProviderOAuth2Form,
11995
+ AIdentityProviderLdapForm: () => AIdentityProviderLdapForm_default,
11996
+ AIdentityProviderOAuth2Form: () => AIdentityProviderOAuth2Form_default,
10660
11997
  AIdentityProviderPreset: () => AIdentityProviderPreset,
10661
11998
  AIdentityProviderProtocol: () => AIdentityProviderProtocol,
10662
11999
  AIdentityProviderRoleAssignment: () => AIdentityProviderRoleAssignment_default,
@@ -10665,7 +12002,7 @@ var entities_exports = /* @__PURE__ */ __exportAll({
10665
12002
  APermission: () => APermission,
10666
12003
  APermissionCheck: () => APermissionCheck,
10667
12004
  APermissionClientAssignments: () => APermissionClientAssignments_default,
10668
- APermissionForm: () => APermissionForm,
12005
+ APermissionForm: () => APermissionForm_default,
10669
12006
  APermissionPolicyAssignment: () => APermissionPolicyAssignment_default,
10670
12007
  APermissionPolicyAssignments: () => APermissionPolicyAssignments_default,
10671
12008
  APermissionPolicyBindingButton: () => APermissionPolicyBindingButton,
@@ -10682,12 +12019,12 @@ var entities_exports = /* @__PURE__ */ __exportAll({
10682
12019
  APolicyTypeBadge: () => APolicyTypeBadge_default,
10683
12020
  APolicyTypePicker: () => APolicyTypePicker_default,
10684
12021
  ARealm: () => ARealm,
10685
- ARealmForm: () => ARealmForm,
12022
+ ARealmForm: () => ARealmForm_default,
10686
12023
  ARealmMatchPolicyForm: () => ARealmMatchPolicyForm_default,
10687
12024
  ARealmPicker: () => ARealmPicker,
10688
12025
  ARealms: () => ARealms,
10689
12026
  ARobot: () => ARobot,
10690
- ARobotForm: () => ARobotForm,
12027
+ ARobotForm: () => ARobotForm_default,
10691
12028
  ARobotPermissionAssignment: () => ARobotPermissionAssignment_default,
10692
12029
  ARobotPermissionAssignments: () => ARobotPermissionAssignments_default,
10693
12030
  ARobotRoleAssignment: () => ARobotRoleAssignment_default,
@@ -10695,7 +12032,7 @@ var entities_exports = /* @__PURE__ */ __exportAll({
10695
12032
  ARobots: () => ARobots,
10696
12033
  ARole: () => ARole,
10697
12034
  ARoleClientAssignments: () => ARoleClientAssignments_default,
10698
- ARoleForm: () => ARoleForm,
12035
+ ARoleForm: () => ARoleForm_default,
10699
12036
  ARolePermissionAssignment: () => ARolePermissionAssignment_default,
10700
12037
  ARolePermissionAssignments: () => ARolePermissionAssignments_default,
10701
12038
  ARoleRobotAssignments: () => ARoleRobotAssignments_default,
@@ -10703,12 +12040,12 @@ var entities_exports = /* @__PURE__ */ __exportAll({
10703
12040
  ARoles: () => ARoles,
10704
12041
  AScope: () => AScope,
10705
12042
  AScopeClientAssignments: () => AScopeClientAssignments_default,
10706
- AScopeForm: () => AScopeForm,
12043
+ AScopeForm: () => AScopeForm_default,
10707
12044
  AScopes: () => AScopes,
10708
12045
  ATimePolicyForm: () => ATimePolicyForm_default,
10709
12046
  AUser: () => AUser,
10710
- AUserForm: () => AUserForm,
10711
- AUserPasswordForm: () => AUserPasswordForm,
12047
+ AUserForm: () => AUserForm_default,
12048
+ AUserPasswordForm: () => AUserPasswordForm_default,
10712
12049
  AUserPermissionAssignment: () => AUserPermissionAssignment_default,
10713
12050
  AUserPermissionAssignments: () => AUserPermissionAssignments_default,
10714
12051
  AUserRoleAssignment: () => AUserRoleAssignment_default,
@@ -10795,6 +12132,26 @@ var Login_vue_vue_type_script_lang_default = defineComponent({
10795
12132
  realm_id: ""
10796
12133
  });
10797
12134
  const v = useValidup(new LoginCredentialsValidator(), form);
12135
+ const translationsDefault = useTranslations([
12136
+ {
12137
+ namespace: TranslatorTranslationNamespace.ACTION,
12138
+ key: TranslatorTranslationActionKey.LOGIN
12139
+ },
12140
+ {
12141
+ namespace: TranslatorTranslationNamespace.FIELD,
12142
+ key: TranslatorTranslationFieldKey.NAME
12143
+ },
12144
+ {
12145
+ namespace: TranslatorTranslationNamespace.FIELD,
12146
+ key: TranslatorTranslationFieldKey.PASSWORD
12147
+ },
12148
+ {
12149
+ namespace: TranslatorTranslationNamespace.ENTITY,
12150
+ key: TranslatorTranslationEntityKey.IDENTITY_PROVIDER,
12151
+ count: 2
12152
+ }
12153
+ ]);
12154
+ const translate = useTranslator();
10798
12155
  const busy = ref(false);
10799
12156
  const realmId = computed(() => {
10800
12157
  if (props.codeRequest && props.codeRequest.realm_id) return props.codeRequest.realm_id;
@@ -10829,7 +12186,10 @@ var Login_vue_vue_type_script_lang_default = defineComponent({
10829
12186
  });
10830
12187
  emit("done");
10831
12188
  } catch (e) {
10832
- emit("failed", e instanceof Error ? e.message : "The login operation failed");
12189
+ emit("failed", e instanceof Error ? e.message : await translate({
12190
+ namespace: TranslatorTranslationNamespace.CLIENT,
12191
+ key: TranslatorTranslationClientKey.LOGIN_FAILED
12192
+ }));
10833
12193
  }
10834
12194
  };
10835
12195
  const buildIdentityProviderURL = (id) => {
@@ -10852,16 +12212,19 @@ var Login_vue_vue_type_script_lang_default = defineComponent({
10852
12212
  }),
10853
12213
  identityProviderQuery,
10854
12214
  identityProviderRef,
10855
- buildIdentityProviderURL
12215
+ buildIdentityProviderURL,
12216
+ translationsDefault
10856
12217
  };
10857
12218
  }
10858
12219
  });
10859
12220
  //#endregion
10860
12221
  //#region src/components/workflows/Login.vue
10861
- const _hoisted_1$4 = { class: "flex flex-row" };
10862
- const _hoisted_2$4 = ["href"];
10863
- const _hoisted_3$2 = { class: "flex flex-col" };
10864
- const _hoisted_4$1 = { class: "text-center mb-1" };
12222
+ const _hoisted_1$4 = { class: "text-center" };
12223
+ const _hoisted_2$4 = { class: "font-bold" };
12224
+ const _hoisted_3$2 = { class: "flex flex-row" };
12225
+ const _hoisted_4$1 = ["href"];
12226
+ const _hoisted_5$1 = { class: "flex flex-col" };
12227
+ const _hoisted_6$1 = { class: "text-center mb-1" };
10865
12228
  function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
10866
12229
  const _component_VCFormInput = resolveComponent("VCFormInput");
10867
12230
  const _component_VCFormGroup = resolveComponent("VCFormGroup");
@@ -10872,10 +12235,10 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
10872
12235
  const _component_APagination = resolveComponent("APagination");
10873
12236
  const _component_AIdentityProviderIcon = resolveComponent("AIdentityProviderIcon");
10874
12237
  const _component_AIdentityProviders = resolveComponent("AIdentityProviders");
10875
- return openBlock(), createElementBlock("div", null, [_cache[4] || (_cache[4] = createElementVNode("div", { class: "text-center" }, [createElementVNode("h1", { class: "font-bold" }, " Login ")], -1)), createElementVNode("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
12238
+ return openBlock(), createElementBlock("div", null, [createElementVNode("div", _hoisted_1$4, [createElementVNode("h1", _hoisted_2$4, toDisplayString(_ctx.translationsDefault.login), 1)]), createElementVNode("form", { onSubmit: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.submit && _ctx.submit(...args), ["prevent"])) }, [
10876
12239
  createVNode(_component_IFieldValidation, { field: _ctx.v.fields.name }, {
10877
12240
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
10878
- label: withCtx(() => [..._cache[1] || (_cache[1] = [createTextVNode(" Name ", -1)])]),
12241
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.name), 1)]),
10879
12242
  default: withCtx(() => [createVNode(_component_VCFormInput, {
10880
12243
  modelValue: _ctx.v.fields.name.$model.value,
10881
12244
  "onUpdate:modelValue": ($event) => _ctx.v.fields.name.$model.value = $event
@@ -10886,7 +12249,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
10886
12249
  }, 8, ["field"]),
10887
12250
  createVNode(_component_IFieldValidation, { field: _ctx.v.fields.password }, {
10888
12251
  default: withCtx(({ value }) => [createVNode(_component_VCFormGroup, { validation: value }, {
10889
- label: withCtx(() => [..._cache[2] || (_cache[2] = [createTextVNode(" Password ", -1)])]),
12252
+ label: withCtx(() => [createTextVNode(toDisplayString(_ctx.translationsDefault.password), 1)]),
10890
12253
  default: withCtx(() => [createVNode(_component_VCFormInput, {
10891
12254
  modelValue: _ctx.v.fields.password.$model.value,
10892
12255
  "onUpdate:modelValue": ($event) => _ctx.v.fields.password.$model.value = $event,
@@ -10898,10 +12261,10 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
10898
12261
  }, 8, ["field"]),
10899
12262
  createCommentVNode("\n <VCFormSubmit> from form-controls 2.x was dropped in\n @vuecs/forms 4.x. The 4.x replacement is the\n useSubmitButton() composable (see setup() above) which\n returns a v-bind-ready computed binding ({ type, label,\n iconLeft, color, loading, disabled }) for VCButton. The\n parent <form @submit.prevent=\"submit\"> catches the\n submission — no @click handler needed here. We override\n `label` to \"Login\" because the composable's default\n (sourced from the vuecs defaults manager) is \"Create\".\n "),
10900
12263
  createVNode(_component_VCButton, mergeProps(_ctx.submitButton, {
10901
- label: "Login",
12264
+ label: _ctx.translationsDefault.login,
10902
12265
  class: "w-full"
10903
- }), null, 16),
10904
- _cache[3] || (_cache[3] = createElementVNode("hr", null, null, -1)),
12266
+ }), null, 16, ["label"]),
12267
+ _cache[1] || (_cache[1] = createElementVNode("hr", null, null, -1)),
10905
12268
  !_ctx.codeRequest || !_ctx.codeRequest.realm_id ? (openBlock(), createBlock(_component_ARealmPicker, {
10906
12269
  key: 0,
10907
12270
  value: _ctx.form.realm_id,
@@ -10912,7 +12275,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
10912
12275
  query: _ctx.identityProviderQuery,
10913
12276
  footer: false
10914
12277
  }, {
10915
- header: withCtx(() => [createVNode(_component_ATitle, { text: "Identity Providers" })]),
12278
+ header: withCtx(() => [createVNode(_component_ATitle, { text: _ctx.translationsDefault.identityProvider }, null, 8, ["text"])]),
10916
12279
  footer: withCtx((props) => [createVNode(_component_APagination, {
10917
12280
  busy: props.busy,
10918
12281
  meta: props.meta,
@@ -10924,14 +12287,14 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
10924
12287
  "load",
10925
12288
  "total"
10926
12289
  ])]),
10927
- body: withCtx((props) => [createElementVNode("div", _hoisted_1$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.data, (item, key) => {
12290
+ body: withCtx((props) => [createElementVNode("div", _hoisted_3$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.data, (item, key) => {
10928
12291
  return openBlock(), createElementBlock("div", { key }, [createElementVNode("a", {
10929
12292
  href: _ctx.buildIdentityProviderURL(item.id),
10930
12293
  class: "btn btn-dark btn-xs p-2 me-1 identity-provider-box bg-fg"
10931
- }, [createElementVNode("div", _hoisted_3$2, [createElementVNode("div", _hoisted_4$1, [createVNode(_component_AIdentityProviderIcon, {
12294
+ }, [createElementVNode("div", _hoisted_5$1, [createElementVNode("div", _hoisted_6$1, [createVNode(_component_AIdentityProviderIcon, {
10932
12295
  class: "text-2xl",
10933
12296
  entity: item
10934
- }, null, 8, ["entity"])]), createElementVNode("div", null, toDisplayString(item.name), 1)])], 8, _hoisted_2$4)]);
12297
+ }, null, 8, ["entity"])]), createElementVNode("div", null, toDisplayString(item.name), 1)])], 8, _hoisted_4$1)]);
10935
12298
  }), 128))])]),
10936
12299
  _: 1
10937
12300
  }, 8, ["query"])
@@ -10983,6 +12346,10 @@ var AuthorizeScopes_vue_vue_type_script_lang_default = defineComponent({
10983
12346
  },
10984
12347
  setup(props) {
10985
12348
  const httpClient = injectHTTPClient();
12349
+ const translationsClient = useTranslationsForNamespace(TranslatorTranslationNamespace.CLIENT, [{
12350
+ key: TranslatorTranslationClientKey.SCOPE_GRANT_INTRO,
12351
+ data: { client: props.client.name }
12352
+ }]);
10986
12353
  const scopesRequestedNormalized = computed(() => {
10987
12354
  if (!props.scopesRequested) return [];
10988
12355
  return Array.isArray(props.scopesRequested) ? props.scopesRequested : deserializeOAuth2Scope(props.scopesRequested);
@@ -11004,7 +12371,8 @@ var AuthorizeScopes_vue_vue_type_script_lang_default = defineComponent({
11004
12371
  Promise.resolve().then(() => resolveScopesAvailable());
11005
12372
  return {
11006
12373
  scopesRequestedNormalized,
11007
- scopesAvailableNormalized
12374
+ scopesAvailableNormalized,
12375
+ translationsClient
11008
12376
  };
11009
12377
  }
11010
12378
  });
@@ -11014,11 +12382,7 @@ const _hoisted_1$2 = { key: 0 };
11014
12382
  const _hoisted_2$2 = { class: "flex-col" };
11015
12383
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
11016
12384
  const _component_AuthorizeScope = resolveComponent("AuthorizeScope");
11017
- return _ctx.scopesAvailableNormalized.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$2, [createElementVNode("div", null, [
11018
- _cache[0] || (_cache[0] = createTextVNode(" This will allow the ", -1)),
11019
- createElementVNode("strong", null, toDisplayString(_ctx.client.name), 1),
11020
- _cache[1] || (_cache[1] = createTextVNode(" application to ", -1))
11021
- ]), createElementVNode("div", _hoisted_2$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.scopesAvailableNormalized, (item) => {
12385
+ return _ctx.scopesAvailableNormalized.length > 0 ? (openBlock(), createElementBlock("div", _hoisted_1$2, [createElementVNode("div", null, toDisplayString(_ctx.translationsClient.scopeGrantIntro), 1), createElementVNode("div", _hoisted_2$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.scopesAvailableNormalized, (item) => {
11022
12386
  return openBlock(), createBlock(_component_AuthorizeScope, {
11023
12387
  key: item.id,
11024
12388
  entity: item,
@@ -11044,6 +12408,28 @@ var AuthorizeForm_vue_vue_type_script_lang_default = defineComponent({
11044
12408
  },
11045
12409
  setup(props) {
11046
12410
  const httpClient = injectHTTPClient();
12411
+ const translationsDefault = useTranslations([
12412
+ {
12413
+ namespace: TranslatorTranslationNamespace.COMMON,
12414
+ key: TranslatorTranslationCommonKey.APPLICATION
12415
+ },
12416
+ {
12417
+ namespace: TranslatorTranslationNamespace.ACTION,
12418
+ key: TranslatorTranslationActionKey.ABORT
12419
+ },
12420
+ {
12421
+ namespace: TranslatorTranslationNamespace.ACTION,
12422
+ key: TranslatorTranslationActionKey.AUTHORIZE
12423
+ }
12424
+ ]);
12425
+ const translationsClient = useTranslationsForNamespace(TranslatorTranslationNamespace.CLIENT, [
12426
+ { key: TranslatorTranslationClientKey.ONCE_AUTHORIZED_REDIRECT },
12427
+ { key: TranslatorTranslationClientKey.ACTIVE_SINCE },
12428
+ {
12429
+ key: TranslatorTranslationClientKey.GOVERNED_BY,
12430
+ data: { client: props.client.name }
12431
+ }
12432
+ ]);
11047
12433
  const abort = () => {
11048
12434
  const url = new URL(`${props.codeRequest.redirect_uri}`);
11049
12435
  url.searchParams.set("error", "access_denied");
@@ -11065,7 +12451,9 @@ var AuthorizeForm_vue_vue_type_script_lang_default = defineComponent({
11065
12451
  };
11066
12452
  return {
11067
12453
  authorize,
11068
- abort
12454
+ abort,
12455
+ translationsDefault,
12456
+ translationsClient
11069
12457
  };
11070
12458
  }
11071
12459
  });
@@ -11073,22 +12461,23 @@ var AuthorizeForm_vue_vue_type_script_lang_default = defineComponent({
11073
12461
  //#region src/components/workflows/authorize/AuthorizeForm.vue
11074
12462
  const _hoisted_1$1 = { class: "flex-col flex gap-2" };
11075
12463
  const _hoisted_2$1 = { class: "text-center" };
11076
- const _hoisted_3$1 = { class: "font-bold" };
11077
- const _hoisted_4 = { class: "mt-auto" };
11078
- const _hoisted_5 = { class: "flex flex-row" };
11079
- const _hoisted_6 = { class: "ms-1" };
11080
- const _hoisted_7 = { class: "flex flex-row" };
11081
- const _hoisted_8 = { class: "ms-1" };
11082
- const _hoisted_9 = { class: "flex flex-row" };
11083
- const _hoisted_10 = { class: "ms-1" };
11084
- const _hoisted_11 = { class: "row" };
11085
- const _hoisted_12 = { class: "col-6" };
12464
+ const _hoisted_3$1 = { class: "text-fg-muted mb-1" };
12465
+ const _hoisted_4 = { class: "font-bold" };
12466
+ const _hoisted_5 = { class: "mt-auto" };
12467
+ const _hoisted_6 = { class: "flex flex-row" };
12468
+ const _hoisted_7 = { class: "ms-1" };
12469
+ const _hoisted_8 = { class: "flex flex-row" };
12470
+ const _hoisted_9 = { class: "ms-1" };
12471
+ const _hoisted_10 = { class: "flex flex-row" };
12472
+ const _hoisted_11 = { class: "ms-1" };
12473
+ const _hoisted_12 = { class: "row" };
11086
12474
  const _hoisted_13 = { class: "col-6" };
12475
+ const _hoisted_14 = { class: "col-6" };
11087
12476
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
11088
12477
  const _component_AuthorizeScopes = resolveComponent("AuthorizeScopes");
11089
12478
  const _component_VCIcon = resolveComponent("VCIcon");
11090
12479
  return openBlock(), createElementBlock("div", _hoisted_1$1, [
11091
- createElementVNode("div", _hoisted_2$1, [_cache[2] || (_cache[2] = createElementVNode("h5", { class: "text-fg-muted mb-1" }, " Application ", -1)), createElementVNode("h1", _hoisted_3$1, toDisplayString(_ctx.client.name), 1)]),
12480
+ createElementVNode("div", _hoisted_2$1, [createElementVNode("h5", _hoisted_3$1, toDisplayString(_ctx.translationsDefault.application), 1), createElementVNode("h1", _hoisted_4, toDisplayString(_ctx.client.name), 1)]),
11092
12481
  createVNode(_component_AuthorizeScopes, {
11093
12482
  client: _ctx.client,
11094
12483
  "scopes-requested": _ctx.codeRequest.scope,
@@ -11098,24 +12487,20 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
11098
12487
  "scopes-requested",
11099
12488
  "scopes-available"
11100
12489
  ]),
11101
- createElementVNode("div", _hoisted_4, [
11102
- createElementVNode("div", _hoisted_5, [createElementVNode("div", null, [createVNode(_component_VCIcon, { name: "fa6-solid:link" })]), createElementVNode("div", _hoisted_6, [createElementVNode("small", null, [_cache[3] || (_cache[3] = createTextVNode(" Once authorized, you will be redirected to: ", -1)), createElementVNode("strong", null, toDisplayString(_ctx.codeRequest.redirect_uri), 1)])])]),
11103
- createElementVNode("div", _hoisted_7, [createElementVNode("div", null, [createVNode(_component_VCIcon, { name: "fa6-solid:lock" })]), createElementVNode("div", _hoisted_8, [createElementVNode("small", null, [
11104
- _cache[4] || (_cache[4] = createTextVNode(" This application is governed by the ", -1)),
11105
- createElementVNode("strong", null, toDisplayString(_ctx.client.name), 1),
11106
- _cache[5] || (_cache[5] = createTextVNode(" application's Privacy Policy and Terms of Service. ", -1))
11107
- ])])]),
11108
- createElementVNode("div", _hoisted_9, [createElementVNode("div", null, [createVNode(_component_VCIcon, { name: "fa6-solid:clock" })]), createElementVNode("div", _hoisted_10, [createElementVNode("small", null, " Active since " + toDisplayString(_ctx.client.created_at), 1)])])
12490
+ createElementVNode("div", _hoisted_5, [
12491
+ createElementVNode("div", _hoisted_6, [createElementVNode("div", null, [createVNode(_component_VCIcon, { name: "fa6-solid:link" })]), createElementVNode("div", _hoisted_7, [createElementVNode("small", null, [createTextVNode(toDisplayString(_ctx.translationsClient.onceAuthorizedRedirect) + " ", 1), createElementVNode("strong", null, toDisplayString(_ctx.codeRequest.redirect_uri), 1)])])]),
12492
+ createElementVNode("div", _hoisted_8, [createElementVNode("div", null, [createVNode(_component_VCIcon, { name: "fa6-solid:lock" })]), createElementVNode("div", _hoisted_9, [createElementVNode("small", null, toDisplayString(_ctx.translationsClient.governedBy), 1)])]),
12493
+ createElementVNode("div", _hoisted_10, [createElementVNode("div", null, [createVNode(_component_VCIcon, { name: "fa6-solid:clock" })]), createElementVNode("div", _hoisted_11, [createElementVNode("small", null, toDisplayString(_ctx.translationsClient.activeSince) + " " + toDisplayString(_ctx.client.created_at), 1)])])
11109
12494
  ]),
11110
- createElementVNode("div", _hoisted_11, [createElementVNode("div", _hoisted_12, [createElementVNode("button", {
12495
+ createElementVNode("div", _hoisted_12, [createElementVNode("div", _hoisted_13, [createElementVNode("button", {
11111
12496
  type: "button",
11112
12497
  class: "btn w-full btn-secondary",
11113
12498
  onClick: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.abort && _ctx.abort(...args), ["prevent"]))
11114
- }, " Abort ")]), createElementVNode("div", _hoisted_13, [createElementVNode("button", {
12499
+ }, toDisplayString(_ctx.translationsDefault.abort), 1)]), createElementVNode("div", _hoisted_14, [createElementVNode("button", {
11115
12500
  type: "button",
11116
12501
  class: "btn w-full btn-primary",
11117
12502
  onClick: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.authorize && _ctx.authorize(...args), ["prevent"]))
11118
- }, " Authorize ")])])
12503
+ }, toDisplayString(_ctx.translationsDefault.authorize), 1)])])
11119
12504
  ]);
11120
12505
  }
11121
12506
  var AuthorizeForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(AuthorizeForm_vue_vue_type_script_lang_default, [["render", _sfc_render$1]]);
@@ -11168,6 +12553,10 @@ var Authorize_default = defineComponent({
11168
12553
  const { loggedIn } = storeToRefs$1(injectStore());
11169
12554
  const error = ref(null);
11170
12555
  const client = ref(null);
12556
+ const loadingText = useTranslation({
12557
+ namespace: TranslatorTranslationNamespace.COMMON,
12558
+ key: TranslatorTranslationCommonKey.LOADING
12559
+ });
11171
12560
  const resolve = async () => {
11172
12561
  if (props.error) {
11173
12562
  error.value = props.error;
@@ -11189,7 +12578,7 @@ var Authorize_default = defineComponent({
11189
12578
  if (!props.codeRequest) return [];
11190
12579
  if (!loggedIn.value) return wrapChild(h(Suspense, {}, {
11191
12580
  default: () => h(Login_default, { codeRequest: props.codeRequest }),
11192
- fallback: () => h(AuthorizeText_default, { message: "Loading..." })
12581
+ fallback: () => h(AuthorizeText_default, { message: loadingText.value })
11193
12582
  }));
11194
12583
  if (!client.value) return [];
11195
12584
  return wrapChild(h(Suspense, {}, {
@@ -11198,7 +12587,7 @@ var Authorize_default = defineComponent({
11198
12587
  client: client.value,
11199
12588
  scopes: props.scopes
11200
12589
  }),
11201
- fallback: () => h(AuthorizeText_default, { message: "Loading..." })
12590
+ fallback: () => h(AuthorizeText_default, { message: loadingText.value })
11202
12591
  }));
11203
12592
  };
11204
12593
  }
@@ -11207,6 +12596,6 @@ var Authorize_default = defineComponent({
11207
12596
  //#region src/index.ts
11208
12597
  var src_default = { install };
11209
12598
  //#endregion
11210
- export { AAttributeNamesPolicyForm_default as AAttributeNamesPolicyForm, Authorize_default as AAuthorize, AuthorizeText_default as AAuthorizeText, AClient, AClientForm_default as AClientForm, AClientPermissionAssignment_default as AClientPermissionAssignment, AClientPermissionAssignments_default as AClientPermissionAssignments, AClientPicker, AClientRoleAssignment_default as AClientRoleAssignment, AClientRoleAssignments_default as AClientRoleAssignments, AClientScope, AClientScopeAssignment_default as AClientScopeAssignment, AClientScopeAssignments_default as AClientScopeAssignments, AClientScopes, AClients, ACompositePolicyForm_default as ACompositePolicyForm, ADatePolicyForm_default as ADatePolicyForm, AEntityDelete, AFormInputList_default as AFormInputList, AFormInputListItem_default as AFormInputListItem, AFormSubmit, AIdentityPolicyForm_default as AIdentityPolicyForm, AIdentityProvider, AIdentityProviderForm, AIdentityProviderIcon_default as AIdentityProviderIcon, AIdentityProviderLdapForm, AIdentityProviderOAuth2Form, AIdentityProviderPreset, AIdentityProviderProtocol, AIdentityProviderRoleAssignment_default as AIdentityProviderRoleAssignment, AIdentityProviderRoleAssignments_default as AIdentityProviderRoleAssignments, AIdentityProviders, Login_default as ALogin, APagination, APermission, APermissionCheck, APermissionClientAssignments_default as APermissionClientAssignments, APermissionForm, APermissionPolicyAssignment_default as APermissionPolicyAssignment, APermissionPolicyAssignments_default as APermissionPolicyAssignments, APermissionPolicyBindingButton, APermissionRobotAssignments_default as APermissionRobotAssignments, APermissionRoleAssignments_default as APermissionRoleAssignments, APermissionUserAssignments_default as APermissionUserAssignments, APermissions, APolicies, APolicy, APolicyDetailNav_default as APolicyDetailNav, APolicyForm_default as APolicyForm, APolicyInlineInfo_default as APolicyInlineInfo, APolicySummary_default as APolicySummary, APolicyTypeBadge_default as APolicyTypeBadge, APolicyTypePicker_default as APolicyTypePicker, ARealm, ARealmForm, ARealmMatchPolicyForm_default as ARealmMatchPolicyForm, ARealmPicker, ARealms, ARobot, ARobotForm, ARobotPermissionAssignment_default as ARobotPermissionAssignment, ARobotPermissionAssignments_default as ARobotPermissionAssignments, ARobotRoleAssignment_default as ARobotRoleAssignment, ARobotRoleAssignments_default as ARobotRoleAssignments, ARobots, ARole, ARoleClientAssignments_default as ARoleClientAssignments, ARoleForm, ARolePermissionAssignment_default as ARolePermissionAssignment, ARolePermissionAssignments_default as ARolePermissionAssignments, ARoleRobotAssignments_default as ARoleRobotAssignments, ARoleUserAssignments_default as ARoleUserAssignments, ARoles, AScope, AScopeClientAssignments_default as AScopeClientAssignments, AScopeForm, AScopes, ASearch, ATimePolicyForm_default as ATimePolicyForm, ATitle, AToggleButton_default as AToggleButton, AUser, AUserForm, AUserPasswordForm, AUserPermissionAssignment_default as AUserPermissionAssignment, AUserPermissionAssignments_default as AUserPermissionAssignments, AUserRoleAssignment_default as AUserRoleAssignment, AUserRoleAssignments_default as AUserRoleAssignments, AUsers, EntityRecordError, HTTPClientSymbol, LanguageSwitcherDropdown, ListHandlers, STORE_ID, SlotName, SocketClientSymbol, StoreDispatcherEventName, TranslatorTranslationClientKey, TranslatorTranslationDefaultKey, TranslatorTranslationNamespace, TranslatorTranslationVuecsKey, assignFormProperties, buildEntityVSlotProps, buildFormCheckbox, buildFormGroup, buildFormInput, buildFormInputText, buildFormSelect, buildFormSubmit, buildFormSubmitWithTranslations, buildFormSwitch, buildFormTextarea, buildSubmitButtonDefaults, createFormSubmitTranslations, createPermissionCheckerReactiveFn, createStore, createStoreDispatcher, src_default as default, defineEntityCollectionManager, defineEntityCollectionVEmitOptions, defineEntityCollectionVProps, defineEntityManager, defineEntityPicker, defineEntityPickerVEmitOptions, defineEntityPickerVProps, defineEntitySocketManager, defineEntityVEmitOptions, defineEntityVProps, extractValidupResultsFromChild, getSeverity, hasHTTPClient, hasHTTPClientAuthenticationHook, hasNormalizedSlot, hasStoreFactory, inject, injectHTTPClient, injectHTTPClientAuthenticationHook, injectSocketManager, injectStore, injectStoreDispatcher, injectStoreFactory, injectTranslatorLocale, install, installHTTPClient, installHTTPClientAuthenticationHook, installSocketManager, installStore, installTranslator, isQuerySortedDescByDate, isSocketManagerUsable, mergeEntityCollectionRenderOptions, normalizeSlot, onChange, provide, provideHTTPClient, provideHTTPClientAuthenticationHook, provideSocketManager, provideStoreDispatcher, provideStoreFactory, renderToggleButton, storeToRefs, useIsEditing, usePermissionCheck, useTranslation, useTranslationsForComposable, useTranslationsForField, useTranslationsForNamespace, useUpdatedAt, wrapFnWithBusyState };
12599
+ export { AAttributeNamesPolicyForm_default as AAttributeNamesPolicyForm, Authorize_default as AAuthorize, AuthorizeText_default as AAuthorizeText, AClient, AClientForm_default as AClientForm, AClientPermissionAssignment_default as AClientPermissionAssignment, AClientPermissionAssignments_default as AClientPermissionAssignments, AClientPicker, AClientRoleAssignment_default as AClientRoleAssignment, AClientRoleAssignments_default as AClientRoleAssignments, AClientScope, AClientScopeAssignment_default as AClientScopeAssignment, AClientScopeAssignments_default as AClientScopeAssignments, AClientScopes, AClients, ACompositePolicyForm_default as ACompositePolicyForm, ADatePolicyForm_default as ADatePolicyForm, AEntityDelete, AFormInputList_default as AFormInputList, AFormInputListItem_default as AFormInputListItem, AFormSubmit, AIdentityPolicyForm_default as AIdentityPolicyForm, AIdentityProvider, AIdentityProviderForm_default as AIdentityProviderForm, AIdentityProviderIcon_default as AIdentityProviderIcon, AIdentityProviderLdapForm_default as AIdentityProviderLdapForm, AIdentityProviderOAuth2Form_default as AIdentityProviderOAuth2Form, AIdentityProviderPreset, AIdentityProviderProtocol, AIdentityProviderRoleAssignment_default as AIdentityProviderRoleAssignment, AIdentityProviderRoleAssignments_default as AIdentityProviderRoleAssignments, AIdentityProviders, Login_default as ALogin, ANameInput_default as ANameInput, APagination, APermission, APermissionCheck, APermissionClientAssignments_default as APermissionClientAssignments, APermissionForm_default as APermissionForm, APermissionPolicyAssignment_default as APermissionPolicyAssignment, APermissionPolicyAssignments_default as APermissionPolicyAssignments, APermissionPolicyBindingButton, APermissionRobotAssignments_default as APermissionRobotAssignments, APermissionRoleAssignments_default as APermissionRoleAssignments, APermissionUserAssignments_default as APermissionUserAssignments, APermissions, APolicies, APolicy, APolicyDetailNav_default as APolicyDetailNav, APolicyForm_default as APolicyForm, APolicyInlineInfo_default as APolicyInlineInfo, APolicySummary_default as APolicySummary, APolicyTypeBadge_default as APolicyTypeBadge, APolicyTypePicker_default as APolicyTypePicker, ARealm, ARealmForm_default as ARealmForm, ARealmMatchPolicyForm_default as ARealmMatchPolicyForm, ARealmPicker, ARealms, ARobot, ARobotForm_default as ARobotForm, ARobotPermissionAssignment_default as ARobotPermissionAssignment, ARobotPermissionAssignments_default as ARobotPermissionAssignments, ARobotRoleAssignment_default as ARobotRoleAssignment, ARobotRoleAssignments_default as ARobotRoleAssignments, ARobots, ARole, ARoleClientAssignments_default as ARoleClientAssignments, ARoleForm_default as ARoleForm, ARolePermissionAssignment_default as ARolePermissionAssignment, ARolePermissionAssignments_default as ARolePermissionAssignments, ARoleRobotAssignments_default as ARoleRobotAssignments, ARoleUserAssignments_default as ARoleUserAssignments, ARoles, AScope, AScopeClientAssignments_default as AScopeClientAssignments, AScopeForm_default as AScopeForm, AScopes, ASearch, ASecretInput_default as ASecretInput, ATimePolicyForm_default as ATimePolicyForm, ATitle, AToggleButton_default as AToggleButton, AUser, AUserForm_default as AUserForm, AUserPasswordForm_default as AUserPasswordForm, AUserPermissionAssignment_default as AUserPermissionAssignment, AUserPermissionAssignments_default as AUserPermissionAssignments, AUserRoleAssignment_default as AUserRoleAssignment, AUserRoleAssignments_default as AUserRoleAssignments, AUsers, EntityRecordError, HTTPClientSymbol, LanguageSwitcherDropdown, ListHandlers, STORE_ID, SlotName, SocketClientSymbol, StoreDispatcherEventName, assignFormProperties, buildEntityVSlotProps, buildFormCheckbox, buildFormGroup, buildFormInput, buildFormInputText, buildFormSelect, buildFormSubmit, buildFormSubmitWithTranslations, buildFormSwitch, buildFormTextarea, buildSubmitButtonDefaults, createFormSubmitTranslations, createPermissionCheckerReactiveFn, createStore, createStoreDispatcher, src_default as default, defineEntityCollectionManager, defineEntityCollectionVEmitOptions, defineEntityCollectionVProps, defineEntityManager, defineEntityPicker, defineEntityPickerVEmitOptions, defineEntityPickerVProps, defineEntitySocketManager, defineEntityVEmitOptions, defineEntityVProps, extractValidupResultsFromChild, getSeverity, hasHTTPClient, hasHTTPClientAuthenticationHook, hasNormalizedSlot, hasStoreFactory, inject, injectHTTPClient, injectHTTPClientAuthenticationHook, injectSocketManager, injectStore, injectStoreDispatcher, injectStoreFactory, injectTranslatorLocale, install, installHTTPClient, installHTTPClientAuthenticationHook, installSocketManager, installStore, installTranslator, isQuerySortedDescByDate, isSocketManagerUsable, mergeEntityCollectionRenderOptions, normalizeSlot, onChange, provide, provideHTTPClient, provideHTTPClientAuthenticationHook, provideSocketManager, provideStoreDispatcher, provideStoreFactory, renderToggleButton, storeToRefs, useIsEditing, usePermissionCheck, useTranslation, useTranslations, useTranslationsForComposable, useTranslationsForField, useTranslationsForNamespace, useTranslator, useUpdatedAt, wrapFnWithBusyState };
11211
12600
 
11212
12601
  //# sourceMappingURL=index.mjs.map