@kong-ui-public/entities-snis 3.10.32 → 3.10.33-pr.2694.d983d66d0.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kong-ui-public/entities-snis",
3
- "version": "3.10.32",
3
+ "version": "3.10.33-pr.2694.d983d66d0.0",
4
4
  "type": "module",
5
5
  "main": "./dist/entities-snis.umd.js",
6
6
  "module": "./dist/entities-snis.es.js",
@@ -26,7 +26,7 @@
26
26
  "axios": "^1.13.2",
27
27
  "vue": ">= 3.3.13 < 4",
28
28
  "vue-router": "^4.6.4",
29
- "@kong-ui-public/entities-shared": "^3.36.8",
29
+ "@kong-ui-public/entities-shared": "^3.36.9-pr.2694.d983d66d0.0",
30
30
  "@kong-ui-public/i18n": "^2.4.5"
31
31
  },
32
32
  "devDependencies": {
@@ -36,7 +36,7 @@
36
36
  "axios": "^1.13.2",
37
37
  "vue": "^3.5.26",
38
38
  "vue-router": "^4.6.4",
39
- "@kong-ui-public/entities-shared": "^3.36.8",
39
+ "@kong-ui-public/entities-shared": "^3.36.9-pr.2694.d983d66d0.0",
40
40
  "@kong-ui-public/i18n": "^2.4.5"
41
41
  },
