@knime/jsonforms 3.4.0 → 3.5.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/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @knime/jsonforms
2
2
 
3
+ ## 3.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 7b5e7c4: add showTime option/prop to ZonedDateTimeControl and KdsZonedDateTimeInput to allow selecting date+timezone only; the time is then set to the start of the selected day in the selected time zone
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [256224e, 7b5e7c4]
12
+ - @knime/kds-components@8.2.0
13
+ - @knime/kds-rich-text-editor@8.2.0
14
+
15
+ ## 3.4.1
16
+
17
+ ### Patch Changes
18
+
19
+ - 336b1b4: `FileUploadControl`: render `KdsFileSelector` instead of a bare button and filename. Files that violate the `accept` uischema option are now rejected with an inline error message, and the field shows the accepted file types as a hint.
20
+ - Updated dependencies [336b1b4]
21
+ - @knime/kds-components@8.0.0
22
+ - @knime/kds-rich-text-editor@8.0.0
23
+
3
24
  ## 3.4.0
4
25
 
5
26
  ### Minor Changes
@@ -0,0 +1,45 @@
1
+ import { computed as e, createBlock as t, defineComponent as n, openBlock as r, unref as i, useTemplateRef as a } from "vue";
2
+ import { KdsFileSelector as o } from "@knime/kds-components";
3
+ //#endregion
4
+ //#region src/uiComponents/FileUploadControl.vue
5
+ var s = /* @__PURE__ */ n({
6
+ __name: "FileUploadControl",
7
+ props: {
8
+ control: {},
9
+ handleChange: { type: Function },
10
+ changeValue: { type: Function },
11
+ disabled: { type: Boolean },
12
+ error: { type: Boolean },
13
+ subText: {},
14
+ onRegisterValidation: { type: Function },
15
+ labelForId: {}
16
+ },
17
+ setup(n, { expose: s }) {
18
+ let c = n, l = e(() => c.control.uischema.options?.multiple ?? !1), u = e(() => c.control.uischema.options?.accept ?? void 0), d = e(() => c.control.data ?? []), f = a("fileSelector");
19
+ return s({ focus: () => f.value?.focus() }), (e, a) => (r(), t(i(o), {
20
+ id: n.labelForId,
21
+ ref_key: "fileSelector",
22
+ ref: f,
23
+ ariaLabel: n.control.label,
24
+ "model-value": d.value,
25
+ multiple: l.value,
26
+ accept: u.value,
27
+ disabled: n.disabled,
28
+ error: n.error,
29
+ "sub-text": n.subText,
30
+ "onUpdate:modelValue": n.changeValue
31
+ }, null, 8, [
32
+ "id",
33
+ "ariaLabel",
34
+ "model-value",
35
+ "multiple",
36
+ "accept",
37
+ "disabled",
38
+ "error",
39
+ "sub-text",
40
+ "onUpdate:modelValue"
41
+ ]));
42
+ }
43
+ });
44
+ //#endregion
45
+ export { s as default };
@@ -1,4 +1,4 @@
1
- import { d as e, u as t } from "./src-DkIWYVHR.js";
1
+ import { d as e, u as t } from "./src-2ar80j2v.js";
2
2
  import { t as n } from "./_plugin-vue_export-helper-B3ysoDQm.js";
3
3
  import { createBlock as r, createElementBlock as i, createVNode as a, defineComponent as o, openBlock as s, ref as c, renderSlot as l, unref as u, withCtx as d } from "vue";
4
4
  import { DispatchRenderer as f } from "@jsonforms/vue";
@@ -1,4 +1,4 @@
1
- import { d as e, k as t, u as n } from "./src-DkIWYVHR.js";
1
+ import { d as e, k as t, u as n } from "./src-2ar80j2v.js";
2
2
  import { t as r } from "./_plugin-vue_export-helper-B3ysoDQm.js";
3
3
  import { computed as i, createBlock as a, createElementBlock as o, createElementVNode as s, createVNode as c, defineComponent as l, openBlock as u, ref as d, renderSlot as f, unref as p, withCtx as m } from "vue";
4
4
  import { DispatchRenderer as h } from "@jsonforms/vue";
@@ -1,4 +1,4 @@
1
- import { d as e } from "./src-DkIWYVHR.js";
1
+ import { d as e } from "./src-2ar80j2v.js";
2
2
  import { createBlock as t, defineComponent as n, openBlock as r, unref as i, withCtx as a } from "vue";
3
3
  import { DispatchRenderer as o } from "@jsonforms/vue";
4
4
  //#endregion
