@piveau/piveau-hub-ui-modules 4.3.0 → 4.4.0-beta.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 (28) hide show
  1. package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs +149 -135
  2. package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs.map +1 -1
  3. package/dist/data-provider-interface/components/ConditionalInput.vue.mjs +152 -140
  4. package/dist/data-provider-interface/components/ConditionalInput.vue.mjs.map +1 -1
  5. package/dist/data-provider-interface/components/DistributionStepper.vue.mjs +60 -60
  6. package/dist/data-provider-interface/components/DistributionStepper.vue.mjs.map +1 -1
  7. package/dist/data-provider-interface/components/FileUpload.vue.d.ts +5 -2
  8. package/dist/data-provider-interface/components/FileUpload.vue.mjs +119 -117
  9. package/dist/data-provider-interface/components/FileUpload.vue.mjs.map +1 -1
  10. package/dist/data-provider-interface/components/SimpleInput.vue.mjs +19 -14
  11. package/dist/data-provider-interface/components/SimpleInput.vue.mjs.map +1 -1
  12. package/dist/data-provider-interface/components/SimpleSelect.vue.mjs +32 -32
  13. package/dist/data-provider-interface/components/SimpleSelect.vue.mjs.map +1 -1
  14. package/dist/data-provider-interface/components/SpatialInput.vue.mjs +90 -94
  15. package/dist/data-provider-interface/components/SpatialInput.vue.mjs.map +1 -1
  16. package/dist/data-provider-interface/components/SpatialInput.vue2.mjs +2 -2
  17. package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs +41 -30
  18. package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs.map +1 -1
  19. package/dist/data-provider-interface/config/dcatapde/input-definition.mjs +81 -78
  20. package/dist/data-provider-interface/config/dcatapde/input-definition.mjs.map +1 -1
  21. package/dist/data-provider-interface/views/DistributionInputPage.vue.mjs +52 -52
  22. package/dist/data-provider-interface/views/DistributionInputPage.vue.mjs.map +1 -1
  23. package/dist/data-provider-interface/views/InputPage.vue.mjs +82 -80
  24. package/dist/data-provider-interface/views/InputPage.vue.mjs.map +1 -1
  25. package/dist/form/Repeatable.vue.mjs +37 -37
  26. package/dist/form/Repeatable.vue.mjs.map +1 -1
  27. package/dist/piveau-hub-ui-modules.css +1 -1
  28. package/package.json +1 -1
@@ -1,262 +1,276 @@
1
- import { getCurrentInstance as G, computed as H, ref as x, onMounted as K, watch as q, watchEffect as Y, openBlock as r, createElementBlock as i, toDisplayString as g, createCommentVNode as U, createTextVNode as p, createElementVNode as l, withDirectives as W, isRef as P, unref as f, vModelText as Q, Fragment as S, renderList as L, vShow as Z, normalizeClass as ee } from "vue";
2
- import { useStore as te } from "vuex";
1
+ import { getCurrentInstance as ee, computed as S, ref as y, onMounted as te, watch as B, watchEffect as ne, openBlock as r, createElementBlock as i, unref as u, toDisplayString as p, createCommentVNode as $, createTextVNode as m, createElementVNode as s, withDirectives as X, isRef as N, vModelText as ae, Fragment as L, renderList as V, vShow as oe, normalizeClass as se } from "vue";
2
+ import { useStore as le } from "vuex";
3
3
  import { getTranslationFor as O } from "../../utils/helpers.mjs";
