@piveau/piveau-hub-ui-modules 4.4.28 → 4.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.
Files changed (71) hide show
  1. package/dist/configurations/configureComponents.mjs +20 -18
  2. package/dist/configurations/configureComponents.mjs.map +1 -1
  3. package/dist/data-provider-interface/DataProviderInterface.vue.d.ts +378 -20
  4. package/dist/data-provider-interface/DataProviderInterface.vue.mjs.map +1 -1
  5. package/dist/data-provider-interface/DataProviderInterface.vue2.mjs +36 -25
  6. package/dist/data-provider-interface/DataProviderInterface.vue2.mjs.map +1 -1
  7. package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs +92 -89
  8. package/dist/data-provider-interface/components/AutocompleteInput.vue.mjs.map +1 -1
  9. package/dist/data-provider-interface/components/ConditionalInput.vue.mjs +104 -107
  10. package/dist/data-provider-interface/components/ConditionalInput.vue.mjs.map +1 -1
  11. package/dist/data-provider-interface/components/SpatialInput.vue.mjs +190 -148
  12. package/dist/data-provider-interface/components/SpatialInput.vue.mjs.map +1 -1
  13. package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs +19 -8
  14. package/dist/data-provider-interface/components/UniqueIdentifierInput.vue.mjs.map +1 -1
  15. package/dist/data-provider-interface/composables/aucotomplete.d.ts +27 -0
  16. package/dist/data-provider-interface/composables/aucotomplete.mjs +52 -0
  17. package/dist/data-provider-interface/composables/aucotomplete.mjs.map +1 -0
  18. package/dist/data-provider-interface/composables/index.d.ts +4 -0
  19. package/dist/data-provider-interface/composables/useDpiContext.mjs +7 -9
  20. package/dist/data-provider-interface/composables/useDpiContext.mjs.map +1 -1
  21. package/dist/data-provider-interface/composables/useRequestUriName.d.ts +18 -0
  22. package/dist/data-provider-interface/composables/useRequestUriName.mjs +59 -0
  23. package/dist/data-provider-interface/composables/useRequestUriName.mjs.map +1 -0
  24. package/dist/data-provider-interface/config/dcatapde/vocab-prefixes.mjs +1 -1
  25. package/dist/data-provider-interface/config/dcatapde/vocab-prefixes.mjs.map +1 -1
  26. package/dist/data-provider-interface/index.mjs +10 -6
  27. package/dist/data-provider-interface/index.mjs.map +1 -1
  28. package/dist/data-provider-interface/store/dpiStore.d.ts +0 -26
  29. package/dist/data-provider-interface/store/dpiStore.mjs +12 -14
  30. package/dist/data-provider-interface/store/dpiStore.mjs.map +1 -1
  31. package/dist/data-provider-interface/views/InputPage.vue.d.ts +368 -20
  32. package/dist/data-provider-interface/views/InputPage.vue.mjs +125 -107
  33. package/dist/data-provider-interface/views/InputPage.vue.mjs.map +1 -1
  34. package/dist/data-provider-interface/views/OverviewPage/CatalogueOverview.vue.d.ts +16 -6
  35. package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.d.ts +32 -14
  36. package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.mjs +27 -31
  37. package/dist/data-provider-interface/views/OverviewPage/DatasetOverview.vue.mjs.map +1 -1
  38. package/dist/data-provider-interface/views/OverviewPage/DistributionOverview.vue.d.ts +16 -6
  39. package/dist/data-provider-interface/views/OverviewPage/Properties/SpecialProp.vue.d.ts +8 -3
  40. package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.d.ts +8 -3
  41. package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.mjs +57 -47
  42. package/dist/data-provider-interface/views/OverviewPage/Properties/URIProp.vue.mjs.map +1 -1
  43. package/dist/data-provider-interface/views/OverviewPage/PropertyEntry.vue.d.ts +16 -6
  44. package/dist/data-provider-interface/views/OverviewPage.vue.d.ts +367 -20
  45. package/dist/data-provider-interface/views/OverviewPage.vue.mjs +66 -58
  46. package/dist/data-provider-interface/views/OverviewPage.vue.mjs.map +1 -1
  47. package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs +50 -36
  48. package/dist/datasetDetails/DatasetDetailsDataset.vue.mjs.map +1 -1
  49. package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs +4 -4
  50. package/dist/datasetDetails/DatasetDetailsDataset.vue2.mjs.map +1 -1
  51. package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.d.ts +3 -3
  52. package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.mjs +3 -3
  53. package/dist/datasetDetails/features/DatasetDetailsFeatures.vue.mjs.map +1 -1
  54. package/dist/datasetDetails/features/DatasetDetailsIsUsedBy.vue.mjs +18 -18
  55. package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs +58 -50
  56. package/dist/datasetDetails/properties/DatasetDetailsProperties.vue.mjs.map +1 -1
  57. package/dist/external/@vueuse/core/index +3 -2
  58. package/dist/external/@vueuse/shared/index +86 -72
  59. package/dist/external/@vueuse/shared/index.map +1 -1
  60. package/dist/form/Repeatable.vue.d.ts +11 -10
  61. package/dist/form/Repeatable.vue.mjs +5 -62
  62. package/dist/form/Repeatable.vue.mjs.map +1 -1
  63. package/dist/form/Repeatable.vue2.mjs +72 -2
  64. package/dist/form/Repeatable.vue2.mjs.map +1 -1
  65. package/dist/form/Repeatable.vue3.mjs +5 -0
  66. package/dist/form/Repeatable.vue3.mjs.map +1 -0
  67. package/dist/piveau-hub-ui-modules.css +1 -1
  68. package/package.json +1 -1
  69. package/dist/data-provider-interface/store/modules/autocompleteStore.d.ts +0 -27
  70. package/dist/data-provider-interface/store/modules/autocompleteStore.mjs +0 -54
  71. package/dist/data-provider-interface/store/modules/autocompleteStore.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DataProviderInterface.vue.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n <!-- CONTENT -->\n <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n </router-view>\n </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\n\n\n\nexport default defineComponent({\n name: 'DataProviderInterface',\n components: {\n InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n },\n props: {\n name: {\n type: String,\n default: '',\n },\n dpiContext: {\n type: Object as PropType<DpiContext>,\n default: () => undefined,\n }\n },\n metaInfo() {\n return {\n title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n meta: [\n { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n { name: 'robots', content: 'noindex, follow' },\n ],\n };\n },\n data() {\n return {\n property: this.$route.params.property,\n id: this.$route.params.id,\n };\n },\n computed: {\n ...mapGetters('auth', [\n 'getIsEditMode',\n ]),\n mode() {\n return this.property === 'catalogues'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editCatalogue')\n : this.$t('message.dataupload.createNewCatalogue')\n : this.property === 'datasets'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editDataset')\n : this.$t('message.dataupload.createNewDataset')\n : 'Edit Distribution';\n },\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n ...mapActions('auth', [\n 'populateDraftAndEdit',\n ]),\n getClearPath() {\n return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n },\n handleScroll() {\n try {\n if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n }\n else {\n document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n }\n } catch (error) {\n \n }\n }\n\n },\n created() {\n window.addEventListener('scroll', this.handleScroll);\n this.populateDraftAndEdit();\n },\n mounted() {\n this.saveLocalstorageValues(this.property);\n },\n unmounted() {\n window.removeEventListener('scroll', this.handleScroll);\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n const env = useRuntimeEnv()\n const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n const fallbackSpec = dpiSpecs[userSpec]\n const dpiContext = toRef(props, 'dpiContext')\n\n const resolvedDpiContext = computed<DpiContext>(() => {\n const _dpiContext = toValue(dpiContext)\n\n return {\n specification: fallbackSpec,\n specificationName: userSpec,\n edit: {\n enabled: route.query.edit === 'true',\n id: route.query.id as string || undefined,\n fromDraft: route.query.fromDraft === 'true',\n },\n ..._dpiContext\n }\n })\n\n const specification = computed(() => {\n return resolvedDpiContext.value.specification\n })\n\n const specificationName = computed(() => {\n return resolvedDpiContext.value.specificationName\n })\n\n setupDpiContext(resolvedDpiContext)\n\n watchEffect(() => {\n store.dispatch('dpiStore/setSpecification', specification.value)\n store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n })\n\n const key = computed(() => {\n return `${route.query.key}@${specificationName.value}`\n })\n\n const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n return {\n resolvedDpiContext,\n key,\n isReady,\n }\n\n }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n position: sticky;\n top: 0;\n background: #ffffff;\n z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n margin: 1vh 0;\n display: flex;\n align-items: center;\n}\n\n.stickyStepper .stickyNav {\n border-left: 1px solid black;\n margin-left: 1vh;\n padding-left: 1vh;\n}\n\n#stepper {\n width: 100% !important;\n}\n\n#input {\n padding: 10px;\n}\n\n.small-headline {\n font-size: 1.5rem;\n min-width: max-content;\n}\n\n.property {\n margin: 20px;\n background-color: #ffffff;\n border: solid 0.5px rgb(225, 225, 225);\n margin-top: 30px;\n}\n\n.infoBox .material-icons {\n font-size: 20px;\n vertical-align: text-bottom;\n margin-right: 5px;\n margin-bottom: 1px;\n}\n\n.infoBox {\n width: 100%;\n height: 30%;\n background-color: #f7f7f7;\n padding: 5%;\n border-radius: 0.25rem;\n margin-top: 20px;\n\n .input_subpage_nav {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 15px;\n }\n}\n\n.besides {\n .formkit-input-group-repeatable {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n padding: 0px;\n }\n}\n\n.main {\n width: 75%;\n margin: 0 5px 0 5px;\n}\n\n.sub {\n width: 20%;\n margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n position: sticky;\n top: 154px;\n z-index: 10;\n width: 100%;\n padding: 0 10%;\n\n .step-progress__bar {\n border-top: none !important;\n }\n\n .step-progress__step--active {\n .step-progress__step-label {\n background-color: lightsteelblue !important;\n }\n\n }\n}\n\n.step-progress__step span{\n \n color:white !important;\n \n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n// .step-progress__step {\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// height: 70%;\n// width: 20%;\n// display: flex;\n// align-items: center;\n// z-index: 1;\n\n\n// span {\n// color: grey;\n// font-size: 18px;\n// display: none;\n// }\n\n// div {\n// padding: 1rem;\n// height: 100%;\n// display: flex;\n// align-items: center;\n// color: white;\n// font-weight: 300;\n\n// }\n\n// .step-progress__step-label {\n\n// background: lightgrey;\n// background-size: 400% 400%;\n// background-position: 100% 0%;\n// transition: all 300ms ease-in-out;\n// border-right: 1px white solid;\n// font-size: 14px;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n\n\n// }\n\n\n// .step-progress__step-label:hover {\n// background-position: 65% 0%;\n// color: black;\n\n// }\n\n// }\n\n// .step-progress__step--active {\n\n// z-index: 7 !important;\n\n\n// span {\n// color: black;\n// }\n\n// div {\n// background: white;\n// }\n\n// .step-progress__step-label {\n// background: rgb(236, 236, 236);\n// background-position: 50% 0%;\n// box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n// transform: scale(1.1);\n// z-index: 8;\n// font-size: 16px;\n// }\n\n// }\n\n// .step-progress__step--valid {\n// div {\n// color: white;\n\n// }\n\n// .step-progress__step-label {\n// background: rgba(0, 235, 0, 0.2);\n// color: lightslategrey;\n\n\n// }\n\n// .step-progress__step-label:hover {\n// color: black;\n// }\n// }\n\n// .step-progress__step--active .step-progress__step-label {\n// color: rgb(31, 31, 31);\n// }\n\n// .step-progress__wrapper-after {\n// display: none;\n// }\n\n// .step-progress__step-icon {\n// display: none !important;\n// }\n\n// .step-progress__bar {\n// margin: 0;\n// height: 5rem;\n// border-top: 1px solid lightslategray;\n\n// }\n\n// .step-progress__step-label {\n// position: unset;\n// transform: unset;\n// flex-grow: 1;\n// }\n\n// .step-progress__step {}\n\n// .step-progress__wrapper-before {\n// display: none !important;\n// }\n\n// #stepper .step-progress__step::after {\n// display: none !important;\n// }\n// }\n#stepper .step-progress__step{\n border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n font-size: 25px;\n}\n.step-progress__step-label{\n cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n border: none;\n padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n font-weight: 400;\n}\n\n.formkit-input-error {\n color: #e13737 !important;\n font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n &-input {\n .formkit {\n &-input {\n &-element {\n max-width: 100%;\n }\n\n &-error {\n font-weight: bold;\n }\n }\n }\n }\n\n .formkit-input-group-add-more {\n display: flex;\n justify-content: flex-end;\n\n button {\n border: black;\n }\n }\n\n .formkit-input {\n &[data-classification=\"text\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n &[data-classification=\"select\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n }\n\n .formkit-input[data-classification=\"button\"] {\n button {\n &[data-ghost] {\n color: white;\n background-color: #001d85;\n border-color: #001d85;\n border-radius: 1.875rem;\n\n &:hover {\n background-color: #196fd2;\n border-color: #196fd2;\n }\n }\n }\n }\n}\n\n.formkit-input.besides {\n border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n &--textarea {\n width: 100%;\n }\n}\n\n.formkit-input-element--group {\n display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n// .step-progress__step::after {\n// display: none;\n// }\n\n// .step-progress__step-label {\n// cursor: pointer;\n// }\n// }\n</style>\n"],"names":["_resolveComponent","property","_createElementBlock","isReady","_ctx","_openBlock","_createBlock","_component_router_view","_createCommentVNode"],"mappings":";;;;;YACEA,EAIM,aAAA;SAJmHC,EAAQ,GAAAC,EAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IAE5GC,KAAAA,EAAAA;AAAAA,EAAAA,GAAAA;AAAAA,IAASC,EAAA,WAAAC,KAAoBC,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA,MAHpD,KAAAH,EAAA;AAAA,IAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA;;;"}
1
+ {"version":3,"file":"DataProviderInterface.vue.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n <!-- CONTENT -->\n <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n </router-view>\n </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , provide, ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\nimport { AutocompleteInstance, autocompleteKey, defaultAutocompleteAdapter, useAutocomplete } from './composables/aucotomplete';\n\n\n\nexport default defineComponent({\n name: 'DataProviderInterface',\n components: {\n InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n },\n props: {\n name: {\n type: String,\n default: '',\n },\n dpiContext: {\n type: Object as PropType<DpiContext>,\n default: () => undefined,\n },\n autocomplete: {\n type: Object as PropType<AutocompleteInstance>,\n default: () => undefined,\n }\n },\n metaInfo() {\n return {\n title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n meta: [\n { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n { name: 'robots', content: 'noindex, follow' },\n ],\n };\n },\n data() {\n return {\n property: this.$route.params.property,\n id: this.$route.params.id,\n };\n },\n computed: {\n ...mapGetters('auth', [\n 'getIsEditMode',\n ]),\n mode() {\n return this.property === 'catalogues'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editCatalogue')\n : this.$t('message.dataupload.createNewCatalogue')\n : this.property === 'datasets'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editDataset')\n : this.$t('message.dataupload.createNewDataset')\n : 'Edit Distribution';\n },\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n ...mapActions('auth', [\n 'populateDraftAndEdit',\n ]),\n getClearPath() {\n return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n },\n handleScroll() {\n try {\n if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n }\n else {\n document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n }\n } catch (error) {\n \n }\n }\n\n },\n created() {\n window.addEventListener('scroll', this.handleScroll);\n this.populateDraftAndEdit();\n },\n mounted() {\n this.saveLocalstorageValues(this.property);\n },\n unmounted() {\n window.removeEventListener('scroll', this.handleScroll);\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n const env = useRuntimeEnv()\n const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n const fallbackSpec = dpiSpecs[userSpec]\n const dpiContext = toRef(props, 'dpiContext')\n\n const resolvedDpiContext = computed<DpiContext>(() => {\n const _dpiContext = toValue(dpiContext)\n\n return {\n specification: fallbackSpec,\n specificationName: userSpec,\n edit: {\n enabled: route.query.edit === 'true',\n id: route.query.id as string || undefined,\n fromDraft: route.query.fromDraft === 'true',\n },\n ..._dpiContext\n }\n })\n\n const specification = computed(() => {\n return resolvedDpiContext.value.specification\n })\n\n const specificationName = computed(() => {\n return resolvedDpiContext.value.specificationName\n })\n\n setupDpiContext(resolvedDpiContext)\n const defaultAutocompleteInstance = defaultAutocompleteAdapter({\n envs: env,\n dpiContext: resolvedDpiContext\n });\n provide(autocompleteKey, props.autocomplete || defaultAutocompleteInstance.adapter);\n\n watchEffect(() => {\n store.dispatch('dpiStore/setSpecification', specification.value)\n store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n })\n\n const key = computed(() => {\n return `${route.query.key}@${specificationName.value}`\n })\n\n const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n return {\n resolvedDpiContext,\n key,\n isReady,\n }\n\n }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n position: sticky;\n top: 0;\n background: #ffffff;\n z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n margin: 1vh 0;\n display: flex;\n align-items: center;\n}\n\n.stickyStepper .stickyNav {\n border-left: 1px solid black;\n margin-left: 1vh;\n padding-left: 1vh;\n}\n\n#stepper {\n width: 100% !important;\n}\n\n#input {\n padding: 10px;\n}\n\n.small-headline {\n font-size: 1.5rem;\n min-width: max-content;\n}\n\n.property {\n margin: 20px;\n background-color: #ffffff;\n border: solid 0.5px rgb(225, 225, 225);\n margin-top: 30px;\n}\n\n.infoBox .material-icons {\n font-size: 20px;\n vertical-align: text-bottom;\n margin-right: 5px;\n margin-bottom: 1px;\n}\n\n.infoBox {\n width: 100%;\n height: 30%;\n background-color: #f7f7f7;\n padding: 5%;\n border-radius: 0.25rem;\n margin-top: 20px;\n\n .input_subpage_nav {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 15px;\n }\n}\n\n.besides {\n .formkit-input-group-repeatable {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n padding: 0px;\n }\n}\n\n.main {\n width: 75%;\n margin: 0 5px 0 5px;\n}\n\n.sub {\n width: 20%;\n margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n position: sticky;\n top: 154px;\n z-index: 10;\n width: 100%;\n padding: 0 10%;\n\n .step-progress__bar {\n border-top: none !important;\n }\n\n .step-progress__step--active {\n .step-progress__step-label {\n background-color: lightsteelblue !important;\n }\n\n }\n}\n\n.step-progress__step span{\n \n color:white !important;\n \n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n// .step-progress__step {\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// height: 70%;\n// width: 20%;\n// display: flex;\n// align-items: center;\n// z-index: 1;\n\n\n// span {\n// color: grey;\n// font-size: 18px;\n// display: none;\n// }\n\n// div {\n// padding: 1rem;\n// height: 100%;\n// display: flex;\n// align-items: center;\n// color: white;\n// font-weight: 300;\n\n// }\n\n// .step-progress__step-label {\n\n// background: lightgrey;\n// background-size: 400% 400%;\n// background-position: 100% 0%;\n// transition: all 300ms ease-in-out;\n// border-right: 1px white solid;\n// font-size: 14px;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n\n\n// }\n\n\n// .step-progress__step-label:hover {\n// background-position: 65% 0%;\n// color: black;\n\n// }\n\n// }\n\n// .step-progress__step--active {\n\n// z-index: 7 !important;\n\n\n// span {\n// color: black;\n// }\n\n// div {\n// background: white;\n// }\n\n// .step-progress__step-label {\n// background: rgb(236, 236, 236);\n// background-position: 50% 0%;\n// box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n// transform: scale(1.1);\n// z-index: 8;\n// font-size: 16px;\n// }\n\n// }\n\n// .step-progress__step--valid {\n// div {\n// color: white;\n\n// }\n\n// .step-progress__step-label {\n// background: rgba(0, 235, 0, 0.2);\n// color: lightslategrey;\n\n\n// }\n\n// .step-progress__step-label:hover {\n// color: black;\n// }\n// }\n\n// .step-progress__step--active .step-progress__step-label {\n// color: rgb(31, 31, 31);\n// }\n\n// .step-progress__wrapper-after {\n// display: none;\n// }\n\n// .step-progress__step-icon {\n// display: none !important;\n// }\n\n// .step-progress__bar {\n// margin: 0;\n// height: 5rem;\n// border-top: 1px solid lightslategray;\n\n// }\n\n// .step-progress__step-label {\n// position: unset;\n// transform: unset;\n// flex-grow: 1;\n// }\n\n// .step-progress__step {}\n\n// .step-progress__wrapper-before {\n// display: none !important;\n// }\n\n// #stepper .step-progress__step::after {\n// display: none !important;\n// }\n// }\n#stepper .step-progress__step{\n border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n font-size: 25px;\n}\n.step-progress__step-label{\n cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n border: none;\n padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n font-weight: 400;\n}\n\n.formkit-input-error {\n color: #e13737 !important;\n font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n &-input {\n .formkit {\n &-input {\n &-element {\n max-width: 100%;\n }\n\n &-error {\n font-weight: bold;\n }\n }\n }\n }\n\n .formkit-input-group-add-more {\n display: flex;\n justify-content: flex-end;\n\n button {\n border: black;\n }\n }\n\n .formkit-input {\n &[data-classification=\"text\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n &[data-classification=\"select\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n }\n\n .formkit-input[data-classification=\"button\"] {\n button {\n &[data-ghost] {\n color: white;\n background-color: #001d85;\n border-color: #001d85;\n border-radius: 1.875rem;\n\n &:hover {\n background-color: #196fd2;\n border-color: #196fd2;\n }\n }\n }\n }\n}\n\n.formkit-input.besides {\n border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n &--textarea {\n width: 100%;\n }\n}\n\n.formkit-input-element--group {\n display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n// .step-progress__step::after {\n// display: none;\n// }\n\n// .step-progress__step-label {\n// cursor: pointer;\n// }\n// }\n</style>\n"],"names":["_resolveComponent","property","_createElementBlock","isReady","_ctx","_openBlock","_createBlock","_component_router_view","_createCommentVNode"],"mappings":";;;;;YACEA,EAIM,aAAA;SAJmHC,EAAQ,GAAAC,EAAA,OAAA;AAAA,IAAA,OAAA;AAAA,IAE5GC,KAAAA,EAAAA;AAAAA,EAAAA,GAAAA;AAAAA,IAASC,EAAA,WAAAC,KAAoBC,EAAAC,GAAA;AAAA,MAAA,KAAA;AAAA,MAHpD,KAAAH,EAAA;AAAA,IAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA;;;"}
@@ -1,14 +1,15 @@
1
- import { setupDpiContext as h } from "./composables/useDpiContext.mjs";
2
- import { defineComponent as g, defineAsyncComponent as v, toRef as y, computed as s, toValue as $, watchEffect as E } from "vue";
3
- import { mapGetters as S, mapActions as n, useStore as w } from "vuex";
4
- import { config as C } from "./config/dpi-spec-config.mjs";
1
+ import { setupDpiContext as g } from "./composables/useDpiContext.mjs";
2
+ import { defineComponent as v, defineAsyncComponent as y, toRef as $, computed as s, toValue as E, provide as C, watchEffect as I } from "vue";
3
+ import { mapGetters as S, mapActions as d, useStore as b } from "vuex";
4
+ import { config as w } from "./config/dpi-spec-config.mjs";
5
5
  import { useRuntimeEnv as D } from "../composables/useRuntimeEnv.mjs";