@@ -0,0 +1,104 @@
1
+ import { t as e } from "./plainDateTimeUtils-5uOCJ4N5.js";
2
+ import { computed as t, createBlock as n, defineComponent as r, openBlock as i, ref as a, unref as o, watch as s } from "vue";
3
+ import { KdsZonedDateTimeInput as c } from "@knime/kds-components";
4
+ //#endregion
5
+ //#region src/uiComponents/ZonedDateTimeControl.vue
6
+ var l = /* @__PURE__ */ r({
7
+ __name: "ZonedDateTimeControl",
8
+ props: {
9
+ control: {},
10
+ handleChange: { type: Function },
11
+ changeValue: { type: Function },
12
+ disabled: { type: Boolean },
13
+ error: { type: Boolean },
14
+ subText: {},
15
+ onRegisterValidation: { type: Function },
16
+ labelForId: {}
17
+ },
18
+ setup(r) {
19
+ let l = r, u = t(() => l.control.uischema.options), d = t(() => e.getMaxGranularity(u.value, { showMilliseconds: !1 })), f = t(() => u.value?.showTime ?? !0), p = a(e.detectGranularity(l.control.data.dateTime)), m = t(() => ({
20
+ ...e.fromString(l.control.data.dateTime),
21
+ timeZone: l.control.data.timeZone
22
+ })), h = t(() => {
23
+ let { date: e, time: t, timeZone: n } = m.value;
24
+ if (e === null || !n) return null;
25
+ try {
26
+ return f.value && t ? e.toPlainDateTime(t).toZonedDateTime(n) : e.toZonedDateTime(n);
27
+ } catch {
28
+ return null;
29
+ }
30
+ }), g, _, v = !1, y = () => {
31
+ v = !1;
32
+ let t = _ ?? p.value, n = g !== void 0, r = _ !== void 0, i = g;
33
+ if (g = void 0, _ = void 0, p.value = t, n) {
34
+ if (i === null) {
35
+ l.changeValue({
36
+ ...l.control.data,
37
+ dateTime: ""
38
+ });
39
+ return;
40
+ }
41
+ l.changeValue({
42
+ ...l.control.data,
43
+ dateTime: e.toString(i.toPlainDate(), i.toPlainTime(), t),
44
+ timeZone: i.timeZoneId
45
+ });
46
+ return;
47
+ }
48
+ if (r) {
49
+ let { date: n, time: r } = e.fromString(l.control.data.dateTime);
50
+ n && l.changeValue({
51
+ ...l.control.data,
52
+ dateTime: e.toString(n, r, t)
53
+ });
54
+ }
55
+ }, b = () => {
56
+ v || (v = !0, queueMicrotask(y));
57
+ }, x = t(() => {
58
+ let { date: e, time: t, timeZone: n } = m.value;
59
+ if (e === null || t === null || !n) return null;
60
+ try {
61
+ return e.toPlainDateTime(t).toZonedDateTime(n);
62
+ } catch {
63
+ return null;
64
+ }
65
+ });
66
+ s([f, x], () => {
67
+ if (f.value || x.value === null) return;
68
+ let e = x.value.startOfDay();
69
+ x.value.equals(e) || (g = e, b());
70
+ }, { immediate: !0 });
71
+ let S = (e) => {
72
+ g = e, b();
73
+ }, C = (e) => {
74
+ _ = e, b();
75
+ };
76
+ return (e, t) => (i(), n(o(c), {
77
+ id: r.labelForId,
78
+ ariaLabel: r.control.label,
79
+ "model-value": h.value,
80
+ granularity: p.value,
81
+ "max-granularity": d.value,
82
+ "possible-values": u.value?.possibleValues,
83
+ disabled: r.disabled,
84
+ error: r.error,
85
+ "sub-text": r.subText,
86
+ "show-time": f.value,
87
+ "onUpdate:modelValue": S,
88
+ "onUpdate:granularity": C
89
+ }, null, 8, [
90
+ "id",
91
+ "ariaLabel",
92
+ "model-value",
93
+ "granularity",
94
+ "max-granularity",
95
+ "possible-values",
96
+ "disabled",
97
+ "error",
98
+ "sub-text",
99
+ "show-time"
100
+ ]));
101
+ }
102
+ });
103
+ //#endregion
104
+ export { l as default };
@@ -1,2 +1,2 @@
1
- .flex-wrapper[data-v-2d34194b]{flex-direction:column;height:100%;display:flex}.form{&[data-v-2d34194b]{--horizontal-dialog-padding:var(--kds-spacing-container-0-75x);padding:0 var(--horizontal-dialog-padding) var(--kds-spacing-container-0-75x);flex-direction:column;flex-grow:1;display:flex;overflow:hidden auto}&[data-v-2d34194b]:focus{outline:none}}.settings-sub-panel{&[data-v-bcab65d0]{z-index:3;background-color:var(--kds-color-surface-default);width:100%;box-shadow:var(--kds-elevation-level-3);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0}&[data-v-bcab65d0]:focus{outline:none}}.settings-sub-panel-body[data-v-bcab65d0]{--horizontal-dialog-padding:var(--kds-spacing-container-0-75x);height:100%;padding:0 var(--horizontal-dialog-padding) var(--horizontal-dialog-padding);flex-direction:column;display:flex;overflow:hidden auto}.settings-sub-panel-footer[data-v-bcab65d0]{flex:none}.slide-enter-active[data-v-bcab65d0],.slide-leave-active[data-v-bcab65d0]{transition:transform .2s}.slide-enter-from[data-v-bcab65d0],.slide-leave-to[data-v-bcab65d0]{transform:translateX(calc(100% + var(--kds-spacing-container-0-5x)))}.loading-dialog{&[data-v-6920196f]{gap:var(--kds-spacing-container-1x);height:100%;padding:var(--kds-spacing-container-2x) var(--kds-spacing-container-1x);flex-direction:column;display:flex}& .two-columns[data-v-6920196f]{gap:var(--kds-spacing-container-1x);margin-bottom:var(--kds-spacing-container-3x);grid-template-columns:1fr 1fr;display:grid}}.dialog[data-v-acd25041]{background-color:var(--kds-color-surface-default);flex-direction:column;justify-content:space-between;height:100%;display:flex;position:relative;overflow-x:hidden}.dialog-label{&[data-v-dcb388eb]{flex-direction:column;width:100%;display:flex;position:relative}&.fill[data-v-dcb388eb]{flex-grow:1}& .control-header{&[data-v-dcb388eb]{max-width:100%;min-height:calc(var(--kds-spacing-input-label-spacing-bottom) + var(--kds-dimension-component-height-1x));display:flex}& .left{&[data-v-dcb388eb]{flex:1;justify-content:flex-start;min-width:0;display:flex}& .label[data-v-dcb388eb]{white-space:pre;flex-shrink:1;min-width:0}}&[data-v-dcb388eb] .toggle-hide-on-null{padding-bottom:var(--kds-spacing-input-label-spacing-bottom);margin-left:var(--kds-spacing-container-0-12x)}&[data-v-dcb388eb]:has(.left .label:hover) .toggle-hide-on-null:not(.disabled) .control{background:var(--bg-hover)}}&[data-v-dcb388eb] .label-text{display:inline-block}}.description-wrapper[data-v-36483899]{pointer-events:auto;max-height:300px;overflow:auto}.vertical-layout{&[data-v-abc3717c]{--vertical-padding:var(--kds-spacing-container-0-5x);flex-direction:column;display:flex}&[data-v-abc3717c]:last-child{flex:1}&[data-v-abc3717c]:not(:has(:first-child>.section:first-child)){gap:var(--kds-spacing-container-0-75x);padding-top:var(--vertical-padding)}}.section-header-sentinel[data-v-87a3f8e3]{height:1px;margin-bottom:-1px}.section-header{&[data-v-87a3f8e3]{z-index:1;margin:0 calc(-1 * var(--horizontal-dialog-padding,0));background-color:var(--kds-color-surface-default);position:sticky;top:0}& .section-header-layout-container{&[data-v-87a3f8e3]{gap:var(--kds-spacing-container-0-5x);width:calc(100% - var(--horizontal-dialog-padding,0) * 2);padding-top:var(--kds-spacing-container-0-25x);padding-bottom:var(--kds-spacing-container-0-12x);margin:0 var(--horizontal-dialog-padding,0);justify-content:space-between;align-items:center;display:flex}& h3[data-v-87a3f8e3]{font:var(--kds-font-base-title-medium-strong);color:var(--kds-color-text-and-icon-neutral);margin:0}& .section-header-buttons[data-v-87a3f8e3]{gap:var(--kds-spacing-container-0-25x);align-items:center;display:flex}}&.is-sticking .section-header-layout-container[data-v-87a3f8e3]{border-bottom:var(--kds-border-base-subtle)}}.item-controls[data-v-9f37d47c]{gap:var(--kds-spacing-container-0-25x);margin-bottom:var(--kds-spacing-container-0-12x);display:flex}.simple-array{& .item-header[data-v-7737a235]{margin-top:var(--kds-spacing-container-0-5x);margin-bottom:var(--kds-spacing-container-0-5x);justify-content:space-between;align-items:baseline;display:flex}& .element{&[data-v-7737a235]{gap:var(--kds-spacing-container-0-25x);margin-bottom:var(--kds-spacing-container-1x);align-items:end;display:flex}& .form-component[data-v-7737a235]{flex-grow:1;min-width:0}}&[data-v-7737a235]>:last-child>*{margin-bottom:0}}.simple-button-input[data-v-c79c6b71]{margin-bottom:var(--kds-spacing-container-0-5x);place-content:center space-between;display:flex;position:relative}.empty-state-wrapper[data-v-7a09310d]{background:var(--kds-color-surface-muted);border:var(--kds-border-base-subtle);border-radius:var(--kds-border-radius-container-0-25x);justify-content:center;align-items:center;display:flex}.gradient-preview{&[data-v-8a745225]{height:var(--kds-dimension-component-height-1-5x)}& .gradient-bar[data-v-8a745225]{border-radius:var(--kds-border-radius-container-0-25x)}&[data-v-8a745225]>*{height:100%}}.palette-preview{&[data-v-ad83046f]{--palette-grid-entry-height:var(--kds-dimension-component-height-1-5x);--palette-grid-gap:var(--kds-spacing-container-0-25x);min-height:calc(2 * var(--palette-grid-entry-height) + var(--palette-grid-gap))}& .palette-grid{&[data-v-ad83046f]{--min-grid-rows:2;grid-template-rows:repeat(var(--min-grid-rows), var(--palette-grid-entry-height));grid-auto-rows:var(--palette-grid-entry-height);gap:var(--palette-grid-gap);display:grid}& .color-cell[data-v-ad83046f]{height:var(--palette-grid-entry-height);border-radius:var(--kds-border-radius-container-0-25x)}}& .empty-state[data-v-ad83046f]{height:var(--palette-grid-entry-height)}}.input-wrapper{&[data-v-3a916a8e]{gap:var(--kds-spacing-container-1x);flex-direction:column;display:flex}& .chart[data-v-3a916a8e]{gap:var(--kds-spacing-container-0-75x);flex-direction:row;align-items:center;display:flex}}.checkbox-input{&[data-v-4f590a2d]{display:flex;position:relative}& .checkbox-container[data-v-4f590a2d]{flex:1;min-width:0;display:flex}}.reexecution-icon[data-v-4f590a2d]{vertical-align:top;height:10px;margin:3px 0 1px 5px;display:inline-block}.file-select-button[data-v-37968bc6]{display:inline}.filename[data-v-37968bc6]{font:var(--kds-font-base-title-small);color:var(--kds-color-text-and-icon-subtle);margin-left:10px}.grid-list{&[data-v-7a7a1a2e]{width:var(--v61e65c73)}& .grid-list-container[data-v-7a7a1a2e]{place-items:stretch stretch;display:grid}& .button{&[data-v-7a7a1a2e]{min-width:36px;margin-bottom:var(--kds-spacing-container-0-5x)}&.invert[data-v-7a7a1a2e]{margin-top:var(--kds-spacing-container-0-75x);margin-left:0}}& .checkbox[data-v-7a7a1a2e]{margin-top:var(--kds-spacing-container-0-37x)}}.horizontal[data-v-8f2ebb37]{gap:var(--kds-spacing-container-0-25x);justify-content:space-between;width:100%;display:inline-flex}.horizontal-element[data-v-8f2ebb37]{flex:1;width:0}.link-wrapper[data-v-c55bc56b]{justify-content:var(--v7f757bb0);width:100%;display:flex}.progress-button-input[data-v-f0104921]{place-content:center space-between;display:flex}.radio-wrapper{&[data-v-d327df7b]{flex-direction:row;gap:20px;display:flex}& .radio-button[data-v-d327df7b]{flex:0 0 90px;position:relative}& .description[data-v-d327df7b],& .price[data-v-d327df7b]{font:var(--kds-font-base-body-small)}& .description[data-v-d327df7b]{flex:auto}& .price{&[data-v-d327df7b]{flex:0 0 110px}&.selected[data-v-d327df7b]{font-weight:500}}}.footnote[data-v-d327df7b]{font:var(--kds-font-base-body-small)}.editor[data-v-0d780c9f]{height:100%}.section{&[data-v-33f353d4]:not(:first-child){padding-top:var(--kds-spacing-container-1x)}}.flex-row[data-v-dc2400b4]{gap:var(--kds-spacing-container-0-5x);flex-direction:row;justify-content:flex-end;align-items:center;display:flex}.team-and-space{&[data-v-40e43c08]{transition:opacity .3s ease-in-out}& .team[data-v-40e43c08],& .space[data-v-40e43c08]{float:left;width:calc(50% - 5px);margin-right:5px}}.timeframe{&[data-v-f38723b8]{flex-direction:row;gap:20px;display:flex}&[data-v-f38723b8]>*{flex:auto}}
1
+ .flex-wrapper[data-v-2d34194b]{flex-direction:column;height:100%;display:flex}.form{&[data-v-2d34194b]{--horizontal-dialog-padding:var(--kds-spacing-container-0-75x);padding:0 var(--horizontal-dialog-padding) var(--kds-spacing-container-0-75x);flex-direction:column;flex-grow:1;display:flex;overflow:hidden auto}&[data-v-2d34194b]:focus{outline:none}}.settings-sub-panel{&[data-v-bcab65d0]{z-index:3;background-color:var(--kds-color-surface-default);width:100%;box-shadow:var(--kds-elevation-level-3);flex-direction:column;display:flex;position:absolute;top:0;bottom:0;right:0}&[data-v-bcab65d0]:focus{outline:none}}.settings-sub-panel-body[data-v-bcab65d0]{--horizontal-dialog-padding:var(--kds-spacing-container-0-75x);height:100%;padding:0 var(--horizontal-dialog-padding) var(--horizontal-dialog-padding);flex-direction:column;display:flex;overflow:hidden auto}.settings-sub-panel-footer[data-v-bcab65d0]{flex:none}.slide-enter-active[data-v-bcab65d0],.slide-leave-active[data-v-bcab65d0]{transition:transform .2s}.slide-enter-from[data-v-bcab65d0],.slide-leave-to[data-v-bcab65d0]{transform:translateX(calc(100% + var(--kds-spacing-container-0-5x)))}.loading-dialog{&[data-v-6920196f]{gap:var(--kds-spacing-container-1x);height:100%;padding:var(--kds-spacing-container-2x) var(--kds-spacing-container-1x);flex-direction:column;display:flex}& .two-columns[data-v-6920196f]{gap:var(--kds-spacing-container-1x);margin-bottom:var(--kds-spacing-container-3x);grid-template-columns:1fr 1fr;display:grid}}.dialog[data-v-acd25041]{background-color:var(--kds-color-surface-default);flex-direction:column;justify-content:space-between;height:100%;display:flex;position:relative;overflow-x:hidden}.dialog-label{&[data-v-dcb388eb]{flex-direction:column;width:100%;display:flex;position:relative}&.fill[data-v-dcb388eb]{flex-grow:1}& .control-header{&[data-v-dcb388eb]{max-width:100%;min-height:calc(var(--kds-spacing-input-label-spacing-bottom) + var(--kds-dimension-component-height-1x));display:flex}& .left{&[data-v-dcb388eb]{flex:1;justify-content:flex-start;min-width:0;display:flex}& .label[data-v-dcb388eb]{white-space:pre;flex-shrink:1;min-width:0}}&[data-v-dcb388eb] .toggle-hide-on-null{padding-bottom:var(--kds-spacing-input-label-spacing-bottom);margin-left:var(--kds-spacing-container-0-12x)}&[data-v-dcb388eb]:has(.left .label:hover) .toggle-hide-on-null:not(.disabled) .control{background:var(--bg-hover)}}&[data-v-dcb388eb] .label-text{display:inline-block}}.description-wrapper[data-v-36483899]{pointer-events:auto;max-height:300px;overflow:auto}.vertical-layout{&[data-v-abc3717c]{--vertical-padding:var(--kds-spacing-container-0-5x);flex-direction:column;display:flex}&[data-v-abc3717c]:last-child{flex:1}&[data-v-abc3717c]:not(:has(:first-child>.section:first-child)){gap:var(--kds-spacing-container-0-75x);padding-top:var(--vertical-padding)}}.section-header-sentinel[data-v-87a3f8e3]{height:1px;margin-bottom:-1px}.section-header{&[data-v-87a3f8e3]{z-index:1;margin:0 calc(-1 * var(--horizontal-dialog-padding,0));background-color:var(--kds-color-surface-default);position:sticky;top:0}& .section-header-layout-container{&[data-v-87a3f8e3]{gap:var(--kds-spacing-container-0-5x);width:calc(100% - var(--horizontal-dialog-padding,0) * 2);padding-top:var(--kds-spacing-container-0-25x);padding-bottom:var(--kds-spacing-container-0-12x);margin:0 var(--horizontal-dialog-padding,0);justify-content:space-between;align-items:center;display:flex}& h3[data-v-87a3f8e3]{font:var(--kds-font-base-title-medium-strong);color:var(--kds-color-text-and-icon-neutral);margin:0}& .section-header-buttons[data-v-87a3f8e3]{gap:var(--kds-spacing-container-0-25x);align-items:center;display:flex}}&.is-sticking .section-header-layout-container[data-v-87a3f8e3]{border-bottom:var(--kds-border-base-subtle)}}.item-controls[data-v-9f37d47c]{gap:var(--kds-spacing-container-0-25x);margin-bottom:var(--kds-spacing-container-0-12x);display:flex}.simple-array{& .item-header[data-v-7737a235]{margin-top:var(--kds-spacing-container-0-5x);margin-bottom:var(--kds-spacing-container-0-5x);justify-content:space-between;align-items:baseline;display:flex}& .element{&[data-v-7737a235]{gap:var(--kds-spacing-container-0-25x);margin-bottom:var(--kds-spacing-container-1x);align-items:end;display:flex}& .form-component[data-v-7737a235]{flex-grow:1;min-width:0}}&[data-v-7737a235]>:last-child>*{margin-bottom:0}}.simple-button-input[data-v-c79c6b71]{margin-bottom:var(--kds-spacing-container-0-5x);place-content:center space-between;display:flex;position:relative}.empty-state-wrapper[data-v-7a09310d]{background:var(--kds-color-surface-muted);border:var(--kds-border-base-subtle);border-radius:var(--kds-border-radius-container-0-25x);justify-content:center;align-items:center;display:flex}.gradient-preview{&[data-v-8a745225]{height:var(--kds-dimension-component-height-1-5x)}& .gradient-bar[data-v-8a745225]{border-radius:var(--kds-border-radius-container-0-25x)}&[data-v-8a745225]>*{height:100%}}.palette-preview{&[data-v-ad83046f]{--palette-grid-entry-height:var(--kds-dimension-component-height-1-5x);--palette-grid-gap:var(--kds-spacing-container-0-25x);min-height:calc(2 * var(--palette-grid-entry-height) + var(--palette-grid-gap))}& .palette-grid{&[data-v-ad83046f]{--min-grid-rows:2;grid-template-rows:repeat(var(--min-grid-rows), var(--palette-grid-entry-height));grid-auto-rows:var(--palette-grid-entry-height);gap:var(--palette-grid-gap);display:grid}& .color-cell[data-v-ad83046f]{height:var(--palette-grid-entry-height);border-radius:var(--kds-border-radius-container-0-25x)}}& .empty-state[data-v-ad83046f]{height:var(--palette-grid-entry-height)}}.input-wrapper{&[data-v-3a916a8e]{gap:var(--kds-spacing-container-1x);flex-direction:column;display:flex}& .chart[data-v-3a916a8e]{gap:var(--kds-spacing-container-0-75x);flex-direction:row;align-items:center;display:flex}}.checkbox-input{&[data-v-4f590a2d]{display:flex;position:relative}& .checkbox-container[data-v-4f590a2d]{flex:1;min-width:0;display:flex}}.reexecution-icon[data-v-4f590a2d]{vertical-align:top;height:10px;margin:3px 0 1px 5px;display:inline-block}.grid-list{&[data-v-7a7a1a2e]{width:var(--v61e65c73)}& .grid-list-container[data-v-7a7a1a2e]{place-items:stretch stretch;display:grid}& .button{&[data-v-7a7a1a2e]{min-width:36px;margin-bottom:var(--kds-spacing-container-0-5x)}&.invert[data-v-7a7a1a2e]{margin-top:var(--kds-spacing-container-0-75x);margin-left:0}}& .checkbox[data-v-7a7a1a2e]{margin-top:var(--kds-spacing-container-0-37x)}}.horizontal[data-v-8f2ebb37]{gap:var(--kds-spacing-container-0-25x);justify-content:space-between;width:100%;display:inline-flex}.horizontal-element[data-v-8f2ebb37]{flex:1;width:0}.link-wrapper[data-v-c55bc56b]{justify-content:var(--v7f757bb0);width:100%;display:flex}.progress-button-input[data-v-f0104921]{place-content:center space-between;display:flex}.radio-wrapper{&[data-v-d327df7b]{flex-direction:row;gap:20px;display:flex}& .radio-button[data-v-d327df7b]{flex:0 0 90px;position:relative}& .description[data-v-d327df7b],& .price[data-v-d327df7b]{font:var(--kds-font-base-body-small)}& .description[data-v-d327df7b]{flex:auto}& .price{&[data-v-d327df7b]{flex:0 0 110px}&.selected[data-v-d327df7b]{font-weight:500}}}.footnote[data-v-d327df7b]{font:var(--kds-font-base-body-small)}.editor[data-v-0d780c9f]{height:100%}.section{&[data-v-33f353d4]:not(:first-child){padding-top:var(--kds-spacing-container-1x)}}.flex-row[data-v-dc2400b4]{gap:var(--kds-spacing-container-0-5x);flex-direction:row;justify-content:flex-end;align-items:center;display:flex}.team-and-space{&[data-v-40e43c08]{transition:opacity .3s ease-in-out}& .team[data-v-40e43c08],& .space[data-v-40e43c08]{float:left;width:calc(50% - 5px);margin-right:5px}}.timeframe{&[data-v-f38723b8]{flex-direction:row;gap:20px;display:flex}&[data-v-f38723b8]>*{flex:auto}}
2
2
  /*$vite$:1*/
