@knime/product-features 1.2.3 → 2.0.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.
Files changed (106) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +46 -0
  3. package/dist/_plugin-vue_export-helper-BOaGB7Aw.js +8 -0
  4. package/dist/ai.js +180 -191
  5. package/dist/ai.js.map +1 -1
  6. package/dist/dataTransfer.js +1158 -1104
  7. package/dist/dataTransfer.js.map +1 -1
  8. package/dist/dist-BrNh9vG-.js +2560 -0
  9. package/dist/dist-BrNh9vG-.js.map +1 -0
  10. package/dist/nodes.css +33 -67
  11. package/dist/nodes.js +538 -614
  12. package/dist/nodes.js.map +1 -1
  13. package/dist/rfcErrors-Dw7NLSDp.js +172 -0
  14. package/dist/rfcErrors-Dw7NLSDp.js.map +1 -0
  15. package/dist/rfcErrors.js +1 -222
  16. package/dist/src/ai/KdsPromptInput/InlineStatusBanner.vue.d.ts +3 -2
  17. package/dist/src/ai/KdsPromptInput/InlineStatusBanner.vue.d.ts.map +1 -1
  18. package/dist/src/ai/KdsPromptInput/KdsPromptInput.vue.d.ts +6 -6
  19. package/dist/src/ai/KdsPromptInput/KdsPromptInput.vue.d.ts.map +1 -1
  20. package/dist/src/dataTransfer/download/ui/DownloadProgressPanel.vue.d.ts +6 -4
  21. package/dist/src/dataTransfer/download/ui/DownloadProgressPanel.vue.d.ts.map +1 -1
  22. package/dist/src/dataTransfer/download/ui/DownloadProgressPanelItem.vue.d.ts +3 -2
  23. package/dist/src/dataTransfer/download/ui/DownloadProgressPanelItem.vue.d.ts.map +1 -1
  24. package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/CollapsiblePanel.vue.d.ts +11 -14
  25. package/dist/src/dataTransfer/shared/ui/CollapsiblePanel/CollapsiblePanel.vue.d.ts.map +1 -1
  26. package/dist/src/dataTransfer/shared/ui/ProgressItem/ProgressItem.vue.d.ts +2 -1
  27. package/dist/src/dataTransfer/shared/ui/ProgressItem/ProgressItem.vue.d.ts.map +1 -1
  28. package/dist/src/dataTransfer/shared/ui/ProgressList/ProgressList.vue.d.ts +7 -11
  29. package/dist/src/dataTransfer/shared/ui/ProgressList/ProgressList.vue.d.ts.map +1 -1
  30. package/dist/src/dataTransfer/upload/ui/UploadProgressPanel.vue.d.ts +6 -4
  31. package/dist/src/dataTransfer/upload/ui/UploadProgressPanel.vue.d.ts.map +1 -1
  32. package/dist/src/dataTransfer/upload/ui/UploadProgressPanelItem.vue.d.ts +3 -2
  33. package/dist/src/dataTransfer/upload/ui/UploadProgressPanelItem.vue.d.ts.map +1 -1
  34. package/dist/src/nodes/NodeDescriptionTabs/NodeDescriptionTabs.vue.d.ts +2 -1
  35. package/dist/src/nodes/NodeDescriptionTabs/NodeDescriptionTabs.vue.d.ts.map +1 -1
  36. package/dist/src/nodes/NodeDescriptionTabs/OptionsTab.vue.d.ts +2 -1
  37. package/dist/src/nodes/NodeDescriptionTabs/OptionsTab.vue.d.ts.map +1 -1
  38. package/dist/src/nodes/NodeDescriptionTabs/PortGroup.vue.d.ts +2 -1
  39. package/dist/src/nodes/NodeDescriptionTabs/PortGroup.vue.d.ts.map +1 -1
  40. package/dist/src/nodes/NodeDescriptionTabs/PortTemplateInfo.vue.d.ts +2 -1
  41. package/dist/src/nodes/NodeDescriptionTabs/PortTemplateInfo.vue.d.ts.map +1 -1
  42. package/dist/src/nodes/NodeDescriptionTabs/PortsTab.vue.d.ts +2 -1
  43. package/dist/src/nodes/NodeDescriptionTabs/PortsTab.vue.d.ts.map +1 -1
  44. package/dist/src/nodes/NodeDescriptionTabs/ViewsTab.vue.d.ts +2 -1
  45. package/dist/src/nodes/NodeDescriptionTabs/ViewsTab.vue.d.ts.map +1 -1
  46. package/dist/src/nodes/NodeDescriptionTabs/types.d.ts +2 -2
  47. package/dist/src/nodes/NodeDescriptionTabs/types.d.ts.map +1 -1
  48. package/dist/src/nodes/NodePreview/NodePreview.vue.d.ts +2 -1
  49. package/dist/src/nodes/NodePreview/NodePreview.vue.d.ts.map +1 -1
  50. package/dist/src/nodes/NodePreview/SVGNodeTorso.vue.d.ts +2 -1
  51. package/dist/src/nodes/NodePreview/SVGNodeTorso.vue.d.ts.map +1 -1
  52. package/dist/src/nodes/NodePreview/enums.d.ts +2 -1
  53. package/dist/src/nodes/NodePreview/enums.d.ts.map +1 -1
  54. package/dist/src/nodes/NodePreview/types.d.ts +2 -3
  55. package/dist/src/nodes/NodePreview/types.d.ts.map +1 -1
  56. package/dist/src/nodes/index.d.ts +0 -2
  57. package/dist/src/nodes/index.d.ts.map +1 -1
  58. package/dist/src/rfcErrors/RFCErrorToastTemplate.vue.d.ts +3 -2
  59. package/dist/src/rfcErrors/RFCErrorToastTemplate.vue.d.ts.map +1 -1
  60. package/dist/src/toasts/Toast/Toast.vue.d.ts +3 -4
  61. package/dist/src/toasts/Toast/Toast.vue.d.ts.map +1 -1
  62. package/dist/src/toasts/Toast/ToastButton.vue.d.ts +2 -1
  63. package/dist/src/toasts/Toast/ToastButton.vue.d.ts.map +1 -1
  64. package/dist/src/toasts/ToastStack/ToastStack.vue.d.ts +2 -1
  65. package/dist/src/toasts/ToastStack/ToastStack.vue.d.ts.map +1 -1
  66. package/dist/src/versions/CreateVersionForm/CreateVersionForm.vue.d.ts +3 -2
  67. package/dist/src/versions/CreateVersionForm/CreateVersionForm.vue.d.ts.map +1 -1
  68. package/dist/src/versions/VersionHistory/CurrentState.vue.d.ts +3 -2
  69. package/dist/src/versions/VersionHistory/CurrentState.vue.d.ts.map +1 -1
  70. package/dist/src/versions/VersionHistory/HistoryEvent.vue.d.ts +7 -11
  71. package/dist/src/versions/VersionHistory/HistoryEvent.vue.d.ts.map +1 -1
  72. package/dist/src/versions/VersionHistory/HistoryEventAuthor.vue.d.ts +2 -1
  73. package/dist/src/versions/VersionHistory/HistoryEventAuthor.vue.d.ts.map +1 -1
  74. package/dist/src/versions/VersionHistory/HistoryEventFooter.vue.d.ts +2 -1
  75. package/dist/src/versions/VersionHistory/HistoryEventFooter.vue.d.ts.map +1 -1
  76. package/dist/src/versions/VersionHistory/VersionHistory.vue.d.ts +3 -2
  77. package/dist/src/versions/VersionHistory/VersionHistory.vue.d.ts.map +1 -1
  78. package/dist/src/versions/VersionHistory/VersionItem.vue.d.ts +3 -2
  79. package/dist/src/versions/VersionHistory/VersionItem.vue.d.ts.map +1 -1
  80. package/dist/src/versions/VersionHistory/VersionLabel.vue.d.ts +6 -141
  81. package/dist/src/versions/VersionHistory/VersionLabel.vue.d.ts.map +1 -1
  82. package/dist/src/versions/VersionHistory/VersionLimitInfo.vue.d.ts +2 -1
  83. package/dist/src/versions/VersionHistory/VersionLimitInfo.vue.d.ts.map +1 -1
  84. package/dist/toasts.css +13 -13
  85. package/dist/toasts.js +4700 -475
  86. package/dist/toasts.js.map +1 -1
  87. package/dist/versions.js +583 -597
  88. package/dist/versions.js.map +1 -1
  89. package/package.json +5 -5
  90. package/dist/_plugin-vue_export-helper-pcqpp-6-.js +0 -10
  91. package/dist/_plugin-vue_export-helper-pcqpp-6-.js.map +0 -1
  92. package/dist/index-B3ql6hun.js +0 -2695
  93. package/dist/index-B3ql6hun.js.map +0 -1
  94. package/dist/rfcErrors.js.map +0 -1
  95. package/dist/src/nodes/PortIcon/PortIcon.vue.d.ts +0 -4
  96. package/dist/src/nodes/PortIcon/PortIcon.vue.d.ts.map +0 -1
  97. package/dist/src/nodes/PortIcon/SVGPortIcon.vue.d.ts +0 -4
  98. package/dist/src/nodes/PortIcon/SVGPortIcon.vue.d.ts.map +0 -1
  99. package/dist/src/nodes/PortIcon/constants.d.ts +0 -3
  100. package/dist/src/nodes/PortIcon/constants.d.ts.map +0 -1
  101. package/dist/src/nodes/PortIcon/enums.d.ts +0 -8
  102. package/dist/src/nodes/PortIcon/enums.d.ts.map +0 -1
  103. package/dist/src/nodes/PortIcon/index.d.ts +0 -3
  104. package/dist/src/nodes/PortIcon/index.d.ts.map +0 -1
  105. package/dist/src/nodes/PortIcon/types.d.ts +0 -19
  106. package/dist/src/nodes/PortIcon/types.d.ts.map +0 -1