4
- import { getNode as ne } from "@formkit/core";
5
- import { onClickOutside as B } from "../../external/@vueuse/core/index";
6
- import ae from "qs";
7
- import oe from "axios";
8
- const le = { class: "formkitProperty" }, se = { key: 0 }, re = { class: "formkitCmpWrap" }, ie = { class: "formkit-outer" }, ce = {
4
+ import { getNode as re } from "@formkit/core";
5
+ import { onClickOutside as H } from "../../external/@vueuse/core/index";
6
+ import { useI18n as ie } from "vue-i18n";
7
+ import ce from "qs";
8
+ import ue from "axios";
9
+ const de = { class: "formkitProperty" }, fe = {
10
+ key: 0,
11
+ class: "formkitHeader"
12
+ }, pe = { key: 1 }, me = { class: "formkitCmpWrap" }, ve = { class: "formkit-outer" }, he = {
9
13
  key: 0,
10
14
  class: "d-flex formkit-inner"
11
- }, ue = { class: "autocompleteInputSingleValue" }, de = { key: 1 }, fe = { class: "d-flex align-items-center justify-content-center formkit-inner mb-2" }, pe = ["placeholder"], ve = ["onClick"], me = {
15
+ }, ge = { class: "autocompleteInputSingleValue" }, ye = { key: 1 }, xe = { class: "d-flex align-items-center justify-content-center formkit-inner mb-2" }, _e = ["placeholder"], ke = ["onClick"], be = {
12
16
  key: 0,
13
17
  class: "d-flex flex-wrap"
14
- }, he = { class: "activeResultsAutocompleteWrapper" }, ge = ["onClick"], xe = ["onClick"], ye = { class: "w-100 mt-4" }, _e = { class: "d-flex justify-content-between align-items-center flex-wrap" }, ke = /* @__PURE__ */ l("span", null, "You can generate suggestions based on the description you provided", -1), we = {
18
+ }, we = { class: "activeResultsAutocompleteWrapper" }, Ce = ["onClick"], Ie = ["onClick"], Se = { class: "w-100 mt-4" }, Le = { class: "d-flex justify-content-between align-items-center flex-wrap" }, Ve = {
15
19
  key: 0,
16
20
  class: "annifresultContainer"
17
- }, be = ["onClick"], Ce = { class: "d-flex" }, Ie = {
21
+ }, Te = ["onClick"], Ae = { class: "d-flex" }, Pe = {
18
22
  key: 1,
19
23
  class: "d-flex flex-wrap"
20
- }, Se = ["onClick"], Le = { class: "formkit-wrapper" }, Ve = { class: "formkit-help" }, $e = {
24
+ }, $e = ["onClick"], Ne = { class: "formkit-wrapper" }, Oe = { class: "formkit-help" }, We = {
21
25
  __name: "AutocompleteInput",
22
26
  props: {
23
27
  context: Object
24
28
  },
25
- setup(D) {
26
- let y = G().appContext.app.config.globalProperties.$env;
27
- const a = D, N = te();
28
- let m = H(() => a.context.value), u, _ = a.context.attrs.voc, b = x({
29
- value: { name: "--- Type in anything for a live search of the vocabulary ---" }
30
- }), d = x(), R = x(null), k = x({}), v = [], C = [], j = x({
29
+ setup(J) {
30
+ let x = ee().appContext.app.config.globalProperties.$env;
31
+ const a = J, R = le(), { t: j, locale: E } = ie();
32
+ let h = S(() => a.context.value), d, _ = a.context.attrs.voc, z = S(() => j("message.dataupload.info.searchVocabulary")), G = S(() => j("message.dataupload.info.matchesNothingFound")), w = y({
33
+ value: { name: z }
34
+ }), f = y(), M = y(null), k = y({}), v = [], C = [], q = y({
31
35
  value: !1
32
36
  });
33
- x();
34
- let V = x({});
35
- K(async () => {
37
+ y();
38
+ let T = y({});
39
+ te(async () => {
36
40
  k.value = "";
37
- }), q(b, async () => {
38
- }), q(V, async () => {
39
41
  });
40
- const $ = async (t) => {
42
+ let D = S(() => {
43
+ try {
44
+ if (a.context.attrs.class.includes("inDistribution"))
45
+ return !0;
46
+ } catch {
47
+ }
48
+ });
49
+ B(w, async () => {
50
+ }), B(T, async () => {
51
+ });
52
+ const U = async (t) => {
41
53
  if (t != null) {
42
54
  let n = _ === "iana-media-types" || _ === "spdx-checksum-algorithm", e;
43
- return await N.dispatch("dpiStore/requestResourceName", { voc: _, uri: t, envs: y }).then(
55
+ return await R.dispatch("dpiStore/requestResourceName", { voc: _, uri: t, envs: x }).then(
44
56
  (o) => {
45
- a.context.attrs.property === "dcatde:politicalGeocodingURI" ? o != null && (e = n ? o.data.result.results.filter((s) => s.resource === t).map((s) => s.alt_label)[0].en : O(o.data.result.alt_label, "en", [])) : o != null && (e = n ? o.data.result.results.filter((s) => s.resource === t).map((s) => s.pref_label)[0].en : O(o.data.result.pref_label, "en", []));
57
+ a.context.attrs.property === "dcatde:politicalGeocodingURI" ? o != null && (e = n ? o.data.result.results.filter((l) => l.resource === t).map((l) => l.alt_label)[0].en : O(o.data.result.alt_label, "en", [])) : o != null && (e = n ? o.data.result.results.filter((l) => l.resource === t).map((l) => l.pref_label)[0].en : O(o.data.result.pref_label, "en", []));
46
58
  }
47
59
  ), e;
48
60
  }
49
61
  };
50
- Y(async () => {
51
- const t = m.value;
62
+ ne(async () => {
63
+ const t = h.value;
52
64
  if (t.hasOwnProperty("name") && t.name === t.resource) {
53
65
  let n;
54
- a.context.attrs.multiple || (n = $(t.resource), a.context.node.input({ name: await n, resource: t.resource }));
66
+ a.context.attrs.multiple || (n = U(t.resource), a.context.node.input({ name: await n, resource: t.resource }));
55
67
  }
56
68
  if (t.length >= 1) {
57
69
  let n = [];
58
70
  for (let e = 0; e < t.length; e++)
59
- t[e].name === t[e].resource && (n.push({ name: await $(t[e].resource), resource: t[e].resource }), a.context.node.input(n));
71
+ t[e].name === t[e].resource && (n.push({ name: await U(t[e].resource), resource: t[e].resource }), a.context.node.input(n));
60
72
  }
61
73
  });
62
- function T(t) {
74
+ function A(t) {
63
75
  let n = { step: "", prop: a.context.node.name }, e = JSON.parse(localStorage.getItem("dpi_datasets"));
64
76
  for (let o = 0; o < Object.keys(e).length; o++)
65
77
  for (let c = 0; c < Object.keys(e)[o].length; c++) {
66
- let s = Object.entries(e);
78
+ let l = Object.entries(e);
67
79
  try {
68
- Object.keys(s[o][c]).filter((w) => {
69
- w === a.context.node.name && (n.step = s[o][0], t === "erase" && (u = {}, e[n.step][n.prop] = u), e[n.step][n.prop] = u, localStorage.setItem("dpi_datasets", JSON.stringify(e)));
80
+ Object.keys(l[o][c]).filter((b) => {
81
+ b === a.context.node.name && (n.step = l[o][0], t === "erase" && (d = {}, e[n.step][n.prop] = d), e[n.step][n.prop] = d, localStorage.setItem("dpi_datasets", JSON.stringify(e)));
70
82
  });
71
83
  } catch {
72
84
  }
73
85
  }
74
- window.removeEventListener("click", B);
86
+ window.removeEventListener("click", H);
75
87
  }
76
- B(R, (t) => d.value = !1);
77
- let E = async (t, n) => {
88
+ H(M, (t) => f.value = !1);
89
+ let F = async (t, n) => {
78
90
  let e = 10;
79
91
  n != null && (e = e + 10);
80
- let o = ae.stringify({
92
+ let o = ce.stringify({
81
93
  text: t,
82
94
  limit: e
83
95
  });
84
96
  var c = {
85
97
  method: "post",
86
- url: _ == "eurovoc" ? y.content.dataProviderInterface.annifLinkSubject : y.content.dataProviderInterface.annifLinkTheme,
98
+ url: _ == "eurovoc" ? x.content.dataProviderInterface.annifLinkSubject : x.content.dataProviderInterface.annifLinkTheme,
87
99
  headers: {
88
100
  "Content-Type": "application/x-www-form-urlencoded",
89
101
  Accept: "application/json"
90
102
  },
91
103
  data: o
92
104
  };
93
- oe(c).then(async (s) => {
94
- for (let h = 0; h < s.data.results.length; h++)
95
- C[h] = { name: s.data.results[h].label, resource: s.data.results[h].uri, activeValue: !1 };
96
- let w = [];
97
- m.value.length > 0 && m.value.forEach((h) => {
98
- w.push({ name: h.name, resource: h.resource, activeValue: !0 });
99
- }), s.data.results.length > 9 && (C[C.length + 1] = { name: "...", resource: "invalid", activeValue: !1 }), V.value = F(w, C);
100
- }).catch(function(s) {
101
- console.log(s);
105
+ ue(c).then(async (l) => {
106
+ for (let g = 0; g < l.data.results.length; g++)
107
+ C[g] = { name: l.data.results[g].label, resource: l.data.results[g].uri, activeValue: !1 };
108
+ let b = [];
109
+ h.value.length > 0 && h.value.forEach((g) => {
110
+ b.push({ name: g.name, resource: g.resource, activeValue: !0 });
111
+ }), l.data.results.length > 9 && (C[C.length + 1] = { name: "...", resource: "invalid", activeValue: !1 }), T.value = Q(b, C);
112
+ }).catch(function(l) {
113
+ console.log(l);
102
114
  });
103
115
  };
104
- async function X(t) {
105
- t.resource === "invalid" ? I(5) : (A({ name: t.name, resource: t.resource }), I());
116
+ async function K(t) {
117
+ t.resource === "invalid" ? I(5) : (P({ name: t.name, resource: t.resource }), I());
106
118
  }
107
- function F(t, n) {
119
+ function Q(t, n) {
108
120
  let e = t.concat(n), o = [], c = /* @__PURE__ */ new Set();
109
- return e.forEach((s) => {
110
- c.has(s.resource) || (c.add(s.resource), s.activeValue || o.push(s));
121
+ return e.forEach((l) => {
122
+ c.has(l.resource) || (c.add(l.resource), l.activeValue || o.push(l));
111
123
  }), o;
112
124
  }
113
125
  const I = async (t) => {
114
- let n = ne("Mandatory").value["dct:description"];
126
+ let n = re("Mandatory").value["dct:description"];
115
127
  for (let e = 0; e < n.length; e++)
116
- n[e]["@language"] === "en" && (t != null ? await E(n[e]["@value"], 5) : await E(n[e]["@value"]));
128
+ n[e]["@language"] === "en" && (t != null ? await F(n[e]["@value"], 5) : await F(n[e]["@value"]));
117
129
  };
118
130
  a.context.classes.outer += " autocompleteInput " + a.context.attrs.identifier;
119
- const A = async (t) => {
131
+ const P = async (t) => {
120
132
  if (Object.keys(t).length !== 1) {
121
- if (m.value.length > 0 && (v = m.value), a.context.attrs.multiple)
133
+ if (h.value.length > 0 && (v = h.value), a.context.attrs.multiple)
122
134
  if (v.length != 0) {
123
135
  let n = { name: t.name, resource: t.resource }, e = v.filter((o) => o.name != t.name);
124
- e.push(n), u = e, await a.context.node.input(u);
136
+ e.push(n), d = e, await a.context.node.input(d);
125
137
  } else
126
- v.push({ name: t.name, resource: t.resource }), u = v, await a.context.node.input(u);
138
+ v.push({ name: t.name, resource: t.resource }), d = v, await a.context.node.input(d);
127
139
  else {
128
140
  if (t.resource === "invalid")
129
141
  return;
130
- t === "erase" ? (await a.context.node.input({}), T(t)) : (u = { name: t.name, resource: t.resource }, await a.context.node.input(u));
142
+ t === "erase" ? (await a.context.node.input({}), A(t)) : (d = { name: t.name, resource: t.resource }, await a.context.node.input(d));
131
143
  }
132
- T();
144
+ A();
133
145
  }
134
- }, J = async (t) => {
146
+ }, Y = async (t) => {
135
147
  let n = t.target.value;
136
- await N.dispatch("dpiStore/requestAutocompleteSuggestions", { voc: _, text: n, base: y.api.baseUrl }).then((e) => {
148
+ console.log(E), await R.dispatch("dpiStore/requestAutocompleteSuggestions", { voc: _, text: n, base: x.api.baseUrl }).then((e) => {
137
149
  const o = e.data.result.results.map((c) => ({
138
- name: O(c.pref_label, "en", []) + " (" + c.id + ")",
150
+ name: O(c.pref_label, E.value, []) + " (" + c.id + ")",
139
151
  resource: c.resource
140
152
  }));
141
- o.length === 0 ? b.value = { value: { name: "--- No match found ---" } } : b.value = o;
153
+ o.length === 0 ? w.value = { value: { name: G } } : w.value = o;
142
154
  });
143
155
  };
144
- function z(t) {
145
- a.context.node.input({}), A("erase");
156
+ function Z(t) {
157
+ a.context.node.input({}), P("erase");
146
158
  }
147
- function M(t) {
148
- y.content.dataProviderInterface.annifIntegration && I(), m.value.length > 0 && (v = m.value), v.splice(v.findIndex((n) => n.name == t.name), 1), u = v, a.context.node.input(u), T();
159
+ function W(t) {
160
+ x.content.dataProviderInterface.annifIntegration && I(), h.value.length > 0 && (v = h.value), v.splice(v.findIndex((n) => n.name == t.name), 1), d = v, a.context.node.input(d), A();
149
161
  }
150
- return (t, n) => (r(), i("div", le, [
151
- a.context.attrs.identifier != "licence" ? (r(), i("h4", se, g(a.context.label), 1)) : U("", !0),
152
- p(),
153
- l("div", re, [
154
- l("div", ie, [
155
- !a.context.attrs.multiple && a.context.value.name ? (r(), i("div", ce, [
156
- l("a", ue, g(a.context.value.name), 1),
157
- p(),
158
- l("div", {
162
+ return (t, n) => (r(), i("div", de, [
163
+ u(D) ? (r(), i("h4", fe, p(t.$t("message.dataupload.distributions." + a.context.attrs.identifier + ".label")), 1)) : $("", !0),
164
+ m(),
165
+ a.context.attrs.identifier != "licence" && !u(D) ? (r(), i("h4", pe, p(t.$t("message.dataupload.datasets." + a.context.attrs.identifier + ".label")), 1)) : $("", !0),
166
+ m(),
167
+ s("div", me, [
168
+ s("div", ve, [
169
+ !a.context.attrs.multiple && a.context.value.name ? (r(), i("div", he, [
170
+ s("a", ge, p(a.context.value.name), 1),
171
+ m(),
172
+ s("div", {
159
173
  class: "removeX",
160
- onClick: z
174
+ onClick: Z
161
175
  })
162
- ])) : (r(), i("div", de, [
163
- l("div", fe, [
164
- W(l("input", {
176
+ ])) : (r(), i("div", ye, [
177
+ s("div", xe, [
178
+ X(s("input", {
165
179
  class: "autocompleteInputfield",
166
180
  placeholder: a.context.attrs.placeholder,
167
- "onUpdate:modelValue": n[0] || (n[0] = (e) => P(k) ? k.value = e : k = e),
181
+ "onUpdate:modelValue": n[0] || (n[0] = (e) => N(k) ? k.value = e : k = e),
168
182
  type: "text",
169
- onKeyup: n[1] || (n[1] = (e) => J(e)),
170
- onClick: n[2] || (n[2] = (e) => P(d) ? d.value = !f(d) : d = !f(d))
171
- }, null, 40, pe), [
172
- [Q, f(k)]
183
+ onKeyup: n[1] || (n[1] = (e) => Y(e)),
184
+ onClick: n[2] || (n[2] = (e) => N(f) ? f.value = !u(f) : f = !u(f))
185
+ }, null, 40, _e), [
186
+ [ae, u(k)]
173
187
  ])
174
188
  ]),
175
- p(),
176
- W(l("ul", {
189
+ m(),
190
+ X(s("ul", {
177
191
  ref_key: "dropdownList",
178
- ref: R,
192
+ ref: M,
179
193
  class: "autocompleteResultList"
180
194
  }, [
181
- (r(!0), i(S, null, L(f(b), (e) => (r(), i("li", {
195
+ (r(!0), i(L, null, V(u(w), (e) => (r(), i("li", {
182
196
  key: e,
183
197
  onClick: (o) => {
184
- A(e), P(d) ? d.value = !f(d) : d = !f(d);
198
+ P(e), N(f) ? f.value = !u(f) : f = !u(f);
185
199
  },
186
200
  class: "p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC"
187
- }, g(e.name), 9, ve))), 128))
201
+ }, p(e.name), 9, ke))), 128))
188
202
  ], 512), [
189
- [Z, f(d)]
203
+ [oe, u(f)]
190
204
  ]),
191
- p(),
192
- f(y).content.dataProviderInterface.annifIntegration && a.context.attrs.annifTheme ? (r(), i("div", me, [
193
- (r(!0), i(S, null, L(f(m), (e) => (r(), i("div", { key: e }, [
194
- l("div", he, [
195
- l("div", {
205
+ m(),
206
+ u(x).content.dataProviderInterface.annifIntegration && a.context.attrs.annifTheme ? (r(), i("div", be, [
207
+ (r(!0), i(L, null, V(u(h), (e) => (r(), i("div", { key: e }, [
208
+ s("div", we, [
209
+ s("div", {
196
210
  class: "d-flex",
197
211
  onClick: (o) => {
198
212
  e.activeValue = !e.activeValue;
199
213
  }
200
214
  }, [
201
- l("span", null, g(e.name), 1),
202
- p(),
203
- l("div", {
215
+ s("span", null, p(e.name), 1),
216
+ m(),
217
+ s("div", {
204
218
  class: "removeX",
205
- onClick: (o) => M(e)
206
- }, null, 8, xe)
207
- ], 8, ge)
219
+ onClick: (o) => W(e)
220
+ }, null, 8, Ie)
221
+ ], 8, Ce)
208
222
  ])
209
223
  ]))), 128)),
210
- p(),
211
- l("div", ye, [
212
- l("div", _e, [
213
- l("h3", null, g(a.context.label) + " Suggestions", 1),
214
- p(),
215
- ke,
216
- p(),
217
- l("button", {
224
+ m(),
225
+ s("div", Se, [
226
+ s("div", Le, [
227
+ s("h3", null, p(a.context.label) + " - " + p(t.$t("message.dataupload.info.suggestions")), 1),
228
+ m(),
229
+ s("span", null, p(t.$t("message.dataupload.info.suggestionText")), 1),
230
+ m(),
231
+ s("button", {
218
232
  class: "navlikeButton",
219
233
  type: "button",
220
234
  onClick: n[3] || (n[3] = (e) => {
221
- I(), f(j).value = !0;
235
+ I(), u(q).value = !0;
222
236
  })
223
- }, "Try it")
237
+ }, p(t.$t("message.dataupload.info.tryIt")), 1)
224
238
  ]),
225
- p(),
226
- f(j).value ? (r(), i("div", we, [
227
- (r(!0), i(S, null, L(f(V), (e) => (r(), i("div", {
239
+ m(),
240
+ u(q).value ? (r(), i("div", Ve, [
241
+ (r(!0), i(L, null, V(u(T), (e) => (r(), i("div", {
228
242
  key: e,
229
243
  class: "d-flex"
230
244
  }, [
231
- l("div", {
232
- class: ee(["activeResultsAutocompleteWrapper annifResults", { loadMore: e.resource === "invalid" }]),
245
+ s("div", {
246
+ class: se(["activeResultsAutocompleteWrapper annifResults", { loadMore: e.resource === "invalid" }]),
233
247
  onClick: (o) => {
234
- e.activeValue = !e.activeValue, X(e);
248
+ e.activeValue = !e.activeValue, K(e);
235
249
  }
236
250
  }, [
237
- l("div", Ce, [
238
- l("span", null, g(e.name), 1)
251
+ s("div", Ae, [
252
+ s("span", null, p(e.name), 1)
239
253
  ])
240
- ], 10, be)
254
+ ], 10, Te)
241
255
  ]))), 128))
242
- ])) : U("", !0)
256
+ ])) : $("", !0)
243
257
  ])
244
- ])) : (r(), i("div", Ie, [
245
- (r(!0), i(S, null, L(a.context.value, (e) => (r(), i("div", {
258
+ ])) : (r(), i("div", Pe, [
259
+ (r(!0), i(L, null, V(a.context.value, (e) => (r(), i("div", {
246
260
  class: "activeResultsAutocompleteWrapper",
247
261
  key: e
248
262
  }, [
249
- l("span", null, g(e.name), 1),
250
- p(),
251
- l("div", {
263
+ s("span", null, p(e.name), 1),
264
+ m(),
265
+ s("div", {
252
266
  class: "removeX",
253
- onClick: (o) => M(e)
254
- }, null, 8, Se)
267
+ onClick: (o) => W(e)
268
+ }, null, 8, $e)
255
269
  ]))), 128))
256
270
  ])),
257
- p(),
258
- l("div", Le, [
259
- l("div", Ve, g(a.context.help), 1)
271
+ m(),
272
+ s("div", Ne, [
273
+ s("div", Oe, p(a.context.help), 1)
260
274
  ])
261
275
  ]))
262
276
  ])
@@ -265,6 +279,6 @@ const le = { class: "formkitProperty" }, se = { key: 0 }, re = { class: "formkit
265
279
  }
266
280
  };
267
281
  export {
268
- $e as default
282
+ We as default
269
283
  };
270
284
  //# sourceMappingURL=AutocompleteInput.vue.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/AutocompleteInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n <!-- need to make a condition for the licence property of the distribution - otherwise the dropdown doesnt work-->\n\n <h4 v-if=\"props.context.attrs.identifier != 'licence'\">{{ props.context.label }}</h4>\n <div class=\"formkitCmpWrap\">\n <div class=\"formkit-outer\">\n <div class=\"d-flex formkit-inner\" v-if=\"!props.context.attrs.multiple && props.context.value.name\">\n\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <a class=\"autocompleteInputSingleValue \">{{ props.context.value.name }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n </div>\n <div v-else>\n <div class=\"d-flex align-items-center justify-content-center formkit-inner mb-2\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <input class=\"autocompleteInputfield\" :placeholder=\"props.context.attrs.placeholder\" v-model=\"inputText\"\n type=\"text\" v-on:keyup=\"getAutocompleteSuggestions($event)\" @click=\"activeList = !activeList\">\n </div>\n <ul ref=\"dropdownList\" v-show=\"activeList\" class=\"autocompleteResultList\">\n <li v-for=\"match in matches\" :key=\"match\" @click=\"setValue(match); activeList = !activeList\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{ match.name }}\n </li>\n </ul>\n <div v-if=\"instance.content.dataProviderInterface.annifIntegration && props.context.attrs.annifTheme\"\n class=\"d-flex flex-wrap\">\n <div v-for=\"item in listOfValues\" :key=\"item\">\n <div class=\"activeResultsAutocompleteWrapper\">\n <div class=\"d-flex\" @click=\"item.activeValue = !item.activeValue;\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n </div>\n <div class=\"w-100 mt-4\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h3>{{ props.context.label }} Suggestions</h3>\n <span>You can generate suggestions based on the description you provided</span>\n <button class=\"navlikeButton\" type=\"button\"\n @click=\"fillAnnifsuggestions(); annifTrigger.value = true\">Try it</button>\n </div>\n <div class=\"annifresultContainer\" v-if=\"annifTrigger.value\">\n <div v-for=\"item in annifSelectionList\" :key=\"item\" class=\"d-flex \">\n <div class=\"activeResultsAutocompleteWrapper annifResults\"\n :class=\"{ loadMore: item.resource === 'invalid' }\"\n @click=\"item.activeValue = !item.activeValue; updateAnnifselection(item)\">\n <div class=\"d-flex\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div v-else class=\"d-flex flex-wrap\">\n <div class=\"activeResultsAutocompleteWrapper\" v-for=\"item in props.context.value\" :key=\"item\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n <div class=\"formkit-wrapper\">\n <div class=\"formkit-help\">{{ props.context.help }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, reactive, watch, computed, onBeforeMount, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { onClickOutside } from '@vueuse/core'\n\nimport qs from 'qs';\nimport axios from 'axios';\n\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\n\nconst props = defineProps({\n context: Object\n})\nconst store = useStore();\n\nlet listOfValues = computed(() => {\n return props.context.value;\n})\n\nlet selection;\nlet voc = props.context.attrs.voc;\nlet matches = ref({\n value: { name: '--- Type in anything for a live search of the vocabulary ---' }\n})\nlet activeList = ref()\nlet dropdownList = ref(null)\nlet inputText = ref({})\nlet cacheList = [];\nlet annifList = [];\nlet annifTrigger = ref({\n value: false\n});\nlet initialValues = ref();\nlet annifSelectionList = ref({})\n\nonMounted(async () => {\n inputText.value = \"\"\n});\n\nwatch(matches, async () => { })\nwatch(annifSelectionList, async () => { })\n\nconst requestURIname = async (res) => {\n\n if (res != undefined) {\n let vocMatch =\n voc === \"iana-media-types\" ||\n voc === \"spdx-checksum-algorithm\";\n\n let name;\n\n await store.dispatch('dpiStore/requestResourceName', { voc: voc, uri: res, envs: instance }).then(\n (response) => {\n if (props.context.attrs.property === 'dcatde:politicalGeocodingURI') {\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.alt_label)[0].en\n : getTranslationFor(response.data.result.alt_label, 'en', []);\n name = result;\n }\n } else {\n\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, 'en', []);\n name = result;\n\n }\n }\n }\n );\n return name\n }\n\n}\n\nwatchEffect(async () => {\n const values = listOfValues.value;\n\n // single URI's\n if (values.hasOwnProperty('name')) {\n if (values.name === values.resource) {\n let uriName;\n if (!props.context.attrs.multiple) {\n uriName = requestURIname(values.resource)\n props.context.node.input({ name: await uriName, resource: values.resource })\n\n }\n }\n }\n // multiple URI's\n if (values.length >= 1) {\n let uriNameList = [];\n for (let index = 0; index < values.length; index++) {\n if (values[index].name === values[index].resource) {\n uriNameList.push({ name: await requestURIname(values[index].resource), resource: values[index].resource })\n props.context.node.input(uriNameList)\n }\n }\n }\n});\nfunction findPropertyToUpdate(trigger) {\n\n let finalPath = { step: '', prop: props.context.node.name }\n let pathToLocalStorage = JSON.parse(localStorage.getItem('dpi_datasets'));\n\n for (let index = 0; index < Object.keys(pathToLocalStorage).length; index++) {\n for (let innerIndex = 0; innerIndex < Object.keys(pathToLocalStorage)[index].length; innerIndex++) {\n let ntry = Object.entries((pathToLocalStorage))\n try {\n Object.keys(ntry[index][innerIndex]).filter(e => {\n if (e === props.context.node.name) {\n finalPath.step = ntry[index][0]\n\n if (trigger === 'erase') {\n\n selection = {}\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n if (typeof selection === 'object') {\n\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n else pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n localStorage.setItem('dpi_datasets', JSON.stringify(pathToLocalStorage))\n }\n });\n } catch (error) {\n }\n }\n }\n\n window.removeEventListener(\"click\", onClickOutside);\n}\nonClickOutside(dropdownList, event => activeList.value = false)\nlet annifHandlerTheme = async (input, limit) => {\n\n let finalLimit = 10;\n if (limit != undefined) {\n finalLimit = finalLimit + 10\n }\n\n let query = qs.stringify({\n 'text': input,\n 'limit': finalLimit\n });\n\n\n var config = {\n method: 'post',\n url: voc == \"eurovoc\"\n ? instance.content.dataProviderInterface.annifLinkSubject\n : instance.content.dataProviderInterface.annifLinkTheme,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/json'\n },\n data: query\n };\n\n let list = []\n\n axios(config)\n .then(async (response) => {\n for (let i = 0; i < response.data.results.length; i++) {\n annifList[i] = { \"name\": response.data.results[i].label, \"resource\": response.data.results[i].uri, \"activeValue\": false }\n }\n let annifCacheList = []\n if (listOfValues.value.length > 0) {\n listOfValues.value.forEach(element => {\n annifCacheList.push({ \"name\": element.name, \"resource\": element.resource, \"activeValue\": true })\n });\n }\n if (response.data.results.length > 9) {\n annifList[annifList.length + 1] = { \"name\": \"...\", \"resource\": \"invalid\", \"activeValue\": false }\n }\n\n annifSelectionList.value = eraseDuplicates(annifCacheList, annifList)\n\n })\n .catch(function (error) {\n console.log(error);\n });\n}\nasync function updateAnnifselection(item) {\n\n if (item.resource === 'invalid') {\n fillAnnifsuggestions(5);\n }\n else {\n setValue({ name: item.name, resource: item.resource })\n fillAnnifsuggestions()\n }\n\n\n}\nfunction eraseDuplicates(array1, array2) {\n\n let mergedArray = array1.concat(array2);\n let filteredArray = [];\n let resourceSet = new Set();\n\n mergedArray.forEach(obj => {\n if (!resourceSet.has(obj.resource)) {\n resourceSet.add(obj.resource);\n if (!obj.activeValue) {\n filteredArray.push(obj);\n }\n }\n });\n\n\n return filteredArray;\n}\nconst fillAnnifsuggestions = async (limitChange) => {\n\n let arr = getNode('Mandatory').value['dct:description']\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]['@language'] === 'en') {\n if (limitChange != undefined) {\n await annifHandlerTheme(arr[i]['@value'], 5)\n }\n else await annifHandlerTheme(arr[i]['@value'])\n }\n }\n\n}\n\n// Need to append the classes to the formkit-outer element\nprops.context.classes.outer += ' autocompleteInput ' + props.context.attrs.identifier\n\nconst setValue = async (e) => {\n if (Object.keys(e).length === 1) {\n return\n }\n if (listOfValues.value.length > 0) {\n\n cacheList = listOfValues.value\n }\n\n // when its a multi input\n if (props.context.attrs.multiple) {\n // check for doubled values\n if (cacheList.length != 0) {\n let filteredProperty = { name: e.name, resource: e.resource };\n let filteredList = cacheList.filter((element) => element.name != e.name);\n filteredList.push(filteredProperty)\n selection = filteredList;\n await props.context.node.input(selection);\n\n }\n else {\n cacheList.push({ name: e.name, resource: e.resource })\n selection = cacheList\n await props.context.node.input(selection);\n }\n\n }\n else if (e.resource === \"invalid\") return\n else if (e === \"erase\") { await props.context.node.input({}); findPropertyToUpdate(e) }\n else {\n selection = { name: e.name, resource: e.resource };\n await props.context.node.input(selection);\n }\n findPropertyToUpdate();\n}\n\nconst getAutocompleteSuggestions = async (e) => {\n let innerText = e.target.value\n\n await store.dispatch('dpiStore/requestAutocompleteSuggestions', { voc: voc, text: innerText, base: instance.api.baseUrl }).then((response) => {\n const results = response.data.result.results.map((r) => ({\n name: getTranslationFor(r.pref_label, 'en', []) + \" (\" + r.id + \")\",\n resource: r.resource,\n }));\n if (results.length === 0) {\n matches.value = { value: { name: '--- No match found ---' } }\n }\n else matches.value = results;\n });\n}\n\nfunction removeProperty(e) {\n props.context.node.input({})\n setValue('erase');\n}\nfunction removeMultipleProperty(e) {\n\n if (instance.content.dataProviderInterface.annifIntegration) {\n fillAnnifsuggestions()\n }\n if (listOfValues.value.length > 0) {\n cacheList = listOfValues.value\n }\n // Get Index in the array where all values of the Span are stored and cut it out of the list of Values\n cacheList.splice(cacheList.findIndex((element) => element.name == e.name), 1)\n selection = cacheList;\n props.context.node.input(selection);\n findPropertyToUpdate();\n}\n</script>"],"names":["instance","getCurrentInstance","props","__props","store","useStore","listOfValues","computed","selection","voc","matches","ref","activeList","dropdownList","inputText","cacheList","annifList","annifTrigger","annifSelectionList","onMounted","watch","requestURIname","res","vocMatch","name","response","dataset","getTranslationFor","watchEffect","values","uriName","uriNameList","index","findPropertyToUpdate","trigger","finalPath","pathToLocalStorage","innerIndex","ntry","e","onClickOutside","event","annifHandlerTheme","input","limit","finalLimit","query","qs","config","axios","i","annifCacheList","element","eraseDuplicates","error","updateAnnifselection","item","fillAnnifsuggestions","setValue","array1","array2","mergedArray","filteredArray","resourceSet","obj","limitChange","arr","getNode","filteredProperty","filteredList","getAutocompleteSuggestions","innerText","results","r","removeProperty","removeMultipleProperty"],"mappings":"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"}
1
+ {"version":3,"file":"AutocompleteInput.vue.mjs","sources":["../../../lib/data-provider-interface/components/AutocompleteInput.vue"],"sourcesContent":["<template>\n <div class=\"formkitProperty\">\n\n <!-- need to make a condition for the licence property of the distribution - otherwise the dropdown doesnt work-->\n\n <h4 class=\"formkitHeader\" v-if=\"inDis\">\n {{ $t('message.dataupload.distributions.' + props.context.attrs.identifier + '.label') }}\n </h4>\n <h4 v-if=\"props.context.attrs.identifier != 'licence' && !inDis\">{{ $t('message.dataupload.datasets.' +\n props.context.attrs.identifier + '.label') }}</h4>\n\n <div class=\"formkitCmpWrap\">\n\n <div class=\"formkit-outer\">\n <div class=\"d-flex formkit-inner\" v-if=\"!props.context.attrs.multiple && props.context.value.name\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <a class=\"autocompleteInputSingleValue \">{{ props.context.value.name }}</a>\n <div class=\"removeX\" @click=\"removeProperty\"></div>\n </div>\n <div v-else>\n <div class=\"d-flex align-items-center justify-content-center formkit-inner mb-2\">\n <!-- <div class=\"infoI\">\n <div class=\"tooltipFormkit\">{{ props.context.attrs.info }}</div>\n </div> -->\n <input class=\"autocompleteInputfield\" :placeholder=\"props.context.attrs.placeholder\" v-model=\"inputText\"\n type=\"text\" v-on:keyup=\"getAutocompleteSuggestions($event)\" @click=\"activeList = !activeList\">\n </div>\n <ul ref=\"dropdownList\" v-show=\"activeList\" class=\"autocompleteResultList\">\n <li v-for=\"match in matches\" :key=\"match\" @click=\"setValue(match); activeList = !activeList\"\n class=\"p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC\">{{ match.name }}\n </li>\n </ul>\n <div v-if=\"instance.content.dataProviderInterface.annifIntegration && props.context.attrs.annifTheme\"\n class=\"d-flex flex-wrap\">\n <div v-for=\"item in listOfValues\" :key=\"item\">\n <div class=\"activeResultsAutocompleteWrapper\">\n <div class=\"d-flex\" @click=\"item.activeValue = !item.activeValue;\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n </div>\n <div class=\"w-100 mt-4\">\n <div class=\"d-flex justify-content-between align-items-center flex-wrap\">\n <h3>{{ props.context.label }} - {{ $t('message.dataupload.info.suggestions') }}</h3>\n <span>{{ $t('message.dataupload.info.suggestionText') }}</span>\n <button class=\"navlikeButton\" type=\"button\"\n @click=\"fillAnnifsuggestions(); annifTrigger.value = true\">{{ $t('message.dataupload.info.tryIt')\n }}</button>\n </div>\n <div class=\"annifresultContainer\" v-if=\"annifTrigger.value\">\n <div v-for=\"item in annifSelectionList\" :key=\"item\" class=\"d-flex \">\n <div class=\"activeResultsAutocompleteWrapper annifResults\"\n :class=\"{ loadMore: item.resource === 'invalid' }\"\n @click=\"item.activeValue = !item.activeValue; updateAnnifselection(item)\">\n <div class=\"d-flex\">\n <span>{{ item.name }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n <div v-else class=\"d-flex flex-wrap\">\n <div class=\"activeResultsAutocompleteWrapper\" v-for=\"item in props.context.value\" :key=\"item\">\n <span>{{ item.name }}</span>\n <div class=\"removeX\" @click=\"removeMultipleProperty(item)\"></div>\n </div>\n </div>\n <div class=\"formkit-wrapper\">\n <div class=\"formkit-help\">{{ props.context.help }}</div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script setup>\nimport { ref, watch, computed, onMounted, watchEffect } from 'vue';\nimport { useStore } from 'vuex';\nimport { getTranslationFor } from \"../../utils/helpers\";\nimport { getCurrentInstance } from \"vue\";\nimport { getNode } from '@formkit/core'\nimport { onClickOutside } from '@vueuse/core'\nimport { useI18n } from 'vue-i18n';\n\nimport qs from 'qs';\nimport axios from 'axios';\n\nlet instance = getCurrentInstance().appContext.app.config.globalProperties.$env\n\nconst props = defineProps({\n context: Object\n})\nconst store = useStore();\nconst { t,locale } = useI18n();\n\nlet listOfValues = computed(() => {\n return props.context.value;\n})\n\nlet selection;\nlet voc = props.context.attrs.voc;\n\nlet matchesSearchstring = computed(() => {\n return t('message.dataupload.info.searchVocabulary')\n})\nlet matchesNothingFound = computed(() => {\n return t('message.dataupload.info.matchesNothingFound')\n})\nlet matches = ref({\n value: { name: matchesSearchstring }\n})\nlet activeList = ref()\nlet dropdownList = ref(null)\nlet inputText = ref({})\nlet cacheList = [];\nlet annifList = [];\nlet annifTrigger = ref({\n value: false\n});\nlet initialValues = ref();\nlet annifSelectionList = ref({})\n\nonMounted(async () => {\n inputText.value = \"\"\n});\nlet inDis = computed(() => {\n try {\n if (props.context.attrs.class.includes(\"inDistribution\")) {\n return true\n }\n } catch (error) {\n\n }\n\n\n});\nwatch(matches, async () => { })\nwatch(annifSelectionList, async () => { })\n\nconst requestURIname = async (res) => {\n\n if (res != undefined) {\n let vocMatch =\n voc === \"iana-media-types\" ||\n voc === \"spdx-checksum-algorithm\";\n\n let name;\n\n await store.dispatch('dpiStore/requestResourceName', { voc: voc, uri: res, envs: instance }).then(\n (response) => {\n if (props.context.attrs.property === 'dcatde:politicalGeocodingURI') {\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.alt_label)[0].en\n : getTranslationFor(response.data.result.alt_label, 'en', []);\n name = result;\n }\n } else {\n\n if (response != undefined) {\n let result = vocMatch\n ? response.data.result.results\n .filter((dataset) => dataset.resource === res)\n .map((dataset) => dataset.pref_label)[0].en\n : getTranslationFor(response.data.result.pref_label, 'en', []);\n name = result;\n\n }\n }\n }\n );\n return name\n }\n\n}\n\nwatchEffect(async () => {\n const values = listOfValues.value;\n\n // single URI's\n if (values.hasOwnProperty('name')) {\n if (values.name === values.resource) {\n let uriName;\n if (!props.context.attrs.multiple) {\n uriName = requestURIname(values.resource)\n props.context.node.input({ name: await uriName, resource: values.resource })\n\n }\n }\n }\n // multiple URI's\n if (values.length >= 1) {\n let uriNameList = [];\n for (let index = 0; index < values.length; index++) {\n if (values[index].name === values[index].resource) {\n uriNameList.push({ name: await requestURIname(values[index].resource), resource: values[index].resource })\n props.context.node.input(uriNameList)\n }\n }\n }\n});\nfunction findPropertyToUpdate(trigger) {\n\n let finalPath = { step: '', prop: props.context.node.name }\n let pathToLocalStorage = JSON.parse(localStorage.getItem('dpi_datasets'));\n\n for (let index = 0; index < Object.keys(pathToLocalStorage).length; index++) {\n for (let innerIndex = 0; innerIndex < Object.keys(pathToLocalStorage)[index].length; innerIndex++) {\n let ntry = Object.entries((pathToLocalStorage))\n try {\n Object.keys(ntry[index][innerIndex]).filter(e => {\n if (e === props.context.node.name) {\n finalPath.step = ntry[index][0]\n\n if (trigger === 'erase') {\n\n selection = {}\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n if (typeof selection === 'object') {\n\n pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n }\n else pathToLocalStorage[finalPath.step][finalPath.prop] = selection\n localStorage.setItem('dpi_datasets', JSON.stringify(pathToLocalStorage))\n }\n });\n } catch (error) {\n }\n }\n }\n\n window.removeEventListener(\"click\", onClickOutside);\n}\nonClickOutside(dropdownList, event => activeList.value = false)\nlet annifHandlerTheme = async (input, limit) => {\n\n let finalLimit = 10;\n if (limit != undefined) {\n finalLimit = finalLimit + 10\n }\n\n let query = qs.stringify({\n 'text': input,\n 'limit': finalLimit\n });\n\n\n var config = {\n method: 'post',\n url: voc == \"eurovoc\"\n ? instance.content.dataProviderInterface.annifLinkSubject\n : instance.content.dataProviderInterface.annifLinkTheme,\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n 'Accept': 'application/json'\n },\n data: query\n };\n\n let list = []\n\n axios(config)\n .then(async (response) => {\n \n for (let i = 0; i < response.data.results.length; i++) {\n \n \n annifList[i] = { \"name\": response.data.results[i].label, \"resource\": response.data.results[i].uri, \"activeValue\": false }\n }\n let annifCacheList = []\n if (listOfValues.value.length > 0) {\n listOfValues.value.forEach(element => {\n annifCacheList.push({ \"name\": element.name, \"resource\": element.resource, \"activeValue\": true })\n });\n }\n if (response.data.results.length > 9) {\n annifList[annifList.length + 1] = { \"name\": \"...\", \"resource\": \"invalid\", \"activeValue\": false }\n }\n\n annifSelectionList.value = eraseDuplicates(annifCacheList, annifList)\n\n })\n .catch(function (error) {\n console.log(error);\n });\n}\nasync function updateAnnifselection(item) {\n\n if (item.resource === 'invalid') {\n fillAnnifsuggestions(5);\n }\n else {\n setValue({ name: item.name, resource: item.resource })\n fillAnnifsuggestions()\n }\n}\nfunction eraseDuplicates(array1, array2) {\n\n let mergedArray = array1.concat(array2);\n let filteredArray = [];\n let resourceSet = new Set();\n\n mergedArray.forEach(obj => {\n if (!resourceSet.has(obj.resource)) {\n resourceSet.add(obj.resource);\n if (!obj.activeValue) {\n filteredArray.push(obj);\n }\n }\n });\n\n\n return filteredArray;\n}\nconst fillAnnifsuggestions = async (limitChange) => {\n\n let arr = getNode('Mandatory').value['dct:description']\n for (let i = 0; i < arr.length; i++) {\n if (arr[i]['@language'] === 'en') {\n if (limitChange != undefined) {\n await annifHandlerTheme(arr[i]['@value'], 5)\n }\n else await annifHandlerTheme(arr[i]['@value'])\n }\n }\n\n}\n\n// Need to append the classes to the formkit-outer element\nprops.context.classes.outer += ' autocompleteInput ' + props.context.attrs.identifier\n\nconst setValue = async (e) => {\n if (Object.keys(e).length === 1) {\n return\n }\n if (listOfValues.value.length > 0) {\n\n cacheList = listOfValues.value\n }\n\n // when its a multi input\n if (props.context.attrs.multiple) {\n // check for doubled values\n if (cacheList.length != 0) {\n let filteredProperty = { name: e.name, resource: e.resource };\n let filteredList = cacheList.filter((element) => element.name != e.name);\n filteredList.push(filteredProperty)\n selection = filteredList;\n await props.context.node.input(selection);\n\n }\n else {\n cacheList.push({ name: e.name, resource: e.resource })\n selection = cacheList\n await props.context.node.input(selection);\n }\n\n }\n else if (e.resource === \"invalid\") return\n else if (e === \"erase\") { await props.context.node.input({}); findPropertyToUpdate(e) }\n else {\n selection = { name: e.name, resource: e.resource };\n await props.context.node.input(selection);\n }\n findPropertyToUpdate();\n}\n\nconst getAutocompleteSuggestions = async (e) => {\n let innerText = e.target.value\nconsole.log(locale);\n\n\n await store.dispatch('dpiStore/requestAutocompleteSuggestions', { voc: voc, text: innerText, base: instance.api.baseUrl }).then((response) => {\n const results = response.data.result.results.map((r) => ({\n name: getTranslationFor(r.pref_label, locale.value, []) + \" (\" + r.id + \")\",\n resource: r.resource,\n }));\n if (results.length === 0) {\n matches.value = { value: { name: matchesNothingFound } }\n }\n else matches.value = results;\n });\n}\n\nfunction removeProperty(e) {\n props.context.node.input({})\n setValue('erase');\n}\nfunction removeMultipleProperty(e) {\n\n if (instance.content.dataProviderInterface.annifIntegration) {\n fillAnnifsuggestions()\n }\n if (listOfValues.value.length > 0) {\n cacheList = listOfValues.value\n }\n // Get Index in the array where all values of the Span are stored and cut it out of the list of Values\n cacheList.splice(cacheList.findIndex((element) => element.name == e.name), 1)\n selection = cacheList;\n props.context.node.input(selection);\n findPropertyToUpdate();\n}\n</script>"],"names":["instance","getCurrentInstance","props","__props","store","useStore","t","locale","useI18n","listOfValues","computed","selection","voc","matchesSearchstring","matchesNothingFound","matches","ref","activeList","dropdownList","inputText","cacheList","annifList","annifTrigger","annifSelectionList","onMounted","inDis","watch","requestURIname","res","vocMatch","name","response","dataset","getTranslationFor","watchEffect","values","uriName","uriNameList","index","findPropertyToUpdate","trigger","finalPath","pathToLocalStorage","innerIndex","ntry","e","onClickOutside","event","annifHandlerTheme","input","limit","finalLimit","query","qs","config","axios","i","annifCacheList","element","eraseDuplicates","error","updateAnnifselection","item","fillAnnifsuggestions","setValue","array1","array2","mergedArray","filteredArray","resourceSet","obj","limitChange","arr","getNode","filteredProperty","filteredList","getAutocompleteSuggestions","innerText","results","r","removeProperty","removeMultipleProperty"],"mappings":"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"}