42
42
  "repository": {
@@ -1,713 +0,0 @@
1
- import { defineComponent as ye, ref as S, computed as y, watch as de, onBeforeMount as ve, resolveComponent as E, createElementBlock as X, openBlock as b, createVNode as d, unref as e, createSlots as fe, withCtx as c, createTextVNode as _, toDisplayString as h, createBlock as I, createElementVNode as Y, Teleport as Ie, createCommentVNode as O, reactive as pe } from "vue";
2
- import { useRouter as he } from "vue-router";
3
- import { createI18n as Ee, i18nTComponent as Ne } from "@kong-ui-public/i18n";
4
- import { useAxios as be, useTableState as we, useFetcher as Me, useDeleteUrlBuilder as $e, FetcherStatus as xe, EntityBaseTable as Fe, PermissionsWrapper as z, TableTags as De, EntityFilter as Re, EntityDeleteModal as Be, EntityTypes as Te, useErrors as Ke, EntityBaseFormType as le, useDebouncedFilter as Ve, EntityBaseForm as qe, SupportedEntityType as Pe, EntityFormSection as me } from "@kong-ui-public/entities-shared";
5
- import { BookIcon as ge, AddIcon as ce, CloudIcon as Oe } from "@kong/icons";
6
- const Ue = {
7
- create: "New SNI",
8
- copy_id: "Copy ID",
9
- copy_json: "Copy JSON",
10
- edit: "Edit",
11
- delete: "Delete",
12
- clear: "Clear",
13
- loading: "Loading..."
14
- }, Ae = {
15
- placeholder: "Filter by exact name or ID",
16
- no_results: "No results found"
17
- }, je = {
18
- title: "SNIs",
19
- list: {
20
- toolbar_actions: {
21
- new: "New SNI"
22
- },
23
- table_headers: {
24
- name: "Name",
25
- id: "ID",
26
- certificate_id: "SSL Certificate ID",
27
- tags: "Tags"
28
- },
29
- empty_state: {
30
- title: "Configure a New SNI",
31
- description: "SNIs are used to map hostnames to a certificate."
32
- },
33
- empty_state_v2: {
34
- title: "Configure your first SNI",
35
- description: "Server Name Indications (SNIs) map hostnames to SSL/TLS certificates, enabling secure connections for domain-specific traffic.",
36
- group: "SNIs created in gateways within this group will automatically appear here.",
37
- create_cta: "New SNI",
38
- learn_more: "Learn more"
39
- }
40
- }
41
- }, Le = {
42
- sections: {
43
- general: {
44
- title: "General Information",
45
- description: "General information will help identify and manage this SNI."
46
- },
47
- certificate: {
48
- title: "Certificate",
49
- description: "Map an existing Certificate object to hostnames"
50
- }
51
- },
52
- fields: {
53
- name: {
54
- label: "Name",
55
- placeholder: "Enter a unique name for this SNI"
56
- },
57
- tags: {
58
- label: "Tags",
59
- placeholder: "Enter a list of tags separated by comma",
60
- help: "e.g. tag1, tag2, tag3",
61
- tooltip: "An optional set of strings for grouping and filtering, separated by commas."
62
- },
63
- certificate_id: {
64
- label: "SSL Certificate ID",
65
- placeholder: "Enter or select a Certificate ID",
66
- footer: "Search by exact ID to find certificates not included in the list"
67
- }
68
- }
69
- }, Je = {
70
- delete: "The SNI could not be deleted at this time.",
71
- general: "SNIs could not be retrieved",
72
- certificates: {
73
- fetch: "Could not fetch available certificates",
74
- invalid: "Please select a valid certificate ID"
75
- },
76
- copy: "Failed to copy to clipboard"
77
- }, Qe = {
78
- success: "Copied {val} to clipboard",
79
- success_brief: "Successfully copied to clipboard"
80
- }, ze = {
81
- actions: Ue,
82
- search: Ae,
83
- snis: je,
84
- form: Le,
85
- delete: {
86
- title: "Delete an SNI",
87
- description: "This action cannot be reversed so make sure to check the SNI usage before deleting."
88
- },
89
- errors: Je,
90
- copy: Qe
91
- };
92
- function Ge() {
93
- const t = Ee("en-us", ze);
94
- return {
95
- i18n: t,
96
- i18nT: Ne(t)
97
- // Translation component <i18n-t>
98
- };
99
- }
100
- const ke = {
101
- useI18n: Ge
102
- }, G = "/v2/control-planes/{controlPlaneId}/core-entities", H = "/{workspace}", W = {
103
- list: {
104
- konnect: {
105
- all: `${G}/snis`
106
- },
107
- kongManager: {
108
- all: `${H}/snis`
109
- }
110
- },
111
- form: {
112
- konnect: {
113
- create: `${G}/snis`,
114
- edit: `${G}/snis/{id}`,
115
- certificates: `${G}/certificates`
116
- },
117
- kongManager: {
118
- create: `${H}/snis`,
119
- edit: `${H}/snis/{id}`,
120
- certificates: `${H}/certificates`
121
- }
122
- }
123
- }, He = { class: "kong-ui-entities-snis-list" }, We = { class: "button-row" }, Xe = { key: 1 }, Ye = /* @__PURE__ */ ye({
124
- __name: "SniList",
125
- props: {
126
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
127
- config: {
128
- type: Object,
129
- required: !0,
130
- validator: (t) => !(!t || !["konnect", "kongManager"].includes(t == null ? void 0 : t.app) || !t.createRoute || !t.getViewRoute || !t.getEditRoute || t.app === "kongManager" && !t.isExactMatch && !t.filterSchema)
131
- },
132
- // used to override the default identifier for the cache entry
133
- cacheIdentifier: {
134
- type: String,
135
- default: ""
136
- },
137
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can create a new entity */
138
- canCreate: {
139
- type: Function,
140
- required: !1,
141
- default: async () => !0
142
- },
143
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can delete a given entity */
144
- canDelete: {
145
- type: Function,
146
- required: !1,
147
- default: async () => !0
148
- },
149
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can edit a given entity */
150
- canEdit: {
151
- type: Function,
152
- required: !1,
153
- default: async () => !0
154
- },
155
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can retrieve (view details) a given entity */
156
- canRetrieve: {
157
- type: Function,
158
- required: !1,
159
- default: async () => !0
160
- },
161
- /** default to false, setting to true will teleport the toolbar button to the destination in the consuming app */
162
- useActionOutside: {
163
- type: Boolean,
164
- default: !1
165
- },
166
- /** default to false, setting to true will place create button on top right of list*/
167
- useToolbarCreationButton: {
168
- type: Boolean,
169
- default: !1
170
- }
171
- },
172
- emits: ["error", "click:learn-more", "copy:success", "copy:error", "delete:success"],
173
- setup(t, { emit: D }) {
174
- var g;
175
- const v = D, a = t, { i18n: { t: l } } = ke.useI18n(), p = he(), { axiosInstance: Z } = be((g = a.config) == null ? void 0 : g.axiosRequestConfig), { hasRecords: R, handleStateChange: ee } = we(() => C.value), N = y(() => R.value && a.config.app === "konnect"), w = y(() => a.config.app !== "kongManager" || !!a.config.disableSorting), r = {
176
- // the Name column is non-hidable
177
- name: { label: l("snis.list.table_headers.name"), searchable: !0, sortable: !0, hidable: !1 },
178
- certificate: { label: l("snis.list.table_headers.certificate_id"), sortable: !1 },
179
- tags: { label: l("snis.list.table_headers.tags"), sortable: !1 }
180
- }, B = r, te = (i) => ({
181
- style: {
182
- maxWidth: i.headerKey === "name" ? "250px" : i.headerKey === "certificate" ? "350px" : null
183
- }
184
- }), U = y(() => {
185
- var o, f;
186
- let i = `${a.config.apiBaseUrl}${W.list[a.config.app].all}`;
187
- return a.config.app === "konnect" ? i = i.replace(/{controlPlaneId}/gi, ((o = a.config) == null ? void 0 : o.controlPlaneId) || "") : a.config.app === "kongManager" && (i = i.replace(/\/{workspace}/gi, (f = a.config) != null && f.workspace ? `/${a.config.workspace}` : "")), i;
188
- }), C = S(""), T = y(() => {
189
- const i = a.config.app === "konnect" || a.config.isExactMatch;
190
- if (i)
191
- return {
192
- isExactMatch: i,
193
- placeholder: l("search.placeholder")
194
- };
195
- const { name: o } = r;
196
- return {
197
- isExactMatch: i,
198
- fields: { name: o },
199
- schema: a.config.filterSchema
200
- };
201
- }), {
202
- fetcher: M,
203
- fetcherState: ae,
204
- fetcherCacheKey: K
205
- } = Me(y(() => ({ ...a.config, cacheIdentifier: a.cacheIdentifier })), U), ie = () => {
206
- C.value = "";
207
- }, ne = () => {
208
- K.value++;
209
- }, $ = S(null), V = S({
210
- ctaPath: a.config.createRoute,
211
- ctaText: void 0,
212
- message: `${l("snis.list.empty_state.description")}${a.config.additionMessageForEmptyState ? ` ${a.config.additionMessageForEmptyState}` : ""}`,
213
- title: l("snis.title")
214
- }), oe = async (i, o) => {
215
- const f = i.id;
216
- if (!await o(f)) {
217
- v("copy:error", {
218
- entity: i,
219
- field: "id",
220
- message: l("errors.copy")
221
- });
222
- return;
223
- }
224
- v("copy:success", {
225
- entity: i,
226
- field: "id",
227
- message: l("copy.success", { val: f })
228
- });
229
- }, se = async (i, o) => {
230
- const f = JSON.stringify(i);
231
- if (!await o(f)) {
232
- v("copy:error", {
233
- entity: i,
234
- message: l("errors.copy")
235
- });
236
- return;
237
- }
238
- v("copy:success", {
239
- entity: i,
240
- message: l("copy.success_brief")
241
- });
242
- }, re = (i) => ({
243
- label: l("actions.edit"),
244
- to: a.config.getEditRoute(i)
245
- }), k = S(void 0), x = S(!1), F = S(!1), A = S(""), q = $e(a.config, U.value), j = (i) => {
246
- k.value = i, x.value = !0;
247
- }, L = () => {
248
- x.value = !1, k.value = void 0;
249
- }, J = async () => {
250
- var i, o, f;
251
- if ((i = k.value) != null && i.id) {
252
- F.value = !0;
253
- try {
254
- await Z.delete(q(k.value.id)), v("delete:success", k.value), F.value = !1, L(), K.value++;
255
- } catch (u) {
256
- A.value = ((f = (o = u.response) == null ? void 0 : o.data) == null ? void 0 : f.message) || u.message || l("errors.delete"), v("error", u);
257
- } finally {
258
- F.value = !1;
259
- }
260
- }
261
- }, n = () => {
262
- p.push(a.config.createRoute);
263
- };
264
- de(ae, (i) => {
265
- var o, f, u;
266
- if (i.status === xe.Error) {
267
- $.value = {
268
- title: l("errors.general")
269
- }, (u = (f = (o = i.error) == null ? void 0 : o.response) == null ? void 0 : f.data) != null && u.message && ($.value.message = i.error.response.data.message), v("error", i.error);
270
- return;
271
- }
272
- $.value = null;
273
- });
274
- const s = S(!1);
275
- return ve(async () => {
276
- s.value = await a.canCreate(), s.value && (V.value.title = l("snis.list.empty_state.title"), V.value.ctaText = l("actions.create"));
277
- }), (i, o) => {
278
- const f = E("KButton"), u = E("KEmptyState"), Ce = E("KCopy"), Q = E("KDropdownItem"), ue = E("KClipboardProvider");
279
- return b(), X("div", He, [
280
- d(e(Fe), {
281
- "cache-identifier": t.cacheIdentifier,
282
- "cell-attributes": te,
283
- "disable-row-click": !0,
284
- "disable-sorting": w.value,
285
- "empty-state-options": V.value,
286
- "enable-entity-actions": "",
287
- "error-message": $.value,
288
- fetcher: e(M),
289
- "fetcher-cache-key": e(K),
290
- "pagination-type": "offset",
291
- "preferences-storage-key": "kong-ui-entities-snis-list",
292
- query: C.value,
293
- "table-headers": e(B),
294
- onClearSearchInput: ie,
295
- onSort: ne,
296
- onState: e(ee)
297
- }, fe({
298
- "toolbar-filter": c(() => [
299
- d(e(Re), {
300
- modelValue: C.value,
301
- "onUpdate:modelValue": o[0] || (o[0] = (m) => C.value = m),
302
- config: T.value
303
- }, null, 8, ["modelValue", "config"]),
304
- t.useToolbarCreationButton ? (b(), I(e(z), {
305
- key: 0,
306
- "auth-function": t.canCreate
307
- }, {
308
- default: c(() => [
309
- d(f, {
310
- appearance: "primary",
311
- "data-testid": "toolbar-add-sni",
312
- size: "large",
313
- to: t.config.createRoute
314
- }, {
315
- default: c(() => [
316
- d(e(ce)),
317
- _(" " + h(e(l)("actions.create")), 1)
318
- ]),
319
- _: 1
320
- }, 8, ["to"])
321
- ]),
322
- _: 1
323
- }, 8, ["auth-function"])) : O("", !0)
324
- ]),
325
- "toolbar-button": c(() => [
326
- (b(), I(Ie, {
327
- disabled: !t.useActionOutside,
328
- to: "#kong-ui-app-page-header-action-button"
329
- }, [
330
- Y("div", We, [
331
- N.value ? (b(), I(f, {
332
- key: 0,
333
- appearance: "secondary",
334
- class: "open-learning-hub",
335
- "data-testid": "snis-learn-more-button",
336
- icon: "",
337
- onClick: o[1] || (o[1] = (m) => i.$emit("click:learn-more"))
338
- }, {
339
- default: c(() => [
340
- d(e(ge), { decorative: "" })
341
- ]),
342
- _: 1
343
- })) : O("", !0),
344
- t.useToolbarCreationButton ? O("", !0) : (b(), I(e(z), {
345
- key: 1,
346
- "auth-function": t.canCreate
347
- }, {
348
- default: c(() => [
349
- d(f, {
350
- appearance: "primary",
351
- "data-testid": "toolbar-add-sni",
352
- size: t.useActionOutside ? "medium" : "large",
353
- to: t.config.createRoute
354
- }, {
355
- default: c(() => [
356
- d(e(ce)),
357
- _(" " + h(e(l)("snis.list.toolbar_actions.new")), 1)
358
- ]),
359
- _: 1
360
- }, 8, ["size", "to"])
361
- ]),
362
- _: 1
363
- }, 8, ["auth-function"]))
364
- ])
365
- ], 8, ["disabled"]))
366
- ]),
367
- name: c(({ rowValue: m }) => [
368
- Y("b", null, h(m ?? "-"), 1)
369
- ]),
370
- certificate: c(({ row: m }) => [
371
- m.certificate && m.certificate.id ? (b(), I(Ce, {
372
- key: 0,
373
- class: "copy-certificate-uuid",
374
- "data-testid": "copy-certificate-uuid",
375
- text: m.certificate.id,
376
- truncate: ""
377
- }, null, 8, ["text"])) : (b(), X("span", Xe, "-"))
378
- ]),
379
- tags: c(({ rowValue: m }) => [
380
- d(e(De), { tags: m }, null, 8, ["tags"])
381
- ]),
382
- actions: c(({ row: m }) => [
383
- d(ue, null, {
384
- default: c(({ copyToClipboard: P }) => [
385
- d(Q, {
386
- "data-testid": "action-entity-copy-id",
387
- onClick: (_e) => oe(m, P)
388
- }, {
389
- default: c(() => [
390
- _(h(e(l)("actions.copy_id")), 1)
391
- ]),
392
- _: 1
393
- }, 8, ["onClick"])
394
- ]),
395
- _: 2
396
- }, 1024),
397
- d(ue, null, {
398
- default: c(({ copyToClipboard: P }) => [
399
- d(Q, {
400
- "data-testid": "action-entity-copy-json",
401
- onClick: (_e) => se(m, P)
402
- }, {
403
- default: c(() => [
404
- _(h(e(l)("actions.copy_json")), 1)
405
- ]),
406
- _: 1
407
- }, 8, ["onClick"])
408
- ]),
409
- _: 2
410
- }, 1024),
411
- d(e(z), {
412
- "auth-function": () => t.canEdit(m)
413
- }, {
414
- default: c(() => [
415
- d(Q, {
416
- "data-testid": "action-entity-edit",
417
- item: re(m.id)
418
- }, null, 8, ["item"])
419
- ]),
420
- _: 2
421
- }, 1032, ["auth-function"]),
422
- d(e(z), {
423
- "auth-function": () => t.canDelete(m)
424
- }, {
425
- default: c(() => [
426
- d(Q, {
427
- danger: "",
428
- "data-testid": "action-entity-delete",
429
- "has-divider": "",
430
- onClick: (P) => j(m)
431
- }, {
432
- default: c(() => [
433
- _(h(e(l)("actions.delete")), 1)
434
- ]),
435
- _: 1
436
- }, 8, ["onClick"])
437
- ]),
438
- _: 2
439
- }, 1032, ["auth-function"])
440
- ]),
441
- _: 2
442
- }, [
443
- !C.value && t.config.app === "konnect" ? {
444
- name: "empty-state",
445
- fn: c(() => {
446
- var m;
447
- return [
448
- d(u, {
449
- "data-testid": "snis-entity-empty-state",
450
- "icon-background": "",
451
- message: e(l)("snis.list.empty_state_v2.description"),
452
- title: e(l)("snis.list.empty_state_v2.title")
453
- }, fe({
454
- icon: c(() => [
455
- d(e(Oe), { decorative: "" })
456
- ]),
457
- action: c(() => [
458
- s.value ? (b(), I(f, {
459
- key: 0,
460
- "data-testid": "entity-create-button",
461
- onClick: n
462
- }, {
463
- default: c(() => [
464
- d(e(ce), { decorative: "" }),
465
- _(" " + h(e(l)("snis.list.toolbar_actions.new")), 1)
466
- ]),
467
- _: 1
468
- })) : O("", !0),
469
- d(f, {
470
- appearance: "secondary",
471
- "data-testid": "entity-learn-more-button",
472
- onClick: o[2] || (o[2] = (P) => i.$emit("click:learn-more"))
473
- }, {
474
- default: c(() => [
475
- d(e(ge), { decorative: "" }),
476
- _(" " + h(e(l)("snis.list.empty_state_v2.learn_more")), 1)
477
- ]),
478
- _: 1
479
- })
480
- ]),
481
- _: 2
482
- }, [
483
- (m = t.config) != null && m.isControlPlaneGroup ? {
484
- name: "default",
485
- fn: c(() => [
486
- _(h(e(l)("snis.list.empty_state_v2.group")), 1)
487
- ]),
488
- key: "0"
489
- } : void 0
490
- ]), 1032, ["message", "title"])
491
- ];
492
- }),
493
- key: "0"
494
- } : void 0
495
- ]), 1032, ["cache-identifier", "disable-sorting", "empty-state-options", "error-message", "fetcher", "fetcher-cache-key", "query", "table-headers", "onState"]),
496
- d(e(Be), {
497
- "action-pending": F.value,
498
- description: e(l)("delete.description"),
499
- "entity-name": k.value && (k.value.name || k.value.id),
500
- "entity-type": e(Te).SNI,
501
- error: A.value,
502
- "need-confirm": !1,
503
- title: e(l)("delete.title"),
504
- visible: x.value,
505
- onCancel: L,
506
- onProceed: J
507
- }, null, 8, ["action-pending", "description", "entity-name", "entity-type", "error", "title", "visible"])
508
- ]);
509
- };
510
- }
511
- }), Se = (t, D) => {
512
- const v = t.__vccOpts || t;
513
- for (const [a, l] of D)
514
- v[a] = l;
515
- return v;
516
- }, lt = /* @__PURE__ */ Se(Ye, [["__scopeId", "data-v-5d5c486a"]]), Ze = { class: "kong-ui-entities-snis-form" }, et = { "data-testid": "no-search-results" }, tt = {
517
- key: 2,
518
- class: "invalid-certificate-message",
519
- "data-testid": "invalid-certificate-message"
520
- }, at = /* @__PURE__ */ ye({
521
- __name: "SniForm",
522
- props: {
523
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
524
- config: {
525
- type: Object,
526
- required: !0,
527
- validator: (t) => !(!t || !["konnect", "kongManager"].includes(t == null ? void 0 : t.app) || t.app === "konnect" && !t.controlPlaneId || t.app === "kongManager" && typeof t.workspace != "string" || !t.cancelRoute)
528
- },
529
- /** If a valid SNI ID is provided, it will put the form in Edit mode instead of Create */
530
- sniId: {
531
- type: String,
532
- required: !1,
533
- default: ""
534
- }
535
- },
536
- emits: ["update", "error", "loading"],
537
- setup(t, { emit: D }) {
538
- var J;
539
- const v = D, a = t, l = he(), { i18n: { t: p } } = ke.useI18n(), { getMessageFromError: Z } = Ke(), { axiosInstance: R } = be((J = a.config) == null ? void 0 : J.axiosRequestConfig), ee = y(() => W.form[a.config.app].edit), N = y(() => a.sniId ? le.Edit : le.Create), w = y(() => a.config.certificateId && N.value === le.Create ? a.config.certificateId : ""), r = pe({
540
- fields: {
541
- name: "",
542
- tags: "",
543
- certificate_id: ""
544
- },
545
- isReadonly: !1,
546
- errorMessage: ""
547
- }), B = pe({
548
- name: "",
549
- tags: "",
550
- certificate_id: ""
551
- }), te = y(() => JSON.stringify(r.fields) !== JSON.stringify(B) && !!r.fields.name && !!(r.fields.certificate_id || w.value)), U = (n) => {
552
- var s, g;
553
- r.fields.name = (n == null ? void 0 : n.name) || "", r.fields.tags = ((s = n == null ? void 0 : n.tags) == null ? void 0 : s.join(", ")) || "", r.fields.certificate_id = ((g = n == null ? void 0 : n.certificate) == null ? void 0 : g.id) || "", Object.assign(B, r.fields);
554
- }, C = () => {
555
- l.push(a.config.cancelRoute);
556
- }, T = y(() => {
557
- var s, g;
558
- let n = `${a.config.apiBaseUrl}${W.form[a.config.app][N.value]}`;
559
- return a.config.app === "konnect" ? n = n.replace(/{controlPlaneId}/gi, ((s = a.config) == null ? void 0 : s.controlPlaneId) || "") : a.config.app === "kongManager" && (n = n.replace(/\/{workspace}/gi, (g = a.config) != null && g.workspace ? `/${a.config.workspace}` : "")), n = n.replace(/{id}/gi, a.sniId), n;
560
- }), M = y(() => {
561
- var n, s;
562
- return {
563
- name: r.fields.name,
564
- tags: (s = (n = r.fields.tags.split(",")) == null ? void 0 : n.map((g) => String(g || "").trim())) == null ? void 0 : s.filter((g) => g !== ""),
565
- certificate: { id: w.value || r.fields.certificate_id }
566
- };
567
- }), ae = async () => {
568
- var n, s, g, i, o, f;
569
- try {
570
- r.isReadonly = !0;
571
- let u;
572
- N.value === "create" ? u = await R.post(T.value, M.value) : N.value === "edit" && (u = ((n = a.config) == null ? void 0 : n.app) === "konnect" ? await R.put(T.value, M.value) : await R.patch(T.value, M.value)), r.fields.name = ((s = u == null ? void 0 : u.data) == null ? void 0 : s.name) || "", r.fields.tags = ((i = (g = u == null ? void 0 : u.data) == null ? void 0 : g.tags) == null ? void 0 : i.join(", ")) || "", r.fields.certificate_id = ((f = (o = u == null ? void 0 : u.data) == null ? void 0 : o.certificate) == null ? void 0 : f.id) || "", Object.assign(B, r.fields), v("update", u == null ? void 0 : u.data);
573
- } catch (u) {
574
- r.errorMessage = Z(u), v("error", u);
575
- } finally {
576
- r.isReadonly = !1;
577
- }
578
- }, {
579
- debouncedQueryChange: K,
580
- loading: ie,
581
- allRecords: ne,
582
- error: $,
583
- validationError: V,
584
- loadItems: oe,
585
- results: se
586
- } = Ve(a.config, W.form[a.config.app].certificates), re = (n) => {
587
- K(n);
588
- }, k = y(() => $.value ? p("errors.certificates.fetch") : ""), x = y(() => V.value ? p("errors.certificates.invalid") : ""), F = S(0), A = y(() => ne.value === void 0), q = S(/* @__PURE__ */ new Set()), j = y(() => Array.from(q.value).map((s) => ({
589
- label: s,
590
- value: s,
591
- selected: r.fields.certificate_id === s
592
- }))), L = (n) => {
593
- q.value.clear();
594
- let s;
595
- for (s of n)
596
- q.value.add(s.id);
597
- };
598
- return de(se, (n) => {
599
- L(n);
600
- }, { immediate: !0, deep: !0 }), de(j, () => {
601
- F.value++;
602
- }, { immediate: !0, deep: !0 }), ve(async () => {
603
- await oe();
604
- }), (n, s) => {
605
- const g = E("KInput"), i = E("KSelect");
606
- return b(), X("div", Ze, [
607
- d(e(qe), {
608
- "can-submit": te.value,
609
- config: t.config,
610
- "edit-id": t.sniId,
611
- "entity-type": e(Pe).SNI,
612
- "error-message": r.errorMessage || k.value,
613
- "fetch-url": ee.value,
614
- "form-fields": M.value,
615
- "is-readonly": r.isReadonly,
616
- onCancel: C,
617
- "onFetch:error": s[3] || (s[3] = (o) => n.$emit("error", o)),
618
- "onFetch:success": U,
619
- onLoading: s[4] || (s[4] = (o) => n.$emit("loading", o)),
620
- onSubmit: ae
621
- }, {
622
- default: c(() => [
623
- d(e(me), {
624
- description: e(p)("form.sections.general.description"),
625
- title: e(p)("form.sections.general.title")
626
- }, {
627
- default: c(() => [
628
- d(g, {
629
- modelValue: r.fields.name,
630
- "onUpdate:modelValue": s[0] || (s[0] = (o) => r.fields.name = o),
631
- modelModifiers: { trim: !0 },
632
- autocomplete: "off",
633
- "data-testid": "sni-form-name",
634
- label: e(p)("form.fields.name.label"),
635
- placeholder: e(p)("form.fields.name.placeholder"),
636
- readonly: r.isReadonly,
637
- required: "",
638
- type: "text"
639
- }, null, 8, ["modelValue", "label", "placeholder", "readonly"]),
640
- d(g, {
641
- modelValue: r.fields.tags,
642
- "onUpdate:modelValue": s[1] || (s[1] = (o) => r.fields.tags = o),
643
- modelModifiers: { trim: !0 },
644
- autocomplete: "off",
645
- "data-testid": "sni-form-tags",
646
- help: e(p)("form.fields.tags.help"),
647
- label: e(p)("form.fields.tags.label"),
648
- "label-attributes": {
649
- info: e(p)("form.fields.tags.tooltip"),
650
- tooltipAttributes: { maxWidth: "400" }
651
- },
652
- placeholder: e(p)("form.fields.tags.placeholder"),
653
- readonly: r.isReadonly,
654
- type: "text"
655
- }, null, 8, ["modelValue", "help", "label", "label-attributes", "placeholder", "readonly"])
656
- ]),
657
- _: 1
658
- }, 8, ["description", "title"]),
659
- d(e(me), {
660
- description: e(p)("form.sections.certificate.description"),
661
- "has-divider": "",
662
- title: e(p)("form.sections.certificate.title")
663
- }, {
664
- default: c(() => [
665
- w.value ? (b(), I(g, {
666
- key: 0,
667
- "data-testid": "sni-form-certificate-id",
668
- label: e(p)("form.fields.certificate_id.label"),
669
- "model-value": w.value,
670
- readonly: "",
671
- required: "",
672
- width: "100%"
673
- }, null, 8, ["label", "model-value"])) : (b(), I(i, {
674
- key: 1,
675
- modelValue: r.fields.certificate_id,
676
- "onUpdate:modelValue": s[2] || (s[2] = (o) => r.fields.certificate_id = o),
677
- clearable: "",
678
- "data-testid": "sni-form-certificate-id",
679
- "dropdown-footer-text": A.value ? e(p)("form.fields.certificate_id.footer") : void 0,
680
- "enable-filtering": "",
681
- "filter-function": () => !0,
682
- items: j.value,
683
- label: e(p)("form.fields.certificate_id.label"),
684
- loading: e(ie),
685
- placeholder: e(p)("form.fields.certificate_id.placeholder"),
686
- readonly: r.isReadonly,
687
- required: "",
688
- width: "100%",
689
- onQueryChange: re
690
- }, {
691
- loading: c(() => [
692
- Y("div", null, h(e(p)("actions.loading")), 1)
693
- ]),
694
- empty: c(() => [
695
- Y("div", et, h(e(p)("search.no_results")), 1)
696
- ]),
697
- _: 1
698
- }, 8, ["modelValue", "dropdown-footer-text", "items", "label", "loading", "placeholder", "readonly"])),
699
- x.value ? (b(), X("p", tt, h(x.value), 1)) : O("", !0)
700
- ]),
701
- _: 1
702
- }, 8, ["description", "title"])
703
- ]),
704
- _: 1
705
- }, 8, ["can-submit", "config", "edit-id", "entity-type", "error-message", "fetch-url", "form-fields", "is-readonly"])
706
- ]);
707
- };
708
- }
709
- }), ct = /* @__PURE__ */ Se(at, [["__scopeId", "data-v-c457d016"]]);
710
- export {
711
- ct as SniForm,
712
- lt as SniList
713
- };
@@ -1 +0,0 @@
1
- (function(y,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue"),require("vue-router"),require("@kong-ui-public/i18n"),require("@kong-ui-public/entities-shared"),require("@kong/icons")):typeof define=="function"&&define.amd?define(["exports","vue","vue-router","@kong-ui-public/i18n","@kong-ui-public/entities-shared","@kong/icons"],e):(y=typeof globalThis<"u"?globalThis:y||self,e(y["kong-ui-public-entities-snis"]={},y.Vue,y.VueRouter,y["kong-ui-public-i18n"],y["kong-ui-public-entities-shared"],y.KongIcons))})(this,function(y,e,Z,v,d,C){"use strict";const ae={actions:{create:"New SNI",copy_id:"Copy ID",copy_json:"Copy JSON",edit:"Edit",delete:"Delete",clear:"Clear",loading:"Loading..."},search:{placeholder:"Filter by exact name or ID",no_results:"No results found"},snis:{title:"SNIs",list:{toolbar_actions:{new:"New SNI"},table_headers:{name:"Name",id:"ID",certificate_id:"SSL Certificate ID",tags:"Tags"},empty_state:{title:"Configure a New SNI",description:"SNIs are used to map hostnames to a certificate."},empty_state_v2:{title:"Configure your first SNI",description:"Server Name Indications (SNIs) map hostnames to SSL/TLS certificates, enabling secure connections for domain-specific traffic.",group:"SNIs created in gateways within this group will automatically appear here.",create_cta:"New SNI",learn_more:"Learn more"}}},form:{sections:{general:{title:"General Information",description:"General information will help identify and manage this SNI."},certificate:{title:"Certificate",description:"Map an existing Certificate object to hostnames"}},fields:{name:{label:"Name",placeholder:"Enter a unique name for this SNI"},tags:{label:"Tags",placeholder:"Enter a list of tags separated by comma",help:"e.g. tag1, tag2, tag3",tooltip:"An optional set of strings for grouping and filtering, separated by commas."},certificate_id:{label:"SSL Certificate ID",placeholder:"Enter or select a Certificate ID",footer:"Search by exact ID to find certificates not included in the list"}}},delete:{title:"Delete an SNI",description:"This action cannot be reversed so make sure to check the SNI usage before deleting."},errors:{delete:"The SNI could not be deleted at this time.",general:"SNIs could not be retrieved",certificates:{fetch:"Could not fetch available certificates",invalid:"Please select a valid certificate ID"},copy:"Failed to copy to clipboard"},copy:{success:"Copied {val} to clipboard",success_brief:"Successfully copied to clipboard"}};function oe(){const t=v.createI18n("en-us",ae);return{i18n:t,i18nT:v.i18nTComponent(t)}}const ee={useI18n:oe},$="/v2/control-planes/{controlPlaneId}/core-entities",R="/{workspace}",q={list:{konnect:{all:`${$}/snis`},kongManager:{all:`${R}/snis`}},form:{konnect:{create:`${$}/snis`,edit:`${$}/snis/{id}`,certificates:`${$}/certificates`},kongManager:{create:`${R}/snis`,edit:`${R}/snis/{id}`,certificates:`${R}/certificates`}}},ne={class:"kong-ui-entities-snis-list"},re={class:"button-row"},se={key:1},ce=e.defineComponent({__name:"SniList",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0:t.app)||!t.createRoute||!t.getViewRoute||!t.getEditRoute||t.app==="kongManager"&&!t.isExactMatch&&!t.filterSchema)},cacheIdentifier:{type:String,default:""},canCreate:{type:Function,required:!1,default:async()=>!0},canDelete:{type:Function,required:!1,default:async()=>!0},canEdit:{type:Function,required:!1,default:async()=>!0},canRetrieve:{type:Function,required:!1,default:async()=>!0},useActionOutside:{type:Boolean,default:!1},useToolbarCreationButton:{type:Boolean,default:!1}},emits:["error","click:learn-more","copy:success","copy:error","delete:success"],setup(t,{emit:V}){var u;const g=V,i=t,{i18n:{t:c}}=ee.useI18n(),p=Z.useRouter(),{axiosInstance:L}=d.useAxios((u=i.config)==null?void 0:u.axiosRequestConfig),{hasRecords:S,handleStateChange:W}=d.useTableState(()=>b.value),k=e.computed(()=>S.value&&i.config.app==="konnect"),N=e.computed(()=>i.config.app!=="kongManager"||!!i.config.disableSorting),s={name:{label:c("snis.list.table_headers.name"),searchable:!0,sortable:!0,hidable:!1},certificate:{label:c("snis.list.table_headers.certificate_id"),sortable:!1},tags:{label:c("snis.list.table_headers.tags"),sortable:!1}},B=s,J=a=>({style:{maxWidth:a.headerKey==="name"?"250px":a.headerKey==="certificate"?"350px":null}}),K=e.computed(()=>{var n,f;let a=`${i.config.apiBaseUrl}${q.list[i.config.app].all}`;return i.config.app==="konnect"?a=a.replace(/{controlPlaneId}/gi,((n=i.config)==null?void 0:n.controlPlaneId)||""):i.config.app==="kongManager"&&(a=a.replace(/\/{workspace}/gi,(f=i.config)!=null&&f.workspace?`/${i.config.workspace}`:"")),a}),b=e.ref(""),E=e.computed(()=>{const a=i.config.app==="konnect"||i.config.isExactMatch;if(a)return{isExactMatch:a,placeholder:c("search.placeholder")};const{name:n}=s;return{isExactMatch:a,fields:{name:n},schema:i.config.filterSchema}}),{fetcher:I,fetcherState:Q,fetcherCacheKey:D}=d.useFetcher(e.computed(()=>({...i.config,cacheIdentifier:i.cacheIdentifier})),K),z=()=>{b.value=""},G=()=>{D.value++},_=e.ref(null),T=e.ref({ctaPath:i.config.createRoute,ctaText:void 0,message:`${c("snis.list.empty_state.description")}${i.config.additionMessageForEmptyState?` ${i.config.additionMessageForEmptyState}`:""}`,title:c("snis.title")}),H=async(a,n)=>{const f=a.id;if(!await n(f)){g("copy:error",{entity:a,field:"id",message:c("errors.copy")});return}g("copy:success",{entity:a,field:"id",message:c("copy.success",{val:f})})},X=async(a,n)=>{const f=JSON.stringify(a);if(!await n(f)){g("copy:error",{entity:a,message:c("errors.copy")});return}g("copy:success",{entity:a,message:c("copy.success_brief")})},Y=a=>({label:c("actions.edit"),to:i.config.getEditRoute(a)}),h=e.ref(void 0),x=e.ref(!1),w=e.ref(!1),P=e.ref(""),M=d.useDeleteUrlBuilder(i.config,K.value),O=a=>{h.value=a,x.value=!0},A=()=>{x.value=!1,h.value=void 0},U=async()=>{var a,n,f;if((a=h.value)!=null&&a.id){w.value=!0;try{await L.delete(M(h.value.id)),g("delete:success",h.value),w.value=!1,A(),D.value++}catch(l){P.value=((f=(n=l.response)==null?void 0:n.data)==null?void 0:f.message)||l.message||c("errors.delete"),g("error",l)}finally{w.value=!1}}},o=()=>{p.push(i.config.createRoute)};e.watch(Q,a=>{var n,f,l;if(a.status===d.FetcherStatus.Error){_.value={title:c("errors.general")},(l=(f=(n=a.error)==null?void 0:n.response)==null?void 0:f.data)!=null&&l.message&&(_.value.message=a.error.response.data.message),g("error",a.error);return}_.value=null});const r=e.ref(!1);return e.onBeforeMount(async()=>{r.value=await i.canCreate(),r.value&&(T.value.title=c("snis.list.empty_state.title"),T.value.ctaText=c("actions.create"))}),(a,n)=>{const f=e.resolveComponent("KButton"),l=e.resolveComponent("KEmptyState"),ue=e.resolveComponent("KCopy"),j=e.resolveComponent("KDropdownItem"),ie=e.resolveComponent("KClipboardProvider");return e.openBlock(),e.createElementBlock("div",ne,[e.createVNode(e.unref(d.EntityBaseTable),{"cache-identifier":t.cacheIdentifier,"cell-attributes":J,"disable-row-click":!0,"disable-sorting":N.value,"empty-state-options":T.value,"enable-entity-actions":"","error-message":_.value,fetcher:e.unref(I),"fetcher-cache-key":e.unref(D),"pagination-type":"offset","preferences-storage-key":"kong-ui-entities-snis-list",query:b.value,"table-headers":e.unref(B),onClearSearchInput:z,onSort:G,onState:e.unref(W)},e.createSlots({"toolbar-filter":e.withCtx(()=>[e.createVNode(e.unref(d.EntityFilter),{modelValue:b.value,"onUpdate:modelValue":n[0]||(n[0]=m=>b.value=m),config:E.value},null,8,["modelValue","config"]),t.useToolbarCreationButton?(e.openBlock(),e.createBlock(e.unref(d.PermissionsWrapper),{key:0,"auth-function":t.canCreate},{default:e.withCtx(()=>[e.createVNode(f,{appearance:"primary","data-testid":"toolbar-add-sni",size:"large",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(C.AddIcon)),e.createTextVNode(" "+e.toDisplayString(e.unref(c)("actions.create")),1)]),_:1},8,["to"])]),_:1},8,["auth-function"])):e.createCommentVNode("",!0)]),"toolbar-button":e.withCtx(()=>[(e.openBlock(),e.createBlock(e.Teleport,{disabled:!t.useActionOutside,to:"#kong-ui-app-page-header-action-button"},[e.createElementVNode("div",re,[k.value?(e.openBlock(),e.createBlock(f,{key:0,appearance:"secondary",class:"open-learning-hub","data-testid":"snis-learn-more-button",icon:"",onClick:n[1]||(n[1]=m=>a.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(C.BookIcon),{decorative:""})]),_:1})):e.createCommentVNode("",!0),t.useToolbarCreationButton?e.createCommentVNode("",!0):(e.openBlock(),e.createBlock(e.unref(d.PermissionsWrapper),{key:1,"auth-function":t.canCreate},{default:e.withCtx(()=>[e.createVNode(f,{appearance:"primary","data-testid":"toolbar-add-sni",size:t.useActionOutside?"medium":"large",to:t.config.createRoute},{default:e.withCtx(()=>[e.createVNode(e.unref(C.AddIcon)),e.createTextVNode(" "+e.toDisplayString(e.unref(c)("snis.list.toolbar_actions.new")),1)]),_:1},8,["size","to"])]),_:1},8,["auth-function"]))])],8,["disabled"]))]),name:e.withCtx(({rowValue:m})=>[e.createElementVNode("b",null,e.toDisplayString(m??"-"),1)]),certificate:e.withCtx(({row:m})=>[m.certificate&&m.certificate.id?(e.openBlock(),e.createBlock(ue,{key:0,class:"copy-certificate-uuid","data-testid":"copy-certificate-uuid",text:m.certificate.id,truncate:""},null,8,["text"])):(e.openBlock(),e.createElementBlock("span",se,"-"))]),tags:e.withCtx(({rowValue:m})=>[e.createVNode(e.unref(d.TableTags),{tags:m},null,8,["tags"])]),actions:e.withCtx(({row:m})=>[e.createVNode(ie,null,{default:e.withCtx(({copyToClipboard:F})=>[e.createVNode(j,{"data-testid":"action-entity-copy-id",onClick:ge=>H(m,F)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)("actions.copy_id")),1)]),_:1},8,["onClick"])]),_:2},1024),e.createVNode(ie,null,{default:e.withCtx(({copyToClipboard:F})=>[e.createVNode(j,{"data-testid":"action-entity-copy-json",onClick:ge=>X(m,F)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)("actions.copy_json")),1)]),_:1},8,["onClick"])]),_:2},1024),e.createVNode(e.unref(d.PermissionsWrapper),{"auth-function":()=>t.canEdit(m)},{default:e.withCtx(()=>[e.createVNode(j,{"data-testid":"action-entity-edit",item:Y(m.id)},null,8,["item"])]),_:2},1032,["auth-function"]),e.createVNode(e.unref(d.PermissionsWrapper),{"auth-function":()=>t.canDelete(m)},{default:e.withCtx(()=>[e.createVNode(j,{danger:"","data-testid":"action-entity-delete","has-divider":"",onClick:F=>O(m)},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)("actions.delete")),1)]),_:1},8,["onClick"])]),_:2},1032,["auth-function"])]),_:2},[!b.value&&t.config.app==="konnect"?{name:"empty-state",fn:e.withCtx(()=>{var m;return[e.createVNode(l,{"data-testid":"snis-entity-empty-state","icon-background":"",message:e.unref(c)("snis.list.empty_state_v2.description"),title:e.unref(c)("snis.list.empty_state_v2.title")},e.createSlots({icon:e.withCtx(()=>[e.createVNode(e.unref(C.CloudIcon),{decorative:""})]),action:e.withCtx(()=>[r.value?(e.openBlock(),e.createBlock(f,{key:0,"data-testid":"entity-create-button",onClick:o},{default:e.withCtx(()=>[e.createVNode(e.unref(C.AddIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(c)("snis.list.toolbar_actions.new")),1)]),_:1})):e.createCommentVNode("",!0),e.createVNode(f,{appearance:"secondary","data-testid":"entity-learn-more-button",onClick:n[2]||(n[2]=F=>a.$emit("click:learn-more"))},{default:e.withCtx(()=>[e.createVNode(e.unref(C.BookIcon),{decorative:""}),e.createTextVNode(" "+e.toDisplayString(e.unref(c)("snis.list.empty_state_v2.learn_more")),1)]),_:1})]),_:2},[(m=t.config)!=null&&m.isControlPlaneGroup?{name:"default",fn:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(e.unref(c)("snis.list.empty_state_v2.group")),1)]),key:"0"}:void 0]),1032,["message","title"])]}),key:"0"}:void 0]),1032,["cache-identifier","disable-sorting","empty-state-options","error-message","fetcher","fetcher-cache-key","query","table-headers","onState"]),e.createVNode(e.unref(d.EntityDeleteModal),{"action-pending":w.value,description:e.unref(c)("delete.description"),"entity-name":h.value&&(h.value.name||h.value.id),"entity-type":e.unref(d.EntityTypes).SNI,error:P.value,"need-confirm":!1,title:e.unref(c)("delete.title"),visible:x.value,onCancel:A,onProceed:U},null,8,["action-pending","description","entity-name","entity-type","error","title","visible"])])}}}),te=(t,V)=>{const g=t.__vccOpts||t;for(const[i,c]of V)g[i]=c;return g},le=te(ce,[["__scopeId","data-v-5d5c486a"]]),de={class:"kong-ui-entities-snis-form"},fe={"data-testid":"no-search-results"},pe={key:2,class:"invalid-certificate-message","data-testid":"invalid-certificate-message"},me=te(e.defineComponent({__name:"SniForm",props:{config:{type:Object,required:!0,validator:t=>!(!t||!["konnect","kongManager"].includes(t==null?void 0:t.app)||t.app==="konnect"&&!t.controlPlaneId||t.app==="kongManager"&&typeof t.workspace!="string"||!t.cancelRoute)},sniId:{type:String,required:!1,default:""}},emits:["update","error","loading"],setup(t,{emit:V}){var U;const g=V,i=t,c=Z.useRouter(),{i18n:{t:p}}=ee.useI18n(),{getMessageFromError:L}=d.useErrors(),{axiosInstance:S}=d.useAxios((U=i.config)==null?void 0:U.axiosRequestConfig),W=e.computed(()=>q.form[i.config.app].edit),k=e.computed(()=>i.sniId?d.EntityBaseFormType.Edit:d.EntityBaseFormType.Create),N=e.computed(()=>i.config.certificateId&&k.value===d.EntityBaseFormType.Create?i.config.certificateId:""),s=e.reactive({fields:{name:"",tags:"",certificate_id:""},isReadonly:!1,errorMessage:""}),B=e.reactive({name:"",tags:"",certificate_id:""}),J=e.computed(()=>JSON.stringify(s.fields)!==JSON.stringify(B)&&!!s.fields.name&&!!(s.fields.certificate_id||N.value)),K=o=>{var r,u;s.fields.name=(o==null?void 0:o.name)||"",s.fields.tags=((r=o==null?void 0:o.tags)==null?void 0:r.join(", "))||"",s.fields.certificate_id=((u=o==null?void 0:o.certificate)==null?void 0:u.id)||"",Object.assign(B,s.fields)},b=()=>{c.push(i.config.cancelRoute)},E=e.computed(()=>{var r,u;let o=`${i.config.apiBaseUrl}${q.form[i.config.app][k.value]}`;return i.config.app==="konnect"?o=o.replace(/{controlPlaneId}/gi,((r=i.config)==null?void 0:r.controlPlaneId)||""):i.config.app==="kongManager"&&(o=o.replace(/\/{workspace}/gi,(u=i.config)!=null&&u.workspace?`/${i.config.workspace}`:"")),o=o.replace(/{id}/gi,i.sniId),o}),I=e.computed(()=>{var o,r;return{name:s.fields.name,tags:(r=(o=s.fields.tags.split(","))==null?void 0:o.map(u=>String(u||"").trim()))==null?void 0:r.filter(u=>u!==""),certificate:{id:N.value||s.fields.certificate_id}}}),Q=async()=>{var o,r,u,a,n,f;try{s.isReadonly=!0;let l;k.value==="create"?l=await S.post(E.value,I.value):k.value==="edit"&&(l=((o=i.config)==null?void 0:o.app)==="konnect"?await S.put(E.value,I.value):await S.patch(E.value,I.value)),s.fields.name=((r=l==null?void 0:l.data)==null?void 0:r.name)||"",s.fields.tags=((a=(u=l==null?void 0:l.data)==null?void 0:u.tags)==null?void 0:a.join(", "))||"",s.fields.certificate_id=((f=(n=l==null?void 0:l.data)==null?void 0:n.certificate)==null?void 0:f.id)||"",Object.assign(B,s.fields),g("update",l==null?void 0:l.data)}catch(l){s.errorMessage=L(l),g("error",l)}finally{s.isReadonly=!1}},{debouncedQueryChange:D,loading:z,allRecords:G,error:_,validationError:T,loadItems:H,results:X}=d.useDebouncedFilter(i.config,q.form[i.config.app].certificates),Y=o=>{D(o)},h=e.computed(()=>_.value?p("errors.certificates.fetch"):""),x=e.computed(()=>T.value?p("errors.certificates.invalid"):""),w=e.ref(0),P=e.computed(()=>G.value===void 0),M=e.ref(new Set),O=e.computed(()=>Array.from(M.value).map(r=>({label:r,value:r,selected:s.fields.certificate_id===r}))),A=o=>{M.value.clear();let r;for(r of o)M.value.add(r.id)};return e.watch(X,o=>{A(o)},{immediate:!0,deep:!0}),e.watch(O,()=>{w.value++},{immediate:!0,deep:!0}),e.onBeforeMount(async()=>{await H()}),(o,r)=>{const u=e.resolveComponent("KInput"),a=e.resolveComponent("KSelect");return e.openBlock(),e.createElementBlock("div",de,[e.createVNode(e.unref(d.EntityBaseForm),{"can-submit":J.value,config:t.config,"edit-id":t.sniId,"entity-type":e.unref(d.SupportedEntityType).SNI,"error-message":s.errorMessage||h.value,"fetch-url":W.value,"form-fields":I.value,"is-readonly":s.isReadonly,onCancel:b,"onFetch:error":r[3]||(r[3]=n=>o.$emit("error",n)),"onFetch:success":K,onLoading:r[4]||(r[4]=n=>o.$emit("loading",n)),onSubmit:Q},{default:e.withCtx(()=>[e.createVNode(e.unref(d.EntityFormSection),{description:e.unref(p)("form.sections.general.description"),title:e.unref(p)("form.sections.general.title")},{default:e.withCtx(()=>[e.createVNode(u,{modelValue:s.fields.name,"onUpdate:modelValue":r[0]||(r[0]=n=>s.fields.name=n),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"sni-form-name",label:e.unref(p)("form.fields.name.label"),placeholder:e.unref(p)("form.fields.name.placeholder"),readonly:s.isReadonly,required:"",type:"text"},null,8,["modelValue","label","placeholder","readonly"]),e.createVNode(u,{modelValue:s.fields.tags,"onUpdate:modelValue":r[1]||(r[1]=n=>s.fields.tags=n),modelModifiers:{trim:!0},autocomplete:"off","data-testid":"sni-form-tags",help:e.unref(p)("form.fields.tags.help"),label:e.unref(p)("form.fields.tags.label"),"label-attributes":{info:e.unref(p)("form.fields.tags.tooltip"),tooltipAttributes:{maxWidth:"400"}},placeholder:e.unref(p)("form.fields.tags.placeholder"),readonly:s.isReadonly,type:"text"},null,8,["modelValue","help","label","label-attributes","placeholder","readonly"])]),_:1},8,["description","title"]),e.createVNode(e.unref(d.EntityFormSection),{description:e.unref(p)("form.sections.certificate.description"),"has-divider":"",title:e.unref(p)("form.sections.certificate.title")},{default:e.withCtx(()=>[N.value?(e.openBlock(),e.createBlock(u,{key:0,"data-testid":"sni-form-certificate-id",label:e.unref(p)("form.fields.certificate_id.label"),"model-value":N.value,readonly:"",required:"",width:"100%"},null,8,["label","model-value"])):(e.openBlock(),e.createBlock(a,{key:1,modelValue:s.fields.certificate_id,"onUpdate:modelValue":r[2]||(r[2]=n=>s.fields.certificate_id=n),clearable:"","data-testid":"sni-form-certificate-id","dropdown-footer-text":P.value?e.unref(p)("form.fields.certificate_id.footer"):void 0,"enable-filtering":"","filter-function":()=>!0,items:O.value,label:e.unref(p)("form.fields.certificate_id.label"),loading:e.unref(z),placeholder:e.unref(p)("form.fields.certificate_id.placeholder"),readonly:s.isReadonly,required:"",width:"100%",onQueryChange:Y},{loading:e.withCtx(()=>[e.createElementVNode("div",null,e.toDisplayString(e.unref(p)("actions.loading")),1)]),empty:e.withCtx(()=>[e.createElementVNode("div",fe,e.toDisplayString(e.unref(p)("search.no_results")),1)]),_:1},8,["modelValue","dropdown-footer-text","items","label","loading","placeholder","readonly"])),x.value?(e.openBlock(),e.createElementBlock("p",pe,e.toDisplayString(x.value),1)):e.createCommentVNode("",!0)]),_:1},8,["description","title"])]),_:1},8,["can-submit","config","edit-id","entity-type","error-message","fetch-url","form-fields","is-readonly"])])}}}),[["__scopeId","data-v-c457d016"]]);y.SniForm=me,y.SniList=le,Object.defineProperty(y,Symbol.toStringTag,{value:"Module"})});
package/dist/style.css DELETED
@@ -1 +0,0 @@
1
- .config-card-fieldset[data-v-dc1e39a1]{border:solid 1px #e0e4ea;border-radius:4px;margin-bottom:8px;margin-top:4px}.config-card-fieldset-title[data-v-dc1e39a1]{font-size:14px;padding:0 8px;width:auto}fieldset.config-card-fieldset .config-card-details-row{width:unset}.config-card-json-item .config-card-details-row,fieldset.config-card-fieldset .config-card-details-row{margin:0 16px}.config-card-json-item .config-card-details-row:last-of-type,fieldset.config-card-fieldset .config-card-details-row:last-of-type{border-bottom:none}[data-v-2feb8c2e] .k-button.navigation-button{font-size:14px;font-weight:400}.config-card-details-row[data-v-40ffb9f1]{align-items:center;border-bottom:var(--v0b2cd434);box-sizing:border-box;display:var(--bb02ad32);padding:16px 16px 16px 0;width:100%}.config-card-details-row .config-card-details-label[data-v-40ffb9f1]{box-sizing:border-box;padding-right:16px;width:var(--d92de3ce)}.config-card-details-row .config-card-details-label label[data-v-40ffb9f1]{color:#3a3f51;display:inline-flex;max-width:100%}.config-card-details-row .config-card-details-label label .label-content[data-v-40ffb9f1]{line-height:initial;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.config-card-details-row .config-card-details-label label .k-popover[data-v-40ffb9f1]{min-width:0}.config-card-details-row .config-card-details-value[data-v-40ffb9f1]{box-sizing:border-box;width:var(--d9295818)}.config-card-details-row .config-card-details-value .truncated[data-v-40ffb9f1]{display:inline-block;line-height:initial;max-width:20ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.config-card-details-row .config-card-details-value span.attrs-data-text[data-v-40ffb9f1]{overflow-wrap:anywhere}.config-card-details-row .config-card-details-value .copy-uuid-array[data-v-40ffb9f1] .k-copy:not(:last-of-type){margin-bottom:8px}.config-card-details-row .config-card-details-value .method-badge-array[data-v-40ffb9f1]{display:flex;flex-wrap:wrap;row-gap:10px}.config-card-details-row .config-badge[data-v-40ffb9f1]{margin-right:4px}.config-card-details-row[data-v-40ffb9f1] .k-label{margin-bottom:0}.config-card-details-row[data-v-40ffb9f1] .k-label .kong-icon-infoFilled{display:flex}.config-card-details-row[data-v-40ffb9f1] .config-card-details-row{width:auto}.json-content.k-code-block{border-top-left-radius:0;border-top-right-radius:0}.json-endpoint{align-items:baseline;background-color:#000933;border-bottom:1px solid rgba(255,255,255,.2);border-top-left-radius:8px;border-top-right-radius:8px;display:flex;padding:8px 0 8px 12px}.json-endpoint .k-code-block{flex:auto;z-index:2}.json-endpoint .k-code-block .code-block-content{padding-bottom:0;padding-top:0}.json-endpoint .k-code-block .code-block-secondary-actions{margin-top:0!important}.json-endpoint code{direction:rtl;max-width:var(--v58418ff6);overflow:hidden!important;text-align:left;text-overflow:ellipsis;white-space:nowrap}.config-card-prop-section-title[data-v-a7689049]{color:#000933;font-size:16px;font-weight:600;margin-bottom:16px;margin-top:48px}.kong-ui-entity-base-config-card .config-card-actions[data-v-f2b42324]{align-items:center;display:flex}.kong-ui-entity-base-config-card .config-card-actions .config-format-select-label[data-v-f2b42324]{margin-bottom:0;margin-right:8px}.kong-ui-entity-base-config-card .config-card-prop-section-title[data-v-f2b42324]{color:#000933;font-size:16px;font-weight:600;margin-bottom:16px;margin-top:48px}.kong-ui-entity-base-config-card[data-v-f2b42324] .config-card-details-row:last-of-type{border-bottom:none}.kong-ui-entity-base-config-card .book-icon[data-v-f2b42324]{margin-left:8px;padding:0}.deck-config .k-select[data-v-04c956bc]{margin-bottom:16px}.deck-config .k-code-block[data-v-04c956bc]{margin-top:12px}.kong-ui-entity-base-form[data-v-7cbcaad8]{box-sizing:border-box;max-width:1536px;width:100%}.kong-ui-entity-base-form[data-v-7cbcaad8] .k-slideout-title{color:#000933!important;font-size:24px!important;font-weight:700!important;line-height:32px!important;margin-bottom:16px!important}.kong-ui-entity-base-form[data-v-7cbcaad8] .k-card.content-card{padding:0 16px!important}.kong-ui-entity-base-form[data-v-7cbcaad8] .tab-item>div.tab-link.has-panels{color:#6c7489!important;font-size:14px!important;font-weight:700!important;line-height:24px!important}.kong-ui-entity-base-form[data-v-7cbcaad8] .tab-item.active>div.tab-link.has-panels{color:#000933!important;font-weight:600!important}.kong-ui-entity-base-form[data-v-7cbcaad8] .slideout-content{overflow-y:unset!important}.form-actions[data-v-7cbcaad8]{align-items:center;display:flex;justify-content:flex-end;margin-top:24px}.form-actions[data-v-7cbcaad8] .k-button:last-of-type,.form-actions[data-v-7cbcaad8] .k-button:nth-last-of-type(2){margin-inline-start:16px}.form-actions-reverted[data-v-7cbcaad8]{direction:rtl}.content-wrapper[data-v-a3a65cac] .k-tooltip{word-break:break-all}.kong-ui-entity-base-table .toolbar-container[data-v-09e101d4]{align-items:center;display:flex;width:100%}.kong-ui-entity-base-table .toolbar-button-container[data-v-09e101d4]{margin-left:auto}.kong-ui-entity-base-table .hidden[data-v-09e101d4]{display:none}.kong-ui-entity-delete-modal .message[data-v-4361d622],.kong-ui-entity-delete-modal .description[data-v-4361d622]{line-height:24px;margin:0}.kong-ui-entity-delete-modal .message strong[data-v-4361d622]{font-weight:600}.kong-ui-entity-delete-modal .description[data-v-4361d622]{margin-top:32px}.kong-ui-entity-delete-error[data-v-4361d622]{margin-bottom:16px}.kong-ui-entity-filter-input[data-v-084f7978]{width:100%}.kong-ui-entity-filter-clear[data-v-084f7978]{cursor:pointer}.kong-ui-entity-filter[data-v-084f7978]{display:flex;position:relative}.kong-ui-entity-filter[data-v-084f7978] .menu-content{flex-direction:column}.kong-ui-entity-filter[data-v-084f7978] .k-menu-item-divider hr{margin:12px 0}.kong-ui-entity-filter-backdrop[data-v-084f7978]{bottom:0;left:0;position:fixed;right:0;top:0;z-index:1050}.kong-ui-entity-filter-menu[data-v-084f7978]{background-color:#fff;border:1px solid #afb7c5;border-radius:4px;box-shadow:0 4px 20px #e0e4ea;left:0;margin-top:16px;padding:8px 0 12px;position:absolute;top:100%;width:300px;z-index:1060}.kong-ui-entity-filter-menu-item[data-v-084f7978]{border-bottom:1px solid #e0e4ea;color:#6c7489;font-size:12px;font-weight:400;line-height:16px;list-style:none;margin:0 20px;padding:16px 0;position:relative;white-space:nowrap}.menu-item-title[data-v-084f7978]{align-items:center;cursor:pointer;display:flex;line-height:24px}.menu-item-title.expanded[data-v-084f7978]{color:#232633}.menu-item-expand-icon[data-v-084f7978]{margin-left:auto}.menu-item-expand-icon.expanded[data-v-084f7978]{transform:rotate(180deg)}.menu-item-indicator[data-v-084f7978]{background-color:#0044f4;border-radius:50%;height:4px;margin-left:4px;width:4px}.menu-item-body[data-v-084f7978]{align-items:center;display:flex;justify-content:space-between;margin-top:16px}.menu-item-body[data-v-084f7978] .input{padding-bottom:4px!important;padding-top:4px!important}.menu-item-body[data-v-084f7978] .k-input{width:100%}.menu-item-body[data-v-084f7978] .k-select-input .input{font-size:12px}.menu-item-body[data-v-084f7978] .k-select-input .input::placeholder{color:#00000073!important;font-size:12px}.menu-item-label[data-v-084f7978]{margin-bottom:0;margin-right:12px}.menu-item-buttons[data-v-084f7978]{display:flex;justify-content:space-between;margin:10px 0 6px}.filter-clear-button-container[data-v-084f7978]{padding:12px 20px 0}fieldset[data-v-b1f74200]{margin:0;min-width:0;padding:0}.kong-ui-entity-form-section[data-v-b1f74200]{border:0}.kong-ui-entity-form-section .form-section-wrapper[data-v-b1f74200]{column-gap:16px;display:flex;flex-direction:column;padding-bottom:64px;row-gap:12px;width:100%}@media (min-width: 1024px){.kong-ui-entity-form-section .form-section-wrapper[data-v-b1f74200]{flex-direction:row}}.kong-ui-entity-form-section .form-section-wrapper .form-section-info[data-v-b1f74200]{flex:1}@media (min-width: 1024px){.kong-ui-entity-form-section .form-section-wrapper .form-section-info[data-v-b1f74200]{max-width:350px}.kong-ui-entity-form-section .form-section-wrapper .form-section-info.sticky[data-v-b1f74200]{height:fit-content;margin-bottom:16px;position:sticky;top:16px}}.kong-ui-entity-form-section .form-section-wrapper .form-section-info .form-section-title[data-v-b1f74200]{color:#000933;font-size:16px;font-weight:700;line-height:20px;margin-bottom:8px;margin-top:0}.kong-ui-entity-form-section .form-section-wrapper .form-section-info .form-section-description[data-v-b1f74200],.kong-ui-entity-form-section .form-section-wrapper .form-section-info .form-section-description p[data-v-b1f74200],.kong-ui-entity-form-section .form-section-wrapper .form-section-info .form-section-description[data-v-b1f74200] p{color:#000933;font-size:14px;font-weight:400;line-height:20px;margin:0}.kong-ui-entity-form-section .form-section-wrapper .form-section-info .form-section-footer[data-v-b1f74200]{margin-top:32px}.kong-ui-entity-form-section .form-section-wrapper .form-section-content[data-v-b1f74200]{flex:1}.kong-ui-entity-form-section .form-section-wrapper .form-section-content[data-v-b1f74200]>*:not(:first-child){margin-top:24px}.kong-ui-entity-form-section.has-divider .form-section-wrapper[data-v-b1f74200]{border-bottom:1px solid #e0e4ea}.ff-form-section .header[data-v-cb6d2e95]{align-items:flex-start;display:flex;gap:8px}.ff-form-section .step[data-v-cb6d2e95]{align-items:center;background:#fff;border:1px solid #afb7c5;border-radius:100px;display:flex;flex:0 0 auto;height:32px;justify-content:center;padding:4px;width:32px}.ff-form-section .header-content[data-v-cb6d2e95]{align-items:flex-start;display:flex;flex:1 1 auto;flex-direction:column;gap:8px;padding-top:4px}.ff-form-section .header-title[data-v-cb6d2e95]{color:#000933;font-size:18px;font-weight:700;line-height:24px;margin:0}.ff-form-section .header-description[data-v-cb6d2e95]{color:#52596e;font-size:14px;line-height:20px;margin:0}.ff-form-section .header-extra[data-v-cb6d2e95]{align-items:center;display:flex;flex:0 0 auto;gap:8px;justify-content:flex-end}.ff-form-section .content[data-v-cb6d2e95]{background:#f9fafb;border:1px solid #e0e4ea;border-radius:6px;display:flex;flex-direction:column;gap:20px;margin-left:16px;margin-top:20px;padding:20px 24px}.kong-ui-public-entity-link[data-v-96efdfa5]{align-items:center;display:flex}.kong-ui-public-entity-link .deleted-entity[data-v-96efdfa5]{font-style:italic}.kong-ui-public-entity-link .entity-link[data-v-96efdfa5]{display:flex;flex:1}.kong-ui-public-entity-link .entity-link[data-v-96efdfa5] .external-link-icon{color:#0044f4;margin-left:4px;padding:2px}.kong-ui-public-entity-link .entity-link-label[data-v-96efdfa5]{display:inline-block;font-weight:400;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.kong-ui-public-entity-link .copy-uuid-tooltip[data-v-96efdfa5]{align-items:center;cursor:pointer;display:flex}.kong-ui-public-entity-link .copy-uuid-tooltip .entity-link-copy-id[data-v-96efdfa5]{margin-left:2px}.kong-ui-public-entity-empty-state[data-v-6d4a0f89]{align-items:center;background-color:#fff;box-sizing:border-box;display:flex;flex-direction:column;font-family:Inter,Roboto,Helvetica,sans-serif;gap:24px;padding:64px 0;width:100%}@media (min-width: 640px){.kong-ui-public-entity-empty-state[data-v-6d4a0f89]{padding:64px 96px}}.kong-ui-public-entity-empty-state .empty-state-image[data-v-6d4a0f89]{margin-bottom:8px}.kong-ui-public-entity-empty-state .entity-empty-state-content[data-v-6d4a0f89]{align-items:center;display:flex;flex-direction:column;gap:8px;text-align:center;width:100%}.kong-ui-public-entity-empty-state .entity-empty-state-content .entity-empty-state-title h1[data-v-6d4a0f89]{align-items:center;color:#000933;display:flex;font-size:24px;font-weight:700;gap:8px;line-height:32px;margin:0}.kong-ui-public-entity-empty-state .entity-empty-state-content .entity-empty-state-title h1.secondary[data-v-6d4a0f89]{font-size:18px}.kong-ui-public-entity-empty-state .entity-empty-state-description[data-v-6d4a0f89],.kong-ui-public-entity-empty-state .entity-empty-state-pricing[data-v-6d4a0f89]{color:#52596e;font-size:14px;font-weight:400;line-height:20px;max-width:640px}.kong-ui-public-entity-empty-state .entity-empty-state-description p[data-v-6d4a0f89],.kong-ui-public-entity-empty-state .entity-empty-state-pricing p[data-v-6d4a0f89]{margin:0}.kong-ui-public-entity-empty-state .entity-empty-state-pricing[data-v-6d4a0f89]{margin-top:16px}.kong-ui-public-entity-empty-state .entity-empty-state-message[data-v-6d4a0f89]{color:#52596e}.kong-ui-public-entity-empty-state .entity-empty-state-action[data-v-6d4a0f89]{align-items:center;display:flex;gap:12px}.kong-ui-public-entity-empty-state .entity-empty-state-card-container[data-v-6d4a0f89]{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-around;margin-top:8px;width:312px}@media (min-width: 640px){.kong-ui-public-entity-empty-state .entity-empty-state-card-container[data-v-6d4a0f89]{width:640px}}.kong-ui-public-entity-empty-state .entity-empty-state-card-container .entity-empty-state-card[data-v-6d4a0f89]{background-color:#f9fafb;border:1px solid #e0e4ea;border-radius:6px;color:#afb7c5;gap:8px;height:160px;padding:20px;width:312px}.kong-ui-public-entity-empty-state .entity-empty-state-card-container .entity-empty-state-card .feature-icon[data-v-6d4a0f89]{color:#3a3f51;display:flex;margin-bottom:12px}.kong-ui-public-entity-empty-state .entity-empty-state-card-container .entity-empty-state-card .feature-icon[data-v-6d4a0f89] .kui-icon{height:20px!important;width:20px!important}.kong-ui-public-entity-empty-state .entity-empty-state-card-container .entity-empty-state-card[data-v-6d4a0f89] .card-title{font-size:14px;font-weight:600}.kong-ui-public-entity-empty-state .entity-empty-state-card-container .entity-empty-state-card[data-v-6d4a0f89] .card-content{-webkit-box-orient:vertical;color:#6c7489;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.kong-ui-public-entity-empty-state .entity-empty-state-bottom-container[data-v-6d4a0f89]{border-top:1px solid #e0e4ea;display:flex;flex-direction:column;gap:16px;padding-top:48px;width:100%}@media (min-width: 640px){.kong-ui-public-entity-empty-state .entity-empty-state-bottom-container[data-v-6d4a0f89]{width:640px}}.button-row[data-v-5d5c486a]{align-items:center;display:flex;gap:12px}.kong-ui-entities-snis-list[data-v-5d5c486a]{width:100%}.kong-ui-entities-snis-list .kong-ui-entity-filter-input[data-v-5d5c486a]{margin-right:12px}.kong-ui-entities-snis-form[data-v-c457d016]{width:100%}.kong-ui-entities-snis-form .invalid-certificate-message[data-v-c457d016]{color:#d60027;font-size:11px;font-weight:500;margin-top:3px!important}
@@ -1,44 +0,0 @@
1
- import type { PropType } from 'vue';
2
- import type { AxiosError } from 'axios';
3
- import type { KonnectSniFormConfig, KongManagerSniFormConfig } from '../types';
4
- import '@kong-ui-public/entities-shared/dist/style.css';
5
- declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
7
- config: {
8
- type: PropType<KonnectSniFormConfig | KongManagerSniFormConfig>;
9
- required: true;
10
- validator: (config: KonnectSniFormConfig | KongManagerSniFormConfig) => boolean;
11
- };
12
- /** If a valid SNI ID is provided, it will put the form in Edit mode instead of Create */
13
- sniId: {
14
- type: StringConstructor;
15
- required: false;
16
- default: string;
17
- };
18
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
19
- error: (error: AxiosError<unknown, any>) => any;
20
- loading: (isLoading: boolean) => any;
21
- update: (data: Record<string, any>) => any;
22
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
23
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
24
- config: {
25
- type: PropType<KonnectSniFormConfig | KongManagerSniFormConfig>;
26
- required: true;
27
- validator: (config: KonnectSniFormConfig | KongManagerSniFormConfig) => boolean;
28
- };
29
- /** If a valid SNI ID is provided, it will put the form in Edit mode instead of Create */
30
- sniId: {
31
- type: StringConstructor;
32
- required: false;
33
- default: string;
34
- };
35
- }>> & Readonly<{
36
- onError?: ((error: AxiosError<unknown, any>) => any) | undefined;
37
- onLoading?: ((isLoading: boolean) => any) | undefined;
38
- onUpdate?: ((data: Record<string, any>) => any) | undefined;
39
- }>, {
40
- sniId: string;
41
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
42
- declare const _default: typeof __VLS_export;
43
- export default _default;
44
- //# sourceMappingURL=SniForm.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SniForm.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SniForm.vue"],"names":[],"mappings":"AAmVA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAGnC,OAAO,KAAK,EAAE,UAAU,EAAiB,MAAM,OAAO,CAAA;AACtD,OAAO,KAAK,EACV,oBAAoB,EACpB,wBAAwB,EAIzB,MAAM,UAAU,CAAA;AAYjB,OAAO,gDAAgD,CAAA;AA0evD,QAAA,MAAM,YAAY;IAGhB,oHAAoH;;cAElG,QAAQ,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;;4BAErD,oBAAoB,GAAG,wBAAwB,KAAG,OAAO;;IAQ/E,yFAAyF;;;;;;;;;;;IAZzF,oHAAoH;;cAElG,QAAQ,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;;4BAErD,oBAAoB,GAAG,wBAAwB,KAAG,OAAO;;IAQ/E,yFAAyF;;;;;;;;;;;;4EAOzF,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1,118 +0,0 @@
1
- import type { PropType } from 'vue';
2
- import type { AxiosError } from 'axios';
3
- import type { KongManagerSniListConfig, KonnectSniListConfig, EntityRow, CopyEventPayload } from '../types';
4
- import '@kong-ui-public/entities-shared/dist/style.css';
5
- declare const __VLS_export: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
7
- config: {
8
- type: PropType<KonnectSniListConfig | KongManagerSniListConfig>;
9
- required: true;
10
- validator: (config: KonnectSniListConfig | KongManagerSniListConfig) => boolean;
11
- };
12
- cacheIdentifier: {
13
- type: StringConstructor;
14
- default: string;
15
- };
16
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can create a new entity */
17
- canCreate: {
18
- type: PropType<() => boolean | Promise<boolean>>;
19
- required: false;
20
- default: () => Promise<boolean>;
21
- };
22
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can delete a given entity */
23
- canDelete: {
24
- type: PropType<(row: EntityRow) => boolean | Promise<boolean>>;
25
- required: false;
26
- default: () => Promise<boolean>;
27
- };
28
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can edit a given entity */
29
- canEdit: {
30
- type: PropType<(row: EntityRow) => boolean | Promise<boolean>>;
31
- required: false;
32
- default: () => Promise<boolean>;
33
- };
34
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can retrieve (view details) a given entity */
35
- canRetrieve: {
36
- type: PropType<(row: EntityRow) => boolean | Promise<boolean>>;
37
- required: false;
38
- default: () => Promise<boolean>;
39
- };
40
- /** default to false, setting to true will teleport the toolbar button to the destination in the consuming app */
41
- useActionOutside: {
42
- type: BooleanConstructor;
43
- default: boolean;
44
- };
45
- /** default to false, setting to true will place create button on top right of list*/
46
- useToolbarCreationButton: {
47
- type: BooleanConstructor;
48
- default: boolean;
49
- };
50
- }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
51
- error: (error: AxiosError<unknown, any>) => any;
52
- "click:learn-more": () => any;
53
- "copy:success": (payload: CopyEventPayload) => any;
54
- "copy:error": (payload: CopyEventPayload) => any;
55
- "delete:success": (sni: EntityRow) => any;
56
- }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
57
- /** The base konnect or kongManger config. Pass additional config props in the shared entity component as needed. */
58
- config: {
59
- type: PropType<KonnectSniListConfig | KongManagerSniListConfig>;
60
- required: true;
61
- validator: (config: KonnectSniListConfig | KongManagerSniListConfig) => boolean;
62
- };
63
- cacheIdentifier: {
64
- type: StringConstructor;
65
- default: string;
66
- };
67
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can create a new entity */
68
- canCreate: {
69
- type: PropType<() => boolean | Promise<boolean>>;
70
- required: false;
71
- default: () => Promise<boolean>;
72
- };
73
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can delete a given entity */
74
- canDelete: {
75
- type: PropType<(row: EntityRow) => boolean | Promise<boolean>>;
76
- required: false;
77
- default: () => Promise<boolean>;
78
- };
79
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can edit a given entity */
80
- canEdit: {
81
- type: PropType<(row: EntityRow) => boolean | Promise<boolean>>;
82
- required: false;
83
- default: () => Promise<boolean>;
84
- };
85
- /** A synchronous or asynchronous function, that returns a boolean, that evaluates if the user can retrieve (view details) a given entity */
86
- canRetrieve: {
87
- type: PropType<(row: EntityRow) => boolean | Promise<boolean>>;
88
- required: false;
89
- default: () => Promise<boolean>;
90
- };
91
- /** default to false, setting to true will teleport the toolbar button to the destination in the consuming app */
92
- useActionOutside: {
93
- type: BooleanConstructor;
94
- default: boolean;
95
- };
96
- /** default to false, setting to true will place create button on top right of list*/
97
- useToolbarCreationButton: {
98
- type: BooleanConstructor;
99
- default: boolean;
100
- };
101
- }>> & Readonly<{
102
- onError?: ((error: AxiosError<unknown, any>) => any) | undefined;
103
- "onClick:learn-more"?: (() => any) | undefined;
104
- "onCopy:success"?: ((payload: CopyEventPayload) => any) | undefined;
105
- "onCopy:error"?: ((payload: CopyEventPayload) => any) | undefined;
106
- "onDelete:success"?: ((sni: EntityRow) => any) | undefined;
107
- }>, {
108
- cacheIdentifier: string;
109
- canCreate: () => boolean | Promise<boolean>;
110
- canDelete: (row: EntityRow) => boolean | Promise<boolean>;
111
- canEdit: (row: EntityRow) => boolean | Promise<boolean>;
112
- canRetrieve: (row: EntityRow) => boolean | Promise<boolean>;
113
- useActionOutside: boolean;
114
- useToolbarCreationButton: boolean;
115
- }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
116
- declare const _default: typeof __VLS_export;
117
- export default _default;
118
- //# sourceMappingURL=SniList.vue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SniList.vue.d.ts","sourceRoot":"","sources":["../../../src/components/SniList.vue"],"names":[],"mappings":"AA0iBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAEnC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAiBvC,OAAO,KAAK,EACV,wBAAwB,EACxB,oBAAoB,EACpB,SAAS,EACT,gBAAgB,EACjB,MAAM,UAAU,CAAA;AASjB,OAAO,gDAAgD,CAAA;AA49BvD,QAAA,MAAM,YAAY;IAGhB,oHAAoH;;cAElG,QAAQ,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;;4BAErD,oBAAoB,GAAG,wBAAwB,KAAG,OAAO;;;;;;IAY/E,yHAAyH;;cAErG,QAAQ,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI9D,2HAA2H;;cAEvG,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI5E,yHAAyH;;cAErG,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI5E,4IAA4I;;cAExH,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI5E,iHAAiH;;;;;IAKjH,qFAAqF;;;;;;;;;;;;IA7CrF,oHAAoH;;cAElG,QAAQ,CAAC,oBAAoB,GAAG,wBAAwB,CAAC;;4BAErD,oBAAoB,GAAG,wBAAwB,KAAG,OAAO;;;;;;IAY/E,yHAAyH;;cAErG,QAAQ,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI9D,2HAA2H;;cAEvG,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI5E,yHAAyH;;cAErG,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI5E,4IAA4I;;cAExH,QAAQ,CAAC,CAAC,GAAG,EAAE,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;;;;IAI5E,iHAAiH;;;;;IAKjH,qFAAqF;;;;;;;;;;;;;qBA3BlD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;qBAM1B,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;mBAMxC,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;uBAMxC,SAAS,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;;;4EAe3E,CAAC;wBACkB,OAAO,YAAY;AAAxC,wBAAyC"}
@@ -1,6 +0,0 @@
1
- import useI18n from './useI18n';
2
- declare const _default: {
3
- useI18n: typeof useI18n;
4
- };
5
- export default _default;
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/composables/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,WAAW,CAAA;;;;AAG/B,wBAEC"}
@@ -1,9 +0,0 @@
1
- import { createI18n, i18nTComponent } from '@kong-ui-public/i18n';
2
- import english from '../locales/en.json';
3
- interface UseI18nReturn {
4
- i18n: ReturnType<typeof createI18n<typeof english>>;
5
- i18nT: ReturnType<typeof i18nTComponent<typeof english>>;
6
- }
7
- export default function useI18n(): UseI18nReturn;
8
- export {};
9
- //# sourceMappingURL=useI18n.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useI18n.d.ts","sourceRoot":"","sources":["../../../src/composables/useI18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACjE,OAAO,OAAO,MAAM,oBAAoB,CAAA;AAExC,UAAU,aAAa;IACrB,IAAI,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC,CAAA;IACnD,KAAK,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,OAAO,OAAO,CAAC,CAAC,CAAA;CACzD;AAED,MAAM,CAAC,OAAO,UAAU,OAAO,IAAI,aAAa,CAO/C"}
@@ -1,5 +0,0 @@
1
- import SniList from './components/SniList.vue';
2
- import SniForm from './components/SniForm.vue';
3
- export { SniForm, SniList, };
4
- export * from './types';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAC9C,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAE9C,OAAO,EACL,OAAO,EACP,OAAO,GACR,CAAA;AAED,cAAc,SAAS,CAAA"}
@@ -1,24 +0,0 @@
1
- declare const _default: {
2
- list: {
3
- konnect: {
4
- all: string;
5
- };
6
- kongManager: {
7
- all: string;
8
- };
9
- };
10
- form: {
11
- konnect: {
12
- create: string;
13
- edit: string;
14
- certificates: string;
15
- };
16
- kongManager: {
17
- create: string;
18
- edit: string;
19
- certificates: string;
20
- };
21
- };
22
- };
23
- export default _default;
24
- //# sourceMappingURL=snis-endpoints.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"snis-endpoints.d.ts","sourceRoot":"","sources":["../../src/snis-endpoints.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAGA,wBAqBC"}
@@ -1,3 +0,0 @@
1
- export * from './sni-form';
2
- export * from './sni-list';
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAGA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -1,35 +0,0 @@
1
- import type { RouteLocationRaw } from 'vue-router';
2
- import type { KonnectBaseFormConfig, KongManagerBaseFormConfig } from '@kong-ui-public/entities-shared';
3
- /** Konnect SNI form config */
4
- export interface KonnectSniFormConfig extends KonnectBaseFormConfig {
5
- /** Route to return to if canceling create/edit a SNI */
6
- cancelRoute: RouteLocationRaw;
7
- /** Certificate to bind the SNI to on creation */
8
- certificateId?: string;
9
- }
10
- /** Kong Manager SNI form config */
11
- export interface KongManagerSniFormConfig extends KongManagerBaseFormConfig {
12
- /** Route to return to if canceling create/edit a SNI */
13
- cancelRoute: RouteLocationRaw;
14
- /** Certificate to bind the SNI to on creation */
15
- certificateId?: string;
16
- }
17
- export interface SniFormFields {
18
- name: string;
19
- tags: string;
20
- certificate_id: string;
21
- }
22
- export interface SniFormState {
23
- /** Form fields */
24
- fields: SniFormFields;
25
- /** Form readonly state (only used when saving entity details) */
26
- isReadonly: boolean;
27
- /** The error message to show on the form */
28
- errorMessage: string;
29
- }
30
- export interface SelectItem {
31
- label: string;
32
- value: string | number;
33
- selected?: boolean;
34
- }
35
- //# sourceMappingURL=sni-form.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sni-form.d.ts","sourceRoot":"","sources":["../../../src/types/sni-form.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAEvG,8BAA8B;AAC9B,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB;IACjE,wDAAwD;IACxD,WAAW,EAAE,gBAAgB,CAAA;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,mCAAmC;AACnC,MAAM,WAAW,wBAAyB,SAAQ,yBAAyB;IACzE,wDAAwD;IACxD,WAAW,EAAE,gBAAgB,CAAA;IAC7B,iDAAiD;IACjD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,MAAM,EAAE,aAAa,CAAA;IACrB,iEAAiE;IACjE,UAAU,EAAE,OAAO,CAAA;IACnB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAA;CACrB;AAGD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
@@ -1,32 +0,0 @@
1
- import type { RouteLocationRaw } from 'vue-router';
2
- import type { FilterSchema, KongManagerBaseTableConfig, KonnectBaseTableConfig } from '@kong-ui-public/entities-shared';
3
- export interface BaseSniListConfig {
4
- /** Route for creating an SNI */
5
- createRoute: RouteLocationRaw;
6
- /** A function that returns the route for viewing an SNI */
7
- getViewRoute: (id: string) => RouteLocationRaw;
8
- /** A function that returns the route for editing an SNI */
9
- getEditRoute: (id: string) => RouteLocationRaw;
10
- }
11
- /** Konnect SNI list config */
12
- export interface KonnectSniListConfig extends KonnectBaseTableConfig, BaseSniListConfig {
13
- }
14
- /** Kong Manager SNI list config */
15
- export interface KongManagerSniListConfig extends KongManagerBaseTableConfig, BaseSniListConfig {
16
- /** FilterSchema for fuzzy match */
17
- filterSchema?: FilterSchema;
18
- }
19
- export interface EntityRow extends Record<string, any> {
20
- id: string;
21
- name: string;
22
- }
23
- /** Copy field event payload */
24
- export interface CopyEventPayload {
25
- /** The entity row */
26
- entity: EntityRow;
27
- /** The field being copied. If omitted, the entity JSON is being copied. */
28
- field?: string;
29
- /** The toaster message */
30
- message: string;
31
- }
32
- //# sourceMappingURL=sni-list.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sni-list.d.ts","sourceRoot":"","sources":["../../../src/types/sni-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAEvH,MAAM,WAAW,iBAAiB;IAChC,gCAAgC;IAChC,WAAW,EAAE,gBAAgB,CAAA;IAC7B,2DAA2D;IAC3D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,CAAA;IAC9C,2DAA2D;IAC3D,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,gBAAgB,CAAA;CAC/C;AAED,8BAA8B;AAC9B,MAAM,WAAW,oBAAqB,SAAQ,sBAAsB,EAAE,iBAAiB;CAAG;AAE1F,mCAAmC;AACnC,MAAM,WAAW,wBAAyB,SAAQ,0BAA0B,EAAE,iBAAiB;IAC7F,mCAAmC;IACnC,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B;AAED,MAAM,WAAW,SAAU,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IACpD,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;CACb;AAED,+BAA+B;AAC/B,MAAM,WAAW,gBAAgB;IAC/B,qBAAqB;IACrB,MAAM,EAAE,SAAS,CAAA;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB"}