@@ -1,3 +1,3 @@
1
- import { C as e, D as t, E as n, O as r, S as i, T as a, _ as o, a as s, b as c, c as l, d as u, f as d, g as f, h as p, i as m, j as h, k as g, l as _, m as v, n as y, o as b, p as x, r as S, s as C, t as w, u as T, v as E, w as D, x as O, y as k } from "./src-DkIWYVHR.js";
1
+ import { C as e, D as t, E as n, O as r, S as i, T as a, _ as o, a as s, b as c, c as l, d as u, f as d, g as f, h as p, i as m, j as h, k as g, l as _, m as v, n as y, o as b, p as x, r as S, s as C, t as w, u as T, v as E, w as D, x as O, y as k } from "./src-2ar80j2v.js";
2
2
  import { n as A } from "./useProvidedState-478_KXOe.js";
3
3
  export { m as FieldControl, h as Form, r as JsonFormsDialog, t as LabeledControl, T as SectionHeading, g as SettingsSubPanel, _ as SimpleArrayLayout, S as SimpleButtonControl, y as TextControl, u as VerticalLayoutBase, O as controlProps, k as controlToRenderer, s as controls, b as defaultRenderers, i as defineControl, p as defineLayout, n as getAsyncSetupMethod, e as handleAsyncComponents, x as inputFormats, f as layoutProps, o as layoutToRenderer, C as layouts, D as mapControls, a as mapLayouts, d as priorityRanks, w as toDataPathSegments, l as toRenderers, A as useProvidedState, E as withDescriptionButton, v as withDescriptionButtonLayout, c as withLabel };
