@kong-ui-public/entities-keys 3.8.29-pr.2114.d6a8378f0.0 → 3.8.29
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.
package/dist/entities-keys.es.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import { useRouter as
|
|
3
|
-
import { BookIcon as
|
|
4
|
-
import { createI18n as
|
|
5
|
-
import { useAxios as
|
|
6
|
-
const
|
|
1
|
+
import { defineComponent as ge, computed as m, ref as I, watch as te, onBeforeMount as $e, resolveComponent as O, openBlock as b, createElementBlock as J, createVNode as f, unref as l, createSlots as me, withCtx as u, createBlock as V, Teleport as Se, createElementVNode as R, createCommentVNode as G, createTextVNode as ee, toDisplayString as K, reactive as _e, Fragment as Ie, renderList as we } from "vue";
|
|
2
|
+
import { useRouter as Ee } from "vue-router";
|
|
3
|
+
import { BookIcon as Ce, AddIcon as Re, KeyIcon as De } from "@kong/icons";
|
|
4
|
+
import { createI18n as Te, i18nTComponent as Fe } from "@kong-ui-public/i18n";
|
|
5
|
+
import { useAxios as ve, useTableState as Ae, useFetcher as Be, useDeleteUrlBuilder as Ue, FetcherStatus as Oe, EntityBaseTable as Pe, EntityFilter as qe, PermissionsWrapper as se, TableTags as Ne, EntityEmptyState as Je, EntityDeleteModal as Le, EntityTypes as We, useErrors as He, EntityBaseFormType as ne, useDebouncedFilter as Qe, EntityBaseForm as ze, SupportedEntityType as je, EntityFormSection as xe, useStringHelpers as Ge, ConfigurationSchemaSection as ke, ConfigurationSchemaType as pe, EntityBaseConfigCard as Xe, InternalLinkItem as Ze, ConfigCardItem as Ke } from "@kong-ui-public/entities-shared";
|
|
6
|
+
const Ye = {
|
|
7
7
|
title: "Keys",
|
|
8
8
|
list: {
|
|
9
9
|
toolbar_actions: {
|
|
@@ -127,24 +127,24 @@ const Ze = {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
-
},
|
|
131
|
-
keys:
|
|
130
|
+
}, et = {
|
|
131
|
+
keys: Ye
|
|
132
132
|
};
|
|
133
|
-
function
|
|
134
|
-
const
|
|
133
|
+
function tt() {
|
|
134
|
+
const a = Te("en-us", et);
|
|
135
135
|
return {
|
|
136
|
-
i18n:
|
|
137
|
-
i18nT:
|
|
136
|
+
i18n: a,
|
|
137
|
+
i18nT: Fe(a)
|
|
138
138
|
// Translation component <i18n-t>
|
|
139
139
|
};
|
|
140
140
|
}
|
|
141
|
-
const
|
|
142
|
-
useI18n:
|
|
143
|
-
},
|
|
141
|
+
const he = {
|
|
142
|
+
useI18n: tt
|
|
143
|
+
}, B = "/v2/control-planes/{controlPlaneId}/core-entities", U = "/{workspace}", P = {
|
|
144
144
|
list: {
|
|
145
145
|
konnect: {
|
|
146
|
-
all: `${
|
|
147
|
-
forKeySet: `${
|
|
146
|
+
all: `${B}/keys`,
|
|
147
|
+
forKeySet: `${B}/key-sets/{keySetId}/keys`
|
|
148
148
|
},
|
|
149
149
|
kongManager: {
|
|
150
150
|
all: `${U}/keys`,
|
|
@@ -154,15 +154,15 @@ const ve = {
|
|
|
154
154
|
form: {
|
|
155
155
|
konnect: {
|
|
156
156
|
create: {
|
|
157
|
-
all: `${
|
|
158
|
-
forKeySet: `${
|
|
157
|
+
all: `${B}/keys`,
|
|
158
|
+
forKeySet: `${B}/key-sets/{keySetId}/keys`
|
|
159
159
|
},
|
|
160
160
|
edit: {
|
|
161
|
-
all: `${
|
|
162
|
-
forKeySet: `${
|
|
161
|
+
all: `${B}/keys/{id}`,
|
|
162
|
+
forKeySet: `${B}/key-sets/{keySetId}/keys/{id}`
|
|
163
163
|
},
|
|
164
|
-
keySets: `${
|
|
165
|
-
getKeySet: `${
|
|
164
|
+
keySets: `${B}/key-sets`,
|
|
165
|
+
getKeySet: `${B}/key-sets/{keySetId}`
|
|
166
166
|
},
|
|
167
167
|
kongManager: {
|
|
168
168
|
create: {
|
|
@@ -177,14 +177,14 @@ const ve = {
|
|
|
177
177
|
getKeySet: `${U}/key-sets/{keySetId}`
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
|
-
},
|
|
180
|
+
}, lt = "#00abd2", it = "24px", at = { class: "kong-ui-entities-keys-list" }, ot = { class: "button-row" }, st = { class: "empty-state-icon-gateway" }, nt = /* @__PURE__ */ ge({
|
|
181
181
|
__name: "KeyList",
|
|
182
182
|
props: {
|
|
183
183
|
/** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
|
|
184
184
|
config: {
|
|
185
185
|
type: Object,
|
|
186
186
|
required: !0,
|
|
187
|
-
validator: (
|
|
187
|
+
validator: (a) => !(!a || !["konnect", "kongManager"].includes(a == null ? void 0 : a.app) || !a.createRoute || !a.getViewRoute || !a.getEditRoute || a.app === "kongManager" && !a.isExactMatch && !a.filterSchema)
|
|
188
188
|
},
|
|
189
189
|
// used to override the default identifier for the cache entry
|
|
190
190
|
cacheIdentifier: {
|
|
@@ -219,179 +219,187 @@ const ve = {
|
|
|
219
219
|
useActionOutside: {
|
|
220
220
|
type: Boolean,
|
|
221
221
|
default: !1
|
|
222
|
+
},
|
|
223
|
+
/**
|
|
224
|
+
* Enables the new empty state design, this prop can be removed when
|
|
225
|
+
* the khcp-14756-empty-states-m2 FF is removed.
|
|
226
|
+
*/
|
|
227
|
+
enableV2EmptyStates: {
|
|
228
|
+
type: Boolean,
|
|
229
|
+
default: !1
|
|
222
230
|
}
|
|
223
231
|
},
|
|
224
232
|
emits: ["error", "click:learn-more", "copy:success", "copy:error", "delete:success"],
|
|
225
|
-
setup(
|
|
226
|
-
var
|
|
227
|
-
const
|
|
233
|
+
setup(a, { emit: q }) {
|
|
234
|
+
var _;
|
|
235
|
+
const S = q, t = a, { i18n: { t: y } } = he.useI18n(), d = Ee(), { axiosInstance: $ } = ve((_ = t.config) == null ? void 0 : _.axiosRequestConfig), { hasRecords: F, handleStateChange: X } = Ae(() => M.value), j = m(() => F.value && t.config.app === "konnect"), e = m(() => !t.enableV2EmptyStates && t.config.app === "konnect"), w = m(() => !!t.config.keySetId), N = m(() => t.config.app !== "kongManager" || !!t.config.disableSorting), D = {
|
|
228
236
|
// the Name column is non-hidable
|
|
229
|
-
name: { label:
|
|
230
|
-
kid: { label:
|
|
231
|
-
tags: { label:
|
|
232
|
-
id: { label:
|
|
233
|
-
},
|
|
234
|
-
var
|
|
235
|
-
let
|
|
236
|
-
return t.config.app === "konnect" ?
|
|
237
|
-
}),
|
|
238
|
-
const
|
|
239
|
-
if (
|
|
237
|
+
name: { label: y("keys.list.table_headers.name"), searchable: !0, sortable: !0, hidable: !1 },
|
|
238
|
+
kid: { label: y("keys.list.table_headers.key_id"), sortable: !0 },
|
|
239
|
+
tags: { label: y("keys.list.table_headers.tags") },
|
|
240
|
+
id: { label: y("keys.list.table_headers.id"), sortable: !0 }
|
|
241
|
+
}, Z = D, L = m(() => {
|
|
242
|
+
var i, n, E, A;
|
|
243
|
+
let s = `${t.config.apiBaseUrl}${P.list[t.config.app][t.config.keySetId ? "forKeySet" : "all"]}`;
|
|
244
|
+
return t.config.app === "konnect" ? s = s.replace(/{controlPlaneId}/gi, ((i = t.config) == null ? void 0 : i.controlPlaneId) || "").replace(/{keySetId}/gi, ((n = t.config) == null ? void 0 : n.keySetId) || "") : t.config.app === "kongManager" && (s = s.replace(/\/{workspace}/gi, (E = t.config) != null && E.workspace ? `/${t.config.workspace}` : "").replace(/{keySetId}/gi, ((A = t.config) == null ? void 0 : A.keySetId) || "")), s;
|
|
245
|
+
}), M = I(""), W = m(() => {
|
|
246
|
+
const s = t.config.app === "konnect" || t.config.isExactMatch;
|
|
247
|
+
if (s)
|
|
240
248
|
return {
|
|
241
|
-
isExactMatch:
|
|
242
|
-
placeholder:
|
|
249
|
+
isExactMatch: s,
|
|
250
|
+
placeholder: y("keys.search.placeholder")
|
|
243
251
|
};
|
|
244
|
-
const
|
|
252
|
+
const i = { name: D.name };
|
|
245
253
|
return {
|
|
246
|
-
isExactMatch:
|
|
247
|
-
fields:
|
|
254
|
+
isExactMatch: s,
|
|
255
|
+
fields: i,
|
|
248
256
|
schema: t.config.filterSchema
|
|
249
257
|
};
|
|
250
258
|
}), {
|
|
251
|
-
fetcher:
|
|
252
|
-
fetcherState:
|
|
253
|
-
fetcherCacheKey:
|
|
254
|
-
} =
|
|
255
|
-
|
|
256
|
-
},
|
|
257
|
-
|
|
258
|
-
},
|
|
259
|
-
const
|
|
260
|
-
if (!await
|
|
261
|
-
|
|
259
|
+
fetcher: c,
|
|
260
|
+
fetcherState: g,
|
|
261
|
+
fetcherCacheKey: C
|
|
262
|
+
} = Be(m(() => ({ ...t.config, cacheIdentifier: t.cacheIdentifier })), L), v = () => {
|
|
263
|
+
M.value = "";
|
|
264
|
+
}, x = () => {
|
|
265
|
+
C.value++;
|
|
266
|
+
}, k = I(null), le = async (s, i) => {
|
|
267
|
+
const n = s.id;
|
|
268
|
+
if (!await i(n)) {
|
|
269
|
+
ce(s, "id");
|
|
262
270
|
return;
|
|
263
271
|
}
|
|
264
|
-
|
|
265
|
-
},
|
|
266
|
-
const
|
|
267
|
-
if (!await
|
|
268
|
-
|
|
269
|
-
entity:
|
|
270
|
-
message:
|
|
272
|
+
de(s, "id");
|
|
273
|
+
}, re = async (s, i) => {
|
|
274
|
+
const n = JSON.stringify(s);
|
|
275
|
+
if (!await i(n)) {
|
|
276
|
+
S("copy:error", {
|
|
277
|
+
entity: s,
|
|
278
|
+
message: y("keys.errors.copy")
|
|
271
279
|
});
|
|
272
280
|
return;
|
|
273
281
|
}
|
|
274
|
-
|
|
275
|
-
entity:
|
|
276
|
-
message:
|
|
282
|
+
S("copy:success", {
|
|
283
|
+
entity: s,
|
|
284
|
+
message: y("keys.copy.success_brief")
|
|
277
285
|
});
|
|
278
|
-
},
|
|
279
|
-
|
|
280
|
-
entity:
|
|
281
|
-
field:
|
|
282
|
-
message:
|
|
286
|
+
}, de = (s, i) => {
|
|
287
|
+
S("copy:success", {
|
|
288
|
+
entity: s,
|
|
289
|
+
field: i,
|
|
290
|
+
message: y("keys.copy.success", { val: s[i] })
|
|
283
291
|
});
|
|
284
|
-
},
|
|
285
|
-
|
|
286
|
-
entity:
|
|
287
|
-
field:
|
|
288
|
-
message:
|
|
292
|
+
}, ce = (s, i) => {
|
|
293
|
+
S("copy:error", {
|
|
294
|
+
entity: s,
|
|
295
|
+
field: i,
|
|
296
|
+
message: y("keys.errors.copy")
|
|
289
297
|
});
|
|
290
|
-
},
|
|
291
|
-
var
|
|
292
|
-
await ((
|
|
293
|
-
},
|
|
294
|
-
label:
|
|
295
|
-
to: t.config.getViewRoute(
|
|
296
|
-
}),
|
|
297
|
-
label:
|
|
298
|
-
to: t.config.getEditRoute(
|
|
299
|
-
}),
|
|
300
|
-
|
|
301
|
-
},
|
|
302
|
-
|
|
303
|
-
},
|
|
304
|
-
var
|
|
305
|
-
if ((
|
|
306
|
-
|
|
298
|
+
}, ye = async (s) => {
|
|
299
|
+
var n;
|
|
300
|
+
await ((n = t.canRetrieve) == null ? void 0 : n.call(t, s)) && d.push(t.config.getViewRoute(s.id));
|
|
301
|
+
}, fe = (s) => ({
|
|
302
|
+
label: y("keys.actions.view"),
|
|
303
|
+
to: t.config.getViewRoute(s)
|
|
304
|
+
}), ie = (s) => ({
|
|
305
|
+
label: y("keys.actions.edit"),
|
|
306
|
+
to: t.config.getEditRoute(s)
|
|
307
|
+
}), T = I(void 0), H = I(!1), Q = I(!1), z = I(""), ae = Ue(t.config, L.value), ue = (s) => {
|
|
308
|
+
T.value = s, H.value = !0;
|
|
309
|
+
}, oe = () => {
|
|
310
|
+
H.value = !1;
|
|
311
|
+
}, o = async () => {
|
|
312
|
+
var s, i, n;
|
|
313
|
+
if ((s = T.value) != null && s.id) {
|
|
314
|
+
Q.value = !0;
|
|
307
315
|
try {
|
|
308
|
-
await
|
|
309
|
-
} catch (
|
|
310
|
-
|
|
316
|
+
await $.delete(ae(T.value.id)), Q.value = !1, H.value = !1, C.value++, S("delete:success", T.value);
|
|
317
|
+
} catch (E) {
|
|
318
|
+
z.value = ((n = (i = E.response) == null ? void 0 : i.data) == null ? void 0 : n.message) || E.message || y("keys.errors.delete"), S("error", E);
|
|
311
319
|
} finally {
|
|
312
|
-
|
|
320
|
+
Q.value = !1;
|
|
313
321
|
}
|
|
314
322
|
}
|
|
315
|
-
},
|
|
316
|
-
|
|
323
|
+
}, r = () => {
|
|
324
|
+
d.push(t.config.createRoute);
|
|
317
325
|
};
|
|
318
|
-
|
|
319
|
-
var
|
|
320
|
-
if (
|
|
321
|
-
|
|
322
|
-
title:
|
|
323
|
-
}, (
|
|
326
|
+
te(g, (s) => {
|
|
327
|
+
var i, n, E;
|
|
328
|
+
if (s.status === Oe.Error) {
|
|
329
|
+
k.value = {
|
|
330
|
+
title: y("keys.errors.general")
|
|
331
|
+
}, (E = (n = (i = s.error) == null ? void 0 : i.response) == null ? void 0 : n.data) != null && E.message && (k.value.message = s.error.response.data.message), S("error", s.error);
|
|
324
332
|
return;
|
|
325
333
|
}
|
|
326
|
-
|
|
334
|
+
k.value = null;
|
|
327
335
|
});
|
|
328
|
-
const
|
|
336
|
+
const h = I({
|
|
329
337
|
ctaPath: t.config.createRoute,
|
|
330
338
|
ctaText: void 0,
|
|
331
|
-
message: `${
|
|
332
|
-
title:
|
|
339
|
+
message: `${y("keys.list.empty_state.description")}${t.config.additionMessageForEmptyState ? ` ${t.config.additionMessageForEmptyState}` : ""}`,
|
|
340
|
+
title: y("keys.title")
|
|
333
341
|
});
|
|
334
|
-
return
|
|
335
|
-
await t.canCreate() && (
|
|
336
|
-
}), (
|
|
337
|
-
const
|
|
338
|
-
return
|
|
339
|
-
|
|
340
|
-
"cache-identifier":
|
|
341
|
-
"disable-sorting":
|
|
342
|
-
"empty-state-options":
|
|
342
|
+
return $e(async () => {
|
|
343
|
+
await t.canCreate() && (h.value.title = y("keys.list.empty_state.title"), h.value.ctaText = y("keys.actions.create"));
|
|
344
|
+
}), (s, i) => {
|
|
345
|
+
const n = O("KButton"), E = O("KCopy"), A = O("KDropdownItem"), be = O("KClipboardProvider");
|
|
346
|
+
return b(), J("div", at, [
|
|
347
|
+
f(l(Pe), {
|
|
348
|
+
"cache-identifier": a.cacheIdentifier,
|
|
349
|
+
"disable-sorting": N.value,
|
|
350
|
+
"empty-state-options": h.value,
|
|
343
351
|
"enable-entity-actions": "",
|
|
344
|
-
"error-message":
|
|
345
|
-
fetcher: l(
|
|
346
|
-
"fetcher-cache-key": l(
|
|
352
|
+
"error-message": k.value,
|
|
353
|
+
fetcher: l(c),
|
|
354
|
+
"fetcher-cache-key": l(C),
|
|
347
355
|
"pagination-type": "offset",
|
|
348
356
|
"preferences-storage-key": "kong-ui-entities-keys-list",
|
|
349
|
-
query:
|
|
350
|
-
"table-headers": l(
|
|
351
|
-
onClearSearchInput:
|
|
352
|
-
"onClick:row":
|
|
353
|
-
onSort:
|
|
354
|
-
onState: l(
|
|
355
|
-
},
|
|
356
|
-
"toolbar-filter":
|
|
357
|
-
|
|
358
|
-
modelValue:
|
|
359
|
-
"onUpdate:modelValue":
|
|
360
|
-
config:
|
|
357
|
+
query: M.value,
|
|
358
|
+
"table-headers": l(Z),
|
|
359
|
+
onClearSearchInput: v,
|
|
360
|
+
"onClick:row": i[4] || (i[4] = (p) => ye(p)),
|
|
361
|
+
onSort: x,
|
|
362
|
+
onState: l(X)
|
|
363
|
+
}, me({
|
|
364
|
+
"toolbar-filter": u(() => [
|
|
365
|
+
f(l(qe), {
|
|
366
|
+
modelValue: M.value,
|
|
367
|
+
"onUpdate:modelValue": i[0] || (i[0] = (p) => M.value = p),
|
|
368
|
+
config: W.value
|
|
361
369
|
}, null, 8, ["modelValue", "config"])
|
|
362
370
|
]),
|
|
363
|
-
"toolbar-button":
|
|
364
|
-
(
|
|
365
|
-
disabled: !
|
|
371
|
+
"toolbar-button": u(() => [
|
|
372
|
+
(b(), V(Se, {
|
|
373
|
+
disabled: !a.useActionOutside,
|
|
366
374
|
to: "#kong-ui-app-page-header-action-button"
|
|
367
375
|
}, [
|
|
368
|
-
|
|
369
|
-
!
|
|
376
|
+
R("div", ot, [
|
|
377
|
+
!w.value && j.value ? (b(), V(n, {
|
|
370
378
|
key: 0,
|
|
371
379
|
appearance: "secondary",
|
|
372
380
|
class: "open-learning-hub",
|
|
373
381
|
"data-testid": "keys-learn-more-button",
|
|
374
382
|
icon: "",
|
|
375
|
-
onClick:
|
|
383
|
+
onClick: i[1] || (i[1] = (p) => s.$emit("click:learn-more"))
|
|
376
384
|
}, {
|
|
377
|
-
default:
|
|
378
|
-
|
|
385
|
+
default: u(() => [
|
|
386
|
+
f(l(Ce), { decorative: "" })
|
|
379
387
|
]),
|
|
380
388
|
_: 1
|
|
381
|
-
})) :
|
|
382
|
-
|
|
383
|
-
"auth-function": () =>
|
|
389
|
+
})) : G("", !0),
|
|
390
|
+
f(l(se), {
|
|
391
|
+
"auth-function": () => a.canCreate()
|
|
384
392
|
}, {
|
|
385
|
-
default:
|
|
386
|
-
|
|
393
|
+
default: u(() => [
|
|
394
|
+
f(n, {
|
|
387
395
|
appearance: "primary",
|
|
388
396
|
"data-testid": "toolbar-add-key",
|
|
389
|
-
size:
|
|
390
|
-
to:
|
|
397
|
+
size: a.useActionOutside ? "medium" : "large",
|
|
398
|
+
to: a.config.createRoute
|
|
391
399
|
}, {
|
|
392
|
-
default:
|
|
393
|
-
|
|
394
|
-
|
|
400
|
+
default: u(() => [
|
|
401
|
+
f(l(Re)),
|
|
402
|
+
ee(" " + K(l(y)("keys.list.toolbar_actions.new_key")), 1)
|
|
395
403
|
]),
|
|
396
404
|
_: 1
|
|
397
405
|
}, 8, ["size", "to"])
|
|
@@ -401,85 +409,85 @@ const ve = {
|
|
|
401
409
|
])
|
|
402
410
|
], 8, ["disabled"]))
|
|
403
411
|
]),
|
|
404
|
-
name:
|
|
405
|
-
|
|
412
|
+
name: u(({ rowValue: p }) => [
|
|
413
|
+
R("b", null, K(p ?? "-"), 1)
|
|
406
414
|
]),
|
|
407
|
-
kid:
|
|
408
|
-
|
|
415
|
+
kid: u(({ rowValue: p }) => [
|
|
416
|
+
f(E, { text: p }, null, 8, ["text"])
|
|
409
417
|
]),
|
|
410
|
-
tags:
|
|
411
|
-
|
|
418
|
+
tags: u(({ rowValue: p }) => [
|
|
419
|
+
f(l(Ne), { tags: p }, null, 8, ["tags"])
|
|
412
420
|
]),
|
|
413
|
-
id:
|
|
414
|
-
|
|
415
|
-
text:
|
|
421
|
+
id: u(({ rowValue: p }) => [
|
|
422
|
+
f(E, {
|
|
423
|
+
text: p,
|
|
416
424
|
truncate: ""
|
|
417
425
|
}, null, 8, ["text"])
|
|
418
426
|
]),
|
|
419
|
-
actions:
|
|
420
|
-
|
|
421
|
-
default:
|
|
422
|
-
|
|
427
|
+
actions: u(({ row: p }) => [
|
|
428
|
+
f(be, null, {
|
|
429
|
+
default: u(({ copyToClipboard: Y }) => [
|
|
430
|
+
f(A, {
|
|
423
431
|
"data-testid": "action-entity-copy-id",
|
|
424
|
-
onClick: (
|
|
432
|
+
onClick: (Me) => le(p, Y)
|
|
425
433
|
}, {
|
|
426
|
-
default:
|
|
427
|
-
|
|
434
|
+
default: u(() => [
|
|
435
|
+
ee(K(l(y)("keys.actions.copy_id")), 1)
|
|
428
436
|
]),
|
|
429
437
|
_: 2
|
|
430
438
|
}, 1032, ["onClick"])
|
|
431
439
|
]),
|
|
432
440
|
_: 2
|
|
433
441
|
}, 1024),
|
|
434
|
-
|
|
435
|
-
default:
|
|
436
|
-
|
|
442
|
+
f(be, null, {
|
|
443
|
+
default: u(({ copyToClipboard: Y }) => [
|
|
444
|
+
f(A, {
|
|
437
445
|
"data-testid": "action-entity-copy-json",
|
|
438
|
-
onClick: (
|
|
446
|
+
onClick: (Me) => re(p, Y)
|
|
439
447
|
}, {
|
|
440
|
-
default:
|
|
441
|
-
|
|
448
|
+
default: u(() => [
|
|
449
|
+
ee(K(l(y)("keys.actions.copy_json")), 1)
|
|
442
450
|
]),
|
|
443
451
|
_: 2
|
|
444
452
|
}, 1032, ["onClick"])
|
|
445
453
|
]),
|
|
446
454
|
_: 2
|
|
447
455
|
}, 1024),
|
|
448
|
-
|
|
449
|
-
"auth-function": () =>
|
|
456
|
+
f(l(se), {
|
|
457
|
+
"auth-function": () => a.canRetrieve(p)
|
|
450
458
|
}, {
|
|
451
|
-
default:
|
|
452
|
-
|
|
459
|
+
default: u(() => [
|
|
460
|
+
f(A, {
|
|
453
461
|
"data-testid": "action-entity-view",
|
|
454
462
|
"has-divider": "",
|
|
455
|
-
item:
|
|
463
|
+
item: fe(p.id)
|
|
456
464
|
}, null, 8, ["item"])
|
|
457
465
|
]),
|
|
458
466
|
_: 2
|
|
459
467
|
}, 1032, ["auth-function"]),
|
|
460
|
-
|
|
461
|
-
"auth-function": () =>
|
|
468
|
+
f(l(se), {
|
|
469
|
+
"auth-function": () => a.canEdit(p)
|
|
462
470
|
}, {
|
|
463
|
-
default:
|
|
464
|
-
|
|
471
|
+
default: u(() => [
|
|
472
|
+
f(A, {
|
|
465
473
|
"data-testid": "action-entity-edit",
|
|
466
|
-
item:
|
|
474
|
+
item: ie(p.id)
|
|
467
475
|
}, null, 8, ["item"])
|
|
468
476
|
]),
|
|
469
477
|
_: 2
|
|
470
478
|
}, 1032, ["auth-function"]),
|
|
471
|
-
|
|
472
|
-
"auth-function": () =>
|
|
479
|
+
f(l(se), {
|
|
480
|
+
"auth-function": () => a.canDelete(p)
|
|
473
481
|
}, {
|
|
474
|
-
default:
|
|
475
|
-
|
|
482
|
+
default: u(() => [
|
|
483
|
+
f(A, {
|
|
476
484
|
danger: "",
|
|
477
485
|
"data-testid": "action-entity-delete",
|
|
478
486
|
"has-divider": "",
|
|
479
|
-
onClick: (
|
|
487
|
+
onClick: (Y) => ue(p)
|
|
480
488
|
}, {
|
|
481
|
-
default:
|
|
482
|
-
|
|
489
|
+
default: u(() => [
|
|
490
|
+
ee(K(l(y)("keys.actions.delete")), 1)
|
|
483
491
|
]),
|
|
484
492
|
_: 2
|
|
485
493
|
}, 1032, ["onClick"])
|
|
@@ -489,77 +497,100 @@ const ve = {
|
|
|
489
497
|
]),
|
|
490
498
|
_: 2
|
|
491
499
|
}, [
|
|
492
|
-
!
|
|
500
|
+
!l(F) && e.value ? {
|
|
501
|
+
name: "outside-actions",
|
|
502
|
+
fn: u(() => [
|
|
503
|
+
(b(), V(Se, {
|
|
504
|
+
disabled: !a.useActionOutside,
|
|
505
|
+
to: "#kong-ui-app-page-header-action-button"
|
|
506
|
+
}, [
|
|
507
|
+
f(n, {
|
|
508
|
+
appearance: "secondary",
|
|
509
|
+
class: "open-learning-hub",
|
|
510
|
+
"data-testid": "keys-learn-more-button",
|
|
511
|
+
icon: "",
|
|
512
|
+
onClick: i[2] || (i[2] = (p) => s.$emit("click:learn-more"))
|
|
513
|
+
}, {
|
|
514
|
+
default: u(() => [
|
|
515
|
+
f(l(Ce), { decorative: "" })
|
|
516
|
+
]),
|
|
517
|
+
_: 1
|
|
518
|
+
})
|
|
519
|
+
], 8, ["disabled"]))
|
|
520
|
+
]),
|
|
521
|
+
key: "0"
|
|
522
|
+
} : void 0,
|
|
523
|
+
!M.value && a.enableV2EmptyStates && a.config.app === "konnect" ? {
|
|
493
524
|
name: "empty-state",
|
|
494
|
-
fn:
|
|
495
|
-
var
|
|
525
|
+
fn: u(() => {
|
|
526
|
+
var p;
|
|
496
527
|
return [
|
|
497
|
-
|
|
498
|
-
"action-button-text": l(
|
|
528
|
+
f(l(Je), {
|
|
529
|
+
"action-button-text": l(y)("keys.list.empty_state_v2.create_cta"),
|
|
499
530
|
appearance: "secondary",
|
|
500
|
-
"can-create": () =>
|
|
501
|
-
"data-testid":
|
|
502
|
-
description: l(
|
|
503
|
-
"learn-more":
|
|
504
|
-
title: l(
|
|
505
|
-
"onClick:create":
|
|
506
|
-
"onClick:learnMore":
|
|
507
|
-
},
|
|
508
|
-
image:
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
color: l(
|
|
512
|
-
size: l(
|
|
531
|
+
"can-create": () => a.canCreate(),
|
|
532
|
+
"data-testid": a.config.keySetId ? "nested-keys-entity-empty-state" : "keys-entity-empty-state",
|
|
533
|
+
description: l(y)("keys.list.empty_state_v2.description"),
|
|
534
|
+
"learn-more": a.config.app === "konnect",
|
|
535
|
+
title: l(y)("keys.list.empty_state_v2.title"),
|
|
536
|
+
"onClick:create": r,
|
|
537
|
+
"onClick:learnMore": i[3] || (i[3] = (Y) => s.$emit("click:learn-more"))
|
|
538
|
+
}, me({
|
|
539
|
+
image: u(() => [
|
|
540
|
+
R("div", st, [
|
|
541
|
+
f(l(De), {
|
|
542
|
+
color: l(lt),
|
|
543
|
+
size: l(it)
|
|
513
544
|
}, null, 8, ["color", "size"])
|
|
514
545
|
])
|
|
515
546
|
]),
|
|
516
547
|
_: 2
|
|
517
548
|
}, [
|
|
518
|
-
(
|
|
549
|
+
(p = a.config) != null && p.isControlPlaneGroup ? {
|
|
519
550
|
name: "message",
|
|
520
|
-
fn:
|
|
521
|
-
|
|
551
|
+
fn: u(() => [
|
|
552
|
+
ee(K(l(y)("keys.list.empty_state_v2.group")), 1)
|
|
522
553
|
]),
|
|
523
554
|
key: "0"
|
|
524
555
|
} : void 0
|
|
525
556
|
]), 1032, ["action-button-text", "can-create", "data-testid", "description", "learn-more", "title"])
|
|
526
557
|
];
|
|
527
558
|
}),
|
|
528
|
-
key: "
|
|
559
|
+
key: "1"
|
|
529
560
|
} : void 0
|
|
530
561
|
]), 1032, ["cache-identifier", "disable-sorting", "empty-state-options", "error-message", "fetcher", "fetcher-cache-key", "query", "table-headers", "onState"]),
|
|
531
|
-
|
|
532
|
-
"action-pending":
|
|
533
|
-
description: l(
|
|
534
|
-
"entity-name":
|
|
562
|
+
f(l(Le), {
|
|
563
|
+
"action-pending": Q.value,
|
|
564
|
+
description: l(y)("keys.delete.description"),
|
|
565
|
+
"entity-name": T.value && (T.value.name || T.value.id),
|
|
535
566
|
"entity-type": l(We).Key,
|
|
536
|
-
error:
|
|
567
|
+
error: z.value,
|
|
537
568
|
"need-confirm": !1,
|
|
538
|
-
title: l(
|
|
539
|
-
visible:
|
|
540
|
-
onCancel:
|
|
541
|
-
onProceed:
|
|
569
|
+
title: l(y)("keys.delete.title"),
|
|
570
|
+
visible: H.value,
|
|
571
|
+
onCancel: oe,
|
|
572
|
+
onProceed: o
|
|
542
573
|
}, null, 8, ["action-pending", "description", "entity-name", "entity-type", "error", "title", "visible"])
|
|
543
574
|
]);
|
|
544
575
|
};
|
|
545
576
|
}
|
|
546
|
-
}),
|
|
547
|
-
const
|
|
548
|
-
for (const [t,
|
|
549
|
-
|
|
550
|
-
return
|
|
551
|
-
},
|
|
577
|
+
}), Ve = (a, q) => {
|
|
578
|
+
const S = a.__vccOpts || a;
|
|
579
|
+
for (const [t, y] of q)
|
|
580
|
+
S[t] = y;
|
|
581
|
+
return S;
|
|
582
|
+
}, It = /* @__PURE__ */ Ve(nt, [["__scopeId", "data-v-715f40fe"]]), rt = { class: "kong-ui-entities-keys-form" }, dt = { "data-testid": "no-search-results" }, ct = { class: "select-item-container" }, yt = { class: "select-item-label" }, ft = { class: "select-item-description" }, ut = {
|
|
552
583
|
key: 1,
|
|
553
584
|
class: "invalid-key-set-message",
|
|
554
585
|
"data-testid": "invalid-key-set-message"
|
|
555
|
-
},
|
|
586
|
+
}, kt = { "data-testid": "key-format-container" }, pt = /* @__PURE__ */ ge({
|
|
556
587
|
__name: "KeyForm",
|
|
557
588
|
props: {
|
|
558
589
|
/** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
|
|
559
590
|
config: {
|
|
560
591
|
type: Object,
|
|
561
592
|
required: !0,
|
|
562
|
-
validator: (
|
|
593
|
+
validator: (a) => !(!a || !["konnect", "kongManager"].includes(a == null ? void 0 : a.app) || a.app === "konnect" && !a.controlPlaneId || a.app === "kongManager" && typeof a.workspace != "string" || !a.cancelRoute)
|
|
563
594
|
},
|
|
564
595
|
/** If a valid Key ID is provided, it will put the form in Edit mode instead of Create */
|
|
565
596
|
keyId: {
|
|
@@ -587,9 +618,9 @@ const ve = {
|
|
|
587
618
|
}
|
|
588
619
|
},
|
|
589
620
|
emits: ["update", "error", "loading"],
|
|
590
|
-
setup(
|
|
621
|
+
setup(a, { emit: q }) {
|
|
591
622
|
var oe;
|
|
592
|
-
const
|
|
623
|
+
const S = q, t = a, y = Ee(), { i18n: { t: d } } = he.useI18n(), { getMessageFromError: $ } = He(), { axiosInstance: F } = ve((oe = t.config) == null ? void 0 : oe.axiosRequestConfig), X = m(() => t.keySetId ? P.form[t.config.app].edit.forKeySet.replace(/{keySetId}/gi, t.keySetId) : P.form[t.config.app].edit.all), j = m(() => t.keyId ? ne.Edit : ne.Create), e = _e({
|
|
593
624
|
fields: {
|
|
594
625
|
name: "",
|
|
595
626
|
tags: "",
|
|
@@ -603,7 +634,7 @@ const ve = {
|
|
|
603
634
|
},
|
|
604
635
|
isReadonly: !1,
|
|
605
636
|
errorMessage: ""
|
|
606
|
-
}),
|
|
637
|
+
}), w = _e({
|
|
607
638
|
name: "",
|
|
608
639
|
tags: "",
|
|
609
640
|
key_id: "",
|
|
@@ -612,271 +643,271 @@ const ve = {
|
|
|
612
643
|
jwk: "",
|
|
613
644
|
private_key: "",
|
|
614
645
|
public_key: ""
|
|
615
|
-
}),
|
|
646
|
+
}), N = [
|
|
616
647
|
{
|
|
617
|
-
label:
|
|
648
|
+
label: d("keys.form.fields.key_format.options.jwk"),
|
|
618
649
|
value: "jwk"
|
|
619
650
|
},
|
|
620
651
|
{
|
|
621
|
-
label:
|
|
652
|
+
label: d("keys.form.fields.key_format.options.pem"),
|
|
622
653
|
value: "pem"
|
|
623
654
|
}
|
|
624
|
-
],
|
|
625
|
-
|
|
626
|
-
|
|
655
|
+
], D = m(() => e.isReadonly || j.value === ne.Create && !!t.fixedKeySetId), Z = m(() => !D.value);
|
|
656
|
+
te(() => t.fixedKeySetId, (o) => {
|
|
657
|
+
j.value === ne.Create && (e.fields.key_set = o);
|
|
627
658
|
}, { immediate: !0 });
|
|
628
|
-
const
|
|
629
|
-
var
|
|
630
|
-
e.fields.key_id = (o == null ? void 0 : o.kid) || "", e.fields.name = (o == null ? void 0 : o.name) || "", e.fields.tags = ((
|
|
659
|
+
const L = m(() => JSON.stringify(e.fields) !== JSON.stringify(w) && !!e.fields.key_id && !!e.fields.key_format && (e.fields.key_format === "jwk" && !!e.fields.jwk || e.fields.key_format === "pem" && !!e.fields.private_key && !!e.fields.public_key)), M = (o) => {
|
|
660
|
+
var r, h, _, s;
|
|
661
|
+
e.fields.key_id = (o == null ? void 0 : o.kid) || "", e.fields.name = (o == null ? void 0 : o.name) || "", e.fields.tags = ((r = o == null ? void 0 : o.tags) == null ? void 0 : r.join(", ")) || "", e.fields.key_set = ((h = o == null ? void 0 : o.set) == null ? void 0 : h.id) || "", e.fields.key_format = o != null && o.pem ? "pem" : "jwk", e.fields.jwk = (o == null ? void 0 : o.jwk) || "", e.fields.private_key = ((_ = o == null ? void 0 : o.pem) == null ? void 0 : _.private_key) || "", e.fields.public_key = ((s = o == null ? void 0 : o.pem) == null ? void 0 : s.public_key) || "", t.showx5t && (e.fields.x5t = (o == null ? void 0 : o.x5t) || ""), Object.assign(w, e.fields);
|
|
631
662
|
}, W = () => {
|
|
632
|
-
|
|
633
|
-
},
|
|
634
|
-
var
|
|
635
|
-
let o = `${t.config.apiBaseUrl}${
|
|
636
|
-
return t.config.app === "konnect" ? o = o.replace(/{controlPlaneId}/gi, ((
|
|
637
|
-
}), g =
|
|
638
|
-
var o,
|
|
663
|
+
y.push(t.config.cancelRoute);
|
|
664
|
+
}, c = m(() => {
|
|
665
|
+
var r, h;
|
|
666
|
+
let o = `${t.config.apiBaseUrl}${P.form[t.config.app][j.value][t.keySetId ? "forKeySet" : "all"]}`;
|
|
667
|
+
return t.config.app === "konnect" ? o = o.replace(/{controlPlaneId}/gi, ((r = t.config) == null ? void 0 : r.controlPlaneId) || "") : t.config.app === "kongManager" && (o = o.replace(/\/{workspace}/gi, (h = t.config) != null && h.workspace ? `/${t.config.workspace}` : "")), o = o.replace(/{id}/gi, t.keyId).replace(/{keySetId}/gi, t.keySetId || ""), o;
|
|
668
|
+
}), g = m(() => {
|
|
669
|
+
var o, r, h;
|
|
639
670
|
return {
|
|
640
671
|
kid: e.fields.key_id,
|
|
641
672
|
...t.showx5t ? { x5t: e.fields.x5t || null } : {},
|
|
642
673
|
name: e.fields.name || null,
|
|
643
|
-
tags: ((
|
|
674
|
+
tags: ((h = (r = (o = e.fields.tags) == null ? void 0 : o.split(",")) == null ? void 0 : r.map((_) => String(_ || "").trim())) == null ? void 0 : h.filter((_) => _ !== "")) || [],
|
|
644
675
|
set: e.fields.key_set ? { id: e.fields.key_set } : null,
|
|
645
676
|
jwk: e.fields.key_format === "jwk" ? e.fields.jwk : null,
|
|
646
677
|
pem: e.fields.key_format === "pem" ? { private_key: e.fields.private_key, public_key: e.fields.public_key } : null
|
|
647
678
|
};
|
|
648
|
-
}),
|
|
649
|
-
var o,
|
|
679
|
+
}), C = async () => {
|
|
680
|
+
var o, r, h, _, s;
|
|
650
681
|
try {
|
|
651
682
|
e.isReadonly = !0;
|
|
652
|
-
let
|
|
653
|
-
if (
|
|
654
|
-
const { data:
|
|
655
|
-
e.fields.key_id = (
|
|
683
|
+
let i;
|
|
684
|
+
if (j.value === "create" ? i = await F.post(c.value, g.value) : j.value === "edit" && (i = ((o = t.config) == null ? void 0 : o.app) === "konnect" ? await F.put(c.value, g.value) : await F.patch(c.value, g.value)), i) {
|
|
685
|
+
const { data: n } = i;
|
|
686
|
+
e.fields.key_id = (n == null ? void 0 : n.kid) || "", e.fields.name = (n == null ? void 0 : n.name) || "", e.fields.tags = ((r = n == null ? void 0 : n.tags) == null ? void 0 : r.join(", ")) || "", e.fields.key_set = ((h = n == null ? void 0 : n.set) == null ? void 0 : h.id) || "", e.fields.key_format = n != null && n.pem ? "pem" : "jwk", e.fields.jwk = (n == null ? void 0 : n.jwk) || "", e.fields.private_key = ((_ = n == null ? void 0 : n.pem) == null ? void 0 : _.private_key) || "", e.fields.public_key = ((s = n == null ? void 0 : n.pem) == null ? void 0 : s.public_key) || "", t.showx5t && (e.fields.x5t = (n == null ? void 0 : n.x5t) || ""), Object.assign(w, e.fields), S("update", i == null ? void 0 : i.data);
|
|
656
687
|
}
|
|
657
|
-
} catch (
|
|
658
|
-
e.errorMessage =
|
|
688
|
+
} catch (i) {
|
|
689
|
+
e.errorMessage = $(i), S("error", i);
|
|
659
690
|
} finally {
|
|
660
691
|
e.isReadonly = !1;
|
|
661
692
|
}
|
|
662
693
|
}, {
|
|
663
694
|
debouncedQueryChange: v,
|
|
664
|
-
loading:
|
|
665
|
-
allRecords:
|
|
666
|
-
error:
|
|
667
|
-
validationError:
|
|
668
|
-
loadItems:
|
|
669
|
-
results:
|
|
670
|
-
} =
|
|
695
|
+
loading: x,
|
|
696
|
+
allRecords: k,
|
|
697
|
+
error: le,
|
|
698
|
+
validationError: re,
|
|
699
|
+
loadItems: de,
|
|
700
|
+
results: ce
|
|
701
|
+
} = Qe(t.config, P.form[t.config.app].keySets, void 0, {
|
|
671
702
|
fetchedItemsKey: "data",
|
|
672
703
|
searchKeys: ["id", "name"]
|
|
673
|
-
}),
|
|
674
|
-
(!o || o !== e.fields.key_set && o !==
|
|
675
|
-
},
|
|
704
|
+
}), ye = (o) => {
|
|
705
|
+
(!o || o !== e.fields.key_set && o !== w.key_set) && v(o);
|
|
706
|
+
}, fe = m(() => le.value ? d("keys.errors.key_sets.fetch") : ""), ie = m(() => re.value ? d("keys.errors.key_sets.invalid") : ""), T = I(0), H = m(() => k.value === void 0), Q = m(() => {
|
|
676
707
|
if (H.value)
|
|
677
|
-
return t.config.app === "konnect" ?
|
|
678
|
-
}),
|
|
679
|
-
name:
|
|
708
|
+
return t.config.app === "konnect" ? d("keys.form.fields.key_set.footer") : void 0;
|
|
709
|
+
}), z = I(/* @__PURE__ */ new Set()), ae = m(() => Array.from(z.value).map((r) => ({
|
|
710
|
+
name: r.name || "",
|
|
680
711
|
// can't use name for label or it tries to search => 404
|
|
681
712
|
label: "",
|
|
682
713
|
// leave it blank so no flicker when used with selected-item-template
|
|
683
|
-
value:
|
|
684
|
-
selected: e.fields.key_set ===
|
|
685
|
-
}))),
|
|
686
|
-
|
|
687
|
-
let
|
|
688
|
-
for (
|
|
689
|
-
|
|
714
|
+
value: r.id,
|
|
715
|
+
selected: e.fields.key_set === r.id
|
|
716
|
+
}))), ue = (o) => {
|
|
717
|
+
z.value.clear();
|
|
718
|
+
let r;
|
|
719
|
+
for (r of o)
|
|
720
|
+
z.value.add(r);
|
|
690
721
|
};
|
|
691
|
-
return
|
|
692
|
-
|
|
693
|
-
}, { immediate: !0, deep: !0 }),
|
|
694
|
-
|
|
695
|
-
}, { immediate: !0, deep: !0 }),
|
|
696
|
-
await
|
|
697
|
-
}), (o,
|
|
698
|
-
const
|
|
699
|
-
return
|
|
700
|
-
|
|
701
|
-
"can-submit":
|
|
702
|
-
config:
|
|
703
|
-
"edit-id":
|
|
704
|
-
"entity-type": l(
|
|
705
|
-
"error-message": e.errorMessage ||
|
|
706
|
-
"fetch-url":
|
|
722
|
+
return te(ce, (o) => {
|
|
723
|
+
ue(o);
|
|
724
|
+
}, { immediate: !0, deep: !0 }), te(ae, () => {
|
|
725
|
+
T.value++;
|
|
726
|
+
}, { immediate: !0, deep: !0 }), $e(async () => {
|
|
727
|
+
await de();
|
|
728
|
+
}), (o, r) => {
|
|
729
|
+
const h = O("KInput"), _ = O("KSelect"), s = O("KTextArea");
|
|
730
|
+
return b(), J("div", rt, [
|
|
731
|
+
f(l(ze), {
|
|
732
|
+
"can-submit": L.value,
|
|
733
|
+
config: a.config,
|
|
734
|
+
"edit-id": a.keyId,
|
|
735
|
+
"entity-type": l(je).Key,
|
|
736
|
+
"error-message": e.errorMessage || fe.value,
|
|
737
|
+
"fetch-url": X.value,
|
|
707
738
|
"form-fields": g.value,
|
|
708
739
|
"is-readonly": e.isReadonly,
|
|
709
740
|
onCancel: W,
|
|
710
|
-
"onFetch:error":
|
|
711
|
-
"onFetch:success":
|
|
712
|
-
onLoading:
|
|
713
|
-
onSubmit:
|
|
741
|
+
"onFetch:error": r[9] || (r[9] = (i) => o.$emit("error", i)),
|
|
742
|
+
"onFetch:success": M,
|
|
743
|
+
onLoading: r[10] || (r[10] = (i) => o.$emit("loading", i)),
|
|
744
|
+
onSubmit: C
|
|
714
745
|
}, {
|
|
715
|
-
default:
|
|
716
|
-
|
|
717
|
-
description: l(
|
|
718
|
-
title: l(
|
|
746
|
+
default: u(() => [
|
|
747
|
+
f(l(xe), {
|
|
748
|
+
description: l(d)("keys.form.sections.general.description"),
|
|
749
|
+
title: l(d)("keys.form.sections.general.title")
|
|
719
750
|
}, {
|
|
720
|
-
default:
|
|
721
|
-
|
|
751
|
+
default: u(() => [
|
|
752
|
+
f(h, {
|
|
722
753
|
modelValue: e.fields.key_id,
|
|
723
|
-
"onUpdate:modelValue":
|
|
754
|
+
"onUpdate:modelValue": r[0] || (r[0] = (i) => e.fields.key_id = i),
|
|
724
755
|
modelModifiers: { trim: !0 },
|
|
725
756
|
autocomplete: "off",
|
|
726
757
|
"data-testid": "key-form-id",
|
|
727
|
-
help: l(
|
|
728
|
-
label: l(
|
|
758
|
+
help: l(d)("keys.form.fields.id.help"),
|
|
759
|
+
label: l(d)("keys.form.fields.id.label"),
|
|
729
760
|
"label-attributes": {
|
|
730
|
-
info: l(
|
|
761
|
+
info: l(d)("keys.form.fields.id.tooltip"),
|
|
731
762
|
tooltipAttributes: { maxWidth: "400" }
|
|
732
763
|
},
|
|
733
|
-
placeholder: l(
|
|
764
|
+
placeholder: l(d)("keys.form.fields.id.placeholder"),
|
|
734
765
|
readonly: e.isReadonly,
|
|
735
766
|
required: "",
|
|
736
767
|
type: "text"
|
|
737
768
|
}, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"]),
|
|
738
|
-
|
|
769
|
+
a.showx5t ? (b(), V(h, {
|
|
739
770
|
key: 0,
|
|
740
771
|
modelValue: e.fields.x5t,
|
|
741
|
-
"onUpdate:modelValue":
|
|
772
|
+
"onUpdate:modelValue": r[1] || (r[1] = (i) => e.fields.x5t = i),
|
|
742
773
|
modelModifiers: { trim: !0 },
|
|
743
774
|
autocomplete: "off",
|
|
744
775
|
"data-testid": "key-form-x5t",
|
|
745
|
-
help: l(
|
|
746
|
-
label: l(
|
|
776
|
+
help: l(d)("keys.form.fields.x5t.help"),
|
|
777
|
+
label: l(d)("keys.form.fields.x5t.label"),
|
|
747
778
|
"label-attributes": {
|
|
748
|
-
info: l(
|
|
779
|
+
info: l(d)("keys.form.fields.x5t.tooltip"),
|
|
749
780
|
tooltipAttributes: { maxWidth: "400" }
|
|
750
781
|
},
|
|
751
|
-
placeholder: l(
|
|
782
|
+
placeholder: l(d)("keys.form.fields.x5t.placeholder"),
|
|
752
783
|
readonly: e.isReadonly,
|
|
753
784
|
type: "text"
|
|
754
|
-
}, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"])) :
|
|
755
|
-
|
|
785
|
+
}, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"])) : G("", !0),
|
|
786
|
+
f(h, {
|
|
756
787
|
modelValue: e.fields.name,
|
|
757
|
-
"onUpdate:modelValue":
|
|
788
|
+
"onUpdate:modelValue": r[2] || (r[2] = (i) => e.fields.name = i),
|
|
758
789
|
modelModifiers: { trim: !0 },
|
|
759
790
|
autocomplete: "off",
|
|
760
791
|
"data-testid": "key-form-name",
|
|
761
|
-
label: l(
|
|
762
|
-
placeholder: l(
|
|
792
|
+
label: l(d)("keys.form.fields.name.label"),
|
|
793
|
+
placeholder: l(d)("keys.form.fields.name.placeholder"),
|
|
763
794
|
readonly: e.isReadonly,
|
|
764
795
|
type: "text"
|
|
765
796
|
}, null, 8, ["modelValue", "label", "placeholder", "readonly"]),
|
|
766
|
-
|
|
797
|
+
f(_, {
|
|
767
798
|
modelValue: e.fields.key_set,
|
|
768
|
-
"onUpdate:modelValue":
|
|
769
|
-
clearable:
|
|
799
|
+
"onUpdate:modelValue": r[3] || (r[3] = (i) => e.fields.key_set = i),
|
|
800
|
+
clearable: Z.value,
|
|
770
801
|
"data-testid": "key-form-key-set",
|
|
771
|
-
"dropdown-footer-text":
|
|
802
|
+
"dropdown-footer-text": Q.value,
|
|
772
803
|
"enable-filtering": "",
|
|
773
804
|
"filter-function": () => !0,
|
|
774
|
-
items:
|
|
775
|
-
label: l(
|
|
776
|
-
loading: l(
|
|
777
|
-
placeholder: l(
|
|
778
|
-
readonly:
|
|
805
|
+
items: ae.value,
|
|
806
|
+
label: l(d)("keys.form.fields.key_set.label"),
|
|
807
|
+
loading: l(x),
|
|
808
|
+
placeholder: l(d)("keys.form.fields.key_set.placeholder"),
|
|
809
|
+
readonly: D.value,
|
|
779
810
|
width: "100%",
|
|
780
|
-
onQueryChange:
|
|
811
|
+
onQueryChange: ye
|
|
781
812
|
}, {
|
|
782
|
-
loading:
|
|
783
|
-
|
|
813
|
+
loading: u(() => [
|
|
814
|
+
R("div", null, K(l(d)("keys.actions.loading")), 1)
|
|
784
815
|
]),
|
|
785
|
-
empty:
|
|
786
|
-
|
|
816
|
+
empty: u(() => [
|
|
817
|
+
R("div", dt, K(l(d)("keys.search.no_results")), 1)
|
|
787
818
|
]),
|
|
788
|
-
"selected-item-template":
|
|
789
|
-
|
|
819
|
+
"selected-item-template": u(({ item: i }) => [
|
|
820
|
+
R("div", null, K(i.name), 1)
|
|
790
821
|
]),
|
|
791
|
-
"item-template":
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
822
|
+
"item-template": u(({ item: i }) => [
|
|
823
|
+
R("div", ct, [
|
|
824
|
+
R("div", yt, K(i.name), 1),
|
|
825
|
+
R("div", ft, K(i.value), 1)
|
|
795
826
|
])
|
|
796
827
|
]),
|
|
797
828
|
_: 1
|
|
798
829
|
}, 8, ["modelValue", "clearable", "dropdown-footer-text", "items", "label", "loading", "placeholder", "readonly"]),
|
|
799
|
-
|
|
800
|
-
|
|
830
|
+
ie.value ? (b(), J("p", ut, K(ie.value), 1)) : G("", !0),
|
|
831
|
+
f(h, {
|
|
801
832
|
modelValue: e.fields.tags,
|
|
802
|
-
"onUpdate:modelValue":
|
|
833
|
+
"onUpdate:modelValue": r[4] || (r[4] = (i) => e.fields.tags = i),
|
|
803
834
|
modelModifiers: { trim: !0 },
|
|
804
835
|
autocomplete: "off",
|
|
805
836
|
"data-testid": "key-form-tags",
|
|
806
|
-
help: l(
|
|
807
|
-
label: l(
|
|
837
|
+
help: l(d)("keys.form.fields.tags.help"),
|
|
838
|
+
label: l(d)("keys.form.fields.tags.label"),
|
|
808
839
|
"label-attributes": {
|
|
809
|
-
info: l(
|
|
840
|
+
info: l(d)("keys.form.fields.tags.tooltip"),
|
|
810
841
|
tooltipAttributes: { maxWidth: "400" }
|
|
811
842
|
},
|
|
812
|
-
placeholder: l(
|
|
843
|
+
placeholder: l(d)("keys.form.fields.tags.placeholder"),
|
|
813
844
|
readonly: e.isReadonly,
|
|
814
845
|
type: "text"
|
|
815
846
|
}, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"])
|
|
816
847
|
]),
|
|
817
848
|
_: 1
|
|
818
849
|
}, 8, ["description", "title"]),
|
|
819
|
-
|
|
820
|
-
description: l(
|
|
850
|
+
f(l(xe), {
|
|
851
|
+
description: l(d)("keys.form.sections.keys.description"),
|
|
821
852
|
"has-divider": "",
|
|
822
|
-
title: l(
|
|
853
|
+
title: l(d)("keys.form.sections.keys.title")
|
|
823
854
|
}, {
|
|
824
|
-
default:
|
|
825
|
-
|
|
826
|
-
|
|
855
|
+
default: u(() => [
|
|
856
|
+
R("div", kt, [
|
|
857
|
+
f(_, {
|
|
827
858
|
modelValue: e.fields.key_format,
|
|
828
|
-
"onUpdate:modelValue":
|
|
859
|
+
"onUpdate:modelValue": r[5] || (r[5] = (i) => e.fields.key_format = i),
|
|
829
860
|
"data-testid": "key-form-key-format",
|
|
830
|
-
items:
|
|
831
|
-
label: l(
|
|
861
|
+
items: N,
|
|
862
|
+
label: l(d)("keys.form.fields.key_format.label"),
|
|
832
863
|
readonly: e.isReadonly,
|
|
833
864
|
required: "",
|
|
834
865
|
width: "100%"
|
|
835
866
|
}, null, 8, ["modelValue", "label", "readonly"])
|
|
836
867
|
]),
|
|
837
|
-
e.fields.key_format === "jwk" ? (
|
|
868
|
+
e.fields.key_format === "jwk" ? (b(), V(s, {
|
|
838
869
|
key: 0,
|
|
839
870
|
modelValue: e.fields.jwk,
|
|
840
|
-
"onUpdate:modelValue":
|
|
871
|
+
"onUpdate:modelValue": r[6] || (r[6] = (i) => e.fields.jwk = i),
|
|
841
872
|
modelModifiers: { trim: !0 },
|
|
842
873
|
"character-limit": !1,
|
|
843
874
|
class: "key-form-textarea",
|
|
844
875
|
"data-testid": "key-form-jwk",
|
|
845
|
-
label: l(
|
|
876
|
+
label: l(d)("keys.form.fields.jwk.label"),
|
|
846
877
|
"label-attributes": {
|
|
847
|
-
info: l(
|
|
878
|
+
info: l(d)("keys.form.fields.jwk.tooltip"),
|
|
848
879
|
tooltipAttributes: { maxWidth: "400" }
|
|
849
880
|
},
|
|
850
|
-
placeholder: l(
|
|
881
|
+
placeholder: l(d)("keys.form.fields.jwk.placeholder"),
|
|
851
882
|
readonly: e.isReadonly,
|
|
852
883
|
required: ""
|
|
853
|
-
}, null, 8, ["modelValue", "label", "label-attributes", "placeholder", "readonly"])) :
|
|
854
|
-
e.fields.key_format === "pem" ? (
|
|
884
|
+
}, null, 8, ["modelValue", "label", "label-attributes", "placeholder", "readonly"])) : G("", !0),
|
|
885
|
+
e.fields.key_format === "pem" ? (b(), V(s, {
|
|
855
886
|
key: 1,
|
|
856
887
|
modelValue: e.fields.private_key,
|
|
857
|
-
"onUpdate:modelValue":
|
|
888
|
+
"onUpdate:modelValue": r[7] || (r[7] = (i) => e.fields.private_key = i),
|
|
858
889
|
modelModifiers: { trim: !0 },
|
|
859
890
|
"character-limit": !1,
|
|
860
891
|
class: "key-form-textarea",
|
|
861
892
|
"data-testid": "key-form-private-key",
|
|
862
|
-
label: l(
|
|
863
|
-
placeholder: l(
|
|
893
|
+
label: l(d)("keys.form.fields.private_key.label"),
|
|
894
|
+
placeholder: l(d)("keys.form.fields.private_key.placeholder"),
|
|
864
895
|
readonly: e.isReadonly,
|
|
865
896
|
required: ""
|
|
866
|
-
}, null, 8, ["modelValue", "label", "placeholder", "readonly"])) :
|
|
867
|
-
e.fields.key_format === "pem" ? (
|
|
897
|
+
}, null, 8, ["modelValue", "label", "placeholder", "readonly"])) : G("", !0),
|
|
898
|
+
e.fields.key_format === "pem" ? (b(), V(s, {
|
|
868
899
|
key: 2,
|
|
869
900
|
modelValue: e.fields.public_key,
|
|
870
|
-
"onUpdate:modelValue":
|
|
901
|
+
"onUpdate:modelValue": r[8] || (r[8] = (i) => e.fields.public_key = i),
|
|
871
902
|
modelModifiers: { trim: !0 },
|
|
872
903
|
"character-limit": !1,
|
|
873
904
|
class: "key-form-textarea",
|
|
874
905
|
"data-testid": "key-form-public-key",
|
|
875
|
-
label: l(
|
|
876
|
-
placeholder: l(
|
|
906
|
+
label: l(d)("keys.form.fields.public_key.label"),
|
|
907
|
+
placeholder: l(d)("keys.form.fields.public_key.placeholder"),
|
|
877
908
|
readonly: e.isReadonly,
|
|
878
909
|
required: ""
|
|
879
|
-
}, null, 8, ["modelValue", "label", "placeholder", "readonly"])) :
|
|
910
|
+
}, null, 8, ["modelValue", "label", "placeholder", "readonly"])) : G("", !0)
|
|
880
911
|
]),
|
|
881
912
|
_: 1
|
|
882
913
|
}, 8, ["description", "title"])
|
|
@@ -886,14 +917,14 @@ const ve = {
|
|
|
886
917
|
]);
|
|
887
918
|
};
|
|
888
919
|
}
|
|
889
|
-
}),
|
|
920
|
+
}), wt = /* @__PURE__ */ Ve(pt, [["__scopeId", "data-v-f812000b"]]), mt = { class: "kong-ui-entities-keys-entity-config-card" }, gt = { key: 2 }, Ct = /* @__PURE__ */ ge({
|
|
890
921
|
__name: "KeyConfigCard",
|
|
891
922
|
props: {
|
|
892
923
|
/** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
|
|
893
924
|
config: {
|
|
894
925
|
type: Object,
|
|
895
926
|
required: !0,
|
|
896
|
-
validator: (
|
|
927
|
+
validator: (a) => !(!a || !["konnect", "kongManager"].includes(a == null ? void 0 : a.app) || a.app === "konnect" && !a.controlPlaneId || a.app === "kongManager" && typeof a.workspace != "string" || !a.entityId)
|
|
897
928
|
},
|
|
898
929
|
/**
|
|
899
930
|
* External link for documentation that determines visibility of Documentation button
|
|
@@ -919,143 +950,143 @@ const ve = {
|
|
|
919
950
|
}
|
|
920
951
|
},
|
|
921
952
|
emits: ["loading", "fetch:error", "fetch:success", "navigation-click"],
|
|
922
|
-
setup(
|
|
953
|
+
setup(a, { emit: q }) {
|
|
923
954
|
var W;
|
|
924
|
-
const
|
|
925
|
-
var
|
|
926
|
-
return (
|
|
927
|
-
}),
|
|
955
|
+
const S = q, t = a, { axiosInstance: y } = ve((W = t.config) == null ? void 0 : W.axiosRequestConfig), { convertKeyToTitle: d } = Ge(), { i18n: { t: $ } } = he.useI18n(), F = m(() => t.keySetId ? `${P.form[t.config.app].edit.forKeySet}`.replace(/{keySetId}/gi, t.keySetId) : P.form[t.config.app].edit.all), X = m(() => {
|
|
956
|
+
var c;
|
|
957
|
+
return (c = P.form[t.config.app]) == null ? void 0 : c.getKeySet;
|
|
958
|
+
}), j = I(), e = I({}), w = I(t.keySetId || ""), N = I(""), D = I(!1), Z = async (c) => {
|
|
928
959
|
var g;
|
|
929
|
-
|
|
960
|
+
j.value = c, w.value = (g = c == null ? void 0 : c.set) == null ? void 0 : g.id, S("fetch:success", c), L(c);
|
|
930
961
|
};
|
|
931
|
-
|
|
932
|
-
var g,
|
|
933
|
-
if (!
|
|
962
|
+
te(w, async () => {
|
|
963
|
+
var g, C;
|
|
964
|
+
if (!w.value)
|
|
934
965
|
return;
|
|
935
|
-
let
|
|
936
|
-
t.config.app === "konnect" ?
|
|
966
|
+
let c = `${t.config.apiBaseUrl}${X.value}`;
|
|
967
|
+
t.config.app === "konnect" ? c = c.replace(/{controlPlaneId}/gi, ((g = t.config) == null ? void 0 : g.controlPlaneId) || "").replace(/{keySetId}/gi, w.value || "") : t.config.app === "kongManager" && (c = c.replace(/\/{workspace}/gi, (C = t.config) != null && C.workspace ? `/${t.config.workspace}` : "").replace(/{keySetId}/gi, w.value || ""));
|
|
937
968
|
try {
|
|
938
|
-
|
|
939
|
-
const { data: v } = await
|
|
940
|
-
validateStatus: (
|
|
969
|
+
D.value = !0;
|
|
970
|
+
const { data: v } = await y.get(c, {
|
|
971
|
+
validateStatus: (x) => x === 404 || x >= 200 && x < 300
|
|
941
972
|
// in case KeySet is deleted
|
|
942
973
|
});
|
|
943
|
-
|
|
974
|
+
N.value = (v == null ? void 0 : v.name) || (v == null ? void 0 : v.id);
|
|
944
975
|
} catch (v) {
|
|
945
|
-
|
|
976
|
+
S("fetch:error", v);
|
|
946
977
|
} finally {
|
|
947
|
-
|
|
978
|
+
D.value = !1;
|
|
948
979
|
}
|
|
949
980
|
}, { immediate: !0 });
|
|
950
|
-
const
|
|
951
|
-
var g,
|
|
981
|
+
const L = (c) => {
|
|
982
|
+
var g, C;
|
|
952
983
|
try {
|
|
953
|
-
if (
|
|
954
|
-
const v = JSON.parse(
|
|
955
|
-
Object.keys(v).forEach((
|
|
984
|
+
if (c.jwk) {
|
|
985
|
+
const v = JSON.parse(c.jwk);
|
|
986
|
+
Object.keys(v).forEach((x) => {
|
|
956
987
|
e.value = {
|
|
957
988
|
...e.value,
|
|
958
|
-
[`jwk.${
|
|
989
|
+
[`jwk.${x}`]: v[x]
|
|
959
990
|
};
|
|
960
991
|
});
|
|
961
992
|
} else
|
|
962
993
|
e.value = {
|
|
963
|
-
"pem.public_key": (g =
|
|
964
|
-
"pem.private_key": (
|
|
994
|
+
"pem.public_key": (g = c == null ? void 0 : c.pem) == null ? void 0 : g.public_key,
|
|
995
|
+
"pem.private_key": (C = c == null ? void 0 : c.pem) == null ? void 0 : C.private_key
|
|
965
996
|
};
|
|
966
997
|
} catch (v) {
|
|
967
|
-
|
|
998
|
+
S("fetch:error", v);
|
|
968
999
|
}
|
|
969
1000
|
return e;
|
|
970
|
-
},
|
|
1001
|
+
}, M = I({
|
|
971
1002
|
id: {},
|
|
972
1003
|
name: {
|
|
973
|
-
tooltip:
|
|
1004
|
+
tooltip: $("keys.form.fields.name.tooltip")
|
|
974
1005
|
},
|
|
975
1006
|
last_updated: {},
|
|
976
1007
|
created: {},
|
|
977
1008
|
set: {
|
|
978
|
-
label:
|
|
979
|
-
section:
|
|
980
|
-
tooltip:
|
|
1009
|
+
label: $("keys.form.fields.set.label"),
|
|
1010
|
+
section: ke.Basic,
|
|
1011
|
+
tooltip: $("keys.form.fields.set.tooltip"),
|
|
981
1012
|
order: 5
|
|
982
1013
|
},
|
|
983
1014
|
kid: {
|
|
984
|
-
label:
|
|
985
|
-
section:
|
|
986
|
-
tooltip:
|
|
1015
|
+
label: $("keys.form.fields.kid.label"),
|
|
1016
|
+
section: ke.Basic,
|
|
1017
|
+
tooltip: $("keys.form.fields.kid.tooltip")
|
|
987
1018
|
},
|
|
988
1019
|
tags: {
|
|
989
|
-
tooltip:
|
|
1020
|
+
tooltip: $("keys.form.fields.tags.tooltip")
|
|
990
1021
|
},
|
|
991
1022
|
// advanced fields
|
|
992
1023
|
jwk: {
|
|
993
|
-
label:
|
|
994
|
-
type:
|
|
1024
|
+
label: $("keys.form.fields.jwk.label"),
|
|
1025
|
+
type: pe.Json
|
|
995
1026
|
},
|
|
996
1027
|
pem: {
|
|
997
|
-
section:
|
|
998
|
-
label:
|
|
999
|
-
type:
|
|
1028
|
+
section: ke.Advanced,
|
|
1029
|
+
label: $("keys.form.fields.key_format.options.pem"),
|
|
1030
|
+
type: pe.Json
|
|
1000
1031
|
}
|
|
1001
1032
|
});
|
|
1002
|
-
return (
|
|
1003
|
-
var v,
|
|
1004
|
-
const
|
|
1005
|
-
return
|
|
1006
|
-
|
|
1007
|
-
config:
|
|
1008
|
-
"config-card-doc":
|
|
1009
|
-
"config-schema":
|
|
1010
|
-
"entity-type": l(
|
|
1011
|
-
"fetch-url":
|
|
1012
|
-
"hide-title":
|
|
1013
|
-
"onFetch:error": g[0] || (g[0] = (
|
|
1014
|
-
"onFetch:success":
|
|
1015
|
-
onLoading: g[1] || (g[1] = (
|
|
1016
|
-
},
|
|
1017
|
-
set:
|
|
1018
|
-
|
|
1033
|
+
return (c, g) => {
|
|
1034
|
+
var v, x;
|
|
1035
|
+
const C = O("KSkeleton");
|
|
1036
|
+
return b(), J("div", mt, [
|
|
1037
|
+
f(l(Xe), {
|
|
1038
|
+
config: a.config,
|
|
1039
|
+
"config-card-doc": a.configCardDoc,
|
|
1040
|
+
"config-schema": M.value,
|
|
1041
|
+
"entity-type": l(je).Key,
|
|
1042
|
+
"fetch-url": F.value,
|
|
1043
|
+
"hide-title": a.hideTitle,
|
|
1044
|
+
"onFetch:error": g[0] || (g[0] = (k) => c.$emit("fetch:error", k)),
|
|
1045
|
+
"onFetch:success": Z,
|
|
1046
|
+
onLoading: g[1] || (g[1] = (k) => c.$emit("loading", k))
|
|
1047
|
+
}, me({
|
|
1048
|
+
set: u(({ row: k }) => [
|
|
1049
|
+
D.value ? (b(), V(C, {
|
|
1019
1050
|
key: 0,
|
|
1020
1051
|
"data-testid": "key-set-name-loader",
|
|
1021
1052
|
type: "spinner"
|
|
1022
|
-
})) :
|
|
1053
|
+
})) : k.value && k.value.id === w.value && N.value ? (b(), V(l(Ze), {
|
|
1023
1054
|
key: 1,
|
|
1024
1055
|
item: {
|
|
1025
|
-
key:
|
|
1026
|
-
value:
|
|
1027
|
-
type: l(
|
|
1056
|
+
key: k.value.id,
|
|
1057
|
+
value: N.value,
|
|
1058
|
+
type: l(pe).LinkInternal
|
|
1028
1059
|
},
|
|
1029
|
-
onClick: (
|
|
1030
|
-
}, null, 8, ["item", "onClick"])) : (
|
|
1060
|
+
onClick: (le) => c.$emit("navigation-click", k.value.id, "key-sets")
|
|
1061
|
+
}, null, 8, ["item", "onClick"])) : (b(), J("div", gt, K("–")))
|
|
1031
1062
|
]),
|
|
1032
1063
|
_: 2
|
|
1033
1064
|
}, [
|
|
1034
|
-
(v =
|
|
1065
|
+
(v = j.value) != null && v.jwk ? {
|
|
1035
1066
|
name: "jwk",
|
|
1036
|
-
fn:
|
|
1037
|
-
(
|
|
1038
|
-
key:
|
|
1039
|
-
"data-testid": `${
|
|
1067
|
+
fn: u(() => [
|
|
1068
|
+
(b(!0), J(Ie, null, we(Object.keys(e.value), (k) => (b(), V(l(Ke), {
|
|
1069
|
+
key: k,
|
|
1070
|
+
"data-testid": `${k}`,
|
|
1040
1071
|
item: {
|
|
1041
|
-
key:
|
|
1042
|
-
label: l(
|
|
1043
|
-
value: e.value[
|
|
1072
|
+
key: k,
|
|
1073
|
+
label: l(d)(k),
|
|
1074
|
+
value: e.value[k]
|
|
1044
1075
|
}
|
|
1045
1076
|
}, null, 8, ["data-testid", "item"]))), 128))
|
|
1046
1077
|
]),
|
|
1047
1078
|
key: "0"
|
|
1048
1079
|
} : void 0,
|
|
1049
|
-
(
|
|
1080
|
+
(x = j.value) != null && x.pem ? {
|
|
1050
1081
|
name: "pem",
|
|
1051
|
-
fn:
|
|
1052
|
-
(
|
|
1053
|
-
key:
|
|
1054
|
-
"data-testid": `${
|
|
1082
|
+
fn: u(() => [
|
|
1083
|
+
(b(!0), J(Ie, null, we(Object.keys(e.value), (k) => (b(), V(l(Ke), {
|
|
1084
|
+
key: k,
|
|
1085
|
+
"data-testid": `${k}`,
|
|
1055
1086
|
item: {
|
|
1056
|
-
key:
|
|
1057
|
-
label: l(
|
|
1058
|
-
value: e.value[
|
|
1087
|
+
key: k,
|
|
1088
|
+
label: l(d)(k),
|
|
1089
|
+
value: e.value[k]
|
|
1059
1090
|
}
|
|
1060
1091
|
}, null, 8, ["data-testid", "item"]))), 128))
|
|
1061
1092
|
]),
|
|
@@ -1067,7 +1098,7 @@ const ve = {
|
|
|
1067
1098
|
}
|
|
1068
1099
|
});
|
|
1069
1100
|
export {
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1101
|
+
Ct as KeyConfigCard,
|
|
1102
|
+
wt as KeyForm,
|
|
1103
|
+
It as KeyList
|
|
1073
1104
|
};
|