@authup/client-web-kit 1.0.0-beta.25 → 1.0.0-beta.27

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 (61) hide show
  1. package/LICENSE +1 -1
  2. package/dist/components/entities/client/AClientForm.d.ts +1 -1
  3. package/dist/components/entities/identity-provider/AIdentityProviderForm.d.ts +1 -11
  4. package/dist/components/entities/identity-provider/AIdentityProviderForm.d.ts.map +1 -1
  5. package/dist/components/entities/identity-provider/AIdentityProviderLdapForm.d.ts +1 -1
  6. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2Form.d.ts +1 -10
  7. package/dist/components/entities/identity-provider/AIdentityProviderOAuth2Form.d.ts.map +1 -1
  8. package/dist/components/entities/permission/APermissionCheck.d.ts +5 -5
  9. package/dist/components/entities/permission/APermissionCheck.d.ts.map +1 -1
  10. package/dist/components/entities/policy/APolicyBasicForm.vue.d.ts +3 -3
  11. package/dist/components/entities/policy/APolicyForm.vue.d.ts +4 -4
  12. package/dist/components/entities/policy/attribute-names/AAttributeNamesPolicyForm.vue.d.ts +3 -3
  13. package/dist/components/entities/policy/composite/ACompositePolicyForm.vue.d.ts +3 -3
  14. package/dist/components/entities/policy/date/ADatePolicyForm.vue.d.ts +3 -3
  15. package/dist/components/entities/policy/identity/AIdentityPolicyForm.vue.d.ts +3 -3
  16. package/dist/components/entities/policy/realm-match/ARealmMatchPolicyForm.vue.d.ts +6 -6
  17. package/dist/components/entities/policy/time/ATimePolicyForm.vue.d.ts +3 -3
  18. package/dist/components/entities/robot/ARobotForm.d.ts +1 -1
  19. package/dist/components/entities/user/AUserForm.d.ts +1 -1
  20. package/dist/components/index.d.ts +1 -0
  21. package/dist/components/index.d.ts.map +1 -1
  22. package/dist/components/utility/AFormSubmit.d.ts +1 -1
  23. package/dist/components/utility/form-input-list/AFormInputList.vue.d.ts +3 -3
  24. package/dist/components/utility/form-input-list/AFormInputListItem.vue.d.ts +3 -3
  25. package/dist/components/workflows/Login.vue.d.ts +353 -0
  26. package/dist/components/workflows/Login.vue.d.ts.map +1 -0
  27. package/dist/components/workflows/authorize/Authorize.vue.d.ts +488 -0
  28. package/dist/components/workflows/authorize/Authorize.vue.d.ts.map +1 -0
  29. package/dist/components/workflows/authorize/AuthorizeForm.vue.d.ts +83 -0
  30. package/dist/components/workflows/authorize/AuthorizeForm.vue.d.ts.map +1 -0
  31. package/dist/components/workflows/authorize/AuthorizeScope.vue.d.ts +27 -0
  32. package/dist/components/workflows/authorize/AuthorizeScope.vue.d.ts.map +1 -0
  33. package/dist/components/workflows/authorize/AuthorizeScopes.vue.d.ts +54 -0
  34. package/dist/components/workflows/authorize/AuthorizeScopes.vue.d.ts.map +1 -0
  35. package/dist/components/workflows/authorize/AuthorizeText.vue.d.ts +21 -0
  36. package/dist/components/workflows/authorize/AuthorizeText.vue.d.ts.map +1 -0
  37. package/dist/components/workflows/authorize/helpers.d.ts +10 -0
  38. package/dist/components/workflows/authorize/helpers.d.ts.map +1 -0
  39. package/dist/components/workflows/authorize/index.d.ts +3 -0
  40. package/dist/components/workflows/authorize/index.d.ts.map +1 -0
  41. package/dist/components/workflows/index.d.ts +3 -0
  42. package/dist/components/workflows/index.d.ts.map +1 -0
  43. package/dist/core/http-client/authentication-hook/index.d.ts +3 -0
  44. package/dist/core/http-client/authentication-hook/index.d.ts.map +1 -0
  45. package/dist/core/http-client/authentication-hook/install.d.ts +4 -0
  46. package/dist/core/http-client/authentication-hook/install.d.ts.map +1 -0
  47. package/dist/core/http-client/authentication-hook/singleton.d.ts +6 -0
  48. package/dist/core/http-client/authentication-hook/singleton.d.ts.map +1 -0
  49. package/dist/core/http-client/authentication-hook/types.d.ts +7 -0
  50. package/dist/core/http-client/authentication-hook/types.d.ts.map +1 -0
  51. package/dist/core/http-client/index.d.ts +1 -0
  52. package/dist/core/http-client/index.d.ts.map +1 -1
  53. package/dist/core/http-client/install.d.ts.map +1 -1
  54. package/dist/core/http-client/singleton.d.ts.map +1 -1
  55. package/dist/index.cjs +1311 -428
  56. package/dist/index.cjs.map +1 -1
  57. package/dist/index.css +20 -0
  58. package/dist/index.mjs +1189 -313
  59. package/dist/index.mjs.map +1 -1
  60. package/dist/module.d.ts.map +1 -1
  61. package/package.json +22 -22
package/dist/index.cjs CHANGED
@@ -2,29 +2,228 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var coreKit = require('@authup/core-kit');
5
+ var installFormControl = require('@vuecs/form-controls');
6
+ var smob = require('smob');
6
7
  var vue = require('vue');
8
+ var installPagination = require('@vuecs/pagination');
9
+ var coreKit = require('@authup/core-kit');
7
10
  var vuelidate = require('@ilingo/vuelidate');
8
- var formControls = require('@vuecs/form-controls');
9
11
  var useVuelidate = require('@vuelidate/core');
10
12
  var validators = require('@vuelidate/validators');
11
13
  var listControls = require('@vuecs/list-controls');
12
14
  var coreHttpKit = require('@authup/core-http-kit');
13
15
  var pinia = require('pinia');
14
- var specs = require('@authup/specs');
15
16
  var access = require('@authup/access');
16
- var smob = require('smob');
17
+ var specs = require('@authup/specs');
17
18
  var kit = require('@authup/kit');
18
19
  var rapiq = require('rapiq');
19
20
  var coreRealtimeKit = require('@authup/core-realtime-kit');
20
- var pagination = require('@vuecs/pagination');
21
21
  var Cookie = require('universal-cookie');
22
22
 
23
- var _sfc_main$b = vue.defineComponent({
23
+ /*
24
+ * Copyright (c) 2024-2024.
25
+ * Author Peter Placzek (tada5hi)
26
+ * For the full copyright and license information,
27
+ * view the LICENSE file that was distributed with this source code.
28
+ */ const BRACKET_NUMBER_REGEX = RegExp("(?<!\\\\)\\[(\\d+)]$");
29
+ /**
30
+ * Convert string to property path array.
31
+ *
32
+ * @see https://github.com/lodash/lodash/blob/main/src/.internal/stringToPath.ts
33
+ * @see https://github.com/chaijs/pathval
34
+ *
35
+ * @param segment
36
+ */ function pathToArray(segment) {
37
+ const str = segment.replace(/([^\\])\[/g, '$1.[');
38
+ const parts = str.match(/(\\\.|[^.]+?)+/g);
39
+ if (!parts) {
40
+ return [];
41
+ }
42
+ const result = [];
43
+ for(let i = 0; i < parts.length; i++){
44
+ if (parts[i] === 'constructor' || parts[i] === '__proto__' || parts[i] === 'prototype') {
45
+ continue;
46
+ }
47
+ const regex = BRACKET_NUMBER_REGEX.exec(parts[i]);
48
+ if (regex) {
49
+ result.push(regex[1]);
50
+ } else {
51
+ result.push(parts[i].replace(/\\([.[\]])/g, '$1'));
52
+ }
53
+ }
54
+ return result;
55
+ }
56
+ /*
57
+ * Copyright (c) 2024.
58
+ * Author Peter Placzek (tada5hi)
59
+ * For the full copyright and license information,
60
+ * view the LICENSE file that was distributed with this source code.
61
+ */ var Character;
62
+ (function(Character) {
63
+ Character["WILDCARD"] = "*";
64
+ Character["GLOBSTAR"] = "**";
65
+ })(Character || (Character = {}));
66
+ /*
67
+ * Copyright (c) 2024.
68
+ * Author Peter Placzek (tada5hi)
69
+ * For the full copyright and license information,
70
+ * view the LICENSE file that was distributed with this source code.
71
+ */ function isObject(input) {
72
+ return !!input && typeof input === 'object' && !Array.isArray(input);
73
+ }
74
+ function getPathValue(data, path) {
75
+ const parts = Array.isArray(path) ? path : pathToArray(path);
76
+ let res;
77
+ let temp = data;
78
+ let index = 0;
79
+ while(index < parts.length){
80
+ if (temp === null || typeof temp === 'undefined') {
81
+ break;
82
+ }
83
+ if (parts[index] in Object(temp)) {
84
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
85
+ // @ts-expect-error
86
+ temp = temp[parts[index]];
87
+ } else {
88
+ break;
89
+ }
90
+ if (index === parts.length - 1) {
91
+ res = temp;
92
+ }
93
+ index++;
94
+ }
95
+ return res;
96
+ }
97
+ const NUMBER_REGEX = /^\d+$/;
98
+ function setPathValue(data, path, value) {
99
+ const parts = Array.isArray(path) ? path : pathToArray(path);
100
+ let temp = data;
101
+ let index = 0;
102
+ while(index < parts.length){
103
+ /* istanbul ignore next */ if (!Array.isArray(temp) && !isObject(temp)) {
104
+ break;
105
+ }
106
+ const key = parts[index];
107
+ // [foo, '0']
108
+ if (typeof temp[key] === 'undefined') {
109
+ const match = NUMBER_REGEX.test(key);
110
+ if (match) {
111
+ temp[key] = [];
112
+ } else {
113
+ temp[key] = {};
114
+ }
115
+ }
116
+ if (index === parts.length - 1) {
117
+ temp[key] = value;
118
+ break;
119
+ }
120
+ index++;
121
+ temp = temp[key];
122
+ }
123
+ return data;
124
+ }
125
+
126
+ class Store {
127
+ /**
128
+ * Set options for all groups.
129
+ *
130
+ * @param items
131
+ */ setAll(items) {
132
+ const keys = Object.keys(items);
133
+ for(let i = 0; i < keys.length; i++){
134
+ this.setOptions(keys[i], items[keys[i]]);
135
+ }
136
+ }
137
+ /**
138
+ * Set options for a specific group.
139
+ *
140
+ * @param group
141
+ * @param options
142
+ */ setOptions(group, options) {
143
+ if (typeof this.data[group] === 'undefined') {
144
+ this.data[group] = {};
145
+ }
146
+ this.data[group] = options;
147
+ }
148
+ hasOptions(group) {
149
+ return smob.hasOwnProperty(this.data, group);
150
+ }
151
+ getOptions(group) {
152
+ if (typeof this.data[group] !== 'undefined') {
153
+ return this.data[group];
154
+ }
155
+ return {};
156
+ }
157
+ hasOption(group, option) {
158
+ return typeof this.data[group] !== 'undefined' && smob.hasOwnProperty(this.data[group], option);
159
+ }
160
+ getOption(group, option) {
161
+ if (typeof this.data[group] === 'undefined') {
162
+ return undefined;
163
+ }
164
+ return this.data[group][option];
165
+ }
166
+ constructor(){
167
+ this.data = {};
168
+ }
169
+ }
170
+ class StoreManager {
171
+ keys() {
172
+ return Object.keys(this.instances);
173
+ }
174
+ use(key) {
175
+ if (typeof this.instances[key] !== 'undefined') {
176
+ return this.instances[key];
177
+ }
178
+ this.instances[key] = new Store();
179
+ return this.instances[key];
180
+ }
181
+ constructor(){
182
+ this.instances = {};
183
+ }
184
+ }
185
+ function inject$2(key, instance) {
186
+ if (instance && instance._context && instance._context.provides && instance._context.provides[key]) {
187
+ return instance._context.provides[key];
188
+ }
189
+ if (vue.hasInjectionContext()) {
190
+ return vue.inject(key, undefined);
191
+ }
192
+ return undefined;
193
+ }
194
+ function provide$1(key, value, app) {
195
+ if (typeof app === 'undefined') {
196
+ const val = inject$2(key);
197
+ if (typeof val !== 'undefined') {
198
+ return;
199
+ }
200
+ vue.provide(key, value);
201
+ return;
202
+ }
203
+ if (app && app._context && app._context.provides && app._context.provides[key]) {
204
+ return;
205
+ }
206
+ app.provide(key, value);
207
+ }
208
+ function getSymbol(key) {
209
+ return Symbol.for('VCStoreManager');
210
+ }
211
+ function installStoreManager(instance, key) {
212
+ const symbol = getSymbol();
213
+ let manager = inject$2(symbol, instance);
214
+ if (manager) {
215
+ return manager;
216
+ }
217
+ manager = new StoreManager();
218
+ provide$1(symbol, manager, instance);
219
+ return manager;
220
+ }
221
+
222
+ var _sfc_main$h = vue.defineComponent({
24
223
  components: {
25
224
  IVuelidate: vuelidate.IVuelidate,
26
- VCFormInput: formControls.VCFormInput,
27
- VCFormGroup: formControls.VCFormGroup
225
+ VCFormInput: installFormControl.VCFormInput,
226
+ VCFormGroup: installFormControl.VCFormGroup
28
227
  },
29
228
  props: {
30
229
  name: {
@@ -73,10 +272,10 @@ var _export_sfc = (sfc, props) => {
73
272
  return target;
74
273
  };
75
274
 
76
- const _hoisted_1$7 = [
275
+ const _hoisted_1$c = [
77
276
  "disabled"
78
277
  ];
79
- function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
278
+ function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
80
279
  const _component_VCFormInput = vue.resolveComponent("VCFormInput");
81
280
  const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
82
281
  const _component_IVuelidate = vue.resolveComponent("IVuelidate");
@@ -106,7 +305,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
106
305
  vue.createElementVNode("i", {
107
306
  class: "fa fa-minus"
108
307
  }, null, -1)
109
- ]), 8, _hoisted_1$7)
308
+ ]), 8, _hoisted_1$c)
110
309
  ]),
111
310
  _: 1
112
311
  }, 8, [
@@ -125,10 +324,10 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
125
324
  "validation"
126
325
  ]);
127
326
  }