@@ -1,5 +1,5 @@
1
- import { VueControlPropsForLabelContent } from '../higherOrderComponents';
1
+ import { VueControlExposed, VueControlPropsForLabelContent } from '../higherOrderComponents';
2
2
  type __VLS_Props = VueControlPropsForLabelContent<Array<File>>;
3
- declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
3
+ declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, VueControlExposed, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
4
4
  declare const _default: typeof __VLS_export;
5
5
  export default _default;
@@ -539,7 +539,7 @@ var st = 500, ct = ({ data: e, uischema: t }) => {
539
539
  name: "TextControl",
540
540
  control: Ht,
541
541
  tester: z(Q.fallback, R)
542
- }), Wt = g(() => import("./VerticalLayout-DlhW4HEd.js")), Gt = {
542
+ }), Wt = g(() => import("./VerticalLayout-DJWwKloZ.js")), Gt = {
543
543
  name: "VerticalLayout",
544
544
  layout: Wt,
545
545
  tester: z(Q.default, B("VerticalLayout"))
@@ -572,7 +572,7 @@ var st = 500, ct = ({ data: e, uischema: t }) => {
572
572
  ...zt,
573
573
  tester: z(Q.fallback, F)
574
574
  }
575
- }, Xt = { verticalLayoutFallbackRenderer: Kt }, Zt = g(() => import("./FileUploadControl-Cv3xWTAS.js")), Qt = Y()({
575
+ }, Xt = { verticalLayoutFallbackRenderer: Kt }, Zt = g(() => import("./FileUploadControl-D5QfM3Wa.js")), Qt = Y()({
576
576
  name: "FileUploadRenderer",
577
577
  control: Zt,
578
578
  tester: z(Q.default, M(P, Z(X.fileUpload)))
@@ -708,11 +708,11 @@ var st = 500, ct = ({ data: e, uischema: t }) => {
708
708
  name: "RichTextControl",
709
709
  control: Cn,
710
710
  tester: z(Q.default, M(R, Z(X.richTextInput)))
711
- }), Tn = g(() => import("./SectionLayout-B-vh7ulD.js")), En = B("Section"), Dn = {
711
+ }), Tn = g(() => import("./SectionLayout-CTHfZNfB.js")), En = B("Section"), Dn = {
712
712
  name: "SectionLayout",
713
713
  layout: Tn,
714
714
  tester: z(Q.default, En)
715
- }, On = g(() => import("./SettingsSubPanelLayout-D9TM077j.js")), kn = B("SettingsSubPanelLayout"), An = {
715
+ }, On = g(() => import("./SettingsSubPanelLayout-Dt_WNkLJ.js")), kn = B("SettingsSubPanelLayout"), An = {
716
716
  name: "SettingsSubPanelLayout",
717
717
  layout: On,
718
718
  tester: z(Q.default, kn)
@@ -1067,7 +1067,7 @@ var st = 500, ct = ({ data: e, uischema: t }) => {
1067
1067
  name: "ValueSwitchControl",
1068
1068
  control: gr,
1069
1069
  tester: z(Q.default, M(L, Z(X.valueSwitch)))
1070
- }), vr = g({ loader: () => import("./ZonedDateTimeControl-DoE2T9iz.js") }), yr = {
1070
+ }), vr = g({ loader: () => import("./ZonedDateTimeControl-Co3v2EVv.js") }), yr = {
1071
1071
  checkboxesRenderer: bt,
1072
1072
  colorPreviewRenderer: xt,
1073
1073
  colorRenderer: Ct,
package/dist/testing.js CHANGED
@@ -1,4 +1,4 @@
1
- import { A as e, o as t } from "./src-DkIWYVHR.js";
1
+ import { A as e, o as t } from "./src-2ar80j2v.js";
2
2
  import { ref as n } from "vue";
3
3
  import "@jsonforms/vue";
4
4
  import { vi as r } from "vitest";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knime/jsonforms",
3
- "version": "3.4.0",
3
+ "version": "3.5.0",
4
4
  "description": "JSONForms integration for KNIME frontends",
5
5
  "repository": {
6
6
  "type": "git",
@@ -14,11 +14,11 @@
14
14
  "dependencies": {
15
15
  "@jsonforms/core": "3.8.0",
16
16
  "@jsonforms/vue": "3.8.0",
17
+ "@knime/kds-components": "^8.2.0",
18
+ "@knime/kds-rich-text-editor": "^8.2.0",
19
+ "@knime/utils": "^2.0.2",
17
20
  "ajv": "8.20.0",
18
- "temporal-polyfill": "^1.0.1",
19
- "@knime/kds-components": "^7.2.3",
20
- "@knime/kds-rich-text-editor": "^7.2.3",
21
- "@knime/utils": "^2.0.2"
21
+ "temporal-polyfill": "^1.0.1"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "@vue/test-utils": "^2.4.0",
@@ -36,10 +36,12 @@
36
36
  }
37
37
  },
38
38
  "devDependencies": {
39
+ "@knime/kds-code-editor": "^8.2.0",
40
+ "@knime/kds-styles": "^8.2.0",
39
41
  "@storybook/addon-docs": "^10.4.6",
40
42
  "@storybook/vue3-vite": "^10.4.6",
41
43
  "@vitejs/plugin-vue": "^6.0.8",
42
- "@vitest/coverage-v8": "^4.1.10",
44
+ "@vitest/coverage-v8": "^4.1.11",
43
45
  "@vue/test-utils": "^2.4.11",
44
46
  "@vue/tsconfig": "^0.9.1",
45
47
  "@vueuse/core": "~14.3.0",
@@ -50,10 +52,9 @@
50
52
  "vite": "^8.1.3",
51
53
  "vite-plugin-dts": "^5.0.3",
52
54
  "vite-svg-loader": "^5.1.1",
53
- "vitest": "^4.1.10",
55
+ "vitest": "^4.1.11",
54
56
  "vue": "3.5.40",
55
- "vue-tsc": "^3.3.8",
56
- "@knime/kds-styles": "^7.2.3"
57
+ "vue-tsc": "^3.3.8"
57
58
  },
58
59
  "exports": {
59
60
  ".": {
@@ -1,58 +0,0 @@
1
- import { t as e } from "./_plugin-vue_export-helper-B3ysoDQm.js";
2
- import { computed as t, createElementBlock as n, createElementVNode as r, createVNode as i, defineComponent as a, openBlock as o, ref as s, toDisplayString as c, unref as l } from "vue";
3
- import { KdsButton as u } from "@knime/kds-components";
4
- //#region src/uiComponents/FileUploadControl.vue?vue&type=script&setup=true&lang.ts
5
- var d = { class: "wrapper" }, f = { class: "filename" }, p = [
6
- "id",
7
- "aria-label",
8
- "accept",
9
- "multiple",
10
- "disabled"
11
- ], m = /*#__PURE__*/ e(/* @__PURE__ */ a({
12
- inheritAttrs: !1,
13
- __name: "FileUploadControl",
14
- props: {
15
- control: {},
16
- handleChange: { type: Function },
17
- changeValue: { type: Function },
18
- disabled: { type: Boolean },
19
- error: { type: Boolean },
20
- subText: {},
21
- onRegisterValidation: { type: Function },
22
- labelForId: {}
23
- },
24
- setup(e) {
25
- let a = e, m = s(a.control.data?.slice()), h = t(() => a.control.uischema.options?.accept ?? "*"), g = t(() => a.control.uischema.options?.multiple ?? !1), _ = s(null), v = t(() => m.value?.map?.(({ name: e }) => e).join(", ") || "No file selected"), y = t(() => `Select file${g.value ? "s" : ""}`), b = () => {
26
- _.value?.click();
27
- }, x = (e) => {
28
- let t = e.target;
29
- t.files && (m.value = Array.from(t.files), a.handleChange(a.control.path, Array.from(m.value)));
30
- };
31
- return (t, a) => (o(), n("div", d, [
32
- i(l(u), {
33
- class: "file-select-button",
34
- label: y.value,
35
- "leading-icon": "search",
36
- variant: "outlined",
37
- disabled: e.disabled,
38
- size: "small",
39
- onClick: b
40
- }, null, 8, ["label", "disabled"]),
41
- r("span", f, c(v.value), 1),
42
- r("input", {
43
- id: e.labelForId,
44
- ref_key: "fileSelector",
45
- ref: _,
46
- "aria-label": e.control.label,
47
- type: "file",
48
- accept: h.value,
49
- multiple: g.value,
50
- disabled: e.disabled,
51
- hidden: "",
52
- onChange: x
53
- }, null, 40, p)
54
- ]));
55
- }
56
- }), [["__scopeId", "data-v-37968bc6"]]);
57
- //#endregion
58
- export { m as default };
@@ -1,88 +0,0 @@
1
- import { t as e } from "./temporal-polyfill-D4u1I_Z-.js";
2
- import { t } from "./plainDateTimeUtils-5uOCJ4N5.js";
3
- import { computed as n, createBlock as r, defineComponent as i, openBlock as a, ref as o, unref as s } from "vue";
4
- import { KdsZonedDateTimeInput as c } from "@knime/kds-components";
5
- //#endregion
6
- //#region src/uiComponents/ZonedDateTimeControl.vue
7
- var l = /* @__PURE__ */ i({
8
- __name: "ZonedDateTimeControl",
9
- props: {
10
- control: {},
11
- handleChange: { type: Function },
12
- changeValue: { type: Function },
13
- disabled: { type: Boolean },
14
- error: { type: Boolean },
15
- subText: {},
16
- onRegisterValidation: { type: Function },
17
- labelForId: {}
18
- },
19
- setup(i) {
20
- let l = i, u = n(() => l.control.uischema.options), d = n(() => t.getMaxGranularity(u.value, { showMilliseconds: !1 })), f = o(t.detectGranularity(l.control.data.dateTime)), p = n(() => {
21
- let { date: n, time: r } = t.fromString(l.control.data.dateTime);
22
- if (n === null) return null;
23
- let i = n.toPlainDateTime(r ?? e.PlainTime.from("00:00:00")), a = l.control.data.timeZone;
24
- if (!a) return null;
25
- try {
26
- return i.toZonedDateTime(a);
27
- } catch {
28
- return null;
29
- }
30
- }), m, h, g = !1, _ = () => {
31
- g = !1;
32
- let e = h ?? f.value, n = m !== void 0, r = h !== void 0, i = m;
33
- if (m = void 0, h = void 0, f.value = e, n) {
34
- if (i === null) {
35
- l.changeValue({
36
- ...l.control.data,
37
- dateTime: ""
38
- });
39
- return;
40
- }
41
- l.changeValue({
42
- ...l.control.data,
43
- dateTime: t.toString(i.toPlainDate(), i.toPlainTime(), e),
44
- timeZone: i.timeZoneId
45
- });
46
- return;
47
- }
48
- if (r) {
49
- let { date: n, time: r } = t.fromString(l.control.data.dateTime);
50
- n && l.changeValue({
51
- ...l.control.data,
52
- dateTime: t.toString(n, r, e)
53
- });
54
- }
55
- }, v = () => {
56
- g || (g = !0, queueMicrotask(_));
57
- }, y = (e) => {
58
- m = e, v();
59
- }, b = (e) => {
60
- h = e, v();
61
- };
62
- return (e, t) => (a(), r(s(c), {
63
- id: i.labelForId,
64
- ariaLabel: i.control.label,
65
- "model-value": p.value,
66
- granularity: f.value,
67
- "max-granularity": d.value,
68
- "possible-values": u.value?.possibleValues,
69
- disabled: i.disabled,
70
- error: i.error,
71
- "sub-text": i.subText,
72
- "onUpdate:modelValue": y,
73
- "onUpdate:granularity": b
74
- }, null, 8, [
75
- "id",
76
- "ariaLabel",
77
- "model-value",
78
- "granularity",
79
- "max-granularity",
80
- "possible-values",
81
- "disabled",
82
- "error",
83
- "sub-text"
84
- ]));
85
- }
86
- });
87
- //#endregion
88
- export { l as default };