package/dist/versions.js CHANGED
@@ -1,600 +1,586 @@
1
- import { defineComponent, openBlock, createElementBlock, createElementVNode, createCommentVNode, createVNode, unref, renderSlot, toDisplayString, ref, computed, onMounted, createTextVNode, withDirectives, normalizeClass, Fragment, createBlock, withCtx, createSlots, withModifiers, useModel, useTemplateRef, normalizeStyle, mergeModels, renderList, nextTick } from 'vue';
2
- import { KdsIcon, KdsAvatar, vKdsTooltip, KdsSelectableCard, KdsMenuButton, KdsButton, KdsToggleButton, KdsPopover, KdsDescription, KdsCard, KdsLinkButton, KdsPanel, KdsTextInput, KdsTextarea } from '@knime/kds-components';
3
- import { _ as _export_sfc } from './_plugin-vue_export-helper-pcqpp-6-.js';
4
- import { d as formatLocalDateTimeString, b as formatDateTimeString } from './index-B3ql6hun.js';
5
-
6
- import './versions.css';const _hoisted_1$8 = { class: "history-event-wrapper" };
7
- const _hoisted_2$4 = { class: "history-event-decorator" };
8
- const _hoisted_3 = {
9
- key: 0,
10
- class: "history-event-line-top"
1
+ import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
2
+ import { i as formatLocalDateTimeString, n as formatDateTimeString } from "./dist-BrNh9vG-.js";
3
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, mergeModels, nextTick, normalizeClass, normalizeStyle, onMounted, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useModel, useTemplateRef, withCtx, withDirectives, withModifiers } from "vue";
4
+ import { KdsAvatar, KdsButton, KdsCard, KdsDescription, KdsIcon, KdsLinkButton, KdsMenuButton, KdsPanel, KdsPopover, KdsSelectableCard, KdsTextInput, KdsTextarea, KdsToggleButton, vKdsTooltip } from "@knime/kds-components";
5
+ import './versions.css';//#region src/versions/VersionHistory/HistoryEvent.vue?vue&type=script&setup=true&lang.ts
6
+ var _hoisted_1$8 = { class: "history-event-wrapper" };
7
+ var _hoisted_2$4 = { class: "history-event-decorator" };
8
+ var _hoisted_3 = {
9
+ key: 0,
10
+ class: "history-event-line-top"
11
11
  };