6
- import { useRoute as I } from "vue-router";
7
- import { useDpiEditMode as b } from "./composables/useDpiEditMode.mjs";
8
- const M = g({
6
+ import { useRoute as A } from "vue-router";
7
+ import { useDpiEditMode as x } from "./composables/useDpiEditMode.mjs";
8
+ import { autocompleteKey as k, defaultAutocompleteAdapter as L } from "./composables/aucotomplete.mjs";
9
+ const j = v({
9
10
  name: "DataProviderInterface",
10
11
  components: {
11
- InputPage: v(() => import("./views/InputPage.vue.mjs"))
12
+ InputPage: y(() => import("./views/InputPage.vue.mjs"))
12
13
  },
13
14
  props: {
14
15
  name: {
@@ -19,6 +20,11 @@ const M = g({
19
20
  type: Object,
20
21
  default: () => {
21
22
  }
23
+ },
24
+ autocomplete: {
25
+ type: Object,
26
+ default: () => {
27
+ }
22
28
  }
23
29
  },
24
30
  metaInfo() {
@@ -46,19 +52,19 @@ const M = g({
46
52
  }
47
53
  },
48
54
  methods: {
49
- ...n("dpiStore", [
55
+ ...d("dpiStore", [
50
56
  "saveLocalstorageValues"
51
57
  ]),
52
- ...n("auth", [
58
+ ...d("auth", [
53
59
  "populateDraftAndEdit"
54
60
  ]),
55
61
  getClearPath() {
56
62
  return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;
57
63
  },
58
64
  handleScroll() {
59
- var a, t, e;
65
+ var o, t, a;
60
66
  try {
61
- (a = document.getElementById("stepperAnchor")) != null && a.offsetTop || 0 >= 35 ? (t = document.getElementById("stepperAnchor")) == null || t.classList.add("border-bottom-lightgray") : (e = document.getElementById("stepperAnchor")) == null || e.classList.remove("border-bottom-lightgray");
67
+ (o = document.getElementById("stepperAnchor")) != null && o.offsetTop || 0 >= 35 ? (t = document.getElementById("stepperAnchor")) == null || t.classList.add("border-bottom-lightgray") : (a = document.getElementById("stepperAnchor")) == null || a.classList.remove("border-bottom-lightgray");
62
68
  } catch {
63
69
  }
64
70
  }
@@ -72,32 +78,37 @@ const M = g({
72
78
  unmounted() {
73
79
  window.removeEventListener("scroll", this.handleScroll);
74
80
  },
75
- setup(a) {
76
- const t = I(), e = w(), i = D().content.dataProviderInterface.specification, c = C[i], p = y(a, "dpiContext"), o = s(() => {
77
- const f = $(p);
81
+ setup(o) {
82
+ const t = A(), a = b(), i = D(), r = i.content.dataProviderInterface.specification, c = w[r], p = $(o, "dpiContext"), e = s(() => {
83
+ const h = E(p);
78
84
  return {
79
85
  specification: c,
80
- specificationName: i,
86
+ specificationName: r,
81
87
  edit: {
82
88
  enabled: t.query.edit === "true",
83
89
  id: t.query.id || void 0,
84
90
  fromDraft: t.query.fromDraft === "true"
85
91
  },
86
- ...f
92
+ ...h
87
93
  };
88
- }), m = s(() => o.value.specification), r = s(() => o.value.specificationName);
89
- h(o), E(() => {
90
- e.dispatch("dpiStore/setSpecification", m.value), e.dispatch("dpiStore/setSpecificationname", r.value);
94
+ }), m = s(() => e.value.specification), n = s(() => e.value.specificationName);
95
+ g(e);
96
+ const u = L({
97
+ envs: i,
98
+ dpiContext: e
99
+ });
100
+ C(k, o.autocomplete || u.adapter), I(() => {
101
+ a.dispatch("dpiStore/setSpecification", m.value), a.dispatch("dpiStore/setSpecificationname", n.value);
91
102
  });
92
- const u = s(() => `${t.query.key}@${r.value}`), { isReady: l } = b(o);
103
+ const l = s(() => `${t.query.key}@${n.value}`), { isReady: f } = x(e);
93
104
  return {
94
- resolvedDpiContext: o,
95
- key: u,
96
- isReady: l
105
+ resolvedDpiContext: e,
106
+ key: l,
107
+ isReady: f
97
108
  };
98
109
  }
99
110
  });
100
111
  export {
101
- M as default
112
+ j as default
102
113
  };
103
114
  //# sourceMappingURL=DataProviderInterface.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataProviderInterface.vue2.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n <!-- CONTENT -->\n <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n </router-view>\n </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\n\n\n\nexport default defineComponent({\n name: 'DataProviderInterface',\n components: {\n InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n },\n props: {\n name: {\n type: String,\n default: '',\n },\n dpiContext: {\n type: Object as PropType<DpiContext>,\n default: () => undefined,\n }\n },\n metaInfo() {\n return {\n title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n meta: [\n { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n { name: 'robots', content: 'noindex, follow' },\n ],\n };\n },\n data() {\n return {\n property: this.$route.params.property,\n id: this.$route.params.id,\n };\n },\n computed: {\n ...mapGetters('auth', [\n 'getIsEditMode',\n ]),\n mode() {\n return this.property === 'catalogues'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editCatalogue')\n : this.$t('message.dataupload.createNewCatalogue')\n : this.property === 'datasets'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editDataset')\n : this.$t('message.dataupload.createNewDataset')\n : 'Edit Distribution';\n },\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n ...mapActions('auth', [\n 'populateDraftAndEdit',\n ]),\n getClearPath() {\n return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n },\n handleScroll() {\n try {\n if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n }\n else {\n document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n }\n } catch (error) {\n \n }\n }\n\n },\n created() {\n window.addEventListener('scroll', this.handleScroll);\n this.populateDraftAndEdit();\n },\n mounted() {\n this.saveLocalstorageValues(this.property);\n },\n unmounted() {\n window.removeEventListener('scroll', this.handleScroll);\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n const env = useRuntimeEnv()\n const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n const fallbackSpec = dpiSpecs[userSpec]\n const dpiContext = toRef(props, 'dpiContext')\n\n const resolvedDpiContext = computed<DpiContext>(() => {\n const _dpiContext = toValue(dpiContext)\n\n return {\n specification: fallbackSpec,\n specificationName: userSpec,\n edit: {\n enabled: route.query.edit === 'true',\n id: route.query.id as string || undefined,\n fromDraft: route.query.fromDraft === 'true',\n },\n ..._dpiContext\n }\n })\n\n const specification = computed(() => {\n return resolvedDpiContext.value.specification\n })\n\n const specificationName = computed(() => {\n return resolvedDpiContext.value.specificationName\n })\n\n setupDpiContext(resolvedDpiContext)\n\n watchEffect(() => {\n store.dispatch('dpiStore/setSpecification', specification.value)\n store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n })\n\n const key = computed(() => {\n return `${route.query.key}@${specificationName.value}`\n })\n\n const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n return {\n resolvedDpiContext,\n key,\n isReady,\n }\n\n }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n position: sticky;\n top: 0;\n background: #ffffff;\n z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n margin: 1vh 0;\n display: flex;\n align-items: center;\n}\n\n.stickyStepper .stickyNav {\n border-left: 1px solid black;\n margin-left: 1vh;\n padding-left: 1vh;\n}\n\n#stepper {\n width: 100% !important;\n}\n\n#input {\n padding: 10px;\n}\n\n.small-headline {\n font-size: 1.5rem;\n min-width: max-content;\n}\n\n.property {\n margin: 20px;\n background-color: #ffffff;\n border: solid 0.5px rgb(225, 225, 225);\n margin-top: 30px;\n}\n\n.infoBox .material-icons {\n font-size: 20px;\n vertical-align: text-bottom;\n margin-right: 5px;\n margin-bottom: 1px;\n}\n\n.infoBox {\n width: 100%;\n height: 30%;\n background-color: #f7f7f7;\n padding: 5%;\n border-radius: 0.25rem;\n margin-top: 20px;\n\n .input_subpage_nav {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 15px;\n }\n}\n\n.besides {\n .formkit-input-group-repeatable {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n padding: 0px;\n }\n}\n\n.main {\n width: 75%;\n margin: 0 5px 0 5px;\n}\n\n.sub {\n width: 20%;\n margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n position: sticky;\n top: 154px;\n z-index: 10;\n width: 100%;\n padding: 0 10%;\n\n .step-progress__bar {\n border-top: none !important;\n }\n\n .step-progress__step--active {\n .step-progress__step-label {\n background-color: lightsteelblue !important;\n }\n\n }\n}\n\n.step-progress__step span{\n \n color:white !important;\n \n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n// .step-progress__step {\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// height: 70%;\n// width: 20%;\n// display: flex;\n// align-items: center;\n// z-index: 1;\n\n\n// span {\n// color: grey;\n// font-size: 18px;\n// display: none;\n// }\n\n// div {\n// padding: 1rem;\n// height: 100%;\n// display: flex;\n// align-items: center;\n// color: white;\n// font-weight: 300;\n\n// }\n\n// .step-progress__step-label {\n\n// background: lightgrey;\n// background-size: 400% 400%;\n// background-position: 100% 0%;\n// transition: all 300ms ease-in-out;\n// border-right: 1px white solid;\n// font-size: 14px;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n\n\n// }\n\n\n// .step-progress__step-label:hover {\n// background-position: 65% 0%;\n// color: black;\n\n// }\n\n// }\n\n// .step-progress__step--active {\n\n// z-index: 7 !important;\n\n\n// span {\n// color: black;\n// }\n\n// div {\n// background: white;\n// }\n\n// .step-progress__step-label {\n// background: rgb(236, 236, 236);\n// background-position: 50% 0%;\n// box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n// transform: scale(1.1);\n// z-index: 8;\n// font-size: 16px;\n// }\n\n// }\n\n// .step-progress__step--valid {\n// div {\n// color: white;\n\n// }\n\n// .step-progress__step-label {\n// background: rgba(0, 235, 0, 0.2);\n// color: lightslategrey;\n\n\n// }\n\n// .step-progress__step-label:hover {\n// color: black;\n// }\n// }\n\n// .step-progress__step--active .step-progress__step-label {\n// color: rgb(31, 31, 31);\n// }\n\n// .step-progress__wrapper-after {\n// display: none;\n// }\n\n// .step-progress__step-icon {\n// display: none !important;\n// }\n\n// .step-progress__bar {\n// margin: 0;\n// height: 5rem;\n// border-top: 1px solid lightslategray;\n\n// }\n\n// .step-progress__step-label {\n// position: unset;\n// transform: unset;\n// flex-grow: 1;\n// }\n\n// .step-progress__step {}\n\n// .step-progress__wrapper-before {\n// display: none !important;\n// }\n\n// #stepper .step-progress__step::after {\n// display: none !important;\n// }\n// }\n#stepper .step-progress__step{\n border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n font-size: 25px;\n}\n.step-progress__step-label{\n cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n border: none;\n padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n font-weight: 400;\n}\n\n.formkit-input-error {\n color: #e13737 !important;\n font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n &-input {\n .formkit {\n &-input {\n &-element {\n max-width: 100%;\n }\n\n &-error {\n font-weight: bold;\n }\n }\n }\n }\n\n .formkit-input-group-add-more {\n display: flex;\n justify-content: flex-end;\n\n button {\n border: black;\n }\n }\n\n .formkit-input {\n &[data-classification=\"text\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n &[data-classification=\"select\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n }\n\n .formkit-input[data-classification=\"button\"] {\n button {\n &[data-ghost] {\n color: white;\n background-color: #001d85;\n border-color: #001d85;\n border-radius: 1.875rem;\n\n &:hover {\n background-color: #196fd2;\n border-color: #196fd2;\n }\n }\n }\n }\n}\n\n.formkit-input.besides {\n border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n &--textarea {\n width: 100%;\n }\n}\n\n.formkit-input-element--group {\n display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n// .step-progress__step::after {\n// display: none;\n// }\n\n// .step-progress__step-label {\n// cursor: pointer;\n// }\n// }\n</style>\n"],"names":["_sfc_main","defineComponent","defineAsyncComponent","mapGetters","mapActions","_a","_b","_c","props","route","useRoute","store","useStore","userSpec","useRuntimeEnv","fallbackSpec","dpiSpecs","dpiContext","toRef","resolvedDpiContext","computed","_dpiContext","toValue","specification","specificationName","setupDpiContext","watchEffect","key","isReady","useDpiEditMode"],"mappings":"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"}
1
+ {"version":3,"file":"DataProviderInterface.vue2.mjs","sources":["../../lib/data-provider-interface/DataProviderInterface.vue"],"sourcesContent":["<template>\n <div class=\"d-flex flex-column bg-transparent container-fluid justify-content-between dpi position-relative w-100\" :key=\"property\">\n <!-- CONTENT -->\n <router-view v-if=\"isReady\" ref=\"view\" :key=\"key\">\n </router-view>\n </div>\n</template>\n\n<script lang=\"ts\">\n/* eslint-disable no-nested-ternary, no-lonely-if, no-param-reassign */\nimport { DpiContext, setupDpiContext } from './composables/useDpiContext';\nimport { computed, defineAsyncComponent, defineComponent, PropType , provide, ref, toRef, toRefs, toValue, watch, watchEffect} from 'vue';\nimport { mapActions, mapGetters, useStore } from 'vuex';\nimport dpiSpecs from './config/dpi-spec-config';\nimport { useRuntimeEnv } from '../composables/useRuntimeEnv';\nimport { useRoute } from 'vue-router';\nimport { useAsyncState, watchOnce } from '@vueuse/core';\nimport { useDpiEditMode } from './composables/useDpiEditMode';\nimport { AutocompleteInstance, autocompleteKey, defaultAutocompleteAdapter, useAutocomplete } from './composables/aucotomplete';\n\n\n\nexport default defineComponent({\n name: 'DataProviderInterface',\n components: {\n InputPage: defineAsyncComponent(() => import('./views/InputPage.vue')),\n },\n props: {\n name: {\n type: String,\n default: '',\n },\n dpiContext: {\n type: Object as PropType<DpiContext>,\n default: () => undefined,\n },\n autocomplete: {\n type: Object as PropType<AutocompleteInstance>,\n default: () => undefined,\n }\n },\n metaInfo() {\n return {\n title: `${this.$t('message.metadata.upload')} | ${this.$t('message.header.navigation.data.datasets')}`,\n meta: [\n { name: 'description', vmid: 'description', content: `${this.$t('message.datasets.meta.description')}` },\n { name: 'keywords', vmid: 'keywords', content: `${this.$env.metadata.keywords} ${this.$t('message.datasets.meta.description')}}` },\n { name: 'robots', content: 'noindex, follow' },\n ],\n };\n },\n data() {\n return {\n property: this.$route.params.property,\n id: this.$route.params.id,\n };\n },\n computed: {\n ...mapGetters('auth', [\n 'getIsEditMode',\n ]),\n mode() {\n return this.property === 'catalogues'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editCatalogue')\n : this.$t('message.dataupload.createNewCatalogue')\n : this.property === 'datasets'\n ? this.getIsEditMode\n ? this.$t('message.dataupload.menu.editDataset')\n : this.$t('message.dataupload.createNewDataset')\n : 'Edit Distribution';\n },\n },\n methods: {\n ...mapActions('dpiStore', [\n 'saveLocalstorageValues',\n ]),\n ...mapActions('auth', [\n 'populateDraftAndEdit',\n ]),\n getClearPath() {\n return `${this.$env.content.dataProviderInterface.basePath}/${this.property}?locale=${this.$i18n.locale}&clear=true`;;\n },\n handleScroll() {\n try {\n if (document.getElementById(\"stepperAnchor\")?.offsetTop || 0 >= 35) {\n document.getElementById(\"stepperAnchor\")?.classList.add(\"border-bottom-lightgray\");\n }\n else {\n document.getElementById(\"stepperAnchor\")?.classList.remove(\"border-bottom-lightgray\");\n }\n } catch (error) {\n \n }\n }\n\n },\n created() {\n window.addEventListener('scroll', this.handleScroll);\n this.populateDraftAndEdit();\n },\n mounted() {\n this.saveLocalstorageValues(this.property);\n },\n unmounted() {\n window.removeEventListener('scroll', this.handleScroll);\n },\n setup(props) {\n const route = useRoute()\n const store = useStore()\n const env = useRuntimeEnv()\n const userSpec = env.content.dataProviderInterface.specification as 'dcatap' | 'dcatapde' | 'dcatapdeODB'\n const fallbackSpec = dpiSpecs[userSpec]\n const dpiContext = toRef(props, 'dpiContext')\n\n const resolvedDpiContext = computed<DpiContext>(() => {\n const _dpiContext = toValue(dpiContext)\n\n return {\n specification: fallbackSpec,\n specificationName: userSpec,\n edit: {\n enabled: route.query.edit === 'true',\n id: route.query.id as string || undefined,\n fromDraft: route.query.fromDraft === 'true',\n },\n ..._dpiContext\n }\n })\n\n const specification = computed(() => {\n return resolvedDpiContext.value.specification\n })\n\n const specificationName = computed(() => {\n return resolvedDpiContext.value.specificationName\n })\n\n setupDpiContext(resolvedDpiContext)\n const defaultAutocompleteInstance = defaultAutocompleteAdapter({\n envs: env,\n dpiContext: resolvedDpiContext\n });\n provide(autocompleteKey, props.autocomplete || defaultAutocompleteInstance.adapter);\n\n watchEffect(() => {\n store.dispatch('dpiStore/setSpecification', specification.value)\n store.dispatch('dpiStore/setSpecificationname', specificationName.value)\n })\n\n const key = computed(() => {\n return `${route.query.key}@${specificationName.value}`\n })\n\n const { isReady } = useDpiEditMode(resolvedDpiContext)\n\n return {\n resolvedDpiContext,\n key,\n isReady,\n }\n\n }\n});\n</script>\n\n<style lang=\"scss\">\n.border-bottom-lightgray {\n border-bottom: 1px solid lightgray;\n}\n.stickyStepper {\n position: sticky;\n top: 0;\n background: #ffffff;\n z-index: 999;\n}\n\n.stickyStepper .SSfirstRow {\n margin: 1vh 0;\n display: flex;\n align-items: center;\n}\n\n.stickyStepper .stickyNav {\n border-left: 1px solid black;\n margin-left: 1vh;\n padding-left: 1vh;\n}\n\n#stepper {\n width: 100% !important;\n}\n\n#input {\n padding: 10px;\n}\n\n.small-headline {\n font-size: 1.5rem;\n min-width: max-content;\n}\n\n.property {\n margin: 20px;\n background-color: #ffffff;\n border: solid 0.5px rgb(225, 225, 225);\n margin-top: 30px;\n}\n\n.infoBox .material-icons {\n font-size: 20px;\n vertical-align: text-bottom;\n margin-right: 5px;\n margin-bottom: 1px;\n}\n\n.infoBox {\n width: 100%;\n height: 30%;\n background-color: #f7f7f7;\n padding: 5%;\n border-radius: 0.25rem;\n margin-top: 20px;\n\n .input_subpage_nav {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 15px;\n }\n}\n\n.besides {\n .formkit-input-group-repeatable {\n display: flex;\n flex-direction: row;\n background-color: transparent;\n padding: 0px;\n }\n}\n\n.main {\n width: 75%;\n margin: 0 5px 0 5px;\n}\n\n.sub {\n width: 20%;\n margin: 0 5px 0 5px;\n}\n\n#subStepperBox {\n position: sticky;\n top: 154px;\n z-index: 10;\n width: 100%;\n padding: 0 10%;\n\n .step-progress__bar {\n border-top: none !important;\n }\n\n .step-progress__step--active {\n .step-progress__step-label {\n background-color: lightsteelblue !important;\n }\n\n }\n}\n\n.step-progress__step span{\n \n color:white !important;\n \n}\n// Stepper Customizing -------------\n\n// #stepper,\n// #subStepper {\n// .step-progress__step {\n// display: flex;\n// align-items: center;\n// justify-content: center;\n// height: 70%;\n// width: 20%;\n// display: flex;\n// align-items: center;\n// z-index: 1;\n\n\n// span {\n// color: grey;\n// font-size: 18px;\n// display: none;\n// }\n\n// div {\n// padding: 1rem;\n// height: 100%;\n// display: flex;\n// align-items: center;\n// color: white;\n// font-weight: 300;\n\n// }\n\n// .step-progress__step-label {\n\n// background: lightgrey;\n// background-size: 400% 400%;\n// background-position: 100% 0%;\n// transition: all 300ms ease-in-out;\n// border-right: 1px white solid;\n// font-size: 14px;\n// display: flex;\n// align-items: center;\n// justify-content: center;\n\n\n// }\n\n\n// .step-progress__step-label:hover {\n// background-position: 65% 0%;\n// color: black;\n\n// }\n\n// }\n\n// .step-progress__step--active {\n\n// z-index: 7 !important;\n\n\n// span {\n// color: black;\n// }\n\n// div {\n// background: white;\n// }\n\n// .step-progress__step-label {\n// background: rgb(236, 236, 236);\n// background-position: 50% 0%;\n// box-shadow: 0px 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12) !important;\n// transform: scale(1.1);\n// z-index: 8;\n// font-size: 16px;\n// }\n\n// }\n\n// .step-progress__step--valid {\n// div {\n// color: white;\n\n// }\n\n// .step-progress__step-label {\n// background: rgba(0, 235, 0, 0.2);\n// color: lightslategrey;\n\n\n// }\n\n// .step-progress__step-label:hover {\n// color: black;\n// }\n// }\n\n// .step-progress__step--active .step-progress__step-label {\n// color: rgb(31, 31, 31);\n// }\n\n// .step-progress__wrapper-after {\n// display: none;\n// }\n\n// .step-progress__step-icon {\n// display: none !important;\n// }\n\n// .step-progress__bar {\n// margin: 0;\n// height: 5rem;\n// border-top: 1px solid lightslategray;\n\n// }\n\n// .step-progress__step-label {\n// position: unset;\n// transform: unset;\n// flex-grow: 1;\n// }\n\n// .step-progress__step {}\n\n// .step-progress__wrapper-before {\n// display: none !important;\n// }\n\n// #stepper .step-progress__step::after {\n// display: none !important;\n// }\n// }\n#stepper .step-progress__step{\n border: solid white 20px;\n}\n#stepper .step-progress__step-icon, #subStepper .step-progress__step-icon {\n font-size: 25px;\n}\n.step-progress__step-label{\n cursor: pointer;\n}\n// Input Form Margins & Borders ----\n\n.formkit-input[data-classification=group] [data-is-repeatable] {\n border: none;\n padding: 1em 1em 1em 0em;\n}\n\n.formkit-input[data-classification=group] [data-is-repeatable] .formkit-input-group-repeatable {\n border-bottom: none;\n}\n\n.formkit-input-element--checkbox {\n margin-right: 5px;\n}\n\n.formkit-input-wrapper {\n font-family: \"Ubuntu\";\n}\n\n.formkit-input[data-classification=button] button[data-ghost] {\n font-weight: 400;\n}\n\n.formkit-input-error {\n color: #e13737 !important;\n font-weight: 400 !important;\n}\n\n// General Formkit Styling ----\n\n.formkit {\n &-input {\n .formkit {\n &-input {\n &-element {\n max-width: 100%;\n }\n\n &-error {\n font-weight: bold;\n }\n }\n }\n }\n\n .formkit-input-group-add-more {\n display: flex;\n justify-content: flex-end;\n\n button {\n border: black;\n }\n }\n\n .formkit-input {\n &[data-classification=\"text\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n &[data-classification=\"select\"] .formkit-input-wrapper {\n display: flex;\n flex-direction: column;\n }\n }\n\n .formkit-input[data-classification=\"button\"] {\n button {\n &[data-ghost] {\n color: white;\n background-color: #001d85;\n border-color: #001d85;\n border-radius: 1.875rem;\n\n &:hover {\n background-color: #196fd2;\n border-color: #196fd2;\n }\n }\n }\n }\n}\n\n.formkit-input.besides {\n border-bottom: 1px solid lightgrey !important;\n}\n\n.formkit-input-label {\n font-weight: 500 !important;\n}\n\n.formkit-input-element {\n\n &--textarea {\n width: 100%;\n }\n}\n\n.formkit-input-element--group {\n display: block !important;\n}\n\n.formkit-input.besides>.formkit-input-wrapper>.formkit-input-label {\n\n\n text-decoration: underline !important;\n}\n\n// #stepper,\n// #subStepper {\n\n\n// .step-progress__step::after {\n// display: none;\n// }\n\n// .step-progress__step-label {\n// cursor: pointer;\n// }\n// }\n</style>\n"],"names":["_sfc_main","defineComponent","defineAsyncComponent","mapGetters","mapActions","_a","_b","_c","props","route","useRoute","store","useStore","env","useRuntimeEnv","userSpec","fallbackSpec","dpiSpecs","dpiContext","toRef","resolvedDpiContext","computed","_dpiContext","toValue","specification","specificationName","setupDpiContext","defaultAutocompleteInstance","defaultAutocompleteAdapter","provide","autocompleteKey","watchEffect","key","isReady","useDpiEditMode"],"mappings":"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"}
@@ -1,74 +1,77 @@
1
- import { getCurrentInstance as te, computed as L, ref as h, onMounted as ne, watch as X, watchEffect as ae, openBlock as r, createElementBlock as i, unref as u, toDisplayString as v, createCommentVNode as $, createTextVNode as p, createElementVNode as s, withDirectives as J, isRef as N, vModelText as le, Fragment as S, renderList as T, vShow as oe, normalizeClass as se } from "vue";
2
- import { useStore as re } from "vuex";
1
+ import { getCurrentInstance as ne, computed as L, ref as x, onMounted as ae, watch as B, watchEffect as le, openBlock as r, createElementBlock as i, unref as u, toDisplayString as v, createCommentVNode as $, createTextVNode as p, createElementVNode as s, withDirectives as X, isRef as N, vModelText as oe, Fragment as T, renderList as A, vShow as se, normalizeClass as re } from "vue";
2
+ import { useStore as ie } from "vuex";
3
3
  import { getTranslationFor as M } from "../../utils/helpers.mjs";
4
- import { getNode as ie } from "@formkit/core";
4
+ import { getNode as ue } from "@formkit/core";
5
5
  import { onClickOutside as R } from "../../external/@vueuse/core/index";
6
- import { useI18n as ue } from "vue-i18n";
7
- import ce from "qs";
8
- import de from "axios";
9
- const fe = { class: "formkitProperty" }, pe = {
6
+ import { useI18n as ce } from "vue-i18n";
7
+ import de from "qs";
8
+ import fe from "axios";
9
+ import { useAutocomplete as pe } from "../composables/aucotomplete.mjs";
10
+ const me = { class: "formkitProperty" }, ve = {
10
11
  key: 0,
11
12
  class: "formkitHeader"
12
- }, me = ["innerHTML"], ve = { class: "formkitCmpWrap" }, ge = { class: "formkit-outer" }, ye = {
13
+ }, ge = ["innerHTML"], ye = { class: "formkitCmpWrap" }, xe = { class: "formkit-outer" }, he = {
13
14
  key: 0,
14
15
  class: "d-flex formkit-inner"
15
- }, he = { class: "autocompleteInputSingleValue" }, xe = { key: 1 }, ke = { class: "d-flex align-items-center justify-content-center formkit-inner mb-2" }, be = ["placeholder"], we = ["onClick"], _e = {
16
+ }, ke = { class: "autocompleteInputSingleValue" }, be = { key: 1 }, we = { class: "d-flex align-items-center justify-content-center formkit-inner mb-2" }, _e = ["placeholder"], Ce = ["onClick"], Ie = {
16
17
  key: 0,
17
18
  class: "d-flex flex-wrap"
18
- }, Ce = { class: "activeResultsAutocompleteWrapper" }, Ie = ["onClick"], Le = ["onClick"], Se = { class: "w-100 mt-4" }, Te = { class: "d-flex justify-content-between align-items-center flex-wrap" }, Ve = {
19
+ }, Le = { class: "activeResultsAutocompleteWrapper" }, Te = ["onClick"], Ae = ["onClick"], Se = { class: "w-100 mt-4" }, Ve = { class: "d-flex justify-content-between align-items-center flex-wrap" }, Pe = {
19
20
  key: 0,
20
21
  class: "annifresultContainer"
21
- }, Ae = ["onClick"], Pe = { class: "d-flex" }, Oe = {
22
+ }, Oe = ["onClick"], $e = { class: "d-flex" }, Ne = {
22
23
  key: 1,
23
24
  class: "d-flex flex-wrap"
24
- }, $e = ["onClick"], Ne = ["innerHTML"], Fe = {
25
+ }, Me = ["onClick"], Re = ["innerHTML"], Xe = {
25
26
  __name: "AutocompleteInput",
26
27
  props: {
27
28
  context: Object
28
29
  },
29
- setup(z) {
30
- let k = te().appContext.app.config.globalProperties.$env;
31
- const a = z, j = re(), { t: D, locale: V } = ue();
32
- let g = L(() => a.context.value), c, b = a.context.attrs.voc, G = L(() => D("message.dataupload.info.searchVocabulary")), K = L(() => D("message.dataupload.info.matchesNothingFound")), _ = h({
33
- value: { name: G }
34
- }), f = h(), E = h(null), H = h(null), x = h({}), m = [], C = [], q = h({
30
+ setup(J) {
31
+ let k = ne().appContext.app.config.globalProperties.$env;
32
+ const { requestAutocompleteSuggestions: z, requestResourceName: G } = pe(), a = J;
33
+ ie();
34
+ const { t: j, locale: S } = ce();
35
+ let g = L(() => a.context.value), c, b = a.context.attrs.voc, K = L(() => j("message.dataupload.info.searchVocabulary")), Q = L(() => j("message.dataupload.info.matchesNothingFound")), _ = x({
36
+ value: { name: K }
37
+ }), f = x(), D = x(null), E = x(null), h = x({}), m = [], C = [], H = x({
35
38
  value: !1
36
39
  });
37
- h();
38
- let A = h({});
39
- ne(async () => {
40
- x.value = "";
40
+ x();
41
+ let V = x({});
42
+ ae(async () => {
43
+ h.value = "";
41
44
  });
42
- let U = L(() => {
45
+ let q = L(() => {
43
46
  try {
44
47
  if (a.context.attrs.class.includes("inDistribution"))
45
48
  return !0;
46
49
  } catch {
47
50
  }
48
51
  });
49
- X(_, async () => {
50
- }), X(A, async () => {
52
+ B(_, async () => {
53
+ }), B(V, async () => {
51
54
  });
52
- const F = async (n) => {
55
+ const U = async (n) => {
53
56
  if (n != null) {
54
57
  let e = b === "iana-media-types" || b === "spdx-checksum-algorithm", t;
55
- return await j.dispatch("dpiStore/requestResourceName", { voc: b, uri: n, envs: k }).then(
58
+ return await G({ voc: b, uri: n, envs: k }).then(
56
59
  (o) => {
57
- a.context.attrs.property === "dcatde:politicalGeocodingURI" ? o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.alt_label)[0].en : M(o.data.result.alt_label, V.value, [])) : o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.pref_label)[0].en : M(o.data.result.pref_label, V.value, []));
60
+ a.context.attrs.property === "dcatde:politicalGeocodingURI" ? o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.alt_label)[0].en : M(o.data.result.alt_label, S.value, [])) : o != null && (t = e ? o.data.result.results.filter((l) => l.resource === n).map((l) => l.pref_label)[0].en : M(o.data.result.pref_label, S.value, []));
58
61
  }
59
62
  ), t;
60
63
  }
61
64
  };
62
- ae(async () => {
65
+ le(async () => {
63
66
  const n = g.value;
64
67
  if (n.hasOwnProperty("name") && n.name === n.resource) {
65
68
  let e;
66
- a.context.attrs.multiple || (e = F(n.resource), a.context.node.input({ name: await e, resource: n.resource }));
69
+ a.context.attrs.multiple || (e = U(n.resource), a.context.node.input({ name: await e, resource: n.resource }));
67
70
  }
68
71
  if (n.length >= 1) {
69
72
  let e = [];
70
73
  for (let t = 0; t < n.length; t++)
71
- n[t].name === n[t].resource && (e.push({ name: await F(n[t].resource), resource: n[t].resource }), a.context.node.input(e));
74
+ n[t].name === n[t].resource && (e.push({ name: await U(n[t].resource), resource: n[t].resource }), a.context.node.input(e));
72
75
  }
73
76
  });
74
77
  function P(n) {
@@ -85,11 +88,11 @@ const fe = { class: "formkitProperty" }, pe = {
85
88
  }
86
89
  window.removeEventListener("click", R);
87
90
  }
88
- R(E, (n) => f.value = !1), R(H, (n) => x.value = "");
89
- let W = async (n, e) => {
91
+ R(D, (n) => f.value = !1), R(E, (n) => h.value = "");
92
+ let F = async (n, e) => {
90
93
  let t = 10;
91
94
  e != null && (t = t + 10);
92
- let o = ce.stringify({
95
+ let o = de.stringify({
93
96
  text: n,
94
97
  limit: t
95
98
  });
@@ -102,34 +105,34 @@ const fe = { class: "formkitProperty" }, pe = {
102
105
  },
103
106
  data: o
104
107
  };
105
- de(d).then(async (l) => {
108
+ fe(d).then(async (l) => {
106
109
  for (let y = 0; y < l.data.results.length; y++)
107
110
  C[y] = { name: l.data.results[y].label, resource: l.data.results[y].uri, activeValue: !1 };
108
111
  let w = [];
109
112
  g.value.length > 0 && g.value.forEach((y) => {
110
113
  w.push({ name: y.name, resource: y.resource, activeValue: !0 });
111
- }), l.data.results.length > 9 && (C[C.length + 1] = { name: "...", resource: "invalid", activeValue: !1 }), A.value = Y(w, C);
114
+ }), l.data.results.length > 9 && (C[C.length + 1] = { name: "...", resource: "invalid", activeValue: !1 }), V.value = Z(w, C);
112
115
  }).catch(function(l) {
113
116
  console.log(l);
114
117
  });
115
118
  };
116
- async function Q(n) {
119
+ async function Y(n) {
117
120
  n.resource === "invalid" ? I(5) : (O({ name: n.name, resource: n.resource }), I());
118
121
  }
119
- function Y(n, e) {
122
+ function Z(n, e) {
120
123
  let t = n.concat(e), o = [], d = /* @__PURE__ */ new Set();
121
124
  return t.forEach((l) => {
122
125
  d.has(l.resource) || (d.add(l.resource), l.activeValue || o.push(l));
123
126
  }), o;
124
127
  }
125
128
  const I = async (n) => {
126
- let e = ie("Mandatory").value["dct:description"];
129
+ let e = ue("Mandatory").value["dct:description"];
127
130
  for (let t = 0; t < e.length; t++)
128
- e[t]["@language"] === "en" && (n != null ? await W(e[t]["@value"], 5) : await W(e[t]["@value"]));
131
+ e[t]["@language"] === "en" && (n != null ? await F(e[t]["@value"], 5) : await F(e[t]["@value"]));
129
132
  };
130
133
  a.context.classes.outer += " autocompleteInput " + a.context.attrs.identifier;
131
134
  const O = async (n) => {
132
- if (x.value = "", Object.keys(n).length !== 1) {
135
+ if (h.value = "", Object.keys(n).length !== 1) {
133
136
  if (g.value.length > 0 && (m = g.value), a.context.attrs.multiple)
134
137
  if (m.length != 0) {
135
138
  let e = { name: n.name, resource: n.resource }, t = m.filter((o) => o.name != n.name);
@@ -143,74 +146,74 @@ const fe = { class: "formkitProperty" }, pe = {
143
146
  }
144
147
  P();
145
148
  }
146
- }, Z = async (n) => {
149
+ }, ee = async (n) => {
147
150
  let e = n.target.value;
148
- await j.dispatch("dpiStore/requestAutocompleteSuggestions", { voc: b, text: e, base: k.api.baseUrl }).then((t) => {
151
+ await z({ voc: b, text: e, base: k.api.baseUrl }).then((t) => {
149
152
  const d = t.data.result.results.filter((l) => l.id !== "OP_DATPRO").map((l) => ({
150
- name: M(l.pref_label, V.value, []) + " (" + l.id + ")",
153
+ name: M(l.pref_label, S.value, []) + " (" + l.id + ")",
151
154
  resource: l.resource
152
155
  }));
153
- d.length === 0 ? _.value = { value: { name: K } } : _.value = d;
156
+ d.length === 0 ? _.value = { value: { name: Q } } : _.value = d;
154
157
  });
155
158
  };
156
- function ee(n) {
159
+ function te(n) {
157
160
  a.context.node.input({}), O("erase");
158
161
  }
159
- function B(n) {
162
+ function W(n) {
160
163
  k.content.dataProviderInterface.annifIntegration && I(), g.value.length > 0 && (m = g.value), m.splice(m.findIndex((e) => e.name == n.name), 1), c = m, a.context.node.input(c), P();
161
164
  }
162
- return (n, e) => (r(), i("div", fe, [
163
- u(U) ? (r(), i("h4", pe, v(n.$t("message.dataupload.distributions." + a.context.attrs.identifier + ".label")), 1)) : $("", !0),
165
+ return (n, e) => (r(), i("div", me, [
166
+ u(q) ? (r(), i("h4", ve, v(n.$t("message.dataupload.distributions." + a.context.attrs.identifier + ".label")), 1)) : $("", !0),
164
167
  e[14] || (e[14] = p()),
165
- a.context.attrs.identifier != "licence" && !u(U) ? (r(), i("h4", {
168
+ a.context.attrs.identifier != "licence" && !u(q) ? (r(), i("h4", {
166
169
  key: 1,
167
170
  innerHTML: n.$t("message.dataupload.datasets." + a.context.attrs.identifier + ".label")
168
- }, null, 8, me)) : $("", !0),
171
+ }, null, 8, ge)) : $("", !0),
169
172
  e[15] || (e[15] = p()),
170
- s("div", ve, [
171
- s("div", ge, [
172
- !a.context.attrs.multiple && a.context.value.name ? (r(), i("div", ye, [
173
- s("a", he, v(a.context.value.name), 1),
173
+ s("div", ye, [
174
+ s("div", xe, [
175
+ !a.context.attrs.multiple && a.context.value.name ? (r(), i("div", he, [
176
+ s("a", ke, v(a.context.value.name), 1),
174
177
  e[4] || (e[4] = p()),
175
178
  s("div", {
176
179
  class: "removeX",
177
- onClick: ee
180
+ onClick: te
178
181
  })
179
- ])) : (r(), i("div", xe, [
180
- s("div", ke, [
181
- J(s("input", {
182
+ ])) : (r(), i("div", be, [
183
+ s("div", we, [
184
+ X(s("input", {
182
185
  ref_key: "acInput",
183
- ref: H,
186
+ ref: E,
184
187
  class: "autocompleteInputfield",
185
188
  placeholder: a.context.attrs.placeholder,
186
- "onUpdate:modelValue": e[0] || (e[0] = (t) => N(x) ? x.value = t : x = t),
189
+ "onUpdate:modelValue": e[0] || (e[0] = (t) => N(h) ? h.value = t : h = t),
187
190
  type: "text",
188
- onKeyup: e[1] || (e[1] = (t) => Z(t)),
191
+ onKeyup: e[1] || (e[1] = (t) => ee(t)),
189
192
  onClick: e[2] || (e[2] = (t) => N(f) ? f.value = !u(f) : f = !u(f))
190
- }, null, 40, be), [
191
- [le, u(x)]
193
+ }, null, 40, _e), [
194
+ [oe, u(h)]
192
195
  ])
193
196
  ]),
194
197
  e[11] || (e[11] = p()),
195
- J(s("ul", {
198
+ X(s("ul", {
196
199
  ref_key: "dropdownList",
197
- ref: E,
200
+ ref: D,
198
201
  class: "autocompleteResultList"
199
202
  }, [
200
- (r(!0), i(S, null, T(u(_), (t) => (r(), i("li", {
203
+ (r(!0), i(T, null, A(u(_), (t) => (r(), i("li", {
201
204
  key: t,
202
205
  onClick: (o) => {
203
206
  O(t), N(f) ? f.value = !u(f) : f = !u(f);
204
207
  },
205
208
  class: "p-2 border-b border-gray-200 data-[selected=true]:bg-blue-100 choosableItemsAC"
206
- }, v(t.name), 9, we))), 128))
209
+ }, v(t.name), 9, Ce))), 128))
207
210
  ], 512), [
208
- [oe, u(f)]
211
+ [se, u(f)]
209
212
  ]),
210
213
  e[12] || (e[12] = p()),
211
- u(k).content.dataProviderInterface.annifIntegration && a.context.attrs.annifTheme ? (r(), i("div", _e, [
212
- (r(!0), i(S, null, T(u(g), (t) => (r(), i("div", { key: t }, [
213
- s("div", Ce, [
214
+ u(k).content.dataProviderInterface.annifIntegration && a.context.attrs.annifTheme ? (r(), i("div", Ie, [
215
+ (r(!0), i(T, null, A(u(g), (t) => (r(), i("div", { key: t }, [
216
+ s("div", Le, [
214
217
  s("div", {
215
218
  class: "d-flex",
216
219
  onClick: (o) => {
@@ -221,14 +224,14 @@ const fe = { class: "formkitProperty" }, pe = {
221
224
  e[5] || (e[5] = p()),
222
225
  s("div", {
223
226
  class: "removeX",
224
- onClick: (o) => B(t)
225
- }, null, 8, Le)
226
- ], 8, Ie)
227
+ onClick: (o) => W(t)
228
+ }, null, 8, Ae)
229
+ ], 8, Te)
227
230
  ])
228
231
  ]))), 128)),
229
232
  e[9] || (e[9] = p()),
230
233
  s("div", Se, [
231
- s("div", Te, [
234
+ s("div", Ve, [
232
235
  s("h3", null, v(n.$t("message.dataupload.info.suggestions")), 1),
233
236
  e[6] || (e[6] = p()),
234
237
  s("span", null, v(n.$t("message.dataupload.info.suggestionText")), 1),
@@ -237,31 +240,31 @@ const fe = { class: "formkitProperty" }, pe = {
237
240
  class: "navlikeButton",
238
241
  type: "button",
239
242
  onClick: e[3] || (e[3] = (t) => {
240
- I(), u(q).value = !0;
243
+ I(), u(H).value = !0;
241
244
  })
242
245
  }, v(n.$t("message.dataupload.info.tryIt")), 1)
243
246
  ]),
244
247
  e[8] || (e[8] = p()),
245
- u(q).value ? (r(), i("div", Ve, [
246
- (r(!0), i(S, null, T(u(A), (t) => (r(), i("div", {
248
+ u(H).value ? (r(), i("div", Pe, [
249
+ (r(!0), i(T, null, A(u(V), (t) => (r(), i("div", {
247
250
  key: t,
248
251
  class: "d-flex"
249
252
  }, [
250
253
  s("div", {
251
- class: se(["activeResultsAutocompleteWrapper annifResults", { loadMore: t.resource === "invalid" }]),
254
+ class: re(["activeResultsAutocompleteWrapper annifResults", { loadMore: t.resource === "invalid" }]),
252
255
  onClick: (o) => {
253
- t.activeValue = !t.activeValue, Q(t);
256
+ t.activeValue = !t.activeValue, Y(t);
254
257
  }
255
258
  }, [
256
- s("div", Pe, [
259
+ s("div", $e, [
257
260
  s("span", null, v(t.name), 1)
258
261
  ])
259
- ], 10, Ae)
262
+ ], 10, Oe)
260
263
  ]))), 128))
261
264
  ])) : $("", !0)
262
265
  ])
263
- ])) : (r(), i("div", Oe, [
264
- (r(!0), i(S, null, T(a.context.value, (t) => (r(), i("div", {
266
+ ])) : (r(), i("div", Ne, [
267
+ (r(!0), i(T, null, A(a.context.value, (t) => (r(), i("div", {
265
268
  class: "activeResultsAutocompleteWrapper",
266
269
  key: t
267
270
  }, [
@@ -269,15 +272,15 @@ const fe = { class: "formkitProperty" }, pe = {
269
272
  e[10] || (e[10] = p()),
270
273
  s("div", {
271
274
  class: "removeX",
272
- onClick: (o) => B(t)
273
- }, null, 8, $e)
275
+ onClick: (o) => W(t)
276
+ }, null, 8, Me)
274
277
  ]))), 128))
275
278
  ])),
276
279
  e[13] || (e[13] = p()),
277
280
  s("div", {
278
281
  innerHTML: a.context.attrs.info,
279
282
  class: "formkit-help"
280
- }, null, 8, Ne)
283
+ }, null, 8, Re)
281
284
  ]))
282
285
  ])
283
286
  ])
@@ -285,6 +288,6 @@ const fe = { class: "formkitProperty" }, pe = {
285
288
  }
286
289
  };
287
290
  export {
288
- Fe as default
291
+ Xe as default
289
292
  };
290
293
  //# sourceMappingURL=AutocompleteInput.vue.mjs.map