128
- var AFormInputListItem = /* @__PURE__ */ _export_sfc(_sfc_main$b, [
327
+ var AFormInputListItem = /* @__PURE__ */ _export_sfc(_sfc_main$h, [
129
328
  [
130
329
  "render",
131
- _sfc_render$b
330
+ _sfc_render$g
132
331
  ]
133
332
  ]);
134
333
 
@@ -157,20 +356,24 @@ function provide(key, value, app) {
157
356
  app.provide(key, value);
158
357
  }
159
358
 
160
- const HTTPClientSymbol = Symbol.for('AuthupHTTPClient');
161
- function provideHTTPClient(client, app) {
162
- provide(HTTPClientSymbol, client, app);
163
- }
164
- function hasHTTPClient(app) {
165
- return !!inject$1(HTTPClientSymbol, app);
166
- }
167
- function injectHTTPClient(app) {
168
- const instance = inject$1(HTTPClientSymbol, app);
359
+ const sym$2 = Symbol.for('AuthupHTTPClientAuthenticationHook');
360
+ function injectHTTPClientAuthenticationHook(app) {
361
+ const instance = inject$1(sym$2, app);
169
362
  if (!instance) {
170
- throw new Error('The api client has not been injected.');
363
+ throw new Error('The http client authentication hook has not been injected in the app context.');
171
364
  }
172
365
  return instance;
173
366
  }
367
+ function hasHTTPClientAuthenticationHook(app) {
368
+ try {
369
+ return !!injectHTTPClientAuthenticationHook(app);
370
+ } catch (e) {
371
+ return false;
372
+ }
373
+ }
374
+ function provideHTTPClientAuthenticationHook(refresher, app) {
375
+ provide(sym$2, refresher, app);
376
+ }
174
377
 
175
378
  /*
176
379
  * Copyright (c) 2024.
@@ -538,6 +741,7 @@ function tryOnScopeDispose(fn) {
538
741
  return false;
539
742
  }
540
743
  typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
744
+ const noop = ()=>{};
541
745
 
542
746
  function useCookies(dependencies, { doNotParse = false, autoUpdateDependencies = false } = {}, cookies = new Cookie()) {
543
747
  const watchingDependencies = autoUpdateDependencies ? [
@@ -768,71 +972,93 @@ function storeToRefs(store) {
768
972
  return refs;
769
973
  }
770
974
 
771
- function installHTTPClient(app, options = {}) {
772
- if (hasHTTPClient(app)) {
975
+ function installHTTPClientAuthenticationHook(app, options = {}) {
976
+ if (hasHTTPClientAuthenticationHook(app)) {
773
977
  return;
774
978
  }
775
- const client = new coreHttpKit.Client({
776
- baseURL: options.baseURL
777
- });
778
979
  const storeFactory = injectStoreFactory(app);
779
980
  const store = storeFactory(options.pinia);
780
981
  const { refreshToken } = pinia.storeToRefs(store);
781
- client.on('responseError', (err)=>{
782
- const { request } = err;
783
- const code = coreHttpKit.getClientErrorCode(err);
784
- if (specs.isJWKErrorCode(code)) {
785
- return store.logout().then(()=>{
786
- if (request.headers) {
787
- coreHttpKit.unsetHeader(request.headers, 'authorization');
788
- return client.request(request);
789
- }
790
- return Promise.reject(err);
791
- });
792
- }
793
- return Promise.reject(err);
794
- });
795
- const tokenHook = new coreHttpKit.ClientResponseErrorTokenHook({
982
+ const hook = new coreHttpKit.ClientAuthenticationHook({
796
983
  baseURL: options.baseURL,
797
984
  tokenCreator: ()=>{
798
985
  if (!refreshToken.value) {
799
986
  throw new Error('No refresh token available.');
800
987
  }
988
+ const client = new coreHttpKit.Client({
989
+ baseURL: options.baseURL
990
+ });
801
991
  return client.token.createWithRefreshToken({
802
992
  refresh_token: refreshToken.value
803
993
  });
804
994
  },
805
995
  timer: !options.isServer
806
996
  });
807
- tokenHook.on(coreHttpKit.ClientResponseTokenHookEventName.REFRESH_FINISHED, (response)=>{
997
+ hook.on(coreHttpKit.ClientAuthenticationHookEventName.REFRESH_FINISHED, (response)=>{
808
998
  store.applyTokenGrantResponse(response);
809
999
  });
810
- tokenHook.on(coreHttpKit.ClientResponseTokenHookEventName.REFRESH_FAILED, ()=>{
811
- Promise.resolve().then(()=>store.logout());
1000
+ let isSelfCallee = false;
1001
+ hook.on(coreHttpKit.ClientAuthenticationHookEventName.HEADER_UNSET, ()=>{
1002
+ if (!isSelfCallee) {
1003
+ Promise.resolve().then(()=>store.logout());
1004
+ }
812
1005
  });
813
1006
  const storeDispatcher = injectStoreDispatcher(app);
814
1007
  const handleAccessTokenEvent = ()=>{
1008
+ isSelfCallee = true;
815
1009
  if (store.accessToken) {
816
- client.setAuthorizationHeader({
1010
+ hook.enable();
1011
+ hook.setAuthorizationHeader({
817
1012
  type: 'Bearer',
818
1013
  token: store.accessToken
819
1014
  });
820
- tokenHook.mount(client);
821
1015
  } else {
822
- client.unsetAuthorizationHeader();
823
- tokenHook.unmount(client);
1016
+ hook.disable();
1017
+ hook.unsetAuthorizationHeader();
824
1018
  }
1019
+ isSelfCallee = false;
825
1020
  };
826
1021
  const handleAccessTokenExpireDateEvent = ()=>{
827
1022
  if (store.accessTokenExpireDate) {
828
1023
  const expiresIn = Math.floor((store.accessTokenExpireDate.getTime() - Date.now()) / 1000);
829
- tokenHook.setTimer(expiresIn);
1024
+ hook.setTimer(expiresIn);
830
1025
  }
831
1026
  };
832
1027
  storeDispatcher.on(StoreDispatcherEventName.ACCESS_TOKEN_UPDATED, ()=>handleAccessTokenEvent());
833
1028
  storeDispatcher.on(StoreDispatcherEventName.ACCESS_TOKEN_EXPIRE_DATE_UPDATED, ()=>handleAccessTokenExpireDateEvent());
834
1029
  handleAccessTokenEvent();
835
1030
  handleAccessTokenExpireDateEvent();
1031
+ provideHTTPClientAuthenticationHook(hook, app);
1032
+ }
1033
+
1034
+ const HTTPClientSymbol = Symbol.for('AuthupHTTPClient');
1035
+ function provideHTTPClient(client, app) {
1036
+ provide(HTTPClientSymbol, client, app);
1037
+ }
1038
+ function hasHTTPClient(app) {
1039
+ try {
1040
+ return !!injectHTTPClient(app);
1041
+ } catch (e) {
1042
+ return false;
1043
+ }
1044
+ }
1045
+ function injectHTTPClient(app) {
1046
+ const instance = inject$1(HTTPClientSymbol, app);
1047
+ if (!instance) {
1048
+ throw new Error('The api client has not been injected.');
1049
+ }
1050
+ return instance;
1051
+ }
1052
+
1053
+ function installHTTPClient(app, options = {}) {
1054
+ if (hasHTTPClient(app)) {
1055
+ return;
1056
+ }
1057
+ const client = new coreHttpKit.Client({
1058
+ baseURL: options.baseURL
1059
+ });
1060
+ const authenticationHook = injectHTTPClientAuthenticationHook(app);
1061
+ authenticationHook.attach(client);
836
1062
  provideHTTPClient(client, app);
837
1063
  }
838
1064
 
@@ -919,130 +1145,27 @@ var TranslatorTranslationDefaultKey = /*#__PURE__*/ function(TranslatorTranslati
919
1145
  return TranslatorTranslationDefaultKey;
920
1146
  }({});
921
1147
 
922
- /*
923
- * Copyright (c) 2024-2024.
924
- * Author Peter Placzek (tada5hi)
925
- * For the full copyright and license information,
926
- * view the LICENSE file that was distributed with this source code.
927
- */ const BRACKET_NUMBER_REGEX = RegExp("(?<!\\\\)\\[(\\d+)]$");
928
- /**
929
- * Convert string to property path array.
930
- *
931
- * @see https://github.com/lodash/lodash/blob/main/src/.internal/stringToPath.ts
932
- * @see https://github.com/chaijs/pathval
933
- *
934
- * @param segment
935
- */ function pathToArray(segment) {
936
- const str = segment.replace(/([^\\])\[/g, '$1.[');
937
- const parts = str.match(/(\\\.|[^.]+?)+/g);
938
- if (!parts) {
939
- return [];
1148
+ class MemoryStore {
1149
+ async get(context) {
1150
+ if (!this.data[context.locale] || !this.data[context.locale][context.group]) {
1151
+ return undefined;
1152
+ }
1153
+ const output = getPathValue(this.data[context.locale][context.group], context.key);
1154
+ if (typeof output === 'string') {
1155
+ return output;
1156
+ }
1157
+ return undefined;
940
1158
  }
941
- const result = [];
942
- for(let i = 0; i < parts.length; i++){
943
- if (parts[i] === 'constructor' || parts[i] === '__proto__' || parts[i] === 'prototype') {
944
- continue;
1159
+ async set(context) {
1160
+ this.initLines(context.group, context.locale);
1161
+ setPathValue(this.data[context.locale][context.group], context.key, context.value);
1162
+ }
1163
+ initLines(group, locale) {
1164
+ if (typeof this.data[locale] === 'undefined') {
1165
+ this.data[locale] = {};
945
1166
  }
946
- const regex = BRACKET_NUMBER_REGEX.exec(parts[i]);
947
- if (regex) {
948
- result.push(regex[1]);
949
- } else {
950
- result.push(parts[i].replace(/\\([.[\]])/g, '$1'));
951
- }
952
- }
953
- return result;
954
- }
955
- /*
956
- * Copyright (c) 2024.
957
- * Author Peter Placzek (tada5hi)
958
- * For the full copyright and license information,
959
- * view the LICENSE file that was distributed with this source code.
960
- */ var Character;
961
- (function(Character) {
962
- Character["WILDCARD"] = "*";
963
- Character["GLOBSTAR"] = "**";
964
- })(Character || (Character = {}));
965
- /*
966
- * Copyright (c) 2024.
967
- * Author Peter Placzek (tada5hi)
968
- * For the full copyright and license information,
969
- * view the LICENSE file that was distributed with this source code.
970
- */ function isObject(input) {
971
- return !!input && typeof input === 'object' && !Array.isArray(input);
972
- }
973
- function getPathValue(data, path) {
974
- const parts = Array.isArray(path) ? path : pathToArray(path);
975
- let res;
976
- let temp = data;
977
- let index = 0;
978
- while(index < parts.length){
979
- if (temp === null || typeof temp === 'undefined') {
980
- break;
981
- }
982
- if (parts[index] in Object(temp)) {
983
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
984
- // @ts-expect-error
985
- temp = temp[parts[index]];
986
- } else {
987
- break;
988
- }
989
- if (index === parts.length - 1) {
990
- res = temp;
991
- }
992
- index++;
993
- }
994
- return res;
995
- }
996
- const NUMBER_REGEX = /^\d+$/;
997
- function setPathValue(data, path, value) {
998
- const parts = Array.isArray(path) ? path : pathToArray(path);
999
- let temp = data;
1000
- let index = 0;
1001
- while(index < parts.length){
1002
- /* istanbul ignore next */ if (!Array.isArray(temp) && !isObject(temp)) {
1003
- break;
1004
- }
1005
- const key = parts[index];
1006
- // [foo, '0']
1007
- if (typeof temp[key] === 'undefined') {
1008
- const match = NUMBER_REGEX.test(key);
1009
- if (match) {
1010
- temp[key] = [];
1011
- } else {
1012
- temp[key] = {};
1013
- }
1014
- }
1015
- if (index === parts.length - 1) {
1016
- temp[key] = value;
1017
- break;
1018
- }
1019
- index++;
1020
- temp = temp[key];
1021
- }
1022
- return data;
1023
- }
1024
-
1025
- class MemoryStore {
1026
- async get(context) {
1027
- if (!this.data[context.locale] || !this.data[context.locale][context.group]) {
1028
- return undefined;
1029
- }
1030
- const output = getPathValue(this.data[context.locale][context.group], context.key);
1031
- if (typeof output === 'string') {
1032
- return output;
1033
- }
1034
- return undefined;
1035
- }
1036
- async set(context) {
1037
- this.initLines(context.group, context.locale);
1038
- setPathValue(this.data[context.locale][context.group], context.key, context.value);
1039
- }
1040
- initLines(group, locale) {
1041
- if (typeof this.data[locale] === 'undefined') {
1042
- this.data[locale] = {};
1043
- }
1044
- if (typeof this.data[locale][group] === 'undefined') {
1045
- this.data[locale][group] = {};
1167
+ if (typeof this.data[locale][group] === 'undefined') {
1168
+ this.data[locale][group] = {};
1046
1169
  }
1047
1170
  }
1048
1171
  async getLocales() {
@@ -1053,9 +1176,6 @@ class MemoryStore {
1053
1176
  }
1054
1177
  }
1055
1178
 
1056
- typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
1057
- const noop = ()=>{};
1058
-
1059
1179
  function computedAsync(evaluationCallback, initialState, optionsOrRef) {
1060
1180
  let options;
1061
1181
  if (vue.isRef(optionsOrRef)) {
@@ -1065,8 +1185,8 @@ function computedAsync(evaluationCallback, initialState, optionsOrRef) {
1065
1185
  } else {
1066
1186
  options = {};
1067
1187
  }
1068
- const { lazy = false, evaluating = void 0, shallow = true, onError = noop } = options;
1069
- const started = vue.ref(!lazy);
1188
+ const { lazy = false, flush = "pre", evaluating = void 0, shallow = true, onError = noop } = options;
1189
+ const started = vue.shallowRef(!lazy);
1070
1190
  const current = shallow ? vue.shallowRef(initialState) : vue.ref(initialState);
1071
1191
  let counter = 0;
1072
1192
  vue.watchEffect(async (onInvalidate)=>{
@@ -1093,6 +1213,8 @@ function computedAsync(evaluationCallback, initialState, optionsOrRef) {
1093
1213
  if (evaluating && counterAtBeginning === counter) evaluating.value = false;
1094
1214
  hasFinished = true;
1095
1215
  }
1216
+ }, {
1217
+ flush
1096
1218
  });
1097
1219
  if (lazy) {
1098
1220
  return vue.computed(()=>{
@@ -1374,7 +1496,7 @@ function createFormSubmitTranslations() {
1374
1496
  function buildFormSubmitWithTranslations(options, translations) {
1375
1497
  options.createText = translations.createText.value;
1376
1498
  options.updateText = translations.updateText.value;
1377
- return formControls.buildFormSubmit(options);
1499
+ return installFormControl.buildFormSubmit(options);
1378
1500
  }
1379
1501
 
1380
1502
  function isQuerySortedDescByDate(input) {
@@ -1436,8 +1558,8 @@ function createPermissionCheckerReactiveFn(ctx = {}) {
1436
1558
  try {
1437
1559
  computePromise = store.permissionChecker.preCheckOneOf({
1438
1560
  ...ctx,
1439
- data: {
1440
- ...ctx.data || {},
1561
+ input: {
1562
+ ...ctx.input || {},
1441
1563
  identity
1442
1564
  }
1443
1565
  }).then(()=>true).catch(()=>false);
@@ -1571,7 +1693,7 @@ const ATranslationDefault = vue.defineComponent({
1571
1693
  }
1572
1694
  });
1573
1695
 
1574
- var _sfc_main$a = vue.defineComponent({
1696
+ var _sfc_main$g = vue.defineComponent({
1575
1697
  components: {
1576
1698
  ATranslationDefault,
1577
1699
  AFormInputListItem
@@ -1650,35 +1772,35 @@ var _sfc_main$a = vue.defineComponent({
1650
1772
  }
1651
1773
  });
1652
1774
 
1653
- const _hoisted_1$6 = {
1775
+ const _hoisted_1$b = {
1654
1776
  class: "d-flex flex-column gap-2"
1655
1777
  };
1656
- const _hoisted_2$5 = {
1778
+ const _hoisted_2$a = {
1657
1779
  class: "d-flex flex-row"
1658
1780
  };
1659
- const _hoisted_3$5 = {
1781
+ const _hoisted_3$8 = {
1660
1782
  class: "align-self-end"
1661
1783
  };
1662
- const _hoisted_4$4 = {
1784
+ const _hoisted_4$6 = {
1663
1785
  class: "ms-auto"
1664
1786
  };
1665
- const _hoisted_5$2 = [
1787
+ const _hoisted_5$3 = [
1666
1788
  "disabled"
1667
1789
  ];
1668
- const _hoisted_6$1 = {
1790
+ const _hoisted_6$2 = {
1669
1791
  class: "d-flex flex-column gap-1"
1670
1792
  };
1671
- function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
1793
+ function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
1672
1794
  const _component_ATranslationDefault = vue.resolveComponent("ATranslationDefault");
1673
1795
  const _component_AFormInputListItem = vue.resolveComponent("AFormInputListItem");
1674
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
1675
- vue.createElementVNode("div", _hoisted_2$5, [
1676
- vue.createElementVNode("div", _hoisted_3$5, [
1796
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
1797
+ vue.createElementVNode("div", _hoisted_2$a, [
1798
+ vue.createElementVNode("div", _hoisted_3$8, [
1677
1799
  vue.renderSlot(_ctx.$slots, "label", {}, ()=>[
1678
1800
  _cache[1] || (_cache[1] = vue.createTextVNode(" Names "))
1679
1801
  ])
1680
1802
  ]),
1681
- vue.createElementVNode("div", _hoisted_4$4, [
1803
+ vue.createElementVNode("div", _hoisted_4$6, [
1682
1804
  vue.createElementVNode("button", {
1683
1805
  class: "btn btn-xs btn-primary",
1684
1806
  type: "button",
@@ -1694,10 +1816,10 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
1694
1816
  vue.createVNode(_component_ATranslationDefault, {
1695
1817
  name: "add"
1696
1818
  })
1697
- ], 8, _hoisted_5$2)
1819
+ ], 8, _hoisted_5$3)
1698
1820
  ])
1699
1821
  ]),
1700
- vue.createElementVNode("div", _hoisted_6$1, [
1822
+ vue.createElementVNode("div", _hoisted_6$2, [
1701
1823
  _ctx.items.length === 0 ? vue.renderSlot(_ctx.$slots, "noItems", {
1702
1824
  key: 0
1703
1825
  }, ()=>[
@@ -1733,15 +1855,15 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
1733
1855
  ])
1734
1856
  ]);
1735
1857
  }
1736
- var AFormInputList = /* @__PURE__ */ _export_sfc(_sfc_main$a, [
1858
+ var AFormInputList = /* @__PURE__ */ _export_sfc(_sfc_main$g, [
1737
1859
  [
1738
1860
  "render",
1739
- _sfc_render$a
1861
+ _sfc_render$f
1740
1862
  ]
1741
1863
  ]);
1742
1864
 
1743
1865
  function buildPagination(ctx) {
1744
- return pagination.buildPagination({
1866
+ return installPagination.buildPagination({
1745
1867
  load: (pagination)=>ctx.load({
1746
1868
  ...ctx.meta,
1747
1869
  pagination: {
@@ -2727,7 +2849,7 @@ function buildListSearch(ctx) {
2727
2849
  }
2728
2850
  });
2729
2851
  });
2730
- return formControls.buildFormInputText({
2852
+ return installFormControl.buildFormInputText({
2731
2853
  type: 'text',
2732
2854
  onChange: (text)=>handle(text),
2733
2855
  props: {
@@ -3334,12 +3456,12 @@ const ARealmForm = vue.defineComponent({
3334
3456
  ]);
3335
3457
  const render = ()=>{
3336
3458
  const children = [];
3337
- children.push(formControls.buildFormGroup({
3459
+ children.push(installFormControl.buildFormGroup({
3338
3460
  validationMessages: translationsValidation.name.value,
3339
3461
  validationSeverity: getVuelidateSeverity($v.value.name),
3340
3462
  label: true,
3341
3463
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
3342
- content: formControls.buildFormInput({
3464
+ content: installFormControl.buildFormInput({
3343
3465
  value: $v.value.name.$model,
3344
3466
  onChange (input) {
3345
3467
  $v.value.name.$model = input;
@@ -3376,24 +3498,24 @@ const ARealmForm = vue.defineComponent({
3376
3498
  ])
3377
3499
  ]);
3378
3500
  }
3379
- children.push(formControls.buildFormGroup({
3501
+ children.push(installFormControl.buildFormGroup({
3380
3502
  validationMessages: translationsValidation.display_name.value,
3381
3503
  validationSeverity: getVuelidateSeverity($v.value.display_name),
3382
3504
  label: true,
3383
3505
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
3384
- content: formControls.buildFormInput({
3506
+ content: installFormControl.buildFormInput({
3385
3507
  value: $v.value.display_name.$model,
3386
3508
  onChange (input) {
3387
3509
  $v.value.display_name.$model = input;
3388
3510
  }
3389
3511
  })
3390
3512
  }));
3391
- children.push(formControls.buildFormGroup({
3513
+ children.push(installFormControl.buildFormGroup({
3392
3514
  validationMessages: translationsValidation.description.value,
3393
3515
  validationSeverity: getVuelidateSeverity($v.value.description),
3394
3516
  label: true,
3395
3517
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
3396
- content: formControls.buildFormTextarea({
3518
+ content: installFormControl.buildFormTextarea({
3397
3519
  value: $v.value.description.$model,
3398
3520
  onChange (input) {
3399
3521
  $v.value.description.$model = input;
@@ -3511,7 +3633,7 @@ const AClientForm = vue.defineComponent({
3511
3633
  required: validators.required
3512
3634
  },
3513
3635
  redirect_uri: {
3514
- url: validators.url,
3636
+ // todo: url is required!
3515
3637
  maxLength: validators.maxLength(2000)
3516
3638
  },
3517
3639
  is_confidential: {},
@@ -3605,12 +3727,12 @@ const AClientForm = vue.defineComponent({
3605
3727
  ]);
3606
3728
  const render = ()=>{
3607
3729
  const name = [
3608
- formControls.buildFormGroup({
3730
+ installFormControl.buildFormGroup({
3609
3731
  validationMessages: translationsValidation.name.value,
3610
3732
  validationSeverity: getVuelidateSeverity($v.value.name),
3611
3733
  label: true,
3612
3734
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
3613
- content: formControls.buildFormInput({
3735
+ content: installFormControl.buildFormInput({
3614
3736
  value: $v.value.name.$model,
3615
3737
  onChange (input) {
3616
3738
  $v.value.name.$model = input;
@@ -3622,12 +3744,12 @@ const AClientForm = vue.defineComponent({
3622
3744
  }),
3623
3745
  vue.h('small', translationsClient[TranslatorTranslationClientKey.NAME_HINT].value)
3624
3746
  ];
3625
- const displayName = formControls.buildFormGroup({
3747
+ const displayName = installFormControl.buildFormGroup({
3626
3748
  validationMessages: translationsValidation.display_name.value,
3627
3749
  validationSeverity: getVuelidateSeverity($v.value.display_name),
3628
3750
  label: true,
3629
3751
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
3630
- content: formControls.buildFormInput({
3752
+ content: installFormControl.buildFormInput({
3631
3753
  value: $v.value.display_name.$model,
3632
3754
  onChange (input) {
3633
3755
  $v.value.display_name.$model = input;
@@ -3636,12 +3758,12 @@ const AClientForm = vue.defineComponent({
3636
3758
  });
3637
3759
  const description = [
3638
3760
  vue.h('div', [
3639
- formControls.buildFormGroup({
3761
+ installFormControl.buildFormGroup({
3640
3762
  validationMessages: translationsValidation.description.value,
3641
3763
  validationSeverity: getVuelidateSeverity($v.value.description),
3642
3764
  label: true,
3643
3765
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
3644
- content: formControls.buildFormTextarea({
3766
+ content: installFormControl.buildFormTextarea({
3645
3767
  value: $v.value.description.$model,
3646
3768
  onChange (input) {
3647
3769
  $v.value.description.$model = input;
@@ -3671,10 +3793,10 @@ const AClientForm = vue.defineComponent({
3671
3793
  }),
3672
3794
  vue.h('small', translationsClient[TranslatorTranslationClientKey.REDIRECT_URI_HINT].value)
3673
3795
  ];
3674
- const isConfidential = formControls.buildFormGroup({
3796
+ const isConfidential = installFormControl.buildFormGroup({
3675
3797
  validationMessages: translationsValidation.is_confidential.value,
3676
3798
  validationSeverity: getVuelidateSeverity($v.value.is_confidential),
3677
- content: formControls.buildFormInputCheckbox({
3799
+ content: installFormControl.buildFormInputCheckbox({
3678
3800
  groupClass: 'form-switch mt-3',
3679
3801
  labelContent: translationsClient[TranslatorTranslationClientKey.IS_CONFIDENTIAL].value,
3680
3802
  value: $v.value.is_confidential.$model,
@@ -3686,10 +3808,10 @@ const AClientForm = vue.defineComponent({
3686
3808
  let id = [];
3687
3809
  if (manager.data.value) {
3688
3810
  id = [
3689
- formControls.buildFormGroup({
3811
+ installFormControl.buildFormGroup({
3690
3812
  label: true,
3691
3813
  labelContent: 'ID',
3692
- content: formControls.buildFormInput({
3814
+ content: installFormControl.buildFormInput({
3693
3815
  value: manager.data.value.id,
3694
3816
  props: {
3695
3817
  disabled: true
@@ -3700,12 +3822,12 @@ const AClientForm = vue.defineComponent({
3700
3822
  ];
3701
3823
  }
3702
3824
  const secret = [
3703
- formControls.buildFormGroup({
3825
+ installFormControl.buildFormGroup({
3704
3826
  validationMessages: translationsValidation.secret.value,
3705
3827
  validationSeverity: getVuelidateSeverity($v.value.secret),
3706
3828
  label: true,
3707
3829
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.SECRET].value,
3708
- content: formControls.buildFormInput({
3830
+ content: installFormControl.buildFormInput({
3709
3831
  value: $v.value.secret.$model,
3710
3832
  onChange (input) {
3711
3833
  $v.value.secret.$model = input;
@@ -3740,7 +3862,7 @@ const AClientForm = vue.defineComponent({
3740
3862
  if (!realmId.value && !isEditing.value) {
3741
3863
  realm = [
3742
3864
  vue.h('hr'),
3743
- formControls.buildFormGroup({
3865
+ installFormControl.buildFormGroup({
3744
3866
  validationMessages: translationsValidation.realm_id.value,
3745
3867
  validationSeverity: getVuelidateSeverity($v.value.realm_id),
3746
3868
  label: true,
@@ -3906,7 +4028,7 @@ const APermissionCheck = vue.defineComponent({
3906
4028
  ],
3907
4029
  required: true
3908
4030
  },
3909
- data: {
4031
+ input: {
3910
4032
  type: Object
3911
4033
  },
3912
4034
  options: {
@@ -3917,7 +4039,7 @@ const APermissionCheck = vue.defineComponent({
3917
4039
  const fn = createPermissionCheckerReactiveFn();
3918
4040
  const isPermitted = vue.computed(()=>fn({
3919
4041
  name: props.name,
3920
- data: props.data,
4042
+ input: props.input,
3921
4043
  options: props.options
3922
4044
  }));
3923
4045
  return ()=>{
@@ -4136,12 +4258,12 @@ const APermissionForm = vue.defineComponent({
4136
4258
  ]);
4137
4259
  const render = ()=>{
4138
4260
  const children = [];
4139
- children.push(formControls.buildFormGroup({
4261
+ children.push(installFormControl.buildFormGroup({
4140
4262
  validationMessages: translationsValidation.name.value,
4141
4263
  validationSeverity: getVuelidateSeverity($v.value.name),
4142
4264
  label: true,
4143
4265
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
4144
- content: formControls.buildFormInput({
4266
+ content: installFormControl.buildFormInput({
4145
4267
  value: $v.value.name.$model,
4146
4268
  onChange (input) {
4147
4269
  $v.value.name.$model = input;
@@ -4151,24 +4273,24 @@ const APermissionForm = vue.defineComponent({
4151
4273
  }
4152
4274
  })
4153
4275
  }));
4154
- children.push(formControls.buildFormGroup({
4276
+ children.push(installFormControl.buildFormGroup({
4155
4277
  validationMessages: translationsValidation.display_name.value,
4156
4278
  validationSeverity: getVuelidateSeverity($v.value.display_name),
4157
4279
  label: true,
4158
4280
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
4159
- content: formControls.buildFormInput({
4281
+ content: installFormControl.buildFormInput({
4160
4282
  value: $v.value.display_name.$model,
4161
4283
  onChange (input) {
4162
4284
  $v.value.display_name.$model = input;
4163
4285
  }
4164
4286
  })
4165
4287
  }));
4166
- children.push(formControls.buildFormGroup({
4288
+ children.push(installFormControl.buildFormGroup({
4167
4289
  validationMessages: translationsValidation.description.value,
4168
4290
  validationSeverity: getVuelidateSeverity($v.value.description),
4169
4291
  label: true,
4170
4292
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
4171
- content: formControls.buildFormTextarea({
4293
+ content: installFormControl.buildFormTextarea({
4172
4294
  value: $v.value.description.$model,
4173
4295
  onChange (input) {
4174
4296
  $v.value.description.$model = input;
@@ -4179,7 +4301,7 @@ const APermissionForm = vue.defineComponent({
4179
4301
  })
4180
4302
  }));
4181
4303
  if (!realmId.value && !isEditing.value) {
4182
- children.push(formControls.buildFormGroup({
4304
+ children.push(installFormControl.buildFormGroup({
4183
4305
  validationMessages: translationsValidation.realm_id.value,
4184
4306
  validationSeverity: getVuelidateSeverity($v.value.realm_id),
4185
4307
  label: true,
@@ -4199,7 +4321,7 @@ const APermissionForm = vue.defineComponent({
4199
4321
  })
4200
4322
  }));
4201
4323
  }
4202
- children.push(formControls.buildFormGroup({
4324
+ children.push(installFormControl.buildFormGroup({
4203
4325
  validationMessages: translationsValidation.policy_id.value,
4204
4326
  validationSeverity: getVuelidateSeverity($v.value.policy_id),
4205
4327
  label: true,
@@ -4367,36 +4489,36 @@ const ARoleForm = vue.defineComponent({
4367
4489
  ]);
4368
4490
  const render = ()=>{
4369
4491
  const children = [];
4370
- children.push(formControls.buildFormGroup({
4492
+ children.push(installFormControl.buildFormGroup({
4371
4493
  validationMessages: translationsValidation.name.value,
4372
4494
  validationSeverity: getVuelidateSeverity($v.value.name),
4373
4495
  label: true,
4374
4496
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
4375
- content: formControls.buildFormInput({
4497
+ content: installFormControl.buildFormInput({
4376
4498
  value: $v.value.name.$model,
4377
4499
  onChange (input) {
4378
4500
  $v.value.name.$model = input;
4379
4501
  }
4380
4502
  })
4381
4503
  }));
4382
- children.push(formControls.buildFormGroup({
4504
+ children.push(installFormControl.buildFormGroup({
4383
4505
  validationMessages: translationsValidation.display_name.value,
4384
4506
  validationSeverity: getVuelidateSeverity($v.value.display_name),
4385
4507
  label: true,
4386
4508
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
4387
- content: formControls.buildFormInput({
4509
+ content: installFormControl.buildFormInput({
4388
4510
  value: $v.value.display_name.$model,
4389
4511
  onChange (input) {
4390
4512
  $v.value.display_name.$model = input;
4391
4513
  }
4392
4514
  })
4393
4515
  }));
4394
- children.push(formControls.buildFormGroup({
4516
+ children.push(installFormControl.buildFormGroup({
4395
4517
  validationMessages: translationsValidation.description.value,
4396
4518
  validationSeverity: getVuelidateSeverity($v.value.description),
4397
4519
  label: true,
4398
4520
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
4399
- content: formControls.buildFormTextarea({
4521
+ content: installFormControl.buildFormTextarea({
4400
4522
  value: $v.value.description.$model,
4401
4523
  onChange (input) {
4402
4524
  $v.value.description.$model = input;
@@ -4407,7 +4529,7 @@ const ARoleForm = vue.defineComponent({
4407
4529
  })
4408
4530
  }));
4409
4531
  if (!realmId.value && !isEditing.value) {
4410
- children.push(formControls.buildFormGroup({
4532
+ children.push(installFormControl.buildFormGroup({
4411
4533
  validationMessages: translationsValidation.realm_id.value,
4412
4534
  validationSeverity: getVuelidateSeverity($v.value.realm_id),
4413
4535
  label: true,
@@ -4683,12 +4805,12 @@ const AScopeForm = vue.defineComponent({
4683
4805
  ]);
4684
4806
  return ()=>{
4685
4807
  const children = [
4686
- formControls.buildFormGroup({
4808
+ installFormControl.buildFormGroup({
4687
4809
  validationMessages: translationsValidation.name.value,
4688
4810
  validationSeverity: getVuelidateSeverity($v.value.name),
4689
4811
  label: true,
4690
4812
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
4691
- content: formControls.buildFormInput({
4813
+ content: installFormControl.buildFormInput({
4692
4814
  value: $v.value.name.$model,
4693
4815
  onChange (input) {
4694
4816
  $v.value.name.$model = input;
@@ -4698,24 +4820,24 @@ const AScopeForm = vue.defineComponent({
4698
4820
  }
4699
4821
  })
4700
4822
  }),
4701
- formControls.buildFormGroup({
4823
+ installFormControl.buildFormGroup({
4702
4824
  validationMessages: translationsValidation.display_name.value,
4703
4825
  validationSeverity: getVuelidateSeverity($v.value.display_name),
4704
4826
  label: true,
4705
4827
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
4706
- content: formControls.buildFormInput({
4828
+ content: installFormControl.buildFormInput({
4707
4829
  value: $v.value.display_name.$model,
4708
4830
  onChange (input) {
4709
4831
  $v.value.display_name.$model = input;
4710
4832
  }
4711
4833
  })
4712
4834
  }),
4713
- formControls.buildFormGroup({
4835
+ installFormControl.buildFormGroup({
4714
4836
  validationMessages: translationsValidation.description.value,
4715
4837
  validationSeverity: getVuelidateSeverity($v.value.description),
4716
4838
  label: true,
4717
4839
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DESCRIPTION].value,
4718
- content: formControls.buildFormTextarea({
4840
+ content: installFormControl.buildFormTextarea({
4719
4841
  value: $v.value.description.$model,
4720
4842
  onChange (input) {
4721
4843
  $v.value.description.$model = input;
@@ -4727,7 +4849,7 @@ const AScopeForm = vue.defineComponent({
4727
4849
  })
4728
4850
  ];
4729
4851
  if (!realmId.value && !isNameFixed.value && !isEditing.value) {
4730
- children.push(formControls.buildFormGroup({
4852
+ children.push(installFormControl.buildFormGroup({
4731
4853
  validationMessages: translationsValidation.realm_id.value,
4732
4854
  validationSeverity: getVuelidateSeverity($v.value.realm_id),
4733
4855
  label: true,
@@ -4949,12 +5071,12 @@ const AIdentityProviderBasicFields = vue.defineComponent({
4949
5071
  ]);
4950
5072
  const translationsValidation = useTranslationsForNestedValidation($v.value);
4951
5073
  return ()=>{
4952
- const name = formControls.buildFormGroup({
5074
+ const name = installFormControl.buildFormGroup({
4953
5075
  validationMessages: translationsValidation.name.value,
4954
5076
  validationSeverity: getVuelidateSeverity($v.value.name),
4955
5077
  label: true,
4956
5078
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
4957
- content: formControls.buildFormInput({
5079
+ content: installFormControl.buildFormInput({
4958
5080
  value: $v.value.name.$model,
4959
5081
  onChange (input) {
4960
5082
  $v.value.name.$model = input;
@@ -4979,19 +5101,19 @@ const AIdentityProviderBasicFields = vue.defineComponent({
4979
5101
  'Generate'
4980
5102
  ])
4981
5103
  ]);
4982
- const displayName = formControls.buildFormGroup({
5104
+ const displayName = installFormControl.buildFormGroup({
4983
5105
  validationMessages: translationsValidation.display_name.value,
4984
5106
  validationSeverity: getVuelidateSeverity($v.value.display_name),
4985
5107
  label: true,
4986
5108
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
4987
- content: formControls.buildFormInput({
5109
+ content: installFormControl.buildFormInput({
4988
5110
  value: $v.value.display_name.$model,
4989
5111
  onChange (input) {
4990
5112
  $v.value.display_name.$model = input;
4991
5113
  }
4992
5114
  })
4993
5115
  });
4994
- const enabled = formControls.buildFormInputCheckbox({
5116
+ const enabled = installFormControl.buildFormInputCheckbox({
4995
5117
  groupClass: 'form-switch mt-3',
4996
5118
  labelContent: 'Enabled?',
4997
5119
  value: $v.value.enabled.$model,
@@ -5055,12 +5177,12 @@ const AIdentityProviderLdapConnectionFields = vue.defineComponent({
5055
5177
  init();
5056
5178
  const validationMessages = useTranslationsForNestedValidation($v.value);
5057
5179
  return ()=>[
5058
- formControls.buildFormGroup({
5180
+ installFormControl.buildFormGroup({
5059
5181
  validationMessages: validationMessages.url.value,
5060
5182
  validationSeverity: getVuelidateSeverity($v.value.url),
5061
5183
  label: true,
5062
5184
  labelContent: 'URL',
5063
- content: formControls.buildFormInput({
5185
+ content: installFormControl.buildFormInput({
5064
5186
  value: $v.value.url.$model,
5065
5187
  onChange (input) {
5066
5188
  $v.value.url.$model = input;
@@ -5070,12 +5192,12 @@ const AIdentityProviderLdapConnectionFields = vue.defineComponent({
5070
5192
  }
5071
5193
  })
5072
5194
  }),
5073
- formControls.buildFormGroup({
5195
+ installFormControl.buildFormGroup({
5074
5196
  validationMessages: validationMessages.timeout.value,
5075
5197
  validationSeverity: getVuelidateSeverity($v.value.timeout),
5076
5198
  label: true,
5077
5199
  labelContent: 'Timeout',
5078
- content: formControls.buildFormInput({
5200
+ content: installFormControl.buildFormInput({
5079
5201
  value: $v.value.timeout.$model,
5080
5202
  onChange (input) {
5081
5203
  const intValue = Number.parseInt(input, 10);
@@ -5088,12 +5210,12 @@ const AIdentityProviderLdapConnectionFields = vue.defineComponent({
5088
5210
  }
5089
5211
  })
5090
5212
  }),
5091
- formControls.buildFormGroup({
5213
+ installFormControl.buildFormGroup({
5092
5214
  validationMessages: validationMessages.start_tls.value,
5093
5215
  validationSeverity: getVuelidateSeverity($v.value.start_tls),
5094
5216
  label: true,
5095
5217
  labelContent: 'StartTLS',
5096
- content: formControls.buildFormInputCheckbox({
5218
+ content: installFormControl.buildFormInputCheckbox({
5097
5219
  groupClass: 'form-switch',
5098
5220
  labelContent: 'Enable StartTLS process?',
5099
5221
  value: $v.value.start_tls.$model,
@@ -5102,12 +5224,12 @@ const AIdentityProviderLdapConnectionFields = vue.defineComponent({
5102
5224
  }
5103
5225
  })
5104
5226
  }),
5105
- formControls.buildFormGroup({
5227
+ installFormControl.buildFormGroup({
5106
5228
  validationMessages: validationMessages.base_dn.value,
5107
5229
  validationSeverity: getVuelidateSeverity($v.value.base_dn),
5108
5230
  label: true,
5109
5231
  labelContent: 'Base DN',
5110
- content: formControls.buildFormInput({
5232
+ content: installFormControl.buildFormInput({
5111
5233
  value: $v.value.base_dn.$model,
5112
5234
  onChange (input) {
5113
5235
  $v.value.base_dn.$model = input;
@@ -5158,24 +5280,24 @@ const AIdentityProviderLdapCredentialsFields = vue.defineComponent({
5158
5280
  init();
5159
5281
  const validationMessages = useTranslationsForNestedValidation($v.value);
5160
5282
  return ()=>[
5161
- formControls.buildFormGroup({
5283
+ installFormControl.buildFormGroup({
5162
5284
  validationMessages: validationMessages.user.value,
5163
5285
  validationSeverity: getVuelidateSeverity($v.value.user),
5164
5286
  label: true,
5165
5287
  labelContent: 'User',
5166
- content: formControls.buildFormInput({
5288
+ content: installFormControl.buildFormInput({
5167
5289
  value: $v.value.user.$model,
5168
5290
  onChange (input) {
5169
5291
  $v.value.user.$model = input;
5170
5292
  }
5171
5293
  })
5172
5294
  }),
5173
- formControls.buildFormGroup({
5295
+ installFormControl.buildFormGroup({
5174
5296
  validationMessages: validationMessages.password.value,
5175
5297
  validationSeverity: getVuelidateSeverity($v.value.password),
5176
5298
  label: true,
5177
5299
  labelContent: 'Password',
5178
- content: formControls.buildFormInput({
5300
+ content: installFormControl.buildFormInput({
5179
5301
  value: $v.value.password.$model,
5180
5302
  onChange (input) {
5181
5303
  $v.value.password.$model = input;
@@ -5227,12 +5349,12 @@ const AIdentityProviderLdapGroupFields = vue.defineComponent({
5227
5349
  init();
5228
5350
  const validationMessages = useTranslationsForNestedValidation($v.value);
5229
5351
  return ()=>[
5230
- formControls.buildFormGroup({
5352
+ installFormControl.buildFormGroup({
5231
5353
  validationMessages: validationMessages.group_filter.value,
5232
5354
  validationSeverity: getVuelidateSeverity($v.value.group_filter),
5233
5355
  label: true,
5234
5356
  labelContent: 'Filter',
5235
- content: formControls.buildFormInput({
5357
+ content: installFormControl.buildFormInput({
5236
5358
  value: $v.value.group_filter.$model,
5237
5359
  onChange (input) {
5238
5360
  $v.value.group_filter.$model = input;
@@ -5242,60 +5364,60 @@ const AIdentityProviderLdapGroupFields = vue.defineComponent({
5242
5364
  }
5243
5365
  })
5244
5366
  }),
5245
- formControls.buildFormGroup({
5367
+ installFormControl.buildFormGroup({
5246
5368
  validationMessages: validationMessages.group_base_dn.value,
5247
5369
  validationSeverity: getVuelidateSeverity($v.value.group_base_dn),
5248
5370
  label: true,
5249
5371
  labelContent: 'Base DN',
5250
- content: formControls.buildFormInput({
5372
+ content: installFormControl.buildFormInput({
5251
5373
  value: $v.value.group_base_dn.$model,
5252
5374
  onChange (input) {
5253
5375
  $v.value.group_base_dn.$model = input;
5254
5376
  }
5255
5377
  })
5256
5378
  }),
5257
- formControls.buildFormGroup({
5379
+ installFormControl.buildFormGroup({
5258
5380
  validationMessages: validationMessages.group_class.value,
5259
5381
  validationSeverity: getVuelidateSeverity($v.value.group_class),
5260
5382
  label: true,
5261
5383
  labelContent: 'Class',
5262
- content: formControls.buildFormInput({
5384
+ content: installFormControl.buildFormInput({
5263
5385
  value: $v.value.group_class.$model,
5264
5386
  onChange (input) {
5265
5387
  $v.value.group_class.$model = input;
5266
5388
  }
5267
5389
  })
5268
5390
  }),
5269
- formControls.buildFormGroup({
5391
+ installFormControl.buildFormGroup({
5270
5392
  validationMessages: validationMessages.group_name_attribute.value,
5271
5393
  validationSeverity: getVuelidateSeverity($v.value.group_name_attribute),
5272
5394
  label: true,
5273
5395
  labelContent: 'Name Attribute',
5274
- content: formControls.buildFormInput({
5396
+ content: installFormControl.buildFormInput({
5275
5397
  value: $v.value.group_name_attribute.$model,
5276
5398
  onChange (input) {
5277
5399
  $v.value.group_name_attribute.$model = input;
5278
5400
  }
5279
5401
  })
5280
5402
  }),
5281
- formControls.buildFormGroup({
5403
+ installFormControl.buildFormGroup({
5282
5404
  validationMessages: validationMessages.group_member_attribute.value,
5283
5405
  validationSeverity: getVuelidateSeverity($v.value.group_member_attribute),
5284
5406
  label: true,
5285
5407
  labelContent: 'Member Attribute',
5286
- content: formControls.buildFormInput({
5408
+ content: installFormControl.buildFormInput({
5287
5409
  value: $v.value.group_member_attribute.$model,
5288
5410
  onChange (input) {
5289
5411
  $v.value.group_member_attribute.$model = input;
5290
5412
  }
5291
5413
  })
5292
5414
  }),
5293
- formControls.buildFormGroup({
5415
+ installFormControl.buildFormGroup({
5294
5416
  validationMessages: validationMessages.group_member_user_attribute.value,
5295
5417
  validationSeverity: getVuelidateSeverity($v.value.group_member_user_attribute),
5296
5418
  label: true,
5297
5419
  labelContent: 'Member User Attribute',
5298
- content: formControls.buildFormInput({
5420
+ content: installFormControl.buildFormInput({
5299
5421
  value: $v.value.group_member_user_attribute.$model,
5300
5422
  onChange (input) {
5301
5423
  $v.value.group_member_user_attribute.$model = input;
@@ -5345,12 +5467,12 @@ const AIdentityProviderLdapUserFields = vue.defineComponent({
5345
5467
  init();
5346
5468
  const validationMessages = useTranslationsForNestedValidation($v.value);
5347
5469
  return ()=>[
5348
- formControls.buildFormGroup({
5470
+ installFormControl.buildFormGroup({
5349
5471
  validationMessages: validationMessages.user_filter.value,
5350
5472
  validationSeverity: getVuelidateSeverity($v.value.user_filter),
5351
5473
  label: true,
5352
5474
  labelContent: 'Filter',
5353
- content: formControls.buildFormInput({
5475
+ content: installFormControl.buildFormInput({
5354
5476
  value: $v.value.user_filter.$model,
5355
5477
  onChange (input) {
5356
5478
  $v.value.user_filter.$model = input;
@@ -5360,48 +5482,48 @@ const AIdentityProviderLdapUserFields = vue.defineComponent({
5360
5482
  }
5361
5483
  })
5362
5484
  }),
5363
- formControls.buildFormGroup({
5485
+ installFormControl.buildFormGroup({
5364
5486
  validationMessages: validationMessages.user_base_dn.value,
5365
5487
  validationSeverity: getVuelidateSeverity($v.value.user_base_dn),
5366
5488
  label: true,
5367
5489
  labelContent: 'Base DN',
5368
- content: formControls.buildFormInput({
5490
+ content: installFormControl.buildFormInput({
5369
5491
  value: $v.value.user_base_dn.$model,
5370
5492
  onChange (input) {
5371
5493
  $v.value.user_base_dn.$model = input;
5372
5494
  }
5373
5495
  })
5374
5496
  }),
5375
- formControls.buildFormGroup({
5497
+ installFormControl.buildFormGroup({
5376
5498
  validationMessages: validationMessages.user_name_attribute.value,
5377
5499
  validationSeverity: getVuelidateSeverity($v.value.user_name_attribute),
5378
5500
  label: true,
5379
5501
  labelContent: 'Name Attribute',
5380
- content: formControls.buildFormInput({
5502
+ content: installFormControl.buildFormInput({
5381
5503
  value: $v.value.user_name_attribute.$model,
5382
5504
  onChange (input) {
5383
5505
  $v.value.user_name_attribute.$model = input;
5384
5506
  }
5385
5507
  })
5386
5508
  }),
5387
- formControls.buildFormGroup({
5509
+ installFormControl.buildFormGroup({
5388
5510
  validationMessages: validationMessages.user_mail_attribute.value,
5389
5511
  validationSeverity: getVuelidateSeverity($v.value.user_mail_attribute),
5390
5512
  label: true,
5391
5513
  labelContent: 'Mail Attribute',
5392
- content: formControls.buildFormInput({
5514
+ content: installFormControl.buildFormInput({
5393
5515
  value: $v.value.user_mail_attribute.$model,
5394
5516
  onChange (input) {
5395
5517
  $v.value.user_mail_attribute.$model = input;
5396
5518
  }
5397
5519
  })
5398
5520
  }),
5399
- formControls.buildFormGroup({
5521
+ installFormControl.buildFormGroup({
5400
5522
  validationMessages: validationMessages.user_display_name_attribute.value,
5401
5523
  validationSeverity: getVuelidateSeverity($v.value.user_display_name_attribute),
5402
5524
  label: true,
5403
5525
  labelContent: 'DisplayName Attribute',
5404
- content: formControls.buildFormInput({
5526
+ content: installFormControl.buildFormInput({
5405
5527
  value: $v.value.user_display_name_attribute.$model,
5406
5528
  onChange (input) {
5407
5529
  $v.value.user_display_name_attribute.$model = input;
@@ -5679,7 +5801,7 @@ const AIdentityProviderPreset = vue.defineComponent({
5679
5801
  }
5680
5802
  });
5681
5803
 
5682
- var _sfc_main$9 = vue.defineComponent({
5804
+ var _sfc_main$f = vue.defineComponent({
5683
5805
  components: {
5684
5806
  AIdentityProviderPreset,
5685
5807
  AIdentityProviderProtocol
@@ -5713,28 +5835,28 @@ var _sfc_main$9 = vue.defineComponent({
5713
5835
  }
5714
5836
  });
5715
5837
 
5716
- const _hoisted_1$5 = {
5838
+ const _hoisted_1$a = {
5717
5839
  class: "d-flex flex-column gap-2"
5718
5840
  };
5719
- const _hoisted_2$4 = {
5841
+ const _hoisted_2$9 = {
5720
5842
  class: "d-flex flex-row gap-2 flex-wrap"
5721
5843
  };
5722
- const _hoisted_3$4 = [
5844
+ const _hoisted_3$7 = [
5723
5845
  "onClick"
5724
5846
  ];
5725
- const _hoisted_4$3 = {
5847
+ const _hoisted_4$5 = {
5726
5848
  class: "d-flex flex-row gap-2 flex-wrap"
5727
5849
  };
5728
- const _hoisted_5$1 = [
5850
+ const _hoisted_5$2 = [
5729
5851
  "onClick"
5730
5852
  ];
5731
- function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
5853
+ function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
5732
5854
  const _component_AIdentityProviderProtocol = vue.resolveComponent("AIdentityProviderProtocol");
5733
5855
  const _component_AIdentityProviderPreset = vue.resolveComponent("AIdentityProviderPreset");
5734
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
5856
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
5735
5857
  vue.createElementVNode("div", null, [
5736
5858
  _cache[0] || (_cache[0] = vue.createElementVNode("h6", null, "Protocols", -1)),
5737
- vue.createElementVNode("div", _hoisted_2$4, [
5859
+ vue.createElementVNode("div", _hoisted_2$9, [
5738
5860
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.protocols, (item, key)=>{
5739
5861
  return vue.openBlock(), vue.createBlock(_component_AIdentityProviderProtocol, {
5740
5862
  key,
@@ -5761,7 +5883,7 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
5761
5883
  }, null, 2)
5762
5884
  ]),
5763
5885
  vue.createElementVNode("div", null, vue.toDisplayString(props.name), 1)
5764
- ], 10, _hoisted_3$4)
5886
+ ], 10, _hoisted_3$7)
5765
5887
  ]),
5766
5888
  _: 2
5767
5889
  }, 1032, [
@@ -5772,7 +5894,7 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
5772
5894
  ]),
5773
5895
  vue.createElementVNode("div", null, [
5774
5896
  _cache[1] || (_cache[1] = vue.createElementVNode("h6", null, "Presets", -1)),
5775
- vue.createElementVNode("div", _hoisted_4$3, [
5897
+ vue.createElementVNode("div", _hoisted_4$5, [
5776
5898
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.presets, (item, key)=>{
5777
5899
  return vue.openBlock(), vue.createBlock(_component_AIdentityProviderPreset, {
5778
5900
  key,
@@ -5799,7 +5921,7 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
5799
5921
  }, null, 2)
5800
5922
  ]),
5801
5923
  vue.createElementVNode("div", null, vue.toDisplayString(props.name), 1)
5802
- ], 10, _hoisted_5$1)
5924
+ ], 10, _hoisted_5$2)
5803
5925
  ]),
5804
5926
  _: 2
5805
5927
  }, 1032, [
@@ -5810,10 +5932,10 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
5810
5932
  ])
5811
5933
  ]);
5812
5934
  }
5813
- var AIdentityProviderPicker = /* @__PURE__ */ _export_sfc(_sfc_main$9, [
5935
+ var AIdentityProviderPicker = /* @__PURE__ */ _export_sfc(_sfc_main$f, [
5814
5936
  [
5815
5937
  "render",
5816
- _sfc_render$9
5938
+ _sfc_render$e
5817
5939
  ],
5818
5940
  [
5819
5941
  "__scopeId",
@@ -5856,24 +5978,24 @@ const AIdentityProviderOAuth2ClientFields = vue.defineComponent({
5856
5978
  assign();
5857
5979
  const validationMessages = useTranslationsForNestedValidation($v.value);
5858
5980
  return ()=>[
5859
- formControls.buildFormGroup({
5981
+ installFormControl.buildFormGroup({
5860
5982
  validationMessages: validationMessages.client_id.value,
5861
5983
  validationSeverity: getVuelidateSeverity($v.value.client_id),
5862
5984
  label: true,
5863
5985
  labelContent: 'Client ID',
5864
- content: formControls.buildFormInput({
5986
+ content: installFormControl.buildFormInput({
5865
5987
  value: $v.value.client_id.$model,
5866
5988
  onChange (input) {
5867
5989
  $v.value.client_id.$model = input;
5868
5990
  }
5869
5991
  })
5870
5992
  }),
5871
- formControls.buildFormGroup({
5993
+ installFormControl.buildFormGroup({
5872
5994
  validationMessages: validationMessages.client_secret.value,
5873
5995
  validationSeverity: getVuelidateSeverity($v.value.client_secret),
5874
5996
  label: true,
5875
5997
  labelContent: 'Client Secret',
5876
- content: formControls.buildFormInput({
5998
+ content: installFormControl.buildFormInput({
5877
5999
  value: $v.value.client_secret.$model,
5878
6000
  onChange (input) {
5879
6001
  $v.value.client_secret.$model = input;
@@ -5931,11 +6053,11 @@ const AIdentityProviderOAuth2Discovery = vue.defineComponent({
5931
6053
  }, message.value);
5932
6054
  }
5933
6055
  return [
5934
- formControls.buildFormGroup({
6056
+ installFormControl.buildFormGroup({
5935
6057
  validationMessages: validationMessages.value,
5936
6058
  validationSeverity: getVuelidateSeverity($v.value.url),
5937
6059
  labelContent: 'Discovery',
5938
- content: formControls.buildFormInput({
6060
+ content: installFormControl.buildFormInput({
5939
6061
  class: {
5940
6062
  'is-valid': lookupValid.value
5941
6063
  },
@@ -6024,12 +6146,12 @@ const AIdentityProviderOAuth2EndpointFields = vue.defineComponent({
6024
6146
  }
6025
6147
  return [
6026
6148
  discoveryNode,
6027
- formControls.buildFormGroup({
6149
+ installFormControl.buildFormGroup({
6028
6150
  validationMessages: validationMessages.token_url.value,
6029
6151
  validationSeverity: getVuelidateSeverity($v.value.token_url),
6030
6152
  label: true,
6031
6153
  labelContent: 'Token',
6032
- content: formControls.buildFormInput({
6154
+ content: installFormControl.buildFormInput({
6033
6155
  value: $v.value.token_url.$model,
6034
6156
  onChange (input) {
6035
6157
  $v.value.token_url.$model = input;
@@ -6039,12 +6161,12 @@ const AIdentityProviderOAuth2EndpointFields = vue.defineComponent({
6039
6161
  }
6040
6162
  })
6041
6163
  }),
6042
- formControls.buildFormGroup({
6164
+ installFormControl.buildFormGroup({
6043
6165
  validationMessages: validationMessages.authorize_url.value,
6044
6166
  validationSeverity: getVuelidateSeverity($v.value.authorize_url),
6045
6167
  label: true,
6046
6168
  labelContent: 'Authorize',
6047
- content: formControls.buildFormInput({
6169
+ content: installFormControl.buildFormInput({
6048
6170
  value: $v.value.authorize_url.$model,
6049
6171
  onChange (input) {
6050
6172
  $v.value.authorize_url.$model = input;
@@ -6054,12 +6176,12 @@ const AIdentityProviderOAuth2EndpointFields = vue.defineComponent({
6054
6176
  }
6055
6177
  })
6056
6178
  }),
6057
- formControls.buildFormGroup({
6179
+ installFormControl.buildFormGroup({
6058
6180
  validationMessages: validationMessages.user_info_url.value,
6059
6181
  validationSeverity: getVuelidateSeverity($v.value.user_info_url),
6060
6182
  label: true,
6061
6183
  labelContent: 'UserInfo',
6062
- content: formControls.buildFormInput({
6184
+ content: installFormControl.buildFormInput({
6063
6185
  value: $v.value.user_info_url.$model,
6064
6186
  onChange (input) {
6065
6187
  $v.value.user_info_url.$model = input;
@@ -6089,10 +6211,6 @@ const AIdentityProviderOAuth2Form = vue.defineComponent({
6089
6211
  type: String,
6090
6212
  default: undefined
6091
6213
  },
6092
- apiUrl: {
6093
- type: String,
6094
- default: 'http://localhost:3001'
6095
- },
6096
6214
  protocol: {
6097
6215
  type: String,
6098
6216
  default: coreKit.IdentityProviderProtocol.OAUTH2
@@ -6130,7 +6248,7 @@ const AIdentityProviderOAuth2Form = vue.defineComponent({
6130
6248
  if (!manager.data.value) {
6131
6249
  return '';
6132
6250
  }
6133
- return apiClient.identityProvider.getAuthorizeUri(props.apiUrl, manager.data.value.id);
6251
+ return apiClient.identityProvider.getAuthorizeUri(manager.data.value.id);
6134
6252
  });
6135
6253
  const basicFieldsNode = vue.ref(null);
6136
6254
  onChange(preset, ()=>{
@@ -6231,10 +6349,10 @@ const AIdentityProviderOAuth2Form = vue.defineComponent({
6231
6349
  ' ',
6232
6350
  'Details'
6233
6351
  ]),
6234
- formControls.buildFormGroup({
6352
+ installFormControl.buildFormGroup({
6235
6353
  label: true,
6236
6354
  labelContent: 'Redirect URL',
6237
- content: formControls.buildFormInput({
6355
+ content: installFormControl.buildFormInput({
6238
6356
  value: authorizeUri,
6239
6357
  props: {
6240
6358
  disabled: true
@@ -6328,10 +6446,6 @@ const AIdentityProviderForm = vue.defineComponent({
6328
6446
  },
6329
6447
  realmId: {
6330
6448
  type: String
6331
- },
6332
- apiUrl: {
6333
- type: String,
6334
- default: 'http://localhost:3001'
6335
6449
  }
6336
6450
  },
6337
6451
  emits: [
@@ -6394,7 +6508,6 @@ const AIdentityProviderForm = vue.defineComponent({
6394
6508
  realmId: props.realmId,
6395
6509
  protocol: protocol.value,
6396
6510
  preset: preset.value,
6397
- apiUrl: props.apiUrl,
6398
6511
  onCreated: (el)=>{
6399
6512
  entity.value = el;
6400
6513
  setup.emit('created', el);
@@ -6661,36 +6774,36 @@ const AIdentityProviderRoleAssignment = vue.defineComponent({
6661
6774
  vue.h('div', {
6662
6775
  class: 'mt-2'
6663
6776
  }, [
6664
- formControls.buildFormGroup({
6777
+ installFormControl.buildFormGroup({
6665
6778
  label: true,
6666
6779
  labelContent: 'Name',
6667
6780
  validationMessages: validationMessages.name.value,
6668
6781
  validationSeverity: getVuelidateSeverity($v.value.name),
6669
- content: formControls.buildFormInput({
6782
+ content: installFormControl.buildFormInput({
6670
6783
  value: $v.value.name.$model,
6671
6784
  onChange (input) {
6672
6785
  $v.value.name.$model = input;
6673
6786
  }
6674
6787
  })
6675
6788
  }),
6676
- formControls.buildFormGroup({
6789
+ installFormControl.buildFormGroup({
6677
6790
  label: true,
6678
6791
  labelContent: 'Value',
6679
6792
  validationMessages: validationMessages.value.value,
6680
6793
  validationSeverity: getVuelidateSeverity($v.value.value),
6681
- content: formControls.buildFormInput({
6794
+ content: installFormControl.buildFormInput({
6682
6795
  value: $v.value.value.$model,
6683
6796
  onChange (input) {
6684
6797
  $v.value.value.$model = input;
6685
6798
  }
6686
6799
  })
6687
6800
  }),
6688
- formControls.buildFormGroup({
6801
+ installFormControl.buildFormGroup({
6689
6802
  validationMessages: validationMessages.value_is_regex.value,
6690
6803
  validationSeverity: getVuelidateSeverity($v.value.value_is_regex),
6691
6804
  label: true,
6692
6805
  labelContent: 'Regex',
6693
- content: formControls.buildFormInputCheckbox({
6806
+ content: installFormControl.buildFormInputCheckbox({
6694
6807
  groupClass: 'form-switch',
6695
6808
  labelContent: translationsDefault.valueIsRegex.value,
6696
6809
  value: $v.value.value_is_regex.$model,
@@ -6734,7 +6847,7 @@ const AIdentityProviderRoleAssignments = vue.defineComponent({
6734
6847
  }
6735
6848
  });
6736
6849
 
6737
- var _sfc_main$8 = vue.defineComponent({
6850
+ var _sfc_main$e = vue.defineComponent({
6738
6851
  components: {
6739
6852
  AFormInputList
6740
6853
  },
@@ -6775,7 +6888,7 @@ var _sfc_main$8 = vue.defineComponent({
6775
6888
  }
6776
6889
  });
6777
6890
 
6778
- function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
6891
+ function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
6779
6892
  const _component_AFormInputList = vue.resolveComponent("AFormInputList");
6780
6893
  return vue.openBlock(), vue.createBlock(_component_AFormInputList, {
6781
6894
  names: _ctx.vuelidate.names.$model,
@@ -6786,17 +6899,17 @@ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
6786
6899
  "onChanged"
6787
6900
  ]);
6788
6901
  }
6789
- var AAttributeNamesPolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$8, [
6902
+ var AAttributeNamesPolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$e, [
6790
6903
  [
6791
6904
  "render",
6792
- _sfc_render$8
6905
+ _sfc_render$d
6793
6906
  ]
6794
6907
  ]);
6795
6908
 
6796
- var _sfc_main$7 = vue.defineComponent({
6909
+ var _sfc_main$d = vue.defineComponent({
6797
6910
  components: {
6798
6911
  APolicyChildrenPicker: APolicyPicker,
6799
- VCFormGroup: formControls.VCFormGroup,
6912
+ VCFormGroup: installFormControl.VCFormGroup,
6800
6913
  IVuelidate: vuelidate.IVuelidate
6801
6914
  },
6802
6915
  props: {
@@ -6879,7 +6992,7 @@ var _sfc_main$7 = vue.defineComponent({
6879
6992
  }
6880
6993
  });
6881
6994
 
6882
- function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
6995
+ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
6883
6996
  const _component_APolicyChildrenPicker = vue.resolveComponent("APolicyChildrenPicker");
6884
6997
  const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
6885
6998
  const _component_IVuelidate = vue.resolveComponent("IVuelidate");
@@ -6920,17 +7033,17 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
6920
7033
  ])
6921
7034
  ]);
6922
7035
  }
6923
- var ACompositePolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$7, [
7036
+ var ACompositePolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$d, [
6924
7037
  [
6925
7038
  "render",
6926
- _sfc_render$7
7039
+ _sfc_render$c
6927
7040
  ]
6928
7041
  ]);
6929
7042
 
6930
- var _sfc_main$6 = vue.defineComponent({
7043
+ var _sfc_main$c = vue.defineComponent({
6931
7044
  components: {
6932
- VCFormInput: formControls.VCFormInput,
6933
- VCFormGroup: formControls.VCFormGroup,
7045
+ VCFormInput: installFormControl.VCFormInput,
7046
+ VCFormGroup: installFormControl.VCFormGroup,
6934
7047
  IVuelidate: vuelidate.IVuelidate
6935
7048
  },
6936
7049
  props: {
@@ -6974,7 +7087,7 @@ var _sfc_main$6 = vue.defineComponent({
6974
7087
  }
6975
7088
  });
6976
7089
 
6977
- function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
7090
+ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
6978
7091
  const _component_VCFormInput = vue.resolveComponent("VCFormInput");
6979
7092
  const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
6980
7093
  const _component_IVuelidate = vue.resolveComponent("IVuelidate");
@@ -7045,14 +7158,14 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
7045
7158
  ])
7046
7159
  ]);
7047
7160
  }
7048
- var ADatePolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$6, [
7161
+ var ADatePolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$c, [
7049
7162
  [
7050
7163
  "render",
7051
- _sfc_render$6
7164
+ _sfc_render$b
7052
7165
  ]
7053
7166
  ]);
7054
7167
 
7055
- var _sfc_main$5 = vue.defineComponent({
7168
+ var _sfc_main$b = vue.defineComponent({
7056
7169
  components: {
7057
7170
  AFormInputList
7058
7171
  },
@@ -7093,7 +7206,7 @@ var _sfc_main$5 = vue.defineComponent({
7093
7206
  }
7094
7207
  });
7095
7208
 
7096
- function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
7209
+ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
7097
7210
  const _component_AFormInputList = vue.resolveComponent("AFormInputList");
7098
7211
  return vue.openBlock(), vue.createBlock(_component_AFormInputList, {
7099
7212
  names: _ctx.vuelidate.types.$model,
@@ -7109,17 +7222,17 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
7109
7222
  "onChanged"
7110
7223
  ]);
7111
7224
  }
7112
- var AIdentityPolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$5, [
7225
+ var AIdentityPolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$b, [
7113
7226
  [
7114
7227
  "render",
7115
- _sfc_render$5
7228
+ _sfc_render$a
7116
7229
  ]
7117
7230
  ]);
7118
7231
 
7119
- var _sfc_main$4 = vue.defineComponent({
7232
+ var _sfc_main$a = vue.defineComponent({
7120
7233
  components: {
7121
7234
  AFormInputList,
7122
- VCFormGroup: formControls.VCFormGroup,
7235
+ VCFormGroup: installFormControl.VCFormGroup,
7123
7236
  IVuelidate: vuelidate.IVuelidate
7124
7237
  },
7125
7238
  props: {
@@ -7178,31 +7291,31 @@ var _sfc_main$4 = vue.defineComponent({
7178
7291
  }
7179
7292
  });
7180
7293
 
7181
- const _hoisted_1$4 = {
7294
+ const _hoisted_1$9 = {
7182
7295
  class: "row"
7183
7296
  };
7184
- const _hoisted_2$3 = {
7297
+ const _hoisted_2$8 = {
7185
7298
  class: "col-7"
7186
7299
  };
7187
- const _hoisted_3$3 = {
7300
+ const _hoisted_3$6 = {
7188
7301
  class: "col-5"
7189
7302
  };
7190
- const _hoisted_4$2 = [
7303
+ const _hoisted_4$4 = [
7191
7304
  "for"
7192
7305
  ];
7193
- const _hoisted_5 = [
7306
+ const _hoisted_5$1 = [
7194
7307
  "for"
7195
7308
  ];
7196
- const _hoisted_6 = [
7309
+ const _hoisted_6$1 = [
7197
7310
  "for"
7198
7311
  ];
7199
- function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7312
+ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
7200
7313
  const _component_AFormInputList = vue.resolveComponent("AFormInputList");
7201
7314
  const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
7202
7315
  const _component_IVuelidate = vue.resolveComponent("IVuelidate");
7203
7316
  const _component_VCFormInputCheckbox = vue.resolveComponent("VCFormInputCheckbox");
7204
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
7205
- vue.createElementVNode("div", _hoisted_2$3, [
7317
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
7318
+ vue.createElementVNode("div", _hoisted_2$8, [
7206
7319
  vue.createVNode(_component_IVuelidate, {
7207
7320
  validation: _ctx.vuelidate.attributeName
7208
7321
  }, {
@@ -7231,7 +7344,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7231
7344
  "validation"
7232
7345
  ])
7233
7346
  ]),
7234
- vue.createElementVNode("div", _hoisted_3$3, [
7347
+ vue.createElementVNode("div", _hoisted_3$6, [
7235
7348
  vue.createVNode(_component_IVuelidate, {
7236
7349
  validation: _ctx.vuelidate.attributeNameStrict
7237
7350
  }, {
@@ -7251,7 +7364,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7251
7364
  label: vue.withCtx((iProps)=>[
7252
7365
  vue.createElementVNode("label", {
7253
7366
  for: iProps.id
7254
- }, " Only match if the attribute is strict equal to the name? ", 8, _hoisted_4$2)
7367
+ }, " Only match if the attribute is strict equal to the name? ", 8, _hoisted_4$4)
7255
7368
  ]),
7256
7369
  _: 1
7257
7370
  }, 8, [
@@ -7292,7 +7405,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7292
7405
  vue.createTextVNode(" Determines if resources with null realm-id/name value should match all identity realms."),
7293
7406
  vue.createElementVNode("br", null, null, -1),
7294
7407
  vue.createTextVNode(" If true, any identity realm can access resources with null realm-id/name values. ")
7295
- ]), 8, _hoisted_5)
7408
+ ]), 8, _hoisted_5$1)
7296
7409
  ]),
7297
7410
  _: 1
7298
7411
  }, 8, [
@@ -7333,7 +7446,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7333
7446
  vue.createTextVNode(" Specifies whether the master realm of an identity should match all realm-id/name attributes, including null."),
7334
7447
  vue.createElementVNode("br", null, null, -1),
7335
7448
  vue.createTextVNode(" If true, the master realm can access any resource regardless of its realm value. ")
7336
- ]), 8, _hoisted_6)
7449
+ ]), 8, _hoisted_6$1)
7337
7450
  ]),
7338
7451
  _: 1
7339
7452
  }, 8, [
@@ -7354,17 +7467,17 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
7354
7467
  ])
7355
7468
  ]);
7356
7469
  }
7357
- var ARealmMatchPolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$4, [
7470
+ var ARealmMatchPolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$a, [
7358
7471
  [
7359
7472
  "render",
7360
- _sfc_render$4
7473
+ _sfc_render$9
7361
7474
  ]
7362
7475
  ]);
7363
7476
 
7364
- var _sfc_main$3 = vue.defineComponent({
7477
+ var _sfc_main$9 = vue.defineComponent({
7365
7478
  components: {
7366
- VCFormInput: formControls.VCFormInput,
7367
- VCFormGroup: formControls.VCFormGroup,
7479
+ VCFormInput: installFormControl.VCFormInput,
7480
+ VCFormGroup: installFormControl.VCFormGroup,
7368
7481
  IVuelidate: vuelidate.IVuelidate
7369
7482
  },
7370
7483
  props: {
@@ -7449,22 +7562,22 @@ var _sfc_main$3 = vue.defineComponent({
7449
7562
  }
7450
7563
  });
7451
7564
 
7452
- const _hoisted_1$3 = {
7565
+ const _hoisted_1$8 = {
7453
7566
  class: "row"
7454
7567
  };
7455
- const _hoisted_2$2 = {
7568
+ const _hoisted_2$7 = {
7456
7569
  key: 0,
7457
7570
  class: "col"
7458
7571
  };
7459
- const _hoisted_3$2 = {
7572
+ const _hoisted_3$5 = {
7460
7573
  key: 1,
7461
7574
  class: "col"
7462
7575
  };
7463
- const _hoisted_4$1 = {
7576
+ const _hoisted_4$3 = {
7464
7577
  key: 2,
7465
7578
  class: "col"
7466
7579
  };
7467
- function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7580
+ function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
7468
7581
  const _component_VCFormInput = vue.resolveComponent("VCFormInput");
7469
7582
  const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
7470
7583
  const _component_IVuelidate = vue.resolveComponent("IVuelidate");
@@ -7567,8 +7680,8 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7567
7680
  }, 8, [
7568
7681
  "validation"
7569
7682
  ]),
7570
- vue.createElementVNode("div", _hoisted_1$3, [
7571
- _ctx.displayIntervalForDayOfWeek ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [
7683
+ vue.createElementVNode("div", _hoisted_1$8, [
7684
+ _ctx.displayIntervalForDayOfWeek ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [
7572
7685
  vue.createVNode(_component_IVuelidate, {
7573
7686
  validation: _ctx.vuelidate.dayOfWeek
7574
7687
  }, {
@@ -7603,7 +7716,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7603
7716
  "validation"
7604
7717
  ])
7605
7718
  ])) : vue.createCommentVNode("", true),
7606
- _ctx.displayIntervalForDayOfMonth ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$2, [
7719
+ _ctx.displayIntervalForDayOfMonth ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$5, [
7607
7720
  vue.createVNode(_component_IVuelidate, {
7608
7721
  validation: _ctx.vuelidate.dayOfMonth
7609
7722
  }, {
@@ -7638,7 +7751,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7638
7751
  "validation"
7639
7752
  ])
7640
7753
  ])) : vue.createCommentVNode("", true),
7641
- _ctx.displayIntervalForDayOfYear ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, [
7754
+ _ctx.displayIntervalForDayOfYear ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, [
7642
7755
  vue.createVNode(_component_IVuelidate, {
7643
7756
  validation: _ctx.vuelidate.dayOfYear
7644
7757
  }, {
@@ -7676,10 +7789,10 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
7676
7789
  ])
7677
7790
  ]);
7678
7791
  }
7679
- var ATimePolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$3, [
7792
+ var ATimePolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$9, [
7680
7793
  [
7681
7794
  "render",
7682
- _sfc_render$3
7795
+ _sfc_render$8
7683
7796
  ]
7684
7797
  ]);
7685
7798
 
@@ -7702,7 +7815,7 @@ const APolicy = vue.defineComponent({
7702
7815
  }
7703
7816
  });
7704
7817
 
7705
- var _sfc_main$2 = vue.defineComponent({
7818
+ var _sfc_main$8 = vue.defineComponent({
7706
7819
  props: {
7707
7820
  type: {
7708
7821
  type: String
@@ -7748,20 +7861,20 @@ var _sfc_main$2 = vue.defineComponent({
7748
7861
  }
7749
7862
  });
7750
7863
 
7751
- const _hoisted_1$2 = {
7864
+ const _hoisted_1$7 = {
7752
7865
  class: "d-flex flex-column gap-2"
7753
7866
  };
7754
- const _hoisted_2$1 = {
7867
+ const _hoisted_2$6 = {
7755
7868
  class: "d-flex flex-row gap-2 flex-wrap"
7756
7869
  };
7757
- const _hoisted_3$1 = [
7870
+ const _hoisted_3$4 = [
7758
7871
  "onClick"
7759
7872
  ];
7760
- function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
7761
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
7873
+ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
7874
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
7762
7875
  vue.createElementVNode("div", null, [
7763
7876
  _cache[0] || (_cache[0] = vue.createElementVNode("h6", null, "Type", -1)),
7764
- vue.createElementVNode("div", _hoisted_2$1, [
7877
+ vue.createElementVNode("div", _hoisted_2$6, [
7765
7878
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.options, (item, key)=>{
7766
7879
  return vue.openBlock(), vue.createElementBlock("div", {
7767
7880
  key,
@@ -7776,16 +7889,16 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
7776
7889
  ])
7777
7890
  }, [
7778
7891
  vue.createElementVNode("div", null, vue.toDisplayString(item.value), 1)
7779
- ], 10, _hoisted_3$1);
7892
+ ], 10, _hoisted_3$4);
7780
7893
  }), 128))
7781
7894
  ])
7782
7895
  ])
7783
7896
  ]);
7784
7897
  }
7785
- var APolicyTypePicker = /* @__PURE__ */ _export_sfc(_sfc_main$2, [
7898
+ var APolicyTypePicker = /* @__PURE__ */ _export_sfc(_sfc_main$8, [
7786
7899
  [
7787
7900
  "render",
7788
- _sfc_render$2
7901
+ _sfc_render$7
7789
7902
  ],
7790
7903
  [
7791
7904
  "__scopeId",
@@ -7793,12 +7906,12 @@ var APolicyTypePicker = /* @__PURE__ */ _export_sfc(_sfc_main$2, [
7793
7906
  ]
7794
7907
  ]);
7795
7908
 
7796
- var _sfc_main$1 = vue.defineComponent({
7909
+ var _sfc_main$7 = vue.defineComponent({
7797
7910
  components: {
7798
7911
  ARealmPicker,
7799
- VCFormInput: formControls.VCFormInput,
7800
- VCFormInputCheckbox: formControls.VCFormInputCheckbox,
7801
- VCFormGroup: formControls.VCFormGroup,
7912
+ VCFormInput: installFormControl.VCFormInput,
7913
+ VCFormInputCheckbox: installFormControl.VCFormInputCheckbox,
7914
+ VCFormGroup: installFormControl.VCFormGroup,
7802
7915
  IVuelidate: vuelidate.IVuelidate
7803
7916
  },
7804
7917
  props: {
@@ -7877,28 +7990,28 @@ var _sfc_main$1 = vue.defineComponent({
7877
7990
  }
7878
7991
  });
7879
7992
 
7880
- const _hoisted_1$1 = {
7993
+ const _hoisted_1$6 = {
7881
7994
  class: "row"
7882
7995
  };
7883
- const _hoisted_2 = {
7996
+ const _hoisted_2$5 = {
7884
7997
  class: "col"
7885
7998
  };
7886
- const _hoisted_3 = [
7999
+ const _hoisted_3$3 = [
7887
8000
  "for"
7888
8001
  ];
7889
- const _hoisted_4 = {
8002
+ const _hoisted_4$2 = {
7890
8003
  key: 0,
7891
8004
  class: "col"
7892
8005
  };
7893
- function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
8006
+ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
7894
8007
  const _component_VCFormInput = vue.resolveComponent("VCFormInput");
7895
8008
  const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
7896
8009
  const _component_IVuelidate = vue.resolveComponent("IVuelidate");
7897
8010
  const _component_VCFormTextarea = vue.resolveComponent("VCFormTextarea");
7898
8011
  const _component_VCFormInputCheckbox = vue.resolveComponent("VCFormInputCheckbox");
7899
8012
  const _component_ARealmPicker = vue.resolveComponent("ARealmPicker");
7900
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
7901
- vue.createElementVNode("div", _hoisted_2, [
8013
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
8014
+ vue.createElementVNode("div", _hoisted_2$5, [
7902
8015
  vue.createVNode(_component_IVuelidate, {
7903
8016
  validation: _ctx.vuelidate.name
7904
8017
  }, {
@@ -8012,7 +8125,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
8012
8125
  label: vue.withCtx((iProps)=>[
8013
8126
  vue.createElementVNode("label", {
8014
8127
  for: iProps.id
8015
- }, " Invert? ", 8, _hoisted_3)
8128
+ }, " Invert? ", 8, _hoisted_3$3)
8016
8129
  ]),
8017
8130
  _: 1
8018
8131
  }, 8, [
@@ -8031,7 +8144,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
8031
8144
  "validation"
8032
8145
  ])
8033
8146
  ]),
8034
- !_ctx.realmId && !_ctx.isEditing ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4, [
8147
+ !_ctx.realmId && !_ctx.isEditing ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
8035
8148
  vue.createVNode(_component_IVuelidate, {
8036
8149
  validation: _ctx.vuelidate.invert
8037
8150
  }, {
@@ -8066,14 +8179,14 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
8066
8179
  ])) : vue.createCommentVNode("", true)
8067
8180
  ]);
8068
8181
  }
8069
- var APolicyBasicForm = /* @__PURE__ */ _export_sfc(_sfc_main$1, [
8182
+ var APolicyBasicForm = /* @__PURE__ */ _export_sfc(_sfc_main$7, [
8070
8183
  [
8071
8184
  "render",
8072
- _sfc_render$1
8185
+ _sfc_render$6
8073
8186
  ]
8074
8187
  ]);
8075
8188
 
8076
- var _sfc_main = vue.defineComponent({
8189
+ var _sfc_main$6 = vue.defineComponent({
8077
8190
  components: {
8078
8191
  AFormSubmit,
8079
8192
  APolicyTypePicker,
@@ -8149,13 +8262,13 @@ var _sfc_main = vue.defineComponent({
8149
8262
  }
8150
8263
  });
8151
8264
 
8152
- const _hoisted_1 = {
8265
+ const _hoisted_1$5 = {
8153
8266
  class: "d-flex flex-column"
8154
8267
  };
8155
- function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
8268
+ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
8156
8269
  const _component_APolicyBasicForm = vue.resolveComponent("APolicyBasicForm");
8157
8270
  const _component_AFormSubmit = vue.resolveComponent("AFormSubmit");
8158
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
8271
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
8159
8272
  _cache[0] || (_cache[0] = vue.createElementVNode("h6", null, "General", -1)),
8160
8273
  vue.createVNode(_component_APolicyBasicForm, {
8161
8274
  entity: _ctx.data
@@ -8188,10 +8301,10 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
8188
8301
  ])
8189
8302
  ]);
8190
8303
  }
8191
- var APolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main, [
8304
+ var APolicyForm = /* @__PURE__ */ _export_sfc(_sfc_main$6, [
8192
8305
  [
8193
8306
  "render",
8194
- _sfc_render
8307
+ _sfc_render$5
8195
8308
  ]
8196
8309
  ]);
8197
8310
 
@@ -8379,12 +8492,12 @@ const ARobotForm = vue.defineComponent({
8379
8492
  }
8380
8493
  ]);
8381
8494
  const render = ()=>{
8382
- const name = formControls.buildFormGroup({
8495
+ const name = installFormControl.buildFormGroup({
8383
8496
  validationMessages: translationsValidation.name.value,
8384
8497
  validationSeverity: getVuelidateSeverity($v.value.name),
8385
8498
  label: true,
8386
8499
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
8387
- content: formControls.buildFormInput({
8500
+ content: installFormControl.buildFormInput({
8388
8501
  value: $v.value.name.$model,
8389
8502
  onChange (input) {
8390
8503
  $v.value.name.$model = input;
@@ -8394,12 +8507,12 @@ const ARobotForm = vue.defineComponent({
8394
8507
  }
8395
8508
  })
8396
8509
  });
8397
- const displayName = formControls.buildFormGroup({
8510
+ const displayName = installFormControl.buildFormGroup({
8398
8511
  validationMessages: translationsValidation.display_name.value,
8399
8512
  validationSeverity: getVuelidateSeverity($v.value.display_name),
8400
8513
  label: true,
8401
8514
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
8402
- content: formControls.buildFormInput({
8515
+ content: installFormControl.buildFormInput({
8403
8516
  value: $v.value.display_name.$model,
8404
8517
  onChange (input) {
8405
8518
  $v.value.display_name.$model = input;
@@ -8409,10 +8522,10 @@ const ARobotForm = vue.defineComponent({
8409
8522
  let id = [];
8410
8523
  if (manager.data.value) {
8411
8524
  id = [
8412
- formControls.buildFormGroup({
8525
+ installFormControl.buildFormGroup({
8413
8526
  label: true,
8414
8527
  labelContent: 'ID',
8415
- content: formControls.buildFormInput({
8528
+ content: installFormControl.buildFormInput({
8416
8529
  value: manager.data.value.id,
8417
8530
  props: {
8418
8531
  disabled: true
@@ -8421,7 +8534,7 @@ const ARobotForm = vue.defineComponent({
8421
8534
  })
8422
8535
  ];
8423
8536
  }
8424
- const secret = formControls.buildFormGroup({
8537
+ const secret = installFormControl.buildFormGroup({
8425
8538
  validationMessages: translationsValidation.secret.value,
8426
8539
  validationSeverity: getVuelidateSeverity($v.value.secret),
8427
8540
  label: true,
@@ -8437,7 +8550,7 @@ const ARobotForm = vue.defineComponent({
8437
8550
  })
8438
8551
  ]) : ''
8439
8552
  ],
8440
- content: formControls.buildFormInput({
8553
+ content: installFormControl.buildFormInput({
8441
8554
  value: $v.value.secret.$model,
8442
8555
  onChange (input) {
8443
8556
  $v.value.secret.$model = input;
@@ -8828,12 +8941,12 @@ const AUserForm = vue.defineComponent({
8828
8941
  }
8829
8942
  ]);
8830
8943
  const render = ()=>{
8831
- const name = formControls.buildFormGroup({
8944
+ const name = installFormControl.buildFormGroup({
8832
8945
  validationMessages: translationsValidation.name.value,
8833
8946
  validationSeverity: getVuelidateSeverity($v.value.name),
8834
8947
  label: true,
8835
8948
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.NAME].value,
8836
- content: formControls.buildFormInput({
8949
+ content: installFormControl.buildFormInput({
8837
8950
  value: $v.value.name.$model,
8838
8951
  onChange (input) {
8839
8952
  $v.value.name.$model = input;
@@ -8843,24 +8956,24 @@ const AUserForm = vue.defineComponent({
8843
8956
  }
8844
8957
  })
8845
8958
  });
8846
- const displayName = formControls.buildFormGroup({
8959
+ const displayName = installFormControl.buildFormGroup({
8847
8960
  validationMessages: translationsValidation.display_name.value,
8848
8961
  validationSeverity: getVuelidateSeverity($v.value.display_name),
8849
8962
  label: true,
8850
8963
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.DISPLAY_NAME].value,
8851
- content: formControls.buildFormInput({
8964
+ content: installFormControl.buildFormInput({
8852
8965
  value: $v.value.display_name.$model,
8853
8966
  onChange (input) {
8854
8967
  $v.value.display_name.$model = input;
8855
8968
  }
8856
8969
  })
8857
8970
  });
8858
- const email = formControls.buildFormGroup({
8971
+ const email = installFormControl.buildFormGroup({
8859
8972
  validationMessages: translationsValidation.email.value,
8860
8973
  validationSeverity: getVuelidateSeverity($v.value.email),
8861
8974
  label: true,
8862
8975
  labelContent: translationsDefault[TranslatorTranslationDefaultKey.EMAIL].value,
8863
- content: formControls.buildFormInput({
8976
+ content: installFormControl.buildFormInput({
8864
8977
  value: $v.value.email.$model,
8865
8978
  props: {
8866
8979
  type: 'email',
@@ -8876,7 +8989,7 @@ const AUserForm = vue.defineComponent({
8876
8989
  let nameLock = [];
8877
8990
  if (props.entity) {
8878
8991
  nameLock = [
8879
- formControls.buildFormInputCheckbox({
8992
+ installFormControl.buildFormInputCheckbox({
8880
8993
  groupClass: 'form-switch mt-3',
8881
8994
  labelContent: vue.h('span', {
8882
8995
  class: {
@@ -8900,7 +9013,7 @@ const AUserForm = vue.defineComponent({
8900
9013
  vue.h('div', {
8901
9014
  class: 'col'
8902
9015
  }, [
8903
- formControls.buildFormInputCheckbox({
9016
+ installFormControl.buildFormInputCheckbox({
8904
9017
  groupClass: 'form-switch mt-3',
8905
9018
  labelContent: vue.h('span', {
8906
9019
  class: {
@@ -9060,12 +9173,12 @@ const AUserPasswordForm = vue.defineComponent({
9060
9173
  const validationMessages = useTranslationsForNestedValidation($v.value);
9061
9174
  const submitTranslations = createFormSubmitTranslations();
9062
9175
  const render = ()=>{
9063
- const password = formControls.buildFormGroup({
9176
+ const password = installFormControl.buildFormGroup({
9064
9177
  validationMessages: validationMessages.password.value,
9065
9178
  validationSeverity: getVuelidateSeverity($v.value.password),
9066
9179
  label: true,
9067
9180
  labelContent: 'Password',
9068
- content: formControls.buildFormInput({
9181
+ content: installFormControl.buildFormInput({
9069
9182
  value: $v.value.password.$model,
9070
9183
  onChange (input) {
9071
9184
  $v.value.password.$model = input;
@@ -9076,12 +9189,12 @@ const AUserPasswordForm = vue.defineComponent({
9076
9189
  }
9077
9190
  })
9078
9191
  });
9079
- const passwordRepeat = formControls.buildFormGroup({
9192
+ const passwordRepeat = installFormControl.buildFormGroup({
9080
9193
  validationMessages: validationMessages.password_repeat.value,
9081
9194
  validationSeverity: getVuelidateSeverity($v.value.password_repeat),
9082
9195
  label: true,
9083
9196
  labelContent: 'Password repeat',
9084
- content: formControls.buildFormInput({
9197
+ content: installFormControl.buildFormInput({
9085
9198
  value: $v.value.password_repeat.$model,
9086
9199
  onChange (input) {
9087
9200
  $v.value.password_repeat.$model = input;
@@ -9092,7 +9205,7 @@ const AUserPasswordForm = vue.defineComponent({
9092
9205
  }
9093
9206
  })
9094
9207
  });
9095
- const showPassword = formControls.buildFormInputCheckbox({
9208
+ const showPassword = installFormControl.buildFormInputCheckbox({
9096
9209
  groupClass: 'mt-3',
9097
9210
  labelContent: [
9098
9211
  'Password ',
@@ -9448,6 +9561,11 @@ function install(app, options) {
9448
9561
  cookieGet: options.cookieGet,
9449
9562
  cookieUnset: options.cookieUnset
9450
9563
  });
9564
+ installHTTPClientAuthenticationHook(app, {
9565
+ pinia: options.pinia,
9566
+ baseURL: options.baseURL,
9567
+ isServer: options.isServer
9568
+ });
9451
9569
  installHTTPClient(app, {
9452
9570
  pinia: options.pinia,
9453
9571
  baseURL: options.baseURL,
@@ -9457,13 +9575,773 @@ function install(app, options) {
9457
9575
  locale: options.translatorLocale
9458
9576
  });
9459
9577
  installComponents(app, options.components);
9578
+ installStoreManager(app);
9579
+ app.use(installFormControl);
9580
+ app.use(installPagination);
9460
9581
  }
9461
9582
 
9583
+ var _sfc_main$5 = vue.defineComponent({
9584
+ components: {
9585
+ ARealmPicker,
9586
+ APagination,
9587
+ ATitle,
9588
+ IVuelidate: vuelidate.IVuelidate,
9589
+ AIdentityProviders,
9590
+ AIdentityProviderIcon
9591
+ },
9592
+ props: {
9593
+ codeRequest: {
9594
+ type: Object
9595
+ }
9596
+ },
9597
+ emits: [
9598
+ 'done',
9599
+ 'failed'
9600
+ ],
9601
+ setup (props, { emit }) {
9602
+ const apiClient = injectHTTPClient();
9603
+ const store = injectStore();
9604
+ const form = vue.reactive({
9605
+ name: '',
9606
+ password: '',
9607
+ realm_id: ''
9608
+ });
9609
+ const vuelidate = useVuelidate({
9610
+ name: {
9611
+ required: validators.required,
9612
+ minLength: validators.minLength(3),
9613
+ maxLength: validators.maxLength(255)
9614
+ },
9615
+ password: {
9616
+ required: validators.required,
9617
+ minLength: validators.minLength(3),
9618
+ maxLength: validators.maxLength(255)
9619
+ },
9620
+ realm_id: {}
9621
+ }, form);
9622
+ const busy = vue.ref(false);
9623
+ const realmId = vue.computed(()=>{
9624
+ if (props.codeRequest && props.codeRequest.realm_id) {
9625
+ return props.codeRequest.realm_id;
9626
+ }
9627
+ return form.realm_id;
9628
+ });
9629
+ const identityProviderQuery = vue.ref({});
9630
+ const resetIdentityProviderQuery = ()=>{
9631
+ identityProviderQuery.value = {
9632
+ filters: {
9633
+ realm_id: realmId.value || '',
9634
+ protocol: `!${coreKit.IdentityProviderProtocol.LDAP}`,
9635
+ enabled: true
9636
+ }
9637
+ };
9638
+ };
9639
+ resetIdentityProviderQuery();
9640
+ const identityProviderRef = vue.ref(null);
9641
+ const updateIdentityProviderList = ()=>{
9642
+ if (identityProviderRef.value) {
9643
+ identityProviderRef.value.load();
9644
+ }
9645
+ };
9646
+ const updateRealmId = (realmId)=>{
9647
+ form.realm_id = Array.isArray(realmId) ? realmId[0] : realmId;
9648
+ resetIdentityProviderQuery();
9649
+ vue.nextTick(()=>{
9650
+ updateIdentityProviderList();
9651
+ });
9652
+ };
9653
+ const submit = async ()=>{
9654
+ try {
9655
+ await store.login({
9656
+ name: form.name,
9657
+ password: form.password,
9658
+ realmId: form.realm_id
9659
+ });
9660
+ emit('done');
9661
+ } catch (e) {
9662
+ emit('failed', e instanceof Error ? e.message : 'The login operation failed');
9663
+ }
9664
+ };
9665
+ const buildIdentityProviderURL = (id)=>{
9666
+ let authorizeURL = apiClient.identityProvider.getAuthorizeUri(id);
9667
+ if (props.codeRequest) {
9668
+ const serialized = kit.base64URLEncode(JSON.stringify(props.codeRequest));
9669
+ authorizeURL += `?codeRequest=${serialized}`;
9670
+ }
9671
+ return authorizeURL;
9672
+ };
9673
+ return {
9674
+ updateRealmId,
9675
+ vuelidate,
9676
+ form,
9677
+ submit,
9678
+ busy,
9679
+ identityProviderQuery,
9680
+ identityProviderRef,
9681
+ buildIdentityProviderURL
9682
+ };
9683
+ }
9684
+ });
9685
+
9686
+ const _hoisted_1$4 = {
9687
+ class: "d-flex flex-row"
9688
+ };
9689
+ const _hoisted_2$4 = [
9690
+ "href"
9691
+ ];
9692
+ const _hoisted_3$2 = {
9693
+ class: "d-flex flex-column"
9694
+ };
9695
+ const _hoisted_4$1 = {
9696
+ class: "text-center mb-1"
9697
+ };
9698
+ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
9699
+ const _component_VCFormInput = vue.resolveComponent("VCFormInput");
9700
+ const _component_VCFormGroup = vue.resolveComponent("VCFormGroup");
9701
+ const _component_IVuelidate = vue.resolveComponent("IVuelidate");
9702
+ const _component_VCFormSubmit = vue.resolveComponent("VCFormSubmit");
9703
+ const _component_ARealmPicker = vue.resolveComponent("ARealmPicker");
9704
+ const _component_ATitle = vue.resolveComponent("ATitle");
9705
+ const _component_APagination = vue.resolveComponent("APagination");
9706
+ const _component_AIdentityProviderIcon = vue.resolveComponent("AIdentityProviderIcon");
9707
+ const _component_AIdentityProviders = vue.resolveComponent("AIdentityProviders");
9708
+ return vue.openBlock(), vue.createElementBlock("div", null, [
9709
+ _cache[7] || (_cache[7] = vue.createElementVNode("div", {
9710
+ class: "text-center"
9711
+ }, [
9712
+ vue.createElementVNode("h1", {
9713
+ class: "fw-bold"
9714
+ }, " Login ")
9715
+ ], -1)),
9716
+ vue.createElementVNode("form", {
9717
+ onSubmit: _cache[3] || (_cache[3] = vue.withModifiers((...args)=>_ctx.submit && _ctx.submit(...args), [
9718
+ "prevent"
9719
+ ]))
9720
+ }, [
9721
+ vue.createVNode(_component_IVuelidate, {
9722
+ validation: _ctx.vuelidate.name
9723
+ }, {
9724
+ default: vue.withCtx((props)=>[
9725
+ vue.createVNode(_component_VCFormGroup, {
9726
+ "validation-messages": props.data,
9727
+ "validation-severity": props.severity
9728
+ }, {
9729
+ label: vue.withCtx(()=>_cache[4] || (_cache[4] = [
9730
+ vue.createTextVNode(" Name ")
9731
+ ])),
9732
+ default: vue.withCtx(()=>[
9733
+ vue.createVNode(_component_VCFormInput, {
9734
+ modelValue: _ctx.vuelidate.name.$model,
9735
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event)=>_ctx.vuelidate.name.$model = $event)
9736
+ }, null, 8, [
9737
+ "modelValue"
9738
+ ])
9739
+ ]),
9740
+ _: 2
9741
+ }, 1032, [
9742
+ "validation-messages",
9743
+ "validation-severity"
9744
+ ])
9745
+ ]),
9746
+ _: 1
9747
+ }, 8, [
9748
+ "validation"
9749
+ ]),
9750
+ vue.createVNode(_component_IVuelidate, {
9751
+ validation: _ctx.vuelidate.password
9752
+ }, {
9753
+ default: vue.withCtx((props)=>[
9754
+ vue.createVNode(_component_VCFormGroup, {
9755
+ "validation-messages": props.data,
9756
+ "validation-severity": props.severity
9757
+ }, {
9758
+ label: vue.withCtx(()=>_cache[5] || (_cache[5] = [
9759
+ vue.createTextVNode(" Password ")
9760
+ ])),
9761
+ default: vue.withCtx(()=>[
9762
+ vue.createVNode(_component_VCFormInput, {
9763
+ modelValue: _ctx.vuelidate.password.$model,
9764
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event)=>_ctx.vuelidate.password.$model = $event),
9765
+ type: "password"
9766
+ }, null, 8, [
9767
+ "modelValue"
9768
+ ])
9769
+ ]),
9770
+ _: 2
9771
+ }, 1032, [
9772
+ "validation-messages",
9773
+ "validation-severity"
9774
+ ])
9775
+ ]),
9776
+ _: 1
9777
+ }, 8, [
9778
+ "validation"
9779
+ ]),
9780
+ vue.createVNode(_component_VCFormSubmit, {
9781
+ modelValue: _ctx.busy,
9782
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event)=>_ctx.busy = $event),
9783
+ invalid: _ctx.vuelidate.$invalid,
9784
+ "create-text": "Submit",
9785
+ "create-button-class": {
9786
+ value: "btn btn-sm btn-dark btn-block",
9787
+ presets: {
9788
+ bootstrap: false
9789
+ }
9790
+ },
9791
+ "create-icon-class": "fa-solid fa-right-to-bracket",
9792
+ submit: _ctx.submit
9793
+ }, null, 8, [
9794
+ "modelValue",
9795
+ "invalid",
9796
+ "submit"
9797
+ ]),
9798
+ _cache[6] || (_cache[6] = vue.createElementVNode("hr", null, null, -1)),
9799
+ !_ctx.codeRequest || !_ctx.codeRequest.realm_id ? (vue.openBlock(), vue.createBlock(_component_ARealmPicker, {
9800
+ key: 0,
9801
+ value: _ctx.form.realm_id,
9802
+ onChange: _ctx.updateRealmId
9803
+ }, null, 8, [
9804
+ "value",
9805
+ "onChange"
9806
+ ])) : vue.createCommentVNode("", true),
9807
+ vue.createVNode(_component_AIdentityProviders, {
9808
+ ref: "identityProviderRef",
9809
+ query: _ctx.identityProviderQuery,
9810
+ footer: false
9811
+ }, {
9812
+ header: vue.withCtx(()=>[
9813
+ vue.createVNode(_component_ATitle, {
9814
+ text: "Identity Providers"
9815
+ })
9816
+ ]),
9817
+ footer: vue.withCtx((props)=>[
9818
+ vue.createVNode(_component_APagination, {
9819
+ busy: props.busy,
9820
+ meta: props.meta,
9821
+ load: props.load,
9822
+ total: props.total
9823
+ }, null, 8, [
9824
+ "busy",
9825
+ "meta",
9826
+ "load",
9827
+ "total"
9828
+ ])
9829
+ ]),
9830
+ body: vue.withCtx((props)=>[
9831
+ vue.createElementVNode("div", _hoisted_1$4, [
9832
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(props.data, (item, key)=>{
9833
+ return vue.openBlock(), vue.createElementBlock("div", {
9834
+ key
9835
+ }, [
9836
+ vue.createElementVNode("a", {
9837
+ href: _ctx.buildIdentityProviderURL(item.id),
9838
+ class: "btn btn-dark btn-xs p-2 me-1 identity-provider-box bg-dark"
9839
+ }, [
9840
+ vue.createElementVNode("div", _hoisted_3$2, [
9841
+ vue.createElementVNode("div", _hoisted_4$1, [
9842
+ vue.createVNode(_component_AIdentityProviderIcon, {
9843
+ class: "fa-2x",
9844
+ entity: item
9845
+ }, null, 8, [
9846
+ "entity"
9847
+ ])
9848
+ ]),
9849
+ vue.createElementVNode("div", null, vue.toDisplayString(item.name), 1)
9850
+ ])
9851
+ ], 8, _hoisted_2$4)
9852
+ ]);
9853
+ }), 128))
9854
+ ])
9855
+ ]),
9856
+ _: 1
9857
+ }, 8, [
9858
+ "query"
9859
+ ])
9860
+ ], 32)
9861
+ ]);
9862
+ }
9863
+ var Login = /* @__PURE__ */ _export_sfc(_sfc_main$5, [
9864
+ [
9865
+ "render",
9866
+ _sfc_render$4
9867
+ ],
9868
+ [
9869
+ "__scopeId",
9870
+ "data-v-957a0486"
9871
+ ]
9872
+ ]);
9873
+
9874
+ var _sfc_main$4 = vue.defineComponent({
9875
+ props: {
9876
+ entity: {
9877
+ type: Object,
9878
+ required: true
9879
+ },
9880
+ requested: {
9881
+ type: Array,
9882
+ default: ()=>[]
9883
+ }
9884
+ },
9885
+ setup (props) {
9886
+ const isEnabled = vue.computed(()=>props.requested.indexOf(props.entity.name) !== -1);
9887
+ return {
9888
+ isEnabled
9889
+ };
9890
+ }
9891
+ });
9892
+
9893
+ const _hoisted_1$3 = {
9894
+ class: "text-center"
9895
+ };
9896
+ const _hoisted_2$3 = {
9897
+ key: 0
9898
+ };
9899
+ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
9900
+ return vue.openBlock(), vue.createElementBlock("div", null, [
9901
+ vue.createElementVNode("div", _hoisted_1$3, [
9902
+ vue.createElementVNode("i", {
9903
+ class: vue.normalizeClass([
9904
+ "fa-solid",
9905
+ {
9906
+ "fa-check text-success": _ctx.isEnabled,
9907
+ "fa-times text-danger": !_ctx.isEnabled
9908
+ }
9909
+ ])
9910
+ }, null, 2)
9911
+ ]),
9912
+ vue.createElementVNode("div", null, [
9913
+ vue.createElementVNode("strong", null, vue.toDisplayString(_ctx.entity.name), 1),
9914
+ _ctx.entity.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_2$3, vue.toDisplayString(_ctx.entity.description), 1)) : vue.createCommentVNode("", true)
9915
+ ])
9916
+ ]);
9917
+ }
9918
+ var AuthorizeScope = /* @__PURE__ */ _export_sfc(_sfc_main$4, [
9919
+ [
9920
+ "render",
9921
+ _sfc_render$3
9922
+ ]
9923
+ ]);
9924
+
9925
+ var _sfc_main$3 = vue.defineComponent({
9926
+ components: {
9927
+ AuthorizeScope
9928
+ },
9929
+ props: {
9930
+ client: {
9931
+ type: Object,
9932
+ required: true
9933
+ },
9934
+ scopesAvailable: {
9935
+ type: Array
9936
+ },
9937
+ scopesRequested: {
9938
+ type: [
9939
+ String,
9940
+ Array
9941
+ ]
9942
+ }
9943
+ },
9944
+ setup (props) {
9945
+ const httpClient = injectHTTPClient();
9946
+ const scopesRequestedNormalized = vue.computed(()=>{
9947
+ if (!props.scopesRequested) {
9948
+ return [];
9949
+ }
9950
+ return Array.isArray(props.scopesRequested) ? props.scopesRequested : specs.deserializeOAuth2Scope(props.scopesRequested);
9951
+ });
9952
+ const scopesAvailableNormalized = vue.ref([]);
9953
+ const resolveScopesAvailable = async ()=>{
9954
+ if (props.scopesAvailable) {
9955
+ scopesAvailableNormalized.value = props.scopesAvailable;
9956
+ return;
9957
+ }
9958
+ if (props.client.id) {
9959
+ const { data: clientScopes } = await httpClient.clientScope.getMany({
9960
+ filters: {
9961
+ client_id: props.client.id
9962
+ },
9963
+ include: [
9964
+ 'scope'
9965
+ ]
9966
+ });
9967
+ scopesAvailableNormalized.value = clientScopes.map((clientScope)=>clientScope.scope);
9968
+ }
9969
+ };
9970
+ Promise.resolve().then(()=>resolveScopesAvailable());
9971
+ return {
9972
+ scopesRequestedNormalized,
9973
+ scopesAvailableNormalized
9974
+ };
9975
+ }
9976
+ });
9977
+
9978
+ const _hoisted_1$2 = {
9979
+ key: 0
9980
+ };
9981
+ const _hoisted_2$2 = {
9982
+ class: "flex-column"
9983
+ };
9984
+ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
9985
+ const _component_AuthorizeScope = vue.resolveComponent("AuthorizeScope");
9986
+ return _ctx.scopesAvailableNormalized.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
9987
+ vue.createElementVNode("div", null, [
9988
+ _cache[0] || (_cache[0] = vue.createTextVNode(" This will allow the ")),
9989
+ vue.createElementVNode("strong", null, vue.toDisplayString(_ctx.client.name), 1),
9990
+ _cache[1] || (_cache[1] = vue.createTextVNode(" application to "))
9991
+ ]),
9992
+ vue.createElementVNode("div", _hoisted_2$2, [
9993
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.scopesAvailableNormalized, (item)=>{
9994
+ return vue.openBlock(), vue.createBlock(_component_AuthorizeScope, {
9995
+ key: item.id,
9996
+ entity: item,
9997
+ class: "d-flex flex-row gap-1",
9998
+ requested: _ctx.scopesRequestedNormalized
9999
+ }, null, 8, [
10000
+ "entity",
10001
+ "requested"
10002
+ ]);
10003
+ }), 128))
10004
+ ])
10005
+ ])) : vue.createCommentVNode("", true);
10006
+ }
10007
+ var AuthorizeScopes = /* @__PURE__ */ _export_sfc(_sfc_main$3, [
10008
+ [
10009
+ "render",
10010
+ _sfc_render$2
10011
+ ]
10012
+ ]);
10013
+
10014
+ var _sfc_main$2 = vue.defineComponent({
10015
+ components: {
10016
+ AuthorizeScopes
10017
+ },
10018
+ props: {
10019
+ client: {
10020
+ type: Object,
10021
+ required: true
10022
+ },
10023
+ scopes: {
10024
+ type: Array
10025
+ },
10026
+ codeRequest: {
10027
+ type: Object,
10028
+ required: true
10029
+ }
10030
+ },
10031
+ setup (props) {
10032
+ const httpClient = injectHTTPClient();
10033
+ const abort = ()=>{
10034
+ const url = new URL(`${props.codeRequest.redirect_uri}`);
10035
+ url.searchParams.set('error', 'access_denied');
10036
+ url.searchParams.set('error_description', 'The resource owner or authorization server denied the request');
10037
+ if (props.codeRequest.state) {
10038
+ url.searchParams.set('state', props.codeRequest.state);
10039
+ }
10040
+ if (typeof window !== 'undefined') {
10041
+ window.location.href = url.href;
10042
+ }
10043
+ };
10044
+ const authorize = async ()=>{
10045
+ try {
10046
+ const response = await httpClient.authorize.confirm({
10047
+ response_type: props.codeRequest.response_type,
10048
+ client_id: props.client.id,
10049
+ redirect_uri: props.codeRequest.redirect_uri,
10050
+ ...props.codeRequest.state ? {
10051
+ state: props.codeRequest.state
10052
+ } : {},
10053
+ ...props.codeRequest.scope ? {
10054
+ scope: props.codeRequest.scope
10055
+ } : {}
10056
+ });
10057
+ const { url } = response;
10058
+ if (typeof window !== 'undefined') {
10059
+ window.location.href = url;
10060
+ }
10061
+ } catch (e) {
10062
+ // todo: show toast :)
10063
+ }
10064
+ };
10065
+ return {
10066
+ authorize,
10067
+ abort
10068
+ };
10069
+ }
10070
+ });
10071
+
10072
+ const _hoisted_1$1 = {
10073
+ class: "flex-column d-flex gap-2"
10074
+ };
10075
+ const _hoisted_2$1 = {
10076
+ class: "text-center"
10077
+ };
10078
+ const _hoisted_3$1 = {
10079
+ class: "fw-bold"
10080
+ };
10081
+ const _hoisted_4 = {
10082
+ class: "mt-auto"
10083
+ };
10084
+ const _hoisted_5 = {
10085
+ class: "d-flex flex-row"
10086
+ };
10087
+ const _hoisted_6 = {
10088
+ class: "ms-1"
10089
+ };
10090
+ const _hoisted_7 = {
10091
+ class: "d-flex flex-row"
10092
+ };
10093
+ const _hoisted_8 = {
10094
+ class: "ms-1"
10095
+ };
10096
+ const _hoisted_9 = {
10097
+ class: "d-flex flex-row"
10098
+ };
10099
+ const _hoisted_10 = {
10100
+ class: "ms-1"
10101
+ };
10102
+ const _hoisted_11 = {
10103
+ class: "row"
10104
+ };
10105
+ const _hoisted_12 = {
10106
+ class: "col-6"
10107
+ };
10108
+ const _hoisted_13 = {
10109
+ class: "col-6"
10110
+ };
10111
+ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
10112
+ const _component_AuthorizeScopes = vue.resolveComponent("AuthorizeScopes");
10113
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
10114
+ vue.createElementVNode("div", _hoisted_2$1, [
10115
+ _cache[2] || (_cache[2] = vue.createElementVNode("h5", {
10116
+ class: "text-secondary mb-1"
10117
+ }, " Application ", -1)),
10118
+ vue.createElementVNode("h1", _hoisted_3$1, vue.toDisplayString(_ctx.client.name), 1)
10119
+ ]),
10120
+ vue.createVNode(_component_AuthorizeScopes, {
10121
+ client: _ctx.client,
10122
+ "scopes-requested": _ctx.codeRequest.scope,
10123
+ "scopes-available": _ctx.scopes
10124
+ }, null, 8, [
10125
+ "client",
10126
+ "scopes-requested",
10127
+ "scopes-available"
10128
+ ]),
10129
+ vue.createElementVNode("div", _hoisted_4, [
10130
+ vue.createElementVNode("div", _hoisted_5, [
10131
+ _cache[4] || (_cache[4] = vue.createElementVNode("div", null, [
10132
+ vue.createElementVNode("i", {
10133
+ class: "fa-solid fa-link"
10134
+ })
10135
+ ], -1)),
10136
+ vue.createElementVNode("div", _hoisted_6, [
10137
+ vue.createElementVNode("small", null, [
10138
+ _cache[3] || (_cache[3] = vue.createTextVNode(" Once authorized, you will be redirected to: ")),
10139
+ vue.createElementVNode("strong", null, vue.toDisplayString(_ctx.codeRequest.redirect_uri), 1)
10140
+ ])
10141
+ ])
10142
+ ]),
10143
+ vue.createElementVNode("div", _hoisted_7, [
10144
+ _cache[7] || (_cache[7] = vue.createElementVNode("div", null, [
10145
+ vue.createElementVNode("i", {
10146
+ class: "fa fa-solid fa-lock"
10147
+ })
10148
+ ], -1)),
10149
+ vue.createElementVNode("div", _hoisted_8, [
10150
+ vue.createElementVNode("small", null, [
10151
+ _cache[5] || (_cache[5] = vue.createTextVNode(" This application is governed by the ")),
10152
+ vue.createElementVNode("strong", null, vue.toDisplayString(_ctx.client.name), 1),
10153
+ _cache[6] || (_cache[6] = vue.createTextVNode(" application's Privacy Policy and Terms of Service. "))
10154
+ ])
10155
+ ])
10156
+ ]),
10157
+ vue.createElementVNode("div", _hoisted_9, [
10158
+ _cache[8] || (_cache[8] = vue.createElementVNode("div", null, [
10159
+ vue.createElementVNode("i", {
10160
+ class: "fa fa-solid fa-clock"
10161
+ })
10162
+ ], -1)),
10163
+ vue.createElementVNode("div", _hoisted_10, [
10164
+ vue.createElementVNode("small", null, " Active since " + vue.toDisplayString(_ctx.client.created_at), 1)
10165
+ ])
10166
+ ])
10167
+ ]),
10168
+ vue.createElementVNode("div", _hoisted_11, [
10169
+ vue.createElementVNode("div", _hoisted_12, [
10170
+ vue.createElementVNode("button", {
10171
+ type: "button",
10172
+ class: "btn btn-block btn-secondary",
10173
+ onClick: _cache[0] || (_cache[0] = vue.withModifiers((...args)=>_ctx.abort && _ctx.abort(...args), [
10174
+ "prevent"
10175
+ ]))
10176
+ }, " Abort ")
10177
+ ]),
10178
+ vue.createElementVNode("div", _hoisted_13, [
10179
+ vue.createElementVNode("button", {
10180
+ type: "button",
10181
+ class: "btn btn-block btn-primary",
10182
+ onClick: _cache[1] || (_cache[1] = vue.withModifiers((...args)=>_ctx.authorize && _ctx.authorize(...args), [
10183
+ "prevent"
10184
+ ]))
10185
+ }, " Authorize ")
10186
+ ])
10187
+ ])
10188
+ ]);
10189
+ }
10190
+ var AuthorizeForm = /* @__PURE__ */ _export_sfc(_sfc_main$2, [
10191
+ [
10192
+ "render",
10193
+ _sfc_render$1
10194
+ ]
10195
+ ]);
10196
+
10197
+ var _sfc_main$1 = vue.defineComponent({
10198
+ props: {
10199
+ isError: {
10200
+ type: Boolean
10201
+ },
10202
+ message: {
10203
+ type: String,
10204
+ required: true
10205
+ }
10206
+ }
10207
+ });
10208
+
10209
+ const _hoisted_1 = {
10210
+ class: "flex-column"
10211
+ };
10212
+ const _hoisted_2 = {
10213
+ class: "text-center"
10214
+ };
10215
+ const _hoisted_3 = {
10216
+ class: "text-center fs-6 p-3"
10217
+ };
10218
+ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
10219
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
10220
+ vue.createElementVNode("div", _hoisted_2, [
10221
+ vue.createElementVNode("i", {
10222
+ class: vue.normalizeClass([
10223
+ "fa-solid fa-10x",
10224
+ {
10225
+ "fa-exclamation text-danger": _ctx.isError,
10226
+ "fa-info text-info": !_ctx.isError
10227
+ }
10228
+ ])
10229
+ }, null, 2)
10230
+ ]),
10231
+ vue.createElementVNode("div", _hoisted_3, vue.toDisplayString(_ctx.message), 1)
10232
+ ]);
10233
+ }
10234
+ var AuthorizeText = /* @__PURE__ */ _export_sfc(_sfc_main$1, [
10235
+ [
10236
+ "render",
10237
+ _sfc_render
10238
+ ]
10239
+ ]);
10240
+
10241
+ const wrapChild = (child)=>vue.h('div', {
10242
+ class: 'd-flex align-items-center justify-content-center h-100'
10243
+ }, [
10244
+ vue.h('div', {
10245
+ class: 'authorize'
10246
+ }, [
10247
+ child
10248
+ ])
10249
+ ]);
10250
+ var _sfc_main = vue.defineComponent({
10251
+ components: {
10252
+ AuthorizeText,
10253
+ AuthorizeForm,
10254
+ Login
10255
+ },
10256
+ props: {
10257
+ codeRequest: {
10258
+ type: Object
10259
+ },
10260
+ client: {
10261
+ type: Object
10262
+ },
10263
+ clientId: {
10264
+ type: String
10265
+ },
10266
+ scopes: {
10267
+ type: Array
10268
+ },
10269
+ error: {
10270
+ type: Object
10271
+ }
10272
+ },
10273
+ emits: [
10274
+ 'redirect'
10275
+ ],
10276
+ setup (props) {
10277
+ const httpClient = injectHTTPClient();
10278
+ const store = injectStore();
10279
+ const { loggedIn } = pinia.storeToRefs(store);
10280
+ const error = vue.ref(null);
10281
+ const client = vue.ref(null);
10282
+ const resolve = async ()=>{
10283
+ if (props.error) {
10284
+ error.value = props.error;
10285
+ return;
10286
+ }
10287
+ if (props.client) {
10288
+ client.value = props.client;
10289
+ }
10290
+ if (props.clientId) {
10291
+ try {
10292
+ client.value = await httpClient.client.getOne(props.clientId);
10293
+ } catch (e) {
10294
+ if (e instanceof Error) {
10295
+ error.value = e;
10296
+ }
10297
+ }
10298
+ }
10299
+ };
10300
+ Promise.resolve().then(()=>resolve());
10301
+ return ()=>{
10302
+ if (error.value) {
10303
+ return wrapChild(vue.h(AuthorizeText, {
10304
+ message: error.value.message,
10305
+ isError: true
10306
+ }));
10307
+ }
10308
+ if (!props.codeRequest) {
10309
+ return [];
10310
+ }
10311
+ if (!loggedIn.value) {
10312
+ return wrapChild(vue.h(vue.Suspense, {}, {
10313
+ default: ()=>vue.h(Login, {
10314
+ codeRequest: props.codeRequest
10315
+ }),
10316
+ fallback: ()=>vue.h(AuthorizeText, {
10317
+ message: 'Loading...'
10318
+ })
10319
+ }));
10320
+ }
10321
+ if (!client.value) {
10322
+ return [];
10323
+ }
10324
+ return wrapChild(vue.h(vue.Suspense, {}, {
10325
+ default: ()=>vue.h(AuthorizeForm, {
10326
+ codeRequest: props.codeRequest,
10327
+ client: client.value,
10328
+ scopes: props.scopes
10329
+ }),
10330
+ fallback: ()=>vue.h(AuthorizeText, {
10331
+ message: 'Loading...'
10332
+ })
10333
+ }));
10334
+ };
10335
+ }
10336
+ });
10337
+
9462
10338
  var index = {
9463
10339
  install
9464
10340
  };
9465
10341
 
9466
10342
  exports.AAttributeNamesPolicyForm = AAttributeNamesPolicyForm;
10343
+ exports.AAuthorize = _sfc_main;
10344
+ exports.AAuthorizeText = AuthorizeText;
9467
10345
  exports.AClient = AClient;
9468
10346
  exports.AClientForm = AClientForm;
9469
10347
  exports.AClientPermissionAssignment = AClientPermissionAssignment;
@@ -9493,6 +10371,7 @@ exports.AIdentityProviderProtocol = AIdentityProviderProtocol;
9493
10371
  exports.AIdentityProviderRoleAssignment = AIdentityProviderRoleAssignment;
9494
10372
  exports.AIdentityProviderRoleAssignments = AIdentityProviderRoleAssignments;
9495
10373
  exports.AIdentityProviders = AIdentityProviders;
10374
+ exports.ALogin = Login;
9496
10375
  exports.APagination = APagination;
9497
10376
  exports.APermission = APermission;
9498
10377
  exports.APermissionCheck = APermissionCheck;
@@ -9577,10 +10456,12 @@ exports.defineEntityVProps = defineEntityVProps;
9577
10456
  exports.extractVuelidateResultsFromChild = extractVuelidateResultsFromChild;
9578
10457
  exports.getVuelidateSeverity = getVuelidateSeverity;
9579
10458
  exports.hasHTTPClient = hasHTTPClient;
10459
+ exports.hasHTTPClientAuthenticationHook = hasHTTPClientAuthenticationHook;
9580
10460
  exports.hasNormalizedSlot = hasNormalizedSlot;
9581
10461
  exports.hasStoreFactory = hasStoreFactory;
9582
10462
  exports.inject = inject$1;
9583
10463
  exports.injectHTTPClient = injectHTTPClient;
10464
+ exports.injectHTTPClientAuthenticationHook = injectHTTPClientAuthenticationHook;
9584
10465
  exports.injectSocketManager = injectSocketManager;
9585
10466
  exports.injectStore = injectStore;
9586
10467
  exports.injectStoreDispatcher = injectStoreDispatcher;
@@ -9588,6 +10469,7 @@ exports.injectStoreFactory = injectStoreFactory;
9588
10469
  exports.injectTranslatorLocale = injectTranslatorLocale;
9589
10470
  exports.install = install;
9590
10471
  exports.installHTTPClient = installHTTPClient;
10472
+ exports.installHTTPClientAuthenticationHook = installHTTPClientAuthenticationHook;
9591
10473
  exports.installSocketManager = installSocketManager;
9592
10474
  exports.installStore = installStore;
9593
10475
  exports.installTranslator = installTranslator;
@@ -9598,6 +10480,7 @@ exports.normalizeSlot = normalizeSlot;
9598
10480
  exports.onChange = onChange;
9599
10481
  exports.provide = provide;
9600
10482
  exports.provideHTTPClient = provideHTTPClient;
10483
+ exports.provideHTTPClientAuthenticationHook = provideHTTPClientAuthenticationHook;
9601
10484
  exports.provideSocketManager = provideSocketManager;
9602
10485
  exports.provideStoreDispatcher = provideStoreDispatcher;
9603
10486
  exports.provideStoreFactory = provideStoreFactory;