12
- const _hoisted_4 = {
13
- key: 1,
14
- class: "history-event-line-bottom"
12
+ var _hoisted_4 = {
13
+ key: 1,
14
+ class: "history-event-line-bottom"
15
15
  };
16
- const _hoisted_5 = { class: "card-wrapper" };
17
- const _sfc_main$8 = /* @__PURE__ */ defineComponent({
18
- __name: "HistoryEvent",
19
- props: {
20
- isSelected: { type: Boolean },
21
- isFirstItem: { type: Boolean },
22
- isLastItem: { type: Boolean }
23
- },
24
- setup(__props) {
25
- return (_ctx, _cache) => {
26
- return openBlock(), createElementBlock("div", _hoisted_1$8, [
27
- createElementVNode("div", _hoisted_2$4, [
28
- !__props.isFirstItem ? (openBlock(), createElementBlock("div", _hoisted_3)) : createCommentVNode("", true),
29
- createVNode(unref(KdsIcon), {
30
- class: "history-event-icon",
31
- name: __props.isSelected ? "circle-success" : "circle-unchecked",
32
- size: "small"
33
- }, null, 8, ["name"]),
34
- !__props.isLastItem ? (openBlock(), createElementBlock("div", _hoisted_4)) : createCommentVNode("", true)
35
- ]),
36
- createElementVNode("div", _hoisted_5, [
37
- renderSlot(_ctx.$slots, "default", {}, void 0, true)
38
- ])
39
- ]);
40
- };
41
- }
42
- });
43
-
44
- const HistoryEvent = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-249d4c97"]]);
45
-
46
- const _hoisted_1$7 = { class: "avatar-and-name-wrapper" };
47
- const _hoisted_2$3 = { class: "author-name" };
48
- const _sfc_main$7 = /* @__PURE__ */ defineComponent({
49
- __name: "HistoryEventAuthor",
50
- props: {
51
- avatar: {},
52
- author: {}
53
- },
54
- setup(__props) {
55
- const nameInitials = (name) => name.split(/[., _-]/, 2).map((part) => part.charAt(0).toUpperCase()).join("");
56
- return (_ctx, _cache) => {
57
- return openBlock(), createElementBlock("div", _hoisted_1$7, [
58
- createVNode(unref(KdsAvatar), {
59
- src: __props.avatar.src,
60
- tooltip: __props.author,
61
- initials: nameInitials(__props.author)
62
- }, null, 8, ["src", "tooltip", "initials"]),
63
- createElementVNode("span", _hoisted_2$3, toDisplayString(__props.author), 1)
64
- ]);
65
- };
66
- }
67
- });
68
-
69
- const HistoryEventAuthor = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-1a7632f7"]]);
70
-
71
- const _hoisted_1$6 = { class: "history-event-footer" };
72
- const _hoisted_2$2 = ["datetime"];
73
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
74
- __name: "HistoryEventFooter",
75
- props: {
76
- date: {},
77
- version: {}
78
- },
79
- setup(__props) {
80
- const isMounted = ref(false);
81
- const localDateTime = computed(
82
- () => isMounted.value ? formatLocalDateTimeString(__props.date, true) : formatDateTimeString(__props.date, true)
83
- );
84
- onMounted(() => {
85
- isMounted.value = true;
86
- });
87
- return (_ctx, _cache) => {
88
- return openBlock(), createElementBlock("span", _hoisted_1$6, [
89
- _cache[0] || (_cache[0] = createTextVNode(" Created on ", -1)),
90
- withDirectives((openBlock(), createElementBlock("time", {
91
- datetime: __props.date,
92
- class: normalizeClass({ hidden: !isMounted.value })
93
- }, [
94
- createTextVNode(toDisplayString(localDateTime.value), 1)
95
- ], 10, _hoisted_2$2)), [
96
- [unref(vKdsTooltip), __props.date]
97
- ]),
98
- __props.version ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [
99
- createTextVNode("– Version " + toDisplayString(__props.version), 1)
100
- ], 64)) : createCommentVNode("", true)
101
- ]);
102
- };
103
- }
104
- });
105
-
106
- const HistoryEventFooter = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["__scopeId", "data-v-3db3e01b"]]);
107
-
108
- const _hoisted_1$5 = { class: "content-wrapper" };
109
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
110
- __name: "CurrentState",
111
- props: {
112
- currentSavepoint: {},
113
- isSelected: { type: Boolean },
114
- hasEditCapability: { type: Boolean },
115
- hasPreviousVersion: { type: Boolean },
116
- hasVersionLimit: { type: Boolean },
117
- isVersionLimitExceeded: { type: Boolean }
118
- },
119
- emits: ["createVersion", "discard", "select"],
120
- setup(__props, { emit: __emit }) {
121
- const props = __props;
122
- const emit = __emit;
123
- const menuItems = computed(
124
- () => props.hasEditCapability && props.hasPreviousVersion ? [
125
- {
126
- id: "discard",
127
- text: "Discard",
128
- handler: () => emit("discard")
129
- }
130
- ] : []
131
- );
132
- return (_ctx, _cache) => {
133
- return openBlock(), createBlock(HistoryEvent, {
134
- "is-selected": __props.isSelected,
135
- "is-first-item": "",
136
- "is-last-item": !__props.hasPreviousVersion && !__props.hasVersionLimit
137
- }, {
138
- default: withCtx(() => [
139
- createVNode(unref(KdsSelectableCard), {
140
- "model-value": __props.isSelected,
141
- headline: "Draft",
142
- ariaLabel: "Savepoint history event",
143
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => !__props.isSelected && _ctx.$emit("select"))
144
- }, createSlots({
145
- default: withCtx(() => [
146
- createElementVNode("div", _hoisted_1$5, [
147
- createVNode(HistoryEventAuthor, {
148
- author: __props.currentSavepoint.author,
149
- avatar: __props.currentSavepoint.avatar
150
- }, null, 8, ["author", "avatar"]),
151
- createVNode(HistoryEventFooter, {
152
- date: __props.currentSavepoint.lastEditedOn
153
- }, null, 8, ["date"])
154
- ])
155
- ]),
156
- _: 2
157
- }, [
158
- menuItems.value.length ? {
159
- name: "header-actions",
160
- fn: withCtx(() => [
161
- createVNode(unref(KdsMenuButton), {
162
- items: menuItems.value,
163
- variant: "transparent",
164
- "leading-icon": "more-actions",
165
- ariaLabel: "More actions"
166
- }, null, 8, ["items"])
167
- ]),
168
- key: "0"
169
- } : void 0
170
- ]), 1032, ["model-value"]),
171
- __props.hasEditCapability && !__props.isVersionLimitExceeded ? (openBlock(), createBlock(unref(KdsButton), {
172
- key: 0,
173
- label: "Create version",
174
- onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.$emit("createVersion"), ["stop"]))
175
- })) : createCommentVNode("", true)
176
- ]),
177
- _: 1
178
- }, 8, ["is-selected", "is-last-item"]);
179
- };
180
- }
181
- });
182
-
183
- const CurrentState = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-a6a58c85"]]);
184
-
185
- const _hoisted_1$4 = { class: "label-popover-container" };
186
- const _hoisted_2$1 = { class: "label-title" };
187
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
188
- __name: "VersionLabel",
189
- props: /* @__PURE__ */ mergeModels({
190
- label: {}
191
- }, {
192
- "modelValue": { type: Boolean, ...{ default: false } },
193
- "modelModifiers": {}
194
- }),
195
- emits: ["update:modelValue"],
196
- setup(__props) {
197
- const isPopoverOpen = useModel(__props, "modelValue");
198
- const popoverEl = useTemplateRef("popover");
199
- return (_ctx, _cache) => {
200
- return openBlock(), createElementBlock(Fragment, null, [
201
- createVNode(unref(KdsToggleButton), {
202
- modelValue: isPopoverOpen.value,
203
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isPopoverOpen.value = $event),
204
- "data-kds-card-secondary-action": "",
205
- label: __props.label.label.name,
206
- "aria-haspopup": "dialog",
207
- "aria-expanded": isPopoverOpen.value,
208
- "aria-controls": popoverEl.value?.popoverId,
209
- size: "xsmall",
210
- style: normalizeStyle(popoverEl.value?.anchorStyle)
211
- }, null, 8, ["modelValue", "label", "aria-expanded", "aria-controls", "style"]),
212
- createVNode(unref(KdsPopover), {
213
- ref: "popover",
214
- modelValue: isPopoverOpen.value,
215
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isPopoverOpen.value = $event),
216
- placement: "bottom-left",
217
- role: "dialog",
218
- "aria-label": "Label details"
219
- }, {
220
- default: withCtx(() => [
221
- createElementVNode("div", _hoisted_1$4, [
222
- createElementVNode("div", _hoisted_2$1, toDisplayString(__props.label.label.name), 1),
223
- createVNode(unref(KdsDescription), {
224
- text: __props.label.label.description
225
- }, null, 8, ["text"]),
226
- __props.label.message ? (openBlock(), createBlock(unref(KdsDescription), {
227
- key: 0,
228
- text: __props.label.message
229
- }, null, 8, ["text"])) : createCommentVNode("", true)
230
- ])
231
- ]),
232
- _: 1
233
- }, 8, ["modelValue"])
234
- ], 64);
235
- };
236
- }
237
- });
238
-
239
- const VersionLabel = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-00d7133a"]]);
240
-
241
- const _hoisted_1$3 = { class: "content-wrapper" };
242
- const _hoisted_2 = { class: "labels-wrapper" };
243
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
244
- __name: "VersionItem",
245
- props: {
246
- version: {},
247
- isSelected: { type: Boolean },
248
- hasAdminRights: { type: Boolean },
249
- hasEditCapability: { type: Boolean },
250
- isFirstItem: { type: Boolean },
251
- isLastItem: { type: Boolean }
252
- },
253
- emits: ["select", "delete", "restore"],
254
- setup(__props, { emit: __emit }) {
255
- const props = __props;
256
- const emit = __emit;
257
- const toggleVersionSelection = () => {
258
- emit("select", !props.isSelected);
259
- };
260
- const menuItems = computed(
261
- () => [
262
- props.hasEditCapability && {
263
- id: "show",
264
- text: props.isSelected ? "Deselect this version" : "Show this version",
265
- handler: toggleVersionSelection
266
- },
267
- props.hasEditCapability && {
268
- id: "restore",
269
- text: "Restore this version",
270
- handler: () => emit("restore")
271
- },
272
- props.hasAdminRights && {
273
- id: "delete",
274
- text: "Delete this version",
275
- handler: () => emit("delete")
276
- }
277
- ].filter((i) => i !== false)
278
- );
279
- return (_ctx, _cache) => {
280
- return openBlock(), createBlock(HistoryEvent, {
281
- "is-selected": __props.isSelected,
282
- "is-first-item": __props.isFirstItem,
283
- "is-last-item": __props.isLastItem
284
- }, {
285
- default: withCtx(() => [
286
- createVNode(unref(KdsSelectableCard), {
287
- "model-value": __props.isSelected,
288
- headline: __props.version.title,
289
- ariaLabel: "Version history event",
290
- "onUpdate:modelValue": toggleVersionSelection
291
- }, createSlots({
292
- default: withCtx(() => [
293
- createElementVNode("div", _hoisted_1$3, [
294
- createVNode(HistoryEventAuthor, {
295
- author: __props.version.author,
296
- avatar: __props.version.avatar
297
- }, null, 8, ["author", "avatar"]),
298
- __props.version.description ? (openBlock(), createBlock(unref(KdsDescription), {
299
- key: 0,
300
- text: __props.version.description
301
- }, null, 8, ["text"])) : createCommentVNode("", true),
302
- createElementVNode("div", _hoisted_2, [
303
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.version.labels, (label) => {
304
- return openBlock(), createBlock(VersionLabel, {
305
- key: label.labelId,
306
- label
307
- }, null, 8, ["label"]);
308
- }), 128))
309
- ]),
310
- createVNode(HistoryEventFooter, {
311
- version: __props.version.version,
312
- date: __props.version.createdOn
313
- }, null, 8, ["version", "date"])
314
- ])
315
- ]),
316
- _: 2
317
- }, [
318
- menuItems.value.length ? {
319
- name: "header-actions",
320
- fn: withCtx(() => [
321
- createVNode(unref(KdsMenuButton), {
322
- items: menuItems.value,
323
- variant: "transparent",
324
- "leading-icon": "more-actions",
325
- ariaLabel: "More actions"
326
- }, null, 8, ["items"])
327
- ]),
328
- key: "0"
329
- } : void 0
330
- ]), 1032, ["model-value", "headline"])
331
- ]),
332
- _: 1
333
- }, 8, ["is-selected", "is-first-item", "is-last-item"]);
334
- };
335
- }
336
- });
337
-
338
- const VersionItem = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-9cf889d1"]]);
339
-
340
- const _hoisted_1$2 = { class: "content-wrapper" };
341
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
342
- __name: "VersionLimitInfo",
343
- props: {
344
- versionLimit: {},
345
- upgradeUrl: { default: () => void 0 },
346
- isPrivate: { type: Boolean, default: false }
347
- },
348
- setup(__props) {
349
- const isLimitReached = computed(
350
- () => __props.versionLimit.currentUsage >= __props.versionLimit.limit
351
- );
352
- const headline = computed(() => {
353
- if (isLimitReached.value) {
354
- return `You've reached the maximum of ${__props.versionLimit.limit} versions.`;
355
- } else {
356
- return `Using ${__props.versionLimit.currentUsage} of ${__props.versionLimit.limit} versions.`;
357
- }
358
- });
359
- return (_ctx, _cache) => {
360
- return openBlock(), createBlock(HistoryEvent, {
361
- "is-selected": false,
362
- "is-first-item": false,
363
- "is-last-item": ""
364
- }, {
365
- default: withCtx(() => [
366
- createVNode(unref(KdsCard), {
367
- variant: "filled",
368
- headline: headline.value
369
- }, createSlots({
370
- default: withCtx(() => [
371
- createElementVNode("div", _hoisted_1$2, [
372
- createVNode(unref(KdsDescription), {
373
- text: `Upgrade to use unlimited versions${__props.isPrivate ? " for private items." : "."}`
374
- }, null, 8, ["text"])
375
- ])
376
- ]),
377
- _: 2
378
- }, [
379
- __props.upgradeUrl ? {
380
- name: "header-actions",
381
- fn: withCtx(() => [
382
- createVNode(unref(KdsLinkButton), {
383
- label: "Upgrade",
384
- to: __props.upgradeUrl
385
- }, null, 8, ["to"])
386
- ]),
387
- key: "0"
388
- } : void 0
389
- ]), 1032, ["headline"])
390
- ]),
391
- _: 1
392
- });
393
- };
394
- }
395
- });
396
-
397
- const VersionLimitInfo = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-0a98c542"]]);
398
-
399
- const VERSION_DEFAULT_LIMIT = 10;
400
- const CURRENT_STATE_VERSION = "current-state";
401
- const MOST_RECENT_VERSION = "most-recent";
402
-
403
- const _hoisted_1$1 = { class: "version-history-wrapper" };
404
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
405
- __name: "VersionHistory",
406
- props: {
407
- hasUnversionedChanges: { type: Boolean },
408
- unversionedSavepoint: {},
409
- currentVersion: {},
410
- versionHistory: {},
411
- loading: { type: Boolean },
412
- hasLoadedAllVersions: { type: Boolean },
413
- hasAdminRights: { type: Boolean },
414
- hasEditCapability: { type: Boolean },
415
- versionLimit: {},
416
- upgradeUrl: {},
417
- isPrivate: { type: Boolean }
418
- },
419
- emits: ["close", "loadAll", "create", "delete", "restore", "select", "discardCurrentState"],
420
- setup(__props, { emit: __emit }) {
421
- const props = __props;
422
- const emit = __emit;
423
- const isVersionLimitExceeded = computed(() => {
424
- return props.versionLimit?.limit !== void 0 && props.versionLimit.currentUsage >= props.versionLimit.limit;
425
- });
426
- const headlineTrailingActions = computed(
427
- () => [
428
- {
429
- type: "button",
430
- props: {
431
- leadingIcon: "x-close",
432
- ariaLabel: "Close",
433
- variant: "transparent"
434
- },
435
- onClick: () => emit("close")
436
- }
437
- ]
438
- );
439
- return (_ctx, _cache) => {
440
- return openBlock(), createBlock(unref(KdsPanel), {
441
- headline: "Version history",
442
- "headline-trailing-actions": headlineTrailingActions.value
443
- }, {
444
- default: withCtx(() => [
445
- createElementVNode("div", _hoisted_1$1, [
446
- __props.unversionedSavepoint ? (openBlock(), createBlock(CurrentState, {
447
- key: 0,
448
- "current-savepoint": __props.unversionedSavepoint,
449
- "is-selected": __props.currentVersion === unref(CURRENT_STATE_VERSION),
450
- "has-edit-capability": __props.hasEditCapability,
451
- "has-previous-version": __props.versionHistory.length > 0,
452
- "has-version-limit": __props.versionLimit?.limit !== void 0,
453
- "is-version-limit-exceeded": isVersionLimitExceeded.value,
454
- onSelect: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("select", unref(CURRENT_STATE_VERSION))),
455
- onCreateVersion: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("create")),
456
- onDiscard: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("discardCurrentState"))
457
- }, null, 8, ["current-savepoint", "is-selected", "has-edit-capability", "has-previous-version", "has-version-limit", "is-version-limit-exceeded"])) : createCommentVNode("", true),
458
- (openBlock(true), createElementBlock(Fragment, null, renderList(__props.versionHistory, (historyEvent, index) => {
459
- return openBlock(), createBlock(VersionItem, {
460
- key: historyEvent.version,
461
- version: historyEvent,
462
- "is-selected": historyEvent.version === __props.currentVersion,
463
- "has-admin-rights": __props.hasAdminRights,
464
- "has-edit-capability": __props.hasEditCapability,
465
- "is-first-item": !__props.unversionedSavepoint && index === 0,
466
- "is-last-item": index === __props.versionHistory.length - 1 && __props.versionLimit?.limit === void 0,
467
- onDelete: ($event) => _ctx.$emit("delete", historyEvent.version),
468
- onRestore: ($event) => _ctx.$emit("restore", historyEvent.version),
469
- onSelect: ($event) => _ctx.$emit("select", $event ? historyEvent.version : unref(CURRENT_STATE_VERSION))
470
- }, null, 8, ["version", "is-selected", "has-admin-rights", "has-edit-capability", "is-first-item", "is-last-item", "onDelete", "onRestore", "onSelect"]);
471
- }), 128)),
472
- __props.versionLimit?.limit !== void 0 ? (openBlock(), createBlock(VersionLimitInfo, {
473
- key: 1,
474
- class: "version-limit-info",
475
- "version-limit": {
476
- limit: __props.versionLimit.limit,
477
- currentUsage: __props.versionLimit.currentUsage
478
- },
479
- "upgrade-url": __props.upgradeUrl,
480
- "is-private": __props.isPrivate
481
- }, null, 8, ["version-limit", "upgrade-url", "is-private"])) : createCommentVNode("", true),
482
- !__props.hasLoadedAllVersions ? (openBlock(), createBlock(unref(KdsButton), {
483
- key: 2,
484
- variant: "transparent",
485
- disabled: __props.loading,
486
- label: __props.loading ? "Loading..." : "Load all",
487
- class: "load-more-button",
488
- onClick: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("loadAll"))
489
- }, null, 8, ["disabled", "label"])) : createCommentVNode("", true)
490
- ])
491
- ]),
492
- _: 1
493
- }, 8, ["headline-trailing-actions"]);
494
- };
495
- }
496
- });
497
-
498
- const VersionHistory = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-e775efff"]]);
499
-
500
- const _hoisted_1 = { class: "create-version-form-wrapper" };
501
- const _sfc_main = /* @__PURE__ */ defineComponent({
502
- __name: "CreateVersionForm",
503
- props: {
504
- isCreationPending: { type: Boolean, default: false }
505
- },
506
- emits: ["create", "cancel"],
507
- setup(__props, { emit: __emit }) {
508
- const emit = __emit;
509
- const versionName = ref("");
510
- const versionDescription = ref("");
511
- const doValidate = ref(false);
512
- const isVersionNameInvalid = computed(() => {
513
- return doValidate.value && versionName.value.trim().length <= 0;
514
- });
515
- const hasUnsavedChanges = computed(() => {
516
- return versionName.value !== "" || versionDescription.value !== "";
517
- });
518
- const onCreate = async () => {
519
- doValidate.value = true;
520
- await nextTick();
521
- if (!isVersionNameInvalid.value) {
522
- emit("create", {
523
- name: versionName.value.trim(),
524
- description: versionDescription.value
525
- });
526
- }
527
- };
528
- const headlineTrailingActions = computed(
529
- () => [
530
- {
531
- type: "button",
532
- props: {
533
- leadingIcon: "x-close",
534
- ariaLabel: "Close",
535
- variant: "transparent"
536
- },
537
- onClick: () => emit("cancel", hasUnsavedChanges.value)
538
- }
539
- ]
540
- );
541
- const footerLeadingActions = computed(() => [
542
- {
543
- type: "button",
544
- props: {
545
- label: "Cancel",
546
- variant: "outlined"
547
- },
548
- onClick: () => emit("cancel", hasUnsavedChanges.value)
549
- }
550
- ]);
551
- const footerTrailingActions = computed(() => [
552
- {
553
- type: "button",
554
- props: {
555
- label: "Create",
556
- variant: "filled",
557
- disabled: isVersionNameInvalid.value || __props.isCreationPending
558
- },
559
- onClick: onCreate
560
- }
561
- ]);
562
- return (_ctx, _cache) => {
563
- return openBlock(), createBlock(unref(KdsPanel), {
564
- headline: "Create version",
565
- "headline-trailing-actions": headlineTrailingActions.value,
566
- "footer-leading-actions": footerLeadingActions.value,
567
- "footer-trailing-actions": footerTrailingActions.value
568
- }, {
569
- default: withCtx(() => [
570
- createElementVNode("div", _hoisted_1, [
571
- createVNode(unref(KdsDescription), {
572
- text: "Give your version a name and description. Versions can be used to create a deployment.",
573
- class: "create-version-form-description"
574
- }),
575
- createVNode(unref(KdsTextInput), {
576
- modelValue: versionName.value,
577
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => versionName.value = $event),
578
- label: "Version name",
579
- type: "text",
580
- error: isVersionNameInvalid.value,
581
- "sub-text": isVersionNameInvalid.value ? "Please enter at least 1 character." : void 0
582
- }, null, 8, ["modelValue", "error", "sub-text"]),
583
- createVNode(unref(KdsTextarea), {
584
- modelValue: versionDescription.value,
585
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => versionDescription.value = $event),
586
- label: "Description",
587
- class: "description"
588
- }, null, 8, ["modelValue"])
589
- ])
590
- ]),
591
- _: 1
592
- }, 8, ["headline-trailing-actions", "footer-leading-actions", "footer-trailing-actions"]);
593
- };
594
- }
595
- });
596
-
597
- const CreateVersionForm = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-0c0f6ba1"]]);
16
+ var _hoisted_5 = { class: "card-wrapper" };
17
+ //#endregion
18
+ //#region src/versions/VersionHistory/HistoryEvent.vue
19
+ var HistoryEvent_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
20
+ __name: "HistoryEvent",
21
+ props: {
22
+ isSelected: { type: Boolean },
23
+ isFirstItem: { type: Boolean },
24
+ isLastItem: { type: Boolean }
25
+ },
26
+ setup(__props) {
27
+ return (_ctx, _cache) => {
28
+ return openBlock(), createElementBlock("div", _hoisted_1$8, [createElementVNode("div", _hoisted_2$4, [
29
+ !__props.isFirstItem ? (openBlock(), createElementBlock("div", _hoisted_3)) : createCommentVNode("", true),
30
+ createVNode(unref(KdsIcon), {
31
+ class: "history-event-icon",
32
+ name: __props.isSelected ? "circle-success" : "circle-unchecked",
33
+ size: "small"
34
+ }, null, 8, ["name"]),
35
+ !__props.isLastItem ? (openBlock(), createElementBlock("div", _hoisted_4)) : createCommentVNode("", true)
36
+ ]), createElementVNode("div", _hoisted_5, [renderSlot(_ctx.$slots, "default", {}, void 0, true)])]);
37
+ };
38
+ }
39
+ }), [["__scopeId", "data-v-249d4c97"]]);
40
+ //#endregion
41
+ //#region src/versions/VersionHistory/HistoryEventAuthor.vue?vue&type=script&setup=true&lang.ts
42
+ var _hoisted_1$7 = { class: "avatar-and-name-wrapper" };
43
+ var _hoisted_2$3 = { class: "author-name" };
44
+ //#endregion
45
+ //#region src/versions/VersionHistory/HistoryEventAuthor.vue
46
+ var HistoryEventAuthor_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
47
+ __name: "HistoryEventAuthor",
48
+ props: {
49
+ avatar: {},
50
+ author: {}
51
+ },
52
+ setup(__props) {
53
+ const nameInitials = (name) => name.split(/[., _-]/, 2).map((part) => part.charAt(0).toUpperCase()).join("");
54
+ return (_ctx, _cache) => {
55
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [createVNode(unref(KdsAvatar), {
56
+ src: __props.avatar.src,
57
+ tooltip: __props.author,
58
+ initials: nameInitials(__props.author)
59
+ }, null, 8, [
60
+ "src",
61
+ "tooltip",
62
+ "initials"
63
+ ]), createElementVNode("span", _hoisted_2$3, toDisplayString(__props.author), 1)]);
64
+ };
65
+ }
66
+ }), [["__scopeId", "data-v-1a7632f7"]]);
67
+ //#endregion
68
+ //#region src/versions/VersionHistory/HistoryEventFooter.vue?vue&type=script&setup=true&lang.ts
69
+ var _hoisted_1$6 = { class: "history-event-footer" };
70
+ var _hoisted_2$2 = ["datetime"];
71
+ //#endregion
72
+ //#region src/versions/VersionHistory/HistoryEventFooter.vue
73
+ var HistoryEventFooter_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
74
+ __name: "HistoryEventFooter",
75
+ props: {
76
+ date: {},
77
+ version: {}
78
+ },
79
+ setup(__props) {
80
+ const isMounted = ref(false);
81
+ const localDateTime = computed(() => isMounted.value ? formatLocalDateTimeString(__props.date, true) : formatDateTimeString(__props.date, true));
82
+ onMounted(() => {
83
+ isMounted.value = true;
84
+ });
85
+ return (_ctx, _cache) => {
86
+ return openBlock(), createElementBlock("span", _hoisted_1$6, [
87
+ _cache[0] || (_cache[0] = createTextVNode(" Created on ", -1)),
88
+ withDirectives((openBlock(), createElementBlock("time", {
89
+ datetime: __props.date,
90
+ class: normalizeClass({ hidden: !isMounted.value })
91
+ }, [createTextVNode(toDisplayString(localDateTime.value), 1)], 10, _hoisted_2$2)), [[unref(vKdsTooltip), __props.date]]),
92
+ __props.version ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode("– Version " + toDisplayString(__props.version), 1)], 64)) : createCommentVNode("", true)
93
+ ]);
94
+ };
95
+ }
96
+ }), [["__scopeId", "data-v-3db3e01b"]]);
97
+ //#endregion
98
+ //#region src/versions/VersionHistory/CurrentState.vue?vue&type=script&setup=true&lang.ts
99
+ var _hoisted_1$5 = { class: "content-wrapper" };
100
+ //#endregion
101
+ //#region src/versions/VersionHistory/CurrentState.vue
102
+ var CurrentState_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
103
+ __name: "CurrentState",
104
+ props: {
105
+ currentSavepoint: {},
106
+ isSelected: { type: Boolean },
107
+ hasEditCapability: { type: Boolean },
108
+ hasPreviousVersion: { type: Boolean },
109
+ hasVersionLimit: { type: Boolean },
110
+ isVersionLimitExceeded: { type: Boolean }
111
+ },
112
+ emits: [
113
+ "createVersion",
114
+ "discard",
115
+ "select"
116
+ ],
117
+ setup(__props, { emit: __emit }) {
118
+ const props = __props;
119
+ const emit = __emit;
120
+ const menuItems = computed(() => props.hasEditCapability && props.hasPreviousVersion ? [{
121
+ id: "discard",
122
+ text: "Discard",
123
+ handler: () => emit("discard")
124
+ }] : []);
125
+ return (_ctx, _cache) => {
126
+ return openBlock(), createBlock(HistoryEvent_default, {
127
+ "is-selected": __props.isSelected,
128
+ "is-first-item": "",
129
+ "is-last-item": !__props.hasPreviousVersion && !__props.hasVersionLimit
130
+ }, {
131
+ default: withCtx(() => [createVNode(unref(KdsSelectableCard), {
132
+ "model-value": __props.isSelected,
133
+ headline: "Draft",
134
+ ariaLabel: "Savepoint history event",
135
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => !__props.isSelected && _ctx.$emit("select"))
136
+ }, createSlots({
137
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$5, [createVNode(HistoryEventAuthor_default, {
138
+ author: __props.currentSavepoint.author,
139
+ avatar: __props.currentSavepoint.avatar
140
+ }, null, 8, ["author", "avatar"]), createVNode(HistoryEventFooter_default, { date: __props.currentSavepoint.lastEditedOn }, null, 8, ["date"])])]),
141
+ _: 2
142
+ }, [menuItems.value.length ? {
143
+ name: "header-actions",
144
+ fn: withCtx(() => [createVNode(unref(KdsMenuButton), {
145
+ items: menuItems.value,
146
+ variant: "transparent",
147
+ "leading-icon": "more-actions",
148
+ ariaLabel: "More actions"
149
+ }, null, 8, ["items"])]),
150
+ key: "0"
151
+ } : void 0]), 1032, ["model-value"]), __props.hasEditCapability && !__props.isVersionLimitExceeded ? (openBlock(), createBlock(unref(KdsButton), {
152
+ key: 0,
153
+ label: "Create version",
154
+ onClick: _cache[1] || (_cache[1] = withModifiers(($event) => _ctx.$emit("createVersion"), ["stop"]))
155
+ })) : createCommentVNode("", true)]),
156
+ _: 1
157
+ }, 8, ["is-selected", "is-last-item"]);
158
+ };
159
+ }
160
+ }), [["__scopeId", "data-v-a6a58c85"]]);
161
+ //#endregion
162
+ //#region src/versions/VersionHistory/VersionLabel.vue?vue&type=script&setup=true&lang.ts
163
+ var _hoisted_1$4 = { class: "label-popover-container" };
164
+ var _hoisted_2$1 = { class: "label-title" };
165
+ //#endregion
166
+ //#region src/versions/VersionHistory/VersionLabel.vue
167
+ var VersionLabel_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
168
+ __name: "VersionLabel",
169
+ props: /*@__PURE__*/ mergeModels({ label: {} }, {
170
+ "modelValue": {
171
+ type: Boolean,
172
+ default: false
173
+ },
174
+ "modelModifiers": {}
175
+ }),
176
+ emits: ["update:modelValue"],
177
+ setup(__props) {
178
+ const isPopoverOpen = useModel(__props, "modelValue");
179
+ const popoverEl = useTemplateRef("popover");
180
+ return (_ctx, _cache) => {
181
+ return openBlock(), createElementBlock(Fragment, null, [createVNode(unref(KdsToggleButton), {
182
+ modelValue: isPopoverOpen.value,
183
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isPopoverOpen.value = $event),
184
+ "data-kds-card-secondary-action": "",
185
+ label: __props.label.label.name,
186
+ "aria-haspopup": "dialog",
187
+ "aria-expanded": isPopoverOpen.value,
188
+ "aria-controls": popoverEl.value?.popoverId,
189
+ size: "xsmall",
190
+ style: normalizeStyle(popoverEl.value?.anchorStyle)
191
+ }, null, 8, [
192
+ "modelValue",
193
+ "label",
194
+ "aria-expanded",
195
+ "aria-controls",
196
+ "style"
197
+ ]), createVNode(unref(KdsPopover), {
198
+ ref: "popover",
199
+ modelValue: isPopoverOpen.value,
200
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => isPopoverOpen.value = $event),
201
+ placement: "bottom-left",
202
+ role: "dialog",
203
+ "aria-label": "Label details"
204
+ }, {
205
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$4, [
206
+ createElementVNode("div", _hoisted_2$1, toDisplayString(__props.label.label.name), 1),
207
+ createVNode(unref(KdsDescription), { text: __props.label.label.description }, null, 8, ["text"]),
208
+ __props.label.message ? (openBlock(), createBlock(unref(KdsDescription), {
209
+ key: 0,
210
+ text: __props.label.message
211
+ }, null, 8, ["text"])) : createCommentVNode("", true)
212
+ ])]),
213
+ _: 1
214
+ }, 8, ["modelValue"])], 64);
215
+ };
216
+ }
217
+ }), [["__scopeId", "data-v-00d7133a"]]);
218
+ //#endregion
219
+ //#region src/versions/VersionHistory/VersionItem.vue?vue&type=script&setup=true&lang.ts
220
+ var _hoisted_1$3 = { class: "content-wrapper" };
221
+ var _hoisted_2 = { class: "labels-wrapper" };
222
+ //#endregion
223
+ //#region src/versions/VersionHistory/VersionItem.vue
224
+ var VersionItem_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
225
+ __name: "VersionItem",
226
+ props: {
227
+ version: {},
228
+ isSelected: { type: Boolean },
229
+ hasAdminRights: { type: Boolean },
230
+ hasEditCapability: { type: Boolean },
231
+ isFirstItem: { type: Boolean },
232
+ isLastItem: { type: Boolean }
233
+ },
234
+ emits: [
235
+ "select",
236
+ "delete",
237
+ "restore"
238
+ ],
239
+ setup(__props, { emit: __emit }) {
240
+ const props = __props;
241
+ const emit = __emit;
242
+ const toggleVersionSelection = () => {
243
+ emit("select", !props.isSelected);
244
+ };
245
+ const menuItems = computed(() => [
246
+ props.hasEditCapability && {
247
+ id: "show",
248
+ text: props.isSelected ? "Deselect this version" : "Show this version",
249
+ handler: toggleVersionSelection
250
+ },
251
+ props.hasEditCapability && {
252
+ id: "restore",
253
+ text: "Restore this version",
254
+ handler: () => emit("restore")
255
+ },
256
+ props.hasAdminRights && {
257
+ id: "delete",
258
+ text: "Delete this version",
259
+ handler: () => emit("delete")
260
+ }
261
+ ].filter((i) => i !== false));
262
+ return (_ctx, _cache) => {
263
+ return openBlock(), createBlock(HistoryEvent_default, {
264
+ "is-selected": __props.isSelected,
265
+ "is-first-item": __props.isFirstItem,
266
+ "is-last-item": __props.isLastItem
267
+ }, {
268
+ default: withCtx(() => [createVNode(unref(KdsSelectableCard), {
269
+ "model-value": __props.isSelected,
270
+ headline: __props.version.title,
271
+ ariaLabel: "Version history event",
272
+ "onUpdate:modelValue": toggleVersionSelection
273
+ }, createSlots({
274
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$3, [
275
+ createVNode(HistoryEventAuthor_default, {
276
+ author: __props.version.author,
277
+ avatar: __props.version.avatar
278
+ }, null, 8, ["author", "avatar"]),
279
+ __props.version.description ? (openBlock(), createBlock(unref(KdsDescription), {
280
+ key: 0,
281
+ text: __props.version.description
282
+ }, null, 8, ["text"])) : createCommentVNode("", true),
283
+ createElementVNode("div", _hoisted_2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.version.labels, (label) => {
284
+ return openBlock(), createBlock(VersionLabel_default, {
285
+ key: label.labelId,
286
+ label
287
+ }, null, 8, ["label"]);
288
+ }), 128))]),
289
+ createVNode(HistoryEventFooter_default, {
290
+ version: __props.version.version,
291
+ date: __props.version.createdOn
292
+ }, null, 8, ["version", "date"])
293
+ ])]),
294
+ _: 2
295
+ }, [menuItems.value.length ? {
296
+ name: "header-actions",
297
+ fn: withCtx(() => [createVNode(unref(KdsMenuButton), {
298
+ items: menuItems.value,
299
+ variant: "transparent",
300
+ "leading-icon": "more-actions",
301
+ ariaLabel: "More actions"
302
+ }, null, 8, ["items"])]),
303
+ key: "0"
304
+ } : void 0]), 1032, ["model-value", "headline"])]),
305
+ _: 1
306
+ }, 8, [
307
+ "is-selected",
308
+ "is-first-item",
309
+ "is-last-item"
310
+ ]);
311
+ };
312
+ }
313
+ }), [["__scopeId", "data-v-9cf889d1"]]);
314
+ //#endregion
315
+ //#region src/versions/VersionHistory/VersionLimitInfo.vue?vue&type=script&setup=true&lang.ts
316
+ var _hoisted_1$2 = { class: "content-wrapper" };
317
+ //#endregion
318
+ //#region src/versions/VersionHistory/VersionLimitInfo.vue
319
+ var VersionLimitInfo_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
320
+ __name: "VersionLimitInfo",
321
+ props: {
322
+ versionLimit: {},
323
+ upgradeUrl: { default: () => void 0 },
324
+ isPrivate: {
325
+ type: Boolean,
326
+ default: false
327
+ }
328
+ },
329
+ setup(__props) {
330
+ const isLimitReached = computed(() => __props.versionLimit.currentUsage >= __props.versionLimit.limit);
331
+ const headline = computed(() => {
332
+ if (isLimitReached.value) return `You've reached the maximum of ${__props.versionLimit.limit} versions.`;
333
+ else return `Using ${__props.versionLimit.currentUsage} of ${__props.versionLimit.limit} versions.`;
334
+ });
335
+ return (_ctx, _cache) => {
336
+ return openBlock(), createBlock(HistoryEvent_default, {
337
+ "is-selected": false,
338
+ "is-first-item": false,
339
+ "is-last-item": ""
340
+ }, {
341
+ default: withCtx(() => [createVNode(unref(KdsCard), {
342
+ variant: "filled",
343
+ headline: headline.value
344
+ }, createSlots({
345
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$2, [createVNode(unref(KdsDescription), { text: `Upgrade to use unlimited versions${__props.isPrivate ? " for private items." : "."}` }, null, 8, ["text"])])]),
346
+ _: 2
347
+ }, [__props.upgradeUrl ? {
348
+ name: "header-actions",
349
+ fn: withCtx(() => [createVNode(unref(KdsLinkButton), {
350
+ label: "Upgrade",
351
+ to: __props.upgradeUrl
352
+ }, null, 8, ["to"])]),
353
+ key: "0"
354
+ } : void 0]), 1032, ["headline"])]),
355
+ _: 1
356
+ });
357
+ };
358
+ }
359
+ }), [["__scopeId", "data-v-0a98c542"]]);
360
+ //#endregion
361
+ //#region src/versions/VersionHistory/constants.ts
362
+ var VERSION_DEFAULT_LIMIT = 10;
363
+ var CURRENT_STATE_VERSION = "current-state";
364
+ var MOST_RECENT_VERSION = "most-recent";
365
+ //#endregion
366
+ //#region src/versions/VersionHistory/VersionHistory.vue?vue&type=script&setup=true&lang.ts
367
+ var _hoisted_1$1 = { class: "version-history-wrapper" };
368
+ //#endregion
369
+ //#region src/versions/VersionHistory/VersionHistory.vue
370
+ var VersionHistory_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
371
+ __name: "VersionHistory",
372
+ props: {
373
+ hasUnversionedChanges: { type: Boolean },
374
+ unversionedSavepoint: {},
375
+ currentVersion: {},
376
+ versionHistory: {},
377
+ loading: { type: Boolean },
378
+ hasLoadedAllVersions: { type: Boolean },
379
+ hasAdminRights: { type: Boolean },
380
+ hasEditCapability: { type: Boolean },
381
+ versionLimit: {},
382
+ upgradeUrl: {},
383
+ isPrivate: { type: Boolean }
384
+ },
385
+ emits: [
386
+ "close",
387
+ "loadAll",
388
+ "create",
389
+ "delete",
390
+ "restore",
391
+ "select",
392
+ "discardCurrentState"
393
+ ],
394
+ setup(__props, { emit: __emit }) {
395
+ const props = __props;
396
+ const emit = __emit;
397
+ const isVersionLimitExceeded = computed(() => {
398
+ return props.versionLimit?.limit !== void 0 && props.versionLimit.currentUsage >= props.versionLimit.limit;
399
+ });
400
+ const headlineTrailingActions = computed(() => [{
401
+ type: "button",
402
+ props: {
403
+ leadingIcon: "x-close",
404
+ ariaLabel: "Close",
405
+ variant: "transparent"
406
+ },
407
+ onClick: () => emit("close")
408
+ }]);
409
+ return (_ctx, _cache) => {
410
+ return openBlock(), createBlock(unref(KdsPanel), {
411
+ headline: "Version history",
412
+ "headline-trailing-actions": headlineTrailingActions.value
413
+ }, {
414
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$1, [
415
+ __props.unversionedSavepoint ? (openBlock(), createBlock(CurrentState_default, {
416
+ key: 0,
417
+ "current-savepoint": __props.unversionedSavepoint,
418
+ "is-selected": __props.currentVersion === unref(CURRENT_STATE_VERSION),
419
+ "has-edit-capability": __props.hasEditCapability,
420
+ "has-previous-version": __props.versionHistory.length > 0,
421
+ "has-version-limit": __props.versionLimit?.limit !== void 0,
422
+ "is-version-limit-exceeded": isVersionLimitExceeded.value,
423
+ onSelect: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("select", unref("current-state"))),
424
+ onCreateVersion: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("create")),
425
+ onDiscard: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("discardCurrentState"))
426
+ }, null, 8, [
427
+ "current-savepoint",
428
+ "is-selected",
429
+ "has-edit-capability",
430
+ "has-previous-version",
431
+ "has-version-limit",
432
+ "is-version-limit-exceeded"
433
+ ])) : createCommentVNode("", true),
434
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.versionHistory, (historyEvent, index) => {
435
+ return openBlock(), createBlock(VersionItem_default, {
436
+ key: historyEvent.version,
437
+ version: historyEvent,
438
+ "is-selected": historyEvent.version === __props.currentVersion,
439
+ "has-admin-rights": __props.hasAdminRights,
440
+ "has-edit-capability": __props.hasEditCapability,
441
+ "is-first-item": !__props.unversionedSavepoint && index === 0,
442
+ "is-last-item": index === __props.versionHistory.length - 1 && __props.versionLimit?.limit === void 0,
443
+ onDelete: ($event) => _ctx.$emit("delete", historyEvent.version),
444
+ onRestore: ($event) => _ctx.$emit("restore", historyEvent.version),
445
+ onSelect: ($event) => _ctx.$emit("select", $event ? historyEvent.version : unref(CURRENT_STATE_VERSION))
446
+ }, null, 8, [
447
+ "version",
448
+ "is-selected",
449
+ "has-admin-rights",
450
+ "has-edit-capability",
451
+ "is-first-item",
452
+ "is-last-item",
453
+ "onDelete",
454
+ "onRestore",
455
+ "onSelect"
456
+ ]);
457
+ }), 128)),
458
+ __props.versionLimit?.limit !== void 0 ? (openBlock(), createBlock(VersionLimitInfo_default, {
459
+ key: 1,
460
+ class: "version-limit-info",
461
+ "version-limit": {
462
+ limit: __props.versionLimit.limit,
463
+ currentUsage: __props.versionLimit.currentUsage
464
+ },
465
+ "upgrade-url": __props.upgradeUrl,
466
+ "is-private": __props.isPrivate
467
+ }, null, 8, [
468
+ "version-limit",
469
+ "upgrade-url",
470
+ "is-private"
471
+ ])) : createCommentVNode("", true),
472
+ !__props.hasLoadedAllVersions ? (openBlock(), createBlock(unref(KdsButton), {
473
+ key: 2,
474
+ variant: "transparent",
475
+ disabled: __props.loading,
476
+ label: __props.loading ? "Loading..." : "Load all",
477
+ class: "load-more-button",
478
+ onClick: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("loadAll"))
479
+ }, null, 8, ["disabled", "label"])) : createCommentVNode("", true)
480
+ ])]),
481
+ _: 1
482
+ }, 8, ["headline-trailing-actions"]);
483
+ };
484
+ }
485
+ }), [["__scopeId", "data-v-e775efff"]]);
486
+ //#endregion
487
+ //#region src/versions/CreateVersionForm/CreateVersionForm.vue?vue&type=script&setup=true&lang.ts
488
+ var _hoisted_1 = { class: "create-version-form-wrapper" };
489
+ //#endregion
490
+ //#region src/versions/CreateVersionForm/CreateVersionForm.vue
491
+ var CreateVersionForm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
492
+ __name: "CreateVersionForm",
493
+ props: { isCreationPending: {
494
+ type: Boolean,
495
+ default: false
496
+ } },
497
+ emits: ["create", "cancel"],
498
+ setup(__props, { emit: __emit }) {
499
+ const emit = __emit;
500
+ const versionName = ref("");
501
+ const versionDescription = ref("");
502
+ const doValidate = ref(false);
503
+ const isVersionNameInvalid = computed(() => {
504
+ return doValidate.value && versionName.value.trim().length <= 0;
505
+ });
506
+ const hasUnsavedChanges = computed(() => {
507
+ return versionName.value !== "" || versionDescription.value !== "";
508
+ });
509
+ const onCreate = async () => {
510
+ doValidate.value = true;
511
+ await nextTick();
512
+ if (!isVersionNameInvalid.value) emit("create", {
513
+ name: versionName.value.trim(),
514
+ description: versionDescription.value
515
+ });
516
+ };
517
+ const headlineTrailingActions = computed(() => [{
518
+ type: "button",
519
+ props: {
520
+ leadingIcon: "x-close",
521
+ ariaLabel: "Close",
522
+ variant: "transparent"
523
+ },
524
+ onClick: () => emit("cancel", hasUnsavedChanges.value)
525
+ }]);
526
+ const footerLeadingActions = computed(() => [{
527
+ type: "button",
528
+ props: {
529
+ label: "Cancel",
530
+ variant: "outlined"
531
+ },
532
+ onClick: () => emit("cancel", hasUnsavedChanges.value)
533
+ }]);
534
+ const footerTrailingActions = computed(() => [{
535
+ type: "button",
536
+ props: {
537
+ label: "Create",
538
+ variant: "filled",
539
+ disabled: isVersionNameInvalid.value || __props.isCreationPending
540
+ },
541
+ onClick: onCreate
542
+ }]);
543
+ return (_ctx, _cache) => {
544
+ return openBlock(), createBlock(unref(KdsPanel), {
545
+ headline: "Create version",
546
+ "headline-trailing-actions": headlineTrailingActions.value,
547
+ "footer-leading-actions": footerLeadingActions.value,
548
+ "footer-trailing-actions": footerTrailingActions.value
549
+ }, {
550
+ default: withCtx(() => [createElementVNode("div", _hoisted_1, [
551
+ createVNode(unref(KdsDescription), {
552
+ text: "Give your version a name and description. Versions can be used to create a deployment.",
553
+ class: "create-version-form-description"
554
+ }),
555
+ createVNode(unref(KdsTextInput), {
556
+ modelValue: versionName.value,
557
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => versionName.value = $event),
558
+ label: "Version name",
559
+ type: "text",
560
+ error: isVersionNameInvalid.value,
561
+ "sub-text": isVersionNameInvalid.value ? "Please enter at least 1 character." : void 0
562
+ }, null, 8, [
563
+ "modelValue",
564
+ "error",
565
+ "sub-text"
566
+ ]),
567
+ createVNode(unref(KdsTextarea), {
568
+ modelValue: versionDescription.value,
569
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => versionDescription.value = $event),
570
+ label: "Description",
571
+ class: "description"
572
+ }, null, 8, ["modelValue"])
573
+ ])]),
574
+ _: 1
575
+ }, 8, [
576
+ "headline-trailing-actions",
577
+ "footer-leading-actions",
578
+ "footer-trailing-actions"
579
+ ]);
580
+ };
581
+ }
582
+ }), [["__scopeId", "data-v-0c0f6ba1"]]);
583
+ //#endregion
584
+ export { CURRENT_STATE_VERSION, CreateVersionForm_default as CreateVersionForm, MOST_RECENT_VERSION, VERSION_DEFAULT_LIMIT, VersionHistory_default as VersionHistory };
598
585
 
599
- export { CURRENT_STATE_VERSION, CreateVersionForm, MOST_RECENT_VERSION, VERSION_DEFAULT_LIMIT, VersionHistory };
600
- //# sourceMappingURL=versions.js.map
586
+ //# sourceMappingURL=versions.js.map